var Common=Common||{};Common.data||(Common.data={});Common.data.field||(Common.data.field={});Common.dialogs||(Common.dialogs={});Common.dialogs.credentials||(Common.dialogs.credentials={});Common.form||(Common.form={});Common.grid||(Common.grid={});Common.grid.column||(Common.grid.column={});Common.grid.plugin||(Common.grid.plugin={});Common.overrides||(Common.overrides={});Common.overrides.form||(Common.overrides.form={});Common.overrides.grid||(Common.overrides.grid={});
Common.overrides.view||(Common.overrides.view={});Common.service||(Common.service={});Common.signalr||(Common.signalr={});Common.toolbar||(Common.toolbar={});Common.ui||(Common.ui={});Common.util||(Common.util={});Common.ux||(Common.ux={});Common.ux.grid||(Common.ux.grid={});Common.view||(Common.view={});Common.view.periods||(Common.view.periods={});Common.view.periods.ux||(Common.view.periods.ux={});Common.widget||(Common.widget={});var Components=Components||{};
Components.overrides||(Components.overrides={});var ERP=ERP||{};ERP.overrides||(ERP.overrides={});ERP.overrides.data||(ERP.overrides.data={});var Ext=Ext||{};Ext.Toolbar||(Ext.Toolbar={});Ext.app||(Ext.app={});Ext.app.bind||(Ext.app.bind={});Ext.app.domain||(Ext.app.domain={});Ext.app.route||(Ext.app.route={});Ext.button||(Ext.button={});Ext.container||(Ext.container={});Ext.core||(Ext.core={});Ext.data||(Ext.data={});Ext.data.field||(Ext.data.field={});Ext.data.flash||(Ext.data.flash={});
Ext.data.identifier||(Ext.data.identifier={});Ext.data.matrix||(Ext.data.matrix={});Ext.data.operation||(Ext.data.operation={});Ext.data.proxy||(Ext.data.proxy={});Ext.data.reader||(Ext.data.reader={});Ext.data.request||(Ext.data.request={});Ext.data.schema||(Ext.data.schema={});Ext.data.session||(Ext.data.session={});Ext.data.validator||(Ext.data.validator={});Ext.data.writer||(Ext.data.writer={});Ext.dd||(Ext.dd={});Ext.direct||(Ext.direct={});Ext.dom||(Ext.dom={});
Ext.dom.Element||(Ext.dom.Element={});Ext.event||(Ext.event={});Ext.event.gesture||(Ext.event.gesture={});Ext.event.publisher||(Ext.event.publisher={});Ext.form||(Ext.form={});Ext.form.Action||(Ext.form.Action={});Ext.form.action||(Ext.form.action={});Ext.form.field||(Ext.form.field={});Ext.form.trigger||(Ext.form.trigger={});Ext.fx||(Ext.fx={});Ext.fx.animation||(Ext.fx.animation={});Ext.fx.easing||(Ext.fx.easing={});Ext.fx.runner||(Ext.fx.runner={});Ext.fx.target||(Ext.fx.target={});
Ext.grid||(Ext.grid={});Ext.grid.column||(Ext.grid.column={});Ext.grid.feature||(Ext.grid.feature={});Ext.grid.header||(Ext.grid.header={});Ext.grid.locking||(Ext.grid.locking={});Ext.grid.plugin||(Ext.grid.plugin={});Ext.layout||(Ext.layout={});Ext.layout.boxOverflow||(Ext.layout.boxOverflow={});Ext.layout.component||(Ext.layout.component={});Ext.layout.component.field||(Ext.layout.component.field={});Ext.layout.container||(Ext.layout.container={});
Ext.layout.container.border||(Ext.layout.container.border={});Ext.layout.container.boxOverflow||(Ext.layout.container.boxOverflow={});Ext.list||(Ext.list={});Ext.menu||(Ext.menu={});Ext.mixin||(Ext.mixin={});Ext.overrides||(Ext.overrides={});Ext.overrides.app||(Ext.overrides.app={});Ext.overrides.app.domain||(Ext.overrides.app.domain={});Ext.overrides.dom||(Ext.overrides.dom={});Ext.overrides.event||(Ext.overrides.event={});Ext.overrides.event.publisher||(Ext.overrides.event.publisher={});
Ext.overrides.plugin||(Ext.overrides.plugin={});Ext.overrides.util||(Ext.overrides.util={});Ext.panel||(Ext.panel={});Ext.parse||(Ext.parse={});Ext.parse.symbol||(Ext.parse.symbol={});Ext.perf||(Ext.perf={});Ext.picker||(Ext.picker={});Ext.plugin||(Ext.plugin={});Ext.promise||(Ext.promise={});Ext.resizer||(Ext.resizer={});Ext.scroll||(Ext.scroll={});Ext.selection||(Ext.selection={});Ext.slider||(Ext.slider={});Ext.state||(Ext.state={});Ext.tab||(Ext.tab={});Ext.theme||(Ext.theme={});
Ext.theme.neptune||(Ext.theme.neptune={});Ext.theme.neptune.grid||(Ext.theme.neptune.grid={});Ext.theme.neptune.layout||(Ext.theme.neptune.layout={});Ext.theme.neptune.layout.component||(Ext.theme.neptune.layout.component={});Ext.theme.neptune.menu||(Ext.theme.neptune.menu={});Ext.theme.neptune.panel||(Ext.theme.neptune.panel={});Ext.theme.neptune.picker||(Ext.theme.neptune.picker={});Ext.theme.neptune.resizer||(Ext.theme.neptune.resizer={});Ext.theme.neptune.toolbar||(Ext.theme.neptune.toolbar={});
Ext.tip||(Ext.tip={});Ext.toolbar||(Ext.toolbar={});Ext.tree||(Ext.tree={});Ext.util||(Ext.util={});Ext.util.paintmonitor||(Ext.util.paintmonitor={});Ext.util.sizemonitor||(Ext.util.sizemonitor={});Ext.util.translatable||(Ext.util.translatable={});Ext.ux||(Ext.ux={});Ext.ux.form||(Ext.ux.form={});Ext.ux.layout||(Ext.ux.layout={});Ext.view||(Ext.view={});Ext.window||(Ext.window={});var MainApp=MainApp||{};MainApp.ConfigDecryptWizard||(MainApp.ConfigDecryptWizard={});
MainApp.OracleWizard||(MainApp.OracleWizard={});MainApp.RequestLabWizard||(MainApp.RequestLabWizard={});MainApp.base||(MainApp.base={});MainApp.base.controller||(MainApp.base.controller={});MainApp.helper||(MainApp.helper={});MainApp.model||(MainApp.model={});MainApp.overrides||(MainApp.overrides={});MainApp.overrides.data||(MainApp.overrides.data={});MainApp.overrides.data.proxy||(MainApp.overrides.data.proxy={});MainApp.overrides.form||(MainApp.overrides.form={});
MainApp.overrides.form.field||(MainApp.overrides.form.field={});MainApp.overrides.tip||(MainApp.overrides.tip={});MainApp.overrides.toolbar||(MainApp.overrides.toolbar={});MainApp.service||(MainApp.service={});MainApp.service.rpc||(MainApp.service.rpc={});MainApp.store||(MainApp.store={});MainApp.util||(MainApp.util={});MainApp.view||(MainApp.view={});MainApp.view.common||(MainApp.view.common={});MainApp.view.configuration||(MainApp.view.configuration={});
MainApp.view.configuration.menu||(MainApp.view.configuration.menu={});MainApp.view.configuration.tab||(MainApp.view.configuration.tab={});MainApp.view.configuration.tab.backupservers||(MainApp.view.configuration.tab.backupservers={});MainApp.view.configuration.tab.keymanagement||(MainApp.view.configuration.tab.keymanagement={});MainApp.view.configuration.tab.keymanagement.decryptWizard||(MainApp.view.configuration.tab.keymanagement.decryptWizard={});
MainApp.view.configuration.tab.legacylicensing||(MainApp.view.configuration.tab.legacylicensing={});MainApp.view.configuration.tab.licensing||(MainApp.view.configuration.tab.licensing={});MainApp.view.configuration.tab.notifications||(MainApp.view.configuration.tab.notifications={});MainApp.view.configuration.tab.roles||(MainApp.view.configuration.tab.roles={});MainApp.view.configuration.tab.searchservers||(MainApp.view.configuration.tab.searchservers={});
MainApp.view.configuration.tab.sessions||(MainApp.view.configuration.tab.sessions={});MainApp.view.configuration.tab.settings||(MainApp.view.configuration.tab.settings={});MainApp.view.configuration.tab.vcenter||(MainApp.view.configuration.tab.vcenter={});MainApp.view.configuration.tab.vcloud||(MainApp.view.configuration.tab.vcloud={});MainApp.view.configuration.tab.vsphere||(MainApp.view.configuration.tab.vsphere={});MainApp.view.infrastructure||(MainApp.view.infrastructure={});
MainApp.view.infrastructure.objectBrowser||(MainApp.view.infrastructure.objectBrowser={});MainApp.view.infrastructure.objectBrowser.providers||(MainApp.view.infrastructure.objectBrowser.providers={});MainApp.view.login||(MainApp.view.login={});MainApp.view.main||(MainApp.view.main={});MainApp.view.main.dashboard||(MainApp.view.main.dashboard={});MainApp.view.main.dashboard.widgets||(MainApp.view.main.dashboard.widgets={});MainApp.view.main.files||(MainApp.view.main.files={});
MainApp.view.main.files.browse||(MainApp.view.main.files.browse={});MainApp.view.main.files.history||(MainApp.view.main.files.history={});MainApp.view.main.files.widget||(MainApp.view.main.files.widget={});MainApp.view.main.files.widget.backupinfo||(MainApp.view.main.files.widget.backupinfo={});MainApp.view.main.files.widget.restore||(MainApp.view.main.files.widget.restore={});MainApp.view.main.items||(MainApp.view.main.items={});MainApp.view.main.items.history||(MainApp.view.main.items.history={});
MainApp.view.main.items.mailbox||(MainApp.view.main.items.mailbox={});MainApp.view.main.items.oracle||(MainApp.view.main.items.oracle={});MainApp.view.main.items.oracle.wizard||(MainApp.view.main.items.oracle.wizard={});MainApp.view.main.items.sql||(MainApp.view.main.items.sql={});MainApp.view.main.items.sql.wizard||(MainApp.view.main.items.sql.wizard={});MainApp.view.main.jobs||(MainApp.view.main.jobs={});MainApp.view.main.jobs.wizard||(MainApp.view.main.jobs.wizard={});
MainApp.view.main.jobs.wizard.dialogs||(MainApp.view.main.jobs.wizard.dialogs={});MainApp.view.main.reports||(MainApp.view.main.reports={});MainApp.view.main.reports.widget||(MainApp.view.main.reports.widget={});MainApp.view.main.requests||(MainApp.view.main.requests={});MainApp.view.main.requests.labWizard||(MainApp.view.main.requests.labWizard={});MainApp.view.main.vms||(MainApp.view.main.vms={});MainApp.view.main.vms.widgets||(MainApp.view.main.vms.widgets={});var My=My||{};My.tab||(My.tab={});
var Override=Override||{};Override.slider||(Override.slider={});var Overrides=Overrides||{};Overrides.panel||(Overrides.panel={});Overrides.slider||(Overrides.slider={});var RCOP=RCOP||{};RCOP.dom||(RCOP.dom={});RCOP.form||(RCOP.form={});RCOP.form.field||(RCOP.form.field={});RCOP.window||(RCOP.window={});var Theme=Theme||{};Theme.override||(Theme.override={});Theme.override.button||(Theme.override.button={});Theme.override.picker||(Theme.override.picker={});var ToolKit=ToolKit||{};
ToolKit.components||(ToolKit.components={});ToolKit.utils||(ToolKit.utils={});ToolKit.wizard||(ToolKit.wizard={});var Veeam=Veeam||{};Veeam.base||(Veeam.base={});Veeam.base.data||(Veeam.base.data={});Veeam.base.view||(Veeam.base.view={});Veeam.base.view.filter||(Veeam.base.view.filter={});Veeam.base.wizard||(Veeam.base.wizard={});Veeam.helper||(Veeam.helper={});Veeam.infrastructure||(Veeam.infrastructure={});Veeam.infrastructure.objectBrowser||(Veeam.infrastructure.objectBrowser={});
Veeam.infrastructure.objectBrowser.providers||(Veeam.infrastructure.objectBrowser.providers={});Veeam.manager||(Veeam.manager={});Veeam.mixin||(Veeam.mixin={});Veeam.model||(Veeam.model={});Veeam.model.report||(Veeam.model.report={});Veeam.plugin||(Veeam.plugin={});Veeam.service||(Veeam.service={});Veeam.service.rpc||(Veeam.service.rpc={});Veeam.util||(Veeam.util={});Veeam.view||(Veeam.view={});Veeam.view.chart||(Veeam.view.chart={});Veeam.view.dialogs||(Veeam.view.dialogs={});
Veeam.view.field||(Veeam.view.field={});Veeam.view.login||(Veeam.view.login={});
(function(ExtCmd){var baseStaticMembers,enumerables=['constructor','toString','valueOf','toLocaleString'],enumerablesMap={},enumerablesObj={},enumerablesMask=0,baseStaticMember,Base,ClassManager,Class,configPreFn,cachedConfigPreFn,platformConfigPostFn,platformConfigPreFn,deprecatedPostFn,privatesPreFn,v5ClassSystem,onBeforeCreated=function(cls,data,hooks){hooks=hooks.enumerableMembers;var proto=cls.prototype,fn,which;if(data){if(v5ClassSystem)cls.addMembers(data);else{for(member in data)if((fn=data[member])&&
fn.$isFunction&&!fn.$isClass&&fn!==Ext.emptyFn&&fn!==Ext.identityFn){if(which=proto.hasOwnProperty(member)&&proto[member])fn.$previous=which;proto[member]=fn;fn.$owner=cls;fn.$name=member}else proto[member]=fn;for(which=1;hooks;which<<=1)if(hooks&which){hooks&=~which;var member=enumerablesMap[which];proto[member]=fn=data[member];fn.$owner=cls;fn.$name=member}}data.platformConfig&&platformConfigPostFn&&platformConfigPostFn.call(ClassManager,cls.$className,cls,data);data.deprecated&&deprecatedPostFn&&
deprecatedPostFn.call(ClassManager,cls.$className,cls,data)}},derive=function(className,base,data,enumerableMembers,xtypes,xtypesChain,xtypeMap,aliases,mixins,names,createdFn){var cls=function(){return this.constructor.apply(this,arguments)||null},ret=cls;enumerableMembers={enumerableMembers:enumerableMembers&enumerablesMask,onCreated:createdFn,onBeforeCreated:onBeforeCreated,aliases:aliases};var alternates=data.alternateClassName||[];createdFn=Ext.global;var i,n,altToName=ClassManager.alternateToName||
ClassManager.maps.alternateToName,nameToAlt=ClassManager.nameToAlternates||ClassManager.maps.nameToAlternates;for(i=baseStaticMembers.length;0<i--;){var name=baseStaticMembers[i];cls[name]=Base[name]}data.$isFunction&&(data=data(cls));enumerableMembers.data=data;i=data.statics;delete data.statics;data.$className=className;'$className'in data&&(cls.$className=data.$className);cls.extend(base);base=cls.prototype;xtypes&&(cls.xtype=data.xtype=xtypes[0],base.xtypes=xtypes);base.xtypesChain=xtypesChain;
base.xtypesMap=xtypeMap;data.alias=aliases;ret.triggerExtended(cls,data,enumerableMembers);data.onClassExtended&&(cls.onExtended(data.onClassExtended,cls),delete data.onClassExtended);data.privates&&privatesPreFn&&privatesPreFn.call(Class,cls,data);if(i)if(v5ClassSystem)cls.addStatics(i);else for(n in i)i.hasOwnProperty(n)&&((xtypesChain=i[n])&&xtypesChain.$isFunction&&!xtypesChain.$isClass&&xtypesChain!==Ext.emptyFn&&xtypesChain!==Ext.identityFn&&(cls[n]=xtypes=xtypesChain,xtypes.$owner=cls,xtypes.$name=
n),cls[n]=xtypesChain);data.inheritableStatics&&(cls.addInheritableStatics(data.inheritableStatics),delete data.inheritableStatics);base.onClassExtended&&(ret.onExtended(base.onClassExtended,ret),delete base.onClassExtended);data.platformConfig&&platformConfigPreFn&&(platformConfigPreFn.call(Class,cls,data),delete data.platformConfig);data.config&&configPreFn.call(Class,cls,data);data.cachedConfig&&cachedConfigPreFn&&(cachedConfigPreFn.call(Class,cls,data),delete data.cachedConfig);enumerableMembers.onBeforeCreated(cls,
enumerableMembers.data,enumerableMembers);i=0;for(n=mixins&&mixins.length;i<n;++i)cls.mixin.apply(cls,mixins[i]);i=0;for(n=aliases.length;i<n;i++)mixins=aliases[i],ClassManager.setAlias?ClassManager.setAlias(cls,mixins):ClassManager.addAlias(cls,mixins);data.singleton&&(ret=new cls);alternates instanceof Array||(alternates=[alternates]);data=ClassManager.getName(ret);i=0;for(mixins=alternates.length;i<mixins;i++)aliases=alternates[i],ClassManager.classes[aliases]=ret,v5ClassSystem?ClassManager.addAlternate(cls,
aliases):data&&(altToName[aliases]=data,alternates=nameToAlt[data]||(nameToAlt[data]=[]),alternates.push(aliases));i=0;for(n=names.length;i<n;i+=2)(cls=names[i])||(cls=createdFn),cls[names[i+1]]=ret;ClassManager.classes[className]=ret;!v5ClassSystem&&data&&data!==className&&(altToName[className]=data,alternates=nameToAlt[data]||(nameToAlt[data]=[]),alternates.push(className));delete base.alternateClassName;enumerableMembers.onCreated&&enumerableMembers.onCreated.call(ret,ret);className&&ClassManager.triggerCreated(className);
return ret};ExtCmd.derive=function(){var i;Base=Ext.Base;ClassManager=Ext.ClassManager;Class=Ext.Class;for(i=enumerables.length;0<i--;){var mask=1<<i;enumerablesObj[enumerablesMap[mask]=enumerables[i]]=mask}for(i in enumerablesObj)enumerablesMask|=enumerablesObj[i];enumerablesMask=~enumerablesMask;Function.prototype.$isFunction=1;v5ClassSystem=!!ClassManager.addAlias;configPreFn=Class.getPreprocessor('config').fn;cachedConfigPreFn=(cachedConfigPreFn=Class.getPreprocessor('cachedConfig'))&&cachedConfigPreFn.fn;
privatesPreFn=(privatesPreFn=Class.getPreprocessor('privates'))&&privatesPreFn.fn;platformConfigPreFn=(platformConfigPreFn=Class.getPreprocessor('platformConfig'))&&platformConfigPreFn.fn;platformConfigPostFn=(platformConfigPostFn=ClassManager.postprocessors.platformConfig)&&platformConfigPostFn.fn;deprecatedPostFn=(deprecatedPostFn=ClassManager.postprocessors.deprecated)&&deprecatedPostFn.fn;baseStaticMembers=Base.$staticMembers;if(!baseStaticMembers)for(baseStaticMember in baseStaticMembers=[],
Base)Base.hasOwnProperty(baseStaticMember)&&baseStaticMembers.push(baseStaticMember);ExtCmd.derive=derive;return derive.apply(this,arguments)}})(Ext.cmd={});Ext=Ext||{};
(function(){function addInstanceOverrides(target,owner,overrides){var name;for(name in overrides)if(overrides.hasOwnProperty(name)){var value=overrides[name];'function'===typeof value&&(value.$name=name,value.$owner=owner,value.$previous=target.hasOwnProperty(name)?target[name]:callOverrideParent);target[name]=value}}var global=this,toString=Object.prototype.toString,enumerables=['valueOf','toLocaleString','toString','constructor'],emptyFn=function(){},privateFn=function(){},identityFn=function(o){return o},
callOverrideParent=function(){var method=callOverrideParent.caller.caller;return method.$owner.prototype[method.$name].apply(this,arguments)},manifest=Ext.manifest||{},i$jscomp$0,iterableRe=/\[object\s*(?:Array|Arguments|\w*Collection|\w*List|HTML\s+document\.all\s+class)\]/,MSDateRe=/^\\?\/Date\(([-+])?(\d+)(?:[+-]\d{4})?\)\\?\/$/;Ext.global=global;Ext.now=Date.now||(Date.now=function(){return+new Date});Ext.ticks=global.performance&&global.performance.now?function(){return performance.now()}:Ext.now;
Ext._startTime=Ext.ticks();emptyFn.$nullFn=identityFn.$nullFn=emptyFn.$emptyFn=identityFn.$identityFn=privateFn.$nullFn=!0;privateFn.$privacy='framework';emptyFn.$noClearOnDestroy=identityFn.$noClearOnDestroy=!0;privateFn.$noClearOnDestroy=!0;Ext.suspendLayouts=Ext.resumeLayouts=emptyFn;for(i$jscomp$0 in{toString:1})enumerables=null;Ext.enumerables=enumerables;Ext.apply=function(object,config,defaults){defaults&&Ext.apply(object,defaults);if(object&&config&&'object'===typeof config){for(var i in config)object[i]=
config[i];if(enumerables)for(defaults=enumerables.length;defaults--;)i=enumerables[defaults],config.hasOwnProperty(i)&&(object[i]=config[i])}return object};Ext.buildSettings=Ext.apply({baseCSSPrefix:'x-'},Ext.buildSettings||{});Ext.apply(Ext,{idSeed:0,idPrefix:'ext-',isSecure:/^https/i.test(window.location.protocol),enableGarbageCollector:!1,enableListenerCollection:!0,name:Ext.sandboxName||'Ext',privateFn:privateFn,emptyFn:emptyFn,identityFn:identityFn,frameStartTime:Ext.now(),manifest:manifest,
enableAria:!0,startsWithHashRe:/^#/,validIdRe:/^[a-z_][a-z0-9\-_]*$/i,BLANK_IMAGE_URL:'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d',makeIdSelector:function(id){return'#'+id},id:function(o,prefix){if(o&&o.id)return o.id;prefix=(prefix||Ext.idPrefix)+ ++Ext.idSeed;o&&(o.id=prefix);return prefix},returnId:function(o){return o.getId()},returnTrue:function(){return!0},emptyString:new String,baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,$eventNameMap:{},$vendorEventRe:/^(DOMMouse|Moz.+|MS.+|webkit.+)/,
canonicalEventName:function(name){return Ext.$eventNameMap[name]||(Ext.$eventNameMap[name]=Ext.$vendorEventRe.test(name)?name:name.toLowerCase())},applyIf:function(object,config){var property;if(object)for(property in config)void 0===object[property]&&(object[property]=config[property]);return object},destroy:function(){var ln=arguments.length,i,arg;for(i=0;i<ln;i++)(arg=arguments[i])&&(Ext.isArray(arg)?this.destroy.apply(this,arg):Ext.isFunction(arg.destroy)&&arg.destroy());return null},destroyMembers:function(object){for(var ref,
name,i=1,a=arguments,len=a.length;i<len;i++)ref=object[name=a[i]],null!=ref&&(object[name]=Ext.destroy(ref))},override:function(target,overrides){if(target.$isClass)target.override(overrides);else if('function'===typeof target)Ext.apply(target.prototype,overrides);else{var owner=target.self,privates;if(owner&&owner.$isClass){if(privates=overrides.privates)overrides=Ext.apply({},overrides),delete overrides.privates,addInstanceOverrides(target,owner,privates);addInstanceOverrides(target,owner,overrides)}else Ext.apply(target,
overrides)}return target},valueFrom:function(value,defaultValue,allowBlank){return Ext.isEmpty(value,allowBlank)?defaultValue:value},isEmpty:function(value,allowEmptyString){return null==value||(allowEmptyString?!1:''===value)||Ext.isArray(value)&&0===value.length},isArray:'isArray'in Array?Array.isArray:function(value){return'[object Array]'===toString.call(value)},isDate:function(value){return'[object Date]'===toString.call(value)},isMSDate:function(value){return Ext.isString(value)?MSDateRe.test(value):
!1},isObject:'[object Object]'===toString.call(null)?function(value){return null!==value&&void 0!==value&&'[object Object]'===toString.call(value)&&void 0===value.ownerDocument}:function(value){return'[object Object]'===toString.call(value)},isSimpleObject:function(value){return value instanceof Object&&value.constructor===Object},isPrimitive:function(value){value=typeof value;return'string'===value||'number'===value||'boolean'===value},isFunction:'undefined'!==typeof document&&'function'===typeof document.getElementsByTagName('body')?
function(value){return!!value&&'[object Function]'===toString.call(value)}:function(value){return!!value&&'function'===typeof value},isNumber:function(value){return'number'===typeof value&&isFinite(value)},isNumeric:function(value){return!isNaN(parseFloat(value))&&isFinite(value)},isString:function(value){return'string'===typeof value},isBoolean:function(value){return'boolean'===typeof value},isElement:function(value){return value?1===value.nodeType:!1},isTextNode:function(value){return value?'#text'===
value.nodeName:!1},isDefined:function(value){return'undefined'!==typeof value},isIterable:function(value){return!value||'number'!==typeof value.length||'string'===typeof value||Ext.isFunction(value)?!1:value.propertyIsEnumerable?value.hasOwnProperty('length')&&!value.propertyIsEnumerable('length')?!0:iterableRe.test(toString.call(value)):!!value.item},isDebugEnabled:emptyFn,clone:function(item,cloneDom){if(null===item||void 0===item)return item;if(!1!==cloneDom&&item.nodeType&&item.cloneNode)return item.cloneNode(!0);
var type=toString.call(item),clone,key;if('[object Date]'===type)return new Date(item.getTime());if('[object Array]'===type)for(type=item.length,clone=[];type--;)clone[type]=Ext.clone(item[type],cloneDom);else if('[object Object]'===type&&item.constructor===Object){clone={};for(key in item)clone[key]=Ext.clone(item[key],cloneDom);if(enumerables)for(cloneDom=enumerables.length;cloneDom--;)type=enumerables[cloneDom],item.hasOwnProperty(type)&&(clone[type]=item[type])}return clone||item},getUniqueGlobalNamespace:function(){var uniqueGlobalNamespace=
this.uniqueGlobalNamespace;if(void 0===uniqueGlobalNamespace){var i=0;do uniqueGlobalNamespace='ExtBox'+ ++i;while(void 0!==global[uniqueGlobalNamespace]);global[uniqueGlobalNamespace]=Ext;this.uniqueGlobalNamespace=uniqueGlobalNamespace}return uniqueGlobalNamespace},functionFactoryCache:{},cacheableFunctionFactory:function(){var args=Array.prototype.slice.call(arguments),cache=this.functionFactoryCache;if(Ext.isSandboxed){var idx=args.length;0<idx&&(idx--,args[idx]='var Ext\x3dwindow.'+Ext.name+
';'+args[idx])}idx=args.join('');var fn=cache[idx];fn||(fn=Function.prototype.constructor.apply(Function.prototype,args),cache[idx]=fn);return fn},functionFactory:function(){var args=Array.prototype.slice.call(arguments);if(Ext.isSandboxed){var ln=args.length;0<ln&&(ln--,args[ln]='var Ext\x3dwindow.'+Ext.name+';'+args[ln])}return Function.prototype.constructor.apply(Function.prototype,args)},Logger:{verbose:emptyFn,log:emptyFn,info:emptyFn,warn:emptyFn,error:function(message){throw Error(message);
},deprecate:emptyFn},ariaWarn:function(target,msg){Ext.enableAria&&!Ext.slicer&&(Ext.ariaWarn.first||(Ext.ariaWarn.first=!0,Ext.log.warn('WAI-ARIA compatibility warnings can be suppressed by adding the following to application startup code:'),Ext.log.warn('    Ext.ariaWarn \x3d Ext.emptyFn;')),Ext.log.warn({msg:msg,dump:target}))},getElementById:function(id){return document.getElementById(id)},splitAndUnescape:function(){var cache={};return function(origin,delimiter){if(!origin)return[];if(!delimiter)return[origin];
var replaceRe=cache[delimiter]||(cache[delimiter]=new RegExp('\\\\'+delimiter,'g')),result=[],part;for(origin=origin.split(delimiter);void 0!==(part=origin.shift());){for(;'\\'===part.charAt(part.length-1)&&0<origin.length;)part=part+delimiter+origin.shift();part=part.replace(replaceRe,delimiter);result.push(part)}return result}}()});Ext.returnTrue.$nullFn=Ext.returnId.$nullFn=!0})();Ext.platformTags.modern=!(Ext.platformTags.classic=Ext.isClassic=!0);
(function(){function toString(){var cls=this.sourceClass,method=this.sourceMethod,msg=this.msg;method&&(method=msg?method+'(): '+msg:method+'()');cls&&(method=method?cls+'.'+method:cls);return method||msg||''}Ext.Error=function(config){Ext.isString(config)&&(config={msg:config});var error=Error();Ext.apply(error,config);error.message=error.message||error.msg;error.toString=toString;return error};Ext.apply(Ext.Error,{ignore:!1,raise:function(err){err=err||{};Ext.isString(err)&&(err={msg:err});var method=
this.raise.caller,name;method===Ext.raise&&(method=method.caller);method&&(!err.sourceMethod&&(name=method.$name)&&(err.sourceMethod=name),!err.sourceClass&&(name=method.$owner)&&(name=name.$className)&&(err.sourceClass=name));if(!0!==this.handle(err))throw toString.call(err),new Ext.Error(err);},handle:function(){return this.ignore}})})();Ext.deprecated=function(suggestion){return Ext.emptyFn};Ext.raise=function(){Ext.Error.raise.apply(Ext.Error,arguments)};
Ext.Array=function(){function stableSort(array,userComparator){var len=array.length,indices=Array(len),i;for(i=0;i<len;i++)indices[i]=i;indices.sort(function(index1,index2){return userComparator(array[index1],array[index2])||index1-index2});for(i=0;i<len;i++)indices[i]=array[indices[i]];for(i=0;i<len;i++)array[i]=indices[i];return array}var arrayPrototype=Array.prototype,slice=arrayPrototype.slice,supportsSplice=function(){var array=[];var lengthBefore=20;if(!array.splice)return!1;for(;lengthBefore--;)array.push('A');
array.splice(15,0,'F','F','F','F','F','F','F','F','F','F','F','F','F','F','F','F','F','F','F','F','F');lengthBefore=array.length;array.splice(13,0,'XXX');return lengthBefore+1!==array.length?!1:!0}(),supportsIndexOf='indexOf'in arrayPrototype,supportsSliceOnNodeList=!0;try{'undefined'!==typeof document&&slice.call(document.getElementsByTagName('body'))}catch(e){supportsSliceOnNodeList=!1}var fixArrayIndex=function(array,index){return 0>index?Math.max(0,array.length+index):Math.min(array.length,index)},
replaceSim=function(array,index,removeCount,insert){var add=insert?insert.length:0,length=array.length;index=fixArrayIndex(array,index);if(index===length)add&&array.push.apply(array,insert);else{var remove=Math.min(removeCount,length-index);removeCount=index+remove;var tailNewPos=removeCount+add-remove,tailCount=length-removeCount;length-=remove;if(tailNewPos<removeCount)for(remove=0;remove<tailCount;++remove)array[tailNewPos+remove]=array[removeCount+remove];else if(tailNewPos>removeCount)for(remove=
tailCount;remove--;)array[tailNewPos+remove]=array[removeCount+remove];if(add&&index===length)array.length=length,array.push.apply(array,insert);else for(array.length=length+add,remove=0;remove<add;++remove)array[index+remove]=insert[remove]}return array},replaceNative=function(array,index,removeCount,insert){insert&&insert.length?0!==index||removeCount?index<array.length?array.splice.apply(array,[index,removeCount].concat(insert)):array.push.apply(array,insert):array.unshift.apply(array,insert):
array.splice(index,removeCount);return array},eraseSim=function(array,index,removeCount){return replaceSim(array,index,removeCount)},eraseNative=function(array,index,removeCount){array.splice(index,removeCount);return array},spliceSim=function(array,index,removeCount){var len=arguments.length,pos=fixArrayIndex(array,index);3>len&&(removeCount=array.length-pos);var removed=array.slice(index,fixArrayIndex(array,pos+removeCount));4>len?replaceSim(array,pos,removeCount):replaceSim(array,pos,removeCount,
slice.call(arguments,3));return removed},spliceNative=function(array){return array.splice.apply(array,slice.call(arguments,1))},erase=supportsSplice?eraseNative:eraseSim,replace=supportsSplice?replaceNative:replaceSim;supportsSplice=supportsSplice?spliceNative:spliceSim;var ExtArray={binarySearch:function(array,item,begin,end,compareFn){var length=array.length;begin instanceof Function?(compareFn=begin,begin=0,end=length):end instanceof Function?(compareFn=end,end=length):(void 0===begin&&(begin=
0),void 0===end&&(end=length),compareFn=compareFn||ExtArray.lexicalCompare);for(--end;begin<=end;){length=begin+end>>1;var comparison=compareFn(item,array[length]);0<=comparison?begin=length+1:0>comparison&&(end=length-1)}return begin},defaultCompare:function(lhs,rhs){return lhs<rhs?-1:lhs>rhs?1:0},lexicalCompare:function(lhs,rhs){lhs=String(lhs);rhs=String(rhs);return lhs<rhs?-1:lhs>rhs?1:0},each:function(array,fn,scope,reverse){array=ExtArray.from(array);var ln=array.length;if(!0!==reverse)for(reverse=
0;reverse<ln;reverse++){if(!1===fn.call(scope||array[reverse],array[reverse],reverse,array))return reverse}else for(reverse=ln-1;-1<reverse;reverse--)if(!1===fn.call(scope||array[reverse],array[reverse],reverse,array))return reverse;return!0},forEach:'forEach'in arrayPrototype?function(array,fn,scope){return array.forEach(fn,scope)}:function(array,fn,scope){for(var i=0,ln=array.length;i<ln;i++)fn.call(scope,array[i],i,array)},indexOf:supportsIndexOf?function(array,item,from){return array?arrayPrototype.indexOf.call(array,
item,from):-1}:function(array,item,from){var length=array?array.length:0;for(from=0>from?Math.max(0,length+from):from||0;from<length;from++)if(array[from]===item)return from;return-1},contains:supportsIndexOf?function(array,item){return-1!==arrayPrototype.indexOf.call(array,item)}:function(array,item){var ln;var i=0;for(ln=array.length;i<ln;i++)if(array[i]===item)return!0;return!1},toArray:function(iterable,start,end){if(!iterable||!iterable.length)return[];'string'===typeof iterable&&(iterable=iterable.split(''));
if(supportsSliceOnNodeList)return slice.call(iterable,start||0,end||iterable.length);var array=[];end=end?0>end?iterable.length+end:end:iterable.length;for(start=start||0;start<end;start++)array.push(iterable[start]);return array},pluck:function(array,propertyName){var ret=[],ln;var i=0;for(ln=array.length;i<ln;i++){var item=array[i];ret.push(item[propertyName])}return ret},map:'map'in arrayPrototype?function(array,fn,scope){return array.map(fn,scope)}:function(array,fn,scope){var len=array.length,
results=Array(len),i;for(i=0;i<len;i++)results[i]=fn.call(scope,array[i],i,array);return results},every:'every'in arrayPrototype?function(array,fn,scope){return array.every(fn,scope)}:function(array,fn,scope){for(var i=0,ln=array.length;i<ln;++i)if(!fn.call(scope,array[i],i,array))return!1;return!0},some:'some'in arrayPrototype?function(array,fn,scope){return array.some(fn,scope)}:function(array,fn,scope){for(var i=0,ln=array.length;i<ln;++i)if(fn.call(scope,array[i],i,array))return!0;return!1},equals:function(array1,
array2){var len1=array1.length,i;if(array1===array2)return!0;if(len1!==array2.length)return!1;for(i=0;i<len1;++i)if(array1[i]!==array2[i])return!1;return!0},clean:function(array){for(var results=[],i=0,ln=array.length,item;i<ln;i++)item=array[i],Ext.isEmpty(item)||results.push(item);return results},unique:function(array){for(var clone=[],i=0,ln=array.length,item;i<ln;i++)item=array[i],-1===ExtArray.indexOf(clone,item)&&clone.push(item);return clone},filter:'filter'in arrayPrototype?function(array,
fn,scope){return array.filter(fn,scope)}:function(array,fn,scope){for(var results=[],i=0,ln=array.length;i<ln;i++)fn.call(scope,array[i],i,array)&&results.push(array[i]);return results},findBy:function(array,fn,scope){for(var i=0,len=array.length;i<len;i++)if(fn.call(scope||array,array[i],i))return array[i];return null},from:function(value,newReference){if(void 0===value||null===value)return[];if(Ext.isArray(value))return newReference?slice.call(value):value;newReference=typeof value;return!value||
void 0===value.length||'string'===newReference||'function'===newReference&&value.apply?[value]:ExtArray.toArray(value)},remove:function(array,item){item=ExtArray.indexOf(array,item);-1!==item&&erase(array,item,1);return array},removeAt:function(array,index,count){var len=array.length;0<=index&&index<len&&(count=Math.min(count||1,len-index),erase(array,index,count));return array},include:function(array,item){ExtArray.contains(array,item)||array.push(item)},clone:function(array){return slice.call(array)},
merge:function(){var args=slice.call(arguments),array=[],ln;var i=0;for(ln=args.length;i<ln;i++)array=array.concat(args[i]);return ExtArray.unique(array)},intersect:function(){var intersection=[],arrays=slice.call(arguments),array,elementCount,i,j,k;if(!arrays.length)return intersection;var arraysLength=arrays.length;for(i=array=0;i<arraysLength;i++){var arrayLength=arrays[i];if(!minArray||arrayLength.length<minArray.length){var minArray=arrayLength;array=i}}minArray=ExtArray.unique(minArray);erase(arrays,
array,1);var minArrayLength=minArray.length;arraysLength=arrays.length;for(i=0;i<minArrayLength;i++){var element=minArray[i];for(j=elementCount=0;j<arraysLength;j++)for(array=arrays[j],arrayLength=array.length,k=0;k<arrayLength;k++){var elementCandidate=array[k];if(element===elementCandidate){elementCount++;break}}elementCount===arraysLength&&intersection.push(element)}return intersection},difference:function(arrayA,arrayB){arrayA=slice.call(arrayA);var ln=arrayA.length,j,lnB;var i=0;for(lnB=arrayB.length;i<
lnB;i++)for(j=0;j<ln;j++)arrayA[j]===arrayB[i]&&(erase(arrayA,j,1),j--,ln--);return arrayA},reduce:Array.prototype.reduce?function(array,reduceFn,initialValue){return 3===arguments.length?Array.prototype.reduce.call(array,reduceFn,initialValue):Array.prototype.reduce.call(array,reduceFn)}:function(array,reduceFn,initialValue){array=Object(array);var index=0,length=array.length>>>0,reduced=initialValue;if(3>arguments.length)for(;;){if(index in array){reduced=array[index++];break}if(++index>=length)throw new TypeError('Reduce of empty array with no initial value');
}for(;index<length;++index)index in array&&(reduced=reduceFn(reduced,array[index],index,array));return reduced},slice:[1,2].slice(1,void 0).length?function(array,begin,end){return slice.call(array,begin,end)}:function(array,begin,end){return'undefined'===typeof begin?slice.call(array):'undefined'===typeof end?slice.call(array,begin):slice.call(array,begin,end)},sort:function(array,sortFn){return stableSort(array,sortFn||ExtArray.lexicalCompare)},flatten:function(array){function rFlatten(a){var ln;
var i=0;for(ln=a.length;i<ln;i++){var v=a[i];Ext.isArray(v)?rFlatten(v):worker.push(v)}return worker}var worker=[];return rFlatten(array)},min:function(array,comparisonFn){var min=array[0],ln;var i=0;for(ln=array.length;i<ln;i++){var item=array[i];comparisonFn?1===comparisonFn(min,item)&&(min=item):item<min&&(min=item)}return min},max:function(array,comparisonFn){var max=array[0],ln;var i=0;for(ln=array.length;i<ln;i++){var item=array[i];comparisonFn?-1===comparisonFn(max,item)&&(max=item):item>max&&
(max=item)}return max},mean:function(array){return 0<array.length?ExtArray.sum(array)/array.length:void 0},sum:function(array){var sum=0,ln;var i=0;for(ln=array.length;i<ln;i++){var item=array[i];sum+=item}return sum},toMap:function(array,getKey,scope){var map={},i=array.length;if(getKey)if('string'===typeof getKey)for(;i--;)map[array[i][getKey]]=i+1;else for(;i--;)map[getKey.call(scope,array[i])]=i+1;else for(;i--;)map[array[i]]=i+1;return map},toValueMap:function(array,getKey,scope,arrayify){var map=
{},i=array.length,entry,fn;if(getKey){(fn='string'!==typeof getKey)||(arrayify=scope);var alwaysArray=1===arrayify;for(arrayify=2===arrayify;i--;){var value=array[i];var key=fn?getKey.call(scope,value):value[getKey];alwaysArray?key in map?map[key].push(value):map[key]=[value]:arrayify&&key in map?(entry=map[key])instanceof Array?entry.push(value):map[key]=[entry,value]:map[key]=value}}else for(;i--;)value=array[i],map[value]=value;return map},erase:erase,insert:function(array,index,items){return replace(array,
index,0,items)},move:function(array,fromIdx,toIdx){if(toIdx!==fromIdx){for(var item=array[fromIdx],incr=toIdx>fromIdx?1:-1;fromIdx!=toIdx;fromIdx+=incr)array[fromIdx]=array[fromIdx+incr];array[toIdx]=item}},replace:replace,splice:supportsSplice,push:function(target){var len=arguments.length,i=1;for(void 0===target?target=[]:Ext.isArray(target)||(target=[target]);i<len;i++){var newItem=arguments[i];Array.prototype.push[Ext.isIterable(newItem)?'apply':'call'](target,newItem)}return target},numericSortFn:function(a,
b){return a-b}};Ext.each=ExtArray.each;ExtArray.union=ExtArray.merge;Ext.min=ExtArray.min;Ext.max=ExtArray.max;Ext.sum=ExtArray.sum;Ext.mean=ExtArray.mean;Ext.flatten=ExtArray.flatten;Ext.clean=ExtArray.clean;Ext.unique=ExtArray.unique;Ext.pluck=ExtArray.pluck;Ext.toArray=function(){return ExtArray.toArray.apply(ExtArray,arguments)};return ExtArray}();
Ext.String=function(){var trimRegex=/^[\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,escapeRe=/('|\\)/g,escapeRegexRe=/([-.*+?\^${}()|\[\]\/\\])/g,basicTrimRe=/^\s+|\s+$/g,whitespaceRe=/\s+/,varReplace=/(^[^a-z]*|[^\w])/gi,charToEntity,entityToChar,charToEntityRegex,
entityToCharRegex,htmlEncodeReplaceFn=function(match,capture){return charToEntity[capture]},htmlDecodeReplaceFn=function(match,capture){return capture in entityToChar?entityToChar[capture]:String.fromCharCode(parseInt(capture.substr(2),10))},boundsCheck=function(s,other){return null===s||void 0===s||null===other||void 0===other?!1:other.length<=s.length},fromCharCode=String.fromCharCode,ExtString;return ExtString={fromCodePoint:String.fromCodePoint||function(){for(var codePoint,result='',codeUnits=
[],index=-1,length=arguments.length;++index<length;)codePoint=Number(arguments[index]),(!isFinite(codePoint)||0>codePoint||1114111<codePoint||Math.floor(codePoint)!==codePoint)&&Ext.raise('Invalid code point: '+codePoint),65535>=codePoint?codeUnits.push(codePoint):(codePoint-=65536,codeUnits.push((codePoint>>10)+55296,codePoint%1024+56320)),index+1===length&&(result+=fromCharCode(codeUnits),codeUnits.length=0);return result},insert:function(s,value,index){if(!s)return value;if(!value)return s;var len=
s.length;index||0===index||(index=len);0>index&&(index*=-1,index=index>=len?0:len-index);return s=0===index?value+s:index>=s.length?s+value:s.substr(0,index)+value+s.substr(index)},startsWith:function(s,start,ignoreCase){var result=boundsCheck(s,start);result&&(ignoreCase&&(s=s.toLowerCase(),start=start.toLowerCase()),result=0===s.lastIndexOf(start,0));return result},endsWith:function(s,end,ignoreCase){var result=boundsCheck(s,end);result&&(ignoreCase&&(s=s.toLowerCase(),end=end.toLowerCase()),result=
-1!==s.indexOf(end,s.length-end.length));return result},createVarName:function(s){return s.replace(varReplace,'')},htmlEncode:function(value){return value?String(value).replace(charToEntityRegex,htmlEncodeReplaceFn):value},htmlDecode:function(value){return value?String(value).replace(entityToCharRegex,htmlDecodeReplaceFn):value},hasHtmlCharacters:function(s){return charToEntityRegex.test(s)},addCharacterEntities:function(newEntities){var charKeys=[],entityKeys=[],key;for(key in newEntities){var echar=
newEntities[key];entityToChar[key]=echar;charToEntity[echar]=key;charKeys.push(echar);entityKeys.push(key)}charToEntityRegex=new RegExp('('+charKeys.join('|')+')','g');entityToCharRegex=new RegExp('('+entityKeys.join('|')+'|\x26#[0-9]{1,5};)','g')},resetCharacterEntities:function(){charToEntity={};entityToChar={};this.addCharacterEntities({'\x26amp;':'\x26','\x26gt;':'\x3e','\x26lt;':'\x3c','\x26quot;':'"','\x26#39;':"'"})},urlAppend:function(url,string){return Ext.isEmpty(string)?url:url+(-1===url.indexOf('?')?
'?':'\x26')+string},trim:function(string){string&&(string=string.replace(trimRegex,''));return string||''},capitalize:function(string){string&&(string=string.charAt(0).toUpperCase()+string.substr(1));return string||''},uncapitalize:function(string){string&&(string=string.charAt(0).toLowerCase()+string.substr(1));return string||''},ellipsis:function(value,length,word){if(value&&value.length>length){if(word){word=value.substr(0,length-2);var index=Math.max(word.lastIndexOf(' '),word.lastIndexOf('.'),
word.lastIndexOf('!'),word.lastIndexOf('?'));if(-1!==index&&index>=length-15)return word.substr(0,index)+'...'}return value.substr(0,length-3)+'...'}return value},escapeRegex:function(string){return string.replace(escapeRegexRe,'\\$1')},createRegex:function(value,startsWith,endsWith,ignoreCase){var ret=value;null==value||value.exec||(ret=ExtString.escapeRegex(String(value)),!1!==startsWith&&(ret='^'+ret),!1!==endsWith&&(ret+='$'),ret=new RegExp(ret,!1!==ignoreCase?'i':''));return ret},escape:function(string){return string.replace(escapeRe,
'\\$1')},toggle:function(string,value,other){return string===value?other:value},leftPad:function(string,size,character){string=String(string);for(character=character||' ';string.length<size;)string=character+string;return string},repeat:function(pattern,count,sep){1>count&&(count=0);for(var buf=[];count--;)buf.push(pattern);return buf.join(sep||'')},splitWords:function(words){return words&&'string'==typeof words?words.replace(basicTrimRe,'').split(whitespaceRe):words||[]}}}();Ext.String.resetCharacterEntities();
Ext.htmlEncode=Ext.String.htmlEncode;Ext.htmlDecode=Ext.String.htmlDecode;Ext.urlAppend=Ext.String.urlAppend;
Ext.Date=function(){function xf(format){var args=Array.prototype.slice.call(arguments,1);return format.replace(numberTokenRe,function(m,i){return args[i]})}var nativeDate=Date,stripEscapeRe=/(\\.)/g,hourInfoRe=/([gGhHisucUOPZ]|MS)/,dateInfoRe=/([djzmnYycU]|MS)/,slashRe=/\\/gi,numberTokenRe=/\{(\d+)\}/g,MSFormatRe=/\/Date\(([-+])?(\d+)(?:[+-]\d{4})?\)\//,pad=Ext.String.leftPad;Date.prototype.toISOString||(Date.prototype.toISOString=function(){return pad(this.getUTCFullYear(),4,'0')+'-'+pad(this.getUTCMonth()+
1,2,'0')+'-'+pad(this.getUTCDate(),2,'0')+'T'+pad(this.getUTCHours(),2,'0')+':'+pad(this.getUTCMinutes(),2,'0')+':'+pad(this.getUTCSeconds(),2,'0')+'.'+pad(this.getUTCMilliseconds(),3,'0')+'Z'});var utilDate={now:nativeDate.now,toString:function(date){date||(date=new nativeDate);return date.getFullYear()+'-'+pad(date.getMonth()+1,2,'0')+'-'+pad(date.getDate(),2,'0')+'T'+pad(date.getHours(),2,'0')+':'+pad(date.getMinutes(),2,'0')+':'+pad(date.getSeconds(),2,'0')},getElapsed:function(dateA,dateB){return Math.abs(dateA-
(dateB||utilDate.now()))},useStrict:!1,formatCodeToRegex:function(character,currentGroup){var p=utilDate.parseCodes[character];p&&(p='function'===typeof p?p():p,utilDate.parseCodes[character]=p);return p?Ext.applyIf({c:p.c?xf(p.c,currentGroup||'{0}'):p.c},p):{g:0,c:null,s:Ext.String.escapeRegex(character)}},parseFunctions:{MS:function(input,strict){return(input=(input||'').match(MSFormatRe))?new nativeDate(1*((input[1]||'')+input[2])):null},time:function(input,strict){return(input=parseInt(input,
10))||0===input?new nativeDate(input):null},timestamp:function(input,strict){return(input=parseInt(input,10))||0===input?new nativeDate(1E3*input):null}},parseRegexes:[],formatFunctions:{MS:function(){return'\\/Date('+this.getTime()+')\\/'},time:function(){return this.getTime().toString()},timestamp:function(){return utilDate.format(this,'U')}},y2kYear:50,MILLI:'ms',SECOND:'s',MINUTE:'mi',HOUR:'h',DAY:'d',MONTH:'mo',YEAR:'y',DAYS_IN_WEEK:7,MONTHS_IN_YEAR:12,MAX_DAYS_IN_MONTH:31,SUNDAY:0,MONDAY:1,
TUESDAY:2,WEDNESDAY:3,THURSDAY:4,FRIDAY:5,SATURDAY:6,defaults:{},dayNames:'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '),monthNames:'January February March April May June July August September October November December'.split(' '),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',firstDayOfWeek:0,weekendDays:[0,
6],getShortMonthName:function(month){return utilDate.monthNames[month].substring(0,3)},getShortDayName:function(day){return utilDate.dayNames[day].substring(0,3)},getMonthNumber:function(name){return utilDate.monthNumbers[name.substring(0,1).toUpperCase()+name.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(format){return hourInfoRe.test(format.replace(stripEscapeRe,''))},formatContainsDateInfo:function(format){return dateInfoRe.test(format.replace(stripEscapeRe,''))},unescapeFormat:function(format){return format.replace(slashRe,
'')},formatCodes:{d:"Ext.String.leftPad(m.getDate(), 2, '0')",D:'Ext.Date.getShortDayName(m.getDay())',j:'m.getDate()',l:'Ext.Date.dayNames[m.getDay()]',N:'(m.getDay() ? m.getDay() : 7)',S:'Ext.Date.getSuffix(m)',w:'m.getDay()',z:'Ext.Date.getDayOfYear(m)',W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(m), 2, '0')",F:'Ext.Date.monthNames[m.getMonth()]',m:"Ext.String.leftPad(m.getMonth() + 1, 2, '0')",M:'Ext.Date.getShortMonthName(m.getMonth())',n:'(m.getMonth() + 1)',t:'Ext.Date.getDaysInMonth(m)',
L:'(Ext.Date.isLeapYear(m) ? 1 : 0)',o:'(m.getFullYear() + (Ext.Date.getWeekOfYear(m) \x3d\x3d 1 \x26\x26 m.getMonth() \x3e 0 ? +1 : (Ext.Date.getWeekOfYear(m) \x3e\x3d 52 \x26\x26 m.getMonth() \x3c 11 ? -1 : 0)))',Y:"Ext.String.leftPad(m.getFullYear(), 4, '0')",y:"('' + m.getFullYear()).substring(2, 4)",a:"(m.getHours() \x3c 12 ? 'am' : 'pm')",A:"(m.getHours() \x3c 12 ? 'AM' : 'PM')",g:'((m.getHours() % 12) ? m.getHours() % 12 : 12)',G:'m.getHours()',h:"Ext.String.leftPad((m.getHours() % 12) ? m.getHours() % 12 : 12, 2, '0')",
H:"Ext.String.leftPad(m.getHours(), 2, '0')",i:"Ext.String.leftPad(m.getMinutes(), 2, '0')",s:"Ext.String.leftPad(m.getSeconds(), 2, '0')",u:"Ext.String.leftPad(m.getMilliseconds(), 3, '0')",O:'Ext.Date.getGMTOffset(m)',P:'Ext.Date.getGMTOffset(m, true)',T:'Ext.Date.getTimezone(m)',Z:'(m.getTimezoneOffset() * -60)',c:function(){var code=[],i;for(i=0;12>i;++i){var e='Y-m-dTH:i:sP'.charAt(i);code.push('T'===e?"'T'":utilDate.getFormatCode(e))}return code.join(' + ')},C:function(){return'm.toISOString()'},
U:'Math.round(m.getTime() / 1000)'},isValid:function(year,month,day,hour,minute,second,millisecond){hour=hour||0;minute=minute||0;second=second||0;millisecond=millisecond||0;var dt=utilDate.add(new nativeDate(100>year?100:year,month-1,day,hour,minute,second,millisecond),utilDate.YEAR,100>year?year-100:0);return year===dt.getFullYear()&&month===dt.getMonth()+1&&day===dt.getDate()&&hour===dt.getHours()&&minute===dt.getMinutes()&&second===dt.getSeconds()&&millisecond===dt.getMilliseconds()},parse:function(input,
format,strict){var p=utilDate.parseFunctions;null==p[format]&&utilDate.createParser(format);return p[format].call(utilDate,input,Ext.isDefined(strict)?strict:utilDate.useStrict)},parseDate:function(input,format,strict){return utilDate.parse(input,format,strict)},getFormatCode:function(character){var f=utilDate.formatCodes[character];f&&(f='function'===typeof f?f():f,utilDate.formatCodes[character]=f);return f||"'"+Ext.String.escape(character)+"'"},createFormat:function(format){var code=[],special=
!1,i;for(i=0;i<format.length;++i){var ch=format.charAt(i);special||'\\'!==ch?special?(special=!1,code.push("'"+Ext.String.escape(ch)+"'")):'\n'===ch?code.push("'\\n'"):code.push(utilDate.getFormatCode(ch)):special=!0}utilDate.formatFunctions[format]=Ext.functionFactory('var m\x3dthis;return '+code.join('+'))},createParser:function(format){for(var regexNum=utilDate.parseRegexes.length,currentGroup=1,calc=[],regex=[],special=!1,ch,i=0,len=format.length,atEnd=[];i<len;++i)ch=format.charAt(i),special||
'\\'!==ch?special?(special=!1,regex.push(Ext.String.escape(ch))):(ch=utilDate.formatCodeToRegex(ch,currentGroup),currentGroup+=ch.g,regex.push(ch.s),ch.g&&ch.c&&(ch.calcAtEnd?atEnd.push(ch.c):calc.push(ch.c))):special=!0;calc=calc.concat(atEnd);utilDate.parseRegexes[regexNum]=new RegExp('^'+regex.join('')+'$','i');utilDate.parseFunctions[format]=Ext.functionFactory('input','strict',xf("var me \x3d this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday, daysInMonth, dayMatched,\ndef \x3d me.defaults,\nfrom \x3d Ext.Number.from,\nresults \x3d String(input).match(me.parseRegexes[{0}]);\nif(results){\n{1}\nif(u !\x3d null){\nv \x3d new Date(u * 1000);\n}else{\ndt \x3d me.clearTime(new Date);\ny \x3d from(y, from(def.y, dt.getFullYear()));\nm \x3d from(m, from(def.m - 1, dt.getMonth()));\ndayMatched \x3d d !\x3d\x3d undefined;\nd \x3d from(d, from(def.d, dt.getDate()));\nif (!dayMatched) {\ndt.setDate(1);\ndt.setMonth(m);\ndt.setFullYear(y);\ndaysInMonth \x3d me.getDaysInMonth(dt);\nif (d \x3e daysInMonth) {\nd \x3d daysInMonth;\n}\n}\nh  \x3d from(h, from(def.h, dt.getHours()));\ni  \x3d from(i, from(def.i, dt.getMinutes()));\ns  \x3d from(s, from(def.s, dt.getSeconds()));\nms \x3d from(ms, from(def.ms, dt.getMilliseconds()));\nif(z \x3e\x3d 0 \x26\x26 y \x3e\x3d 0){\nv \x3d me.add(new Date(y \x3c 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y \x3c 100 ? y - 100 : 0);\nv \x3d !strict? v : (strict \x3d\x3d\x3d true \x26\x26 (z \x3c\x3d 364 || (me.isLeapYear(v) \x26\x26 z \x3c\x3d 365))? me.add(v, me.DAY, z) : null);\n}else if(strict \x3d\x3d\x3d true \x26\x26 !me.isValid(y, m + 1, d, h, i, s, ms)){\nv \x3d null;\n}else{\nif (W) {\nyear \x3d y || (new Date()).getFullYear();\njan4 \x3d new Date(year, 0, 4, 0, 0, 0);\nd \x3d jan4.getDay();\nweek1monday \x3d new Date(jan4.getTime() - ((d \x3d\x3d\x3d 0 ? 6 : d - 1) * 86400000));\nv \x3d Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000 + 43200000)));\n} else {\nv \x3d me.add(new Date(y \x3c 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y \x3c 100 ? y - 100 : 0);\n}\n}\n}\n}\nif(v){\nif(zz !\x3d null){\nv \x3d me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);\n}else if(o){\nv \x3d me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn \x3d\x3d '+'? -1 : 1) * (hr * 60 + mn));\n}\n}\nreturn (v !\x3d null) ? v : null;",
regexNum,calc.join('')))},parseCodes:{d:{g:1,c:'d \x3d parseInt(results[{0}], 10);\n',s:'(3[0-1]|[1-2][0-9]|0[1-9])'},j:{g:1,c:'d \x3d parseInt(results[{0}], 10);\n',s:'(3[0-1]|[1-2][0-9]|[1-9])'},D:function(){for(var a=[],i=0;7>i;a.push(utilDate.getShortDayName(i)),++i);return{g:0,c:null,s:'(?:'+a.join('|')+')'}},l:function(){return{g:0,c:null,s:'(?:'+utilDate.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 \x3d parseInt(results[{0}], 10);\n',
s:'(\\d{1,3})'},W:{g:1,c:'W \x3d parseInt(results[{0}], 10);\n',s:'(\\d{2})'},F:function(){return{g:1,c:'m \x3d parseInt(me.getMonthNumber(results[{0}]), 10);\n',s:'('+utilDate.monthNames.join('|')+')'}},M:function(){for(var a=[],i=0;12>i;a.push(utilDate.getShortMonthName(i)),++i);return Ext.applyIf({s:'('+a.join('|')+')'},utilDate.formatCodeToRegex('F'))},m:{g:1,c:'m \x3d parseInt(results[{0}], 10) - 1;\n',s:'(1[0-2]|0[1-9])'},n:{g:1,c:'m \x3d 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 \x3d parseInt(results[{0}], 10);\n',s:'(\\d{4})'},Y:{g:1,c:'y \x3d parseInt(results[{0}], 10);\n',s:'(\\d{4})'},y:{g:1,c:'var ty \x3d parseInt(results[{0}], 10);\ny \x3d ty \x3e me.y2kYear ? 1900 + ty : 2000 + ty;\n',s:'(\\d{2})'},a:{g:1,c:'if (/(am)/i.test(results[{0}])) {\nif (!h || h \x3d\x3d 12) { h \x3d 0; }\n} else { if (!h || h \x3c 12) { h \x3d (h || 0) + 12; }}',s:'(am|pm|AM|PM)',calcAtEnd:!0},A:{g:1,c:'if (/(am)/i.test(results[{0}])) {\nif (!h || h \x3d\x3d 12) { h \x3d 0; }\n} else { if (!h || h \x3c 12) { h \x3d (h || 0) + 12; }}',
s:'(AM|PM|am|pm)',calcAtEnd:!0},g:{g:1,c:'h \x3d parseInt(results[{0}], 10);\n',s:'(1[0-2]|[0-9])'},G:{g:1,c:'h \x3d parseInt(results[{0}], 10);\n',s:'(2[0-3]|1[0-9]|[0-9])'},h:{g:1,c:'h \x3d parseInt(results[{0}], 10);\n',s:'(1[0-2]|0[1-9])'},H:{g:1,c:'h \x3d parseInt(results[{0}], 10);\n',s:'(2[0-3]|[0-1][0-9])'},i:{g:1,c:'i \x3d parseInt(results[{0}], 10);\n',s:'([0-5][0-9])'},s:{g:1,c:'s \x3d parseInt(results[{0}], 10);\n',s:'([0-5][0-9])'},u:{g:1,c:'ms \x3d results[{0}]; ms \x3d parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n',
s:'(\\d+)'},O:{g:1,c:"o \x3d results[{0}];\nvar sn \x3d o.substring(0,1),\nhr \x3d o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),\nmn \x3d o.substring(3,5) % 60;\no \x3d ((-12 \x3c\x3d (hr*60 + mn)/60) \x26\x26 ((hr*60 + mn)/60 \x3c\x3d 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n",s:'([+-]\\d{4})'},P:{g:1,c:"o \x3d results[{0}];\nvar sn \x3d o.substring(0,1),\nhr \x3d o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),\nmn \x3d o.substring(4,6) % 60;\no \x3d ((-12 \x3c\x3d (hr*60 + mn)/60) \x26\x26 ((hr*60 + mn)/60 \x3c\x3d 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n",
s:'([+-]\\d{2}:\\d{2})'},T:{g:0,c:null,s:'[A-Z]{1,5}'},Z:{g:1,c:'zz \x3d results[{0}] * 1;\nzz \x3d (-43200 \x3c\x3d zz \x26\x26 zz \x3c\x3d 50400)? zz : null;\n',s:'([+-]?\\d{1,5})'},c:function(){var calc=[],arr=[utilDate.formatCodeToRegex('Y',1),utilDate.formatCodeToRegex('m',2),utilDate.formatCodeToRegex('d',3),utilDate.formatCodeToRegex('H',4),utilDate.formatCodeToRegex('i',5),utilDate.formatCodeToRegex('s',6),{c:"ms \x3d results[7] || '0'; ms \x3d parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},
{c:["if(results[8]) {\nif(results[8] \x3d\x3d 'Z'){\nzz \x3d 0;\n}else if (results[8].indexOf(':') \x3e -1){",utilDate.formatCodeToRegex('P',8).c,'}else{',utilDate.formatCodeToRegex('O',8).c,'}\n}'].join('\n')}],l;var i=0;for(l=arr.length;i<l;++i)calc.push(arr[i].c);return{g:1,c:calc.join(''),s:[arr[0].s,'(?:-',arr[1].s,'(?:-',arr[2].s,'(?:(?:T| )?',arr[3].s,':',arr[4].s,'(?::',arr[5].s,')?(?:(?:\\.|,)(\\d+))?(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?)?)?)?'].join('')}},U:{g:1,c:'u \x3d parseInt(results[{0}], 10);\n',
s:'(-?\\d+)'}},dateFormat:function(date,format){return utilDate.format(date,format)},isEqual:function(date1,date2){return date1&&date2?date1.getTime()===date2.getTime():!(date1||date2)},format:function(date,format){var formatFunctions=utilDate.formatFunctions;if(!Ext.isDate(date))return'';null==formatFunctions[format]&&utilDate.createFormat(format);return formatFunctions[format].call(date)+''},getTimezone:function(date){return date.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,
'$1$2').replace(/[^A-Z]/g,'')},getGMTOffset:function(date,colon){date=date.getTimezoneOffset();return(0<date?'-':'+')+Ext.String.leftPad(Math.floor(Math.abs(date)/60),2,'0')+(colon?':':'')+Ext.String.leftPad(Math.abs(date%60),2,'0')},getDayOfYear:function(date){var num=0,d=utilDate.clone(date),m=date.getMonth();var i=0;d.setDate(1);for(d.setMonth(0);i<m;d.setMonth(++i))num+=utilDate.getDaysInMonth(d);return num+date.getDate()-1},getWeekOfYear:function(){return function(date){date=nativeDate.UTC(date.getFullYear(),
date.getMonth(),date.getDate()+3)/864E5;date=Math.floor(date/7);var Wyr=(new nativeDate(6048E5*date)).getUTCFullYear();return date-Math.floor(nativeDate.UTC(Wyr,0,7)/6048E5)+1}}(),isLeapYear:function(date){date=date.getFullYear();return!(0!==(date&3)||!(date%100||0===date%400&&date))},getFirstDayOfMonth:function(date){date=(date.getDay()-(date.getDate()-1))%7;return 0>date?date+7:date},getLastDayOfMonth:function(date){return utilDate.getLastDateOfMonth(date).getDay()},getFirstDateOfMonth:function(date){return new nativeDate(date.getFullYear(),
date.getMonth(),1)},getLastDateOfMonth:function(date){return new nativeDate(date.getFullYear(),date.getMonth(),utilDate.getDaysInMonth(date))},getDaysInMonth:function(){var daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];return function(date){var m=date.getMonth();return 1===m&&utilDate.isLeapYear(date)?29:daysInMonth[m]}}(),getSuffix:function(date){switch(date.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(date){return new nativeDate(date.getTime())},
isDST:function(date){return(new nativeDate(date.getFullYear(),0,1)).getTimezoneOffset()!==date.getTimezoneOffset()},clearTime:function(date,clone){if(isNaN(date.getTime()))return date;if(clone)return utilDate.clearTime(utilDate.clone(date));clone=date.getDate();var c;date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);if(date.getDate()!==clone){var hr=1;for(c=utilDate.add(date,utilDate.HOUR,hr);c.getDate()!==clone;hr++,c=utilDate.add(date,utilDate.HOUR,hr));date.setDate(clone);
date.setHours(c.getHours())}return date},add:function(date,interval,value){var d=utilDate.clone(date),base=0;if(!interval||0===value)return d;var decimalValue=value-parseInt(value,10);if(value=parseInt(value,10))switch(interval.toLowerCase()){case utilDate.MILLI:d.setTime(d.getTime()+value);break;case utilDate.SECOND:d.setTime(d.getTime()+1E3*value);break;case utilDate.MINUTE:d.setTime(d.getTime()+6E4*value);break;case utilDate.HOUR:d.setTime(d.getTime()+36E5*value);break;case utilDate.DAY:d.setTime(d.getTime()+
864E5*value);break;case utilDate.MONTH:var day=date.getDate();28<day&&(day=Math.min(day,utilDate.getLastDateOfMonth(utilDate.add(utilDate.getFirstDateOfMonth(date),utilDate.MONTH,value)).getDate()));d.setDate(day);d.setMonth(date.getMonth()+value);break;case utilDate.YEAR:day=date.getDate(),28<day&&(day=Math.min(day,utilDate.getLastDateOfMonth(utilDate.add(utilDate.getFirstDateOfMonth(date),utilDate.YEAR,value)).getDate())),d.setDate(day),d.setFullYear(date.getFullYear()+value)}if(decimalValue){switch(interval.toLowerCase()){case utilDate.MILLI:base=
1;break;case utilDate.SECOND:base=1E3;break;case utilDate.MINUTE:base=6E4;break;case utilDate.HOUR:base=36E5;break;case utilDate.DAY:base=864E5;break;case utilDate.MONTH:day=utilDate.getDaysInMonth(d);base=864E5*day;break;case utilDate.YEAR:day=utilDate.isLeapYear(d)?366:365,base=864E5*day}base&&d.setTime(d.getTime()+base*decimalValue)}return d},subtract:function(date,interval,value){return utilDate.add(date,interval,-value)},between:function(date,start,end){date=date.getTime();return start.getTime()<=
date&&date<=end.getTime()},isWeekend:function(date){return-1<Ext.Array.indexOf(this.weekendDays,date.getDay())},utcToLocal:function(d){return new Date(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds())},localToUtc:function(d){return utilDate.utc(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes(),d.getSeconds(),d.getMilliseconds())},utc:function(year,month,day,hour,min,s,ms){return new Date(Date.UTC(year,month,
day,hour||0,min||0,s||0,ms||0))},compat:function(){var p='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'.split(' ');var proto='dateFormat format getTimezone getGMTOffset getDayOfYear getWeekOfYear isLeapYear getFirstDayOfMonth getLastDayOfMonth getDaysInMonth getSuffix clone isDST clearTime add between'.split(' '),
sLen=p.length,pLen=proto.length,s;for(s=0;s<sLen;s++){var stat=p[s];nativeDate[stat]=utilDate[stat]}for(p=0;p<pLen;p++){var prot=proto[p];nativeDate.prototype[prot]=function(){var args=Array.prototype.slice.call(arguments);args.unshift(this);return utilDate[prot].apply(utilDate,args)}}},diff:function(min,max,unit){var est=+max-min;switch(unit){case utilDate.MILLI:return est;case utilDate.SECOND:return Math.floor(est/1E3);case utilDate.MINUTE:return Math.floor(est/6E4);case utilDate.HOUR:return Math.floor(est/
36E5);case utilDate.DAY:return Math.floor(est/864E5);case 'w':return Math.floor(est/6048E5);case utilDate.MONTH:return est=12*max.getFullYear()+max.getMonth()-(12*min.getFullYear()+min.getMonth()),utilDate.add(min,unit,est)>max?est-1:est;case utilDate.YEAR:return est=max.getFullYear()-min.getFullYear(),utilDate.add(min,unit,est)>max?est-1:est}},align:function(date,unit,step){var num=new nativeDate(+date);switch(unit.toLowerCase()){case utilDate.MILLI:return num;case utilDate.SECOND:return num.setUTCSeconds(num.getUTCSeconds()-
num.getUTCSeconds()%step),num.setUTCMilliseconds(0),num;case utilDate.MINUTE:return num.setUTCMinutes(num.getUTCMinutes()-num.getUTCMinutes()%step),num.setUTCSeconds(0),num.setUTCMilliseconds(0),num;case utilDate.HOUR:return num.setUTCHours(num.getUTCHours()-num.getUTCHours()%step),num.setUTCMinutes(0),num.setUTCSeconds(0),num.setUTCMilliseconds(0),num;case utilDate.DAY:return 7!==step&&14!==step||num.setUTCDate(num.getUTCDate()-num.getUTCDay()+1),num.setUTCHours(0),num.setUTCMinutes(0),num.setUTCSeconds(0),
num.setUTCMilliseconds(0),num;case utilDate.MONTH:return num.setUTCMonth(num.getUTCMonth()-(num.getUTCMonth()-1)%step,1),num.setUTCHours(0),num.setUTCMinutes(0),num.setUTCSeconds(0),num.setUTCMilliseconds(0),num;case utilDate.YEAR:return num.setUTCFullYear(num.getUTCFullYear()-num.getUTCFullYear()%step,1,1),num.setUTCHours(0),num.setUTCMinutes(0),num.setUTCSeconds(0),num.setUTCMilliseconds(0),date}}};utilDate.parseCodes.C=utilDate.parseCodes.c;return utilDate}();
Ext.Function=function(){var lastTime=0,animFrameId,animFrameHandlers=[],animFrameNoArgs=[],idSource=0,animFrameMap={},win=window,global=Ext.global,hasImmediate=!(!global.setImmediate||!global.clearImmediate),requestAnimFrame=win.requestAnimationFrame||win.webkitRequestAnimationFrame||win.mozRequestAnimationFrame||win.oRequestAnimationFrame||function(callback){var currTime=Ext.now(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=win.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);
lastTime=currTime+timeToCall;return id},fireHandlers=function(){var len=animFrameHandlers.length,i;animFrameId=null;for(i=0;i<len;i++){var handler=animFrameHandlers[i];var id=handler[3];animFrameMap[id]&&(handler[0].apply(handler[1]||global,handler[2]||animFrameNoArgs),delete animFrameMap[id])}animFrameHandlers=animFrameHandlers.slice(len)},fireElevatedHandlers=function(){Ext.elevateFunction(fireHandlers)},ExtFunction={flexSetter:function(setter){return function(name,value){if(null!==name)if('string'!==
typeof name){for(k in name)name.hasOwnProperty(k)&&setter.call(this,k,name[k]);if(Ext.enumerables)for(value=Ext.enumerables.length;value--;){var k=Ext.enumerables[value];name.hasOwnProperty(k)&&setter.call(this,k,name[k])}}else setter.call(this,name,value);return this}},bind:function(fn,scope,args,appendArgs){if(2===arguments.length)return function(){return fn.apply(scope,arguments)};var slice=Array.prototype.slice;return function(){var callArgs=args||arguments;!0===appendArgs?(callArgs=slice.call(arguments,
0),callArgs=callArgs.concat(args)):'number'===typeof appendArgs&&(callArgs=slice.call(arguments,0),Ext.Array.insert(callArgs,appendArgs,args));return fn.apply(scope||global,callArgs)}},bindCallback:function(callback,scope,args,delay,caller){return function(){var a=Ext.Array.slice(arguments);return Ext.callback(callback,scope,args?args.concat(a):a,delay,caller)}},pass:function(fn,args,scope){Ext.isArray(args)||(args=Ext.isIterable(args)?Ext.Array.clone(args):void 0!==args?[args]:[]);return function(){var fnArgs=
args.slice();fnArgs.push.apply(fnArgs,arguments);return fn.apply(scope||this,fnArgs)}},alias:function(object,methodName){return function(){return object[methodName].apply(object,arguments)}},clone:function(method){return function(){return method.apply(this,arguments)}},createInterceptor:function(origFn,newFn,scope,returnValue){return Ext.isFunction(newFn)?(returnValue=Ext.isDefined(returnValue)?returnValue:null,function(){var args=arguments;return!1!==newFn.apply(scope||this||global,args)?origFn.apply(this||
global,args):returnValue}):origFn},createDelayed:function(fn,delay,scope,args$jscomp$0,appendArgs){if(scope||args$jscomp$0)fn=Ext.Function.bind(fn,scope,args$jscomp$0,appendArgs);return function(){var me=this,args=Array.prototype.slice.call(arguments);setTimeout(function(){Ext.elevateFunction?Ext.elevateFunction(fn,me,args):fn.apply(me,args)},delay)}},defer:function(fn,millis,scope,args,appendArgs){fn=Ext.Function.bind(fn,scope,args,appendArgs);if(0<millis)return setTimeout(function(){Ext.elevateFunction?
Ext.elevateFunction(fn):fn()},millis);fn();return 0},interval:function(fn,millis,scope,args,appendArgs){fn=Ext.Function.bind(fn,scope,args,appendArgs);return setInterval(function(){Ext.elevateFunction?Ext.elevateFunction(fn):fn()},millis)},createSequence:function(originalFn,newFn,scope){return newFn?function(){var result=originalFn.apply(this,arguments);newFn.apply(scope||this,arguments);return result}:originalFn},createBuffered:function(fn,buffer,scope,args){var timerId;return function(){var callArgs=
args||Array.prototype.slice.call(arguments,0),me=scope||this;timerId&&clearTimeout(timerId);timerId=setTimeout(function(){Ext.elevateFunction?Ext.elevateFunction(fn,me,callArgs):fn.apply(me,callArgs)},buffer)}},createAnimationFrame:function(fn,scope,args,queueStrategy){var timerId;queueStrategy=queueStrategy||3;return function(){var callArgs=args||Array.prototype.slice.call(arguments,0);scope=scope||this;3===queueStrategy&&timerId&&ExtFunction.cancelAnimationFrame(timerId);if(queueStrategy&1||!timerId)timerId=
ExtFunction.requestAnimationFrame(function(){timerId=null;fn.apply(scope,callArgs)})}},requestAnimationFrame:function(fn,scope,args){var id=++idSource,handler=Array.prototype.slice.call(arguments,0);handler[3]=id;animFrameMap[id]=1;animFrameHandlers.push(handler);animFrameId||(animFrameId=requestAnimFrame(Ext.elevateFunction?fireElevatedHandlers:fireHandlers));return id},cancelAnimationFrame:function(id){delete animFrameMap[id]},createThrottled:function(fn,interval,scope){var lastCallTime=0,elapsed,
lastArgs,timer,execute=function(){Ext.elevateFunction?Ext.elevateFunction(fn,scope,lastArgs):fn.apply(scope,lastArgs);lastCallTime=Ext.now();timer=null};return function(){scope||(scope=this);elapsed=Ext.now()-lastCallTime;lastArgs=arguments;elapsed>=interval?(clearTimeout(timer),execute()):timer||(timer=Ext.defer(execute,interval-elapsed))}},createBarrier:function(count,fn,scope){return function(){--count||fn.apply(scope,arguments)}},interceptBefore:function(object,methodName,fn,scope){var method=
object[methodName]||Ext.emptyFn;return object[methodName]=function(){var ret=fn.apply(scope||this,arguments);method.apply(this,arguments);return ret}},interceptAfter:function(object,methodName,fn,scope){var method=object[methodName]||Ext.emptyFn;return object[methodName]=function(){method.apply(this,arguments);return fn.apply(scope||this,arguments)}},interceptAfterOnce:function(object,methodName,fn,scope){var origMethod=object[methodName];var newMethod=function(){origMethod&&origMethod.apply(this,
arguments);var ret=fn.apply(scope||this,arguments);object[methodName]=origMethod;object=methodName=fn=scope=origMethod=newMethod=null;return ret};return object[methodName]=newMethod},makeCallback:function(callback,scope){return function(){return scope[callback].apply(scope,arguments)}},memoize:function(fn,scope,hashFn){var memo={},isFunc=hashFn&&Ext.isFunction(hashFn);return function(value){var key=isFunc?hashFn.apply(scope,arguments):value;key in memo||(memo[key]=fn.apply(scope,arguments));return memo[key]}}};
Ext.asap=hasImmediate?function(fn,scope,parameters){if(null!=scope||null!=parameters)fn=ExtFunction.bind(fn,scope,parameters);return setImmediate(function(){Ext.elevateFunction?Ext.elevateFunction(fn):fn()})}:function(fn,scope,parameters){if(null!=scope||null!=parameters)fn=ExtFunction.bind(fn,scope,parameters);return setTimeout(function(){Ext.elevateFunction?Ext.elevateFunction(fn):fn()},0,!0)};Ext.asapCancel=hasImmediate?function(id){clearImmediate(id)}:function(id){clearTimeout(id)};Ext.defer=
ExtFunction.defer;Ext.interval=ExtFunction.interval;Ext.pass=ExtFunction.pass;Ext.bind=ExtFunction.bind;Ext.deferCallback=ExtFunction.requestAnimationFrame;return ExtFunction}();
Ext.Number=new function(){var ExtNumber=this,isToFixedBroken='1'!==(.9).toFixed(),math=Math,ClipDefault={count:!1,inclusive:!1,wrap:!0};Ext.apply(ExtNumber,{MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER||-(math.pow(2,53)-1),MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||math.pow(2,53)-1,Clip:{DEFAULT:ClipDefault,COUNT:Ext.applyIf({count:!0},ClipDefault),INCLUSIVE:Ext.applyIf({inclusive:!0},ClipDefault),NOWRAP:Ext.applyIf({wrap:!1},ClipDefault)},clipIndices:function(length,indices,options){options=options||
ClipDefault;var defaultValue=0,wrap=options.wrap,i;indices=indices||[];for(i=0;2>i;++i){var begin=end;var end=indices[i];null==end?end=defaultValue:i&&options.count?(end+=begin,end=end>length?length:end):(wrap&&(end=0>end?length+end:end),i&&options.inclusive&&++end,end=0>end?0:end>length?length:end);defaultValue=length}indices[0]=begin;indices[1]=end<begin?begin:end;return indices},constrain:function(number,min,max){var x=parseFloat(number);null===min&&(min=number);null===max&&(max=number);return x<
min?min:x>max?max:x},snap:function(value,increment,minValue,maxValue){if(void 0===value||value<minValue)return minValue||0;if(increment){var m=value%increment;0!==m&&(value-=m,2*m>=increment?value+=increment:2*m<-increment&&(value-=increment))}return ExtNumber.constrain(value,minValue,maxValue)},snapInRange:function(value,increment,minValue,maxValue){var tween;minValue=minValue||0;if(void 0===value||value<minValue)return minValue;increment&&(tween=(value-minValue)%increment)&&(value-=tween,2*tween>=
increment&&(value+=increment));void 0!==maxValue&&value>(maxValue=ExtNumber.snapInRange(maxValue,increment,minValue))&&(value=maxValue);return value},roundToNearest:function(value,interval){interval=interval||1;return interval*math.round(value/interval)},sign:math.sign||function(x){x=+x;return 0===x||isNaN(x)?x:0<x?1:-1},log10:math.log10||function(x){return math.log(x)*math.LOG10E},isEqual:function(n1,n2,epsilon){return math.abs(n1-n2)<epsilon},isFinite:Number.isFinite||function(value){return'number'===
typeof value&&isFinite(value)},toFixed:isToFixedBroken?function(value,precision){precision=precision||0;var pow=math.pow(10,precision);return(math.round(value*pow)/pow).toFixed(precision)}:function(value,precision){return value.toFixed(precision)},from:function(value,defaultValue){isFinite(value)&&(value=parseFloat(value));return isNaN(value)?defaultValue:value},randomInt:function(from,to){return math.floor(math.random()*(to-from+1)+from)},correctFloat:function(n){return parseFloat(n.toPrecision(14))}});
Ext.num=function(){return ExtNumber.from.apply(this,arguments)}};
(function(){var TemplateClass=function(){},queryRe=/^\?/,keyRe=/(\[):?([^\]]*)\]/g,nameRe=/^([^\[]+)/,plusRe=/\+/g,ExtObject=Ext.Object={chain:Object.create||function(object){TemplateClass.prototype=object;object=new TemplateClass;TemplateClass.prototype=null;return object},clear:function(object){for(var key in object)delete object[key];return object},freeze:Object.freeze?function(obj,deep){if(obj&&'object'===typeof obj&&!Object.isFrozen(obj)&&(Object.freeze(obj),deep))for(var name in obj)ExtObject.freeze(obj[name],
deep);return obj}:Ext.identityFn,toQueryObjects:function(name,value,recursive){var self=ExtObject.toQueryObjects,objects=[],ln;if(Ext.isArray(value)){var i=0;for(ln=value.length;i<ln;i++)recursive?objects=objects.concat(self(name+'['+i+']',value[i],!0)):objects.push({name:name,value:value[i]})}else if(Ext.isObject(value))for(i in value)value.hasOwnProperty(i)&&(recursive?objects=objects.concat(self(name+'['+i+']',value[i],!0)):objects.push({name:name,value:value[i]}));else objects.push({name:name,
value:value});return objects},toQueryString:function(object,recursive){var paramObjects=[],params=[];for(i in object)object.hasOwnProperty(i)&&(paramObjects=paramObjects.concat(ExtObject.toQueryObjects(i,object[i],recursive)));object=0;for(recursive=paramObjects.length;object<recursive;object++){var i=paramObjects[object];var value=i.value;Ext.isEmpty(value)?value='':Ext.isDate(value)&&(value=Ext.Date.toString(value));params.push(encodeURIComponent(i.name)+'\x3d'+encodeURIComponent(String(value)))}return params.join('\x26')},
fromQueryString:function(queryString,recursive){queryString=queryString.replace(queryRe,'').split('\x26');var object={},ln,subLn;var i=0;for(ln=queryString.length;i<ln;i++){var components=queryString[i];if(0<components.length){components=components.split('\x3d');var temp=components[0];temp=temp.replace(plusRe,'%20');temp=decodeURIComponent(temp);components=components[1];void 0!==components?(components=components.replace(plusRe,'%20'),components=decodeURIComponent(components)):components='';if(recursive){var matchedKeys=
temp.match(keyRe);var j=temp.match(nameRe);temp=j[0];var keys=[];if(null===matchedKeys)object[temp]=components;else{j=0;for(subLn=matchedKeys.length;j<subLn;j++){var key=matchedKeys[j];key=2===key.length?'':key.substring(1,key.length-1);keys.push(key)}keys.unshift(temp);temp=object;j=0;for(subLn=keys.length;j<subLn;j++)if(key=keys[j],j===subLn-1)Ext.isArray(temp)&&''===key?temp.push(components):temp[key]=components;else{if(void 0===temp[key]||'string'===typeof temp[key])matchedKeys=keys[j+1],temp[key]=
Ext.isNumeric(matchedKeys)||''===matchedKeys?[]:{};temp=temp[key]}}}else object.hasOwnProperty(temp)?(Ext.isArray(object[temp])||(object[temp]=[object[temp]]),object[temp].push(components)):object[temp]=components}}return object},each:function(object,fn,scope){var enumerables=Ext.enumerables,i,property;if(object){scope=scope||object;for(property in object)if(object.hasOwnProperty(property)&&!1===fn.call(scope,property,object[property],object))return;if(enumerables)for(i=enumerables.length;i--&&(!object.hasOwnProperty(property=
enumerables[i])||!1!==fn.call(scope,property,object[property],object)););}},eachValue:function(object,fn,scope){var enumerables=Ext.enumerables,i,property;scope=scope||object;for(property in object)if(object.hasOwnProperty(property)&&!1===fn.call(scope,object[property]))return;if(enumerables)for(i=enumerables.length;i--&&(!object.hasOwnProperty(property=enumerables[i])||!1!==fn.call(scope,object[property])););},merge:function(destination){for(var i=1,ln=arguments.length,mergeFn=ExtObject.merge,cloneFn=
Ext.clone,object,key,value,sourceKey;i<ln;i++)for(key in object=arguments[i],object)(value=object[key])&&value.constructor===Object?(sourceKey=destination[key])&&sourceKey.constructor===Object?mergeFn(sourceKey,value):destination[key]=cloneFn(value):destination[key]=value;return destination},mergeIf:function(destination){for(var i=1,ln=arguments.length,cloneFn=Ext.clone,object,key,value;i<ln;i++)for(key in object=arguments[i],object)key in destination||(value=object[key],destination[key]=value&&value.constructor===
Object?cloneFn(value):value);return destination},getAllKeys:function(object){var keys=[],property;for(property in object)keys.push(property);return keys},getKey:function(object,value){for(var property in object)if(object.hasOwnProperty(property)&&object[property]===value)return property;return null},getValues:function(object){var values=[],property;for(property in object)object.hasOwnProperty(property)&&values.push(object[property]);return values},getKeys:'function'==typeof Object.keys?function(object){return object?
Object.keys(object):[]}:function(object){var keys=[],property;for(property in object)object.hasOwnProperty(property)&&keys.push(property);return keys},getSize:function(object){var size=0,property;for(property in object)object.hasOwnProperty(property)&&size++;return size},isEmpty:function(object){for(var key in object)if(object.hasOwnProperty(key))return!1;return!0},equals:function(){var check=function(o1,o2){for(var key in o1)if(o1.hasOwnProperty(key)&&o1[key]!==o2[key])return!1;return!0};return function(object1,
object2){return object1===object2?!0:object1&&object2?check(object1,object2)&&check(object2,object1):object1||object2?!1:object1===object2}}(),fork:function(obj){var key,value;if(obj&&obj.constructor===Object){var ret=ExtObject.chain(obj);for(key in obj)(value=obj[key])&&(value.constructor===Object?ret[key]=ExtObject.fork(value):value instanceof Array&&(ret[key]=Ext.Array.clone(value)))}else ret=obj;return ret},defineProperty:'defineProperty'in Object?Object.defineProperty:function(object,name,descriptor){Object.prototype.__defineGetter__&&
(descriptor.get&&object.__defineGetter__(name,descriptor.get),descriptor.set&&object.__defineSetter__(name,descriptor.set))},classify:function(object){var objectProperties=[],propertyClassesMap={},objectClass=function(){for(var i=0,ln=objectProperties.length,property;i<ln;i++)property=objectProperties[i],this[property]=new propertyClassesMap[property]},key,value;for(key in object)object.hasOwnProperty(key)&&(value=object[key])&&value.constructor===Object&&(objectProperties.push(key),propertyClassesMap[key]=
ExtObject.classify(value));objectClass.prototype=object;return objectClass}};Ext.merge=Ext.Object.merge;Ext.mergeIf=Ext.Object.mergeIf})();
Ext.apply(Ext,{_namedScopes:{'this':{isThis:1},controller:{isController:1},self:{isSelf:1},'self.controller':{isSelf:1,isController:1}},escapeId:function(){var validIdRe=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,escapeRx=/([\W]{1})/g,leadingNumRx=/^(\d)/g,escapeFn=function(match,capture){return'\\'+capture},numEscapeFn=function(match,capture){return'\\00'+capture.charCodeAt(0).toString(16)+' '};return function(id){return validIdRe.test(id)?id:id.replace(escapeRx,escapeFn).replace(leadingNumRx,numEscapeFn)}}(),
callback:function(callback,scope,args,delay,caller,defaultScope){if(callback){var namedScope=scope in Ext._namedScopes;callback.charAt?(scope&&!namedScope||!caller||(scope=caller.resolveListenerScope(namedScope?scope:defaultScope)),callback=scope[callback]):namedScope?scope=defaultScope||caller:scope||(scope=caller);var ret;callback&&Ext.isFunction(callback)&&(scope=scope||Ext.global,delay?Ext.defer(callback,delay,scope,args):ret=Ext.elevateFunction?Ext.elevateFunction(callback,scope,args):args?callback.apply(scope,
args):callback.call(scope));return ret}},coerce:function(from,to){var fromType=Ext.typeOf(from);to=Ext.typeOf(to);var isString='string'===typeof from;if(fromType!==to)switch(to){case 'string':return String(from);case 'number':return Number(from);case 'boolean':return!isString||from&&'false'!==from&&'0'!==from?!!from:!1;case 'null':return!isString||from&&'null'!==from?!1:null;case 'undefined':return!isString||from&&'undefined'!==from?!1:void 0;case 'date':return isString&&isNaN(from)?Ext.Date.parse(from,
Ext.Date.defaultFormat):Date(Number(from))}return from},copyTo:function(dest,source,names,usePrototypeKeys){'string'===typeof names&&(names=names.split(Ext.propertyNameSplitRe));for(var name,i=0,n=names?names.length:0;i<n;i++)if(name=names[i],usePrototypeKeys||source.hasOwnProperty(name))dest[name]=source[name];return dest},copy:function(dest,source,names,usePrototypeKeys){'string'===typeof names&&(names=names.split(Ext.propertyNameSplitRe));for(var name,i=0,n=names?names.length:0;i<n;i++)if(name=
names[i],source.hasOwnProperty(name)||usePrototypeKeys&&name in source)dest[name]=source[name];return dest},propertyNameSplitRe:/[,;\s]+/,copyToIf:function(destination,source,names){'string'===typeof names&&(names=names.split(Ext.propertyNameSplitRe));for(var name,i=0,n=names?names.length:0;i<n;i++)name=names[i],void 0===destination[name]&&(destination[name]=source[name]);return destination},copyIf:function(destination,source,names){'string'===typeof names&&(names=names.split(Ext.propertyNameSplitRe));
for(var name,i=0,n=names?names.length:0;i<n;i++)name=names[i],!(name in destination)&&name in source&&(destination[name]=source[name]);return destination},extend:function(){var objectConstructor=Object.prototype.constructor,inlineOverrides=function(o){for(var m in o)o.hasOwnProperty(m)&&(this[m]=o[m])};return function(subclass,superclass,overrides$jscomp$0){Ext.isObject(superclass)&&(overrides$jscomp$0=superclass,superclass=subclass,subclass=overrides$jscomp$0.constructor!==objectConstructor?overrides$jscomp$0.constructor:
function(){superclass.apply(this,arguments)});var F=function(){},superclassProto=superclass.prototype;F.prototype=superclassProto;F=subclass.prototype=new F;F.constructor=subclass;subclass.superclass=superclassProto;superclassProto.constructor===objectConstructor&&(superclassProto.constructor=superclass);subclass.override=function(overrides){Ext.override(subclass,overrides)};F.override=inlineOverrides;F.proto=F;subclass.override(overrides$jscomp$0);subclass.extend=function(o){return Ext.extend(subclass,
o)};return subclass}}(),iterate:function(object,fn,scope){Ext.isEmpty(object)||(void 0===scope&&(scope=object),Ext.isIterable(object)?Ext.Array.each.call(Ext.Array,object,fn,scope):Ext.Object.each.call(Ext.Object,object,fn,scope))},_resourcePoolRe:/^[<]([^<>@:]*)(?:[@]([^<>@:]+))?[>](.+)$/,resolveResource:function(url){var ret=url;url&&'\x3c'===url.charAt(0)&&(url=Ext._resourcePoolRe.exec(url))&&(ret=Ext.getResourcePath(url[3],url[1],url[2]));return ret},urlEncode:function(){var args=Ext.Array.from(arguments),
prefix='';Ext.isString(args[1])&&(prefix=args[1]+'\x26',args[1]=!1);return prefix+Ext.Object.toQueryString.apply(Ext.Object,args)},urlDecode:function(){return Ext.Object.fromQueryString.apply(Ext.Object,arguments)},getScrollbarSize:function(force){var scrollbarSize=Ext._scrollbarSize;if(force||!scrollbarSize){force=document.body;var div=document.createElement('div');div.style.width=div.style.height='100px';div.style.overflow='scroll';div.style.position='absolute';force.appendChild(div);Ext._scrollbarSize=
scrollbarSize={width:div.offsetWidth-div.clientWidth,height:div.offsetHeight-div.clientHeight};force.removeChild(div)}return scrollbarSize},typeOf:function(){var nonWhitespaceRe=/\S/,toString=Object.prototype.toString,typeofTypes={number:1,string:1,'boolean':1,undefined:1},toStringTypes={'[object Array]':'array','[object Date]':'date','[object Boolean]':'boolean','[object Number]':'number','[object RegExp]':'regexp'};return function(value){if(null===value)return'null';var type=typeof value,ret,typeToString;
return typeofTypes[type]?type:(ret=toStringTypes[typeToString=toString.call(value)])?ret:'function'===type?'function':'object'===type?void 0!==value.nodeType?3===value.nodeType?nonWhitespaceRe.test(value.nodeValue)?'textnode':'whitespace':'element':'object':typeToString}}(),factory:function(config,classReference,instance,aliasNamespace){var manager=Ext.ClassManager,newInstance;if(!config||config.isInstance)return instance&&instance!==config&&instance.destroy(),config;if(aliasNamespace){if('string'===
typeof config)return manager.instantiateByAlias(aliasNamespace+'.'+config);if(Ext.isObject(config)&&'type'in config)return manager.instantiateByAlias(aliasNamespace+'.'+config.type,config)}if(!0===config)return instance||Ext.create(classReference);'xtype'in config?newInstance=manager.instantiateByAlias('widget.'+config.xtype,config):'xclass'in config&&(newInstance=Ext.create(config.xclass,config));return newInstance?(instance&&instance.destroy(),newInstance):instance?instance.setConfig(config):Ext.create(classReference,
config)},log:function(){var nullLog=function(){};nullLog.info=nullLog.warn=nullLog.error=Ext.emptyFn;return nullLog}()});
(function(){var checkVerTemp=[''],endOfVersionRe=/([^\d\.])/,notDigitsRe=/[^\d]/g,plusMinusRe=/[\-+]/g,stripRe=/\s/g,underscoreRe=/_/g,toolkitNames={classic:1,modern:1},Version;Ext.Version=Version=function(version,defaultMode){var padModes=this.padModes,parts,ver;version.isVersion&&(version=version.version);this.version=ver=String(version).toLowerCase().replace(underscoreRe,'.').replace(plusMinusRe,'');var ch=ver.charAt(0);ch in padModes?(ver=ver.substring(1),defaultMode=padModes[ch]):defaultMode=
defaultMode?padModes[defaultMode]:0;this.pad=defaultMode;padModes=ver.search(endOfVersionRe);this.shortVersion=ver;-1!==padModes&&(this.release=parts=ver.substr(padModes,version.length),this.shortVersion=ver.substr(0,padModes),parts=Version.releaseValueMap[parts]||parts);this.releaseValue=parts||defaultMode;this.shortVersion=this.shortVersion.replace(notDigitsRe,'');this.parts=parts=ver.split('.');for(version=parts.length;version--;)parts[version]=parseInt(parts[version],10);Infinity===defaultMode&&
parts.push(defaultMode);this.major=parts[0]||defaultMode;this.minor=parts[1]||defaultMode;this.patch=parts[2]||defaultMode;this.build=parts[3]||defaultMode;return this};Version.prototype={isVersion:!0,padModes:{'~':NaN,'^':Infinity},release:'',compareTo:function(other){var lhsPad=this.pad,lhsParts=this.parts,lhsLength=lhsParts.length;other=other.isVersion?other:new Version(other);var rhsPad=other.pad,rhsParts=other.parts,rhsLength=rhsParts.length,length=Math.max(lhsLength,rhsLength),i;for(i=0;i<length;i++){var lhs=
i<lhsLength?lhsParts[i]:lhsPad;var rhs=i<rhsLength?rhsParts[i]:rhsPad;if(lhs<rhs)return-1;if(lhs>rhs)return 1}lhs=this.releaseValue;rhs=other.releaseValue;return lhs<rhs?-1:lhs>rhs?1:0},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major},getMinor:function(){return this.minor},getPatch:function(){return this.patch},getBuild:function(){return this.build},getRelease:function(){return this.release},getReleaseValue:function(){return this.releaseValue},
isGreaterThan:function(target){return 0<this.compareTo(target)},isGreaterThanOrEqual:function(target){return 0<=this.compareTo(target)},isLessThan:function(target){return 0>this.compareTo(target)},isLessThanOrEqual:function(target){return 0>=this.compareTo(target)},equals:function(target){return 0===this.compareTo(target)},match:function(target){target=String(target);return this.version.substr(0,target.length)===target},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),
this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(target){return 0<this.compareTo(target)},lt:function(target){return 0>this.compareTo(target)},gtEq:function(target){return 0<=this.compareTo(target)},ltEq:function(target){return 0>=this.compareTo(target)}};Ext.apply(Version,{aliases:{from:{extjs:'ext',core:'core',touch:'modern'},to:{ext:['extjs'],core:['core'],modern:['touch']}},releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,'#':-2,p:-1,pl:-1},getComponentValue:function(value){return value?
isNaN(value)?this.releaseValueMap[value]||value:parseInt(value,10):0},compare:function(current,target){return(current.isVersion?current:new Version(current)).compareTo(target)},set:function(collection,packageName,version){var aliases=Version.aliases.to[packageName];version=version.isVersion?version:new Version(version);collection[packageName]=version;if(aliases)for(packageName=aliases.length;0<packageName--;)collection[aliases[packageName]]=version;return version}});Ext.apply(Ext,{compatVersions:{},
versions:{},lastRegisteredVersion:null,getCompatVersion:function(packageName){var versions=Ext.compatVersions;return(packageName?versions[Version.aliases.from[packageName]||packageName]:versions.ext||versions.touch||versions.core)||Ext.getVersion(packageName)},setCompatVersion:function(packageName,version){Version.set(Ext.compatVersions,packageName,version)},setVersion:function(packageName,version){packageName in toolkitNames&&(Ext.toolkit=packageName);Ext.lastRegisteredVersion=Version.set(Ext.versions,
packageName,version);return this},getVersion:function(packageName){var versions=Ext.versions;return packageName?versions[Version.aliases.from[packageName]||packageName]:versions.ext||versions.touch||versions.core},checkVersion:function(specs,matchAll){var isArray=Ext.isArray(specs),aliases=Version.aliases.from,compat=isArray?specs:checkVerTemp,length=compat.length,versions=Ext.versions,frameworkVer=versions.ext||versions.touch,minVer;isArray||(checkVerTemp[0]=specs);for(specs=0;specs<length;++specs){if(Ext.isString(minVer=
compat[specs])){0<=minVer.indexOf(' ')&&(minVer=minVer.replace(stripRe,''));var index=minVer.indexOf('@');if(0>index){var maxVer=minVer;isArray=frameworkVer}else{isArray=minVer.substring(0,index);if(!(isArray=versions[aliases[isArray]||isArray])){if(matchAll)return!1;continue}maxVer=minVer.substring(index+1)}index=maxVer.indexOf('-');0>index?'+'===maxVer.charAt(index=maxVer.length-1)?(minVer=maxVer.substring(0,index),maxVer=null):minVer=maxVer:(minVer=0<index?maxVer.substring(0,index):null,maxVer=
maxVer.substring(index+1));index=!0;minVer&&(minVer=new Version(minVer,'~'),index=minVer.ltEq(isArray));index&&maxVer&&(maxVer=new Version(maxVer,'~'),index=maxVer.gtEq(isArray))}else index=Ext.checkVersion(minVer.and||minVer.or,!minVer.or),minVer.not&&(index=!index);if(index){if(!matchAll)return!0}else if(matchAll)return!1}return!!matchAll},deprecate:function(packageName,since,closure,scope){1>Version.compare(Ext.getVersion(packageName),since)&&closure.call(scope)}})})();
(function(manifest){var packages=manifest&&manifest.packages||{};manifest=manifest&&manifest.compatibility;var name;for(name in packages){var pkg=packages[name];Ext.setVersion(name,pkg.version)}if(manifest)if(Ext.isString(manifest))Ext.setCompatVersion('core',manifest);else for(name in manifest)Ext.setCompatVersion(name,manifest[name]);packages.ext||packages.touch||(Ext.setVersion('ext','6.2.0.981'),Ext.setVersion('core','6.2.0.981'))})(Ext.manifest);
Ext.Config=function(name){var capitalizedName=name.charAt(0).toUpperCase()+name.substr(1);this.name=name;this.names={internal:'_'+name,initializing:'is'+capitalizedName+'Initializing',apply:'apply'+capitalizedName,update:'update'+capitalizedName,get:'get'+capitalizedName,set:'set'+capitalizedName,initGet:'initGet'+capitalizedName,changeEvent:name.toLowerCase()+'change'};this.root=this};Ext.Config.map={};Ext.Config.get=function(name){var map=Ext.Config.map;return map[name]||(map[name]=new Ext.Config(name))};
Ext.Config.prototype={self:Ext.Config,isConfig:!0,getGetter:function(){return this.getter||(this.root.getter=this.makeGetter())},getInitGetter:function(){return this.initGetter||(this.root.initGetter=this.makeInitGetter())},getSetter:function(){return this.setter||(this.root.setter=this.makeSetter())},getEventedSetter:function(){return this.eventedSetter||(this.root.eventedSetter=this.makeEventedSetter())},getInternalName:function(target){return target.$configPrefixed?this.names.internal:this.name},
mergeNew:function(newValue,oldValue,target,mixinClass){var key;if(oldValue){if(newValue)for(key in oldValue=Ext.Object.chain(oldValue),newValue)mixinClass&&key in oldValue||(oldValue[key]=newValue[key])}else oldValue=newValue;return oldValue},mergeSets:function(newValue,oldValue,preserveExisting){oldValue=oldValue?Ext.Object.chain(oldValue):{};var i;if(newValue instanceof Array)for(i=newValue.length;i--;){var val=newValue[i];preserveExisting&&val in oldValue||(oldValue[val]=!0)}else if(newValue)if(newValue.constructor===
Object)for(i in newValue)val=newValue[i],preserveExisting&&i in oldValue||(oldValue[i]=val);else preserveExisting&&newValue in oldValue||(oldValue[newValue]=!0);return oldValue},makeGetter:function(){var name=this.name,prefixedName=this.names.internal;return function(){return this[this.$configPrefixed?prefixedName:name]}},makeInitGetter:function(){var name=this.name,names=this.names,setName=names.set,getName=names.get,initializingName=names.initializing;return function(){this[initializingName]=!0;
delete this[getName];this[setName](this.config[name]);delete this[initializingName];return this[getName].apply(this,arguments)}},makeSetter:function(){var name=this.name,names=this.names,prefixedName=names.internal,getName=names.get,applyName=names.apply,updateName=names.update;names=function(value){var internalName=this.$configPrefixed?prefixedName:name,oldValue=this[internalName];delete this[getName];if((!this[applyName]||void 0!==(value=this[applyName](value,oldValue)))&&value!==(oldValue=this[internalName])&&
(this[internalName]=value,this[updateName]))this[updateName](value,oldValue);return this};names.$isDefault=!0;return names},makeEventedSetter:function(){var name=this.name,names=this.names,prefixedName=names.internal,getName=names.get,applyName=names.apply,updateName=names.update,changeEventName=names.changeEvent,updateFn=function(me,value,oldValue,internalName){me[internalName]=value;if(me[updateName])me[updateName](value,oldValue)};names=function(value){var internalName=this.$configPrefixed?prefixedName:
name,oldValue=this[internalName];delete this[getName];if((!this[applyName]||void 0!==(value=this[applyName](value,oldValue)))&&value!==(oldValue=this[internalName]))if(this.isConfiguring){if(this[internalName]=value,this[updateName])this[updateName](value,oldValue)}else this.fireEventedAction(changeEventName,[this,value,oldValue],updateFn,this,[this,value,oldValue,internalName]);return this};names.$isDefault=!0;return names}};
(function(){var ExtConfig=Ext.Config,configPropMap=ExtConfig.map,ExtObject=Ext.Object;Ext.Configurator=function(cls){var prototype=cls.prototype,superCfg=cls.superclass?cls.superclass.self.$config:null;this.cls=cls;(this.superCfg=superCfg)?(this.configs=ExtObject.chain(superCfg.configs),this.cachedConfigs=ExtObject.chain(superCfg.cachedConfigs),this.initMap=ExtObject.chain(superCfg.initMap),this.values=ExtObject.chain(superCfg.values),this.needsFork=superCfg.needsFork):(this.configs={},this.cachedConfigs=
{},this.initMap={},this.values={});prototype.config=prototype.defaultConfig=this.values;cls.$config=this};Ext.Configurator.prototype={self:Ext.Configurator,needsFork:!1,initList:null,add:function(config,mixinClass){var Cls=this.cls,configs=this.configs,cachedConfigs=this.cachedConfigs,initMap=this.initMap,prototype=Cls.prototype,mixinConfigs=mixinClass&&mixinClass.$config.configs,values=this.values,isObject,cfg,name,s,value;for(name in config){var meta=(isObject=(value=config[name])&&value.constructor===
Object)&&'$value'in value?value:null;var isCached=!1;meta&&(isCached=!!meta.cached,isObject=(value=meta.$value)&&value.constructor===Object);var merge=meta&&meta.merge;if(cfg=configs[name]){if(mixinClass){merge=cfg.merge;if(!merge)continue;meta=null}else merge=merge||cfg.merge;isCached=values[name];merge?value=merge.call(cfg,value,isCached,Cls,mixinClass):isObject&&isCached&&isCached.constructor===Object&&(value=ExtObject.merge({},isCached,value))}else{mixinConfigs?(cfg=mixinConfigs[name],meta=null):
cfg=ExtConfig.get(name);configs[name]=cfg;if(cfg.cached||isCached)cachedConfigs[name]=!0;isObject=cfg.names;prototype[s=isObject.get]||(prototype[s]=cfg.getter||cfg.getGetter());prototype[s=isObject.set]||(prototype[s]=meta&&meta.evented?cfg.eventedSetter||cfg.getEventedSetter():cfg.setter||cfg.getSetter())}meta&&(cfg.owner!==Cls&&(configs[name]=cfg=Ext.Object.chain(cfg),cfg.owner=Cls),Ext.apply(cfg,meta),delete cfg.$value);!this.needsFork&&value&&(value.constructor===Object||value instanceof Array)&&
(this.needsFork=!0);null!==value?initMap[name]=!0:(prototype.$configPrefixed?prototype[configs[name].names.internal]=null:prototype[configs[name].name]=null,name in initMap&&(initMap[name]=!1));values[name]=value}},configure:function(instance,instanceConfig){var configs=this.configs,initMap=this.initMap,initListMap=this.initListMap,initList=this.initList,prototype=this.cls.prototype,values=this.values,remaining=0,firstInstance=!initList,cachedInitList,name;values=this.needsFork?ExtObject.fork(values):
ExtObject.chain(values);instance.isConfiguring=!0;if(firstInstance)for(name in this.initList=initList=[],this.initListMap=initListMap={},instance.isFirstInstance=!0,initMap){var cfg=configs[name];var getter=cfg.cached;if(initMap[name]){var names=cfg.names;var i=values[name];!prototype[names.set].$isDefault||prototype[names.apply]||prototype[names.update]||'object'===typeof i?(getter?(cachedInitList||(cachedInitList=[])).push(cfg):(initList.push(cfg),initListMap[name]=!0),instance[names.get]=cfg.initGetter||
cfg.getInitGetter()):prototype[cfg.getInternalName(prototype)]=i}else getter&&(prototype[cfg.getInternalName(prototype)]=void 0)}if(initMap=cachedInitList&&cachedInitList.length){for(i=0;i<initMap;++i)cfg=cachedInitList[i].getInternalName(prototype),instance[cfg]=null;for(i=0;i<initMap;++i)names=(cfg=cachedInitList[i]).names,getter=names.get,instance.hasOwnProperty(getter)&&(instance[names.set](values[cfg.name]),delete instance[getter]);for(i=0;i<initMap;++i)cfg=cachedInitList[i].getInternalName(prototype),
prototype[cfg]=instance[cfg],delete instance[cfg]}instanceConfig&&instanceConfig.platformConfig&&(instanceConfig=this.resolvePlatformConfig(instance,instanceConfig));firstInstance&&instance.afterCachedConfig&&!instance.afterCachedConfig.$nullFn&&instance.afterCachedConfig(instanceConfig);instance.config=values;i=0;for(initMap=initList.length;i<initMap;++i)cfg=initList[i],instance[cfg.names.get]=cfg.initGetter||cfg.getInitGetter();instance.transformInstanceConfig&&(instanceConfig=instance.transformInstanceConfig(instanceConfig));
if(instanceConfig)for(name in instanceConfig)i=instanceConfig[name],(cfg=configs[name])?(cfg.lazy||++remaining,initListMap[name]||(instance[cfg.names.get]=cfg.initGetter||cfg.getInitGetter()),cfg.merge?i=cfg.merge(i,values[name],instance):i&&i.constructor===Object&&(i=(prototype=values[name])&&prototype.constructor===Object?ExtObject.merge(values[name],i):Ext.clone(i,!1))):instance[name]=i,values[name]=i;if(!instance.beforeInitConfig||instance.beforeInitConfig.$nullFn||!1!==instance.beforeInitConfig(instanceConfig)){if(instanceConfig)for(name in instanceConfig){if(!remaining)break;
(cfg=configs[name])&&!cfg.lazy&&(--remaining,names=cfg.names,getter=names.get,instance.hasOwnProperty(getter)&&(instance[names.set](values[name]),delete instance[names.get]))}i=0;for(initMap=initList.length;i<initMap;++i)cfg=initList[i],names=cfg.names,getter=names.get,!cfg.lazy&&instance.hasOwnProperty(getter)&&(instance[names.set](values[cfg.name]),delete instance[getter]);delete instance.isConfiguring}},getCurrentConfig:function(instance){var defaultConfig=instance.defaultConfig,config={},name;
for(name in defaultConfig)config[name]=instance[configPropMap[name].names.get]();return config},merge:function(instance,baseConfig,config){var configs=this.configs,name,baseValue;for(name in config){var value=config[name];if(baseValue=configs[name])baseValue.merge?value=baseValue.merge(value,baseConfig[name],instance):value&&value.constructor===Object&&(value=(baseValue=baseConfig[name])&&baseValue.constructor===Object?Ext.Object.merge(baseValue,value):Ext.clone(value,!1));baseConfig[name]=value}return baseConfig},
reconfigure:function(instance,instanceConfig,options){var currentConfig=instance.config,configList=[],strict=instance.$configStrict&&!(options&&!1===options.strict),configs=this.configs,defaults=options&&options.defaults;for(name in instanceConfig)if(!defaults||!instance.hasOwnProperty(name)){currentConfig[name]=instanceConfig[name];if(options=configs[name])instance[options.names.get]=options.initGetter||options.getInitGetter();else if(options=instance.self.prototype[name],strict&&'function'===typeof options&&
!options.$nullFn)continue;configList.push(name)}currentConfig=0;for(strict=configList.length;currentConfig<strict;currentConfig++){var name=configList[currentConfig];if(options=configs[name])defaults=options.names,options=defaults.get,instance.hasOwnProperty(options)&&(instance[defaults.set](instanceConfig[name]),delete instance[options]);else if(options=configPropMap[name]||Ext.Config.get(name),defaults=options.names,instance[defaults.set])instance[defaults.set](instanceConfig[name]);else instance[name]=
instanceConfig[name]}},resolvePlatformConfig:function(instance,instanceConfig){var platformConfig=instanceConfig&&instanceConfig.platformConfig,n;if(platformConfig){var keys=Ext.getPlatformConfigKeys(platformConfig);if(n=keys.length){instanceConfig=Ext.merge({},instanceConfig);var i=0;for(n=keys.length;i<n;++i)this.merge(instance,instanceConfig,platformConfig[keys[i]])}}return instanceConfig}}})();
Ext.Base=function(flexSetter){var noArgs=[],baseStaticMember,baseStaticMembers=[],makeAliasFn=function(name){return function(){return this[name].apply(this,arguments)}},Version=Ext.Version,leadingDigitRe=/^\d/,oneMember={},aliasOneMember={},Base=function(){},BasePrototype=Base.prototype,Reaper;Ext.Reaper=Reaper={delay:100,queue:[],timer:null,add:function(obj){Reaper.timer||(Reaper.timer=Ext.defer(Reaper.tick,Reaper.delay));Reaper.queue.push(obj)},flush:function(){Reaper.timer&&(clearTimeout(Reaper.timer),
Reaper.timer=null);var queue=Reaper.queue,n=queue.length,i,obj;Reaper.queue=[];for(i=0;i<n;++i)(obj=queue[i])&&obj.$reap&&obj.$reap()},tick:function(){Reaper.timer=null;Reaper.flush()}};Ext.apply(Base,{$className:'Ext.Base',$isClass:!0,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},addDeprecations:function(deprecations){var all=[],compatVersion=Ext.getCompatVersion(deprecations.name),names,oldName;for(versionSpec in deprecations)if(leadingDigitRe.test(versionSpec)){var enabled=
new Ext.Version(versionSpec);enabled.deprecations=deprecations[versionSpec];all.push(enabled)}all.sort(Version.compare);for(deprecations=all.length;deprecations--;){var deprecate=(enabled=all[deprecations]).deprecations;var versionSpec=this.prototype;var statics=deprecate.statics;enabled=compatVersion&&compatVersion.lt(enabled);if(!enabled)break;for(;deprecate;){if(names=deprecate.methods)for(oldName in names){var member=names[oldName];var fn=null;if(member)if(Ext.isString(member))enabled&&(fn=makeAliasFn(member));
else{if(member.message||member.fn)member=member.fn;deprecate=versionSpec.hasOwnProperty(oldName)&&versionSpec[oldName];enabled&&member&&(member.$owner=this,member.$name=oldName,deprecate&&(member.$previous=deprecate),fn=member)}fn&&(versionSpec[oldName]=fn)}deprecate=statics;statics=null;versionSpec=this}}},extend:function(parent){var parentPrototype=parent.prototype,name;var prototype=this.prototype=Ext.Object.chain(parentPrototype);prototype.self=this;this.superclass=prototype.superclass=parentPrototype;
if(!parent.$isClass)for(name in BasePrototype)name in prototype&&(prototype[name]=BasePrototype[name]);if(parentPrototype=parentPrototype.$inheritableStatics)for(name in parentPrototype)this.hasOwnProperty(name)||(this[name]=parent[name]);parent.$onExtended&&(this.$onExtended=parent.$onExtended.slice());this.getConfigurator()},$onExtended:[],triggerExtended:function(){var callbacks=this.$onExtended,ln=callbacks.length,i;if(0<ln)for(i=0;i<ln;i++){var callback=callbacks[i];callback.fn.apply(callback.scope||
this,arguments)}},onExtended:function(fn,scope){this.$onExtended.push({fn:fn,scope:scope});return this},addStatics:function(members){this.addMembers(members,!0);return this},addInheritableStatics:function(members){var proto=this.prototype,inheritableStatics=this.$inheritableStatics,name;inheritableStatics||(inheritableStatics=Ext.apply({},proto.$inheritableStatics),this.$inheritableStatics=proto.$inheritableStatics=inheritableStatics);for(name in members)if(members.hasOwnProperty(name)){proto=members[name];
var current=this[name];'function'!==typeof current||current.$isClass||current.$nullFn||(proto.$previous=current);this[name]=proto;inheritableStatics[name]=!0}return this},addMembers:function(members,isStatic,privacy){privacy=Ext.Function.clone;var target=isStatic?this:this.prototype,defaultConfig=!isStatic&&target.defaultConfig,enumerables=Ext.enumerables,privates=members.privates,configs,name;if(privates){delete members.privates;if(!isStatic){var privateStatics=privates.statics;delete privates.statics}this.addMembers(privates,
isStatic,void 0);privateStatics&&this.addMembers(privateStatics,!0,void 0)}for(name in members)if(members.hasOwnProperty(name)){isStatic=members[name];if('function'===typeof isStatic&&!isStatic.$isClass&&!isStatic.$nullFn)isStatic.$owner&&(isStatic=privacy(isStatic)),target.hasOwnProperty(name)&&(isStatic.$previous=target[name]),isStatic.$owner=this,isStatic.$name=name;else if(defaultConfig&&name in defaultConfig&&!target.config.hasOwnProperty(name)){(configs||(configs={}))[name]=isStatic;continue}target[name]=
isStatic}configs&&this.addConfig(configs);if(enumerables)for(configs=0,defaultConfig=enumerables.length;configs<defaultConfig;++configs)members.hasOwnProperty(name=enumerables[configs])&&((isStatic=members[name])&&!isStatic.$nullFn&&(isStatic.$owner&&(isStatic=privacy(isStatic)),isStatic.$owner=this,isStatic.$name=name,target.hasOwnProperty(name)&&(isStatic.$previous=target[name])),target[name]=isStatic);return this},addMember:function(name,member){oneMember[name]=member;this.addMembers(oneMember);
delete oneMember[name];return this},borrow:function(fromClass,members){fromClass=fromClass.prototype;var membersObj={},ln;members=Ext.Array.from(members);var i=0;for(ln=members.length;i<ln;i++){var name=members[i];membersObj[name]=fromClass[name]}return this.addMembers(membersObj)},override:function(members){var statics=members.statics,inheritableStatics=members.inheritableStatics,config=members.config,mixins=members.mixins,cachedConfig=members.cachedConfig;if(statics||inheritableStatics||config)members=
Ext.apply({},members);statics&&(this.addMembers(statics,!0),delete members.statics);inheritableStatics&&(this.addInheritableStatics(inheritableStatics),delete members.inheritableStatics);members.platformConfig&&this.addPlatformConfig(members);config&&(this.addConfig(config),delete members.config);cachedConfig&&(this.addCachedConfig(cachedConfig),delete members.cachedConfig);delete members.mixins;this.addMembers(members);mixins&&this.mixin(mixins);return this},addPlatformConfig:function(data){var platformConfigs=
data.platformConfig,config=data.config,added,name,ln;delete data.platformConfig;var configurator=this.getConfigurator();var classConfigs=configurator.configs;var keys=Ext.getPlatformConfigKeys(platformConfigs);var i=0;for(ln=keys.length;i<ln;++i){var configs=platformConfigs[keys[i]];var hoisted=added=null;for(name in configs){var value=configs[name];config&&name in config?((added||(added={}))[name]=value,(hoisted||(hoisted={}))[name]=config[name],delete config[name]):name in classConfigs?(added||
(added={}))[name]=value:data[name]=value}hoisted&&configurator.add(hoisted);added&&configurator.add(added)}},callParent:function(args){var method;return(method=this.callParent.caller)&&(method.$previous||(method=method.$owner?method:method.caller)&&method.$owner.superclass.self[method.$name]).apply(this,args||noArgs)},callSuper:function(args){var method;return(method=this.callSuper.caller)&&((method=method.$owner?method:method.caller)&&method.$owner.superclass.self[method.$name]).apply(this,args||
noArgs)},mixin:function(name,mixinClass){var prototype,key;if('string'!==typeof name)if(name instanceof Array)for(mixinClass=0,prototype=name.length;mixinClass<prototype;mixinClass++){var mixin=name[mixinClass];this.mixin(mixin.prototype.mixinId||mixin.$className,mixin)}else for(mixin in name)this.mixin(mixin,name[mixin]);else{mixin=mixinClass.prototype;prototype=this.prototype;mixin.onClassMixedIn&&mixin.onClassMixedIn.call(mixinClass,this);prototype.hasOwnProperty('mixins')||(prototype.mixins='mixins'in
prototype?Ext.Object.chain(prototype.mixins):{});for(key in mixin){var mixinValue=mixin[key];'mixins'===key?Ext.applyIf(prototype.mixins,mixinValue):'mixinId'!==key&&'config'!==key&&'$inheritableStatics'!==key&&void 0===prototype[key]&&(prototype[key]=mixinValue)}if(key=mixin.$inheritableStatics){mixinValue={};for(name in key)this.hasOwnProperty(name)||(mixinValue[name]=mixinClass[name]);this.addInheritableStatics(mixinValue)}'config'in mixin&&this.addConfig(mixin.config,mixinClass);prototype.mixins[name]=
mixin;mixin.afterClassMixedIn&&mixin.afterClassMixedIn.call(mixinClass,this);return this}},addConfig:function(config,mixinClass){(this.$config||this.getConfigurator()).add(config,mixinClass)},addCachedConfig:function(config,isMixin){var cached={},key;for(key in config)cached[key]={cached:!0,$value:config[key]};this.addConfig(cached,isMixin)},getConfigurator:function(){return this.$config||new Ext.Configurator(this)},getName:function(){return Ext.getClassName(this)},createAlias:flexSetter(function(alias,
origin){aliasOneMember[alias]=function(){return this[origin].apply(this,arguments)};this.override(aliasOneMember);delete aliasOneMember[alias]})});for(baseStaticMember in Base)Base.hasOwnProperty(baseStaticMember)&&baseStaticMembers.push(baseStaticMember);Base.$staticMembers=baseStaticMembers;Base.getConfigurator();Base.addMembers({$className:'Ext.Base',isInstance:!0,$configPrefixed:!0,$configStrict:!0,isConfiguring:!1,isFirstInstance:!1,destroyed:!1,clearPropertiesOnDestroy:!0,clearPrototypeOnDestroy:!1,
statics:function(){var method=this.statics.caller,self=this.self;return method?method.$owner:self},callParent:function(args){var method;return((method=this.callParent.caller)&&(method.$previous||(method=method.$owner?method:method.caller)&&method.$owner.superclass[method.$name])).apply(this,args||noArgs)},callSuper:function(args){var method;return((method=this.callSuper.caller)&&(method=method.$owner?method:method.caller)&&method.$owner.superclass[method.$name]).apply(this,args||noArgs)},self:Base,
constructor:function(){return this},initConfig:function(instanceConfig){var cfg=this.self.getConfigurator();this.initConfig=Ext.emptyFn;this.initialConfig=instanceConfig||{};cfg.configure(this,instanceConfig);return this},beforeInitConfig:Ext.emptyFn,getConfig:function(name,peek){if(name){var cfg=Ext.Config.map[name];cfg=cfg.names.get;name=peek&&this.hasOwnProperty(cfg)?this.config[name]:this[cfg]()}else name=this.getCurrentConfig();return name},setConfig:function(name,value,options){if(name){if('string'===
typeof name){var config={};config[name]=value}else config=name;this.self.getConfigurator().reconfigure(this,config,options)}return this},getCurrentConfig:function(){return this.self.getConfigurator().getCurrentConfig(this)},hasConfig:function(name){return name in this.defaultConfig},getInitialConfig:function(name){var config=this.config;return name?config[name]:config},$links:null,link:function(name,value){(this.$links||(this.$links={}))[name]=!0;return this[name]=value},unlink:function(names){var ln,
value;var i=0;for(ln=names.length;i<ln;i++){var link=names[i];(value=this[link])&&(value.isInstance&&!value.destroyed?value.destroy():value.parentNode&&'nodeType'in value&&value.parentNode.removeChild(value));this[link]=null}return this},$reap:function(){var protectedProps=this.$noClearOnDestroy,prop;for(prop in this)if((!protectedProps||!protectedProps[prop])&&this.hasOwnProperty(prop)){var value=this[prop];var type=typeof value;if('object'===type||'function'===type&&!value.$noClearOnDestroy)this[prop]=
null}},destroy:function(){var links=this.$links,clearPropertiesOnDestroy=this.clearPropertiesOnDestroy;links&&(this.$links=null,this.unlink(Ext.Object.getKeys(links)));this.destroy=Ext.emptyFn;this.isDestroyed=this.destroyed=!0;!0===clearPropertiesOnDestroy?this.$reap():clearPropertiesOnDestroy&&Reaper.add(this)}});BasePrototype.callOverridden=BasePrototype.callParent;return Base}(Ext.Function.flexSetter);
(function(Cache,prototype){(Ext.util||(Ext.util={})).Cache=Cache=function(config){config&&Ext.apply(this,config);this.head=config={key:null,value:null};this.map={};config.next=config.prev=config};Cache.prototype=prototype={maxSize:100,count:0,clear:function(){var head=this.head,entry=head.next;head.next=head.prev=head;if(!this.evict.$nullFn)for(;entry!==head;entry=entry.next)this.evict(entry.key,entry.value);this.count=0},each:function(fn,scope){scope=scope||this;for(var head=this.head,ent=head.next;ent!==
head&&!fn.call(scope,ent.key,ent.value);ent=ent.next);},get:function(key){var head=this.head,map=this.map,entry=map[key];if(entry)entry.prev!==head&&(this.unlinkEntry(entry),this.linkEntry(entry));else for(map[key]=entry={key:key,value:this.miss.apply(this,arguments)},this.linkEntry(entry),++this.count;this.count>this.maxSize;)this.unlinkEntry(head.prev,!0),--this.count;return entry.value},evict:Ext.emptyFn,linkEntry:function(entry){var head=this.head,first=head.next;entry.next=first;entry.prev=head;
head.next=entry;first.prev=entry},unlinkEntry:function(entry,evicted){var next=entry.next,prev=entry.prev;prev.next=next;next.prev=prev;evicted&&this.evict(entry.key,entry.value)}};prototype.destroy=prototype.clear})();
(function(){function makeCtor(className){return function(){return this.constructor.apply(this,arguments)||null}}var ExtClass,Base$jscomp$0=Ext.Base,baseStaticMembers=Base$jscomp$0.$staticMembers,ruleKeySortFn=function(a,b){return a.length-b.length||(a<b?-1:a>b?1:0)};Ext.Class=ExtClass=function(Class,data,onCreated){'function'!=typeof Class&&(onCreated=data,data=Class,Class=null);data||(data={});Class=ExtClass.create(Class,data);ExtClass.process(Class,data,onCreated);return Class};Ext.apply(ExtClass,
{makeCtor:makeCtor,onBeforeCreated:function(Class,data,hooks){Class.addMembers(data);hooks.onCreated.call(Class,Class)},create:function(Class,data){data=baseStaticMembers.length;for(Class||(Class=makeCtor());data--;){var name=baseStaticMembers[data];Class[name]=Base$jscomp$0[name]}return Class},process:function(Class,data,onCreated){var preprocessorStack=data.preprocessors||ExtClass.defaultPreprocessors,registeredPreprocessors=this.preprocessors,hooks={onBeforeCreated:this.onBeforeCreated},preprocessors=
[],ln,subLn;delete data.preprocessors;Class._classHooks=hooks;var i=0;for(ln=preprocessorStack.length;i<ln;i++){var preprocessor=preprocessorStack[i];if('string'==typeof preprocessor){preprocessor=registeredPreprocessors[preprocessor];var preprocessorsProperties=preprocessor.properties;if(!0===preprocessorsProperties)preprocessors.push(preprocessor.fn);else if(preprocessorsProperties){var j=0;for(subLn=preprocessorsProperties.length;j<subLn;j++){var preprocessorProperty=preprocessorsProperties[j];
if(data.hasOwnProperty(preprocessorProperty)){preprocessors.push(preprocessor.fn);break}}}}else preprocessors.push(preprocessor)}hooks.onCreated=onCreated?onCreated:Ext.emptyFn;hooks.preprocessors=preprocessors;this.doProcess(Class,data,hooks)},doProcess:function(Class,data,hooks){for(var preprocessors=hooks.preprocessors,preprocessor=preprocessors.shift(),doProcess=this.doProcess;preprocessor;preprocessor=preprocessors.shift())if(!1===preprocessor.call(this,Class,data,hooks,doProcess))return;hooks.onBeforeCreated.apply(this,
arguments)},preprocessors:{},registerPreprocessor:function(name,fn,properties,position,relativeTo){position||(position='last');properties||(properties=[name]);this.preprocessors[name]={name:name,properties:properties||!1,fn:fn};this.setDefaultPreprocessorPosition(name,position,relativeTo);return this},getPreprocessor:function(name){return this.preprocessors[name]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},
setDefaultPreprocessors:function(preprocessors){this.defaultPreprocessors=Ext.Array.from(preprocessors);return this},setDefaultPreprocessorPosition:function(name,offset,relativeName){var defaultPreprocessors=this.defaultPreprocessors;if('string'==typeof offset){if('first'===offset)return defaultPreprocessors.unshift(name),this;if('last'===offset)return defaultPreprocessors.push(name),this;offset='after'===offset?1:-1}relativeName=Ext.Array.indexOf(defaultPreprocessors,relativeName);-1!==relativeName&&
Ext.Array.splice(defaultPreprocessors,Math.max(0,relativeName+offset),0,name);return this}});ExtClass.registerPreprocessor('extend',function(Class,data,hooks){var Base=Ext.Base,basePrototype=Base.prototype,extend=data.extend,i;delete data.extend;Base=extend&&extend!==Object?extend:Base;extend=Base.prototype;if(!Base.$isClass)for(i in basePrototype)extend[i]||(extend[i]=basePrototype[i]);Class.extend(Base);Class.triggerExtended.apply(Class,arguments);data.onClassExtended&&(Class.onExtended(data.onClassExtended,
Class),delete data.onClassExtended)},!0);ExtClass.registerPreprocessor('privates',function(Class,data){var privates=data.privates,statics=privates.statics,privacy=privates.privacy||!0;delete data.privates;delete privates.statics;Class.addMembers(privates,!1,privacy);statics&&Class.addMembers(statics,!0,privacy)});ExtClass.registerPreprocessor('statics',function(Class,data){Class.addStatics(data.statics);delete data.statics});ExtClass.registerPreprocessor('inheritableStatics',function(Class,data){Class.addInheritableStatics(data.inheritableStatics);
delete data.inheritableStatics});Ext.createRuleFn=function(code){return new Function('$c','with($c) { try { return ('+code+'); } catch(e) { return false;}}')};Ext.expressionCache=new Ext.util.Cache({miss:Ext.createRuleFn});Ext.ruleKeySortFn=ruleKeySortFn;Ext.getPlatformConfigKeys=function(platformConfig){var ret=[],platform;for(platform in platformConfig)platformConfig=Ext.expressionCache.get(platform),platformConfig(Ext.platformTags)&&ret.push(platform);ret.sort(ruleKeySortFn);return ret};ExtClass.registerPreprocessor('platformConfig',
function(Class,data,hooks){Class.addPlatformConfig(data)});ExtClass.registerPreprocessor('config',function(Class,data){data.hasOwnProperty('$configPrefixed')&&(Class.prototype.$configPrefixed=data.$configPrefixed);Class.addConfig(data.config);delete data.config});ExtClass.registerPreprocessor('cachedConfig',function(Class,data){data.hasOwnProperty('$configPrefixed')&&(Class.prototype.$configPrefixed=data.$configPrefixed);Class.addCachedConfig(data.cachedConfig);delete data.cachedConfig});ExtClass.registerPreprocessor('mixins',
function(Class,data,hooks){var mixins=data.mixins,onCreated=hooks.onCreated;delete data.mixins;hooks.onCreated=function(){hooks.onCreated=onCreated;Class.mixin(mixins);return hooks.onCreated.apply(this,arguments)}});Ext.extend=function(Class,Parent,members){2===arguments.length&&Ext.isObject(Parent)&&(members=Parent,Parent=Class,Class=null);if(!Parent)throw Error('[Ext.extend] Attempting to extend from a class which has not been loaded on the page.');members.extend=Parent;members.preprocessors='extend statics inheritableStatics mixins platformConfig config'.split(' ');
if(Class){var cls=new ExtClass(Class,members);cls.prototype.constructor=Class}else cls=new ExtClass(members);cls.prototype.override=function(o){for(var m in o)o.hasOwnProperty(m)&&(this[m]=o[m])};return cls}})();Ext.Inventory=function(){this.names=[];this.paths={};this.alternateToName={};this.aliasToName={};this.nameToAliases={};this.nameToAlternates={};this.nameToPrefix={}};
Ext.Inventory.prototype={_array1:[0],prefixes:null,dotRe:/\./g,wildcardRe:/\*/g,addAlias:function(className,alias,update){return this.addMapping(className,alias,this.aliasToName,this.nameToAliases,update)},addAlternate:function(className,alternate){return this.addMapping(className,alternate,this.alternateToName,this.nameToAlternates)},addMapping:function(className,alternate,toName,nameTo,update){var name=className.$className||className;className=name;update=this._array1;var a,cls;Ext.isString(name)&&
(className={},className[name]=alternate);for(cls in className){alternate=className[cls];Ext.isString(alternate)&&(update[0]=alternate,alternate=update);var length=alternate.length;var nameMapping=nameTo[cls]||(nameTo[cls]=[]);for(name=0;name<length;++name)(a=alternate[name])&&toName[a]!==cls&&(toName[a]=cls,nameMapping.push(a))}},getAliasesByName:function(name){return this.nameToAliases[name]||null},getAlternatesByName:function(name){return this.nameToAlternates[name]||null},getNameByAlias:function(alias){return this.aliasToName[alias]||
''},getNameByAlternate:function(alternate){return this.alternateToName[alternate]||''},getNamesByExpression:function(expression,exclude,accumulate){var aliasToName=this.aliasToName,alternateToName=this.alternateToName,nameToAliases=this.nameToAliases,nameToAlternates=this.nameToAlternates;accumulate=accumulate?exclude:{};var names=[];expression=Ext.isString(expression)?[expression]:expression;var length=expression.length,wildcardRe=this.wildcardRe,expr,i,match,n,name;for(i=0;i<length;++i)if(0>(expr=
expression[i]).indexOf('*'))(name=aliasToName[expr])||(name=alternateToName[expr])||(name=expr),name in accumulate||exclude&&name in exclude||(accumulate[name]=1,names.push(name));else{var regex=new RegExp('^'+expr.replace(wildcardRe,'(.*?)')+'$');for(name in nameToAliases)if(!(name in accumulate||exclude&&name in exclude)){if(!(match=regex.test(name))){for(n=(expr=nameToAliases[name]).length;!match&&0<n--;)match=regex.test(expr[n]);if((expr=nameToAlternates[name])&&!match)for(n=expr.length;!match&&
0<n--;)match=regex.test(expr[n])}match&&(accumulate[name]=1,names.push(name))}}return names},getPath:function(className){var paths=this.paths,ret='',prefix;if(className in paths)ret=paths[className];else{if(prefix=this.nameToPrefix[className]||(this.nameToPrefix[className]=this.getPrefix(className)))className=className.substring(prefix.length+1),(ret=paths[prefix])&&(ret+='/');ret+=className.replace(this.dotRe,'/')+'.js'}return ret},getPrefix:function(className){if(className in this.paths)return className;
if(className in this.nameToPrefix)return this.nameToPrefix[className];for(var prefixes=this.getPrefixes(),length=className.length,items,currChar,j,jlen;0<length--;)if(items=prefixes[length])if(currChar=className.charAt(length),'.'===currChar)for(className.substring(0,length),j=0,jlen=items.length;j<jlen;j++)if(currChar=items[j],currChar===className.substring(0,length))return currChar;return''},getPrefixes:function(){var prefixes=this.prefixes,len;if(!prefixes){var names=this.names.slice(0);this.prefixes=
prefixes=[];var i=0;for(len=names.length;i<len;i++){var name=names[i];var nameLength=name.length;nameLength=prefixes[nameLength]||(prefixes[nameLength]=[]);nameLength.push(name)}}return prefixes},removeName:function(name){var aliasToName=this.aliasToName,alternateToName=this.alternateToName,nameToAliases=this.nameToAliases,nameToAlternates=this.nameToAlternates,aliases=nameToAliases[name],alternates=nameToAlternates[name],a;delete nameToAliases[name];delete nameToAlternates[name];delete this.nameToPrefix[name];
if(aliases)for(nameToAliases=aliases.length;nameToAliases--;)name===(a=aliases[nameToAliases])&&delete aliasToName[a];if(alternates)for(nameToAliases=alternates.length;nameToAliases--;)name===(a=alternates[nameToAliases])&&delete alternateToName[a]},resolveName:function(name){var trueName;name in this.nameToAliases||(trueName=this.aliasToName[name])||(trueName=this.alternateToName[name]);return trueName||name},select:function(receiver,scope){var me=this,excludes={},ret={excludes:excludes,exclude:function(){me.getNamesByExpression(arguments,
excludes,!0);return this}},name;for(name in receiver)ret[name]=me.selectMethod(excludes,receiver[name],scope||receiver);return ret},selectMethod:function(excludes,fn,scope){var me=this;return function(include){var args=Ext.Array.slice(arguments,1);args.unshift(me.getNamesByExpression(include,excludes));return fn.apply(scope,args)}},setPath:Ext.Function.flexSetter(function(name,path){this.paths[name]=path;this.names.push(name);this.prefixes=null;this.nameToPrefix={};return this})};
Ext.ClassManager=function(Class$jscomp$0,alias$jscomp$0,arraySlice,arrayFrom,global){var makeCtor=Ext.Class.makeCtor,nameLookupStack=[],namespaceCache={Ext:{name:'Ext',value:Ext}},Manager=Ext.apply(new Ext.Inventory,{classes:{},classState:{},existCache:{},instantiators:[],isCreated:function(className){if(Manager.classes[className]||Manager.existCache[className])return!0;if(!Manager.lookupName(className,!1))return!1;Manager.triggerCreated(className);return!0},createdListeners:[],nameCreatedListeners:{},
existsListeners:[],nameExistsListeners:{},overrideMap:{},triggerCreated:function(className,state){Manager.existCache[className]=state||1;Manager.classState[className]+=40;Manager.notify(className,Manager.createdListeners,Manager.nameCreatedListeners)},onCreated:function(fn,scope,className){Manager.addListener(fn,scope,className,Manager.createdListeners,Manager.nameCreatedListeners)},notify:function(className,listeners,nameListeners){var alternateNames=Manager.getAlternatesByName(className),names=
[className],ln,subLn;var i=0;for(ln=listeners.length;i<ln;i++){var listener=listeners[i];listener.fn.call(listener.scope,className)}for(;names;){i=0;for(ln=names.length;i<ln;i++){var name=names[i];if(listeners=nameListeners[name]){className=0;for(subLn=listeners.length;className<subLn;className++)listener=listeners[className],listener.fn.call(listener.scope,name);delete nameListeners[name]}}names=alternateNames;alternateNames=null}},addListener:function(fn,scope,className,listeners,nameListeners){if(Ext.isArray(className))for(fn=
Ext.Function.createBarrier(className.length,fn,scope),scope=0;scope<className.length;scope++)this.addListener(fn,null,className[scope],listeners,nameListeners);else{var listener={fn:fn,scope:scope};className?this.isCreated(className)?fn.call(scope,className):(nameListeners[className]||(nameListeners[className]=[]),nameListeners[className].push(listener)):listeners.push(listener)}},$namespaceCache:namespaceCache,addRootNamespaces:function(namespaces){for(var name in namespaces)namespaceCache[name]=
{name:name,value:namespaces[name]}},clearNamespaceCache:function(){nameLookupStack.length=0;for(var name in namespaceCache)namespaceCache[name].value||delete namespaceCache[name]},getNamespaceEntry:function(namespace){if('string'!==typeof namespace)return namespace;var entry=namespaceCache[namespace];entry||(entry=namespace.lastIndexOf('.'),entry=0>entry?{name:namespace}:{name:namespace.substring(entry+1),parent:Manager.getNamespaceEntry(namespace.substring(0,entry))},namespaceCache[namespace]=entry);
return entry},lookupName:function(namespace,autoCreate){var entry=Manager.getNamespaceEntry(namespace);namespace=Ext.global;for(var i=0,parent;entry;entry=entry.parent)nameLookupStack[i++]=entry;for(;namespace&&0<i--;)entry=nameLookupStack[i],parent=namespace,namespace=entry.value||namespace[entry.name],!namespace&&autoCreate&&(parent[entry.name]=namespace={});return namespace},setNamespace:function(namespace,value){namespace=Manager.getNamespaceEntry(namespace);var scope=Ext.global;namespace.parent&&
(scope=Manager.lookupName(namespace.parent,!0));return scope[namespace.name]=value},setXType:function(cls,xtype){var className=cls.$className;cls=(className?cls:Manager.get(className=cls)).prototype;var xtypes=cls.xtypes,xtypesChain=cls.xtypesChain,xtypesMap=cls.xtypesMap;cls.hasOwnProperty('xtypes')||(cls.xtypes=xtypes=[],cls.xtypesChain=xtypesChain=xtypesChain?xtypesChain.slice(0):[],cls.xtypesMap=xtypesMap=Ext.apply({},xtypesMap));Manager.addAlias(className,'widget.'+xtype,!0);xtypes.push(xtype);
xtypesChain.push(xtype);xtypesMap[xtype]=!0},set:function(name,value){var targetName=Manager.getName(value);Manager.classes[name]=Manager.setNamespace(name,value);targetName&&targetName!==name&&Manager.addAlternate(targetName,name);return Manager},get:function(name){return Manager.classes[name]||Manager.lookupName(name,!1)},addNameAliasMappings:function(aliases){Manager.addAlias(aliases)},addNameAlternateMappings:function(alternates){Manager.addAlternate(alternates)},getByAlias:function(alias){return Manager.get(Manager.getNameByAlias(alias))},
getByConfig:function(config,aliasPrefix){var xclass=config.xclass;xclass||((xclass=config.xtype)?aliasPrefix='widget.':xclass=config.type,xclass=Manager.getNameByAlias(aliasPrefix+xclass));return Manager.get(xclass)},getName:function(object){return object&&object.$className||''},getClass:function(object){return object&&object.self||null},create:function(className,data,createdFn){var ctor=makeCtor(className);'function'===typeof data&&(data=data(ctor));data.$className=className;return new Class$jscomp$0(ctor,
data,function(){var postprocessorStack=data.postprocessors||Manager.defaultPostprocessors,registeredPostprocessors=Manager.postprocessors,postprocessors=[],ln,subLn;delete data.postprocessors;var i=0;for(ln=postprocessorStack.length;i<ln;i++){var postprocessor=postprocessorStack[i];if('string'===typeof postprocessor){postprocessor=registeredPostprocessors[postprocessor];var postprocessorProperties=postprocessor.properties;if(!0===postprocessorProperties)postprocessors.push(postprocessor.fn);else if(postprocessorProperties){var j=
0;for(subLn=postprocessorProperties.length;j<subLn;j++){var postprocessorProperty=postprocessorProperties[j];if(data.hasOwnProperty(postprocessorProperty)){postprocessors.push(postprocessor.fn);break}}}}else postprocessors.push(postprocessor)}data.postprocessors=postprocessors;data.createdFn=createdFn;Manager.processCreate(className,this,data)})},processCreate:function(className,cls,clsData){var postprocessor=clsData.postprocessors.shift(),createdFn=clsData.createdFn;postprocessor?!1!==postprocessor.call(this,
className,cls,clsData,this.processCreate)&&this.processCreate(className,cls,clsData):(className&&this.set(className,cls),delete cls._classHooks,createdFn&&createdFn.call(cls,cls),className&&this.triggerCreated(className))},createOverride:function(className,data,createdFn){var me=this,overriddenClassName=data.override,requires=data.requires,uses=data.uses,mixins=data.mixins,mixinsIsArray,compat=1,dependenciesLoaded,classReady=function(){var cls,key,temp;if(!dependenciesLoaded){var dependencies=requires?
requires.slice(0):[];if(mixins)if(mixinsIsArray=mixins instanceof Array){var i=0;for(temp=mixins.length;i<temp;++i)Ext.isString(cls=mixins[i])&&dependencies.push(cls)}else for(key in mixins)Ext.isString(cls=mixins[key])&&dependencies.push(cls);dependenciesLoaded=!0;if(dependencies.length){Ext.require(dependencies,classReady);return}}if(mixinsIsArray)for(i=0,temp=mixins.length;i<temp;++i)Ext.isString(cls=mixins[i])&&(mixins[i]=Ext.ClassManager.get(cls));else if(mixins)for(key in mixins)Ext.isString(cls=
mixins[key])&&(mixins[key]=Ext.ClassManager.get(cls));cls=overriddenClassName.$isClass?overriddenClassName:me.get(overriddenClassName);delete data.override;delete data.compatibility;delete data.requires;delete data.uses;Ext.override(cls,data);Ext.Loader.history.push(className);uses&&Ext.Loader.addUsedClasses(uses);createdFn&&createdFn.call(cls,cls)};className&&(Manager.overrideMap[className]=!0);'compatibility'in data&&((compat=data.compatibility)?'number'===typeof compat?compat=!0:'boolean'!==typeof compat&&
(compat=Ext.checkVersion(compat)):compat=!1);if(compat)if(overriddenClassName.$isClass)classReady();else me.onCreated(classReady,me,overriddenClassName);me.triggerCreated(className,2);return me},instantiateByAlias:function(){var alias=arguments[0],args=arraySlice.call(arguments);alias=this.getNameByAlias(alias);args[0]=alias;return Ext.create.apply(Ext,args)},instantiate:function(){return Ext.create.apply(Ext,arguments)},dynInstantiate:function(name,args){args=arrayFrom(args,!0);args.unshift(name);
return Ext.create.apply(Ext,args)},getInstantiator:function(length){var instantiators=this.instantiators;var instantiator=instantiators[length];if(!instantiator){var args=[];for(instantiator=0;instantiator<length;instantiator++)args.push('a['+instantiator+']');instantiator=instantiators[length]=new Function('c','a','return new c('+args.join(',')+')')}return instantiator},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(name,fn,properties,position,relativeTo){position||(position=
'last');properties||(properties=[name]);this.postprocessors[name]={name:name,properties:properties||!1,fn:fn};this.setDefaultPostprocessorPosition(name,position,relativeTo);return this},setDefaultPostprocessors:function(postprocessors){this.defaultPostprocessors=arrayFrom(postprocessors);return this},setDefaultPostprocessorPosition:function(name,offset,relativeName){var defaultPostprocessors=this.defaultPostprocessors;if('string'===typeof offset){if('first'===offset)return defaultPostprocessors.unshift(name),
this;if('last'===offset)return defaultPostprocessors.push(name),this;offset='after'===offset?1:-1}relativeName=Ext.Array.indexOf(defaultPostprocessors,relativeName);-1!==relativeName&&Ext.Array.splice(defaultPostprocessors,Math.max(0,relativeName+offset),0,name);return this}});Manager.registerPostprocessor('alias',function(name,cls,data){name=Ext.Array.from(data.alias);var ln;data=0;for(ln=name.length;data<ln;data++)alias$jscomp$0=name[data],this.addAlias(cls,alias$jscomp$0)},['xtype','alias']);Manager.registerPostprocessor('singleton',
function(name,cls,data,fn){if(data.singleton)fn.call(this,name,new cls,data);else return!0;return!1});Manager.registerPostprocessor('alternateClassName',function(name,cls,data){name=data.alternateClassName;var ln;name instanceof Array||(name=[name]);data=0;for(ln=name.length;data<ln;data++){var alternate=name[data];this.set(alternate,cls)}});Manager.registerPostprocessor('debugHooks',function(name,Class,data){delete (Class.isInstance?Class.self:Class).prototype.debugHooks});Manager.registerPostprocessor('deprecated',
function(name,Class,data){name=Class.isInstance?Class.self:Class;name.addDeprecations(data.deprecated);delete name.prototype.deprecated});Ext.apply(Ext,{create:function(){var name=arguments[0],nameType=typeof name,args=arraySlice.call(arguments,1);'function'===nameType?nameType=name:('string'!==nameType&&0===args.length&&(args=[name],(name=name.xclass)||(name=args[0].xtype)&&(name='widget.'+name)),name=Manager.resolveName(name),nameType=Manager.get(name));nameType||(Ext.syncRequire(name),nameType=
Manager.get(name));return Manager.getInstantiator(args.length)(nameType,args)},widget:function(name,config){var xtype=name,T;if('string'!==typeof xtype){config=name;xtype=config.xtype;var className=config.xclass}else config=config||{};if(config.isComponent)return config;if(!className){var alias='widget.'+xtype;className=Manager.getNameByAlias(alias)}className&&(T=Manager.get(className));return T?new T(config):Ext.create(className||alias,config)},createByAlias:alias$jscomp$0(Manager,'instantiateByAlias'),
define:function(className,data,createdFn){if(data.override)return Manager.classState[className]=20,Manager.createOverride.apply(Manager,arguments);Manager.classState[className]=10;return Manager.create.apply(Manager,arguments)},undefine:function(className){delete Manager.classes[className];delete Manager.existCache[className];delete Manager.classState[className];Manager.removeName(className);className=Manager.getNamespaceEntry(className);var scope=className.parent?Manager.lookupName(className.parent,
!1):Ext.global;if(scope)try{delete scope[className.name]}catch(e){scope[className.name]=void 0}},getClassName:alias$jscomp$0(Manager,'getName'),getDisplayName:function(object){if(object){if(object.displayName)return object.displayName;if(object.$name&&object.$class)return Ext.getClassName(object.$class)+'#'+object.$name;if(object.$className)return object.$className}return'Anonymous'},getClass:alias$jscomp$0(Manager,'getClass'),namespace:function(){var root=global,i;for(i=arguments.length;0<i--;)root=
Manager.lookupName(arguments[i],!0);return root}});Ext.addRootNamespaces=Manager.addRootNamespaces;Ext.createWidget=Ext.widget;Ext.ns=Ext.namespace;Class$jscomp$0.registerPreprocessor('className',function(cls,data){'$className'in data&&(cls.$className=data.$className)},!0,'first');Class$jscomp$0.registerPreprocessor('alias',function(cls,data){var prototype=cls.prototype,xtypes=arrayFrom(data.xtype),aliases=arrayFrom(data.alias),xtypesChain=Array.prototype.slice.call(prototype.xtypesChain||[]),xtypesMap=
Ext.merge({},prototype.xtypesMap||{}),ln;var i=0;for(ln=aliases.length;i<ln;i++)if(prototype=aliases[i],'widget.'===prototype.substring(0,7)){var xtype=prototype.substring(7);Ext.Array.include(xtypes,xtype)}cls.xtype=data.xtype=xtypes[0];data.xtypes=xtypes;i=0;for(ln=xtypes.length;i<ln;i++)xtype=xtypes[i],xtypesMap[xtype]||(xtypesMap[xtype]=!0,xtypesChain.push(xtype));data.xtypesChain=xtypesChain;data.xtypesMap=xtypesMap;Ext.Function.interceptAfterOnce(cls,'onClassCreated',function(){var mixins=this.prototype.mixins,
key;for(key in mixins)if(mixins.hasOwnProperty(key)){var mixin=mixins[key];if(xtypes=mixin.xtypes)for(i=0,ln=xtypes.length;i<ln;i++)xtype=xtypes[i],xtypesMap[xtype]||(xtypesMap[xtype]=!0,xtypesChain.push(xtype))}});i=0;for(ln=xtypes.length;i<ln;i++)xtype=xtypes[i],Ext.Array.include(aliases,'widget.'+xtype);data.alias=aliases},['xtype','alias']);if(Ext.manifest){var manifest=Ext.manifest,classes=manifest.classes,paths=manifest.paths,aliases$jscomp$0={},alternates$jscomp$0={},className$jscomp$0,path;
if(paths){if(manifest.bootRelative)for(path in manifest=Ext.Boot.baseUrl,paths)paths.hasOwnProperty(path)&&(paths[path]=manifest+paths[path]);Manager.setPath(paths)}if(classes)for(className$jscomp$0 in classes)alternates$jscomp$0[className$jscomp$0]=[],aliases$jscomp$0[className$jscomp$0]=[],paths=classes[className$jscomp$0],paths.alias&&(aliases$jscomp$0[className$jscomp$0]=paths.alias),paths.alternates&&(alternates$jscomp$0[className$jscomp$0]=paths.alternates);Manager.addAlias(aliases$jscomp$0);
Manager.addAlternate(alternates$jscomp$0)}return Manager}(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global);
(Ext.env||(Ext.env={})).Browser=function(userAgent,publish){var browserPrefixes=Ext.Boot.browserPrefixes,browserNames=Ext.Boot.browserNames,enginePrefixes=this.enginePrefixes,engineNames=this.engineNames,browserMatch=userAgent.match(new RegExp('((?:'+Ext.Object.getValues(browserPrefixes).join(')|(?:')+'))([\\w\\._]+)')),engineMatch=userAgent.match(new RegExp('((?:'+Ext.Object.getValues(enginePrefixes).join(')|(?:')+'))([\\w\\._]+)')),browserName=browserNames.other,engineName=engineNames.other,browserVersion=
'',engineVersion='',majorVer='',isWebView=!1;this.userAgent=userAgent;this.is=function(name){return!!this.is[name]};/Edge\//.test(userAgent)&&(browserMatch=userAgent.match(/(Edge\/)([\w.]+)/));browserMatch&&(browserName=browserNames[Ext.Object.getKey(browserPrefixes,browserMatch[1])],'Safari'===browserName&&/^Opera/.test(userAgent)&&(browserName='Opera'),browserVersion=new Ext.Version(browserMatch[2]));engineMatch&&(engineName=engineNames[Ext.Object.getKey(enginePrefixes,engineMatch[1])],engineVersion=
new Ext.Version(engineMatch[2]));'Trident'===engineName&&'IE'!==browserName&&(browserName='IE',(browserPrefixes=userAgent.match(/.*rv:(\d+.\d+)/))&&browserPrefixes.length&&(browserPrefixes=browserPrefixes[1],browserVersion=new Ext.Version(browserPrefixes)));browserName&&browserVersion&&Ext.setVersion(browserName,browserVersion);userAgent.match(/FB/)&&'Other'===browserName&&(browserName=browserNames.safari,engineName=engineNames.webkit);userAgent.match(/Android.*Chrome/g)&&(browserName='ChromeMobile');
userAgent.match(/OPR/)&&(browserName='Opera',browserMatch=userAgent.match(/OPR\/(\d+.\d+)/),browserVersion=new Ext.Version(browserMatch[1]));Ext.apply(this,{engineName:engineName,engineVersion:engineVersion,name:browserName,version:browserVersion});this.setFlag(browserName,!0,publish);if(browserVersion){majorVer=browserVersion.getMajor()||'';if(this.is.IE){majorVer=parseInt(majorVer,10);var i=document.documentMode;if(7===i||7===majorVer&&8!==i&&9!==i&&10!==i)majorVer=7;else if(8===i||8===majorVer&&
8!==i&&9!==i&&10!==i)majorVer=8;else if(9===i||9===majorVer&&7!==i&&8!==i&&10!==i)majorVer=9;else if(10===i||10===majorVer&&7!==i&&8!==i&&9!==i)majorVer=10;else if(11===i||11===majorVer&&7!==i&&8!==i&&9!==i&&10!==i)majorVer=11;enginePrefixes=Math.max(majorVer,Ext.Boot.maxIEVersion);for(i=7;i<=enginePrefixes;++i)browserPrefixes='isIE'+i,majorVer<=i&&(Ext[browserPrefixes+'m']=!0),majorVer===i&&(Ext[browserPrefixes]=!0),majorVer>=i&&(Ext[browserPrefixes+'p']=!0)}this.is.Opera&&12>=parseInt(majorVer,
10)&&(Ext.isOpera12m=!0);Ext.chromeVersion=Ext.isChrome?majorVer:0;Ext.firefoxVersion=Ext.isFirefox?majorVer:0;Ext.ieVersion=Ext.isIE?majorVer:0;Ext.operaVersion=Ext.isOpera?majorVer:0;Ext.safariVersion=Ext.isSafari?majorVer:0;Ext.webKitVersion=Ext.isWebKit?majorVer:0;this.setFlag(browserName+majorVer,!0,publish);this.setFlag(browserName+browserVersion.getShortVersion())}for(i in browserNames)if(browserNames.hasOwnProperty(i)){var name$jscomp$0=browserNames[i];this.setFlag(name$jscomp$0,browserName===
name$jscomp$0)}this.setFlag(name$jscomp$0);engineVersion&&(this.setFlag(engineName+(engineVersion.getMajor()||'')),this.setFlag(engineName+engineVersion.getShortVersion()));for(i in engineNames)engineNames.hasOwnProperty(i)&&(name$jscomp$0=engineNames[i],this.setFlag(name$jscomp$0,engineName===name$jscomp$0,publish));this.setFlag('Standalone',!!navigator.standalone);this.setFlag('Ripple',!!document.getElementById('tinyhippos-injected')&&!Ext.isEmpty(window.top.ripple));this.setFlag('WebWorks',!!window.blackberry);
if(void 0!==window.PhoneGap||void 0!==window.Cordova||void 0!==window.cordova)isWebView=!0,this.setFlag('PhoneGap'),this.setFlag('Cordova');/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)(?!.*FBAN)/i.test(userAgent)&&(isWebView=!0);this.setFlag('WebView',isWebView);this.isStrict=Ext.isStrict='CSS1Compat'===document.compatMode;this.isSecure=Ext.isSecure;this.identity=browserName+majorVer+(this.isStrict?'Strict':'Quirks')};
Ext.env.Browser.prototype={constructor:Ext.env.Browser,engineNames:{webkit:'WebKit',gecko:'Gecko',presto:'Presto',trident:'Trident',other:'Other'},enginePrefixes:{webkit:'AppleWebKit/',gecko:'Gecko/',presto:'Presto/',trident:'Trident/'},styleDashPrefixes:{WebKit:'-webkit-',Gecko:'-moz-',Trident:'-ms-',Presto:'-o-',Other:''},stylePrefixes:{WebKit:'Webkit',Gecko:'Moz',Trident:'ms',Presto:'O',Other:''},propertyPrefixes:{WebKit:'webkit',Gecko:'moz',Trident:'ms',Presto:'o',Other:''},name:null,version:null,
engineName:null,engineVersion:null,setFlag:function(name,value,publish){void 0===value&&(value=!0);this.is[name]=value;this.is[name.toLowerCase()]=value;publish&&(Ext['is'+name]=value);return this},getStyleDashPrefix:function(){return this.styleDashPrefixes[this.engineName]},getStylePrefix:function(){return this.stylePrefixes[this.engineName]},getVendorProperyName:function(name){var prefix=this.propertyPrefixes[this.engineName];return 0<prefix.length?prefix+Ext.String.capitalize(name):name},getPreferredTranslationMethod:function(config){return'object'===
typeof config&&'translationMethod'in config&&'auto'!==config.translationMethod?config.translationMethod:'csstransform'}};(function(userAgent){Ext.browser=new Ext.env.Browser(userAgent,!0);Ext.userAgent=userAgent.toLowerCase();Ext.SSL_SECURE_URL=Ext.isSecure&&Ext.isIE?"javascript:''":'about:blank'})(Ext.global.navigator.userAgent);
Ext.env.OS=function(userAgent,platform,browserScope){var names=Ext.Boot.osNames,prefixes=Ext.Boot.osPrefixes,version='',is=this.is,i;browserScope=browserScope||Ext.browser;for(i in prefixes)if(prefixes.hasOwnProperty(i)){var prefix=prefixes[i];if(prefix=userAgent.match(new RegExp('(?:'+prefix+')([^\\s;]+)'))){var name=names[i];version=(prefixes=prefix[1])&&'HTC_'===prefixes?new Ext.Version('2.3'):prefixes&&'Silk/'===prefixes?new Ext.Version('2.3'):new Ext.Version(prefix[prefix.length-1]);break}}name||
(name=names[(userAgent.toLowerCase().match(/mac|win|linux/)||['other'])[0]],version=new Ext.Version(''));this.name=name;this.version=version;userAgent.match(/ipad/i)&&(platform='iPad');platform&&this.setFlag(platform.replace(/ simulator$/i,''));this.setFlag(name);version&&(this.setFlag(name+(version.getMajor()||'')),this.setFlag(name+version.getShortVersion()));for(i in names)names.hasOwnProperty(i)&&(userAgent=names[i],is.hasOwnProperty(name)||this.setFlag(userAgent,name===userAgent));'iOS'===this.name&&
568===window.screen.height&&this.setFlag('iPhone5');if(browserScope.is.Safari||browserScope.is.Silk)(this.is.Android2||this.is.Android3||501===browserScope.version.shortVersion)&&browserScope.setFlag('AndroidStock'),this.is.Android4&&(browserScope.setFlag('AndroidStock'),browserScope.setFlag('AndroidStock4'))};
Ext.env.OS.prototype={constructor:Ext.env.OS,is:function(name){return!!this[name]},name:null,version:null,setFlag:function(name,value){void 0===value&&(value=!0);this.flags&&(this.flags[name]=value);this.is[name]=value;this.is[name.toLowerCase()]=value;return this}};
(function(){var navigation=Ext.global.navigator,userAgent=navigation.userAgent,OS=Ext.env.OS,is=Ext.is||(Ext.is={});OS.prototype.flags=is;Ext.os=navigation=new OS(userAgent,navigation.platform);var osName=navigation.name;Ext['is'+osName]=!0;Ext.isMac=is.Mac=is.MacOS;is=window.location.search.match(/deviceType=(Tablet|Phone)/);var nativeDeviceType=window.deviceType;is&&is[1]?userAgent=is[1]:'iPhone'===nativeDeviceType?userAgent='Phone':'iPad'===nativeDeviceType?userAgent='Tablet':navigation.is.Android||
navigation.is.iOS||navigation.is.WindowsPhone||!/Windows|Linux|MacOS/.test(osName)?userAgent=navigation.is.iPad||navigation.is.RIMTablet||navigation.is.Android3||Ext.browser.is.Silk||navigation.is.Android&&-1===userAgent.search(/mobile/i)?'Tablet':'Phone':(userAgent='Desktop',Ext.browser.is.WebView=!!Ext.browser.is.Ripple);navigation.setFlag(userAgent,!0);navigation.deviceType=userAgent;delete OS.prototype.flags})();
Ext.feature={has:function(name){return!!this.has[name]},testElements:{},getTestElement:function(tag,createNew){if(void 0===tag)tag='div';else if('string'!==typeof tag)return tag;if(createNew)return document.createElement(tag);this.testElements[tag]||(this.testElements[tag]=document.createElement(tag));return this.testElements[tag]},isStyleSupported:function(name,tag){tag=this.getTestElement(tag).style;var cName=Ext.String.capitalize(name);return'undefined'!==typeof tag[name]||'undefined'!==typeof tag[Ext.browser.getStylePrefix(name)+
cName]?!0:!1},isStyleSupportedWithoutPrefix:function(name,tag){return'undefined'!==typeof this.getTestElement(tag).style[name]?!0:!1},isEventSupported:function(name,tag){void 0===tag&&(tag=window);tag=this.getTestElement(tag);name='on'+name.toLowerCase();var isSupported=name in tag;!isSupported&&tag.setAttribute&&tag.removeAttribute&&(tag.setAttribute(name,''),isSupported='function'===typeof tag[name],'undefined'!==typeof tag[name]&&(tag[name]=void 0),tag.removeAttribute(name));return isSupported},
getStyle:function(element,styleName){var view=element.ownerDocument.defaultView;return((view?view.getComputedStyle(element,null):element.currentStyle)||element.style)[styleName]},getSupportedPropertyName:function(object,name){var vendorName=Ext.browser.getVendorProperyName(name);return vendorName in object?vendorName:name in object?name:null},detect:function(isReady){var doc=document,toRun=this.toRun||this.tests,n=toRun.length,div=doc.createElement('div'),notRun=[],supports=Ext.supports,has=this.has,
vector;div.innerHTML='\x3cdiv style\x3d"height:30px;width:50px;"\x3e\x3cdiv style\x3d"height:20px;width:20px;"\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv style\x3d"width: 200px; height: 200px; position: relative; padding: 5px;"\x3e\x3cdiv style\x3d"position: absolute; top: 0; left: 0; width: 100%; height: 100%;"\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv style\x3d"position: absolute; left: 10%; top: 10%;"\x3e\x3c/div\x3e\x3cdiv style\x3d"float:left; background-color:transparent;"\x3e\x3c/div\x3e';isReady&&doc.body.appendChild(div);
for(vector=this.preDetected[Ext.browser.identity]||[];n--;){var test=toRun[n];var value=vector[n];var name=test.name;var names=test.names;if(void 0===value){if(!isReady&&test.ready){notRun.push(test);continue}value=test.fn.call(this,doc,div)}if(name)supports[name]=has[name]=value;else if(names)for(;names.length;)name=names.pop(),supports[name]=has[name]=value}isReady&&doc.body.removeChild(div);this.toRun=notRun},report:function(){var values=[],len=this.tests.length,i;for(i=0;i<len;++i)values.push(this.has[this.tests[i].name]?
1:0);Ext.log(Ext.browser.identity+': ['+values.join(',')+']')},preDetected:{},tests:[{name:'CloneNodeCopiesExpando',fn:function(){var el=document.createElement('div');el.expandoProp={};return el.cloneNode().expandoProp===el.expandoProp}},{name:'CSSPointerEvents',fn:function(doc){return'pointerEvents'in doc.documentElement.style}},{name:'CSS3BoxShadow',fn:function(doc){return'boxShadow'in doc.documentElement.style||'WebkitBoxShadow'in doc.documentElement.style||'MozBoxShadow'in doc.documentElement.style}},
{name:'CSS3NegationSelector',fn:function(doc){try{doc.querySelectorAll('foo:not(bar)')}catch(e){return!1}return!0}},{name:'ClassList',fn:function(doc){return!!doc.documentElement.classList}},{name:'Canvas',fn:function(){var element=this.getTestElement('canvas');return!!(element&&element.getContext&&element.getContext('2d'))}},{name:'Svg',fn:function(doc){return!(!doc.createElementNS||!doc.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect)}},{name:'Vml',fn:function(){var element=this.getTestElement();
element.innerHTML='\x3c!--[if vml]\x3e\x3cbr\x3e\x3c![endif]--\x3e';var ret=1===element.childNodes.length;element.innerHTML='';return ret}},{name:'Touch',fn:function(){var maxTouchPoints=navigator.msMaxTouchPoints||navigator.maxTouchPoints;return Ext.browser.is.Chrome&&Ext.browser.version.isLessThanOrEqual(39)?Ext.supports.TouchEvents&&1!==maxTouchPoints||1<maxTouchPoints:Ext.supports.TouchEvents||0<maxTouchPoints}},{name:'TouchEvents',fn:function(){return this.isEventSupported('touchend')}},{name:'PointerEvents',
fn:function(){return navigator.pointerEnabled}},{name:'MSPointerEvents',fn:function(){return navigator.msPointerEnabled}},{name:'Orientation',fn:function(){return'orientation'in window&&this.isEventSupported('orientationchange')}},{name:'OrientationChange',fn:function(){return this.isEventSupported('orientationchange')}},{name:'DeviceMotion',fn:function(){return this.isEventSupported('devicemotion')}},{names:['Geolocation','GeoLocation'],fn:function(){return'geolocation'in window.navigator}},{name:'SqlDatabase',
fn:function(){return'openDatabase'in window}},{name:'WebSockets',fn:function(){return'WebSocket'in window}},{name:'Range',fn:function(){return!!document.createRange}},{name:'CreateContextualFragment',fn:function(){var range=document.createRange?document.createRange():!1;return range&&!!range.createContextualFragment}},{name:'History',fn:function(){return'history'in window&&'pushState'in window.history}},{name:'Css3dTransforms',fn:function(){return this.has('CssTransforms')&&this.isStyleSupported('perspective')}},
{name:'CssTransforms',fn:function(){return this.isStyleSupported('transform')}},{name:'CssTransformNoPrefix',fn:function(){return this.isStyleSupportedWithoutPrefix('transform')}},{name:'CssAnimations',fn:function(){return this.isStyleSupported('animationName')}},{names:['CssTransitions','Transitions'],fn:function(){return this.isStyleSupported('transitionProperty')}},{names:['Audio','AudioTag'],fn:function(){return!!this.getTestElement('audio').canPlayType}},{name:'Video',fn:function(){return!!this.getTestElement('video').canPlayType}},
{name:'LocalStorage',fn:function(){try{if('localStorage'in window&&null!==window.localStorage)return localStorage.setItem('sencha-localstorage-test','test success'),localStorage.removeItem('sencha-localstorage-test'),!0}catch(e){}return!1}},{name:'XHR2',fn:function(){return window.ProgressEvent&&window.FormData&&window.XMLHttpRequest&&'withCredentials'in new XMLHttpRequest}},{name:'XHRUploadProgress',fn:function(){if(window.XMLHttpRequest&&!Ext.browser.is.AndroidStock){var xhr=new XMLHttpRequest;
return xhr&&'upload'in xhr&&'onprogress'in xhr.upload}return!1}},{name:'NumericInputPlaceHolder',fn:function(){return!(Ext.browser.is.AndroidStock4&&2>Ext.os.version.getMinor())}},{name:'matchesSelector',fn:function(){var el=document.documentElement;return el.matches?'matches':el.webkitMatchesSelector?'webkitMatchesSelector':el.msMatchesSelector?'msMatchesSelector':el.mozMatchesSelector?'mozMatchesSelector':null}},{name:'RightMargin',ready:!0,fn:function(doc,div){doc=doc.defaultView;return!(doc&&
'0px'!==doc.getComputedStyle(div.firstChild.firstChild,null).marginRight)}},{name:'DisplayChangeInputSelectionBug',fn:function(){var webKitVersion=Ext.webKitVersion;return 0<webKitVersion&&533>webKitVersion}},{name:'DisplayChangeTextAreaSelectionBug',fn:function(){var webKitVersion=Ext.webKitVersion;return 0<webKitVersion&&534.24>webKitVersion}},{name:'TransparentColor',ready:!0,fn:function(doc,div,view){view=doc.defaultView;return!(view&&'transparent'!==view.getComputedStyle(div.lastChild,null).backgroundColor)}},
{name:'ComputedStyle',ready:!0,fn:function(doc,div,view){return(view=doc.defaultView)&&view.getComputedStyle}},{name:'Float',fn:function(doc){return'cssFloat'in doc.documentElement.style}},{name:'CSS3BorderRadius',ready:!0,fn:function(doc){var domPrefixes='borderRadius BorderRadius MozBorderRadius WebkitBorderRadius OBorderRadius KhtmlBorderRadius'.split(' '),pass=!1,i;for(i=0;i<domPrefixes.length;i++)void 0!==doc.documentElement.style[domPrefixes[i]]&&(pass=!0);return pass&&!Ext.isIE9}},{name:'CSS3LinearGradient',
fn:function(doc,div){div.style.cssText='background-image:-webkit-gradient(linear, left top, right bottom, from(black), to(white));background-image:linear-gradient(left top, black, white);background-image:-moz-linear-gradient(left top, black, white);background-image:-ms-linear-gradient(left top, black, white);background-image:-o-linear-gradient(left top, black, white)';return-1!==(''+div.style.backgroundImage).indexOf('gradient')&&!Ext.isIE9}},{name:'MouseEnterLeave',fn:function(doc){return'onmouseenter'in
doc.documentElement&&'onmouseleave'in doc.documentElement}},{name:'MouseWheel',fn:function(doc){return'onmousewheel'in doc.documentElement}},{name:'Opacity',fn:function(doc,div){if(Ext.isIE8)return!1;div.firstChild.style.cssText='opacity:0.73';return'0.73'==div.firstChild.style.opacity}},{name:'Placeholder',fn:function(doc){return'placeholder'in doc.createElement('input')}},{name:'Direct2DBug',fn:function(doc){return Ext.isString(doc.documentElement.style.msTransformOrigin)&&Ext.isIE9m}},{name:'BoundingClientRect',
fn:function(doc){return'getBoundingClientRect'in doc.documentElement}},{name:'RotatedBoundingClientRect',ready:!0,fn:function(doc){var body=doc.body,supports=!1;doc=doc.createElement('div');var style=doc.style;doc.getBoundingClientRect&&(style.position='absolute',style.top='0',style.WebkitTransform=style.MozTransform=style.msTransform=style.OTransform=style.transform='rotate(90deg)',style.width='100px',style.height='30px',body.appendChild(doc),supports=100!==doc.getBoundingClientRect().height,body.removeChild(doc));
return supports}},{name:'ChildContentClearedWhenSettingInnerHTML',ready:!0,fn:function(){var el=this.getTestElement();el.innerHTML='\x3cdiv\x3ea\x3c/div\x3e';var child=el.firstChild;el.innerHTML='\x3cdiv\x3eb\x3c/div\x3e';return'a'!==child.innerHTML}},{name:'IncludePaddingInWidthCalculation',ready:!0,fn:function(doc,div){return 210===div.childNodes[1].firstChild.offsetWidth}},{name:'IncludePaddingInHeightCalculation',ready:!0,fn:function(doc,div){return 210===div.childNodes[1].firstChild.offsetHeight}},
{name:'TextAreaMaxLength',fn:function(doc){return'maxlength'in doc.createElement('textarea')}},{name:'GetPositionPercentage',ready:!0,fn:function(doc,div){return'10%'===Ext.feature.getStyle(div.childNodes[2],'left')}},{name:'PercentageHeightOverflowBug',ready:!0,fn:function(doc){var hasBug=!1;if(Ext.getScrollbarSize().height){var el=this.getTestElement();var style=el.style;style.height='50px';style.width='50px';style.overflow='auto';style.position='absolute';el.innerHTML='\x3cdiv style\x3d"display:table;height:100%;"\x3e\x3cdiv style\x3d"width:51px;"\x3e\x3c/div\x3e\x3c/div\x3e';
doc.body.appendChild(el);50===el.firstChild.offsetHeight&&(hasBug=!0);doc.body.removeChild(el)}return hasBug}},{name:'xOriginBug',ready:!0,fn:function(doc,div){div.innerHTML='\x3cdiv id\x3d"b1" style\x3d"height:100px;width:100px;direction:rtl;position:relative;overflow:scroll"\x3e\x3cdiv id\x3d"b2" style\x3d"position:relative;width:100%;height:20px;"\x3e\x3c/div\x3e\x3cdiv id\x3d"b3" style\x3d"position:absolute;width:20px;height:20px;top:0px;right:0px"\x3e\x3c/div\x3e\x3c/div\x3e';doc=document.getElementById('b1').getBoundingClientRect();
div=document.getElementById('b2').getBoundingClientRect();var b3=document.getElementById('b3').getBoundingClientRect();return div.left!==doc.left&&b3.right!==doc.right}},{name:'ScrollWidthInlinePaddingBug',ready:!0,fn:function(doc){var hasBug=!1;var el=doc.createElement('div');var style=el.style;style.height='50px';style.width='50px';style.padding='10px';style.overflow='hidden';style.position='absolute';el.innerHTML='\x3cspan style\x3d"display:inline-block;zoom:1;height:60px;width:60px;"\x3e\x3c/span\x3e';
doc.body.appendChild(el);70===el.scrollWidth&&(hasBug=!0);doc.body.removeChild(el);return hasBug}},{name:'rtlVertScrollbarOnRight',ready:!0,fn:function(doc,div){div.innerHTML='\x3cdiv style\x3d"height:100px;width:100px;direction:rtl;overflow:scroll"\x3e\x3cdiv style\x3d"width:20px;height:200px;"\x3e\x3c/div\x3e\x3c/div\x3e';doc=div.firstChild;div=doc.firstChild;return div.offsetLeft+div.offsetWidth!==doc.offsetLeft+doc.offsetWidth}},{name:'rtlVertScrollbarOverflowBug',ready:!0,fn:function(doc,div){div.innerHTML=
'\x3cdiv style\x3d"height:100px;width:100px;direction:rtl;overflow:auto"\x3e\x3cdiv style\x3d"width:95px;height:200px;"\x3e\x3c/div\x3e\x3c/div\x3e';doc=div.firstChild;return doc.clientHeight===doc.offsetHeight}},{identity:'defineProperty',fn:function(){return Ext.isIE8m?(Ext.Object.defineProperty=Ext.emptyFn,!1):!0}},{identify:'nativeXhr',fn:function(){if('undefined'!==typeof XMLHttpRequest)return!0;XMLHttpRequest=function(){try{return new ActiveXObject('MSXML2.XMLHTTP.3.0')}catch(ex){return null}};
return!1}},{name:'SpecialKeyDownRepeat',fn:function(){return Ext.isWebKit?525<=parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10):!(!Ext.isGecko&&!Ext.isIE||Ext.isOpera&&12>Ext.operaVersion)}},{name:'EmulatedMouseOver',fn:function(){return Ext.os.is.iOS}},{name:'Hashchange',fn:function(){var docMode=document.documentMode;return'onhashchange'in window&&(void 0===docMode||7<docMode)}},{name:'FixedTableWidthBug',ready:!0,fn:function(){if(Ext.isIE8)return!1;var outer=document.createElement('div'),
inner=document.createElement('div');outer.setAttribute('style','display:table;table-layout:fixed;');inner.setAttribute('style','display:table-cell;min-width:50px;');outer.appendChild(inner);document.body.appendChild(outer);outer.offsetWidth;outer.style.width='25px';inner=outer.offsetWidth;document.body.removeChild(outer);return 50===inner}},{name:'FocusinFocusoutEvents',fn:function(){return!Ext.isGecko}},{name:'AsyncFocusEvents',fn:function(){return Ext.asyncFocus=!!Ext.isIE}},{name:'accessibility',
ready:!0,fn:function(doc){function getColor(colorTxt){var values=[],colorValue=0;if(-1!==colorTxt.indexOf('rgb('))values=colorTxt.replace('rgb(','').replace(')','').split(', ');else if(-1!==colorTxt.indexOf('#')){var regex=7===colorTxt.length?/^#(\S\S)(\S\S)(\S\S)$/:/^#(\S)(\S)(\S)$/;(colorTxt=colorTxt.match(regex))&&(values=['0x'+colorTxt[1],'0x'+colorTxt[2],'0x'+colorTxt[3]])}for(colorTxt=0;colorTxt<values.length;colorTxt++)colorValue+=parseInt(values[colorTxt]);return colorValue}var body=doc.body;
var div=doc.createElement('div');doc=doc.createElement('img');var style=div.style;Ext.apply(style,{width:'2px',position:'absolute',clip:'rect(1px,1px,1px,1px)',borderWidth:'1px',borderStyle:'solid',borderTopTolor:'#f00',borderRightColor:'#ff0',backgroundColor:'#fff',backgroundImage:'url('+Ext.BLANK_IMAGE_URL+')'});doc.alt='';doc.src=Ext.BLANK_IMAGE_URL;div.appendChild(doc);body.appendChild(div);style=div.currentStyle||div.style;var bgImg=style.backgroundImage;style={Images:1===doc.offsetWidth&&'uninitialized'!==
doc.readyState,BackgroundImages:!(null!==bgImg&&('none'===bgImg||'url(invalid-url:)'===bgImg)),BorderColors:style.borderTopColor!==style.borderRightColor,LightOnDark:0<getColor(style.color)-getColor(style.backgroundColor)};Ext.supports.HighContrastMode=!style.BackgroundImages;body.removeChild(div);div=doc=null;return style}},{name:'ViewportUnits',ready:!0,fn:function(doc){if(Ext.isIE8)return!1;doc=doc.body;var div=document.createElement('div'),style=div.currentStyle||div.style;doc.appendChild(div);
Ext.apply(style,{width:'50vw'});style=parseInt(window.innerWidth/2,10);var divWidth=parseInt((window.getComputedStyle?getComputedStyle(div,null):div.currentStyle).width,10);doc.removeChild(div);return style===divWidth}},{name:'CSSVariables',ready:!1,fn:function(doc){if(!window.getComputedStyle)return!1;doc=window.getComputedStyle(doc.documentElement);return doc.getPropertyValue&&!!doc.getPropertyValue('--x-supports-variables')}},{name:'Selectors2',ready:!1,fn:function(doc){try{return!!doc.querySelectorAll(':scope')}catch(e){return!1}}},
{name:'CSSScrollSnap',ready:!1,fn:function(doc){doc=doc.documentElement.style;return'scrollSnapType'in doc||'webkitScrollSnapType'in doc||'msScrollSnapType'in doc}},0]};Ext.feature.tests.pop();Ext.supports={};Ext.feature.detect();
Ext.env.Ready={blocks:0<(location.search||'').indexOf('ext-pauseReadyFire')?1:0,bound:0,delay:1,firing:!1,generation:0,listeners:[],nextId:0,sortGeneration:0,state:0,timer:null,bind:function(){var me=Ext.env.Ready,doc=document;if(!me.bound)if('complete'===doc.readyState)me.onReadyEvent({type:doc.readyState||'body'});else me.bound=1,Ext.browser.is.PhoneGap&&!Ext.os.is.Desktop&&(me.bound=2,doc.addEventListener('deviceready',me.onReadyEvent,!1)),doc.addEventListener('DOMContentLoaded',me.onReadyEvent,
!1),window.addEventListener('load',me.onReadyEvent,!1)},block:function(){++this.blocks;Ext.isReady=!1},fireReady:function(){var me=Ext.env.Ready;me.state||(Ext._readyTime=Ext.ticks(),Ext.isDomReady=!0,me.state=1,Ext.feature.detect(!0),me.delay?navigator.standalone?me.timer=Ext.defer(function(){me.timer=null;me.handleReadySoon()},1):me.handleReadySoon():me.handleReady())},handleReady:function(){1===this.state&&(this.state=2,Ext._beforeReadyTime=Ext.ticks(),this.invokeAll(),Ext._afterReadyTime=Ext.ticks())},
handleReadySoon:function(delay){var me=this;me.timer||(me.timer=Ext.defer(function(){me.timer=null;me.handleReady()},delay||me.delay))},invoke:function(listener){var delay=listener.delay;delay?Ext.defer(listener.fn,delay,listener.scope):Ext.elevateFunction?Ext.elevateFunction(listener.fn,listener.scope):listener.fn.call(listener.scope)},invokeAll:function(){Ext.elevateFunction?Ext.elevateFunction(this.doInvokeAll,this):this.doInvokeAll()},doInvokeAll:function(){var listeners=this.listeners;this.blocks||
(Ext.isReady=!0);for(this.firing=!0;listeners.length;){this.sortGeneration!==this.generation&&(this.sortGeneration=this.generation,listeners.sort(this.sortFn));var listener=listeners.pop();if(this.blocks&&!listener.dom){listeners.push(listener);break}this.invoke(listener)}this.firing=!1},makeListener:function(fn,scope,options){fn={fn:fn,id:++this.nextId,scope:scope,dom:!1,priority:0};options&&Ext.apply(fn,options);fn.phase=fn.dom?0:1;return fn},on:function(fn,scope,options){var me=Ext.env.Ready;fn=
me.makeListener(fn,scope,options);2!==me.state||me.firing||!fn.dom&&me.blocks?(me.listeners.push(fn),++me.generation,me.bound||me.bind()):me.invoke(fn)},onReadyEvent:function(ev){var me=Ext.env.Ready;Ext.elevateFunction?Ext.elevateFunction(me.doReadyEvent,me,arguments):me.doReadyEvent(ev)},doReadyEvent:function(ev){0<this.bound&&(this.unbind(),this.bound=-1);this.state||this.fireReady()},sortFn:function(a,b){return-(a.phase-b.phase||b.priority-a.priority||a.id-b.id)},unblock:function(){this.blocks&&
(--this.blocks||2!==this.state||this.firing||this.invokeAll())},unbind:function(){var doc=document;1<this.bound&&doc.removeEventListener('deviceready',this.onReadyEvent,!1);doc.removeEventListener('DOMContentLoaded',this.onReadyEvent,!1);window.removeEventListener('load',this.onReadyEvent,!1)}};
(function(){var Ready=Ext.env.Ready;Ext.isIE9m&&Ext.apply(Ready,{scrollTimer:null,readyStatesRe:/complete/i,pollScroll:function(){var scrollable=!0;try{document.documentElement.doScroll('left')}catch(e){scrollable=!1}if(scrollable&&document.body)Ready.onReadyEvent({type:'doScroll'});else Ready.scrollTimer=Ext.defer(Ready.pollScroll,20);return scrollable},bind:function(){if(!Ready.bound){var doc=document;try{var topContext=void 0===window.frameElement}catch(e){}if(!topContext||!doc.documentElement.doScroll)Ready.pollScroll=
Ext.emptyFn;else if(Ready.pollScroll())return;if('complete'===doc.readyState)Ready.onReadyEvent({type:'already '+(doc.readyState||'body')});else doc.attachEvent('onreadystatechange',Ready.onReadyStateChange),window.attachEvent('onload',Ready.onReadyEvent),Ready.bound=1}},unbind:function(){document.detachEvent('onreadystatechange',Ready.onReadyStateChange);window.detachEvent('onload',Ready.onReadyEvent);Ext.isNumber(Ready.scrollTimer)&&(clearTimeout(Ready.scrollTimer),Ready.scrollTimer=null)},onReadyStateChange:function(){var state=
document.readyState;if(Ready.readyStatesRe.test(state))Ready.onReadyEvent({type:state})}});Ext.onDocumentReady=function(fn,scope,options){var opt={dom:!0};options&&Ext.apply(opt,options);Ready.on(fn,scope,opt)};Ext.onReady=function(fn,scope,options){Ready.on(fn,scope,options)};Ext.onInternalReady=function(fn,scope,options){Ready.on(fn,scope,Ext.apply({priority:1E3},options))};Ready.bind()})();
Ext.Loader=new function(){var Loader=this,Manager=Ext.ClassManager,Boot=Ext.Boot,Class=Ext.Class,Ready=Ext.env.Ready,alias=Ext.Function.alias,dependencyProperties=['extend','mixins','requires'],isInHistory={},history=[],readyListeners=[],usedClasses=[],_requiresMap={},_config={enabled:!0,scriptChainDelay:!1,disableCaching:!0,disableCachingParam:'_dc',paths:Manager.paths,preserveScripts:!0,scriptCharset:void 0},delegatedConfigs={disableCaching:!0,disableCachingParam:!0,preserveScripts:!0,scriptChainDelay:'loadDelay'};
Ext.apply(Loader,{isInHistory:isInHistory,isLoading:!1,history:history,config:_config,readyListeners:readyListeners,optionalRequires:usedClasses,requiresMap:_requiresMap,hasFileLoadError:!1,scriptsLoading:0,classesLoading:{},missingCount:0,missingQueue:{},syncModeEnabled:!1,init:function(){var scripts=document.getElementsByTagName('script');scripts=scripts[scripts.length-1].src;var path=scripts.substring(0,scripts.lastIndexOf('/')+1),meta=Ext._classPathMetadata;scripts=Ext.Microloader;var manifest=
Ext.manifest,l;Manager.getPath('Ext')||Manager.setPath('Ext',path+'src');meta&&(Ext._classPathMetadata=null,Loader.addClassPathMappings(meta));if(manifest&&(path=manifest.loadOrder,meta=Ext.Boot.baseUrl,path&&manifest.bootRelative))for(manifest=path.length,l=0;l<manifest;l++){var loadItem=path[l];loadItem.path=meta+loadItem.path;loadItem.canonicalPath=!0}scripts&&(Ready.block(),scripts.onMicroloaderReady(function(){Ready.unblock()}))},setConfig:Ext.Function.flexSetter(function(name,value){if('paths'===
name)Loader.setPath(value);else{_config[name]=value;var delegated=delegatedConfigs[name];delegated&&Boot.setConfig(!0===delegated?name:delegated,value)}return Loader}),getConfig:function(name){return name?_config[name]:_config},setPath:function(){Manager.setPath.apply(Manager,arguments);return Loader},addClassPathMappings:function(paths){Manager.setPath(paths);return Loader},addBaseUrlClassPathMappings:function(pathConfig){for(var name in pathConfig)pathConfig[name]=Boot.baseUrl+pathConfig[name];
Ext.Loader.addClassPathMappings(pathConfig)},getPath:function(className){return Manager.getPath(className)},require:function(expressions,fn,scope,excludes){if(excludes)return Loader.exclude(excludes).require(expressions,fn,scope);expressions=Manager.getNamesByExpression(expressions);return Loader.load(expressions,fn,scope)},syncRequire:function(){var wasEnabled=Loader.syncModeEnabled;Loader.syncModeEnabled=!0;var ret=Loader.require.apply(Loader,arguments);Loader.syncModeEnabled=wasEnabled;return ret},
exclude:function(excludes){var selector=Manager.select({require:function(classNames,fn,scope){return Loader.load(classNames,fn,scope)},syncRequire:function(classNames,fn,scope){var wasEnabled=Loader.syncModeEnabled;Loader.syncModeEnabled=!0;classNames=Loader.load(classNames,fn,scope);Loader.syncModeEnabled=wasEnabled;return classNames}});selector.exclude(excludes);return selector},load:function(classNames,callback,scope){callback&&(callback.length&&(callback=Loader.makeLoadCallback(classNames,callback)),
callback=callback.bind(scope||Ext.global));var state=Manager.classState,missingClassNames=[],urls=[],urlByClass={},numClasses=classNames.length,i;for(i=0;i<numClasses;++i){var className=Manager.resolveName(classNames[i]);Manager.isCreated(className)||(missingClassNames.push(className),state[className]||(urlByClass[className]=Loader.getPath(className),urls.push(urlByClass[className])))}(state=missingClassNames.length)?(Loader.missingCount+=state,Manager.onCreated(function(){callback&&Ext.callback(callback,
scope,arguments);Loader.checkReady()},Loader,missingClassNames),_config.enabled||Ext.raise('Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class'+(1<missingClassNames.length?'es':'')+': '+missingClassNames.join(', ')),urls.length?Loader.loadScripts({url:urls,_classNames:missingClassNames,_urlByClass:urlByClass}):Loader.checkReady()):(callback&&callback.call(scope),Loader.checkReady());return Loader.syncModeEnabled&&1===numClasses?Manager.get(classNames[0]):
Loader},makeLoadCallback:function(classNames,callback){return function(){for(var classes=[],i=classNames.length;0<i--;)classes[i]=Manager.get(classNames[i]);return callback.apply(this,classes)}},onLoadFailure:function(){var onError=this.onError;Loader.hasFileLoadError=!0;--Loader.scriptsLoading;onError&&onError.call(this.userScope,this);Loader.checkReady()},onLoadSuccess:function(){var onLoad=this.onLoad,classNames=this._classNames,urlByClass=this._urlByClass,state=Manager.classState,missingQueue=
Loader.missingQueue,len;--Loader.scriptsLoading;onLoad&&onLoad.call(this.userScope,this);var i=0;for(len=classNames.length;i<len;i++)onLoad=classNames[i],state[onLoad]||(missingQueue[onLoad]=urlByClass[onLoad]);Loader.checkReady()},onReady:function(fn,scope,withDomReady,options){if(withDomReady)Ready.on(fn,scope,options);else fn=Ready.makeListener(fn,scope,options),Loader.isLoading?readyListeners.push(fn):Ready.invoke(fn)},addUsedClasses:function(classes){var ln;if(classes){classes='string'===typeof classes?
[classes]:classes;var i=0;for(ln=classes.length;i<ln;i++){var cls=classes[i];'string'!==typeof cls||Ext.Array.contains(usedClasses,cls)||usedClasses.push(cls)}}return Loader},triggerReady:function(){var listener=usedClasses;if(Loader.isLoading&&listener.length)usedClasses=[],Loader.require(listener);else{Loader.isLoading=!1;for(readyListeners.sort(Ready.sortFn);readyListeners.length&&!Loader.isLoading;)listener=readyListeners.pop(),Ready.invoke(listener);Ready.unblock()}},historyPush:function(className){!className||
isInHistory[className]||Manager.overrideMap[className]||(isInHistory[className]=!0,history.push(className));return Loader},loadScripts:function(params){var manifest=Ext.manifest,loadOrder=manifest&&manifest.loadOrder,loadOrderMap=manifest&&manifest.loadOrderMap;++Loader.scriptsLoading;loadOrder&&!loadOrderMap&&(manifest.loadOrderMap=loadOrderMap=Boot.createLoadOrderMap(loadOrder));Loader.checkReady();params=Ext.apply({loadOrder:loadOrder,loadOrderMap:loadOrderMap,charset:_config.scriptCharset,success:Loader.onLoadSuccess,
failure:Loader.onLoadFailure,sync:Loader.syncModeEnabled,_classNames:[]},params);params.userScope=params.scope;params.scope=params;Boot.load(params)},loadScriptsSync:function(urls){var syncwas=Loader.syncModeEnabled;Loader.syncModeEnabled=!0;Loader.loadScripts({url:urls});Loader.syncModeEnabled=syncwas},loadScriptsSyncBasePrefix:function(urls){var syncwas=Loader.syncModeEnabled;Loader.syncModeEnabled=!0;Loader.loadScripts({url:urls,prependBaseUrl:!0});Loader.syncModeEnabled=syncwas},loadScript:function(options){var isObject=
!(options instanceof Array)&&'string'!==typeof options;Loader.loadScripts({url:isObject?options.url:options,scope:isObject&&options.scope,onLoad:isObject&&options.onLoad,onError:isObject&&options.onError,_classNames:[]})},checkMissingQueue:function(){var missingQueue=Loader.missingQueue,newQueue={},name,missing=0;for(name in missingQueue)Manager.classState[name]||Manager.isCreated(name)||(newQueue[name]=missingQueue[name],missing++);Loader.missingCount=missing;Loader.missingQueue=newQueue},checkReady:function(){var wasLoading=
Loader.isLoading,isLoading;Loader.checkMissingQueue();(isLoading=Loader.missingCount+Loader.scriptsLoading)&&!wasLoading?(Ready.block(),Loader.isLoading=!!isLoading):!isLoading&&wasLoading&&Loader.triggerReady()}});Ext.require=alias(Loader,'require');Ext.syncRequire=alias(Loader,'syncRequire');Ext.exclude=alias(Loader,'exclude');Class.registerPreprocessor('loader',function(cls,data,hooks,continueFn){var me=this,dependencies=[],className=Manager.getName(cls),ln,subLn;var i=0;for(ln=dependencyProperties.length;i<
ln;i++){var propertyName=dependencyProperties[i];if(data.hasOwnProperty(propertyName)){var propertyValue=data[propertyName];if('string'===typeof propertyValue)dependencies.push(propertyValue);else if(propertyValue instanceof Array){var j=0;for(subLn=propertyValue.length;j<subLn;j++){var value=propertyValue[j];'string'===typeof value&&dependencies.push(value)}}else if('function'!==typeof propertyValue)for(j in propertyValue)propertyValue.hasOwnProperty(j)&&(value=propertyValue[j],'string'===typeof value&&
dependencies.push(value))}}if(0!==dependencies.length)return className&&(_requiresMap[className]=dependencies),(className?Loader.exclude(className):Loader).require(dependencies,function(){i=0;for(ln=dependencyProperties.length;i<ln;i++)if(propertyName=dependencyProperties[i],data.hasOwnProperty(propertyName))if(propertyValue=data[propertyName],'string'===typeof propertyValue)data[propertyName]=Manager.get(propertyValue);else if(propertyValue instanceof Array)for(j=0,subLn=propertyValue.length;j<subLn;j++)value=
propertyValue[j],'string'===typeof value&&(data[propertyName][j]=Manager.get(value));else if('function'!==typeof propertyValue)for(var k in propertyValue)propertyValue.hasOwnProperty(k)&&(value=propertyValue[k],'string'===typeof value&&(data[propertyName][k]=Manager.get(value)));continueFn.call(me,cls,data,hooks)}),!1},!0,'after','className');Manager.registerPostprocessor('uses',function(name,cls,data){data.uses&&(name=Manager.getNamesByExpression(data.uses),Loader.addUsedClasses(name))});Manager.onCreated(Loader.historyPush);
Loader.init()};Ext._endTime=Ext.ticks();Ext._beforereadyhandler&&Ext._beforereadyhandler();
Ext.cmd.derive('Ext.Mixin',Ext.Base,function(Mixin){return{statics:{addHook:function(hookFn,targetClass,methodName,mixinClassPrototype){var isFunc=Ext.isFunction(hookFn),hook=function(){var a=arguments,fn=isFunc?hookFn:mixinClassPrototype[hookFn],result=this.callParent(a);fn.apply(this,a);return result},existingFn=targetClass.hasOwnProperty(methodName)&&targetClass[methodName];isFunc&&(hookFn.$previous=Ext.emptyFn);hook.$name=methodName;hook.$owner=targetClass.self;existingFn?(hook.$previous=existingFn.$previous,
existingFn.$previous=hook):targetClass[methodName]=hook}},onClassExtended:function(cls,data){var mixinConfig=data.mixinConfig,hooks=data.xhooks;cls=cls.superclass;var onClassMixedIn=data.onClassMixedIn;hooks&&(delete data.xhooks,(mixinConfig||(data.mixinConfig=mixinConfig={})).on=hooks);if(mixinConfig){if(cls=cls.mixinConfig)data.mixinConfig=mixinConfig=Ext.merge({},cls,mixinConfig);data.mixinId=mixinConfig.id;var befores=mixinConfig.before;var afters=mixinConfig.after;hooks=mixinConfig.on;var extended=
mixinConfig.extended}if(befores||afters||hooks||extended)data.onClassMixedIn=function(targetClass){var mixin=this.prototype,targetProto=targetClass.prototype,key$jscomp$0;befores&&Ext.Object.each(befores,function(key,value){targetClass.addMember(key,function(){if(!1!==mixin[value].apply(this,arguments))return this.callParent(arguments)})});afters&&Ext.Object.each(afters,function(key,value){targetClass.addMember(key,function(){var ret=this.callParent(arguments);mixin[value].apply(this,arguments);return ret})});
if(hooks)for(key$jscomp$0 in hooks)Mixin.addHook(hooks[key$jscomp$0],targetProto,key$jscomp$0,mixin);if(extended)targetClass.onExtended(function(){var args=Ext.Array.slice(arguments,0);args.unshift(targetClass);return extended.apply(this,args)},this);onClassMixedIn&&onClassMixedIn.apply(this,arguments)}}}},0,0,0,0,0,0,[Ext,'Mixin'],0);Ext.util=Ext.util||{};
Ext.util.DelayedTask=function(fn,scope,args,cancelOnDelay,fireIdleEvent){var me=this,delay,call=function(){var globalEvents=Ext.GlobalEvents;clearInterval(me.id);me.id=null;fn.apply(scope,args||[]);!1!==fireIdleEvent&&globalEvents.hasListeners.idle&&globalEvents.fireEvent('idle')};cancelOnDelay='boolean'===typeof cancelOnDelay?cancelOnDelay:!0;me.id=null;me.delay=function(newDelay,newFn,newScope,newArgs){cancelOnDelay&&me.cancel();'number'===typeof newDelay&&(delay=newDelay);fn=newFn||fn;scope=newScope||
scope;args=newArgs||args;me.id||(me.id=Ext.interval(call,delay))};me.cancel=function(){me.id&&(clearInterval(me.id),me.id=null)}};
Ext.cmd.derive('Ext.util.Event',Ext.Base,function(){var arraySlice=Array.prototype.slice,arrayInsert=Ext.Array.insert,toArray=Ext.Array.toArray,fireArgs={};return{isEvent:!0,suspended:0,noOptions:{},constructor:function(observable,name){this.name=name;this.observable=observable;this.listeners=[]},addListener:function(fn,scope,options,caller,manager){var added=!1,observable=this.observable,eventName=this.name,length;if(-1===this.findListener(fn,scope)){added=this.createListener(fn,scope,options,caller,
manager);this.firing&&(this.listeners=this.listeners.slice(0));caller=this.listeners;var index=length=caller.length;var priority=options&&options.priority;var highestNegativePriorityIndex=this._highestNegativePriorityIndex;var hasNegativePriorityIndex=void 0!==highestNegativePriorityIndex;if(priority){var isNegativePriority=0>priority;if(!isNegativePriority||hasNegativePriorityIndex)for(hasNegativePriorityIndex=isNegativePriority?highestNegativePriorityIndex:0;hasNegativePriorityIndex<length;hasNegativePriorityIndex++){var listenerPriority=
caller[hasNegativePriorityIndex].o?caller[hasNegativePriorityIndex].o.priority||0:0;if(listenerPriority<priority){index=hasNegativePriorityIndex;break}}else this._highestNegativePriorityIndex=index}else hasNegativePriorityIndex&&(index=highestNegativePriorityIndex);!isNegativePriority&&index<=highestNegativePriorityIndex&&this._highestNegativePriorityIndex++;index===length?caller[length]=added:arrayInsert(caller,index,[added]);observable.isElement&&observable._getPublisher(eventName).subscribe(observable,
eventName,!1!==options.delegated,options.capture);manager&&(manager=manager.managedListeners||(manager.managedListeners=[]),manager.push({item:this.observable,ename:options&&options.managedName||this.name,fn:fn,scope:scope,options:options}));added=!0}return added},createListener:function(fn,scope,o,caller,manager){var namedScope=Ext._namedScopes[scope];caller={fn:fn,scope:scope,ev:this,caller:caller,manager:manager,namedScope:namedScope,defaultScope:namedScope?scope||this.observable:void 0,lateBound:'string'===
typeof fn};manager=!1;o&&(caller.o=o,o.single&&(fn=this.createSingle(fn,caller,o,scope),manager=!0),o.target&&(fn=this.createTargeted(fn,caller,o,scope,manager),manager=!0),o.onFrame&&(fn=this.createAnimFrame(fn,caller,o,scope,manager),manager=!0),o.delay&&(fn=this.createDelayed(fn,caller,o,scope,manager),manager=!0),o.buffer&&(fn=this.createBuffered(fn,caller,o,scope,manager),manager=!0),this.observable.isElement&&(scope=o.type))&&(caller.type=scope);caller.fireFn=fn;caller.wrapped=manager;return caller},
findListener:function(fn,scope){for(var listeners=this.listeners,i=listeners.length,listener;i--;)if((listener=listeners[i])&&listener.fn===fn&&listener.scope==scope)return i;return-1},removeListener:function(fn,scope,index){var removed=!1,observable=this.observable,eventName=this.name;index=null!=index?index:this.findListener(fn,scope);if(-1!==index){var listener=this.listeners[index];this.firing&&(this.listeners=this.listeners.slice(0));this.listeners.splice(index,1);this._highestNegativePriorityIndex&&
(index<this._highestNegativePriorityIndex?this._highestNegativePriorityIndex--:index===this._highestNegativePriorityIndex&&index===this.listeners.length&&delete this._highestNegativePriorityIndex);if(listener){index=listener.o;listener.task&&(listener.task.cancel(),delete listener.task);if(removed=listener.tasks&&listener.tasks.length){for(;removed--;)listener.tasks[removed].cancel();delete listener.tasks}if(removed=listener.manager)if(listener=removed.managedListeners)for(removed=listener.length;removed--;){var managedListener=
listener[removed];managedListener.item===this.observable&&managedListener.ename===eventName&&managedListener.fn===fn&&managedListener.scope===scope&&listener.splice(removed,1)}observable.isElement&&observable._getPublisher(eventName).unsubscribe(observable,eventName,!1!==index.delegated,index.capture)}removed=!0}return removed},clearListeners:function(){for(var listeners=this.listeners,i=listeners.length,listener;i--;)listener=listeners[i],this.removeListener(listener.fn,listener.scope)},suspend:function(){++this.suspended},
resume:function(){this.suspended&&--this.suspended},isSuspended:function(){return 0<this.suspended},fireDelegated:function(firingObservable,args){this.firingObservable=firingObservable;return this.fire.apply(this,args)},fire:function(){var CQ=Ext.ComponentQuery,listeners=this.listeners,count=listeners.length,observable=this.observable,isElement=observable.isElement,isComponent=observable.isComponent,firingObservable=this.firingObservable,delegate,fireInfo,i,type,e;if(!this.suspended&&0<count){this.firing=
!0;var args=arguments.length?arraySlice.call(arguments,0):[];var len=args.length;isElement&&(e=args[0]);for(i=0;i<count;i++)if(fireInfo=listeners[i]){var options=fireInfo.o;if(isElement){currentTarget&&e.setCurrentTarget(currentTarget);if(type=fireInfo.type){var chained=e;e=args[0]=chained.chain({type:type})}Ext.EventObject=e}type=args;if(options){if(delegate=options.delegate)if(isElement)if(delegate=e.getTarget('#'+e.currentTarget.id+' '+delegate)){args[1]=delegate;var currentTarget=e.currentTarget;
e.setCurrentTarget(delegate)}else continue;else if(isComponent&&!CQ.is(firingObservable,delegate,observable))continue;isElement&&(options.preventDefault&&e.preventDefault(),options.stopPropagation&&e.stopPropagation(),options.stopEvent&&e.stopEvent());args[len]=options;options.args&&(type=options.args.concat(args))}fireInfo=this.getFireInfo(fireInfo);delegate=fireInfo.fn;var fireScope=fireInfo.scope;fireInfo.fn=fireInfo.scope=null;fireScope&&fireScope.destroyed&&(this.removeListener(delegate,fireScope,
i),delegate=null);if(delegate&&!1===delegate.apply(fireScope,type))return Ext.EventObject=null,this.firing=!1;options&&args.length--;chained&&(e=args[0]=chained,chained=null);Ext.EventObject=null}}this.firing=!1;return!0},getFireInfo:function(listener,fromWrapped){var observable=this.observable,fireFn=listener.fireFn,scope=listener.scope,namedScope=listener.namedScope;if(!fromWrapped&&listener.wrapped)return fireArgs.fn=fireFn,fireArgs;fromWrapped=fromWrapped?listener.fn:fireFn;if(listener.lateBound){if(!scope||
namedScope)scope=(listener.caller||observable).resolveListenerScope(listener.defaultScope);fromWrapped=scope[fromWrapped]}else if(namedScope&&namedScope.isController)scope=(listener.caller||observable).resolveListenerScope(listener.defaultScope);else if(!scope||namedScope)scope=observable;fireArgs.fn=fromWrapped;fireArgs.scope=scope;return fireArgs},createAnimFrame:function(handler,listener,o,scope,wrapped){wrapped||(listener=listener.ev.getFireInfo(listener,!0),handler=listener.fn,scope=listener.scope,
listener.fn=listener.scope=null);return Ext.Function.createAnimationFrame(handler,scope,o.args)},createTargeted:function(handler,listener,o,scope,wrapped){return function(){if(o.target===arguments[0]){if(!wrapped){var fireInfo=listener.ev.getFireInfo(listener,!0);handler=fireInfo.fn;scope=fireInfo.scope;fireInfo.fn=fireInfo.scope=null}return handler.apply(scope,arguments)}}},createBuffered:function(handler,listener,o,scope,wrapped){listener.task=new Ext.util.DelayedTask;return function(){if(listener.task){if(!wrapped){var fireInfo=
listener.ev.getFireInfo(listener,!0);handler=fireInfo.fn;scope=fireInfo.scope;fireInfo.fn=fireInfo.scope=null}listener.task.delay(o.buffer,handler,scope,toArray(arguments))}}},createDelayed:function(handler,listener,o,scope,wrapped){return function(){var task=new Ext.util.DelayedTask;if(!wrapped){var fireInfo=listener.ev.getFireInfo(listener,!0);handler=fireInfo.fn;scope=fireInfo.scope;fireInfo.fn=fireInfo.scope=null}listener.tasks||(listener.tasks=[]);listener.tasks.push(task);task.delay(o.delay||
10,handler,scope,toArray(arguments))}},createSingle:function(handler,listener,o,scope,wrapped){return function(){var event=listener.ev,observable=event.observable,fn=listener.fn;observable?observable.removeListener(event.name,fn,scope):event.removeListener(fn,scope);wrapped||(event=event.getFireInfo(listener,!0),handler=event.fn,scope=event.scope,event.fn=event.scope=null);return handler.apply(scope,arguments)}}}},1,0,0,0,0,0,[Ext.util,'Event'],0);
Ext.cmd.derive('Ext.mixin.Identifiable',Ext.Base,{statics:{uniqueIds:{}},isIdentifiable:!0,mixinId:'identifiable',idCleanRegex:/\.|[^\w\-]/g,defaultIdPrefix:'ext-',defaultIdSeparator:'-',getOptimizedId:function(){return this.id},getUniqueId:function(){var id=this.id,xtype;if(!id&&0!==id){id=this.self.prototype;var separator=this.defaultIdSeparator;var uniqueIds=Ext.mixin.Identifiable.uniqueIds;if(!id.hasOwnProperty('identifiablePrefix')){var prefix=(xtype=this.xtype)?this.defaultIdPrefix+xtype.replace(this.idCleanRegex,
separator)+separator:(prefix=id.$className)?prefix.replace(this.idCleanRegex,separator).toLowerCase()+separator:this.defaultIdPrefix+'anonymous'+separator;id.identifiablePrefix=prefix}prefix=this.identifiablePrefix;uniqueIds.hasOwnProperty(prefix)||(uniqueIds[prefix]=0);id=this.id=prefix+ ++uniqueIds[prefix]}this.getUniqueId=this.getOptimizedId;return id},setId:function(id){this.id=id},getId:function(){var id=this.id;id||(id=this.getUniqueId());this.getId=this.getOptimizedId;return id}},0,0,0,0,0,
0,[Ext.mixin,'Identifiable'],0);
Ext.cmd.derive('Ext.mixin.Observable',Ext.Mixin,function(Observable){var emptyFn=Ext.emptyFn,emptyArray=[],arraySlice=Array.prototype.slice,ListenerRemover=function(observable){if(observable instanceof ListenerRemover)return observable;this.observable=observable;arguments[1].isObservable&&(this.managedListeners=!0);this.args=arraySlice.call(arguments,1)},protectedProps=['events','hasListeners','managedListeners','eventedBeforeEventNames'];ListenerRemover.prototype.destroy=function(){this.destroy=
Ext.emptyFn;var observable=this.observable;observable.destroyed||observable[this.managedListeners?'mun':'un'].apply(observable,this.args)};return{mixinConfig:{id:'observable',after:{destroy:'destroyObservable'}},statics:{releaseCapture:function(o){o.fireEventArgs=this.prototype.fireEventArgs},capture:function(o,fn,scope){this.captureArgs(o,function(eventName,args){return fn.apply(scope,[eventName].concat(args))},scope)},captureArgs:function(o,fn,scope){o.fireEventArgs=Ext.Function.createInterceptor(o.fireEventArgs,
fn,scope)},observe:function(cls,listeners){if(cls&&(cls.isObservable||(Ext.applyIf(cls,new this),this.captureArgs(cls.prototype,cls.fireEventArgs,cls)),Ext.isObject(listeners)))cls.on(listeners);return cls},prepareClass:function(T,mixin,data){var listeners=T.listeners=[];data=data||T.prototype;var targetListeners=data.listeners,superListeners=mixin?mixin.listeners:T.superclass.self.listeners;superListeners&&listeners.push(superListeners);targetListeners&&((superListeners=targetListeners.scope)?(superListeners=
Ext._namedScopes[superListeners])&&superListeners.isController&&(targetListeners.scope='self.controller'):targetListeners.scope='self',listeners.push(targetListeners),data.listeners=null);T.HasListeners||(listeners=function(){},mixin=T.superclass.HasListeners||mixin&&mixin.HasListeners||Observable.HasListeners,T.prototype.HasListeners=T.HasListeners=listeners,listeners.prototype=T.hasListeners=new mixin);superListeners=T.prototype.$noClearOnDestroy||{};mixin=0;for(listeners=protectedProps.length;mixin<
listeners;mixin++)superListeners[protectedProps[mixin]]=!0;T.prototype.$noClearOnDestroy=superListeners}},isObservable:!0,$vetoClearingPrototypeOnDestroy:!0,eventsSuspended:0,constructor:function(config){var self=this.self,declaredListeners;if(!this.$observableInitialized){this.$observableInitialized=!0;this.hasListeners=new this.HasListeners;this.eventedBeforeEventNames={};this.events=this.events||{};(declaredListeners=self.listeners)&&!this._addDeclaredListeners(declaredListeners)&&(self.listeners=
null);if(self=config&&config.listeners||this.listeners)if(self instanceof Array){var i=0;for(declaredListeners=self.length;i<declaredListeners;++i)this.addListener(self[i])}else this.addListener(self);(declaredListeners=config&&config.bubbleEvents||this.bubbleEvents)&&this.enableBubble(declaredListeners);this.$applyConfigs?config&&Ext.apply(this,config):this.initConfig(config);self&&(this.listeners=null)}},onClassExtended:function(T,data){T.HasListeners||Observable.prepareClass(T,T.prototype.$observableMixedIn?
void 0:data)},$eventOptions:{scope:1,delay:1,buffer:1,onFrame:1,single:1,args:1,destroyable:1,priority:1,order:1},$orderToPriority:{before:100,current:0,after:-100},_addDeclaredListeners:function(listeners){listeners instanceof Array?Ext.each(listeners,this._addDeclaredListeners,this):(this._addedDeclaredListeners=!0,this.addListener(listeners));return this._addedDeclaredListeners},addManagedListener:function(item,ename,fn,scope,options,noDestroy){this.managedListeners=this.managedListeners||[];if('string'!==
typeof ename){var passedOptions=4<arguments.length?options:ename;options=ename;for(ename in options)if(options.hasOwnProperty(ename)){var config=options[ename];item.$eventOptions[ename]||this.addManagedListener(item,ename,config.fn||config,config.scope||options.scope||scope,config.fn?config:passedOptions,!0)}if(options&&options.destroyable)return new ListenerRemover(this,item,options)}else if(fn!==emptyFn&&(item.doAddListener(ename,fn,scope,options,null,this,this),!noDestroy&&options&&options.destroyable))return new ListenerRemover(this,
item,ename,fn,scope)},removeManagedListener:function(item,ename,fn,scope){var length;if(!item.$observableDestroyed)if('string'!==typeof ename)for(ename in fn=ename,fn){if(fn.hasOwnProperty(ename)){var config=fn[ename];item.$eventOptions[ename]||this.removeManagedListener(item,ename,config.fn||config,config.scope||fn.scope||scope)}}else{config=this.managedListeners?this.managedListeners.slice():[];ename=Ext.canonicalEventName(ename);var i=0;for(length=config.length;i<length;i++)this.removeManagedListenerItem(!1,
config[i],item,ename,fn,scope)}},fireEvent:function(eventName){return this.fireEventArgs(eventName,arraySlice.call(arguments,1))},resolveListenerScope:function(defaultScope){var namedScope=Ext._namedScopes[defaultScope];namedScope&&(namedScope.isSelf||namedScope.isThis)&&(defaultScope=null);return defaultScope||this},fireEventArgs:function(eventName,args){eventName=Ext.canonicalEventName(eventName);var events=this.events;events=events&&events[eventName];var ret=!0;this.hasListeners[eventName]&&(ret=
this.doFireEvent(eventName,args||emptyArray,events?events.bubble:!1));return ret},fireAction:function(eventName,args,fn,scope,options,order){'string'!==typeof fn||scope||(fn=this[fn]);options=options?Ext.Object.chain(options):{};options.single=!0;options.priority='after'===order?-99.5:99.5;this.doAddListener(eventName,fn,scope,options);this.fireEventArgs(eventName,args)},$eventedController:{_paused:1,pause:function(){++this._paused},resume:function(){var fn=this.fn,scope=this.scope,fnArgs=this.fnArgs,
ret;if(!--this._paused){if(fn){var args=Ext.Array.slice(fnArgs||this.args);!1===fnArgs&&args.shift();this.fn=null;args.push(this);Ext.isFunction(fn)?ret=fn.apply(scope,args):scope&&Ext.isString(fn)&&Ext.isFunction(scope[fn])&&(ret=scope[fn].apply(scope,args));if(!1===ret)return!1}if(!this._paused)return this.owner.fireEventArgs(this.eventName,this.args)}}},fireEventedAction:function(eventName,args,fn,scope,fnArgs){var eventedBeforeEventNames=this.eventedBeforeEventNames;eventedBeforeEventNames=eventedBeforeEventNames[eventName]||
(eventedBeforeEventNames[eventName]='before'+eventName);eventName=Ext.apply({owner:this,eventName:eventName,fn:fn,scope:scope,fnArgs:fnArgs,args:args},this.$eventedController);args.push(eventName);fn=this.fireEventArgs(eventedBeforeEventNames,args);args.pop();return!1===fn?!1:eventName.resume()},doFireEvent:function(eventName,args,bubbles){var target=this,queue,event,ret=!0;do if(target.eventsSuspended){(queue=target.eventQueue)&&queue.push([eventName,args]);break}else if((event=target.events&&target.events[eventName])&&
!0!==event&&!1===(ret=event.fire.apply(event,args)))break;while(bubbles&&(target=target.getBubbleParent()));return ret},getBubbleParent:function(){var parent=this.getBubbleTarget&&this.getBubbleTarget();return parent&&parent.isObservable?parent:null},addListener:function(ename,fn,scope,options,order,caller){var namedScopes=Ext._namedScopes,namedScope,innerScope;if('string'!==typeof ename){options=ename;var isClassListener=(namedScope=(scope=options.scope)&&namedScopes[scope])&&namedScope.isSelf;var eventOptions=
(this.isComponent||this.isWidget)&&options.element?this.$elementEventOptions:this.$eventOptions;for(ename in options)fn=options[ename],eventOptions[ename]||((innerScope=fn.scope)&&isClassListener&&(namedScope=namedScopes[innerScope])&&namedScope.isController&&(innerScope='self.controller'),this.doAddListener(ename,fn.fn||fn,innerScope||scope,fn.fn?fn:options,order,caller));if(options&&options.destroyable)return new ListenerRemover(this,options)}else if(this.doAddListener(ename,fn,scope,options,order,
caller),options&&options.destroyable)return new ListenerRemover(this,ename,fn,scope,options);return this},removeListener:function(ename,fn,scope,eventOptions){if('string'!==typeof ename)for(ename in scope=ename,scope)scope.hasOwnProperty(ename)&&(fn=scope[ename],this.$eventOptions[ename]||this.doRemoveListener(ename,fn.fn||fn,fn.scope||scope.scope));else this.doRemoveListener(ename,fn,scope);return this},onBefore:function(eventName,fn,scope,options){return this.addListener(eventName,fn,scope,options,
'before')},onAfter:function(eventName,fn,scope,options){return this.addListener(eventName,fn,scope,options,'after')},unBefore:function(eventName,fn,scope,options){return this.removeListener(eventName,fn,scope,options,'before')},unAfter:function(eventName,fn,scope,options){return this.removeListener(eventName,fn,scope,options,'after')},addBeforeListener:function(){return this.onBefore.apply(this,arguments)},addAfterListener:function(){return this.onAfter.apply(this,arguments)},removeBeforeListener:function(){return this.unBefore.apply(this,
arguments)},removeAfterListener:function(){return this.unAfter.apply(this,arguments)},clearListeners:function(){var events=this.events,hasListeners=this.hasListeners,key;if(events){for(key in events)if(events.hasOwnProperty(key)){var event=events[key];event.isEvent&&(delete hasListeners[key],event.clearListeners())}this.events=null}this.clearManagedListeners()},clearManagedListeners:function(){for(var managedListeners=this.managedListeners?this.managedListeners.slice():[],i=0,len=managedListeners.length;i<
len;i++)this.removeManagedListenerItem(!0,managedListeners[i]);this.managedListeners=[]},removeManagedListenerItem:function(isClear,managedListener,item,ename,fn,scope){if(isClear||!(managedListener.item!==item||managedListener.ename!==ename||fn&&managedListener.fn!==fn||scope&&managedListener.scope!==scope))managedListener.item.destroyed||managedListener.item.doRemoveListener(managedListener.ename,managedListener.fn,managedListener.scope,managedListener.options),isClear||Ext.Array.remove(this.managedListeners,
managedListener)},hasListener:function(ename){ename=Ext.canonicalEventName(ename);return!!this.hasListeners[ename]},isSuspended:function(event){var suspended=0<this.eventsSuspended,events=this.events;return!suspended&&event&&events&&(event=events[event])&&event.isEvent?event.isSuspended():suspended},suspendEvents:function(queueSuspended){++this.eventsSuspended;queueSuspended&&!this.eventQueue&&(this.eventQueue=[])},suspendEvent:function(){var events=this.events,len=arguments.length,i,event;for(i=
0;i<len;i++){var ename=arguments[i];ename=Ext.canonicalEventName(ename);(event=events[ename])&&event.isEvent||(event=this._initEvent(ename));event.suspend()}},resumeEvent:function(){var events=this.events||0,len=events&&arguments.length,i;for(i=0;i<len;i++){var event=Ext.canonicalEventName(arguments[i]);(event=events[event])&&event.resume&&event.resume()}},resumeEvents:function(discardQueue){var queued=this.eventQueue,q;if(this.eventsSuspended&&!--this.eventsSuspended&&(delete this.eventQueue,!discardQueue&&
queued))for(discardQueue=queued.length,q=0;q<discardQueue;q++)this.fireEventArgs.apply(this,queued[q])},relayEvents:function(origin,events,prefix){var len=events.length,i=0,relayers={};if(Ext.isObject(events))for(i in events)prefix=events[i],relayers[i]=this.createRelayer(prefix);else for(;i<len;i++){var oldName=events[i];relayers[oldName]=this.createRelayer(prefix?prefix+oldName:oldName)}this.mon(origin,relayers,null,null,void 0);return new ListenerRemover(this,origin,relayers)},createRelayer:function(newName,
beginEnd){var me=this;return function(){return me.fireEventArgs.call(me,newName,beginEnd?arraySlice.apply(arguments,beginEnd):arguments)}},enableBubble:function(eventNames){if(eventNames){var names='string'==typeof eventNames?arguments:eventNames,events=this.events,length=events&&names.length,event,i;for(i=0;i<length;++i){var ename=names[i];ename=Ext.canonicalEventName(ename);(event=events[ename])&&event.isEvent||(event=this._initEvent(ename));this.hasListeners._incr_(ename);event.bubble=!0}}},destroy:function(){this.clearListeners();
this.callParent();this.destroyObservable(!0)},destroyObservable:function(skipClearListeners){this.$observableDestroyed||(skipClearListeners||this.clearListeners(),this.destroyed&&this.clearPropertiesOnDestroy&&(this.clearPrototypeOnDestroy||(this.fireEvent=this.fireEventArgs=this.fireAction=this.fireEventedAction=Ext.emptyFn),this.events=this.managedListeners=this.eventedBeforeEventNames=null,this.$observableDestroyed=!0))},privates:{doAddListener:function(ename,fn,scope,options,order,caller,manager){var ret=
!1;if(order=order||options&&options.order){var priority=options&&options.priority;priority||(options=options?Ext.Object.chain(options):{},options.priority=this.$orderToPriority[order])}ename=Ext.canonicalEventName(ename);(order=(this.events||(this.events={}))[ename])&&order.isEvent||(order=this._initEvent(ename));fn!==emptyFn&&(!manager&&scope&&scope.isObservable&&scope!==this&&(manager=scope),order.addListener(fn,scope,options,caller,manager)&&(this.hasListeners._incr_(ename),ret=!0));return ret},
doRemoveListener:function(ename,fn,scope){var ret=!1,events=this.events;ename=Ext.canonicalEventName(ename);(events=events&&events[ename])&&events.isEvent&&events.removeListener(fn,scope)&&(this.hasListeners._decr_(ename),ret=!0);return ret},_initEvent:function(eventName){return this.events[eventName]=new Ext.util.Event(this,eventName)}},deprecated:{'5.0':{methods:{addEvents:null}}}}},1,0,0,0,0,[[Ext.mixin.Identifiable.prototype.mixinId||Ext.mixin.Identifiable.$className,Ext.mixin.Identifiable]],
[Ext.mixin,'Observable'],function(){function getMethodEvent(method){var e=(this.methodEvents=this.methodEvents||{})[method],returnValue,v,cancel,obj=this;if(!e){this.methodEvents[method]=e={};e.originalFn=this[method];e.methodName=method;e.before=[];e.after=[];var makeCall=function(fn,scope,args){void 0!==(v=fn.apply(scope||obj,args))&&('object'==typeof v?(returnValue=void 0!==v.returnValue?v.returnValue:v,cancel=!!v.cancel):!1===v?cancel=!0:returnValue=v)};this[method]=function(){var args=Array.prototype.slice.call(arguments,
0),len;returnValue=v=void 0;cancel=!1;var i=0;for(len=e.before.length;i<len;i++){var b=e.before[i];makeCall(b.fn,b.scope,args);if(cancel)return returnValue}void 0!==(v=e.originalFn.apply(obj,args))&&(returnValue=v);i=0;for(len=e.after.length;i<len&&(b=e.after[i],makeCall(b.fn,b.scope,args),!cancel);i++);return returnValue}}return e}var Observable=this,proto$jscomp$0=Observable.prototype,HasListeners=function(){},prepareMixin=function(T){if(!T.HasListeners){var proto=T.prototype;proto.$observableMixedIn=
1;Observable.prepareClass(T,this);T.onExtended(function(U,data){Observable.prepareClass(U,null,data)});proto.onClassMixedIn?Ext.override(T,{onClassMixedIn:function(U){prepareMixin.call(this,U);this.callParent(arguments)}}):proto.onClassMixedIn=function(U){prepareMixin.call(this,U)}}superOnClassMixedIn.call(this,T)},superOnClassMixedIn=proto$jscomp$0.onClassMixedIn;HasListeners.prototype={_decr_:function(ev,count){null==count&&(count=1);(this[ev]-=count)||delete this[ev]},_incr_:function(ev){this.hasOwnProperty(ev)?
++this[ev]:this[ev]=1}};proto$jscomp$0.HasListeners=Observable.HasListeners=HasListeners;Observable.createAlias({on:'addListener',un:'removeListener',mon:'addManagedListener',mun:'removeManagedListener',setListeners:'addListener'});Observable.observeClass=Observable.observe;Ext.apply(proto$jscomp$0,{onClassMixedIn:prepareMixin,beforeMethod:function(method,fn,scope){getMethodEvent.call(this,method).before.push({fn:fn,scope:scope})},afterMethod:function(method,fn,scope){getMethodEvent.call(this,method).after.push({fn:fn,
scope:scope})},removeMethodListener:function(method,fn,scope){method=this.getMethodEvent(method);var len;var i=0;for(len=method.before.length;i<len;i++)if(method.before[i].fn==fn&&method.before[i].scope==scope){Ext.Array.erase(method.before,i,1);return}i=0;for(len=method.after.length;i<len;i++)if(method.after[i].fn==fn&&method.after[i].scope==scope){Ext.Array.erase(method.after,i,1);break}},toggleEventLogging:function(toggle){Ext.util.Observable[toggle?'capture':'releaseCapture'](this,function(en){Ext.isDefined(Ext.global.console)&&
Ext.global.console.log(en,arguments)})}})});
Ext.cmd.derive('Ext.util.HashMap',Ext.Base,{generation:0,config:{keyFn:null},constructor:function(config){this.mixins.observable.constructor.call(this,config);this.clear(!0);if(config=this.getKeyFn())this.getKey=config},getCount:function(){return this.length},getData:function(key,value){void 0===value&&(value=key,key=this.getKey(value));return[key,value]},getKey:function(o){return o.id},add:function(key,value){1===arguments.length&&(value=key,key=this.getKey(value));if(this.containsKey(key))return this.replace(key,
value);this.map[key]=value;++this.length;this.generation++;this.hasListeners.add&&this.fireEvent('add',this,key,value);return value},replace:function(key,value){var map=this.map;1===arguments.length&&(value=key,key=this.getKey(value));this.containsKey(key)||this.add(key,value);var old=map[key];map[key]=value;this.generation++;this.hasListeners.replace&&this.fireEvent('replace',this,key,value,old);return value},remove:function(o){o=this.findKey(o);return void 0!==o?this.removeAtKey(o):!1},removeAtKey:function(key){if(this.containsKey(key)){var value=
this.map[key];delete this.map[key];--this.length;this.generation++;this.hasListeners.remove&&this.fireEvent('remove',this,key,value);return!0}return!1},get:function(key){var map=this.map;return map.hasOwnProperty(key)?map[key]:void 0},clear:function(initial){if(initial||this.generation)this.map={},this.length=0,this.generation=initial?0:this.generation+1;!0!==initial&&this.hasListeners.clear&&this.fireEvent('clear',this);return this},containsKey:function(key){var map=this.map;return map.hasOwnProperty(key)&&
void 0!==map[key]},contains:function(value){return this.containsKey(this.findKey(value))},getKeys:function(){return this.getArray(!0)},getValues:function(){return this.getArray(!1)},getArray:function(isKey){var arr=[],key,map=this.map;for(key in map)map.hasOwnProperty(key)&&arr.push(isKey?key:map[key]);return arr},each:function(fn,scope){var items=Ext.apply({},this.map),key,length=this.length;scope=scope||this;for(key in items)if(items.hasOwnProperty(key)&&!1===fn.call(scope,key,items[key],length))break;
return this},clone:function(){var hash=new this.self(this.initialConfig),map=this.map,key;hash.suspendEvents();for(key in map)map.hasOwnProperty(key)&&hash.add(key,map[key]);hash.resumeEvents();return hash},findKey:function(value){var key,map=this.map;for(key in map)if(map.hasOwnProperty(key)&&map[key]===value)return key}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.util,'HashMap'],function(HashMap){HashMap=HashMap.prototype;HashMap.removeByKey=
HashMap.removeAtKey});
Ext.cmd.derive('Ext.promise.Consequence',Ext.Base,function(Consequence){return{promise:null,deferred:null,onFulfilled:null,onRejected:null,onProgress:null,constructor:function(onFulfilled,onRejected,onProgress){this.onFulfilled=onFulfilled;this.onRejected=onRejected;this.onProgress=onProgress;this.deferred=new Ext.promise.Deferred;this.promise=this.deferred.promise},trigger:function(action,value){var deferred=this.deferred;switch(action){case 'fulfill':this.propagate(value,this.onFulfilled,deferred,
deferred.resolve);break;case 'reject':this.propagate(value,this.onRejected,deferred,deferred.reject)}},update:function(progress){Ext.isFunction(this.onProgress)&&(progress=this.onProgress(progress));this.deferred.update(progress)},propagate:function(value,callback,deferred,deferredMethod){Ext.isFunction(callback)?this.schedule(function(){try{deferred.resolve(callback(value))}catch(e){deferred.reject(e)}}):deferredMethod.call(this.deferred,value)},schedule:function(callback){var n=Consequence.queueSize++;
Consequence.queue[n]=callback;n||Ext.asap(Consequence.dispatch)},statics:{queue:Array(1E4),queueSize:0,dispatch:function(){var queue=Consequence.queue,i;for(i=0;i<Consequence.queueSize;++i){var fn=queue[i];queue[i]=null;fn()}Consequence.queueSize=0}}}},1,0,0,0,0,0,[Ext.promise,'Consequence'],0);
Ext.cmd.derive('Ext.promise.Deferred',Ext.Base,{promise:null,consequences:[],completed:!1,completionAction:null,completionValue:null,constructor:function(){this.promise=new Ext.promise.Promise(this);this.consequences=[];this.completed=!1;this.completionValue=this.completionAction=null},then:function(onFulfilled,onRejected,onProgress){onFulfilled=new Ext.promise.Consequence(onFulfilled,onRejected,onProgress);this.completed?onFulfilled.trigger(this.completionAction,this.completionValue):this.consequences.push(onFulfilled);
return onFulfilled.promise},resolve:function(value$jscomp$0){var me=this,thenFn;if(!me.completed)try{if(value$jscomp$0===me.promise)throw new TypeError('A Promise cannot be resolved with itself.');if(null!=value$jscomp$0&&('object'===typeof value$jscomp$0||Ext.isFunction(value$jscomp$0))&&Ext.isFunction(thenFn=value$jscomp$0.then)){var isHandled=!1;try{thenFn.call(value$jscomp$0,function(value){isHandled||(isHandled=!0,me.resolve(value))},function(error){isHandled||(isHandled=!0,me.reject(error))})}catch(e1){isHandled||
me.reject(e1)}}else me.complete('fulfill',value$jscomp$0)}catch(e2){me.reject(e2)}},reject:function(reason){this.completed||this.complete('reject',reason)},update:function(progress){var consequences=this.consequences,len;if(!this.completed){var i=0;for(len=consequences.length;i<len;i++){var consequence=consequences[i];consequence.update(progress)}}},complete:function(action,value){var consequences=this.consequences,len;this.completionAction=action;this.completionValue=value;this.completed=!0;value=
0;for(len=consequences.length;value<len;value++)action=consequences[value],action.trigger(this.completionAction,this.completionValue);this.consequences=null}},1,0,0,0,0,0,[Ext.promise,'Deferred'],0);
Ext.cmd.derive('Ext.promise.Promise',Ext.Base,function(ExtPromise){var Deferred;return{statics:{CancellationError:Ext.global.CancellationError||Error,_ready:function(){Deferred=Ext.promise.Deferred},all:function(promisesOrValues){return ExtPromise.when(promisesOrValues).then(function(promisesOrValues){var deferred=new Deferred,remainingToResolve=promisesOrValues.length,results=Array(remainingToResolve),i,len;if(remainingToResolve){var resolve=function(item,index){return ExtPromise.when(item).then(function(value){results[index]=
value;--remainingToResolve||deferred.resolve(results);return value},function(reason){return deferred.reject(reason)})};var index$jscomp$0=i=0;for(len=promisesOrValues.length;i<len;index$jscomp$0=++i){var promiseOrValue=promisesOrValues[index$jscomp$0];index$jscomp$0 in promisesOrValues?resolve(promiseOrValue,index$jscomp$0):remainingToResolve--}}else deferred.resolve(results);return deferred.promise})},is:function(value){return null!=value&&('object'===typeof value||Ext.isFunction(value))&&Ext.isFunction(value.then)},
rethrowError:function(error){Ext.asap(function(){throw error;})},when:function(value){var deferred=new Ext.promise.Deferred;deferred.resolve(value);return deferred.promise}},owner:null,constructor:function(owner){this.owner=owner},then:function(onFulfilled,onRejected,onProgress,scope){if(1===arguments.length&&Ext.isObject(arguments[0])){var ref=arguments[0];onFulfilled=ref.success;onRejected=ref.failure;onProgress=ref.progress;scope=ref.scope}scope&&(onFulfilled&&(onFulfilled=Ext.Function.bind(onFulfilled,
scope)),onRejected&&(onRejected=Ext.Function.bind(onRejected,scope)),onProgress&&(onProgress=Ext.Function.bind(onProgress,scope)));return this.owner.then(onFulfilled,onRejected,onProgress)},otherwise:function(onRejected,scope){if(1===arguments.length&&Ext.isObject(arguments[0])){var ref=arguments[0];onRejected=ref.fn;scope=ref.scope}null!=scope&&(onRejected=Ext.Function.bind(onRejected,scope));return this.owner.then(null,onRejected)},always:function(onCompleted,scope){if(1===arguments.length&&Ext.isObject(arguments[0])){var ref=
arguments[0];onCompleted=ref.fn;scope=ref.scope}null!=scope&&(onCompleted=Ext.Function.bind(onCompleted,scope));return this.owner.then(function(value){try{onCompleted()}catch(e){ExtPromise.rethrowError(e)}return value},function(reason){try{onCompleted()}catch(e){ExtPromise.rethrowError(e)}throw reason;})},done:function(){this.owner.then(null,ExtPromise.rethrowError)},cancel:function(reason){null==reason&&(reason=null);this.owner.reject(new this.self.CancellationError(reason))},log:function(identifier){null==
identifier&&(identifier='');return this.owner.then(function(value){Ext.log(''+(identifier||'Promise')+' resolved with value: '+value);return value},function(reason){Ext.log(''+(identifier||'Promise')+' rejected with reason: '+reason);throw reason;})}}},1,0,0,0,0,0,[Ext.promise,'Promise'],function(ExtPromise){ExtPromise._ready()});
Ext.cmd.derive('Ext.Promise',Ext.Base,function(){var Polyfiller;return{statics:{_ready:function(){Polyfiller=Ext.promise.Promise},all:function(){return Polyfiller.all.apply(Polyfiller,arguments)},race:function(){},reject:function(reason){var deferred=new Ext.promise.Deferred;deferred.reject(reason);return deferred.promise},resolve:function(value){var deferred=new Ext.promise.Deferred;deferred.resolve(value);return deferred.promise}},constructor:function(action){var deferred=new Ext.promise.Deferred;
action(deferred.resolve.bind(deferred),deferred.reject.bind(deferred));return deferred.promise}}},1,0,0,0,0,0,[Ext,'Promise'],function(ExtPromise){var P=Ext.global.Promise;P&&P.resolve?Ext.Promise=P:ExtPromise._ready()});
Ext.cmd.derive('Ext.Deferred',Ext.promise.Deferred,function(Deferred){var ExtPromise;return{statics:{_ready:function(){ExtPromise=Ext.promise.Promise},all:function(){return ExtPromise.all.apply(ExtPromise,arguments)},any:function(promisesOrValues){return Deferred.some(promisesOrValues,1).then(function(array){return array[0]},function(error){if(error instanceof Error&&'Too few Promises were resolved.'===error.message)Ext.raise('No Promises were resolved.');else throw error;})},delay:function(promiseOrValue,
milliseconds){1===arguments.length&&(milliseconds=promiseOrValue,promiseOrValue=void 0);milliseconds=Math.max(milliseconds,0);var deferred=new Deferred;setTimeout(function(){deferred.resolve(promiseOrValue)},milliseconds);return deferred.promise},map:function(promisesOrValues$jscomp$0,mapFn){return Deferred.resolved(promisesOrValues$jscomp$0).then(function(promisesOrValues){var i,len;var remainingToResolve=promisesOrValues.length;var results=Array(promisesOrValues.length);var deferred=new Deferred;
if(remainingToResolve){var resolve=function(item,index){return Deferred.resolved(item).then(function(value){return mapFn(value,index,results)}).then(function(value){results[index]=value;--remainingToResolve||deferred.resolve(results);return value},function(reason){return deferred.reject(reason)})};var index$jscomp$0=i=0;for(len=promisesOrValues.length;i<len;index$jscomp$0=++i){var promiseOrValue=promisesOrValues[index$jscomp$0];index$jscomp$0 in promisesOrValues?resolve(promiseOrValue,index$jscomp$0):
remainingToResolve--}}else deferred.resolve(results);return deferred.promise})},memoize:function(fn,scope,hashFn){var memoizedFn=Ext.Function.memoize(fn,scope,hashFn);return function(){return Deferred.all(Ext.Array.slice(arguments)).then(function(values){return memoizedFn.apply(scope,values)})}},parallel:function(fns,scope){null==scope&&(scope=null);var args=Ext.Array.slice(arguments,2);return Deferred.map(fns,function(fn){if(!Ext.isFunction(fn))throw Error('Invalid parameter: expected a function.');
return fn.apply(scope,args)})},pipeline:function(fns,initialValue,scope){null==scope&&(scope=null);return Deferred.reduce(fns,function(value,fn){if(!Ext.isFunction(fn))throw Error('Invalid parameter: expected a function.');return fn.call(scope,value)},initialValue)},reduce:function(values,reduceFn,initialValue){var initialValueSpecified=3===arguments.length;return Deferred.resolved(values).then(function(promisesOrValues){var reduceArguments=[promisesOrValues,function(previousValueOrPromise,currentValueOrPromise,
currentIndex){return Deferred.resolved(previousValueOrPromise).then(function(previousValue){return Deferred.resolved(currentValueOrPromise).then(function(currentValue){return reduceFn(previousValue,currentValue,currentIndex,promisesOrValues)})})}];initialValueSpecified&&reduceArguments.push(initialValue);return Ext.Array.reduce.apply(Ext.Array,reduceArguments)})},rejected:function(reason){var deferred=new Ext.Deferred;deferred.reject(reason);return deferred.promise},resolved:function(value){var deferred=
new Ext.Deferred;deferred.resolve(value);return deferred.promise},sequence:function(fns,scope){null==scope&&(scope=null);var args=Ext.Array.slice(arguments,2);return Deferred.reduce(fns,function(results,fn){if(!Ext.isFunction(fn))throw Error('Invalid parameter: expected a function.');return Deferred.resolved(fn.apply(scope,args)).then(function(result){results.push(result);return results})},[])},some:function(promisesOrValues$jscomp$0,howMany){return Deferred.resolved(promisesOrValues$jscomp$0).then(function(promisesOrValues){var i,
len;var values=[];var remainingToResolve=howMany;var remainingToReject=promisesOrValues.length-remainingToResolve+1;var deferred=new Deferred;if(promisesOrValues.length<howMany)deferred.reject(Error('Too few Promises were resolved.'));else{var onResolve=function(value){0<remainingToResolve&&values.push(value);remainingToResolve--;0===remainingToResolve&&deferred.resolve(values);return value};var onReject=function(reason){remainingToReject--;0===remainingToReject&&deferred.reject(Error('Too few Promises were resolved.'));
return reason};var index=i=0;for(len=promisesOrValues.length;i<len;index=++i){var promiseOrValue=promisesOrValues[index];index in promisesOrValues&&Deferred.resolved(promiseOrValue).then(onResolve,onReject)}}return deferred.promise})},timeout:function(promiseOrValue,milliseconds){var deferred=new Deferred;var timeoutId=setTimeout(function(){timeoutId&&deferred.reject(Error('Promise timed out.'))},milliseconds);Deferred.resolved(promiseOrValue).then(function(value){clearTimeout(timeoutId);timeoutId=
null;deferred.resolve(value)},function(reason){clearTimeout(timeoutId);timeoutId=null;deferred.reject(reason)});return deferred.promise}}}},0,0,0,0,0,0,[Ext,'Deferred'],function(Deferred){Deferred._ready()});Ext.Factory=function(type){this.aliasPrefix=type+'.';this.cache={};this.name=type.replace(this.fixNameRe,this.fixNameFn);this.type=type};
Ext.Factory.prototype={defaultProperty:'type',instanceProp:'isInstance',create:function(config,defaultType){var Manager=Ext.ClassManager,cache=this.cache,klass;if(config){if(config[this.instanceProp])return config;if('string'===typeof config){var suffix=config;config={};config[this.defaultProperty]=suffix}var className=config.xclass;suffix=config.type}defaultType&&defaultType.constructor===Object&&(config=Ext.apply({},config,defaultType),defaultType=defaultType.type);if(className){if(!(klass=Manager.get(className)))return Manager.instantiate(className,
config)}else if((suffix=suffix||defaultType||this.defaultType)||(klass=this.defaultClass),!klass&&!(klass=cache[suffix])){defaultType=this.aliasPrefix+suffix;className=Manager.getNameByAlias(defaultType);if(!(klass=className&&Manager.get(className)))return Manager.instantiateByAlias(defaultType,config);cache[suffix]=klass}return klass.isInstance?klass:new klass(config)},fixNameRe:/\.[a-z]/ig,fixNameFn:function(match){return match.substring(1).toUpperCase()},clearCache:function(){this.cache={}}};
Ext.Factory.define=function(type,config){var Factory=Ext.Factory,fn;type.constructor===Object?Ext.Object.each(type,Factory.define,Factory):(type=new Ext.Factory(type),config&&(config.constructor===Object?(Ext.apply(type,config),'string'===typeof(config=type.xclass)&&(type.defaultClass=Ext.ClassManager.get(config))):type.defaultType=config),Factory[type.name]=fn=type.create.bind(type),fn.instance=type);return fn};
Ext.cmd.derive('Ext.mixin.Factoryable',Ext.Base,{mixinId:'factoryable',onClassMixedIn:function(targetClass){var proto=targetClass.prototype,factoryConfig=proto.factoryConfig,alias=proto.alias,config={},dot;(alias=alias&&alias.length&&alias[0])&&0<(dot=alias.lastIndexOf('.'))&&(config.type=alias.substring(0,dot),config.defaultType=alias.substring(dot+1));factoryConfig&&(delete proto.factoryConfig,Ext.apply(config,factoryConfig));proto=Ext.Factory.define(config.type,config);targetClass.create===Ext.Base.create&&
(targetClass.create=proto)}},0,0,0,0,0,0,[Ext.mixin,'Factoryable'],0);
Ext.cmd.derive('Ext.data.request.Base',Ext.Base,{factoryConfig:{type:'request',defaultType:'ajax'},result:null,success:null,timer:null,constructor:function(config){Ext.apply(this,config.options||{},config.ownerConfig);this.id=++Ext.data.Connection.requestId;this.owner=config.owner;this.options=config.options;this.requestOptions=config.requestOptions},start:function(){var timeout=this.getTimeout();timeout&&this.async&&(this.timer=Ext.defer(this.onTimeout,timeout,this))},abort:function(){this.clearTimer();
this.timedout||(this.aborted=!0);this.abort=Ext.emptyFn},createDeferred:function(){return this.deferred=new Ext.Deferred},getDeferred:function(){return this.deferred||this.createDeferred()},getPromise:function(){return this.getDeferred().promise},then:function(){var promise=this.getPromise();return promise.then.apply(promise,arguments)},onComplete:function(){var deferred=this.deferred,result=this.result;this.clearTimer();deferred&&(this.success?deferred.resolve(result):deferred.reject(result))},onTimeout:function(){this.timedout=
!0;this.timer=null;this.abort(!0)},getTimeout:function(){return this.timeout},clearTimer:function(){var timer=this.timer;timer&&(clearTimeout(timer),this.timer=null)},destroy:function(){this.abort();this.owner=this.options=this.requestOptions=this.result=null;this.callParent()},privates:{createException:function(){var result={request:this,requestId:this.id,status:this.aborted?-1:0,statusText:this.aborted?'transaction aborted':'communication failure',getResponseHeader:this._getHeader,getAllResponseHeaders:this._getHeaders};
this.aborted&&(result.aborted=!0);this.timedout&&(result.timedout=!0);return result},_getHeader:function(name){var headers=this.headers;return headers&&headers[name.toLowerCase()]},_getHeaders:function(){return this.headers}}},1,0,0,0,0,[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.request,'Base'],0);
Ext.cmd.derive('Ext.data.flash.BinaryXhr',Ext.Base,{statics:{flashPluginActivated:function(){Ext.data.flash.BinaryXhr.flashPluginActive=!0;Ext.data.flash.BinaryXhr.flashPlugin=document.getElementById('ext-flash-polyfill');Ext.GlobalEvents.fireEvent('flashready')},flashPluginActive:!1,flashPluginInjected:!1,connectionIndex:1,liveConnections:{},flashPlugin:null,onFlashStateChange:function(javascriptId,state,data){if(javascriptId=this.liveConnections[Number(javascriptId)])javascriptId.onFlashStateChange(state,
data)},registerConnection:function(conn){var i=this.connectionIndex;this.conectionIndex=this.connectionIndex+1;this.liveConnections[i]=conn;return i},injectFlashPlugin:function(){this.flashPolyfillEl=Ext.getBody().appendChild({id:'ext-flash-polyfill',cn:[{tag:'p',html:'To view this page ensure that Adobe Flash Player version 11.1.0 or greater is installed.'},{tag:'a',href:'http://www.adobe.com/go/getflashplayer',cn:[{tag:'img',src:window.location.protocol+'//www.adobe.com/images/shared/download_buttons/get_flash_player.gif',
alt:'Get Adobe Flash player'}]}]});var flashLoaderPath=[Ext.Loader.getPath('Ext.data.Connection'),'../../../plugins/flash/swfobject.js'].join('/');var flashObjectPath='/plugins/flash/FlashPlugin.swf';Ext.flashPluginPath&&(flashObjectPath=Ext.flashPluginPath);Ext.Loader.loadScript({url:flashLoaderPath,onLoad:function(){swfobject.embedSWF(flashObjectPath,'ext-flash-polyfill','0','0','11.4.0','playerProductInstall.swf',{},{quality:'high',bgcolor:'#ffffff',allowscriptaccess:'sameDomain',allowfullscreen:'true'},
{id:'ext-flash-polyfill',name:'polyfill',align:'middle'})},onError:function(){},scope:this});Ext.data.flash.BinaryXhr.flashPluginInjected=!0}},readyState:0,status:0,statusText:'',responseBytes:null,javascriptId:null,constructor:function(config){Ext.data.flash.BinaryXhr.flashPluginInjected||Ext.data.flash.BinaryXhr.injectFlashPlugin();Ext.apply(this,config);this.requestHeaders={}},abort:function(){4!=this.readyState&&(this.aborted=!0,Ext.data.flash.BinaryXhr.flashPluginActive?(Ext.data.flash.BinaryXhr.flashPlugin.abortRequest(this.javascriptId),
delete Ext.data.flash.BinaryXhr.liveConnections[this.javascriptId]):Ext.GlobalEvents.removeListener('flashready',this.onFlashReady,this))},getAllResponseHeaders:function(){var headers=[];Ext.Object.each(this.responseHeaders,function(name,value){headers.push(name+': '+value)});return headers.join('\r\n')},getResponseHeader:function(header){var headers=this.responseHeaders;return headers&&headers[header]||null},open:function(method,url,async,user,password){this.method=method;this.url=url;this.async=
!1!==async;this.user=user;this.password=password},overrideMimeType:function(mimeType){this.mimeType=mimeType},send:function(body){this.body=body;if(Ext.data.flash.BinaryXhr.flashPluginActive)this.onFlashReady();else Ext.GlobalEvents.addListener('flashready',this.onFlashReady,this)},onFlashReady:function(){this.javascriptId=Ext.data.flash.BinaryXhr.registerConnection(this);Ext.data.flash.BinaryXhr.flashPlugin.postBinary({method:this.method,url:this.url,user:this.user,password:this.password,mimeType:this.mimeType,
requestHeaders:this.requestHeaders,body:this.body,javascriptId:this.javascriptId})},setReadyState:function(state){this.readyState!=state&&(this.readyState=state,this.onreadystatechange())},setRequestHeader:function(header,value){this.requestHeaders[header]=value},onreadystatechange:Ext.emptyFn,parseData:function(data){this.status=data.status||0;this.responseHeaders={};this.mimeType&&(this.responseHeaders['content-type']=this.mimeType);if('complete'==data.reason)this.responseBytes=data.data,this.responseHeaders['content-length']=
data.data.length;else if('error'==data.reason||'securityError'==data.reason)this.statusText=data.text,this.responseHeaders['content-length']=0},onFlashStateChange:function(state,data){4==state&&(this.parseData(data),delete Ext.data.flash.BinaryXhr.liveConnections[this.javascriptId]);this.setReadyState(state)}},1,0,0,0,0,0,[Ext.data.flash,'BinaryXhr'],0);
Ext.cmd.derive('Ext.data.request.Ajax',Ext.data.request.Base,{statics:{parseStatus:function(status,response){if(response)if('arraybuffer'===response.responseType)var len=response.byteLength;else response.responseText&&(len=response.responseText.length);status=1223==status?204:status;response=200<=status&&300>status||304==status||0==status&&Ext.isNumber(len);len=!1;if(!response)switch(status){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:len=!0}return{success:response,isException:len}}},
start:function(data){var options=this.options,requestOptions=this.requestOptions,isXdr=this.isXdr;var xhr=this.xhr=this.openRequest(options,requestOptions,this.async,this.username,this.password);isXdr||this.setupHeaders(xhr,options,requestOptions.data,requestOptions.params);this.async&&!isXdr&&(xhr.onreadystatechange=Ext.Function.bind(this.onStateChange,this));isXdr&&this.processXdrRequest(this,xhr);Ext.data.request.Base.prototype.start.call(this,data);xhr.send(data);return this.async?this:this.onComplete()},
abort:function(force){var xhr=this.xhr;if(force||this.isLoading()){try{xhr.onreadystatechange=null}catch(e){xhr.onreadystatechange=Ext.emptyFn}xhr.abort();Ext.data.request.Base.prototype.abort.call(this,force);this.onComplete();this.cleanup()}},cleanup:function(){this.xhr=null;delete this.xhr},isLoading:function(){var xhr=this.xhr,state=xhr&&xhr.readyState,C=Ext.data.flash&&Ext.data.flash.BinaryXhr;return!xhr||this.aborted||this.timedout?!1:C&&xhr instanceof C?4!==state:0!==state&&4!==state},openRequest:function(options,
requestOptions,async,username,password){var xhr=this.newRequest(options);username?xhr.open(requestOptions.method,requestOptions.url,async,username,password):this.isXdr?xhr.open(requestOptions.method,requestOptions.url):xhr.open(requestOptions.method,requestOptions.url,async);if(options.binary||this.binary)window.Uint8Array?xhr.responseType='arraybuffer':xhr.overrideMimeType&&xhr.overrideMimeType('text/plain; charset\x3dx-user-defined');if(options.withCredentials||this.withCredentials)xhr.withCredentials=
!0;return xhr},newRequest:function(options){options.binaryData?options=window.Uint8Array?this.getXhrInstance():new Ext.data.flash.BinaryXhr:this.cors&&Ext.isIE9m?(options=this.getXdrInstance(),this.isXdr=!0):(options=this.getXhrInstance(),this.isXdr=!1);return options},setupHeaders:function(xhr,options,data,params){var headers=Ext.apply({},options.headers||{},this.defaultHeaders),contentType=this.defaultPostHeader,jsonData=options.jsonData,xmlData=options.xmlData,useHeader=this.useDefaultXhrHeader,
key;headers.hasOwnProperty('Content-Type')||!data&&!params||(data&&(options.rawData?contentType='text/plain':xmlData&&Ext.isDefined(xmlData)?contentType='text/xml':jsonData&&Ext.isDefined(jsonData)&&(contentType='application/json')),headers['Content-Type']=contentType);useHeader&&!headers['X-Requested-With']&&(headers['X-Requested-With']=this.defaultXhrHeader);void 0!==headers['Content-Type']&&null!==headers['Content-Type']||delete headers['Content-Type'];try{for(key in headers)if(headers.hasOwnProperty(key)){var header=
headers[key];xhr.setRequestHeader(key,header)}}catch(e){this.owner.fireEvent('exception',key,header)}return headers},getXdrInstance:function(){var xdr;8<=Ext.ieVersion?xdr=new XDomainRequest:Ext.raise({msg:'Your browser does not support CORS'});return xdr},getXhrInstance:function(){for(var options=[function(){return new XMLHttpRequest},function(){return new ActiveXObject('MSXML2.XMLHTTP.3.0')},function(){return new ActiveXObject('MSXML2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')}],
i=0,len=options.length,xhr;i<len;++i)try{xhr=options[i];xhr();break}catch(e){}return xhr}(),processXdrRequest:function(request,xhr){delete request.headers;request.contentType=request.options.contentType||this.defaultXdrContentType;xhr.onload=Ext.Function.bind(this.onStateChange,this,[!0]);xhr.onerror=xhr.ontimeout=Ext.Function.bind(this.onStateChange,this,[!1])},processXdrResponse:function(response,xhr){response.getAllResponseHeaders=function(){return[]};response.getResponseHeader=function(){return''};
response.contentType=xhr.contentType||this.defaultXdrContentType},onStateChange:function(xdrResult){var xhr=this.xhr,globalEvents=Ext.GlobalEvents;if(xhr&&4==xhr.readyState||this.isXdr)this.clearTimer(),this.onComplete(xdrResult),this.cleanup(),globalEvents.hasListeners.idle&&globalEvents.fireEvent('idle')},onComplete:function(xdrResult){var owner=this.owner,options=this.options,xhr=this.xhr,failure={success:!1,isException:!1};if(!xhr||this.destroyed)return this.result=failure;try{var result=Ext.data.request.Ajax.parseStatus(xhr.status,
xhr);result.success&&(result.success=4===xhr.readyState)}catch(e){result=failure}(failure=this.success=this.isXdr?xdrResult:result.success)?(xhr=this.createResponse(xhr),owner.hasListeners.requestcomplete&&owner.fireEvent('requestcomplete',owner,xhr,options),options.success&&Ext.callback(options.success,options.scope,[xhr,options])):(xhr=result.isException||this.aborted||this.timedout?this.createException(xhr):this.createResponse(xhr),owner.hasListeners.requestexception&&owner.fireEvent('requestexception',
owner,xhr,options),options.failure&&Ext.callback(options.failure,options.scope,[xhr,options]));this.result=xhr;options.callback&&Ext.callback(options.callback,options.scope,[options,failure,xhr]);owner.onRequestComplete(this);Ext.data.request.Base.prototype.onComplete.call(this,xdrResult);return xhr},createResponse:function(xhr){for(var isXdr=this.isXdr,headers={},lines=isXdr?[]:xhr.getAllResponseHeaders().replace(/\r\n/g,'\n').split('\n'),count=lines.length,line,index,key;count--;)line=lines[count],
index=line.indexOf(':'),0<=index&&(key=line.substr(0,index).toLowerCase(),' '==line.charAt(index+1)&&++index,headers[key]=line.substr(index+1));lines={request:this,requestId:this.id,status:xhr.status,statusText:xhr.statusText,getResponseHeader:function(header){return headers[header.toLowerCase()]},getAllResponseHeaders:function(){return headers}};isXdr&&this.processXdrResponse(lines,xhr);this.binary?lines.responseBytes=this.getByteArray(xhr):(lines.responseText=xhr.responseText,lines.responseXML=
xhr.responseXML);return lines},destroy:function(){this.xhr=null;Ext.data.request.Base.prototype.destroy.call(this)},privates:{getByteArray:function(xhr){var response=xhr.response,responseBody=xhr.responseBody;if(xhr instanceof(Ext.data.flash&&Ext.data.flash.BinaryXhr))var byteArray=xhr.responseBytes;else if(window.Uint8Array)byteArray=response?new Uint8Array(response):[];else if(Ext.isIE9p)try{byteArray=(new VBArray(responseBody)).toArray()}catch(e){byteArray=[]}else if(Ext.isIE)this.self.vbScriptInjected||
this.injectVBScript(),getIEByteArray(xhr.responseBody,byteArray=[]);else for(byteArray=[],xhr=xhr.responseText,response=xhr.length,responseBody=0;responseBody<response;responseBody++)byteArray.push(xhr.charCodeAt(responseBody)&255);return byteArray},injectVBScript:function(){var scriptTag=document.createElement('script');scriptTag.type='text/vbscript';scriptTag.text='Function getIEByteArray(byteArray, out)\nDim len, i\nlen \x3d LenB(byteArray)\nFor i \x3d 1 to len\nout.push(AscB(MidB(byteArray, i, 1)))\nNext\nEnd Function';
Ext.getHead().dom.appendChild(scriptTag);this.self.vbScriptInjected=!0}}},0,0,0,0,['request.ajax'],0,[Ext.data.request,'Ajax'],0);
Ext.cmd.derive('Ext.data.request.Form',Ext.data.request.Base,{start:function(data){var options=this.options,requestOptions=this.requestOptions;Ext.data.request.Base.prototype.start.call(this,data);this.form=this.upload(options.form,requestOptions.url,requestOptions.data,options);return this},abort:function(force){if(this.isLoading())try{var frame=this.frame.dom;frame.stop?frame.stop():frame.document.execCommand('Stop')}catch(e){}Ext.data.request.Base.prototype.abort.call(this,force);this.onComplete();
this.cleanup()},cleanup:function(){var frame=this.frame;frame&&(frame.un('load',this.onComplete,this),Ext.removeNode(frame));this.frame=this.form=null},isLoading:function(){return!!this.frame},upload:function(form,url,params,options){form=Ext.getDom(form);var frameDom=document.createElement('iframe');options=Ext.get(frameDom);var id=options.id,hiddens=[],buf={target:form.target,method:form.method,encoding:form.encoding,enctype:form.enctype,action:form.action},addField=function(name,value){hiddenItem=
document.createElement('input');Ext.fly(hiddenItem).set({type:'hidden',value:value,name:name});form.appendChild(hiddenItem);hiddens.push(hiddenItem)},hiddenItem;options.set({name:id,cls:'x-hidden-display',src:Ext.SSL_SECURE_URL,tabIndex:-1});document.body.appendChild(frameDom);document.frames&&(document.frames[id].name=id);Ext.fly(form).set({target:id,method:'POST',enctype:'multipart/form-data',encoding:'multipart/form-data',action:url||buf.action});if(params)for(name$jscomp$0 in url=Ext.Object.fromQueryString(params)||
{},url)if(url.hasOwnProperty(name$jscomp$0))if(params=url[name$jscomp$0],Ext.isArray(params))for(frameDom=params.length,id=0;id<frameDom;id++)addField(name$jscomp$0,params[id]);else addField(name$jscomp$0,params);this.frame=options;options.on({load:this.onComplete,scope:this,single:!Ext.isOpera});form.submit();Ext.fly(form).set(buf);var name$jscomp$0=hiddens.length;for(options=0;options<name$jscomp$0;options++)Ext.removeNode(hiddens[options]);return form},getDoc:function(){var frame=this.frame.dom;
return frame&&(frame.contentWindow.document||frame.contentDocument)||(window.frames[frame.id]||{}).document},getTimeout:function(){return this.options.timeout},onComplete:function(){var frame=this.frame,owner=this.owner,options=this.options,contentNode,response;if(frame){if(this.aborted||this.timedout){this.result=response=this.createException();response.responseXML=null;response.responseText='{success:false,message:"'+Ext.String.trim(response.statusText)+'"}';response.request=this;var callback=options.failure;
var success=!1}else try{var doc=this.getDoc();this.result=response={responseText:'',responseXML:null,request:this};if(doc){if(Ext.isOpera&&doc.location==Ext.SSL_SECURE_URL)return;doc.body&&((contentNode=doc.body.firstChild)&&/pre/i.test(contentNode.tagName)?response.responseText=contentNode.textContent||contentNode.innerText:(contentNode=doc.getElementsByTagName('textarea')[0])?response.responseText=contentNode.value:response.responseText=doc.body.textContent||doc.body.innerText);response.responseXML=
doc.XMLDocument||doc;callback=options.success;success=!0;response.status=200}else Ext.raise('Could not acquire a suitable connection for the file upload service.')}catch(e){this.result=response=this.createException(),response.status=400,response.statusText=(e.message||e.description)+'',response.responseText='{success:false,message:"'+Ext.String.trim(response.statusText)+'"}',response.responseXML=null,callback=options.failure,success=!1}this.frame=null;this.success=success;owner.fireEvent(success?
'requestcomplete':'requestexception',owner,response,options);Ext.callback(callback,options.scope,[response,options]);Ext.callback(options.callback,options.scope,[options,success,response]);owner.onRequestComplete(this);Ext.asap(frame.destroy,frame);Ext.data.request.Base.prototype.onComplete.call(this)}},destroy:function(){this.cleanup();Ext.data.request.Base.prototype.destroy.call(this)}},0,0,0,0,['request.form'],0,[Ext.data.request,'Form'],0);
Ext.cmd.derive('Ext.data.Connection',Ext.Base,{statics:{requestId:0},enctypeRe:/multipart\/form-data/i,config:{url:null,async:!0,username:'',password:'',disableCaching:!0,withCredentials:!1,binary:!1,cors:!1,isXdr:!1,defaultXdrContentType:'text/plain',disableCachingParam:'_dc',timeout:3E4,extraParams:null,autoAbort:!1,method:null,defaultHeaders:null,defaultPostHeader:'application/x-www-form-urlencoded; charset\x3dUTF-8',useDefaultXhrHeader:!0,defaultXhrHeader:'XMLHttpRequest'},constructor:function(config){this.mixins.observable.constructor.call(this,
config);this.requests={}},request:function(options){options=options||{};if(!1!==this.fireEvent('beforerequest',this,options)){var requestOptions=this.setOptions(options,options.scope||Ext.global);options=this.createRequest(options,requestOptions);return options.start(requestOptions.data)}Ext.callback(options.callback,options.scope,[options,void 0,void 0]);return Ext.Deferred.rejected([options,void 0,void 0])},createRequest:function(options,requestOptions){var type=options.type||requestOptions.type;
type||(type=this.isFormUpload(options)?'form':'ajax');(options.autoAbort||this.getAutoAbort())&&this.abort();options=Ext.Factory.request({type:type,owner:this,options:options,requestOptions:requestOptions,ownerConfig:this.getConfig()});this.requests[options.id]=options;this.latestId=options.id;return options},isFormUpload:function(options){var form=this.getForm(options);return form?options.isUpload||this.enctypeRe.test(form.getAttribute('enctype')):!1},getForm:function(options){return Ext.getDom(options.form)},
setOptions:function(options,scope){var params=options.params||{},extraParams=this.getExtraParams(),urlParams=options.urlParams,url=options.url||this.getUrl(),cors=options.cors,jsonData=options.jsonData;void 0!==cors&&this.setCors(cors);Ext.isFunction(params)&&(params=params.call(scope,options));Ext.isFunction(url)&&(url=url.call(scope,options));url=this.setupUrl(options,url);scope=options.rawData||options.binaryData||options.xmlData||jsonData||null;jsonData&&!Ext.isPrimitive(jsonData)&&(scope=Ext.encode(scope));
options.binaryData&&this.nativeBinaryPostSupport()&&(scope=new Uint8Array(options.binaryData),Ext.isChrome&&22>Ext.chromeVersion||Ext.isSafari||Ext.isGecko)&&(scope=scope.buffer);Ext.isObject(params)&&(params=Ext.Object.toQueryString(params));Ext.isObject(extraParams)&&(extraParams=Ext.Object.toQueryString(extraParams));params+=extraParams?(params?'\x26':'')+extraParams:'';urlParams=Ext.isObject(urlParams)?Ext.Object.toQueryString(urlParams):urlParams;params=this.setupParams(options,params);extraParams=
(options.method||this.getMethod()||(params||scope?'POST':'GET')).toUpperCase();this.setupMethod(options,extraParams);jsonData=!1!==options.disableCaching?options.disableCaching||this.getDisableCaching():!1;'GET'===extraParams&&jsonData&&(url=Ext.urlAppend(url,(options.disableCachingParam||this.getDisableCachingParam())+'\x3d'+(new Date).getTime()));('GET'==extraParams||scope)&&params&&(url=Ext.urlAppend(url,params),params=null);urlParams&&(url=Ext.urlAppend(url,urlParams));return{url:url,method:extraParams,
data:scope||params||null}},setupUrl:function(options,url){(options=this.getForm(options))&&(url=url||options.action);return url},setupParams:function(options,params){var form=this.getForm(options);form&&!this.isFormUpload(options)&&(options=Ext.Element.serializeForm(form),params=params?params+'\x26'+options:options);return params},setupMethod:function(options,method){return this.isFormUpload(options)?'POST':method},isLoading:function(request){request||(request=this.getLatest());return request?request.isLoading():
!1},abort:function(request){request||(request=this.getLatest());request&&request.isLoading()&&request.abort()},abortAll:function(){var requests=this.requests,id;for(id in requests)this.abort(requests[id])},getLatest:function(){var id=this.latestId,request;id&&(request=this.requests[id]);return request||null},clearTimeout:function(request){request||(request=this.getLatest());request&&request.clearTimer()},onRequestComplete:function(request){delete this.requests[request.id]},nativeBinaryPostSupport:function(){return Ext.isChrome||
Ext.isSafari&&Ext.isDefined(window.Uint8Array)||Ext.isGecko&&Ext.isDefined(window.Uint8Array)}},1,0,0,0,0,[['observable',Ext.mixin.Observable]],[Ext.data,'Connection'],0);Ext.cmd.derive('Ext.Ajax',Ext.data.Connection,{singleton:!0,autoAbort:!1},0,0,0,0,0,0,[Ext,'Ajax'],0);
Ext.cmd.derive('Ext.AnimationQueue',Ext.Base,{singleton:!0,constructor:function(){this.queue=[];this.taskQueue=[];this.runningQueue=[];this.idleQueue=[];this.isRunning=!1;this.isIdle=!0;this.run=Ext.Function.bind(this.run,this);Ext.os.is.iOS&&Ext.interval(this.watch,500,this)},start:function(fn,scope,args){this.queue.push(arguments);this.isRunning||(this.hasOwnProperty('idleTimer')&&(clearTimeout(this.idleTimer),delete this.idleTimer),this.hasOwnProperty('idleQueueTimer')&&(clearTimeout(this.idleQueueTimer),
delete this.idleQueueTimer),this.isIdle=!1,this.isRunning=!0,this.doStart())},watch:function(){this.isRunning&&500<=Ext.now()-this.lastRunTime&&this.run()},run:function(){if(this.isRunning){var queue=this.runningQueue,now=Ext.now(),ln;this.frameStartTime=this.lastRunTime=now;queue.push.apply(queue,this.queue);now=0;for(ln=queue.length;now<ln;now++)this.invoke(queue[now]);queue.length=0;this.doIterate()}},doStart:function(){this.animationFrameId=Ext.Function.requestAnimationFrame(this.run);this.lastRunTime=
Ext.now()},doIterate:function(){this.animationFrameId=Ext.Function.requestAnimationFrame(this.run)},doStop:function(){Ext.Function.cancelAnimationFrame(this.animationFrameId)},stop:function(fn,scope,args){if(this.isRunning){var queue=this.queue,ln=queue.length,i;for(i=0;i<ln;i++){var item=queue[i];item[0]===fn&&item[1]===scope&&item[2]===args&&(queue.splice(i,1),i--,ln--)}0===ln&&(this.doStop(),this.isRunning=!1,this.idleTimer=Ext.defer(this.whenIdle,100,this))}},onIdle:function(fn,scope,args){var listeners=
this.idleQueue,ln;var i=0;for(ln=listeners.length;i<ln;i++){var listener=listeners[i];if(fn===listener[0]&&scope===listener[1]&&args===listener[2])return}listeners.push(arguments);this.isIdle&&this.processIdleQueue()},unIdle:function(fn,scope,args){var listeners=this.idleQueue,ln;var i=0;for(ln=listeners.length;i<ln;i++){var listener=listeners[i];if(fn===listener[0]&&scope===listener[1]&&args===listener[2])return listeners.splice(i,1),!0}return!1},queueTask:function(fn,scope,args){this.taskQueue.push(arguments);
this.processTaskQueue()},dequeueTask:function(fn,scope,args){var listeners=this.taskQueue,ln;var i=0;for(ln=listeners.length;i<ln;i++){var listener=listeners[i];fn===listener[0]&&scope===listener[1]&&args===listener[2]&&(listeners.splice(i,1),i--,ln--)}},invoke:function(listener){var fn=listener[0],scope=listener[1];listener=listener[2];fn='string'==typeof fn?scope[fn]:fn;Ext.isArray(listener)?fn.apply(scope,listener):fn.call(scope,listener)},whenIdle:function(){this.isIdle=!0;this.processIdleQueue()},
processIdleQueue:function(){this.hasOwnProperty('idleQueueTimer')||(this.idleQueueTimer=Ext.defer(this.processIdleQueueItem,1,this))},processIdleQueueItem:function(){delete this.idleQueueTimer;if(this.isIdle){var listeners=this.idleQueue;0<listeners.length&&(listeners=listeners.shift(),this.invoke(listeners),this.processIdleQueue())}},processTaskQueue:function(){this.hasOwnProperty('taskQueueTimer')||(this.taskQueueTimer=Ext.defer(this.processTaskQueueItem,15,this))},processTaskQueueItem:function(){delete this.taskQueueTimer;
var listeners=this.taskQueue;0<listeners.length&&(listeners=listeners.shift(),this.invoke(listeners),this.processTaskQueue())}},1,0,0,0,0,0,[Ext,'AnimationQueue'],0);
Ext.cmd.derive('Ext.ComponentManager',Ext.Base,{alternateClassName:'Ext.ComponentMgr',singleton:!0,count:0,typeName:'xtype',constructor:function(config){Ext.apply(this,config||{});this.all={};this.references={};this.onAvailableCallbacks={}},create:function(config,defaultType){return'string'===typeof config?Ext.widget(config):config.isComponent?config:'xclass'in config?Ext.create(config.xclass,config):Ext.widget(config.xtype||defaultType,config)},get:function(id){return this.all[id]},register:function(component){var all=
this.all,key=component.getId(),onAvailableCallbacks=this.onAvailableCallbacks;all[key]=component;component.getReference&&component.getReference()&&(this.references[key]=component);++this.count;this.hasFocusListener||(Ext.on('focus',this.onGlobalFocus,this),this.hasFocusListener=!0);(onAvailableCallbacks=onAvailableCallbacks&&onAvailableCallbacks[key])&&onAvailableCallbacks.length&&this.notifyAvailable(component)},unregister:function(component){var id=component.getId();component.getReference&&component.getReference()&&
(this.references[id]=null,delete this.references[id]);this.all[id]=null;delete this.all[id];this.count--},markReferencesDirty:function(){this.referencesDirty=!0},fixReferences:function(){var references=this.references,key;if(this.referencesDirty){for(key in references)references.hasOwnProperty(key)&&references[key].fixReference();this.referencesDirty=!1}},onAvailable:function(id,fn,scope){var callbacks=this.onAvailableCallbacks,all=this.all;id in all?(id=all[id],fn.call(scope||id,id)):id&&(Ext.isArray(callbacks[id])||
(callbacks[id]=[]),callbacks[id].push(function(item){fn.call(scope||item,item)}))},notifyAvailable:function(item){for(var callbacks=this.onAvailableCallbacks[item&&item.getId()]||[];callbacks.length;)callbacks.shift()(item)},each:function(fn,scope){return Ext.Object.each(this.all,fn,scope)},getCount:function(){return this.count},getAll:function(){return Ext.Object.getValues(this.all)},getActiveComponent:function(){return Ext.Component.fromElement(Ext.dom.Element.getActiveElement())},onGlobalFocus:function(e){var toElement=
e.toElement,fromElement=e.fromElement,toComponent=Ext.Component.fromElement(toElement),fromComponent=Ext.Component.fromElement(fromElement),targetComponent;if(toComponent!==fromComponent){var commonAncestor=this.getCommonAncestor(fromComponent,toComponent);if(fromComponent&&!fromComponent.destroyed&&!fromComponent.destroying)for(fromComponent.handleBlurEvent&&fromComponent.handleBlurEvent(e),targetComponent=fromComponent;targetComponent&&targetComponent!==commonAncestor;targetComponent=targetComponent.getRefOwner())if(!targetComponent.destroyed&&
!targetComponent.destroying)targetComponent.onFocusLeave({event:e.event,type:'focusleave',target:fromElement,relatedTarget:toElement,fromComponent:fromComponent,toComponent:toComponent});if(toComponent&&!toComponent.destroyed&&!toComponent.destroying)for(toComponent.handleFocusEvent&&toComponent.handleFocusEvent(e),targetComponent=toComponent;targetComponent&&targetComponent!==commonAncestor;targetComponent=targetComponent.getRefOwner())targetComponent.onFocusEnter({event:e.event,type:'focusenter',
relatedTarget:fromElement,target:toElement,fromComponent:fromComponent,toComponent:toComponent})}},getCommonAncestor:function(compA,compB){if(compA===compB)return compA;for(;compA&&!compA.isAncestor(compB)&&compA!==compB;)compA=compA.getRefOwner();return compA},privates:{clearAll:function(){this.all={};this.references={};this.onAvailableCallbacks={}},fromElement:function(node,limit,selector){node=Ext.getDom(node);var cache=this.all,depth=0,cmpId;if('number'!==typeof limit){var topmost=Ext.getDom(limit);
limit=Number.MAX_VALUE}for(;node&&1===node.nodeType&&depth<limit&&node!==topmost;){if(cmpId=node.getAttribute('data-componentid')||node.id){if((cmpId=cache[cmpId])&&(!selector||Ext.ComponentQuery.is(cmpId,selector)))return cmpId;depth++}node=node.parentNode}return null}},deprecated:{5:{methods:{isRegistered:null,registerType:null}}}},1,0,0,0,0,0,[Ext,'ComponentManager',Ext,'ComponentMgr'],function(){Ext.getCmp=function(id){return Ext.ComponentManager.get(id)}});
Ext.ns('Ext.util').Operators={'\x3d':function(a,v){return a==v},'!\x3d':function(a,v){return a!=v},'^\x3d':function(a,v){return a&&a.substr(0,v.length)==v},'$\x3d':function(a,v){return a&&a.substr(a.length-v.length)==v},'*\x3d':function(a,v){return a&&-1!==a.indexOf(v)},'%\x3d':function(a,v){return 0===a%v},'|\x3d':function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+'-')},'~\x3d':function(a,v){return a&&-1!=(' '+a+' ').indexOf(' '+v+' ')}};
Ext.cmd.derive('Ext.util.LruCache',Ext.util.HashMap,{config:{maxSize:null},add:function(key,newValue){this.removeAtKey(key);var last=this.last;var entry={prev:last,next:null,key:key,value:newValue};last?last.next=entry:this.first=entry;this.last=entry;Ext.util.HashMap.prototype.add.call(this,key,entry);this.prune();return newValue},insertBefore:function(key,newValue,sibling){var existingKey,entry;return(sibling=this.map[this.findKey(sibling)])?((existingKey=this.findKey(newValue))?this.unlinkEntry(entry=
this.map[existingKey]):entry={prev:sibling.prev,next:sibling,key:key,value:newValue},sibling.prev?entry.prev.next=entry:this.first=entry,entry.next=sibling,sibling.prev=entry,this.prune(),newValue):this.add(key,newValue)},get:function(key){if(key=this.map[key])return key.next&&this.moveToEnd(key),key.value},removeAtKey:function(key){this.unlinkEntry(this.map[key]);return Ext.util.HashMap.prototype.removeAtKey.apply(this,arguments)},clear:function(initial){this.first=this.last=null;return Ext.util.HashMap.prototype.clear.call(this,
initial)},unlinkEntry:function(entry){entry&&(entry.next?entry.next.prev=entry.prev:this.last=entry.prev,entry.prev?entry.prev.next=entry.next:this.first=entry.next,entry.prev=entry.next=null)},moveToEnd:function(entry){this.unlinkEntry(entry);(entry.prev=this.last)?this.last.next=entry:this.first=entry;this.last=entry},getArray:function(isKey){for(var arr=[],entry=this.first;entry;)arr.push(isKey?entry.key:entry.value),entry=entry.next;return arr},each:function(fn,scope,reverse){var entry=reverse?
this.last:this.first,length=this.length;for(scope=scope||this;entry&&!1!==fn.call(scope,entry.key,entry.value,length);)entry=reverse?entry.prev:entry.next;return this},findKey:function(value){var key,map=this.map;for(key in map)if(map.hasOwnProperty(key)&&map[key].value===value)return key},clone:function(){var newCache=new this.self(this.initialConfig),map=this.map,key;newCache.suspendEvents();for(key in map)map.hasOwnProperty(key)&&newCache.add(key,map[key].value);newCache.resumeEvents();return newCache},
prune:function(){var max=this.getMaxSize();max=max?this.length-max:0;if(0<max)for(;this.first&&max;max--)this.removeAtKey(this.first.key)}},0,0,0,0,0,0,[Ext.util,'LruCache'],0);
Ext.cmd.derive('Ext.ComponentQuery',Ext.Base,{singleton:!0},0,0,0,0,0,0,[Ext,'ComponentQuery'],function(){var cq=this,queryOperators=Ext.util.Operators,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,stripLeadingSpaceRe=/^(\s)+/,unescapeRe=/\\(.)/g,regexCache=new Ext.util.LruCache({maxSize:100}),filterItems=function(items,operation){return operation.method.apply(this,[items].concat(operation.args))},getItems=function(items,mode){for(var result=[],i=0,length=items.length,deep='\x3e'!==mode;i<length;i++)mode=items[i],
mode.getRefItems&&(result=result.concat(mode.getRefItems(deep)));return result},getAncestors=function(items){for(var result=[],i=0,length=items.length,candidate;i<length;i++)for(candidate=items[i];candidate=candidate.getRefOwner();)result.push(candidate);return result},filterByXType=function(items,xtype,shallow){if('*'===xtype)return items.slice();for(var result=[],i=0,length=items.length,candidate;i<length;i++)candidate=items[i],candidate.isXType(xtype,shallow)&&result.push(candidate);return result},
filterById=function(items,id,idOnly){for(var result=[],i=0,length=items.length,candidate,check;i<length;i++)candidate=items[i],check=idOnly?candidate.id:candidate.getItemId(),check===id&&result.push(candidate);return result},modeRe=/^(\s?([>\^])\s?|\s|$)/,tokenRe=/^(#)?((?:\\\.|[\w\-])+|\*)(?:\((true|false)\))?/,matchers=[{re:/^\.((?:\\\.|[\w\-])+)(?:\((true|false)\))?/,method:filterByXType,argTransform:function(args){void 0!==args[1]&&(args[1]=args[1].replace(unescapeRe,'$1'));return args.slice(1)}},
{re:/^(?:\[((?:[@?$])?[\w\-]*)\s*(?:([\^$*~%!\/]?=)\s*(['"])?((?:\\\]|.)*?)\3)?(?!\\)\])/,method:function(items,property,operator,compareTo){var result=[],i=0,length=items.length,propValue,propLen;if('@'===property.charAt(0)){var mustBeOwnProperty=!0;property=property.substr(1)}if('?'===property.charAt(0)){var presenceOnly=mustBeOwnProperty=!0;property=property.substr(1)}for(;i<length;i++){var candidate=items[i];if(propValue=candidate.self&&candidate.self.getConfigurator&&candidate.self.$config.configs[property])propValue=
candidate[propValue.names.get]();else if(mustBeOwnProperty&&!candidate.hasOwnProperty(property))continue;else propValue=candidate[property];if(presenceOnly)result.push(candidate);else if('~\x3d'===operator){if(propValue){Ext.isArray(propValue)||(propValue=propValue.split(' '));var j=0;for(propLen=propValue.length;j<propLen;j++)if(queryOperators[operator](Ext.coerce(propValue[j],compareTo),compareTo)){result.push(candidate);break}}}else'/\x3d'===operator?null!=propValue&&compareTo.test(propValue)&&
result.push(candidate):(compareTo?queryOperators[operator](Ext.coerce(propValue,compareTo),compareTo):candidate[property])&&result.push(candidate)}return result},argTransform:function(args){var property=args[1],operator=args[2];args=args[4];var compareRe;void 0!==args&&(args=args.replace(unescapeRe,'$1'));'/\x3d'===operator&&(args=(compareRe=regexCache.get(args))?compareRe:regexCache.add(args,new RegExp(args)));return[property,operator,args]}},{re:/^#((?:\\\.|[\w\-])+)/,method:filterById},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,
method:function(items,name,value){return cq.pseudos[name](items,value)},argTransform:function(args){void 0!==args[2]&&(args[2]=args[2].replace(unescapeRe,'$1'));return args.slice(1)}},{re:/^(?:\{([^\}]+)\})/,method:'var r \x3d [],i \x3d 0,it \x3d items,l \x3d it.length,c;for (; i \x3c l; i++) {c \x3d it[i];if (c.{0}) {r.push(c);}}return r;'}];cq.Query=Ext.extend(Object,{constructor:function(cfg){cfg=cfg||{};Ext.apply(this,cfg)},execute:function(root){var operations=this.operations,result=[],len;var i=
0;for(len=operations.length;i<len;i++){var op=operations[i];result=result.concat(this._execute(root,op))}return result},_execute:function(root,operations){var i=0,length=operations.length;if(root)Ext.isIterable(root)?workingItems=root:root.isMixedCollection&&(workingItems=root.items);else var workingItems=Ext.ComponentManager.getAll();for(;i<length;i++){var operation=operations[i];workingItems='^'===operation.mode?getAncestors(workingItems||[root]):operation.mode?getItems(workingItems||[root],operation.mode):
filterItems(workingItems||getItems([root]),operation);if(i===length-1)return workingItems}return[]},is:function(component,root){var operations=this.operations,len=operations.length,i;if(0===len)return!0;for(i=0;i<len;i++){var result=operations[i];if(result=this._is(component,root,result))return result}return!1},_is:function(component,root,operations){var len=operations.length;component=[component];var i,mode,item;for(i=len-1;0<=i;--i){len=operations[i];if(mode=len.mode)if('^'===mode)component=getItems(component,
' ');else if('\x3e'===mode){var items=[];var j=0;for(len=component.length;j<len;++j)(item=component[j].getRefOwner())&&items.push(item);component=items}else component=getAncestors(component);else component=filterItems(component,len);if(0===component.length)return!1}return root&&(mode||(component=getAncestors(component)),0<component.length&&(component=filterItems(component,{method:filterById,args:[root.id,!0]})),0===component.length)?!1:!0},getMatches:function(components,operations){var len=operations.length,
i;for(i=0;i<len&&(components=filterItems(components,operations[i]),0!==components.length);++i);return components},isMultiMatch:function(){return 1<this.operations.length}});Ext.apply(cq,{cache:new Ext.util.LruCache({maxSize:100}),pseudos:{not:function(components,selector){for(var i=0,length=components.length,results=[],index=-1,component;i<length;++i)component=components[i],cq.is(component,selector)||(results[++index]=component);return results},first:function(components){var ret=[];0<components.length&&
ret.push(components[0]);return ret},last:function(components){var len=components.length,ret=[];0<len&&ret.push(components[len-1]);return ret},focusable:function(cmps){for(var len=cmps.length,results=[],i=0,c;i<len;i++)c=cmps[i],c.isFocusable&&c.isFocusable()&&results.push(c);return results},canfocus:function(cmps,value){for(var len=cmps.length,results=[],i=0,c;i<len;i++)c=cmps[i],c.canFocus&&c.canFocus(!1,value)&&results.push(c);return results},'nth-child':function(c,a){var result=[],m=nthRe.exec('even'===
a&&'2n'||'odd'===a&&'2n+1'||!nthRe2.test(a)&&'n+'+a||a);a=(m[1]||1)-0;m=m[2]-0;var i,n;for(i=0;n=c[i];i++){var nodeIndex=i+1;1===a?(0===m||nodeIndex===m)&&result.push(n):0===(nodeIndex+m)%a&&result.push(n)}return result},scrollable:function(cmps){for(var len=cmps.length,results=[],i=0,c;i<len;i++)c=cmps[i],(c.scrollable||c._scrollable)&&results.push(c);return results},visible:function(cmps,deep){deep='true'===deep;for(var len=cmps.length,results=[],i=0,c;i<len;i++)c=cmps[i],c.isVisible(deep)&&results.push(c);
return results}},query:function(selector,root){if(!selector)return Ext.ComponentManager.all.getArray();var noDupResults=[],dupMatcher={},query=cq.cache.get(selector),i;query||(query=cq.cache.add(selector,cq.parse(selector)));selector=query.execute(root);if(query.isMultiMatch()){query=selector.length;for(i=0;i<query;i++)root=selector[i],dupMatcher[root.id]||(noDupResults.push(root),dupMatcher[root.id]=!0);selector=noDupResults}return selector},visitPreOrder:function(selector,root,fn,scope,extraArgs){cq._visit(!0,
selector,root,fn,scope,extraArgs)},visitPostOrder:function(selector,root,fn,scope,extraArgs){cq._visit(!1,selector,root,fn,scope,extraArgs)},_visit:function(preOrder,selector,root,fn,scope,extraArgs){var query=cq.cache.get(selector),callArgs=[root],len=0;query||(query=cq.cache.add(selector,cq.parse(selector)));var rootMatch=query.is(root);if(root.getRefItems){var children=root.getRefItems();len=children.length}extraArgs&&Ext.Array.push(callArgs,extraArgs);if(preOrder&&rootMatch&&!1===fn.apply(scope||
root,callArgs))return!1;for(query=0;query<len;query++)if(!1===cq._visit.call(cq,preOrder,selector,children[query],fn,scope,extraArgs))return!1;if(!preOrder&&rootMatch&&!1===fn.apply(scope||root,callArgs))return!1},is:function(component,selector,root){if(!selector)return!0;var query=cq.cache.get(selector);query||(query=cq.cache.add(selector,cq.parse(selector)));return query.is(component,root)},parse:function(selector){var operations=[],len;selector=Ext.splitAndUnescape(selector,',');var i=0;for(len=
selector.length;i<len;i++){var sel=Ext.String.trim(selector[i]);operations.push(cq._parse(sel))}return new cq.Query({operations:operations})},_parse:function(selector){for(var operations=[],trim=Ext.String.trim,length=matchers.length,lastSelector,tokenMatch,token,matchedChar,transform,i;selector&&lastSelector!==selector;){lastSelector=selector;if(tokenMatch=selector.match(tokenRe))matchedChar=tokenMatch[1],token=trim(tokenMatch[2]).replace(unescapeRe,'$1'),'#'===matchedChar?operations.push({method:filterById,
args:[token]}):operations.push({method:filterByXType,args:[token,!!tokenMatch[3]]}),selector=selector.replace(tokenMatch[0],'').replace(stripLeadingSpaceRe,'$1');for(;!(tokenMatch=selector.match(modeRe));)for(i=0;selector&&i<length;i++){token=matchers[i];tokenMatch=selector.match(token.re);matchedChar=token.method;transform=token.argTransform;if(tokenMatch){transform=transform?transform(tokenMatch):tokenMatch.slice(1);operations.push({method:Ext.isString(token.method)?Ext.functionFactory('items',
Ext.String.format.apply(Ext.String,[matchedChar].concat(tokenMatch.slice(1)))):token.method,args:transform});selector=selector.replace(tokenMatch[0],'').replace(stripLeadingSpaceRe,'$1');break}i===length-1&&Ext.raise('Invalid ComponentQuery selector: "'+selector+'"')}tokenMatch[1]&&(operations.push({mode:tokenMatch[2]||tokenMatch[1]}),selector=selector.replace(tokenMatch[0],'').replace(stripLeadingSpaceRe,''))}return operations}});Ext.all=function(){return cq.query.apply(cq,arguments)};Ext.first=
function(){var matches=cq.query.apply(cq,arguments);return matches&&matches[0]||null}});
Ext.cmd.derive('Ext.Evented',Ext.Base,{alternateClassName:'Ext.EventedBase',initialized:!1,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.initialized=!0},onClassExtended:function(cls,data){if(data.hasOwnProperty('eventedConfig')){var config=data.config,eventedConfig=data.eventedConfig,name;config?Ext.applyIf(config,eventedConfig):cls.addConfig(eventedConfig);for(name in eventedConfig)eventedConfig.hasOwnProperty(name)&&(cls=Ext.Config.get(name),data[cls.names.set]=
cls.eventedSetter||cls.getEventedSetter())}}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext,'Evented',Ext,'EventedBase'],0);
Ext.cmd.derive('Ext.util.Positionable',Ext.Base,{mixinId:'positionable',_positionTopLeft:['position','top','left'],clippedCls:'x-clipped',afterSetPosition:Ext.emptyFn,adjustForConstraints:function(xy,parent){if(parent=this.getConstrainVector(parent,xy))xy[0]+=parent[0],xy[1]+=parent[1];return xy},alignTo:function(element,position,offsets,animate){var el=this.el;return this.setXY(this.getAlignToXY(element,position,offsets),el.anim&&animate?el.anim(animate):!1)},calculateAnchorXY:function(anchor,extraX,
extraY,mySize){var region=this.getRegion();region.setPosition(0,0);region.translateBy(extraX||0,extraY||0);mySize&&(region.setWidth(mySize.width),region.setHeight(mySize.height));return region.getAnchorPoint(anchor)},convertPositionSpec:function(posSpec){return Ext.util.Region.getAlignInfo(posSpec)},getAlignToXY:function(alignToEl,posSpec,offset){alignToEl=this.getAlignToRegion(alignToEl,posSpec,offset);return[alignToEl.x,alignToEl.y]},getAlignToRegion:function(alignToEl,posSpec,offset,minHeight){alignToEl=
Ext.get(alignToEl.el||alignToEl);posSpec=this.convertPositionSpec(posSpec);if(posSpec.constrain){var inside='!'===posSpec.constrain?alignToEl:this.constrainTo||this.container||this.el.parent();inside=Ext.get(inside.el||inside).getConstrainRegion()}return this.getRegion().alignTo({target:alignToEl.getRegion(),inside:inside,minHeight:minHeight,offset:offset,align:posSpec,axisLock:!0})},getAnchorXY:function(anchor,local,mySize){var region=this.getRegion(),el=this.el,isViewport='BODY'===el.dom.nodeName||
9===el.dom.nodeType;el=el.getScroll();local?region.setPosition(0,0):isViewport&&region.setPosition(el.left,el.top);mySize&&(region.setWidth(mySize.width),region.setHeight(mySize.height));return region.getAnchorPoint(anchor)},getBox:function(contentBox,local){var xy=local?this.getLocalXY():this.getXY();local=xy[0];xy=xy[1];if('BODY'===this.el.dom.nodeName||9===this.el.dom.nodeType){var w=Ext.Element.getViewportWidth();var h=Ext.Element.getViewportHeight()}else w=this.getWidth(),h=this.getHeight();
if(contentBox){contentBox=this.getBorderPadding();var beforeX=contentBox.beforeX;var beforeY=contentBox.beforeY;local+=beforeX;xy+=beforeY;w-=beforeX+contentBox.afterX;h-=beforeY+contentBox.afterY}return{x:local,left:local,0:local,y:xy,top:xy,1:xy,width:w,height:h,right:local+w,bottom:xy+h}},calculateConstrainedPosition:function(constrainTo,proposedPosition,local,proposedSize){var fp=this.floatParent,parentNode=fp?fp.getTargetEl():null,proposedConstrainPosition,xy=!1;if(local&&fp){fp=parentNode.getXY();
var borderPadding=parentNode.getBorderPadding();fp[0]+=borderPadding.beforeX;fp[1]+=borderPadding.beforeY;proposedPosition&&(proposedConstrainPosition=[proposedPosition[0]+fp[0],proposedPosition[1]+fp[1]])}else proposedConstrainPosition=proposedPosition;constrainTo=constrainTo||this.constrainTo||parentNode||this.container||this.el.parent();local&&proposedConstrainPosition&&(proposedConstrainPosition=this.reverseTranslateXY(proposedConstrainPosition));if(constrainTo=(this.constrainHeader&&this.header.rendered?
this.header:this).getConstrainVector(constrainTo,proposedConstrainPosition,proposedSize))xy=proposedPosition||this.getPosition(local),xy[0]+=constrainTo[0],xy[1]+=constrainTo[1];return xy},getConstrainRegion:function(){var el=this.el,isBody='BODY'===el.dom.nodeName,dom=el.dom,borders=el.getBorders(),pos=el.getXY(),left=pos[0]+borders.beforeX;borders=pos[1]+borders.beforeY;isBody?(dom=el.getScroll(),left=dom.left,borders=dom.top,el=Ext.Element.getViewportWidth(),dom=Ext.Element.getViewportHeight()):
(el=dom.clientWidth,dom=dom.clientHeight);return new Ext.util.Region(borders,left+el,borders+dom,left)},getConstrainVector:function(constrainTo,proposedPosition,proposedSize){var thisRegion=this.getRegion(),vector=[0,0],shadowSize=this.shadow&&this.constrainShadow&&!this.shadowDisabled?this.el.shadow.getShadowSize():void 0,overflowed=!1,constraintInsets=this.constraintInsets;constrainTo instanceof Ext.util.Region||(constrainTo=Ext.get(constrainTo.el||constrainTo),constrainTo=constrainTo.getConstrainRegion());
constraintInsets&&(constraintInsets=Ext.isObject(constraintInsets)?constraintInsets:Ext.Element.parseBox(constraintInsets),constrainTo.adjust(constraintInsets.top,constraintInsets.right,constraintInsets.bottom,constraintInsets.left));proposedPosition&&thisRegion.translateBy(proposedPosition[0]-thisRegion.x,proposedPosition[1]-thisRegion.y);proposedSize&&(thisRegion.right=thisRegion.left+proposedSize[0],thisRegion.bottom=thisRegion.top+proposedSize[1]);shadowSize&&constrainTo.adjust(shadowSize[0],
-shadowSize[1],-shadowSize[2],shadowSize[3]);thisRegion.right>constrainTo.right&&(overflowed=!0,vector[0]=constrainTo.right-thisRegion.right);thisRegion.left+vector[0]<constrainTo.left&&(overflowed=!0,vector[0]=constrainTo.left-thisRegion.left);thisRegion.bottom>constrainTo.bottom&&(overflowed=!0,vector[1]=constrainTo.bottom-thisRegion.bottom);thisRegion.top+vector[1]<constrainTo.top&&(overflowed=!0,vector[1]=constrainTo.top-thisRegion.top);return overflowed?vector:!1},getOffsetsTo:function(offsetsTo){var o=
this.getXY();offsetsTo=Ext.fly(offsetsTo.el||offsetsTo).getXY();return[o[0]-offsetsTo[0],o[1]-offsetsTo[1]]},getRegion:function(contentBox){contentBox=this.getBox(contentBox);return new Ext.util.Region(contentBox.top,contentBox.right,contentBox.bottom,contentBox.left)},getClientRegion:function(){var scrollbarSize,viewContentBox=this.getBox(),myDom=this.dom;if(scrollbarSize=myDom.offsetWidth-myDom.clientWidth)'rtl'===this.getStyle('direction')?viewContentBox.left+=scrollbarSize:viewContentBox.right-=
scrollbarSize;if(scrollbarSize=myDom.offsetHeight-myDom.clientHeight)viewContentBox.bottom-=scrollbarSize;return new Ext.util.Region(viewContentBox.top,viewContentBox.right,viewContentBox.bottom,viewContentBox.left)},getViewRegion:function(){var el=this.el;if('BODY'===el.dom.nodeName){var borderPadding=el.getScroll();el=borderPadding.left;borderPadding=borderPadding.top;var pos=Ext.Element.getViewportWidth();var height=Ext.Element.getViewportHeight()}else borderPadding=this.getBorderPadding(),pos=
this.getXY(),el=pos[0]+borderPadding.beforeX,borderPadding=pos[1]+borderPadding.beforeY,pos=this.getWidth(!0),height=this.getHeight(!0);return new Ext.util.Region(borderPadding,el+pos,borderPadding+height,el)},getClientRegion:function(){var el=this.el;var borderPadding=this.getBorderPadding();var pos=this.getXY();var left=pos[0]+borderPadding.beforeX;borderPadding=pos[1]+borderPadding.beforeY;return new Ext.util.Region(borderPadding,left+el.dom.clientWidth,borderPadding+el.dom.clientHeight,left)},
move:function(direction,distance,animate){var xy=this.getXY(),x=xy[0],y=xy[1];xy=[x-distance,y];var right=[x+distance,y],top=[x,y-distance];distance=[x,y+distance];distance={l:xy,left:xy,r:right,right:right,t:top,top:top,up:top,b:distance,bottom:distance,down:distance};direction=direction.toLowerCase();this.setXY([distance[direction][0],distance[direction][1]],animate)},setBox:function(box){box.isRegion&&(box={x:box.left,y:box.top,width:box.right-box.left,height:box.bottom-box.top});this.constrainBox(box);
var x=box.x;var y=box.y;this.setXY([x,y]);this.setSize(box.width,box.height);this.afterSetPosition(x,y);return this},constrainBox:function(box){if(this.constrain||this.constrainHeader){var constrainedPos='x'in box?box.x:box.left;var y='y'in box?box.y:box.top;if(constrainedPos=this.calculateConstrainedPosition(null,[constrainedPos,y],!1,[box.width,box.height]))box.x=constrainedPos[0],box.y=constrainedPos[1]}},translatePoints:function(x,y){x=this.translateXY(x,y);return{left:x.x,top:x.y}},translateXY:function(x,
y){var el=this.el,styles=el.getStyle(this._positionTopLeft),relative='relative'===styles.position,left=parseFloat(styles.left);styles=parseFloat(styles.top);var xy=this.getXY();Ext.isArray(x)&&(y=x[1],x=x[0]);isNaN(left)&&(left=relative?0:el.dom.offsetLeft);isNaN(styles)&&(styles=relative?0:el.dom.offsetTop);left='number'===typeof x?x-xy[0]+left:void 0;styles='number'===typeof y?y-xy[1]+styles:void 0;return{x:left,y:styles}},reverseTranslateXY:function(xy){var coords=xy,el=this.el,offsetParent=el.dom.offsetParent;
if(offsetParent){coords=el.isStyle('position','relative');var offsetParentXY=Ext.fly(offsetParent).getXY();var x=xy[0]+offsetParentXY[0]+offsetParent.clientLeft;xy=xy[1]+offsetParentXY[1]+offsetParent.clientTop;coords&&(x+=el.getPadding('l'),xy+=el.getPadding('t'));coords=[x,xy]}return coords},privates:{clipTo:function(clippingEl,sides){var el=this.el,floaterRegion=el.getRegion(),overflow,clipValues=[],clippedCls=this.clippedCls,shadow;clippingEl=clippingEl.isRegion?clippingEl:(clippingEl.isComponent?
clippingEl.el:Ext.fly(clippingEl)).getConstrainRegion();sides||(sides=15);if(sides&1&&0<(overflow=clippingEl.top-floaterRegion.top)){clipValues[0]=overflow;var clipped=!0}else clipValues[0]=-1E4;sides&2&&0<(overflow=floaterRegion.right-clippingEl.right)?(clipValues[1]=Math.max(0,el.getWidth()-overflow),clipped=!0):clipValues[1]=1E4;sides&4&&0<(overflow=floaterRegion.bottom-clippingEl.bottom)?(clipValues[2]=Math.max(0,el.getHeight()-overflow),clipped=!0):clipValues[2]=1E4;sides&8&&0<(overflow=clippingEl.left-
floaterRegion.left)?(clipValues[3]=overflow,clipped=!0):clipValues[3]=-1E4;floaterRegion='rect(';for(sides=0;4>sides;++sides)floaterRegion+=Ext.Element.addUnits(clipValues[sides],'px'),floaterRegion+=3===sides?')':',';el.dom.style.clip=floaterRegion;el.addCls(clippedCls);if((shadow=el.shadow)&&(el=shadow.el)&&el.dom){clipValues[2]-=shadow.offsets.y;clipValues[3]-=shadow.offsets.x;floaterRegion='rect(';for(sides=0;4>sides;++sides)floaterRegion+=Ext.Element.addUnits(clipValues[sides],'px'),floaterRegion+=
3===sides?')':',';el.dom.style.clip=floaterRegion;clipped&&!Ext.supports.CSS3BoxShadow?el.dom.style.display='none':(el.dom.style.display='',el.addCls(clippedCls))}},clearClip:function(){var el=this.el,clippedCls=this.clippedCls;el.dom.style.clip=Ext.isIE8?'auto':'';el.removeCls(clippedCls);el.shadow&&el.shadow.el&&el.shadow.el.dom&&(el.shadow.el.dom.style.clip=Ext.isIE8?'auto':'',Ext.supports.CSS3BoxShadow||(el.dom.style.display='',el.removeCls(clippedCls)))}}},0,0,0,0,0,0,[Ext.util,'Positionable'],
0);
Ext.define('Ext.overrides.util.Positionable',{override:'Ext.util.Positionable',anchorTo:function(anchorToEl,alignment,offsets,animate,monitorScroll,callback){var me=this,scroll=!Ext.isEmpty(monitorScroll),action=function(){me.mixins.positionable.alignTo.call(me,anchorToEl,alignment,offsets,animate);Ext.callback(callback,me)},anchor=me.getAnchor();me.removeAnchor();Ext.apply(anchor,{fn:action,scroll:scroll});Ext.on('resize',action,null);if(scroll)Ext.getWin().on('scroll',action,null,{buffer:isNaN(monitorScroll)?50:
monitorScroll});action();return me},getAnchor:function(){var el=this.el;if(el&&el.dom){el=el.getData();var anchor=el._anchor;anchor||(anchor=el._anchor={});return anchor}},alignTo:function(element,position,offsets,animate){var el=this.el;if(this.isComponent&&this.getSizeModel().height.shrinkWrap){this.maxHeight&&this.setMaxHeight(null);var newMaxHeight=!0}element=this.getAlignToRegion(element,position,offsets,this.minHeight||150);this.setXY([element.x,element.y],el.anim&&animate?el.anim(animate):
!1);newMaxHeight&&(newMaxHeight=element.getHeight())!==this.getHeight()&&this.setMaxHeight(newMaxHeight);return this},removeAnchor:function(){var anchor=this.getAnchor();if(anchor&&anchor.fn){Ext.un('resize',anchor.fn);if(anchor.scroll)Ext.getWin().on('scroll',anchor.fn);delete anchor.fn}return this},setBox:function(box,animate){box.isRegion&&(box={x:box.left,y:box.top,width:box.right-box.left,height:box.bottom-box.top});animate?(this.constrainBox(box),this.animate(Ext.applyIf({to:box,listeners:{afteranimate:Ext.Function.bind(this.afterSetPosition,
this,[box.x,box.y])}},animate))):arguments.callee.$previous.call(this,box);return this}});
Ext.cmd.derive('Ext.dom.UnderlayPool',Ext.Base,{constructor:function(elementConfig){this.elementConfig=elementConfig;this.cache=[]},checkOut:function(){var el=this.cache.shift();el||(el=Ext.Element.create(this.elementConfig),el.setVisibilityMode(2));return el},checkIn:function(el){this.cache.push(el)},reset:function(){for(var cache=this.cache,i=cache.length;i--;)cache[i].destroy();this.cache=[]}},1,0,0,0,0,0,[Ext.dom,'UnderlayPool'],0);
Ext.cmd.derive('Ext.dom.Underlay',Ext.Base,{constructor:function(config){Ext.apply(this,config)},beforeShow:Ext.emptyFn,getInsertionTarget:function(){return this.target},getPool:function(){return this.pool||(this.self.prototype.pool=new Ext.dom.UnderlayPool(this.elementConfig))},hide:function(){var el=this.el;el&&(el.hide(),this.getPool().checkIn(el),this.el=null,this.hidden=!0)},realign:function(x,y,width,height){var el=this.el,target=this.target,offsets=this.offsets,max=Math.max;el&&(null==x&&(x=
target.getX()),null==y&&(y=target.getY()),null==width&&(width=target.getWidth()),null==height&&(height=target.getHeight()),offsets&&(x+=offsets.x,y+=offsets.y,width=max(width+offsets.w,0),height=max(height+offsets.h,0)),el.setXY([x,y]),el.setSize(width,height))},setZIndex:function(zIndex){this.zIndex=zIndex;this.el&&this.el.setStyle('z-index',zIndex)},show:function(){var target=this.target,zIndex=this.zIndex,el=this.el,insertionTarget=this.getInsertionTarget().dom;el||(el=this.el=this.getPool().checkOut());
this.beforeShow();null==zIndex&&(zIndex=parseInt(target.getStyle('z-index'),10));zIndex&&el.setStyle('z-index',zIndex);el.setStyle('position',this.fixed?'fixed':'');zIndex=el.dom;zIndex.nextSibling!==insertionTarget&&target.dom.parentNode.insertBefore(zIndex,insertionTarget);el.show();this.realign();this.hidden=!1}},1,0,0,0,0,0,[Ext.dom,'Underlay'],0);
Ext.cmd.derive('Ext.dom.Shadow',Ext.dom.Underlay,{alternateClassName:'Ext.Shadow',mode:'drop',offset:4,cls:'x-'+(Ext.supports.CSS3BoxShadow?'css':'ie')+'-shadow',constructor:function(config){Ext.dom.Underlay.prototype.constructor.call(this,config);this.elementConfig={cls:this.cls,role:'presentation'};config=this.offset;var rad=Math.floor(config/2);this.opacity=50;switch(this.mode.toLowerCase()){case 'drop':var outerOffsets={x:0,y:0,w:config,h:config};var offsets=Ext.supports.CSS3BoxShadow?{x:config,
y:config,h:-config,w:-config}:{x:-rad,y:-rad,h:-rad,w:-rad};break;case 'sides':outerOffsets={x:-config,y:0,w:2*config,h:config};offsets=Ext.supports.CSS3BoxShadow?{x:0,y:config,h:-config,w:0}:{x:1+rad-2*config,y:-(1+rad),h:-1,w:rad-1};break;case 'frame':outerOffsets={x:-config,y:-config,w:2*config,h:2*config};offsets=Ext.supports.CSS3BoxShadow?{x:0,y:0,h:0,w:0}:{x:1+rad-2*config,y:1+rad-2*config,h:config-rad-1,w:config-rad-1};break;case 'bottom':outerOffsets={x:-config,y:0,w:2*config,h:config},offsets=
Ext.supports.CSS3BoxShadow?{x:0,y:config,h:-config,w:0}:{x:0,y:config,h:0,w:0}}this.offsets=offsets;this.outerOffsets=outerOffsets},getShadowSize:function(){var offset=this.el?this.offset:0;offset=[offset,offset,offset,offset];var mode=this.mode.toLowerCase();this.el&&'frame'!==mode&&(offset[0]=0,'drop'==mode&&(offset[3]=0));return offset},boxShadowProperty:function(){var property='boxShadow',style=document.documentElement.style;'boxShadow'in style||('WebkitBoxShadow'in style?property='WebkitBoxShadow':
'MozBoxShadow'in style&&(property='MozBoxShadow'));return property}(),beforeShow:function(){var style=this.el.dom.style,shim=this.shim;Ext.supports.CSS3BoxShadow?style[this.boxShadowProperty]='0 0 '+(this.offset+2)+'px #888':style.filter='progid:DXImageTransform.Microsoft.alpha(opacity\x3d'+this.opacity+') progid:DXImageTransform.Microsoft.Blur(pixelradius\x3d'+this.offset+')';shim&&shim.realign()},setOpacity:function(opacity){var el=this.el;el&&(Ext.isIE&&!Ext.supports.CSS3BoxShadow&&(opacity=Math.floor(100*
opacity/2)/100),this.opacity=opacity,el.setOpacity(opacity))}},1,0,0,0,0,0,[Ext.dom,'Shadow',Ext,'Shadow'],0);Ext.define('RCOP.dom.Shadow',{override:'Ext.dom.Shadow',beforeShow:function(){var style=this.el.dom.style,shim=this.shim;Ext.supports.CSS3BoxShadow?style[this.boxShadowProperty]='rgba(0, 0, 0, .2) 2px 2px 5px':style.filter='progid:DXImageTransform.Microsoft.alpha(opacity\x3d'+this.opacity+') progid:DXImageTransform.Microsoft.Blur(pixelradius\x3d'+this.offset+')';shim&&shim.realign()}});
Ext.cmd.derive('Ext.dom.Shim',Ext.dom.Underlay,{cls:'x-shim',constructor:function(config){Ext.dom.Underlay.prototype.constructor.call(this,config);this.elementConfig={tag:'iframe',cls:this.cls,role:'presentation',frameBorder:'0',src:Ext.SSL_SECURE_URL,tabindex:'-1'}},getInsertionTarget:function(){var shadow=this.shadow;return shadow&&shadow.el||this.target}},1,0,0,0,0,0,[Ext.dom,'Shim'],0);
Ext.cmd.derive('Ext.dom.ElementEvent',Ext.util.Event,{addListener:function(fn,scope,options,caller,manager){var name=this.name,isDirectEvent=Ext.event.publisher.Dom.instance.directEvents[name];options=options||{};!1===options.delegated||isDirectEvent?(isDirectEvent&&options.delegate&&(options.capture=!0),name=options.capture?this.directCaptures||(this.directCaptures=new Ext.util.Event(this.observable,name)):this.directs||(this.directs=new Ext.util.Event(this.observable,name)),fn=name.addListener(fn,
scope,options,caller,manager)):options.capture?(name=this.captures||(this.captures=new Ext.util.Event(this.observable,name)),fn=name.addListener(fn,scope,options,caller,manager)):fn=Ext.util.Event.prototype.addListener.call(this,fn,scope,options,caller,manager);return fn},removeListener:function(fn,scope){var captures=this.captures,directs=this.directs,directCaptures=this.directCaptures,removed=!1,index=this.findListener(fn,scope);-1!==index?removed=Ext.util.Event.prototype.removeListener.call(this,
fn,scope,index):(directs&&(index=directs.findListener(fn,scope)),-1!==index?removed=directs.removeListener(fn,scope,index):(captures&&(index=captures.findListener(fn,scope)),-1!==index?removed=captures.removeListener(fn,scope,index):directCaptures&&(index=directCaptures.findListener(fn,scope),-1!==index&&(removed=directCaptures.removeListener(fn,scope,index)))));return removed},clearListeners:function(){var directCaptures=this.directCaptures,directs=this.directs,captures=this.captures;directCaptures&&
directCaptures.clearListeners();directs&&directs.clearListeners();captures&&captures.clearListeners();Ext.util.Event.prototype.clearListeners.call(this)},suspend:function(){var directCaptures=this.directCaptures,directs=this.directs,captures=this.captures;directCaptures&&directCaptures.suspend();directs&&directs.suspend();captures&&captures.suspend();Ext.util.Event.prototype.suspend.call(this)},resume:function(){var directCaptures=this.directCaptures,directs=this.directs,captures=this.captures;directCaptures&&
directCaptures.resume();directs&&directs.resume();captures&&captures.resume();Ext.util.Event.prototype.resume.call(this)}},0,0,0,0,0,0,[Ext.dom,'ElementEvent'],0);
Ext.cmd.derive('Ext.event.publisher.Publisher',Ext.Base,{isEventPublisher:!0,$vetoClearingPrototypeOnDestroy:!0,handledEvents:[],statics:{publishers:{},publishersByEvent:{}},constructor:function(){var type=this.type;this.handles={};this.registerEvents();Ext.event.publisher.Publisher.publishers[type]=this},registerEvents:function(events){var publishersByEvent=Ext.event.publisher.Publisher.publishersByEvent;events=events||this.handledEvents;var ln=events.length,i;for(i=0;i<ln;i++){var eventName=events[i];
this.handles[eventName]=1;publishersByEvent[eventName]=this}},fire:function(element,eventName,args){element.hasListeners[eventName]&&(element=element.events[eventName])&&element.fire.apply(element,args)}},1,0,0,0,0,0,[Ext.event.publisher,'Publisher'],0);
Ext.cmd.derive('Ext.util.Offset',Ext.Base,{statics:{fromObject:function(obj){return obj instanceof this?obj:'number'===typeof obj?new this(obj,obj):obj.length?new this(obj[0],obj[1]):new this(obj.x,obj.y)}},constructor:function(x,y){this.x=null==x||isNaN(x)?0:x;this.y=null==y||isNaN(y)?0:y;return this},copy:function(){return new Ext.util.Offset(this.x,this.y)},copyFrom:function(p){this.x=p.x;this.y=p.y},toString:function(){return'Offset['+this.x+','+this.y+']'},equals:function(offset){return this.x===
offset.x&&this.y===offset.y},add:function(offset){this.x+=offset.x;this.y+=offset.y},round:function(to){isNaN(to)?(this.x=Math.round(this.x),this.y=Math.round(this.y)):(to=Math.pow(10,to),this.x=Math.round(this.x*to)/to,this.y=Math.round(this.y*to)/to)},isZero:function(){return 0===this.x&&0===this.y}},3,0,0,0,0,0,[Ext.util,'Offset'],0);
Ext.cmd.derive('Ext.util.Region',Ext.Base,function(){var ExtUtil=Ext.util,constrainRe=/([^\?!]*)(!|\?)?$/,alignRe=/^(?:(?:([trbl])(\d+))|(tl|t|tc|tr|l|c|r|bl|b|bc|br))(?:-(?:(?:([trbl])(\d+))|(tl|t|tc|tr|l|c|r|bl|b|bc|br)))?$/i,LTROffsetFactors={l:0,r:100,t:0,b:100,c:50},RTLOffsetFactors={l:100,r:0,t:0,b:100,c:50},relativePositions={b:0,l:1,t:2,r:3},alignMap={'tl-tr':'l0-r0','tl-r':'l0-r50','bl-r':'l100-r50','bl-br':'l100-r100','tr-tl':'r0-l0','tr-l':'r0-l50','br-l':'r100-l50','br-bl':'r100-l100'},
rtlAlignMap={'tl-tr':'r0-l0','tl-r':'r0-l50','bl-r':'r100-l50','bl-br':'r100-l100','tr-tl':'l0-r0','tr-l':'l0-r50','br-l':'l100-r50','br-bl':'l100-r100'},adjustParams=[],zeroOffset=new ExtUtil.Offset(0,0),parseRegion=function(box){var Region=ExtUtil.Region,type=typeof box;if(null==box)return Region.EMPTY;if(box.isRegion)return box;if(box.isElement||1===box.nodeType)return this.getRegion(box);if('string'===type){box=box.split(' ');switch(box.length){case 1:box[1]=box[2]=box[3]=box[0];break;case 2:box[2]=
box[0];box[3]=box[1];break;case 3:box[3]=box[1]}var top=parseInt(box[0],10)||0;var right=parseInt(box[1],10)||0;var bottom=parseInt(box[2],10)||0;var left=parseInt(box[3],10)||0}else'number'===type?top=right=bottom=left=box:'number'===typeof box.x&&(top=box.y,left=box.x,'number'===typeof box.right?(right=box.right,bottom=box.bottom):(right=left+box.width,bottom=top+box.height));return new Region(top,right,bottom,left)},magnitude=[-1,1,1,-1],calculateAnchorPosition=function(target,result,relativePosition,
anchorSize,inside){var minOverlap=Math.ceil(anchorSize.x/2)+2,isBefore;if(!inside||inside.intersect(target)){if(null!=relativePosition){if(relativePosition&1){var anchorPos=(new ExtUtil.Region(0,0,0,0)).setWidth(anchorSize.y).setHeight(anchorSize.x);var x=(isBefore=3===relativePosition)?result.right:result.left;var overlapLine=new ExtUtil.Region(Math.max(result.top,target.top),x,Math.min(result.bottom,target.bottom),x);if(target.getHeight()>minOverlap){var overlapLength=overlapLine.getHeight();if(overlapLength<
target.width&&overlapLength<anchorSize.x+4){if(overlapLength<minOverlap){if(overlapLine.getAnchorPoint_c()[1]>target.getAnchorPoint_c()[1])var y=target.bottom-minOverlap;else{var beforeStart=!0;y=target.top+minOverlap-result.getHeight()}inside&&(y=Math.min(Math.max(y,inside.top),inside.bottom-result.getHeight()));result.setPosition(result.x,y);overlapLine=new ExtUtil.Region(Math.max(result.top,target.top),x,Math.min(result.bottom,target.bottom),x);overlapLength=overlapLine.getHeight();if(overlapLength<
minOverlap)return;beforeStart&&overlapLine.setPosition(x,target.y-anchorSize.x/2-2)}overlapLine.setHeight(Math.max(overlapLength,anchorSize.x+4));if(inside&&!inside.contains(overlapLine))return}}result.anchor=anchorPos.alignTo({target:overlapLine,align:isBefore?'l-r':'r-l',overlap:!0});result.anchor.position=isBefore?'right':'left'}else{anchorPos=(new ExtUtil.Region(0,0,0,0)).setWidth(anchorSize.x).setHeight(anchorSize.y);y=(isBefore=0===relativePosition)?result.bottom:result.top;overlapLine=new ExtUtil.Region(y,
Math.min(result.right,target.right),y,Math.max(result.left,target.left));if(target.getWidth()>minOverlap&&(overlapLength=overlapLine.getWidth(),overlapLength<target.height&&overlapLength<anchorSize.x+4)){if(overlapLength<minOverlap){overlapLine.getAnchorPoint_c()[0]>target.getAnchorPoint_c()[0]?x=target.right-minOverlap:(beforeStart=!0,x=target.left+minOverlap-result.getWidth());inside&&(x=Math.min(Math.max(x,inside.left),inside.right-result.getWidth()));result.setPosition(x,result.y);overlapLine=
new ExtUtil.Region(y,Math.min(result.right,target.right),y,Math.max(result.left,target.left));overlapLength=overlapLine.getWidth();if(overlapLength<minOverlap)return;beforeStart&&overlapLine.setPosition(target.x-anchorSize.x/2-2,y)}overlapLine.setWidth(Math.max(overlapLength,anchorSize.x+4));if(inside&&!inside.contains(overlapLine))return}result.anchor=anchorPos.alignTo({target:overlapLine,align:isBefore?'t-b':'b-t',overlap:!0});result.anchor.position=isBefore?'bottom':'top'}result.anchor.align=relativePosition}return result}},
checkMinHeight=function(minHeight,result,target,inside){minHeight&&inside&&(result.top>=target.bottom&&result.bottom>inside.bottom?(result.setHeight(Math.max(result.getHeight()+inside.bottom-result.bottom,minHeight)),result.constrainHeight=!0):result.bottom<=target.top&&result.top<inside.top?(minHeight=Math.max(result.getHeight()+result.top-inside.top,minHeight),result.adjust(result.getHeight()-minHeight),result.constrainHeight=!0):result.getHeight()>inside.getHeight()&&(result.setHeight(Math.max(minHeight,
inside.getHeight())),result.setPosition(result.x,0),result.constrainHeight=!0))},checkMinWidth=function(minWidth,result,target,inside){minWidth&&inside&&(result.left>=target.right&&result.right>inside.right?(result.setWidth(Math.max(result.getWidth()+inside.right-result.right,minWidth)),result.constrainWidth=!0):result.right<=target.left&&result.left<inside.left?(minWidth=Math.max(result.getWidth()+result.left-inside.left,minWidth),result.adjust(0,0,0,result.getWidth()-minWidth),result.constrainWidth=
!0):result.getWidth()>inside.getWidth()&&(result.setWidth(Math.max(minWidth,inside.getWidth())),result.setPosition(0,result.y),result.constrainWidth=!0))};return{isRegion:!0,statics:{getRegion:function(el){return Ext.fly(el).getRegion()},from:function(o){return new this(o.top,o.right,o.bottom,o.left)},getAlignInfo:function(align,rtl){if('object'===typeof align)return align;align=align?0>align.indexOf('-')?'tl-'+align:align:'tl-bl';var constrain=constrainRe.exec(align);align=constrain[1];align=(rtl?
rtlAlignMap:alignMap)[align]||align;rtl=rtl?RTLOffsetFactors:LTROffsetFactors;align=alignRe.exec(align);constrain={myEdge:align[1],myOffset:align[2],otherEdge:align[4],otherOffset:align[5],constrain:constrain[2]};align[3]&&(constrain.myEdge=align[3][0],constrain.myOffset=rtl[align[3][1]],null==constrain.myOffset&&(constrain.myOffset=50));align[6]&&(constrain.otherEdge=align[6][0],constrain.otherOffset=rtl[align[6][1]],null==constrain.otherOffset&&(constrain.otherOffset=50));constrain.position=relativePositions[constrain.myEdge];
return constrain}},constructor:function(top,right,bottom,left){this.y=this.top=this[1]=top;this.right=right;this.bottom=bottom;this.x=this.left=this[0]=left;this.height=this.bottom-this.top;this.width=this.right-this.left},setPosition:function(x,y){1===arguments.length&&(y=x[1],x=x[0]);return this.translateBy(x-this.x,y-this.y)},contains:function(region){return region.x>=this.x&&(region.right||region.x)<=this.right&&region.y>=this.y&&(region.bottom||region.y)<=this.bottom},intersect:function(region){var t=
Math.max(this.y,region.y),r=Math.min(this.right,region.right),b=Math.min(this.bottom,region.bottom);region=Math.max(this.x,region.x);return b>t&&r>region?new this.self(t,r,b,region):!1},union:function(region){return new this.self(Math.min(this.y,region.y),Math.max(this.right,region.right),Math.max(this.bottom,region.bottom),Math.min(this.x,region.x))},constrainTo:function(targetRegion){var constrain=Ext.Number.constrain;this.top=this.y=constrain(this.top,targetRegion.y,targetRegion.bottom);this.bottom=
constrain(this.bottom,targetRegion.y,targetRegion.bottom);this.left=this.x=constrain(this.left,targetRegion.x,targetRegion.right);this.right=constrain(this.right,targetRegion.x,targetRegion.right);return this},adjust:function(top,right,bottom,left){this.top=this.y+=top||0;this.left=this.x+=left||0;this.right+=right||0;this.bottom+=bottom||0;return this},getOutOfBoundOffset:function(axis,p){return Ext.isObject(axis)?(p=axis,axis=new ExtUtil.Offset,axis.x=this.getOutOfBoundOffsetX(p.x),axis.y=this.getOutOfBoundOffsetY(p.y),
axis):'x'===axis?this.getOutOfBoundOffsetX(p):this.getOutOfBoundOffsetY(p)},getOutOfBoundOffsetX:function(p){return p<=this.x?this.x-p:p>=this.right?this.right-p:0},getOutOfBoundOffsetY:function(p){return p<=this.y?this.y-p:p>=this.bottom?this.bottom-p:0},isOutOfBound:function(axis,p){return Ext.isObject(axis)?(p=axis,this.isOutOfBoundX(p.x)||this.isOutOfBoundY(p.y)):'x'===axis?this.isOutOfBoundX(p):this.isOutOfBoundY(p)},isOutOfBoundX:function(p){return p<this.x||p>this.right},isOutOfBoundY:function(p){return p<
this.y||p>this.bottom},restrict:function(axis,p,factor){return Ext.isObject(axis)?(factor=p,p=axis,axis=p.copy?p.copy():{x:p.x,y:p.y},axis.x=this.restrictX(p.x,factor),axis.y=this.restrictY(p.y,factor),axis):'x'===axis?this.restrictX(p,factor):this.restrictY(p,factor)},restrictX:function(p,factor){factor||(factor=1);p<=this.x?p-=(p-this.x)*factor:p>=this.right&&(p-=(p-this.right)*factor);return p},restrictY:function(p,factor){factor||(factor=1);p<=this.y?p-=(p-this.y)*factor:p>=this.bottom&&(p-=(p-
this.bottom)*factor);return p},alignTo:function(options){var Region=this.self,Offset=ExtUtil.Offset,target=parseRegion(options.target),rtl=options.rtl,overlap=options.overlap,align=options.align,anchorSize=options.anchorSize,offset=options.offset,inside=options.inside,position=options.position,allowXTranslate=options.allowXTranslate,allowYTranslate=options.allowYTranslate;offset&&(offset=Offset.fromObject(offset));anchorSize&&(anchorSize=Offset.fromObject(anchorSize));if(position)2===position.length&&
(position=new ExtUtil.Point(position[0],position[1])),Region=(new Region).copyFrom(this).setPosition(position.x,position.y);else{align=this.getAlignInfo(align,rtl);inside&&(target.x>=inside.right?(target.setPosition(inside.right-1,target.y),3!==align.position&&(align=this.getAlignInfo('r-l',rtl))):target.right<inside.x&&(target.setPosition(inside.x-target.getWidth()+1,target.y),1!==align.position&&(align=this.getAlignInfo('l-r',rtl))),target.y>=inside.bottom?(target.setPosition(target.x,inside.bottom-
1),0!==align.position&&(align=this.getAlignInfo('b-t',rtl))):target.bottom<inside.y&&(target.setPosition(target.x,inside.y-target.getHeight()+1),2!==align.position&&(align=this.getAlignInfo('t-b',rtl))));if(anchorSize){var targetPlusAnchorOffset=target;overlap=anchorSize;Offset=align.position;null!=Offset&&overlap&&(adjustParams[0]=adjustParams[1]=adjustParams[2]=adjustParams[3]=0,adjustParams[Offset]=overlap.y*magnitude[Offset],targetPlusAnchorOffset=ExtUtil.Region.from(targetPlusAnchorOffset),targetPlusAnchorOffset.adjust.apply(targetPlusAnchorOffset,
adjustParams))}else targetPlusAnchorOffset=target;Region=Region.from(this).translateBy(this.getAlignToVector(targetPlusAnchorOffset,align));overlap=!!Region.intersect(targetPlusAnchorOffset);!offset||!overlap&&anchorSize||Region.translateBy(offset);anchorSize&&calculateAnchorPosition(target,Region,align.position,anchorSize,inside)}if(inside){if(Region.left<inside.left){Region.translateBy(inside.left-Region.left,0);var wasConstrained=!0}Region.right>inside.right&&Region.left>inside.left&&(Region.translateBy(inside.right-
Region.right,0),wasConstrained=!0);Region.top<inside.top&&(Region.translateBy(0,inside.top-Region.top),wasConstrained=!0);Region.bottom>inside.bottom&&Region.top>inside.top&&(Region.translateBy(0,inside.bottom-Region.bottom),wasConstrained=!0);wasConstrained&&!overlap&&(Region.anchor=null,options.axisLock&&(align.position&1?allowYTranslate=!1:allowXTranslate=!1),position?Region.contains(position)&&position.exclude(Region,{inside:inside,centerOnSideChange:!1}):(Region.intersect(targetPlusAnchorOffset)?
align.position=target.exclude(Region,{defaultPosition:align.position,inside:inside,minHeight:options.minHeight,minWidth:options.minWidth,allowX:allowXTranslate,allowY:allowYTranslate,offset:offset,anchorHeight:anchorSize?anchorSize.y:0,centerOnSideChange:!!anchorSize}):options.minWidth&&Region.getWidth()>inside.getWidth()?(Region.setPosition(0,Region.y),Region.setWidth(Math.max(inside.getWidth(),options.minWidth)),Region.constrainWidth=!0):options.minHeight&&Region.getHeight()>inside.getHeight()&&
(Region.setPosition(Region.x,0),Region.setHeight(Math.max(inside.getHeight(),options.minHeight)),Region.constrainHeight=!0),Region.align=align,anchorSize&&calculateAnchorPosition(target,Region,align.position,anchorSize,inside)))}return Region},exclude:function(other,options){options=options||{};var inside=options.inside,defaultPosition=options.defaultPosition,centerOnSideChange=options.centerOnSideChange,minHeight=options.minHeight,minWidth=options.minWidth,allowX=!1!==options.allowX,allowY=!1!==
options.allowY,anchorHeight=options.anchorHeight,offset=options.offset,translations=[],t,sizeConstrainedSolution,intersection;offset||(offset=zeroOffset);allowY?(translations.push([0,t=this.top-other.bottom-anchorHeight+offset.y,'b-t',0,Math.abs(t)]),translations.push([0,t=this.bottom-other.top+anchorHeight+offset.y,'t-b',2,Math.abs(t)])):centerOnSideChange=!1;allowX?(translations.push([t=this.left-other.right-anchorHeight+offset.x,0,'r-l',3,Math.abs(t)]),translations.push([t=this.right-other.left+
anchorHeight+offset.x,0,'l-r',1,Math.abs(t)])):centerOnSideChange=!1;Ext.Array.sort(translations,function(l,r){var result=l[4]-r[4];if(!result){if(l[3]===defaultPosition)return-1;if(r[3]===defaultPosition)return 1}return result});if(inside){for(allowY=0;allowY<translations.length;allowY++){t=translations[allowY];allowX=ExtUtil.Region.from(other);allowX.translateBy.apply(allowX,t);if(inside.contains(allowX)){other.copyFrom(allowX);var result$jscomp$0={align:t[2],position:t[3],distance:t[4]};break}minHeight&&
(checkMinHeight(minHeight,allowX,this,inside),inside.contains(allowX)&&(!sizeConstrainedSolution||allowX.getArea()>sizeConstrainedSolution.region.getArea())&&(sizeConstrainedSolution={region:allowX,align:t[2],position:t[3],distance:t[4]}));minWidth&&(checkMinWidth(minWidth,allowX,this,inside),inside.contains(allowX)&&(!sizeConstrainedSolution||allowX.getArea()>sizeConstrainedSolution.region.getArea())&&(sizeConstrainedSolution={region:allowX,align:t[2],position:t[3],distance:t[4]}));if(intersection=
inside.intersect(allowX))if(intersection=intersection.getArea(),!leastBadSolution||intersection&&leastBadSolution.area<intersection)var leastBadSolution={region:allowX,align:t[2],position:t[3],distance:t[4],area:intersection}}result$jscomp$0||(sizeConstrainedSolution?(other.copyFrom(sizeConstrainedSolution.region),result$jscomp$0=sizeConstrainedSolution,other.constrainWidth=sizeConstrainedSolution.region.constrainWidth,other.constrainHeight=sizeConstrainedSolution.region.constrainHeight):leastBadSolution&&
(other.copyFrom(leastBadSolution.region),result$jscomp$0=leastBadSolution));if(result$jscomp$0)return(result$jscomp$0.position&1)!==(defaultPosition&1)&&result$jscomp$0.distance&&centerOnSideChange&&(t=other.alignTo({align:result$jscomp$0.align,target:this,anchorSize:anchorHeight,offset:offset,axisLock:!0,inside:inside,minHeight:options.minHeight,minWidth:options.minWidth}),inside.contains(t)&&other.setPosition(t.x,t.y)),result$jscomp$0.position}else return other.translateBy.apply(other,translations[0]),
translations[0][3];return defaultPosition},getAlignToXY:function(target,align,rtl){target=this.getAlignToVector(target,align,rtl);return[this.x+target[0],this.y+target[1]]},getAnchorPoint:function(align,rtl){align='string'===typeof align?this.getAlignInfo(align+'-tl',rtl):align;return this['getAnchorPoint_'+align.myEdge](align.myOffset)},getAlignToVector:function(target,align,rtl){align='string'===typeof align?this.getAlignInfo(align,rtl):align;rtl=this['getAnchorPoint_'+align.myEdge](align.myOffset);
target=target['getAnchorPoint_'+align.otherEdge](align.otherOffset);return[target[0]-rtl[0],target[1]-rtl[1]]},getAnchorPoint_t:function(offset){return[this.x+Math.round(this.getWidth()*(offset/100)),this.y]},getAnchorPoint_b:function(offset){return[this.x+Math.round(this.getWidth()*(offset/100)),this.bottom]},getAnchorPoint_l:function(offset){return[this.x,this.y+Math.round(this.getHeight()*(offset/100))]},getAnchorPoint_r:function(offset){return[this.right,this.y+Math.round(this.getHeight()*(offset/
100))]},getAnchorPoint_c:function(){return[this.x+Math.round(this.getWidth()/2),this.y+Math.round(this.getHeight()/2)]},getHeight:function(){return this.bottom-this.y},getWidth:function(){return this.right-this.x},getArea:function(){return this.getHeight()*this.getWidth()},setHeight:function(h){this.bottom=this.top+h;return this},setWidth:function(w){this.right=this.left+w;return this},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(p){this.top=this.y=this[1]=p.y;this.right=p.right;this.bottom=p.bottom;this.left=this.x=this[0]=p.x;return this},toString:function(){return'Region['+this.top+','+this.right+','+this.bottom+','+this.left+']'},translateBy:function(x,y){x.length?(y=x[1],x=x[0]):1===arguments.length&&(y=x.y,x=x.x);this.top=this.y+=y;this.right+=x;this.bottom+=y;this.left=this.x+=x;return this},round:function(){this.top=this.y=Math.round(this.y);this.right=Math.round(this.right);
this.bottom=Math.round(this.bottom);this.left=this.x=Math.round(this.x);return this},equals:function(region){return this.top===region.top&&this.right===region.right&&this.bottom===region.bottom&&this.left===region.left},getOffsetsTo:function(offsetsTo){return{x:this.x-offsetsTo.x,y:this.y-offsetsTo.y}}}},3,0,0,0,0,0,[Ext.util,'Region'],function(Region){Region.prototype.getAlignInfo=Region.getAlignInfo;Region.EMPTY=new Region(0,0,0,0)});
Ext.cmd.derive('Ext.util.Point',Ext.util.Region,{isPoint:!0,radianToDegreeConstant:180/Math.PI,origin:{x:0,y:0},statics:{fromEvent:function(e){var changedTouches=e.changedTouches;return this.fromTouch(changedTouches&&0<changedTouches.length?changedTouches[0]:e)},fromTouch:function(touch){return new this(touch.pageX,touch.pageY)},from:function(object){return object?object instanceof this?object:new this(object.x,object.y):new this(0,0)}},constructor:function(x,y){null==x&&(x=0);null==y&&(y=0);Ext.util.Region.prototype.constructor.call(this,
y,x,y,x)},clone:function(){return new this.self(this.x,this.y)},copy:function(){return this.clone.apply(this,arguments)},copyFrom:function(point){this.x=point.x;this.y=point.y;return this},toString:function(){return'Point['+this.x+','+this.y+']'},equals:function(point){return this.x===point.x&&this.y===point.y},isCloseTo:function(point,threshold){if('number'==typeof threshold)return this.getDistanceTo(point)<=threshold;var x=point.x;point=point.y;var thresholdX=threshold.x;threshold=threshold.y;return this.x<=
x+thresholdX&&this.x>=x-thresholdX&&this.y<=point+threshold&&this.y>=point-threshold},isWithin:function(){return this.isCloseTo.apply(this,arguments)},isContainedBy:function(region){region instanceof Ext.util.Region||(region=Ext.get(region.el||region).getRegion());return region.contains(this)},roundedEquals:function(point){point&&'object'===typeof point||(point=this.origin);return Math.round(this.x)===Math.round(point.x)&&Math.round(this.y)===Math.round(point.y)},getDistanceTo:function(point){point&&
'object'===typeof point||(point=this.origin);var deltaX=this.x-point.x;point=this.y-point.y;return Math.sqrt(deltaX*deltaX+point*point)},getAngleTo:function(point){point&&'object'===typeof point||(point=this.origin);return Math.atan2(this.y-point.y,this.x-point.x)*this.radianToDegreeConstant}},3,0,0,0,0,0,[Ext.util,'Point'],function(){this.prototype.translate=this.prototype.translateBy});
Ext.cmd.derive('Ext.event.Event',Ext.Base,{alternateClassName:'Ext.EventObjectImpl',stopped:!1,claimed:!1,defaultPrevented:!1,isEvent:!0,statics:{resolveTextNode:function(node){return node&&3===node.nodeType?node.parentNode:node},pointerEvents:{pointerdown:1,pointermove:1,pointerup:1,pointercancel:1,pointerover:1,pointerout:1,pointerenter:1,pointerleave:1,MSPointerDown:1,MSPointerMove:1,MSPointerUp:1,MSPointerOver:1,MSPointerOut:1,MSPointerCancel:1,MSPointerEnter:1,MSPointerLeave:1},mouseEvents:{mousedown:1,
mousemove:1,mouseup:1,mouseover:1,mouseout:1,mouseenter:1,mouseleave:1},clickEvents:{click:1,dblclick:1},touchEvents:{touchstart:1,touchmove:1,touchend:1,touchcancel:1},focusEvents:{focus:1,blur:1,focusin:1,focusout:1,focusenter:1,focusleave:1},pointerTypeMap:{2:'touch',3:'pen',4:'mouse',touch:'touch',pen:'pen',mouse:'mouse'},keyFlags:{CTRL:'ctrlKey',CONTROL:'ctrlKey',ALT:'altKey',SHIFT:'shiftKey',CMD:'metaKey',COMMAND:'metaKey',CMDORCTRL:Ext.isMac?'metaKey':'ctrlKey',COMMANDORCONTROL:Ext.isMac?'metaKey':
'ctrlKey',META:'metaKey'},modifierGlyphs:{ctrlKey:'⌃',altKey:'⌥',metaKey:Ext.isMac?'⌘':'⊞',shiftKey:'⇧'},specialKeyGlyphs:{BACKSPACE:'⌫',TAB:'⇥',ENTER:'⏎',RETURN:'⏎',SPACE:'␣',PAGE_UP:'⇞',PAGE_DOWN:'⇟',END:'⇲',HOME:'⌂',LEFT:'←',UP:'↑',RIGHT:'→',DOWN:'↓',PRINT_SCREEN:'⎙',INSERT:'⎀',DELETE:'⌦',CONTEXT_MENU:'☰'},getKeyId:function(keyName){keyName=keyName.toUpperCase();keyName=keyName.split('+');var numModifiers=keyName.length-1,rawKey=keyName[numModifiers],result=[],i;for(i=0;i<numModifiers;i++){var eventFlag=
this.keyFlags[keyName[i]];result[eventFlag]=!0}result.ctrlKey&&result.push(this.modifierGlyphs.ctrlKey);result.altKey&&result.push(this.modifierGlyphs.altKey);result.shiftKey&&result.push(this.modifierGlyphs.shiftKey);result.metaKey&&result.push(this.modifierGlyphs.metaKey);result.push(this.specialKeyGlyphs[rawKey]||rawKey);return result.join('')}},constructor:function(event){var self=this.self,resolveTextNode=this.self.resolveTextNode,changedTouches=event.changedTouches,coordinateOwner=changedTouches?
changedTouches[0]:event;changedTouches=event.type;var pointerType;this.timeStamp=this.time=Ext.now();this.pageX=coordinateOwner.pageX;this.pageY=coordinateOwner.pageY;this.clientX=coordinateOwner.clientX;this.clientY=coordinateOwner.clientY;this.target=this.delegatedTarget=resolveTextNode(event.target);if(coordinateOwner=event.relatedTarget)if(Ext.isGecko&&'dragenter'===changedTouches||'dragleave'===changedTouches)try{this.relatedTarget=resolveTextNode(coordinateOwner)}catch(e){this.relatedTarget=
null}else this.relatedTarget=resolveTextNode(coordinateOwner);this.browserEvent=this.event=event;this.type=changedTouches;this.button=event.button||0;this.shiftKey=event.shiftKey;this.ctrlKey=event.ctrlKey||event.metaKey||!1;this.altKey=event.altKey;this.charCode=event.charCode;this.keyCode=event.keyCode;this.buttons=event.buttons;0===this.button&&0===this.buttons&&(this.buttons=1);self.focusEvents[changedTouches]?void 0!==self.forwardTab&&(this.forwardTab=self.forwardTab):'keydown'!==changedTouches&&
delete self.forwardTab;self.mouseEvents[changedTouches]?pointerType='mouse':self.clickEvents[changedTouches]?pointerType=self.pointerTypeMap[event.pointerType]||'mouse':self.pointerEvents[changedTouches]?pointerType=self.pointerTypeMap[event.pointerType]:self.touchEvents[changedTouches]&&(pointerType='touch');pointerType&&(this.pointerType=pointerType);this.isMultitouch=!1===event.isPrimary||event.touches&&1<event.touches.length},chain:function(props){var e=Ext.Object.chain(this);e.parentEvent=this;
return Ext.apply(e,props)},correctWheelDelta:function(delta){var ret=Math.round(delta/this.WHEEL_SCALE);!ret&&delta&&(ret=0>delta?-1:1);return ret},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.keyCode||this.charCode},getKeyName:function(){return this.keyCodes[this.keyCode]},getPoint:function(){var point=this.point;point||(point=this.getXY(),point=this.point=new Ext.util.Point(point[0],point[1]));return point},getRelatedTarget:function(selector,maxDepth,
returnEl){var relatedTarget=this.relatedTarget,target=null;relatedTarget&&relatedTarget.nodeType&&(target=selector?Ext.fly(relatedTarget).findParent(selector,maxDepth,returnEl):returnEl?Ext.get(relatedTarget):relatedTarget);return target},getTarget:function(selector,maxDepth,returnEl){return selector?Ext.fly(this.target).findParent(selector,maxDepth,returnEl):returnEl?Ext.get(this.target):this.target},getTime:function(){return this.time},getWheelDelta:function(){return this.getWheelDeltas().y},getWheelDeltas:function(){var event=
this.browserEvent,dx=0,dy=0;Ext.isDefined(event.wheelDeltaX)?(dx=event.wheelDeltaX,dy=event.wheelDeltaY):event.wheelDelta?dy=event.wheelDelta:'deltaX'in event?(dx=event.deltaX,dy=-event.deltaY):event.detail&&(dy=-event.detail,100<dy?dy=3:-100>dy&&(dy=-3),Ext.isDefined(event.axis)&&event.axis===event.HORIZONTAL_AXIS&&(dx=dy,dy=0));return{x:this.correctWheelDelta(dx),y:this.correctWheelDelta(dy)}},getX:function(){return this.getXY()[0]},getXY:function(){var xy=this.xy;if(!xy){xy=this.xy=[this.pageX,
this.pageY];var x=xy[0];if(!x&&0!==x){x=this.browserEvent;var doc=document;var docEl=doc.documentElement;doc=doc.body;xy[0]=x.clientX+(docEl&&docEl.scrollLeft||doc&&doc.scrollLeft||0)-(docEl&&docEl.clientLeft||doc&&doc.clientLeft||0);xy[1]=x.clientY+(docEl&&docEl.scrollTop||doc&&doc.scrollTop||0)-(docEl&&docEl.clientTop||doc&&doc.clientTop||0)}}return xy},getY:function(){return this.getXY()[1]},hasModifier:function(){return!!(this.ctrlKey||this.altKey||this.shiftKey||this.metaKey)},isNavKeyPress:function(scrollableOnly){var k=
this.keyCode;return('keypress'!==this.type||Ext.isGecko)&&33<=k&&40>=k||!scrollableOnly&&(k===this.RETURN||k===this.TAB||k===this.ESC)},isSpecialKey:function(){var k=this.keyCode,isGecko=Ext.isGecko,isKeyPress='keypress'===this.type;return isGecko&&isKeyPress&&0===this.charCode||this.isNavKeyPress()||k===this.BACKSPACE||k===this.ENTER||16<=k&&20>=k||(!isKeyPress||isGecko)&&44<=k&&46>=k},makeUnpreventable:function(){this.browserEvent.preventDefault=Ext.emptyFn},preventDefault:function(){var parentEvent=
this.parentEvent;this.defaultPrevented=!0;parentEvent&&(parentEvent.defaultPrevented=!0);this.browserEvent.preventDefault();return this},setCurrentTarget:function(target){this.currentTarget=this.delegatedTarget=target},stopEvent:function(){return this.preventDefault().stopPropagation()},stopPropagation:function(){var browserEvent=this.browserEvent,parentEvent=this.parentEvent;this.stopped=!0;parentEvent&&!this.isGesture&&(parentEvent.stopped=!0);if(!browserEvent.stopPropagation)return browserEvent.cancelBubble=
!0,this;browserEvent.stopPropagation();return this},claimGesture:function(){var parentEvent=this.parentEvent;this.claimed=!0;parentEvent&&!this.hasOwnProperty('isGesture')?parentEvent.claimGesture():this.preventDefault();return this},within:function(el,related,allowEl){var t;el&&(t=related?this.getRelatedTarget():this.getTarget());return t?Ext.fly(el).contains(t)||!(!allowEl||t!==Ext.getDom(el)):!1},deprecated:{'4.0':{methods:{getPageX:'getX',getPageY:'getY'}}}},1,0,0,0,0,0,[Ext.event,'Event',Ext,
'EventObjectImpl'],function(Event){var prototype=Event.prototype;if(Ext.isGecko)var scale=3;else Ext.isMac?(scale=Ext.isSafari&&532<=Ext.webKitVersion?120:12,scale*=3):scale=120;scale={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:scale};var keyCodes={},keyName;Ext.apply(Event,scale);Ext.apply(prototype,
scale);delete scale.WHEEL_SCALE;delete scale.RETURN;for(keyName in scale)Event=scale[keyName],keyCodes[Event]=keyName;prototype.keyCodes=keyCodes;prototype.getTrueXY=prototype.getXY});
Ext.define('Ext.overrides.event.Event',{override:'Ext.event.Event',mousedownEvents:{mousedown:1,pointerdown:1,touchstart:1},injectEvent:function(){function createMouseEventDispatcher(type,detail){var cancelable='mousemove'!==type;return function(targetEl,srcEvent){var xy=srcEvent.getXY();srcEvent=API.createMouseEvent(targetEl.ownerDocument,type,!0,cancelable,detail,xy[0],xy[1],srcEvent.ctrlKey,srcEvent.altKey,srcEvent.shiftKey,srcEvent.metaKey,srcEvent.button,srcEvent.relatedTarget);API.fireEvent(targetEl,
type,srcEvent)}}function cannotInject(target,srcEvent){}var dispatchers={};if(!Ext.isIE9m&&document.createEvent)var API={createHtmlEvent:function(doc,type,bubbles,cancelable){doc=doc.createEvent('HTMLEvents');doc.initEvent(type,bubbles,cancelable);return doc},createMouseEvent:function(doc,type,bubbles,cancelable,detail,clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget){var event=doc.createEvent('MouseEvents'),view=doc.defaultView||window;event.initMouseEvent?event.initMouseEvent(type,
bubbles,cancelable,view,detail,clientX,clientY,clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget):(event=doc.createEvent('UIEvents'),event.initEvent(type,bubbles,cancelable),event.view=view,event.detail=detail,event.screenX=clientX,event.screenY=clientY,event.clientX=clientX,event.clientY=clientY,event.ctrlKey=ctrlKey,event.altKey=altKey,event.metaKey=metaKey,event.shiftKey=shiftKey,event.button=button,event.relatedTarget=relatedTarget);return event},createUIEvent:function(doc,
type,bubbles,cancelable,detail){var event=doc.createEvent('UIEvents');event.initUIEvent(type,bubbles,cancelable,doc.defaultView||window,detail);return event},fireEvent:function(target,type,event){target.dispatchEvent(event)}};else if(document.createEventObject){var crazyIEButtons={0:1,1:4,2:2};API={createHtmlEvent:function(doc,type,bubbles,cancelable){doc=doc.createEventObject();doc.bubbles=bubbles;doc.cancelable=cancelable;return doc},createMouseEvent:function(doc,type,bubbles,cancelable,detail,
clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget){doc=doc.createEventObject();doc.bubbles=bubbles;doc.cancelable=cancelable;doc.detail=detail;doc.screenX=clientX;doc.screenY=clientY;doc.clientX=clientX;doc.clientY=clientY;doc.ctrlKey=ctrlKey;doc.altKey=altKey;doc.shiftKey=shiftKey;doc.metaKey=metaKey;doc.button=crazyIEButtons[button]||button;doc.relatedTarget=relatedTarget;return doc},createUIEvent:function(doc,type,bubbles,cancelable,detail){doc=doc.createEventObject();doc.bubbles=
bubbles;doc.cancelable=cancelable;return doc},fireEvent:function(target,type,event){target.fireEvent('on'+type,event)}}}Ext.Object.each({load:[!1,!1],unload:[!1,!1],select:[!0,!1],change:[!0,!1],submit:[!0,!0],reset:[!0,!1],resize:[!0,!1],scroll:[!0,!1]},function(name,value){var bubbles=value[0],cancelable=value[1];dispatchers[name]=function(targetEl,srcEvent){srcEvent=API.createHtmlEvent(name,bubbles,cancelable);API.fireEvent(targetEl,name,srcEvent)}});Ext.each('click dblclick mousedown mouseup mouseover mousemove mouseout'.split(' '),
function(eventName){dispatchers[eventName]=createMouseEventDispatcher(eventName,1)});Ext.Object.each({focusin:[!0,!1],focusout:[!0,!1],activate:[!0,!0],focus:[!1,!1],blur:[!1,!1]},function(name,value){var bubbles=value[0],cancelable=value[1];dispatchers[name]=function(targetEl,srcEvent){srcEvent=API.createUIEvent(targetEl.ownerDocument,name,bubbles,cancelable,1);API.fireEvent(targetEl,name,srcEvent)}});API||(dispatchers={},API={});return function(target){var dispatcher=dispatchers[this.type]||cannotInject;
target=target?target.dom||target:this.getTarget();dispatcher(target,this)}}(),preventDefault:function(browserOnly){var event=this.browserEvent,parentEvent=this.parentEvent;if('unknown'!==typeof event.type)if(browserOnly||(this.defaultPrevented=!0),parentEvent&&(parentEvent.defaultPrevented=!0),event.preventDefault)event.preventDefault();else{if('mousedown'===event.type){var target=event.target;var unselectable=target.getAttribute('unselectable');'on'!==unselectable&&(target.setAttribute('unselectable',
'on'),Ext.defer(function(){target.setAttribute('unselectable',unselectable)},1))}event.returnValue=!1;if(event.ctrlKey||111<event.keyCode&&124>event.keyCode)event.keyCode=-1}return this},stopPropagation:function(){'unknown'!==typeof this.browserEvent.type&&(this.mousedownEvents[this.type]&&Ext.GlobalEvents.fireMouseDown(this),arguments.callee.$previous.call(this));return this},deprecated:{'5.0':{methods:{clone:function(){return new this.self(this.browserEvent,this)}}}}},function(){var Event=this,
onKeyDown=function(e){9===e.keyCode&&(Event.forwardTab=!e.shiftKey)},onKeyUp=function(e){9===e.keyCode&&delete Event.forwardTab};if(Ext.isIE9m){var btnMap={0:0,1:0,4:1,2:2};Event.override({statics:{enableIEAsync:function(browserEvent){var name,fakeEvent={};for(name in browserEvent)fakeEvent[name]=browserEvent[name];return fakeEvent}},constructor:function(event,info,touchesMap,identifiers){this.callParent([event,info,touchesMap,identifiers]);this.button=btnMap[event.button];'contextmenu'===event.type&&
(this.button=2);this.toElement=event.toElement;this.fromElement=event.fromElement},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,enableIEAsync:function(browserEvent){this.browserEvent=this.self.enableIEAsync(browserEvent)},getRelatedTarget:function(selector,maxDepth,returnEl){if(!this.relatedTarget){var type=this.type;if(this.mouseLeaveRe.test(type))var target=this.toElement;else this.mouseEnterRe.test(type)&&(target=this.fromElement);target&&(this.relatedTarget=this.self.resolveTextNode(target))}return this.callParent([selector,
maxDepth,returnEl])}});document.attachEvent('onkeydown',onKeyDown);document.attachEvent('onkeyup',onKeyUp);window.attachEvent('onunload',function(){document.detachEvent('onkeydown',onKeyDown);document.detachEvent('onkeyup',onKeyUp)})}else document.addEventListener&&(document.addEventListener('keydown',onKeyDown,!0),document.addEventListener('keyup',onKeyUp,!0))});
Ext.cmd.derive('Ext.event.publisher.Dom',Ext.event.publisher.Publisher,{type:'dom',handledDomEvents:[],reEnterCount:0,captureEvents:{animationstart:1,animationend:1,resize:1,focus:1,blur:1},directEvents:{mouseenter:1,mouseleave:1,pointerenter:1,pointerleave:1,MSPointerEnter:1,MSPointerLeave:1,load:1,unload:1,beforeunload:1,error:1,DOMContentLoaded:1,DOMFrameContentLoaded:1,hashchange:1,scroll:1},blockedPointerEvents:{pointerover:1,pointerout:1,pointerenter:1,pointerleave:1,MSPointerOver:1,MSPointerOut:1,
MSPointerEnter:1,MSPointerLeave:1},blockedCompatibilityMouseEvents:{mouseenter:1,mouseleave:1},constructor:function(){this.bubbleSubscribers={};this.captureSubscribers={};this.directSubscribers={};this.directCaptureSubscribers={};this.delegatedListeners={};this.initHandlers();Ext.onInternalReady(this.onReady,this);Ext.event.publisher.Publisher.prototype.constructor.call(this)},registerEvents:function(){for(var publishersByEvent=Ext.event.publisher.Publisher.publishersByEvent,domEvents=this.handledDomEvents,
ln=domEvents.length,i=0,eventName;i<ln;i++)eventName=domEvents[i],this.handles[eventName]=1,publishersByEvent[eventName]=this;Ext.event.publisher.Publisher.prototype.registerEvents.call(this)},onReady:function(){var domEvents=this.handledDomEvents,ln;if(domEvents){var i=0;for(ln=domEvents.length;i<ln;i++)this.addDelegatedListener(domEvents[i])}Ext.getWin().on('unload',this.destroy,this)},initHandlers:function(){this.onDelegatedEvent=Ext.bind(this.onDelegatedEvent,this);this.onDirectEvent=Ext.bind(this.onDirectEvent,
this);this.onDirectCaptureEvent=Ext.bind(this.onDirectCaptureEvent,this)},addDelegatedListener:function(eventName){this.delegatedListeners[eventName]=1;this.target.addEventListener(eventName,this.onDelegatedEvent,!!this.captureEvents[eventName])},removeDelegatedListener:function(eventName){delete this.delegatedListeners[eventName];this.target.removeEventListener(eventName,this.onDelegatedEvent,!!this.captureEvents[eventName])},addDirectListener:function(eventName,element,capture){element.dom.addEventListener(eventName,
capture?this.onDirectCaptureEvent:this.onDirectEvent,capture)},removeDirectListener:function(eventName,element,capture){element.dom.removeEventListener(eventName,capture?this.onDirectCaptureEvent:this.onDirectEvent,capture)},subscribe:function(element,eventName,delegated,capture){if(delegated&&!this.directEvents[eventName])delegated=capture?this.captureSubscribers:this.bubbleSubscribers,this.handles[eventName]||this.delegatedListeners[eventName]||this.addDelegatedListener(eventName),delegated[eventName]?
++delegated[eventName]:delegated[eventName]=1;else{delegated=capture?this.directCaptureSubscribers:this.directSubscribers;var id=element.id;delegated=delegated[eventName]||(delegated[eventName]={});delegated[id]?++delegated[id]:(delegated[id]=1,this.addDirectListener(eventName,element,capture))}},unsubscribe:function(element,eventName,delegated,capture){if(delegated&&!this.directEvents[eventName]){element=this.captureSubscribers;var bubbleSubscribers=this.bubbleSubscribers;delegated=capture?element:
bubbleSubscribers;delegated[eventName]&&--delegated[eventName];this.handles[eventName]||bubbleSubscribers[eventName]||element[eventName]||this.removeDelegatedListener(eventName)}else delegated=capture?this.directCaptureSubscribers:this.directSubscribers,bubbleSubscribers=element.id,delegated=delegated[eventName],delegated[bubbleSubscribers]&&--delegated[bubbleSubscribers],delegated[bubbleSubscribers]||(delete delegated[bubbleSubscribers],this.removeDirectListener(eventName,element,capture))},getPropagatingTargets:function(target){for(var targets=
[],parentNode;target;)targets.push(target),parentNode=target.parentNode,parentNode||(parentNode=target.defaultView),target=parentNode;return targets},publish:function(e,targets,claimed){var hasCaptureSubscribers=!1,hasBubbleSubscribers=!1,type,i;claimed=claimed||!1;targets||(targets=e.target,targets=this.captureEvents[e.type]?(type=Ext.cache[targets.id])?[type]:[]:this.getPropagatingTargets(targets));var events=Ext.Array.from(e);var ln=targets.length;var eLn=events.length;for(i=0;i<eLn;i++)type=events[i].type,
!hasCaptureSubscribers&&this.captureSubscribers[type]&&(hasCaptureSubscribers=!0),!hasBubbleSubscribers&&this.bubbleSubscribers[type]&&(hasBubbleSubscribers=!0);if(hasCaptureSubscribers)for(i=ln;i--;)if(type=Ext.cache[targets[i].id])for(hasCaptureSubscribers=0;hasCaptureSubscribers<eLn;hasCaptureSubscribers++)e=events[hasCaptureSubscribers],this.fire(type,e.type,e,!1,!0),!claimed&&e.claimed&&(claimed=!0,hasCaptureSubscribers=this.filterClaimed(events,e),eLn=events.length),e.stopped&&(events.splice(hasCaptureSubscribers,
1),hasCaptureSubscribers--,eLn--);if(hasBubbleSubscribers&&!e.stopped)for(i=0;i<ln;i++)if(type=Ext.cache[targets[i].id])for(hasCaptureSubscribers=0;hasCaptureSubscribers<eLn;hasCaptureSubscribers++)e=events[hasCaptureSubscribers],this.fire(type,e.type,e,!1,!1),!claimed&&e.claimed&&this.filterClaimed&&(claimed=!0,hasCaptureSubscribers=this.filterClaimed(events,e),eLn=events.length),e.stopped&&(events.splice(hasCaptureSubscribers,1),hasCaptureSubscribers--,eLn--)},publishDelegatedDomEvent:function(e){this.publish(e)},
fire:function(element,eventName,e,direct,capture){element.hasListeners[eventName]&&(eventName=element.events[eventName])&&(capture&&direct?eventName=eventName.directCaptures:capture?eventName=eventName.captures:direct&&(eventName=eventName.directs),eventName&&(e.setCurrentTarget(element.dom),eventName.fire(e,e.target)))},onDelegatedEvent:function(e){Ext.elevateFunction?Ext.elevateFunction(this.doDelegatedEvent,this,[e]):this.doDelegatedEvent(e)},doDelegatedEvent:function(e){e=new Ext.event.Event(e);
var timeStamp=e.time;this.isEventBlocked(e)||(this.beforeEvent(e),Ext.frameStartTime=timeStamp,this.reEnterCount++,this.publishDelegatedDomEvent(e),this.reEnterCount--,this.afterEvent(e))},onDirectEvent:function(e){Ext.elevateFunction?Ext.elevateFunction(this.doDirectEvent,this,[e,!1]):this.doDirectEvent(e,!1)},onDirectCaptureEvent:function(e){Ext.elevateFunction?Ext.elevateFunction(this.doDirectEvent,this,[e,!0]):this.doDirectEvent(e,!0)},doDirectEvent:function(e,capture){var currentTarget=e.currentTarget;
e=new Ext.event.Event(e);var timeStamp=e.time;if(!this.isEventBlocked(e)){this.beforeEvent(e);Ext.frameStartTime=timeStamp;if(currentTarget=Ext.cache[currentTarget.id])this.reEnterCount++,this.fire(currentTarget,e.type,e,!0,capture),this.reEnterCount--;this.afterEvent(e)}},beforeEvent:function(e){var browserEvent=e.browserEvent;e=Ext.event.publisher.Dom;'touchstart'===browserEvent.type&&(browserEvent=browserEvent.touches,1===browserEvent.length&&(browserEvent=browserEvent[0],e.lastTouchStartX=browserEvent.pageX,
e.lastTouchStartY=browserEvent.pageY))},afterEvent:function(e){var type=e.browserEvent.type,self=Ext.event.publisher.Dom,GlobalEvents=Ext.GlobalEvents;e.self.pointerEvents[type]&&'mouse'!==e.pointerType&&(self.lastScreenPointerEventTime=Ext.now());'touchend'===type&&(self.lastTouchEndTime=Ext.now());this.reEnterCount||!GlobalEvents.hasListeners.idle||GlobalEvents.idleEventMask[type]||GlobalEvents.fireEvent('idle')},isEventBlocked:function(e){var type=e.type,self=Ext.event.publisher.Dom,now=Ext.now();
return Ext.isGecko&&'click'===e.type&&2===e.button?!0:this.blockedPointerEvents[type]&&'mouse'!==e.pointerType||this.blockedCompatibilityMouseEvents[type]&&1E3>now-self.lastScreenPointerEventTime||Ext.supports.TouchEvents&&e.self.mouseEvents[e.type]&&15>Math.abs(e.pageX-self.lastTouchStartX)&&15>Math.abs(e.pageY-self.lastTouchStartY)&&1E3>Ext.now()-self.lastTouchEndTime},destroy:function(){var GC=Ext.dom.GarbageCollector,eventName;for(eventName in this.delegatedListeners)this.removeDelegatedListener(eventName);
Ext.Reaper.flush();GC&&GC.collect();this.callParent()},reset:function(){var self=Ext.event.publisher.Dom;self.lastScreenPointerEventTime=self.lastTouchEndTime=self.lastTouchStartX=self.lastTouchStartY=void 0}},1,0,0,0,0,0,[Ext.event.publisher,'Dom'],function(Dom){var doc=document,defaultView=doc.defaultView,prototype=Dom.prototype;Ext.os.is.iOS&&5>Ext.os.version.getMajor()||Ext.browser.is.AndroidStock||!defaultView||!defaultView.addEventListener?prototype.target=doc:prototype.target=defaultView;Dom.instance=
new Dom});
Ext.define('Ext.overrides.event.publisher.Dom',{override:'Ext.event.publisher.Dom'},function(DomPublisher){if(Ext.isIE9m){var docElement=document.documentElement,docBody=document.body,prototype=DomPublisher.prototype;prototype.target=document;prototype.directBoundListeners={};var onDirectEvent=function(e,publisher,capture){e.target=e.srcElement||window;e.currentTarget=this;if(capture)publisher.onDirectCaptureEvent(e);else publisher.onDirectEvent(e)};DomPublisher.override({addDelegatedListener:function(eventName){this.delegatedListeners[eventName]=1;
this.target.attachEvent('on'+eventName,this.onDelegatedEvent)},removeDelegatedListener:function(eventName){delete this.delegatedListeners[eventName];this.target.detachEvent('on'+eventName,this.onDelegatedEvent)},addDirectListener:function(eventName,element,capture){var dom=element.dom,boundFn=Ext.Function.bind(onDirectEvent,dom,[this,capture],!0),directBoundListeners=this.directBoundListeners;(directBoundListeners[eventName]||(directBoundListeners[eventName]={}))[dom.id]=boundFn;dom.attachEvent?dom.attachEvent('on'+
eventName,boundFn):this.callParent([eventName,element,capture])},removeDirectListener:function(eventName,element,capture){var dom=element.dom;dom.detachEvent?dom.detachEvent('on'+eventName,this.directBoundListeners[eventName][dom.id]):this.callParent([eventName,element,capture])},doDelegatedEvent:function(e){e.target=e.srcElement||window;'focusin'===e.type?e.relatedTarget=e.fromElement===docBody||e.fromElement===docElement?null:e.fromElement:'focusout'===e.type&&(e.relatedTarget=e.toElement===docBody||
e.toElement===docElement?null:e.toElement);return this.callParent([e])}});Ext.apply(prototype.directEvents,prototype.captureEvents);Ext.apply(prototype.directEvents,{change:1,input:1,paste:1});prototype.captureEvents={}}});
Ext.cmd.derive('Ext.event.publisher.Gesture',Ext.event.publisher.Dom,{type:'gesture',isCancelEvent:{touchcancel:1,pointercancel:1,MSPointerCancel:1},handledEvents:[],handledDomEvents:[],constructor:function(config){var handledDomEvents=this.handledDomEvents,supports=Ext.supports,supportsTouchEvents=supports.TouchEvents,onTouchStart=this.onTouchStart,onTouchMove=this.onTouchMove,onTouchEnd=this.onTouchEnd;this.handlers={touchstart:onTouchStart,touchmove:onTouchMove,touchend:onTouchEnd,touchcancel:onTouchEnd,
pointerdown:onTouchStart,pointermove:onTouchMove,pointerup:onTouchEnd,pointercancel:onTouchEnd,MSPointerDown:onTouchStart,MSPointerMove:onTouchMove,MSPointerUp:onTouchEnd,MSPointerCancel:onTouchEnd,mousedown:onTouchStart,mousemove:onTouchMove,mouseup:onTouchEnd};this.activeTouchesMap={};this.activeTouches=[];this.changedTouches=[];this.recognizers=[];this.eventToRecognizer={};this.cancelEvents=[];supportsTouchEvents&&(this.onTargetTouchMove=this.onTargetTouchMove.bind(this),this.onTargetTouchEnd=
this.onTargetTouchEnd.bind(this));supports.PointerEvents?(handledDomEvents.push('pointerdown','pointermove','pointerup','pointercancel'),this.mousePointerType='mouse'):supports.MSPointerEvents?(handledDomEvents.push('MSPointerDown','MSPointerMove','MSPointerUp','MSPointerCancel'),this.mousePointerType=4):supportsTouchEvents&&handledDomEvents.push('touchstart','touchmove','touchend','touchcancel');(!handledDomEvents.length||supportsTouchEvents&&Ext.isWebKit&&Ext.os.is.Desktop)&&handledDomEvents.push('mousedown',
'mousemove','mouseup');this.initConfig(config);return Ext.event.publisher.Dom.prototype.constructor.call(this)},onReady:function(){Ext.event.publisher.Dom.prototype.onReady.call(this);Ext.Array.sort(this.recognizers,function(recognizerA,recognizerB){recognizerA=recognizerA.priority;recognizerB=recognizerB.priority;return recognizerA>recognizerB?1:recognizerA<recognizerB?-1:0})},registerRecognizer:function(recognizer){var handledEvents=recognizer.handledEvents,ln=handledEvents.length,i;recognizer.setOnRecognized(this.onRecognized);
recognizer.setCallbackScope(this);for(i=0;i<ln;i++){var eventName=handledEvents[i];this.handledEvents.push(eventName);this.eventToRecognizer[eventName]=recognizer}this.registerEvents(handledEvents);this.recognizers.push(recognizer)},onRecognized:function(recognizer,eventName,e,info,isCancel){var touches=e.touches,changedTouches=e.changedTouches,ln=changedTouches.length,events=this.events,queueWasEmpty=!events.length,cancelEvents=this.cancelEvents;info=info||{};info.type=eventName;info.target=changedTouches[0].target;
info.stopped=!1;info.claimed=!1;info.isGesture=!0;e=e.chain(info);if(!this.gestureTargets){if(1<ln){eventName=[];for(info=0;info<ln;info++){var touch=changedTouches[info];eventName.push(touch.targets)}changedTouches=this.getCommonTargets(eventName)}else changedTouches=changedTouches[0].targets;this.gestureTargets=changedTouches}isCancel&&recognizer.isSingleTouch&&1<touches.length?(e.target=touches[0].target,cancelEvents.push(e)):events.push(e);queueWasEmpty&&this.publishGestures()},getCommonTargets:function(targetGroups){var firstTargetGroup=
targetGroups[0],ln=targetGroups.length;if(1===ln)return firstTargetGroup;for(var commonTargets=[],i=1,target,targets,j;;){target=firstTargetGroup[firstTargetGroup.length-i];if(!target)break;for(j=1;j<ln;j++)if(targets=targetGroups[j],targets[targets.length-i]!==target)return commonTargets;commonTargets.unshift(target);i++}return commonTargets},invokeRecognizers:function(methodName,e){var recognizers=this.recognizers,ln=recognizers.length,i;if('onStart'===methodName)for(i=0;i<ln;i++)recognizers[i].isActive=
!0;for(i=0;i<ln;i++){var recognizer=recognizers[i];recognizer.isActive&&!1===recognizer[methodName].call(recognizer,e)&&(recognizer.isActive=!1)}},filterClaimed:function(events,claimedEvent){var eventToRecognizer=this.eventToRecognizer;claimedEvent=claimedEvent.type;var claimedRecognizer=eventToRecognizer[claimedEvent],i;for(i=events.length;i--;){var recognizer=events[i].type;if(recognizer===claimedEvent)var claimedEventIndex=i;else if(recognizer=eventToRecognizer[recognizer],!claimedRecognizer||
recognizer&&recognizer!==claimedRecognizer)events.splice(i,1),claimedEventIndex&&claimedEventIndex--}this.claimRecognizer(claimedRecognizer,events[0]);return claimedEventIndex},claimRecognizer:function(claimedRecognizer,e){var recognizers=this.recognizers,ln;var i=0;for(ln=recognizers.length;i<ln;i++){var recognizer=recognizers[i];recognizer!==claimedRecognizer&&(recognizer.isActive=!1,recognizer.cancel(e))}this.events.length&&this.publishGestures(!0)},publishGestures:function(claimed){var cancelEvents=
this.cancelEvents,events=this.events,gestureTargets=this.gestureTargets;cancelEvents.length&&(this.cancelEvents=[],this.publish(cancelEvents,this.getPropagatingTargets(cancelEvents[0].target),!0));events.length&&(this.events=[],this.gestureTargets=null,this.publish(events,gestureTargets||this.getPropagatingTargets(events[0].target),claimed))},updateTouches:function(e,isEnd){var browserEvent=e.browserEvent;browserEvent=browserEvent.changedTouches||[browserEvent];var activeTouches=this.activeTouches,
activeTouchesMap=this.activeTouchesMap,changedTouches=[],ln;var i=0;for(ln=browserEvent.length;i<ln;i++){var touchSource=browserEvent[i];var identifier='identifier'in touchSource?touchSource.identifier:'pointerId'in touchSource?touchSource.pointerId:1;var touch=activeTouchesMap[identifier];touch||(touch=Ext.event.Event.resolveTextNode(touchSource.target),touch=activeTouchesMap[identifier]={identifier:identifier,target:touch,targets:this.getPropagatingTargets(touch)},activeTouches.push(touch));isEnd&&
(delete activeTouchesMap[identifier],Ext.Array.remove(activeTouches,touch));identifier=touchSource.pageX;touchSource=touchSource.pageY;touch.pageX=identifier;touch.pageY=touchSource;touch.point=new Ext.util.Point(identifier,touchSource);changedTouches.push(touch)}e.touches=Ext.Array.clone(activeTouches);e.changedTouches=changedTouches},publishDelegatedDomEvent:function(e){!e.button||1>e.button?(this.events=[e],this.handlers[e.type].call(this,e)):Ext.event.publisher.Dom.prototype.publishDelegatedDomEvent.call(this,
e)},onTouchStart:function(e){var target=e.target,touches=e.browserEvent.touches;'touchstart'===e.browserEvent.type&&(target.addEventListener('touchmove',this.onTargetTouchMove),target.addEventListener('touchend',this.onTargetTouchEnd),target.addEventListener('touchcancel',this.onTargetTouchEnd));touches&&touches.length<=this.activeTouches.length&&this.removeGhostTouches(touches);this.updateTouches(e);this.isStarted||(Ext.enableGarbageCollector&&Ext.dom.GarbageCollector.pause(),this.isStarted=!0,this.invokeRecognizers('onStart',
e));this.invokeRecognizers('onTouchStart',e);this.publishGestures()},onTouchMove:function(e){var mousePointerType=this.mousePointerType;if(this.isStarted){if(mousePointerType&&e.browserEvent.pointerType===mousePointerType&&0===e.buttons){e.type=Ext.dom.Element.prototype.eventMap.touchend;e.button=0;this.onTouchEnd(e);return}this.updateTouches(e);0<e.changedTouches.length&&this.invokeRecognizers('onTouchMove',e)}this.publishGestures()},onTouchEnd:function(e){if(this.isStarted){this.updateTouches(e,
!0);var touchCount=this.activeTouches.length;try{this.invokeRecognizers(this.isCancelEvent[e.type]?'onTouchCancel':'onTouchEnd',e)}finally{touchCount||(this.isStarted=!1,this.invokeRecognizers('onEnd',e)),this.publishGestures(),touchCount||Ext.enableGarbageCollector&&Ext.dom.GarbageCollector.resume()}}else this.publishGestures()},onTargetTouchMove:function(e){Ext.elevateFunction?Ext.elevateFunction(this.doTargetTouchMove,this,[e]):this.doTargetTouchMove(e)},doTargetTouchMove:function(e){if(!Ext.getBody().contains(e.target))this.onTouchMove(new Ext.event.Event(e))},
onTargetTouchEnd:function(e){Ext.elevateFunction?Ext.elevateFunction(this.doTargetTouchEnd,this,[e]):this.doTargetTouchEnd(e)},doTargetTouchEnd:function(e){var target=e.target;target.removeEventListener('touchmove',this.onTargetTouchMove);target.removeEventListener('touchend',this.onTargetTouchEnd);target.removeEventListener('touchcancel',this.onTargetTouchEnd);if(!Ext.getBody().contains(target))this.onTouchEnd(new Ext.event.Event(e))},reset:function(){var recognizers=this.recognizers,ln=recognizers.length,
i;this.activeTouchesMap={};this.activeTouches=[];this.changedTouches=[];this.isStarted=!1;this.gestureTargets=null;this.events=[];this.cancelEvents=[];for(i=0;i<ln;i++){var recognizer=recognizers[i];recognizer.reset();recognizer.isActive=!1}Ext.event.publisher.Dom.prototype.reset.call(this)},privates:{removeGhostTouches:function(touches){var len=touches.length,activeTouches=this.activeTouches,map=this.activeTouchesMap,i;for(i=0;i<len;++i);for(i=activeTouches.length;i--;){var touch=activeTouches[i];
len=touch.identifier;touches[len]||(Ext.Array.remove(activeTouches,touch),delete map[len])}}}},1,0,0,0,0,0,[Ext.event.publisher,'Gesture'],function(Gesture){Gesture.instance=Ext.$gesturePublisher=new Gesture});Ext.define('Ext.overrides.event.publisher.Gesture',{override:'Ext.event.publisher.Gesture'},function(){Ext.isIE9m&&this.override({updateTouches:function(e,isEnd){var browserEvent=e.browserEvent,xy=e.getXY();browserEvent.pageX=xy[0];browserEvent.pageY=xy[1];this.callParent([e,isEnd])},doDelegatedEvent:function(e){this.callParent([Ext.event.Event.enableIEAsync(e)])}})});
Ext.cmd.derive('Ext.mixin.Templatable',Ext.Mixin,{mixinConfig:{id:'templatable'},referenceAttributeName:'reference',referenceSelector:'[reference]',getElementConfig:function(){return{reference:'element'}},getElementTemplate:function(){var elementTemplate=document.createDocumentFragment();elementTemplate.appendChild(Ext.Element.create(this.getElementConfig(),!0));return elementTemplate},initElement:function(){var prototype=this.self.prototype;prototype.elementTemplate=this.getElementTemplate();prototype.initElement=
prototype.doInitElement;this.initElement.apply(this,arguments)},linkElement:function(reference,node){this.link(reference,node)},doInitElement:function(){var referenceAttributeName=this.referenceAttributeName,ln;var referenceNodes=this.elementTemplate.cloneNode(!0).querySelectorAll(this.referenceSelector);var i=0;for(ln=referenceNodes.length;i<ln;i++){var referenceNode=referenceNodes[i];var reference=referenceNode.getAttribute(referenceAttributeName);referenceNode.removeAttribute(referenceAttributeName);
this.linkElement(reference,referenceNode)}}},0,0,0,0,0,0,[Ext.mixin,'Templatable'],0);
Ext.cmd.derive('Ext.TaskQueue',Ext.Base,{singleton:!0,pending:!1,mode:!0,constructor:function(){this.readQueue=[];this.writeQueue=[];this.run=Ext.Function.bind(this.run,this);Ext.os.is.iOS&&Ext.interval(this.watch,500,this)},requestRead:function(fn,scope,args){this.request(!0);this.readQueue.push(arguments)},requestWrite:function(fn,scope,args){this.request(!1);this.writeQueue.push(arguments)},request:function(mode){this.pending||(this.pendingTime=Date.now(),this.pending=!0,(this.mode=mode)?Ext.defer(this.run,
1,this):Ext.Function.requestAnimationFrame(this.run))},watch:function(){this.pending&&500<=Date.now()-this.pendingTime&&this.run()},run:function(){this.pending=!1;var readQueue=this.readQueue,writeQueue=this.writeQueue,request=null;if(this.mode){var queue=readQueue;0<writeQueue.length&&(request=!1)}else queue=writeQueue,0<readQueue.length&&(request=!0);readQueue=queue.slice();queue=queue.length=0;for(writeQueue=readQueue.length;queue<writeQueue;queue++){var task=readQueue[queue];var fn=task[0];var scope=
task[1];scope&&(scope.destroying||scope.destroyed)||('string'===typeof fn&&(fn=scope[fn]),2<task.length?fn.apply(scope,task[2]):fn.call(scope))}readQueue.length=0;null!==request&&this.request(request)}},1,0,0,0,0,0,[Ext,'TaskQueue'],0);
Ext.cmd.derive('Ext.util.sizemonitor.Abstract',Ext.Base,{config:{element:null,callback:Ext.emptyFn,scope:null,args:[]},width:null,height:null,contentWidth:null,contentHeight:null,constructor:function(config){this.refresh=Ext.Function.bind(this.refresh,this);this.info={width:0,height:0,contentWidth:0,contentHeight:0,flag:0};this.initElement();this.initConfig(config);this.bindListeners(!0)},bindListeners:Ext.emptyFn,applyElement:function(element){if(element)return Ext.get(element)},updateElement:function(element){element.append(this.detectorsContainer);
element.addCls('x-size-monitored')},applyArgs:function(args){return args.concat([this.info])},refreshMonitors:Ext.emptyFn,forceRefresh:function(){Ext.TaskQueue.requestRead('refresh',this)},getContentBounds:function(){return this.detectorsContainer.getBoundingClientRect()},getContentWidth:function(){return this.detectorsContainer.clientWidth},getContentHeight:function(){return this.detectorsContainer.clientHeight},refreshSize:function(){var element=this.getElement();if(!element||element.destroyed)return!1;
var width=element.getWidth();element=element.getHeight();var contentWidth=this.getContentWidth(),contentHeight=this.getContentHeight(),currentContentWidth=this.contentWidth,currentContentHeight=this.contentHeight,info=this.info,resized=!1;this.width=width;this.height=element;this.contentWidth=contentWidth;this.contentHeight=contentHeight;currentContentWidth=(currentContentWidth!==contentWidth?1:0)+(currentContentHeight!==contentHeight?2:0);0<currentContentWidth&&(info.width=width,info.height=element,
info.contentWidth=contentWidth,info.contentHeight=contentHeight,info.flag=currentContentWidth,resized=!0,this.getCallback().apply(this.getScope(),this.getArgs()));return resized},refresh:function(force){this.destroying||this.destroyed||(this.refreshSize()||force)&&Ext.TaskQueue.requestWrite('refreshMonitors',this)},destroy:function(){var element=this.getElement();this.bindListeners(!1);element&&!element.destroyed&&element.removeCls('x-size-monitored');delete this._element;this.refresh=null;this.callParent()}},
1,0,0,0,0,[[Ext.mixin.Templatable.prototype.mixinId||Ext.mixin.Templatable.$className,Ext.mixin.Templatable]],[Ext.util.sizemonitor,'Abstract'],0);
Ext.cmd.derive('Ext.util.sizemonitor.Scroll',Ext.util.sizemonitor.Abstract,{getElementConfig:function(){return{reference:'detectorsContainer',classList:['x-size-monitors','scroll'],children:[{reference:'expandMonitor',className:'expand'},{reference:'shrinkMonitor',className:'shrink'}]}},constructor:function(config){this.onScroll=Ext.Function.bind(this.onScroll,this);Ext.util.sizemonitor.Abstract.prototype.constructor.apply(this,arguments)},bindListeners:function(bind){bind=bind?'addEventListener':
'removeEventListener';this.expandMonitor[bind]('scroll',this.onScroll,!0);this.shrinkMonitor[bind]('scroll',this.onScroll,!0)},forceRefresh:function(){Ext.TaskQueue.requestRead('refresh',this,[!0])},onScroll:function(){Ext.TaskQueue.requestRead('refresh',this)},refreshMonitors:function(){var expandMonitor=this.expandMonitor,shrinkMonitor=this.shrinkMonitor;expandMonitor&&!expandMonitor.destroyed&&(expandMonitor.scrollLeft=1E6,expandMonitor.scrollTop=1E6);shrinkMonitor&&!shrinkMonitor.destroyed&&(shrinkMonitor.scrollLeft=
1E6,shrinkMonitor.scrollTop=1E6)},destroy:function(){this.onScroll=null;Ext.util.sizemonitor.Abstract.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.util.sizemonitor,'Scroll'],0);
Ext.cmd.derive('Ext.util.sizemonitor.OverflowChange',Ext.util.sizemonitor.Abstract,{constructor:function(config){this.onExpand=Ext.Function.bind(this.onExpand,this);this.onShrink=Ext.Function.bind(this.onShrink,this);Ext.util.sizemonitor.Abstract.prototype.constructor.apply(this,arguments)},getElementConfig:function(){return{reference:'detectorsContainer',classList:['x-size-monitors','overflowchanged'],children:[{reference:'expandMonitor',className:'expand',children:[{reference:'expandHelper'}]},
{reference:'shrinkMonitor',className:'shrink',children:[{reference:'shrinkHelper'}]}]}},bindListeners:function(bind){bind=bind?'addEventListener':'removeEventListener';this.expandMonitor[bind](Ext.browser.is.Firefox?'underflow':'overflowchanged',this.onExpand,!0);this.shrinkMonitor[bind](Ext.browser.is.Firefox?'overflow':'overflowchanged',this.onShrink,!0)},onExpand:function(e){Ext.browser.is.Webkit&&e.horizontalOverflow&&e.verticalOverflow||Ext.TaskQueue.requestRead('refresh',this)},onShrink:function(e){(!Ext.browser.is.Webkit||
e.horizontalOverflow||e.verticalOverflow)&&Ext.TaskQueue.requestRead('refresh',this)},refreshMonitors:function(){if(!this.destroying&&!this.destroyed){var expandHelper=this.expandHelper,shrinkHelper=this.shrinkHelper,contentBounds=this.getContentBounds(),width=contentBounds.width;contentBounds=contentBounds.height;expandHelper&&!expandHelper.destroyed&&(expandHelper=expandHelper.style,expandHelper.width=width+1+'px',expandHelper.height=contentBounds+1+'px');shrinkHelper&&!shrinkHelper.destroyed&&
(expandHelper=shrinkHelper.style,expandHelper.width=width+'px',expandHelper.height=contentBounds+'px');Ext.TaskQueue.requestRead('refresh',this)}},destroy:function(){this.onExpand=this.onShrink=null;Ext.util.sizemonitor.Abstract.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.util.sizemonitor,'OverflowChange'],0);
Ext.cmd.derive('Ext.util.SizeMonitor',Ext.Base,{constructor:function(config){var namespace=Ext.util.sizemonitor;return Ext.browser.is.Firefox?new namespace.OverflowChange(config):new namespace.Scroll(config)}},1,0,0,0,0,0,[Ext.util,'SizeMonitor'],0);
Ext.cmd.derive('Ext.event.publisher.ElementSize',Ext.event.publisher.Publisher,{type:'size',handledEvents:['resize'],constructor:function(){this.monitors={};this.subscribers={};Ext.event.publisher.Publisher.prototype.constructor.apply(this,arguments)},subscribe:function(element){var id=element.id,subscribers=this.subscribers,monitors=this.monitors;subscribers[id]?++subscribers[id]:(subscribers[id]=1,monitors[id]=new Ext.util.SizeMonitor({element:element,callback:this.onElementResize,scope:this,args:[element]}));
element.on('painted','forceRefresh',monitors[id]);return!0},unsubscribe:function(element){var id=element.id,subscribers=this.subscribers,monitors=this.monitors;subscribers[id]&&!--subscribers[id]&&(delete subscribers[id],subscribers=monitors[id],element.un('painted','forceRefresh',subscribers),subscribers.destroy(),delete monitors[id])},onElementResize:function(element,info){Ext.TaskQueue.requestRead('fire',this,[element,'resize',[element,info]])}},1,0,0,0,0,0,[Ext.event.publisher,'ElementSize'],
function(ElementSize){ElementSize.instance=new ElementSize});
Ext.cmd.derive('Ext.util.paintmonitor.Abstract',Ext.Base,{config:{element:null,callback:Ext.emptyFn,scope:null,args:[]},eventName:'',monitorClass:'',constructor:function(config){this.onElementPainted=Ext.Function.bind(this.onElementPainted,this);this.initConfig(config)},bindListeners:function(bind){this.monitorElement[bind?'addEventListener':'removeEventListener'](this.eventName,this.onElementPainted,!0)},applyElement:function(element){if(element)return Ext.get(element)},updateElement:function(element){this.monitorElement=
Ext.Element.create({classList:['x-paint-monitor',this.monitorClass]},!0);element.appendChild(this.monitorElement);element.addCls('x-paint-monitored');this.bindListeners(!0)},onElementPainted:function(){},destroy:function(){var monitorElement=this.monitorElement,parentNode=monitorElement.parentNode,element=this.getElement();this.bindListeners(!1);delete this.monitorElement;element&&!element.destroyed&&(element.removeCls('x-paint-monitored'),delete this._element);parentNode&&parentNode.removeChild(monitorElement);
this.callParent()}},1,0,0,0,0,0,[Ext.util.paintmonitor,'Abstract'],0);Ext.cmd.derive('Ext.util.paintmonitor.CssAnimation',Ext.util.paintmonitor.Abstract,{eventName:Ext.browser.is.WebKit?'webkitAnimationEnd':'animationend',monitorClass:'cssanimation',onElementPainted:function(e){'x-paint-monitor-helper'===e.animationName&&this.getCallback().apply(this.getScope(),this.getArgs())}},0,0,0,0,0,0,[Ext.util.paintmonitor,'CssAnimation'],0);
Ext.cmd.derive('Ext.util.PaintMonitor',Ext.Base,{constructor:function(config){return new Ext.util.paintmonitor.CssAnimation(config)}},1,0,0,0,0,0,[Ext.util,'PaintMonitor'],0);
Ext.cmd.derive('Ext.event.publisher.ElementPaint',Ext.event.publisher.Publisher,{type:'paint',handledEvents:['painted'],constructor:function(){this.monitors={};this.subscribers={};Ext.event.publisher.Publisher.prototype.constructor.apply(this,arguments)},subscribe:function(element){var id=element.id,subscribers=this.subscribers;subscribers[id]?++subscribers[id]:(subscribers[id]=1,this.monitors[id]=new Ext.util.PaintMonitor({element:element,callback:this.onElementPainted,scope:this,args:[element]}))},
unsubscribe:function(element){element=element.id;var subscribers=this.subscribers,monitors=this.monitors;subscribers[element]&&!--subscribers[element]&&(delete subscribers[element],monitors[element].destroy(),delete monitors[element])},onElementPainted:function(element){Ext.TaskQueue.requestRead('fire',this,[element,'painted',[element]])}},1,0,0,0,0,0,[Ext.event.publisher,'ElementPaint'],function(ElementPaint){ElementPaint.instance=new ElementPaint});
Ext.cmd.derive('Ext.dom.Element',Ext.Base,function(Element){var WIN=window,DOC=document,docEl=DOC.documentElement,TOP=WIN.top;TOP='top';var wordsRe=/\w/g,spacesRe=/\s+/,classNameSplitRegex=/[\s]+/,transparentRe=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,adjustDirect2DTableRe=/table-row|table-.*-group/,topRe=/top/i,borders={t:'border-top-width',r:'border-right-width',b:'border-bottom-width',l:'border-left-width'},paddings={t:'padding-top',r:'padding-right',b:'padding-bottom',l:'padding-left'},
margins={t:'margin-top',r:'margin-right',b:'margin-bottom',l:'margin-left'},paddingsTLRB=[paddings.l,paddings.r,paddings.t,paddings.b],bordersTLRB=[borders.l,borders.r,borders.t,borders.b],numberRe=/\d+$/,unitRe=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe=/(-[a-z])/gi,cssRe=/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,pxRe=/^\d+(?:\.\d*)?px$/i,propertyCache={},camelReplaceFn=function(m,a){return a.charAt(1).toUpperCase()},clearData=function(node,deep){var len;if(1===node.nodeType&&(node._extData=
null,deep)){node=node.childNodes;var i=0;for(len=node.length;i<len;++i)clearData(node[i],deep)}},lastFocusChange=0,lastKeyboardClose=0,editableHasFocus=!1,isVirtualKeyboardOpen=!1,visFly,scrollFly,caFly;try{var elementIdCounter=TOP.__elementIdCounter__}catch(e){TOP=WIN}TOP.__elementIdCounter=elementIdCounter=(TOP.__elementIdCounter__||0)+1;var windowId='ext-window-'+elementIdCounter;var documentId='ext-document-'+elementIdCounter;return{alternateClassName:['Ext.Element'],observableType:'element',
isElement:!0,skipGarbageCollection:!0,$applyConfigs:!0,identifiablePrefix:'ext-element-',styleHooks:{},validIdRe:Ext.validIdRe,blockedEvents:Ext.supports.EmulatedMouseOver?{mouseover:1}:{},longpressEvents:{longpress:1,taphold:1},constructor:function(dom){var id;'string'===typeof dom&&(dom=DOC.getElementById(dom));if(!dom)return null;this.dom=dom;(id=dom.id)?this.id=id:id=dom.id=this.getUniqueId();this.el=this;Ext.cache[id]=this;this.longpressListenerCount=0;this.mixins.observable.constructor.call(this)},
inheritableStatics:{cache:Ext.cache={},editableSelector:'input,textarea,[contenteditable\x3d"true"]',VISIBILITY:1,DISPLAY:2,OFFSETS:3,CLIP:4,minKeyboardHeight:100,unitRe:unitRe,useDelegatedEvents:!0,validNodeTypes:{1:1,9:1},addUnits:function(size,units){return'number'===typeof size?size+(units||'px'):''===size||'auto'===size||null==size?size||'':numberRe.test(size)?size+(units||'px'):unitRe.test(size)?size:size||''},create:function(attributes,domNode){var element,name,ln;attributes=attributes||{};
if(attributes.isElement)return domNode?attributes.dom:attributes;if('nodeType'in attributes)return domNode?attributes:Ext.get(attributes);if('string'===typeof attributes)return DOC.createTextNode(attributes);(element=attributes.tag)||(element='div');element=attributes.namespace?DOC.createElementNS(attributes.namespace,element):DOC.createElement(element);var elementStyle=element.style;for(name in attributes)if('tag'!==name){var value=attributes[name];switch(name){case 'style':if('string'===typeof value)element.setAttribute(name,
value);else for(i in value)value.hasOwnProperty(i)&&(elementStyle[i]=value[i]);break;case 'className':case 'cls':value=value.split(spacesRe);var classes=classes?classes.concat(value):value;break;case 'classList':classes=classes?classes.concat(value):value;break;case 'text':element.textContent=value;break;case 'html':element.innerHTML=value;break;case 'hidden':classes?classes.push('x-hidden-display'):classes=['x-hidden-display'];break;case 'children':if(null!=value){var i=0;for(ln=value.length;i<ln;i++)element.appendChild(this.create(value[i],
!0))}break;default:null!=value&&element.setAttribute(name,value)}}classes&&(element.className=classes.join(' '));return domNode?element:this.get(element)},detach:function(){var dom=this.dom;dom&&dom.parentNode&&'BODY'!==dom.tagName&&dom.parentNode.removeChild(dom);return this},fly:function(dom,named){return Ext.fly(dom,named)},fromPoint:function(){if(Ext.isIE)try{var elementFromPointBug=window.self!==window.top}catch(e$0){elementFromPointBug=!0}return function(x,y,asDom){var el=DOC.elementFromPoint(x,
y);!el&&elementFromPointBug&&(el=DOC.elementFromPoint(x,y));return asDom?el:Ext.get(el)}}(),fromPagePoint:function(x,y,asDom){var scroll=Ext.getDoc().getScroll();return Element.fromPoint(x-scroll.left,y-scroll.top,asDom)},get:function(el){var cache=Ext.cache;if(!el)return null;el.isFly&&(el=el.dom);if('string'===typeof el){var nodeType=el;if(cache.hasOwnProperty(nodeType)){var entry=cache[nodeType];if(entry.skipGarbageCollection||!Ext.isGarbage(entry.dom))return entry;entry.destroy()}if(nodeType===
windowId)return Element.get(WIN);if(nodeType===documentId)return Element.get(DOC);if(nodeType=Ext.getElementById?Ext.getElementById(nodeType):DOC.getElementById(nodeType))return new Element(nodeType)}if(nodeType=el.nodeType){var isDoc=9===nodeType;var isValidNodeType=this.validNodeTypes[nodeType]}else var isWin=el.window==el;if(isValidNodeType||isWin){nodeType=el.id;if(cache.hasOwnProperty(nodeType)){entry=cache[nodeType];if(entry.skipGarbageCollection||el===entry.dom||!Ext.isGarbage(entry.dom))return entry;
entry.destroy()}el===DOC&&(el.id=documentId);el==WIN&&(el.id=windowId);el=new Element(el);if(isWin||isDoc)el.skipGarbageCollection=!0;return el}return el.isElement||el.isComposite?el:Ext.isIterable(el)?this.select(el):null},getActiveElement:function(asElement){var active=DOC.activeElement;active&&active.focus||(active=DOC.body);return asElement?Ext.get(active):active},getDocumentHeight:function(){return Math.max(Ext.isStrict?docEl.scrollHeight:DOC.body.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(Ext.isStrict?
docEl.scrollWidth:DOC.body.scrollWidth,this.getViewportWidth())},getOrientation:function(){return Ext.supports.OrientationChange?0==WIN.orientation?'portrait':'landscape':WIN.innerHeight>WIN.innerWidth?'portrait':'landscape'},getViewportHeight:function(){var viewportHeight=Element._viewportHeight;return Ext.isIE9m?DOC.documentElement.clientHeight:null!=viewportHeight?viewportHeight:docEl.clientHeight},getViewportWidth:function(){var viewportWidth=Element._viewportWidth;return Ext.isIE9m?DOC.documentElement.clientWidth:
null!=viewportWidth?viewportWidth:docEl.clientWidth},getViewportScale:function(){var top=WIN.top;return(Ext.isiOS||Ext.isAndroid?1:top.devicePixelRatio||top.screen.deviceXDPI/top.screen.logicalXDPI)*this.getViewportTouchScale()},getViewportTouchScale:function(forceRead){var scale=1,top=WIN.top;if(!forceRead&&(forceRead=this._viewportTouchScale))return forceRead;Ext.isIE10p||Ext.isEdge||Ext.isiOS?scale=docEl.offsetWidth/WIN.innerWidth:Ext.isChromeMobile&&(scale=top.outerWidth/top.innerWidth);return scale},
getViewSize:function(){return{width:Element.getViewportWidth(),height:Element.getViewportHeight()}},maskIframes:function(){var iframes=document.getElementsByTagName('iframe');Ext.each(iframes,function(iframe){Ext.fly(iframe.parentNode).mask().setStyle('background-color','transparent')})},normalize:function(prop){return propertyCache[prop]||(propertyCache[prop]=prop.replace(camelRe,camelReplaceFn))},_onWindowFocusChange:function(e){Ext.fly(e.target).is(Element.editableSelector)&&(lastFocusChange=new Date,
editableHasFocus='focusin'===e.type||'pointerup'===e.type)},_onWindowResize:function(){var documentWidth=docEl.clientWidth,documentHeight=docEl.clientHeight,now=new Date;var deltaX=documentWidth-Element._documentWidth;var deltaY=documentHeight-Element._documentHeight;Element._windowWidth=documentWidth;Element._windowHeight=documentHeight;(1E3>now-lastFocusChange||1E3>now-lastKeyboardClose)&&0===deltaX&&editableHasFocus&&deltaY<=-Element.minKeyboardHeight?isVirtualKeyboardOpen=!0:(isVirtualKeyboardOpen&&
0===deltaX&&deltaY>=Element.minKeyboardHeight&&(isVirtualKeyboardOpen=!1,lastKeyboardClose=new Date),isVirtualKeyboardOpen||(Element._viewportWidth=documentWidth,Element._viewportHeight=documentHeight))},parseBox:function(box){box=box||0;var type=typeof box;if('number'===type)return{top:box,right:box,bottom:box,left:box};if('string'!==type)return box;box=box.split(' ');type=box.length;1===type?box[1]=box[2]=box[3]=box[0]:2===type?(box[2]=box[0],box[3]=box[1]):3===type&&(box[3]=box[1]);return{top:parseFloat(box[0])||
0,right:parseFloat(box[1])||0,bottom:parseFloat(box[2])||0,left:parseFloat(box[3])||0}},parseStyles:function(styles){var out={},matches;if(styles)for(cssRe.lastIndex=0;matches=cssRe.exec(styles);)out[matches[1]]=matches[2]||'';return out},select:function(selector,composite,root){return Ext.fly(root||DOC).select(selector,composite)},query:function(selector,asDom,root){return Ext.fly(root||DOC).query(selector,asDom)},unitizeBox:function(box,units){box=this.parseBox(box);return this.addUnits(box.top,
units)+' '+this.addUnits(box.right,units)+' '+this.addUnits(box.bottom,units)+' '+this.addUnits(box.left,units)},unmaskIframes:function(){var iframes=document.getElementsByTagName('iframe');Ext.each(iframes,function(iframe){Ext.fly(iframe.parentNode).unmask()})},serializeForm:function(form){form=form.elements||(DOC.forms[form]||Ext.getDom(form)).elements;var hasSubmit=!1,encoder=encodeURIComponent,data='',eLen=form.length,e;for(e=0;e<eLen;e++){var element=form[e];var name=element.name;var type=element.type;
var options=element.options;if(!element.disabled&&name)if(/select-(one|multiple)/i.test(type)){var oLen=options.length;for(type=0;type<oLen;type++){var opt=options[type];opt.selected&&(element=opt.hasAttribute('value'),data+=Ext.String.format('{0}\x3d{1}\x26',encoder(name),encoder(element?opt.value:opt.text)))}}else/file|undefined|reset|button/i.test(type)||/radio|checkbox/i.test(type)&&!element.checked||'submit'==type&&hasSubmit||(data+=encoder(name)+'\x3d'+encoder(element.value)+'\x26',hasSubmit=
/submit/i.test(type))}return data.substr(0,data.length-1)},getCommonAncestor:function(nodeA,nodeB,returnDom){caFly=caFly||new Ext.dom.Fly;for(caFly.attach(Ext.getDom(nodeA));!caFly.isAncestor(nodeB);)if(caFly.dom.parentNode)caFly.attach(caFly.dom.parentNode);else{caFly.attach(DOC.body);break}return returnDom?caFly.dom:Ext.get(caFly)}},addCls:function(names,prefix,suffix){var elementData=this.getData(),ln,name;if(!names)return this;elementData.isSynchronized||this.synchronize();var dom=this.dom;var map=
elementData.classMap;elementData=elementData.classList;prefix=prefix?prefix+'-':'';suffix=suffix?'-'+suffix:'';'string'===typeof names&&(names=names.split(spacesRe));var i=0;for(ln=names.length;i<ln;i++)if(name=names[i])if(name=prefix+name+suffix,!map[name]){map[name]=!0;elementData.push(name);var hasNewCls=!0}hasNewCls&&(dom.className=elementData.join(' '));return this},addClsOnClick:function(className,testFn,scope){var me=this,dom=me.dom,hasTest=Ext.isFunction(testFn);me.on('mousedown',function(){if(hasTest&&
!1===testFn.call(scope||me,me))return!1;Ext.fly(dom).addCls(className);var d=Ext.getDoc(),fn=function(){Ext.fly(dom).removeCls(className);d.removeListener('mouseup',fn)};d.on('mouseup',fn)});return me},addClsOnFocus:function(className,testFn,scope){var me=this,dom=me.dom,hasTest=Ext.isFunction(testFn);me.on('focus',function(){if(hasTest&&!1===testFn.call(scope||me,me))return!1;Ext.fly(dom).addCls(className)});me.on('blur',function(){Ext.fly(dom).removeCls(className)});return me},addClsOnOver:function(className,
testFn,scope){var me=this,dom=me.dom,hasTest=Ext.isFunction(testFn);me.hover(function(){hasTest&&!1===testFn.call(scope||me,me)||Ext.fly(dom).addCls(className)},function(){Ext.fly(dom).removeCls(className)});return me},addStyles:function(sides,styles){var totalSize=0;sides=(sides||'').match(wordsRe);var i,len=sides.length,styleSides=[];if(1===len)totalSize=Math.abs(parseFloat(this.getStyle(styles[sides[0]]))||0);else if(len){for(i=0;i<len;i++){var side=sides[i];styleSides.push(styles[side])}styleSides=
this.getStyle(styleSides);for(i=0;i<len;i++)side=sides[i],totalSize+=parseFloat(styleSides[styles[side]])||0}return totalSize},addUnits:function(size,units){return Element.addUnits(size,units)},adjustDirect2DDimension:function(dimension){var dom=this.dom,display=this.getStyle('display'),inlineDisplay=dom.style.display,inlinePosition=dom.style.position,originIndex='width'===dimension?0:1,currentStyle=dom.currentStyle;'inline'===display&&(dom.style.display='inline-block');dom.style.position=display.match(adjustDirect2DTableRe)?
'absolute':'static';dimension=(parseFloat(currentStyle[dimension])||2*parseFloat(currentStyle.msTransformOrigin.split(' ')[originIndex]))%1;dom.style.position=inlinePosition;'inline'===display&&(dom.style.display=inlineDisplay);return dimension},animate:function(animation){animation=new Ext.fx.Animation(animation);animation.setElement(this);this._activeAnimation=animation;animation.on({animationend:this._onAnimationEnd,scope:this});Ext.Animator.run(animation);return animation},_onAnimationEnd:function(){this._activeAnimation=
null},getActiveAnimation:function(){return this._activeAnimation},append:function(){this.appendChild.apply(this,arguments)},appendChild:function(el,returnDom){var e;if(el.nodeType||el.dom||'string'===typeof el)return el=Ext.getDom(el),this.dom.appendChild(el),returnDom?el:Ext.get(el);if(el.length){var insertEl=Ext.fly(DOC.createDocumentFragment());var eLen=el.length;for(e=0;e<eLen;e++)insertEl.appendChild(el[e],returnDom);el=Ext.Array.toArray(insertEl.dom.childNodes);this.dom.appendChild(insertEl.dom);
return returnDom?el:new Ext.dom.CompositeElementLite(el)}return this.createChild(el,null,returnDom)},appendTo:function(el){Ext.getDom(el).appendChild(this.dom);return this},applyStyles:function(styles){styles&&('function'===typeof styles&&(styles=styles.call()),'string'===typeof styles&&(styles=Element.parseStyles(styles)),'object'===typeof styles&&this.setStyle(styles));return this},blur:function(){var dom=this.dom;if(dom!==DOC.body){try{dom.blur()}catch(e$1){}return this}return this.focus(void 0,
dom)},cacheScrollValues:function(){var scrollValues=[],scrolledDescendants=[],len$jscomp$0;scrollFly=scrollFly||new Ext.dom.Fly;var descendants=this.query('*');var i$jscomp$0=0;for(len$jscomp$0=descendants.length;i$jscomp$0<len$jscomp$0;i$jscomp$0++){var descendant=descendants[i$jscomp$0];if(0<descendant.scrollTop||0!==descendant.scrollLeft)scrolledDescendants.push(descendant),scrollValues.push(scrollFly.attach(descendant).getScroll())}return function(){var len;var i=0;for(len=scrolledDescendants.length;i<
len;i++){var scroll=scrollValues[i];scrollFly.attach(scrolledDescendants[i]);scrollFly.setScrollLeft(scroll.left);scrollFly.setScrollTop(scroll.top)}}},center:function(centerIn){return this.alignTo(centerIn||DOC,'c-c')},child:function(selector,returnDom){var id=Ext.get(this).id;return this.selectNode(Ext.makeIdSelector(id)+' \x3e '+selector,!!returnDom)},clone:function(deep,returnDom){var clone=this.dom.cloneNode(deep);Ext.supports.CloneNodeCopiesExpando&&clearData(clone,deep);return returnDom?clone:
Ext.get(clone)},constrainScrollLeft:function(left){var dom=this.dom;return Math.max(Math.min(left,dom.scrollWidth-dom.clientWidth),0)},constrainScrollTop:function(top){var dom=this.dom;return Math.max(Math.min(top,dom.scrollHeight-dom.clientHeight),0)},createChild:function(config,insertBefore,returnDom){config=config||{tag:'div'};return insertBefore?Ext.DomHelper.insertBefore(insertBefore,config,!0!==returnDom):Ext.DomHelper.append(this.dom,config,!0!==returnDom)},contains:function(element){if(!element)return!1;
element=Ext.getDom(element);return element===this.dom||this.isAncestor(element)},destroy:function(){var dom=this.dom;dom&&dom.parentNode&&dom.parentNode.removeChild(dom);this.collect()},detach:function(){var dom=this.dom;dom&&dom.parentNode&&'BODY'!==dom.tagName&&dom.parentNode.removeChild(dom);return this},disableShadow:function(){var shadow=this.shadow;shadow&&(shadow.hide(),shadow.disabled=!0)},disableShim:function(){var shim=this.shim;shim&&(shim.hide(),shim.disabled=!0)},doReplaceWith:function(element){var dom=
this.dom;dom.parentNode.replaceChild(Ext.getDom(element),dom)},doScrollIntoView:function(container,hscroll,animate,highlight,getScrollX,scrollTo){scrollFly=scrollFly||new Ext.dom.Fly;var dom=this.dom;getScrollX=scrollFly.attach(container)[getScrollX]();var scrollY=container.scrollTop,position=this.getScrollIntoViewXY(container,getScrollX,scrollY),newScrollX=position.x;position=position.y;highlight&&(animate?animate=Ext.apply({listeners:{afteranimate:function(){scrollFly.attach(dom).highlight()}}},
animate):scrollFly.attach(dom).highlight());position!==scrollY&&scrollFly.attach(container).scrollTo('top',position,animate);if(!1!==hscroll&&newScrollX!==getScrollX)scrollFly.attach(container)[scrollTo]('left',newScrollX,animate);return this},down:function(selector,returnDom){return this.selectNode(selector,!!returnDom)},enableShadow:function(options,isVisible){options=this.shadow||(this.shadow=new Ext.dom.Shadow(Ext.apply({target:this},options)));var shim=this.shim;shim&&(shim.offsets=options.outerOffsets,
shim.shadow=options,options.shim=shim);!0===isVisible||!1!==isVisible&&this.isVisible()?options.show():options.hide();options.disabled=!1},enableShim:function(options,isVisible){options=this.shim||(this.shim=new Ext.dom.Shim(Ext.apply({target:this},options)));var shadow=this.shadow;shadow&&(options.offsets=shadow.outerOffsets,options.shadow=shadow,shadow.shim=options);!0===isVisible||!1!==isVisible&&this.isVisible()?options.show():options.hide();options.disabled=!1;return options},findParent:function(simpleSelector,
limit,returnEl){var target=this.dom,topmost=docEl,depth=0;limit||0===limit?'number'!==typeof limit&&(topmost=Ext.getDom(limit),limit=Number.MAX_VALUE):limit=50;for(;target&&1===target.nodeType&&depth<limit&&target!==topmost;){if(Ext.fly(target).is(simpleSelector))return returnEl?Ext.get(target):target;depth++;target=target.parentNode}return null},findParentNode:function(simpleSelector,limit,returnEl){var p=Ext.fly(this.dom.parentNode);return p?p.findParent(simpleSelector,limit,returnEl):null},first:function(selector,
returnDom){return this.matchNode('nextSibling','firstChild',selector,returnDom)},focus:function(defer,dom){dom=dom||this.dom;Number(defer)?Ext.defer(this.focus,defer,this,[null,dom]):(Ext.GlobalEvents.fireEvent('beforefocus',dom),dom.focus());return this},collect:function(){var dom=this.dom,shadow=this.shadow,shim=this.shim;this.isFly||(this.mixins.observable.destroy.call(this),delete Ext.cache[this.id],this.el=null);dom&&(dom._extData=this.dom=null);shadow&&(shadow.hide(),this.shadow=null);shim&&
(shim.hide(),this.shim=null)},getAnchorToXY:function(el,anchor,local,mySize){return el.getAnchorXY(anchor,local,mySize)},getAttribute:function(name,namespace){var dom=this.dom;return namespace?dom.getAttributeNS(namespace,name)||dom.getAttribute(namespace+':'+name):dom.getAttribute(name)||dom[name]||null},getAttributes:function(){var attributes=this.dom.attributes,result={},len;var i=0;for(len=attributes.length;i<len;i++){var attr=attributes[i];result[attr.name]=attr.value}return result},getBottom:function(local){return(local?
this.getLocalY():this.getY())+this.getHeight()},getById:function(id,asDom){id=DOC.getElementById(id)||this.dom.querySelector(Ext.makeIdSelector(id));return asDom?id:id?Ext.get(id):null},getBorderPadding:function(){var paddingWidth=this.getStyle(paddingsTLRB),bordersWidth=this.getStyle(bordersTLRB);return{beforeX:(parseFloat(bordersWidth[borders.l])||0)+(parseFloat(paddingWidth[paddings.l])||0),afterX:(parseFloat(bordersWidth[borders.r])||0)+(parseFloat(paddingWidth[paddings.r])||0),beforeY:(parseFloat(bordersWidth[borders.t])||
0)+(parseFloat(paddingWidth[paddings.t])||0),afterY:(parseFloat(bordersWidth[borders.b])||0)+(parseFloat(paddingWidth[paddings.b])||0)}},getBorders:function(){var bordersWidth=this.getStyle(bordersTLRB);return{beforeX:parseFloat(bordersWidth[borders.l])||0,afterX:parseFloat(bordersWidth[borders.r])||0,beforeY:parseFloat(bordersWidth[borders.t])||0,afterY:parseFloat(bordersWidth[borders.b])||0}},getBorderWidth:function(side){return this.addStyles(side,borders)},getData:function(preventCreate){var dom=
this.dom;if(dom){var data=dom._extData;data||preventCreate||(dom._extData=data={})}return data},getFirstChild:function(){return Ext.get(this.dom.firstElementChild)},getHeight:function(contentHeight,preciseHeight){var dom=this.dom;if(this.isStyle('display','none'))return 0;if('BODY'===dom.nodeName)var height=Element.getViewportHeight();else height=dom.offsetHeight,null==height&&(height=dom.getBoundingClientRect().height);Ext.supports.Direct2DBug&&(dom=this.adjustDirect2DDimension('height'),preciseHeight?
height+=dom:0<dom&&.5>dom&&height++);contentHeight&&(height-=this.getBorderWidth('tb')+this.getPadding('tb'));return 0>height?0:height},getHtml:function(){return this.dom?this.dom.innerHTML:''},getLeft:function(local){return local?this.getLocalX():this.getX()},getLocalX:function(){var offsetParent,x=this.getStyle('left');x&&'auto'!==x?pxRe.test(x)?x=parseFloat(x):(x=this.getX(),(offsetParent=this.dom.offsetParent)&&(x-=Ext.fly(offsetParent).getX())):x=0;return x},getLocalXY:function(){var offsetParent=
this.getStyle(['left','top']);var x=offsetParent.left,y=offsetParent.top;x&&'auto'!==x?pxRe.test(x)?x=parseFloat(x):(x=this.getX(),(offsetParent=this.dom.offsetParent)&&(x-=Ext.fly(offsetParent).getX())):x=0;y&&'auto'!==y?pxRe.test(y)?y=parseFloat(y):(y=this.getY(),(offsetParent=this.dom.offsetParent)&&(y-=Ext.fly(offsetParent).getY())):y=0;return[x,y]},getLocalY:function(){var offsetParent,y=this.getStyle('top');y&&'auto'!==y?pxRe.test(y)?y=parseFloat(y):(y=this.getY(),(offsetParent=this.dom.offsetParent)&&
(y-=Ext.fly(offsetParent).getY())):y=0;return y},getMargin:function(){var hash={t:'top',l:'left',r:'right',b:'bottom'},allMargins=['margin-top','margin-left','margin-right','margin-bottom'];return function(side){var key;if(side)var o=this.addStyles(side,margins);else if(side=this.getStyle(allMargins),o={},side&&'object'===typeof side)for(key in o={},margins)o[key]=o[hash[key]]=parseFloat(side[margins[key]])||0;return o}}(),getPadding:function(side){return this.addStyles(side,paddings)},getParent:function(){return Ext.get(this.dom.parentNode)},
getRight:function(local){return(local?this.getLocalX():this.getX())+this.getWidth()},getScroll:function(){var dom=this.dom,body=DOC.body;if(dom===DOC||dom===body){var left=docEl.scrollLeft||(body?body.scrollLeft:0);dom=docEl.scrollTop||(body?body.scrollTop:0)}else left=dom.scrollLeft,dom=dom.scrollTop;return{left:left,top:dom}},getScrollIntoViewXY:function(container,scrollX,scrollY){var dom=this.dom,ct=Ext.getDom(container),offsets=this.getOffsetsTo(ct);container=dom.offsetWidth;dom=dom.offsetHeight;
var left=offsets[0]+scrollX;offsets=offsets[1]+scrollY;var bottom=offsets+dom,right=left+container,viewHeight=ct.clientHeight;ct=ct.clientWidth;var viewLeft=scrollX,viewTop=scrollY;dom>viewHeight||offsets<viewTop?scrollY=offsets:bottom>viewTop+viewHeight&&(scrollY=bottom-viewHeight);container>ct||left<viewLeft?scrollX=left:right>viewLeft+ct&&(scrollX=right-ct);return{x:scrollX,y:scrollY}},getScrollLeft:function(){var dom=this.dom;return dom===DOC||dom===DOC.body?this.getScroll().left:dom.scrollLeft},
getScrollTop:function(){var dom=this.dom;return dom===DOC||dom===DOC.body?this.getScroll().top:dom.scrollTop},getSize:function(contentSize){return{width:this.getWidth(contentSize),height:this.getHeight(contentSize)}},getStyle:function(property,inline){var dom=this.dom,multiple='string'!==typeof property,hooks=this.styleHooks,props=property,len=1;if(multiple){var values={};property=props[0];var i=0;if(!(len=props.length))return values}if(!dom||dom.documentElement)return values||'';var domStyle=dom.style;
if(inline)var style=domStyle;else style=dom.ownerDocument.defaultView.getComputedStyle(dom,null),style||(inline=!0,style=domStyle);do{(domStyle=hooks[property])||(hooks[property]=domStyle={name:Element.normalize(property)});domStyle.get?domStyle=domStyle.get(dom,this,inline,style):(domStyle=domStyle.name,domStyle=style[domStyle]);if(!multiple)return domStyle;values[property]=domStyle;property=props[++i]}while(i<len);return values},getStyleValue:function(name){return this.dom.style.getPropertyValue(name)},
getTop:function(local){return local?this.getLocalY():this.getY()},getTouchAction:function(){return Ext.dom.TouchAction.get(this.dom)},getValue:function(asNumber){var value=this.dom.value;return asNumber?parseInt(value,10):value},getViewSize:function(){var dom=this.dom;return dom===DOC||dom===DOC.body?{width:Element.getViewportWidth(),height:Element.getViewportHeight()}:{width:dom.clientWidth,height:dom.clientHeight}},getVisibilityMode:function(){var data=this.getData(),mode=data.visibilityMode;void 0===
mode&&(data.visibilityMode=mode=Element.DISPLAY);return mode},getWidth:function(contentWidth,preciseWidth){var dom=this.dom;if(this.isStyle('display','none'))return 0;Ext.supports.BoundingClientRect?(dom=dom.getBoundingClientRect(),dom=this.vertical&&!Ext.supports.RotatedBoundingClientRect?dom.bottom-dom.top:dom.right-dom.left,dom=preciseWidth?dom:Math.ceil(dom)):dom=dom.offsetWidth;if(Ext.supports.Direct2DBug&&!this.vertical){var floating=this.adjustDirect2DDimension('width');preciseWidth?dom+=floating:
0<floating&&.5>floating&&dom++}contentWidth&&(dom-=this.getBorderWidth('lr')+this.getPadding('lr'));return 0>dom?0:dom},getX:function(){return this.getXY()[0]},getXY:function(){var round=Math.round,dom=this.dom,body=DOC.body,x=0,y=0;if(dom!==DOC&&dom!==body)try{var bodyRect=body.getBoundingClientRect();var rect=dom.getBoundingClientRect();x=rect.left-bodyRect.left;y=rect.top-bodyRect.top}catch(ex){}return[round(x),round(y)]},getY:function(){return this.getXY()[1]},getZIndex:function(){return parseInt(this.getStyle('z-index'),
10)},hasCls:function(name){var elementData=this.getData();elementData.isSynchronized||this.synchronize();return elementData.classMap.hasOwnProperty(name)},hide:function(){this.setVisible(!1);return this},insertAfter:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el.nextSibling);return this},insertBefore:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el);return this},insertFirst:function(el,returnDom){el=el||{};return el.nodeType||el.dom||'string'===typeof el?
(el=Ext.getDom(el),this.dom.insertBefore(el,this.dom.firstChild),returnDom?el:Ext.get(el)):this.createChild(el,this.dom.firstChild,returnDom)},insertHtml:function(where,html,returnEl){where=Ext.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(where):where},insertSibling:function(el,where,returnDom){var DomHelper=Ext.DomHelper;where='after'===(where||'before').toLowerCase();var e;if(Ext.isIterable(el)){var eLen=el.length;DomHelper=Ext.fly(DOC.createDocumentFragment());if(Ext.isArray(el))for(e=
0;e<eLen;e++)var rt=DomHelper.appendChild(el[e],returnDom);else{for(e=0;e<eLen;e++)DomHelper.dom.appendChild(rt=el[0]);!1===returnDom&&(rt=Ext.get(rt))}this.dom.parentNode.insertBefore(DomHelper.dom,where?this.dom.nextSibling:this.dom);return rt}el=el||{};el.nodeType||el.dom?(rt=this.dom.parentNode.insertBefore(Ext.getDom(el),where?this.dom.nextSibling:this.dom),returnDom||(rt=Ext.get(rt))):rt=where&&!this.dom.nextSibling?DomHelper.append(this.dom.parentNode,el,!returnDom):DomHelper[where?'insertAfter':
'insertBefore'](this.dom,el,!returnDom);return rt},is:function(selector){var dom=this.dom;return selector?dom.tagName?Ext.isFunction(selector)?selector(dom):dom[Ext.supports.matchesSelector](selector):!1:!0},isAncestor:function(el){var ret=!1,dom=this.dom;el=Ext.getDom(el);if(dom&&el){if(dom.contains)return dom.contains(el);if(dom.compareDocumentPosition)return!!(dom.compareDocumentPosition(el)&16);for(;el=el.parentNode;)ret=el===dom||ret}return ret},isPainted:function(){return Ext.browser.is.IE?
function(){var dom=this.dom;return!(!dom||0===dom.offsetHeight||0===dom.offsetWidth)}:function(){var dom=this.dom;return!(!dom||!dom.offsetParent)}}(),isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth},isStyle:function(style,val){return this.getStyle(style)===val},isVisible:function(deep){var dom=this.dom,end;if(!dom)return!1;visFly||(visFly=new Ext.dom.Fly);for(end=dom.ownerDocument.documentElement;dom!==end;dom=dom.parentNode){if(!dom||
11===dom.nodeType||visFly.attach(dom).isStyle('visibility','hidden')||visFly.isStyle('display','none'))return!1;if(!deep)break}return!0},last:function(selector,returnDom){return this.matchNode('previousSibling','lastChild',selector,returnDom)},matchNode:function(dir,start,selector,returnDom){var dom=this.dom;if(!dom)return null;for(start=dom[start];start;){if(1===start.nodeType&&(!selector||Ext.fly(start,'_matchNode').is(selector)))return returnDom?start:Ext.get(start);start=start[dir]}return null},
monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){Ext.isIE9m&&e.enableIEAsync();timer=Ext.defer(handler,delay,scope||me,[e])},mouseenter:function(){clearTimeout(timer)},destroy:function(){clearTimeout(timer);me.un(listeners)}};me.on(listeners);return listeners},next:function(selector,returnDom){return this.matchNode('nextSibling','nextSibling',selector,returnDom)},parent:function(selector,returnDom){return this.matchNode('parentNode','parentNode',
selector,returnDom)},position:function(pos,zIndex,x,y){'BODY'!==this.dom.tagName&&(!pos&&this.isStyle('position','static')?this.setStyle('position','relative'):pos&&this.setStyle('position',pos),zIndex&&this.setStyle('z-index',zIndex),(x||y)&&this.setXY([x||!1,y||!1]))},prev:function(selector,returnDom){return this.matchNode('previousSibling','previousSibling',selector,returnDom)},query:function(selector,asDom,single){var dom=this.dom,results,len,nlen;if(!dom)return null;asDom=!1!==asDom;selector=
selector.split(',');single||(results=[]);var i=0;for(len=selector.length;i<len;i++)if('string'===typeof selector[i]){if(single)return selector=dom.querySelector(selector[i]),asDom?selector:Ext.get(selector);var nodes=dom.querySelectorAll(selector[i]);var j=0;for(nlen=nodes.length;j<nlen;j++)results.push(asDom?nodes[j]:Ext.get(nodes[j]))}return results},radioCls:function(className){var cn=this.dom.parentNode.childNodes,v;className=Ext.isArray(className)?className:[className];for(var i=0,len=cn.length;i<
len;i++)(v=cn[i])&&1===v.nodeType&&Ext.fly(v).removeCls(className);return this.addCls(className)},redraw:function(){var dom=this.dom,domStyle=dom.style;domStyle.display='none';dom.offsetHeight;domStyle.display=''},remove:function(){this.destroy()},removeChild:function(element){this.dom.removeChild(Ext.getDom(element));return this},removeCls:function(names,prefix,suffix){var elementData=this.getData(),ln,name;if(!names)return this;elementData.isSynchronized||this.synchronize();var dom=this.dom;var map=
elementData.classMap;elementData=elementData.classList;prefix=prefix?prefix+'-':'';suffix=suffix?'-'+suffix:'';'string'===typeof names&&(names=names.split(spacesRe));var i=0;for(ln=names.length;i<ln;i++)if(name=names[i])if(name=prefix+name+suffix,map[name]){delete map[name];Ext.Array.remove(elementData,name);var hasNewCls=!0}hasNewCls&&(dom.className=elementData.join(' '));return this},repaint:function(){var me=this;me.addCls('x-repaint');Ext.defer(function(){me.dom&&Ext.fly(me.dom).removeCls('x-repaint')},
1);return me},replace:function(el,destroy){el=Ext.getDom(el);var parentNode=el.parentNode,id=el.id,dom=this.dom;!1!==destroy&&id&&Ext.cache[id]?(parentNode.insertBefore(dom,el),Ext.get(el).destroy()):parentNode.replaceChild(dom,el);return this},replaceCls:function(oldName,newName,prefix,suffix){var ln,elementData=this.getData();if(!oldName&&!newName)return this;oldName=oldName||[];newName=newName||[];elementData.isSynchronized||this.synchronize();suffix||(suffix='');var dom=this.dom;var map=elementData.classMap;
prefix=prefix?prefix+'-':'';suffix=suffix?'-'+suffix:'';'string'===typeof oldName&&(oldName=oldName.split(spacesRe));'string'===typeof newName&&(newName=newName.split(spacesRe));var i=0;for(ln=oldName.length;i<ln;i++){var name=prefix+oldName[i]+suffix;if(map[name]){delete map[name];var change=!0}}i=0;for(ln=newName.length;i<ln;i++)name=prefix+newName[i]+suffix,map[name]||(change=map[name]=!0);change&&(elementData.classList=oldName=Ext.Object.getKeys(map),dom.className=oldName.join(' '));return this},
replaceWith:function(el){var dom=this.dom,parent=dom.parentNode,cache=Ext.cache;this.clearListeners();el.nodeType||el.dom||'string'===typeof el?(el=Ext.get(el),el=parent.insertBefore(el.dom,dom)):el=Ext.DomHelper.insertBefore(dom,el);parent.removeChild(dom);this.dom=el;this.isFly||(delete cache[this.id],cache[this.id=Ext.id(el)]=this);return this},resolveListenerScope:function(defaultScope){var component=this.component;return component?component.resolveListenerScope(defaultScope):this},scroll:function(direction,
distance,animate){if(!this.isScrollable())return!1;direction=direction.charAt(0);var dom=this.dom,side='r'===direction||'l'===direction?'left':'top',scrolled=!1;if('l'===direction||'t'===direction||'u'===direction)distance=-distance;'left'===side?(direction=dom.scrollLeft,distance=this.constrainScrollLeft(direction+distance)):(direction=dom.scrollTop,distance=this.constrainScrollTop(direction+distance));distance!==direction&&(this.scrollTo(side,distance,animate),scrolled=!0);return scrolled},scrollBy:function(deltaX,
deltaY,animate){var dom=this.dom;deltaX.length?(animate=deltaY,deltaY=deltaX[1],deltaX=deltaX[0]):'number'!=typeof deltaX&&(animate=deltaY,deltaY=deltaX.y,deltaX=deltaX.x);deltaX&&this.scrollTo('left',this.constrainScrollLeft(dom.scrollLeft+deltaX),animate);deltaY&&this.scrollTo('top',this.constrainScrollTop(dom.scrollTop+deltaY),animate);return this},scrollChildIntoView:function(child,hscroll){Ext.fly(child).scrollIntoView(this,hscroll)},scrollIntoView:function(container,hscroll,animate,highlight){container=
Ext.getDom(container)||Ext.getBody().dom;return this.doScrollIntoView(container,hscroll,animate,highlight,'getScrollLeft','scrollTo')},scrollTo:function(side,value,animate){side=topRe.test(side)?'scrollTop':'scrollLeft';var dom=this.dom;animate&&this.anim?(dom={to:{}},dom.to[side]=value,Ext.isObject(animate)&&Ext.applyIf(dom,animate),this.animate(dom)):(dom[side]=value,dom[side]=value);return this},select:function(selector,composite){var isElementArray;'string'===typeof selector?selector=this.query(selector,
!composite):isElementArray=!0;return composite?new Ext.CompositeElement(selector,!isElementArray):new Ext.CompositeElementLite(selector,!0)},selectNode:function(selector,asDom){return this.query(selector,asDom,!0)},set:function(attributes,useSet){var dom=this.dom,attribute;for(attribute in attributes)if(attributes.hasOwnProperty(attribute)){var value=attributes[attribute];'style'===attribute?this.applyStyles(value):'cls'===attribute?dom.className=value:!1!==useSet?void 0===value?dom.removeAttribute(attribute):
dom.setAttribute(attribute,value):dom[attribute]=value}return this},setBottom:function(bottom){this.dom.style.bottom=Element.addUnits(bottom);return this},setCls:function(className){var elementData=this.getData(),ln,map;elementData.isSynchronized||this.synchronize();'string'===typeof className&&(className=className.split(spacesRe));elementData.classList=className=className.slice();elementData.classMap=map={};elementData=0;for(ln=className.length;elementData<ln;elementData++)map[className[elementData]]=
!0;this.dom.className=className.join(' ')},setDisplayed:function(value){'boolean'===typeof value&&(value=value?this._getDisplay():'none');this.setStyle('display',value);(this.shadow||this.shim)&&this.setUnderlaysVisible('none'!==value);return this},setHeight:function(height){this.dom.style.height=Element.addUnits(height);(this.shadow||this.shim)&&this.syncUnderlays();return this},setHtml:function(html){this.dom&&(this.dom.innerHTML=html);return this},setId:function(id){var currentId=this.id,cache=
Ext.cache;currentId&&delete cache[currentId];this.id=this.dom.id=id;cache[id]=this;return this},setLeft:function(left){this.dom.style.left=Element.addUnits(left);(this.shadow||this.shim)&&this.syncUnderlays();return this},setLocalX:function(x){var style=this.dom.style;style.right='auto';style.left=null===x?'auto':x+'px';(this.shadow||this.shim)&&this.syncUnderlays();return this},setLocalXY:function(x,y){var style=this.dom.style;style.right='auto';x&&x.length&&(y=x[1],x=x[0]);null===x?style.left='auto':
void 0!==x&&(style.left=x+'px');null===y?style.top='auto':void 0!==y&&(style.top=y+'px');(this.shadow||this.shim)&&this.syncUnderlays();return this},setLocalY:function(y){this.dom.style.top=null===y?'auto':y+'px';(this.shadow||this.shim)&&this.syncUnderlays();return this},setMargin:function(margin){var domStyle=this.dom.style;margin||0===margin?(margin=this.self.unitizeBox(!0===margin?5:margin),domStyle.setProperty('margin',margin,'important')):(domStyle.removeProperty('margin-top'),domStyle.removeProperty('margin-right'),
domStyle.removeProperty('margin-bottom'),domStyle.removeProperty('margin-left'))},setMaxHeight:function(height){this.dom.style['max-height']=Element.addUnits(height);return this},setMaxWidth:function(width){this.dom.style['max-width']=Element.addUnits(width);return this},setMinHeight:function(height){this.dom.style['min-height']=Element.addUnits(height);return this},setMinWidth:function(width){this.dom.style['min-width']=Element.addUnits(width);return this},setOpacity:function(opacity){this.dom&&
this.setStyle('opacity',opacity);return this},setPadding:function(padding){var domStyle=this.dom.style;padding||0===padding?(padding=this.self.unitizeBox(!0===padding?5:padding),domStyle.setProperty('padding',padding,'important')):(domStyle.removeProperty('padding-top'),domStyle.removeProperty('padding-right'),domStyle.removeProperty('padding-bottom'),domStyle.removeProperty('padding-left'))},setRight:function(right){this.dom.style.right=Element.addUnits(right);return this},setScrollLeft:function(left){this.dom.scrollLeft=
left;return this},setScrollTop:function(top){this.dom.scrollTop=top;return this},setSize:function(width,height){var style=this.dom.style;Ext.isObject(width)&&(height=width.height,width=width.width);style.width=Element.addUnits(width);style.height=Element.addUnits(height);(this.shadow||this.shim)&&this.syncUnderlays();return this},setSizeState:function(state){if(!0===state){var add='x-sized';state=['x-unsized','x-stretched']}else!1===state?(add='x-unsized',state=['x-sized','x-stretched']):null===state?
(add='x-stretched',state=['x-sized','x-unsized']):state=['x-sized','x-unsized','x-stretched'];add&&this.addCls(add);this.removeCls(state);return this},setStyle:function(prop,value){var dom=this.dom,hooks=this.styleHooks,style=dom.style,name=prop,hook;if('string'===typeof name)(hook=hooks[name])||(hooks[name]=hook={name:Element.normalize(name)}),value=null==value?'':value,hook.set?hook.set(dom,value,this):style[hook.name]=value,hook.afterSet&&hook.afterSet(dom,value,this);else for(name in prop)prop.hasOwnProperty(name)&&
((hook=hooks[name])||(hooks[name]=hook={name:Element.normalize(name)}),value=prop[name],value=null==value?'':value,hook.set?hook.set(dom,value,this):style[hook.name]=value,hook.afterSet&&hook.afterSet(dom,value,this));return this},setText:function(text){this.dom.textContent=text},setTop:function(top){this.dom.style[TOP]=Element.addUnits(top);(this.shadow||this.shim)&&this.syncUnderlays();return this},setTouchAction:function(touchAction){Ext.dom.TouchAction.set(this.dom,touchAction)},setUnderlaysVisible:function(visible){var shadow=
this.shadow,shim=this.shim;shadow&&!shadow.disabled&&(visible?shadow.show():shadow.hide());shim&&!shim.disabled&&(visible?shim.show():shim.hide())},setVisibility:function(isVisible){var domStyle=this.dom.style;isVisible?domStyle.removeProperty('visibility'):domStyle.setProperty('visibility','hidden','important')},setVisibilityMode:function(mode){this.getData().visibilityMode=mode;return this},setVisible:function(visible){var mode=this.getVisibilityMode(),addOrRemove=visible?'removeCls':'addCls';switch(mode){case Element.DISPLAY:this.removeCls(['x-hidden-visibility',
'x-hidden-offsets','x-hidden-clip']);this[addOrRemove]('x-hidden-display');break;case Element.VISIBILITY:this.removeCls(['x-hidden-display','x-hidden-offsets','x-hidden-clip']);this[addOrRemove]('x-hidden-visibility');break;case Element.OFFSETS:this.removeCls(['x-hidden-visibility','x-hidden-display','x-hidden-clip']);this[addOrRemove]('x-hidden-offsets');break;case Element.CLIP:this.removeCls(['x-hidden-visibility','x-hidden-display','x-hidden-offsets']),this[addOrRemove]('x-hidden-clip')}(this.shadow||
this.shim)&&this.setUnderlaysVisible(visible);return this},setWidth:function(width){this.dom.style.width=Element.addUnits(width);(this.shadow||this.shim)&&this.syncUnderlays();return this},setX:function(x){return this.setXY([x,!1])},setXY:function(xy){xy=this.translatePoints(xy);var style=this.dom.style,pos;this.position();style.right='auto';for(pos in xy)isNaN(xy[pos])||(style[pos]=xy[pos]+'px');(this.shadow||this.shim)&&this.syncUnderlays();return this},setY:function(y){return this.setXY([!1,y])},
setZIndex:function(zindex){this.shadow&&this.shadow.setZIndex(zindex);this.shim&&this.shim.setZIndex(zindex);return this.setStyle('z-index',zindex)},show:function(){this.setVisible(!0);return this},swapCls:function(firstClass,secondClass,flag,prefix){void 0===flag&&(flag=!0);var addedClass=flag?firstClass:secondClass;(firstClass=flag?secondClass:firstClass)&&this.removeCls(prefix?prefix+'-'+firstClass:firstClass);addedClass&&this.addCls(prefix?prefix+'-'+addedClass:addedClass);return this},synchronize:function(){var dom=
this.dom,hasClassMap={},className=dom.className,ln,elementData=this.getData();if(className&&0<className.length)for(dom=dom.className.split(classNameSplitRegex),className=0,ln=dom.length;className<ln;className++){var name=dom[className];hasClassMap[name]=!0}else dom=[];elementData.classList=dom;elementData.classMap=hasClassMap;elementData.isSynchronized=!0;return this},syncUnderlays:function(){var shadow=this.shadow,shim=this.shim,dom=this.dom;if(this.isVisible()){var xy=this.getXY();var x=xy[0];xy=
xy[1];var w=dom.offsetWidth;dom=dom.offsetHeight;shadow&&!shadow.hidden&&shadow.realign(x,xy,w,dom);shim&&!shim.hidden&&shim.realign(x,xy,w,dom)}},toggleCls:function(className,state){'boolean'!==typeof state&&(state=!this.hasCls(className));return state?this.addCls(className):this.removeCls(className)},toggle:function(){this.setVisible(!this.isVisible());return this},translate:function(){var transformStyleName='webkitTransform'in DOC.createElement('div').style?'webkitTransform':'transform';return function(x,
y,z){x=Math.round(x);y=Math.round(y);z=Math.round(z);this.dom.style[transformStyleName]='translate3d('+(x||0)+'px, '+(y||0)+'px, '+(z||0)+'px)'}}(),unwrap:function(){var dom=this.dom,parentNode=dom.parentNode,activeElement=Ext.fly(Ext.Element.getActiveElement()),cached;(cached=Ext.cache[activeElement.id])&&(activeElement=cached);if(this.contains(activeElement)){cached&&cached.suspendFocusEvents();var resumeFocus=!0}if(parentNode){var grandparentNode=parentNode.parentNode;if(resumeFocus){var tabIndex=
grandparentNode.getAttribute('tabIndex');var grannyFly=Ext.fly(grandparentNode);grannyFly.set({tabIndex:-1});grannyFly.suspendFocusEvents();grannyFly.focus()}grandparentNode.insertBefore(dom,parentNode);grandparentNode.removeChild(parentNode)}else grandparentNode=DOC.createDocumentFragment(),grandparentNode.appendChild(dom);resumeFocus&&(cached?(cached.focus(),cached.resumeFocusEvents()):Ext.fly(activeElement).focus(),grannyFly&&(grannyFly.resumeFocusEvents(),grannyFly.set({tabIndex:tabIndex})));
return this},up:function(simpleSelector,limit,returnDom){return this.findParentNode(simpleSelector,limit,!returnDom)},update:function(html){return this.setHtml(html)},wrap:function(config,returnDom,selector){var dom=this.dom,target=config=Ext.DomHelper.insertBefore(dom,config||{tag:'div'},!returnDom),activeElement=Ext.Element.getActiveElement(),cached;(cached=Ext.cache[activeElement.id])&&(activeElement=cached);selector&&(target=config.selectNode(selector,returnDom));if(this.contains(activeElement)){cached&&
cached.suspendFocusEvents();var tabIndex=config.dom.getAttribute('tabIndex');config.set({tabIndex:-1});config.suspendFocusEvents();config.focus();var resumeFocus=!0}target.appendChild(dom);resumeFocus&&(cached?(cached.focus(),cached.resumeFocusEvents()):Ext.fly(activeElement).focus(),config.resumeFocusEvents(),config.set({tabIndex:tabIndex}));return config},privates:{doAddListener:function(eventName,fn,scope,options,order,caller,manager){var originalName=eventName,additiveEventName;eventName=Ext.canonicalEventName(eventName);
if(!this.blockedEvents[eventName]){var observableDoAddListener=this.mixins.observable.doAddListener;options=options||{};!1===Element.useDelegatedEvents&&(options.delegated=options.delegated||!1);if(!1!==options.translate){if(additiveEventName=this.additiveEvents[eventName])options.type=eventName,eventName=additiveEventName,observableDoAddListener.call(this,eventName,fn,scope,options,order,caller,manager);if(additiveEventName=this.eventMap[eventName])options.type=options.type||eventName,manager&&(options.managedName=
originalName),eventName=additiveEventName}if(observableDoAddListener.call(this,eventName,fn,scope,options,order,caller,manager)&&this.longpressEvents[eventName]&&1===++this.longpressListenerCount)this.on('MSHoldVisual','preventMsHoldVisual',this);manager&&additiveEventName&&delete options.managedName;delete options.type}},doRemoveListener:function(eventName,fn,scope){var translatedEventName,removed;eventName=Ext.canonicalEventName(eventName);if(!this.blockedEvents[eventName]){var observableDoRemoveListener=
this.mixins.observable.doRemoveListener;if(translatedEventName=this.additiveEvents[eventName])eventName=translatedEventName,observableDoRemoveListener.call(this,eventName,fn,scope);(translatedEventName=this.eventMap[eventName])&&(removed=observableDoRemoveListener.call(this,translatedEventName,fn,scope));(removed=observableDoRemoveListener.call(this,eventName,fn,scope)||removed)&&this.longpressEvents[eventName]&&!--this.longpressListenerCount&&this.un('MSHoldVisual','preventMsHoldVisual',this)}},
_initEvent:function(eventName){return this.events[eventName]=new Ext.dom.ElementEvent(this,eventName)},_getDisplay:function(){var data=this.getData(),display=data.originalDisplay;void 0===display&&(data.originalDisplay=display='');return display},_getPublisher:function(eventName){var Publisher=Ext.event.publisher.Publisher,publisher=Publisher.publishersByEvent[eventName];if(!publisher||this.dom===window&&'resize'===eventName)publisher=Publisher.publishers.dom;return publisher},isFocusSuspended:function(){return!!this.getData().suspendFocusEvents},
preventMsHoldVisual:function(e){e.preventDefault()},suspendFocusEvents:function(){this.isFly||this.suspendEvent('focus','blur');this.getData().suspendFocusEvents=!0},resumeFocusEvents:function(){function resumeFn(){var data;if(!this.destroyed){if(data=this.getData())data.suspendFocusEvents=!1;this.isFly||this.resumeEvent('focus','blur')}}!this.destroyed&&this.getData().suspendFocusEvents&&(Ext.isIE?Ext.asap(resumeFn,this):resumeFn.call(this))}},deprecated:{'5.0':{methods:{cssTranslate:null,getHTML:'getHtml',
getOuterHeight:null,getOuterWidth:null,getPageBox:function(getRegion){var dom=this.dom,isDoc='BODY'===dom.nodeName,w=isDoc?Element.getViewportWidth():dom.offsetWidth;dom=isDoc?Element.getViewportHeight():dom.offsetHeight;var xy=this.getXY();isDoc=xy[1];var r=xy[0]+w,b=xy[1]+dom;xy=xy[0];return getRegion?new Ext.util.Region(isDoc,r,b,xy):{left:xy,top:isDoc,width:w,height:dom,right:r,bottom:b}},getScrollParent:null,isDescendent:null,isTransparent:function(prop){return(prop=this.getStyle(prop))?transparentRe.test(prop):
!1},purgeAllListeners:'clearListeners',removeAllListeners:'clearListeners',setHTML:'setHtml',setTopLeft:null}}}}},1,0,0,0,0,[[Ext.util.Positionable.prototype.mixinId||Ext.util.Positionable.$className,Ext.util.Positionable],[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.dom,'Element',Ext,'Element'],function(Element){var DOC=document,docEl=DOC.documentElement,prototype=Element.prototype,supports=Ext.supports,eventMap=prototype.eventMap={},additiveEvents=
prototype.additiveEvents={},oldId=Ext.id;Ext.id=function(obj,prefix){var el=Ext.getDom(obj,!0);el?(obj=el.id)||(obj=oldId(null,prefix||Element.prototype.identifiablePrefix),Ext.isSandboxed&&(prefix=Ext.sandboxPrefix||(Ext.sandboxPrefix=Ext.sandboxName.toLowerCase()+'-'),obj=prefix+obj),el.id=obj):obj=oldId(obj,prefix);return obj};supports.PointerEvents?(eventMap.mousedown='pointerdown',eventMap.mousemove='pointermove',eventMap.mouseup='pointerup',eventMap.touchstart='pointerdown',eventMap.touchmove=
'pointermove',eventMap.touchend='pointerup',eventMap.touchcancel='pointercancel',eventMap.mouseover='pointerover',eventMap.mouseout='pointerout',eventMap.mouseenter='pointerenter',Ext.isIE11||(eventMap.mouseleave='pointerleave')):supports.MSPointerEvents?(eventMap.pointerdown='MSPointerDown',eventMap.pointermove='MSPointerMove',eventMap.pointerup='MSPointerUp',eventMap.pointercancel='MSPointerCancel',eventMap.mousedown='MSPointerDown',eventMap.mousemove='MSPointerMove',eventMap.mouseup='MSPointerUp',
eventMap.touchstart='MSPointerDown',eventMap.touchmove='MSPointerMove',eventMap.touchend='MSPointerUp',eventMap.touchcancel='MSPointerCancel',eventMap.mouseover='MSPointerOver',eventMap.mouseout='MSPointerOut'):supports.TouchEvents?(eventMap.pointerdown='touchstart',eventMap.pointermove='touchmove',eventMap.pointerup='touchend',eventMap.pointercancel='touchcancel',eventMap.mousedown='touchstart',eventMap.mousemove='touchmove',eventMap.mouseup='touchend',eventMap.click='tap',eventMap.dblclick='doubletap',
Ext.isWebKit&&Ext.os.is.Desktop&&(eventMap.touchstart='mousedown',eventMap.touchmove='mousemove',eventMap.touchend='mouseup',eventMap.touchcancel='mouseup',additiveEvents.mousedown='mousedown',additiveEvents.mousemove='mousemove',additiveEvents.mouseup='mouseup',additiveEvents.touchstart='touchstart',additiveEvents.touchmove='touchmove',additiveEvents.touchend='touchend',additiveEvents.touchcancel='touchcancel',additiveEvents.pointerdown='mousedown',additiveEvents.pointermove='mousemove',additiveEvents.pointerup=
'mouseup',additiveEvents.pointercancel='mouseup')):(eventMap.pointerdown='mousedown',eventMap.pointermove='mousemove',eventMap.pointerup='mouseup',eventMap.pointercancel='mouseup',eventMap.touchstart='mousedown',eventMap.touchmove='mousemove',eventMap.touchend='mouseup',eventMap.touchcancel='mouseup');Ext.isWebKit&&(eventMap.transitionend=Ext.browser.getVendorProperyName('transitionEnd'),eventMap.animationstart=Ext.browser.getVendorProperyName('animationStart'),eventMap.animationend=Ext.browser.getVendorProperyName('animationEnd'));
Ext.supports.MouseWheel||Ext.isOpera||(eventMap.mousewheel='DOMMouseScroll');supports=prototype.$eventOptions=Ext.Object.chain(prototype.$eventOptions);supports.translate=supports.capture=supports.delegate=supports.delegated=supports.stopEvent=supports.preventDefault=supports.stopPropagation=supports.element=1;prototype.styleHooks.opacity={name:'opacity',afterSet:function(dom,value,el){(dom=el.shadow)&&dom.setOpacity(value)}};prototype.getTrueXY=prototype.getXY;Ext.select=Element.select;Ext.query=
Element.query;Ext.apply(Ext,{get:function(element){return Element.get(element)},getDom:function(el){return el&&DOC?'string'===typeof el?Ext.getElementById(el):'dom'in el?el.dom:el:null},getBody:function(){if(!Ext._bodyEl){if(!DOC.body)throw Error('[Ext.getBody] document.body does not yet exist');Ext._bodyEl=Ext.get(DOC.body)}return Ext._bodyEl},getHead:function(){Ext._headEl||(Ext._headEl=Ext.get(DOC.head||DOC.getElementsByTagName('head')[0]));return Ext._headEl},getDoc:function(){Ext._docEl||(Ext._docEl=
Ext.get(DOC));return Ext._docEl},getWin:function(){Ext._winEl||(Ext._winEl=Ext.get(window));return Ext._winEl},removeNode:function(node){node=node.dom||node;var el=Ext.cache[node&&node.id];el?el.destroy():!node||3!==node.nodeType&&'BODY'===node.tagName.toUpperCase()||(el=node.parentNode)&&el.removeChild(node)}});Ext.isGarbage=function(dom){return dom&&1===dom.nodeType&&'BODY'!==dom.tagName&&'HTML'!==dom.tagName&&(!dom.parentNode||null===dom.offsetParent&&(Ext.isIE8?DOC.all[dom.id]:DOC.getElementById(dom.id))!==
dom&&!(Ext.detachedBodyEl&&Ext.detachedBodyEl.isAncestor(dom)))};if(Ext.os.is.Android||Ext.os.is.Windows&&Ext.supports.Touch)Ext.onReady(function(){var win=Ext.getWin();Element._documentWidth=Element._viewportWidth=docEl.clientWidth;Element._documentHeight=Element._viewportHeight=docEl.clientHeight;win.on({focusin:'_onWindowFocusChange',focusout:'_onWindowFocusChange',pointerup:'_onWindowFocusChange',capture:!0,delegated:!1,delay:1,scope:Element});win.on({resize:'_onWindowResize',priority:2E3,scope:Element})})});
Ext.cmd.derive('Ext.util.Filter',Ext.Base,{isFilter:!0,config:{property:null,value:null,filterFn:null,id:null,anyMatch:!1,exactMatch:!1,caseSensitive:!1,disabled:!1,disableOnEmpty:!1,operator:null,root:null,serializer:null,convert:null},scope:null,$configStrict:!1,statics:{createFilterFn:function(filters){return filters?function(candidate){var items=filters.isCollection?filters.items:filters,length=items.length,match=!0,i;for(i=0;match&&i<length;i++){var filter=items[i];filter.getDisabled()||(match=
filter.filter(candidate))}return match}:Ext.returnTrue},isEqual:function(filter1,filter2){return filter1.getProperty()!==filter2.getProperty()||filter1.getOperator()!==filter2.getOperator()?!1:filter1.getValue()===filter2.getValue()||Ext.isArray(filter1)&&Ext.isArray(filter2)&&Ext.Array.equals(filter1,filter2)?!0:!1},isInvalid:function(cfg){if(!cfg.filterFn){if(!cfg.property)return'A Filter requires either a property or a filterFn to be set';if(!cfg.hasOwnProperty('value')&&!cfg.operator)return'A Filter requires either a property and value, or a filterFn to be set'}return!1}},
constructor:function(config){this.initConfig(config)},preventConvert:{'in':1,notin:1},filter:function(item){var filterFn=this._filterFn||this.getFilterFn(),convert=this.getConvert(),value=this._value;this._filterValue=value;if(this.isDateValue=Ext.isDate(value))this.dateValue=value.getTime();convert&&!this.preventConvert[this.getOperator()]&&(this._filterValue=convert.call(this.scope||this,value));return filterFn.call(this.scope||this,item)},getId:function(){var id=this._id;id||((id=this.getProperty())||
(id=Ext.id(null,'ext-filter-')),this._id=id);return id},getFilterFn:function(){var filterFn=this._filterFn;filterFn||(this._filterFn=filterFn=(filterFn=this.getOperator())?this.operatorFns[filterFn]:this.createRegexFilter(),this.generatedFilterFn=!0);return filterFn},createRegexFilter:function(){var me=this,anyMatch=!!me.getAnyMatch(),exact=!!me.getExactMatch(),value=me.getValue(),matcher=Ext.String.createRegex(value,!anyMatch,!anyMatch&&exact,!me.getCaseSensitive());return function(item){item=me.getPropertyValue(item);
return matcher?matcher.test(item):null==item}},getPropertyValue:function(item){var root=this._root;return(null==root?item:item[root])[this._property]},getState:function(){var config=this.getInitialConfig(),result={},name;for(name in config)config.hasOwnProperty(name)&&(result[name]=config[name]);delete result.root;result.value=this.getValue();return result},getScope:function(){return this.scope},serialize:function(){var result=this.getState(),serializer=this.getSerializer();delete result.id;delete result.serializer;
serializer&&(serializer=serializer.call(this,result))&&(result=serializer);return result},updateOperator:function(){this.generatedFilterFn&&(this._filterFn=null)},updateValue:function(value){this.generatedFilterFn&&(this._filterFn=null);this.getDisableOnEmpty()&&this.setDisabled(Ext.isEmpty(value))},updateFilterFn:function(filterFn){delete this.generatedFilterFn},updateDisableOnEmpty:function(disableOnEmpty){disableOnEmpty&&this.setDisabled(Ext.isEmpty(this.getValue()))},privates:{getCandidateValue:function(candidate,
v,preventCoerce){var convert=this._convert;candidate=this.getPropertyValue(candidate);convert?candidate=convert.call(this.scope||this,candidate):preventCoerce||(candidate=Ext.coerce(candidate,v));return candidate}}},1,0,0,0,0,0,[Ext.util,'Filter'],function(){var operatorFns=this.prototype.operatorFns={'\x3c':function(candidate){var v=this._filterValue;return this.getCandidateValue(candidate,v)<v},'\x3c\x3d':function(candidate){var v=this._filterValue;return this.getCandidateValue(candidate,v)<=v},
'\x3d':function(candidate){var v=this._filterValue;candidate=this.getCandidateValue(candidate,v);this.isDateValue&&candidate instanceof Date&&(candidate=candidate.getTime(),v=this.dateValue);return candidate==v},'\x3d\x3d\x3d':function(candidate){var v=this._filterValue;candidate=this.getCandidateValue(candidate,v,!0);this.isDateValue&&candidate instanceof Date&&(candidate=candidate.getTime(),v=this.dateValue);return candidate===v},'\x3e\x3d':function(candidate){var v=this._filterValue;return this.getCandidateValue(candidate,
v)>=v},'\x3e':function(candidate){var v=this._filterValue;return this.getCandidateValue(candidate,v)>v},'!\x3d':function(candidate){var v=this._filterValue;candidate=this.getCandidateValue(candidate,v);this.isDateValue&&candidate instanceof Date&&(candidate=candidate.getTime(),v=this.dateValue);return candidate!=v},'!\x3d\x3d':function(candidate){var v=this._filterValue;candidate=this.getCandidateValue(candidate,v,!0);this.isDateValue&&candidate instanceof Date&&(candidate=candidate.getTime(),v=this.dateValue);
return candidate!==v},'in':function(candidate){var v=this._filterValue;return Ext.Array.contains(v,this.getCandidateValue(candidate,v))},notin:function(candidate){var v=this._filterValue;return!Ext.Array.contains(v,this.getCandidateValue(candidate,v))},like:function(candidate){var v=this._filterValue;return v&&-1<this.getCandidateValue(candidate,v).toLowerCase().indexOf(v.toLowerCase())},'/\x3d':function(candidate){var v=this._filterValue;candidate=this.getCandidateValue(candidate,v);if(v!==this.lastRegExpSource){this.lastRegExpSource=
v;try{this.regex=new RegExp(v,'i')}catch(e){this.regex=null}}return this.regex?this.regex.test(candidate):!1}};operatorFns['\x3d\x3d']=operatorFns['\x3d'];operatorFns.gt=operatorFns['\x3e'];operatorFns.ge=operatorFns['\x3e\x3d'];operatorFns.lt=operatorFns['\x3c'];operatorFns.le=operatorFns['\x3c\x3d'];operatorFns.eq=operatorFns['\x3d'];operatorFns.ne=operatorFns['!\x3d']});
Ext.cmd.derive('Ext.util.Observable',Ext.mixin.Observable,{$applyConfigs:!0},0,0,0,0,0,0,[Ext.util,'Observable'],function(Observable){var Super=Ext.mixin.Observable;Observable.releaseCapture=Super.releaseCapture;Observable.capture=Super.capture;Observable.captureArgs=Super.captureArgs;Observable.observe=Observable.observeClass=Super.observe});
Ext.cmd.derive('Ext.util.AbstractMixedCollection',Ext.Base,{isMixedCollection:!0,generation:0,indexGeneration:0,constructor:function(allowFunctions,keyFn){1===arguments.length&&Ext.isObject(allowFunctions)?(this.initialConfig=allowFunctions,Ext.apply(this,allowFunctions)):(this.allowFunctions=!0===allowFunctions,keyFn&&(this.getKey=keyFn),this.initialConfig={allowFunctions:this.allowFunctions,getKey:this.getKey});this.items=[];this.map={};this.keys=[];this.indexMap={};this.length=0;this.mixins.observable.constructor.call(this)},
destroy:function(){this.items=this.map=this.keys=this.indexMap=null;this.callParent()},allowFunctions:!1,add:function(key,obj){var len=this.length;return 1===arguments.length?this.insert(len,key):this.insert(len,key,obj)},getKey:function(o){return o.id},replace:function(key,o){1==arguments.length&&(o=arguments[0],key=this.getKey(o));var old=this.map[key];if('undefined'==typeof key||null===key||'undefined'==typeof old)return this.add(key,o);this.generation++;var index=this.indexOfKey(key);this.items[index]=
o;this.map[key]=o;this.hasListeners.replace&&this.fireEvent('replace',key,old,o);return o},reorder:function(mapping){var items=this.items,index,length=items.length,order=[],remaining=[];this.suspendEvents();for(index in mapping)order[mapping[index]]=items[index];for(index=0;index<length;index++)void 0==mapping[index]&&remaining.push(items[index]);for(index=0;index<length;index++)void 0==order[index]&&(order[index]=remaining.shift());this.clear();this.addAll(order);this.resumeEvents()},updateKey:function(oldKey,
newKey){var map=this.map,index=this.indexOfKey(oldKey),indexMap=this.indexMap;if(-1<index){var item=map[oldKey];delete map[oldKey];delete indexMap[oldKey];map[newKey]=item;indexMap[newKey]=index;this.keys[index]=newKey;this.indexGeneration=++this.generation}},addAll:function(objs){var key;if(1<arguments.length||Ext.isArray(objs))this.insert(this.length,1<arguments.length?arguments:objs);else for(key in objs)objs.hasOwnProperty(key)&&(this.allowFunctions||'function'!=typeof objs[key])&&this.add(key,
objs[key])},each:function(fn,scope){for(var items=Ext.Array.push([],this.items),i=0,len=items.length,item;i<len&&(item=items[i],!1!==fn.call(scope||item,item,i,len));i++);},eachKey:function(fn,scope){for(var keys=this.keys,items=this.items,i=0,len=keys.length;i<len;i++)fn.call(scope||window,keys[i],items[i],i,len)},findBy:function(fn,scope){for(var keys=this.keys,items=this.items,i=0,len=items.length;i<len;i++)if(fn.call(scope||window,items[i],keys[i]))return items[i];return null},insert:function(index,
key,obj){if(Ext.isIterable(key))var out=this.doInsert(index,key,obj);else out=2<arguments.length?this.doInsert(index,[key],[obj]):this.doInsert(index,[key]),out=out[0];return out},doInsert:function(index,keys,objects){var i,len=keys.length,deDupedLen=len,fireAdd=this.hasListeners.add,newKeys={};if(null!=objects)this.useLinearSearch=!0;else for(objects=keys,keys=Array(len),i=0;i<len;i++)keys[i]=this.getKey(objects[i]);this.suspendEvents();for(i=0;i<len;i++){var itemKey=keys[i];var removeIndex=this.indexOfKey(itemKey);
-1!==removeIndex&&(removeIndex<index&&index--,this.removeAt(removeIndex));if(null!=itemKey){if(null!=newKeys[itemKey]){var passedDuplicates=!0;deDupedLen--}newKeys[itemKey]=i}}this.resumeEvents();if(passedDuplicates){len=keys;removeIndex=objects;keys=Array(deDupedLen);objects=Array(deDupedLen);i=0;for(itemKey in newKeys)keys[i]=len[newKeys[itemKey]],objects[i]=removeIndex[newKeys[itemKey]],i++;len=deDupedLen}deDupedLen=index===this.length&&this.indexGeneration===this.generation;Ext.Array.insert(this.items,
index,objects);Ext.Array.insert(this.keys,index,keys);this.length+=len;this.generation++;deDupedLen&&(this.indexGeneration=this.generation);for(i=0;i<len;i++,index++)itemKey=keys[i],null!=itemKey&&(this.map[itemKey]=objects[i],deDupedLen&&(this.indexMap[itemKey]=index)),fireAdd&&this.fireEvent('add',index,objects[i],itemKey);return objects},remove:function(o){var removeKey;o=!this.useLinearSearch&&(removeKey=this.getKey(o))?this.indexOfKey(removeKey):Ext.Array.indexOf(this.items,o);return-1===o?!1:
this.removeAt(o)},removeAll:function(items){var i;if(items||this.hasListeners.remove)if(items)for(i=items.length-1;0<=i;--i)this.remove(items[i]);else for(;this.length;)this.removeAt(0);else this.length=this.items.length=this.keys.length=0,this.map={},this.indexMap={},this.generation++,this.indexGeneration=this.generation},removeAt:function(index){if(index<this.length&&0<=index){this.length--;var o=this.items[index];Ext.Array.erase(this.items,index,1);var key=this.keys[index];'undefined'!=typeof key&&
delete this.map[key];Ext.Array.erase(this.keys,index,1);this.hasListeners.remove&&this.fireEvent('remove',o,key);this.generation++;return o}return!1},removeRange:function(index,removeCount){var i,trimming;if(index<this.length&&0<=index){removeCount||(removeCount=1);var limit=Math.min(index+removeCount,this.length);removeCount=limit-index;var syncIndices=(trimming=limit===this.length)&&this.indexGeneration===this.generation;for(i=index;i<limit;i++){var o=this.keys[i];null!=o&&(delete this.map[o],syncIndices&&
delete this.indexMap[o])}o=this.items[i-1];this.length-=removeCount;this.generation++;syncIndices&&(this.indexGeneration=this.generation);trimming?this.items.length=this.keys.length=this.length:(this.items.splice(index,removeCount),this.keys.splice(index,removeCount));return o}return!1},removeAtKey:function(key){var keys=this.keys;if(null==key)for(key=keys.length-1;0<=key;key--)null==keys[key]&&this.removeAt(key);else return this.removeAt(this.indexOfKey(key))},getCount:function(){return this.length},
indexOf:function(o){var key;return null!=o?!this.useLinearSearch&&(key=this.getKey(o))?this.indexOfKey(key):Ext.Array.indexOf(this.items,o):-1},indexOfKey:function(key){if(!this.map.hasOwnProperty(key))return-1;this.indexGeneration!==this.generation&&this.rebuildIndexMap();return this.indexMap[key]},rebuildIndexMap:function(){var indexMap=this.indexMap={},keys=this.keys,len=keys.length,i;for(i=0;i<len;i++)indexMap[keys[i]]=i;this.indexGeneration=this.generation},get:function(key){var mk=this.map[key];
key=void 0!==mk?mk:'number'==typeof key?this.items[key]:void 0;return'function'!=typeof key||this.allowFunctions?key:null},getAt:function(index){return this.items[index]},getByKey:function(key){return this.map[key]},contains:function(o){var key;return null!=o?!this.useLinearSearch&&(key=this.getKey(o))?null!=this.map[key]:-1!==Ext.Array.indexOf(this.items,o):!1},containsKey:function(key){return this.map.hasOwnProperty(key)},clear:function(){this.generation&&(this.length=0,this.items=[],this.keys=
[],this.map={},this.indexMap={},this.generation++,this.indexGeneration=this.generation);this.hasListeners.clear&&this.fireEvent('clear')},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},sum:function(property,root,start,end){property=this.extractValues(property,root);var length=property.length;root=0;end=end||0===end?end:length-1;for(start=start||0;start<=end;start++)root+=property[start];return root},collect:function(property,root,allowNull){property=this.extractValues(property,
root);root=property.length;var hits={},unique=[],i;for(i=0;i<root;i++){var value=property[i];var strValue=String(value);!allowNull&&Ext.isEmpty(value)||hits[strValue]||(hits[strValue]=!0,unique.push(value))}return unique},extractValues:function(property,root){var values=this.items;root&&(values=Ext.Array.pluck(values,root));return Ext.Array.pluck(values,property)},hasRange:function(start,end){return end<this.length},getRange:function(start,end){var items=this.items,range=[],len=items.length;if(1>
len)return range;if(start>end){var reverse=!0;range=start;start=end;end=range}0>start&&(start=0);if(null==end||end>=len)end=len-1;range=items.slice(start,end+1);reverse&&range.length&&range.reverse();return range},filter:function(property,value,anyMatch,caseSensitive){var filters=[];if(Ext.isString(property))filters.push(new Ext.util.Filter({property:property,value:value,anyMatch:anyMatch,caseSensitive:caseSensitive}));else if(Ext.isArray(property)||property instanceof Ext.util.Filter)filters=filters.concat(property);
return this.filterBy(Ext.util.Filter.createFilterFn(filters))},filterBy:function(fn,scope){var newMC=new this.self(this.initialConfig),keys=this.keys,items=this.items,length=items.length,i;newMC.getKey=this.getKey;for(i=0;i<length;i++)fn.call(scope||this,items[i],keys[i])&&newMC.add(keys[i],items[i]);newMC.useLinearSearch=this.useLinearSearch;return newMC},findIndex:function(property,value,start,anyMatch,caseSensitive){if(Ext.isEmpty(value,!1))return-1;value=this.createValueMatcher(value,anyMatch,
caseSensitive);return this.findIndexBy(function(o){return o&&value.test(o[property])},null,start)},findIndexBy:function(fn,scope,start){var keys=this.keys,items=this.items;start=start||0;for(var len=items.length;start<len;start++)if(fn.call(scope||this,items[start],keys[start]))return start;return-1},createValueMatcher:function(value,anyMatch,caseSensitive,exactMatch){if(!value.exec){var er=Ext.String.escapeRegex;value=String(value);!0===anyMatch?value=er(value):(value='^'+er(value),!0===exactMatch&&
(value+='$'));value=new RegExp(value,caseSensitive?'':'i')}return value},clone:function(){var copy=new this.self(this.initialConfig);copy.add(this.keys,this.items);copy.useLinearSearch=this.useLinearSearch;return copy}},1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.util,'AbstractMixedCollection'],0);
Ext.cmd.derive('Ext.util.Sorter',Ext.Base,{isSorter:!0,config:{property:null,sorterFn:null,root:null,transform:null,direction:'ASC',id:void 0},statics:{createComparator:function(sorters,nextFn){nextFn=nextFn||0;return function(lhs,rhs){var items=sorters.isCollection?sorters.items:sorters,n=items.length,comp,i;for(i=0;i<n;++i)if(comp=items[i].sort(lhs,rhs))return comp;return nextFn&&nextFn(lhs,rhs)}}},multiplier:1,constructor:function(config){this.initConfig(config)},getId:function(){var id=this._id;
id||((id=this.getProperty())||(id=Ext.id(null,'ext-sorter-')),this._id=id);return id},sort:function(lhs,rhs){return this.multiplier*this.sortFn(lhs,rhs)},sortFn:function(item1,item2){var transform=this._transform,root=this._root,property=this._property;root&&(item1=item1[root],item2=item2[root]);item1=item1[property];item2=item2[property];transform&&(item1=transform(item1),item2=transform(item2));return item1>item2?1:item1<item2?-1:0},applyDirection:function(direction){return direction?direction:
'ASC'},updateDirection:function(direction){this.multiplier='DESC'===direction.toUpperCase()?-1:1},updateProperty:function(property){property&&delete this.sortFn},updateSorterFn:function(sorterFn){this.sortFn=sorterFn},toggle:function(){this.setDirection(Ext.String.toggle(this.getDirection(),'ASC','DESC'))},getState:function(){var result={root:this.getRoot(),property:this.getProperty(),direction:this.getDirection()};this._id&&(result.id=this._id);return result},serialize:function(){return{property:this.getProperty(),
direction:this.getDirection()}}},1,0,0,0,0,0,[Ext.util,'Sorter'],0);
Ext.cmd.derive('Ext.util.Sortable',Ext.Base,{isSortable:!0,$configPrefixed:!1,$configStrict:!1,config:{sorters:null},defaultSortDirection:'ASC',multiSortLimit:3,statics:{createComparator:function(sorters){return sorters&&sorters.length?function(r1,r2){for(var result=sorters[0].sort(r1,r2),length=sorters.length,i=1;!result&&i<length;i++)result=sorters[i].sort.call(sorters[i],r1,r2);return result}:function(){return 0}}},applySorters:function(sorters){var sortersCollection=this.getSorters()||new Ext.util.MixedCollection(!1,
Ext.returnId);sorters&&sortersCollection.addAll(this.decodeSorters(sorters));return sortersCollection},sort:function(sorters,direction,insertionPosition,doSort){var sorter,currentSorters=this.getSorters();currentSorters||(this.setSorters(null),currentSorters=this.getSorters());Ext.isArray(sorters)?(doSort=insertionPosition,insertionPosition=direction):Ext.isObject(sorters)?(sorters=[sorters],doSort=insertionPosition,insertionPosition=direction):Ext.isString(sorters)&&((sorter=currentSorters.get(sorters))?
null==direction?sorter.toggle():sorter.setDirection(direction):sorter={property:sorters,direction:direction},sorters=[sorter]);if(sorters&&sorters.length)switch(sorters=this.decodeSorters(sorters),insertionPosition){case 'multi':currentSorters.insert(0,sorters[0]);direction=currentSorters.getCount()-this.multiSortLimit;0<direction&&currentSorters.removeRange(this.multiSortLimit,direction);break;case 'prepend':currentSorters.insert(0,sorters);break;case 'append':currentSorters.addAll(sorters);break;
case void 0:case null:case 'replace':currentSorters.clear(),currentSorters.addAll(sorters)}!1!==doSort&&(this.fireEvent('beforesort',this,sorters),this.onBeforeSort(sorters),this.getSorterCount()&&this.doSort(this.generateComparator()));return sorters},getSorterCount:function(){return this.getSorters().items.length},generateComparator:function(){var sorters=this.getSorters().getRange();return sorters.length?this.createComparator(sorters):this.emptyComparator},emptyComparator:function(){return 0},
onBeforeSort:Ext.emptyFn,decodeSorters:function(sorters){Ext.isArray(sorters)||(sorters=void 0===sorters?[]:[sorters]);var length=sorters.length,Sorter=Ext.util.Sorter,model=this.getModel?this.getModel():this.model,i;for(i=0;i<length;i++){var config=sorters[i];if(!(config instanceof Sorter)){Ext.isString(config)&&(config={property:config});Ext.applyIf(config,{root:this.sortRoot,direction:'ASC'});config.fn&&(config.sorterFn=config.fn);'function'==typeof config&&(config={sorterFn:config});if(model&&
!config.transform){var field=model.getField(config.property);config.transform=field&&field.sortType!==Ext.identityFn?field.sortType:void 0}sorters[i]=new Ext.util.Sorter(config)}}return sorters},getFirstSorter:function(){for(var sorters=this.getSorters().items,len=sorters.length,i=0,sorter;i<len;++i)if(sorter=sorters[i],!sorter.isGrouper)return sorter;return null}},0,0,0,0,0,0,[Ext.util,'Sortable'],function(){this.prototype.createComparator=this.createComparator});
Ext.cmd.derive('Ext.util.MixedCollection',Ext.util.AbstractMixedCollection,{constructor:function(){this.initConfig();Ext.util.AbstractMixedCollection.prototype.constructor.apply(this,arguments)},doSort:function(sorterFn){this.sortBy(sorterFn)},_sort:function(property,dir,fn){var len,dsc='DESC'==String(dir).toUpperCase()?-1:1,c=[],keys=this.keys,items=this.items;fn=fn||function(a,b){return a-b};dir=0;for(len=items.length;dir<len;dir++)c[c.length]={key:keys[dir],value:items[dir],index:dir};Ext.Array.sort(c,
function(a,b){return fn(a[property],b[property])*dsc||(a.index<b.index?-1:1)});dir=0;for(len=c.length;dir<len;dir++){var o=c[dir];items[dir]=o.value;keys[dir]=o.key;this.indexMap[o.key]=dir}this.generation++;this.indexGeneration=this.generation;this.fireEvent('sort',this)},sortBy:function(sorterFn){var items=this.items,keys=this.keys,length=items.length,i;for(i=0;i<length;i++)items[i].$extCollectionIndex=i;Ext.Array.sort(items,function(a,b){return sorterFn(a,b)||(a.$extCollectionIndex<b.$extCollectionIndex?
-1:1)});for(i=0;i<length;i++){var item=items[i];var key=this.getKey(item);keys[i]=key;this.indexMap[key]=i;delete item.$extCollectionIndex}this.generation++;this.indexGeneration=this.generation;this.fireEvent('sort',this,items,keys)},findInsertionIndex:function(newItem,sorterFn){var items=this.items,start=0,end=items.length-1;for(sorterFn||(sorterFn=this.generateComparator());start<=end;){var middle=start+end>>1;var comparison=sorterFn(newItem,items[middle]);0<=comparison?start=middle+1:0>comparison&&
(end=middle-1)}return start},reorder:function(mapping){Ext.util.AbstractMixedCollection.prototype.reorder.call(this,mapping);this.fireEvent('sort',this)},sortByKey:function(dir,fn){this._sort('key',dir,fn||function(a,b){a=String(a).toUpperCase();b=String(b).toUpperCase();return a>b?1:a<b?-1:0})}},1,0,0,0,0,[['sortable',Ext.util.Sortable]],[Ext.util,'MixedCollection'],0);
Ext.cmd.derive('Ext.util.TaskRunner',Ext.Base,{interval:10,timerId:null,constructor:function(interval){'number'==typeof interval?this.interval=interval:interval&&Ext.apply(this,interval);this.tasks=[];this.timerFn=Ext.Function.bind(this.onTick,this)},newTask:function(config){config=new Ext.util.TaskRunner.Task(config);config.manager=this;return config},start:function(task){var now=Ext.Date.now();task.pending||(this.tasks.push(task),task.pending=!0);task.stopped=!1;task.taskStartTime=now;task.taskRunTime=
!1!==task.fireOnStart?0:task.taskStartTime;task.taskRunCount=0;this.firing||(!1!==task.fireOnStart?this.startTimer(0,now):this.startTimer(task.interval,now));return task},stop:function(task){task.stopped||(task.stopped=!0,task.onStop&&task.onStop.call(task.scope||task,task));return task},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:!1,nextExpires:1E99,onTick:function(){var tasks=this.tasks,fireIdleEvent=this.fireIdleEvent,now=Ext.Date.now(),nextExpires=1E99,len=tasks.length,globalEvents=
Ext.GlobalEvents,newTasks,i,rt;this.timerId=null;this.firing=!0;for(i=0;i<len||i<(len=tasks.length);++i){var task=tasks[i];if(!(rt=task.stopped)){var expires=task.taskRunTime+task.interval;if(expires<=now){rt=1;fireIdleEvent=task.hasOwnProperty('fireIdleEvent')?task.fireIdleEvent:this.fireIdleEvent;task.taskRunCount++;var args=task.args?task.addCountToArgs?task.args.concat([task.taskRunCount]):task.args:[task.taskRunCount];try{rt=task.run.apply(task.scope||task,args)}catch(taskError){try{task.onError&&
(rt=task.onError.call(task.scope||task,task,taskError))}catch(ignore){}}task.taskRunTime=now;!1===rt||task.taskRunCount===task.repeat?(this.stop(task),rt=!0):(rt=task.stopped,expires=now+task.interval)}!rt&&task.duration&&task.duration<=now-task.taskStartTime&&(this.stop(task),rt=!0)}rt?(task.pending=!1,newTasks||(newTasks=tasks.slice(0,i))):(newTasks&&newTasks.push(task),nextExpires>expires&&(nextExpires=expires))}newTasks&&(this.tasks=newTasks);this.firing=!1;this.tasks.length&&this.startTimer(nextExpires-
now,Ext.Date.now());!1!==fireIdleEvent&&globalEvents.hasListeners.idle&&globalEvents.fireEvent('idle')},startTimer:function(timeout,now){now+=timeout;var timerId=this.timerId;timerId&&this.nextExpires-now>this.interval&&(clearTimeout(timerId),timerId=null);timerId||(timeout<this.interval&&(timeout=this.interval),this.timerId=Ext.defer(this.timerFn,timeout),this.nextExpires=now)}},1,0,0,0,0,0,[Ext.util,'TaskRunner'],function(){var proto=this.prototype;proto.destroy=proto.stopAll;this.Task=new Ext.Class({isTask:!0,
stopped:!0,fireOnStart:!1,constructor:function(config){Ext.apply(this,config)},restart:function(interval){void 0!==interval&&(this.interval=interval);this.manager.start(this)},start:function(interval){this.stopped&&this.restart(interval)},stop:function(){this.manager.stop(this)}});proto=this.Task.prototype;proto.destroy=proto.stop});
Ext.cmd.derive('Ext.fx.target.Target',Ext.Base,{isAnimTarget:!0,constructor:function(target){this.target=target;this.id=this.getId()},getId:function(){return this.target.id},remove:function(){Ext.destroy(this.target)}},1,0,0,0,0,0,[Ext.fx.target,'Target'],0);
Ext.cmd.derive('Ext.fx.target.Element',Ext.fx.target.Target,{type:'element',getElVal:function(el,attr,val){void 0===val&&(val='x'===attr?el.getX():'y'===attr?el.getY():'scrollTop'===attr?el.getScroll().top:'scrollLeft'===attr?el.getScroll().left:'height'===attr?el.getHeight():'width'===attr?el.getWidth():el.getStyle(attr));return val},getAttr:function(attr,val){var el=this.target;return[[el,this.getElVal(el,attr,val)]]},setAttr:function(targetData){var ln=targetData.length,attr,i,j;for(i=0;i<ln;i++){var attrs=
targetData[i].attrs;for(attr in attrs)if(attrs.hasOwnProperty(attr)){var ln2=attrs[attr].length;for(j=0;j<ln2;j++){var o=attrs[attr][j];this.setElVal(o[0],attr,o[1])}}}},setElVal:function(element,attr,value){'x'===attr?element.setX(value):'y'===attr?element.setY(value):'scrollTop'===attr?element.scrollTo('top',value):'scrollLeft'===attr?element.scrollTo('left',value):'width'===attr?element.setWidth(value):'height'===attr?element.setHeight(value):element.setStyle(attr,value)}},0,0,0,0,0,0,[Ext.fx.target,
'Element'],0);
Ext.cmd.derive('Ext.fx.target.ElementCSS',Ext.fx.target.Element,{setAttr:function(targetData,isFirstFrame){var JSCompiler_object_inline_attrs_57=[],JSCompiler_object_inline_duration_58=[],JSCompiler_object_inline_easing_59=[],ln=targetData.length,cleanerFn=function(){this.setStyle(Ext.supports.CSS3Prefix+'TransitionProperty',null);this.setStyle(Ext.supports.CSS3Prefix+'TransitionDuration',null);this.setStyle(Ext.supports.CSS3Prefix+'TransitionTimingFunction',null)},single={single:!0},attr,i;for(i=
0;i<ln;i++){var attrs=targetData[i];var duration=attrs.duration;var easing=attrs.easing;attrs=attrs.attrs;for(attr in attrs)-1==Ext.Array.indexOf(JSCompiler_object_inline_attrs_57,attr)&&(JSCompiler_object_inline_attrs_57.push(attr.replace(/[A-Z]/g,function(v){return'-'+v.toLowerCase()})),JSCompiler_object_inline_duration_58.push(duration+'ms'),JSCompiler_object_inline_easing_59.push(easing))}JSCompiler_object_inline_attrs_57=JSCompiler_object_inline_attrs_57.join(',');duration=JSCompiler_object_inline_duration_58.join(',');
easing=JSCompiler_object_inline_easing_59.join(', ');for(i=0;i<ln;i++)for(attr in attrs=targetData[i].attrs,attrs){var ln2=attrs[attr].length;for(JSCompiler_object_inline_easing_59=0;JSCompiler_object_inline_easing_59<ln2;JSCompiler_object_inline_easing_59++)if(JSCompiler_object_inline_duration_58=attrs[attr][JSCompiler_object_inline_easing_59],JSCompiler_object_inline_duration_58[0].setStyle(Ext.supports.CSS3Prefix+'TransitionProperty',isFirstFrame?'':JSCompiler_object_inline_attrs_57),JSCompiler_object_inline_duration_58[0].setStyle(Ext.supports.CSS3Prefix+
'TransitionDuration',isFirstFrame?'':duration),JSCompiler_object_inline_duration_58[0].setStyle(Ext.supports.CSS3Prefix+'TransitionTimingFunction',isFirstFrame?'':easing),JSCompiler_object_inline_duration_58[0].setStyle(attr,JSCompiler_object_inline_duration_58[1]),isFirstFrame)JSCompiler_object_inline_duration_58=JSCompiler_object_inline_duration_58[0].dom.offsetWidth;else JSCompiler_object_inline_duration_58[0].on(Ext.supports.CSS3TransitionEnd,cleanerFn,JSCompiler_object_inline_duration_58[0],
single)}}},0,0,0,0,0,0,[Ext.fx.target,'ElementCSS'],0);
Ext.cmd.derive('Ext.fx.target.CompositeElement',Ext.fx.target.Element,{isComposite:!0,constructor:function(target){target.id=target.id||Ext.id(null,'ext-composite-');Ext.fx.target.Element.prototype.constructor.call(this,target)},getAttr:function(attr,val){var out=[],target=this.target,elements=target.elements,length=elements.length,i,el;for(i=0;i<length;i++)if(el=elements[i])el=target.getElement(el),out.push([el,this.getElVal(el,attr,val)]);return out},setAttr:function(targetData){var target=this.target,
ln=targetData.length,elements=target.elements,ln3=elements.length,k,attr,el,i,j;for(i=0;i<ln;i++){var attrs=targetData[i].attrs;for(attr in attrs)if(attrs.hasOwnProperty(attr)){var ln2=attrs[attr].length;for(j=0;j<ln2;j++){var value=attrs[attr][j][1];for(k=0;k<ln3;++k)if(el=elements[k])el=target.getElement(el),this.setElVal(el,attr,value)}}}},remove:function(){this.target.destroy()}},1,0,0,0,0,0,[Ext.fx.target,'CompositeElement'],0);
Ext.cmd.derive('Ext.fx.target.CompositeElementCSS',Ext.fx.target.CompositeElement,{setAttr:function(){return Ext.fx.target.ElementCSS.prototype.setAttr.apply(this,arguments)}},0,0,0,0,0,0,[Ext.fx.target,'CompositeElementCSS'],0);
Ext.cmd.derive('Ext.fx.target.Sprite',Ext.fx.target.Target,{type:'draw',getFromPrim:function(sprite,attr){switch(attr){case 'rotate':case 'rotation':return sprite=sprite.attr.rotation,{x:sprite.x||0,y:sprite.y||0,degrees:sprite.degrees||0};case 'scale':case 'scaling':return sprite=sprite.attr.scaling,{x:sprite.x||1,y:sprite.y||1,cx:sprite.cx||0,cy:sprite.cy||0};case 'translate':case 'translation':return sprite=sprite.attr.translation,{x:sprite.x||0,y:sprite.y||0};default:return sprite.attr[attr]}},
getAttr:function(attr,val){return[[this.target,void 0!==val?val:this.getFromPrim(this.target,attr)]]},setAttr:function(targetData){var ln=targetData.length,spriteArr=[],attr,i,j;for(i=0;i<ln;i++){var attrsConf=targetData[i].attrs;for(attr in attrsConf){var attrArr=attrsConf[attr];var ln2=attrArr.length;for(j=0;j<ln2;j++){var sprite=attrArr[j][0];var attrs=attrArr[j][1];if('translate'===attr||'translation'===attr)var value={x:attrs.x,y:attrs.y};else if('rotate'===attr||'rotation'===attr){value=attrs.x;
isNaN(value)&&(value=null);var y=attrs.y;isNaN(y)&&(y=null);value={degrees:attrs.degrees,x:value,y:y}}else'scale'===attr||'scaling'===attr?(value=attrs.x,isNaN(value)&&(value=null),y=attrs.y,isNaN(y)&&(y=null),value={x:value,y:y,cx:attrs.cx,cy:attrs.cy}):value='width'===attr||'height'===attr||'x'===attr||'y'===attr?parseFloat(attrs):attrs;attrs=Ext.Array.indexOf(spriteArr,sprite);-1===attrs&&(spriteArr.push([sprite,{}]),attrs=spriteArr.length-1);spriteArr[attrs][1][attr]=value}}}ln=spriteArr.length;
for(i=0;i<ln;i++)spriteArr[i][0].setAttributes(spriteArr[i][1]);this.target.redraw()}},0,0,0,0,0,0,[Ext.fx.target,'Sprite'],0);Ext.cmd.derive('Ext.fx.target.CompositeSprite',Ext.fx.target.Sprite,{getAttr:function(attr,val){var out=[],sprites=[].concat(this.target.items),length=sprites.length,i;for(i=0;i<length;i++){var sprite=sprites[i];out.push([sprite,void 0!==val?val:this.getFromPrim(sprite,attr)])}return out}},0,0,0,0,0,0,[Ext.fx.target,'CompositeSprite'],0);
Ext.cmd.derive('Ext.fx.target.Component',Ext.fx.target.Target,{type:'component',getPropMethod:{top:function(){return this.getPosition(!0)[1]},left:function(){return this.getPosition(!0)[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(attr,val){return[[this.target,void 0!==val?val:this.getPropMethod[attr].call(this.target)]]},setAttr:function(targetData,isFirstFrame,isLastFrame){isFirstFrame=targetData.length;var attr,i,j,methodsToCall={};for(i=0;i<isFirstFrame;i++){var attrs=targetData[i].attrs;for(attr in attrs){var targets=attrs[attr].length;for(j=0;j<targets;j++){var o=attrs[attr][j];var methodProps=methodsToCall[this.setMethods[attr]]||(methodsToCall[this.setMethods[attr]]=
{});methodProps.target=o[0];methodProps[attr]=o[1]}}methodsToCall.setPosition&&(o=methodsToCall.setPosition,attrs=void 0===o.left?void 0:parseFloat(o.left),j=void 0===o.top?void 0:parseFloat(o.top),o.target.setPosition(attrs,j));methodsToCall.setPagePosition&&(o=methodsToCall.setPagePosition,o.target.setPagePosition(o.x,o.y));if(methodsToCall.setSize&&(o=methodsToCall.setSize,attrs=void 0===o.width?o.target.getWidth():parseFloat(o.width),j=void 0===o.height?o.target.getHeight():parseFloat(o.height),
o.target.el.setSize(attrs,j),isLastFrame||this.dynamic))Ext.GlobalEvents.on({idle:Ext.Function.bind(o.target.setSize,o.target,[attrs,j]),single:!0});methodsToCall.setOpacity&&(o=methodsToCall.setOpacity,o.target.el.setStyle('opacity',o.opacity))}}},0,0,0,0,0,0,[Ext.fx.target,'Component'],0);
Ext.cmd.derive('Ext.fx.Queue',Ext.Base,{constructor:function(){this.targets=new Ext.util.HashMap;this.fxQueue={}},getFxDefaults:function(targetId){return(targetId=this.targets.get(targetId))?targetId.fxDefaults:{}},setFxDefaults:function(targetId,obj){if(targetId=this.targets.get(targetId))targetId.fxDefaults=Ext.apply(targetId.fxDefaults||{},obj)},stopAnimation:function(targetId,suppressEvent){targetId=this.getFxQueue(targetId);for(var ln=targetId.length,item;ln;)(item=targetId[ln-1])&&item.end(suppressEvent),
ln--},getActiveAnimation:function(targetId){return(targetId=this.getFxQueue(targetId))&&targetId.length?targetId[0]:!1},hasFxBlock:function(targetId){return(targetId=this.getFxQueue(targetId))&&targetId[0]&&targetId[0].block},getFxQueue:function(targetId){if(!targetId)return!1;var fxQueue=this.fxQueue,queue=fxQueue[targetId],target=this.targets.get(targetId);if(!target)return!1;if(!queue&&(this.fxQueue[targetId]=fxQueue[targetId]=[],'element'!==target.type))target.target.on('destroy',function(){fxQueue[targetId]=
null;delete fxQueue[targetId]});return this.fxQueue[targetId]},queueFx:function(anim){var me=this,target=anim.target,targetId=target.getId(),ln;if(target){var queue=me.getFxQueue(targetId);if(ln=queue.length)if(anim.concurrent)anim.paused=!1;else queue[ln-1].on('afteranimate',function(){anim.paused=!1});else anim.paused=!1;anim.on('afteranimate',function(){Ext.Array.remove(queue,anim);0===queue.length&&(me.targets.remove(anim.target),me.fxQueue[targetId]=null,delete me.fxQueue[targetId]);if(anim.remove&&
'element'===target.type){var el=Ext.get(targetId);el&&el.destroy()}},me,{single:!0});queue.push(anim)}}},1,0,0,0,0,0,[Ext.fx,'Queue'],0);
Ext.cmd.derive('Ext.fx.Manager',Ext.Base,{singleton:!0,constructor:function(){this.items=new Ext.util.MixedCollection;this.targetArr={};this.mixins.queue.constructor.call(this);this.taskRunner=new Ext.util.TaskRunner},interval:16,forceJS:!0,createTarget:function(target){var useCSS3=!this.forceJS&&Ext.supports.Transitions;this.useCSS3=useCSS3;if(target){if(target.tagName||Ext.isString(target)||target.isFly)target=Ext.get(target),target=new Ext.fx.target['Element'+(useCSS3?'CSS':'')](target);else if(target.dom)target=
new Ext.fx.target['Element'+(useCSS3?'CSS':'')](target);else if(target.isComposite)target=new Ext.fx.target['CompositeElement'+(useCSS3?'CSS':'')](target);else if(target.isSprite)target=new Ext.fx.target.Sprite(target);else if(target.isCompositeSprite)target=new Ext.fx.target.CompositeSprite(target);else if(target.isComponent)target=new Ext.fx.target.Component(target);else return target.isAnimTarget?target:null;this.targets.add(target);return target}return null},addAnim:function(anim){var items=this.items,
task=this.task;items.add(anim.id,anim);!task&&items.length&&(task=this.task={run:this.runner,interval:this.interval,scope:this},this.taskRunner.start(task))},removeAnim:function(anim){var items=this.items,task=this.task;items.removeAtKey(anim.id);task&&!items.length&&(this.taskRunner.stop(task),delete this.task)},runner:function(){var items=this.items.getRange(),i=0,len=items.length;this.targetArr={};for(this.timestamp=new Date;i<len;i++){var anim=items[i];anim.isReady()&&this.startAnim(anim)}for(i=
0;i<len;i++)anim=items[i],anim.isRunning()&&this.runAnim(anim);this.applyPendingAttrs();this.targetArr=null},startAnim:function(anim){anim.start(this.timestamp)},runAnim:function(anim,forceEnd){if(anim){var useCSS3=this.useCSS3&&'element'===anim.target.type,elapsedTime=this.timestamp-anim.startTime,lastFrame=elapsedTime>=anim.duration;forceEnd&&(elapsedTime=anim.duration,lastFrame=!0);forceEnd=this.collectTargetData(anim,elapsedTime,useCSS3,lastFrame);useCSS3&&(anim.target.setAttr(forceEnd.anims[anim.id].attributes,
!0),this.collectTargetData(anim,anim.duration,useCSS3,lastFrame),anim.paused=!0,forceEnd=anim.target.target,anim.target.isComposite&&(forceEnd=anim.target.target.last()),useCSS3={},useCSS3[Ext.supports.CSS3TransitionEnd]=anim.lastFrame,useCSS3.scope=anim,useCSS3.single=!0,forceEnd.on(useCSS3));return forceEnd}},jumpToEnd:function(anim){if(!this.targetArr){this.targetArr={};var clear=!0}var target=this.runAnim(anim,!0);this.applyAnimAttrs(target,target.anims[anim.id]);clear&&(this.targetArr=null)},
collectTargetData:function(anim,elapsedTime,useCSS3,isLastFrame){var targetId=anim.target.getId(),target=this.targetArr[targetId];target||(target=this.targetArr[targetId]={id:targetId,el:anim.target,anims:{}});target.anims[anim.id]={id:anim.id,anim:anim,elapsed:elapsedTime,isLastFrame:isLastFrame,attributes:[{duration:anim.duration,easing:useCSS3&&anim.reverse?anim.easingFn.reverse().toCSS3():anim.easing,attrs:anim.runAnim(elapsedTime)}]};return target},applyAnimAttrs:function(target,animWrap){var anim=
animWrap.anim;animWrap.attributes&&anim.isRunning()&&(target.el.setAttr(animWrap.attributes,!1,animWrap.isLastFrame),animWrap.isLastFrame&&anim.lastFrame())},applyPendingAttrs:function(){var targetArr=this.targetArr,targetId,animId;for(targetId in targetArr)if(targetArr.hasOwnProperty(targetId)){var target=targetArr[targetId];for(animId in target.anims)if(target.anims.hasOwnProperty(animId)){var animWrap=target.anims[animId];var anim=animWrap.anim;animWrap.attributes&&anim.isRunning()&&(target.el.setAttr(animWrap.attributes,
!1,animWrap.isLastFrame),animWrap.isLastFrame&&anim.lastFrame())}}}},1,0,0,0,0,[['queue',Ext.fx.Queue]],[Ext.fx,'Manager'],0);
Ext.cmd.derive('Ext.fx.Animator',Ext.Base,{isAnimator:!0,duration:250,delay:0,delayStart:0,dynamic:!1,easing:'ease',running:!1,paused:!1,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(config){this.config=config=Ext.apply(this,config||{});this.id=Ext.id(null,'ext-animator-');this.mixins.observable.constructor.call(this,config);this.timeline=[];this.createTimeline(this.keyframes);this.target&&(this.applyAnimator(this.target),Ext.fx.Manager.addAnim(this))},
sorter:function(a,b){return a.pct-b.pct},createTimeline:function(keyframes){var attrs=[],to=this.to||{},duration=this.duration,i;for(i in keyframes)if(keyframes.hasOwnProperty(i)&&this.animKeyFramesRE.test(i)){var ln={attrs:Ext.apply(keyframes[i],to)};'from'===i?i=0:'to'===i&&(i=100);ln.pct=parseInt(i,10);attrs.push(ln)}Ext.Array.sort(attrs,this.sorter);ln=attrs.length;for(i=0;i<ln;i++)keyframes=attrs[i-1]?attrs[i-1].pct/100*duration:0,to=attrs[i].pct/100*duration,this.timeline.push({duration:to-
keyframes,attrs:attrs[i].attrs})},applyAnimator:function(target){var anims=[],timeline=this.timeline,ln=timeline.length,i;if(!1!==this.fireEvent('beforeanimate',this)){for(i=0;i<ln;i++){var anim=timeline[i];var attrs=anim.attrs;var easing=attrs.easing||this.easing;var damper=attrs.damper||this.damper;delete attrs.easing;delete attrs.damper;anim=new Ext.fx.Anim({target:target,easing:easing,damper:damper,duration:anim.duration,paused:!0,to:attrs});anims.push(anim)}this.animations=anims;this.target=
anim.target;for(i=0;i<ln-1;i++)anim=anims[i],anim.nextAnim=anims[i+1],anim.on('afteranimate',function(){this.nextAnim.paused=!1}),anim.on('afteranimate',function(){this.fireEvent('keyframe',this,++this.keyframeStep)},this);anims[ln-1].on('afteranimate',function(){this.lastFrame()},this)}},start:function(startTime){var delay=this.delay,delayStart=this.delayStart;if(delay)if(delayStart){if(startTime-delayStart<delay)return;startTime=new Date(delayStart.getTime()+delay)}else{this.delayStart=startTime;
return}!1!==this.fireEvent('beforeanimate',this)&&(this.startTime=startTime,this.running=!0,this.animations[this.keyframeStep].paused=!1)},lastFrame:function(){var iter=this.iterations,iterCount=this.currentIteration;iterCount++;iterCount<iter?(this.startTime=new Date,this.currentIteration=iterCount,this.keyframeStep=0,this.applyAnimator(this.target),this.animations[this.keyframeStep].paused=!1):(this.currentIteration=0,this.end())},end:function(){this.fireEvent('afteranimate',this,this.startTime,
new Date-this.startTime)},isReady:function(){return!1===this.paused&&!1===this.running&&0<this.iterations},isRunning:function(){return!1}},1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.fx,'Animator'],0);
Ext.cmd.derive('Ext.fx.CubicBezier',Ext.Base,{singleton:!0,cubicBezierAtTime:function(t,p1x,p1y,p2x,p2y,duration){function solveCurveX(x,epsilon){var t1;var t2=x;for(t1=0;8>t1;t1++){var x2=((ax*t2+bx)*t2+cx)*t2-x;if(Math.abs(x2)<epsilon)return t2;var t0=(3*ax*t2+2*bx)*t2+cx;if(1E-6>Math.abs(t0))break;t2-=x2/t0}t0=0;t1=1;t2=x;if(t2<t0)return t0;if(t2>t1)return t1;for(;t0<t1;){x2=((ax*t2+bx)*t2+cx)*t2;if(Math.abs(x2-x)<epsilon)break;x>x2?t0=t2:t1=t2;t2=(t1-t0)/2+t0}return t2}var cx=3*p1x,bx=3*(p2x-
p1x)-cx,ax=1-cx-bx,cy=3*p1y,by=3*(p2y-p1y)-cy,ay=1-cy-by;return function(x,epsilon){x=solveCurveX(x,epsilon);return((ay*x+by)*x+cy)*x}(t,1/(200*duration))},cubicBezier:function(x1,y1,x2,y2){var fn=function(pos){return Ext.fx.CubicBezier.cubicBezierAtTime(pos,x1,y1,x2,y2,1)};fn.toCSS3=function(){return'cubic-bezier('+[x1,y1,x2,y2].join()+')'};fn.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-x2,1-y2,1-x1,1-y1)};return fn}},0,0,0,0,0,0,[Ext.fx,'CubicBezier'],0);
Ext.cmd.derive('Ext.fx.Easing',Ext.Base,function(){var math=Math,pi=math.PI,pow=math.pow,sin=math.sin,sqrt=math.sqrt,abs=math.abs;return{singleton:!0,linear:Ext.identityFn,ease:function(n){var q=.07813-n/2,Q=sqrt(.0066+q*q);n=Q-q;n=pow(abs(n),1/3)*(0>n?-1:1);q=-Q-q;q=pow(abs(q),1/3)*(0>q?-1:1);n=n+q+.25;return 3*pow(1-n,2)*n*.1+3*(1-n)*n*n+n*n*n},easeIn:function(n){return pow(n,1.7)},easeOut:function(n){return pow(n,.48)},easeInOut:function(n){var q=.48-n/1.04,Q=sqrt(.1734+q*q);n=Q-q;n=pow(abs(n),
1/3)*(0>n?-1:1);q=-Q-q;q=pow(abs(q),1/3)*(0>q?-1:1);n=n+q+.5;return 3*(1-n)*n*n+n*n*n},backIn:function(n){return n*n*(2.70158*n-1.70158)},backOut:function(n){--n;return n*n*(2.70158*n+1.70158)+1},elasticIn:function(n){return 0===n||1===n?n:pow(2,-10*n)*sin(2*(n-.075)*pi/.3)+1},elasticOut:function(n){return 1-Ext.fx.Easing.elasticIn(1-n)},bounceIn:function(n){return 1-Ext.fx.Easing.bounceOut(1-n)},bounceOut:function(n){n<1/2.75?n*=7.5625*n:n<2/2.75?(n-=1.5/2.75,n=7.5625*n*n+.75):n<2.5/2.75?(n-=2.25/
2.75,n=7.5625*n*n+.9375):(n-=2.625/2.75,n=7.5625*n*n+.984375);return n}}},0,0,0,0,0,0,[Ext.fx,'Easing'],function(me){me=me.self;var proto=me.prototype;me.addMembers({'back-in':proto.backIn,'back-out':proto.backOut,'ease-in':proto.easeIn,'ease-out':proto.easeOut,'elastic-in':proto.elasticIn,'elastic-out':proto.elasticOut,'bounce-in':proto.bounceIn,'bounce-out':proto.bounceOut,'ease-in-out':proto.easeInOut})});
Ext.cmd.derive('Ext.fx.DrawPath',Ext.Base,{singleton:!0,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,is:function(o,type){type=String(type).toLowerCase();return'object'==type&&o===Object(o)||'undefined'==type&&typeof o==type||'null'==type&&null===o||'array'==type&&Array.isArray&&Array.isArray(o)||Object.prototype.toString.call(o).toLowerCase().slice(8,
-1)==type},path2string:function(){return this.join(',').replace(Ext.fx.DrawPath.pathToStringRE,'$1')},pathToString:function(arrayPath){return arrayPath.join(',').replace(Ext.fx.DrawPath.pathToStringRE,'$1')},parsePathString:function(pathString){if(!pathString)return null;var paramCounts={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},data=[],me=this;me.is(pathString,'array')&&me.is(pathString[0],'array')&&(data=me.pathClone(pathString));data.length||String(pathString).replace(me.pathCommandRE,function(a$jscomp$0,
b$jscomp$0,c){var params=[];a$jscomp$0=b$jscomp$0.toLowerCase();c.replace(me.pathValuesRE,function(a,b){b&&params.push(+b)});'m'==a$jscomp$0&&2<params.length&&(data.push([b$jscomp$0].concat(Ext.Array.splice(params,0,2))),a$jscomp$0='l',b$jscomp$0='m'==b$jscomp$0?'l':'L');for(;params.length>=paramCounts[a$jscomp$0]&&(data.push([b$jscomp$0].concat(Ext.Array.splice(params,0,paramCounts[a$jscomp$0]))),paramCounts[a$jscomp$0]););});data.toString=me.path2string;return data},pathClone:function(pathArray){var res=
[],jj,ii;this.is(pathArray,'array')&&this.is(pathArray&&pathArray[0],'array')||(pathArray=this.parsePathString(pathArray));var i=0;for(ii=pathArray.length;i<ii;i++){res[i]=[];var j=0;for(jj=pathArray[i].length;j<jj;j++)res[i][j]=pathArray[i][j]}res.toString=this.path2string;return res},pathToAbsolute:function(pathArray){this.is(pathArray,'array')&&this.is(pathArray&&pathArray[0],'array')||(pathArray=this.parsePathString(pathArray));var res=[],x=0,y=0,mx=0,my=0,i=0,ln=pathArray.length,ln2;ln&&'M'==
pathArray[0][0]&&(x=+pathArray[0][1],y=+pathArray[0][2],mx=x,my=y,i++,res[0]=['M',x,y]);for(;i<ln;i++){var r=res[i]=[];var pathSegment=pathArray[i];if(pathSegment[0]!=pathSegment[0].toUpperCase())switch(r[0]=pathSegment[0].toUpperCase(),r[0]){case 'A':r[1]=pathSegment[1];r[2]=pathSegment[2];r[3]=pathSegment[3];r[4]=pathSegment[4];r[5]=pathSegment[5];r[6]=+(pathSegment[6]+x);r[7]=+(pathSegment[7]+y);break;case 'V':r[1]=+pathSegment[1]+y;break;case 'H':r[1]=+pathSegment[1]+x;break;case 'M':mx=+pathSegment[1]+
x,my=+pathSegment[2]+y;default:var j=1;for(ln2=pathSegment.length;j<ln2;j++)r[j]=+pathSegment[j]+(j%2?x:y)}else for(j=0,ln2=pathSegment.length;j<ln2;j++)res[i][j]=pathSegment[j];switch(r[0]){case 'Z':x=mx;y=my;break;case 'H':x=r[1];break;case 'V':y=r[1];break;case 'M':pathSegment=res[i],ln2=pathSegment.length,mx=pathSegment[ln2-2],my=pathSegment[ln2-1];default:pathSegment=res[i],ln2=pathSegment.length,x=pathSegment[ln2-2],y=pathSegment[ln2-1]}}res.toString=this.path2string;return res},interpolatePaths:function(path,
path2){var p=this.pathToAbsolute(path),p2=this.pathToAbsolute(path2);path={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};path2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};var fixArc=function(pp,i){if(7<pp[i].length){pp[i].shift();for(var pi=pp[i];pi.length;)Ext.Array.splice(pp,i++,0,['C'].concat(Ext.Array.splice(pi,0,6)));Ext.Array.erase(pp,i,1);ii=Math.max(p.length,p2.length||0)}},fixM=function(path1,path2,a1,a2,i){path1&&path2&&'M'==path1[i][0]&&'M'!=path2[i][0]&&(Ext.Array.splice(path2,i,0,['M',a2.x,
a2.y]),a1.bx=0,a1.by=0,a1.x=path1[i][1],a1.y=path1[i][2],ii=Math.max(p.length,p2.length||0))},ii;var i$jscomp$0=0;for(ii=Math.max(p.length,p2.length||0);i$jscomp$0<ii;i$jscomp$0++){p[i$jscomp$0]=this.command2curve(p[i$jscomp$0],path);fixArc(p,i$jscomp$0);p2[i$jscomp$0]=this.command2curve(p2[i$jscomp$0],path2);fixArc(p2,i$jscomp$0);fixM(p,p2,path,path2,i$jscomp$0);fixM(p2,p,path2,path,i$jscomp$0);var seg=p[i$jscomp$0];var seg2=p2[i$jscomp$0];var seglen=seg.length;var seg2len=seg2.length;path.x=seg[seglen-
2];path.y=seg[seglen-1];path.bx=parseFloat(seg[seglen-4])||path.x;path.by=parseFloat(seg[seglen-3])||path.y;path2.bx=parseFloat(seg2[seg2len-4])||path2.x;path2.by=parseFloat(seg2[seg2len-3])||path2.y;path2.x=seg2[seg2len-2];path2.y=seg2[seg2len-1]}return[p,p2]},command2curve:function(pathCommand,d){if(!pathCommand)return['C',d.x,d.y,d.x,d.y,d.x,d.y];'T'!=pathCommand[0]&&'Q'!=pathCommand[0]&&(d.qx=d.qy=null);switch(pathCommand[0]){case 'M':d.X=pathCommand[1];d.Y=pathCommand[2];break;case 'A':pathCommand=
['C'].concat(this.arc2curve.apply(this,[d.x,d.y].concat(pathCommand.slice(1))));break;case 'S':pathCommand=['C',d.x+(d.x-(d.bx||d.x)),d.y+(d.y-(d.by||d.y))].concat(pathCommand.slice(1));break;case 'T':d.qx=d.x+(d.x-(d.qx||d.x));d.qy=d.y+(d.y-(d.qy||d.y));pathCommand=['C'].concat(this.quadratic2curve(d.x,d.y,d.qx,d.qy,pathCommand[1],pathCommand[2]));break;case 'Q':d.qx=pathCommand[1];d.qy=pathCommand[2];pathCommand=['C'].concat(this.quadratic2curve(d.x,d.y,pathCommand[1],pathCommand[2],pathCommand[3],
pathCommand[4]));break;case 'L':pathCommand=['C'].concat(d.x,d.y,pathCommand[1],pathCommand[2],pathCommand[1],pathCommand[2]);break;case 'H':pathCommand=['C'].concat(d.x,d.y,pathCommand[1],d.y,pathCommand[1],d.y);break;case 'V':pathCommand=['C'].concat(d.x,d.y,d.x,pathCommand[1],d.x,pathCommand[1]);break;case 'Z':pathCommand=['C'].concat(d.x,d.y,d.X,d.Y,d.X,d.Y)}return pathCommand},quadratic2curve:function(x1,y1,ax,ay,x2,y2){var _13=1/3,_23=2/3;return[_13*x1+_23*ax,_13*y1+_23*ay,_13*x2+_23*ax,_13*
y2+_23*ay,x2,y2]},rotate:function(x,y,rad){var cos=Math.cos(rad);rad=Math.sin(rad);return{x:x*cos-y*rad,y:x*rad+y*cos}},arc2curve:function(x1,y1,rx,ry,angle,large_arc_flag,sweep_flag,x2,y2,recursive){var PI=Math.PI,_120=120*PI/180,rad=this.radian*(+angle||0),res=[],math=Math,mcos=math.cos,msin=math.sin,msqrt=math.sqrt,mabs=math.abs,masin=math.asin;if(recursive){var xy=recursive[0];masin=recursive[1];large_arc_flag=recursive[2];msqrt=recursive[3]}else{xy=this.rotate(x1,y1,-rad);x1=xy.x;y1=xy.y;xy=
this.rotate(x2,y2,-rad);x2=xy.x;y2=xy.y;xy=(x1-x2)/2;var y=(y1-y2)/2;var h=xy*xy/(rx*rx)+y*y/(ry*ry);1<h&&(h=msqrt(h),rx*=h,ry*=h);h=rx*rx;var ry2=ry*ry;msqrt=(large_arc_flag==sweep_flag?-1:1)*msqrt(mabs((h*ry2-h*y*y-ry2*xy*xy)/(h*y*y+ry2*xy*xy)));large_arc_flag=msqrt*rx*y/ry+(x1+x2)/2;msqrt=msqrt*-ry*xy/rx+(y1+y2)/2;xy=masin(((y1-msqrt)/ry).toFixed(7));masin=masin(((y2-msqrt)/ry).toFixed(7));xy=x1<large_arc_flag?PI-xy:xy;masin=x2<large_arc_flag?PI-masin:masin;0>xy&&(xy=2*PI+xy);0>masin&&(masin=2*
PI+masin);sweep_flag&&xy>masin&&(xy-=2*PI);!sweep_flag&&masin>xy&&(masin-=2*PI)}mabs(masin-xy)>_120&&(res=masin,PI=x2,mabs=y2,masin=xy+_120*(sweep_flag&&masin>xy?1:-1),x2=large_arc_flag+rx*mcos(masin),y2=msqrt+ry*msin(masin),res=this.arc2curve(x2,y2,rx,ry,angle,0,sweep_flag,PI,mabs,[masin,res,large_arc_flag,msqrt]));_120=masin-xy;angle=mcos(xy);sweep_flag=msin(xy);mcos=mcos(masin);msin=msin(masin);math=math.tan(_120/4);rx=4/3*rx*math;math*=4/3*ry;ry=[x1,y1];x1=[x1+rx*sweep_flag,y1-math*angle];y1=
[x2+rx*msin,y2-math*mcos];x2=[x2,y2];x1[0]=2*ry[0]-x1[0];x1[1]=2*ry[1]-x1[1];if(recursive)return[x1,y1,x2].concat(res);res=[x1,y1,x2].concat(res).join().split(',');recursive=[];y2=res.length;for(x2=0;x2<y2;x2++)recursive[x2]=x2%2?this.rotate(res[x2-1],res[x2],rad).y:this.rotate(res[x2],res[x2+1],rad).x;return recursive}},0,0,0,0,0,0,[Ext.fx,'DrawPath'],0);
Ext.cmd.derive('Ext.fx.PropertyHandler',Ext.Base,{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(from,end,damper,initial,attr){damper='number'==typeof damper?damper:1;var unitRE=this.unitRE,match=unitRE.exec(from);if(match){from=match[1];var units=match[2];this.scrollRE.test(attr)||units||!this.pixelDefaultsRE.test(attr)||(units='px')}from=+from||0;if(match=unitRE.exec(end))end=
match[1],units=match[2]||units;return{from:from,delta:((+end||0)-(null!=initial?initial:from))*damper,units:units}},get:function(from,end,damper,initialFrom,attr){var ln=from.length,out=[],i,len;for(i=0;i<ln;i++){if(initialFrom)var initial=initialFrom[i][1].from;if(Ext.isArray(from[i][1])&&Ext.isArray(end)){var res=[];var j=0;for(len=from[i][1].length;j<len;j++)res.push(this.computeDelta(from[i][1][j],end[j],damper,initial,attr));out.push([from[i][0],res])}else out.push([from[i][0],this.computeDelta(from[i][1],
end,damper,initial,attr)])}return out},set:function(values,easing){var ln=values.length,out=[],i,len;for(i=0;i<ln;i++){var val=values[i][1];if(Ext.isArray(val)){var res=[];var j=0;for(len=val.length;j<len;j++)res.push(val[j].from+val[j].delta*easing+(val[j].units||0));out.push([values[i][0],res])}else out.push([values[i][0],val.from+val.delta*easing+(val.units||0)])}return out}},stringHandler:{computeDelta:function(from,end,damper,initial,attr){return{from:from,delta:end}},get:function(from,end,damper,
initialFrom,attr){initialFrom=from.length;var out=[],i;for(i=0;i<initialFrom;i++)out.push([from[i][0],this.computeDelta(from[i][1],end,damper,void 0,attr)]);return out},set:function(values,easing){easing=values.length;var out=[],i;for(i=0;i<easing;i++){var val=values[i][1];out.push([values[i][0],val.delta])}return out}},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(color,
damper){damper=!1;var reList=[this.hexRE,this.rgbRE,this.hex3RE],length=reList.length,i;for(i=0;i<length;i++){var match=reList[i];var base=0===i%2?16:10;if((match=match.exec(color))&&4===match.length){2===i&&(match[1]+=match[1],match[2]+=match[2],match[3]+=match[3]);damper={red:parseInt(match[1],base),green:parseInt(match[2],base),blue:parseInt(match[3],base)};break}}return damper||color},computeDelta:function(from,end,damper,initial){from=this.parseColor(from);end=this.parseColor(end,damper);initial=
initial?initial:from;var tfrom=typeof initial,tend=typeof end;return'string'===tfrom||'undefined'===tfrom||'string'===tend||'undefined'===tend?end||initial:{from:from,delta:{red:Math.round((end.red-initial.red)*damper),green:Math.round((end.green-initial.green)*damper),blue:Math.round((end.blue-initial.blue)*damper)}}},get:function(start,end,damper,initialFrom){var ln=start.length,out=[],i;for(i=0;i<ln;i++){if(initialFrom)var initial=initialFrom[i][1].from;out.push([start[i][0],this.computeDelta(start[i][1],
end,damper,initial)])}return out},set:function(values,easing){var ln=values.length,out=[],i,val;for(i=0;i<ln;i++)if(val=values[i][1]){var from=val.from;var delta=val.delta;val='object'===typeof val&&'red'in val?'rgb('+val.red+', '+val.green+', '+val.blue+')':val;val='object'===typeof val&&val.length?val[0]:val;if('undefined'===typeof val)return[];val='string'===typeof val?val:'rgb('+[(from.red+Math.round(delta.red*easing))%256,(from.green+Math.round(delta.green*easing))%256,(from.blue+Math.round(delta.blue*
easing))%256].join()+')';out.push([values[i][0],val])}return out}},object:{interpolate:function(prop,damper){damper='number'===typeof damper?damper:1;var out={},p;for(p in prop)out[p]=parseFloat(prop[p])*damper;return out},computeDelta:function(from,end,damper,initial){from=this.interpolate(from);end=this.interpolate(end,damper);damper=initial?initial:from;initial={};for(var p in end)initial[p]=end[p]-damper[p];return{from:from,delta:initial}},get:function(start,end,damper,initialFrom){var ln=start.length,
out=[],i;for(i=0;i<ln;i++){if(initialFrom)var initial=initialFrom[i][1].from;out.push([start[i][0],this.computeDelta(start[i][1],end,damper,initial)])}return out},set:function(values,easing){var ln=values.length,out=[],outObject={},i,p;for(i=0;i<ln;i++){var delta=values[i][1];var from=delta.from;delta=delta.delta;for(p in from)outObject[p]=from[p]+delta[p]*easing;out.push([values[i][0],outObject])}return out}},path:{computeDelta:function(from,end,damper,initial){from=+from||0;return{from:from,delta:((+end||
0)-(null!=initial?initial:from))*('number'===typeof damper?damper:1)}},forcePath:function(path){Ext.isArray(path)||Ext.isArray(path[0])||(path=Ext.fx.DrawPath.parsePathString(path));return path},get:function(start,end,damper,initialFrom){end=this.forcePath(end);var out=[],startLn=start.length,i,j,k;for(i=0;i<startLn;i++){var startPath=this.forcePath(start[i][1]);var deltaPath=Ext.fx.DrawPath.interpolatePaths(startPath,end);startPath=deltaPath[0];end=deltaPath[1];var startPathLn=startPath.length;var path=
[];for(j=0;j<startPathLn;j++){deltaPath=[startPath[j][0]];var pointsLn=startPath[j].length;for(k=1;k<pointsLn;k++){var initial=initialFrom&&initialFrom[0][1][j][k].from;deltaPath.push(this.computeDelta(startPath[j][k],end[j][k],damper,initial))}path.push(deltaPath)}out.push([start[i][0],path])}return out},set:function(values,easing){var ln=values.length,out=[],i,j,k;for(i=0;i<ln;i++){var deltaPath=values[i][1];var newPath=[];var deltaPathLn=deltaPath.length;for(j=0;j<deltaPathLn;j++){var calcPath=
[deltaPath[j][0]];var pointsLn=deltaPath[j].length;for(k=1;k<pointsLn;k++)calcPath.push(deltaPath[j][k].from+deltaPath[j][k].delta*easing);newPath.push(calcPath.join(','))}out.push([values[i][0],newPath.join(',')])}return out}}}},0,0,0,0,0,0,[Ext.fx,'PropertyHandler'],function(){for(var props='outlineColor backgroundColor borderColor borderTopColor borderRightColor borderBottomColor borderLeftColor fill stroke'.split(' '),length=props.length,i=0,prop;i<length;i++)prop=props[i],this[prop]=this.color;
props=['cursor'];length=props.length;for(i=0;i<length;i++)prop=props[i],this[prop]=this.stringHandler});
Ext.cmd.derive('Ext.fx.Anim',Ext.Base,{isAnimation:!0,duration:250,delay:0,delayStart:0,dynamic:!1,easing:'ease',damper:1,bezierRE:/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,reverse:!1,running:!1,paused:!1,iterations:1,autoEnd:!1,alternate:!1,currentIteration:0,startTime:0,frameCount:0,constructor:function(config){config=config||{};if(config.keyframes)return new Ext.fx.Animator(config);Ext.apply(this,config);void 0===this.from&&(this.from={});this.propHandlers={};this.config=config;
this.target=Ext.fx.Manager.createTarget(this.target);this.easingFn=Ext.fx.Easing[this.easing];this.target.dynamic=this.dynamic;if(!this.easingFn&&(this.easingFn=String(this.easing).match(this.bezierRE))&&5===this.easingFn.length){var curve=this.easingFn;this.easingFn=Ext.fx.CubicBezier.cubicBezier(+curve[1],+curve[2],+curve[3],+curve[4])}this.id=Ext.id(null,'ext-anim-');this.mixins.observable.constructor.call(this);Ext.fx.Manager.addAnim(this);config.autoEnd&&(this.running=!0,this.jumpToEnd())},setAttr:function(attr,
value){return Ext.fx.Manager.items.get(this.id).setAttr(this.target,attr,value)},initAttrs:function(){var from=this.from,to=this.to,initialFrom=this.initialFrom||{},out={},attr;for(attr in to)if(to.hasOwnProperty(attr)){var start=this.target.getAttr(attr,from[attr]);var end=to[attr];var propHandler=Ext.fx.PropertyHandler[attr]?this.propHandlers[attr]=Ext.fx.PropertyHandler[attr]:Ext.isObject(end)?this.propHandlers[attr]=Ext.fx.PropertyHandler.object:this.propHandlers[attr]=Ext.fx.PropertyHandler.defaultHandler;
out[attr]=propHandler.get(start,end,this.damper,initialFrom[attr],attr)}this.currentAttrs=out},start:function(startTime){var delay=this.delay,delayStart=this.delayStart;if(delay)if(delayStart){if(startTime-delayStart<delay)return;startTime=new Date(delayStart.getTime()+delay)}else{this.delayStart=startTime;return}!1!==this.fireEvent('beforeanimate',this)&&(this.startTime=startTime,this.paused||this.currentAttrs||this.initAttrs(),this.running=!0,this.frameCount=0)},jumpToEnd:function(){this.endWasCalled||
(this.currentAttrs||this.initAttrs(),Ext.fx.Manager.jumpToEnd(this),this.end())},runAnim:function(elapsedTime){var attrs=this.currentAttrs,duration=this.duration,easingFn=this.easingFn,propHandlers=this.propHandlers,ret={},attr;if(elapsedTime>=duration){elapsedTime=duration;var lastFrame=!0}this.reverse&&(elapsedTime=duration-elapsedTime);for(attr in attrs)if(attrs.hasOwnProperty(attr)){var values=attrs[attr];var easing=lastFrame?1:easingFn(elapsedTime/duration);ret[attr]=propHandlers[attr].set(values,
easing)}this.frameCount++;return ret},lastFrame:function(){var iter=this.iterations,iterCount=this.currentIteration;iterCount++;iterCount<iter?(this.alternate&&(this.reverse=!this.reverse),this.startTime=new Date,this.currentIteration=iterCount,this.paused=!1):(this.currentIteration=0,this.end(),this.fireEvent('lastframe',this,this.startTime))},endWasCalled:0,end:function(suppressEvent){this.endWasCalled++||(this.startTime=0,this.running=this.paused=!1,Ext.fx.Manager.removeAnim(this),suppressEvent||
(this.fireEvent('afteranimate',this,this.startTime),Ext.callback(this.callback,this.scope,[this,this.startTime])),this.remove&&this.target.destroy())},isReady:function(){return!1===this.paused&&!1===this.running&&0<this.iterations},isRunning:function(){return!1===this.paused&&!0===this.running&&!0!==this.isAnimator}},1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.fx,'Anim'],0);Ext.enableFx=!0;
Ext.cmd.derive('Ext.util.Animate',Ext.Base,{mixinId:'animate',isAnimate:!0,animate:function(animObj){if(Ext.fx.Manager.hasFxBlock(this.id))return this;Ext.fx.Manager.queueFx(new Ext.fx.Anim(this.anim(animObj)));return this},anim:function(config){if(!Ext.isObject(config))return config?{}:!1;config.stopAnimation&&this.stopAnimation();Ext.applyIf(config,Ext.fx.Manager.getFxDefaults(this.id));return Ext.apply({target:this,paused:!0},config)},getAnimationProps:function(){var layout=this.layout;return layout&&
layout.animate?layout.animate:{}},stopFx:Ext.Function.alias(Ext.util.Animate,'stopAnimation'),stopAnimation:function(suppressEvent){Ext.fx.Manager.stopAnimation(this.id,suppressEvent);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:!0});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:!1});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,'getActiveAnimation'),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},
0,0,0,0,0,0,[Ext.util,'Animate'],0);
Ext.cmd.derive('Ext.dom.Fly',Ext.dom.Element,{alternateClassName:'Ext.dom.Element.Fly',validNodeTypes:{1:1,9:1,11:1},isFly:!0,constructor:function(dom){this.dom=dom;this.el=this},attach:function(dom){if(!dom)return this.detach();this.dom=dom;Ext.cache[dom.id]||(this.getData().isSynchronized=!1);return this},detach:function(){this.dom=null},addListener:null,removeListener:null},1,0,0,0,0,0,[Ext.dom,'Fly',Ext.dom.Element,'Fly'],function(Fly){var flyweights={},detachedBodyEl;Fly.cache=flyweights;Ext.fly=
function(dom,named){var fly=null,fn=Ext.fly;named=named||fn.caller&&fn.caller.$name||'_global';if(dom=Ext.getDom(dom))if(fn=dom.nodeType,Fly.prototype.validNodeTypes[fn]||!fn&&dom.window==dom)if(fly=Ext.cache[dom.id],!fly||fly.dom!==dom)if(fly=flyweights[named]||(flyweights[named]=new Fly),fly.dom=dom,dom=fly.getData(!0))dom.isSynchronized=!1;return fly};Ext.getDetachedBody=function(){detachedBodyEl||(Ext.detachedBodyEl=detachedBodyEl=new Fly(document.createElement('div')),detachedBodyEl.isDetachedBody=
!0);return detachedBodyEl}});
Ext.cmd.derive('Ext.dom.CompositeElementLite',Ext.Base,{alternateClassName:['Ext.CompositeElementLite'],isComposite:!0,isLite:!0,statics:{importElementMethods:function(){var prototype=this.prototype;Ext.Object.each(Ext.dom.Element.prototype,function(name,member){'function'!==typeof member||prototype[name]||(prototype[name]=function(){return this.invoke(name,arguments)})})}},constructor:function(elements,skipValidation){skipValidation?this.elements=elements||[]:(this.elements=[],this.add(elements))},
getElement:function(el){return(this._fly||(this._fly=new Ext.dom.Fly)).attach(el)},transformElement:function(el){return Ext.getDom(el)},getCount:function(){return this.elements.length},add:function(els,root){var elements=this.elements,ln;if(!els)return this;'string'==typeof els?els=Ext.fly(root||document).query(els):els.isComposite?els=els.elements:Ext.isIterable(els)||(els=[els]);root=0;for(ln=els.length;root<ln;++root)elements.push(this.transformElement(els[root]));return this},invoke:function(fn,
args){var elements=this.elements,ln=elements.length,element,i;if(0!==i){var prototype=(this.isLite?Ext.dom.Fly:Ext.dom.Element).prototype;for(i=0;i<ln;i++)(element=elements[i])&&prototype[fn].apply(this.getElement(element),args)}return this},item:function(index){index=this.elements[index];var out=null;index&&(out=this.getElement(index));return out},slice:function(start,end){return Ext.Array.slice(this.elements,start,end)},each:function(fn,scope){var els=this.elements,len=els.length,i,e;for(i=0;i<
len;i++)if(e=els[i])if(e=this.getElement(e),!1===fn.call(scope||e,e,this,i))break;return this},fill:function(els){this.elements=[];this.add(els);return this},insert:function(index,nodes){Ext.Array.insert(this.elements,index,nodes)},filter:function(selector){for(var els=this.elements,len=els.length,out=[],i=0,isFunc='function'==typeof selector,add,el;i<len;i++)if(el=els[i])el=this.getElement(el),(add=isFunc?!1!==selector.call(el,el,this,i):el.is(selector))&&out.push(this.transformElement(el));this.elements=
out;return this},indexOf:function(el){return Ext.Array.indexOf(this.elements,this.transformElement(el))},replaceElement:function(el,replacement,domReplace){el=isNaN(el)?this.indexOf(el):el;-1<el&&(replacement=Ext.getDom(replacement),domReplace&&(domReplace=this.elements[el],domReplace.parentNode.insertBefore(replacement,domReplace),Ext.removeNode(domReplace)),Ext.Array.splice(this.elements,el,1,replacement));return this},clear:function(removeDom){var els=this.elements,i=els.length-1;if(removeDom)for(;0<=
i;i--)Ext.removeNode(els[i]);this.elements=[]},addElements:function(els,root){if(!els)return this;'string'===typeof els&&(els=Ext.dom.Element.selectorFunction(els,root));root=this.elements;var eLen=els.length,e;for(e=0;e<eLen;e++)root.push(Ext.get(els[e]));return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(el){return-1!=this.indexOf(el)},removeElement:function(keys,removeDom){keys=[].concat(keys);var elements=this.elements,kLen=
keys.length,el,k;for(k=0;k<kLen;k++){var val=keys[k];if(el=elements[val]||elements[val=this.indexOf(val)])removeDom&&(el.dom?el.destroy():Ext.removeNode(el)),Ext.Array.erase(elements,val,1)}return this},destroy:function(){return this.invoke('destroy',arguments)}},1,0,0,0,0,0,[Ext.dom,'CompositeElementLite',Ext,'CompositeElementLite'],function(CompositeElementLite){var prototype=CompositeElementLite.prototype;CompositeElementLite.importElementMethods();prototype.on=prototype.addListener});
Ext.define('Ext.overrides.dom.Element',function(){var Element,WIN=window,DOC=document,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,nonSpaceRe=/\S/,typeRe=/\stype=([\'\"])(.*?)\1/i,msRe=/^-ms-/,camelRe=/(-[a-z])/gi,camelReplaceFn=function(m,a){return a.charAt(1).toUpperCase()},bodyRe=/^body/i,propertyCache={},getVisMode=function(el){el=el.getData();var visMode=el.visibilityMode;void 0===
visMode&&(el.visibilityMode=visMode=Element.VISIBILITY);return visMode},emptyRange=DOC.createRange?DOC.createRange():null,inputTags={INPUT:!0,TEXTAREA:!0};if(Ext.isIE8){var garbageBin=DOC.createElement('div');var destroyQueue=[];var clearGarbage=Ext.Function.createBuffered(function(){var len=destroyQueue.length,i;for(i=0;i<len;i++)garbageBin.appendChild(destroyQueue[i]);garbageBin.innerHTML='';destroyQueue.length=0},10)}return{override:'Ext.dom.Element',mixins:[Ext.util.Animate],skipGarbageCollection:!1,
_init:function(E){Element=E;E.tabbableSelector+=',['+E.tabbableSavedCounterAttribute+']'},statics:{selectableCls:'x-selectable',unselectableCls:'x-unselectable',tabbableSelector:Ext.supports.CSS3NegationSelector?'a[href],button,iframe,input,select,textarea,[tabindex]:not([tabindex\x3d"-1"]),[contenteditable\x3d"true"]':'a[href],button,iframe,input,select,textarea,[tabindex],[contenteditable\x3d"true"]',naturallyFocusableTags:{BUTTON:!0,IFRAME:!0,EMBED:!0,INPUT:!0,OBJECT:!0,SELECT:!0,TEXTAREA:!0,HTML:Ext.isIE?
!0:!1,BODY:Ext.isIE?!1:!0},naturallyTabbableTags:{BUTTON:!0,IFRAME:!0,INPUT:!0,SELECT:!0,TEXTAREA:!0,OBJECT:Ext.isIE8m?!0:!1},tabbableSavedCounterAttribute:'data-tabindex-counter',tabbableSavedValueAttribute:'data-tabindex-value',normalize:function(prop){'float'===prop&&(prop=Ext.supports.Float?'cssFloat':'styleFloat');return propertyCache[prop]||(propertyCache[prop]=prop.replace(msRe,'ms-').replace(camelRe,camelReplaceFn))}},addKeyListener:function(key,fn,scope){key='object'!==typeof key||Ext.isArray(key)?
{target:this,key:key,fn:fn,scope:scope}:{target:this,key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope};return new Ext.util.KeyMap(key)},addKeyMap:function(config){return new Ext.util.KeyMap(Ext.apply({target:this},config))},afterAnimate:function(){var shadow=this.shadow;!shadow||shadow.disabled||shadow.animate||shadow.show()},anchorAnimX:function(anchor){this.dom.style['l'===anchor?'right':'left']='0px'},anim:function(config){if(!Ext.isObject(config))return config?{}:!1;var duration=
config.duration||Ext.fx.Anim.prototype.duration,easing=config.easing||'ease';config.stopAnimation&&this.stopAnimation();Ext.applyIf(config,Ext.fx.Manager.getFxDefaults(this.id));Ext.fx.Manager.setFxDefaults(this.id,{delay:0});duration={target:this.dom,remove:config.remove,alternate:config.alternate||!1,duration:duration,easing:easing,callback:config.callback,listeners:config.listeners,iterations:config.iterations||1,scope:config.scope,block:config.block,concurrent:config.concurrent,delay:config.delay||
0,paused:!0,keyframes:config.keyframes,from:config.from||{},to:Ext.apply({},config),userConfig:config};Ext.apply(duration.to,config.to);delete duration.to.to;delete duration.to.from;delete duration.to.remove;delete duration.to.alternate;delete duration.to.keyframes;delete duration.to.iterations;delete duration.to.listeners;delete duration.to.target;delete duration.to.paused;delete duration.to.callback;delete duration.to.scope;delete duration.to.duration;delete duration.to.easing;delete duration.to.concurrent;
delete duration.to.block;delete duration.to.stopAnimation;delete duration.to.delay;return duration},animate:function(config){this.addAnimation(config);return this},addAnimation:function(config){var animId=this.dom.id||Ext.id(this.dom);if(!Ext.fx.Manager.hasFxBlock(animId)){if(config.listeners){var listeners=config.listeners;delete config.listeners}config.internalListeners&&(config.listeners=config.internalListeners,delete config.internalListeners);animId=config.autoEnd;delete config.autoEnd;var anim=
new Ext.fx.Anim(this.anim(config));anim.on({afteranimate:'afterAnimate',beforeanimate:'beforeAnimate',scope:this,single:!0});if(listeners)anim.on(listeners);Ext.fx.Manager.queueFx(anim);animId&&anim.jumpToEnd()}return anim},beforeAnimate:function(){var shadow=this.shadow;!shadow||shadow.disabled||shadow.animate||shadow.hide()},boxWrap:function(cls){cls=cls||'x-box';var el=Ext.get(this.insertHtml('beforeBegin',"\x3cdiv class\x3d'"+cls+"' role\x3d'presentation'\x3e"+Ext.String.format('\x3cdiv class\x3d"{0}-tl" role\x3d"presentation"\x3e\x3cdiv class\x3d"{0}-tr" role\x3d"presentation"\x3e\x3cdiv class\x3d"{0}-tc" role\x3d"presentation"\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d"{0}-ml" role\x3d"presentation"\x3e\x3cdiv class\x3d"{0}-mr" role\x3d"presentation"\x3e\x3cdiv class\x3d"{0}-mc" role\x3d"presentation"\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d"{0}-bl" role\x3d"presentation"\x3e\x3cdiv class\x3d"{0}-br" role\x3d"presentation"\x3e\x3cdiv class\x3d"{0}-bc" role\x3d"presentation"\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e',
cls)+'\x3c/div\x3e'));el.selectNode('.'+cls+'-mc').appendChild(this.dom);return el},clean:function(forceReclean){var dom=this.dom,data=this.getData(),n=dom.firstChild,ni=-1;if(data.isCleaned&&!0!==forceReclean)return this;for(;n;)forceReclean=n.nextSibling,3===n.nodeType?nonSpaceRe.test(n.nodeValue)?forceReclean&&3===forceReclean.nodeType&&(n.appendData(Ext.String.trim(forceReclean.data)),dom.removeChild(forceReclean),forceReclean=n.nextSibling,n.nodeIndex=++ni):dom.removeChild(n):(Ext.fly(n,'_clean').clean(),
n.nodeIndex=++ni),n=forceReclean;data.isCleaned=!0;return this},empty:emptyRange?function(){var dom=this.dom;dom.firstChild&&(emptyRange.setStartBefore(dom.firstChild),emptyRange.setEndAfter(dom.lastChild),emptyRange.deleteContents())}:function(){for(var dom=this.dom;dom.lastChild;)dom.removeChild(dom.lastChild)},clearListeners:function(){this.removeAnchor();arguments.callee.$previous.call(this)},clearPositioning:function(value){value=value||'';return this.setStyle({left:value,right:value,top:value,
bottom:value,'z-index':'',position:'static'})},createProxy:function(config,renderTo,matchBox){config='object'===typeof config?config:{tag:'div',role:'presentation',cls:config};config=renderTo?Ext.DomHelper.append(renderTo,config,!0):Ext.DomHelper.insertBefore(this.dom,config,!0);config.setVisibilityMode(Element.DISPLAY);config.hide();matchBox&&this.setBox&&this.getBox&&config.setBox(this.getBox());return config},clearOpacity:function(){return this.setOpacity('')},clip:function(){var data=this.getData();
if(!data.isClipped){data.isClipped=!0;var style=this.getStyle(['overflow','overflow-x','overflow-y']);data.originalClip={o:style.overflow,x:style['overflow-x'],y:style['overflow-y']};this.setStyle('overflow','hidden');this.setStyle('overflow-x','hidden');this.setStyle('overflow-y','hidden')}return this},destroy:function(){var dom=this.dom,data=this.getData();dom&&(this.isAnimate&&this.stopAnimation(),this.removeAnchor());arguments.callee.$previous.call(this);dom&&Ext.isIE8&&dom.window!=dom&&9!==dom.nodeType&&
'BODY'!==dom.tagName&&'HTML'!==dom.tagName&&(destroyQueue[destroyQueue.length]=dom,clearGarbage());data&&(dom=data.maskEl,data=data.maskMsg,dom&&dom.destroy(),data&&data.destroy())},enableDisplayMode:function(display){this.setVisibilityMode(Element.DISPLAY);void 0!==display&&(this.getData().originalDisplay=display);return this},fadeIn:function(o){var dom=this.dom;this.animate(Ext.apply({},o,{opacity:1,internalListeners:{beforeanimate:function(anim){anim=Ext.fly(dom,'_anim');anim.isStyle('display',
'none')?anim.setDisplayed(''):anim.show()}}}));return this},fadeOut:function(o){var dom=this.dom;o=Ext.apply({opacity:0,internalListeners:{afteranimate:function(anim){dom&&0===anim.to.opacity&&(anim=Ext.fly(dom,'_anim'),o.useDisplay?anim.setDisplayed(!1):anim.hide())}}},o);this.animate(o);return this},fixDisplay:function(){this.isStyle('display','none')&&(this.setStyle('visibility','hidden'),this.setStyle('display',this._getDisplay()),this.isStyle('display','none')&&this.setStyle('display','block'))},
frame:function(color,count,obj){var dom=this.dom;color=color||'#C3DAF9';count=count||1;obj=obj||{};this.animate({duration:2*Math.max(obj.duration,500)||2E3,listeners:{beforeanimate:{fn:function(){var el=Ext.fly(dom,'_anim'),animScope=this;el.show();var box=el.getBox();var proxy=Ext.getBody().createChild({role:'presentation',id:el.dom.id+'-anim-proxy',style:{position:'absolute','pointer-events':'none','z-index':35E3,border:'0px solid '+color}});(new Ext.fx.Anim({target:proxy,duration:obj.duration||
1E3,iterations:count,from:{top:box.y,left:box.x,borderWidth:0,opacity:1,height:box.height,width:box.width},to:{top:box.y-20,left:box.x-20,borderWidth:10,opacity:0,height:box.height+40,width:box.width+40}})).on('afteranimate',function(){proxy.destroy();animScope.end()})}}},callback:obj.callback,scope:obj.scope});return this},getColor:function(attr,defaultValue,prefix){attr=this.getStyle(attr);prefix=prefix||''===prefix?prefix:'#';var len,i=0;if(!attr||/transparent|inherit/.test(attr))return defaultValue;
if(/^r/.test(attr))for(attr=attr.slice(4,attr.length-1).split(','),len=attr.length;i<len;i++){var h=parseInt(attr[i],10);prefix+=(16>h?'0':'')+h.toString(16)}else attr=attr.replace('#',''),prefix+=3===attr.length?attr.replace(/^(\w)(\w)(\w)$/,'$1$1$2$2$3$3'):attr;return 5<prefix.length?prefix.toLowerCase():defaultValue},getLoader:function(){var data=this.getData(),loader=data.loader;loader||(data.loader=loader=new Ext.ElementLoader({target:this}));return loader},getPositioning:function(autoPx){var styles=
this.getStyle(['left','top','position','z-index']),dom=this.dom;autoPx&&('auto'===styles.left&&(styles.left=dom.offsetLeft+'px'),'auto'===styles.top&&(styles.top=dom.offsetTop+'px'));return styles},ghost:function(anchor,obj){var dom=this.dom;anchor=anchor||'b';this.animate(Ext.applyIf(obj||{},{duration:500,easing:'ease-out',listeners:{beforeanimate:function(){var el$jscomp$0=Ext.fly(dom,'_anim'),width=el$jscomp$0.getWidth(),height=el$jscomp$0.getHeight(),xy=el$jscomp$0.getXY(),position=el$jscomp$0.getPositioning();
el$jscomp$0={opacity:0};switch(anchor){case 't':el$jscomp$0.y=xy[1]-height;break;case 'l':el$jscomp$0.x=xy[0]-width;break;case 'r':el$jscomp$0.x=xy[0]+width;break;case 'b':el$jscomp$0.y=xy[1]+height;break;case 'tl':el$jscomp$0.x=xy[0]-width;el$jscomp$0.y=xy[1]-height;break;case 'bl':el$jscomp$0.x=xy[0]-width;el$jscomp$0.y=xy[1]+height;break;case 'br':el$jscomp$0.x=xy[0]+width;el$jscomp$0.y=xy[1]+height;break;case 'tr':el$jscomp$0.x=xy[0]+width,el$jscomp$0.y=xy[1]-height}this.to=el$jscomp$0;this.on('afteranimate',
function(){var el=Ext.fly(dom,'_anim');el&&(el.hide(),el.clearOpacity(),el.setPositioning(position))})}}}));return this},hide:function(animate){if('string'===typeof animate)return this.setVisible(!1,animate),this;this.setVisible(!1,this.anim(animate));return this},highlight:function(color,o){var dom=this.dom,from={},restore,event,fn;o=o||{};var lns=o.listeners||{};var attr=o.attr||'backgroundColor';from[attr]=color||'ffff9c';o.to?color=o.to:(color={},color[attr]=o.endColor||this.getColor(attr,'ffffff',
''));o.listeners=Ext.apply(Ext.apply({},lns),{beforeanimate:function(){restore=dom.style[attr];var el=Ext.fly(dom,'_anim');el.clearOpacity();el.show();if(event=lns.beforeanimate)return fn=event.fn||event,fn.apply(event.scope||lns.scope||WIN,arguments)},afteranimate:function(){dom&&(dom.style[attr]=restore);if(event=lns.afteranimate)fn=event.fn||event,fn.apply(event.scope||lns.scope||WIN,arguments)}});this.animate(Ext.apply({},o,{duration:1E3,easing:'ease-in',from:from,to:color}));return this},hover:function(overFn,
outFn,scope,options){this.on('mouseenter',overFn,scope||this.dom,options);this.on('mouseleave',outFn,scope||this.dom,options);return this},initDD:function(group,config,overrides){group=new Ext.dd.DD(Ext.id(this.dom),group,config);return Ext.apply(group,overrides)},initDDProxy:function(group,config,overrides){group=new Ext.dd.DDProxy(Ext.id(this.dom),group,config);return Ext.apply(group,overrides)},initDDTarget:function(group,config,overrides){group=new Ext.dd.DDTarget(Ext.id(this.dom),group,config);
return Ext.apply(group,overrides)},isFocusable:function(){var dom=this.dom,focusable=!1;if(dom&&!dom.disabled){var nodeName=dom.nodeName;focusable=!!Ext.Element.naturallyFocusableTags[nodeName]||('A'===nodeName||'LINK'===nodeName)&&!!dom.href||null!=dom.getAttribute('tabIndex')||'true'===dom.contentEditable;Ext.isIE8&&'INPUT'===nodeName&&'hidden'===dom.type&&(focusable=!1);focusable=focusable&&this.isVisible(!0)}return focusable},isInputField:function(){var dom=this.dom,contentEditable=dom.contentEditable;
return inputTags[dom.tagName]&&'button'!==dom.type||''===contentEditable||'true'===contentEditable?!0:!1},isTabbable:function(includeHidden){var dom=this.dom,tabbable=!1;if(dom&&!dom.disabled){var nodeName=dom.nodeName;var tabIndex=dom.getAttribute('tabIndex');var hasIndex=null!=tabIndex;tabIndex-=0;'A'===nodeName||'LINK'===nodeName?tabbable=dom.href?hasIndex&&0>tabIndex?!1:!0:'true'===dom.contentEditable?!hasIndex||hasIndex&&0<=tabIndex?!0:!1:hasIndex&&0<=tabIndex?!0:!1:'true'===dom.contentEditable||
Ext.Element.naturallyTabbableTags[nodeName]?tabbable=hasIndex&&0>tabIndex?!1:!0:hasIndex&&0<=tabIndex&&(tabbable=!0);Ext.isIE8&&'INPUT'===nodeName&&'hidden'===dom.type&&(tabbable=!1);tabbable=tabbable&&(includeHidden||(!this.component||this.component.isVisible(!0))&&this.isVisible(!0))}return tabbable},isMasked:function(deep){var data=this.getData(),maskEl=data.maskEl,maskMsg=data.maskMsg;data=!1;if(maskEl&&maskEl.isVisible())maskMsg&&maskMsg.center(this),data=!0;else if(deep&&(maskEl=this.findParentNode()))return Ext.fly(maskEl).isMasked(deep);
return data},load:function(options){this.getLoader().load(options);return this},mask:function(msg,msgCls,elHeight){var dom=this.dom,data=this.getData(),maskEl=data.maskEl;bodyRe.test(dom.tagName)&&'static'===this.getStyle('position')||this.addCls('x-masked-relative');maskEl&&maskEl.destroy();maskEl=Ext.DomHelper.append(dom,{role:'presentation',cls:'x-mask x-border-box',children:{role:'presentation',cls:msgCls?'x-mask-msg '+msgCls:'x-mask-msg',cn:{tag:'div',role:'presentation',cls:'x-mask-msg-inner',
cn:{tag:'div',role:'presentation',cls:'x-mask-msg-text',html:msg||''}}}},!0);msgCls=Ext.get(maskEl.dom.firstChild);data.maskEl=maskEl;this.addCls('x-masked');maskEl.setDisplayed(!0);'string'===typeof msg?(msgCls.setDisplayed(!0),msgCls.center(this)):msgCls.setDisplayed(!1);dom===DOC.body&&maskEl.addCls('x-mask-fixed');this.saveTabbableState({skipSelf:dom===DOC.body});Ext.isIE9m&&dom!==DOC.body&&this.isStyle('height','auto')&&maskEl.setSize(void 0,elHeight||this.getHeight());return maskEl},puff:function(obj){var dom=
this.dom,box=this.getBox(),originalStyles=this.getStyle('width height left right top bottom position z-index font-size opacity'.split(' '),!0);obj=Ext.applyIf(obj||{},{easing:'ease-out',duration:500,useDisplay:!1});this.animate({duration:obj.duration,easing:obj.easing,listeners:{beforeanimate:{fn:function(){var el$jscomp$0=Ext.fly(dom,'_anim');el$jscomp$0.clearOpacity();el$jscomp$0.show();this.to={width:2*box.width,height:2*box.height,x:box.x-box.width/2,y:box.y-box.height/2,opacity:0,fontSize:'200%'};
this.on('afteranimate',function(){var el=Ext.fly(dom,'_anim');el&&(obj.useDisplay?el.setDisplayed(!1):el.hide(),el.setStyle(originalStyles),Ext.callback(obj.callback,obj.scope))})}}}});return this},selectable:function(){this.dom.unselectable='';this.removeCls(Element.unselectableCls);this.addCls(Element.selectableCls);return this},setCapture:function(){var dom=this.dom;Ext.isIE9m&&dom.setCapture&&dom.setCapture()},setHeight:function(height,animate){animate&&this.anim?(Ext.isObject(animate)||(animate=
{}),this.animate(Ext.applyIf({to:{height:height}},animate))):arguments.callee.$previous.apply(this,arguments);return this},setHorizontal:function(){var cls=this.verticalCls;delete this.vertical;cls&&(delete this.verticalCls,this.removeCls(cls));delete this.setWidth;delete this.setHeight;Ext.isIE8||(delete this.getWidth,delete this.getHeight);delete this.styleHooks},updateText:function(text){},setHtml:function(html,loadScripts,callback,scope){var me=this;if(!me.dom)return me;html=html||'';var dom=
me.dom;if(!0!==loadScripts)return dom.innerHTML=html,Ext.callback(callback,me),me;var id=Ext.id();html+='\x3cspan id\x3d"'+id+'" role\x3d"presentation"\x3e\x3c/span\x3e';var interval=Ext.interval(function(){var hd,match,attrs,srcMatch;if(!(hd=DOC.getElementById(id)))return!1;clearInterval(interval);Ext.removeNode(hd);for(hd=Ext.getHead().dom;match=scriptTagRe.exec(html);)(srcMatch=(attrs=match[1])?attrs.match(srcRe):!1)&&srcMatch[2]?(match=DOC.createElement('script'),match.src=srcMatch[2],(attrs=
attrs.match(typeRe))&&attrs[2]&&(match.type=attrs[2]),hd.appendChild(match)):match[2]&&0<match[2].length&&(scope?Ext.functionFactory(match[2]).call(scope):Ext.globalEval(match[2]));Ext.callback(callback,scope||me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,'');return me},setOpacity:function(opacity,animate){if(!this.dom)return this;animate&&this.anim?('object'!=typeof animate&&(animate={duration:350,easing:'ease-in'}),this.animate(Ext.applyIf({to:{opacity:opacity}},animate))):this.setStyle('opacity',
opacity);return this},setPositioning:function(pc){return this.setStyle(pc)},setVertical:function(angle,cls){var proto=Element.prototype;this.vertical=!0;cls&&this.addCls(this.verticalCls=cls);this.setWidth=proto.setHeight;this.setHeight=proto.setWidth;Ext.isIE8||(this.getWidth=proto.getHeight,this.getHeight=proto.getWidth);this.styleHooks=270===angle?proto.verticalStyleHooks270:proto.verticalStyleHooks90},setSize:function(width,height,animate){Ext.isObject(width)&&(animate=height,height=width.height,
width=width.width);animate&&this.anim?(!0===animate&&(animate={}),this.animate(Ext.applyIf({to:{width:width,height:height}},animate))):(this.dom.style.width=Element.addUnits(width),this.dom.style.height=Element.addUnits(height),(this.shadow||this.shim)&&this.syncUnderlays());return this},setVisible:function(visible,animate){var dom=this.dom,visMode=getVisMode(this);if('string'===typeof animate){switch(animate){case 'display':visMode=Element.DISPLAY;break;case 'visibility':visMode=Element.VISIBILITY;
break;case 'offsets':visMode=Element.OFFSETS;break;case 'clip':visMode=Element.CLIP}this.setVisibilityMode(visMode);animate=!1}if(animate&&this.anim)visible&&(this.setOpacity(.01),this.setVisible(!0)),Ext.isObject(animate)||(animate={duration:350,easing:'ease-in'}),this.animate(Ext.applyIf({callback:function(){visible||Ext.fly(dom).setVisible(!1).setOpacity(1)},to:{opacity:visible?1:0}},animate));else{if(visMode===Element.DISPLAY)return this.setDisplayed(visible);if(visMode===Element.OFFSETS)this[visible?
'removeCls':'addCls']('x-hidden-offsets');else if(visMode===Element.CLIP)this[visible?'removeCls':'addCls']('x-hidden-clip');else visMode===Element.VISIBILITY&&(this.fixDisplay(),dom.style.visibility=visible?'':'hidden')}this.getData().isVisible=visible;(this.shadow||this.shim)&&this.setUnderlaysVisible(visible);return this},setWidth:function(width,animate){animate&&this.anim?(Ext.isObject(animate)||(animate={}),this.animate(Ext.applyIf({to:{width:width}},animate))):arguments.callee.$previous.apply(this,
arguments);return this},setX:function(x,animate){return this.setXY([x,this.getY()],animate)},setXY:function(xy,animate){animate&&this.anim?(Ext.isObject(animate)||(animate={}),this.animate(Ext.applyIf({to:{x:xy[0],y:xy[1]}},animate))):arguments.callee.$previous.call(this,xy);return this},setY:function(y,animate){return this.setXY([this.getX(),y],animate)},show:function(animate){if('string'===typeof animate)return this.setVisible(!0,animate),this;this.setVisible(!0,this.anim(animate));return this},
slideIn:function(anchor,obj,slideOut){var me=this,dom=me.dom,elStyle=dom.style,wrapAnim,restoreScroll,wrapDomParentNode;anchor=anchor||'t';obj=obj||{};me.animate({duration:obj.duration?2*Math.max(obj.duration,500):1E3,listeners:{beforeanimate:function(){var animScope=this,listeners=obj.listeners,el$jscomp$0=Ext.fly(dom,'_anim');slideOut||el$jscomp$0.fixDisplay();var box=el$jscomp$0.getBox();'t'!=anchor&&'b'!=anchor||0!==box.height?'l'!=anchor&&'r'!=anchor||0!==box.width||(box.width=dom.scrollWidth):
box.height=dom.scrollHeight;var originalStyles=el$jscomp$0.getStyle('width height left right top bottom position z-index'.split(' '),!0);el$jscomp$0.setSize(box.width,box.height);obj.preserveScroll&&(restoreScroll=el$jscomp$0.cacheScrollValues());var wrap=el$jscomp$0.wrap({role:'presentation',id:Ext.id()+'-anim-wrap-for-'+el$jscomp$0.dom.id,style:{visibility:slideOut?'visible':'hidden'}});wrapDomParentNode=wrap.dom.parentNode;wrap.setPositioning(el$jscomp$0.getPositioning());wrap.isStyle('position',
'static')&&wrap.position('relative');el$jscomp$0.clearPositioning('auto');wrap.clip();restoreScroll&&restoreScroll();el$jscomp$0.setStyle({visibility:'',position:'absolute'});slideOut&&wrap.setSize(box.width,box.height);switch(anchor){case 't':var JSCompiler_object_inline_from_60={width:box.width+'px',height:'0px'};var JSCompiler_object_inline_to_61={width:box.width+'px',height:box.height+'px'};elStyle.bottom='0px';break;case 'l':JSCompiler_object_inline_from_60={width:'0px',height:box.height+'px'};
JSCompiler_object_inline_to_61={width:box.width+'px',height:box.height+'px'};me.anchorAnimX(anchor);break;case 'r':JSCompiler_object_inline_from_60={x:box.x+box.width,width:'0px',height:box.height+'px'};JSCompiler_object_inline_to_61={x:box.x,width:box.width+'px',height:box.height+'px'};me.anchorAnimX(anchor);break;case 'b':JSCompiler_object_inline_from_60={y:box.y+box.height,width:box.width+'px',height:'0px'};JSCompiler_object_inline_to_61={y:box.y,width:box.width+'px',height:box.height+'px'};break;
case 'tl':JSCompiler_object_inline_from_60={x:box.x,y:box.y,width:'0px',height:'0px'};JSCompiler_object_inline_to_61={width:box.width+'px',height:box.height+'px'};elStyle.bottom='0px';me.anchorAnimX('l');break;case 'bl':JSCompiler_object_inline_from_60={y:box.y+box.height,width:'0px',height:'0px'};JSCompiler_object_inline_to_61={y:box.y,width:box.width+'px',height:box.height+'px'};me.anchorAnimX('l');break;case 'br':JSCompiler_object_inline_from_60={x:box.x+box.width,y:box.y+box.height,width:'0px',
height:'0px'};JSCompiler_object_inline_to_61={x:box.x,y:box.y,width:box.width+'px',height:box.height+'px'};me.anchorAnimX('r');break;case 'tr':JSCompiler_object_inline_from_60={x:box.x+box.width,width:'0px',height:'0px'},JSCompiler_object_inline_to_61={x:box.x,width:box.width+'px',height:box.height+'px'},elStyle.bottom='0px',me.anchorAnimX('r')}wrap.show();wrapAnim=Ext.apply({},obj);delete wrapAnim.listeners;wrapAnim=new Ext.fx.Anim(Ext.applyIf(wrapAnim,{target:wrap,duration:500,easing:'ease-out',
from:slideOut?JSCompiler_object_inline_to_61:JSCompiler_object_inline_from_60,to:slideOut?JSCompiler_object_inline_from_60:JSCompiler_object_inline_to_61}));wrapAnim.on('afteranimate',function(){var el=Ext.fly(dom,'_anim');el.setStyle(originalStyles);slideOut&&(obj.useDisplay?el.setDisplayed(!1):el.hide());wrap.dom&&(wrap.dom.parentNode?wrap.dom.parentNode.insertBefore(el.dom,wrap.dom):wrapDomParentNode.appendChild(el.dom),wrap.destroy());restoreScroll&&restoreScroll();animScope.end()});if(listeners)wrapAnim.on(listeners)}}});
return me},slideOut:function(anchor,options){return this.slideIn(anchor,options,!0)},swallowEvent:function(eventName,preventDefault){var e$jscomp$0,fn=function(e){e.stopPropagation();preventDefault&&e.preventDefault()};if(Ext.isArray(eventName)){var eLen=eventName.length;for(e$jscomp$0=0;e$jscomp$0<eLen;e$jscomp$0++)this.on(eventName[e$jscomp$0],fn);return this}this.on(eventName,fn);return this},switchOff:function(options){var dom=this.dom;options=Ext.applyIf(options||{},{easing:'ease-in',duration:500,
remove:!1,useDisplay:!1});this.animate({duration:2*Math.max(options.duration,500),listeners:{beforeanimate:{fn:function(){var el$jscomp$0=Ext.fly(dom,'_anim'),animScope=this,size=el$jscomp$0.getSize(),xy=el$jscomp$0.getXY();el$jscomp$0.clearOpacity();el$jscomp$0.clip();var position=el$jscomp$0.getPositioning();(new Ext.fx.Animator({target:dom,duration:options.duration,easing:options.easing,keyframes:{33:{opacity:.3},66:{height:1,y:xy[1]+size.height/2},100:{width:1,x:xy[0]+size.width/2}}})).on('afteranimate',
function(){var el=Ext.fly(dom,'_anim');options.useDisplay?el.setDisplayed(!1):el.hide();el.clearOpacity();el.setPositioning(position);el.setSize(size);animScope.end()})}}},callback:options.callback,scope:options.scope});return this},syncContent:function(source){source=Ext.getDom(source);var sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=this.dom,destNodes=dest.childNodes,destLen=destNodes.length,i,elData=dest._extData;if(Ext.isIE9m&&dest.mergeAttributes)dest.mergeAttributes(source,
!0),dest.src=source.src;else{var sourceNode=source.attributes;var nodeType=sourceNode.length;for(i=0;i<nodeType;i++){var attName=sourceNode[i].name;'id'!==attName&&dest.setAttribute(attName,sourceNode[i].value)}}elData&&(elData.isSynchronized=!1);if(sourceLen!==destLen)dest.innerHTML=source.innerHTML;else for(i=0;i<sourceLen;i++){sourceNode=sourceNodes[i];destLen=destNodes[i];nodeType=sourceNode.nodeType;if(nodeType!==destLen.nodeType||1===nodeType&&sourceNode.tagName!==destLen.tagName){dest.innerHTML=
source.innerHTML;break}3===nodeType?destLen.data=sourceNode.data:(sourceNode.id&&destLen.id!==sourceNode.id&&(destLen.id=sourceNode.id),destLen.style.cssText=sourceNode.style.cssText,destLen.className=sourceNode.className,Ext.fly(destLen,'_syncContent').syncContent(sourceNode))}},toggle:function(animate){this.setVisible(!this.isVisible(),this.anim(animate));return this},unmask:function(){var data=this.getData(),maskEl=data.maskEl;if(maskEl){var style=maskEl.dom.style;style.clearExpression&&(style.clearExpression('width'),
style.clearExpression('height'));maskEl&&(maskEl.destroy(),delete data.maskEl);this.removeCls(['x-masked','x-masked-relative'])}this.restoreTabbableState(this.dom===DOC.body)},unclip:function(){var data=this.getData();data.isClipped&&(data.isClipped=!1,data=data.originalClip,data.o&&this.setStyle('overflow',data.o),data.x&&this.setStyle('overflow-x',data.x),data.y&&this.setStyle('overflow-y',data.y));return this},translate:function(x,y,z){Ext.supports.CssTransforms&&!Ext.isIE9m?arguments.callee.$previous.apply(this,
arguments):(null!=x&&(this.dom.style.left=x+'px'),null!=y&&(this.dom.style.top=y+'px'))},unselectable:function(){Ext.isOpera&&(this.dom.unselectable='on');this.removeCls(Element.selectableCls);this.addCls(Element.unselectableCls);return this},privates:{findTabbableElements:function(options){var dom=this.dom,cAttr=Ext.Element.tabbableSavedCounterAttribute,selection=[],idx=0;if(!dom)return selection;if(options){var skipSelf=options.skipSelf;var skipChildren=options.skipChildren;var excludeRoot=options.excludeRoot;
var includeSaved=options.includeSaved;var includeHidden=options.includeHidden}if((excludeRoot=excludeRoot&&Ext.getDom(excludeRoot))&&excludeRoot.contains(dom))return selection;!skipSelf&&(includeSaved&&dom.hasAttribute(cAttr)||this.isTabbable(includeHidden))&&(selection[idx++]=dom);if(skipChildren)return selection;options=dom.querySelectorAll(Ext.Element.tabbableSelector);var len=options.length;if(!len)return selection;skipChildren=new Ext.dom.Fly;for(dom=0;dom<len;dom++){skipSelf=options[dom];var tabIndex=
+skipSelf.getAttribute('tabIndex');!(includeSaved&&skipSelf.hasAttribute(cAttr)||!(0>tabIndex)&&skipChildren.attach(skipSelf).isTabbable(includeHidden))||excludeRoot&&(excludeRoot===skipSelf||excludeRoot.contains(skipSelf))||(selection[idx++]=skipSelf)}return selection},saveTabbableState:function(options){var counterAttr=Ext.Element.tabbableSavedCounterAttribute,savedAttr=Ext.Element.tabbableSavedValueAttribute,len;options&&null!=options.includeSaved||(options=Ext.Object.chain(options||null),options.includeSaved=
!0);var nodes=this.findTabbableElements(options);var i=0;for(len=nodes.length;i<len;i++){var node=nodes[i];options=+node.getAttribute(counterAttr);0<options?node.setAttribute(counterAttr,++options):(node.hasAttribute('tabIndex')?node.setAttribute(savedAttr,node.getAttribute('tabIndex')):node.setAttribute(savedAttr,'none'),node.setAttribute('tabIndex','-1'),node.setAttribute(counterAttr,'1'))}return nodes},restoreTabbableState:function(skipSelf,skipChildren){var dom=this.dom,counterAttr=Ext.Element.tabbableSavedCounterAttribute,
savedAttr=Ext.Element.tabbableSavedValueAttribute,nodes=[];if(!dom)return this;skipChildren||(nodes=Ext.Array.from(dom.querySelectorAll('['+counterAttr+']')));skipSelf||nodes.unshift(dom);skipChildren=0;for(dom=nodes.length;skipChildren<dom;skipChildren++)if(skipSelf=nodes[skipChildren],skipSelf.hasAttribute(counterAttr)&&skipSelf.hasAttribute(savedAttr)){var idx=+skipSelf.getAttribute(counterAttr);1<idx?skipSelf.setAttribute(counterAttr,--idx):(idx=skipSelf.getAttribute(savedAttr),'none'===idx?skipSelf.removeAttribute('tabIndex'):
skipSelf.setAttribute('tabIndex',idx),skipSelf.removeAttribute(savedAttr),skipSelf.removeAttribute(counterAttr))}return nodes}},deprecated:{'4.0':{methods:{pause:function(ms){Ext.fx.Manager.setFxDefaults(this.id,{delay:ms});return this},scale:function(w,h,o){this.animate(Ext.apply({},o,{width:w,height:h}));return this},shift:function(config){this.animate(config);return this}}},'4.2':{methods:{moveTo:function(x,y,animate){return this.setXY([x,y],animate)},setBounds:function(x,y,width,height,animate){return this.setBox({x:x,
y:y,width:width,height:height},animate)},setLeftTop:function(left,top){var style=this.dom.style;style.left=Element.addUnits(left);style.top=Element.addUnits(top);(this.shadow||this.shim)&&this.syncUnderlays();return this},setLocation:function(x,y,animate){return this.setXY([x,y],animate)}}},'5.0':{methods:{getAttributeNS:function(namespace,name){return this.getAttribute(name,namespace)},getCenterXY:function(){return this.getAlignToXY(DOC,'c-c')},getComputedHeight:function(){return Math.max(this.dom.offsetHeight,
this.dom.clientHeight)||parseFloat(this.getStyle('height'))||0},getComputedWidth:function(){return Math.max(this.dom.offsetWidth,this.dom.clientWidth)||parseFloat(this.getStyle('width'))||0},getStyleSize:function(){var d=this.dom,w,h;if(d===DOC||d===DOC.body)return{width:Element.getViewportWidth(),height:Element.getViewportHeight()};d=this.getStyle(['height','width'],!0);d.width&&'auto'!==d.width&&(w=parseFloat(d.width));d.height&&'auto'!==d.height&&(h=parseFloat(d.height));return{width:w||this.getWidth(!0),
height:h||this.getHeight(!0)}},isBorderBox:function(){return!0},isDisplayed:function(){return!this.isStyle('display','none')},focusable:'isFocusable'}}}}}(),function(){var Element=Ext.dom.Element,proto=Element.prototype,useDocForId=!Ext.isIE8,DOC=document,view=DOC.defaultView,opacityRe=/alpha\(opacity=(.*)\)/i,trimRe=/^\s+|\s+$/g,styleHooks=proto.styleHooks,supports=Ext.supports,verticalStyleHooks90,verticalStyleHooks270,k;proto._init(Element);delete proto._init;Ext.plainTableCls='x-table-plain';
Ext.plainListCls='x-list-plain';Ext.CompositeElementLite&&Ext.CompositeElementLite.importElementMethods();!supports.Opacity&&Ext.isIE&&Ext.apply(styleHooks.opacity,{get:function(dom){dom=dom.style.filter;return dom.match&&(dom=dom.match(opacityRe))&&(dom=parseFloat(dom[1]),!isNaN(dom))?dom?dom/100:0:1},set:function(dom,value){dom=dom.style;var val=dom.filter.replace(opacityRe,'').replace(trimRe,'');dom.zoom=1;dom.filter='number'===typeof value&&0<=value&&1>value?val+(val.length?' ':'')+'alpha(opacity\x3d'+
100*value+')':val}});if(!supports.matchesSelector){var simpleSelectorRe=/^([a-z]+|\*)?(?:\.([a-z][a-z\-_0-9]*))?$/i,dashRe=/\-/g,fragment,classMatcher=function(tag,cls){var classRe=new RegExp('(?:^|\\s+)'+cls.replace(dashRe,'\\-')+'(?:\\s+|$)');return tag&&'*'!==tag?(tag=tag.toUpperCase(),function(el){return el.tagName===tag&&classRe.test(el.className)}):function(el){return classRe.test(el.className)}},tagMatcher=function(tag){tag=tag.toUpperCase();return function(el){return el.tagName===tag}},cache$jscomp$0=
{};proto.matcherCache=cache$jscomp$0;proto.is=function(selector){if(!selector)return!0;var dom=this.dom,cls;if(1!==dom.nodeType)return!1;if(!(cls=Ext.isFunction(selector)?selector:cache$jscomp$0[selector])){if(!(cls=selector.match(simpleSelectorRe))){cls=dom.parentNode;if(!cls){var isOrphan=!0;cls=fragment||(fragment=DOC.createDocumentFragment());fragment.appendChild(dom)}selector=-1!==Ext.Array.indexOf(Ext.fly(cls,'_is').query(selector),dom);isOrphan&&fragment.removeChild(dom);return selector}isOrphan=
cls[1];cls=cls[2];cache$jscomp$0[selector]=cls=cls?classMatcher(isOrphan,cls):tagMatcher(isOrphan)}return cls(dom)}}view&&view.getComputedStyle||(proto.getStyle=function(property,inline){var dom=this.dom,multiple='string'!==typeof property,props=property,len=1,isInline=inline,styleHooks=this.styleHooks;if(multiple){var values={};property=props[0];var i=0;if(!(len=props.length))return values}if(!dom||dom.documentElement)return values||'';var camel=dom.style;inline?inline=camel:(inline=dom.currentStyle,
inline||(isInline=!0,inline=camel));do{(camel=styleHooks[property])||(styleHooks[property]=camel={name:Element.normalize(property)});camel.get?camel=camel.get(dom,this,isInline,inline):(camel=camel.name,camel=inline[camel]);if(!multiple)return camel;values[property]=camel;property=props[++i]}while(i<len);return values});if(Ext.isIE8){var getBorderWidth=function(dom,el,inline,style){return'none'===style[this.styleName]?'0px':style[this.name]};view=['Top','Right','Bottom','Left'];for(k=view.length;k--;){var edge=
view[k];var borderWidth='border'+edge+'Width';styleHooks['border-'+edge.toLowerCase()+'-width']=styleHooks[borderWidth]={name:borderWidth,styleName:'border'+edge+'Style',get:getBorderWidth}}proto.syncRepaint=function(){this.addCls('x-sync-repaint');this.getWidth();this.removeCls('x-sync-repaint')}}Ext.isIE10m&&Ext.override(Element,{focus:function(defer,dom){dom=dom||this.dom;if(Number(defer))Ext.defer(this.focus,defer,this,[null,dom]);else{Ext.GlobalEvents.fireEvent('beforefocus',dom);!dom||'INPUT'!==
dom.tagName&&'TEXTAREA'!==dom.tagname||(Ext.synchronouslyFocusing=document.activeElement);try{dom.focus()}catch(xcpt){var ex=xcpt}Ext.synchronouslyFocusing&&document.activeElement!==dom&&!ex&&dom.focus();Ext.synchronouslyFocusing=null}return this}});Ext.apply(Ext,{enableGarbageCollector:!0,isBorderBox:!0,useShims:!1,getElementById:function(id){var el=DOC.getElementById(id),detachedBodyEl;!el&&(detachedBodyEl=Ext.detachedBodyEl)&&(el=detachedBodyEl.dom.querySelector(Ext.makeIdSelector(id)));return el},
addBehaviors:function(o){if(Ext.isReady){var cache={},parts,b;for(b in o)if((parts=b.split('@'))[1]){var s=parts[0];cache[s]||(cache[s]=Ext.fly(document).select(s,!0));cache[s].on(parts[1],o[b])}cache=null}else Ext.onInternalReady(function(){Ext.addBehaviors(o)})}});Ext.isIE9m?(Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;!el&&(detachedBodyEl=Ext.detachedBodyEl)&&(el=detachedBodyEl.dom.all[id]);return el},proto.getById=function(id,asDom){var dom=this.dom,ret=null;dom&&
(dom=useDocForId&&DOC.getElementById(id)||dom.all[id])&&(asDom?ret=dom:((id=Ext.cache[id])&&(id.skipGarbageCollection||!Ext.isGarbage(id.dom)?ret=id:id.destroy()),ret=ret||new Ext.Element(dom)));return ret}):DOC.querySelector||(Ext.getDetachedBody=Ext.getBody,Ext.getElementById=function(id){return DOC.getElementById(id)},proto.getById=function(id,asDom){id=DOC.getElementById(id);return asDom?id:id?Ext.get(id):null});!Ext.isIE||Ext.isIE9p&&9<=DOC.documentMode||(proto.getAttribute=function(name,ns){var d=
this.dom;if(ns){var type=typeof d[ns+':'+name];return'undefined'!==type&&'unknown'!==type?d[ns+':'+name]||null:null}'for'===name&&(name='htmlFor');return d[name]||null});Ext.onInternalReady(function(){function fixTransparent(dom,el,inline,style){dom=style[this.name]||'';return transparentRe.test(dom)?'transparent':dom}function makeSelectionRestoreFn(activeEl,start,end){return function(){activeEl.selectionStart=start;activeEl.selectionEnd=end}}function fixRightMargin(dom,el,inline,style){el=style.marginRight;
if('0px'!==el){var domStyle=dom.style;var display=domStyle.display;domStyle.display='inline-block';el=(inline?style:dom.ownerDocument.defaultView.getComputedStyle(dom,null)).marginRight;domStyle.display=display}return el}function fixRightMarginAndInputFocus(dom,el,inline,style){var result=style.marginRight;if('0px'!==result){el=dom.style;a:{var cleaner=supports.DisplayChangeInputSelectionBug;var display=supports.DisplayChangeTextAreaSelectionBug;if(cleaner||display){var tag=(result=Element.getActiveElement())&&
result.tagName;if((display&&'TEXTAREA'===tag||cleaner&&'INPUT'===tag&&'text'===result.type)&&Ext.fly(dom).isAncestor(result)&&(cleaner=result.selectionStart,display=result.selectionEnd,Ext.isNumber(cleaner)&&Ext.isNumber(display))){cleaner=makeSelectionRestoreFn(result,cleaner,display);break a}}cleaner=Ext.emptyFn}display=el.display;el.display='inline-block';result=(inline?style:dom.ownerDocument.defaultView.getComputedStyle(dom,'')).marginRight;el.display=display;cleaner()}return result}var transparentRe=
/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,bodyCls=[],origSetWidth=proto.setWidth,origSetHeight=proto.setHeight,origSetSize=proto.setSize,pxRe=/^\d+(?:\.\d*)?px$/i,i;supports.FixedTableWidthBug&&(styleHooks.width={name:'width',set:function(dom,value,el){var style=dom.style;el=el._needsTableWidthFix;var origDisplay=style.display;el&&(style.display='none');style.width=value;el&&(dom.scrollWidth,style.display=origDisplay)}},proto.setWidth=function(width,animate){var dom=this.dom,style=
dom.style,needsFix=this._needsTableWidthFix,origDisplay=style.display;needsFix&&!animate&&(style.display='none');origSetWidth.call(this,width,animate);needsFix&&!animate&&(dom.scrollWidth,style.display=origDisplay);return this},proto.setSize=function(width,height,animate){var dom=this.dom,style=dom.style,needsFix=this._needsTableWidthFix,origDisplay=style.display;needsFix&&!animate&&(style.display='none');origSetSize.call(this,width,height,animate);needsFix&&!animate&&(dom.scrollWidth,style.display=
origDisplay);return this});Ext.isIE8&&(styleHooks.height={name:'height',set:function(dom,value,el){var component=el.component;if(component&&component._syncFrameHeight&&el===component.el)if(el=component.frameBody.dom.style,pxRe.test(value)){if(component=component.getFrameInfo())el.height=parseInt(value,10)-component.height+'px'}else value&&'auto'!==value||(el.height='');dom.style.height=value}},proto.setHeight=function(height,animate){var component=this.component;if(component&&component._syncFrameHeight&&
this===component.el){var frameBodyStyle=component.frameBody.dom.style;if(height&&'auto'!==height){if(component=component.getFrameInfo())frameBodyStyle.height=height-component.height+'px'}else frameBodyStyle.height=''}return origSetHeight.call(this,height,animate)},proto.setSize=function(width,height,animate){var component=this.component;if(component&&component._syncFrameHeight&&this===component.el){var frameBodyStyle=component.frameBody.dom.style;if(height&&'auto'!==height){if(component=component.getFrameInfo())frameBodyStyle.height=
height-component.height+'px'}else frameBodyStyle.height=''}return origSetSize.call(this,width,height,animate)});Ext.getDoc().on('selectstart',function(ev,dom){var selectableCls=Element.selectableCls,unselectableCls=Element.unselectableCls,tagName=dom&&dom.tagName;tagName=tagName&&tagName.toLowerCase();if('input'!==tagName&&'textarea'!==tagName)for(;dom&&1===dom.nodeType&&dom!==DOC.documentElement;){tagName=Ext.fly(dom);if(tagName.hasCls(selectableCls))break;if(tagName.hasCls(unselectableCls)){ev.stopEvent();
break}dom=dom.parentNode}});supports.RightMargin||(styleHooks.marginRight=styleHooks['margin-right']={name:'marginRight',get:supports.DisplayChangeInputSelectionBug||supports.DisplayChangeTextAreaSelectionBug?fixRightMarginAndInputFocus:fixRightMargin});if(!supports.TransparentColor){var colorStyles=['background-color','border-color','color','outline-color'];for(i=colorStyles.length;i--;){var name=colorStyles[i];var camel=Element.normalize(name);styleHooks[name]=styleHooks[camel]={name:camel,get:fixTransparent}}}proto.verticalStyleHooks90=
verticalStyleHooks90=Ext.Object.chain(styleHooks);proto.verticalStyleHooks270=verticalStyleHooks270=Ext.Object.chain(styleHooks);verticalStyleHooks90.width=styleHooks.height||{name:'height'};verticalStyleHooks90.height=styleHooks.width||{name:'width'};verticalStyleHooks90['margin-top']={name:'marginLeft'};verticalStyleHooks90['margin-right']={name:'marginTop'};verticalStyleHooks90['margin-bottom']={name:'marginRight'};verticalStyleHooks90['margin-left']={name:'marginBottom'};verticalStyleHooks90['padding-top']=
{name:'paddingLeft'};verticalStyleHooks90['padding-right']={name:'paddingTop'};verticalStyleHooks90['padding-bottom']={name:'paddingRight'};verticalStyleHooks90['padding-left']={name:'paddingBottom'};verticalStyleHooks90['border-top']={name:'borderLeft'};verticalStyleHooks90['border-right']={name:'borderTop'};verticalStyleHooks90['border-bottom']={name:'borderRight'};verticalStyleHooks90['border-left']={name:'borderBottom'};verticalStyleHooks270.width=styleHooks.height||{name:'height'};verticalStyleHooks270.height=
styleHooks.width||{name:'width'};verticalStyleHooks270['margin-top']={name:'marginRight'};verticalStyleHooks270['margin-right']={name:'marginBottom'};verticalStyleHooks270['margin-bottom']={name:'marginLeft'};verticalStyleHooks270['margin-left']={name:'marginTop'};verticalStyleHooks270['padding-top']={name:'paddingRight'};verticalStyleHooks270['padding-right']={name:'paddingBottom'};verticalStyleHooks270['padding-bottom']={name:'paddingLeft'};verticalStyleHooks270['padding-left']={name:'paddingTop'};
verticalStyleHooks270['border-top']={name:'borderRight'};verticalStyleHooks270['border-right']={name:'borderBottom'};verticalStyleHooks270['border-bottom']={name:'borderLeft'};verticalStyleHooks270['border-left']={name:'borderTop'};Ext.scopeCss||bodyCls.push('x-body');supports.Touch&&bodyCls.push('x-touch');Ext.isIE&&Ext.isIE9m&&(bodyCls.push('x-ie','x-ie9m'),bodyCls.push('x-ie8p'),Ext.isIE8?bodyCls.push('x-ie8'):bodyCls.push('x-ie9','x-ie9p'),Ext.isIE8m&&bodyCls.push('x-ie8m'));Ext.isIE10&&bodyCls.push('x-ie10');
Ext.isIE10p&&bodyCls.push('x-ie10p');Ext.isIE11&&bodyCls.push('x-ie11');Ext.isEdge&&bodyCls.push('x-edge');Ext.isGecko&&bodyCls.push('x-gecko');Ext.isOpera&&bodyCls.push('x-opera');Ext.isOpera12m&&bodyCls.push('x-opera12m');Ext.isWebKit&&bodyCls.push('x-webkit');Ext.isSafari&&bodyCls.push('x-safari');Ext.isChrome&&bodyCls.push('x-chrome');Ext.isMac&&bodyCls.push('x-mac');Ext.isLinux&&bodyCls.push('x-linux');supports.CSS3BorderRadius||bodyCls.push('x-nbr');supports.CSS3LinearGradient||bodyCls.push('x-nlg');
supports.Touch&&bodyCls.push('x-touch');Ext.os.deviceType&&bodyCls.push('x-'+Ext.os.deviceType.toLowerCase());Ext.getBody().addCls(bodyCls)},null,{priority:1500})});
Ext.cmd.derive('Ext.GlobalEvents',Ext.mixin.Observable,{alternateClassName:'Ext.globalEvents',observableType:'global',singleton:!0,resizeBuffer:100,idleEventMask:{mousemove:1,touchmove:1,pointermove:1,MSPointerMove:1,unload:1},constructor:function(){var me=this;me.callParent();Ext.onInternalReady(function(){me.attachListeners()})},attachListeners:function(){Ext.get(window).on('resize',this.fireResize,this,{buffer:this.resizeBuffer});Ext.getDoc().on('mousedown',this.fireMouseDown,this)},fireMouseDown:function(e){this.fireEvent('mousedown',
e)},fireResize:function(){var Element=Ext.Element,w=Element.getViewportWidth();Element=Element.getViewportHeight();if(this.curHeight!==Element||this.curWidth!==w)this.curHeight=Element,this.curWidth=w,this.fireEvent('resize',w,Element)}},1,0,0,0,0,0,[Ext,'GlobalEvents',Ext,'globalEvents'],function(GlobalEvents){Ext.on=function(){return GlobalEvents.addListener.apply(GlobalEvents,arguments)};Ext.un=function(){return GlobalEvents.removeListener.apply(GlobalEvents,arguments)};Ext.fireEvent=function(){return GlobalEvents.fireEvent.apply(GlobalEvents,
arguments)}});Ext.define('Ext.overrides.GlobalEvents',{override:'Ext.GlobalEvents',deprecated:{5:{methods:{addListener:function(ename,fn,scope,options,order,caller,eventOptions){var name;if('ready'===ename)var readyFn=fn;else if('string'!==typeof ename)for(name in ename)'ready'===name&&(readyFn=ename[name]);if(readyFn)Ext.onReady(readyFn);this.callParent([ename,fn,scope,options,order,caller,eventOptions])}}}}});
Ext.cmd.derive('Ext.Glyph',Ext.Base,{isGlyph:!0,constructor:function(glyph){glyph&&this.setGlyph(glyph)},setGlyph:function(glyph){this.glyphConfig=glyph;if('string'===typeof glyph){var glyphParts=glyph.split('@');if(isNaN(glyph=isNaN(glyphParts[0])?parseInt('0'+glyphParts[0],16):parseInt(glyphParts[0],10))||!glyph)glyph=glyphParts[0].charCodeAt(0);this.fontFamily=glyphParts[1]||Ext._glyphFontFamily}else this.fontFamily=Ext._glyphFontFamily;this.codepoint=glyph;this.character=Ext.String.fromCodePoint(this.codepoint);
return this},getStyle:function(){return{'font-family':this.fontFamily}},isEqual:function(other){return other&&other.isGlyph&&other.codepoint===this.codepoint&&other.fontFamily===this.fontFamily},statics:function(){var instance;return{fly:function(glyph){return glyph.isGlyph?glyph:(instance||(instance=new Ext.Glyph)).setGlyph(glyph)}}}()},1,0,0,0,0,0,[Ext,'Glyph'],0);Ext.USE_NATIVE_JSON=!1;
Ext.JSON=new function(){var me=this,hasNative=window.JSON&&'[object JSON]'===JSON.toString(),useHasOwn=!!{}.hasOwnProperty,pad=function(n){return 10>n?'0'+n:n},doDecode=function(json){return eval('('+json+')')},m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\','\x0B':'\\u000b'},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g;me.encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return'string'===typeof c?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+
'"'};me.encodeValue=function(o,newline){if(null===o||void 0===o)return'null';if(Ext.isDate(o))return me.encodeDate(o);if(Ext.isString(o))return Ext.isMSDate(o)?me.encodeMSDate(o):me.encodeString(o);if('number'===typeof o)return isFinite(o)?String(o):'null';if(Ext.isBoolean(o))return String(o);if(o.toJSON)return o.toJSON();if(Ext.isArray(o)){if(newline){var len=o.length,cnewline=newline+'   ',sep=','+cnewline,a=['[',cnewline],i;for(i=0;i<len;i+=1)a.push(me.encodeValue(o[i],cnewline),sep);a[a.length-
1]=newline+']';o=a.join('')}else{newline=['[',''];len=o.length;for(cnewline=0;cnewline<len;cnewline+=1)newline.push(me.encodeValue(o[cnewline]),',');newline[newline.length-1]=']';o=newline.join('')}return o}if(Ext.isObject(o)){if(newline){cnewline=newline+'   ';sep=','+cnewline;a=['{',cnewline];for(len in o)i=o[len],useHasOwn&&!o.hasOwnProperty(len)||'function'===typeof i||void 0===i||a.push(me.encodeValue(len)+': '+me.encodeValue(i,cnewline),sep);a[a.length-1]=newline+'}';o=a.join('')}else{newline=
['{',''];for(cnewline in o)len=o[cnewline],useHasOwn&&!o.hasOwnProperty(cnewline)||'function'===typeof len||void 0===len||newline.push(me.encodeValue(cnewline),':',me.encodeValue(len),',');newline[newline.length-1]='}';o=newline.join('')}return o}return'function'===typeof o?'null':'undefined'};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){return hasNative&&
Ext.USE_NATIVE_JSON?JSON.stringify(o):me.encodeValue(o)};me.decode=function(json,safe){try{return hasNative&&Ext.USE_NATIVE_JSON?JSON.parse(json):doDecode(json)}catch(e){if(safe)return null;Ext.raise({sourceClass:'Ext.JSON',sourceMethod:'decode',msg:"You're trying to decode an invalid JSON String: "+json})}};me.encodeMSDate=function(o){return'"'+o+'"'};Ext.util||(Ext.util={});Ext.util.JSON=me;Ext.encode=me.encode;Ext.decode=me.decode};
Ext.cmd.derive('Ext.mixin.Inheritable',Ext.Mixin,{mixinConfig:{id:'inheritable'},getInherited:function(inner){var inheritedState=inner&&this.inheritedStateInner||this.inheritedState,ownerCt=this.getRefOwner(),isContainer=this.isContainer,inheritedStateInner,getInner;if(!inheritedState||inheritedState.invalid){inheritedState=this.getRefOwner();var ownerLayout=this.ownerLayout;ownerCt&&(getInner=ownerLayout?ownerLayout===ownerCt.layout:!0);this.inheritedState=inheritedState=Ext.Object.chain(inheritedState?
inheritedState.getInherited(getInner):Ext.rootInheritedState);isContainer&&(this.inheritedStateInner=inheritedStateInner=Ext.Object.chain(inheritedState));this.initInheritedState(inheritedState,inheritedStateInner);inheritedState=isContainer&&inner?this.inheritedStateInner:this.inheritedState}return inheritedState},getInheritedConfig:function(property,skipThis){var state=this.inheritedState;if(!state||state.invalid)state=this.getInherited();var ret=state[property];skipThis&&state.hasOwnProperty(property)&&
(skipThis=ret,delete state[property],ret=state[property],state[property]=skipThis);return ret},resolveListenerScope:function(defaultScope,skipThis){var hasSkipThis='boolean'===typeof skipThis,namedScope=Ext._namedScopes[defaultScope],ret;namedScope?namedScope.isController?ret=this.getInheritedConfig('controller',hasSkipThis?skipThis:!namedScope.isSelf):namedScope.isSelf?ret=this.getInheritedConfig('defaultListenerScope',hasSkipThis&&skipThis)||this:namedScope.isThis&&(ret=this):ret=this.getInheritedConfig('defaultListenerScope',
hasSkipThis?skipThis:!0)||defaultScope||this;return ret||null},resolveSatelliteListenerScope:function(satellite,defaultScope){var namedScope=Ext._namedScopes[defaultScope],ret;namedScope?namedScope.isController?ret=this.getInheritedConfig('controller'):namedScope.isSelf?ret=this.getInheritedConfig('defaultListenerScope')||satellite:namedScope.isThis&&(ret=satellite):ret=this.getInheritedConfig('defaultListenerScope')||defaultScope||this;return ret||null},lookupReferenceHolder:function(skipThis){return this.getInheritedConfig('referenceHolder',
!1!==skipThis)||null},getRefOwner:function(){return this.ownerCt||this.parent||this.$initParent||this.ownerCmp||this.floatParent},invalidateInheritedState:function(){var inheritedState=this.inheritedState;inheritedState&&(inheritedState.invalid=!0,delete this.inheritedState)},privates:{fixReference:function(){var refHolder;this.getReference()&&(refHolder=this.lookupReferenceHolder())&&refHolder.attachReference(this)},onInheritedAdd:function(parent,instanced){this.inheritedState&&instanced&&this.invalidateInheritedState();
this.getReference()&&Ext.ComponentManager.markReferencesDirty()},onInheritedRemove:function(destroying){var refHolder;this.getReference()&&(refHolder=this.lookupReferenceHolder())&&refHolder.clearReference(this);this.inheritedState&&!destroying&&this.invalidateInheritedState()}}},0,0,0,0,0,0,[Ext.mixin,'Inheritable'],function(){Ext.rootInheritedState={}});
Ext.cmd.derive('Ext.mixin.Bindable',Ext.Base,{mixinId:'bindable',config:{bind:{$value:null,lazy:!0},controller:null,defaultListenerScope:!1,publishes:{$value:null,lazy:!0,merge:function(newValue,oldValue){return this.mergeSets(newValue,oldValue)}},reference:null,session:{$value:null,lazy:!0},twoWayBindable:{$value:null,lazy:!0,merge:function(newValue,oldValue){return this.mergeSets(newValue,oldValue)}},viewModel:{$value:null,lazy:!0}},defaultBindProperty:null,validRefRe:/^[a-z_][a-z0-9_]*$/i,initInheritedState:function(inheritedState){var reference=
this.getReference(),controller=this.getController(),viewModel=this.getConfig('viewModel',!0),session=this.getConfig('session',!0),defaultListenerScope=this.getDefaultListenerScope();controller&&(inheritedState.controller=controller);defaultListenerScope?inheritedState.defaultListenerScope=this:controller&&(inheritedState.defaultListenerScope=controller);viewModel&&(viewModel.isViewModel||(viewModel=this),inheritedState.viewModel=viewModel);session&&(session.isSession||(session=this),inheritedState.session=
session);reference&&(this.referenceKey=(inheritedState.referencePath||'')+reference,this.viewModelKey=(inheritedState.viewModelPath||'')+reference)},lookupController:function(skipThis){return this.getInheritedConfig('controller',skipThis)||null},lookupSession:function(skipThis){var ret=skipThis?null:this.getSession();ret||(ret=this.getInheritedConfig('session',skipThis))&&!ret.isSession&&(ret=ret.getInherited().session=ret.getSession());return ret||null},lookupViewModel:function(skipThis){var ret=
skipThis?null:this.getViewModel();ret||(ret=this.getInheritedConfig('viewModel',skipThis))&&!ret.isViewModel&&(ret=ret.getInherited().viewModel=ret.getViewModel());return ret||null},publishState:function(property,value){var state=this.publishedState,binds=this.getBind(),binding=binds&&property&&binds[property];binds=0;var name,vm,path;!binding||binding.syncing||binding.isReadOnly()||(0!==binding.calls||null!=value&&value!==this.getInitialConfig()[property])&&binding.setValue(value);if(binding=this.getPublishes())if(vm=
this.lookupViewModel())if(path=this.viewModelKey){if(property&&state){if(!binding[property]||!(value&&value.constructor===Object||value instanceof Array)&&state[property]===value)return;path=path+'.'+property}else{state=state||(this.publishedState={});for(name in binding)++binds,state[name]=name===property?value:this[name];if(!binds)return;value=state}vm.set(path,value)}},privates:{addBindableUpdater:function(property){property=this.self.$config.configs[property];var updateName;property&&!this.hasOwnProperty(updateName=
property.names.update)&&(this[updateName]=property.bindableUpdater||(property.root.bindableUpdater=this.makeBindableUpdater(property)))},applyBind:function(binds,currentBindings){if(!binds)return binds;var viewModel=this.lookupViewModel(),twoWayable=this.getTwoWayBindable(),getBindTemplateScope=this._getBindTemplateScope,property;this.$hasBinds=!0;currentBindings&&'string'!==typeof currentBindings||(currentBindings={});if(Ext.isString(binds)){var b=binds;binds={};binds[this.defaultBindProperty]=b}for(property in binds){var descriptor=
binds[property];if((b=currentBindings[property])&&'string'!==typeof b){b.destroy();b=null;var destroy=!0}descriptor&&(b=viewModel.bind(descriptor,this.onBindNotify,this),b._config=Ext.Config.get(property),b.getTemplateScope=getBindTemplateScope);destroy?delete currentBindings[property]:currentBindings[property]=b;twoWayable&&twoWayable[property]&&(destroy?this.clearBindableUpdater(property):b.isReadOnly()||this.addBindableUpdater(property))}return currentBindings},applyController:function(controller){controller&&
(controller=Ext.Factory.controller(controller),controller.setView(this));return controller},applyPublishes:function(all){if(this.lookupViewModel())for(var property in all)this.addBindableUpdater(property);return all},applySession:function(session){if(!session)return null;if(!session.isSession){var parentSession=this.lookupSession(!0);session=!0===session?{}:session;session=parentSession?parentSession.spawn(session):new Ext.data.Session(session)}return session},applyViewModel:function(viewModel){if(!viewModel)return null;
if(!viewModel.isViewModel){var config={parent:this.lookupViewModel(!0),view:this};config.session=this.getSession();config.parent||(config.session=this.lookupSession());viewModel&&(viewModel.constructor===Object?Ext.apply(config,viewModel):'string'===typeof viewModel&&(config.type=viewModel));viewModel=Ext.Factory.viewModel(config)}return viewModel},_getBindTemplateScope:function(){return this.scope.resolveListenerScope()},clearBindableUpdater:function(property){property=this.self.$config.configs[property];
var updateName;property&&this.hasOwnProperty(updateName=property.names.update)&&this[updateName].$bindableUpdater&&delete this[updateName]},destroyBindable:function(){var viewModel=this.getConfig('viewModel',!0),session=this.getConfig('session',!0),controller=this.getController();viewModel&&viewModel.isViewModel&&(viewModel.destroy(),this.setViewModel(null));session&&session.isSession&&(session.getAutoDestroy()&&session.destroy(),this.setSession(null));controller&&(this.setController(null),controller.destroy())},
initBindable:function(){this.initBindable=Ext.emptyFn;this.getBind();this.getPublishes()},makeBindableUpdater:function(cfg){var updateName=cfg.names.update,fn=function(newValue,oldValue){var updater=this.self.prototype[updateName];updater&&updater.call(this,newValue,oldValue);this.publishState(cfg.name,newValue)};fn.$bindableUpdater=!0;return fn},isSyncing:function(name){var bindings=this.getBind(),ret=!1;bindings&&(name=bindings[name])&&(ret=0<name.syncing);return ret},onBindNotify:function(value,
oldValue,binding){binding.syncing=binding.syncing+1||1;this[binding._config.names.set](value);--binding.syncing},removeBindings:function(){var bindings,key;if(this.$hasBinds&&(bindings=this.getBind())&&'string'!==typeof bindings)for(key in bindings){var binding=bindings[key];binding.destroy();binding._config=binding.getTemplateScope=null}this.setBind(null)},updateSession:function(session){var state=this.getInherited();session?state.session=session:delete state.session},updateViewModel:function(viewModel){var state=
this.getInherited(),controller=this.getController();viewModel?(state.viewModel=viewModel,viewModel.setView(this),controller&&controller.initViewModel(viewModel)):delete state.viewModel}}},0,0,0,0,0,0,[Ext.mixin,'Bindable'],0);
Ext.cmd.derive('Ext.mixin.ComponentDelegation',Ext.Mixin,{mixinConfig:{id:'componentDelegation'},privates:{addDelegatedListener:function(eventName,fn,scope,options,order,caller,manager){eventName=Ext.canonicalEventName(eventName);if(order=order||options.order){var priority=options&&options.priority;priority||(options=options?Ext.Object.chain(options):{},options.priority=this.$orderToPriority[order])}order=this.$delegatedEvents||(this.$delegatedEvents={});(order[eventName]||(order[eventName]=new Ext.util.Event(this,
eventName))).addListener(fn,scope,options,caller,manager)&&this.$hasDelegatedListeners._incr_(eventName)},clearDelegatedListeners:function(){var delegatedEvents=this.$delegatedEvents,eventName;if(delegatedEvents)for(eventName in delegatedEvents){var event=delegatedEvents[eventName];var listenerCount=event.listeners.length;event.clearListeners();this.$hasDelegatedListeners._decr_(eventName,listenerCount);delete delegatedEvents[eventName]}},doFireDelegatedEvent:function(eventName,args){var ret=!0,owner,
delegatedEvents;if(this.$hasDelegatedListeners[eventName])for(owner=this.getRefOwner();owner;){if(delegatedEvents=owner.$delegatedEvents)if(delegatedEvents=delegatedEvents[eventName])if(ret=delegatedEvents.fireDelegated(this,args),!1===ret)break;owner=owner.getRefOwner()}return ret},removeDelegatedListener:function(eventName,fn,scope){var delegatedEvents=this.$delegatedEvents,event;delegatedEvents&&(event=delegatedEvents[eventName])&&event.removeListener(fn,scope)&&(this.$hasDelegatedListeners._decr_(eventName),
0===event.listeners.length&&delete delegatedEvents[eventName])},destroyComponentDelegation:function(){this.clearPropertiesOnDestroy&&(this.$delegatedEvents=null)}},onClassMixedIn:function(T){function HasListeners(){}T.prototype.HasListeners=T.HasListeners=HasListeners;HasListeners.prototype=T.hasListeners=new Ext.mixin.ComponentDelegation.HasDelegatedListeners}},0,0,0,0,0,0,[Ext.mixin,'ComponentDelegation'],function(ComponentDelegation){function HasDelegatedListeners(){}ComponentDelegation.HasDelegatedListeners=
HasDelegatedListeners;HasDelegatedListeners.prototype=ComponentDelegation.prototype.$hasDelegatedListeners=new Ext.mixin.Observable.HasListeners});
Ext.cmd.derive('Ext.mixin.Pluggable',Ext.Base,function(Pluggable){var EMPTY=[];return{config:{plugins:null},addPlugin:function(plugin){var plugins=this.getPlugins();plugins?(plugin=this.createPlugin(plugin),plugin.init(this),plugins.push(plugin)):this.setPlugins(plugin);return plugin},destroyPlugin:function(plugin){return this.removePlugin(plugin,!0)},findPlugin:function(type){var plugins=this.getPlugins(),n=plugins&&plugins.length,i;for(i=0;i<n&&!ret;i++){var plugin=plugins[i];if(plugin.type===type||
plugin.ptype===type)var ret=plugin}return ret||null},getPlugin:function(id){var plugins=this.getPlugins(),n=plugins&&plugins.length,i;for(i=0;i<n&&!ret;i++){var plugin=plugins[i];if(plugin.id===id||plugin.pluginId===id)var ret=plugin}return ret||null},removePlugin:function(plugin,destroy){for(var plugins=this.getPlugins(),i=plugins&&plugins.length||0,p;0<i--;){p=plugins[i];if(p===plugin||p.id===plugin){plugins.splice(i,1);destroy?p.destroy&&p.destroy():p.detachCmp&&(p.detachCmp(),p.setCmp&&p.setCmp(null));
break}p=null}return p},privates:{statics:{idSeed:0},activatePlugin:function(type){var config=this.initialConfig,plugins=config&&config.plugins,ret=null,i;if(plugins)for(plugins=EMPTY.concat(plugins),i=plugins.length;0<i--;){var p=plugins[i];if(p===type||p.type===type){this.initialConfig=config=Ext.apply({},config);config.plugins=plugins;plugins[i]=ret=this.createPlugin(p);break}}return ret},applyPlugins:function(plugins,oldPlugins){var oldCount=oldPlugins&&oldPlugins.length||0,i;var count=(plugins=
plugins?EMPTY.concat(plugins):null)&&plugins.length||0;for(i=0;i<oldCount;++i)oldPlugins[i].$dead=!0;for(i=0;i<count;++i)plugins[i]=this.createPlugin(plugins[i]);for(i=0;i<count;++i){var plugin=plugins[i];plugin.$dead?delete plugin.$dead:plugin.init(this)}for(i=0;i<oldCount;++i)(plugin=oldPlugins[i]).$dead&&(delete plugin.$dead,Ext.destroy(plugin));return plugins},createPlugin:function(config){'string'===typeof config&&(config={type:config});var ret=config;config.isInstance||(config.cmp=this,ret=
Ext.factory(config,null,null,'plugin'),delete config.cmp);ret.id||(ret.id=++Pluggable.idSeed);ret.setCmp&&ret.setCmp(this);return ret}}}},0,0,0,0,0,0,[Ext.mixin,'Pluggable'],0);
Ext.cmd.derive('Ext.Widget',Ext.Evented,{alternateClassName:'Ext.Gadget',isWidget:!0,element:{reference:'element'},observableType:'component',cachedConfig:{baseCls:!0,cls:null,style:null,border:null,touchAction:null},config:{ui:null,userCls:null},eventedConfig:{width:null,height:null,hidden:null},template:[],classCls:null,classClsRoot:!0,clearPropertiesOnDestroy:'async',noBorderCls:'x-noborder-trbl',constructor:function(config){this.initId(config);this.initElement();this.mixins.observable.constructor.call(this,
config);Ext.ComponentManager.register(this);(config=this.getController())&&config.init(this)},afterCachedConfig:function(){var referenceList=this.referenceList,renderElement=this.renderElement,renderTemplate;this.self.prototype.renderTemplate=renderTemplate=document.createDocumentFragment();renderTemplate.appendChild(renderElement.clone(!0,!0));var elements=renderTemplate.querySelectorAll('[id]');renderElement=0;for(renderTemplate=elements.length;renderElement<renderTemplate;renderElement++){var element=
elements[renderElement];element.removeAttribute('id')}renderElement=0;for(renderTemplate=referenceList.length;renderElement<renderTemplate;renderElement++)element=referenceList[renderElement],this[element].dom.removeAttribute('reference')},addCls:function(cls){this.el.addCls(cls)},applyBaseCls:function(baseCls){var xtype=this.xtype;!0===baseCls?baseCls=this.classCls||'x-'+xtype:baseCls||(baseCls='x-'+xtype);return baseCls},applyCls:function(cls){'string'==typeof cls&&(cls=[cls]);cls&&cls.length||
(cls=null);return cls},applyHidden:function(hidden){return!!hidden},applyTouchAction:function(touchAction,oldTouchAction){null!=oldTouchAction&&(touchAction=Ext.merge({},oldTouchAction,touchAction));return touchAction},applyWidth:function(width){return this.filterLengthValue(width)},applyHeight:function(height){return this.filterLengthValue(height)},updateBorder:function(border){this.el.toggleCls(this.noBorderCls,!(border||null===border))},clearListeners:function(){this.mixins.observable.clearListeners.call(this);
this.mixins.componentDelegation.clearDelegatedListeners.call(this)},destroy:function(){this.isDestroying=this.destroying=!0;this.doDestroy();this.clearListeners();this.isDestroying=this.destroying=!1;this.mixins.componentDelegation.destroyComponentDelegation.call(this);Ext.Evented.prototype.destroy.call(this)},doDestroy:function(){var referenceList=this.referenceList,ln;var i=0;for(ln=referenceList.length;i<ln;i++){var reference=referenceList[i];this.hasOwnProperty(reference)&&(this[reference].destroy(),
this[reference]=null)}this.destroyBindable();Ext.ComponentManager.unregister(this)},doFireEvent:function(eventName,args,bubbles){bubbles=this.mixins.observable.doFireEvent.call(this,eventName,args,bubbles);!1!==bubbles&&(bubbles=this.mixins.componentDelegation.doFireDelegatedEvent.call(this,eventName,args));return bubbles},getBubbleTarget:function(){return this.getRefOwner()},getElementConfig:function(){var el=this.element;'children'in el||(el=Ext.apply({children:this.getTemplate()},el));return el},
getSize:function(){return{width:this.getWidth(),height:this.getHeight()}},getTemplate:function(){return this.template},getClassCls:function(){for(var proto=this.self.prototype,prototype=proto,classes,classCls,i,ln;prototype;){if(classCls=prototype.classCls)if(classCls instanceof Array)for(i=0,ln=classCls.length;i<ln;i++)(classes||(classes=[])).push(classCls[i]);else(classes||(classes=[])).push(classCls);if(prototype.classClsRoot&&prototype.hasOwnProperty('classClsRoot'))break;prototype=prototype.superclass}classes&&
(proto.classClsList=classes);return classes},hide:function(){this.setHidden(!0)},initElement:function(){var prototype=this.self.prototype,id=this.getId(),referenceList=this.referenceList=[],cleanAttributes=!0,isFirstInstance=!prototype.hasOwnProperty('renderTemplate'),ln;if(isFirstInstance){cleanAttributes=!1;var renderTemplate=document.createDocumentFragment();prototype=Ext.Element.create(this.processElementConfig.call(prototype),!0);renderTemplate.appendChild(prototype)}else renderTemplate=this.renderTemplate.cloneNode(!0),
prototype=renderTemplate.firstChild;renderTemplate=renderTemplate.querySelectorAll('[reference]');var i=0;for(ln=renderTemplate.length;i<ln;i++){var referenceNode=renderTemplate[i];var reference=referenceNode.getAttribute('reference');cleanAttributes&&referenceNode.removeAttribute('reference');if('element'===reference){referenceNode.id=id;var element=this.el=this.addElementReference(reference,referenceNode);element.dom.setAttribute('data-componentid',id);isFirstInstance&&(referenceNode=this.getClassCls())&&
element.addCls(referenceNode)}else this.addElementReferenceOnDemand(reference,referenceNode);referenceList.push(reference)}prototype===element.dom?this.renderElement=element:this.addElementReferenceOnDemand('renderElement',prototype)},is:function(selector){return Ext.ComponentQuery.is(this,selector)},isHidden:function(deep){var hidden=!!this.getHidden(),owner;if(!hidden&&deep)for(owner=this.getRefOwner();owner&&owner!==deep&&!(hidden=!!owner.getHidden());)owner=owner.getRefOwner();return hidden},
isVisible:function(deep){return!this.isHidden(deep)},isXType:function(xtype,shallow){return shallow?-1!==Ext.Array.indexOf(this.xtypes,xtype):!!this.xtypesMap[xtype]},lookupTpl:function(name){return Ext.XTemplate.getTpl(this,name)},removeCls:function(cls){this.el.removeCls(cls)},toggleCls:function(cls,state){this.element.toggleCls(cls,state)},resolveListenerScope:function(defaultScope,skipThis){return this.mixins.inheritable.resolveListenerScope.call(this,defaultScope,skipThis)},setSize:function(width,
height){if(width&&'object'===typeof width)return this.setSize(width.width,width.height);void 0!==width&&this.setWidth(width);void 0!==height&&this.setHeight(height)},show:function(){this.setHidden(!1)},updateBaseCls:function(newBaseCls,oldBaseCls){var element=this.element;oldBaseCls&&element.removeCls(oldBaseCls);newBaseCls&&element.addCls(newBaseCls);this.isConfiguring||this.syncUiCls()},updateCls:function(newCls,oldCls){this.element.replaceCls(oldCls,newCls)},updateHidden:function(hidden){var element=
this.renderElement;element&&!element.destroyed&&(hidden?element.hide():element.show())},applyStyle:function(style,oldStyle){oldStyle&&style===oldStyle&&Ext.isObject(oldStyle)&&(style=Ext.apply({},style));return style},updateStyle:function(style){this.element.applyStyles(style)},updateTouchAction:function(touchAction){var name,hasRootActions;for(name in touchAction){var childEl=this[name];var value=touchAction[name];childEl&&childEl.isElement?childEl.setTouchAction(value):hasRootActions=!0}hasRootActions&&
this.el.setTouchAction(touchAction)},updateUi:function(){this.syncUiCls()},updateWidth:function(width){this.element.setWidth(width)},updateHeight:function(height){this.element.setHeight(height)},up:function(selector,limit){var result=this.getRefOwner(),limitSelector='string'===typeof limit,limitCount='number'===typeof limit,limitComponent=limit&&limit.isComponent,steps=0;if(selector)for(;result;result=result.getRefOwner()){steps++;if(selector.isComponent||selector.isWidget){if(result===selector)break}else if(Ext.ComponentQuery.is(result,
selector))break;if(limitSelector&&result.is(limit)||limitCount&&steps===limit||limitComponent&&result===limit)return}return result},updateLayout:Ext.emptyFn,onFocusEnter:Ext.emptyFn,onFocusLeave:Ext.emptyFn,isAncestor:function(){return!1},privates:{addElementReferenceOnDemand:function(name,domNode){this._elementListeners[name]?this.addElementReference(name,domNode):Ext.Object.defineProperty(this,name,{get:function(){delete this[name];return this.addElementReference(name,domNode)},configurable:!0})},
addElementReference:function(name,domNode){domNode=this[name]=Ext.get(domNode);name=this._elementListeners[name];var eventName;domNode.skipGarbageCollection=!0;domNode.component=this;if(name){name=Ext.clone(name);for(eventName in name){var listener=name[eventName];'object'===typeof listener&&(listener.scope=this)}name.scope=this;domNode.on(name)}return domNode},detachFromBody:function(){Ext.getDetachedBody().appendChild(this.element);this.isDetached=!0},doAddListener:function(name,fn,scope,options,
order,caller,manager){var elementName=options&&options.element,delegate=options&&options.delegate,option;if(elementName){order={};order[name]=fn;scope&&(order.scope=scope);name=Ext.Element.prototype.$eventOptions;for(option in options)name[option]&&(order[option]=options[option]);this.mon(this[elementName],order)}else delegate?this.mixins.componentDelegation.addDelegatedListener.call(this,name,fn,scope,options,order,caller,manager):Ext.Evented.prototype.doAddListener.call(this,name,fn,scope,options,
order,caller,manager)},doRemoveListener:function(eventName,fn,scope){this.mixins.observable.doRemoveListener.call(this,eventName,fn,scope);this.mixins.componentDelegation.removeDelegatedListener.call(this,eventName,fn,scope)},filterLengthValue:function(value){return'auto'===value||!value&&0!==value?null:value},getFocusEl:function(){return this.element},initElementListeners:function(elementConfig){var superElementListeners=this.self.superclass._elementListeners,reference=elementConfig.reference,children=
elementConfig.children,listeners;var elementListeners=this.hasOwnProperty('_elementListeners')?this._elementListeners:this._elementListeners=superElementListeners?Ext.Object.chain(superElementListeners):{};reference&&(listeners=elementConfig.listeners)&&(superElementListeners&&(superElementListeners=superElementListeners[reference])&&(listeners=Ext.Object.chain(superElementListeners),Ext.apply(listeners,elementConfig.listeners)),elementListeners[reference]=listeners,elementConfig.listeners=null);
if(children)for(reference=0,elementConfig=children.length;reference<elementConfig;reference++)this.initElementListeners(children[reference])},initId:function(config){var defaultConfig=this.config;(config=config&&config.id||defaultConfig&&defaultConfig.id)?(this.setId(config),this.id=config):this.getId()},processElementConfig:function(){var superPrototype=this.self.superclass;if(this.hasOwnProperty('_elementConfig'))var elementConfig=this._elementConfig;else elementConfig=this._elementConfig=this.getElementConfig(),
superPrototype.isWidget&&this.processElementConfig.call(superPrototype),this.initElementListeners(elementConfig);return elementConfig},reattachToBody:function(){this.isDetached=!1},addUi:function(ui){var currentUI=this.getUi(),i;if(ui){ui=ui.split(' ');var len=ui.length;currentUI=currentUI&&currentUI.split(' ')||[];for(i=0;i<len;i++){var singleUI=ui[i];-1===currentUI.indexOf(singleUI)&&currentUI.push(singleUI)}this.setUi(currentUI.join(' '))}},removeUi:function(ui){var currentUI=this.getUi(),i;if(ui){ui=
ui.split(' ');var len=ui.length;currentUI=currentUI&&currentUI.split(' ')||[];for(i=0;i<len;i++){var singleUI=ui[i];singleUI=currentUI.indexOf(singleUI);-1!==singleUI&&currentUI.splice(singleUI,1)}this.setUi(currentUI.join(' '))}},syncUiCls:function(){var ui=this.getUi(),currentUiCls=this.currentUiCls,element=this.element,baseCls=this.getBaseCls(),classClsList=this.classClsList,uiCls=[],ln,jln;currentUiCls&&element.removeCls(currentUiCls);if(ui){ui=ui.split(' ');var i=0;for(ln=ui.length;i<ln;i++)if(currentUiCls=
'-'+ui[i],baseCls&&baseCls!==this.classCls&&uiCls.push(baseCls+currentUiCls),classClsList){var j=0;for(jln=classClsList.length;j<jln;j++)uiCls.push(classClsList[j]+currentUiCls)}element.addCls(uiCls);this.currentUiCls=uiCls}},updateUserCls:function(newCls,oldCls){this.element.replaceCls(oldCls,newCls)}}},1,['widget'],['widget'],{widget:!0},['widget.widget'],[[Ext.mixin.Inheritable.prototype.mixinId||Ext.mixin.Inheritable.$className,Ext.mixin.Inheritable],[Ext.mixin.Bindable.prototype.mixinId||Ext.mixin.Bindable.$className,
Ext.mixin.Bindable],[Ext.mixin.ComponentDelegation.prototype.mixinId||Ext.mixin.ComponentDelegation.$className,Ext.mixin.ComponentDelegation],[Ext.mixin.Pluggable.prototype.mixinId||Ext.mixin.Pluggable.$className,Ext.mixin.Pluggable]],[Ext,'Widget',Ext,'Gadget'],function(Widget){Widget=Widget.prototype;(Widget.$elementEventOptions=Ext.Object.chain(Ext.Element.prototype.$eventOptions)).element=1;(Widget.$eventOptions=Ext.Object.chain(Widget.$eventOptions)).delegate=1});
Ext.define('Ext.overrides.Widget',{override:'Ext.Widget',$configStrict:!1,isComponent:!0,liquidLayout:!0,rendered:!0,rendering:!0,config:{renderTo:null},constructor:function(config){var renderTo;(arguments.callee.$previous||Ext.Evented.prototype.constructor).call(this,config);this.getComponentLayout();(renderTo=this.getRenderTo())&&this.render(renderTo)},addClsWithUI:function(cls){this.el.addCls(cls)},afterComponentLayout:Ext.emptyFn,updateLayout:function(){var owner=this.getRefOwner();owner&&owner.updateLayout()},
destroy:function(){var ownerCt=this.ownerCt;ownerCt&&ownerCt.remove&&ownerCt.remove(this,!1);(arguments.callee.$previous||Ext.Evented.prototype.destroy).call(this)},finishRender:function(){this.rendering=!1;this.initBindable()},getAnimationProps:function(){return{}},getComponentLayout:function(){var layout=this.componentLayout;layout||(layout=this.componentLayout=new Ext.layout.component.Auto,layout.setOwner(this));return layout},getEl:function(){return this.element},getTdCls:function(){return'x-'+
this.getTdType()+'-'+(this.ui||'default')+'-cell'},getTdType:function(){return this.xtype},getItemId:function(){return this.itemId||this.id},getSizeModel:function(){return Ext.Component.prototype.getSizeModel.apply(this,arguments)},onAdded:function(container,pos,instanced){this.ownerCt=container;this.onInheritedAdd(this,instanced)},onRemoved:function(destroying){destroying||this.removeBindings();this.onInheritedRemove(destroying);this.ownerCt=this.ownerLayout=null},parseBox:function(box){return Ext.Element.parseBox(box)},
removeClsWithUI:function(cls){this.el.removeCls(cls)},render:function(container,position){var element=this.element,proto=Ext.Component.prototype;if(!this.ownerCt||this.floating)Ext.scopeCss&&element.addCls(proto.rootCls),element.addCls(proto.borderBoxCls);if(position&&(position=container.childNodes[position])){Ext.fly(container).insertBefore(element,position);return}Ext.fly(container).appendChild(element)},setPosition:function(x,y){this.el.setLocalXY(x,y)},up:function(){return Ext.Component.prototype.up.apply(this,
arguments)},isAncestor:function(){return Ext.Component.prototype.isAncestor.apply(this,arguments)},onFocusEnter:function(){return Ext.Component.prototype.onFocusEnter.apply(this,arguments)},onFocusLeave:function(){return Ext.Component.prototype.onFocusLeave.apply(this,arguments)},isLayoutChild:function(candidate){var ownerCt=this.ownerCt;return ownerCt?ownerCt===candidate||ownerCt.isLayoutChild(candidate):!1},privates:{doAddListener:function(name,fn,scope,options,order,caller,manager){'painted'!=
name&&'resize'!=name||this.element.doAddListener(name,fn,scope||this,options,order);(arguments.callee.$previous||Ext.Evented.prototype.doAddListener).call(this,name,fn,scope,options,order,caller,manager)},doRemoveListener:function(name,fn,scope){'painted'!=name&&'resize'!=name||this.element.doRemoveListener(name,fn,scope);(arguments.callee.$previous||Ext.Evented.prototype.doRemoveListener).call(this,name,fn,scope)}}},function(Cls){Cls=Cls.prototype;Ext.isIE9m&&(Cls.addElementReferenceOnDemand=Cls.addElementReference)});
Ext.cmd.derive('Ext.ProgressBase',Ext.Base,{mixinId:'progressbase',config:{value:0,textTpl:null},applyTextTpl:function(textTpl){textTpl.isTemplate||(textTpl=new Ext.XTemplate(textTpl));return textTpl},applyValue:function(value){return value||0}},0,0,0,0,0,0,[Ext,'ProgressBase'],0);
Ext.cmd.derive('Ext.util.Format',Ext.Base,function(){var me;return{singleton:!0,defaultDateFormat:'m/d/Y',thousandSeparator:',',decimalSeparator:'.',currencyPrecision:2,currencySign:'$',currencySpacer:'',percentSign:'%',currencyAtEnd:!1,stripTagsRe:/<\/?[^>]+>/gi,stripScriptsRe:/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,nl2brRe:/\r?\n/g,hashRe:/#+$/,allHashes:/^#+$/,formatPattern:/[\d,\.#]+/,formatCleanRe:/[^\d\.#]/g,I18NFormatCleanRe:null,formatFns:{},constructor:function(){me=this},nbsp:function(value,
strict){(!1!==strict?''!==value&&null!=value:value)||(value=' ');return value},undef:function(value){return void 0!==value?value:''},defaultValue:function(value,defaultValue){return void 0!==value&&''!==value?value:defaultValue},substr:'b'!='ab'.substr(-1)?function(value,start,length){value=String(value);return 0>start?value.substr(Math.max(value.length+start,0),length):value.substr(start,length)}:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},
uppercase:function(value){return String(value).toUpperCase()},usMoney:function(v){return me.currency(v,'$',2)},currency:function(v,currencySign,decimals,end,currencySpacer){var negativeSign='',format=',0',i=0;v-=0;0>v&&(v=-v,negativeSign='-');decimals=Ext.isDefined(decimals)?decimals:me.currencyPrecision;for(format+=0<decimals?'.':'';i<decimals;i++)format+='0';v=me.number(v,format);null==currencySpacer&&(currencySpacer=me.currencySpacer);return!0===(end||me.currencyAtEnd)?Ext.String.format('{0}{1}{2}{3}',
negativeSign,v,currencySpacer,currencySign||me.currencySign):Ext.String.format('{0}{1}{2}{3}',negativeSign,currencySign||me.currencySign,currencySpacer,v)},date:function(value,format){if(!value)return'';Ext.isDate(value)||(value=new Date(Date.parse(value)));return Ext.Date.dateFormat(value,format||Ext.Date.defaultFormat)},dateRenderer:function(format){return function(v){return me.date(v,format)}},hex:function(value,digits){value=parseInt(value||0,10).toString(16);if(digits)for(0>digits&&(digits=-digits,
value.length>digits&&(value=value.substring(value.length-digits)));value.length<digits;)value='0'+value;return value},or:function(value,orValue){return value||orValue},pick:function(value,firstValue,secondValue){if(Ext.isNumber(value)){var ret=arguments[value+1];if(ret)return ret}return value?secondValue:firstValue},lessThanElse:function(value,threshold,below,above,equal){value=Ext.Number.from(value,0);threshold=Ext.Number.from(threshold,0);var missing=!Ext.isDefined(equal);return value<threshold?
below:value>threshold?above:missing?above:equal},sign:function(value,negative,positive,zero){void 0===zero&&(zero=positive);return me.lessThanElse(value,0,negative,positive,zero)},stripTags:function(value){return value?String(value).replace(me.stripTagsRe,''):value},stripScripts:function(value){return value?String(value).replace(me.stripScriptsRe,''):value},fileSize:function(){return function(size){return 1024>size?1===size?'1 byte':size+' bytes':1048576>size?Math.round(10*size/1024)/10+' KB':1073741824>
size?Math.round(10*size/1048576)/10+' MB':Math.round(10*size/1073741824)/10+' GB'}}(),math:function(){var fns={};return function(v,a){fns[a]||(fns[a]=Ext.functionFactory('v','return v '+a+';'));return fns[a](v)}}(),round:function(value,precision){var result=Number(value);'number'===typeof precision?(precision=Math.pow(10,precision),result=Math.round(value*precision)/precision):void 0===precision&&(result=Math.round(result));return result},number:function(v,formatString){if(!formatString)return v;
if(isNaN(v))return'';var formatFn=me.formatFns[formatString];if(!formatFn){formatFn=formatString;var comma=me.thousandSeparator,decimalSeparator=me.decimalSeparator,precision=0,trimPart='',trimTrailingZeroes;if('/i'===formatString.substr(formatString.length-2)){me.I18NFormatCleanRe&&me.lastDecimalSeparator===decimalSeparator||(me.I18NFormatCleanRe=new RegExp('[^\\d\\'+decimalSeparator+'#]','g'),me.lastDecimalSeparator=decimalSeparator);formatString=formatString.substr(0,formatString.length-2);comma=
-1!==formatString.indexOf(comma);var splitFormat=formatString.replace(me.I18NFormatCleanRe,'').split(decimalSeparator)}else comma=-1!==formatString.indexOf(','),splitFormat=formatString.replace(me.formatCleanRe,'').split('.');decimalSeparator=formatString.replace(me.formatPattern,'');!(2<splitFormat.length)&&2===splitFormat.length&&(precision=splitFormat[1].length,trimTrailingZeroes=splitFormat[1].match(me.hashRe))&&(trimPart=trimTrailingZeroes[0].length,trimPart='trailingZeroes\x3dnew RegExp(Ext.String.escapeRegex(utilFormat.decimalSeparator) + "*0{0,'+
trimPart+'}$")');formatString=['var utilFormat\x3dExt.util.Format,extNumber\x3dExt.Number,neg,absVal,fnum,parts'+(comma?',thousandSeparator,thousands\x3d[],j,n,i':'')+(decimalSeparator?',formatString\x3d"'+formatString+'",formatPattern\x3d/[\\d,\\.#]+/':'')+',trailingZeroes;return function(v){if(typeof v!\x3d\x3d"number"\x26\x26isNaN(v\x3dextNumber.from(v,NaN)))return"";neg\x3dv\x3c0;','absVal\x3dMath.abs(v);','fnum\x3dExt.Number.toFixed(absVal, '+precision+');',trimPart,';'];comma?(precision&&(formatString[formatString.length]=
'parts\x3dfnum.split(".");',formatString[formatString.length]='fnum\x3dparts[0];'),formatString[formatString.length]='if(absVal\x3e\x3d1000) {',formatString[formatString.length]='thousandSeparator\x3dutilFormat.thousandSeparator;thousands.length\x3d0;j\x3dfnum.length;n\x3dfnum.length%3||3;for(i\x3d0;i\x3cj;i+\x3dn){if(i!\x3d\x3d0){n\x3d3;}thousands[thousands.length]\x3dfnum.substr(i,n);}fnum\x3dthousands.join(thousandSeparator);}',precision&&(formatString[formatString.length]='fnum +\x3d utilFormat.decimalSeparator+parts[1];')):
precision&&(formatString[formatString.length]='if(utilFormat.decimalSeparator!\x3d\x3d"."){parts\x3dfnum.split(".");fnum\x3dparts[0]+utilFormat.decimalSeparator+parts[1];}');formatString[formatString.length]='if(neg\x26\x26fnum!\x3d\x3d"'+(precision?'0.'+Ext.String.repeat('0',precision):'0')+'") { fnum\x3d"-"+fnum; }';trimTrailingZeroes&&(formatString[formatString.length]='fnum\x3dfnum.replace(trailingZeroes,"");');formatString[formatString.length]='return ';formatString[formatString.length]=decimalSeparator?
'formatString.replace(formatPattern, fnum);':'fnum;';formatString[formatString.length]='};';formatFn=me.formatFns[formatFn]=Ext.functionFactory('Ext',formatString.join(''))(Ext)}return formatFn(v)},numberRenderer:function(format){return function(v){return me.number(v,format)}},percent:function(value,formatString){return me.number(100*value,formatString||'0')+me.percentSign},attributes:function(attributes){if('object'===typeof attributes){var result=[],name;for(name in attributes)attributes.hasOwnProperty(name)&&
result.push(name,'\x3d"','style'===name?Ext.DomHelper.generateStyles(attributes[name],null,!0):Ext.htmlEncode(attributes[name]),'" ');attributes=result.join('')}return attributes||''},plural:function(value,singular,plural){return value+' '+(1===value?singular:plural?plural:singular+'s')},nl2br:function(v){return Ext.isEmpty(v)?'':v.replace(me.nl2brRe,'\x3cbr/\x3e')},capitalize:Ext.String.capitalize,uncapitalize:Ext.String.uncapitalize,ellipsis:Ext.String.ellipsis,escape:Ext.String.escape,escapeRegex:Ext.String.escapeRegex,
htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,toggle:Ext.String.toggle,trim:Ext.String.trim,parseBox:function(box){box=box||0;if('number'===typeof box)return{top:box,right:box,bottom:box,left:box};box=box.split(' ');var ln=box.length;1===ln?box[1]=box[2]=box[3]=box[0]:2===ln?(box[2]=box[0],box[3]=box[1]):3===ln&&(box[3]=box[1]);return{top:parseInt(box[0],10)||0,right:parseInt(box[1],10)||0,bottom:parseInt(box[2],10)||0,left:parseInt(box[3],10)||0}},uri:function(value){return encodeURI(value)},
uriCmp:function(value){return encodeURIComponent(value)},wordBreakRe:/[\W\s]+/,word:function(value,index,sep){return(value||'').split(sep?'string'===typeof sep?new RegExp(sep):sep:me.wordBreakRe)[index||0]||''}}},1,0,0,0,0,0,[Ext.util,'Format'],0);
Ext.cmd.derive('Ext.Template',Ext.Base,{inheritableStatics:{from:function(el,config){el=Ext.getDom(el);return new this(el.value||el.innerHTML,config||'')}},useEval:Ext.isGecko,constructor:function(html){var args=arguments,buffer=[],i,length=args.length;this.initialConfig={};1===length&&Ext.isArray(html)&&(args=html,length=args.length);if(1<length)for(i=0;i<length;i++){var value=args[i];'object'===typeof value?(Ext.apply(this.initialConfig,value),Ext.apply(this,value)):buffer.push(value)}else buffer.push(html);
this.html=buffer.join('')},isTemplate:!0,disableFormats:!1,tokenRe:/\{(?:(?:(\d+)|([a-z_][\w\-]*))(?::([a-z_\.]+)(?:\(([^\)]*?)?\))?)?)\}/gi,apply:function(values){return this.compiled?(this.fn||this.compile(),this.fn(values).join('')):this.evaluate(values)},evaluate:function(values){var useFormat=!this.disableFormats,fm=Ext.util.Format,tpl=this;return this.html.replace(this.tokenRe,function(match,index,name,formatFn,args){if(null==name||''===name)name=index;return formatFn&&useFormat?(args=args?
[values[name]].concat(Ext.functionFactory('return ['+args+'];')()):[values[name]],'this.'===formatFn.substr(0,5)?tpl[formatFn.substr(5)].apply(tpl,args):fm[formatFn]?fm[formatFn].apply(fm,args):match):void 0!==values[name]?values[name]:''})},applyOut:function(values,out){this.compiled?(this.fn||this.compile(),out.push.apply(out,this.fn(values))):out.push(this.apply(values));return out},applyTemplate:function(){return this.apply.apply(this,arguments)},set:function(html,compile){this.html=html;this.compiled=
!!compile;this.fn=null;return this},compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,compile:function(){var code=this.html.replace(this.compileARe,'\\\\').replace(this.compileBRe,'\\n').replace(this.compileCRe,"\\'").replace(this.tokenRe,this.regexReplaceFn.bind(this));code=(!0!==this.disableFormats?'var fm\x3dExt.util.Format;':'')+(this.useEval?'$\x3d':'return')+" function(v){return ['"+code+"'];};";this.fn=this.useEval?this.evalCompiled(code):(new Function('Ext',code))(Ext);this.compiled=
!0;return this},evalCompiled:function($){eval($);return $},regexReplaceFn:function(match,index,name,formatFn,args){null==index||''===index?index='"'+name+'"':this.stringFormat&&(index=parseInt(index)+1);if(formatFn&&!0!==this.disableFormats){args=args?','+args:'';if('this.'===formatFn.substr(0,5))formatFn+='(';else if(Ext.util.Format[formatFn])formatFn='fm.'+formatFn+'(';else return match;return"',"+formatFn+'v['+index+']'+args+"),'"}return"',v["+index+"] \x3d\x3d undefined ? '' : v["+index+"],'"},
insertFirst:function(el,values,returnElement){return this.doInsert('afterBegin',el,values,returnElement)},insertBefore:function(el,values,returnElement){return this.doInsert('beforeBegin',el,values,returnElement)},insertAfter:function(el,values,returnElement){return this.doInsert('afterEnd',el,values,returnElement)},append:function(el,values,returnElement){return this.doInsert('beforeEnd',el,values,returnElement)},doInsert:function(where,el,values,returnElement){where=Ext.DomHelper.insertHtml(where,
Ext.getDom(el),this.apply(values));return returnElement?Ext.get(where):where},overwrite:function(el,values,returnElement){el=Ext.DomHelper.overwrite(Ext.getDom(el),this.apply(values));return returnElement?Ext.get(el):el}},1,0,0,0,0,0,[Ext,'Template'],function(Template){var formatRe=/\{\d+\}/,generateFormatFn=function(format){return formatRe.test(format)?(format=new Template(format,formatTplConfig),function(){return format.apply(arguments)}):function(){return format}},formatTplConfig={useFormat:!1,
compiled:!0,stringFormat:!0},formatFns={};Ext.String.format=Ext.util.Format.format=function(format){return(formatFns[format]||(formatFns[format]=generateFormatFn(format))).apply(this,arguments)};Ext.String.formatEncode=function(){return Ext.String.htmlEncode(Ext.String.format.apply(this,arguments))}});
Ext.cmd.derive('Ext.util.XTemplateParser',Ext.Base,{constructor:function(config){Ext.apply(this,config)},doTpl:Ext.emptyFn,parse:function(str){var len=str.length,aliases={elseif:'elif'},topRe=this.topRe,actionsRe=this.actionsRe,index,stack,t;this.level=0;this.stack=stack=[];for(index=0;index<len;index=end){topRe.lastIndex=index;var m=topRe.exec(str);if(!m){this.doText(str.substring(index,len));break}var begin=m.index;var end=topRe.lastIndex;index<begin&&(index=str.substring(index,begin),expectTplNext&&
''===Ext.String.trim(index)||this.doText(index));var expectTplNext=!1;if(m[1])end=str.indexOf('%}',begin+2),this.doEval(str.substring(begin+2,end)),end+=2;else if(m[2])end=str.indexOf(']}',begin+2),this.doExpr(str.substring(begin+2,end)),end+=2;else if(m[3])this.doTag(m[3]);else if(m[4]){for(begin=null;null!==(t=actionsRe.exec(m[4]));)if(index=t[2]||t[3]){index=Ext.String.htmlDecode(index);t=t[1];t=aliases[t]||t;begin=begin||{};var prev=begin[t];'string'==typeof prev?begin[t]=[prev,index]:prev?begin[t].push(index):
begin[t]=index}if(begin)if(begin['if'])this.doIf(begin['if'],begin),stack.push({type:'if'});else if(begin['switch'])this.doSwitch(begin['switch'],begin),stack.push({type:'switch'}),expectTplNext=!0;else if(begin['case'])this.doCase(begin['case'],begin);else if(begin.elif)this.doElseIf(begin.elif,begin);else if(begin['for']){++this.level;if(m=this.propRe.exec(m[4]))begin.propName=m[1]||m[2];this.doFor(begin['for'],begin);stack.push({type:'for',actions:begin})}else if(begin.foreach){++this.level;if(m=
this.propRe.exec(m[4]))begin.propName=m[1]||m[2];this.doForEach(begin.foreach,begin);stack.push({type:'foreach',actions:begin})}else begin.exec&&(this.doExec(begin.exec,begin),stack.push({type:'exec',actions:begin}));else this.elseRe.test(m[4])?this.doElse():this.defaultRe.test(m[4])?this.doDefault():(this.doTpl(),stack.push({type:'tpl'}))}else 5===m[0].length?stack.push({type:'tpl'}):(m=stack.pop(),this.doEnd(m.type,m.actions),'for'!=m.type&&'foreach'!=m.type||--this.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*$/},1,0,0,0,0,0,[Ext.util,'XTemplateParser'],0);
Ext.cmd.derive('Ext.util.XTemplateCompiler',Ext.util.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:!0,propNameRe:/^[\w\d\$]*$/,compile:function(tpl){tpl=this.generate(tpl);return this.useEval?this.evalTpl(tpl):(new Function('Ext',tpl))(Ext)},generate:function(tpl){this.maxLevel=0;this.body=['var c0\x3dvalues, a0\x3d'+this.createArrayTest(0)+', p0\x3dparent, n0\x3dxcount, i0\x3dxindex, k0, v;\n'];this.definitions?'string'===typeof this.definitions?this.definitions=[this.definitions,
'var fm\x3dExt.util.Format,ts\x3dObject.prototype.toString;']:this.definitions.push('var fm\x3dExt.util.Format,ts\x3dObject.prototype.toString;'):this.definitions=['var fm\x3dExt.util.Format,ts\x3dObject.prototype.toString;'];this.switches=[];this.parse(tpl);this.definitions.push((this.useEval?'$\x3d':'return')+' function ('+this.fnArgs+') {',this.body.join(''),'}');tpl=this.definitions.join('\n');this.definitions.length=this.body.length=this.switches.length=0;delete this.definitions;delete this.body;
delete this.switches;return tpl},doText:function(text){var out=this.body;text=text.replace(this.aposRe,"\\'").replace(this.newLineRe,'\\n');this.useIndex?out.push("out[out.length]\x3d'",text,"'\n"):out.push("out.push('",text,"')\n")},doExpr:function(expr){var out=this.body;out.push('if ((v\x3d'+expr+') !\x3d null) out');this.useIndex?out.push("[out.length]\x3dv+''\n"):out.push(".push(v+'')\n")},doTag:function(tag){var expr=this.parseTag(tag);expr?this.doExpr(expr):this.doText('{'+tag+'}')},doElse:function(){this.body.push('} else {\n')},
doEval:function(text){this.body.push(text,'\n')},doIf:function(action,actions){'.'===action?this.body.push('if (values) {\n'):this.propNameRe.test(action)?this.body.push('if (',this.parseTag(action),') {\n'):this.body.push('if (',this.addFn(action),this.callFn,') {\n');actions.exec&&this.doExec(actions.exec)},doElseIf:function(action,actions){'.'===action?this.body.push('else if (values) {\n'):this.propNameRe.test(action)?this.body.push('} else if (',this.parseTag(action),') {\n'):this.body.push('} else if (',
this.addFn(action),this.callFn,') {\n');actions.exec&&this.doExec(actions.exec)},doSwitch:function(action){'.'===action||'#'===action?this.body.push('switch (','.'===action?'values':'xindex',') {\n'):this.propNameRe.test(action)?this.body.push('switch (',this.parseTag(action),') {\n'):this.body.push('switch (',this.addFn(action),this.callFn,') {\n');this.switches.push(0)},doCase:function(action){action=Ext.isArray(action)?action:[action];var n=this.switches.length-1;this.switches[n]?this.body.push('break;\n'):
this.switches[n]++;var i=0;for(n=action.length;i<n;++i){var match=this.intRe.exec(action[i]);action[i]=match?match[1]:"'"+action[i].replace(this.aposRe,"\\'")+"'"}this.body.push('case ',action.join(': case '),':\n')},doDefault:function(){var n=this.switches.length-1;this.switches[n]?this.body.push('break;\n'):this.switches[n]++;this.body.push('default:\n')},doEnd:function(type,actions){var L=this.level-1;'for'==type||'foreach'==type?(actions.exec&&this.doExec(actions.exec),this.body.push('}\n'),this.body.push('parent\x3dp',
L,';values\x3dr',L+1,';xcount\x3dn'+L+';xindex\x3di',L,'+1;xkey\x3dk',L,';\n')):'if'!=type&&'switch'!=type||this.body.push('}\n')},doFor:function(action,actions){var L=this.level,up=L-1;var s='.'===action?'values':this.propNameRe.test(action)?this.parseTag(action):this.addFn(action)+this.callFn;this.maxLevel<L&&(this.maxLevel=L,this.body.push('var '));action='.'==action?'c'+L:'a'+up+'?c'+up+'[i'+up+']:c'+up;this.body.push('i',L,'\x3d0,n',L,'\x3d0,c',L,'\x3d',s,',a',L,'\x3d',this.createArrayTest(L),
',r',L,'\x3dvalues,p',L,',k',L,';\n','p',L,'\x3dparent\x3d',action,'\n','if (c',L,'){if(a',L,'){n',L,'\x3dc',L,'.length;}else if (c',L,'.isMixedCollection){c',L,'\x3dc',L,'.items;n',L,'\x3dc',L,'.length;}else if(c',L,'.isStore){c',L,'\x3dc',L,'.data.items;n',L,'\x3dc',L,'.length;}else{c',L,'\x3d[c',L,'];n',L,'\x3d1;}}\n','for (xcount\x3dn',L,';i',L,'\x3cn'+L+';++i',L,'){\n','values\x3dc',L,'[i',L,']');actions.propName&&this.body.push('.',actions.propName);this.body.push('\n','xindex\x3di',L,'+1\n');
actions.between&&this.body.push('if(xindex\x3e1){ out.push("',actions.between,'"); } \n')},doForEach:function(action,actions){var L=this.level,up=L-1;var s='.'===action?'values':this.propNameRe.test(action)?this.parseTag(action):this.addFn(action)+this.callFn;this.maxLevel<L&&(this.maxLevel=L,this.body.push('var '));action='.'==action?'c'+L:'a'+up+'?c'+up+'[i'+up+']:c'+up;this.body.push('i',L,'\x3d-1,n',L,'\x3d0,c',L,'\x3d',s,',a',L,'\x3d',this.createArrayTest(L),',r',L,'\x3dvalues,p',L,',k',L,';\n',
'p',L,'\x3dparent\x3d',action,'\n','for(k',L,' in c',L,'){\n','xindex\x3d++i',L,'+1;\n','xkey\x3dk',L,';\n','values\x3dc',L,'[k',L,'];');actions.propName&&this.body.push('.',actions.propName);actions.between&&this.body.push('if(xindex\x3e1){ out.push("',actions.between,'"); } \n')},createArrayTest:'isArray'in Array?function(L){return'Array.isArray(c'+L+')'}:function(L){return'ts.call(c'+L+')\x3d\x3d\x3d"[object Array]"'},doExec:function(action,actions){actions='f'+this.definitions.length;var guards=
this.guards[this.strict?0:1];this.definitions.push('function '+actions+'('+this.fnArgs+') {',guards.doTry,' var $v \x3d values; with($v) {','  '+action,' }',guards.doCatch,'}');this.body.push(actions+this.callFn+'\n')},guards:[{doTry:'',doCatch:''},{doTry:'try { ',doCatch:' } catch(e) {\n}'}],addFn:function(body){var name='f'+this.definitions.length,guards=this.guards[this.strict?0:1];'.'===body?this.definitions.push('function '+name+'('+this.fnArgs+') {',' return values','}'):'..'===body?this.definitions.push('function '+
name+'('+this.fnArgs+') {',' return parent','}'):this.definitions.push('function '+name+'('+this.fnArgs+') {',guards.doTry,' var $v \x3d values; with($v) {','  return('+body+')',' }',guards.doCatch,'}');return name},parseTag:function(tag){var m=this.tagRe.exec(tag);if(!m)return null;var name=m[1];tag=m[2];var args=m[3];m=m[4];'.'==name?(this.validTypes||(this.definitions.push('var validTypes\x3d{string:1,number:1,boolean:1};'),this.validTypes=!0),name='validTypes[typeof values] || ts.call(values) \x3d\x3d\x3d "[object Date]" ? values : ""'):
name='#'==name?'xindex':'$'==name?'xkey':'parent.'==name.substr(0,7)?name:isNaN(name)&&-1==name.indexOf('-')&&-1!=name.indexOf('.')?'values.'+name:"values['"+name+"']";m&&(name='('+name+m+')');if(tag&&this.useFormat)args=args?','+args:'',tag='this.'!=tag.substr(0,5)?'fm.'+tag+'(':tag+'(';else return name;return tag+name+args+')'},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},
0,0,0,0,0,0,[Ext.util,'XTemplateCompiler'],function(){var proto=this.prototype;proto.fnArgs='out,values,parent,xindex,xcount,xkey';proto.callFn='.call(this,'+proto.fnArgs+')'});
Ext.cmd.derive('Ext.XTemplate',Ext.Template,{isXTemplate:!0,emptyObj:{},fn:null,strict:!1,apply:function(values,parent,xindex,xcount){return this.applyOut(values,[],parent,xindex,xcount).join('')},applyOut:function(values,out,parent,xindex,xcount){if(!this.fn){var compiler=new Ext.util.XTemplateCompiler({useFormat:!0!==this.disableFormats,definitions:this.definitions,strict:this.strict});this.fn=compiler.compile(this.html)}xindex=xindex||1;xcount=xcount||1;if(this.strict)this.fn(out,values,parent||
this.emptyObj,xindex,xcount);else try{this.fn(out,values,parent||this.emptyObj,xindex,xcount)}catch(e){}return out},compile:function(){return this},statics:{getTpl:function(instance,name){var tpl=instance[name];if(tpl&&!tpl.isTemplate){tpl=Ext.ClassManager.dynInstantiate('Ext.XTemplate',tpl);if(!instance.hasOwnProperty(name))for(instance=instance.self.prototype;instance&&!instance.hasOwnProperty(name);instance=instance.superclass);instance[name]=tpl;tpl.owner=instance}return tpl||null}}},0,0,0,0,
0,0,[Ext,'XTemplate'],0);
Ext.cmd.derive('Ext.app.EventDomain',Ext.Base,{statics:{instances:{}},isEventDomain:!0,isInstance:!1,constructor:function(){this.isInstance||(Ext.app.EventDomain.instances[this.type]=this);this.bus={};this.monitoredClasses=[]},dispatch:function(target,ev,args){ev=Ext.canonicalEventName(ev);ev=this.bus[ev];var selector,id,i;if(!ev)return!0;for(selector in ev)if(ev.hasOwnProperty(selector)&&this.match(target,selector,this.controller)){var controllers=ev[selector];for(id in controllers)if(controllers.hasOwnProperty(id)){var info=controllers[id];
if(info.controller.isActive()){info=info.list;var len=info.length;for(i=0;i<len;i++){var event=info[i];if(!1===event.fire.apply(event,args))return!1}}}}return!0},listen:function(selectors,controller){var bus=this.bus,idProperty=this.idProperty,monitoredClasses=this.monitoredClasses,monitoredClassesCount=monitoredClasses.length,controllerId=controller.getId(),isComponentDomain='component'===this.type,refMap=isComponentDomain?controller.getRefMap():null,selector;for(selector in selectors){var listeners=
selectors[selector];isComponentDomain&&(selector=refMap[selector]||selector);if(listeners)for(ev in idProperty&&(selector='*'===selector?selector:selector.substring(1)),listeners){var i=null;var listener=listeners[ev];var scope=controller;var ev=Ext.canonicalEventName(ev);var event=new Ext.util.Event(controller,ev);Ext.isObject(listener)&&(i=listener,listener=i.fn,scope=i.scope||controller,delete i.fn,delete i.scope);'string'===typeof listener&&(listener=scope[listener]);event.addListener(listener,
scope,i);for(i=0;i<monitoredClassesCount;++i)(listener=monitoredClasses[i].hasListeners)&&listener._incr_(ev);i=bus[ev]||(bus[ev]={});i=i[selector]||(i[selector]={});i=i[controllerId]||(i[controllerId]={controller:controller,list:[]});i.list.push(event)}}},match:function(target,selector){var idProperty=this.idProperty;return idProperty?'*'===selector||target[idProperty]===selector:!1},monitor:function(observable){var domain=this,prototype=observable.isInstance?observable:observable.prototype,doFireEvent=
prototype.doFireEvent;domain.monitoredClasses.push(observable);prototype.doFireEvent=function(ev,args){var ret=doFireEvent.apply(this,arguments);!1===ret||this.destroyed||this.isSuspended(ev)||(ret=domain.dispatch(this,ev,args));return ret}},unlisten:function(controllerId){var bus=this.bus,id=controllerId,monitoredClasses=this.monitoredClasses,monitoredClassesCount=monitoredClasses.length,events,len,selector,selectors,j,classHasListeners;controllerId.isController&&(id=controllerId.getId());for(ev in bus){var ev=
Ext.canonicalEventName(ev);if(bus.hasOwnProperty(ev)&&(selectors=bus[ev]))for(selector in selectors)if(controllerId=selectors[selector],events=controllerId[id])if(events=events.list){var i=0;for(len=events.length;i<len;++i){var item=events[i];item.clearListeners();for(j=0;j<monitoredClassesCount;++j)(classHasListeners=monitoredClasses[j].hasListeners)&&classHasListeners._decr_(item.name)}delete controllerId[id]}}},destroy:function(){this.monitoredClasses=this.bus=null;this.callParent()}},1,0,0,0,
0,0,[Ext.app,'EventDomain'],0);
Ext.cmd.derive('Ext.app.domain.Component',Ext.app.EventDomain,{singleton:!0,type:'component',constructor:function(){this.callParent();this.monitor(Ext.Widget)},dispatch:function(target,ev,args){for(var controller=target.lookupController(!1),domain;controller;){if((domain=controller.compDomain)&&!1===domain.dispatch(target,ev,args))return!1;controller=(controller=controller.getView())?controller.lookupController(!0):null}return this.callParent(arguments)},match:function(target,selector){return target.is(selector)}},
1,0,0,0,0,0,[Ext.app.domain,'Component'],0);
Ext.cmd.derive('Ext.util.ProtoElement',Ext.Base,function(){var splitWords=Ext.String.splitWords,toMap=Ext.Array.toMap;return{isProtoEl:!0,clsProp:'cls',styleProp:'style',removedProp:'removed',styleIsText:!1,constructor:function(config){if(config){Ext.apply(this,config);var cls=this.cls;var style=this.style;delete this.cls}this.classList=cls?splitWords(cls):[];this.classMap=cls?toMap(this.classList):{};style&&('string'===typeof style?this.style=Ext.Element.parseStyles(style):Ext.isFunction(style)?
(this.styleFn=style,delete this.style):this.style=Ext.apply({},style))},flush:function(){this.flushClassList=[];this.removedClasses={};delete this.style;delete this.unselectableAttr},addCls:function(cls){if(!cls)return this;cls='string'===typeof cls?splitWords(cls):cls;for(var length=cls.length,list=this.classList,map=this.classMap,flushList=this.flushClassList,i=0,c;i<length;++i)c=cls[i],map[c]||(map[c]=!0,list.push(c),flushList&&(flushList.push(c),delete this.removedClasses[c]));return this},hasCls:function(cls){return cls in
this.classMap},removeCls:function(cls){var list=this.classList,newList=this.classList=[];cls=toMap(splitWords(cls));var length=list.length,map=this.classMap,removedClasses=this.removedClasses,i;for(i=0;i<length;++i){var c=list[i];cls[c]?(removedClasses&&map[c]&&(removedClasses[c]=!0,Ext.Array.remove(this.flushClassList,c)),delete map[c]):newList.push(c)}return this},setStyle:function(prop,value){var style=this.style||(this.style={});'string'===typeof prop?1===arguments.length?this.setStyle(Ext.Element.parseStyles(prop)):
style[prop]=value:Ext.apply(style,prop);return this},unselectable:function(){this.addCls(Ext.dom.Element.unselectableCls);Ext.isOpera&&(this.unselectableAttr=!0)},writeTo:function(to){var classList=this.flushClassList||this.classList,removedClasses=this.removedClasses;if(this.styleFn){var style=Ext.apply({},this.styleFn());Ext.apply(style,this.style)}else style=this.style;to[this.clsProp]=classList.join(' ');style&&(to[this.styleProp]=this.styleIsText?Ext.DomHelper.generateStyles(style,null,!0):style);
removedClasses&&(removedClasses=Ext.Object.getKeys(removedClasses),removedClasses.length&&(to[this.removedProp]=removedClasses.join(' ')));this.unselectableAttr&&(to.unselectable='on');return to}}},1,0,0,0,0,0,[Ext.util,'ProtoElement'],0);
Ext.cmd.derive('Ext.dom.CompositeElement',Ext.dom.CompositeElementLite,{alternateClassName:'Ext.CompositeElement',isLite:!1,getElement:function(el){return el},transformElement:function(el){return Ext.get(el)}},0,0,0,0,0,0,[Ext.dom,'CompositeElement',Ext,'CompositeElement'],0);
Ext.cmd.derive('Ext.util.CSS',Ext.Base,function(){var CSS,rules=null,doc=document,camelRe=/(-[a-z])/gi,camelFn=function(m,a){return a.charAt(1).toUpperCase()};return{singleton:!0,rules:rules,initialized:!1,constructor:function(){CSS=this},createStyleSheet:function(cssText,id){var head=doc.getElementsByTagName('head')[0],styleEl=doc.createElement('style');styleEl.setAttribute('type','text/css');id&&styleEl.setAttribute('id',id);(id=styleEl.styleSheet)?(head.appendChild(styleEl),id.cssText=cssText):
(styleEl.appendChild(doc.createTextNode(cssText)),head.appendChild(styleEl),id=styleEl.sheet);CSS.cacheStyleSheet(id);return id},removeStyleSheet:function(stylesheet){(stylesheet='string'===typeof stylesheet?doc.getElementById(stylesheet):stylesheet.ownerNode)&&stylesheet.parentNode.removeChild(stylesheet)},swapStyleSheet:function(id,url){CSS.removeStyleSheet(id);var ss=doc.createElement('link');ss.setAttribute('rel','stylesheet');ss.setAttribute('type','text/css');ss.setAttribute('id',id);ss.setAttribute('href',
url);doc.getElementsByTagName('head')[0].appendChild(ss)},cacheStyleSheet:function(ss){rules||(rules=CSS.rules={});try{var ssRules=ss.cssRules||ss.rules,i=ssRules.length-1,imports=ss.imports,len=imports?imports.length:0,j;for(j=0;j<len;++j)CSS.cacheStyleSheet(imports[j]);for(;0<=i;--i){var rule=ssRules[i];rule.styleSheet&&CSS.cacheStyleSheet(rule.styleSheet);CSS.cacheRule(rule,ss)}}catch(e){}},cacheRule:function(cssRule,styleSheet){if(cssRule.styleSheet)return CSS.cacheStyleSheet(cssRule.styleSheet);
var selectorText=cssRule.selectorText,j;if(selectorText){selectorText=selectorText.split(',');var selectorCount=selectorText.length;for(j=0;j<selectorCount;j++)rules[Ext.String.trim(selectorText[j]).toLowerCase()]={parentStyleSheet:styleSheet,cssRule:cssRule}}},getRules:function(refreshCache){var result={},selector;(null===rules||refreshCache)&&CSS.refreshCache();for(selector in rules)result[selector]=rules[selector].cssRule;return result},refreshCache:function(){var ds=doc.styleSheets,i=0,len=ds.length;
for(rules=CSS.rules={};i<len;i++)try{ds[i].disabled||CSS.cacheStyleSheet(ds[i])}catch(e){}},getRule:function(selector,refreshCache,rawCache){rules&&!refreshCache||CSS.refreshCache();if(!Ext.isArray(selector))return(selector=rules[selector.toLowerCase()])&&!rawCache&&(selector=selector.cssRule),selector||null;for(refreshCache=0;refreshCache<selector.length;refreshCache++)if(rules[selector[refreshCache]])return rawCache?rules[selector[refreshCache].toLowerCase()]:rules[selector[refreshCache].toLowerCase()].cssRule;
return null},createRule:function(styleSheet,selector,cssText){var ruleSet=styleSheet.cssRules||styleSheet.rules,index=ruleSet.length;styleSheet.insertRule?styleSheet.insertRule(selector+' {'+cssText+'}',index):styleSheet.addRule(selector,cssText||' ');CSS.cacheRule(selector=ruleSet[index],styleSheet);return selector},updateRule:function(selector,property,value){var rule;if(Ext.isArray(selector))for(rule=0;rule<selector.length;rule++){if(CSS.updateRule(selector[rule],property,value))return!0}else if(rule=
CSS.getRule(selector)){if(2===arguments.length){var styles=Ext.Element.parseStyles(property);for(property in styles)rule.style[property.replace(camelRe,camelFn)]=styles[property]}else rule.style[property.replace(camelRe,camelFn)]=value;return!0}return!1},deleteRule:function(selector){var rule=CSS.getRule(selector,!1,!0);if(rule){var styleSheet=rule.parentStyleSheet;rule=Ext.Array.indexOf(styleSheet.cssRules||styleSheet.rules,rule.cssRule);styleSheet.deleteRule?styleSheet.deleteRule(rule):styleSheet.removeRule(rule);
delete rules[selector]}}}},1,0,0,0,0,0,[Ext.util,'CSS'],0);Ext.cmd.derive('Ext.fx.easing.Abstract',Ext.Base,{config:{startTime:0,startValue:0},isEasing:!0,isEnded:!1,constructor:function(config){this.initConfig(config);return this},applyStartTime:function(startTime){startTime||(startTime=Ext.Date.now());return startTime},updateStartTime:function(startTime){this.reset()},reset:function(){this.isEnded=!1},getValue:Ext.emptyFn},1,0,0,0,0,0,[Ext.fx.easing,'Abstract'],0);
Ext.cmd.derive('Ext.fx.easing.Linear',Ext.fx.easing.Abstract,{config:{duration:0,endValue:0},updateStartValue:function(startValue){this.distance=this.getEndValue()-startValue},updateEndValue:function(endValue){this.distance=endValue-this.getStartValue()},getValue:function(){var deltaTime=Ext.Date.now()-this.getStartTime(),duration=this.getDuration();return deltaTime>duration?(this.isEnded=!0,this.getEndValue()):this.getStartValue()+deltaTime/duration*this.distance}},0,0,0,0,['easing.linear'],0,[Ext.fx.easing,
'Linear'],0);
Ext.cmd.derive('Ext.util.translatable.Abstract',Ext.Evented,{config:{useWrapper:null,easing:null,easingX:{duration:300},easingY:{duration:300}},x:0,y:0,activeEasingX:null,activeEasingY:null,isAnimating:!1,isTranslatable:!0,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.position={x:0,y:0}},factoryEasing:function(easing){return Ext.factory(easing,Ext.fx.easing.Linear,null,'easing')},applyEasing:function(easing){this.getEasingX()||this.setEasingX(this.factoryEasing(easing));this.getEasingY()||
this.setEasingY(this.factoryEasing(easing))},applyEasingX:function(easing){return this.factoryEasing(easing)},applyEasingY:function(easing){return this.factoryEasing(easing)},doTranslate:function(x,y){this.hasListeners.translate&&this.fireEvent('translate',this,x,y)},translate:function(x,y,animation){if(animation)return this.translateAnimated(x,y,animation);this.isAnimating&&this.stopAnimation();isNaN(x)||'number'!=typeof x||(this.x=x);isNaN(y)||'number'!=typeof y||(this.y=y);this.doTranslate(x,y)},
translateAxis:function(axis,value,animation){var x,y;'x'==axis?x=value:y=value;return this.translate(x,y,animation)},getPosition:function(){var position=this.position;position.x=-this.x;position.y=-this.y;return position},animate:function(easingX,easingY){this.activeEasingX=easingX;this.activeEasingY=easingY;this.isAnimating=!0;this.lastY=this.lastX=null;Ext.AnimationQueue.start(this.doAnimationFrame,this);this.fireEvent('animationstart',this,this.x,this.y);return this},translateAnimated:function(x,
y,animation){Ext.isObject(animation)||(animation={});this.isAnimating&&this.stopAnimation();this.callback=animation.callback;this.callbackScope=animation.scope;var now=Ext.Date.now(),easing=animation.easing,easingX='number'==typeof x?animation.easingX||easing||this.getEasingX()||!0:null;easing='number'==typeof y?animation.easingY||easing||this.getEasingY()||!0:null;easingX&&(easingX=this.factoryEasing(easingX),easingX.setStartTime(now),easingX.setStartValue(this.x),easingX.setEndValue(x),'duration'in
animation&&easingX.setDuration(animation.duration));easing&&(easing=this.factoryEasing(easing),easing.setStartTime(now),easing.setStartValue(this.y),easing.setEndValue(y),'duration'in animation&&easing.setDuration(animation.duration));return this.animate(easingX,easing)},doAnimationFrame:function(){var easingX=this.activeEasingX,easingY=this.activeEasingY,now=Date.now();if(this.isAnimating)if(this.lastRun=now,null===easingX&&null===easingY)this.stopAnimation();else{null!==easingX?(this.x=now=Math.round(easingX.getValue()),
easingX.isEnded&&(this.activeEasingX=null,this.fireEvent('axisanimationend',this,'x',now))):now=this.x;null!==easingY?(this.y=easingX=Math.round(easingY.getValue()),easingY.isEnded&&(this.activeEasingY=null,this.fireEvent('axisanimationend',this,'y',easingX))):easingX=this.y;if(this.lastX!==now||this.lastY!==easingX)this.doTranslate(now,easingX),this.lastX=now,this.lastY=easingX;this.fireEvent('animationframe',this,now,easingX)}},stopAnimation:function(){this.isAnimating&&(this.activeEasingY=this.activeEasingX=
null,this.isAnimating=!1,Ext.AnimationQueue.stop(this.doAnimationFrame,this),this.destroying||(this.fireEvent('animationend',this,this.x,this.y),this.callback&&(this.callback.call(this.callbackScope),this.callback=null)))},refresh:function(){this.translate(this.x,this.y)},destroy:function(){this.destroying=!0;this.isAnimating&&this.stopAnimation();Ext.Evented.prototype.destroy.call(this);this.destroying=!1;this.destroyed=!0}},1,0,0,0,0,0,[Ext.util.translatable,'Abstract'],0);
Ext.cmd.derive('Ext.util.translatable.Dom',Ext.util.translatable.Abstract,{config:{element:null},applyElement:function(element){if(element)return Ext.get(element)},updateElement:function(){this.refresh()}},0,0,0,0,0,0,[Ext.util.translatable,'Dom'],0);
Ext.cmd.derive('Ext.util.translatable.ScrollPosition',Ext.util.translatable.Dom,{type:'scrollposition',constructor:function(config){config&&config.element&&(this.x=config.element.getScrollLeft(),this.y=config.element.getScrollTop());Ext.util.translatable.Dom.prototype.constructor.call(this,config)},translateAnimated:function(){var element=this.getElement();this.x=element.getScrollLeft();this.y=element.getScrollTop();Ext.util.translatable.Dom.prototype.translateAnimated.apply(this,arguments)},doTranslate:function(x,
y){var element=this.getElement();element.setScrollLeft(Math.round(x));element.setScrollTop(Math.round(y))},getPosition:function(){var position=this.position,element=this.getElement();position.x=element.getScrollLeft();position.y=element.getScrollTop();return position}},1,0,0,0,0,0,[Ext.util.translatable,'ScrollPosition'],0);
Ext.cmd.derive('Ext.scroll.Scroller',Ext.Evented,{factoryConfig:{defaultType:'scroller'},isScroller:!0,config:{direction:void 0,element:void 0,scrollbars:null,snapSelector:null,snapOffset:null,msSnapInterval:null,x:!0,y:!0,scrollElement:null,size:null,spacerXY:null},snappableCls:'x-scroller-snappable',elementCls:'x-scroller',spacerCls:'x-scroller-spacer',noScrollbarsCls:'x-no-scrollbars',statics:{create:function(config,type){return Ext.Factory.scroller(config,type)},getScrollingElement:function(){var doc=
document,standard=this.$standardScrollElement,el=doc.scrollingElement;if(el)return el;void 0===standard&&(el=document.createElement('iframe'),el.style.height='1px',document.body.appendChild(el),standard=el.contentWindow.document,standard.write('\x3c!DOCTYPE html\x3e\x3cdiv style\x3d"height:9999em"\x3ex\x3c/div\x3e'),standard.close(),standard=standard.documentElement.scrollHeight>standard.body.scrollHeight,el.parentNode.removeChild(el),this.$standardScrollElement=standard);return standard?doc.documentElement:
doc.body}},constructor:function(config){this.position={x:0,y:0};Ext.Evented.prototype.constructor.call(this,config);this.onDomScrollEnd=Ext.Function.createBuffered(this.onDomScrollEnd,100,this)},destroy:function(){this.setX(Ext.emptyString);this.setY(Ext.emptyString);this.setElement(null);this.setScrollElement(null);this.onDomScrollEnd=this._partners=this.component=null;this._translatable&&(this._translatable.destroy(),this._translatable=null);this.removeSnapStylesheet();Ext.Evented.prototype.destroy.call(this)},
addPartner:function(partner,axis){var partners=this._partners||(this._partners={}),otherPartners=partner._partners||(partner._partners={});partners[partner.getId()]={scroller:partner,axis:axis};otherPartners[this.getId()]={scroller:this,axis:axis}},applyElement:function(element,oldElement){oldElement&&this.scrollListener.destroy();if(element){element=element.isElement?element:Ext.get(element);if(element.dom===document.documentElement||element.dom===document.body){oldElement=Ext.getWin();var scrollEl=
Ext.scroll.Scroller.getScrollingElement()}else scrollEl=oldElement=element;this.setScrollElement(Ext.get(scrollEl));this.scrollListener=oldElement.on({scroll:this.onDomScroll,scope:this,destroyable:!0});return element}},applySize:function(size,oldSize){var y;if(null===size||'number'===typeof size)var x=y=size;else size&&(x=size.x,y=size.y);null===x?x=0:void 0===x&&(x=oldSize?oldSize.x:0);null===y?y=0:void 0===y&&(y=oldSize?oldSize.y:0);return{x:x,y:y}},getClientSize:function(){var dom=this.getElement().dom;
return{x:dom.clientWidth,y:dom.clientHeight}},getScrollbarSize:function(){var width=0,height=0,element=this.getElement(),hasXScroll,hasYScroll;if(element&&!element.destroyed){var x=this.getX();var y=this.getY();element=element.dom;if(x||y)var scrollbarSize=Ext.getScrollbarSize();'scroll'===x?hasXScroll=!0:x&&(hasXScroll=element.scrollWidth>element.clientWidth);'scroll'===y?hasYScroll=!0:y&&(hasYScroll=element.scrollHeight>element.clientHeight);hasXScroll&&(height=scrollbarSize.height);hasYScroll&&
(width=scrollbarSize.width)}return{width:width,height:height}},getPosition:function(){this.positionDirty&&this.updateDomScrollPosition();return this.position},getSize:function(){var element=this.getElement();element&&!element.destroyed?(element=element.dom,element={x:element.scrollWidth,y:element.scrollHeight}):element={x:0,y:0};return element},getMaxPosition:function(){var element=this.getElement(),x=0,y=0;element&&!element.destroyed&&(element=element.dom,x=element.scrollWidth-element.clientWidth,
y=element.scrollHeight-element.clientHeight);return{x:x,y:y}},getMaxUserPosition:function(){var element=this.getElement(),x=0,y=0;element&&!element.destroyed&&(element=element.dom,this.getX()&&(x=element.scrollWidth-element.clientWidth),this.getY()&&(y=element.scrollHeight-element.clientHeight));return{x:x,y:y}},refresh:function(){this.positionDirty=!0;this.fireEvent('refresh',this);return this},removePartner:function(partner){var partners=this._partners,otherPartners=partner._partners;partners&&
delete partners[partner.getId()];otherPartners&&delete otherPartners[this.getId()]},scrollBy:function(deltaX,deltaY,animate){var position=this.getPosition();deltaX&&(deltaX.length?(animate=deltaY,deltaY=deltaX[1],deltaX=deltaX[0]):'number'!==typeof deltaX&&(animate=deltaY,deltaY=deltaX.y,deltaX=deltaX.x));deltaX='number'===typeof deltaX?deltaX+position.x:null;deltaY='number'===typeof deltaY?deltaY+position.y:null;return this.doScrollTo(deltaX,deltaY,animate)},scrollIntoView:function(el,hscroll,animate,
highlight){var position=this.getPosition();var newPosition=this.getElement();if(el)if(newPosition=Ext.fly(el).getScrollIntoViewXY(newPosition,position.x,position.y),hscroll=!1===hscroll?position.x:newPosition.x,newPosition=newPosition.y,newPosition!==position.y||hscroll!==position.x){if(highlight)this.on({scrollend:'doHighlight',scope:this,single:!0,args:[el,highlight]});this.doScrollTo(hscroll,newPosition,animate)}else highlight&&this.doHighlight(el,highlight)},isInView:function(el){return this.doIsInView(el)},
scrollTo:function(x,y,animation){x&&(x.length?(animation=y,y=x[1],x=x[0]):'number'!==typeof x&&(animation=y,y=x.y,x=x.x));if(0>x||0>y){var maxPosition=this.getMaxPosition();0>x&&(x+=maxPosition.x);0>y&&(y+=maxPosition.y)}this.doScrollTo(x,y,animation)},updateDirection:function(direction){var x;if(direction){if('auto'===direction)var y=x=!0;else'vertical'===direction?(x=!1,y=!0):'horizontal'===direction?(x=!0,y=!1):'both'===direction&&(y=x='scroll');this.setX(x);this.setY(y)}else x=this.getX(),y=this.getY(),
x&&y?direction='scroll'===y&&'scroll'===x?'both':'auto':y?direction='vertical':x&&(direction='horizontal'),this._direction=direction},updateScrollbars:function(scrollbars,oldScrollbars){this.syncScrollbarCls()},updateSize:function(size){var element=this.getElement(),x=size.x;size=size.y;element&&(this.positionDirty=!0,element=this.getSpacer(),x||size?(0<x&&--x,0<size&&--size,this.setSpacerXY({x:x,y:size}),element.show()):element.hide())},updateMsSnapInterval:function(){this.initMsSnapInterval()},
updateSnapSelector:function(){this.initSnap()},updateSnapOffset:function(){this.initSnap()},updateElement:function(element){this.initXStyle();this.initYStyle();element.addCls(this.elementCls);this.initSnap();this.initMsSnapInterval();this.syncScrollbarCls()},updateX:function(x){this.initXStyle()},updateY:function(y){this.initYStyle()},deprecated:{5:{methods:{getScroller:function(){return this}}},'5.1.0':{methods:{scrollToTop:function(animate){return this.scrollTo(0,0,animate)},scrollToEnd:function(animate){return this.scrollTo(Infinity,
Infinity,animate)}}}},privates:{getSpacer:function(){var spacer=this._spacer;if(!spacer){var element=this.getElement();spacer=this._spacer=element.createChild({cls:this.spacerCls,role:'presentation'},element.dom.firstChild);spacer.setVisibilityMode(2);spacer.hide();element.position()}return spacer},applySpacerXY:function(pos,oldPos){oldPos&&pos.x===oldPos.x&&pos.y===oldPos.y&&(pos=void 0);return pos},updateSpacerXY:function(pos){var sStyle=this.getSpacer().dom.style,scrollHeight=pos.y;sStyle.marginTop=
'';this.translateSpacer(pos.x,this.constrainScrollRange(scrollHeight));sStyle.lineHeight=Number(!parseInt(sStyle.lineHeight,10))+'px';pos=scrollHeight-this.getElement().dom.scrollHeight;0<pos&&(sStyle.marginTop=Math.min(pos,this.maxSpacerMargin||0)+'px')},translateSpacer:function(x,y){this.getSpacer().translate(x,y)},doIsInView:function(el,skipCheck){var c=this.component,result={x:!1,y:!1},myEl=this.getElement();el&&(skipCheck||myEl.contains(el)||c&&c.owns(el))&&(skipCheck=myEl.getRegion(),el=Ext.fly(el).getRegion(),
result.x=el.right>skipCheck.left&&el.left<skipCheck.right,result.y=el.bottom>skipCheck.top&&el.top<skipCheck.bottom);return result},constrainScrollRange:function(scrollRange){if(1E6>scrollRange)return scrollRange;if(!this.maxSpacerTranslate){var maxScrollHeight=Math.pow(2,32),tooHigh=maxScrollHeight,tooLow=500,scrollTest=Ext.getBody().createChild({style:{position:'absolute',left:'-10000px',top:'0',width:'500px',height:'500px'},cn:{cls:this.spacerCls}},null,!0),stretcher=Ext.get(scrollTest.firstChild),
sStyle=stretcher.dom.style;stretcher.translate(0,maxScrollHeight-1);for(sStyle.lineHeight=Number(!parseInt(sStyle.lineHeight,10))+'px';tooHigh!==tooLow+1;)stretcher.translate(0,maxScrollHeight=tooLow+Math.floor((tooHigh-tooLow)/2)),sStyle.lineHeight=Number(!parseInt(sStyle.lineHeight,10))+'px',scrollTest.scrollHeight<maxScrollHeight?tooHigh=maxScrollHeight:tooLow=maxScrollHeight;stretcher.translate(0,Ext.scroll.Scroller.prototype.maxSpacerTranslate=tooLow);for(tooHigh=2*tooLow;tooHigh!==tooLow+1;)stretcher.dom.style.marginTop=
(maxScrollHeight=tooLow+Math.floor((tooHigh-tooLow)/2))+'px',sStyle.lineHeight=Number(!parseInt(sStyle.lineHeight,10))+'px',scrollTest.scrollHeight<maxScrollHeight?tooHigh=maxScrollHeight:tooLow=maxScrollHeight;Ext.fly(scrollTest).destroy();Ext.scroll.Scroller.prototype.maxSpacerMargin=tooLow-Ext.scroll.Scroller.prototype.maxSpacerTranslate}return Math.min(scrollRange,this.maxSpacerTranslate)},convertX:function(x){return x},doHighlight:function(el,highlight){!0!==highlight?Ext.fly(el).highlight(highlight):
Ext.fly(el).highlight()},doScrollTo:function(x,y,animate){var element=this.getScrollElement();if(element&&!element.destroyed){var dom=element.dom;var xInf=Infinity===x;var yInf=Infinity===y;if(xInf||yInf){var maxPosition=this.getMaxPosition();xInf&&(x=maxPosition.x);yInf&&(y=maxPosition.y)}x=this.convertX(x);animate?(this._translatable||(this._translatable=new Ext.util.translatable.ScrollPosition({element:element})),this._translatable.translate(x,y,animate)):(null!=y&&(dom.scrollTop=y),null!=x&&(dom.scrollLeft=
x,Ext.isIE8&&(dom.scrollLeft=x)));this.positionDirty=!0}},fireScrollStart:function(x,y){var component=this.component;this.invokePartners('onPartnerScrollStart',x,y);this.hasListeners.scrollstart&&this.fireEvent('scrollstart',this,x,y);if(component&&component.onScrollStart)component.onScrollStart(x,y);Ext.GlobalEvents.fireEvent('scrollstart',this,x,y)},fireScroll:function(x,y){var component=this.component;this.invokePartners('onPartnerScroll',x,y);this.hasListeners.scroll&&this.fireEvent('scroll',
this,x,y);if(component&&component.onScrollMove)component.onScrollMove(x,y);Ext.GlobalEvents.fireEvent('scroll',this,x,y)},fireScrollEnd:function(x,y){var component=this.component;this.invokePartners('onPartnerScrollEnd',x,y);this.hasListeners.scrollend&&this.fireEvent('scrollend',this,x,y);if(component&&component.onScrollEnd)component.onScrollEnd(x,y);Ext.GlobalEvents.fireEvent('scrollend',this,x,y)},getElementScroll:function(element){return element.getScroll()},initSnap:function(){var snapOffset=
this.getSnapOffset(),snapSelector=this.getSnapSelector(),element=this.getElement();if(element&&snapSelector){element.addCls(this.snappableCls);this.removeSnapStylesheet();if(snapOffset){var offsetX=snapOffset.x||0;var offsetY=snapOffset.y||0;offsetX&&(offsetX=-offsetX+'px');offsetY&&(offsetY=-offsetY+'px')}snapOffset=offsetX+' '+offsetY+';';this.snapStylesheet=Ext.util.CSS.createStyleSheet('#'+element.id+' '+snapSelector+'{-webkit-scroll-snap-coordinate:'+snapOffset+'scroll-snap-coordinate:'+snapOffset+
'}')}},initMsSnapInterval:function(){var element=this.getElement(),interval;if(element&&(interval=this.getMsSnapInterval())){var x=interval.x;interval=interval.y;element=element.dom.style;x&&(element['-ms-scroll-snap-points-x']='snapInterval(0px, '+x+'px)');interval&&(element['-ms-scroll-snap-points-y']='snapInterval(0px, '+interval+'px)')}},initXStyle:function(){var element=this.getElement(),x=this.getX();element&&element.dom&&(x?!0===x&&(x='auto'):x='hidden',element.setStyle('overflow-x',x))},initYStyle:function(){var element=
this.getElement(),y=this.getY();element&&element.dom&&(y?!0===y&&(y='auto'):y='hidden',element.setStyle('overflow-y',y))},invokePartners:function(method,x,y){var partners=this._partners,id,isEnd='onPartnerScrollEnd'===method;if(!this.suspendSync&!this.isReflecting)for(id in partners){var partner=partners[id].scroller;partner.isReflecting=!0;partner[method](this,x,y);isEnd&&(partner.isReflecting=!1)}},clearReflecting:function(){this.isReflecting=!1},suspendPartnerSync:function(){this.suspendSync=(this.suspendSync||
0)+1},resumePartnerSync:function(syncNow){this.suspendSync&&this.suspendSync--;!this.suspendSync&&syncNow&&(syncNow=this.getPosition(),this.invokePartners('onPartnerScroll',syncNow.x,syncNow.y),this.invokePartners('onPartnerScrollEnd',syncNow.x,syncNow.y))},updateDomScrollPosition:function(){var element=this.getScrollElement(),position=this.position;element&&!element.destroyed&&(element=this.getElementScroll(element),position.x=element.left,position.y=element.top);this.positionDirty=!1;return position},
syncWithPartners:function(){var partners=this._partners,id;this.isReflecting=!0;for(id in partners){var partner=partners[id].scroller;var position=partner.getPosition();this.onPartnerScroll(partner,position.x,position.y)}this.isReflecting=!1},syncScrollbarCls:function(){var element=this.getElement();element&&element.toggleCls(this.noScrollbarsCls,!1===this.getScrollbars())},onDomScroll:function(){var position=this.updateDomScrollPosition();if(!this.restoring){var x=position.x;position=position.y;
this.isScrolling||(this.isScrolling=Ext.isScrolling=!0,this.fireScrollStart(x,position));this.fireScroll(x,position);this.onDomScrollEnd()}},onDomScrollEnd:function(){if(!this.destroying&&!this.destroyed){var position=this.getPosition();var x=position.x;position=position.y;this.isScrolling=Ext.isScrolling=!1;this.trackingScrollLeft=x;this.trackingScrollTop=position;this.fireScrollEnd(x,position)}},onPartnerScroll:function(partner,x,y){(partner=partner._partners[this.getId()].axis)&&('x'===partner?
y=null:'y'===partner&&(x=null));this.doScrollTo(x,y,!1,!0)},onPartnerScrollStart:Ext.privateFn,onPartnerScrollEnd:Ext.privateFn,removeSnapStylesheet:function(){var stylesheet=this.snapStylesheet;stylesheet&&(Ext.util.CSS.removeStyleSheet(stylesheet),this.snapStylesheet=null)},restoreState:function(){var me=this;me.getScrollElement()&&void 0!==me.trackingScrollTop&&(me.restoring=!0,Ext.defer(function(){me.restoring=!1},50),me.doScrollTo(me.trackingScrollLeft,me.trackingScrollTop,!1))}}},1,0,0,0,['scroller.scroller'],
[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.scroll,'Scroller'],function(Scroller){Ext.getViewportScroller=function(){return Scroller.viewport||(Scroller.viewport=new Scroller)};Ext.setViewportScroller=function(scroller){Scroller.viewport!==scroller&&(Ext.destroy(Scroller.viewport),Scroller.viewport=scroller.isScroller?scroller:new Scroller(scroller))};Ext.onReady(function(){Ext.defer(function(){var scroller=Ext.getViewportScroller();scroller.getElement()||
scroller.setElement(Ext.getBody())},100)})});
Ext.cmd.derive('Ext.util.Floating',Ext.Base,{mixinId:'floating',focusOnToFront:!0,shadow:'sides',animateShadow:!1,constrain:!1,alignOnScroll:!0,config:{activeCounter:0,alwaysOnTop:!1},preventDefaultAlign:!1,_visModeMap:{visibility:1,display:2,offsets:3},constructor:function(){var el=this.el,shadow=this.shadow;if(shadow){var shadowConfig={mode:!0===shadow?'sides':shadow};if(shadow=this.shadowOffset)shadowConfig.offset=shadow;shadowConfig.animate=this.animateShadow;shadowConfig.fixed=this.fixed;el.enableShadow(shadowConfig,
!1)}(this.shim||Ext.useShims)&&el.enableShim({fixed:this.fixed},!1);el.setVisibilityMode(this._visModeMap[this.hideMode]);this.el.on({mousedown:this.onMouseDown,scope:this,capture:!0});this.registerWithOwnerCt();this.initHierarchyEvents()},alignTo:function(alignTarget,position,offsets,animate,monitorScroll){if(alignTarget.isComponent){var alignEl=alignTarget.el;var destroyed=alignTarget.destroyed}else alignEl=alignTarget=Ext.get(alignTarget),destroyed=alignEl.dom,destroyed=!destroyed||Ext.isGarbage(destroyed);
destroyed?(this._lastAlignTarget=null,this.alignListeners&&this.alignListeners.destroy()):(this.mixins.positionable.alignTo.call(this,alignEl,position,offsets,animate,!1!==monitorScroll),animate=this.getXY(),monitorScroll=alignTarget.getXY(),this.alignVector=[animate[0]-monitorScroll[0],animate[1]-monitorScroll[1]],this._lastAlignTarget=alignTarget,this._lastAlignToPos=position,this._lastAlignToOffsets=offsets,this._topAlignTarget=this.getTopAlignTarget(),this.clearClip(),this.alignListeners||(alignTarget=
{resize:{fn:this.alignOnResize,buffer:100},scope:this,destroyable:!0},this.alignOnScroll&&!alignEl.contains(this.el)&&(alignTarget.scroll=this.doRealign),this.alignListeners=Ext.on(alignTarget)))},initFloatConstrain:function(){var floatParent=this.floatParent;!this.constrain&&!this.constrainHeader||this.constrainTo||(this.constrainTo=floatParent?floatParent.getTargetEl():this.container)},initHierarchyEvents:function(){var syncHidden=this.syncHidden;this.hasHierarchyEventListeners||(this.mon(Ext.GlobalEvents,
{hide:syncHidden,collapse:syncHidden,show:syncHidden,expand:syncHidden,added:syncHidden,scope:this}),this.hasHierarchyEventListeners=!0)},registerWithOwnerCt:function(){var ownerCt=this.ownerCt,zip=this.zIndexParent;zip&&zip.unregisterFloatingItem(this);zip=this.zIndexParent=this.up('[floating]');this.floatParent=ownerCt||zip;this.initFloatConstrain();delete this.ownerCt;zip?zip.registerFloatingItem(this):Ext.WindowManager.register(this)},onMouseDown:function(e){var focusTask=this.focusTask,owner=
this.getRefOwner(),preventFocus='touch'===e.pointerType,dom;if(this.floating&&(!focusTask||!focusTask.id)){this.owns(Ext.Element.getActiveElement())&&(preventFocus=!0);focusTask=e.target;for(dom=this.el.dom;!preventFocus&&focusTask&&focusTask!==dom;)Ext.fly(focusTask).isFocusable()&&(preventFocus=!0),focusTask=focusTask.parentNode;(focusTask=Ext.WindowManager.getActive()===this&&(focusTask===dom||preventFocus))||this.toFront(preventFocus);!preventFocus&&owner&&owner.containsFocus&&e.preventDefault()}},
onBeforeFloatLayout:function(){this.el.preventSync=!0},onAfterFloatLayout:function(){var el=this.el;if(el.shadow||el.shim)el.setUnderlaysVisible(!0),el.syncUnderlays()},syncHidden:function(){var hidden=this.hidden||!this.rendered,hierarchicallyHidden=this.hierarchicallyHidden=this.isHierarchicallyHidden(),pendingShow=this.pendingShow;hidden!==hierarchicallyHidden&&(hierarchicallyHidden?(this.hide(),this.pendingShow=!0):pendingShow&&(delete this.pendingShow,pendingShow.length?this.show.apply(this,
pendingShow):this.show()))},setZIndex:function(index){this.el.setZIndex(index);index+=10;this.floatingDescendants&&(index=100*Math.floor(this.floatingDescendants.setBase(index)/100)+1E4);return index},doConstrain:function(constrainTo){(constrainTo=this.calculateConstrainedPosition(constrainTo,null,!0))&&this.setPosition(constrainTo)},updateActiveCounter:function(activeCounter){(activeCounter=this.zIndexParent)&&activeCounter!==activeCounter.zIndexManager.front&&!1!==this.bringParentToFront&&activeCounter.setActiveCounter(++Ext.ZIndexManager.activeCounter);
if(activeCounter=this.zIndexManager)activeCounter.onComponentUpdate(this)},updateAlwaysOnTop:function(alwaysOnTop){if(alwaysOnTop=this.zIndexManager)alwaysOnTop.onComponentUpdate(this)},toFront:function(preventFocus){this.zIndexManager.bringToFront(this,preventFocus||!this.focusOnToFront)&&this.hasListeners.tofront&&this.fireEvent('tofront',this,this.el.getZIndex());return this},setActive:function(active,doFocus){active?(this.el.shadow&&!1!==this.el.getData().isVisible&&!this.maximized&&this.el.enableShadow(null,
!0),doFocus&&((active=Ext.ComponentManager.getActiveComponent())&&active.up(this)||this.focus()),this.fireEvent('activate',this)):this.fireEvent('deactivate',this)},toBack:function(){this.zIndexManager.sendToBack(this);return this},center:function(){if(this.isVisible()){var xy=this.getAlignToXY(this.container,'c-c');this.setPagePosition(xy)}else this.needsCenter=!0;return this},onFloatShow:function(){this.needsCenter?this.center():this._lastAlignTarget&&this.alignTo(this._lastAlignTarget,this._lastAlignToPos,
this._lastAlignToOffsets,!1,!this.fixed);this.needsCenter=!1},fitContainer:function(animate){var parent=this.floatParent,container=parent?parent.getTargetEl():this.container,newBox=container.getViewSize();parent=parent||container.dom!==document.body?[0,0]:container.getXY();newBox.x=parent[0];newBox.y=parent[1];this.setBox(newBox,animate)},privates:{onFloatDestroy:function(){this.clearAlignEl()},getTopAlignTarget:function(){for(var next=this._lastAlignTarget,result=next;next&&(result=next)&&next.isComponent;)next=
result.isFloating()?result._lastAlignTarget:(next=result.up('{isFloating()}'))&&next._lastAlignTarget;return result},clearAlignEl:function(){this._lastAlignTarget&&(this.alignListeners=Ext.destroy(this.alignListeners),Ext.un('scroll',this.doRealign,this),this._lastAlignToPos=this._lastAlignTarget=this._lastAlignToOffsets=this._topAlignTarget=null)},alignOnResize:function(){this.doRealign()},doRealign:function(scroller){var alignEl=this._lastAlignTarget.el;if(alignEl&&this.isVisible()){if(alignEl.isComponent)var destroyed=
alignEl.destroyed;else destroyed=alignEl.dom,destroyed=!destroyed||Ext.isGarbage(destroyed);if(destroyed)this.clearAlignEl();else if(!scroller||scroller.getElement().contains(this._topAlignTarget.el)&&!scroller.getElement().contains(this.el))alignEl=alignEl.getXY(),alignEl=[alignEl[0]+this.alignVector[0],alignEl[1]+this.alignVector[1]],this.setXY(alignEl),scroller&&this.clipToScroller(scroller)}},clipToScroller:function(scroller){var anchorBox=this._topAlignTarget.getBox();scroller=scroller.getElement().getConstrainRegion();
var sides=0;anchorBox.top<scroller.top&&(sides=1);anchorBox.right>scroller.right&&(sides|=2);anchorBox.bottom>scroller.bottom&&(sides|=4);anchorBox.left<scroller.left&&(sides|=8);sides?this.clipTo(scroller,sides):this.clearClip()}}},1,0,0,0,0,0,[Ext.util,'Floating'],0);
Ext.cmd.derive('Ext.util.ElementContainer',Ext.Base,{mixinId:'elementCt',config:{childEls:{$value:{},cached:!0,lazy:!0,merge:function(newValue,oldValue,target,mixinClass){oldValue=oldValue?Ext.Object.chain(oldValue):{};var i;if(newValue instanceof Array)for(i=newValue.length;i--;)target=newValue[i],mixinClass&&target in oldValue||('string'===typeof target?oldValue[target]={name:target,itemId:target}:oldValue[target.name]=target);else if(newValue)if(newValue.constructor===Object)for(i in newValue)mixinClass&&
i in oldValue||(target=newValue[i],!0===target?oldValue[i]={itemId:i}:'string'===typeof target?oldValue[i]={itemId:target}:(oldValue[i]=target,'itemId'in target||(target.itemId=i)),oldValue[i].name=i);else mixinClass&&newValue in oldValue||(oldValue[newValue]={name:newValue,itemId:newValue});return oldValue}}},destroy:function(){var childEls=this.getChildEls(),childName;for(childName in childEls)if(childEls=this[childName])childEls.destroy&&(childEls.component=null,childEls.destroy()),this[childName]=
null},privates:{addChildEl:function(childEl){var childEls=this.getChildEls();this.hasOwnProperty('childEls')||(this.childEls=childEls=Ext.Object.chain(childEls));'string'===typeof childEl&&(childEl={name:childEl,itemId:childEl});childEls[childEl.name]=childEl},afterClassMixedIn:function(targetClass){var proto=targetClass.prototype,childEls=proto.childEls;childEls&&(delete proto.childEls,targetClass.getConfigurator().add({childEls:childEls}))},attachChildEls:function(el,owner){var childEls=this.getChildEls();
owner=owner||this;var baseId=owner.id+'-',unframed=!owner.frame,childName,k;for(childName in childEls){var elements=childEls[childName];if(!unframed||!elements.frame){if(k=elements.select)var value=el.select(k,!0);else(k=elements.selectNode)?value=el.selectNode(k,!1):(k=elements.id)?value=Ext.cache[k]||el.getById(k):(k=baseId+elements.itemId,value=Ext.cache[k]);if(value)if(value.isElement)value.component=owner;else if(value.isComposite&&!value.isLite)for(elements=value.elements,k=elements.length;k--;)elements[k].component=
owner;this[childName]=value||null}}}}},0,0,0,0,0,0,[Ext.util,'ElementContainer'],0);
Ext.cmd.derive('Ext.util.Renderable',Ext.Base,{mixinId:'renderable',frameCls:'x-frame',frameIdRegex:/[\-]frame\d+[TMB][LCR]$/,frameElNames:'TL TC TR ML MC MR BL BC BR Table'.split(' '),frameTpl:['\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'before\'); %}\x3c/tpl\x3e','\x3ctpl if\x3d"top"\x3e','\x3ctpl if\x3d"left"\x3e\x3cdiv id\x3d"{fgid}TL" data-ref\x3d"frameTL" class\x3d"{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-tl\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/tpl\x3e','\x3ctpl if\x3d"right"\x3e\x3cdiv id\x3d"{fgid}TR" data-ref\x3d"frameTR" class\x3d"{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-tr\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/tpl\x3e',
'\x3cdiv id\x3d"{fgid}TC" data-ref\x3d"frameTC" class\x3d"{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-tc\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/div\x3e','\x3ctpl if\x3d"right"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3ctpl if\x3d"left"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"left"\x3e\x3cdiv id\x3d"{fgid}ML" data-ref\x3d"frameML" class\x3d"{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-ml\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/tpl\x3e',
'\x3ctpl if\x3d"right"\x3e\x3cdiv id\x3d"{fgid}MR" data-ref\x3d"frameMR" class\x3d"{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-mr\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/tpl\x3e','\x3cdiv id\x3d"{fgid}Body" data-ref\x3d"frameBody" class\x3d"{frameBodyCls} {frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-mc\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e','{%this.applyRenderTpl(out, values)%}',
'\x3c/div\x3e','\x3ctpl if\x3d"right"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3ctpl if\x3d"left"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3ctpl if\x3d"bottom"\x3e','\x3ctpl if\x3d"left"\x3e\x3cdiv id\x3d"{fgid}BL" data-ref\x3d"frameBL" class\x3d"{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-bl\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/tpl\x3e','\x3ctpl if\x3d"right"\x3e\x3cdiv id\x3d"{fgid}BR" data-ref\x3d"frameBR" class\x3d"{frameCls}-br {baseCls}-br {baseCls}-{ui}-br\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-br\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/tpl\x3e',
'\x3cdiv id\x3d"{fgid}BC" data-ref\x3d"frameBC" class\x3d"{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-bc\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/div\x3e','\x3ctpl if\x3d"right"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3ctpl if\x3d"left"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'after\'); %}\x3c/tpl\x3e'],frameTableTpl:['\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'before\'); %}\x3c/tpl\x3e',
'\x3ctable id\x3d"{fgid}Table" data-ref\x3d"frameTable" class\x3d"{frameCls} ','x-table-plain" cellpadding\x3d"0" role\x3d"presentation"\x3e','\x3ctpl if\x3d"top"\x3e','\x3ctr role\x3d"presentation"\x3e','\x3ctpl if\x3d"left"\x3e\x3ctd id\x3d"{fgid}TL" data-ref\x3d"frameTL" class\x3d"{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-tl\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tpl\x3e','\x3ctd id\x3d"{fgid}TC" data-ref\x3d"frameTC" class\x3d"{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-tc\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e',
'\x3ctpl if\x3d"right"\x3e\x3ctd id\x3d"{fgid}TR" data-ref\x3d"frameTR" class\x3d"{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-tr\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3ctr role\x3d"presentation"\x3e','\x3ctpl if\x3d"left"\x3e\x3ctd id\x3d"{fgid}ML" data-ref\x3d"frameML" class\x3d"{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-ml\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tpl\x3e',
'\x3ctd id\x3d"{fgid}Body" data-ref\x3d"frameBody" class\x3d"{frameBodyCls} {frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-mc\x3c/tpl\x3e{frameElCls}" style\x3d"{mcStyle}" role\x3d"presentation"\x3e','{%this.applyRenderTpl(out, values)%}','\x3c/td\x3e','\x3ctpl if\x3d"right"\x3e\x3ctd id\x3d"{fgid}MR" data-ref\x3d"frameMR" class\x3d"{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-mr\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tpl\x3e',
'\x3c/tr\x3e','\x3ctpl if\x3d"bottom"\x3e','\x3ctr role\x3d"presentation"\x3e','\x3ctpl if\x3d"left"\x3e\x3ctd id\x3d"{fgid}BL" data-ref\x3d"frameBL" class\x3d"{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-bl\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tpl\x3e','\x3ctd id\x3d"{fgid}BC" data-ref\x3d"frameBC" class\x3d"{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-bc\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e',
'\x3ctpl if\x3d"right"\x3e\x3ctd id\x3d"{fgid}BR" data-ref\x3d"frameBR" class\x3d"{frameCls}-br {baseCls}-br {baseCls}-{ui}-br\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-{parent.ui}-{.}-br\x3c/tpl\x3e{frameElCls}" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3c/table\x3e','\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'after\'); %}\x3c/tpl\x3e'],_renderState:0,ariaEl:'el',_layerCls:'x-layer',_fixedLayerCls:'x-fixed-layer',ariaStaticRoles:{presentation:!0,
article:!0,definition:!0,directory:!0,document:!0,img:!0,heading:!0,math:!0,note:!0,banner:!0,complementary:!0,contentinfo:!0,navigation:!0,search:!0,undefined:!0,'null':!0},statics:{makeRenderSetter:function(cfg,renderState){var name=cfg.name;return function(value){var bucket=this.renderConfigs||(this.renderConfigs={}),pending=bucket[renderState];this._renderState>=renderState?(cfg.setter||cfg.getSetter()).call(this,value):(pending||(bucket[renderState]=pending={}),name in pending||(pending[name]=
this[name]),this[name]=value);return this}},processRenderConfig:function(source,configName,state){var proto=this.prototype,configurator=this.getConfigurator(),makeSetter=Ext.util.Renderable.makeRenderSetter,renderConfig=source[configName],name,setterName;for(name in renderConfig){var cfg=Ext.Config.get(name);if(!proto[setterName=cfg.names.set]){var cachedSetter=cfg.renderSetter||(cfg.renderSetter={});proto[setterName]=cachedSetter[state]||(cachedSetter[state]=makeSetter(cfg,state))}}delete source[configName];
configurator.add(renderConfig)}},onClassMixedIn:function(targetClass){var override=targetClass.override,processRenderConfig=this.processRenderConfig,processOverride=function(body){body.beforeRenderConfig&&this.processRenderConfig(body,'beforeRenderConfig',1);body.renderConfig&&this.processRenderConfig(body,'renderConfig',3);override.call(this,body)},processClass=function(theClass,classBody){theClass.override=processOverride;theClass.processRenderConfig=processRenderConfig;classBody.beforeRenderConfig&&
theClass.processRenderConfig(classBody,'beforeRenderConfig',1);classBody.renderConfig&&theClass.processRenderConfig(classBody,'renderConfig',3)};processClass(targetClass,targetClass.prototype);targetClass.onExtended(processClass)},afterRender:function(){var data={},protoEl=this.protoEl,target=this.el;this.finishRenderChildren();this._renderState=4;if(this.contentEl){var contentEl=this.contentEl=Ext.get(this.contentEl);contentEl.component=this;contentEl.removeCls(['x-hidden','x-hidden-display','x-hidden-offsets']);
this.getContentTarget().appendChild(contentEl.dom)}protoEl.writeTo(data);(protoEl=data.removed)&&target.removeCls(protoEl);protoEl=data.cls;protoEl.length&&target.addCls(protoEl);(protoEl=data.style)&&target.setStyle(protoEl);this.protoEl=null;this.ownerCt||this.skipLayout||this.updateLayout();this.x&&this.y||!this.pageX&&!this.pageY||this.setPagePosition(this.pageX,this.pageY);if(this.disableOnRender)this.onDisable();(data=this.controller)&&data.afterRender&&data.afterRender(this)},afterFirstLayout:function(width,
height){var x=this.x,y=this.y,alignSpec=this.defaultAlign,alignOffset=this.alignOffset;if(!this.ownerLayout){var hasX=void 0!==x;var hasY=void 0!==y}if(!(!this.floating||this.preventDefaultAlign||hasX&&hasY)){if(this.floatParent){var pos=this.floatParent.getTargetEl().getViewRegion();alignSpec=this.el.getAlignToXY(this.alignTarget||this.floatParent.getTargetEl(),alignSpec,alignOffset);pos.x=alignSpec[0]-pos.x;pos.y=alignSpec[1]-pos.y}else alignSpec=this.el.getAlignToXY(this.alignTarget||this.container,
alignSpec,alignOffset),pos=this.el.translateXY(alignSpec[0],alignSpec[1]);x=hasX?x:pos.x;y=hasY?y:pos.y;hasX=hasY=!0}(hasX||hasY)&&this.setPosition(x,y);this.onBoxReady(width,height);(x=this.controller)&&x.boxReady&&x.boxReady(this,width,height)},beforeRender:function(){var floating=this.floating,layout=this.getComponentLayout(),cls=this.userCls,controller;this._renderState=1;this.ariaUsesMainElement='el'===this.ariaEl;(controller=this.controller)&&controller.beforeRender&&controller.beforeRender(this);
this.initBindable();this.renderConfigs&&this.flushRenderConfigs();this.reference&&this.publishState();cls&&this.addCls(cls);floating&&(this.addCls(this.fixed?this._fixedLayerCls:this._layerCls),(cls=floating.cls)&&this.addCls(cls));this.frame=this.frame||this.alwaysFramed;layout.initialized||layout.initLayout();this.initOverflow();this.setUI(this.ui)},doApplyRenderTpl:function(out,values){var me=values.$comp;me.rendered||(me=me.initRenderTpl(),me.applyOut(values.renderData,out))},getElConfig:function(){var autoEl=
this.autoEl,frameInfo=this.getFrameInfo(),config={tag:'div',tpl:frameInfo?this.initFramingTpl(frameInfo.table):this.initRenderTpl()},layoutTargetCls=this.layoutTargetCls,protoEl=this.protoEl,ariaRole=this.ariaRole;this.initStyles(protoEl);layoutTargetCls&&!frameInfo&&protoEl.addCls(layoutTargetCls);protoEl.writeTo(config);protoEl.flush();autoEl&&(Ext.isString(autoEl)?config.tag=autoEl:Ext.apply(config,autoEl));ariaRole&&this.ariaUsesMainElement&&(config.role=ariaRole,this.ariaStaticRoles[ariaRole]||
(config['aria-hidden']=!!this.hidden,config['aria-disabled']=!!this.disabled,this.ariaLabel&&!this.ariaLabelledBy&&(config['aria-label']=this.ariaLabel),this.collapsible&&(config['aria-expanded']=!this.collapsed),this.ariaRenderAttributes&&Ext.apply(config,this.ariaRenderAttributes),this.config.ariaAttributes&&Ext.apply(config,this.getAriaAttributes())));config.id=this.id;config.tpl&&(frameInfo?(config.tplData=autoEl=this.getFrameRenderData(),autoEl.renderData=this.initRenderData()):config.tplData=
this.initRenderData());this.ariaRenderAttributes=null;return config},getInsertPosition:function(position){void 0!==position&&(position=Ext.isNumber(position)?this.container.dom.childNodes[position]:Ext.getDom(position));return position},getRenderTree:function(){var ret=null;this.hasListeners.beforerender&&!1===this.fireEvent('beforerender',this)||(this._renderState=1,this.beforeRender(),this.rendering=!0,this._renderState=2,ret=this.getElConfig(),this.el&&(ret.id=this.$pid=Ext.id(null,this.el.identifiablePrefix)));
return ret},initRenderData:function(){var ariaRole=this.ariaRole;var data=Ext.apply({$comp:this,id:this.id,ui:this.ui,uiCls:this.uiCls,baseCls:this.baseCls,componentCls:this.componentCls,frame:this.frame,hasTabGuard:!!this.tabGuard,scrollerCls:this.scrollerCls,childElCls:'',ariaEl:this.ariaEl},this.renderData);if(ariaRole&&!this.ariaUsesMainElement){var ariaAttr={role:ariaRole};this.ariaStaticRoles[ariaRole]||(ariaAttr['aria-hidden']=!!this.hidden,ariaAttr['aria-disabled']=!!this.disabled,this.ariaLabel&&
!this.ariaLabelledBy&&(ariaAttr['aria-label']=this.ariaLabel),this.collapsible&&(ariaAttr['aria-expanded']=!this.collapsed),this.ariaRenderAttributes&&Ext.apply(ariaAttr,this.ariaRenderAttributes),this.config.ariaAttributes&&Ext.apply(ariaAttr,this.getAriaAttributes()));data.ariaAttributes=ariaAttr}return data},onRender:function(parentNode,containerIdx){var x=this.x,y=this.y;parentNode=null;containerIdx=this.el;var scroller=this.scrollable;this.applyRenderSelectors();scroller&&scroller.isScroller&&
(scroller.setElement(this.getOverflowEl()),Ext.isIE&&(this.showListenerIE=Ext.on('show',this.onGlobalShow,this,{destroyable:!0})));this.rendering=null;this.rendered=!0;this._renderState=3;this.renderConfigs&&this.flushRenderConfigs();null!=x&&(parentNode={x:x});null!=y&&((parentNode=parentNode||{}).y=y);this.getFrameInfo()||(x=this.width,y=this.height,'number'===typeof x&&(parentNode=parentNode||{},parentNode.width=x),'number'===typeof y&&(parentNode=parentNode||{},parentNode.height=y));this.lastBox=
containerIdx.lastBox=parentNode},render:function(container,position){var el=this.el,ownerLayout=this.ownerLayout;el&&!el.isElement&&(this.wrapPrimaryEl(el),el=this.el);this.skipLayout||Ext.suspendLayouts();container=this.initContainer(container);var nextSibling=this.getInsertPosition(position);if(el)if(this.hasListeners.beforerender&&!1===this.fireEvent('beforerender',this))var vetoed=!0;else this.beforeRender(),this.needsRenderTpl=this.rendering=!0,this._renderState=2,this.initStyles(el),!1!==this.allowDomMove&&
(nextSibling?container.dom.insertBefore(el.dom,nextSibling):container.dom.appendChild(el.dom));else{var tree=this.getRenderTree();ownerLayout&&ownerLayout.transformItemRenderTree&&(tree=ownerLayout.transformItemRenderTree(tree));tree&&(el=nextSibling?Ext.DomHelper.insertBefore(nextSibling,tree):Ext.DomHelper.append(container,tree),this.wrapPrimaryEl(el),this.cacheRefEls(el))}el&&!vetoed&&this.finishRender(position);this.skipLayout||Ext.resumeLayouts(!this.hidden&&!container.isDetachedBody)},ensureAttachedToBody:function(runLayout){for(var comp=
this,body;comp.ownerCt;)comp=comp.ownerCt;comp.container.isDetachedBody&&(comp.container=body=Ext.getBody(),body.appendChild(comp.el.dom),runLayout&&comp.updateLayout(),'number'!==typeof comp.x&&'number'!==typeof comp.y||comp.setPosition(comp.x,comp.y))},privates:{applyRenderSelectors:function(){var selectors=this.renderSelectors,el=this.el,query,selector;this.attachChildEls(el);this.ariaEl=this[this.ariaEl]||this.el;if(selectors)for(selector in selectors)(query=selectors[selector])&&(this[selector]=
el.selectNode(query,!1))},cacheRefEls:function(el){el=el||this.el;var cache=Ext.cache,El=Ext.dom.Element;el=(el.isElement?el.dom:el).querySelectorAll('[data-ref]');var len=el.length,i;for(i=0;i<len;i++){var ref=el[i];cache[ref.id]||new El(ref)}},doAutoRender:function(){this.rendered||(this.floating?this.render(this.renderTo||document.body):this.render(Ext.isBoolean(this.autoRender)?Ext.getBody():this.autoRender))},doRenderContent:function(out,renderData){renderData=renderData.$comp;var data=renderData.data;
renderData.html&&(Ext.DomHelper.generateMarkup(renderData.html,out),delete renderData.html);renderData.tpl&&(renderData.tpl.isTemplate||(renderData.tpl=new Ext.XTemplate(renderData.tpl)),data&&(renderData.data=data=data.isEntity?data.getData(!0):data,renderData.tpl.applyOut(data,out)))},doRenderFramingTabGuard:function(out,renderData,position){var layout=renderData.$comp.layout;renderData.renderData.$skipTabGuards=!0;layout&&layout.doRenderTabGuard&&layout.doRenderTabGuard.call(this,out,renderData,
position)},flushRenderConfigs:function(){var configs=this.renderConfigs,state=this._renderState,bucket,i,name,newConfigs;if(configs){for(i=0;i<=state;++i)if(bucket=configs[i])for(name in configs[i]=null,bucket){var value=bucket[name];(newConfigs||(newConfigs={}))[name]=this[name];this[name]=value}newConfigs&&this.setConfig(newConfigs)}},finishRender:function(containerIdx){var cache=Ext.cache;if(!this.el||this.$pid){if(this.container)var dom=(cache=cache[this.id])?cache.dom:this.container.getById(this.id,
!0);else{var proxy=this.$pid||this.id;dom=(cache=cache[proxy])?cache.dom:Ext.getDom(proxy)}if(this.el){delete this.$pid;this.el.dom||this.wrapPrimaryEl(this.el);dom.parentNode.insertBefore(this.el.dom,dom);proxy=dom;dom=this.el.dom;for(cache=dom.firstChild;proxy.firstChild;)dom.insertBefore(proxy.firstChild,cache);this.el.addCls(proxy.className);Ext.removeNode(proxy)}else this.wrapPrimaryEl(dom)}else if(this.needsRenderTpl){if(proxy=this.initRenderTpl())cache=this.initRenderData(),proxy.insertFirst(this.getTargetEl(),
cache);this.cacheRefEls()}this.el.component=this;this.container||(this.container=Ext.get(this.el.dom.parentNode));this.ctCls&&this.container.addCls(this.ctCls);this.onRender(this.container,containerIdx);this.overflowInited||this.initOverflow();this.el.setVisibilityMode(Ext.Element[this.hideMode.toUpperCase()]);this.overCls&&this.el.hover(this.addOverCls,this.removeOverCls,this);this.hasListeners.render&&this.fireEvent('render',this);this.afterRender();this.hasListeners.afterrender&&this.fireEvent('afterrender',
this);this.initEvents();this.hidden&&this.el.hide()},finishRenderChildren:function(){this.getComponentLayout().finishRender()},getFrameRenderData:function(){var frameInfo=this.frameSize,mcStyle='';this._syncFrameHeight&&this.height&&(mcStyle='height:'+(this.height-frameInfo.height)+'px');return{$comp:this,id:this.id,fgid:this.id+'-frame',ui:this.ui,uiCls:this.uiCls,frameCls:this.frameCls,frameBodyCls:this.layoutTargetCls||'',baseCls:this.baseCls,hasTabGuard:this.tabGuard,top:!!frameInfo.top,left:!!frameInfo.left,
right:!!frameInfo.right,bottom:!!frameInfo.bottom,mcStyle:mcStyle,frameElCls:''}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame)return!1;var frameInfoCache=this.frameInfoCache,cls=this.getFramingInfoCls()+'-frameInfo',frameInfo=frameInfoCache[cls];if(null==frameInfo){frameInfo=Ext.fly(this.getStyleProxy(cls),'frame-style-el');if(frameInfo=frameInfo.getStyle('font-family')){frameInfo=frameInfo.split('-');var frameTop=parseInt(frameInfo[1],10);var frameRight=parseInt(frameInfo[2],
10);var frameBottom=parseInt(frameInfo[3],10);var frameLeft=parseInt(frameInfo[4],10);var borderTopWidth=parseInt(frameInfo[5],10);var borderRightWidth=parseInt(frameInfo[6],10);var borderBottomWidth=parseInt(frameInfo[7],10);var borderLeftWidth=parseInt(frameInfo[8],10);var paddingTop=parseInt(frameInfo[9],10);var paddingRight=parseInt(frameInfo[10],10);var paddingBottom=parseInt(frameInfo[11],10);var paddingLeft=parseInt(frameInfo[12],10);frameInfo={table:'t'===frameInfo[0].charAt(0),vertical:'v'===
frameInfo[0].charAt(1),top:frameTop,right:frameRight,bottom:frameBottom,left:frameLeft,width:frameLeft+frameRight,height:frameTop+frameBottom,border:{top:borderTopWidth,right:borderRightWidth,bottom:borderBottomWidth,left:borderLeftWidth,width:borderLeftWidth+borderRightWidth,height:borderTopWidth+borderBottomWidth},padding:{top:paddingTop,right:paddingRight,bottom:paddingBottom,left:paddingLeft,width:paddingLeft+paddingRight,height:paddingTop+paddingBottom}}}else frameInfo=!1;frameInfoCache[cls]=
frameInfo}this.frame=!!frameInfo;return this.frameSize=frameInfo},getFramingInfoCls:function(){return this.baseCls+'-'+this.ui},getStyleProxy:function(cls){var result=this.styleProxyEl||(Ext.Component.prototype.styleProxyEl=Ext.getBody().createChild({role:'presentation',style:{position:'absolute',top:'-10000px'}},null,!0));result.className=cls;return result},getFrameTpl:function(table){return this.lookupTpl(table?'frameTableTpl':'frameTpl')},initContainer:function(container){!container&&this.el&&
(container=this.el.dom.parentNode,this.allowDomMove=!1);return this.container=container.dom?container:Ext.get(container)},initOverflow:function(){var overflowStyle=this.getOverflowStyle(),scrollFlags=this.scrollFlags,overflowEl=this.getOverflowEl();(scrollFlags.y||scrollFlags.x)&&overflowEl&&overflowEl.isElement&&(this.overflowInited=!0,overflowEl.setStyle(overflowStyle))},initFramingTpl:function(table){(table=this.getFrameTpl(table))&&!table.applyRenderTpl&&this.setupFramingTpl(table);return table},
initRenderTpl:function(){var tpl=this.lookupTpl('renderTpl');tpl&&!tpl.renderContent&&this.setupRenderTpl(tpl);return tpl},setupFramingTpl:function(frameTpl){frameTpl.applyRenderTpl=this.doApplyRenderTpl;frameTpl.renderTabGuard=this.doRenderFramingTabGuard},setupRenderTpl:function(renderTpl){renderTpl.renderBody=renderTpl.renderContent=this.doRenderContent},updateFrame:function(){if(!Ext.supports.CSS3BorderRadius&&this.frame){var dom=this.el.dom,frameTable=this.frameTable,oldFrameBody=this.frameBody,
oldFrameBodyDom=oldFrameBody.dom,frameInfo=this.getFrameInfo();var div=document.createElement('div');var first=this.getFrameRenderData();first.hasTabGuard=!1;this.getFrameTpl(frameInfo.table).insertFirst(div,first);frameInfo=div.querySelectorAll('[data-ref]');var newBody=div.querySelector('[data-ref\x3d"frameBody"]');for(first=oldFrameBodyDom;first.parentNode!==dom;)first=first.parentNode;for(;div.firstChild;)dom.insertBefore(div.firstChild,first);newBody.parentNode.replaceChild(oldFrameBodyDom,newBody);
oldFrameBodyDom.className=newBody.className;oldFrameBody.setSize();dom=this.getChildEls();frameTable&&(frameTable.destroy(),this.frameTable=null);for(childElName in dom)dom[childElName].frame&&(frameTable=this[childElName])&&frameTable!==oldFrameBody&&(frameTable.destroy(),this[childElName]=null);for(frameTable=frameInfo.length;frameTable--;){var childElName=(oldFrameBody=frameInfo[frameTable]).getAttribute('data-ref');'frameBody'!==childElName&&(this[childElName]=new Ext.dom.Element(oldFrameBody))}}},
frameInfoCache:{}}},0,0,0,0,0,0,[Ext.util,'Renderable'],0);
Ext.cmd.derive('Ext.state.Provider',Ext.Base,{prefix:'ext-',constructor:function(config){Ext.apply(this,config);this.state={};this.mixins.observable.constructor.call(this)},get:function(name,defaultValue){name=this.state[name];return void 0===name?defaultValue:name},clear:function(name){delete this.state[name];this.fireEvent('statechange',this,name,null)},set:function(name,value){this.state[name]=value;this.fireEvent('statechange',this,name,value)},decodeValue:function(value){value=/^(a|n|d|b|s|o|e)\:(.*)$/.exec(unescape(value));
var v;if(value&&value[1]){var all=value[1];value=value[2];switch(all){case 'e':return null;case 'n':return parseFloat(value);case 'd':return new Date(Date.parse(value));case 'b':return'1'===value;case 'a':all=[];if(value){var values=value.split('^');var vLen=values.length;for(v=0;v<vLen;v++)value=values[v],all.push(this.decodeValue(value))}return all;case 'o':all={};if(value)for(values=value.split('^'),vLen=values.length,v=0;v<vLen;v++)value=values[v],value=value.split('\x3d'),all[value[0]]=this.decodeValue(value[1]);
return all;default:return value}}},encodeValue:function(value){var flat='',i=0,len;if(null==value)return'e:1';if('number'===typeof value)value='n:'+value;else if('boolean'===typeof value)value='b:'+(value?'1':'0');else if(Ext.isDate(value))value='d:'+value.toUTCString();else if(Ext.isArray(value)){for(len=value.length;i<len;i++)flat+=this.encodeValue(value[i]),i!==len-1&&(flat+='^');value='a:'+flat}else if('object'===typeof value){for(len in value)'function'!==typeof value[len]&&void 0!==value[len]&&
(flat+=len+'\x3d'+this.encodeValue(value[len])+'^');value='o:'+flat.substring(0,flat.length-1)}else value='s:'+value;return escape(value)}},1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.state,'Provider'],0);
Ext.cmd.derive('Ext.state.Manager',Ext.Base,{singleton:!0,constructor:function(){this.provider=new Ext.state.Provider},setProvider:function(stateProvider){this.provider=stateProvider},get:function(key,defaultValue){return this.provider.get(key,defaultValue)},set:function(key,value){this.provider.set(key,value)},clear:function(key){this.provider.clear(key)},getProvider:function(){return this.provider}},1,0,0,0,0,0,[Ext.state,'Manager'],0);
Ext.cmd.derive('Ext.state.Stateful',Ext.Base,{mixinId:'state',config:{stateful:null},saveDelay:100,constructor:function(){this.stateEvents||(this.stateEvents=[]);this.stateful&&(this.addStateEvents(this.stateEvents),this.initState())},addStateEvents:function(events){var i,event;if(this.stateful&&this.getStateId()){var eventArray='string'===typeof events?arguments:events;var stateEventsByName=this.stateEventsByName||(this.stateEventsByName={});for(i=eventArray.length;i--;)(event=eventArray[i])&&!stateEventsByName[event]&&
(stateEventsByName[event]=1,this.on(event,this.onStateChange,this))}},onStateChange:function(){var delay=this.saveDelay;if(this.stateful)if(delay){if(!this.stateTask){var statics=Ext.state.Stateful;statics=statics.runner||(statics.runner=new Ext.util.TaskRunner);this.stateTask=statics.newTask({run:this.saveState,scope:this,interval:delay,repeat:1,fireIdleEvent:!1})}this.stateTask.start()}else this.saveState()},saveState:function(){var stateful=this.getStateful(),id=stateful&&this.getStateId(),hasListeners=
this.hasListeners,pluginState;if(id){var state=this.getState()||{};if(Ext.isObject(stateful)){var configs=this.self.getConfigurator();configs=configs.configs;for(i in stateful)if(stateful[i]){if(!(i in state)){var cfg=configs[i];state[i]=cfg?this[cfg.get]():this[i]}}else delete state[i]}stateful=this.getPlugins()||[];var i=0;for(configs=stateful.length;i<configs;i++)(cfg=stateful[i])&&cfg.getState&&(pluginState=cfg.getState(state))&&!state[cfg.ptype]&&(state[cfg.ptype]=pluginState);hasListeners.beforestatesave&&
!1===this.fireEvent('beforestatesave',this,state)||(Ext.state.Manager.set(id,state),hasListeners.statesave&&this.fireEvent('statesave',this,state))}},getState:function(){return null},applyState:function(state){state&&Ext.apply(this,state)},getStateId:function(){return this.stateId||(this.autoGenId?null:this.id)},initState:function(){var id=this.stateful&&this.getStateId(),hasListeners=this.hasListeners,combinedState,len,plugin;if(id&&(combinedState=Ext.state.Manager.get(id))&&(id=Ext.apply({},combinedState),
!hasListeners.beforestaterestore||!1!==this.fireEvent('beforestaterestore',this,combinedState))){var plugins=this.getPlugins()||[];var i=0;for(len=plugins.length;i<len;i++)if(plugin=plugins[i]){var pluginType=plugin.ptype;plugin.applyState&&plugin.applyState(id[pluginType],combinedState);delete id[pluginType]}this.applyState(id);hasListeners.staterestore&&this.fireEvent('staterestore',this,combinedState)}},savePropToState:function(propName,state,stateName){var value=this[propName],config=this.initialConfig;
return!this.hasOwnProperty(propName)||config&&config[propName]===value?!1:(state&&(state[stateName||propName]=value),!0)},savePropsToState:function(propNames,state){var n;if('string'===typeof propNames)this.savePropToState(propNames,state);else{var i=0;for(n=propNames.length;i<n;++i)this.savePropToState(propNames[i],state)}return state},destroy:function(){var task=this.stateTask;task&&(task.destroy(),this.stateTask=null)}},1,0,0,0,0,0,[Ext.state,'Stateful'],0);
Ext.cmd.derive('Ext.util.Focusable',Ext.Base,{mixinId:'focusable',hasFocus:!1,focusable:!1,focusCls:'focus',initFocusable:Ext.emptyFn,initFocusableEvents:function(){this.initFocusableElement()},getFocusClsEl:function(){return this.getFocusEl()},getFocusEl:function(){return this.element||this.el},destroyFocusable:function(){Ext.destroy(this.focusListeners);this.focusEl=this.ariaEl=this.focusListeners=this.focusEnterEvent=this.focusTask=null},enableFocusable:Ext.emptyFn,disableFocusable:function(){var focusTarget,
focusCls=this.focusCls;this.hasFocus&&(focusTarget=this.findFocusTarget())&&focusTarget.focus();focusTarget=this.getFocusClsEl();focusCls&&focusTarget&&focusTarget.removeCls(this.removeClsWithUI(focusCls,!0))},isFocusable:function(deep){var focusEl;return this.focusable||this.isContainer&&deep?(focusEl=this.getFocusEl())&&this.canFocus()?focusEl.isFocusable(deep):!1:!1},canFocus:function(skipVisibility,includeFocusTarget){return(this.isContainer||this.focusable)&&this.rendered&&!this.destroying&&
!this.destroyed&&!this.disabled&&(skipVisibility||this.isVisible(!0))||includeFocusTarget&&!!this.findFocusTarget()},focus:function(selectText,delay,callback,scope){var focusTarget;if((this.focusable||this.isContainer)&&!this.destroyed&&!this.destroying){if(delay)return this.getFocusTask().delay(Ext.isNumber(delay)?delay:10,this.focus,this,[selectText,!1,callback,scope]),this;this.cancelFocus();if(this.canFocus()){if(focusTarget=this.getFocusEl()){if(focusTarget.isComponent)return focusTarget.focus(selectText,
delay,callback,scope);if(delay=focusTarget.dom){if(this.floating)var containerScrollTop=this.container.dom.scrollTop;focusTarget.focus();selectText&&(Ext.isArray(selectText)?this.selectText&&this.selectText.apply(this,selectText):delay.select?delay.select():this.selectText&&this.selectText());Ext.callback(callback,scope)}this.floating&&void 0!==containerScrollTop&&(this.container.dom.scrollTop=containerScrollTop)}}else if(focusTarget=this.findFocusTarget())return focusTarget.focus(selectText,delay,
callback,scope);return this}},cancelFocus:function(){var task=this.getFocusTask();task&&task.cancel()},beforeBlur:Ext.emptyFn,onBlur:function(e){var container=this.focusableContainer,focusCls=this.focusCls;if(this.focusable&&!this.destroying){this.hasFocus=!1;this.beforeBlur(e);container&&container.beforeFocusableChildBlur(this,e);var focusClsEl=this.getFocusClsEl();focusCls&&focusClsEl&&focusClsEl.removeCls(this.removeClsWithUI(focusCls,!0));this.fireEvent('blur',this,e);this.postBlur(e);container&&
container.afterFocusableChildBlur(this,e)}},postBlur:Ext.emptyFn,beforeFocus:Ext.emptyFn,onFocus:function(e){var container=this.focusableContainer,focusCls=this.focusCls;if(this.focusable&&this.canFocus()){this.beforeFocus(e);container&&container.beforeFocusableChildFocus(this,e);var focusClsEl=this.getFocusClsEl();focusCls&&focusClsEl&&focusClsEl.addCls(this.addClsWithUI(focusCls,!0));this.hasFocus||(this.hasFocus=!0,this.fireEvent('focus',this,e));this.postFocus(e);container&&container.afterFocusableChildFocus(this,
e)}},postFocus:Ext.emptyFn,getTabIndex:function(){var el;if(this.focusable){if(el=this.rendered&&this.getFocusEl()){if(el.isComponent)el=el.getTabIndex();else if(el.isElement)el=el.getAttribute('tabIndex');else return;this.tabIndex=el}else el=this.tabIndex;return el-0}},setTabIndex:function(newTabIndex,focusEl){this.focusable&&(this.tabIndex=newTabIndex,this.rendered&&(focusEl=focusEl||this.getFocusEl())&&(focusEl.isComponent?focusEl.setTabIndex(newTabIndex):focusEl.isElement&&focusEl.set({tabIndex:newTabIndex})))},
onFocusEnter:function(e){this.destroying||this.destroyed||(this.floating&&this!==this.zIndexManager.getActive()&&this.toFront(!0),this.focusEnterEvent=e,this.containsFocus=!0,this.fireEvent('focusenter',this,e))},onFocusLeave:function(e){this.destroying||this.destroyed||(this.focusEnterEvent=null,this.containsFocus=!1,this.fireEvent('focusleave',this,e))},privates:{revertFocus:function(){var focusEvent=this.focusEnterEvent;if(!this.preventRefocus&&this.el.contains(Ext.Element.getActiveElement())&&
focusEvent){var focusTarget=focusEvent&&focusEvent.relatedTarget;Ext.getDoc().contains(focusTarget)&&Ext.fly(focusTarget).isFocusable()?focusTarget.focus():focusEvent.fromComponent&&focusEvent.fromComponent.focus&&focusEvent.fromComponent.focus()}},findFocusTarget:function(){var owner;for(owner=this.up(':visible(true):not([disabled]):not([destroying])');owner;owner=owner.up(':visible(true):not([disabled]):not([destroying])')){var focusTargets=Ext.ComponentQuery.query(':canfocus()',owner);if(focusTargets.length)return owner=
Ext.Array.indexOf(focusTargets,Ext.ComponentManager.getActiveComponent()),focusTargets[owner+1]||focusTargets[owner-1]||focusTargets[0];if(owner.isFocusable&&owner.isFocusable())return owner}},initFocusableElement:function(){var tabIndex=this.tabIndex,focusEl=this.getFocusEl();focusEl&&!focusEl.isComponent&&(this.focusEl=focusEl,null!=tabIndex&&this.canFocus(!0)&&this.setTabIndex(tabIndex,focusEl),focusEl.dom.setAttribute('data-componentid',this.id))},getFocusTask:function(){this.focusTask||(this.focusTask=
Ext.focusTask);return this.focusTask},handleFocusEvent:function(e){if(this.isFocusing(e)){var event=new Ext.event.Event(e.event);event.type='focus';event.relatedTarget=e.fromElement;event.target=e.toElement;this.onFocus(event)}},handleBlurEvent:function(e){if(this.isBlurring(e)){var event=new Ext.event.Event(e.event);event.type='blur';event.target=e.fromElement;event.relatedTarget=e.toElement;this.onBlur(event)}},isFocusing:function(e){var focusEl;return this.focusable&&(focusEl=this.getFocusEl())?
focusEl.isComponent?focusEl.isFocusing(e):e.toElement===focusEl.dom&&e.fromElement!==e.toElement:!1},isBlurring:function(e){var focusEl;return this.focusable&&(focusEl=this.getFocusEl())?focusEl.isComponent?focusEl.isBlurring(e):e.fromElement===focusEl.dom&&e.fromElement!==e.toElement:!1},blur:function(){var focusEl;if(this.focusable&&this.canFocus()){if(focusEl=this.getFocusEl())this.blurring=!0,focusEl.blur(),delete this.blurring;return this}},disableTabbing:function(){var el=this.el,focusEl;el&&
el.saveTabbableState();(focusEl=this.getFocusEl())&&(focusEl.isComponent?focusEl.disableTabbing():focusEl.isElement&&el&&!el.contains(focusEl)&&focusEl.saveTabbableState())},enableTabbing:function(){var el=this.el,focusEl;(focusEl=this.getFocusEl())&&(focusEl.isComponent?focusEl.enableTabbing():focusEl.isElement&&el&&!el.contains(focusEl)&&focusEl.restoreTabbableState());el&&el.restoreTabbableState()},updateMaskState:function(state,mask){var ariaEl=this.ariaEl.dom;if(state){if(this.disableTabbing(),
this.setMasked(!0),ariaEl){ariaEl.setAttribute('aria-busy','true');if(state=ariaEl.getAttribute('aria-describedby'))this._savedAriaDescribedBy=state;ariaEl.setAttribute('aria-describedby',mask.ariaEl.id)}}else this.enableTabbing(),this.setMasked(!1),ariaEl&&(ariaEl.removeAttribute('aria-busy'),state=ariaEl.getAttribute('aria-describedby'),ariaEl.removeAttribute('aria-describedby'),state===mask.ariaEl.id&&this._savedAriaDescribedBy&&(ariaEl.setAttribute('aria-describedby',this._savedAriaDescribedBy),
delete this._savedAriaDescribedBy))}}},0,0,0,0,0,0,[Ext.util,'Focusable'],function(){Ext.focusTask||(Ext.focusTask=new Ext.util.DelayedTask)});
Ext.cmd.derive('Ext.mixin.Accessible',Ext.Mixin,{mixinConfig:{id:'accessible'},config:{ariaAttributes:{$value:null,lazy:!0}},privates:{getAriaLabelEl:function(selector){var ids=[],refHolder,len,cmp;if(selector){if(Ext.isFunction(selector))return selector.call(this);Ext.isArray(selector)||(selector=[selector]);if(refHolder=this.lookupReferenceHolder()){var i=0;for(len=selector.length;i<len;i++)(cmp=refHolder.lookupReference(selector[i]))&&ids.push(cmp.ariaEl.id)}}return ids.length?ids.join(' '):null}}},
0,0,0,0,0,0,[Ext.mixin,'Accessible'],0);
Ext.cmd.derive('Ext.mixin.Keyboard',Ext.Mixin,function(Keyboard){return{mixinConfig:{id:'keyboard'},config:{keyMap:{$value:null,cached:!0,merge:function(value,baseValue,cls,mixin){if(null===value)return value;baseValue=baseValue?Ext.Object.chain(baseValue):{};var key,v;for(key in value)if('scope'!==key&&(cls=key.toUpperCase(),!mixin||void 0===baseValue[cls])){if(v=value[key]){v='string'===typeof v||'function'===typeof v?{handler:v}:Ext.apply({handler:v.fn},v);var vs=v.scope||value.scope||'self';v.scope=
'controller'===vs?'self.controller':vs}baseValue[cls]=v}return baseValue}},keyMapEnabled:null},keyMapTarget:'el',applyKeyMap:function(keyMap,existingKeyMap){var entry,key,mapping;if(keyMap){existingKeyMap&&this.isConfiguring&&(existingKeyMap=Ext.apply({},existingKeyMap));var defaultScope=keyMap.scope||'controller';for(key in keyMap)if('scope'!==key){if(mapping=keyMap[key])'string'===typeof mapping||'function'===typeof mapping?mapping={handler:mapping,scope:defaultScope}:mapping&&(mapping=Ext.apply({handler:mapping.fn,
scope:defaultScope},mapping)),existingKeyMap=existingKeyMap||{};else if(!existingKeyMap)continue;Keyboard.parseEntry(key,entry=mapping||{})&&(existingKeyMap[entry.name]=mapping)}}else existingKeyMap=null;this._keyMapReady&&this.setKeyMapListener(existingKeyMap&&this.getKeyMapEnabled());return existingKeyMap||null},initKeyMap:function(){var enabled=this.getKeyMapEnabled();this._keyMapReady=!0;null===enabled?this.setKeyMapEnabled(!0):this.setKeyMapListener(enabled&&this.getKeyMap())},updateKeyMapEnabled:function(enabled){this.setKeyMapListener(enabled&&
this._keyMapReady&&this.getKeyMap())},privates:{_keyMapReady:!1,callKeyMapEntry:function(entry,e){return entry&&Ext.callback(entry.handler,entry.scope,[e,this],0,this)},findKeyMapEntry:function(e){var keyMap=this.getKeyMap(),key,entry;if(keyMap)for(key in keyMap)if(Keyboard.matchEntry(key,entry=keyMap[key],e))return entry;return null},onKeyMapEvent:function(e){var entry=this.getKeyMapEnabled()?this.findKeyMapEntry(e):null;return this.callKeyMapEntry(entry,e)},setKeyMapListener:function(enabled){var listener=
this._keyMapListener;listener&&(listener.destroy(),listener=null);enabled&&(enabled=this[this.keyMapTarget],'function'===typeof enabled&&(enabled=enabled.call(this)),listener=enabled.on({destroyable:!0,scope:this,keydown:'onKeyMapEvent',keypress:'onKeyMapEvent'}));this._keyMapListener=listener||null},statics:{_charCodeRe:/^#([\d]+)$/,_hyphenRe:/^[a-z]+\-/i,_keyMapEvents:{charCode:'keypress',keyCode:'keydown'},matchEntry:function(key,entry,e){key=e.browserEvent;var code;if(e.type!==entry.event)return!1;
if(!(code=entry.charCode)){if(entry.keyCode!==e.keyCode||!entry.shiftKey!==!key.shiftKey)return!1}else if(e.getCharCode()!==code)return!1;return!entry.ctrlKey===!key.ctrlKey&&!entry.altKey===!key.altKey&&!entry.metaKey===!key.metaKey},parseEntry:function(key,entry){key=key.toUpperCase();var Event=Ext.event.Event,keyFlags=Event.keyFlags,delim=this._hyphenRe.test(key)?'-':'+',keySpec=key===delim?[delim]:key.split(delim),n=keySpec.length-1,name=key=keySpec[n];delim='keyCode';var i,match;for(i=0;i<n;i++)entry[keyFlags[keySpec[i]]]=
!0;n&&(name=entry.ctrlKey?'CTRL+':'',name+=entry.altKey?'ALT+':'',name+=entry.metaKey?'META+':'',name+=entry.shiftKey?'SHIFT+':'',name+=key);entry.name=name;isNaN(Event=Event[key])&&((match=this._charCodeRe.exec(key))?Event=+match[1]:1===key.length&&(Event=key.charCodeAt(0)),Event?delim='charCode':Event=+key);entry.event=entry.event||this._keyMapEvents[delim];return!isNaN(Event)&&(entry[delim]=Event)}}}}},0,0,0,0,0,0,[Ext.mixin,'Keyboard'],0);
Ext.cmd.derive('Ext.Component',Ext.Base,{alternateClassName:'Ext.AbstractComponent',statics:{AUTO_ID:1E3,pendingLayouts:null,layoutSuspendCount:0,DIRECTION_TOP:'top',DIRECTION_RIGHT:'right',DIRECTION_BOTTOM:'bottom',DIRECTION_LEFT:'left',VERTICAL_DIRECTION_Re:/^(?:top|bottom)$/,INVALID_ID_CHARS_Re:/[\.,\s]/g,ariaHighContrastModeCls:'x-aria-highcontrast',cancelLayout:function(comp,isDestroying){var context=this.runningLayoutContext||this.pendingLayouts;context&&context.cancelComponent(comp,!1,isDestroying)},
fromElement:function(node,limit,selector){return Ext.ComponentManager.fromElement(node,limit,selector)},flushLayouts:function(){var me=this,context=me.pendingLayouts;context&&context.invalidQueue.length&&(me.pendingLayouts=null,me.runningLayoutContext=context,Ext.override(context,{runComplete:function(){me.runningLayoutContext=null;var Scroller=Ext.scroll.Scroller,GlobalEvents=Ext.GlobalEvents;Scroller.viewport&&Scroller.viewport.restoreState();Scroller=this.callParent();GlobalEvents.hasListeners.afterlayout&&
GlobalEvents.fireEvent('afterlayout');return Scroller}}),context.run())},resumeLayouts:function(flush){this.layoutSuspendCount&&!--this.layoutSuspendCount&&(flush&&this.flushLayouts(),Ext.GlobalEvents.hasListeners.resumelayouts&&Ext.GlobalEvents.fireEvent('resumelayouts'))},suspendLayouts:function(){++this.layoutSuspendCount},updateLayout:function(comp,defer){var running=this.runningLayoutContext;running?running.queueInvalidate(comp):(running=this.pendingLayouts||(this.pendingLayouts=new Ext.layout.Context),
running.queueInvalidate(comp),defer||this.layoutSuspendCount||comp.isLayoutSuspended()||this.flushLayouts())}},$configPrefixed:!1,$configStrict:!1,clearPropertiesOnDestroy:'async',manageLayoutScroll:!0,config:{data:null,maxHeight:null,maxWidth:null,minHeight:null,minWidth:null,scrollable:null},renderConfig:{touchAction:null},defaultBindProperty:'html',alignTarget:null,autoRender:!1,autoShow:!1,baseCls:'x-component',childEls:{frameTable:{frame:!0},frameTL:{frame:'tl'},frameTC:{frame:'tc'},frameTR:{frame:'tr'},
frameML:{frame:'ml'},frameBody:{frame:'mc'},frameMR:{frame:'mr'},frameBL:{frame:'bl'},frameBC:{frame:'bc'},frameBR:{frame:'br'}},componentLayout:'autocomponent',defaultAlign:'c-c',disabled:!1,disabledRe:/^(?:button|input|select|textarea|optgroup|option|fieldset)$/i,nonMaskableRe:function(){var re='input select textarea optgroup option table'.split(' ');!Ext.isIE9m||Ext.isIE9&&!Ext.isIEQuirks||re.push('p');return new RegExp('^(?:'+re.join('|')+')$','i')}(),disabledCls:'x-item-disabled',draggable:!1,
floating:!1,hidden:!1,hideMode:'display',maskElement:null,renderTpl:'{%this.renderContent(out,values)%}',resizeHandles:'all',shrinkWrap:2,toFrontOnShow:!0,synthetic:!1,tplWriteMode:'overwrite',ui:'default',uiCls:[],userCls:null,weight:null,allowDomMove:!0,autoGenId:!1,borderBoxCls:'x-border-box',componentLayoutCounter:0,contentPaddingProperty:'padding',deferLayouts:!1,frameSize:null,horizontalPosProp:'left',isComponent:!0,_isLayoutRoot:!1,layoutSuspendCount:0,liquidLayout:!1,maskOnDisable:!0,rendered:!1,
rootCls:'x-body',scrollerCls:'x-scroll-scroller',_scrollFlags:{auto:{auto:{overflowX:'auto',overflowY:'auto',x:!0,y:!0,both:!0},'false':{overflowX:'auto',overflowY:'hidden',x:!0,y:!1,both:!1},scroll:{overflowX:'auto',overflowY:'scroll',x:!0,y:!0,both:!0}},'false':{auto:{overflowX:'hidden',overflowY:'auto',x:!1,y:!0,both:!1},'false':{overflowX:'hidden',overflowY:'hidden',x:!1,y:!1,both:!1},scroll:{overflowX:'hidden',overflowY:'scroll',x:!1,y:!0,both:!1}},scroll:{auto:{overflowX:'scroll',overflowY:'auto',
x:!0,y:!0,both:!0},'false':{overflowX:'scroll',overflowY:'hidden',x:!0,y:!1,both:!1},scroll:{overflowX:'scroll',overflowY:'scroll',x:!0,y:!0,both:!0}},none:{overflowX:'',overflowY:'',x:!1,y:!1,both:!1}},_scrollableCfg:{x:{x:!0,y:!1},y:{x:!1,y:!0},horizontal:{x:!0,y:!1},vertical:{x:!1,y:!0},both:{x:!0,y:!0},'true':{x:!0,y:!0}},validIdRe:Ext.validIdRe,constructor:function(config){config=config||{};if(config.initialConfig)config.isAction&&(this.baseAction=config),config=config.initialConfig;else if(config.tagName||
config.dom||Ext.isString(config))config={applyTo:config,id:config.id||config};this.initialConfig=config;this.getId();this.protoEl=new Ext.util.ProtoElement;this.initConfig(config);if(null==this.scrollable){if(config=this.autoScroll)var i=!!config;else{config=this.overflowX;var overflowY=this.overflowY;if(config||overflowY)i={x:config&&'hidden'!==config?config:!1,y:overflowY&&'hidden'!==overflowY?overflowY:!1}}i&&this.setScrollable(i)}if(i=this.xhooks)delete this.xhooks,Ext.override(this,i);this.mixins.elementCt.constructor.call(this);
this.setupProtoEl();this.cls&&(this.initialCls=this.cls,this.protoEl.addCls(this.cls));this.style&&(this.initialStyle=this.style,this.protoEl.setStyle(this.style));this.renderData=this.renderData||{};this.initComponent();this.preventRegister||Ext.ComponentManager.register(this);this.mixins.state.constructor.call(this);this.addStateEvents('resize');(i=this.getController())&&i.init(this);if(this.plugins)for(i=0,config=this.plugins.length;i<config;i++)this.plugins[i]=this.initPlugin(this.plugins[i]);
this.loader=this.getLoader();this.disabled&&(this.disabled=!1,this.disable(!0));this.renderTo&&this.render(this.renderTo);this.autoShow&&!this.$initParent&&this.show();this.baseAction&&this.baseAction.addComponent(this)},beforeInitConfig:function(){this.mixins.observable.constructor.call(this)},addCls:function(cls){var el=this.rendered?this.el:this.protoEl;el.addCls.apply(el,arguments);return this},addClsWithUI:function(classes,skip){var clsArray=[],i=0,uiCls=this.uiCls=Ext.Array.clone(this.uiCls),
activeUI=this.activeUI,length,cls;'string'===typeof classes&&(classes=0>classes.indexOf(' ')?[classes]:Ext.String.splitWords(classes));for(length=classes.length;i<length;i++)(cls=classes[i])&&!this.hasUICls(cls)&&(uiCls.push(cls),activeUI&&(clsArray=clsArray.concat(this.addUIClsToElement(cls))));!0!==skip&&activeUI&&this.addCls(clsArray);return clsArray},afterComponentLayout:function(width,height,oldWidth,oldHeight){var scroller=this.scrollable;1===++this.componentLayoutCounter?this.afterFirstLayout(width,
height):this.manageLayoutScroll&&scroller&&scroller.restoreState();if(width!==oldWidth||height!==oldHeight)this.onResize(width,height,oldWidth,oldHeight);if(this.floating)this.onAfterFloatLayout()},addPlugin:function(plugin){plugin=this.constructPlugin(plugin);this.plugins?this.plugins.push(plugin):this.plugins=[plugin];this.pluginsInitialized&&this.initPlugin(plugin);return plugin},addPropertyToState:function(state,propName,value){var len=arguments.length;if(3===len||this.hasOwnProperty(propName))3>
len&&(value=this[propName]),value!==this.initialConfig[propName]&&((state||(state={}))[propName]=value);return state},addUIClsToElement:function(uiCls){var baseClsUI=this.baseCls+'-'+this.ui+'-'+uiCls;uiCls=['x-'+uiCls,this.baseCls+'-'+uiCls,baseClsUI];var childElName,el,suffix;if(this.rendered&&this.frame&&!Ext.supports.CSS3BorderRadius){baseClsUI+='-';var childEls=this.getChildEls();for(childElName in childEls)(suffix=childEls[childElName].frame)&&!0!==suffix&&(el=this[childElName])&&el.addCls(baseClsUI+
suffix)}return uiCls},removeUIClsFromElement:function(uiCls){var baseClsUI=this.baseCls+'-'+this.ui+'-'+uiCls;uiCls=['x-'+uiCls,this.baseCls+'-'+uiCls,baseClsUI];var childElName,el,suffix;if(this.rendered&&this.frame&&!Ext.supports.CSS3BorderRadius){baseClsUI+='-';var childEls=this.getChildEls();for(childElName in childEls)(suffix=childEls[childElName].frame)&&!0!==suffix&&(el=this[childElName])&&el.removeCls(baseClsUI+suffix)}return uiCls},adjustPosition:function(x,y){if(this.isContainedFloater()){var floatParentBox=
this.floatParent.getTargetEl().getViewRegion();x+=floatParentBox.left;y+=floatParentBox.top}return{x:x,y:y}},afterHide:function(callback,scope){var container=this.focusableContainer;delete this.getInherited().topmostFocusEvent;this.hiddenByLayout=null;this.ownerLayout&&this.updateLayout({isRoot:!1});if(container)container.onFocusableChildHide(this);this.fireHierarchyEvent('hide');this.fireEvent('hide',this);Ext.callback(callback,scope||this)},afterSetPosition:function(x,y){this.onPosition(x,y);this.hasListeners.move&&
this.fireEvent('move',this,x,y)},afterShow:function(animateTarget,callback,scope){var me=this,myEl=me.el;animateTarget=me.getAnimateTarget(animateTarget);me.ghost||(animateTarget=null);if(animateTarget){myEl={x:myEl.getX(),y:myEl.getY(),width:myEl.dom.offsetWidth,height:myEl.dom.offsetHeight};animateTarget={x:animateTarget.getX(),y:animateTarget.getY(),width:animateTarget.dom.offsetWidth,height:animateTarget.dom.offsetHeight};me.fireHierarchyEvent('show');var ghostPanel=me.ghost();ghostPanel.el.stopAnimation();
ghostPanel.setX(-1E4);me.ghostBox=myEl;ghostPanel.el.animate({from:animateTarget,to:myEl,listeners:{afteranimate:function(){me.destroying||(ghostPanel.componentLayout.lastComponentSize=null,me.unghost(),me.ghostBox=null,me.onShowComplete(callback,scope))}}})}else me.onShowComplete(callback,scope),me.fireHierarchyEvent('show')},animate:function(animObj){var me=this,hasToWidth,hasToHeight,toHeight,toWidth,curWidth,curHeight;animObj=animObj||{};var to=animObj.to||{};if(Ext.fx.Manager.hasFxBlock(me.id))return me;
(hasToWidth=Ext.isDefined(to.width))&&(toWidth=Ext.Number.constrain(to.width,me.minWidth,me.maxWidth));(hasToHeight=Ext.isDefined(to.height))&&(toHeight=Ext.Number.constrain(to.height,me.minHeight,me.maxHeight));if(!animObj.dynamic&&(hasToWidth||hasToHeight)){var w=curWidth=(animObj.from?animObj.from.width:void 0)||me.getWidth();var h=curHeight=(animObj.from?animObj.from.height:void 0)||me.getHeight();var clearWidth=!1;hasToHeight&&toHeight>curHeight&&(h=toHeight,clearWidth=!0);hasToWidth&&toWidth>
curWidth&&(w=toWidth,clearWidth=!0);if(hasToHeight||hasToWidth){var oldOverflow=me.el.getStyle('overflow');'hidden'!==oldOverflow&&me.el.setStyle('overflow','hidden')}if(clearWidth){clearWidth=!Ext.isNumber(me.width);var clearHeight=!Ext.isNumber(me.height);me.setSize(w,h);me.el.setSize(curWidth,curHeight);clearWidth&&delete me.width;clearHeight&&delete me.height}hasToWidth&&(to.width=toWidth);hasToHeight&&(to.height=toHeight)}var wasConstrained=me.constrain;var wasConstrainedHeader=me.constrainHeader;
if(wasConstrained||wasConstrainedHeader){me.constrain=me.constrainHeader=!1;var passedCallback=animObj.callback;animObj.callback=function(){me.constrain=wasConstrained;me.constrainHeader=wasConstrainedHeader;passedCallback&&passedCallback.call(animObj.scope||me,arguments);'hidden'!==oldOverflow&&me.el.setStyle('overflow',oldOverflow)}}return me.mixins.animate.animate.apply(me,arguments)},applyScrollable:function(scrollable,oldScrollable){var rendered=this.rendered;if(scrollable){if(!0===scrollable||
'string'===typeof scrollable)scrollable=this._scrollableCfg[scrollable];oldScrollable?(oldScrollable.setConfig(scrollable),scrollable=oldScrollable):(scrollable=Ext.Object.chain(scrollable),rendered&&(scrollable.element=this.getOverflowEl()),scrollable=Ext.scroll.Scroller.create(scrollable,this.scrollableType),scrollable.component=this)}else oldScrollable&&(scrollable=oldScrollable,oldScrollable.setConfig({x:!1,y:!1}));!this.rendered||this.destroying||this.destroyed||(scrollable?this.getOverflowStyle():
this.scrollFlags=this._scrollFlags.none,this.updateLayout());return scrollable},applyTouchAction:function(touchAction,oldTouchAction){null!=oldTouchAction&&(touchAction=Ext.merge({},oldTouchAction,touchAction));return touchAction},beforeDestroy:Ext.emptyFn,beforeLayout:function(){if(this.floating)this.onBeforeFloatLayout()},beforeSetPosition:function(x,y,animate){var pos=null,x0;x&&(Ext.isNumber(x0=x[0])?(animate=y,y=x[1],x=x0):void 0!==(x0=x.x)&&(animate=y,y=x.y,x=x0));if(this.constrain||this.constrainHeader)if(pos=
this.calculateConstrainedPosition(null,[x,y],!0))x=pos[0],y=pos[1];x0=void 0!==x;var hasY=void 0!==y;if(x0||hasY)this.x=x,this.y=y,x=this.adjustPosition(x,y),pos={x:x.x,y:x.y,anim:animate,hasX:x0,hasY:hasY};return pos},beforeShow:Ext.emptyFn,bubble:function(fn,scope,args){for(var p=this;p&&!1!==fn.apply(scope||p,args||[p]);)p=p.getBubbleTarget();return this},clearListeners:function(){this.mixins.observable.clearListeners.call(this);this.mixins.componentDelegation.clearDelegatedListeners.call(this)},
cloneConfig:function(overrides){overrides=overrides||{};var id=overrides.id||Ext.id();overrides=Ext.applyIf(overrides,this.initialConfig);overrides.id=id;return new (Ext.getClass(this))(overrides)},destroy:function(){this.hasListeners.beforedestroy&&!1===this.fireEvent('beforedestroy',this)||(this.isDestroying=this.destroying=!0,this.doDestroy(),this.clearListeners(),this.isDestroying=this.destroying=!1,this.callParent(),this.mixins.componentDelegation.destroyComponentDelegation.call(this),this.mixins.observable.destroyObservable.call(this,
!0))},doDestroy:function(){var container=this.focusableContainer,selectors=this.renderSelectors,selector;var ownerCt=this.floatParent||this.ownerCt;this.floating&&(delete this.floatParent,this.zIndexManager&&!this.zIndexManager.destroyed&&this.zIndexManager.unregister(this),this.floating=!0);this.removeBindings();this.beforeDestroy.$emptyFn||this.beforeDestroy();this.destroyBindable();ownerCt&&ownerCt.remove&&ownerCt.remove(this,!1);this.stopAnimation();this.rendered&&Ext.destroy(this.loadMask,this.dd,
this.resizer,this.proxy,this.proxyWrap,this.resizerComponent,this.scrollable,this.contentEl);if(container)container.onFocusableChildDestroy(this);this.focusable&&this.destroyFocusable();Ext.destroy(this.componentLayout,this.loadMask,this.floatingDescendants);if(!this.onDestroy.$emptyFn)this.onDestroy();Ext.destroy(this.plugins);this.rendered&&Ext.Component.cancelLayout(this,!0);this.componentLayout=null;this.hasListeners.destroy&&this.fireEvent('destroy',this);this.preventRegister||Ext.ComponentManager.unregister(this);
this.mixins.state.destroy.call(this);if(this.floating)this.onFloatDestroy();if(this.rendered){this.showListenerIE&&(this.showListenerIE.destroy(),this.showListenerIE=null);this.preserveElOnDestroy||this.el.destroy();this.el.component=null;this.mixins.elementCt.destroy.call(this);if(selectors)for(selector in selectors)selectors.hasOwnProperty(selector)&&(container=this[selector])&&(delete this[selector],container.destroy());this.rendered=!1}},disable:function(silent,fromParent){var container=this.focusableContainer,
inherited=this.getInherited();fromParent||(this.savedDisabled=inherited.disabled=!0);this.maskOnDisable&&(inherited.disableMask=!0);if(!this.disabled){container&&container.beforeFocusableChildDisable(this);this.addCls(this.disabledCls);if(this.rendered)this.onDisable();else this.disableOnRender=!0;this.disabled=!0;!0!==silent&&this.fireEvent('disable',this);if(container)container.onFocusableChildDisable(this)}return this},doFireEvent:function(eventName,args,bubbles){bubbles=this.mixins.observable.doFireEvent.call(this,
eventName,args,bubbles);!1===bubbles||this.destroyed||(bubbles=this.mixins.componentDelegation.doFireDelegatedEvent.call(this,eventName,args));return bubbles},enable:function(silent,fromParent){var container=this.focusableContainer,inherited=this.getInherited();fromParent||(delete this.getInherited().disabled,this.savedDisabled=!1);this.maskOnDisable&&delete inherited.disableMask;if(this.disabled&&(!fromParent||!inherited.hasOwnProperty('disabled'))){container&&container.beforeFocusableChildEnable(this);
this.disableOnRender=!1;this.removeCls(this.disabledCls);if(this.rendered)this.onEnable();this.disabled=!1;!0!==silent&&this.fireEvent('enable',this);if(container)container.onFocusableChildEnable(this)}return this},findParentBy:function(fn){var p;for(p=this.getRefOwner();p&&!fn(p,this);p=p.getRefOwner());return p||null},findParentByType:function(xtype){return Ext.isFunction(xtype)?this.findParentBy(function(p){return p.self===xtype||p.constructor===xtype}):this.up(xtype)},findPlugin:function(ptype){var i,
plugins=this.plugins,ln=plugins&&plugins.length;for(i=0;i<ln;i++)if(plugins[i].ptype===ptype)return plugins[i]},getAnimateTarget:function(target){(target=target||this.animateTarget)&&(target=target.isComponent?target.getEl():Ext.get(target));return target||null},getBubbleTarget:function(){return this.getRefOwner()},getComponentLayout:function(){this.componentLayout&&this.componentLayout.isLayout||this.setComponentLayout(Ext.layout.Layout.create(this.componentLayout,'autocomponent'));return this.componentLayout},
getEl:function(){return this.el},getHeight:function(){return this.el.getHeight()},initInheritedState:function(inheritedState){var layout=this.componentLayout;this.hidden&&(inheritedState.hidden=!0);this.collapseImmune&&(inheritedState.collapseImmune=!0);void 0!==this.modelValidation&&(inheritedState.modelValidation=this.modelValidation);this.savedDisabled&&(inheritedState.disabled=!0);this.mixins.bindable.initInheritedState.call(this,inheritedState);layout&&layout.initInheritedState&&layout.initInheritedState(inheritedState)},
getId:function(){if(!this.id&&!(this.id=this.initialConfig.id)){var xtype=(xtype=this.getXType())?xtype.replace(Ext.Component.INVALID_ID_CHARS_Re,'-'):Ext.name.toLowerCase()+'-comp';this.id=xtype+'-'+this.getAutoId()}return this.id},getItemId:function(){return this.itemId||this.id},getLoader:function(){var loader=this.loader;return loader?(loader.isLoader?loader.setTarget(this):this.loader=new Ext.ComponentLoader(Ext.apply({target:this},loader)),this.loader):null},getMaskTarget:function(){return this.maskElement?
this[this.maskElement]:null},getPlugin:function(id){var i,plugins=this.plugins,ln=plugins&&plugins.length;for(i=0;i<ln;i++){var plugin=plugins[i];if(plugin.id===id||plugin.pluginId===id)return plugin}return null},getPosition:function(local){var isContainedFloater=this.isContainedFloater();if(!0===local&&!isContainedFloater)return[this.getLocalX(),this.getLocalY()];var xy=this.getXY();!0===local&&isContainedFloater&&(local=this.floatParent.getTargetEl().getViewRegion(),xy[0]-=local.left,xy[1]-=local.top);
return xy},getScrollX:function(){var scroller=this.getScrollable();return scroller?scroller.getPosition().x:0},getScrollY:function(){var scroller=this.getScrollable();return scroller?scroller.getPosition().y:0},getSize:function(contentSize){return this.el.getSize(contentSize)},getSizeModel:function(ownerCtSizeModel){var models=Ext.layout.SizeModel,ownerContext=this.componentLayout.ownerContext,width=this.width,height=this.height,typeofWidth,typeofHeight,ownerLayout,topLevel,isFloating=this.floating||
this.floated;if(ownerContext){var widthModel=ownerContext.widthModel;var heightModel=ownerContext.heightModel}if(!widthModel||!heightModel){var hasPixelWidth='number'===(typeofWidth=typeof width);var hasPixelHeight='number'===(typeofHeight=typeof height);if(topLevel=isFloating||!(ownerLayout=this.ownerLayout)){var policy=Ext.layout.Layout.prototype.autoSizePolicy;ownerLayout=isFloating?3:this.shrinkWrap;hasPixelWidth&&(widthModel=models.configured);hasPixelHeight&&(heightModel=models.configured)}else policy=
ownerLayout.getItemSizePolicy(this,ownerCtSizeModel),ownerLayout=ownerLayout.isItemShrinkWrap(this);ownerContext&&(ownerContext.ownerSizePolicy=policy);ownerLayout=!0===ownerLayout?3:ownerLayout||0;topLevel&&ownerLayout&&(width&&'string'===typeofWidth&&(ownerLayout&=2),height&&'string'===typeofHeight&&(ownerLayout&=1));3!==ownerLayout&&(ownerCtSizeModel||(ownerCtSizeModel=this.ownerCt&&this.ownerCt.getSizeModel()),ownerCtSizeModel&&(ownerLayout|=(ownerCtSizeModel.width.shrinkWrap?1:0)|(ownerCtSizeModel.height.shrinkWrap?
2:0)));widthModel||(widthModel=policy.setsWidth?policy.readsWidth?hasPixelWidth?models.calculatedFromConfigured:ownerLayout&1?models.calculatedFromShrinkWrap:models.calculatedFromNatural:models.calculated:hasPixelWidth?models.configured:ownerLayout&1?models.shrinkWrap:models.natural);heightModel||(heightModel=policy.setsHeight?policy.readsHeight?hasPixelHeight?models.calculatedFromConfigured:ownerLayout&2?models.calculatedFromShrinkWrap:models.calculatedFromNatural:models.calculated:hasPixelHeight?
models.configured:ownerLayout&2?models.shrinkWrap:models.natural)}return widthModel.pairsByHeightOrdinal[heightModel.ordinal]},getState:function(){var state=null,sizeModel=this.getSizeModel();sizeModel.width.configured&&(state=this.addPropertyToState(state,'width'));sizeModel.height.configured&&(state=this.addPropertyToState(state,'height'));return state},getUserCls:function(){return this.userCls},setUserCls:function(cls){var was=this.userCls;cls!==was&&(this.userCls=cls,this.rendered&&this.el.replaceCls(was,
cls));return was},getWidth:function(){return this.el.getWidth()},getXType:function(){return this.self.xtype},getXTypes:function(){var self=this.self,parentPrototype;if(!self.xtypes){var xtypes=[];for(parentPrototype=this;parentPrototype;){var parentXtypes=parentPrototype.xtypes;void 0!==parentXtypes&&xtypes.unshift.apply(xtypes,parentXtypes);parentPrototype=parentPrototype.superclass}self.xtypeChain=xtypes;self.xtypes=xtypes.join('/')}return self.xtypes},hasCls:function(className){var el=this.rendered?
this.el:this.protoEl;return el.hasCls.apply(el,arguments)},hasUICls:function(cls){return Ext.Array.contains(this.uiCls||[],cls)},hide:function(animateTarget,callback,scope){var container=this.focusableContainer;this.pendingShow&&(this.pendingShow=!1);if(!this.rendered||this.isVisible())if(!this.hasListeners.beforehide||!1!==this.fireEvent('beforehide',this)||this.hierarchicallyHidden)this.getInherited().hidden=this.hidden=!0,container&&container.beforeFocusableChildHide(this),this.fireHierarchyEvent('beforehide'),
this.rendered&&this.onHide.apply(this,arguments);return this},initComponent:function(){var width=this.width,height=this.height;this.plugins&&!this.plugins.processed&&(this.plugins=this.constructPlugins());this.pluginsInitialized=!0;null==width&&null==height||this.setSize(width,height);this.listeners&&(this.on(this.listeners),this.listeners=null);this.focusable&&this.initFocusable()},initEvents:function(){var afterRenderEvents=this.afterRenderEvents,el,property,len;if(afterRenderEvents)for(property in afterRenderEvents)if((el=
this[property])&&el.on){var afterRenderEvent=afterRenderEvents[property];var index=0;for(len=afterRenderEvent.length;index<len;++index)this.mon(el,afterRenderEvent[index])}this.focusable&&this.initFocusableEvents();this.initKeyMap()},is:function(selector){return Ext.ComponentQuery.is(this,selector)},isDescendantOf:function(ancestor){var p;for(p=this.getRefOwner();p&&p!==ancestor;p=p.getRefOwner());return p||null},isAncestor:function(possibleDescendant){for(;possibleDescendant;){if(possibleDescendant.getRefOwner()===
this)return!0;possibleDescendant=possibleDescendant.getRefOwner()}},isDisabled:function(){return this.disabled},isDraggable:function(){return!!this.draggable},isDroppable:function(){return!!this.droppable},isFloating:function(){return this.floating},isHidden:function(){return this.hidden},isHierarchicallyHidden:function(){for(var child=this,hidden=!1,parent,parentInheritedState;parent=child.ownerCt||child.floatParent;child=parent){parentInheritedState=parent.getInherited();if(parentInheritedState.hidden){hidden=
!0;break}if(child.getInherited().collapseImmune){if(parent.collapsed&&!child.collapseImmune){hidden=!0;break}}else{hidden=!!parentInheritedState.collapsed;break}}return hidden},isLayoutChild:function(ownerCandidate){return!this.floating&&!!this.up(ownerCandidate)},isLayoutRoot:function(){var ownerLayout=this.ownerLayout;return!ownerLayout||this._isLayoutRoot||this.floating?!0:ownerLayout.isItemLayoutRoot(this)},isLayoutSuspended:function(){for(var comp=this;comp;){if(comp.layoutSuspendCount||comp.suspendLayout)return!0;
comp=comp.ownerLayout;if(!comp)break;comp=comp.owner}return!1},isVisible:function(deep){var hidden;this.hidden||!this.rendered||this.destroyed?hidden=!0:deep&&(hidden=this.isHierarchicallyHidden());return!hidden},isXType:function(xtype,shallow){return shallow?-1!==Ext.Array.indexOf(this.xtypes,xtype):!!this.xtypesMap[xtype]},isMasked:function(deep){return!!(this.masked||this.loadMask&&this.loadMask.isVisible()||deep&&this.getInherited().masked)},lookupTpl:function(name){return Ext.XTemplate.getTpl(this,
name)},setMasked:function(isMasked){var container=this.focusableContainer;isMasked?(this.masked=!0,this.getInherited().masked=isMasked):(this.masked=!1,delete this.getInherited().masked);if(container)container.onFocusableChildMasked(this,isMasked);return this},mask:function(msg,msgCls,elHeight){var box=this.lastBox,target=this.getMaskTarget()||this.el;box&&(elHeight=box.height);target.mask(msg,msgCls,elHeight);this.setMasked(!0)},nextNode:function(selector,includeSelf){var ownerCt=this.ownerCt,len;
if(includeSelf&&this.is(selector))return this;if(ownerCt){includeSelf=ownerCt.items.items;var i=Ext.Array.indexOf(includeSelf,this)+1;for(len=includeSelf.length;i<len;i++){var result=includeSelf[i];if(result.is(selector)||result.down&&(result=result.down(selector)))return result}return ownerCt.nextNode(selector)}return null},nextSibling:function(selector){var o=this.ownerCt,last,idx,c;if(o&&(o=o.items,idx=o.indexOf(this)+1))if(selector)for(last=o.getCount();idx<last;idx++){if((c=o.getAt(idx)).is(selector))return c}else if(idx<
o.getCount())return o.getAt(idx);return null},onAdded:function(container,pos,instanced){this.ownerCt=container;this.onInheritedAdd(this,instanced);this.hasListeners&&this.hasListeners.added&&this.fireEvent('added',this,container,pos);Ext.GlobalEvents.hasListeners.added&&this.fireHierarchyEvent('added')},onRemoved:function(destroying){var focusTarget;!this.isLayoutMoving&&this.el&&this.el.contains(Ext.Element.getActiveElement())&&(focusTarget=this.findFocusTarget())&&focusTarget.focus();Ext.GlobalEvents.hasListeners.removed&&
this.fireHierarchyEvent('removed');this.hasListeners.removed&&this.fireEvent('removed',this,this.ownerCt);destroying||this.removeBindings();this.onInheritedRemove(destroying);this.ownerCt=this.ownerLayout=null},onBoxReady:function(width,height){var label;if(this.ariaLabelledBy||this.ariaDescribedBy)this.ariaLabelledBy&&(label=this.getAriaLabelEl(this.ariaLabelledBy))&&this.ariaEl.dom.setAttribute('aria-labelledby',label),this.ariaDescribedBy&&(label=this.getAriaLabelEl(this.ariaDescribedBy))&&this.ariaEl.dom.setAttribute('aria-describedby',
label);this.resizable&&this.initResizable(this.resizable);this.draggable&&this.initDraggable();this.hasListeners.boxready&&this.fireEvent('boxready',this,width,height)},onDestroy:Ext.emptyFn,onDisable:function(){this.focusable&&this.disableFocusable();this.ariaStaticRoles[this.ariaRole]||this.ariaEl.dom.setAttribute('aria-disabled',!0);if(this.maskOnDisable&&!this.getInheritedConfig('disableMask',!0)){var dom=this.el.dom;var nodeName=dom.nodeName;this.disabledRe.test(nodeName)&&(dom.disabled=!0);
this.nonMaskableRe.test(nodeName)||this.mask()}},onEnable:function(){this.focusable&&this.enableFocusable();this.ariaStaticRoles[this.ariaRole]||this.ariaEl.dom.setAttribute('aria-disabled',!1);if(this.maskOnDisable&&this.getInherited().hasOwnProperty('masked')){var dom=this.el.dom;var nodeName=dom.nodeName;this.disabledRe.test(nodeName)&&(dom.disabled=!1);this.nonMaskableRe.test(nodeName)||this.unmask()}},onGlobalShow:function(c){this.up(c)&&this.getScrollable().restoreState()},onHide:function(animateTarget,
cb,scope){var me=this;me.ariaStaticRoles[me.ariaRole]||me.destroying||me.destroyed||me.ariaEl.dom.setAttribute('aria-hidden',!0);me.revertFocus();animateTarget=me.getAnimateTarget(animateTarget);me.ghost||(animateTarget=null);if(animateTarget){var toBox={x:animateTarget.getX(),y:animateTarget.getY(),width:animateTarget.dom.offsetWidth,height:animateTarget.dom.offsetHeight};var ghostPanel=me.ghost();ghostPanel.el.stopAnimation();var fromSize=me.getSize();ghostPanel.el.animate({to:toBox,listeners:{afteranimate:function(){me.destroying||
(ghostPanel.componentLayout.lastComponentSize=null,me.unghost(!1),ghostPanel.el.setSize(fromSize),me.afterHide(cb,scope))}}})}else me.el.hide();animateTarget||me.afterHide(cb,scope)},onPosition:Ext.emptyFn,onResize:function(width,height,oldWidth,oldHeight){this.floating&&this.constrain&&this.doConstrain();this.hasListeners.resize&&this.fireEvent('resize',this,width,height,oldWidth,oldHeight)},onShow:function(){this.ariaStaticRoles[this.ariaRole]||this.ariaEl.dom.setAttribute('aria-hidden',!1);this.el.show();
this.updateLayout({isRoot:!1,context:this._showContext});this.floating&&(this.maximized?this.fitContainer():this.constrain&&this.doConstrain())},_showContext:{show:!0},onShowComplete:function(cb,scope){var container=this.focusableContainer;if(this.floating)this.onFloatShow();Ext.callback(cb,scope||this);this.fireEvent('show',this);if(container)container.onFocusableChildShow(this);delete this.hiddenByLayout},onShowVeto:Ext.emptyFn,previousNode:function(selector,includeSelf){var ownerCt=this.ownerCt,
i;if(includeSelf&&this.is(selector))return this;if(ownerCt){var it=ownerCt.items.items;for(i=Ext.Array.indexOf(it,this)-1;-1<i;i--){var sib=it[i];if(sib.query&&(includeSelf=sib.query(selector),includeSelf=includeSelf[includeSelf.length-1]))return includeSelf;if(sib.is(selector))return sib}return ownerCt.previousNode(selector,!0)}return null},previousSibling:function(selector){var o=this.ownerCt,c;if(o){o=o.items;var idx=o.indexOf(this);if(-1!==idx)if(selector)for(--idx;0<=idx;idx--){if((c=o.getAt(idx)).is(selector))return c}else if(idx)return o.getAt(--idx)}return null},
registerFloatingItem:function(cmp){this.floatingDescendants||(this.floatingDescendants=new Ext.ZIndexManager(this));this.floatingDescendants.register(cmp)},removeCls:function(cls){var el=this.rendered?this.el:this.protoEl;el.removeCls.apply(el,arguments);return this},removeClsWithUI:function(classes,skip){var clsArray=[];var i=Ext.Array;var remove=i.remove,uiCls=this.uiCls=i.clone(this.uiCls),activeUI=this.activeUI,cls;'string'===typeof classes&&(classes=0>classes.indexOf(' ')?[classes]:Ext.String.splitWords(classes));
var length=classes.length;for(i=0;i<length;i++)(cls=classes[i])&&this.hasUICls(cls)&&(remove(uiCls,cls),activeUI&&(clsArray=clsArray.concat(this.removeUIClsFromElement(cls))));!0!==skip&&activeUI&&this.removeCls(clsArray);return clsArray},resumeLayouts:function(flushOptions){this.rendered&&this.layoutSuspendCount&&!--this.layoutSuspendCount&&(this.suspendLayout=!1,flushOptions&&!this.isLayoutSuspended()&&this.updateLayout(flushOptions))},scrollBy:function(deltaX,deltaY,animate){var scroller=this.getScrollable();
scroller&&scroller.scrollBy(deltaX,deltaY,animate)},scrollTo:function(x,y,animate){var scroller=this.getScrollable();scroller&&scroller.scrollTo(x,y,animate)},setAutoScroll:function(scroll){this.setScrollable(!!scroll);return this},setBorder:function(border,targetEl){var initial=!!targetEl;if(this.rendered||initial)initial||(targetEl=this.el),border=border?!0===border?'1px':this.unitizeBox(border):0,targetEl.setStyle('border-width',border),initial||this.updateLayout();this.border=border},setDock:function(dock){var ownerCt=
this.ownerCt;dock!==this.dock&&(ownerCt&&ownerCt.moveDocked?ownerCt.moveDocked(this,dock):this.dock=dock);return this},setDisabled:function(disabled){return this[disabled?'disable':'enable']()},setFlex:function(flex){this.flex=flex},setHeight:function(height){return this.setSize(void 0,height)},setLoading:function(load,targetEl){var config={target:this};this.rendered&&(!1!==load?(Ext.isString(load)?config.msg=load:Ext.apply(config,load),this.loadMask&&this.loadMask.isLoadMask?Ext.apply(this.loadMask,
config):(targetEl&&null==config.useTargetEl&&(config.useTargetEl=!0),this.loadMask=new Ext.LoadMask(config)),this.loadMask.isVisible()?this.loadMask.syncMaskState():this.loadMask.show()):this.loadMask&&this.loadMask.isLoadMask&&this.loadMask.hide());return this.loadMask},setMargin:function(margin,preventLayout){this.rendered?(margin||0===margin?(!0===margin&&(margin=5),margin=this.unitizeBox(margin)):margin='',this.margin=margin,this.margin$=null,this.getEl().setStyle('margin',margin),preventLayout||
this.updateLayout(this._notAsLayoutRoot)):this.margin=margin},setOverflowXY:function(overflowX,overflowY){this.setScrollable({x:overflowX&&'hidden'!==overflowX?overflowX:!1,y:overflowY&&'hidden'!==overflowY?overflowY:!1});return this},setPagePosition:function(x,y,animate){Ext.isArray(x)&&(y=x[1],x=x[0]);this.pageX=x;this.pageY=y;if(this.floating){if(this.isContainedFloater()){var floatParentBox=this.floatParent.getTargetEl().getViewRegion();Ext.isNumber(x)&&Ext.isNumber(floatParentBox.left)&&(x-=
floatParentBox.left);Ext.isNumber(y)&&Ext.isNumber(floatParentBox.top)&&(y-=floatParentBox.top)}else y=this.el.translateXY(x,y),x=y.x,y=y.y;this.setPosition(x,y,animate)}else y=this.el.translateXY(x,y),this.setPosition(y.x,y.y,animate);return this},setPosition:function(x,y,animate){var pos=this.beforeSetPosition.apply(this,arguments);if(pos&&this.rendered)if(x=pos.x,y=pos.y,animate){if(x!==this.getLocalX()||y!==this.getLocalY())this.stopAnimation(),this.animate(Ext.apply({duration:1E3,listeners:{afteranimate:Ext.Function.bind(this.afterSetPosition,
this,[x,y])},to:{left:x,top:y}},animate))}else this.setLocalXY(x,y),this.afterSetPosition(x,y);return this},setScrollX:function(x,animate){var scroller=this.getScrollable();scroller&&scroller.scrollTo(x,null,animate)},setScrollY:function(y,animate){var scroller=this.getScrollable();scroller&&scroller.scrollTo(null,y,animate)},setSize:function(width,height){var oldWidth=this.width,oldHeight=this.height;width&&'object'===typeof width&&(height=width.height,width=width.width);if('number'===typeof width)this.width=
Ext.Number.constrain(width,this.minWidth,this.maxWidth);else if(null===width)delete this.width;else if('string'===typeof width){var widthIsString=!0;this.width=width}if('number'===typeof height)this.height=Ext.Number.constrain(height,this.minHeight,this.maxHeight);else if(null===height)delete this.height;else if('string'===typeof height){var heightIsString=!0;this.height=height}this.rendered&&this.isVisible()&&(oldWidth!==this.width||oldHeight!==this.height)&&((this.liquidLayout||widthIsString||heightIsString)&&
this.el.setSize(this.width,this.height),this.updateLayout(this._notAsLayoutRoot));return this},setStyle:function(prop,value){(this.el||this.protoEl).setStyle(prop,value);return this},setUI:function(ui){var uiCls=this.uiCls,activeUI=this.activeUI;ui!==activeUI&&(activeUI?(activeUI=this.removeClsWithUI(uiCls,!0),activeUI.length&&this.removeCls(activeUI),this.removeUIFromElement()):this.uiCls=[],this.activeUI=this.ui=ui,this.addUIToElement(),activeUI=this.addClsWithUI(uiCls,!0),activeUI.length&&this.addCls(activeUI),
this.rendered&&this.updateLayout())},setVisible:function(visible){return this[visible?'show':'hide']()},setHidden:function(hidden){return this.setVisible(!hidden)},setWidth:function(width){return this.setSize(width)},show:function(animateTarget,cb,scope){var rendered=this.rendered,container=this.focusableContainer;if(this.hierarchicallyHidden||this.floating&&!rendered&&this.isHierarchicallyHidden())rendered||this.initHierarchyEvents(),1<arguments.length?(arguments[0]=null,this.pendingShow=arguments):
this.pendingShow=!0;else if(rendered&&this.isVisible()){if(this.floating)this.onFloatShow()}else if(!1!==this.fireEvent('beforeshow',this))this.hidden=!1,delete this.getInherited().hidden,container&&container.beforeFocusableChildShow(this),Ext.suspendLayouts(),rendered||!this.autoRender&&!this.floating||(this.doAutoRender(),rendered=this.rendered),rendered?(this.beforeShow(),Ext.resumeLayouts(),this.onShow.apply(this,arguments),this.afterShow.apply(this,arguments)):Ext.resumeLayouts(!0);else this.onShowVeto();
return this},showAt:function(x,y,animate){if(!this.rendered&&(this.autoRender||this.floating))return this.x=x,this.y=y,this.show();this.floating?this.setPosition(x,y,animate):this.setPagePosition(x,y,animate);return this.show()},showBy:function(cmp,pos,off){this.floating&&cmp&&(this._lastAlignTarget=cmp,this._lastAlignToPos=pos||this.defaultAlign,this._lastAlignToOffsets=off||this.alignOffset,this.show());return this},suspendLayouts:function(){this.rendered&&1===++this.layoutSuspendCount&&(this.suspendLayout=
!0)},toggleCls:function(className,state){void 0===state&&(state=!this.hasCls(className));return this[state?'addCls':'removeCls'](className)},unitizeBox:function(box){return Ext.Element.unitizeBox(box)},unmask:function(){(this.getMaskTarget()||this.el).unmask();this.setMasked(!1)},unregisterFloatingItem:function(cmp){this.floatingDescendants&&this.floatingDescendants.unregister(cmp)},up:function(selector,limit){var result=this.getRefOwner(),limitSelector='string'===typeof limit,limitCount='number'===
typeof limit,limitComponent=limit&&limit.isComponent,steps=0;if(selector)for(;result&&!result.destroyed;result=result.getRefOwner()){steps++;if(selector.isComponent){if(result===selector)break}else if(Ext.ComponentQuery.is(result,selector))break;if(limitSelector&&result.is(limit)||limitCount&&steps===limit||limitComponent&&result===limit)return}return result},update:function(htmlOrData,loadScripts,callback,scriptScope){var isData=this.tpl&&!Ext.isString(htmlOrData),container=this.focusableContainer;
isData?this.data=htmlOrData&&htmlOrData.isEntity?htmlOrData.getData(!0):htmlOrData:this.html=Ext.isObject(htmlOrData)?Ext.DomHelper.markup(htmlOrData):htmlOrData;if(this.rendered){htmlOrData=this.getSizeModel();htmlOrData=htmlOrData.width.shrinkWrap||htmlOrData.height.shrinkWrap;if(this.isContainer){var el=this.layout.getRenderTarget();htmlOrData=htmlOrData||0<this.items.items.length}else el=this.getTargetEl();if(isData)this.tpl[this.tplWriteMode](el,this.data||{});else el.setHtml(this.html,loadScripts,
callback,scriptScope||this);htmlOrData&&this.updateLayout();if(container)container.onFocusableChildUpdate(this)}},setHtml:function(html,loadScripts,scriptScope){this.update(html,loadScripts,null,scriptScope)},applyData:function(data){this.update(data)},updateBox:function(box){this.setSize(box.width,box.height);this.setPagePosition(box.x,box.y);return this},_asLayoutRoot:{isRoot:!0},_notAsLayoutRoot:{isRoot:!1},updateLayout:function(options){var lastBox=this.lastBox,isRoot=options&&options.isRoot,
context=options&&options.context;lastBox&&(lastBox.invalid=!0);!this.rendered||this.layoutSuspendCount||this.suspendLayout||(this.hidden?Ext.Component.cancelLayout(this):'boolean'!==typeof isRoot&&(isRoot=this.isLayoutRoot()),!isRoot&&this.ownerLayout&&this.ownerLayout.onContentChange(this,context)||this.isLayoutSuspended()||(options=options&&options.hasOwnProperty('defer')?options.defer:this.deferLayouts,Ext.Component.updateLayout(this,options)))},updateMaxHeight:function(maxHeight,oldMaxHeight){this.changeConstraint(maxHeight,
oldMaxHeight,'min','max-height','height')},updateMaxWidth:function(maxWidth,oldMaxWidth){this.changeConstraint(maxWidth,oldMaxWidth,'min','max-width','width')},updateMinHeight:function(minHeight,oldMinHeight){this.changeConstraint(minHeight,oldMinHeight,'max','min-height','height')},updateMinWidth:function(minWidth,oldMinWidth){this.changeConstraint(minWidth,oldMinWidth,'max','min-width','width')},updateTouchAction:function(touchAction){var name,hasRootActions;for(name in touchAction){var childEl=
this[name];var value=touchAction[name];childEl&&childEl.isElement?childEl.setTouchAction(value):hasRootActions=!0}hasRootActions&&this.el.setTouchAction(touchAction)},getAnchorToXY:function(el,anchor,local,mySize){return el.getAnchorXY(anchor,local,mySize)},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(x){this.el.setLocalX(x)},setLocalXY:function(x,y){this.el.setLocalXY(x,y)},setLocalY:function(y){this.el.setLocalY(y)},setX:function(x,animate){this.el.setX(x,animate)},setXY:function(xy,animate){this.el.setXY(xy,animate)},setY:function(y,animate){this.el.setY(y,animate)},privates:{addOverCls:function(){this.disabled||this.el.addCls(this.overCls)},addUIToElement:function(){var baseClsUI=this.baseCls+
'-'+this.ui,childElName,el,suffix;this.addCls(baseClsUI);if(this.rendered&&this.frame&&!Ext.supports.CSS3BorderRadius){baseClsUI+='-';var childEls=this.getChildEls();for(childElName in childEls)(suffix=childEls[childElName].frame)&&!0!==suffix&&(el=this[childElName])&&el.addCls(baseClsUI+suffix)}},changeConstraint:function(newValue,oldValue,constrainMethod,styleName,sizeName){var size=this[sizeName];null!=newValue&&'number'===typeof size&&(this[sizeName]=Math[constrainMethod](size,newValue));this.liquidLayout&&
(null!=newValue?this.setStyle(styleName,newValue+'px'):oldValue&&this.setStyle(styleName,''));this.rendered&&this.updateLayout()},constructPlugin:function(plugin){return plugin='string'===typeof plugin?Ext.PluginManager.create({},plugin,this):Ext.PluginManager.create(plugin,null,this)},constructPlugins:function(){var plugins=this.plugins,len;if(plugins){var result=[];result.processed=!0;Ext.isArray(plugins)||(plugins=[plugins]);var i=0;for(len=plugins.length;i<len;i++)result[i]=this.constructPlugin(plugins[i])}this.pluginsInitialized=
!0;return result},detachFromBody:function(){Ext.getDetachedBody().appendChild(this.el);Ext.Component.cancelLayout(this);this.isDetached=!0},doAddListener:function(ename,fn,scope,options,order,caller,manager){var option;if(Ext.isObject(fn)||options&&options.element){if(options.element)for(option in caller=options.element,order={},order[ename]=fn,scope&&(order.scope=scope),ename=this.$elementEventOptions,options)ename[option]&&(order[option]=options[option]);else order=fn,caller=ename;(options=this[caller])&&
options.isObservable?this.mon(options,order):(this.afterRenderEvents=this.afterRenderEvents||{},this.afterRenderEvents[caller]||(this.afterRenderEvents[caller]=[]),this.afterRenderEvents[caller].push(order))}else{if(options&&(option=options.delegate)){this.mixins.componentDelegation.addDelegatedListener.call(this,ename,fn,scope,options,order,caller,manager);return}this.mixins.observable.doAddListener.call(this,ename,fn,scope,options,order,caller,manager)}},doRemoveListener:function(eventName,fn,scope){this.mixins.observable.doRemoveListener.call(this,
eventName,fn,scope);this.mixins.componentDelegation.removeDelegatedListener.call(this,eventName,fn,scope)},fireHierarchyEvent:function(eventName){var globalEvents=Ext.GlobalEvents;globalEvents.hasListeners[eventName]&&globalEvents.fireEvent(eventName,this)},getActionEl:function(){return this.el},getAutoId:function(){this.autoGenId=!0;return++Ext.Component.AUTO_ID},getContentTarget:function(){return this.el},getDragEl:function(){return this.el},getOverflowEl:function(){return this.getTargetEl()},getOverflowStyle:function(){var scroller=
this.getScrollable(),flags=this._scrollFlags;if(scroller){var x=scroller.getX();!0===x&&(x='auto');scroller=scroller.getY();!0===scroller&&(scroller='auto');flags=flags[x][scroller]}else flags=flags.none;this.scrollFlags=flags;return{overflowX:flags.overflowX,overflowY:flags.overflowY}},getPlugins:function(){var plugins=this.plugins;return(plugins=plugins&&plugins.processed?plugins:this.constructPlugins())||null},getProxy:function(){if(!this.proxy){var target=Ext.getBody();this.proxy=this.el.createProxy('x-proxy-el',
target,!0)}return this.proxy},getTargetEl:function(){return this.frameBody||this.el},getTdCls:function(){return'x-'+this.getTdType()+'-'+this.ui+'-cell'},getTdType:function(){return this.xtype},getTpl:function(name){return this.lookupTpl(name)},initCls:function(){var cls=[this.baseCls],targetCls=this.getComponentLayout().targetCls;targetCls&&cls.push(targetCls);this.componentCls?cls.push(this.componentCls):this.componentCls=this.baseCls;return cls},initDraggable:function(){var dragTarget=this.resizer&&
this.resizer.el!==this.el?this.resizerComponent=new Ext.Component({el:this.resizer.el,rendered:!0,container:this.container}):this,ddConfig=Ext.applyIf({el:dragTarget.getDragEl(),constrainTo:this.constrain||this.draggable.constrain?this.constrainTo||(this.floatParent?this.floatParent.getTargetEl():this.container):void 0},this.draggable);if(this.constrain||this.constrainDelegate)ddConfig.constrain=this.constrain,ddConfig.constrainDelegate=this.constrainDelegate;this.dd=new Ext.util.ComponentDragger(dragTarget,
ddConfig)},initPadding:function(targetEl){var padding=this.padding;null!=padding&&(this.layout&&this.layout.managePadding&&'padding'===this.contentPaddingProperty?targetEl.setStyle('padding',0):targetEl.setStyle('padding',this.unitizeBox(!0===padding?5:padding)))},initPlugin:function(plugin){plugin.init(this);return plugin},initResizable:function(resizable){resizable=Ext.apply({target:this,dynamic:!1,constrainTo:this.constrain||resizable&&resizable.constrain?this.constrainTo||(this.floatParent?this.floatParent.getTargetEl():
this.container):void 0,handles:this.resizeHandles},resizable);resizable.target=this;this.resizer=new Ext.resizer.Resizer(resizable)},initStyles:function(targetEl){var margin=this.margin,border=this.border,cls=this.cls,style=this.style,x=this.x,y=this.y,liquidLayout=this.liquidLayout;this.initPadding(targetEl);null!=margin&&targetEl.setStyle('margin',this.unitizeBox(!0===margin?5:margin));null!=border&&this.setBorder(border,targetEl);cls&&cls!==this.initialCls&&(targetEl.addCls(cls),this.cls=this.initialCls=
null);style&&style!==this.initialStyle&&(targetEl.setStyle(style),this.style=this.initialStyle=null);null!=x&&targetEl.setStyle(this.horizontalPosProp,'number'===typeof x?x+'px':x);null!=y&&targetEl.setStyle('top','number'===typeof y?y+'px':y);if(!this.ownerCt||this.floating)Ext.scopeCss&&targetEl.addCls(this.rootCls),targetEl.addCls(this.borderBoxCls);if(liquidLayout||!this.getFrameInfo())margin=this.width,border=this.height,null!=margin&&('number'===typeof margin?targetEl.setStyle('width',margin+
'px'):targetEl.setStyle('width',margin)),null!=border&&('number'===typeof border?targetEl.setStyle('height',border+'px'):targetEl.setStyle('height',border))},isContainedFloater:function(){return this.floating&&this.floatParent},isDescendant:function(ancestor){if(ancestor.isContainer)for(var c=this.ownerCt;c;c=c.ownerCt)if(c===ancestor)return!0;return!1},owns:function(element){var result=!1;element.isEvent?element=element.target:element.isElement&&(element=element.dom);(element=Ext.Component.fromElement(element))&&
(result=element===this||!!element.up(this));return result},parseBox:function(box){return Ext.Element.parseBox(box)},reattachToBody:function(){this.isDetached=!1},removeManagedListenerItem:function(isClear,managedListener,item,ename,fn,scope){var element=managedListener.options?managedListener.options.element:null;if(element)(element=this[element])&&element.un&&(isClear||!(managedListener.item!==item||managedListener.ename!==ename||fn&&managedListener.fn!==fn||scope&&managedListener.scope!==scope))&&
(element.un(managedListener.ename,managedListener.fn,managedListener.scope),isClear||Ext.Array.remove(this.managedListeners,managedListener));else return this.mixins.observable.removeManagedListenerItem.apply(this,arguments)},removeOverCls:function(){this.el.removeCls(this.overCls)},removePlugin:function(plugin){Ext.Array.remove(this.plugins,plugin);plugin.destroy()},removeUIFromElement:function(){var baseClsUI=this.baseCls+'-'+this.ui,childElName,el,suffix;this.removeCls(baseClsUI);if(this.rendered&&
this.frame&&!Ext.supports.CSS3BorderRadius){baseClsUI+='-';var childEls=this.getChildEls();for(childElName in childEls)(suffix=childEls[childElName].frame)&&!0!==suffix&&(el=this[childElName])&&el.removeCls(baseClsUI+suffix)}},setComponentLayout:function(layout){var currentLayout=this.componentLayout;currentLayout&&currentLayout.isLayout&&currentLayout!==layout&&currentLayout.setOwner(null);this.componentLayout=layout;layout.setOwner(this)},setHiddenState:function(hidden){var inheritedState=this.getInherited(),
zIndexManager=this.zIndexManager;(this.hidden=hidden)?inheritedState.hidden=!0:delete inheritedState.hidden;if(zIndexManager)zIndexManager.onComponentShowHide(this)},setupProtoEl:function(){var cls=this.initCls();this.protoEl.addCls(cls)},wrapPrimaryEl:function(dom){var el=this.el;el&&el.isElement||(this.el=Ext.get(dom));this.floating&&this.mixins.floating.constructor.call(this)}},deprecated:{5:{methods:{addClass:'addCls',doComponentLayout:function(){this.updateLayout();return this},removeClass:'removeCls',
forceComponentLayout:'updateLayout',setDocked:'setDock'}}}},1,['box','component'],['component','box'],{component:!0,box:!0},['widget.box','widget.component'],[[Ext.mixin.Inheritable.prototype.mixinId||Ext.mixin.Inheritable.$className,Ext.mixin.Inheritable],[Ext.util.Floating.prototype.mixinId||Ext.util.Floating.$className,Ext.util.Floating],[Ext.util.Positionable.prototype.mixinId||Ext.util.Positionable.$className,Ext.util.Positionable],[Ext.util.Observable.prototype.mixinId||Ext.util.Observable.$className,
Ext.util.Observable],[Ext.mixin.ComponentDelegation.prototype.mixinId||Ext.mixin.ComponentDelegation.$className,Ext.mixin.ComponentDelegation],[Ext.mixin.Bindable.prototype.mixinId||Ext.mixin.Bindable.$className,Ext.mixin.Bindable],[Ext.util.Animate.prototype.mixinId||Ext.util.Animate.$className,Ext.util.Animate],[Ext.util.ElementContainer.prototype.mixinId||Ext.util.ElementContainer.$className,Ext.util.ElementContainer],[Ext.util.Renderable.prototype.mixinId||Ext.util.Renderable.$className,Ext.util.Renderable],
[Ext.state.Stateful.prototype.mixinId||Ext.state.Stateful.$className,Ext.state.Stateful],[Ext.util.Focusable.prototype.mixinId||Ext.util.Focusable.$className,Ext.util.Focusable],[Ext.mixin.Accessible.prototype.mixinId||Ext.mixin.Accessible.$className,Ext.mixin.Accessible],[Ext.mixin.Keyboard.prototype.mixinId||Ext.mixin.Keyboard.$className,Ext.mixin.Keyboard]],[Ext,'Component',Ext,'AbstractComponent'],function(Component){var prototype=Component.prototype;(prototype.$elementEventOptions=Ext.Object.chain(Ext.Element.prototype.$eventOptions)).element=
1;(prototype.$eventOptions=Ext.Object.chain(prototype.$eventOptions)).delegate=1;Component.createAlias({on:'addListener',prev:'previousSibling',next:'nextSibling'});Ext.resumeLayouts=function(flush){Component.resumeLayouts(flush)};Ext.suspendLayouts=function(){Component.suspendLayouts()};Ext.batchLayouts=function(fn,scope){Component.suspendLayouts();try{fn.call(scope)}finally{Component.resumeLayouts(!0)}};Ext.setGlyphFontFamily=function(fontFamily){Ext._glyphFontFamily=fontFamily};Component.hierarchyEventSource=
prototype.hierarchyEventSource=Ext.GlobalEvents;Ext.onReady(function(){Ext.supports.HighContrastMode&&Ext.getBody().addCls(Component.ariaHighContrastModeCls)})});
Ext.define('Ext.layout.container.border.Region',{override:'Ext.Component',initBorderRegion:function(){var me=this;me._borderRegionInited||(me._borderRegionInited=!0,me.addStateEvents(['changeregion','changeweight']),Ext.override(me,{getState:function(){var state=me.callParent();state=me.addPropertyToState(state,'region');return state=me.addPropertyToState(state,'weight')}}))},getOwningBorderContainer:function(){var layout=this.getOwningBorderLayout();return layout&&layout.owner},getOwningBorderLayout:function(){var layout=
this.ownerLayout;return layout&&layout.isBorderLayout?layout:null},setRegion:function(region){var borderLayout,old=this.region;if(region!==old)if(borderLayout=this.getOwningBorderLayout()){var regionFlags=borderLayout.regionFlags[region],placeholder=this.placeholder,splitter=this.splitter,owner=borderLayout.owner,regionMeta=borderLayout.regionMeta;borderLayout=this.collapsed||this.floated;if(!1===this.fireEventArgs('beforechangeregion',[this,region]))return old;Ext.suspendLayouts();this.region=region;
Ext.apply(this,regionFlags);this.updateCollapseTool&&this.updateCollapseTool();if(splitter){Ext.apply(splitter,regionFlags);splitter.updateOrientation();regionFlags=owner.items;var index=regionFlags.indexOf(this);0<=index&&(region=regionMeta[region].splitterDelta,regionFlags.getAt(index+region)!==splitter&&(regionFlags.remove(splitter),index=regionFlags.indexOf(this),0<region&&++index,regionFlags.insert(index,splitter)))}placeholder&&(borderLayout&&this.expand(!1),owner.remove(placeholder),this.placeholder=
null,borderLayout&&this.collapse(null,!1));owner.updateLayout();Ext.resumeLayouts(!0);this.fireEventArgs('changeregion',[this,old])}else this.region=region;return old},setWeight:function(weight){var ownerCt=this.getOwningBorderContainer(),placeholder=this.placeholder,old=this.weight;weight!==old&&!1!==this.fireEventArgs('beforechangeweight',[this,weight])&&(this.weight=weight,placeholder&&(placeholder.weight=weight),ownerCt&&ownerCt.updateLayout(),this.fireEventArgs('changeweight',[this,old]));return old}},
function(Component){Component=Component.prototype;Component.setBorderRegion=Component.setRegion;Component.setRegionWeight=Component.setWeight});
Ext.define('Ext.theme.neptune.Component',{override:'Ext.Component',initComponent:function(){arguments.callee.$previous.call(this);this.dock&&void 0===this.border&&(this.border=!1)},privates:{initStyles:function(){var hasOwnBorder=this.hasOwnProperty('border'),border=this.border;this.dock&&(this.border=null);arguments.callee.$previous.apply(this,arguments);hasOwnBorder?this.border=border:delete this.border}}},function(){Ext.namespace('Ext.theme.is').Neptune=!0;Ext.theme.name='Neptune'});
Ext.define('Ext.overrides.app.domain.Component',{override:'Ext.app.domain.Component'},function(ComponentDomain){ComponentDomain.monitor(Ext.Component)});
Ext.cmd.derive('Ext.app.EventBus',Ext.Base,{singleton:!0,constructor:function(){var domains=Ext.app.EventDomain.instances;this.callParent();this.domains=domains;this.bus=domains.component.bus},control:function(selectors,controller){return this.domains.component.listen(selectors,controller)},listen:function(to,controller){var domains=this.domains,domain;for(domain in to)to.hasOwnProperty(domain)&&domains[domain].listen(to[domain],controller)},unlisten:function(controllerId){var domains=Ext.app.EventDomain.instances,
domain;for(domain in domains)domains[domain].unlisten(controllerId)}},1,0,0,0,0,0,[Ext.app,'EventBus'],0);Ext.cmd.derive('Ext.app.domain.Global',Ext.app.EventDomain,{singleton:!0,type:'global',constructor:function(){this.callParent();this.monitor(Ext.GlobalEvents)},listen:function(listeners,controller){this.callParent([{global:listeners},controller])},match:Ext.returnTrue},1,0,0,0,0,0,[Ext.app.domain,'Global'],0);
Ext.cmd.derive('Ext.app.BaseController',Ext.Base,{isController:!0,config:{id:void 0,control:null,listen:null,routes:null,before:null},constructor:function(config){Ext.apply(this,config);delete this.control;delete this.listen;this.eventbus=Ext.app.EventBus;this.mixins.observable.constructor.call(this,config)},updateId:function(id){this.id=id},applyListen:function(listen){Ext.isObject(listen)&&(listen=Ext.clone(listen));return listen},applyControl:function(control){Ext.isObject(control)&&(control=Ext.clone(control));
return control},updateControl:function(control){this.getId();control&&this.control(control)},updateListen:function(listen){this.getId();listen&&this.listen(listen)},updateRoutes:function(routes){if(routes){var befores=this.getBefore()||{},Router=Ext.app.route.Router,url;for(url in routes){var config=routes[url];Ext.isString(config)&&(config={action:config});var method=config.action;config.before||(config.before=befores[method]);Router.connect(url,config,this)}}},isActive:function(){return!0},control:function(selectors,
listeners,controller){if(Ext.isString(selectors)){var obj={};obj[selectors]=listeners}else obj=selectors,controller=listeners;this.eventbus.control(obj,controller||this)},listen:function(to,controller){this.eventbus.listen(to,controller||this)},destroy:function(){var bus=this.eventbus;Ext.app.route.Router.disconnectAll(this);bus&&(bus.unlisten(this),this.eventbus=null);this.callParent()},redirectTo:function(token,force){token.isModel&&(token=token.toUrl());var ret=!1;Ext.util.History.getToken()!==
token?(ret=!0,Ext.util.History.add(token)):force&&(ret=!0,Ext.app.route.Router.onStateChange(token));return ret}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.app,'BaseController'],0);
Ext.cmd.derive('Ext.app.Util',Ext.Base,{},0,0,0,0,0,0,[Ext.app,'Util'],function(){Ext.apply(Ext.app,{namespaces:{Ext:{}},addNamespaces:function(namespace){var namespaces=Ext.app.namespaces,l;Ext.isArray(namespace)||(namespace=[namespace]);var i=0;for(l=namespace.length;i<l;i++)namespaces[namespace[i]]=!0},clearNamespaces:function(){Ext.app.namespaces={}},getNamespace:function(className){var namespaces=Ext.apply({},Ext.ClassManager.paths,Ext.app.namespaces),deepestPrefix='',prefix;for(prefix in namespaces)namespaces.hasOwnProperty(prefix)&&
prefix.length>deepestPrefix.length&&prefix+'.'===className.substring(0,prefix.length+1)&&(deepestPrefix=prefix);return''===deepestPrefix?void 0:deepestPrefix},setupPaths:function(appName,appFolder,paths){var manifestPaths=Ext.manifest,ns;appName&&null!==appFolder&&((manifestPaths=manifestPaths&&manifestPaths.paths)&&void 0===appFolder||Ext.Loader.setPath(appName,void 0===appFolder?'app':appFolder));if(paths)for(ns in paths)paths.hasOwnProperty(ns)&&Ext.Loader.setPath(ns,paths[ns])}});Ext.getNamespace=
Ext.app.getNamespace});
Ext.cmd.derive('Ext.util.CollectionKey',Ext.Base,{isCollectionKey:!0,observerPriority:-200,config:{collection:null,keyFn:null,property:null,rootProperty:null,unique:!0},generation:0,map:null,mapRebuilds:0,constructor:function(config){this.initConfig(config)},get:function(key){return(this.map||this.getMap())[key]||null},clear:function(){this.map=null},getRootProperty:function(){var root=(arguments.callee.$previous||Ext.Base.prototype.getRootProperty).call(this);return null!==root?root:this.getCollection().getRootProperty()},
indexOf:function(key,startAt){key=(this.map||this.getMap())[key];var collection=this.getCollection(),length=collection.length,n;if(!key)return-1;void 0===startAt&&(startAt=-1);if(key instanceof Array){var index=length;for(n=key.length;0<n--;){var i=collection.indexOf(key[n]);i<index&&i>startAt&&(index=i)}if(index===length)return-1}else index=collection.indexOf(key);return index>startAt?index:-1},updateKey:function(item,oldKey){var map=this.map;if(map){var bucket=map[oldKey];if(bucket instanceof Array){var index=
Ext.Array.indexOf(bucket,item);0<=index&&(2<bucket.length?bucket.splice(index,1):map[oldKey]=bucket[1-index])}else bucket&&delete map[oldKey];this.add([item])}},onCollectionAdd:function(collection,add){this.map&&this.add(add.items)},onCollectionItemChange:function(collection,details){this.map=null},onCollectionRefresh:function(){this.map=null},onCollectionRemove:function(collection,remove){var map=this.map;remove=remove.items;var length=remove.length;if(map)if(this.getUnique()&&length<collection.length/
2)for(collection=0;collection<length;++collection){var key=this.getKey(remove[collection]);delete map[key]}else this.map=null},add:function(items){var map=this.map,bucket,i,item;var length=items.length;var unique=this.getUnique();for(i=0;i<length;++i){var key=this.getKey(item=items[i]);!unique&&key in map?((bucket=map[key])instanceof Array||(map[key]=bucket=[bucket]),bucket.push(item)):map[key]=item}},applyKeyFn:function(keyFn){Ext.isString(keyFn)?this.getKey=function(item){return item[keyFn]()}:
this.getKey=keyFn},updateProperty:function(property){var root=this.getRootProperty();this.getKey=function(item){return(root?item[root]:item)[property]}},getMap:function(){var map=this.map;map||(this.map=map={},this.keysByItemKey={},++this.mapRebuilds,this.add(this.getCollection().items));return map},updateCollection:function(collection){collection.addObserver(this)},clone:function(){return new Ext.util.CollectionKey(this.getCurrentConfig())}},1,0,0,0,0,[[Ext.mixin.Identifiable.prototype.mixinId||
Ext.mixin.Identifiable.$className,Ext.mixin.Identifiable]],[Ext.util,'CollectionKey'],0);
Ext.cmd.derive('Ext.util.Grouper',Ext.util.Sorter,{isGrouper:!0,config:{groupFn:null,sortProperty:null},constructor:function(config){Ext.util.Sorter.prototype.constructor.apply(this,arguments)},getGroupString:function(item){item=this._groupFn(item);return null!=item?String(item):''},sortFn:function(item1,item2){var lhs=this._groupFn(item1),rhs=this._groupFn(item2),property=this._sortProperty,root=this._root,sorterFn=this._sorterFn,transform=this._transform;if(lhs===rhs)return 0;if(property||sorterFn){if(sorterFn)return sorterFn.call(this,
item1,item2);root&&(item1=item1[root],item2=item2[root]);lhs=item1[property];rhs=item2[property];transform&&(lhs=transform(lhs),rhs=transform(rhs))}return lhs>rhs?1:lhs<rhs?-1:0},standardGroupFn:function(item){var root=this._root;return(root?item[root]:item)[this._property]},updateSorterFn:function(){},updateProperty:function(){this.getGroupFn()||this.setGroupFn(this.standardGroupFn)}},1,0,0,0,0,0,[Ext.util,'Grouper'],0);
Ext.cmd.derive('Ext.util.Collection',Ext.Base,{isCollection:!0,config:{autoFilter:!0,autoSort:!0,autoGroup:!0,decoder:null,extraKeys:null,filters:null,grouper:null,groups:null,rootProperty:null,sorters:null,multiSortLimit:3,defaultSortDirection:'ASC',source:null,trackGroups:!0},generation:0,indices:null,indexRebuilds:0,updating:0,grouped:!1,sorted:!1,filtered:!1,$endUpdatePriority:1001,manageSorters:!0,constructor:function(config){this.items=[];this.map={};this.length=0;config&&config.keyFn&&(this.getKey=
config.keyFn);this.mixins.observable.constructor.call(this,config)},destroy:function(){var filters=this._filters,sorters=this._sorters,groups=this._groups;filters&&(filters.destroy(),this._filters=null);sorters&&(this.grouped=this.sorted=!1,this.setSorters(null),this.manageSorters&&sorters.destroy());groups&&(groups.destroy(),this._groups=null);this.setSource(null);this.observers=this.items=this.map=null;this.callParent()},add:function(item){var items=this.decodeItems(arguments,0),ret=items;items.length&&
(this.splice(this.length,0,items),ret=1===items.length?items[0]:items);return ret},replaceAll:function(){var items;var ret=items=this.decodeItems(arguments,0);items.length?(this.splice(0,this.length,items),ret=1===items.length?items[0]:items):this.removeAll();return ret},aggregate:function(property,operation,begin,end,scope){var args=Ext.Array.slice(arguments);args.unshift(this.items);return this.aggregateItems.apply(this,args)},aggregateByGroup:function(property,operation,scope){var groups=this.getGroups();
return this.aggregateGroups(groups,property,operation,scope)},aggregateItems:function(items,property,operation,begin,end,scope){var range=Ext.Number.clipIndices(items.length,[begin,end]),subsetRequested=0!==begin&&end!==items.length,j,value;begin=range[0];end=range[1];if(!Ext.isFunction(operation))return operation=this._aggregators[operation],operation.call(this,items,begin,end,property,this.getRootProperty());range=this.getRootProperty();var values=Array(void 0);var valueItems=subsetRequested?Array(void 0):
items;for(j=0;begin<end;++begin,j++)subsetRequested&&(valueItems[j]=value=items[begin]),values[j]=(range?value[range]:value)[property];return operation.call(scope||this,items,values,0)},aggregateGroups:function(groups,property,operation,scope){groups=groups.items;var len=groups.length,callDirect=!Ext.isFunction(operation),out={},i;for(i=0;i<len;++i){var group=groups[i];var result=callDirect?group[operation](property):this.aggregateItems(group.items,property,operation,null,null,scope);out[group.getGroupKey()]=
result}return out},beginUpdate:function(){this.updating++||this.notify('beginupdate')},clear:function(){var generation=this.generation,ret=generation?this.items:[],indexName;if(generation&&(this.items=[],this.length=0,this.map={},this.indices={},this.generation++,generation=this.getExtraKeys()))for(indexName in generation)generation[indexName].clear();return ret},clone:function(){var copy=new this.self(this.initialConfig);copy.add(this.items);return copy},collect:function(property,root,allowNull){var items=
this.items,length=items.length,map={},ret=[],i;for(i=0;i<length;++i){var value=items[i];value=(root?value[root]:value)[property];var strValue=String(value);!allowNull&&Ext.isEmpty(value)||map[strValue]||(map[strValue]=1,ret.push(value))}return ret},contains:function(item){var ret=!1;null!=item&&(ret=this.getKey(item),ret=this.map[ret]===item);return ret},containsKey:function(key){return key in this.map},createFiltered:function(property,value,anyMatch,caseSensitive,exactMatch){var ret=new this.self(this.initialConfig),
root=this.getRootProperty(),items=this.items;if(Ext.isFunction(property)){root=property;var scope=value}else{if(Ext.isString(property))var filters=[new Ext.util.Filter({property:property,value:value,root:root,anyMatch:anyMatch,caseSensitive:caseSensitive,exactMatch:exactMatch})];else if(property instanceof Ext.util.Filter)filters=[property],property.setRoot(root);else if(Ext.isArray(property))for(filters=property.slice(0),property=0,value=filters.length;property<value;++property)filters[property].setRoot(root);
root=Ext.util.Filter.createFilterFn(filters)}scope=scope||this;property=0;for(value=items.length;property<value;property++)root.call(scope,items[property])&&ret.add(items[property]);return ret},filterBy:function(fn,scope){return this.createFiltered(fn,scope)},each:function(fn,scope){var items=this.items,len=items.length,i;if(len)for(scope=scope||this,items=items.slice(0),i=0;i<len;i++){var ret=fn.call(scope,items[i],i,len);if(!1===ret)break}return ret},eachKey:function(fn,scope){var items=this.items,
len=items.length,i,item;if(len)for(scope=scope||this,items=items.slice(0),i=0;i<len;i++){var key=this.getKey(item=items[i]);item=fn.call(scope,key,item,i,len);if(!1===item)break}return item},endUpdate:function(){--this.updating||this.notify('endupdate')},find:function(property,value,start,startsWith,endsWith,ignoreCase){if(Ext.isEmpty(value,!1))return null;var regex=Ext.String.createRegex(value,startsWith,endsWith,ignoreCase),root=this.getRootProperty();return this.findBy(function(item){return item&&
regex.test((root?item[root]:item)[property])},null,start)},findBy:function(fn,scope,start){var items=this.items,len=items.length,item;scope=scope||this;for(start=start||0;start<len;start++){var key=this.getKey(item=items[start]);if(fn.call(scope,item,key))return items[start]}return null},findIndex:function(property,value,start,startsWith,endsWith,ignoreCase){return(property=this.find(property,value,start,startsWith,endsWith,ignoreCase))?this.indexOf(property):-1},findIndexBy:function(fn,scope,start){return(fn=
this.findBy(fn,scope,start))?this.indexOf(fn):-1},first:function(grouped){return(grouped=grouped?this.getGroups():void 0)?this.aggregateGroups(grouped,null,'first'):this.items[0]},last:function(grouped){return(grouped=grouped?this.getGroups():void 0)?this.aggregateGroups(grouped,null,'last'):this.items[this.length-1]},get:function(key){return this.map[key]},getAt:function(index){return this.items[index]},getByKey:function(key){return this.map[key]},getCount:function(){return this.length},getKey:function(item){var id=
item.id;return 0===id||id?id:0===(id=item._id)||id?id:item.getId()},getRange:function(begin,end){var items=this.items,length=items.length;length?(begin=Ext.Number.clipIndices(length,[begin,end]),begin=items.slice(begin[0],begin[1])):begin=[];return begin},getValues:function(property,root,start,end){var items=this.items;end=Ext.Number.clipIndices(items.length,[start,end]);start=[];var i=end[0];for(end=end[1];i<end;++i){var value=items[i];value=(root?value[root]:value)[property];start.push(value)}return start},
indexOf:function(item){if(!item)return-1;item=this.getKey(item);return this.indexOfKey(item)},indexOfKey:function(key){var indices=this.indices;return key in this.map?(indices||(indices=this.getIndices()),indices[key]):-1},insert:function(index,item){var items=this.decodeItems(arguments,1),ret=items;items.length&&(this.splice(index,0,items),ret=1===items.length?items[0]:items);return ret},itemChanged:function(item,modified,oldKey,meta){var keyChanged=0===oldKey||!!oldKey,filtered=this.filtered&&this.getAutoFilter(),
filterChanged=!1,itemMovement=0,items=this.items,last=this.length-1,sorted=this.sorted&&0<last&&this.getAutoSort(),source=this.getSource(),toRemove=0,itemFiltered=!1,wasFiltered=!1;if(source&&!source.updating)source.itemChanged(item,modified,oldKey,meta);else{source=this.getKey(item);if(filtered){var index=this.indexOfKey(keyChanged?oldKey:source);wasFiltered=0>index;itemFiltered=this.isItemFiltered(item);filterChanged=wasFiltered!==itemFiltered}if(filterChanged)if(itemFiltered){toRemove=[item];var newIndex=
-1}else{var toAdd=[item];newIndex=this.length}else sorted&&!itemFiltered&&(filtered||(index=this.indexOfKey(keyChanged?oldKey:source)),filtered=this.getSortFn(),-1!==index&&(index&&0<filtered(items[index-1],items[index])?(itemMovement=-1,newIndex=Ext.Array.binarySearch(items,item,0,index,filtered)):index<last&&0<filtered(items[index],items[index+1])&&(itemMovement=1,newIndex=Ext.Array.binarySearch(items,item,index+1,filtered)),itemMovement&&(toAdd=[item])));meta={item:item,key:source,index:newIndex,
filterChanged:filterChanged,keyChanged:keyChanged,indexChanged:!!itemMovement,filtered:itemFiltered,oldIndex:index,newIndex:newIndex,wasFiltered:wasFiltered,meta:meta};keyChanged&&(meta.oldKey=oldKey);modified&&(meta.modified=modified);this.beginUpdate();this.notify('beforeitemchange',[meta]);keyChanged&&this.updateKey(item,oldKey);(toAdd||toRemove)&&this.splice(newIndex,toRemove,toAdd);0<itemMovement?meta.newIndex--:0>itemMovement&&meta.oldIndex++;this.notify(itemFiltered?'filtereditemchange':'itemchange',
[meta]);this.endUpdate()}},remove:function(item){var items=this.decodeRemoveItems(arguments,0),length=this.length;this.splice(0,items);return length-this.length},removeAll:function(){var length=this.length;this.generation&&length&&this.splice(0,length);return this},removeAt:function(index,count){var length=this.length,Num=Ext.Number;count=Num.clipIndices(length,[index,void 0===count?1:count],Num.Clip.COUNT);index=count[0];Num=count[1]-index;count=1===Num&&this.getAt(index);this.splice(index,Num);
length=this.length-length;return count&&length?count:length},removeByKey:function(key){return(key=this.getByKey(key))&&this.remove(key)?key:!1},replace:function(item){var index=this.indexOf(item);-1===index?this.add(item):this.insert(index,item)},splice:function(index,toRemove,toAdd){var autoSort=this.sorted&&this.getAutoSort(),map=this.map,items=this.items,length=this.length,removeItems=toRemove instanceof Array?this.decodeRemoveItems(toRemove):null,isRemoveCount=!removeItems,Num=Ext.Number,range=
Num.clipIndices(length,[index,isRemoveCount?toRemove:0],Num.Clip.COUNT);Num=range[0];var end=range[1];range=end-Num;var newItems=this.decodeItems(arguments,2),newCount=newItems?newItems.length:0,insertAt=Num,indices=this.indices||(newCount||removeItems?this.getIndices():null);var newItemsMap=null;var removes=range?[Num]:null,newKeys=null,source=this.getSource(),chunkItems,chunks,item;if(source&&!source.updating){if(isRemoveCount)for(removeItems=[],isRemoveCount=0;isRemoveCount<range;++isRemoveCount)removeItems.push(items[Num+
isRemoveCount]);isRemoveCount=Num<length?source.indexOf(items[Num]):source.length;this.requestedIndex=index;source.splice(isRemoveCount,removeItems,newItems);delete this.requestedIndex;return this}if(newCount){var addItems=newItems;newKeys=[];newItemsMap={};if(autoSort){var sorters=this.getSorters();1<newCount&&(addItems.$cloned||(newItems=addItems=addItems.slice(0)),this.sortData(addItems))}for(isRemoveCount=0;isRemoveCount<newCount;++isRemoveCount){source=this.getKey(newItems[isRemoveCount]);if(void 0!==
(item=newItemsMap[source]))(chunks||(chunks={}))[item]=1;else{var itemIndex=indices[source];(itemIndex<Num||end<=itemIndex)&&(removes||(removes=[])).push(itemIndex)}newItemsMap[source]=isRemoveCount;newKeys.push(source)}if(chunks){var keys=newKeys;addItems=[];newKeys=[];addItems.$cloned=!0;for(isRemoveCount=0;isRemoveCount<newCount;++isRemoveCount)chunks[isRemoveCount]||(item=newItems[isRemoveCount],addItems.push(item),newKeys.push(keys[isRemoveCount]));newCount=addItems.length}newItemsMap={items:addItems,
keys:newKeys}}for(isRemoveCount=removeItems?removeItems.length:0;0<isRemoveCount--;)source=this.getKey(removeItems[isRemoveCount]),void 0!==(itemIndex=indices[source])&&(removes||(removes=[])).push(itemIndex);if(!newItemsMap&&!removes)return this;this.beginUpdate();if(removes){removeItems=null;chunks=[];end={};1<removes.length&&removes.sort(Ext.Array.numericSortFn);isRemoveCount=0;for(newItems=removes.length;isRemoveCount<newItems;++isRemoveCount)if(source=this.getKey(item=items[itemIndex=removes[isRemoveCount]]),
source in map){delete map[source];if(!removeItems||itemIndex>removeItems.at+chunkItems.length)chunks.push(removeItems={at:itemIndex,items:chunkItems=[],keys:keys=[],map:end,next:removeItems,replacement:newItemsMap}),newItemsMap&&(newItemsMap.replaced=removeItems);chunkItems.push(end[source]=item);keys.push(source);itemIndex<insertAt-1&&--insertAt;1<range&&itemIndex===Num&&(--range,removes[isRemoveCount--]=++Num)}newItemsMap&&(newItemsMap.at=insertAt);for(item=chunks.length;0<item--;){removeItems=
chunks[item];isRemoveCount=removeItems.at;newItems=removeItems.items.length;isRemoveCount+newItems<length&&(this.indices=indices=null);this.length=length-=newItems;items.splice(isRemoveCount,newItems);if(indices)for(keys=removeItems.keys,isRemoveCount=0;isRemoveCount<newItems;++isRemoveCount)delete indices[keys[isRemoveCount]];++this.generation;this.notify('remove',[removeItems])}}if(newItemsMap)if(autoSort&&1<newCount&&length)this.spliceMerge(addItems,newKeys);else{autoSort&&(1<newCount?(insertAt=
0,this.indices=null):insertAt=sorters.findInsertionIndex(newItemsMap.items[0],items,this.getSortFn(),index));if(insertAt===length){end=insertAt;for(isRemoveCount=addItems.length-1;0<=isRemoveCount;--isRemoveCount)items[end+isRemoveCount]=addItems[isRemoveCount];if(indices=this.indices)for(isRemoveCount=0;isRemoveCount<newCount;++isRemoveCount)indices[newKeys[isRemoveCount]]=insertAt+isRemoveCount}else this.indices=null,Ext.Array.insert(items,insertAt,addItems);for(isRemoveCount=0;isRemoveCount<newCount;++isRemoveCount)map[newKeys[isRemoveCount]]=
addItems[isRemoveCount];this.length+=newCount;newItemsMap.at=insertAt;newItemsMap.atItem=0===insertAt?null:items[insertAt-1];++this.generation;this.notify('add',[newItemsMap])}this.endUpdate();return this},update:function(fn,scope){this.beginUpdate();try{return fn.call(scope||this,this)}catch(e){throw e;}finally{this.endUpdate()}},updateKey:function(item,oldKey){var map=this.map,indices=this.indices,source=this.getSource(),newKey;source&&!source.updating?source.updateKey(item,oldKey):(newKey=this.getKey(item))===
oldKey||map[oldKey]!==item||newKey in map||(delete map[oldKey],this.updating++,this.generation++,map[newKey]=item,indices&&(indices[newKey]=indices[oldKey],delete indices[oldKey]),this.notify('updatekey',[{item:item,newKey:newKey,oldKey:oldKey}]),this.updating--)},findInsertIndex:function(item){var source=this.getSource(),sourceItems=source.items;for(item=source.indexOf(item)-1;-1<item;){source=sourceItems[item];source=this.indexOf(source);if(-1<source)return source+1;--item}return 0},onCollectionAdd:function(source,
details){source=details.atItem;details=details.items;var requestedIndex=this.requestedIndex,filtered,copy,n;if(!this.sorted)if(void 0!==requestedIndex)var index=requestedIndex;else source?(index=this.indexOf(source),-1===index?index=this.findInsertIndex(details[0]):++index):index=0;if(this.getAutoFilter()&&this.filtered)for(source=0,n=details.length;source<n;++source)requestedIndex=details[source],this.isItemFiltered(requestedIndex)?(copy||(copy=details.slice(0,source)),filtered||(filtered=[]),filtered.push(requestedIndex)):
copy&&copy.push(requestedIndex);this.splice(0>index?this.length:index,0,copy||details);filtered&&this.notify('filteradd',[filtered])},onCollectionBeforeItemChange:function(source,details){this.onCollectionUpdateKey=null},onCollectionBeginUpdate:function(){this.beginUpdate()},onCollectionEndUpdate:function(){this.endUpdate()},onCollectionItemChange:function(source,details){delete this.onCollectionUpdateKey;this.itemChanged(details.item,details.modified,details.oldKey,details.meta)},onCollectionFilteredItemChange:null,
onCollectionRefresh:function(source){var map={},indices={},item,length;var items=source.items;items=this.filtered&&this.getAutoFilter()?Ext.Array.filter(items,this.getFilterFn()):items.slice(0);this.sorted&&this.sortData(items);this.items=items;this.length=length=items.length;this.map=map;this.indices=indices;for(source=0;source<length;++source){var key=this.getKey(item=items[source]);map[key]=item;indices[key]=source}this.notify('refresh')},onCollectionRemove:function(source,details){this.splice(0,
details.items)},onCollectionUpdateKey:function(source,details){this.updateKey(details.item,details.oldKey)},_aggregators:{average:function(items,begin,end,property,root){var n=end-begin;return n&&this._aggregators.sum.call(this,items,begin,end,property,root)/n},bounds:function(items,begin,end,property,root){for(var max,min,i=begin;i<end;++i)begin=items[i],begin=(root?begin[root]:begin)[property],begin<max||(max=begin),begin>min||(min=begin);return[min,max]},count:function(items){return items.length},
extremes:function(items,begin,end,property,root){for(var most=null,least=null,item,max,min,value;begin<end;++begin)item=items[begin],value=(root?item[root]:item)[property],value<max||(max=value,most=item),value>min||(min=value,least=item);return[least,most]},max:function(items,begin,end,property,root){return this._aggregators.bounds.call(this,items,begin,end,property,root)[1]},maxItem:function(items,begin,end,property,root){return this._aggregators.extremes.call(this,items,begin,end,property,root)[1]},
min:function(items,begin,end,property,root){return this._aggregators.bounds.call(this,items,begin,end,property,root)[0]},minItem:function(items,begin,end,property,root){return this._aggregators.extremes.call(this,items,begin,end,property,root)[0]},sum:function(items,begin,end,property,root){for(var sum=0,i=begin;i<end;++i)begin=items[i],begin=(root?begin[root]:begin)[property],sum+=begin;return sum}},_eventToMethodMap:{add:'onCollectionAdd',beforeitemchange:'onCollectionBeforeItemChange',beginupdate:'onCollectionBeginUpdate',
endupdate:'onCollectionEndUpdate',itemchange:'onCollectionItemChange',filtereditemchange:'onCollectionFilteredItemChange',refresh:'onCollectionRefresh',remove:'onCollectionRemove',beforesort:'beforeCollectionSort',sort:'onCollectionSort',filter:'onCollectionFilter',filteradd:'onCollectionFilterAdd',updatekey:'onCollectionUpdateKey'},addObserver:function(observer){var observers=this.observers;observers||(this.observers=observers=[]);this.notifying&&(this.observers=observers=observers.slice(0));observers.push(observer);
1<observers.length&&Ext.Array.sort(observers,this.prioritySortFn)},prioritySortFn:function(o1,o2){return(o1.observerPriority||0)-(o2.observerPriority||0)},applyExtraKeys:function(extraKeys,oldExtraKeys){oldExtraKeys=oldExtraKeys||{};var name;for(name in extraKeys){var value=extraKeys[name];if(value.isCollectionKey)value.setCollection(this);else{var config={collection:this};Ext.isString(value)?config.property=value:config=Ext.apply(config,value);value=new Ext.util.CollectionKey(config)}oldExtraKeys[name]=
this[name]=value;value.name=name}return oldExtraKeys},applyGrouper:function(grouper){grouper&&(grouper=this.getSorters().decodeSorter(grouper,'Ext.util.Grouper'));return grouper},decodeItems:function(args,index){var ret=void 0===index?args:args[index],cloned;if(!ret||!ret.$cloned){if(cloned=args.length>index+1||!Ext.isIterable(ret))ret=Ext.Array.slice(args,index),1===ret.length&&void 0===ret[0]&&(ret.length=0);if(args=this.getDecoder())for(cloned||(ret=ret.slice(0),cloned=!0),index=ret.length;0<index--;)!1===
(ret[index]=args.call(this,ret[index]))&&ret.splice(index,1);cloned&&(ret.$cloned=!0)}return ret},getIndices:function(){var indices=this.indices,items=this.items,n=items.length,i;if(!indices)for(this.indices=indices={},++this.indexRebuilds,i=0;i<n;++i){var key=this.getKey(items[i]);indices[key]=i}return indices},notify:function(eventName,args){var observers=this.observers,methodName=this._eventToMethodMap[eventName],added=0,length,method,observer;args=args||[];if(observers&&methodName){this.notifying=
!0;var index=0;for(length=observers.length;index<length;++index)if(method=(observer=observers[index])[methodName])added++||args.unshift(this),method.apply(observer,args);this.notifying=!1}this.hasListeners&&this.hasListeners[eventName]&&(added||args.unshift(this),this.fireEventArgs(eventName,args))},getFilterFn:function(){return this.getFilters().getFilterFn()},getFilters:function(autoCreate){var ret=this._filters;ret||!1===autoCreate||(ret=new Ext.util.FilterCollection,this.setFilters(ret));return ret},
isItemFiltered:function(item){return!this.getFilters().filterFn(item)},onFilterChange:function(filters){filters=this.getSource();var key;if(!filters){if(filters=this.getExtraKeys()){var newKeys={};for(key in filters)newKeys[key]=filters[key].clone(this)}filters=new Ext.util.Collection({keyFn:this.getKey,extraKeys:newKeys,rootProperty:this.getRootProperty()});this.length&&filters.add(this.items);this.setSource(filters);this.autoSource=filters}else if(filters.length||this.length)this.onCollectionRefresh(filters);
this.notify('filter')},applyFilters:function(filters,collection){if(!filters||filters.isFilterCollection)return filters;filters&&(collection||(collection=this.getFilters()),collection.splice(0,collection.length,filters));return collection},updateFilters:function(newFilters,oldFilters){oldFilters&&oldFilters.un('endupdate','onEndUpdateFilters',this);newFilters&&(newFilters.on({endupdate:'onEndUpdateFilters',scope:this,priority:this.$endUpdatePriority}),newFilters.$filterable=this);this.onEndUpdateFilters(newFilters)},
onEndUpdateFilters:function(filters){var is=!!filters&&0<filters.length;if(this.filtered||is)this.filtered=is,this.onFilterChange(filters)},getSortFn:function(){return this._sortFn||this.createSortFn()},getSorters:function(autoCreate){var ret=this._sorters;ret||!1===autoCreate||(ret=new Ext.util.SorterCollection,this.setSorters(ret));return ret},onSortChange:function(){this.sorted&&this.sortItems()},sort:function(property,direction,mode){var sorters=this.getSorters();sorters.addSort.apply(sorters,
arguments);return this},sortData:function(data){Ext.Array.sort(data,this.getSortFn());return data},sortItems:function(sortFn){this.sorted&&(sortFn=this.getSortFn());this.indices=null;this.notify('beforesort',[this.getSorters(!1)]);this.length&&Ext.Array.sort(this.items,sortFn);this.notify('sort')},sortBy:function(sortFn){return this.sortItems(sortFn)},findInsertionIndex:function(item,items,comparatorFn,index){items=items||this.items;comparatorFn=comparatorFn||this.getSortFn();var afterCheck=items.length;
if(index<afterCheck){var beforeCheck=0<index?comparatorFn(items[index-1],item):0;afterCheck=index<afterCheck-1?comparatorFn(item,items[index]):0;if(1>beforeCheck&&1>afterCheck)return index}return Ext.Array.binarySearch(items,item,comparatorFn)},applySorters:function(sorters,collection){if(!sorters||sorters.isSorterCollection)return sorters;sorters&&(collection||(collection=this.getSorters()),collection.splice(0,collection.length,sorters));return collection},createSortFn:function(){var grouper=this.getGrouper(),
sorters=this.getSorters(!1),sorterFn=sorters?sorters.getSortFn():null;return grouper?function(lhs,rhs){var ret=grouper.sort(lhs,rhs);!ret&&sorterFn&&(ret=sorterFn(lhs,rhs));return ret}:sorterFn},updateGrouper:function(grouper){var groups=this.getGroups(),sorters=this.getSorters();this.onSorterChange();this.grouped=!!grouper;if(grouper){if(this.getTrackGroups()){groups||(groups=new Ext.util.GroupCollection({itemRoot:this.getRootProperty()}),groups.$groupable=this,this.setGroups(groups));groups.setGrouper(grouper);
var populate=!0}}else groups&&(this.removeObserver(groups),groups.destroy()),this.setGroups(null);if(!sorters.updating)this.onEndUpdateSorters(sorters);if(populate)groups.onCollectionRefresh(this)},updateSorters:function(newSorters,oldSorters){oldSorters&&!oldSorters.destroyed&&oldSorters.un('endupdate','onEndUpdateSorters',this);newSorters&&(newSorters.on({endupdate:'onEndUpdateSorters',scope:this,priority:this.$endUpdatePriority}),newSorters.$sortable=this);this.onSorterChange();this.onEndUpdateSorters(newSorters)},
onSorterChange:function(){this._sortFn=null},onEndUpdateSorters:function(sorters){var was=this.sorted,is=this.grouped&&this.getAutoGroup()||sorters&&0<sorters.length;if(was||is)this.sorted=!!is,this.onSortChange(sorters)},removeObserver:function(observer){var observers=this.observers;observers&&Ext.Array.remove(observers,observer)},spliceMerge:function(newItems,newKeys){var map=this.map,newLength=newItems.length,oldIndex=0,oldItems=this.items,oldLength=oldItems.length,adds=[],count=0,items=[],sortFn=
this.getSortFn(),addItems,end,newItem,oldItem;this.items=items;for(end=0;end<newLength;){for(newItem=newItems[end];oldIndex<oldLength&&!(0>sortFn(newItem,oldItem=oldItems[oldIndex]));++oldIndex)items.push(oldItem);if(oldIndex===oldLength){adds[count++]={at:items.length,itemAt:items[items.length-1],items:addItems=[]};1<count&&(adds[count-2].next=adds[count-1]);for(;end<newLength;++end)addItems.push(newItem=newItems[end]),items.push(newItem);break}adds[count++]={at:items.length,itemAt:items[items.length-
1],items:addItems=[newItem]};1<count&&(adds[count-2].next=adds[count-1]);items.push(newItem);for(end+=1;end<newLength&&!(0<=sortFn(newItem=newItems[end],oldItem));++end)items.push(newItem),addItems.push(newItem)}for(;oldIndex<oldLength;++oldIndex)items.push(oldItems[oldIndex]);for(oldIndex=0;oldIndex<newLength;++oldIndex)map[newKeys[oldIndex]]=newItems[oldIndex];this.length=items.length;++this.generation;this.indices=null;for(oldIndex=0;oldIndex<count;++oldIndex)this.notify('add',[adds[oldIndex]])},
getGroups:function(){return(arguments.callee.$previous||Ext.Base.prototype.getGroups).call(this)||null},updateAutoGroup:function(autoGroup){var groups=this.getGroups();groups&&groups.setAutoGroup(autoGroup);this.onEndUpdateSorters(this._sorters)},updateGroups:function(newGroups,oldGroups){oldGroups&&this.removeObserver(oldGroups);newGroups&&this.addObserver(newGroups)},updateSource:function(newSource,oldSource){var auto=this.autoSource;oldSource&&(oldSource.destroyed||oldSource.removeObserver(this),
oldSource===auto&&(auto.destroy(),this.autoSource=null));if(newSource&&(newSource.addObserver(this),newSource.length||this.length))this.onCollectionRefresh(newSource)}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.util,'Collection'],function(){var prototype=this.prototype;prototype.removeAtKey=prototype.removeByKey;prototype.decodeRemoveItems=prototype.decodeItems;Ext.Object.each(prototype._aggregators,function(name){prototype[name]=
function(property,begin,end){return this.aggregate(property,name,begin,end)};prototype[name+'ByGroup']=function(property){return this.aggregateByGroup(property,name)}})});
Ext.cmd.derive('Ext.util.ObjectTemplate',Ext.Base,{isObjectTemplate:!0,excludeProperties:{},valueRe:/^[{][a-z\.]+[}]$/i,statics:{create:function(template,options){return template.isObjectTemplate?template:new Ext.util.ObjectTemplate(template,options)}},constructor:function(template,options){Ext.apply(this,options);this.template=template},apply:function(context){delete this.apply;this.apply=this.compile(this.template);return this.apply(context)},privates:{compile:function(template){var exclude=this.excludeProperties,
len;if(Ext.isString(template))if(0>template.indexOf('{'))var i$jscomp$0=function(){return template};else this.valueRe.test(template)?(template=template.substring(1,template.length-1).split('.'),i$jscomp$0=function(context){for(var i=0;context&&i<template.length;++i)context=context[template[i]];return context}):(template=new Ext.XTemplate(template),i$jscomp$0=function(context){return template.apply(context)});else if(!template||Ext.isPrimitive(template)||Ext.isFunction(template))i$jscomp$0=function(){return template};
else if(template instanceof Array){var compiled=[];i$jscomp$0=0;for(len=template.length;i$jscomp$0<len;++i$jscomp$0)compiled[i$jscomp$0]=this.compile(template[i$jscomp$0]);i$jscomp$0=function(context){var ret=[],i;for(i=0;i<len;++i)ret[i]=compiled[i](context);return ret}}else{compiled={};for(i$jscomp$0 in template)exclude[i$jscomp$0]||(compiled[i$jscomp$0]=this.compile(template[i$jscomp$0]));i$jscomp$0=function(context){var ret={},i;for(i in template){var v=exclude[i]?template[i]:compiled[i](context);
void 0!==v&&(ret[i]=v)}return ret}}return i$jscomp$0}}},1,0,0,0,0,0,[Ext.util,'ObjectTemplate'],0);
Ext.cmd.derive('Ext.data.schema.Role',Ext.Base,{isRole:!0,left:!0,owner:!1,side:'left',isMany:!1,defaultReaderType:'json',_internalReadOptions:{recordsOnly:!0,asRoot:!0},constructor:function(association,config){var extra=config.extra;Ext.apply(this,config);extra&&(extra=Ext.apply({},extra),delete extra.type,Ext.apply(this,extra),delete this.extra);this.association=association;association.owner===this.side&&(association.owner=this,this.owner=!0)},processUpdate:function(){Ext.raise('Only the "many" for an association may be processed. "'+
this.role+'" is not valid.')},processLoad:function(store,associatedEntity,records,session){return records},checkMembership:Ext.emptyFn,adoptAssociated:function(record,session){(record=this.getAssociatedItem(record))&&session.adopt(record)},$roleFilterId:'$associationRoleFilter',createAssociationStore:function(session,from,records,isComplete){var association=this.association,foreignKeyName=association.getFieldName();association=association.isManyToMany;var storeConfig=this.storeConfig,id=from.getId();
from={asynchronousLoad:!1,model:this.cls,role:this,session:session,associatedEntity:from,disableMetaChangeEvent:!0,pageSize:null,remoteFilter:!0,trackRemoved:!session};association?from.filters=[{id:this.$roleFilterId,property:this.inverse.field,value:id,exactMatch:!0}]:foreignKeyName&&(from.filters=[{id:this.$roleFilterId,property:foreignKeyName,value:id,exactMatch:!0}],from.foreignKeyName=foreignKeyName);storeConfig&&Ext.apply(from,storeConfig);from=Ext.Factory.store(from);this.onStoreCreate(from,
session,id);if(foreignKeyName||association&&session)from.on({scope:this,add:'onAddToMany',remove:'onRemoveFromMany',clear:'onRemoveFromMany'});records&&from.loadData(records);from.complete=!!isComplete;return from},onStoreCreate:Ext.emptyFn,getAssociatedStore:function(inverseRecord,options,scope,records$jscomp$0,allowInfer){var storeName=this.getStoreName(),store$jscomp$0=inverseRecord[storeName],session=inverseRecord.session,load=options&&options.reload,source=inverseRecord.$source,isComplete=!1,
phantom=!1,sourceStore;if(!store$jscomp$0){if(session){source&&(phantom=source.phantom);if(!records$jscomp$0&&source&&(sourceStore=source[storeName])&&!sourceStore.isLoading()){records$jscomp$0=[];isComplete=sourceStore.getData().items;store$jscomp$0=0;for(source=isComplete.length;store$jscomp$0<source;++store$jscomp$0){var hadSourceStore=isComplete[store$jscomp$0];records$jscomp$0.push(session.getRecord(hadSourceStore.self,hadSourceStore.id))}isComplete=!!sourceStore.complete;hadSourceStore=!0}hadSourceStore||
(store$jscomp$0=!!records$jscomp$0,records$jscomp$0=this.findRecords(session,inverseRecord,records$jscomp$0,allowInfer),store$jscomp$0||records$jscomp$0&&records$jscomp$0.length||(records$jscomp$0=null),isComplete=phantom||store$jscomp$0)}else isComplete=!!records$jscomp$0;store$jscomp$0=this.createAssociationStore(session,inverseRecord,records$jscomp$0,isComplete||inverseRecord.phantom);store$jscomp$0.$source=sourceStore;records$jscomp$0||!this.autoLoad&&!options||(load=!0);inverseRecord[storeName]=
store$jscomp$0}if(options)if(load||store$jscomp$0.isLoading())store$jscomp$0.on('load',function(store,records,success,operation){args=[store,operation];scope=scope||options.scope||inverseRecord;success?Ext.callback(options.success,scope,args):Ext.callback(options.failure,scope,args);args.push(success);Ext.callback(options,scope,args);Ext.callback(options.callback,scope,args)},null,{single:!0});else{var args=[store$jscomp$0,null];scope=scope||options.scope||inverseRecord;Ext.callback(options.success,
scope,args);args.push(!0);Ext.callback(options,scope,args);Ext.callback(options.callback,scope,args)}load&&!store$jscomp$0.isLoading()&&store$jscomp$0.load();return store$jscomp$0},getAssociatedItem:function(rec){var key=this.isMany?this.getStoreName():this.getInstanceName();return rec[key]||null},onDrop:Ext.emptyFn,onIdChanged:Ext.emptyFn,getReaderRoot:function(){return this.associationKey||(this.associationKey=this.association.schema.getNamer().readerRoot(this.role))},getReader:function(){var reader=
this.reader,Model=this.cls,useSimpleAccessors=!this.associationKey,root=this.getReaderRoot();reader&&!reader.isReader&&(Ext.isString(reader)&&(reader={type:reader}),Ext.applyIf(reader,{model:Model,rootProperty:root,useSimpleAccessors:useSimpleAccessors,type:this.defaultReaderType}),reader=this.reader=Ext.createByAlias('reader.'+reader.type,reader));return reader},getInstanceName:function(){return this.instanceName||(this.instanceName=this.association.schema.getNamer().instanceName(this.role))},getOldInstanceName:function(){return this.oldInstanceName||
(this.oldInstanceName='$old'+this.getInstanceName())},getStoreName:function(){return this.storeName||(this.storeName=this.association.schema.getNamer().storeName(this.role))},constructReader:function(fromReader){var reader=this.getReader(),Model=this.cls,useSimpleAccessors=!this.associationKey,root=this.getReaderRoot();reader||((reader=Model.getProxy())?(fromReader=reader.getReader(),reader=new fromReader.self,reader.copyFrom(fromReader),reader.setRootProperty(root)):reader=new fromReader.self({model:Model,
useSimpleAccessors:useSimpleAccessors,rootProperty:root}),this.reader=reader);return reader},read:function(record,data,fromReader,readOptions){record=this.constructReader(fromReader);if(data=record.getRoot(data))return record.readRecords(data,readOptions,this._internalReadOptions)},getCallbackOptions:function(options,scope,defaultScope){'function'===typeof options?options={callback:options,scope:scope||defaultScope}:options&&(options=Ext.apply({},options),options.scope=scope||options.scope||defaultScope);
return options},doGetFK:function(leftRecord,options,scope){var cls=this.cls,foreignKey=this.association.getFieldName(),instanceName=this.getInstanceName(),rightRecord=leftRecord[instanceName],reload=options&&options.reload,done=void 0!==rightRecord&&!reload,session=leftRecord.session;done?rightRecord&&(done=!rightRecord.isLoading()):session?(foreignKey=leftRecord.get(foreignKey))||0===foreignKey?(done=session.peekRecord(cls,foreignKey,!0)&&!reload,rightRecord=session.getRecord(cls,foreignKey,!1)):
(done=!0,leftRecord[instanceName]=rightRecord=null):foreignKey?(foreignKey=leftRecord.get(foreignKey))||0===foreignKey?rightRecord||(rightRecord=cls.createWithId(foreignKey)):(done=!0,leftRecord[instanceName]=rightRecord=null):(done=!0,rightRecord=null);done?options&&(cls=[rightRecord,null],scope=scope||options.scope||leftRecord,Ext.callback(options.success,scope,cls),cls.push(!0),Ext.callback(options,scope,cls),Ext.callback(options.callback,scope,cls)):(leftRecord[instanceName]=rightRecord,options=
this.getCallbackOptions(options,scope,leftRecord),rightRecord.load(options));return rightRecord},doSetFK:function(leftRecord,rightRecord,options,scope){var foreignKey=this.association.getFieldName(),instanceName=this.getInstanceName(),current=leftRecord[instanceName],inverse=this.inverse,inverseSetter=inverse.setterName;if(rightRecord&&rightRecord.isEntity){if(current!==rightRecord){var oldInstanceName=this.getOldInstanceName();leftRecord[oldInstanceName]=current;leftRecord[instanceName]=rightRecord;
current&&current.isEntity&&(current[inverse.getInstanceName()]=void 0);foreignKey&&leftRecord.set(foreignKey,rightRecord.getId());delete leftRecord[oldInstanceName];leftRecord.onAssociatedRecordSet(rightRecord,this);if(inverseSetter)rightRecord[inverseSetter](leftRecord)}}else(foreignKey=leftRecord.changingKey&&!inverse.isMany||leftRecord.set(foreignKey,rightRecord))&&current&&current.isEntity&&!current.isEqual(current.getId(),rightRecord)&&(leftRecord[instanceName]=void 0,inverse.isMany||(current[inverse.getInstanceName()]=
void 0));if(options)return Ext.isFunction(options)&&(options={callback:options,scope:scope||leftRecord}),leftRecord.save(options)}},1,0,0,0,0,0,[Ext.data.schema,'Role'],0);
Ext.cmd.derive('Ext.data.schema.Association',Ext.Base,{isOneToOne:!1,isManyToOne:!1,isManyToMany:!1,owner:null,field:null,constructor:function(config){var right;Ext.apply(this,config);this.left=config=new this.Left(this,this.left);this.right=right=new this.Right(this,this.right);config.inverse=right;right.inverse=config},hasField:function(){return!!this.field},getFieldName:function(){var field=this.field;return field?field.name:''}},1,0,0,0,0,0,[Ext.data.schema,'Association'],0);
Ext.cmd.derive('Ext.data.schema.OneToOne',Ext.data.schema.Association,{isOneToOne:!0,isToOne:!0,kind:'one-to-one',Left:Ext.define(null,{extend:'Ext.data.schema.Role',onDrop:function(rightRecord,session){session=this.getAssociatedItem(rightRecord);rightRecord[this.getInstanceName()]=null;session&&(session[this.inverse.getInstanceName()]=null)},onIdChanged:function(rightRecord,oldId,newId){oldId=this.getAssociatedItem(rightRecord);var fieldName=this.association.getFieldName();!rightRecord.session&&
oldId&&fieldName&&oldId.set(fieldName,newId)},createGetter:function(){var me=this;return function(){return me.doGet(this)}},createSetter:function(){var me=this;return function(value){return me.doSet(this,value)}},doGet:function(rightRecord){var instanceName=this.getInstanceName();return rightRecord[instanceName]||null},doSet:function(rightRecord,leftRecord){var instanceName=this.getInstanceName(),ret=rightRecord[instanceName],inverseSetter=this.inverse.setterName;if(ret!==leftRecord){rightRecord[instanceName]=
leftRecord;if(inverseSetter)leftRecord[inverseSetter](rightRecord);rightRecord.onAssociatedRecordSet(leftRecord,this)}return ret},read:function(rightRecord,node,fromReader,readOptions){if(node=this.callParent([rightRecord,node,fromReader,readOptions]))if(node=node[0])node[this.inverse.getInstanceName()]=rightRecord,rightRecord[this.getInstanceName()]=node,delete rightRecord.data[this.role]}}),Right:Ext.define(null,{extend:'Ext.data.schema.Role',left:!1,side:'right',createGetter:function(){var me=
this;return function(options,scope){return me.doGetFK(this,options,scope)}},createSetter:function(){var me=this;return function(value,options,scope){return me.doSetFK(this,value,options,scope)}},onDrop:function(leftRecord,session){var field=this.association.field,rightRecord=this.getAssociatedItem(leftRecord),id;this.inverse.owner&&(session&&field?((id=leftRecord.get(field.name))||0===id)&&(rightRecord=session.getEntry(this.cls,id).record)&&rightRecord.drop():rightRecord&&rightRecord.drop());field&&
leftRecord.set(field.name,null);leftRecord[this.getInstanceName()]=null;rightRecord&&(rightRecord[this.inverse.getInstanceName()]=null)},onValueChange:function(leftRecord,session,newValue){var rightRecord=leftRecord[this.getOldInstanceName()]||this.getAssociatedItem(leftRecord),hasNewValue=newValue||0===newValue,instanceName=this.getInstanceName(),cls=this.cls;leftRecord.changingKey=!0;this.doSetFK(leftRecord,newValue);hasNewValue?session&&cls&&(leftRecord[instanceName]=session.peekRecord(cls,newValue)||
void 0):leftRecord[instanceName]=null;this.inverse.owner&&rightRecord&&this.association.schema.queueKeyCheck(rightRecord,this);leftRecord.changingKey=!1},checkKeyForDrop:function(rightRecord){this.inverse.getAssociatedItem(rightRecord)||rightRecord.drop()},read:function(leftRecord,node,fromReader,readOptions){node=this.callParent([leftRecord,node,fromReader,readOptions]);if(node){node=node[0];if(fromReader=this.association.field)var fieldName=fromReader.name;readOptions=leftRecord.session;var data=
leftRecord.data;if(node){var refs=readOptions?(refs=readOptions.getRefs(node,this.inverse,!0))&&refs[leftRecord.id]||void 0===data[fieldName]:!0;if(refs){if(fromReader){var oldId=data[fieldName];refs=node.id;oldId!==refs&&(data[fieldName]=refs,readOptions&&readOptions.updateReference(leftRecord,fromReader,refs,oldId))}node[this.inverse.getInstanceName()]=leftRecord;leftRecord[this.getInstanceName()]=node}delete data[this.role]}}}})},0,0,0,0,0,0,[Ext.data.schema,'OneToOne'],0);
Ext.cmd.derive('Ext.data.schema.ManyToOne',Ext.data.schema.Association,{isManyToOne:!0,isToOne:!0,kind:'many-to-one',Left:Ext.define(null,{extend:'Ext.data.schema.Role',isMany:!0,onDrop:function(rightRecord,session){var store=this.getAssociatedItem(rightRecord),len;if(store){if((session=store.removeAll())&&this.inverse.owner){var i=0;for(len=session.length;i<len;++i)session[i].drop()}store.destroy();rightRecord[this.getStoreName()]=null}else if(session&&(session=session.getRefs(rightRecord,this)))for(len in session)session[len].drop()},
onIdChanged:function(rightRecord,oldId,newId){oldId=this.association.getFieldName();var store=this.getAssociatedItem(rightRecord),len;if(store&&((len=store.getFilters().get(this.$roleFilterId))&&len.setValue(newId),!rightRecord.session&&oldId))for(rightRecord=store.getDataSource().items,store=0,len=rightRecord.length;store<len;++store)rightRecord[store].set(oldId,newId)},processUpdate:function(session,associationData){var entityType=this.inverse.cls;associationData=associationData.R;var id,rightRecord,
store;if(associationData)for(id in associationData)if(rightRecord=session.peekRecord(entityType,id)){var leftRecords=session.getEntityList(this.cls,associationData[id]);if(store=this.getAssociatedItem(rightRecord))store.loadData(leftRecords),store.complete=!0;else rightRecord[this.getterName](null,null,leftRecords)}else session.onInvalidAssociationEntity(entityType,id)},findRecords:function(session,rightRecord,leftRecords,allowInfer){var ret=leftRecords,refs=session.getRefs(rightRecord,this,!0),field=
this.association.field,len;if(field&&(refs||allowInfer)){var fieldName=field.name;ret=[];if(leftRecords){var seen={};var i=0;for(len=leftRecords.length;i<len;++i){var leftRecord=leftRecords[i];var id=leftRecord.id;refs&&refs[id]?ret.push(leftRecord):allowInfer&&void 0===leftRecord.data[fieldName]&&(ret.push(leftRecord),leftRecord.data[fieldName]=rightRecord.id,session.updateReference(leftRecord,field,rightRecord.id,void 0));seen[id]=!0}}if(refs)for(id in refs)seen&&seen[id]||ret.push(refs[id])}return ret},
processLoad:function(store,rightRecord,leftRecords,session){store=leftRecords;session&&(store=this.findRecords(session,rightRecord,leftRecords,!0));this.onLoadMany(rightRecord,store,session);return store},adoptAssociated:function(rightRecord,session){rightRecord=this.getAssociatedItem(rightRecord);var len;if(rightRecord){rightRecord.setSession(session);rightRecord=rightRecord.getData().items;var i=0;for(len=rightRecord.length;i<len;++i)session.adopt(rightRecord[i])}},createGetter:function(){var me=
this;return function(options,scope,leftRecords){return me.getAssociatedStore(this,options,scope,leftRecords,!0)}},createSetter:null,onAddToMany:function(store,leftRecords){this.syncFK(leftRecords,store.getAssociatedEntity(),!1)},onLoadMany:function(rightRecord,leftRecords,session){var instanceName=this.inverse.getInstanceName(),id=rightRecord.getId(),field=this.association.field,len;if(field){var i=0;for(len=leftRecords.length;i<len;++i){var leftRecord=leftRecords[i];leftRecord[instanceName]=rightRecord;
if(field){var name=field.name;var data=leftRecord.data;var oldId=data[name];oldId!==id&&(data[name]=id,session&&session.updateReference(leftRecord,field,id,oldId))}}}},onRemoveFromMany:function(store,leftRecords){this.syncFK(leftRecords,store.getAssociatedEntity(),!0)},read:function(rightRecord,node,fromReader,readOptions){var instanceName=this.inverse.getInstanceName();if(node=this.callParent([rightRecord,node,fromReader,readOptions]))for(node=rightRecord[this.getterName](null,null,node),delete rightRecord.data[this.role],
node=node.getData().items,readOptions=0,fromReader=node.length;readOptions<fromReader;++readOptions)node[readOptions][instanceName]=rightRecord},syncFK:function(leftRecords,rightRecord,clearing){var foreignKeyName=this.association.getFieldName(),inverse=this.inverse,setter=inverse.setterName;inverse=inverse.getInstanceName();for(var i=leftRecords.length,id=rightRecord.getId(),different,leftRecord,val;0<i--;)leftRecord=leftRecords[i],different=!leftRecord.isEqual(id,leftRecord.get(foreignKeyName)),
val=clearing?null:rightRecord,different!==clearing?(leftRecord.changingKey=!0,leftRecord[setter](val),leftRecord.changingKey=!1):leftRecord[inverse]=val}}),Right:Ext.define(null,{extend:'Ext.data.schema.Role',left:!1,side:'right',onDrop:function(leftRecord,session){(session=this.association.field)&&leftRecord.set(session.name,null);leftRecord[this.getInstanceName()]=null},createGetter:function(){var me=this;return function(options,scope){return me.doGetFK(this,options,scope)}},createSetter:function(){var me=
this;return function(rightRecord,options,scope){return me.doSetFK(this,rightRecord,options,scope)}},checkMembership:function(session,leftRecord){var field=this.association.field;field&&(session=this.getSessionStore(session,leftRecord.get(field.name)))&&!session.contains(leftRecord)&&session.add(leftRecord)},onValueChange:function(leftRecord,session,newValue,oldValue){var instanceName=this.getInstanceName(),cls=this.cls,hasNewValue,store,rightRecord;if(!leftRecord.changingKey)if((hasNewValue=newValue||
0===newValue)||(leftRecord[instanceName]=null),session)(store=this.getSessionStore(session,oldValue))&&store.remove(leftRecord),hasNewValue&&((store=this.getSessionStore(session,newValue))&&!store.isLoading()&&store.add(leftRecord),cls&&(rightRecord=session.peekRecord(cls,newValue)),leftRecord[instanceName]=rightRecord||void 0);else if(session=leftRecord.joined)for(instanceName=session.length-1;0<=instanceName;instanceName--)store=session[instanceName],store.isStore&&(cls=store.getAssociatedEntity())&&
cls.self===this.cls&&cls.getId()===oldValue&&store.remove(leftRecord);this.owner&&null===newValue&&this.association.schema.queueKeyCheck(leftRecord,this)},checkKeyForDrop:function(leftRecord){null===leftRecord.get(this.association.field.name)&&leftRecord.drop()},getSessionStore:function(session,value){var cls=this.cls;if(cls&&(session=session.peekRecord(cls,value)))return this.inverse.getAssociatedItem(session)},read:function(leftRecord,node,fromReader,readOptions){if(node=this.callParent([leftRecord,
node,fromReader,readOptions]))if(node=node[0])leftRecord[this.getInstanceName()]=node,delete leftRecord.data[this.role]}})},0,0,0,0,0,0,[Ext.data.schema,'ManyToOne'],0);
Ext.cmd.derive('Ext.data.schema.ManyToMany',Ext.data.schema.Association,{isManyToMany:!0,isToMany:!0,kind:'many-to-many',Left:Ext.define(null,{extend:'Ext.data.schema.Role',isMany:!0,digitRe:/^\d+$/,findRecords:function(session,rightRecord,leftRecords){rightRecord=session.getMatrixSlice(this.inverse,rightRecord.id).members;var ret=[],cls=this.cls,len,member;if(leftRecords){var seen={};var i=0;for(len=leftRecords.length;i<len;++i){var leftRecord=leftRecords[i];var id=leftRecord.id;(member=rightRecord[id])&&
-1===member[2]||ret.push(leftRecord);seen[id]=!0}}for(id in rightRecord)member=rightRecord[id],(!seen||!seen[id]&&member&&-1!==member[2])&&(leftRecord=session.peekRecord(cls,id))&&ret.push(leftRecord);return ret},onIdChanged:function(rightRecord,oldId,newId){(rightRecord=this.getAssociatedItem(rightRecord))&&rightRecord.getFilters().get(this.$roleFilterId).setValue(newId)},processLoad:function(store,rightRecord,leftRecords,session){var ret=leftRecords;session&&(ret=this.findRecords(session,rightRecord,
leftRecords),this.onAddToMany(store,ret,!0));return ret},processUpdate:function(session,associationData){var entityType=this.inverse.cls,items=associationData.R,id,rightRecord,store;if(items)for(id in items)if(rightRecord=session.peekRecord(entityType,id)){var leftRecords=session.getEntityList(this.cls,items[id]);if(store=this.getAssociatedItem(rightRecord))store.loadData(leftRecords),store.complete=!0;else rightRecord[this.getterName](null,null,leftRecords)}else session.onInvalidAssociationEntity(entityType,
id);this.processMatrixBlock(session,associationData.C,1);this.processMatrixBlock(session,associationData.D,-1)},checkMembership:function(session,rightRecord){var matrix=session.getMatrix(this.association,!0),id;if(matrix){var side=this.left?matrix.right:matrix.left;matrix=side.inverse.role.cls;var inverse=this.inverse;if(side=side.slices)if(side=side[rightRecord.id])for(id in side=side.members,side){var member=side[id];-1!==member[2]&&(member=session.peekRecord(matrix,id))&&(member=inverse.getAssociatedItem(member))&&
(member.matrixUpdate=1,member.add(rightRecord),member.matrixUpdate=0)}}},onStoreCreate:function(store,session,id){session&&(session=session.getMatrixSlice(this.inverse,id),session.attach(store),session.notify=this.onMatrixUpdate,session.scope=this)},processMatrixBlock:function(session,leftKeys,state){var inverse=this.inverse,digitRe=this.digitRe,id;if(leftKeys)for(id in leftKeys){digitRe.test(id)&&(id=parseInt(id,10));var slice=session.getMatrixSlice(inverse,id);slice.update(leftKeys[id],state)}},
createGetter:function(){var me=this;return function(options,scope,leftRecords){return me.getAssociatedStore(this,options,scope,leftRecords,!1)}},onAddToMany:function(store,leftRecords,load){store.matrixUpdate||(store.matrixUpdate=1,store.matrix.update(leftRecords,!0===load?0:1),store.matrixUpdate=0)},onRemoveFromMany:function(store,records){store.matrixUpdate||(store.matrixUpdate=1,store.matrix.update(records,-1),store.matrixUpdate=0)},read:function(rightRecord,node,fromReader,readOptions){if(node=
this.callParent([rightRecord,node,fromReader,readOptions]))rightRecord[this.getterName](null,null,node),delete rightRecord.data[this.role]},onMatrixUpdate:function(matrixSlice,id,state){matrixSlice=matrixSlice.store;if(matrixSlice&&!matrixSlice.loading&&!matrixSlice.matrixUpdate){matrixSlice.matrixUpdate=1;var index=matrixSlice.indexOfId(id);0>state?0<=index&&matrixSlice.remove([index]):0>index&&(id=(id=matrixSlice.getSession().getEntry(this.type,id))&&id.record)&&matrixSlice.add(id);matrixSlice.matrixUpdate=
0}},adoptAssociated:function(record,session){var store=this.getAssociatedItem(record),len;if(store)for(store.setSession(session),this.onStoreCreate(store,session,record.getId()),record=store.getData().items,store=0,len=record.length;store<len;++store)session.adopt(record[store])}},function(){var Left=this;Ext.ClassManager.onCreated(function(){Ext.data.schema.ManyToMany.prototype.Right=Ext.define(null,{extend:Left,left:!1,side:'right'})},null,'Ext.data.schema.ManyToMany')})},0,0,0,0,0,0,[Ext.data.schema,
'ManyToMany'],0);
Ext.cmd.derive('Ext.util.Inflector',Ext.Base,{singleton:!0,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'],[/^(p)erson$/i,'$1eople'],[/^(m)an$/i,'$1en'],
[/(.*)(child)(ren)?$/i,'$1$2ren'],[/s$/i,'s'],[/$/,'s']],singulars:[[/(address)$/i,'$1'],[/(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'],[/(p)eople$/i,'$1erson'],[/s$/i,'']],uncountable:'sheep fish series species money rice information equipment grass mud offspring deer means'.split(' '),singular:function(matcher,replacer){this.singulars.unshift([matcher,replacer])},plural:function(matcher,replacer){this.plurals.unshift([matcher,replacer])},clearSingulars:function(){this.singulars=
[]},clearPlurals:function(){this.plurals=[]},isTransnumeral:function(word){return-1!=Ext.Array.indexOf(this.uncountable,word)},pluralize:function(word){if(this.isTransnumeral(word))return word;var plurals=this.plurals,length=plurals.length,i;for(i=0;i<length;i++){var tuple=plurals[i];var regex=tuple[0];if(regex==word||regex.test&&regex.test(word))return word.replace(regex,tuple[1])}return word},singularize:function(word){if(this.isTransnumeral(word))return word;var singulars=this.singulars,length=
singulars.length,i;for(i=0;i<length;i++){var tuple=singulars[i];var regex=tuple[0];if(regex==word||regex.test&&regex.test(word))return word.replace(regex,tuple[1])}return word},classify:function(word){return Ext.String.capitalize(this.singularize(word))},ordinalize:function(number){var parsed=parseInt(number,10),mod100=parsed%100;if(11<=mod100&&13>=mod100)return number+'th';switch(parsed%10){case 1:return number+'st';case 2:return number+'nd';case 3:return number+'rd';default:return number+'th'}}},
0,0,0,0,0,0,[Ext.util,'Inflector'],function(){var irregulars={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'},singular;for(singular in irregulars)irregulars.hasOwnProperty(singular)&&(this.plural(singular,irregulars[singular]),this.singular(irregulars[singular],singular))});
Ext.cmd.derive('Ext.data.schema.Namer',Ext.Base,{isNamer:!0,capitalize:function(name){return Ext.String.capitalize(name)},fieldRole:function(name){var match=name.match(this.endsWithIdRe,'');match&&(name=name.substr(0,name.length-(match[1]||match[2]).length));return this.apply('uncapitalize',name)},idField:function(name){return this.apply('uncapitalize,singularize',name)+'Id'},instanceName:function(roleName){return this.apply('underscore',roleName)},multiRole:function(name){return this.apply('undotted,uncapitalize,pluralize',
name)},pluralize:function(name){return Ext.util.Inflector.pluralize(name)},readerRoot:function(roleName){return this.apply('uncapitalize',roleName)},singularize:function(name){return Ext.util.Inflector.singularize(name)},storeName:function(roleName){return this.apply('underscore',roleName)},uncapitalize:function(name){return Ext.String.uncapitalize(name)},underscore:function(name){return'_'+name},uniRole:function(name){return this.apply('undotted,uncapitalize,singularize',name)},undotted:function(name){if(0>
name.indexOf('.'))return name;name=name.split('.');for(var index=name.length;1<index--;)name[index]=this.apply('capitalize',name[index]);return name.join('')},getterName:function(role){var name=role.role;return role&&role.isMany?name:'get'+this.apply('capitalize',name)},inverseFieldRole:function(leftType,unique,rightRole,rightType){leftType=this.apply(unique?'uniRole':'multiRole',leftType);unique=this.apply('pluralize',rightRole);rightType=this.apply('undotted,pluralize',rightType);unique.toLowerCase()!==
rightType.toLowerCase()&&(leftType=rightRole+this.apply('capitalize',leftType));return leftType},manyToMany:function(relation,leftType,rightType){leftType=this.apply('undotted,capitalize,singularize',leftType)+this.apply('undotted,capitalize,pluralize',rightType);relation&&(leftType=this.apply('capitalize',relation+leftType));return leftType},manyToOne:function(leftType,leftRole,rightType,rightRole){return this.apply('capitalize,singularize',rightType)+this.apply('capitalize',leftRole)},matrixRole:function(relation,
entityType){entityType=this.apply(relation?'multiRole,capitalize':'multiRole',entityType);return relation?relation+entityType:entityType},oneToOne:function(leftType,leftRole,rightType,rightRole){return this.apply('undotted,capitalize,singularize',rightType)+this.apply('capitalize',leftRole)},setterName:function(role){return'set'+this.apply('capitalize',role.role)},endsWithIdRe:/(?:(_id)|[^A-Z](Id))$/,cache:{},apply:function(operation,name){var cache=this.cache;cache=cache[name]||(cache[name]={});
var ret=cache[operation],operations;if(!ret){if(0>operation.indexOf(','))ret=this[operation](name);else{var length=(operations=operation.split(',')).length;ret=name;for(name=0;name<length;++name)ret=this.apply(operations[name],ret)}cache[operation]=ret}return ret}},0,0,0,0,['namer.default'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.schema,'Namer'],0);
Ext.cmd.derive('Ext.data.schema.Schema',Ext.Base,{aliasPrefix:'schema.',isSchema:!0,type:'default',statics:{instances:{},get:function(config){var cache=this.instances,id='default',isString=config&&Ext.isString(config),instance;if(config){if(config.isSchema)return config;id=isString?config:config.id||id}(instance=cache[id])?config&&!isString&&(cache=Ext.merge({},instance.config),Ext.merge(cache,config),instance.setConfig(cache),instance.config=cache):(cache[id]=instance=this.create(config),instance.id=
id);return instance},lookupEntity:function(entity){var ret=null,instances=this.instances,name;if(entity)if(entity.isEntity)ret=entity.self;else if(Ext.isFunction(entity))ret=entity;else if(Ext.isString(entity)){ret=Ext.ClassManager.get(entity);!ret||ret.prototype&&ret.prototype.isEntity||(ret=null);if(!ret)for(name in instances){var match=instances[name];if(match=match.getEntity(entity))ret&&Ext.raise('Ambiguous entity name "'+entity+'". Defined by schema "'+ret.schema.type+'" and "'+name+'"'),ret=
match}ret||Ext.raise('No such Entity "'+entity+'".')}return ret}},assocCount:0,entityCount:0,config:{defaultIdentifier:null,keyCheckDelay:10,namer:'default',namespace:null,proxy:{type:'ajax',url:'{prefix}/{entityName}'},urlPrefix:''},onClassExtended:function(cls,data){var alias=data.alias;alias&&!data.type&&(Ext.isString(alias)||(alias=alias[0]),cls.prototype.type=alias.substring(this.prototype.aliasPrefix.length))},constructor:function(config){this.initConfig(config);this.clear()},applyDefaultIdentifier:function(identifier){return identifier&&
Ext.Factory.dataIdentifier(identifier)},applyNamer:function(namer){namer=Ext.data.schema.Namer.create(namer);namer.schema=this;return namer},applyNamespace:function(namespace){namespace&&'.'!==namespace.charAt(namespace.length-1)&&(namespace+='.');return namespace},applyProxy:function(proxy){return Ext.util.ObjectTemplate.create(proxy)},eachAssociation:function(fn,scope){var associations=this.associations,name;for(name in associations)if(associations.hasOwnProperty(name)&&!1===fn.call(scope,name,
associations[name]))break},eachEntity:function(fn,scope){var entities=this.entities,name;for(name in entities)if(entities.hasOwnProperty(name)&&!1===fn.call(scope,name,entities[name].cls))break},getAssociation:function(name){return this.associations[name]||null},getEntity:function(name){return(name=this.entityClasses[name]||this.entities[name])&&name.cls||null},getEntityName:function(cls){var ns=this.getNamespace();if(cls='string'===typeof cls?cls:cls.$className||null){if(ns){var index=ns.length;
if(cls.substring(0,index)!==ns)return cls}index&&(cls=cls.substring(index))}return cls},hasAssociations:function(name){name=name.entityName||name;return!!this.associationEntityMap[name]},hasEntity:function(entity){entity=this.getEntityName(entity);return!(!this.entities[entity]&&!this.entityClasses[entity])},addMatrix:function(entityType,matrixName,relation,left,right){var namer=this.getNamer(),associations=this.associations,entities=this.entities,leftType=left.type,rightType=right.type,leftField=
left.field||namer.apply('idField',leftType),rightField=right.field||namer.apply('idField',rightType),leftRole=left.role||namer.matrixRole(relation,leftType);namer=right.role||namer.matrixRole(relation,rightType);relation=entities[leftType]||(entities[leftType]={cls:null,name:leftType,associations:{}});entities=entities[rightType]||(entities[rightType]={cls:null,name:rightType,associations:{}});++this.assocCount;associations[matrixName]=entityType=new Ext.data.schema.ManyToMany({name:matrixName,schema:this,
definedBy:entityType,left:{cls:relation.cls,type:leftType,role:leftRole,field:leftField,associationKey:left.associationKey},right:{cls:entities.cls,type:rightType,role:namer,field:rightField,associationKey:right.associationKey}});relation.associations[entityType.right.role]=entityType.right;entities.associations[entityType.left.role]=entityType.left;relation.cls&&(this.associationEntityMap[relation.cls.entityName]=!0);entities.cls&&(this.associationEntityMap[entities.cls.entityName]=!0);this.decorateModel(entityType)},
addReference:function(entityType,referenceField,descr,unique,dupeCheck){var namer=this.getNamer(),entities=this.entities,associations=this.associations,entityName=entityType.entityName,association=descr.association,child=descr.child,parent=descr.parent,rightRole=descr.role,rightType=descr.type||parent||child,leftVal=descr.inverse,leftRole=(leftVal=Ext.isString(leftVal)?{role:leftVal}:leftVal)&&leftVal.role;rightRole||(rightRole=!referenceField||descr.legacy?namer.apply('uncapitalize',rightType):namer.apply('fieldRole',
referenceField.name));leftRole||(leftRole=namer.inverseFieldRole(entityName,unique,rightRole,rightType));association||(association=unique?namer.oneToOne(entityType,leftRole,rightType,rightRole):namer.manyToOne(entityType,leftRole,rightType,rightRole));dupeCheck&&association in associations&&!1!==dupeCheck(associations[association],association,leftRole,rightRole)||(dupeCheck=entities[rightType]||(entities[rightType]={cls:null,name:rightType,associations:{}}),association=new (unique?Ext.data.schema.OneToOne:
Ext.data.schema.ManyToOne)({name:association,owner:child?'left':parent?'right':null,definedBy:entityType,schema:this,field:referenceField,nullable:referenceField?!!referenceField.allowBlank:!0,left:{cls:entityType,type:entityName,role:leftRole,extra:leftVal},right:{cls:dupeCheck.cls,type:rightType,role:rightRole,extra:descr},meta:descr}),entityType.associations[rightRole]=association.right,dupeCheck.associations[leftRole]=association.left,referenceField&&(referenceField.reference=association.right,
entityType.references.push(referenceField)),++this.assocCount,this.associationEntityMap[entityName]=!0,dupeCheck.cls&&(this.associationEntityMap[dupeCheck.cls.entityName]=!0),associations[association.name]=association,association.right.cls&&this.decorateModel(association))},privates:{addEntity:function(entityType){var entities=this.entities,entityName=entityType.entityName,entry=entities[entityName],fields=entityType.fields,length;if(entry)for(length in entities=entry.associations,entities)entities[length].inverse.cls=
entityType,this.associationEntityMap[entityName]=!0,this.decorateModel(entities[length].association);else entities[entityName]=entry={name:entityName,associations:{}};entry.cls=entityType;entityType.prototype.associations=entityType.associations=entry.associations;this.entityClasses[entityType.$className]=entry;++this.entityCount;entry=0;for(length=fields.length;entry<length;++entry)entityName=fields[entry],entityName.reference&&this.addReferenceDescr(entityType,entityName)},addMatrices:function(entityType,
matrices){var length;if(Ext.isString(matrices))this.addMatrixDescr(entityType,null,matrices);else if(matrices[0]){var i=0;for(length=matrices.length;i<length;++i)this.addMatrixDescr(entityType,null,matrices[i])}else for(i in matrices)this.addMatrixDescr(entityType,i,matrices[i])},addMatrixDescr:function(entityType,matrixName,matrixDef){var entityName=entityType.entityName,associations=this.associations,namer=this.getNamer(),left=matrixDef.left,right=matrixDef.right;if(Ext.isString(matrixDef))'#'===
matrixDef.charAt(0)?(left={type:entityName},right={type:matrixDef.substring(1)}):'#'===matrixDef.charAt(left=matrixDef.length-1)?(left={type:matrixDef.substring(0,left)},right={type:entityName}):namer.apply('multiRole',entityName)<namer.apply('multiRole',matrixDef)?(left={type:entityName},right={type:matrixDef}):(left={type:matrixDef},right={type:entityName});else{var relation=matrixDef.relation;left||!right&&namer.apply('multiRole',entityName)<namer.apply('multiRole',matrixDef.type)?(left=left&&
!0!==left?Ext.apply({type:entityName},left):{type:entityName},right=matrixDef):(right=right&&!0!==right?Ext.apply({type:entityName},right):{type:entityName},left=matrixDef)}matrixName||(matrixName=namer.manyToMany(relation,left.type,right.type));matrixName in associations||this.addMatrix(entityType,matrixName,relation,left,right)},addReferenceDescr:function(entityType,referenceField){var descr=referenceField.$reference;descr=Ext.isString(descr)?{type:descr}:Ext.apply({},descr);this.addReference(entityType,
referenceField,descr,referenceField.unique)},addBelongsTo:function(entityType,assoc){this.addKeylessSingle(entityType,assoc,!1)},addHasOne:function(entityType,assoc){this.addKeylessSingle(entityType,assoc,!0)},addKeylessSingle:function(entityType,assoc,unique){assoc=Ext.apply({},this.checkLegacyAssociation(entityType,assoc));assoc.type=this.getEntityName(assoc.child||assoc.parent||assoc.type);var foreignKey=assoc.foreignKey||assoc.type.toLowerCase()+'_id';foreignKey=entityType.getField(foreignKey);
assoc.fromSingle=!0;foreignKey&&(foreignKey.$reference=assoc,foreignKey.unique=!0,assoc.legacy=!0);this.addReference(entityType,foreignKey,assoc,unique)},addHasMany:function(entityType,assoc){var entities=this.entities,pending=this.pending;assoc=Ext.apply({},this.checkLegacyAssociation(entityType,assoc));assoc.type=this.getEntityName(assoc.child||assoc.parent||assoc.type);var name=assoc.type;if(entities=(entities=entities[name])&&entities.cls){name=entityType.entityName;entityType=assoc.foreignKey||
name.toLowerCase()+'_id';delete assoc.foreignKey;var child=Ext.apply({},assoc.inverse);delete assoc.inverse;pending=Ext.apply({},assoc);delete pending.type;assoc=Ext.apply({type:name,inverse:pending},child);if(child=pending.child)delete pending.child,assoc.parent=name;if(name=entities.getField(entityType))name.$reference=assoc,assoc.legacy=!0;this.addReference(entities,name,assoc,!1)}else pending[name]||(pending[name]=[]),pending[name].push([entityType,assoc])},checkLegacyAssociation:function(entityType,
assoc){assoc=Ext.isString(assoc)?{type:assoc}:Ext.apply({},assoc);assoc.model&&(assoc.type=assoc.model,delete assoc.model);if(entityType=assoc.associatedName||assoc.name)delete assoc.associatedName,delete assoc.name,assoc.role=entityType;return assoc},afterKeylessAssociations:function(cls){var pending=this.pending;cls=cls.entityName;var mine=pending[cls],len;if(mine){var i=0;for(len=mine.length;i<len;++i)this.addHasMany.apply(this,mine[i]);delete pending[cls]}},clear:function(clearNamespace){var timer=
this.timer;delete this.setConfig;timer&&(window.clearTimeout(timer),this.timer=null);this.associations={};this.associationEntityMap={};this.entities={};this.entityClasses={};this.pending={};this.assocCount=this.entityCount=0;clearNamespace&&this.setNamespace(null)},constructProxy:function(Model){Model=Ext.Object.chain(Model);var proxy=this.getProxy();Model.schema=this;Model.prefix=this.getUrlPrefix();return proxy.apply(Model)},applyDecoration:function(role){var cls=role.inverse.cls,namer=this.getNamer(),
getterName;cls&&!role.decorated&&(role.decorated=!0,cls=cls.prototype,(getterName=role.getterName)||(role.getterName=getterName=namer.getterName(role)),cls[getterName]=role.createGetter(),role.createSetter&&((getterName=role.setterName)||(role.setterName=getterName=namer.setterName(role)),cls[getterName]=role.createSetter()))},decorateModel:function(association){this.applyDecoration(association.left);this.applyDecoration(association.right)},processKeyChecks:function(processAll){var keyCheckQueue=
this.keyCheckQueue,timer=this.timer;timer&&(window.clearTimeout(timer),this.timer=null);if(keyCheckQueue){do{keyCheckQueue=this.keyCheckQueue;this.keyCheckQueue=[];var i=0;for(timer=keyCheckQueue.length;i<timer;++i){var item=keyCheckQueue[i];item.role.checkKeyForDrop(item.record)}}while(processAll&&this.keyCheckQueue.length)}},queueKeyCheck:function(record,role){var keyCheckQueue=this.keyCheckQueue,timer=this.timer;keyCheckQueue||(this.keyCheckQueue=keyCheckQueue=[]);keyCheckQueue.push({record:record,
role:role});timer||(this.timer=Ext.Function.defer(this.processKeyChecks,this.getKeyCheckDelay(),this))},rankEntities:function(){var entities=this.entities,entityNames=Ext.Object.getKeys(entities),length=entityNames.length,i;this.nextRank=1;entityNames.sort();for(i=0;i<length;++i){var entityType=entities[entityNames[i]].cls;entityType.rank||this.rankEntity(entityType)}},rankEntity:function(entityType){var associations=entityType.associations,roleName;for(roleName in associations){var associatedType=
associations[roleName];!associatedType.left&&associatedType.association.field&&(associatedType=associatedType.cls,associatedType.rank||this.rankEntity(associatedType))}entityType.rank=this.nextRank++}}},1,0,0,0,['schema.default'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.schema,'Schema'],0);
Ext.cmd.derive('Ext.data.AbstractStore',Ext.Base,{factoryConfig:{defaultType:'store',type:'store'},$configPrefixed:!1,$configStrict:!1,config:{filters:null,autoDestroy:void 0,storeId:null,statefulFilters:!1,sorters:null,remoteSort:{lazy:!0,$value:!1},remoteFilter:{lazy:!0,$value:!1},groupField:void 0,groupDir:'ASC',grouper:null,pageSize:25,autoSort:null},currentPage:1,loading:!1,isStore:!0,updating:0,constructor:function(config){this.isInitializing=!0;this.mixins.observable.constructor.call(this,
config);this.isInitializing=!1;var storeId=this.getStoreId();!storeId&&config&&config.id&&this.setStoreId(storeId=config.id);storeId&&Ext.data.StoreManager.register(this)},getCount:function(){var data=this.getData();return data?data.getCount():0},rangeCached:function(start,end){return this.getData().getCount()>=Math.max(start,end)},find:function(property,value,startIndex,anyMatch,caseSensitive,exactMatch){anyMatch=!anyMatch;exactMatch=!(!anyMatch||!exactMatch);return this.getData().findIndex(property,
value,startIndex,anyMatch,exactMatch,!caseSensitive)},findRecord:function(){var index=this.find.apply(this,arguments);return-1!==index?this.getAt(index):null},findExact:function(fieldName,value,startIndex){return this.getData().findIndexBy(function(rec){return rec.isEqual(rec.get(fieldName),value)},this,startIndex)},findBy:function(fn,scope,start){return this.getData().findIndexBy(fn,scope,start)},getAt:function(index){return this.getData().getAt(index)||null},getRange:function(start,end,options){var result=
this.getData().getRange(start,Ext.isNumber(end)?end+1:end);options&&options.callback&&options.callback.call(options.scope||this,result,start,end,options);return result},getFilters:function(autoCreate){var result=(arguments.callee.$previous||Ext.Base.prototype.getFilters).call(this);result||!1===autoCreate||(this.setFilters([]),result=(arguments.callee.$previous||Ext.Base.prototype.getFilters).call(this));return result},applyFilters:function(filters,filtersCollection){if(!filtersCollection){filtersCollection=
this.createFiltersCollection();var created=!0}filtersCollection.add(filters);if(created)this.onRemoteFilterSet(filtersCollection,this.getRemoteFilter());return filtersCollection},getSorters:function(autoCreate){var result=(arguments.callee.$previous||Ext.Base.prototype.getSorters).call(this);result||!1===autoCreate||(this.setSorters([]),result=(arguments.callee.$previous||Ext.Base.prototype.getSorters).call(this));return result},applySorters:function(sorters,sortersCollection){if(!sortersCollection){sortersCollection=
this.createSortersCollection();var created=!0}sortersCollection.add(sorters);if(created)this.onRemoteSortSet(sortersCollection,this.getRemoteSort());return sortersCollection},filter:function(filters,value,supressEvent){Ext.isString(filters)&&(filters={property:filters,value:value});this.suppressNextFilter=!!supressEvent;this.getFilters().add(filters);this.suppressNextFilter=!1},removeFilter:function(filter,suppressEvent){var filters=this.getFilters();this.suppressNextFilter=!!suppressEvent;filter instanceof
Ext.util.Filter?filters.remove(filter):filters.removeByKey(filter);this.suppressNextFilter=!1},updateAutoSort:function(autoSort){this.getData().setAutoSort(autoSort)},updateRemoteSort:function(remoteSort){this.onRemoteSortSet(this.getSorters(!1),remoteSort)},updateRemoteFilter:function(remoteFilter){this.onRemoteFilterSet(this.getFilters(!1),remoteFilter)},addFilter:function(filters,suppressEvent){this.suppressNextFilter=!!suppressEvent;this.getFilters().add(filters);this.suppressNextFilter=!1},filterBy:function(fn,
scope){this.getFilters().add({filterFn:fn,scope:scope||this})},clearFilter:function(suppressEvent){var filters=this.getFilters(!1);filters&&0!==filters.getCount()&&(this.suppressNextFilter=!!suppressEvent,filters.removeAll(),this.suppressNextFilter=!1)},isFiltered:function(){return 0<this.getFilters().getCount()},isSorted:function(){var sorters=this.getSorters(!1);return!!(sorters&&0<sorters.length)||this.isGrouped()},addFieldTransform:function(sorter){if(!sorter.getTransform()){var fieldName=sorter.getProperty(),
Model=this.getModel();if(Model)var sortType=(fieldName=Model.getField(fieldName))?fieldName.getSortType():null;sortType&&sortType!==Ext.identityFn&&sorter.setTransform(sortType)}},beginUpdate:function(){this.updating++||this.fireEvent('beginupdate')},endUpdate:function(){this.updating&&!--this.updating&&(this.fireEvent('endupdate'),this.onEndUpdate())},getState:function(){var sorters=[],filters=this.getFilters(),grouper=this.getGrouper();this.getSorters().each(function(s){sorters[sorters.length]=
s.getState();hasState=!0});if(this.statefulFilters&&this.saveStatefulFilters){var hasState=!0;var filterState=[];filters.each(function(f){filterState[filterState.length]=f.getState()})}grouper&&(hasState=!0);if(hasState){var result={};sorters.length&&(result.sorters=sorters);filterState&&(result.filters=filterState);grouper&&(result.grouper=grouper.getState())}return result},applyState:function(state){var stateSorters=state.sorters,stateFilters=state.filters;state=state.grouper;stateSorters&&this.getSorters().replaceAll(stateSorters);
stateFilters&&(this.saveStatefulFilters=!0,this.getFilters().replaceAll(stateFilters));state&&this.setGrouper(state)},hasPendingLoad:Ext.emptyFn,isLoaded:Ext.emptyFn,isLoading:Ext.emptyFn,destroy:function(){this.hasListeners.beforedestroy&&this.fireEvent('beforedestroy',this);this.destroying=!0;this.getStoreId()&&Ext.data.StoreManager.unregister(this);this.doDestroy();this.hasListeners.destroy&&this.fireEvent('destroy',this);this.destroying=!1;this.callParent()},doDestroy:Ext.emptyFn,sort:function(field,
direction,mode){0===arguments.length?this.getRemoteSort()?this.load():this.forceLocalSort():this.getSorters().addSort(field,direction,mode)},onBeforeCollectionSort:function(store,sorters){sorters&&this.fireEvent('beforesort',this,sorters.getRange())},onSorterEndUpdate:function(){var me=this;var sorters=me.getSorters(!1);!me.settingGroups&&sorters&&(sorters=sorters.getRange(),sorters.length?me.getRemoteSort()?me.load({callback:function(){me.fireEvent('sort',me,sorters)}}):(me.fireEvent('datachanged',
me),me.fireEvent('refresh',me),me.fireEvent('sort',me,sorters)):me.fireEvent('sort',me,sorters))},onFilterEndUpdate:function(){var suppressNext=this.suppressNextFilter;this.getFilters(!1)&&(this.getRemoteFilter()?(this.currentPage=1,suppressNext||this.load()):suppressNext||(this.fireEvent('datachanged',this),this.fireEvent('refresh',this)),this.trackStateChanges&&(this.saveStatefulFilters=!0),this.fireEvent('filterchange',this,this.getFilters().getRange()))},updateGroupField:function(field){field?
this.setGrouper({property:field,direction:this.getGroupDir()}):this.setGrouper(null)},getGrouper:function(){return this.getData().getGrouper()},group:function(grouper,direction){var sorters=this.getSorters(!1);sorters=grouper||sorters&&sorters.length;grouper&&'string'===typeof grouper&&(grouper={property:grouper,direction:direction||this.getGroupDir()});this.settingGroups=!0;this.getData().setGrouper(grouper);delete this.settingGroups;sorters?this.getRemoteSort()?this.load({scope:this,callback:this.fireGroupChange}):
(this.fireEvent('datachanged',this),this.fireEvent('refresh',this),this.fireGroupChange()):this.fireGroupChange()},fireGroupChange:function(){this.destroyed||this.fireEvent('groupchange',this,this.getGrouper())},clearGrouping:function(){this.group(null)},getGroupField:function(){var grouper=this.getGrouper(),group='';grouper&&(group=grouper.getProperty());return group},isGrouped:function(){return!!this.getGrouper()},applyGrouper:function(grouper){this.group(grouper);return this.getData().getGrouper()},
getGroups:function(){return this.getData().getGroups()},onEndUpdate:Ext.emptyFn,privates:{loadsSynchronously:Ext.privateFn,onRemoteFilterSet:function(filters,remoteFilter){if(filters)filters[remoteFilter?'on':'un']('endupdate',this.onFilterEndUpdate,this)},onRemoteSortSet:function(sorters,remoteSort){sorters&&(sorters[remoteSort?'on':'un']('endupdate',this.onSorterEndUpdate,this),this.getData()[remoteSort?'un':'on']('beforesort',this.onBeforeCollectionSort,this))}},deprecated:{5:{methods:{destroyStore:function(){this.destroy()}}}}},
1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable],[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data,'AbstractStore'],0);Ext.cmd.derive('Ext.data.Error',Ext.Base,{isError:!0,$configPrefixed:!1,config:{field:null,message:''},constructor:function(config){this.initConfig(config);this.msg=this.message}},1,0,0,0,0,0,[Ext.data,'Error'],0);
Ext.cmd.derive('Ext.data.ErrorCollection',Ext.util.MixedCollection,{alternateClassName:'Ext.data.Errors',init:function(record){var fields=record.fields,data=record.data,len;var i=0;for(len=fields.length;i<len;++i){var field=fields[i];var name=field.name;var val=data[name];if(field.validate&&!field.validate.$nullFn){var before=this.length;field=field.validate(val,null,this,record);before===this.length&&!0!==field&&this.add(name,field)}}return this},add:function(key,value){var defaultMessage=Ext.data.field.Field.defaultInvalidMessage,
obj=key;Ext.isString(key)?obj=new Ext.data.Error({field:key,message:value||defaultMessage}):(obj.isError||(obj=new Ext.data.Error({field:obj.field||obj.name,message:obj.error||obj.message||obj.msg||defaultMessage})),key=obj.field);if(value=this.get(key)){if(Ext.isArray(value))return value.push(obj),value;this.removeAtKey(key);obj=[value,obj];obj.field=key;obj=[obj]}return Ext.util.MixedCollection.prototype.add.call(this,obj)},getKey:function(item){return item.field},isValid:function(){return 0===
this.length},getByField:function(fieldName){(fieldName=this.get(fieldName))&&!Ext.isArray(fieldName)&&(fieldName=[fieldName]);return fieldName||[]}},0,0,0,0,0,0,[Ext.data,'ErrorCollection',Ext.data,'Errors'],0);
Ext.cmd.derive('Ext.data.operation.Operation',Ext.Base,{alternateClassName:'Ext.data.Operation',isOperation:!0,config:{synchronous:!1,url:'',params:void 0,callback:void 0,scope:void 0,resultSet:null,response:null,request:null,records:null,id:void 0,proxy:null,batch:null,recordCreator:null,internalCallback:null,internalScope:null},order:0,foreignKeyDirection:1,started:!1,running:!1,complete:!1,success:void 0,exception:!1,error:void 0,idPrefix:'ext-operation-',constructor:function(config){var scope=
config&&config.scope;this.initConfig(config);config&&(config.scope=scope);scope&&(this.setScope(scope),this.initialConfig.scope=scope);this._internalId=Ext.id(this,this.idPrefix)},getAction:function(){return this.action},execute:function(){var request;delete this.error;delete this.success;this.complete=this.exception=!1;this.setStarted();(this.request=request=this.doExecute())&&request.setOperation(this);return request},doExecute:Ext.emptyFn,abort:function(){var request=this.request;this.running&&
request&&(this.getProxy().abort(request),this.request=null)},process:function(resultSet,request,response,autoComplete){autoComplete=!1!==autoComplete;this.setResponse(response);this.setResultSet(resultSet);resultSet.getSuccess()?(this.doProcess(resultSet,request,response),this.setSuccessful(autoComplete)):autoComplete&&this.setException(resultSet.getMessage())},_commitSetOptions:{convert:!0,commit:!0},doProcess:function(resultSet,request,response){request=this._commitSetOptions;var clientRecords=
this.getRecords(),clientLen=clientRecords.length;response=clientRecords[0].clientIdProperty;var serverLen=(resultSet=resultSet.getRecords())?resultSet.length:0,clientRecord,i;if(serverLen&&response){clientRecords=Ext.Array.toValueMap(clientRecords,'id');for(i=0;i<serverLen;++i){var serverRecord=resultSet[i];if(clientRecord=clientRecords[serverRecord[response]])delete clientRecords[clientRecord.id],delete serverRecord[response],clientRecord.set(serverRecord,request)}for(i in clientRecords)clientRecords[i].commit()}else for(i=
0;i<clientLen;++i)clientRecord=clientRecords[i],0!==serverLen&&(serverRecord=resultSet[i])?clientRecord.set(serverRecord,request):clientRecord.commit()},setStarted:function(){this.started=this.running=!0},setCompleted:function(){var proxy=this.getProxy();this.complete=!0;this.running=!1;this.triggerCallbacks();proxy&&proxy.completeOperation(this)},setSuccessful:function(complete){this.success=!0;complete&&this.setCompleted()},setException:function(error){this.exception=!0;this.success=this.running=
!1;this.error=error;this.setCompleted()},triggerCallbacks:function(){var callback=this.getInternalCallback();callback&&(callback.call(this.getInternalScope()||this,this),this.setInternalCallback(null),this.setInternalScope(null));if(callback=this.getCallback())callback.call(this.getScope()||this,this.getRecords(),this,this.wasSuccessful()),this.setCallback(null),this.setScope(null)},hasException:function(){return this.exception},getError:function(){return this.error},getRecords:function(){var resultSet;
return this._records||((resultSet=this.getResultSet())?resultSet.getRecords():null)},isStarted:function(){return this.started},isRunning:function(){return this.running},isComplete:function(){return this.complete},wasSuccessful:function(){return this.isComplete()&&!0===this.success},allowWrite:function(){return!0}},1,0,0,0,0,0,[Ext.data.operation,'Operation',Ext.data,'Operation'],0);
Ext.define('Components.overrides.Operation',{override:'Ext.data.operation.Operation',process:function(resultSet,request,response,autoComplete){autoComplete=!1!==autoComplete;this.setResponse(response);this.setResultSet(resultSet);resultSet.getSuccess()?(this.doProcess(resultSet,request,response),this.setSuccessful(autoComplete)):autoComplete&&((resultSet=resultSet.getMessage())||(resultSet=response.result&&response.result.message),this.setException(resultSet))}});
Ext.cmd.derive('Ext.data.operation.Create',Ext.data.operation.Operation,{action:'create',isCreateOperation:!0,order:10,config:{recordCreator:Ext.identityFn},doExecute:function(){return this.getProxy().create(this)}},0,0,0,0,['data.operation.create'],0,[Ext.data.operation,'Create'],0);
Ext.cmd.derive('Ext.data.operation.Destroy',Ext.data.operation.Operation,{action:'destroy',isDestroyOperation:!0,order:30,foreignKeyDirection:-1,doProcess:function(){var clientRecords=this.getRecords(),clientLen=clientRecords.length,i;for(i=0;i<clientLen;++i)clientRecords[i].setErased()},doExecute:function(){return this.getProxy().erase(this)},getRecordData:function(record,operation){operation={};var idField=record.idField,nameProperty=this.getNameProperty()||'name';operation[idField[nameProperty]]=
record.id;return operation}},0,0,0,0,['data.operation.destroy'],0,[Ext.data.operation,'Destroy'],0);Ext.cmd.derive('Ext.data.operation.Read',Ext.data.operation.Operation,{action:'read',isReadOperation:!0,config:{filters:void 0,sorters:void 0,grouper:void 0,start:void 0,limit:void 0,page:void 0,addRecords:!1},doExecute:function(){return this.getProxy().read(this)},doProcess:Ext.emptyFn,allowWrite:function(){return!1}},0,0,0,0,['data.operation.read'],0,[Ext.data.operation,'Read'],0);
Ext.cmd.derive('Ext.data.operation.Update',Ext.data.operation.Operation,{action:'update',isUpdateOperation:!0,order:20,config:{recordCreator:Ext.identityFn},doExecute:function(){return this.getProxy().update(this)}},0,0,0,0,['data.operation.update'],0,[Ext.data.operation,'Update'],0);
Ext.cmd.derive('Ext.data.SortTypes',Ext.Base,{singleton:!0,none:Ext.identityFn,stripCommasRe:/,/g,stripTagsRE:/<\/?[^>]+>/gi,asText:function(s){return null!=s?String(s).replace(this.stripTagsRe,''):'\x00'},asUCText:function(s){return null!=s?String(s).toUpperCase().replace(this.stripTagsRe,''):'\x00'},asUCString:function(s){return null!=s?String(s).toUpperCase():'\x00'},asDate:function(s){return s?Ext.isDate(s)?s.getTime():Date.parse(String(s)):0},asFloat:function(s){s=parseFloat(String(s).replace(this.stripCommasRe,
''));return isNaN(s)?0:s},asInt:function(s){s=parseInt(String(s).replace(this.stripCommasRe,''),10);return isNaN(s)?0:s}},0,0,0,0,0,0,[Ext.data,'SortTypes'],0);
Ext.cmd.derive('Ext.data.validator.Validator',Ext.Base,{isValidator:!0,type:'base',statics:{all:{},register:function(name,cls){var all=this.all;all[name.toUpperCase()]=all[name.toLowerCase()]=all[name]=cls.prototype}},onClassExtended:function(cls,data){data.type&&Ext.data.validator.Validator.register(data.type,cls)},constructor:function(config){'function'===typeof config?(this.fnOnly=!0,this.validate=config):this.initConfig(config)},validate:function(){return!0},clone:function(){return this.fnOnly?
new Ext.data.validator.Validator(this.validate):new this.self(this.getCurrentConfig())}},1,0,0,0,['data.validator.base'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.validator,'Validator'],function(){this.register(this.prototype.type,this)});
Ext.cmd.derive('Ext.data.field.Field',Ext.Base,{alternateClassName:'Ext.data.Field',aliasPrefix:'data.field.',type:'auto',factoryConfig:{defaultProperty:'name'},isDataField:!0,isField:!0,allowBlank:!0,allowNull:!1,critical:!1,defaultInvalidMessage:'This field is invalid',defaultValue:void 0,definedBy:null,depends:null,dependents:null,mapping:null,name:null,ordinal:void 0,persist:null,reference:null,unique:!1,rank:null,stripRe:/[\$,%]/g,calculated:!1,evil:!1,identifier:!1,onClassExtended:function(cls,
data){var sortType=data.sortType;cls=cls.prototype;var superValidators=cls.validators,validators=data.validators;sortType&&Ext.isString(sortType)&&(cls.sortType=Ext.data.SortTypes[sortType]);validators&&(Ext.isArray(validators)||(validators=[validators]),delete data.validators,superValidators&&(validators=superValidators.concat(validators)),cls.validators=validators)},argumentNamesRe:/^function\s*\(\s*([^,\)\s]+)/,calculateRe:/[^\.a-z0-9_]([a-z_][a-z_0-9]*)\.([a-z_][a-z_0-9]*)/gi,constructor:function(config){var calculateRe=
this.calculateRe,calculate,calculated,match,dataProp;if(config)if(Ext.isString(config))this.name=config;else{if(calculate=config.validators)delete config.validators,this.instanceValidators=calculate;Ext.apply(this,config)}this.allowNull||(this.allowNull=!!this.reference);calculate=this.calculate;config=this.depends;if(calculate&&(this.convert=this.doCalculate,!config)){if(!(config=calculate.$depends)){var map={};var str=calculate.toString();calculate.$depends=config=[];for(dataProp=(match=this.argumentNamesRe.exec(str))?
match[1]:'data';match=calculateRe.exec(str);)dataProp!==match[1]||map[calculated=match[2]]||(map[calculated]=1,config.push(calculated))}this.depends=config}calculateRe=this.defaultValue;this.convert&&(this.evil=(this.calculated=calculated=1<this.convert.length)&&!config);null===this.persist&&(this.persist=!calculate);calculate=this.sortType;this.sortType?Ext.isString(calculate)&&(this.sortType=Ext.data.SortTypes[calculate]):this.sortType=Ext.data.SortTypes.none;config&&'string'===typeof config&&(this.depends=
[config]);this.cloneDefaultValue=void 0!==calculateRe&&(Ext.isDate(calculateRe)||Ext.isArray(calculateRe)||Ext.isObject(calculateRe))},setModelValidators:function(modelValidators){this._validators=null;this.modelValidators=modelValidators},compileValidators:function(){this._validators=[];this.constructValidators(this.validators);this.constructValidators(this.modelValidators);this.constructValidators(this.instanceValidators)},constructValidators:function(validators){if(validators){validators instanceof
Array||(validators=[validators]);var length=validators.length,all=this._validators,i;for(i=0;i<length;++i){var item=validators[i];item.fn&&(item=item.fn);all.push(Ext.Factory.dataValidator(item))}}},collate:function(value1,value2){this.sortType&&(value1=this.sortType(value1),value2=this.sortType(value2));return value1===value2?0:value1<value2?-1:1},compare:function(value1,value2){return value1===value2?0:value1<value2?-1:1},isEqual:function(value1,value2){return 0===this.compare(value1,value2)},convert:null,
serialize:null,validate:function(value,separator,errors,record){var ret='',length;this._validators||this.compileValidators();var validators=this._validators;var i=0;for(length=validators.length;i<length;++i){var result=validators[i];result=result.validate(value,record);if(!0!==result)if(result=result||this.defaultInvalidMessage,errors)errors.add(this.name,result),ret=ret||result;else if(separator)ret&&(ret+=separator),ret+=result;else{ret=result;break}}return ret||!0},doCalculate:function(v,rec){return rec?
this.calculate(rec.data):v},getName:function(){return this.name},getAllowBlank:function(){return this.allowBlank},getAllowNull:function(){return this.allowNull},getConvert:function(){return this.convert},getDefaultValue:function(){return this.defaultValue},getDepends:function(){return this.depends},getMapping:function(){return this.mapping},hasMapping:function(){var map=this.mapping;return!(!map&&0!==map)},getPersist:function(){return this.persist},getSortType:function(){return this.sortType},getType:function(){return'auto'},
deprecated:{'5.1':{methods:{getSortDir:function(){return this.sortDir}}}}},1,0,0,0,['data.field.auto'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.field,'Field',Ext.data,'Field'],0);
Ext.cmd.derive('Ext.data.field.Boolean',Ext.data.field.Field,{isBooleanField:!0,trueRe:/^\s*(?:true|yes|on|1)\s*$/i,convert:function(v){return'boolean'===typeof v?v:!this.allowNull||void 0!==v&&null!==v&&''!==v?this.trueRe.test(String(v)):null},getType:function(){return'bool'}},0,0,0,0,['data.field.bool','data.field.boolean'],0,[Ext.data.field,'Boolean'],0);
Ext.cmd.derive('Ext.data.field.Date',Ext.data.field.Field,{sortType:'asDate',isDateField:!0,dateFormat:null,dateReadFormat:null,dateWriteFormat:null,compare:function(lhs,rhs){var lhsIsDate=lhs instanceof Date,rhsIsDate=rhs instanceof Date;rhsIsDate&&lhsIsDate?(lhs=lhs.getTime()-rhs.getTime(),lhs=0===lhs?0:0>lhs?-1:1):lhs=lhsIsDate===rhsIsDate?0:lhsIsDate?1:-1;return lhs},convert:function(v){if(!v)return null;if(v instanceof Date)return v;var dateFormat=this.dateReadFormat||this.dateFormat;return dateFormat?
Ext.Date.parse(v,dateFormat,this.useStrict):(v=Date.parse(v))?new Date(v):null},serialize:function(value){var result=null;Ext.isDate(value)&&(result=(result=this.getDateWriteFormat())?Ext.Date.format(value,result):value);return result},getDateFormat:function(){return this.dateFormat},getDateReadFormat:function(){return this.dateReadFormat},getDateWriteFormat:function(){return this.hasOwnProperty('dateWriteFormat')?this.dateWriteFormat:this.hasOwnProperty('dateFormat')?this.dateFormat:this.dateWriteFormat||
this.dateFormat||'timestamp'},getType:function(){return'date'}},0,0,0,0,['data.field.date'],0,[Ext.data.field,'Date'],0);
Ext.cmd.derive('Ext.data.field.Integer',Ext.data.field.Field,{isNumeric:!0,isIntegerField:!0,numericType:'int',convert:function(v){if('number'===typeof v)return this.getNumber(v);var allowNull=this.allowNull;void 0===v||null===v||''===v?v=allowNull?null:0:(v=this.parse(v),allowNull&&isNaN(v)&&(v=null));return v},getNumber:function(v){return parseInt(v,10)},getType:function(){return this.numericType},parse:function(v){return parseInt(String(v).replace(this.stripRe,''),10)},sortType:function(s){null==
s&&(s=Infinity);return s}},0,0,0,0,['data.field.int','data.field.integer'],0,[Ext.data.field,'Integer'],0);Ext.cmd.derive('Ext.data.field.Number',Ext.data.field.Integer,{isIntegerField:!1,isNumberField:!0,numericType:'float',getNumber:Ext.identityFn,parse:function(v){return parseFloat(String(v).replace(this.stripRe,''))}},0,0,0,0,['data.field.float','data.field.number'],0,[Ext.data.field,'Number'],0);
Ext.cmd.derive('Ext.data.field.String',Ext.data.field.Field,{sortType:'asUCString',isStringField:!0,convert:function(v){var defaultValue=this.allowNull?null:'';return void 0===v||null===v?defaultValue:String(v)},getType:function(){return'string'}},0,0,0,0,['data.field.string'],0,[Ext.data.field,'String'],0);
Ext.cmd.derive('Ext.data.identifier.Generator',Ext.Base,{'abstract':!0,factoryConfig:{defaultType:'sequential'},isGenerator:!0,config:{id:null},constructor:function(config){this.initConfig(config);(config=this.getId())&&(Ext.data.identifier.Generator.all[config]=this)},privates:{clone:function(config){var cfg=this.getInitialConfig();cfg=config?Ext.apply({},config,cfg):cfg;return new this.self(cfg)},statics:{all:{}}}},1,0,0,0,['data.identifier.default'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,
Ext.mixin.Factoryable]],[Ext.data.identifier,'Generator'],function(){var Generator=this,Factory=Ext.Factory,factory=Factory.dataIdentifier;Factory.dataIdentifier=function(config){var id=Ext.isString(config)?config:config&&config.id;return id&&Generator.all[id]||factory(config)}});
Ext.cmd.derive('Ext.data.identifier.Sequential',Ext.data.identifier.Generator,{config:{increment:1,prefix:null,seed:1},generate:function(){var seed=this._seed,prefix=this._prefix;this._seed+=this._increment;return null!==prefix?prefix+seed:seed}},0,0,0,0,['data.identifier.sequential'],0,[Ext.data.identifier,'Sequential'],0);
Ext.cmd.derive('Ext.data.Model',Ext.Base,{alternateClassName:'Ext.data.Record',isEntity:!0,isModel:!0,validIdRe:null,erasing:!1,observableType:'record',crudState:'R',crudStateWas:null,constructor:function(data,session){var cls=this.self,identifier=cls.identifier,Model=Ext.data.Model,modelIdentifier=Model.identifier,idProperty=this.idField.name,array,id,internalId,i;this.data=data||(data={});this.session=session||null;this.internalId=internalId=modelIdentifier.generate();if((array=data)instanceof Array){this.data=
data={};var fields=this.getFields();var len=Math.min(fields.length,array.length);for(i=0;i<len;++i)data[fields[i].name]=array[i]}(array=cls.initializeFn)||(cls.initializeFn=array=Model.makeInitializeFn(cls));array.$nullFn||cls.initializeFn(this);(this.id=id=data[idProperty])||0===id||(session?(identifier=session.getIdentifier(cls),id=identifier.generate()):id=modelIdentifier===identifier?internalId:identifier.generate(),data[idProperty]=this.id=id,this.phantom=!0,this.crudState='C');session&&session.add(this);
this.init&&Ext.isFunction(this.init)&&this.init()},editing:!1,dirty:!1,session:null,dropped:!1,erased:!1,clientIdProperty:null,evented:!1,phantom:!1,idProperty:'id',manyToMany:null,identifier:null,previousValues:void 0,proxy:void 0,schema:'default',versionProperty:null,generation:1,validationSeparator:null,convertOnSet:!0,beginEdit:function(){var modified=this.modified,previousValues=this.previousValues;this.editing||(this.editing=!0,this.editMemento={dirty:this.dirty,data:Ext.apply({},this.data),
generation:this.generation,modified:modified&&Ext.apply({},modified),previousValues:previousValues&&Ext.apply({},previousValues)})},cancelEdit:function(){var editMemento=this.editMemento;editMemento&&(this.editing=!1,Ext.apply(this,editMemento),this.editMemento=null)},endEdit:function(silent,modifiedFieldNames){var editMemento=this.editMemento;editMemento&&(this.editing=!1,this.editMemento=null,this.previousValues=editMemento.previousValues,silent||(modifiedFieldNames||(modifiedFieldNames=this.getModifiedFieldNames(editMemento.data)),
(this.dirty||modifiedFieldNames&&modifiedFieldNames.length)&&this.callJoined('afterEdit',[modifiedFieldNames])))},getField:function(name){return this.self.getField(name)},getFields:function(){return this.self.getFields()},getFieldsMap:function(){return this.fieldsMap},getIdProperty:function(){return this.idProperty},getId:function(){return this.id},getObservableId:function(){return this.internalId},setId:function(id,options){this.set(this.idProperty,id,options)},getPrevious:function(fieldName){var previousValues=
this.previousValues;return previousValues&&previousValues[fieldName]},isModified:function(fieldName){var modified=this.modified;return!(!modified||!modified.hasOwnProperty(fieldName))},getModified:function(fieldName){var out;this.isModified(fieldName)&&(out=this.modified[fieldName]);return out},get:function(fieldName){return this.data[fieldName]},_singleProp:{},_rejectOptions:{convert:!1,silent:!0},set:function(fieldName,newValue,options){var cls=this.self,data=this.data,modified=this.modified,prevVals=
this.previousValues,session=this.session,single=Ext.isString(fieldName),opt=single?options:newValue;options=opt?!1!==opt.convert:this.convertOnSet;var fieldsMap=this.fieldsMap,silent=opt&&opt.silent,commit=opt&&opt.commit,updateRefs=!(opt&&!1===opt.refs)&&session;opt=!(opt&&!1===opt.dirty&&!commit);var modifiedFieldNames=null,dirtyRank=0,associations=this.associations,field,key,name,dependents,i,roleName;if(single){var values=this._singleProp;values[fieldName]=newValue}else values=fieldName;(newValue=
cls.rankedFields)||(newValue=cls.rankFields());var numFields=newValue.length;do{for(name in values){var value=values[name];cls=data[name];var comparator=this;if(field=fieldsMap[name]){options&&field.convert&&(value=field.convert(value,this));comparator=field;var dep=field.reference}else dep=null;if(!comparator.isEqual(cls,value)){data[name]=value;(modifiedFieldNames||(modifiedFieldNames=[])).push(name);(prevVals||(this.previousValues=prevVals={}))[name]=cls;dep&&dep.cls&&(updateRefs&&session.updateReference(this,
field,value,cls),dep.onValueChange(this,session,value,cls));for(i=(dependents=field&&field.dependents)&&dependents.length;0<i--;)(dep=dependents[i]).dirty=!0,dirtyRank=dirtyRank?Math.min(dirtyRank,dep.rank):dep.rank;if(!field||field.persist)if(modified&&modified.hasOwnProperty(name)){if(!opt||comparator.isEqual(modified[name],value))delete modified[name],this.dirty=-1}else opt&&(modified||(this.modified=modified={}),this.dirty=!0,modified[name]=cls);if(name===this.idField.name){var idChanged=!0;var oldId=
cls;var newId=value}}}if(!dirtyRank)break;field=newValue[dirtyRank-1];field.dirty=!1;single?delete values[fieldName]:(values=this._singleProp,single=!0);fieldName=field.name;values[fieldName]=data[fieldName];for(options=!0;dirtyRank<numFields&&!newValue[dirtyRank].dirty;++dirtyRank);dirtyRank<numFields?++dirtyRank:dirtyRank=0}while(1);if(0>this.dirty)for(key in this.dirty=!1,modified)if(modified.hasOwnProperty(key)){this.dirty=!0;break}single&&delete values[fieldName];++this.generation;if(idChanged&&
(this.id=newId,this.onIdChanged(newId,oldId),this.callJoined('onIdChanged',[oldId,newId]),associations))for(roleName in associations)associations[roleName].onIdChanged(this,oldId,newId);commit?this.commit(silent,modifiedFieldNames):silent||this.editing||!modifiedFieldNames||this.callJoined('afterEdit',[modifiedFieldNames]);return modifiedFieldNames},reject:function(silent){var modified=this.modified;modified&&this.set(modified,this._rejectOptions);this.dropped=!1;this.clearState();silent||this.callJoined('afterReject')},
commit:function(silent,modifiedFieldNames){var versionProperty=this.versionProperty,data=this.data,erased;this.clearState();!versionProperty||this.phantom||isNaN(data[versionProperty])||++data[versionProperty];this.phantom=!1;this.dropped&&(this.erased=erased=!0);silent||(erased?this.callJoined('afterErase'):this.callJoined('afterCommit',[modifiedFieldNames]))},clearState:function(){this.dirty=this.editing=!1;this.editMemento=this.modified=null},drop:function(cascade){var associations=this.associations,
session=this.session,roleName;if(!this.erased&&!this.dropped){this.dropped=!0;if(associations&&!1!==cascade)for(roleName in associations)associations[roleName].onDrop(this,session);this.callJoined('afterDrop');this.phantom&&this.setErased()}},join:function(item){var joined=this.joined;joined?joined.length?Ext.Array.include(joined,item):joined[0]=item:this.joined=[item];item.isStore&&!this.store&&(this.store=item)},unjoin:function(item){var joined=this.joined,len=joined&&joined.length,store=this.store;
if(item===this.session)this.session=null;else if(1===len&&joined[0]===item?joined.length=0:len&&Ext.Array.remove(joined,item),store===item){store=null;if(joined){var i=0;for(len=joined.length;i<len;++i)if(item=joined[i],item.isStore){store=item;break}}this.store=store}},clone:function(session){var modified=this.modified;session=this.copy(this.id,session);modified&&(session.modified=Ext.apply({},modified));session.dirty=this.dirty;session.dropped=this.dropped;session.phantom=this.phantom;return session},
copy:function(newId,session){var data=Ext.apply({},this.data),idProperty=this.idProperty,T=this.self;newId||0===newId?data[idProperty]=newId:null===newId&&delete data[idProperty];return new T(data,session)},getProxy:function(){return this.self.getProxy()},getValidation:function(refresh){var ret=this.validation;ret||(this.validation=ret=new Ext.data.Validation,ret.attach(this));(!0===refresh||!1!==refresh&&ret.syncGeneration!==this.generation)&&ret.refresh(refresh);return ret},validate:function(){return(new Ext.data.ErrorCollection).init(this)},
isValid:function(){return this.getValidation().isValid()},toUrl:function(){var pieces=this.$className.split('.');return pieces[pieces.length-1].toLowerCase()+'/'+this.getId()},erase:function(options){this.erasing=!0;this.drop();this.erasing=!1;return this.save(options)},setErased:function(){this.erased=!0;this.callJoined('afterErase')},getChanges:function(){return this.getData(this._getChangesOptions)},getCriticalFields:function(){var cls=this.self,ret=cls.criticalFields;ret||(cls.rankFields(),ret=
cls.criticalFields);return ret},getAssociatedData:function(result,options){var associations=this.associations,item,roleName;result=result||{};this.$gathering=1;options&&(options=Ext.Object.chain(options));for(roleName in associations){var i=associations[roleName];if((item=i.getAssociatedItem(this))&&!item.$gathering){if(item.isStore){item.$gathering=1;var items=item.getData().items;var length=items.length;var itemData=[];for(i=0;i<length;++i){var record=items[i];var deep=!record.$gathering;record.$gathering=
1;if(options){var associated=options.associated;if(void 0===associated){options.associated=deep;var clear=!0}else deep||(options.associated=!1,clear=!0);deep=options}else deep=deep?this._getAssociatedOptions:this._getNotAssociatedOptions;itemData.push(record.getData(deep));clear&&(options.associated=associated,clear=!1);delete record.$gathering}delete item.$gathering}else deep=options||this._getAssociatedOptions,options&&void 0===options.associated&&(deep.associated=!0),itemData=item.getData(deep);
result[roleName]=itemData}}delete this.$gathering;return result},getData:function(options){var ret={};options=!0===options?this._getAssociatedOptions:options||ret;var data=this.data,associated=options.associated,changes=options.changes,critical=changes&&options.critical,content=changes?this.modified:data,fieldsMap=this.fieldsMap,persist=options.persist;changes=options.serialize;if(content)for(name in content){var value=data[name];if(content=fieldsMap[name]){if(persist&&!content.persist)continue;changes&&
content.serialize&&(value=content.serialize(value,this))}ret[name]=value}if(critical)for(critical=this.self.criticalFields||this.getCriticalFields(),fieldsMap=critical.length;0<fieldsMap--;){var name=(content=critical[fieldsMap]).name;name in ret||(value=data[name],changes&&content.serialize&&(value=content.serialize(value,this)),ret[name]=value)}associated&&this.getAssociatedData(ret,options);return ret},getTransientFields:function(){var cls=this.self,ret=cls.transientFields;ret||(cls.rankFields(),
ret=cls.transientFields);return ret},isLoading:function(){return!!this.loadOperation},abort:function(){var operation=this.loadOperation;operation&&operation.abort()},load:function(options){options=Ext.apply({},options);var me=this,scope=options.scope||me,proxy=me.getProxy(),callback=options.callback,operation$jscomp$0=me.loadOperation,id=me.getId();if(operation$jscomp$0)return proxy=operation$jscomp$0.extraCalls,proxy||(proxy=operation$jscomp$0.extraCalls=[]),proxy.push(options),operation$jscomp$0;
options.id=id;options.recordCreator=function(data,type,readOptions){type=me.session;readOptions&&(readOptions.recordCreator=type?type.recordCreator:null);me.set(data,me._commitOptions);return me};options.internalCallback=function(operation){var success=operation.wasSuccessful()&&0<operation.getRecords().length,extras=me.loadOperation.extraCalls,successFailArgs=[me,operation];operation=[me,operation,success];var len;me.loadOperation=null;success?Ext.callback(options.success,scope,successFailArgs):
Ext.callback(options.failure,scope,successFailArgs);Ext.callback(callback,scope,operation);if(extras){var i=0;for(len=extras.length;i<len;++i)options=extras[i],success?Ext.callback(options.success,scope,successFailArgs):Ext.callback(options.failure,scope,successFailArgs),Ext.callback(options.callback,scope,operation)}me.callJoined('afterLoad')};delete options.callback;me.loadOperation=operation$jscomp$0=proxy.createOperation('read',options);operation$jscomp$0.execute();return operation$jscomp$0},
save:function(options){options=Ext.apply({},options);var me=this,phantom=me.phantom,dropped=me.dropped,action=dropped?'destroy':phantom?'create':'update',scope=options.scope||me,callback=options.callback,proxy=me.getProxy();options.records=[me];options.internalCallback=function(operation){var args=[me,operation];(operation=operation.wasSuccessful())?Ext.callback(options.success,scope,args):Ext.callback(options.failure,scope,args);args.push(operation);Ext.callback(callback,scope,args)};delete options.callback;
action=proxy.createOperation(action,options);dropped&&phantom?(action.setResultSet(Ext.data.reader.Reader.prototype.nullResultSet),me.setErased(),action.setSuccessful(!0)):action.execute();return action},inheritableStatics:{addFields:function(newFields){this.replaceFields(newFields)},replaceFields:function(newFields,removeFields){var proto=this.prototype,Field=Ext.data.field.Field,fields=this.fields,fieldsMap=this.fieldsMap,ordinals=this.fieldOrdinals,i,len,ordinal;if(!0===removeFields)fields.length=
0,this.fieldsMap=fieldsMap={},this.fieldOrdinals=ordinals={};else if(removeFields){for(i=removeFields.length;0<i--;){var name=removeFields[i];name in ordinals&&(delete ordinals[name],delete fieldsMap[name])}i=0;for(len=fields.length;i<len;++i)name=fields[i].name,name in ordinals?ordinals[name]=i:(fields.splice(i,1),--i,--len)}i=0;for(len=newFields?newFields.length:0;i<len;i++)name=(removeFields=newFields[i]).name,name in ordinals||(ordinals[name]=ordinal=fields.length,fields.push(removeFields=Field.create(removeFields)),
fieldsMap[name]=removeFields,removeFields.ordinal=ordinal,removeFields.definedBy=removeFields.owner=this);this.idField=proto.idField=newFields=fieldsMap[proto.idProperty];newFields.allowNull=newFields.critical=newFields.identifier=!0;this.initializeFn=this.rankedFields=this.transientFields=this.criticalFields=newFields.defaultValue=null},removeFields:function(removeFields){this.replaceFields(null,removeFields)},getIdFromData:function(data){var idField=this.idField;return idField.calculated?(new this(data)).id:
data[idField.name]},createWithId:function(id,data,session){var d=data;if(id||0===id)d={},data&&Ext.apply(d,data),d[this.idField.name]=id;return new this(d,session)},getFields:function(){return this.fields},getFieldsMap:function(){return this.fieldsMap},getField:function(name){return this.fieldsMap[name]||null},getProxy:function(){var proxy=this.proxy,defaultProxy=this.defaultProxy;proxy||(proxy=this.proxyConfig,!proxy&&defaultProxy&&(proxy=defaultProxy),proxy&&proxy.isProxy||('string'===typeof proxy&&
(proxy={type:proxy}),defaultProxy=this.schema.constructProxy(this),proxy=proxy?Ext.merge(defaultProxy,proxy):defaultProxy),proxy=this.setProxy(proxy));return proxy},setProxy:function(proxy){var model;proxy&&(proxy.isProxy?(model=proxy.getModel())&&model!==this&&(proxy=proxy.clone()):proxy=Ext.Factory.proxy(proxy),proxy.setModel(this));return this.prototype.proxy=this.proxy=proxy},load:function(id,options,session){var data={};data[this.prototype.idProperty]=id;id=new this(data,session);id.load(options);
return id}},deprecated:{5:{methods:{hasId:null,markDirty:null,setDirty:null,eachStore:function(callback,scope){var stores=this.stores,len=stores.length,i;for(i=0;i<len;++i)callback.call(scope,stores[i])},join:function(item){var stores=this.stores,joined=this.joined;joined?joined.push(item):this.joined=[item];item.isStore&&(this.store=this.store||item,stores||(stores=this.stores=[]),stores.push(item))},unjoin:function(item){var stores=this.stores,joined=this.joined;1===joined.length?joined.length=
0:Ext.Array.remove(joined,item);item.isStore&&(Ext.Array.remove(stores,item),this.store=stores[0]||null)}},properties:{persistenceProperty:null},inheritableStatics:{methods:{setFields:null}}}},privates:{_commitOptions:{commit:!0},_getChangesOptions:{changes:!0},_getAssociatedOptions:{associated:!0},_getNotAssociatedOptions:{associated:!1},copyFrom:function(sourceRecord){var fields=this.fields,fieldCount=fields.length,modifiedFieldNames=[],i=0,sourceData,idProperty=this.idProperty;if(sourceRecord){var myData=
this.data;for(sourceData=sourceRecord.data;i<fieldCount;i++){var field=fields[i];field=field.name;if(field!==idProperty){var value=sourceData[field];void 0===value||this.isEqual(myData[field],value)||(myData[field]=value,modifiedFieldNames.push(field))}}this.phantom&&!sourceRecord.phantom&&(this.beginEdit(),this.setId(sourceRecord.getId()),this.endEdit(!0),this.commit(!0))}return modifiedFieldNames},callJoined:function(funcName,args){var joined=this.joined,session=this.session,state=this.dropped?
'D':this.phantom?'C':this.dirty?'U':'R',len,fn,item;this.crudState=state;if(joined||session){args?args.unshift(this):args=[this];if(joined){var i=0;for(len=joined.length;i<len;++i)(item=joined[i])&&(fn=item[funcName])&&fn.apply(item,args)}(fn=session&&session[funcName])&&fn.apply(session,args)}this.crudStateWas=state},onAssociatedRecordSet:function(record,role){this.callJoined('afterAssociatedRecordSet',[record,role])},onIdChanged:Ext.privateFn,setSession:function(session){(this.session=session)&&
session.add(this)},getModifiedFieldNames:function(old){var data=this.data,modified=[];old=old||this.editMemento.data;for(var key in data)data.hasOwnProperty(key)&&(this.isEqual(data[key],old[key],key)||modified.push(key));return modified},isEqual:function(lhs,rhs,field){return field&&(field=field.isField?field:this.fieldsMap[field])?field.isEqual(lhs,rhs):lhs instanceof Date&&rhs instanceof Date?lhs.getTime()===rhs.getTime():lhs===rhs},statics:{EDIT:'edit',REJECT:'reject',COMMIT:'commit',defaultProxy:'memory',
rankFields:function(){var prototype=this.prototype,fields=this.fields,length=fields.length,rankedFields=[],criticalFields=[],transientFields=[],evilFields;this.rankedFields=prototype.rankedFields=rankedFields;this.criticalFields=prototype.criticalFields=criticalFields;this.transientFields=prototype.transientFields=transientFields;for(prototype=0;prototype<length;++prototype){var field=fields[prototype];field.critical&&criticalFields.push(field);field.persist||transientFields.push(field);field.evil?
(evilFields||(evilFields=[])).push(field):field.depends||(rankedFields.push(field),field.rank=rankedFields.length)}for(prototype=0;prototype<length;++prototype)(field=fields[prototype]).rank||field.evil||this.topoAdd(field);if(evilFields)for(prototype=0,length=evilFields.length;prototype<length;++prototype)rankedFields.push(field=evilFields[prototype]),field.rank=rankedFields.length;return rankedFields},topoAdd:function(field){var dep=field.depends,dependsLength=dep?dep.length:0,rankedFields=this.rankedFields,
i;for(i=0;i<dependsLength;++i){var targetField=this.fieldsMap[dep[i]];(targetField.dependents||(targetField.dependents=[])).push(field);targetField.rank||this.topoAdd(targetField)}rankedFields.push(field);field.rank=rankedFields.length},initFields:function(data,cls,proto){var Field=Ext.data.field.Field,fieldDefs=data.fields,fields=[],fieldOrdinals={},fieldsMap={},superFields=proto.fields,versionProperty=data.versionProperty||proto.versionProperty,idProperty=cls.idProperty,field,length,name,idDeclared;
cls.fields=proto.fields=fields;cls.fieldOrdinals=proto.fieldOrdinals=fieldOrdinals;cls.fieldsMap=proto.fieldsMap=fieldsMap;cls.references=proto.references=[];if(superFields){var i=0;for(length=superFields.length;i<length;++i)if(fields[i]=field=Ext.Object.chain(superFields[i]),field.dependents=null,field.owner=cls,fieldOrdinals[name=field.name]=i,fieldsMap[name]=field,field.rank=null,field.generated){var superIdField=field;var superIdFieldName=field.name}}if(fieldDefs)for(delete data.fields,i=0,length=
fieldDefs.length;i<length;++i)field=fieldDefs[i],(name=field.reference)&&'string'!==typeof name&&(name=Ext.merge({},name)),field.$reference=name,field=Field.create(fieldDefs[i]),name=field.name,data=fieldOrdinals[name],void 0===data&&(fieldOrdinals[name]=data=fields.length),fieldsMap[name]=field,fields[data]=field,field.definedBy=field.owner=cls,field.ordinal=data,name===idProperty&&(idDeclared=field);fieldDefs=fieldsMap[idProperty];if(!fieldDefs)data=superIdField&&superIdField.generated?superIdField.ordinal:
fields.length,delete fieldsMap[superIdFieldName],delete fieldOrdinals[superIdFieldName],fieldDefs=new Field(idProperty),fields[data]=fieldDefs,fieldOrdinals[idProperty]=data,fieldsMap[idProperty]=fieldDefs,fieldDefs.definedBy=cls,fieldDefs.ordinal=data,fieldDefs.generated=!0;else if(idDeclared&&superIdField&&superIdField.generated)for(Ext.Array.remove(fields,superIdField),delete fieldsMap[superIdFieldName],delete fieldOrdinals[superIdFieldName],fieldsMap[idProperty]=idDeclared,i=0,length=fields.length;i<
length;++i)field=fields[i],fields.ordinal=i,fieldOrdinals[field.name]=i;fieldDefs.allowNull=fieldDefs.critical=fieldDefs.identifier=!0;fieldDefs.defaultValue=null;cls.idField=proto.idField=fieldDefs;versionProperty&&(field=fieldsMap[versionProperty],field||(data=fields.length,field=new Field({name:versionProperty,type:'int'}),fields[data]=field,fieldOrdinals[versionProperty]=data,fieldsMap[versionProperty]=field,field.definedBy=cls,field.ordinal=data,field.generated=!0),field.defaultValue=1,field.critical=
!0)},initValidators:function(data,cls,proto){var superValidators=proto.validators,length;if(superValidators){var validators={};for(field in superValidators)validators[field]=Ext.Array.clone(superValidators[field])}if(superValidators=data.validators||data.validations){delete data.validators;validators=validators||{};if(Ext.isArray(superValidators)){data={};var field=0;for(length=superValidators.length;field<length;++field){var item=superValidators[field];var name=item.field;data[name]||(data[name]=
[]);item=item.fn||item;data[name].push(item)}superValidators=data}for(name in superValidators)data=superValidators[name],Ext.isArray(data)||(data=[data]),field=validators[name],validators[name]?Ext.Array.push(field,data):validators[name]=data}if(validators)for(name in validators)(field=cls.getField(name))&&field.setModelValidators(validators[name]);cls.validators=proto.validators=validators},initAssociations:function(schema,data,cls){var associations=data.associations,belongsTo=data.belongsTo,hasMany=
data.hasMany,hasOne=data.hasOne,matrices=data.manyToMany;delete data.associations;delete data.belongsTo;delete data.hasMany;delete data.hasOne;delete data.manyToMany;matrices&&schema.addMatrices(cls,matrices);if(associations)for(associations=Ext.isArray(associations)?associations:[associations],data=0,matrices=associations.length;data<matrices;++data){var assoc=associations[data];var o=Ext.apply({},assoc);delete o.type;switch(assoc.type){case 'belongsTo':schema.addBelongsTo(cls,o);break;case 'hasMany':schema.addHasMany(cls,
o);break;case 'hasOne':schema.addHasOne(cls,o)}}if(belongsTo)for(belongsTo=Ext.isArray(belongsTo)?belongsTo:[belongsTo],data=0,matrices=belongsTo.length;data<matrices;++data)schema.addBelongsTo(cls,belongsTo[data]);if(hasMany)for(hasMany=Ext.isArray(hasMany)?hasMany:[hasMany],data=0,matrices=hasMany.length;data<matrices;++data)schema.addHasMany(cls,hasMany[data]);if(hasOne)for(hasOne=Ext.isArray(hasOne)?hasOne:[hasOne],data=0,matrices=hasOne.length;data<matrices;++data)schema.addHasOne(cls,hasOne[data]);
schema.afterKeylessAssociations(cls)},initIdentifier:function(data,cls,proto){var identifier=data.identifier||data.idgen,superIdent=proto.identifier||cls.schema._defaultIdentifier;identifier?(delete data.identifier,delete data.idgen,identifier=Ext.Factory.dataIdentifier(identifier)):superIdent&&(identifier=superIdent.clone&&!superIdent.getId()?superIdent.clone():superIdent.isGenerator?superIdent:Ext.Factory.dataIdentifier(superIdent));cls.identifier=proto.identifier=identifier;identifier||((data=
cls.entityName)||(data=Ext.id(null,'extModel')),cls.identifier=Ext.Factory.dataIdentifier({type:'sequential',prefix:data+'-'}))},findValidator:function(validators,name,cfg){cfg=cfg.type||cfg;validators=validators[name];if(validators){var i=0;for(name=validators.length;i<name;++i){var item=validators[i];if(item.type===cfg)return item}}return null},makeInitializeFn:function(cls){var code=['var '],body=['\nreturn function (e) {\n    var data \x3d e.data, v;\n'],work=0,ec,fields,hasDefValue,length;(fields=
cls.rankedFields)||(fields=cls.rankFields());var i=0;for(length=fields.length;i<length;++i){var field=fields[i];var fs='f'+i;var convert=field.convert;i&&code.push(',  \n    ');code.push(fs,' \x3d $fields['+i+']');if((hasDefValue=void 0!==field.defaultValue)||convert){var expr='data["'+field.name+'"]';++work;cls=ec='';field.cloneDefaultValue&&(cls='Ext.clone(',ec=')');body.push('\n');convert&&hasDefValue?body.push('    v \x3d ',expr,';\n    if (v !\x3d\x3d undefined) {\n        v \x3d ',fs,'.convert(v, e);\n    }\n    if (v \x3d\x3d\x3d undefined) {\n        v \x3d ',
cls,fs,'.defaultValue',ec,';\n    }\n    ',expr,' \x3d v;'):convert?body.push('    v \x3d ',fs,'.convert(',expr,',e);\n    if (v !\x3d\x3d undefined) {\n        ',expr,' \x3d v;\n    }\n'):hasDefValue&&body.push('    if (',expr,' \x3d\x3d\x3d undefined) {\n        ',expr,' \x3d ',cls,fs,'.defaultValue',ec,';\n    }\n')}}if(!work)return Ext.emptyFn;code.push(';\n');code.push.apply(code,body);code.push('}');code=code.join('');return(new Function('$fields','Ext',code))(fields,Ext)}}}},1,0,0,0,0,0,[Ext.data,
'Model',Ext.data,'Record'],function(){var Model=this,proto$jscomp$0=Model.prototype,Schema=Ext.data.schema.Schema,defaultSchema;Model.proxyConfig=proto$jscomp$0.proxy;delete proto$jscomp$0.proxy;Model.fields=[];Model.fieldsMap=proto$jscomp$0.fieldsMap={};Model.schema=proto$jscomp$0.schema=Schema.get(proto$jscomp$0.schema);proto$jscomp$0.idField=new Ext.data.field.Field(proto$jscomp$0.idProperty);Model.identifier=new Ext.data.identifier.Sequential;Model.onExtended(function(cls,data){var proto=cls.prototype,
schemaName=data.schema,superCls=proto.superclass.self,entityName;cls.idProperty=data.idProperty||proto.idProperty;schemaName?(delete data.schema,schemaName=Schema.get(schemaName)):(schemaName=proto.schema)||(schemaName=defaultSchema||(defaultSchema=Schema.get('default')));cls.rankFields=Model.rankFields;cls.topoAdd=Model.topoAdd;proto.schema=cls.schema=schemaName;(entityName=data.entityName)||(proto.entityName=entityName=schemaName.getEntityName(cls));cls.entityName=entityName;cls.fieldExtractors=
{};Model.initIdentifier(data,cls,proto);Model.initFields(data,cls,proto);Model.initValidators(data,cls,proto);cls.fields.items=cls.fields;entityName&&(schemaName.addEntity(cls),Model.initAssociations(schemaName,data,cls));(proto=data.proxy)?delete data.proxy:superCls!==Model&&(proto=superCls.proxyConfig||superCls.proxy);cls.proxyConfig=proto})});
Ext.cmd.derive('Ext.data.ResultSet',Ext.Base,{isResultSet:!0,$configPrefixed:!1,config:{loaded:!0,count:null,total:null,success:!1,records:null,message:null,metadata:null},constructor:function(config){this.initConfig(config)},getCount:function(){var count=(arguments.callee.$previous||Ext.Base.prototype.getCount).call(this),records;!count&&(records=this.getRecords())&&(count=records.length);return count}},1,0,0,0,0,0,[Ext.data,'ResultSet'],0);
Ext.cmd.derive('Ext.data.reader.Reader',Ext.Base,{alternateClassName:['Ext.data.Reader','Ext.data.DataReader'],factoryConfig:{defaultType:null},config:{totalProperty:'total',successProperty:'success',rootProperty:'',messageProperty:'',typeProperty:'',implicitIncludes:!0,readRecordsOnFailure:!0,model:null,proxy:null,transform:null,keepRawData:null},isReader:!0,constructor:function(config){config&&config.hasOwnProperty('root')&&(config=Ext.apply({},config),config.rootProperty=config.root,delete config.root);
this.duringInit=1;this.mixins.observable.constructor.call(this,config);--this.duringInit;this.buildExtractors()},applyModel:function(model){return Ext.data.schema.Schema.lookupEntity(model)},applyTransform:function(transform){return transform?(Ext.isFunction(transform)?transform={fn:transform}:transform.charAt&&(transform={fn:this[transform]}),transform.fn.bind(transform.scope||this)):transform},forceBuildExtractors:function(){this.duringInit||this.buildExtractors(!0)},updateTotalProperty:function(){this.forceBuildExtractors()},
updateMessageProperty:function(){this.forceBuildExtractors()},updateSuccessProperty:function(){this.forceBuildExtractors()},read:function(response,readOptions){var responseText;if(response)if(responseText=response.responseText){if((response=this.getResponseData(response))&&response.__$isError)return new Ext.data.ResultSet({total:0,count:0,records:[],success:!1,message:response.msg});var data=this.readRecords(response,readOptions)}else''!==responseText&&(data=this.readRecords(response,readOptions));
return data||this.nullResultSet},getNullResultSet:function(){return this.nullResultSet},createReadError:function(msg){return{__$isError:!0,msg:msg}},readRecords:function(data,readOptions,internalReadOptions){var recordsOnly=internalReadOptions&&internalReadOptions.recordsOnly,asRoot=internalReadOptions&&internalReadOptions.asRoot,success,message;if(internalReadOptions=this.getMeta?this.getMeta(data):data.metaData)this.onMetaChange(internalReadOptions);(success=this.getTransform())&&(data=success(data));
this.buildExtractors();this.getKeepRawData()&&(this.rawData=data);this.hasListeners.rawdata&&this.fireEventArgs('rawdata',[data]);data=this.getData(data);success=!0;var recordCount=0;var records=[];if(this.getSuccessProperty()){var value=this.getSuccess(data);if(!1===value||'false'===value)success=!1}this.getMessageProperty()&&(message=this.getMessage(data));if(success||this.getReadRecordsOnFailure()){if(asRoot=asRoot||Ext.isArray(data)?data:this.getRoot(data))var total=asRoot.length;this.getTotalProperty()&&
(value=parseInt(this.getTotal(data),10),isNaN(value)||(total=value));asRoot&&(records=this.extractData(asRoot,readOptions),recordCount=records.length)}return recordsOnly?records:new Ext.data.ResultSet({total:total||recordCount,metadata:internalReadOptions,count:recordCount,records:records,success:success,message:message})},extractData:function(root,readOptions){var entityType=readOptions&&readOptions.model?Ext.data.schema.Schema.lookupEntity(readOptions.model):this.getModel(),schema=entityType.schema,
includes=schema.hasAssociations(entityType)&&this.getImplicitIncludes(),fieldExtractorInfo=this.getFieldExtractorInfo(entityType.fieldExtractors),length=root.length,records=Array(length),typeProperty=this.getTypeProperty(),nodeType,i;!length&&Ext.isObject(root)&&(root=[root],length=1);for(i=0;i<length;i++){var reader=root[i];if(!reader.isModel){var node=reader;typeProperty&&(nodeType=this.getChildType(schema,node,typeProperty))?(reader=nodeType.getProxy().getReader(),reader=reader.extractRecord(node,
readOptions,nodeType,schema.hasAssociations(nodeType)&&reader.getImplicitIncludes(),reader.getFieldExtractorInfo(nodeType.fieldExtractors))):reader=this.extractRecord(node,readOptions,entityType,includes,fieldExtractorInfo);reader.isModel&&reader.isNode&&(reader.raw=node)}if(reader.onLoad)reader.onLoad();records[i]=reader}return records},getChildType:function(schema,rawNode,typeProperty){switch(typeof typeProperty){case 'string':return schema.getEntity(rawNode[typeProperty]);case 'object':var namespace=
typeProperty.namespace;return schema.getEntity((namespace?namespace+'.':'')+rawNode[typeProperty.name]);case 'function':return schema.getEntity(typeProperty(rawNode))}},extractRecordData:function(node,readOptions){var entityType=readOptions&&readOptions.model?Ext.data.schema.Schema.lookupEntity(readOptions.model):this.getModel(),fieldExtractorInfo=this.getFieldExtractorInfo(entityType.fieldExtractors);return this.extractRecord(node,readOptions,entityType,!1,fieldExtractorInfo)},extractRecord:function(node,
readOptions,entityType,includes,fieldExtractorInfo){var creatorFn=readOptions&&readOptions.recordCreator||this.defaultRecordCreator;fieldExtractorInfo=this.extractModelData(node,fieldExtractorInfo);entityType=creatorFn.call(this,fieldExtractorInfo,entityType||this.getModel(),readOptions);includes&&entityType.isModel&&this.readAssociated(entityType,node,readOptions);return entityType},getFieldExtractorInfo:function(extractors){if(extractors){var type=this.$className,extractor=extractors[type];void 0===
extractor&&(extractors[type]=extractor=this.buildFieldExtractors());return extractor}},buildFieldExtractors:function(){var fields=this.getFields(),len=fields.length,buffer=[],extractors=[],out=null,cnt=0,i,extractor;for(i=0;i<len;++i){var field=fields[i];if(extractor=this.createFieldAccessor(field))field=field.name,buffer.push('val \x3d extractors['+cnt+"](raw); if (val !\x3d\x3d undefined) { data['"+field+"'] \x3d val; }"),extractors.push(extractor),++cnt}buffer.length&&(out={extractors:extractors,
fn:new Function('raw','data','extractors','var val;'+buffer.join(''))});return out},defaultRecordCreator:function(data,Model){data=new Model(data);data.phantom=!1;return data},getModelData:function(raw){return{}},extractModelData:function(raw,fieldExtractorInfo){var data=this.getModelData(raw);if(fieldExtractorInfo){var fn=fieldExtractorInfo.fn;fn(raw,data,fieldExtractorInfo.extractors)}return data},readAssociated:function(record,data,readOptions){var roles=record.associations,key;for(key in roles)if(roles.hasOwnProperty(key)){var role=
roles[key];role.cls&&role.read(record,data,this,readOptions)}},getFields:function(){return this.getModel().fields},getData:Ext.identityFn,getRoot:Ext.identityFn,getResponseData:function(response){},onMetaChange:function(meta){var fields=meta.fields;this.metaData=meta;meta.root&&this.setRootProperty(meta.root);meta.totalProperty&&this.setTotalProperty(meta.totalProperty);meta.successProperty&&this.setSuccessProperty(meta.successProperty);meta.messageProperty&&this.setMessageProperty(meta.messageProperty);
meta=meta.clientIdProperty;fields?(fields=Ext.define(null,{extend:'Ext.data.Model',fields:fields,clientIdProperty:meta}),this.setModel(fields),(meta=this.getProxy())&&meta.setModel(fields)):meta&&(fields=this.getModel())&&(fields.self.prototype.clientIdProperty=meta)},buildExtractors:function(force){if(force||!this.hasExtractors){force=this.getTotalProperty();var successProp=this.getSuccessProperty();var messageProp=this.getMessageProperty();force&&(this.getTotal=this.getAccessor(force));successProp&&
(this.getSuccess=this.getAccessor(successProp));messageProp&&(this.getMessage=this.getAccessor(messageProp));return this.hasExtractors=!0}},getAccessor:function(prop){var cache=this.extractorCache;if('string'===typeof prop){var key=this.getAccessorKey(prop);var ret=cache.get(key);ret||(ret=this.createAccessor(prop),cache.add(key,ret))}else ret=this.createAccessor(prop);return ret},getAccessorKey:function(prop){return this.$className+prop},createAccessor:Ext.emptyFn,createFieldAccessor:Ext.emptyFn,
destroy:function(){this.transform=this.onMetaChange=this.model=this.getTotal=this.getSuccess=this.getMessage=this.rawData=null;this.callParent()},privates:{copyFrom:function(reader){reader.buildExtractors();this.getTotal=reader.getTotal;this.getSuccess=reader.getSuccess;this.getMessage=reader.getMessage;++this.duringInit;this.setConfig(reader.getConfig());--this.duringInit;this.hasExtractors=!0}}},1,0,0,0,['reader.base'],[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable],
[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.reader,'Reader',Ext.data,'Reader',Ext.data,'DataReader'],function(Cls){Cls=Cls.prototype;Ext.apply(Cls,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:!0,message:''})});Cls.extractorCache=new Ext.util.LruCache});
Ext.cmd.derive('Ext.data.writer.Writer',Ext.Base,{factoryConfig:{defaultType:null},alternateClassName:['Ext.data.DataWriter','Ext.data.Writer'],config:{clientIdProperty:null,allDataOptions:{persist:!0},partialDataOptions:{changes:!0,critical:!0},writeAllFields:!1,dateFormat:null,nameProperty:'name',writeRecordId:!0,transform:null},isWriter:!0,constructor:function(config){this.initConfig(config)},applyTransform:function(transform){return transform?(Ext.isFunction(transform)&&(transform={fn:transform}),
transform.fn.bind(transform.scope||this)):transform},write:function(request){var operation=request.getOperation(),records=operation.getRecords()||[],len=records.length,data=[],i;for(i=0;i<len;i++)data.push(this.getRecordData(records[i],operation));return this.writeRecords(request,data)},writeRecords:Ext.emptyFn,getRecordData:function(record,operation){var nameProperty=this.getNameProperty(),mapping='name'!==nameProperty,idField=record.self.idField,key=idField[nameProperty]||idField.name,value=record.id,
writeAll=this.getWriteAllFields(),phantom;idField.serialize&&(value=idField.serialize(value));if(!writeAll&&operation&&operation.isDestroyOperation)idField={},idField[key]=value;else{operation=this.getDateFormat();idField=(phantom=record.phantom)||writeAll?this.getAllDataOptions():this.getPartialDataOptions();phantom=phantom&&this.getClientIdProperty();writeAll=record.getFieldsMap();idField.serialize=!1;var data=record.getData(idField);idField=mapping?{}:data;phantom?(idField[phantom]=value,delete data[key]):
this.getWriteRecordId()||delete data[key];for(key in data)value=data[key],(phantom=writeAll[key])?(phantom.isDateField&&operation&&Ext.isDate(value)?value=Ext.Date.format(value,operation):phantom.serialize&&(value=phantom.serialize(value,record)),mapping&&(key=phantom[nameProperty]||key),idField[key]=value):mapping&&(idField[key]=value)}return idField}},1,0,0,0,['writer.base'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.data.writer,'Writer',
Ext.data,'DataWriter',Ext.data,'Writer'],0);
Ext.cmd.derive('Ext.data.proxy.Proxy',Ext.Base,{$configPrefixed:!1,alternateClassName:['Ext.data.DataProxy','Ext.data.Proxy'],config:{batchOrder:'create,update,destroy',batchActions:!0,model:void 0,reader:{type:'json'},writer:{type:'json'}},isProxy:!0,isSynchronous:!1,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.pendingOperations={}},applyModel:function(model){return Ext.data.schema.Schema.lookupEntity(model)},updateModel:function(model){if(model){var reader=this.getReader();
reader&&!reader.getModel()&&reader.setModel(model)}},applyReader:function(reader){this.isSynchronous&&(reader=reader||{},reader.keepRawData=!0);return Ext.Factory.reader(reader)},updateReader:function(reader){if(reader){var model=this.getModel();model?reader.setModel(model):(model=reader.getModel())&&this.setModel(model)}},applyWriter:function(writer){var reader=this.getReader();writer=Ext.Factory.writer(writer);writer.getRecord&&!writer.getRecord()&&reader&&reader.getRecord&&(reader=reader.getRecord())&&
writer.setRecord(reader);return writer},abort:Ext.emptyFn,onMetaChange:function(meta){this.fireEvent('metachange',this,meta)},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,erase:Ext.emptyFn,batch:function(options,listeners){var useBatch=this.getBatchActions(),batch,a,r;void 0===options.operations&&(options={operations:options,listeners:listeners});options.batch?Ext.isDefined(options.batch.runOperation)&&(batch=Ext.applyIf(options.batch,{proxy:this,listeners:{}})):options.batch={proxy:this,
listeners:options.listeners||{}};batch||(batch=new Ext.data.Batch(options.batch));batch.on('complete',Ext.bind(this.onBatchComplete,this,[options],0));var actions=this.getBatchOrder().split(',');var aLen=actions.length;for(a=0;a<aLen;a++){var action=actions[a];if(listeners=options.operations[action])if(useBatch)batch.add(this.createOperation(action,{records:listeners,params:options.params}));else{var rLen=listeners.length;for(r=0;r<rLen;r++){var record=listeners[r];batch.add(this.createOperation(action,
{records:[record],params:options.params}))}}}batch.start();return batch},onBatchComplete:function(batchOptions,batch){var scope=batchOptions.scope||this;batch.hasException()?Ext.isFunction(batchOptions.failure)&&Ext.callback(batchOptions.failure,scope,[batch,batchOptions]):Ext.isFunction(batchOptions.success)&&Ext.callback(batchOptions.success,scope,[batch,batchOptions]);Ext.isFunction(batchOptions.callback)&&Ext.callback(batchOptions.callback,scope,[batch,batchOptions])},createOperation:function(action,
config){action=Ext.createByAlias('data.operation.'+action,config);action.setProxy(this);return this.pendingOperations[action._internalId]=action},completeOperation:function(operation){delete this.pendingOperations[operation._internalId]},clone:function(){return new this.self(this.getInitialConfig())},destroy:function(){var ops=this.pendingOperations,opId,op;for(opId in ops)(op=ops[opId])&&op.isRunning()&&op.abort();this.pendingOperations=null;this.callParent()}},1,0,0,0,['proxy.proxy'],[[Ext.mixin.Factoryable.prototype.mixinId||
Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable],[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.data.proxy,'Proxy',Ext.data,'DataProxy',Ext.data,'Proxy'],0);Ext.cmd.derive('Ext.data.proxy.Client',Ext.data.proxy.Proxy,{alternateClassName:'Ext.data.ClientProxy',isSynchronous:!0,clear:function(){}},0,0,0,0,0,0,[Ext.data.proxy,'Client',Ext.data,'ClientProxy'],0);
Ext.cmd.derive('Ext.data.proxy.Memory',Ext.data.proxy.Client,{alternateClassName:'Ext.data.MemoryProxy',isMemoryProxy:!0,config:{enablePaging:!1,data:{$value:null,merge:function(newValue,currentValue,target,mixinClass){return Ext.isArray(newValue)?Ext.Array.clone(newValue):Ext.clone(newValue)}}},finishOperation:function(operation){var i=0,recs=operation.getRecords(),len=recs.length;for(i;i<len;i++)recs[i].dropped=!!operation.isDestroyOperation,recs[i].commit();operation.setSuccessful(!0)},create:function(operation){this.finishOperation(operation)},
update:function(operation){this.finishOperation(operation)},erase:function(operation){this.finishOperation(operation)},read:function(operation){var resultSet=this.getReader().read(this.getData()),records=resultSet.getRecords(),sorters=operation.getSorters(),grouper=operation.getGrouper(),filters=operation.getFilters(),start=operation.getStart(),limit=operation.getLimit();if(!1!==operation.process(resultSet,null,null,!1)&&(filters&&filters.length&&(resultSet.setRecords(records=Ext.Array.filter(records,
Ext.util.Filter.createFilterFn(filters))),resultSet.setTotal(records.length)),grouper&&(sorters=sorters?sorters.concat(grouper):sorters),sorters&&sorters.length&&resultSet.setRecords(records=Ext.Array.sort(records,Ext.util.Sortable.createComparator(sorters))),this.getEnablePaging()&&void 0!==start&&void 0!==limit&&(start>=resultSet.getTotal()?resultSet.setConfig({success:!1,records:[],total:0}):resultSet.setRecords(Ext.Array.slice(records,start,start+limit))),operation.setCompleted(),operation=resultSet.getMetadata()))this.onMetaChange(operation)},
clear:Ext.emptyFn},0,0,0,0,['proxy.memory'],0,[Ext.data.proxy,'Memory',Ext.data,'MemoryProxy'],0);
Ext.cmd.derive('Ext.data.ProxyStore',Ext.data.AbstractStore,{config:{model:void 0,fields:null,proxy:void 0,autoLoad:void 0,autoSync:!1,batchUpdateMode:'operation',sortOnLoad:!0,trackRemoved:!0,asynchronousLoad:void 0},onClassExtended:function(cls,data,hooks){var model=data.model;if('string'===typeof model){var onBeforeClassCreated=hooks.onBeforeCreated;hooks.onBeforeCreated=function(){var me=this,args=arguments;Ext.require(model,function(){onBeforeClassCreated.apply(me,args)})}}},implicitModel:'Ext.data.Model',
autoSyncSuspended:0,constructor:function(config){this.removed=[];Ext.data.AbstractStore.prototype.constructor.apply(this,arguments);!1===this.getAsynchronousLoad()&&this.flushLoad()},applyAsynchronousLoad:function(asynchronousLoad){null==asynchronousLoad&&(asynchronousLoad=!this.loadsSynchronously());return asynchronousLoad},updateAutoLoad:function(autoLoad){this.getData();autoLoad&&this.load(Ext.isObject(autoLoad)?autoLoad:void 0)},getTotalCount:function(){return this.totalCount||0},applyFields:function(fields){fields&&
this.createImplicitModel(fields)},applyModel:function(model){model?model=Ext.data.schema.Schema.lookupEntity(model):this.destroying||(this.getFields(),model=this.getModel()||this.createImplicitModel());return model},applyProxy:function(proxy){var model=this.getModel();null!==proxy&&(proxy?proxy.isProxy?proxy.setModel(model):(Ext.isString(proxy)?proxy={type:proxy,model:model}:proxy.model||(proxy=Ext.apply({model:model},proxy)),proxy=Ext.createByAlias('proxy.'+proxy.type,proxy),proxy.autoCreated=!0):
model&&(proxy=model.getProxy(),this.useModelProxy=!0),proxy||(proxy=Ext.createByAlias('proxy.memory'),proxy.autoCreated=!0));return proxy},applyState:function(state){Ext.data.AbstractStore.prototype.applyState.call(this,state);(this.getAutoLoad()||this.isLoaded())&&this.load()},updateProxy:function(proxy,oldProxy){this.proxyListeners=Ext.destroy(this.proxyListeners)},updateTrackRemoved:function(track){this.cleanRemoved();this.removed=track?[]:null},onMetaChange:function(proxy,meta){this.fireEvent('metachange',
this,meta)},create:function(data,options){data=new (this.getModel())(data);options=Ext.apply({},options);options.records||(options.records=[data]);options.internalScope=this;options.internalCallback=this.onProxyWrite;return this.createOperation('create',options).execute()},read:function(){return this.load.apply(this,arguments)},update:function(options){options=Ext.apply({},options);options.records||(options.records=this.getUpdatedRecords());options.internalScope=this;options.internalCallback=this.onProxyWrite;
return this.createOperation('update',options).execute()},onProxyWrite:function(operation){var success=operation.wasSuccessful(),records=operation.getRecords();switch(operation.getAction()){case 'create':this.onCreateRecords(records,operation,success);break;case 'update':this.onUpdateRecords(records,operation,success);break;case 'destroy':this.onDestroyRecords(records,operation,success)}success&&(this.fireEvent('write',this,operation),this.fireEvent('datachanged',this))},onCreateRecords:Ext.emptyFn,
onUpdateRecords:Ext.emptyFn,onDestroyRecords:function(records,operation,success){success&&this.cleanRemoved()},erase:function(options){options=Ext.apply({},options);options.records||(options.records=this.getRemovedRecords());options.internalScope=this;options.internalCallback=this.onProxyWrite;return this.createOperation('destroy',options).execute()},onBatchOperationComplete:function(batch,operation){return this.onProxyWrite(operation)},onBatchComplete:function(batch,operation){batch=batch.operations;
operation=batch.length;var i;if('operation'!==this.batchUpdateMode){this.suspendEvents();for(i=0;i<operation;i++)this.onProxyWrite(batch[i]);this.resumeEvents()}this.isSyncing=!1;this.fireEvent('datachanged',this)},onBatchException:function(batch,operation){},filterNew:function(item){return!0===item.phantom&&item.isValid()},getNewRecords:function(){return[]},getUpdatedRecords:function(){return[]},getModifiedRecords:function(){return[].concat(this.getNewRecords(),this.getUpdatedRecords())},filterUpdated:function(item){return!0===
item.dirty&&!0!==item.phantom&&item.isValid()},getRemovedRecords:function(){var removed=this.getRawRemovedRecords();return removed?Ext.Array.clone(removed):[]},sync:function(options){var operations={},toCreate=this.getNewRecords(),toUpdate=this.getUpdatedRecords(),toDestroy=this.getRemovedRecords(),needsSync=!1;this.needsSync=!1;0<toCreate.length&&(operations.create=toCreate,needsSync=!0);0<toUpdate.length&&(operations.update=toUpdate,needsSync=!0);0<toDestroy.length&&(operations.destroy=toDestroy,
needsSync=!0);needsSync&&!1!==this.fireEvent('beforesync',operations)&&(this.isSyncing=!0,options=options||{},this.proxy.batch(Ext.apply(options,{operations:operations,listeners:this.getBatchListeners()})));return this},getBatchListeners:function(){var listeners={scope:this,exception:this.onBatchException,complete:this.onBatchComplete};'operation'===this.batchUpdateMode&&(listeners.operationcomplete=this.onBatchOperationComplete);return listeners},save:function(){return this.sync.apply(this,arguments)},
load:function(options){this.pendingLoadOptions=options='function'===typeof options?{callback:options}:options?Ext.Object.chain(options):{};this.getAsynchronousLoad()?this.loadTimer||(this.loadTimer=Ext.asap(this.flushLoad,this)):this.flushLoad();return this},flushLoad:function(){var options=this.pendingLoadOptions;this.clearLoadTask();options&&(this.setLoadOptions(options),this.getRemoteSort()&&options.sorters&&this.fireEvent('beforesort',this,options.sorters),this.lastOptions=options=Ext.apply({internalScope:this,
internalCallback:this.onProxyLoad,scope:this},options),options=this.createOperation('read',options),!1!==this.fireEvent('beforeload',this,options)&&(this.onBeforeLoad(options),this.loading=!0,options.execute()))},reload:function(options){return this.load(Ext.apply({},options,this.lastOptions))},onEndUpdate:function(){this.needsSync&&this.autoSync&&!this.autoSyncSuspended&&this.sync()},afterReject:function(record){this.contains(record)&&(this.onUpdate(record,Ext.data.Model.REJECT,null),this.fireEvent('update',
this,record,Ext.data.Model.REJECT,null))},afterCommit:function(record,modifiedFieldNames){modifiedFieldNames||(modifiedFieldNames=null);this.contains(record)&&(this.onUpdate(record,Ext.data.Model.COMMIT,modifiedFieldNames),this.fireEvent('update',this,record,Ext.data.Model.COMMIT,modifiedFieldNames))},afterErase:function(record){this.onErase(record)},onErase:Ext.emptyFn,onUpdate:Ext.emptyFn,doDestroy:function(){var proxy=this.getProxy();this.clearLoadTask();this.getData().destroy();this.data=null;
this.setProxy(null);proxy.autoCreated&&proxy.destroy();this.setModel(null);Ext.data.AbstractStore.prototype.doDestroy.call(this)},hasPendingLoad:function(){return!!this.pendingLoadOptions||this.isLoading()},isLoading:function(){return!!this.loading},isLoaded:function(){return 0<this.loadCount},suspendAutoSync:function(){++this.autoSyncSuspended},resumeAutoSync:function(syncNow){this.autoSyncSuspended&&!--this.autoSyncSuspended&&syncNow&&this.sync()},removeAll:Ext.emptyFn,clearData:Ext.emptyFn,privates:{getRawRemovedRecords:function(){return this.removed},
onExtraParamsChanged:function(){},clearLoadTask:function(){this.loadTimer&&Ext.asapCancel(this.loadTimer);this.pendingLoadOptions=this.loadTimer=null},cleanRemoved:function(){var removed=this.getRawRemovedRecords(),len;if(removed){var i=0;for(len=removed.length;i<len;++i)removed[i].unjoin(this);removed.length=0}},createOperation:function(type,options){var proxy=this.getProxy();if(!this.proxyListeners){var listeners={scope:this,destroyable:!0,beginprocessresponse:this.beginUpdate,endprocessresponse:this.endUpdate};
this.disableMetaChangeEvent||(listeners.metachange=this.onMetaChange);this.proxyListeners=proxy.on(listeners)}return proxy.createOperation(type,options)},createImplicitModel:function(fields){var modelCfg={extend:this.implicitModel,statics:{defaultProxy:'memory'}};fields&&(modelCfg.fields=fields);modelCfg=Ext.define(null,modelCfg);this.setModel(modelCfg);(fields=this.getProxy())?modelCfg.setProxy(fields):this.setProxy(modelCfg.getProxy())},loadsSynchronously:function(){return this.getProxy().isSynchronous},
onBeforeLoad:Ext.privateFn,removeFromRemoved:function(record){var removed=this.getRawRemovedRecords();removed&&(Ext.Array.remove(removed,record),record.unjoin(this))},setLoadOptions:function(options){var filters;this.getRemoteFilter()&&(filters=this.getFilters(!1))&&filters.getCount()&&(options.filters=filters.getRange());this.getRemoteSort()&&(filters=this.getSorters(!1))&&filters.getCount()&&(options.sorters=filters.getRange())}}},1,0,0,0,0,0,[Ext.data,'ProxyStore'],0);
Ext.cmd.derive('Ext.data.LocalStore',Ext.Mixin,{mixinConfig:{id:'localstore'},config:{extraKeys:null},applyExtraKeys:function(extraKeys){var indexName,data=this.getData();data.setExtraKeys(extraKeys);extraKeys=data.getExtraKeys();for(indexName in extraKeys)this[indexName]=extraKeys[indexName]},add:function(arg){return this.insert(this.getCount(),1===arguments.length?arg:arguments)},constructDataCollection:function(){var result=new Ext.util.Collection({rootProperty:'data'});result.addObserver(this);
return result},createModel:function(record){var session=this.getSession();if(!record.isModel){var Model=this.getModel();record=new Model(record,session)}return record},createFiltersCollection:function(){return this.getData().getFilters()},createSortersCollection:function(){var sorters=this.getData().getSorters();sorters.setSorterConfigure(this.addFieldTransform,this);return sorters},onCollectionBeginUpdate:function(){this.beginUpdate()},onCollectionEndUpdate:function(){this.endUpdate()},onCollectionSort:function(){this.onSorterEndUpdate()},
onCollectionFilter:function(){this.onFilterEndUpdate()},notifySorterChange:function(){this.getData().onSorterChange()},forceLocalSort:function(){this.getData().onSortChange()},contains:function(record){return-1<this.indexOf(record)},each:function(fn,scope,bypassFilters){var data=this.getData(),i;'object'===typeof bypassFilters&&(bypassFilters=bypassFilters.filtered);!0===bypassFilters&&data.filtered&&(data=data.getSource());data=data.items.slice(0);bypassFilters=data.length;for(i=0;i<bypassFilters;++i){var record=
data[i];if(!1===fn.call(scope||record,record,i,bypassFilters))break}},collect:function(dataIndex,allowNull,bypassFilters){var data=this.getData();'object'===typeof allowNull&&(bypassFilters=allowNull.filtered,allowNull=allowNull.allowNull);!0===bypassFilters&&data.filtered&&(data=data.getSource());return data.collect(dataIndex,'data',allowNull)},getById:function(id){var data=this.getData();data.filtered&&(data=data.getSource());return data.get(id)||null},getByInternalId:function(internalId){var data=
this.getData();if(data.filtered){if(!data.$hasExtraKeys){var keyCfg=this.makeInternalKeyCfg();data.setExtraKeys(keyCfg);data.$hasExtraKeys=!0}data=data.getSource()}data.$hasExtraKeys||(data.setExtraKeys(keyCfg||this.makeInternalKeyCfg()),data.$hasExtraKeys=!0);return data.byInternalId.get(internalId)||null},getDataSource:function(){var data=this.getData();return data.getSource()||data},indexOf:function(record){return this.getData().indexOf(record)},indexOfId:function(id){return this.indexOf(this.getById(id))},
insert:function(index,records){var i;if(records){records=Ext.isIterable(records)?Ext.Array.clone(records):[records];var len=records.length}if(!len)return[];for(i=0;i<len;++i)records[i]=this.createModel(records[i]);this.getData().insert(index,records);return records},queryBy:function(fn,scope){var data=this.getData();return(data.getSource()||data).createFiltered(fn,scope)},query:function(property,value,anyMatch,caseSensitive,exactMatch){var data=this.getData();return(data.getSource()||data).createFiltered(property,
value,anyMatch,caseSensitive,exactMatch)},first:function(grouped){return this.getData().first(grouped)||null},last:function(grouped){return this.getData().last(grouped)||null},sum:function(field,grouped){var data=this.getData();return grouped&&this.isGrouped()?data.sumByGroup(field):data.sum(field)},count:function(grouped){var data=this.getData();return grouped&&this.isGrouped()?data.countByGroup():data.count()},min:function(field,grouped){var data=this.getData();return grouped&&this.isGrouped()?
data.minByGroup(field):data.min(field)},max:function(field,grouped){var data=this.getData();return grouped&&this.isGrouped()?data.maxByGroup(field):data.max(field)},average:function(field,grouped){var data=this.getData();return grouped&&this.isGrouped()?data.averageByGroup(field):data.average(field)},aggregate:function(fn,scope,grouped,field){var i;if(grouped&&this.isGrouped()){grouped=this.getGroups().items;var len=grouped.length;var out={};for(i=0;i<len;++i){var group=grouped[i];out[group.getGroupKey()]=
this.getAggregate(fn,scope||this,group.items,field)}return out}return this.getAggregate(fn,scope,this.getData().items,field)},getAggregate:function(fn,scope,records,field){var values=[],len=records.length,i;for(i=0;i<len;++i)values[i]=records[i].get(field);return fn.call(scope||this,records,values)},addObserver:function(observer){var observers=this.observers;observers||(this.observers=observers=new Ext.util.Collection);observers.add(observer)},removeObserver:function(observer){var observers=this.observers;
observers&&observers.remove(observer)},callObservers:function(action,args){var observers=this.observers;if(observers){var items=observers.items;args?args.unshift(this):args=[this];var i=0;for(observers=items.length;i<observers;++i){var item=items[i];var methodName='onSource'+action;item[methodName]&&item[methodName].apply(item,args)}}},queryRecordsBy:function(fn,scope){var data=this.getData(),matches=[],len;data=(data.getSource()||data).items;scope=scope||this;var i=0;for(len=data.length;i<len;++i){var record=
data[i];!0===fn.call(scope,record)&&matches.push(record)}return matches},queryRecords:function(field,value){var data=this.getData(),matches=[],len;data=(data.getSource()||data).items;var i=0;for(len=data.length;i<len;++i){var record=data[i];record.get(field)===value&&matches.push(record)}return matches},privates:{isLast:function(record){return record===this.last()},makeInternalKeyCfg:function(){return{byInternalId:{property:'internalId',rootProperty:''}}}}},0,0,0,0,0,0,[Ext.data,'LocalStore'],0);
Ext.cmd.derive('Ext.data.proxy.Server',Ext.data.proxy.Proxy,{alternateClassName:'Ext.data.ServerProxy',isRemote:!0,config:{url:'',pageParam:'page',startParam:'start',limitParam:'limit',groupParam:'group',groupDirectionParam:'groupDir',sortParam:'sort',filterParam:'filter',directionParam:'dir',idParam:'id',simpleSortMode:!1,simpleGroupMode:!1,noCache:!0,cacheString:'_dc',timeout:3E4,api:{create:void 0,read:void 0,update:void 0,destroy:void 0},extraParams:{}},create:function(){return this.doRequest.apply(this,
arguments)},read:function(){return this.doRequest.apply(this,arguments)},update:function(){return this.doRequest.apply(this,arguments)},erase:function(){return this.doRequest.apply(this,arguments)},setExtraParam:function(name,value){var extraParams=this.getExtraParams();extraParams[name]=value;this.fireEvent('extraparamschanged',extraParams)},updateExtraParams:function(newExtraParams,oldExtraParams){this.fireEvent('extraparamschanged',newExtraParams)},buildRequest:function(operation){var initialParams=
Ext.apply({},operation.getParams());initialParams=Ext.applyIf(initialParams,this.getExtraParams()||{});Ext.applyIf(initialParams,this.getParams(operation));var operationId=operation.getId();var idParam=this.getIdParam();void 0!==operationId&&void 0===initialParams[idParam]&&(initialParams[idParam]=operationId);initialParams=new Ext.data.Request({params:initialParams,action:operation.getAction(),records:operation.getRecords(),url:operation.getUrl(),operation:operation,proxy:this});initialParams.setUrl(this.buildUrl(initialParams));
operation.setRequest(initialParams);return initialParams},processResponse:function(success,operation,request,response){if(!this.destroying&&!this.destroyed){this.fireEvent('beginprocessresponse',this,response,operation);if(!0===success){var exception=this.getReader();var resultSet=204===response.status?exception.getNullResultSet():exception.read(this.extractResponseData(response),{recordCreator:operation.getRecordCreator()});operation.process(resultSet,request,response);exception=!operation.wasSuccessful()}else this.setException(operation,
response),exception=!0;if(exception)this.fireEvent('exception',this,response,operation);else if(exception=resultSet.getMetadata())this.onMetaChange(exception);this.afterRequest(request,success);this.fireEvent('endprocessresponse',this,response,operation)}},setException:function(operation,response){operation.setException({status:response.status,statusText:response.statusText,response:response})},extractResponseData:Ext.identityFn,applyEncoding:function(value){return Ext.encode(value)},encodeSorters:function(sorters,
preventArray){var out=[],length=sorters.length,i;for(i=0;i<length;i++)out[i]=sorters[i].serialize();return this.applyEncoding(preventArray?out[0]:out)},encodeFilters:function(filters){var out=[],length=filters.length,i;for(i=0;i<length;i++){var filter=filters[i];filter.getFilterFn();filter.generatedFilterFn&&out.push(filter.serialize())}return this.applyEncoding(out)},getParams:function(operation){if(!operation.isReadOperation)return{};var params={},grouper=operation.getGrouper(),sorters=operation.getSorters(),
filters=operation.getFilters(),page=operation.getPage(),start=operation.getStart(),limit=operation.getLimit(),simpleSortMode=this.getSimpleSortMode(),simpleGroupMode=this.getSimpleGroupMode(),pageParam=this.getPageParam(),startParam=this.getStartParam(),limitParam=this.getLimitParam(),groupParam=this.getGroupParam(),groupDirectionParam=this.getGroupDirectionParam();operation=this.getSortParam();var filterParam=this.getFilterParam(),directionParam=this.getDirectionParam();pageParam&&page&&(params[pageParam]=
page);startParam&&(start||0===start)&&(params[startParam]=start);limitParam&&limit&&(params[limitParam]=limit);if(page=groupParam&&grouper)simpleGroupMode?(params[groupParam]=grouper.getProperty(),params[groupDirectionParam]=grouper.getDirection()):params[groupParam]=this.encodeSorters([grouper],!0);operation&&sorters&&0<sorters.length&&(simpleSortMode?(grouper=0,1<sorters.length&&page&&(grouper=1),params[operation]=sorters[grouper].getProperty(),params[directionParam]=sorters[grouper].getDirection()):
params[operation]=this.encodeSorters(sorters));filterParam&&filters&&0<filters.length&&(params[filterParam]=this.encodeFilters(filters));return params},buildUrl:function(request){request=this.getUrl(request);this.getNoCache()&&(request=Ext.urlAppend(request,Ext.String.format('{0}\x3d{1}',this.getCacheString(),Ext.Date.now())));return request},getUrl:function(request){var url;request&&(url=request.getUrl()||this.getApi()[request.getAction()]);return url?url:(arguments.callee.$previous||Ext.data.proxy.Proxy.prototype.getUrl).call(this)},
doRequest:function(operation){},afterRequest:Ext.emptyFn,destroy:function(){this.destroying=!0;this.reader=this.writer=Ext.destroy(this.reader,this.writer);Ext.data.proxy.Proxy.prototype.destroy.call(this);this.destroying=!1;this.destroyed=!0}},0,0,0,0,['proxy.server'],0,[Ext.data.proxy,'Server',Ext.data,'ServerProxy'],0);
Ext.cmd.derive('Ext.data.proxy.Ajax',Ext.data.proxy.Server,{alternateClassName:['Ext.data.HttpProxy','Ext.data.AjaxProxy'],isAjaxProxy:!0,defaultActionMethods:{create:'POST',read:'GET',update:'POST',destroy:'POST'},config:{binary:!1,headers:void 0,paramsAsJson:!1,withCredentials:!1,useDefaultXhrHeader:!0,username:null,password:null,actionMethods:{create:'POST',read:'GET',update:'POST',destroy:'POST'}},doRequest:function(operation){var writer=this.getWriter(),request=this.buildRequest(operation),method=
this.getMethod(request);writer&&operation.allowWrite()&&(request=writer.write(request));request.setConfig({binary:this.getBinary(),headers:this.getHeaders(),timeout:this.getTimeout(),scope:this,callback:this.createRequestCallback(request,operation),method:method,useDefaultXhrHeader:this.getUseDefaultXhrHeader(),disableCaching:!1});'GET'!==method.toUpperCase()&&this.getParamsAsJson()&&(writer=request.getParams())&&(operation=(operation=request.getJsonData())?Ext.Object.merge({},operation,writer):writer,
request.setJsonData(operation),request.setParams(void 0));this.getWithCredentials()&&(request.setWithCredentials(!0),request.setUsername(this.getUsername()),request.setPassword(this.getPassword()));return this.sendRequest(request)},sendRequest:function(request){request.setRawRequest(Ext.Ajax.request(request.getCurrentConfig()));return this.lastRequest=request},abort:function(request){(request=request||this.lastRequest)&&Ext.Ajax.abort(request.getRawRequest())},getMethod:function(request){var actions=
this.getActionMethods();request=request.getAction();var method;actions&&(method=actions[request]);return method||this.defaultActionMethods[request]},createRequestCallback:function(request,operation){var me=this;return function(options,success,response){request===me.lastRequest&&(me.lastRequest=null);me.processResponse(success,operation,request,response)}},destroy:function(){this.lastRequest=null;Ext.data.proxy.Server.prototype.destroy.call(this)}},0,0,0,0,['proxy.ajax'],0,[Ext.data.proxy,'Ajax',Ext.data,
'HttpProxy',Ext.data,'AjaxProxy'],0);
Ext.cmd.derive('Ext.data.reader.Json',Ext.data.reader.Reader,{alternateClassName:'Ext.data.JsonReader',config:{record:null,metaProperty:'metaData',useSimpleAccessors:!1,preserveRawData:!1},updateRootProperty:function(){this.forceBuildExtractors()},updateMetaProperty:function(){this.forceBuildExtractors()},getResponseData:function(response){try{return Ext.decode(response.responseText)}catch(ex){var error=this.createReadError(ex.message);Ext.Logger.warn('Unable to parse the JSON returned by the server');this.fireEvent('exception',
this,response,error);return error}},buildExtractors:function(){var rootProp;if(Ext.data.reader.Reader.prototype.buildExtractors.apply(this,arguments)){var metaProp=this.getMetaProperty();this.getRoot=(rootProp=this.getRootProperty())?this.getAccessor(rootProp):Ext.identityFn;metaProp&&(this.getMeta=this.getAccessor(metaProp))}},extractData:function(root,readOptions){var recordName=this.getRecord(),data=[],i;if(recordName){var length=root.length;!length&&Ext.isObject(root)&&(length=1,root=[root]);
for(i=0;i<length;i++)data[i]=root[i][recordName]}else data=root;return Ext.data.reader.Reader.prototype.extractData.call(this,data,readOptions)},getModelData:function(raw){return this.getPreserveRawData()?Ext.apply({},raw):raw},createAccessor:function(){var re=/[\[\.]/;return function(expr){var simple=this.getUseSimpleAccessors(),operatorIndex,i;if(expr||0===expr){if('function'===typeof expr)return expr;simple||(operatorIndex=String(expr).search(re));if(!0===simple||0>operatorIndex)simple=function(raw){return raw[expr]};
else{simple='raw';operatorIndex=[];var part='';var inExpr=0;var len=expr.length;for(i=0;i<=len;++i){var c=expr[i];var isDot='.'===c;var isLeft='['===c;var isRight=']'===c;isDot=isDot||isLeft||isRight||!c;!isDot||1<inExpr||inExpr&&!isRight?part+=c:isDot&&(c=!1,isLeft?++inExpr:isRight&&(--inExpr,c=!0),part&&(part=c?'['+part+']':'.'+part,simple+=part,operatorIndex.push(''+simple),part=''))}simple=operatorIndex.join(' \x26\x26 ');simple=Ext.functionFactory('raw','return '+simple)}return simple}}}(),createFieldAccessor:function(field){var me=
this,mapping=field.mapping,hasMap=mapping||0===mapping;mapping=hasMap?mapping:field.name;if(hasMap)return'function'===typeof mapping?function(raw){return field.mapping(raw,me)}:me.createAccessor(mapping)},getAccessorKey:function(prop){var simple=this.getUseSimpleAccessors()?'simple':'';return this.$className+simple+prop},privates:{copyFrom:function(reader){Ext.data.reader.Reader.prototype.copyFrom.call(this,reader);this.getRoot=reader.getRoot}}},0,0,0,0,['reader.json'],0,[Ext.data.reader,'Json',Ext.data,
'JsonReader'],0);
Ext.cmd.derive('Ext.data.writer.Json',Ext.data.writer.Writer,{alternateClassName:'Ext.data.JsonWriter',config:{rootProperty:void 0,encode:!1,allowSingle:!0,expandData:!1},getExpandedData:function(data){for(var dataLength=data.length,i=0,item,prop,nameParts,j,tempObj;i<dataLength;i++)for(prop in item=data[i],item)if(item.hasOwnProperty(prop)&&(nameParts=prop.split('.'),j=nameParts.length-1,0<j)){for(tempObj=item[prop];0<j;j--){var o={};o[nameParts[j]]=tempObj;tempObj=o}item[nameParts[0]]=item[nameParts[0]]||
{};Ext.Object.merge(item[nameParts[0]],tempObj);delete item[prop]}return data},writeRecords:function(request,data){var root=this.getRootProperty(),transform;this.getExpandData()&&(data=this.getExpandedData(data));if(this.getAllowSingle()&&1===data.length){data=data[0];var json=!0}(transform=this.getTransform())&&(data=transform(data,request));if(this.getEncode())root&&request.setParam(root,Ext.encode(data));else if(json||data&&data.length)json=request.getJsonData()||{},root?json[root]=data:json=data,
request.setJsonData(json);return request}},0,0,0,0,['writer.json'],0,[Ext.data.writer,'Json',Ext.data,'JsonWriter'],0);Ext.define('Components.overrides.JsonWriter',{override:'Ext.data.writer.Json',getRecordData:function(record,operation){record.data=(arguments.callee.$previous||Ext.data.writer.Writer.prototype.getRecordData).apply(this,arguments);record.getAssociatedData(record.data,{serialize:!0});return record.data}});
Ext.cmd.derive('Ext.util.Group',Ext.util.Collection,{config:{groupKey:null},$endUpdatePriority:2001,manageSorters:!1},0,0,0,0,0,0,[Ext.util,'Group'],0);
Ext.cmd.derive('Ext.util.SorterCollection',Ext.util.Collection,{isSorterCollection:!0,$sortable:null,sortFn:null,config:{sorterOptionsFn:null,sorterOptionsScope:null},constructor:function(config){this.sortFn=Ext.util.Sorter.createComparator(this);Ext.util.Collection.prototype.constructor.call(this,config);this.setDecoder(this.decodeSorter)},addSort:function(property,direction,mode){var sorter;if(property){var options=this.getOptions();if(property instanceof Array){var sorters=property;mode=direction;
direction=null}else Ext.isString(property)?sorters=(sorter=this.get(property))?[sorter]:[{property:property,direction:direction||options.getDefaultSortDirection()}]:Ext.isFunction(property)?sorters=[{sorterFn:property,direction:direction||options.getDefaultSortDirection()}]:(sorters=[property],mode=direction,direction=null);mode=this._sortModes[mode||'replace'];var primary=this.getAt(0);property=this.length;var index=mode.append?property:0;this.beginUpdate();this.splice(index,mode.replace?property:
0,sorters);mode.multi&&(property=this.length,mode=options.getMultiSortLimit(),property>mode&&this.removeAt(mode,property));sorter&&direction?sorter.setDirection(direction):0===index&&primary&&primary===this.getAt(0)&&primary.toggle()}else this.beginUpdate();this.endUpdate()},clear:function(){this.beginUpdate();Ext.util.Collection.prototype.clear.call(this);this.endUpdate(this.items)},getSortFn:function(){return this.sortFn},getByProperty:function(prop){var items=this.items,len=items.length,i;for(i=
0;i<len;++i){var item=items[i];if(item.getProperty()===prop)return item}return null},_sortModes:{append:{append:1},multi:{multi:1},prepend:{prepend:1},replace:{replace:1}},decodeSorter:function(sorter,xclass){var options=this.getOptions(),root=options.getRootProperty(),sorterOptionsFn=this.getSorterOptionsFn();if(sorter.isSorter)sorter.getRoot()||sorter.setRoot(root);else{options={direction:options.getDefaultSortDirection(),root:root};root=typeof sorter;if('string'===root){if(root=this.get(sorter))return root;
options.property=sorter}else'function'===root?options.sorterFn=sorter:(options=Ext.apply(options,sorter),options.fn&&(options.sorterFn=options.fn,delete options.fn));sorter=Ext.create(xclass||'Ext.util.Sorter',options)}sorterOptionsFn&&sorterOptionsFn.call(this.getSorterOptionsScope()||this,sorter);return sorter},setSorterConfigure:function(fn,scope){this.setSorterOptionsFn(fn);this.setSorterOptionsScope(scope)},decodeRemoveItems:function(args,index){var ret=void 0===index?args:args[index];if(!ret||
!ret.$cloned){if(args.length>index+1||!Ext.isIterable(ret))ret=Ext.Array.slice(args,index);args=this.items;index=ret.length;var remove=[],i,n,sorter;for(i=0;i<index;i++)if((sorter=ret[i])&&sorter.isSorter)remove.push(sorter);else{var item=typeof sorter;if('string'===item)(sorter=this.get(sorter))&&remove.push(sorter);else if('function'===item)for(n=args.length;0<n--;)item=args[n],item.getSorterFn()===sorter&&remove.push(item)}ret=remove;ret.$cloned=!0}return ret},getOptions:function(){return this.$sortable||
this}},1,0,0,0,0,0,[Ext.util,'SorterCollection'],0);
Ext.cmd.derive('Ext.util.FilterCollection',Ext.util.Collection,{isFilterCollection:!0,$filterable:null,filterFn:null,constructor:function(config){this.filterFn=Ext.util.Filter.createFilterFn(this);Ext.util.Collection.prototype.constructor.call(this,config);this.setDecoder(this.decodeFilter)},filterData:function(data){return this.filtered?Ext.Array.filter(data,this.filterFn):data},getFilterFn:function(){return this.filterFn},isItemFiltered:function(item){return!this.filterFn(item)},decodeFilter:function(filter){var filterRoot=
this.getOptions().getRootProperty();if(filter.isFilter)filter.getRoot()||filter.setRoot(filterRoot);else{filterRoot={root:filterRoot};if(Ext.isFunction(filter))filterRoot.filterFn=filter;else if(filterRoot=Ext.apply(filterRoot,filter),filterRoot.fn&&(filterRoot.filterFn=filterRoot.fn,delete filterRoot.fn),Ext.util.Filter.isInvalid(filterRoot))return!1;filter=new Ext.util.Filter(filterRoot)}return filter},decodeRemoveItems:function(args,index){var ret=void 0===index?args:args[index];if(!ret.$cloned){if(args.length>
index+1||!Ext.isIterable(ret))ret=Ext.Array.slice(args,index);args=this.items;index=ret.length;var remove=[],filter,i,n;for(i=0;i<index;i++)if((filter=ret[i])&&filter.isFilter)remove.push(filter);else{var isString=typeof filter;var isFunction='function'===isString;var isProp=void 0!==filter.property&&void 0!==filter.value;isString='string'===isString;for(n=args.length;0<n--;){var item=args[n];var match=!1;isString?match=item.getProperty()===filter:isFunction?match=item.getFilterFn()===filter:isProp&&
(match=item.getProperty()===filter.property&&item.getValue()===filter.value);match&&remove.push(item)}}ret=remove;ret.$cloned=!0}return ret},getOptions:function(){return this.$filterable||this}},1,0,0,0,0,0,[Ext.util,'FilterCollection'],0);
Ext.cmd.derive('Ext.util.GroupCollection',Ext.util.Collection,{isGroupCollection:!0,config:{grouper:null,itemRoot:null},observerPriority:-100,constructor:function(config){Ext.util.Collection.prototype.constructor.call(this,config);this.on('remove','onGroupRemove',this)},onCollectionAdd:function(source,details){this.addItemsToGroups(source,details.items,details.at)},onCollectionBeforeItemChange:function(source,details){this.changeDetails=details},onCollectionBeginUpdate:function(){this.beginUpdate()},
onCollectionEndUpdate:function(){this.endUpdate()},onCollectionItemChange:function(source,details){var item=details.item;details.indexChanged||this.syncItemGrouping(source,item,source.getKey(item),details.oldKey,details.oldIndex);this.changeDetails=null},onCollectionRefresh:function(source){this.removeAll();this.addItemsToGroups(source,source.items)},onCollectionRemove:function(source,details){var changeDetails=this.changeDetails,n,removeGroups;changeDetails?(changeDetails=changeDetails.item,details=
this.findGroupForItem(changeDetails),source=[],details&&source.push({group:details,items:[changeDetails]})):source=this.groupItems(source,details.items,!1);var i=0;for(n=source.length;i<n;++i)if(details=(changeDetails=source[i]).group)details.remove(changeDetails.items),details.length||(removeGroups||(removeGroups=[])).push(details);removeGroups&&this.remove(removeGroups)},onCollectionSort:function(source){source=source.getSorters(!1);var i;if(source){var items=this.items;var length=this.length;for(i=
0;i<length;++i){var group=items[i];group.getSorters()!==source&&group.setSorters(source)}}},onCollectionUpdateKey:function(source,details){var item=details.item;if(!details.indexChanged){var index=source.indexOf(item);this.syncItemGrouping(source,item,details.newKey,details.oldKey,index)}},addItemsToGroups:function(source,items,at){this.groupItems(source,items,!0,at)},groupItems:function(source,items,adding,at){var byGroup={},entries=[],grouper=source.getGrouper(),groupKeys=this.itemGroupKeys,group,
item,len,newGroups;var i=0;for(len=items.length;i<len;++i){var groupKey=grouper.getGroupString(item=items[i]);var entry=source.getKey(item);adding?(groupKeys||(this.itemGroupKeys=groupKeys={}))[entry]=groupKey:groupKeys&&delete groupKeys[entry];(entry=byGroup[groupKey])||(!(group=this.getByKey(groupKey))&&adding&&(newGroups||(newGroups=[])).push(group=this.createGroup(source,groupKey)),entries.push(byGroup[groupKey]=entry={group:group,items:[]}));entry.items.push(item)}adding&&1<this.length&&at&&
(source=source.indexOf(entries[0].group.getAt(0)),at=Math.max(at-source,0));i=0;for(len=entries.length;i<len;++i)entry=entries[i],entry.group.insert(null!=at?at:group.items.length,entry.items);newGroups&&this.add(newGroups);return entries},syncItemGrouping:function(source,item,itemKey,oldKey,itemIndex){var itemGroupKeys=this.itemGroupKeys||(this.itemGroupKeys={}),groupKey=source.getGrouper().getGroupString(item),removeGroups=0,index=-1,findKey=itemKey;if(oldKey||0===oldKey){var oldGroupKey=itemGroupKeys[oldKey];
delete itemGroupKeys[oldKey];findKey=oldKey}else oldGroupKey=itemGroupKeys[itemKey];itemGroupKeys[itemKey]=groupKey;if(!(itemKey=this.get(groupKey))){itemKey=this.createGroup(source,groupKey);var addGroups=[itemKey]}itemKey.get(findKey)!==item?(0<itemKey.getCount()&&0===source.getSorters().getCount()&&(source=source.indexOf(itemKey.items[0]),index=itemIndex<source?0:itemIndex-source),-1===index?itemKey.add(item):itemKey.insert(index,item)):itemKey.itemChanged(item,null,oldKey);groupKey!==oldGroupKey&&
(0===oldGroupKey||oldGroupKey)&&(itemIndex=this.get(oldGroupKey))&&(itemIndex.remove(item),itemIndex.length||(removeGroups=[itemIndex]));addGroups?this.splice(0,removeGroups,addGroups):removeGroups&&this.splice(0,removeGroups)},createGroup:function(source,key){return new Ext.util.Group({groupKey:key,rootProperty:this.getItemRoot(),sorters:source.getSorters()})},getKey:function(item){return item.getGroupKey()},createSortFn:function(){var grouper=this.getGrouper(),sorterFn=this.getSorters().getSortFn();
return grouper?function(lhs,rhs){return grouper.sort(lhs.items[0],rhs.items[0])||sorterFn(lhs,rhs)}:sorterFn},updateGrouper:function(grouper){this.grouped=!(!grouper||!this.$groupable.getAutoGroup());this.onSorterChange();this.onEndUpdateSorters(this.getSorters())},destroy:function(){this.$groupable=null;this.destroyGroups(this.items);Ext.util.Collection.prototype.destroy.call(this)},privates:{destroyGroups:function(groups){var len=groups.length,i;for(i=0;i<len;++i)groups[i].destroy()},findGroupForItem:function(item){var items=
this.items,len=items.length,i;for(i=0;i<len;++i){var group=items[i];if(group.contains(item))return group}},onGroupRemove:function(collection,info){this.destroyGroups(info.items)}}},1,0,0,0,0,0,[Ext.util,'GroupCollection'],0);
Ext.cmd.derive('Ext.data.Store',Ext.data.ProxyStore,{config:{data:0,clearRemovedOnLoad:!0,clearOnPageLoad:!0,associatedEntity:null,role:null,session:null},addRecordsOptions:{addRecords:!0},loadCount:0,complete:!1,moveMapCount:0,constructor:function(config){if(config&&config.buffered)return new Ext.data.BufferedStore(config);Ext.data.ProxyStore.prototype.constructor.call(this,config);if(config=this.inlineData)delete this.inlineData,this.loadInlineData(config)},applyData:function(data,dataCollection){this.getFields();
this.getModel();data&&data.isCollection?dataCollection=data:(dataCollection||(dataCollection=this.constructDataCollection()),data&&(this.isInitializing?this.inlineData=data:this.loadData(data)));return dataCollection},loadInlineData:function(data){var proxy=this.getProxy();proxy&&proxy.isMemoryProxy?(proxy.setData(data),this.suspendEvents(),this.read()):(this.removeAll(!0),this.suspendEvents(),this.loadData(data));this.resumeEvents()},onCollectionAdd:function(collection,info){this.onCollectionAddItems(collection,
info.items,info)},onCollectionFilterAdd:function(collection,items){this.onCollectionAddItems(collection,items)},onCollectionAddItems:function(collection,records,info){collection=records.length;var lastChunk=info?!info.next:!1,removed=this.removed,ignoreAdd=this.ignoreCollectionAdd,session=this.getSession(),replaced=info&&info.replaced,i;for(i=0;i<collection;++i){var record=records[i];session&&session.adopt(record);if(!ignoreAdd){record.join(this);removed&&removed.length&&Ext.Array.remove(removed,
record);var sync=sync||record.phantom||record.dirty}}if(!ignoreAdd){if(replaced){var replacedItems=[];do Ext.Array.push(replacedItems,replaced.items),replaced=replaced.next;while(replaced);this.setMoving(replacedItems,!0)}info&&(info.replaced?lastChunk&&this.fireEvent('refresh',this):(this.fireEvent('add',this,records,info.at),lastChunk&&this.fireEvent('datachanged',this)));replacedItems&&this.setMoving(replacedItems,!1);this.needsSync=this.needsSync||sync}},onCollectionBeforeItemChange:function(collection,
info){this.fireEvent('beforeupdate',this,info.item,info.meta,info.modified||null,info)},onCollectionFilteredItemChange:function(){this.onCollectionItemChange.apply(this,arguments)},onCollectionItemChange:function(collection,info){collection=info.item;var modifiedFieldNames=info.modified||null,type=info.meta;this.fireChangeEvent(collection)&&(this.onUpdate(collection,type,modifiedFieldNames,info),this.fireEvent('update',this,collection,type,modifiedFieldNames,info))},afterChange:function(record,modifiedFieldNames,
type){this.getData().itemChanged(record,modifiedFieldNames||null,void 0,type)},afterCommit:function(record,modifiedFieldNames){this.afterChange(record,modifiedFieldNames,Ext.data.Model.COMMIT)},afterEdit:function(record,modifiedFieldNames){this.needsSync=this.needsSync||record.dirty;this.afterChange(record,modifiedFieldNames,Ext.data.Model.EDIT)},afterReject:function(record){this.afterChange(record,null,Ext.data.Model.REJECT)},afterDrop:function(record){this.getData().remove(record)},afterErase:function(record){this.removeFromRemoved(record)},
addSorted:function(record){var remote=this.getRemoteSort(),data=this.getData();remote&&data.setSorters(this.getSorters());var index=data.findInsertionIndex(record);remote&&data.setSorters(null);return this.insert(index,record)},remove:function(records,isMove,silent){var data=this.getDataSource(),record;if(records)if(records.isModel)if(-1<data.indexOf(records)){var toRemove=[records];var len=1}else len=0;else{toRemove=[];var i=0;for(len=records.length;i<len;++i){if((record=records[i])&&record.isEntity){if(!data.contains(record))continue}else if(!(record=
data.getAt(record)))continue;toRemove.push(record)}len=toRemove.length}if(!len)return[];this.removeIsMove=!0===isMove;this.removeIsSilent=silent;data.remove(toRemove);this.removeIsSilent=!1;return toRemove},onCollectionRemove:function(collection,info){collection=this.removed;var records=info.items,len=records.length,index=info.at,replacement=info.replacement,isMove=this.removeIsMove||replacement&&Ext.Array.equals(records,replacement.items),silent=this.removeIsSilent;info=!info.next;var data=this.getDataSource(),
i;if(!this.ignoreCollectionRemove){replacement&&this.setMoving(replacement.items,!0);for(i=0;i<len;++i){var record=records[i];data.contains(record)||(!collection||isMove||record.phantom||record.erasing?record.unjoin(this):(record.removedFrom=index+i,collection.push(record),this.needsSync=!0))}silent||replacement&&replacement.items.length||(this.fireEvent('remove',this,records,index,isMove),info&&this.fireEvent('datachanged',this));replacement&&this.setMoving(replacement.items,!1)}},onFilterEndUpdate:function(){this.destroying||
this.destroyed||(Ext.data.ProxyStore.prototype.onFilterEndUpdate.apply(this,arguments),this.callObservers('Filter'))},removeAt:function(index,count){var data=this.getData();index=Math.max(index,0);if(index<data.length){if(1===arguments.length)count=1;else if(!count)return;data.removeAt(index,count)}},removeAll:function(silent){var data=this.getData(),records=data.getRange();data.length&&(this.removeIsSilent=!0,this.callObservers('BeforeRemoveAll'),data.removeAll(),this.removeIsSilent=!1,silent||(this.fireEvent('clear',
this,records),this.fireEvent('datachanged',this)),this.callObservers('AfterRemoveAll',[!!silent]));return records},setRecords:function(records){var count=this.getCount();++this.loadCount;count?this.getData().splice(0,count,records):this.add(records)},splice:function(index,toRemove,toAdd){return this.getData().splice(index,toRemove,toAdd)},onProxyLoad:function(operation){var resultSet=operation.getResultSet(),records=operation.getRecords(),successful=operation.wasSuccessful();this.destroyed||(resultSet&&
(this.totalCount=resultSet.getTotal()),successful?(records=this.processAssociation(records),this.loadRecords(records,operation.getAddRecords()?{addRecords:!0}:void 0)):this.loading=!1,this.hasListeners.load&&this.fireEvent('load',this,records,successful,operation),this.callObservers('AfterLoad',[records,successful,operation]))},filterDataSource:function(fn){var source=this.getDataSource(),items=source.items,len=items.length,ret=[],i;for(i=0;i<len;i++)fn.call(source,items[i])&&ret.push(items[i]);return ret},
getNewRecords:function(){return this.filterDataSource(this.filterNew)},getRejectRecords:function(){return this.filterDataSource(this.filterRejects)},getUpdatedRecords:function(){return this.filterDataSource(this.filterUpdated)},loadData:function(data,append){var length=data.length,newData=[],i;for(i=0;i<length;i++)newData.push(this.createModel(data[i]));newData=this.processAssociation(newData);this.loadRecords(newData,append?this.addRecordsOptions:void 0)},loadRawData:function(data,append){var session=
this.getSession();data=this.getProxy().getReader().read(data,session?{recordCreator:session.recordCreator}:void 0);session=data.getRecords();var success=data.getSuccess();success&&(this.totalCount=data.getTotal(),this.loadRecords(session,append?this.addRecordsOptions:void 0));return success},loadRecords:function(records,options){var length=records.length,data=this.getData();if(options)var addRecords=options.addRecords;if(!this.getRemoteSort()&&!this.getSortOnLoad()){var skipSort=!0;data.setAutoSort(!1)}addRecords||
this.clearData(!0);this.loading=!1;this.ignoreCollectionAdd=!0;this.callObservers('BeforePopulate');data.add(records);this.ignoreCollectionAdd=!1;skipSort&&data.setAutoSort(!0);for(options=0;options<length;options++)records[options].join(this);++this.loadCount;this.complete=!0;this.hasListeners.datachanged&&this.fireEvent('datachanged',this);this.hasListeners.refresh&&this.fireEvent('refresh',this);this.callObservers('AfterPopulate')},loadPage:function(page,options){var size=this.getPageSize();this.currentPage=
page;options=Ext.apply({page:page,start:(page-1)*size,limit:size,addRecords:!this.getClearOnPageLoad()},options);this.read(options)},nextPage:function(options){this.loadPage(this.currentPage+1,options)},previousPage:function(options){this.loadPage(this.currentPage-1,options)},clearData:function(isLoad){var removed=this.removed,data=this.getDataSource(),clearRemovedOnLoad=this.getClearRemovedOnLoad(),needsUnjoinCheck=removed&&isLoad&&!clearRemovedOnLoad,len;if(data){var records=data.items;var i=0;
for(len=records.length;i<len;++i){var record=records[i];needsUnjoinCheck&&Ext.Array.contains(removed,record)||record.unjoin(this)}this.ignoreCollectionRemove=!0;this.callObservers('BeforeClear');data.removeAll();this.ignoreCollectionRemove=!1;this.callObservers('AfterClear')}!removed||isLoad&&!clearRemovedOnLoad||(removed.length=0)},onIdChanged:function(rec,oldId,newId){this.getData().updateKey(rec,oldId);this.fireEvent('idchanged',this,rec,oldId,newId)},commitChanges:function(){var recs=this.getModifiedRecords(),
len=recs.length,i=0;Ext.suspendLayouts();for(this.beginUpdate();i<len;i++)recs[i].commit();this.cleanRemoved();this.endUpdate();Ext.resumeLayouts(!0)},filterNewOnly:function(item){return!0===item.phantom},filterRejects:function(item){return item.phantom||item.dirty},rejectChanges:function(){var recs=this.getRejectRecords(),len=recs.length,i;Ext.suspendLayouts();this.beginUpdate();for(i=0;i<len;i++){var rec=recs[i];if(rec.phantom){var toRemove=toRemove||[];toRemove.push(rec)}else rec.reject()}if(toRemove)for(this.remove(toRemove),
i=0,len=toRemove.length;i<len;++i)toRemove[i].reject();if(recs=this.getRawRemovedRecords()){len=recs.length;if(toRemove=!this.getRemoteSort()&&this.isSorted()){var data=this.getData();var currentAutoSort=data.getAutoSort();data.setAutoSort(!1)}for(i=len-1;0<=i;i--)rec=recs[i],rec.reject(),toRemove||this.insert(rec.removedFrom||0,rec);toRemove&&(data.setAutoSort(currentAutoSort),this.add(recs));recs.length=0}this.endUpdate();Ext.resumeLayouts(!0)},doDestroy:function(){var task=this.loadTask,source=
this.getData().getSource();this.clearData();this.setSession(null);this.observers=null;task&&(task.cancel(),this.loadTask=null);source&&source.destroy();Ext.data.ProxyStore.prototype.doDestroy.call(this)},privates:{fetch:function(options){options=Ext.apply({},options);this.setLoadOptions(options);this.createOperation('read',options).execute()},fireChangeEvent:function(record){return this.getDataSource().contains(record)},onBeforeLoad:function(operation){this.callObservers('BeforeLoad',[operation])},
onRemoteFilterSet:function(filters,remoteFilter){filters&&this.getData().setFilters(remoteFilter?null:filters);Ext.data.ProxyStore.prototype.onRemoteFilterSet.call(this,filters,remoteFilter)},onRemoteSortSet:function(sorters,remoteSort){var data=this.getData();sorters&&data.setSorters(remoteSort?null:sorters);data.setAutoGroup(!remoteSort);Ext.data.ProxyStore.prototype.onRemoteSortSet.call(this,sorters,remoteSort)},isMoving:function(records,getMap){var map=this.moveMap,moving=0;if(map)if(records)if(Ext.isArray(records)){var i=
0;for(getMap=records.length;i<getMap;++i)moving+=map[records[i].id]?1:0}else map[records.id]&&++moving;else moving=getMap?map:this.moveMapCount;return moving},setLoadOptions:function(options){var pageSize=this.getPageSize(),grouper;this.getRemoteSort()&&!options.grouper&&(grouper=this.getGrouper())&&(options.grouper=grouper);if(pageSize||'start'in options||'limit'in options||'page'in options)options.page=null!=options.page?options.page:this.currentPage,options.start=void 0!==options.start?options.start:
(options.page-1)*pageSize,options.limit=null!=options.limit?options.limit:pageSize,this.currentPage=options.page;options.addRecords=options.addRecords||!1;!options.recordCreator&&(pageSize=this.getSession())&&(options.recordCreator=pageSize.recordCreator);Ext.data.ProxyStore.prototype.setLoadOptions.call(this,options)},setMoving:function(records,isMoving){var map=this.moveMap||(this.moveMap={}),len=records.length,i;for(i=0;i<len;++i){var id=records[i].id;isMoving?map[id]?++map[id]:(map[id]=1,++this.moveMapCount):
0===--map[id]&&(delete map[id],--this.moveMapCount)}0===this.moveMapCount&&(this.moveMap=null)},processAssociation:function(records){var associatedEntity=this.getAssociatedEntity();associatedEntity&&(records=this.getRole().processLoad(this,associatedEntity,records,this.getSession()));return records}}},1,0,0,0,['store.store'],[[Ext.data.LocalStore.prototype.mixinId||Ext.data.LocalStore.$className,Ext.data.LocalStore]],[Ext.data,'Store'],0);
Ext.cmd.derive('Ext.data.reader.Array',Ext.data.reader.Json,{alternateClassName:'Ext.data.ArrayReader',config:{totalProperty:void 0,successProperty:void 0},createFieldAccessor:function(field){var oldMap=field.mapping,index=field.hasMapping()?oldMap:field.ordinal;field.mapping=index;index=Ext.data.reader.Json.prototype.createFieldAccessor.apply(this,arguments);field.mapping=oldMap;return index},getModelData:function(raw){return{}}},0,0,0,0,['reader.array'],0,[Ext.data.reader,'Array',Ext.data,'ArrayReader'],
0);Ext.cmd.derive('Ext.data.ArrayStore',Ext.data.Store,{alternateClassName:['Ext.data.SimpleStore'],config:{proxy:{type:'memory',reader:'array'}},loadData:function(data,append){if(this.expandData){for(var r=[],i=0,ln=data.length;i<ln;i++)r[r.length]=[data[i]];data=r}Ext.data.Store.prototype.loadData.call(this,data,append)}},0,0,0,0,['store.array'],0,[Ext.data,'ArrayStore',Ext.data,'SimpleStore'],0);
Ext.cmd.derive('Ext.data.StoreManager',Ext.util.MixedCollection,{alternateClassName:['Ext.StoreMgr','Ext.data.StoreMgr','Ext.StoreManager'],singleton:!0,register:function(){for(var i=0,s;s=arguments[i];i++)this.add(s)},unregister:function(){for(var i=0,s;s=arguments[i];i++)this.remove(this.lookup(s))},lookup:function(store,defaultType){if(Ext.isArray(store)){defaultType=['field1'];var expand=!Ext.isArray(store[0]),data=store,len;if(expand){data=[];var i=0;for(len=store.length;i<len;++i)data.push([store[i]])}else for(i=
2,len=store[0].length;i<=len;++i)defaultType.push('field'+i);return new Ext.data.ArrayStore({data:data,fields:defaultType,autoDestroy:!0,autoCreated:!0,expanded:expand})}return Ext.isString(store)?this.get(store):Ext.Factory.store(store,defaultType)},getKey:function(o){return o.storeId},addEmptyStore:function(){var emptyStore=Ext.regStore('ext-empty-store',{proxy:'memory',useModelWarning:!1});emptyStore.isEmptyStore=!0;this.add(emptyStore)},clear:function(){this.callParent();this.addEmptyStore()}},
0,0,0,0,0,0,[Ext.data,'StoreManager',Ext,'StoreMgr',Ext.data,'StoreMgr',Ext,'StoreManager'],function(){Ext.regStore=function(name,config){if(Ext.isObject(name))config=name;else{if(Ext.data.StoreManager.containsKey(name))return Ext.data.StoreManager.lookup(name);config.storeId=name}name=config instanceof Ext.data.Store?config:new Ext.data.Store(config);Ext.data.StoreManager.register(name);return name};Ext.getStore=function(name){return Ext.data.StoreManager.lookup(name)};Ext.data.StoreManager.addEmptyStore()});
Ext.cmd.derive('Ext.app.domain.Store',Ext.app.EventDomain,{singleton:!0,type:'store',prefix:'store.',idMatchRe:/^\#/,constructor:function(){this.callParent();this.monitor(Ext.data.AbstractStore)},match:function(target,selector){var result=!1,alias=target.alias;'*'===selector?result=!0:this.idMatchRe.test(selector)?result=target.getStoreId()===selector.substring(1):alias&&(result=-1<Ext.Array.indexOf(alias,this.prefix+selector));return result}},1,0,0,0,0,0,[Ext.app.domain,'Store'],0);
Ext.cmd.derive('Ext.app.route.Queue',Ext.Base,{queue:null,token:null,constructor:function(config){Ext.apply(this,config);this.queue=new Ext.util.MixedCollection},queueAction:function(route,args){this.queue.add({route:route,args:args})},clearQueue:function(){this.queue.removeAll()},runQueue:function(){var action=this.queue.removeAt(0);if(action){var route=action&&action.route;route.execute(this.token,action.args,this.onActionExecute,this)}},onActionExecute:function(clearQueue){clearQueue?this.clearQueue():
this.runQueue()}},1,0,0,0,0,0,[Ext.app.route,'Queue'],0);
Ext.cmd.derive('Ext.app.route.Route',Ext.Base,{action:null,conditions:null,controller:null,allowInactive:!1,url:null,before:null,caseInsensitive:!1,matcherRegex:null,paramMatchingRegex:null,paramsInMatchString:null,constructor:function(config){Ext.apply(this,config,{conditions:{}});config=this.url;this.paramMatchingRegex=new RegExp(/:([0-9A-Za-z\_]*)/g);this.paramsInMatchString=config.match(this.paramMatchingRegex)||[];this.matcherRegex=this.createMatcherRegex(config)},recognize:function(url){var controller=
this.controller;if((this.allowInactive||controller.isActive())&&this.recognizes(url)){var matches=this.matchesFor(url);var args=url.match(this.matcherRegex);args.shift();return Ext.applyIf(matches,{controller:controller,action:this.action,historyUrl:url,args:args})}return!1},recognizes:function(url){return this.matcherRegex.test(url)},execute:function(token,argConfig,callback,scope){token=argConfig.args||[];var before=this.before,controller=this.controller;argConfig=this.createCallback(argConfig,
callback,scope);before?(token.push(argConfig),Ext.isString(before)&&(before=this.before=controller[before]),before&&before.apply(controller,token)):argConfig.resume()},matchesFor:function(url){var params={},keys=this.paramsInMatchString;url=url.match(this.matcherRegex);var i=0,len=keys.length;for(url.shift();i<len;i++)params[keys[i].replace(':','')]=url[i];return params},createMatcherRegex:function(url){for(var paramsInMatchString=this.paramsInMatchString,conditions=this.conditions,i=0,len=paramsInMatchString.length,
format=Ext.util.Format.format,modifiers=this.caseInsensitive?'i':'',params,cond;i<len;i++)params=paramsInMatchString[i],cond=conditions[params],cond=format('{0}',cond||'([%a-zA-Z0-9\\-\\_\\s,]+)'),url=url.replace(new RegExp(params),cond);return new RegExp('^'+url+'$',modifiers)},createCallback:function(args,callback,scope){var me=this;scope=scope||me;return{resume:function(){var controller=me.controller,action=me.action,resume;Ext.isString(action)&&(action=controller[action]);args=args&&args.args?
args.args:[];(resume=args.pop())&&!Ext.isObject(resume)&&args.push(resume);action&&(me.action=action,action.apply(controller,args));callback&&callback.call(scope)},stop:function(all){callback&&callback.call(scope,all)}}}},1,0,0,0,0,0,[Ext.app.route,'Route'],0);
Ext.cmd.derive('Ext.util.History',Ext.Base,{singleton:!0,alternateClassName:'Ext.History',useTopWindow:!1,constructor:function(){this.hiddenField=null;this.ready=!1;this.currentToken=null;this.mixins.observable.constructor.call(this)},getHash:function(){return this.win.location.hash.substr(1)},setHash:function(hash){try{this.currentToken=this.win.location.hash=hash}catch(e){}},handleStateChange:function(token){this.currentToken=token;this.fireEvent('change',token)},startUp:function(){this.currentToken=
this.getHash();if(Ext.supports.Hashchange)Ext.get(this.win).on('hashchange',this.onHashChange,this);else Ext.TaskManager.start({fireIdleEvent:!1,run:this.onHashChange,interval:50,scope:this});this.ready=!0;this.fireEvent('ready',this)},onHashChange:function(){var newHash=this.getHash();newHash!==this.hash&&(this.hash=newHash,this.handleStateChange(newHash))},init:function(onReady,scope){var me=this;if(me.ready)Ext.callback(onReady,scope,[me]);else if(Ext.isReady){me.win=me.useTopWindow?window.top:
window;me.hash=me.getHash();if(onReady)me.on('ready',onReady,scope,{single:!0});me.startUp()}else Ext.onInternalReady(function(){me.init(onReady,scope)})},add:function(token,preventDuplicates){var set=!1;if(!1===preventDuplicates||this.getToken()!==token)this.setHash(token),set=!0;return set},back:function(){(this.useTopWindow?window.top:window).history.go(-1)},forward:function(){(this.useTopWindow?window.top:window).history.go(1)},getToken:function(){return this.ready?this.currentToken:this.getHash()}},
1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.util,'History',Ext,'History'],0);Ext.define('MainApp.overrides.History',{override:'Ext.util.History',startUp:function(){this.currentToken=this.getHash();if(Ext.supports.Hashchange){var win=this.useTopWindow?window.top:window;win.addEventListener('hashchange',this.onHashChange.bind(this),!1)}else Ext.TaskManager.start({fireIdleEvent:!1,run:this.onHashChange,interval:50,scope:this});this.ready=!0;this.fireEvent('ready',this)}});
Ext.cmd.derive('Ext.app.route.Router',Ext.Base,{singleton:!0,multipleToken:'|',queueRoutes:!0,constructor:function(){var History=Ext.util.History;History.ready||History.init();History.on('change',this.onStateChange,this);this.clear()},onStateChange:function(token){for(var app=this.application,routes=this.routes,len=routes.length,queueRoutes=this.queueRoutes,tokens=token.split(this.multipleToken),t=0,length=tokens.length,i,queue,route,args,matched;t<length;t++){token=tokens[t];matched=!1;queueRoutes&&
(queue=new Ext.app.route.Queue({token:token}));for(i=0;i<len;i++)if(route=routes[i],args=route.recognize(token))matched=!0,queueRoutes?queue.queueAction(route,args):route.execute(token,args);queueRoutes&&queue.runQueue();!matched&&app&&app.fireEvent('unmatchedroute',token)}},connect:function(url,action,controller){url={url:url,action:action,controller:controller};Ext.isObject(action)&&Ext.merge(url,action);this.routes.push(new Ext.app.route.Route(url))},disconnectAll:function(controller){var routes=
this.routes,len=routes.length,newRoutes=[],i;for(i=0;i<len;++i){var route=routes[i];route.controller!==controller&&newRoutes.push(route)}this.routes=newRoutes},recognize:function(url){for(var routes=this.routes||[],i=0,len=routes.length,route,args;i<len;i++)if(route=routes[i],args=route.recognize(url))return{route:route,args:args};return!1},draw:function(fn){fn.call(this,this)},clear:function(){this.routes=[]}},1,0,0,0,0,0,[Ext.app.route,'Router'],0);
Ext.cmd.derive('Ext.app.Controller',Ext.app.BaseController,{statics:{strings:{model:{getter:'getModel',upper:'Model'},view:{getter:'getView',upper:'View'},controller:{getter:'getController',upper:'Controller'},store:{getter:'getStore',upper:'Store'},profile:{getter:'getProfile',upper:'Profiles'}},controllerRegex:/^(.*)\.controller\./,profileRegex:/^(.*)\.profile\./,createGetter:function(baseGetter,name){return function(){return this[baseGetter](name)}},getGetterName:function(name,kindUpper){var fn=
'get';name=name.split('.');var numParts=name.length,index;for(index=0;index<numParts;index++)fn+=Ext.String.capitalize(name[index]);return fn+kindUpper},resolveNamespace:function(cls,data){var Controller=Ext.app.Controller;Controller=cls.prototype.isProfile?Controller.profileRegex:Controller.controllerRegex;var match;cls=Ext.getClassName(cls);return data.$namespace||data.namespace||Ext.app.getNamespace(cls)||(match=Controller.exec(cls))&&match[1]},processDependencies:function(cls,requires,namespace,
kind,names,profileName){if(names&&names.length){var strings=this.strings[kind],absoluteName,subLn,getter;Ext.isArray(names)||(names=[names]);var j=0;for(subLn=names.length;j<subLn;j++){var name=names[j];var o=this.getFullName(name,kind,namespace,profileName);names[j]=absoluteName=o.absoluteName;o=o.shortName;requires.push(absoluteName);absoluteName=this.getGetterName(o,strings.upper);cls[absoluteName]||(cls[absoluteName]=getter=this.createGetter(strings.getter,name));getter&&'controller'!==kind&&
(getter['Ext.app.getter']=!0)}}},getFullName:function(name,kind,namespace,profileName){var shortName=name,sep;0<(sep=name.indexOf('@'))?(shortName=name.substring(0,sep),profileName=name.substring(sep+1)+'.'+shortName):0<name.indexOf('.')&&(Ext.ClassManager.isCreated(name)||this.hasRegisteredPrefix(name))?(profileName=name,shortName=name.replace(namespace+'.'+kind+'.','')):namespace?(profileName=namespace+'.'+kind+'.'+(profileName?profileName+'.'+name:name),shortName=name):profileName=name;return{absoluteName:profileName,
shortName:shortName}},hasRegisteredPrefix:function(className){var prefix=Ext.ClassManager.getPrefix(className);return prefix&&prefix!==className}},models:null,views:null,stores:null,controllers:null,config:{application:null,refs:null,active:!0,moduleClassName:null},onClassExtended:function(cls$jscomp$0,data$jscomp$0,hooks){var onBeforeClassCreated=hooks.onBeforeCreated;hooks.onBeforeCreated=function(cls,data){var Controller=Ext.app.Controller,requires=[],namespace;var proto=cls.prototype;if(namespace=
Controller.resolveNamespace(cls,data))proto.$namespace=namespace;Controller.processDependencies(proto,requires,namespace,'model',data.models);Controller.processDependencies(proto,requires,namespace,'view',data.views);Controller.processDependencies(proto,requires,namespace,'store',data.stores);Controller.processDependencies(proto,requires,namespace,'controller',data.controllers);Ext.require(requires,Ext.Function.pass(onBeforeClassCreated,arguments,this))}},constructor:function(config){this.initAutoGetters();
Ext.app.BaseController.prototype.constructor.call(this,config)},normalizeRefs:function(refs){var newRefs=[];refs&&(Ext.isObject(refs)?Ext.Object.each(refs,function(key,value){Ext.isString(value)&&(value={selector:value});value.ref=key;newRefs.push(value)}):Ext.isArray(refs)&&(newRefs=Ext.Array.merge(newRefs,refs)));if(refs=this.refs)this.refs=null,(refs=this.normalizeRefs(refs))&&(newRefs=Ext.Array.merge(newRefs,refs));return newRefs},getRefMap:function(){var refMap=this._refMap,ln;if(!refMap){var refs=
this.getRefs();refMap=this._refMap={};if(refs){var i=0;for(ln=refs.length;i<ln;i++){var ref=refs[i];refMap[ref.ref]=ref.selector}}}return refMap},applyId:function(id){return id||Ext.app.Controller.getFullName(this.$className,'controller',this.$namespace).shortName},applyRefs:function(refs){return this.normalizeRefs(Ext.clone(refs))},updateRefs:function(refs){refs&&this.ref(refs)},initAutoGetters:function(){var proto=this.self.prototype,prop,fn;for(prop in proto)(fn=proto[prop])&&fn['Ext.app.getter']&&
fn.call(this)},doInit:function(app){this._initialized||(this.init(app),this._initialized=!0)},finishInit:function(app){var controllers=this.controllers,l;if(this._initialized&&controllers&&controllers.length){var i=0;for(l=controllers.length;i<l;i++){var controller=this.getController(controllers[i]);controller.finishInit(app)}}},init:Ext.emptyFn,onLaunch:Ext.emptyFn,activate:function(){this.setActive(!0)},deactivate:function(){this.setActive(!1)},isActive:function(){return this.getActive()},ref:function(refs){var i=
0,length=refs.length;refs=Ext.Array.from(refs);for(this.references=this.references||[];i<length;i++){var info=refs[i];var ref=info.ref;var fn='get'+Ext.String.capitalize(ref);this[fn]||(this[fn]=Ext.Function.pass(this.getRef,[ref,info],this));this.references.push(ref.toLowerCase())}},addRef:function(refs){this.ref(refs)},getRef:function(ref,info,config){var refCache=this.refCache||(this.refCache={}),cached=refCache[ref];info=info||{};config=config||{};Ext.apply(info,config);if(info.forceCreate)return Ext.ComponentManager.create(info,
'component');if(!cached&&(info.selector&&(refCache[ref]=cached=Ext.ComponentQuery.query(info.selector)[0]),!cached&&info.autoCreate&&(refCache[ref]=cached=Ext.ComponentManager.create(info,'component')),cached))cached.on('destroy',function(){refCache[ref]=null});return cached},hasRef:function(ref){var references=this.references;return references&&-1!==Ext.Array.indexOf(references,ref.toLowerCase())},getController:function(id){var app=this.getApplication();return id===this.getId()?this:app&&app.getController(id)},
getStore:function(name){var storeId=-1===name.indexOf('@')?name:name.split('@')[0];var store=Ext.StoreManager.get(storeId);store||(name=Ext.app.Controller.getFullName(name,'store',this.$namespace))&&(store=Ext.create(name.absoluteName,{id:storeId}));return store},getModel:function(model){var name=Ext.app.Controller.getFullName(model,'model',this.$namespace);(name=Ext.ClassManager.get(name.absoluteName))||(name=Ext.data.schema.Schema.lookupEntity(model));return name},getProfile:function(name){return name=
Ext.app.Controller.getFullName(name,'profile',this.$namespace)},getView:function(view){return(view=Ext.app.Controller.getFullName(view,'view',this.$namespace))&&Ext.ClassManager.get(view.absoluteName)},destroy:function(destroyRefs,fromApp){var app=this.application,ref;!fromApp&&app&&app.unregister(this);this.application=null;if(destroyRefs)for(ref in destroyRefs=this.refCache,destroyRefs)destroyRefs.hasOwnProperty(ref)&&Ext.destroy(destroyRefs[ref]);Ext.app.BaseController.prototype.destroy.call(this)}},
1,0,0,0,0,0,[Ext.app,'Controller'],0);
Ext.cmd.derive('Ext.app.Application',Ext.app.Controller,{isApplication:!0,scope:void 0,namespaces:[],paths:null,config:{name:'',appProperty:'app',profiles:[],currentProfile:null,mainView:{$value:null,lazy:!0},defaultToken:null,glyphFontFamily:null,quickTips:!0},onClassExtended:function(cls$jscomp$0,data$jscomp$0,hooks){var Controller=Ext.app.Controller,proto=cls$jscomp$0.prototype,requires=[],namespace;if(namespace=data$jscomp$0.name||cls$jscomp$0.superclass.name)data$jscomp$0.$namespace=namespace,
Ext.app.addNamespaces(namespace);data$jscomp$0.namespaces&&Ext.app.addNamespaces(data$jscomp$0.namespaces);data$jscomp$0['paths processed']?delete data$jscomp$0['paths processed']:Ext.app.setupPaths(namespace,'appFolder'in data$jscomp$0?data$jscomp$0.appFolder:cls$jscomp$0.superclass.appFolder,data$jscomp$0.paths);Controller.processDependencies(proto,requires,namespace,'profile',data$jscomp$0.profiles);proto.getDependencies(cls$jscomp$0,data$jscomp$0,requires);if(requires.length){var onBeforeClassCreated=
hooks.onBeforeCreated;hooks.onBeforeCreated=function(cls,data){var args=Ext.Array.clone(arguments);Ext.require(requires,function(){return onBeforeClassCreated.apply(this,args)})}}},getDependencies:Ext.emptyFn,constructor:function(config){Ext.app.route.Router.application=this;Ext.app.Controller.prototype.constructor.call(this,config);this.doInit(this);this.initNamespace();Ext.on('appupdate',this.onAppUpdate,this,{single:!0});this.onProfilesReady()},applyId:function(id){return id||this.$className},
onAppUpdate:Ext.emptyFn,onProfilesReady:function(){var profiles=this.getProfiles(),length=profiles.length,i;for(i=0;i<length;i++){var instance=Ext.create(profiles[i],{application:this});if(instance.isActive()&&!current){var current=instance;this.setCurrentProfile(current)}}current&&current.init();this.initControllers();this.onBeforeLaunch();this.finishInitControllers()},initNamespace:function(){var me=this,appProperty=me.getAppProperty(),ns;if(ns=Ext.namespace(me.getName()))ns.getApplication=function(){return me},
appProperty&&(ns[appProperty]||(ns[appProperty]=me))},initControllers:function(){var controllers=Ext.Array.from(this.controllers),profile=this.getCurrentProfile(),ln;this.controllers=new Ext.util.MixedCollection;var i=0;for(ln=controllers.length;i<ln;i++)this.getController(controllers[i]);if(profile)for(controllers=profile.getControllers(),i=0,ln=controllers.length;i<ln;i++)this.getController(controllers[i])},finishInitControllers:function(){var l;var controllers=this.controllers.getRange();var i=
0;for(l=controllers.length;i<l;i++)controllers[i].finishInit(this)},launch:Ext.emptyFn,onBeforeLaunch:function(){var History=Ext.util.History,defaultToken=this.getDefaultToken(),currentProfile=this.getCurrentProfile(),c;this.initMainView();currentProfile&&currentProfile.launch();this.launch.call(this.scope||this);this.launched=!0;this.fireEvent('launch',this);currentProfile=this.controllers.items;var cLen=currentProfile.length;for(c=0;c<cLen;c++){var controller=currentProfile[c];controller.onLaunch(this)}History.ready||
History.init();if((currentProfile=History.getToken())||currentProfile===defaultToken)Ext.app.route.Router.onStateChange(currentProfile);else defaultToken&&History.add(defaultToken);Ext.Microloader&&Ext.Microloader.appUpdate&&Ext.Microloader.appUpdate.updated&&Ext.Microloader.fireAppUpdate();Ext.defer(Ext.ClassManager.clearNamespaceCache,2E3,Ext.ClassManager)},getModuleClassName:function(name,kind){return Ext.app.Controller.getFullName(name,kind,this.getName()).absoluteName},initMainView:function(){var currentProfile=
this.getCurrentProfile(),mainView;currentProfile&&(mainView=currentProfile.getMainView());mainView?this.setMainView(mainView):this.getMainView()},applyMainView:function(value){return this.getView(value).create({$initParent:this.viewport})},createController:function(name){return this.getController(name)},destroyController:function(controller){'string'===typeof controller&&(controller=this.getController(controller,!0));Ext.destroy(controller)},getController:function(name,preventCreate){var controllers=
this.controllers,className,len;var controller=controllers.get(name);if(!controller){var all=controllers.items;var i=0;for(len=all.length;i<len;++i){var c=all[i];if((className=c.getModuleClassName())&&className===name){controller=c;break}}}controller||preventCreate||(className=this.getModuleClassName(name,'controller'),controller=Ext.create(className,{application:this,moduleClassName:className}),controllers.add(controller),this._initialized&&controller.doInit(this));return controller},unregister:function(controller){this.controllers.remove(controller)},
getApplication:function(){return this},destroy:function(destroyRefs){var controllers=this.controllers,ns=Ext.namespace(this.getName()),appProp=this.getAppProperty();Ext.un('appupdate',this.onAppUpdate,this);Ext.destroy(this.viewport);controllers&&controllers.each(function(controller){controller.destroy(destroyRefs,!0)});this.controllers=null;Ext.app.Controller.prototype.destroy.call(this,destroyRefs,!0);ns&&ns[appProp]===this&&delete ns[appProp];Ext.app.route.Router.application===this&&(Ext.app.route.Router.application=
null);Ext.app.Application.instance===this&&(Ext.app.Application.instance=null)},updateGlyphFontFamily:function(fontFamily){Ext.setGlyphFontFamily(fontFamily)},applyProfiles:function(profiles){var me=this;return Ext.Array.map(profiles,function(profile){return me.getModuleClassName(profile,'profile')})}},1,0,0,0,0,0,[Ext.app,'Application'],0);
Ext.application=function(config){var createApp=function(App){Ext.onReady(function(){var Viewport=Ext.viewport;(Viewport=Viewport&&Viewport.Viewport)&&Viewport.setup&&Viewport.setup(App.prototype.config.viewport);Ext.app.Application.instance=new App})};'string'===typeof config?Ext.require(config,function(){createApp(Ext.ClassManager.get(config))}):(config=Ext.apply({extend:'Ext.app.Application'},config),Ext.app.setupPaths(config.name,config.appFolder,config.paths),config['paths processed']=!0,Ext.define(config.name+
'.$application',config,function(){createApp(this)}))};
Ext.define('Ext.overrides.app.Application',{override:'Ext.app.Application',autoCreateViewport:!1,config:{enableQuickTips:null},quickTips:!0,updateEnableQuickTips:function(enableQuickTips){this.setQuickTips(enableQuickTips)},applyMainView:function(mainView){mainView='string'===typeof mainView?this.getView(mainView):Ext.ClassManager.getByConfig(mainView);var proto=mainView.prototype;if(!proto.isViewport){var config=proto.plugins;config=['viewport'].concat(config?Ext.Array.from(config,!0):[]);config=
{plugins:config}}return mainView.create(config)},getDependencies:function(cls,data,requires){var Controller=Ext.app.Controller;cls=cls.prototype;var namespace=data.$namespace;if(data=data.autoCreateViewport)!0===data?data='Viewport':requires.push('Ext.plugin.Viewport'),Controller.processDependencies(cls,requires,namespace,'view',data)},onBeforeLaunch:function(){var autoCreateViewport=this.autoCreateViewport;this.getQuickTips()&&this.initQuickTips();autoCreateViewport&&this.initViewport();arguments.callee.$previous.apply(this,
arguments)},getViewportName:function(){var name=null,autoCreate=this.autoCreateViewport;autoCreate&&(name=!0===autoCreate?'Viewport':autoCreate);return name},initViewport:function(){this.setMainView(this.getViewportName())},initQuickTips:function(){Ext.tip.QuickTipManager.init()}});
Ext.cmd.derive('Ext.app.domain.View',Ext.app.EventDomain,{isInstance:!0,constructor:function(controller){Ext.app.EventDomain.prototype.constructor.call(this,controller);this.controller=controller;this.monitoredClasses=[Ext.Widget]},match:function(target,selector,controller){return'#'===selector?controller===target.getController():target.is(selector)},destroy:function(){this.controller=null;Ext.app.EventDomain.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.app.domain,'View'],0);
Ext.define('Ext.overrides.app.domain.View',{override:'Ext.app.domain.View',constructor:function(controller){(arguments.callee.$previous||Ext.app.EventDomain.prototype.constructor).call(this,controller);this.monitoredClasses.push(Ext.Component)}});
Ext.cmd.derive('Ext.app.ViewController',Ext.app.BaseController,{isViewController:!0,factoryConfig:{type:'controller'},config:{closeViewAction:'destroy'},view:null,constructor:function(){this.compDomain=new Ext.app.domain.View(this);Ext.app.BaseController.prototype.constructor.apply(this,arguments)},beforeInit:Ext.emptyFn,init:Ext.emptyFn,initViewModel:Ext.emptyFn,destroy:function(){var domain=this.compDomain;domain&&(domain.unlisten(this),domain.destroy());this.compDomain=this.view=null;Ext.app.BaseController.prototype.destroy.call(this)},
closeView:function(){var view=this.getView();if(view){var action=this.getCloseViewAction();view[action]()}},control:function(selectors,listeners){var obj=selectors;Ext.isString(selectors)&&(obj={},obj[selectors]=listeners);this.compDomain.listen(obj,this)},listen:function(to,controller){var component=to.component;component&&(to=Ext.apply({},to),delete to.component,this.control(component));this.callParent([to,controller])},applyId:function(id){id||(id=Ext.id(null,'controller-'));return id},getReferences:function(){var view=
this.view;return view&&view.getReferences()},getView:function(){return this.view},lookup:function(key){var view=this.view;return view&&view.lookup(key)},lookupReference:function(key){return this.lookup(key)},getSession:function(){var view=this.view;return view&&view.lookupSession()},getViewModel:function(){var view=this.view;return view&&view.lookupViewModel()},getStore:function(name){var viewModel=this.getViewModel();return viewModel?viewModel.getStore(name):null},fireViewEvent:function(eventName,
firstArg){var view=this.view,result=!1,args=arguments;view&&(view!==firstArg&&(args=Ext.Array.slice(args),args.splice(1,0,view)),result=view.fireEvent.apply(view,args));return result},privates:{view:null,attachReference:function(component){var view=this.view;view&&view.attachReference(component)},clearReference:function(ref){var view=this.view;view&&view.clearReference(ref)},clearReferences:function(){var view=this.view;view&&view.clearReferences()},setView:function(view){this.view=view;this.beforeInit.$nullFn||
this.beforeInit(view)}}},1,0,0,0,['controller.controller'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.app,'ViewController'],0);
Ext.cmd.derive('Ext.util.Bag',Ext.Base,{isBag:!0,constructor:function(){this.items=[];this.map={}},generation:0,length:0,beginUpdate:Ext.emptyFn,endUpdate:Ext.emptyFn,add:function(item){var items=this.items,map=this.map,n=1,i,it,ret;if(Ext.isArray(item)){var old=ret=[];n=item.length}for(i=0;i<n;i++){var id=this.getKey(it=old?item[i]:item);var idx=map[id];void 0===idx?(items.push(it),map[id]=this.length++,old?old.push(it):ret=it):(id=items[idx],old?old.push(id):ret=id,items[idx]=it)}++this.generation;
return ret},clear:function(){var needsClear=this.generation||this.length,ret=needsClear?this.items:[];needsClear&&(this.items=[],this.length=0,this.map={},++this.generation);return ret},clone:function(){var ret=new this.self;this.length&&(Ext.apply(ret.map,this.map),ret.items=this.items.slice(),ret.length=this.length);return ret},contains:function(item){var ret=!1,map=this.map;if(null!=item){var key=this.getKey(item);key in map&&(ret=this.items[map[key]]===item)}return ret},containsKey:function(key){return key in
this.map},destroy:function(){this.items=this.map=null;this.callParent()},each:function(fn,scope){var items=this.items,len=items.length,i;if(len)for(scope=scope||this,items=items.slice(0),i=0;i<len;i++){var ret=fn.call(scope,items[i],i,len);if(!1===ret)break}return ret},getAt:function(index){var out=null;index<this.length&&(out=this.items[index]);return out},get:function(key){return this.getByKey(key)},getByKey:function(key){var map=this.map;return key in map?this.items[map[key]]:null},indexOfKey:function(key){var map=
this.map;return key in map?map[key]:-1},last:function(){return this.items[this.length-1]},updateKey:function(item,oldKey){var map=this.map,newKey;!item||!oldKey||(newKey=this.getKey(item))===oldKey||this.getAt(map[oldKey])!==item||newKey in map||(this.generation++,map[newKey]=map[oldKey],delete map[oldKey])},getCount:function(){return this.length},getKey:function(item){return item.id||item.getId()},getRange:function(begin,end){var items=this.items,length=items.length;length?(begin=Ext.Number.clipIndices(length,
[begin,end]),begin=items.slice(begin[0],begin[1])):begin=[];return begin},remove:function(item){var map=this.map,items=this.items,ret=null,n=1,i,id;if(Ext.isArray(item)){n=item.length;var old=ret=[]}if(this.length){for(i=0;i<n;i++){var idx=map[id=this.getKey(old?item[i]:item)];if(void 0!==idx){delete map[id];var changed=items[idx];old?old.push(changed):ret=changed;changed=items.pop();idx<--this.length&&(items[idx]=changed,map[this.getKey(changed)]=idx);changed=!0}}changed&&++this.generation}return ret},
removeByKey:function(key){(key=this.getByKey(key))&&this.remove(key);return key||null},replace:function(item){this.add(item);return item},sort:function(fn){var items=this.items,n=items.length;if(n){Ext.Array.sort(items,fn);for(this.map={};0<n--;)fn=items[n],this.map[this.getKey(fn)]=n;++this.generation}}},1,0,0,0,0,0,[Ext.util,'Bag'],0);
Ext.cmd.derive('Ext.util.Scheduler',Ext.Base,{busyCounter:0,lastBusyCounter:0,destroyed:!1,firing:null,notifyIndex:-1,nextId:0,orderedItems:null,passes:0,scheduledCount:0,validIdRe:null,config:{cycleLimit:5,preSort:null,tickDelay:5},suspendOnNotify:!0,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.items=new Ext.util.Bag},destroy:function(){var timer=this.timer;timer&&(window.clearTimeout(timer),this.timer=null);this.items.destroy();this.items=this.orderedItems=
null;this.callParent()},add:function(item){var items=this.items;items===this.firing&&(this.items=items=items.clone());item.id=item.id||++this.nextId;item.scheduler=this;items.add(item);this.sortMap||(this.orderedItems=null)},remove:function(item){var items=this.items;this.destroyed||(items===this.firing&&(this.items=items=items.clone()),item.scheduled&&(this.unscheduleItem(item),item.scheduled=!1),items.remove(item),this.orderedItems=null)},sort:function(){var items=this.items,sortMap={},preSort=
this.getPreSort();this.orderedItems=[];this.sortMap=sortMap;preSort&&items.sort(preSort);items=items.items;for(preSort=0;preSort<items.length;++preSort){var item=items[preSort];sortMap[item.id]||this.sortItem(item)}this.sortMap=null},sortItem:function(item){var sortMap=this.sortMap,orderedItems=this.orderedItems;item.scheduler||this.add(item);var itemId=item.id;itemId in sortMap||(sortMap[itemId]=0,item.sort.$nullFn||item.sort(),sortMap[itemId]=1,item.order=this.orderedItems.length,orderedItems.push(item));
return this},sortItems:function(items){var sortItem=this.sortItem;items&&(items instanceof Array?Ext.each(items,sortItem,this):Ext.Object.eachValue(items,sortItem,this));return this},applyPreSort:function(preSort){if('function'===typeof preSort)return preSort;var parts=preSort.split(','),direction=[],length=parts.length,c;for(preSort=0;preSort<length;++preSort){direction[preSort]=1;var s=parts[preSort];'-'===(c=s.charAt(0))?direction[preSort]=-1:'+'!==c&&(c=0);c&&(parts[preSort]=s.substring(1))}return function(lhs,
rhs){var ret=0,i;for(i=0;!ret&&i<length;++i){var prop=parts[i];ret=lhs[prop];prop=rhs[prop];ret=direction[i]*(ret<prop?-1:prop<ret?1:0)}return ret}},notify:function(){var timer=this.timer,cyclesLeft=this.getCycleLimit(),globalEvents=Ext.GlobalEvents,suspend=this.suspendOnNotify,len,queue;timer&&(window.clearTimeout(timer),this.timer=null);if(!this.firing&&this.scheduledCount){for(suspend&&Ext.suspendLayouts();this.scheduledCount;){if(cyclesLeft)--cyclesLeft;else{this.firing=null;break}if(!firedEvent){var firedEvent=
!0;globalEvents.hasListeners.beforebindnotify&&globalEvents.fireEvent('beforebindnotify',this)}++this.passes;(queue=this.orderedItems)||(this.sort(),queue=this.orderedItems);if(len=queue.length)for(this.firing=this.items,timer=0;timer<len;++timer){var item=queue[timer];if(item.scheduled&&(item.scheduled=!1,--this.scheduledCount,this.notifyIndex=timer,item.react(),!this.scheduledCount))break}}this.firing=null;this.notifyIndex=-1;suspend&&Ext.resumeLayouts(!0)}(cyclesLeft=this.busyCounter)!==this.lastBusyCounter&&
((this.lastBusyCounter=cyclesLeft)||this.fireEvent('idle',this))},onTick:function(){this.timer=null;this.notify()},scheduleItem:function(item){++this.scheduledCount;this.timer||this.firing||this.scheduleTick()},scheduleTick:function(){this.destroyed||this.timer||(this.timer=Ext.Function.defer(this.onTick,this.getTickDelay(),this))},unscheduleItem:function(item){this.scheduledCount&&--this.scheduledCount},adjustBusy:function(adjustment){(this.busyCounter=adjustment=this.busyCounter+adjustment)?this.lastBusyCounter||
(this.lastBusyCounter=adjustment,this.fireEvent('busy',this)):this.lastBusyCounter&&!this.timer&&this.scheduleTick()},isBusy:function(){return!this.isIdle()},isIdle:function(){return!(this.busyCounter+this.lastBusyCounter)}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.util,'Scheduler'],0);
Ext.cmd.derive('Ext.data.Batch',Ext.Base,{config:{pauseOnException:!1},current:-1,total:0,running:!1,complete:!1,exception:!1,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.operations=[];this.exceptions=[]},add:function(operation){var len;if(Ext.isArray(operation)){var i=0;for(len=operation.length;i<len;++i)this.add(operation[i])}else this.total++,operation.setBatch(this),this.operations.push(operation);return this},sort:function(){this.operations.sort(this.sortFn)},
sortFn:function(operation1,operation2){var ret=operation1.order-operation2.order;if(ret)return ret;ret=operation1.entityType;operation2=operation2.entityType;var rank;if(!ret||!operation2)return 0;(rank=ret.rank)||(ret.schema.rankEntities(),rank=ret.rank);return(rank-operation2.rank)*operation1.foreignKeyDirection},start:function(index){if(!this.operations.length||this.running)return this;this.exceptions.length=0;this.exception=!1;this.running=!0;return this.runOperation(Ext.isDefined(index)?index:
this.current+1)},retry:function(){return this.start(this.current)},runNextOperation:function(){this.running&&this.runOperation(this.current+1);return this},pause:function(){this.running=!1;return this},getOperations:function(){return this.operations},getExceptions:function(){return this.exceptions},getCurrent:function(){var out=null,current=this.current;-1===current||this.complete||(out=this.operations[current]);return out},getTotal:function(){return this.total},isRunning:function(){return this.running},
isComplete:function(){return this.complete},hasException:function(){return this.exception},runOperation:function(index){var operations=this.operations,operation=operations[index];void 0===operation?(this.running=!1,this.complete=!0,this.fireEvent('complete',this,operations[operations.length-1])):(this.current=index,operation.setInternalCallback(this.onOperationComplete),operation.setInternalScope(this),operation.execute());return this},onOperationComplete:function(operation){var exception=operation.hasException();
exception&&(this.exception=!0,this.exceptions.push(operation),this.fireEvent('exception',this,operation));exception&&this.getPauseOnException()?this.pause():(this.fireEvent('operationcomplete',this,operation),this.runNextOperation())}},1,0,0,0,0,[['observable',Ext.mixin.Observable]],[Ext.data,'Batch'],0);
Ext.cmd.derive('Ext.data.matrix.Slice',Ext.Base,{constructor:function(side,id){this.id=id;this.side=side;this.members={}},attach:function(store){this.store=store;store.matrix=this;store.on('load',this.onStoreLoad,this,{single:!0})},commit:function(){var members=this.members,id;for(id in members)members[id][2]=0},onStoreLoad:function(store){this.update(store.getData().items,0)},update:function(recordsOrIds,state){var MatrixSlice=Ext.data.matrix.Slice,side=this.side,assocIndex=side.index,length=recordsOrIds.length,
id=this.id,members=this.members;side=side.inverse;var otherSlices=side.slices,i,otherSlice;for(i=0;i<length;++i){var call=null;var assoc=recordsOrIds[i];var otherId=assoc.isEntity?assoc.id:assoc;assoc=members[otherId];0>state&&assoc&&1===assoc[2]?(delete members[otherId],(otherSlice=otherSlices[otherId])&&delete otherSlice.members[id],call=1):assoc?state!==assoc[2]&&0!==state&&(assoc[2]=state,otherSlice=otherSlices[otherId],call=1):(assoc=[otherId,otherId,state],assoc[assocIndex]=id,members[otherId]=
assoc,(otherSlice=otherSlices[otherId])||(otherSlices[otherId]=otherSlice=new MatrixSlice(side,otherId)),otherSlice.members[id]=assoc,call=1);call&&(this.notify&&this.notify.call(this.scope,this,otherId,state),otherSlice&&otherSlice.notify&&otherSlice.notify.call(otherSlice.scope,otherSlice,id,state))}},updateId:function(newId){var oldId=this.id,side=this.side,slices=side.slices,slice=slices[oldId],members=slice.members,index=side.index;side=side.inverse.slices;var otherId;this.id=newId;slices[newId]=
slice;delete slices[oldId];for(otherId in members)slices=members[otherId],slices[index]=newId,slices=side[otherId].members,slices[newId]=slices[oldId],delete slices[oldId]},destroy:function(){var store=this.store;store&&(store.matrix=null,store.un('load',this.onStoreLoad,this));this.notify=this.scope=this.store=this.side=this.members=null;this.callParent()}},1,0,0,0,0,0,[Ext.data.matrix,'Slice'],0);
Ext.cmd.derive('Ext.data.matrix.Side',Ext.Base,{constructor:function(matrix,index,role){this.matrix=matrix;this.index=index;this.role=role;this.slices={}},commit:function(){var slices=this.slices,id;for(id in slices)slices[id].commit()},get:function(id1,id2){var slices=this.slices;id1=slices[id1]||(slices[id1]=new Ext.data.matrix.Slice(this,id1));return id2||0===id2?id1.members[id2]:id1},update:function(id1,id2,state){return this.get(id1).update(id2,state)},updateId:function(oldId,newId){(oldId=this.get(oldId))&&
oldId.updateId(newId)},destroy:function(){var slices=this.slices,id;for(id in slices)slices[id].destroy();this.inverse=this.matrix=this.role=this.slices=null;this.callParent()}},1,0,0,0,0,0,[Ext.data.matrix,'Side'],0);
Ext.cmd.derive('Ext.data.matrix.Matrix',Ext.Base,{constructor:function(session,matrix){matrix=matrix.isManyToMany?matrix:session.getSchema().getAssociation(matrix);var Side=Ext.data.matrix.Side,left=new Side(this,0,matrix.left);Side=new Side(this,1,matrix.right);this.association=matrix;this.session=session;this.left=left;this.right=Side;left.inverse=Side;Side.inverse=left},commit:function(){this.left.commit();this.right.commit()},update:function(id1,id2,state){return this.left.update(id1,id2,state)},
updateId:function(record,oldId,newId){record=record.self;var left=this.left,right=this.right,matchSide;record===left.role.cls&&(matchSide=left);record===right.role.cls&&(matchSide=right);matchSide&&matchSide.updateId(oldId,newId)},destroy:function(){this.left.destroy();this.right.destroy();this.association=this.session=this.left=this.right=null;this.callParent()}},1,0,0,0,0,0,[Ext.data.matrix,'Matrix'],0);
Ext.cmd.derive('Ext.data.session.ChangesVisitor',Ext.Base,{constructor:function(session){this.session=session;session=session.getCrudProperties();this.result=null;this.writerOptions={};this.createKey=session.create;this.readKey=session.read;this.updateKey=session.update;this.dropKey=session.drop},onDirtyRecord:function(record){var crud=record.phantom;var dropped=record.dropped,type=record.$className,prop=crud||dropped?'allDataOptions':'partialDataOptions',writerOptions=this.writerOptions,name=record.entityName;
if(crud&&dropped)return!1;crud=crud?this.createKey:dropped?this.dropKey:this.updateKey;writerOptions=writerOptions[type]||(writerOptions[type]={});if(dropped&&((dropped=writerOptions.drop)||(writerOptions.drop=dropped={all:record.getProxy().getWriter().getWriteAllFields()}),!dropped.all))var entry=record.id;entry||((dropped=writerOptions[prop])||(dropped=record.getProxy().getWriter().getConfig(prop),writerOptions[prop]=dropped=Ext.Object.chain(dropped),this.setupOptions(dropped)),entry=record.getData(dropped));
record=this.result||(this.result={});name=record[name]||(record[name]={});name=name[crud]||(name[crud]=[]);name.push(entry)},setupOptions:function(options){options.serialize=!0},onMatrixChange:function(association,id1,id2,state){var name=association.left.type;association=association.right.role;state=0>state?this.dropKey:this.createKey;var result=this.result||(this.result={});name=result[name]||(result[name]={});name=name[association]||(name[association]={});name=name[state]||(name[state]={});name=
name[id1]||(name[id1]=[]);name.push(id2)}},1,0,0,0,0,0,[Ext.data.session,'ChangesVisitor'],0);
Ext.cmd.derive('Ext.data.session.ChildChangesVisitor',Ext.data.session.ChangesVisitor,{constructor:function(){this.seen={};Ext.data.session.ChangesVisitor.prototype.constructor.apply(this,arguments)},setupOptions:function(options){Ext.data.session.ChangesVisitor.prototype.setupOptions.call(this,options);options.serialize=!1},onDirtyRecord:function(record){!1!==Ext.data.session.ChangesVisitor.prototype.onDirtyRecord.apply(this,arguments)&&(record.$source||!record.dropped&&record.phantom||this.readEntity(record))},
readEntity:function(record){var readKey=this.readKey,name=record.entityName,seen=this.seen,seenKey=name+record.id;seen[seenKey]||(seen[seenKey]=!0,seen=this.result||(this.result={}),name=seen[name]||(seen[name]={}),name=name[readKey]||(name[readKey]=[]),name.push(Ext.apply({},record.modified,record.data)))}},1,0,0,0,0,0,[Ext.data.session,'ChildChangesVisitor'],0);
Ext.cmd.derive('Ext.data.session.BatchVisitor',Ext.Base,{map:null,constructor:function(batch){this.batch=batch},getBatch:function(sort){var map=this.map,batch=this.batch,name;if(map)for(name in batch||(batch=new Ext.data.Batch),map){var bucket=map[name];var entity=bucket.entity;var proxy=entity.getProxy();delete bucket.entity;for(operation in bucket){var operation=proxy.createOperation(operation,{records:bucket[operation]});operation.entityType=entity;batch.add(operation)}}batch&&!1!==sort&&batch.sort();
return batch},onDirtyRecord:function(record){var operation=record.phantom?'create':record.dropped?'destroy':'update',name=record.$className,map=this.map||(this.map={});name=map[name]||(map[name]={entity:record.self});name=name[operation]||(name[operation]=[]);name.push(record)}},1,0,0,0,0,0,[Ext.data.session,'BatchVisitor'],0);
Ext.cmd.derive('Ext.mixin.Dirty',Ext.Base,{mixinId:'dirty',config:{dirty:null},dirty:!1,_dirtyRecordCount:0,ignoreDirty:!1,recordStateIsDirtyState:!0,isDirty:function(){return this.getDirty()},applyDirty:function(dirty){return this.ignoreDirty?!1:dirty},updateDirty:function(dirty,oldValue){this.dirty=dirty;!this.ignoreDirty&&this.fireEvent&&this.fireEvent('dirtychange',this,dirty)},clearRecordStates:function(){var counters=this._crudCounters;counters&&(counters.C=counters.U=counters.D=0);this._dirtyRecordCount=
0;this.recordStateIsDirtyState&&this.setDirty(!1)},trackRecordState:function(record,initial){var counters=this._crudCounters||(this._crudCounters={C:0,R:0,U:0,D:0}),dirtyRecordCountWas=this._dirtyRecordCount,was;initial||null===(was=record.crudStateWas)||--counters[was];++counters[record.crudState];this._dirtyRecordCount=record=counters.C+counters.U+counters.D;(dirtyRecordCountWas=!record!==!dirtyRecordCountWas)&&this.recordStateIsDirtyState&&this.setDirty(0<record);return dirtyRecordCountWas},untrackRecordState:function(record){var counters=
this._crudCounters,dirtyRecordCountWas=this._dirtyRecordCount,changed;counters&&(--counters[record.crudState],this._dirtyRecordCount=record=counters.C+counters.U+counters.D,(changed=!record!==!dirtyRecordCountWas)&&this.recordStateIsDirtyState&&this.setDirty(0<record));return changed}},0,0,0,0,0,0,[Ext.mixin,'Dirty'],0);
Ext.cmd.derive('Ext.data.Session',Ext.Base,{isSession:!0,config:{schema:'default',parent:null,autoDestroy:!0,crudProperties:{create:'C',read:'R',update:'U',drop:'D'}},crudOperations:[{type:'R',entityMethod:'readEntities'},{type:'C',entityMethod:'createEntities'},{type:'U',entityMethod:'updateEntities'},{type:'D',entityMethod:'dropEntities'}],crudKeys:{C:1,R:1,U:1,D:1},statics:{nextId:1},constructor:function(config){this.data={};this.matrices={};this.id=Ext.data.Session.nextId++;this.identifierCache=
{};this.recordCreator=this.recordCreator.bind(this);this.mixins.observable.constructor.call(this,config)},destroy:function(){var matrices=this.matrices,data=this.data,entityName,record,id;for(id in matrices)matrices[id].destroy();for(entityName in data)for(id in matrices=data[entityName],matrices)if(record=matrices[id].record)record.$source=null,record.unjoin(this);this.identifierCache=this.recordCreator=this.matrices=this.data=null;this.setSchema(null);this.callParent()},adopt:function(record){var associations=
record.associations,roleName;if(record.session!==this&&(record.session=this,this.add(record),associations))for(roleName in associations)associations[roleName].adoptAssociated(record,this)},commit:function(){var data=this.data,matrices=this.matrices,entityName,id,record;for(entityName in data){var entities=data[entityName];for(id in entities)(record=entities[id].record)&&record.commit()}for(id in matrices)matrices[id].commit();this.clearRecordStates()},createRecord:function(type,data){type=type.$isClass?
type:this.getSchema().getEntity(type);var parent=this.getParent();if(data&&parent){var id=type.getIdFromData(data);parent.peekRecord(type,id)&&Ext.raise('A parent session already contains an entry for '+type.entityName+': '+id)}return new type(data,this)},getChanges:function(){var visitor=new Ext.data.session.ChangesVisitor(this);this.visitData(visitor);return visitor.result},getChangesForParent:function(){var visitor=new Ext.data.session.ChildChangesVisitor(this);this.visitData(visitor);return visitor.result},
getRecord:function(type,id,autoLoad){var wasInstance=type.isModel,parent,parentRec;wasInstance&&(wasInstance=type,id=type.id,type=type.self);var record=this.peekRecord(type,id);record||(type=type.$isClass?type:this.getSchema().getEntity(type),(parent=this.getParent())&&(parentRec=parent.peekRecord(type,id)),parentRec&&(parentRec.isLoading()?wasInstance=!1:(record=parentRec.copy(void 0,this),record.$source=parentRec)),record||(wasInstance?(record=wasInstance,this.adopt(record)):(record=type.createWithId(id,
null,this),!1!==autoLoad&&record.load(Ext.isObject(autoLoad)?autoLoad:void 0))));return record},getSaveBatch:function(sort){var visitor=new Ext.data.session.BatchVisitor;this.visitData(visitor);return visitor.getBatch(sort)},onInvalidAssociationEntity:function(entityType,id){Ext.raise('Unable to read association entity: '+this.getModelIdentifier(entityType,id))},onInvalidEntityCreate:function(entityType,id){Ext.raise('Cannot create, record already not exists: '+this.getModelIdentifier(entityType,
id))},onInvalidEntityDrop:function(entityType,id){Ext.raise('Cannot drop, record does not exist: '+this.getModelIdentifier(entityType,id))},onInvalidEntityRead:function(entityType,id){Ext.raise('Cannot read, record already not exists: '+this.getModelIdentifier(entityType,id))},onInvalidEntityUpdate:function(entityType,id,dropped){dropped?Ext.raise('Cannot update, record dropped: '+this.getModelIdentifier(entityType,id)):Ext.raise('Cannot update, record does not exist: '+this.getModelIdentifier(entityType,
id))},peekRecord:function(type,id,deep){var entityName=(type.$isClass?type:this.getSchema().getEntity(type)).entityName;entityName=(entityName=(entityName=this.data[entityName])&&entityName[id])&&entityName.record;!entityName&&deep&&(entityName=(entityName=this.getParent())&&entityName.peekRecord(type,id,deep));return entityName||null},save:function(){var parent=this.getParent();if(parent){var visitor=new Ext.data.session.ChildChangesVisitor(this);this.visitData(visitor);parent.update(visitor.result);
this.commit()}},spawn:function(){return new this.self({schema:this.getSchema(),parent:this})},update:function(data){var schema=this.getSchema(),crudOperations=this.crudOperations,len=crudOperations.length,crudKeys=this.crudKeys,entityName,i,item,key;this.getSchema().processKeyChecks(!0);for(entityName in data){var entityType=schema.getEntity(entityName);var entityInfo=data[entityName];for(i=0;i<len;++i){var operation=crudOperations[i];if(item=entityInfo[operation.type])this[operation.entityMethod](entityType,
item)}}for(entityName in data)for(key in entityType=schema.getEntity(entityName),crudOperations=entityType.associations,entityInfo=data[entityName],entityInfo)crudKeys[key]||(len=crudOperations[key],entityType=entityInfo[len.role],len.processUpdate(this,entityType))},privates:{add:function(record){var roleName;this.getEntry(record.self,record.id).record=record;this.trackRecordState(record,!0);this.registerReferences(record);var associations=record.associations;for(roleName in associations)associations[roleName].checkMembership(this,
record)},afterCommit:function(record){this.trackRecordState(record)},afterDrop:function(record){this.trackRecordState(record)},afterEdit:function(record){this.trackRecordState(record)},afterErase:function(record){this.evict(record)},applySchema:function(schema){return Ext.data.schema.Schema.get(schema)},createEntities:function(entityType,items){var len=items.length,i,rec;for(i=0;i<len;++i){var data=items[i];var id=entityType.getIdFromData(data);if(rec=this.peekRecord(entityType,id))this.onInvalidEntityCreate(entityType,
id);else rec=this.createRecord(entityType,data);rec.phantom=!0}},dropEntities:function(entityType,ids){var len=ids.length,i,rec,extractId;len&&(extractId=Ext.isObject(ids[0]));for(i=0;i<len;++i){var id=ids[i];extractId&&(id=entityType.getIdFromData(id));if(rec=this.peekRecord(entityType,id))rec.drop();else this.onInvalidEntityDrop(entityType,id)}},evict:function(record){var entities=this.data[record.entityName],id=record.id;entities&&entities[id]&&(this.untrackRecordState(record),record.unjoin(this),
delete entities[id])},getEntityList:function(entityType,ids){var len=ids.length,i,rec;for(i=0;i<len;++i){var id=ids[i];if(rec=this.peekRecord(entityType,id))ids[i]=rec;else{var invalid=!0;ids[i]=null;this.onInvalidAssociationEntity(entityType,id)}}invalid&&(ids=Ext.Array.clean(ids));return ids},getEntry:function(type,id){type.isModel&&(id=type.getId(),type=type.self);type=(type.$isClass?type:this.getSchema().getEntity(type)).entityName;var data=this.data;type=data[type]||(data[type]={});return type=
type[id]||(type[id]={})},getRefs:function(record,role,includeParent){var entry=this.getEntry(record),refs=entry&&entry.refs&&entry.refs[role.role];includeParent=includeParent&&this.getParent();var id;if(includeParent&&(record=includeParent.getRefs(record,role))){for(id in record)includeParent=record[id],refs&&refs[id]||this.getRecord(includeParent.self,includeParent.id);refs=entry&&entry.refs&&entry.refs[role.role]}return refs||null},getIdentifier:function(entityType){var parent=this.getParent();
if(parent)var ret=parent.getIdentifier(entityType);else{parent=this.identifierCache;var identifier=entityType.identifier;entityType=identifier.getId()||entityType.entityName;ret=parent[entityType];ret||(ret=identifier.clone?identifier.clone({id:null}):identifier,parent[entityType]=ret)}return ret},getMatrix:function(matrix,preventCreate){var name=matrix.isManyToMany?matrix.name:matrix,matrices=this.matrices,ret;(ret=matrices[name])||preventCreate||(ret=matrices[name]=new Ext.data.matrix.Matrix(this,
matrix));return ret||null},getMatrixSlice:function(role,id){return this.getMatrix(role.association)[role.side].get(id)},getModelIdentifier:function(entityType,id){return id+'@'+entityType.entityName},onIdChanged:function(record,oldId,newId){var matrices=this.matrices,id=record.id,bucket=this.data[record.entityName],entry=bucket[oldId],associations=record.associations,refs=entry.refs,setNoRefs=this._setNoRefs,refId,roleName,key;delete bucket[oldId];bucket[newId]=entry;for(key in matrices)matrices[key].updateId(record,
oldId,newId);if(refs)for(roleName in refs)if(newId=refs[roleName],matrices=associations[roleName],matrices=matrices.association,!matrices.isManyToMany)for(refId in matrices=matrices.field.name,newId)newId[refId].set(matrices,id,setNoRefs);this.registerReferences(record,oldId)},processManyBlock:function(entityType,role,items,processor){var id,record;if(items)for(id in items)if(record=this.peekRecord(entityType,id)){var records=this.getEntityList(role.cls,items[id]);var store=role.getAssociatedItem(record);
this[processor](role,store,record,records)}else this.onInvalidAssociationEntity(entityType,id)},processManyCreate:function(role,store,record,records){if(store)store.add(records);else record[role.getterName](null,null,records)},processManyDrop:function(role,store,record,records){store&&store.remove(records)},processManyRead:function(role,store,record,records){if(store)store.setRecords(records);else record[role.getterName](null,null,records)},readEntities:function(entityType,items){var len=items.length,
i,rec;for(i=0;i<len;++i){var data=items[i];var id=entityType.getIdFromData(data);if(rec=this.peekRecord(entityType,id))this.onInvalidEntityRead(entityType,id);else rec=this.createRecord(entityType,data);rec.phantom=!1}},recordCreator:function(data,Model){var id=Model.getIdFromData(data),record=this.peekRecord(Model,id,!0);return record=record?this.getRecord(Model,id):new Model(data,this)},registerReferences:function(record,oldId){var id=record.id,recordData=record.data,remove=oldId||0===oldId,entry,
i,references;var len=(references=record.references).length;for(i=0;i<len;++i){var reference=references[i];if((entry=recordData[reference.name])||0===entry){reference=reference.reference;var roleName=reference.inverse.role;entry=this.getEntry(reference.cls,entry);entry=entry.refs||(entry.refs={});entry=entry[roleName]||(entry[roleName]={});entry[id]=record;remove&&delete entry[oldId]}}},updateEntities:function(entityType,items){var len=items.length,i,rec;if(Ext.isArray(items))for(i=0;i<len;++i){var data=
items[i];var id=entityType.getIdFromData(data);if(rec=this.peekRecord(entityType,id))rec.set(data);else this.onInvalidEntityUpdate(entityType,id)}else for(id in items)if(data=items[id],(rec=this.peekRecord(entityType,id))&&!rec.dropped)rec.set(data);else this.onInvalidEntityUpdate(entityType,id,!!rec)},updateReference:function(record,field,newValue,oldValue){var reference=field.reference;field=reference.type;reference=reference.inverse.role;var id=record.id;if(oldValue||0===oldValue)oldValue=this.getEntry(field,
oldValue).refs[reference],delete oldValue[id];if(newValue||0===newValue)newValue=this.getEntry(field,newValue),oldValue=newValue.refs||(newValue.refs={}),oldValue=oldValue[reference]||(oldValue[reference]={}),oldValue[id]=record},visitData:function(visitor){var data=this.data,matrices=this.matrices,id,id2,matrix,name,state;this.getSchema().processKeyChecks(!0);for(name in data){var all=data[name];for(id in all)if(matrix=all[id].record)if(matrix.phantom||matrix.dirty||matrix.dropped){if(visitor.onDirtyRecord)visitor.onDirtyRecord(matrix)}else if(visitor.onCleanRecord)visitor.onCleanRecord(matrix)}if(visitor.onMatrixChange)for(name in matrices)for(id in matrix=
matrices[name].left,data=matrix.slices,all=matrix.role.association,data){matrix=data[id];var members=matrix.members;for(id2 in members)if(state=(matrix=members[id2])[2])visitor.onMatrixChange(all,matrix[0],matrix[1],state)}return visitor},_setNoRefs:{refs:!1}}},1,0,0,0,0,[[Ext.mixin.Dirty.prototype.mixinId||Ext.mixin.Dirty.$className,Ext.mixin.Dirty],[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.data,'Session'],0);
Ext.define('ERP.overrides.data.Session',{override:'Ext.data.Session',compatibility:['6.2.1','6.2.0','6.0.3','6.0.2','6.0.1'],peekRecord:function(type,id,deep){return this.destroyed?null:arguments.callee.$previous.apply(this,arguments)},privates:{add:function(record){return this.destroyed?record:arguments.callee.$previous.apply(this,arguments)},getRefs:function(record,role,includeParent){return this.destroyed?null:arguments.callee.$previous.apply(this,arguments)},recordCreator:function(data,Model){var id=
Model.getIdFromData(data),record=this.peekRecord(Model,id,!0);record?(record=this.getRecord(Model,id),record.erased||record.dropped||(Model=record.getChanges(),record.set(data,{dirty:!1,commit:!0}),record.set(Model))):record=new Model(data,this);return record}}});
Ext.cmd.derive('Ext.util.Schedulable',Ext.Base,{'abstract':!0,isSchedulable:!0,scheduled:!1,constructor:function(){this.getScheduler().add(this)},destroy:function(){var scheduler=this.getScheduler();scheduler&&scheduler.remove(this);this.scheduler=null;this.schedule=this.react=Ext.emptyFn;this.callParent()},getFullName:function(){return this.name||this.id},privates:{getScheduler:function(){return this.scheduler},schedule:function(){var scheduler;if(!this.scheduled&&(scheduler=this.getScheduler())){this.scheduled=
!0;if(this.onSchedule)this.onSchedule();scheduler.scheduleItem(this)}},unschedule:function(){var scheduler;this.scheduled&&((scheduler=this.getScheduler())&&scheduler.unscheduleItem(this),this.scheduled=!1)},sort:function(){}}},1,0,0,0,0,0,[Ext.util,'Schedulable'],0);
Ext.cmd.derive('Ext.app.bind.BaseBinding',Ext.util.Schedulable,{calls:0,kind:20,defaultOptions:{},lastValue:void 0,constructor:function(owner,callback,scope,options){this.options=options;this.owner=owner;this.scope=scope;this.callback=callback;this.lateBound=Ext.isString(callback);options&&options.deep&&(this.deep=!0);Ext.util.Schedulable.prototype.constructor.call(this)},destroy:function(){var owner=this.owner;if(owner)owner.onBindDestroy(this);Ext.util.Schedulable.prototype.destroy.call(this);this.scope=
this.callback=this.owner=null},isReadOnly:function(){return!0},privates:{getScheduler:function(){var owner=this.owner;return owner&&owner.getScheduler()},getSession:function(){var owner=this.owner;return owner.isSession?owner:owner.getSession()},notify:function(value){var options=this.options||this.defaultOptions,previous=this.lastValue;if(!this.calls||this.deep||this.valueChanged(value,previous)){++this.calls;this.lastValue=value;if(this.lateBound)this.scope[this.callback](value,previous,this);else this.callback.call(this.scope,
value,previous,this);options.single&&this.destroy()}},valueChanged:function(value,previous){var ret=!0;previous!==value?value&&previous&&value instanceof Date&&previous instanceof Date&&(ret=value.getTime()!==previous.getTime()):ret=Ext.isArray(value);return ret}}},1,0,0,0,0,0,[Ext.app.bind,'BaseBinding'],0);
Ext.cmd.derive('Ext.app.bind.Binding',Ext.app.bind.BaseBinding,{constructor:function(stub,callback,scope,options){Ext.app.bind.BaseBinding.prototype.constructor.call(this,stub.owner,callback,scope,options);this.stub=stub;this.depth=stub.depth;stub.isLoading()||stub.scheduled||this.schedule()},destroy:function(fromParent){var stub=this.stub;stub&&!fromParent&&(stub.unbind(this),this.stub=null);Ext.app.bind.BaseBinding.prototype.destroy.call(this)},bindValidation:function(callback,scope){var stub=this.stub;
return stub&&stub.bindValidation(callback,scope)},bindValidationField:function(callback,scope){var stub=this.stub;return stub&&stub.bindValidationField(callback,scope)},getFullName:function(){return this.fullName||(this.fullName='@('+this.stub.getFullName()+')')},getValue:function(){var stub=this.stub;return stub&&stub.getValue()},isLoading:function(){var stub=this.stub;return stub&&stub.isLoading()},isReadOnly:function(){var stub=this.stub,options=this.options,ret=!0;options&&!1===options.twoWay||
stub&&(ret=stub.isReadOnly());return ret},refresh:function(){},setValue:function(value){this.stub.set(value)},privates:{getDataObject:function(){var stub=this.stub;return stub&&stub.getDataObject()},getRawValue:function(){var stub=this.stub;return stub&&stub.getRawValue()},isDescendantOf:function(item){var stub=this.stub;return stub?item===stub||stub.isDescendantOf(item):!1},react:function(){this.notify(this.getValue())},schedule:function(){this.stub.scheduled||Ext.app.bind.BaseBinding.prototype.schedule.call(this)},
sort:function(){var stub=this.stub;stub.scheduler.sortItem(stub)}}},1,0,0,0,0,0,[Ext.app.bind,'Binding'],0);
Ext.cmd.derive('Ext.app.bind.AbstractStub',Ext.util.Schedulable,{children:null,depth:0,generation:1,kind:10,parent:null,constructor:function(owner,name){this.owner=owner;this.name=name;Ext.util.Schedulable.prototype.constructor.call(this)},destroy:function(){var children=this.children,bindings=this.bindings,len,key;if(bindings){var i=0;for(len=bindings.length;i<len;++i)bindings[i].destroy(!0)}for(key in children)children[key].destroy();this.scheduled&&this.unschedule();Ext.util.Schedulable.prototype.destroy.call(this)},
add:function(child){(this.children||(this.children={}))[child.name]=child;child.depth=this.depth+1;child.parent=this},getChild:function(path){return(path=Ext.isString(path)?path.split('.'):path)&&path.length?this.descend(path,0):this},getFullName:function(){var name=this.fullName,parent=this.parent,s;name||(name=this.name||this.id,parent&&(s=parent.getFullName())&&(name=(':'!==s.charAt(s.length-1)?s+'.':s)+name),this.fullName=name);return name},getSession:function(){var owner=this.owner;return owner.isSession?
owner:owner.getSession()},bind:function(callback,scope,options){callback=new Ext.app.bind.Binding(this,callback,scope,options);scope=this.bindings||(this.bindings=[]);callback.depth=this.depth;scope.push(callback);return callback},getValue:function(){return this.isLoading()?null:this.getRawValue()},graft:function(replacement){var bindings=this.bindings,name=this.name;this.parent=this.bindings=null;this.destroy();replacement.depth=this.depth;replacement.bindings=bindings;replacement.generation=this.generation+
1;replacement.name=name;replacement.id=this.id;replacement.path=this.path;if(bindings)for(name=bindings.length;0<name--;)bindings[name].stub=replacement;return replacement},isDescendantOf:function(item){for(var parent=this;parent=parent.parent;)if(parent===item)return!0;return!1},onSchedule:function(){for(var i,len,binding,bindings,p=this.parent;p;p=p.parent)if(bindings=p.bindings)for(i=0,len=bindings.length;i<len;++i)binding=bindings[i],binding.deep&&!binding.scheduled&&binding.schedule()},react:function(){var bindings=
this.bindings,len;if(bindings){var i=0;for(len=bindings.length;i<len;++i){var binding=bindings[i];binding.scheduled||binding.schedule()}}},unbind:function(binding){var bindings=this.bindings;bindings&&bindings.length&&Ext.Array.remove(bindings,binding)},privates:{collect:function(){var children=this.children,bindings=this.bindings,totalCount=0,key;if(children)for(key in children){var child=children[key];var count=child.collect();0===count&&(child.destroy(),delete children[key]);totalCount+=count}bindings&&
(totalCount+=bindings.length);return totalCount},getScheduler:function(){var owner=this.owner;return owner&&owner.getScheduler()},sort:function(){var parent=this.parent;parent&&this.scheduler.sortItem(parent)}}},1,0,0,0,0,0,[Ext.app.bind,'AbstractStub'],0);
Ext.cmd.derive('Ext.app.bind.Stub',Ext.app.bind.AbstractStub,{isStub:!0,dirty:!0,formula:null,validationKey:'validation',constructor:function(owner,name,parent){var path=name;Ext.app.bind.AbstractStub.prototype.constructor.call(this,owner,name);this.boundValue=null;parent&&(parent.add(this),parent.isRootStub||(path=parent.path+'.'+name),this.checkHadValue());this.path=path},destroy:function(){var formula=this.formula,storeBinding=this.storeBinding;formula&&formula.destroy();storeBinding&&storeBinding.destroy();
this.detachBound();Ext.app.bind.AbstractStub.prototype.destroy.call(this)},bindValidation:function(callback,scope){var parent=this.parent;return parent&&parent.descend([this.validationKey,this.name]).bind(callback,scope)},bindValidationField:function(callback,scope){var parent=this.parent,name=this.name,lateBound='string'===typeof callback,ret;parent&&(ret=parent.bind(function(value){var field=null;value&&value.isModel&&(field=value.getField(name));if(lateBound)scope[callback](field,value,this);else callback.call(scope,
field,value,this)}));return ret||null},descend:function(path,index){var children=this.children||(this.children={});index=index||0;var name=path[index++];(children=children[name])||(children=new Ext.app.bind.Stub(this.owner,name,this));index<path.length&&(children=children.descend(path,index));return children},getChildValue:function(parentData){var name=this.name,ret;parentData||Ext.isString(parentData)?(ret=this.inspectValue(parentData))||(ret=parentData.isEntity?parentData.data[name]:parentData[name]):
ret=this.hadValue?null:void 0;return ret},getDataObject:function(){var parentData=this.parent.getDataObject(),name=this.name,ret=parentData?parentData[name]:null,associations;!ret&&parentData&&parentData.isEntity&&(associations=parentData.associations)&&name in associations&&(ret=parentData[associations[name].getterName]());ret&&(ret.$className||Ext.isObject(ret))||(parentData[name]=ret={},this.hadValue=!0,this.invalidate(!0,!0));return ret},getRawValue:function(){return this.getChildValue(this.getParentValue())},
graft:function(replacement){var parent=this.parent,children=this.children,name=this.name,i;replacement.parent=parent;replacement.children=children;parent&&(parent.children[name]=replacement);if(children)for(i in children)children[i].parent=replacement;this.children=null;replacement.checkHadValue();return Ext.app.bind.AbstractStub.prototype.graft.call(this,replacement)},isLoading:function(){var parent=this.parent,loading=!1,value;if(parent&&!(loading=parent.isLoading()))if(parent=this.getParentValue(),
value=this.inspectValue(parent))loading=value.isLoading();else{if(parent&&parent.isModel&&(parent=parent.associations,!(parent&&this.name in parent))){loading=!1;var loadSet=!0}loadSet||(loading=!this.hadValue&&void 0===this.getRawValue())}return loading},invalidate:function(deep,dirtyOnly){var children=this.children,name;this.checkHadValue();this.dirty=!0;dirtyOnly||this.isLoading()||this.scheduled||this.schedule();if(deep&&children)for(name in children)children[name].invalidate(deep,dirtyOnly)},
isReadOnly:function(){var formula=this.formula;return!(!formula||formula.set)},set:function(value){var parent=this.parent,name=this.name,formula=this.formula;if(formula&&!formula.settingValue&&formula.set)formula.setValue(value);else{if(this.isLinkStub&&(formula=(formula=this.getLinkFormulaStub())?formula.formula:null)){formula.setValue(value);return}parent=parent.getDataObject();if(parent.isEntity)if((formula=parent.associations)&&name in formula){name=formula[name];if(name=name.setterName)parent[name](value);
this.invalidate(!0)}else parent.set(name,value);else(value&&value.constructor===Object||value!==parent[name])&&!this.setByLink(value)&&(void 0===value?delete parent[name]:parent[name]=value,this.inspectValue(parent),this.invalidate(!0))}},onStoreLoad:function(){this.invalidate(!0)},afterLoad:function(record){this.invalidate(!0)},afterCommit:function(record){this.afterEdit(record,null)},afterEdit:function(record,modifiedFieldNames){var children=this.children,len=modifiedFieldNames&&modifiedFieldNames.length;
record=record.associations;var key;if(children)if(len)for(key=0;key<len;++key)(record=children[modifiedFieldNames[key]])&&record.invalidate();else for(key in children)record&&key in record||children[key].invalidate();this.invalidate()},afterReject:function(record){this.afterEdit(record,null)},afterAssociatedRecordSet:function(record,associated,role){record=this.children;role=role.role;record&&role in record&&record[role].invalidate(!0)},setByLink:function(value){var n=0,stub;for(stub=this;stub;stub=
stub.parent){if(stub.isLinkStub){var link=stub;if(n){var path=[];var i=0;for(stub=this;stub!==link;stub=stub.parent)++i,path[n-i]=stub.name}break}++n}if(!link||!(stub=link.getTargetStub()))return!1;path&&(stub=stub.descend(path));stub.set(value);return!0},setFormula:function(formula){var oldFormula=this.formula;oldFormula&&oldFormula.destroy();this.formula=new Ext.app.bind.Formula(this,formula)},react:function(){var bound=this.boundValue,children=this.children;if(bound)if(bound.isValidation){bound.refresh();
bound=bound.generation;if(this.lastValidationGeneration===bound)return;this.lastValidationGeneration=bound}else if(bound.isModel)children&&children[this.validationKey]&&bound.isValid();else if(bound.isStore&&bound.isLoading()&&!bound.loadCount)return;Ext.app.bind.AbstractStub.prototype.react.call(this)},privates:{checkHadValue:function(){this.hadValue||(this.hadValue=void 0!==this.getRawValue())},collect:function(){return Ext.app.bind.AbstractStub.prototype.collect.call(this)+(this.storeBinding?1:
0)+(this.formula?1:0)},getLinkFormulaStub:function(){for(var stub=this;stub.isLinkStub;)stub=stub.binding.stub;return stub.formula?stub:null},getParentValue:function(){this.dirty&&(this.parentValue=this.parent.getValue(),this.dirty=!1);return this.parentValue},setStore:function(storeBinding){this.storeBinding=storeBinding},inspectValue:function(parentData){var name=this.name,current=this.boundValue,boundValue=null,associations;parentData&&parentData.isEntity?(associations=parentData.associations)&&
name in associations?(boundValue=parentData[associations[name].getterName]())&&boundValue.isStore&&(boundValue.$associatedStore=!0):name===this.validationKey&&(boundValue=parentData.getValidation(),this.lastValidationGeneration=null):parentData&&(parentData=parentData[name])&&(parentData.isModel||parentData.isStore)&&(boundValue=parentData);current!==boundValue&&(current&&this.detachBound(),boundValue&&(boundValue.isModel?boundValue.join(this):(current=boundValue.associatedEntity,!current||!1===boundValue.autoLoad||
boundValue.complete||boundValue.hasPendingLoad()||boundValue.load(),boundValue.on({scope:this,load:{fn:'onStoreLoad',single:!0},destroy:'onDestroyBound'}))),this.boundValue=boundValue);return boundValue},detachBound:function(){var current=this.boundValue;current&&(current.isModel?current.unjoin(this):current.un({scope:this,load:'onStoreLoad',destroy:'onDestroyBound'}))},onDestroyBound:function(){this.owner.destroying||this.set(null)},sort:function(){var formula=this.formula,scheduler=this.scheduler,
storeBinding=this.storeBinding;Ext.app.bind.AbstractStub.prototype.sort.call(this);storeBinding&&scheduler.sortItem(storeBinding);formula&&scheduler.sortItem(formula)}}},1,0,0,0,0,0,[Ext.app.bind,'Stub'],0);
Ext.cmd.derive('Ext.app.bind.LinkStub',Ext.app.bind.Stub,{isLinkStub:!0,binding:null,destroy:function(){var binding=this.binding,owner=this.owner;binding&&(this.binding=null,binding.destroy(),owner&&delete owner.linkData[this.name]);this.target=null;Ext.app.bind.Stub.prototype.destroy.call(this)},getFullName:function(){return this.fullName||(this.fullName='('+Ext.app.bind.Stub.prototype.getFullName.call(this)+' -\x3e '+this.binding.getFullName()+')')},getDataObject:function(){var binding=this.binding;
return binding&&binding.getDataObject()},getRawValue:function(){var binding=this.binding;return binding&&binding.getRawValue()},getValue:function(){var binding=this.binding;return binding&&binding.getValue()},getTargetStub:function(){var binding=this.binding;return binding&&binding.stub},isLoading:function(){var binding=this.binding;return binding?binding.isLoading():!1},link:function(bindDescriptor,target){var binding=this.binding;binding&&binding.destroy();target=this.target=target||this.owner;
this.linkDescriptor=bindDescriptor;this.binding=target.bind(bindDescriptor,this.onChange,this);this.binding.deep=!0},onChange:function(){this.invalidate(!0)},react:function(){this.owner.linkData[this.name]=this.getValue();Ext.app.bind.Stub.prototype.react.call(this)},privates:{collect:function(){return Ext.app.bind.Stub.prototype.collect.call(this)+(this.binding?1:0)},sort:function(){var binding=this.binding;binding&&this.scheduler.sortItem(binding)}}},0,0,0,0,0,0,[Ext.app.bind,'LinkStub'],0);
Ext.cmd.derive('Ext.app.bind.RootStub',Ext.app.bind.AbstractStub,{isRootStub:!0,depth:0,createRootChild:function(name,direct){var owner=this.owner,ownerData=owner.getData(),children=this.children,parentStub=(children=children&&children[name])?null:this,parentVM;direct||ownerData.hasOwnProperty(name)||!(parentVM=owner.getParent())?direct=new Ext.app.bind.Stub(owner,name,parentStub):(direct=new Ext.app.bind.LinkStub(owner,name,children?null:parentStub),direct.link('{'+name+'}',parentVM));children&&
children.graft(direct);return direct},createStubChild:function(name){return this.createRootChild(name,!0)},descend:function(path,index){var children=this.children;index=index||0;var name=path[index++];children=children&&children[name]||this.createRootChild(name);index<path.length&&(children=children.descend(path,index));return children},getFullName:function(){return this.fullName||(this.fullName=this.owner.id+':')},getDataObject:function(){return this.owner.data},getRawValue:function(){return this.owner.data},
getValue:function(){return this.owner.data},isDescendantOf:function(){return!1},isLoading:function(){return!1},set:function(value){var children=this.children||(this.children={}),owner=this.owner,data=owner.data,parentVM=owner.getParent(),stub,v,key;for(key in value)if(void 0!==(v=value[key])){if(!(stub=children[key]))stub=new Ext.app.bind.Stub(owner,key,this);else if(stub.isLinkStub&&!stub.getLinkFormulaStub()){var linkStub=stub;stub=new Ext.app.bind.Stub(owner,key);linkStub.graft(stub)}stub.set(v)}else data.hasOwnProperty(key)&&
(delete data[key],stub=children[key])&&(!stub.isLinkStub&&parentVM&&(stub=this.createRootChild(key)),stub.invalidate(!0))},schedule:Ext.emptyFn,unschedule:Ext.emptyFn},0,0,0,0,0,0,[Ext.app.bind,'RootStub'],0);
Ext.cmd.derive('Ext.app.bind.Multi',Ext.app.bind.BaseBinding,{isMultiBinding:!0,missing:1,deep:!0,constructor:function(descriptor,owner,callback,scope,options){var trackStatics=options&&options.trackStatics;Ext.app.bind.BaseBinding.prototype.constructor.call(this,owner,callback,scope,options);this.bindings=[];this.literal=descriptor.$literal;descriptor.constructor===Object?(trackStatics&&(this.staticKeys=[]),this.addObject(descriptor,this.lastValue={},this.staticKeys)):this.addArray(descriptor,this.lastValue=
[]);--this.missing||this.scheduled||this.schedule()},destroy:function(){this.bindings=Ext.destroy(this.bindings);Ext.app.bind.BaseBinding.prototype.destroy.call(this)},add:function(descriptor,data,property){var me=this,owner=me.owner,bindings=me.bindings,method=me.literal?descriptor.reference?'bindEntity':'bindExpression':'bind';++me.missing;var binding=owner[method](descriptor,function(value){data[property]=value;1===binding.calls&&--me.missing;me.missing||me.scheduled||me.schedule()},me,null);descriptor=
binding.depth;if(!bindings.length||descriptor<me.depth)me.depth=descriptor;bindings.push(binding);return!this.isBindingStatic(binding)},addArray:function(multiBindDescr,array){var n=multiBindDescr.length,hasDynamic=!1,dynamic,i;for(i=0;i<n;++i)(dynamic=multiBindDescr[i])&&(dynamic.reference||Ext.isString(dynamic))?dynamic=this.add(dynamic,array,i):Ext.isArray(dynamic)?dynamic=this.addArray(dynamic,array[i]=[]):dynamic&&dynamic.constructor===Object?dynamic=this.addObject(dynamic,array[i]={}):(array[i]=
dynamic,dynamic=!1),hasDynamic=hasDynamic||dynamic;return hasDynamic},addObject:function(multiBindDescr,object,staticKeys){var hasDynamic=!1,dynamic,name;for(name in multiBindDescr)(dynamic=multiBindDescr[name])&&(dynamic.reference||Ext.isString(dynamic))?dynamic=this.add(dynamic,object,name):Ext.isArray(dynamic)?dynamic=this.addArray(dynamic,object[name]=[]):dynamic&&dynamic.constructor===Object?dynamic=this.addObject(dynamic,object[name]={}):(object[name]=dynamic,dynamic=!1),staticKeys&&!dynamic&&
staticKeys.push(name),hasDynamic=hasDynamic||dynamic;return hasDynamic},getFullName:function(){var fullName=this.fullName,bindings=this.bindings,length=bindings.length,i;if(!fullName){fullName='@[';for(i=0;i<length;++i)i&&(fullName+=','),fullName+=bindings[i].getFullName();this.fullName=fullName+=']'}return fullName},getRawValue:function(){return this.lastValue},isDescendantOf:function(){return!1},isLoading:function(){for(var bindings=this.bindings,n=bindings.length;0<n--;)if(bindings[n].isLoading())return!0;
return!1},isBindingStatic:function(binding){return binding.isTemplateBinding&&binding.isStatic},isStatic:function(){var bindings=this.bindings,len=bindings.length,i;for(i=0;i<len;++i){var binding=bindings[i];if(!this.isBindingStatic(binding))return!1}return!0},pruneStaticKeys:function(){var value=Ext.apply({},this.lastValue),keys=this.staticKeys,len=keys.length,i;for(i=0;i<len;++i)delete value[keys[i]];return value},react:function(){this.notify(this.lastValue)},refresh:function(){},privates:{sort:function(){this.scheduler.sortItems(this.bindings)}}},
1,0,0,0,0,0,[Ext.app.bind,'Multi'],0);
Ext.cmd.derive('Ext.app.bind.Formula',Ext.util.Schedulable,{statics:{getFormulaParser:function(name){var cache=this.formulaCache;cache||(cache=this.formulaCache=new Ext.util.LruCache({maxSize:20}));var parser=cache.get(name);parser||(parser=new RegExp('[^\\.a-z0-9_]'+name+'\\(\\s*([\'"])(.*?)\\1\\s*\\)','gi'),cache.add(name,parser));return parser}},isFormula:!0,calculation:null,explicit:!1,set:null,single:!1,argumentNamesRe:/^function\s*\(\s*([^,\)\s]+)/,constructor:function(stub,formula){var owner=
stub.owner;this.owner=owner;this.stub=stub;Ext.util.Schedulable.prototype.constructor.call(this);if(formula instanceof Function)this.get=stub=formula;else{this.get=stub=formula.get;this.set=formula.set;var expressions=formula.bind;formula.single&&(this.single=formula.single);if(expressions&&(formula=expressions.bindTo)){var options=Ext.apply({},expressions);delete options.bindTo;expressions=formula}}expressions?this.explicit=!0:expressions=stub.$expressions||this.parseFormula(stub);this.binding=owner.bind(expressions,
this.onChange,this,options)},destroy:function(){var binding=this.binding,stub=this.stub;binding&&(binding.destroy(),this.binding=null);stub&&(stub.formula=null);Ext.util.Schedulable.prototype.destroy.call(this);this.getterFn=this.owner=null},getFullName:function(){return this.fullName||(this.fullName=this.stub.getFullName()+'\x3d'+Ext.util.Schedulable.prototype.getFullName.call(this)+')')},getRawValue:function(){return this.calculation},onChange:function(){this.scheduled||this.schedule()},parseFormula:function(formula){var str=
formula.toString(),expressions={$literal:!0},formulaRe;var match=this.argumentNamesRe.exec(str);for(formulaRe=Ext.app.bind.Formula.getFormulaParser(match?match[1]:'get');match=formulaRe.exec(str);)match=match[2],expressions[match]=match;expressions.$literal=!0;return formula.$expressions=expressions},react:function(){var owner=this.owner,data=this.binding.lastValue;data=this.explicit?data:owner.getFormulaFn(data);this.settingValue=!0;this.stub.set(this.calculation=this.get.call(owner,data));this.settingValue=
!1;this.single&&this.destroy()},setValue:function(value){this.set.call(this.stub.owner,value)},privates:{getScheduler:function(){var owner=this.owner;return owner&&owner.getScheduler()},sort:function(){var binding=this.binding;binding.destroyed||this.scheduler.sortItem(binding)}}},1,0,0,0,0,0,[Ext.app.bind,'Formula'],0);
Ext.cmd.derive('Ext.util.Fly',Ext.Base,{inheritableStatics:{flyPoolSize:2,fly:function(){var flyweights=this.flyweights||(this.flyweights=[]);flyweights=flyweights.length?flyweights.pop():new this;flyweights.reset.apply(flyweights,arguments);return flyweights}},release:function(){var T=this.self,flyweights=T.flyweights||(T.flyweights=[]);this.reset();flyweights.length<T.flyPoolSize&&flyweights.push(this)},reset:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,'Fly'],0);
Ext.cmd.derive('Ext.parse.Tokenizer',Ext.util.Fly,function(Tokenizer){var flyweights=Tokenizer.flyweights=[],BOOLEAN={literal:!0,'boolean':!0},ERROR={error:!0},IDENT={ident:!0},NULL={literal:!0,nil:!0},NUMBER={literal:!0,number:!0},STRING={literal:!0,string:!0};return{isTokenizer:!0,statics:{BOOLEAN:BOOLEAN,ERROR:ERROR,IDENT:IDENT,LITERAL:{literal:!0},NULL:NULL,NUMBER:NUMBER,STRING:STRING},config:{keywords:{'null':{type:'literal',is:NULL,value:null},'false':{type:'literal',is:BOOLEAN,value:!1},'true':{type:'literal',
is:BOOLEAN,value:!0}},operators:{'+':'plus','-':'minus','*':'multiply','/':'divide','!':'bang',',':'comma',':':'colon','[':'arrayOpen',']':'arrayClose','{':'curlyOpen','}':'curlyClose','(':'parenOpen',')':'parenClose'}},error:null,index:-1,constructor:function(config){this.operators={};this.initConfig(config)},next:function(){var token=this.peek();this.head=void 0;return token},peek:function(){var error=this.error,token=this.head;if(error)return error;void 0===token&&(this.head=token=this.advance());
return token},release:function(){this.reset();flyweights.length<Tokenizer.flyPoolSize&&flyweights.push(this)},reset:function(text,pos,end){this.error=null;this.head=void 0;this.index=-1;this.text=text||null;this.pos=pos||0;this.end=text&&null==end?text.length:end;return this},privates:{digitRe:/[0-9]/,identFirstRe:/[a-z_$]/i,identRe:/[0-9a-z_$]/i,spaceRe:/[ \t]/,end:0,head:void 0,pos:0,text:null,applyOperators:function(ops){var operators=this.operators,i,op;for(op in ops){var block=operators;var name=
ops[op];var len=op.length;for(i=0;i<len;++i){var c=op.charAt(i);block=block[c]||(block[c]={})}name?(block.token=block={type:'operator',value:op,is:{operator:!0}},block.is[name]=!0):block.token=null}},advance:function(){for(var spaceRe=this.spaceRe,text=this.text,length=this.end,c;this.pos<length;)if(c=text.charAt(this.pos),spaceRe.test(c))++this.pos;else return this.index=this.pos,this.parse(c);return null},parse:function(c){var digitRe=this.digitRe,text=this.text,length=this.end,ret;'.'===c&&this.pos+
1<length&&digitRe.test(text.charAt(this.pos+1))&&(ret=this.parseNumber());!ret&&this.operators[c]&&(ret=this.parseOperator(c));ret||(ret='"'===c||"'"===c?this.parseString():digitRe.test(c)?this.parseNumber():this.identFirstRe.test(c)?this.parseIdent():this.syntaxError('Unexpected character'));return ret},parseIdent:function(){for(var identRe=this.identRe,keywords=this.getKeywords(),includeDots=!this.operators['.'],text=this.text,start=this.pos,end=start,length=this.end,prev=0,c;end<length;){c=text.charAt(end);
if(includeDots&&'.'===c){if('.'===prev)return this.syntaxError(end,'Unexpected dot operator');++end}else if(identRe.test(c))++end;else break;prev=c}if('.'===prev)return this.syntaxError(end-1,'Unexpected dot operator');identRe=text.substring(start,this.pos=end);return keywords&&keywords[identRe]||{type:'ident',is:IDENT,value:identRe}},parseNumber:function(){for(var digitRe=this.digitRe,text=this.text,start=this.pos,length=this.end,c,decimal,exp;this.pos<length;)if(c=text.charAt(this.pos),'-'===c||
'+'===c){if(this.pos!==start)return this.syntaxError(start,'Invalid number');++this.pos}else if('.'===c){if(decimal)break;decimal=!0;++this.pos}else if('e'===c||'E'===c){if(exp)break;decimal=exp=!0;c=text.charAt(++this.pos);'-'!==c&&'+'!==c||++this.pos}else if(digitRe.test(c))++this.pos;else break;digitRe={type:'literal',is:NUMBER,value:+text.substring(start,this.pos)};isFinite(digitRe.value)||(digitRe=this.syntaxError(start,'Invalid number'));return digitRe},parseOperator:function(c){for(var block=
this.operators,text=this.text,length=this.end,end=this.pos,match,matchEnd;block[c];)if(block=block[c],c=block.token,++end,c&&(match=c,matchEnd=end),end<length)c=text.charAt(end);else break;match&&(this.pos=matchEnd);return match},parseString:function(){var text=this.text,pos=this.pos,start=pos,length=this.end,str='',quote;for(quote=text.charAt(pos++);pos<length;){var c=text.charAt(pos++);if(c===quote){var closed=!0;break}'\\'===c&&pos<length&&(c=text.charAt(pos++));str+=c}this.pos=pos;return closed?
{type:'literal',is:STRING,value:str}:this.syntaxError(start,'Unterminated string')},syntaxError:function(at,message){'string'===typeof at&&(message=at,at=this.pos);var suffix=null==at?'':' (at index '+at+')';message=Error(message+suffix);message.type='error';message.is=ERROR;suffix&&(message.at=at);return this.error=message}}}},1,0,0,0,0,0,[Ext.parse,'Tokenizer'],0);
Ext.cmd.derive('Ext.parse.Symbol',Ext.Base,{priority:0,constructor:function(id,config){var defaultProperty=this.defaultProperty;config&&'object'===typeof config?Ext.apply(this,config):void 0!==config&&defaultProperty&&(this[defaultProperty]=config);this.id=id},led:function(){this.parser.syntaxError(this.at,'Missing operator')},nud:function(){this.parser.syntaxError(this.at,'Undefined')},update:function(config){if(config&&'object'===typeof config){var priority=config.priority,led=config.led;config=
config.nud;this.priority<=priority&&(this.priority=priority);led&&(this.led=led);config&&(this.nud=config)}}},1,0,0,0,0,0,[Ext.parse,'Symbol'],0);
Ext.cmd.derive('Ext.parse.symbol.Constant',Ext.parse.Symbol,{arity:'literal',isLiteral:!0,defaultProperty:'value',constructor:function(id,config){Ext.parse.Symbol.prototype.constructor.call(this,id,config);this._value=this.value},nud:function(){this.value=this._value;this.arity='literal';this.isLiteral=!0;return this}},1,0,0,0,0,0,[Ext.parse.symbol,'Constant'],0);
Ext.cmd.derive('Ext.parse.symbol.Infix',Ext.parse.Symbol,{arity:'binary',isBinary:!0,defaultProperty:'priority',led:function(left){this.lhs=left;this.rhs=this.parser.parseExpression(this.priority);this.arity='binary';this.isBinary=!0;return this}},0,0,0,0,0,0,[Ext.parse.symbol,'Infix'],0);
Ext.cmd.derive('Ext.parse.symbol.InfixRight',Ext.parse.symbol.Infix,{led:function(left){this.lhs=left;this.rhs=this.parser.parseExpression(this.priority-1);this.arity='binary';this.isBinary=!0;return this}},0,0,0,0,0,0,[Ext.parse.symbol,'InfixRight'],0);
Ext.cmd.derive('Ext.parse.symbol.Paren',Ext.parse.Symbol,{arity:'binary',isBinary:!0,priority:80,led:function(left){var args=[],parser=this.parser,id=left.id,type=left.arity;'.'!==id&&'['!==id&&('unary'===type&&'function'===id||'ident'===type||'('===id||'\x26\x26'===id||'||'===id||'?'===id||parser.syntaxError(left.at,'Expected a variable name.'));this.arity='invoke';this.isInvoke=!0;this.operand=left;for(this.args=args;')'!==parser.token.id;)args.length&&parser.advance(','),args.push(parser.parseExpression());
parser.advance(')');return this},nud:function(){var parser=this.parser,ret=parser.parseExpression();parser.advance(')');return ret}},0,0,0,0,0,0,[Ext.parse.symbol,'Paren'],0);Ext.cmd.derive('Ext.parse.symbol.Prefix',Ext.parse.Symbol,{arity:'unary',isUnary:!0,priority:70,nud:function(){this.operand=this.parser.parseExpression(this.priority);this.arity='unary';this.isUnary=!0;return this}},0,0,0,0,0,0,[Ext.parse.symbol,'Prefix'],0);
Ext.cmd.derive('Ext.parse.Parser',Ext.util.Fly,function(){var ITSELF=function(){return this};return{isParser:!0,config:{constants:{'null':null,'false':!1,'true':!0},infix:{'+':50,'-':50,'*':60,'/':60},infixRight:{'\x26\x26':30,'||':30},prefix:{'!':0,'-':0,'+':0},symbols:{':':0,',':0,')':0,'[':0,']':0,'{':0,'}':0,'(end)':0,'(ident)':{arity:'ident',isIdent:!0,nud:ITSELF},'(literal)':{arity:'literal',isLiteral:!0,nud:ITSELF},'(':{xclass:'Ext.parse.symbol.Paren'}},tokenizer:{keywords:null}},token:null,
constructor:function(config){this.symbols={};this.initConfig(config)},advance:function(expected){var tokenizer=this.tokenizer,token=tokenizer.peek(),symbols=this.symbols,index=tokenizer.index,symbol;if(this.error)throw this.error;expected&&this.expect(expected);if(!token)return this.token=symbols['(end)'];tokenizer.next();expected=token.is;tokenizer=token.value;expected.ident?symbol=symbols[tokenizer]||symbols['(ident)']:expected.operator?(symbol=symbols[tokenizer])||this.syntaxError(token.at,'Unknown operator "'+
tokenizer+'"'):expected.literal?symbol=symbols['(literal)']:this.syntaxError(token.at,'Unexpected token');this.token=symbol=Ext.Object.chain(symbol);symbol.at=index;symbol.value=tokenizer;symbol.arity||(symbol.arity=token.type);return symbol},expect:function(expected){var token=this.token;expected!==token.id&&this.syntaxError(token.at,'Expected "'+expected+'"');return this},parseExpression:function(rightPriority){var token=this.token,left;rightPriority=rightPriority||0;this.advance();for(left=token.nud();rightPriority<
(token=this.token).priority;)this.advance(),left=token.led(left);return left},reset:function(text,pos,end){this.error=this.token=null;this.tokenizer.reset(text,pos,end);this.advance();return this},syntaxError:function(at,message){'string'===typeof at&&(message=at,at=this.pos);var suffix=null==at?'':' (at index '+at+')';message=Error(message+suffix);message.type='error';suffix&&(message.at=at);throw this.error=message;},privates:{error:null,addSymbol:function(id,config,type,update){var symbols=this.symbols,
symbol=symbols[id];if(symbol){if('object'===typeof config)id=config;else if(update&&type)for(update=Ext.Array.from(update),config=update.length,id={},symbols=0;symbols<config;symbols++)id[update[symbols]]=type.prototype[update[symbols]];else return symbol;symbol.update(id)}else type=config&&config.xclass?Ext.ClassManager.get(config.xclass):type||Ext.parse.Symbol,symbols[id]=symbol=new type(id,config),symbol.parser=this;return symbol},addSymbols:function(symbols,type,update){for(var id in symbols)this.addSymbol(id,
symbols[id],type,update)},applyConstants:function(constants){this.addSymbols(constants,Ext.parse.symbol.Constant,'nud')},applyInfix:function(operators){this.addSymbols(operators,Ext.parse.symbol.Infix,'led')},applyInfixRight:function(operators){this.addSymbols(operators,Ext.parse.symbol.InfixRight,'led')},applyPrefix:function(operators){this.addSymbols(operators,Ext.parse.symbol.Prefix,'nud')},applySymbols:function(symbols){this.addSymbols(symbols)},applyTokenizer:function(config){var ret=config;
config&&!config.isTokenizer&&(ret=new Ext.parse.Tokenizer(config));this.tokenizer=ret}}}},1,0,0,0,0,0,[Ext.parse,'Parser'],0);
Ext.cmd.derive('Ext.app.bind.Parser',Ext.parse.Parser,{infix:{':':{priority:70,led:function(left){this.arity='formatter';this.operand=left;this.fmt=this.parser.parseFmt();return this}},'?':{priority:20,led:function(left){var parser=this.parser,symbol=parser.symbols[':'];this.condition=left;left=symbol.priority;symbol.priority=0;this.tv=parser.parseExpression(0);this.parser.advance(':');symbol.priority=left;this.fv=parser.parseExpression(0);this.arity='ternary';return this}},'\x3d\x3d\x3d':40,'!\x3d\x3d':40,
'\x3d\x3d':40,'!\x3d':40,'\x3c':40,'\x3c\x3d':40,'\x3e':40,'\x3e\x3d':40},symbols:{'(':{nud:function(){var parser=this.parser,symbol=parser.symbols[':'];var temp=symbol.priority;symbol.priority=70;var ret=parser.parseExpression();parser.advance(')');symbol.priority=temp;return ret}}},prefix:{'@':0},tokenizer:{operators:{'@':'at','?':'qmark','\x3d\x3d\x3d':'feq','!\x3d\x3d':'fneq','\x3d\x3d':'eq','!\x3d':'neq','\x3c':'lt','\x3c\x3d':'lte','\x3e':'gt','\x3e\x3d':'gte','\x26\x26':'and','||':'or'}},compileExpression:function(tokens,
tokensMaps){this.tokens=tokens;this.tokensMap=tokensMaps;tokens=this.parseSlot(this.parseExpression(),void 0);this.tokens=this.tokensMap=null;return tokens},compileFormat:function(){var fn=this.parseSlot({arity:'formatter',fmt:this.parseFmt(),operand:{arity:'ident',value:'dummy'}});this.expect('(end)');return fn},privates:{useEval:Ext.isGecko,escapeRe:/("|'|\\)/g,parseFmt:function(){var fmt=[],priority=this.symbols[':'].priority;do{fmt.length&&this.advance();var expr=this.parseExpression(priority);
expr.isIdent||expr.isInvoke?fmt.push(expr):this.syntaxError(expr.at,'Expected formatter name')}while(':'===this.token.id);return fmt},parseSlot:function(expr,debug){debug=[];var body=[],tokens=this.tokens||[];this.definitions=debug;this.body=body;body.push('return '+this.compile(expr)+';');var length=tokens.length;expr='var fm \x3d Ext.util.Format,\nme,';var temp='var a \x3d Ext.Array.from(values);\nme \x3d scope;\n';if(tokens.length)for(tokens=0;tokens<length;tokens++)expr+='v'+tokens+(tokens==length-
1?';':','),temp+='v'+tokens+' \x3d a['+tokens+']; ';else expr+='v0;',temp+='v0 \x3d a[0];';debug=Ext.Array.insert(debug,0,[expr]);body=Ext.Array.insert(body,0,[temp]);body=body.join('\n');debug.push((this.useEval?'$\x3d':'return')+' function (values, scope) {',body,'}');expr=debug.join('\n');debug=this.useEval?this.evalFn(expr):(new Function('Ext',expr))(Ext);this.definitions=this.body=null;return debug},compile:function(expr){switch(expr.arity){case 'ident':return this.addToken(expr.value);case 'literal':return expr=
expr.value,'string'===typeof expr?'"'+String(expr).replace(this.escapeRe,'\\$1')+'"':expr;case 'unary':return this.compileUnary(expr);case 'binary':return this.compileBinary(expr);case 'ternary':return this.compileTernary(expr);case 'formatter':return this.compileFormatter(expr)}return this.syntaxError(expr.at,'Compile error! Unknown symbol')},compileUnary:function(expr){var v=expr.value,op=expr.operand;return'!'===v||'-'===v||'+'===v?v+'('+this.compile(op)+')':'@'===v?op.isIdent?op.value:this.syntaxError(expr.at,
'Compile error! Unexpected symbol'):''},compileBinary:function(expr){return'('+this.compile(expr.lhs)+' '+expr.value+' '+this.compile(expr.rhs)+')'},compileTernary:function(expr){return'('+this.compile(expr.condition)+' ? '+this.compile(expr.tv)+' : '+this.compile(expr.fv)+')'},compileFormatter:function(expr){var fmt=expr.fmt,length=fmt.length,body=['var ret;'];if(fmt.length)for(body.push('ret \x3d '+this.compileFormatFn(fmt[0],this.compile(expr.operand))+';'),expr=1;expr<length;expr++)body.push('ret \x3d '+
this.compileFormatFn(fmt[expr],'ret')+';');body.push('return ret;');return this.addFn(body.join('\n'))},compileFormatFn:function(expr,value){var args=[],code='';if(expr.isIdent)var fmt=expr.value;else expr.isInvoke&&(fmt=expr.operand.value,args=expr.args);if('this.'===fmt.substring(0,5))fmt='me.'+fmt.substring(5);else{if(!(fmt in Ext.util.Format))return this.syntaxError(expr.at,'Compile error! Invalid format specified "'+fmt+'"');fmt='fm.'+fmt}code+=value;expr=args.length;for(value=0;value<expr;value++)code+=
', '+this.compile(args[value]);return fmt+'('+code+')'},addFn:function(body){var defs=this.definitions,name='f'+defs.length;defs.push('function '+name+'() {',body,'}');return name+'()'},evalFn:function($){eval($);return $},addToken:function(token){var tokensMap=this.tokensMap,tokens=this.tokens,pos=0;tokensMap&&tokens&&(token in tokensMap?pos=tokensMap[token]:(tokensMap[token]=pos=tokens.length,tokens.push(token)));return'v'+pos}}},0,0,0,0,0,0,[Ext.app.bind,'Parser'],0);
Ext.cmd.derive('Ext.app.bind.Template',Ext.Base,{buffer:null,slots:null,tokens:null,constructor:function(text){var initters=this._initters,name;this.text=text;for(name in initters)this[name]=initters[name]},_initters:{apply:function(values,scope){return this.parse().apply(values,scope)},getTokens:function(){return this.parse().getTokens()}},apply:function(values,scope){var slots=this.slots,buffer=this.buffer,length=slots.length,i,slot;for(i=0;i<length;++i)(slot=slots[i])&&(buffer[i]=slot(values,scope));
return slot&&this.single?buffer[0]:buffer.join('')},getTokens:function(){return this.tokens},isStatic:function(){var tokens=this.getTokens(),slots=this.slots;return 0===tokens.length&&0===slots.length},privates:{parse:function(){var text=this.text,parser=Ext.app.bind.Parser.fly(),buffer=this.buffer=[],slots=this.slots=[],length=text.length,pos=0,i;for(i in this._initters)delete this[i];this.tokens=[];this.tokensMap={};for(i=0;i<length;){var last=i;if(0>(i=text.indexOf('{',last))){buffer[pos++]=text.substring(last);
break}last<i&&(buffer[pos++]=text.substring(last,i));parser.reset(text,i+1);slots[pos++]=parser.compileExpression(this.tokens,this.tokensMap);i=parser.token.at+1;parser.expect('}')}parser.release();this.single=0===buffer.length&&1===slots.length;return this}}},1,0,0,0,0,0,[Ext.app.bind,'Template'],0);
Ext.cmd.derive('Ext.app.bind.TemplateBinding',Ext.app.bind.BaseBinding,{isTemplateBinding:!0,lastValue:void 0,value:void 0,constructor:function(template,owner,callback,scope,options){template=new Ext.app.bind.Template(template);var tokens=template.getTokens();Ext.app.bind.BaseBinding.prototype.constructor.call(this,owner,callback,scope,options);this.tpl=template;this.tokens=tokens;tokens.$literal=!0;template.isStatic()?(this.isStatic=!0,this.onData(template.text)):this.multiBinding=new Ext.app.bind.Multi(tokens,
owner,this.onBindData,this)},destroy:function(){Ext.destroy(this.multiBinding);this.tpl=this.multiBinding=null;Ext.app.bind.BaseBinding.prototype.destroy.call(this)},getFullName:function(){var multi=this.multiBinding;return this.fullName||(this.fullName='$'+(multi?multi.getFullName():Ext.app.bind.BaseBinding.prototype.getFullName.call(this)))},getRawValue:function(){return this.value},getTemplateScope:function(){return null},isDescendantOf:function(){return!1},isLoading:function(){var multi=this.multiBinding;
return multi?multi.isLoading():!1},onBindData:function(data){this.onData(this.tpl.apply(data,this.getTemplateScope()))},onData:function(value){var lastValue=this.value;lastValue!==(this.value=value)&&(this.lastValue=lastValue,this.schedule())},react:function(){this.notify(this.value)},refresh:function(){var multi=this.multiBinding;multi&&multi.refresh()},privates:{sort:function(){var multi=this.multiBinding;multi&&this.scheduler.sortItem(multi)}}},1,0,0,0,0,0,[Ext.app.bind,'TemplateBinding'],0);
Ext.cmd.derive('Ext.data.ChainedStore',Ext.data.AbstractStore,{config:{source:null,remoteFilter:!1,remoteSort:!1},remove:function(){var source=this.getSource();return source.remove.apply(source,arguments)},removeAll:function(){return this.getSource().removeAll()},getData:function(){var data=this.data;data||(this.data=data=this.constructDataCollection());return data},getTotalCount:function(){return this.getCount()},getSession:function(){return this.getSource().getSession()},applySource:function(source){source&&
(source=Ext.data.StoreManager.lookup(source));return source},updateSource:function(source,oldSource){oldSource&&!oldSource.destroyed&&oldSource.removeObserver(this);source&&(oldSource=this.getData(),oldSource.setSource(source.getData()),this.isInitializing||(this.fireEvent('refresh',this),this.fireEvent('datachanged',this)),source.addObserver(this))},getModel:function(){return this.getSource().getModel()},getProxy:function(){return null},onCollectionAdd:function(collection,info){collection=!info.next;
this.ignoreCollectionAdd||(this.fireEvent('add',this,info.items,info.at),collection&&this.fireEvent('datachanged',this))},onCollectionItemChange:function(collection,info){collection=info.item;var modifiedFieldNames=info.modified||null,type=info.meta;this.onUpdate(collection,type,modifiedFieldNames,info);this.fireEvent('update',this,collection,type,modifiedFieldNames,info)},onCollectionUpdateKey:function(source,details){this.fireEvent('idchanged',this,details.item,details.oldKey,details.newKey)},onUpdate:Ext.emptyFn,
onCollectionRemove:function(collection,info){collection=!info.next;this.ignoreCollectionRemove||(this.fireEvent('remove',this,info.items,info.at,!1),collection&&this.fireEvent('datachanged',this))},onSourceBeforeLoad:function(source,operation){this.fireEvent('beforeload',this,operation)},onSourceAfterLoad:function(source,records,successful,operation){this.fireEvent('load',this,records,successful,operation)},onFilterEndUpdate:function(){Ext.data.AbstractStore.prototype.onFilterEndUpdate.apply(this,
arguments);this.callObservers('Filter')},onSourceBeforePopulate:function(){this.ignoreCollectionAdd=!0;this.callObservers('BeforePopulate')},onSourceAfterPopulate:function(){this.ignoreCollectionAdd=!1;this.fireEvent('datachanged',this);this.fireEvent('refresh',this);this.callObservers('AfterPopulate')},onSourceBeforeClear:function(){this.ignoreCollectionRemove=!0;this.callObservers('BeforeClear')},onSourceAfterClear:function(){this.ignoreCollectionRemove=!1;this.callObservers('AfterClear')},onSourceBeforeRemoveAll:function(){this.ignoreCollectionRemove=
!0;this.callObservers('BeforeRemoveAll')},onSourceAfterRemoveAll:function(source,silent){this.ignoreCollectionRemove=!1;silent||(this.fireEvent('clear',this),this.fireEvent('datachanged',this));this.callObservers('AfterRemoveAll',[silent])},onSourceFilter:function(){this.fireEvent('refresh',this);this.fireEvent('datachanged',this)},hasPendingLoad:function(){return this.getSource().hasPendingLoad()},isLoaded:function(){return this.getSource().isLoaded()},isLoading:function(){return this.getSource().isLoading()},
doDestroy:function(){this.observers=null;this.setSource(null);this.getData().destroy(!0);this.data=null;Ext.data.AbstractStore.prototype.doDestroy.call(this)},privates:{isMoving:function(){var source=this.getSource();return source.isMoving?source.isMoving.apply(source,arguments):!1},loadsSynchronously:function(){return this.getSource().loadsSynchronously()}}},0,0,0,0,['store.chained'],[[Ext.data.LocalStore.prototype.mixinId||Ext.data.LocalStore.$className,Ext.data.LocalStore]],[Ext.data,'ChainedStore'],
0);
Ext.cmd.derive('Ext.app.ViewModel',Ext.Base,{isViewModel:!0,factoryConfig:{name:'viewModel'},collectTimeout:100,expressionRe:/^(?:\{(?:(\d+)|([a-z_][\w\-\.]*))\})$/i,$configStrict:!1,config:{data:!0,formulas:{$value:null,merge:function(newValue,currentValue,target,mixinClass){return this.mergeNew(newValue,currentValue,target,mixinClass)}},links:null,parent:null,root:!0,scheduler:null,schema:'default',session:null,stores:null,view:null},constructor:function(config){this.bindings={};this.initConfig(config)},destroy:function(){var scheduler=
this._scheduler,stores=this.storeInfo,parent=this.getParent(),task=this.collectTask,children=this.children,bindings=this.bindings,key;this.destroying=!0;task&&(task.cancel(),this.collectTask=null);if(children)for(key in children)children[key].destroy();if(stores)for(key in stores)task=stores[key],((children=task.autoDestroy)||!task.$wasInstance&&!1!==children)&&task.destroy(),Ext.destroy(task.$binding);parent&&parent.unregisterChild(this);this.getRoot().destroy();for(key in bindings)bindings[key].destroy();
scheduler&&scheduler.$owner===this&&(scheduler.$owner=null,scheduler.destroy());this.children=this.storeInfo=this._session=this._view=this._scheduler=this.bindings=this._root=this._parent=this.formulaFn=this.$formulaData=null;this.destroying=!1;this.callParent()},bind:function(descriptor,callback,scope,options){var track=!0;scope=scope||this;options||void 0===descriptor.bindTo||Ext.isString(descriptor)||(options=descriptor,descriptor=options.bindTo);Ext.isString(descriptor)?this.expressionRe.test(descriptor)?
(descriptor=descriptor.substring(1,descriptor.length-1),descriptor=this.bindExpression(descriptor,callback,scope,options),track=!1):descriptor=new Ext.app.bind.TemplateBinding(descriptor,this,callback,scope,options):descriptor=new Ext.app.bind.Multi(descriptor,this,callback,scope,options);track&&(this.bindings[descriptor.id]=descriptor);return descriptor},getSession:function(){var session=this._session,parent;!session&&(parent=this.getParent())&&this.setSession(session=parent.getSession());return session||
null},getStore:function(key){var storeInfo=this.storeInfo,store;storeInfo&&(store=storeInfo[key]);return store||null},linkTo:function(key,reference){reference.isModel&&(reference={type:reference.entityName,id:reference.id});var modelType=reference.type||reference.reference;var create=reference.create;modelType?(reference=reference.id,create&&(reference=void 0),reference=this.getRecord(modelType,reference),Ext.isObject(create)&&(reference.set(create),reference.commit(),reference.phantom=!0),key=this.getRoot().createStubChild(key),
key.set(reference)):(key=this.getStub(key),key.isLinkStub||(create=new Ext.app.bind.LinkStub(this,key.name),key.graft(create),key=create),key.link(reference))},notify:function(){var scheduler=this.getScheduler();scheduler.firing||scheduler.notify()},get:function(path){return this.getStub(path).getValue()},set:function(path,value){this.getData();if(void 0===value&&path&&path.constructor===Object){var obj=this.getRoot();value=path}else path&&0>path.indexOf('.')?(obj={},obj[path]=value,value=obj,obj=
this.getRoot()):obj=this.getStub(path);obj.set(value)},privates:{registerChild:function(child){var children=this.children;children||(this.children=children={});children[child.getId()]=child},unregisterChild:function(child){var children=this.children;!this.destroying&&children&&delete children[child.getId()]},getRecord:function(type,id){var session=this.getSession(),Model=type,hasId=void 0!==id;session?type=hasId?session.getRecord(type,id):session.createRecord(type):(Model.$isClass||(Model=this.getSchema().getEntity(Model)),
hasId?(type=Model.createWithId(id),type.load()):type=new Model);return type},bindExpression:function(descriptor,callback,scope,options){return this.getStub(descriptor).bind(callback,scope,options)},applyScheduler:function(scheduler){scheduler&&!scheduler.isInstance&&(scheduler=new Ext.util.Scheduler(scheduler),scheduler.$owner=this);return scheduler},getScheduler:function(){var scheduler=this._scheduler;scheduler||((scheduler=this.getParent())?scheduler=scheduler.getScheduler():(scheduler=new Ext.util.Scheduler({preSort:'kind,-depth'}),
scheduler.$owner=this),this.setScheduler(scheduler));return scheduler},getStub:function(bindDescr){var root=this.getRoot();return bindDescr?root.getChild(bindDescr):root},collect:function(){var parent=this.getParent(),task=this.collectTask;parent?parent.collect():(task||(task=this.collectTask=new Ext.util.DelayedTask(this.doCollect,this)),0===this.collectTimeout?this.doCollect():task.delay(this.collectTimeout))},doCollect:function(){var children=this.children,key;if(children)for(key in children)children[key].doCollect();
this.getRoot().collect()},onBindDestroy:function(binding,fromChild){if(!this.destroying)if(fromChild||delete this.bindings[binding.id],fromChild=this.getParent())fromChild.onBindDestroy(binding,!0);else this.collect()},applyData:function(newData,data){this.getSession();data||(this.linkData=data=(data=this.getParent())?Ext.Object.chain(data.getData()):{},this.data=this._data=Ext.Object.chain(data));newData&&newData.constructor===Object&&this.getRoot().set(newData)},applyParent:function(parent){parent&&
parent.registerChild(this);return parent},applyStores:function(stores){var me=this,root=me.getRoot(),key;me.storeInfo={};me.listenerScopeFn=function(){return me.getView().getInheritedConfig('defaultListenerScope')};for(key in stores){var cfg=stores[key];if(cfg.isStore)cfg.$wasInstance=!0,me.setupStore(cfg,key);else{cfg=Ext.isString(cfg)?{source:cfg}:Ext.apply({},cfg);var listeners=cfg.listeners;delete cfg.listeners;var storeBind=me.bind(cfg,me.onStoreBind,me,{trackStatics:!0});storeBind.isStatic()?
(storeBind.destroy(),me.createStore(key,cfg,listeners)):(storeBind.$storeKey=key,storeBind.$listeners=listeners,cfg=root.createStubChild(key),cfg.setStore(storeBind))}}},onStoreBind:function(cfg,oldValue,binding){var key=binding.$storeKey;(oldValue=this.storeInfo[key])?(cfg=Ext.merge({},binding.pruneStaticKeys()),binding=cfg.proxy,delete cfg.type,delete cfg.model,delete cfg.fields,delete cfg.proxy,delete cfg.listeners,binding&&(delete binding.reader,delete binding.writer,oldValue.getProxy().setConfig(binding)),
oldValue.setConfig(cfg)):this.createStore(key,cfg,binding.$listeners,binding)},createStore:function(key,cfg,listeners,binding){var session=this.getSession();cfg=Ext.apply({},cfg);cfg.session&&(cfg.session=session);cfg.source&&(cfg.type=cfg.type||'chained');cfg.listeners=listeners;cfg.resolveListenerScope=this.listenerScopeFn;cfg=Ext.Factory.store(cfg);cfg.$binding=binding;this.setupStore(cfg,key)},setupStore:function(store,key){store.resolveListenerScope=this.listenerScopeFn;this.storeInfo[key]=store;
this.set(key,store)},applyFormulas:function(formulas){var root=this.getRoot(),name;this.getData();for(name in formulas){root.createStubChild(name);var stub=this.getStub(name);stub.setFormula(formulas[name])}return formulas},applyLinks:function(links){for(var link in links)this.linkTo(link,links[link])},applySchema:function(schema){return Ext.data.schema.Schema.get(schema)},applyRoot:function(){var root=new Ext.app.bind.RootStub(this),parent=this.getParent();parent&&(root.depth=parent.getRoot().depth-
1E3);return root},getFormulaFn:function(data){var me=this,fn=me.formulaFn;fn||(fn=me.formulaFn=function(name){return me.$formulaData[name]});me.$formulaData=data;return fn}}},1,0,0,0,['viewmodel.default'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable],[Ext.mixin.Identifiable.prototype.mixinId||Ext.mixin.Identifiable.$className,Ext.mixin.Identifiable]],[Ext.app,'ViewModel'],0);
Ext.cmd.derive('Ext.app.domain.Controller',Ext.app.EventDomain,{singleton:!0,type:'controller',prefix:'controller.',idMatchRe:/^\#/,constructor:function(){this.callParent();this.monitor(Ext.app.BaseController)},match:function(target,selector){var result=!1,alias=target.alias;'*'===selector?result=!0:'#'===selector?result=!!target.isApplication:this.idMatchRe.test(selector)?result=target.getId()===selector.substring(1):alias&&(result=-1<Ext.Array.indexOf(alias,this.prefix+selector));return result}},
1,0,0,0,0,0,[Ext.app.domain,'Controller'],0);
Ext.cmd.derive('Ext.direct.Manager',Ext.Base,{singleton:!0,exceptions:{TRANSPORT:'xhr',PARSE:'parse',DATA:'data',LOGIN:'login',SERVER:'exception'},providerClasses:{},remotingMethods:{},config:{varName:'Ext.REMOTING_API'},apiNotFoundError:'Ext Direct API was not found at {0}',constructor:function(){this.mixins.observable.constructor.call(this);this.transactions=new Ext.util.MixedCollection;this.providers=new Ext.util.MixedCollection},addProvider:function(provider){var args=arguments,relayers=this.relayers||
(this.relayers={}),len;if(1<args.length)for(relayers=0,len=args.length;relayers<len;++relayers)this.addProvider(args[relayers]);else return provider.isProvider||(provider=Ext.create('direct.'+provider.type+'provider',provider)),this.providers.add(provider),provider.on('data',this.onProviderData,this),provider.relayedEvents&&(relayers[provider.id]=this.relayEvents(provider,provider.relayedEvents)),provider.isConnected()||provider.connect(),provider},loadProvider:function(config,callback,scope){var classes=
this.providerClasses,type;if(Ext.isArray(config))for(classes=0,type=config.length;classes<type;classes++)this.loadProvider(config[classes],callback,scope);else{type=config.type;var url=config.url;if(classes[type]&&classes[type].checkConfig(config))classes=this.addProvider(config),this.fireEventArgs('providerload',[url,classes]),Ext.callback(callback,scope,[url,classes]);else{var varName=config.varName||this.getVarName();delete config.varName;delete config.url;Ext.Loader.loadScript({url:url,scope:this,
onLoad:function(){this.onApiLoadSuccess({url:url,varName:varName,config:config,callback:callback,scope:scope})},onError:function(){this.onApiLoadFailure({url:url,callback:callback,scope:scope})}})}}},getProvider:function(id){return id.isProvider?id:this.providers.get(id)},removeProvider:function(provider){var providers=this.providers,relayers=this.relayers;if(provider=provider.isProvider?provider:providers.get(provider)){provider.un('data',this.onProviderData,this);var id=provider.id;relayers[id]&&
(relayers[id].destroy(),delete relayers[id]);providers.remove(provider);return provider}return null},addTransaction:function(transaction){this.transactions.add(transaction);return transaction},removeTransaction:function(transaction){transaction=this.getTransaction(transaction);this.transactions.remove(transaction);return transaction},getTransaction:function(transaction){return'object'===typeof transaction?transaction:this.transactions.get(transaction)},onProviderData:function(provider,event){var len;
if(Ext.isArray(event)){var i=0;for(len=event.length;i<len;++i)this.onProviderData(provider,event[i])}else event.name&&'event'!==event.name&&'exception'!==event.name?this.fireEvent(event.name,event):!1===event.status&&this.fireEvent('exception',event),this.fireEvent('event',event,provider)},parseMethod:function(fn){var current=Ext.global,i=0;if(Ext.isFunction(fn))var resolved=fn;else if(Ext.isString(fn)&&(resolved=this.remotingMethods[fn],!resolved)){fn=fn.split('.');for(resolved=fn.length;current&&
i<resolved;)current=current[fn[i]],++i;resolved=Ext.isFunction(current)?current:null}return resolved||null},resolveApi:function(api,caller){var action;(caller=api&&api.prefix)&&'.'!==caller.substr(caller.length-1)&&(caller+='.');for(action in api){var method=api[action];'prefix'!==action&&'function'!==typeof method&&(method=(caller||'')+method,method=this.parseMethod(method),'function'===typeof method&&(api[action]=method))}return api},privates:{addProviderClass:function(type,cls){this.providerClasses[type]=
cls},onApiLoadSuccess:function(options){var url=options.url,varName=options.varName;try{var api=Ext.apply(options.config,eval(varName));var provider=this.addProvider(api)}catch(e){var error=e+''}error?(this.fireEventArgs('providerloaderror',[url,error]),Ext.callback(options.callback,options.scope,[url,error])):(this.fireEventArgs('providerload',[url,provider]),Ext.callback(options.callback,options.scope,[url,provider]))},onApiLoadFailure:function(options){var url=options.url;var error=Ext.String.format(this.apiNotFoundError,
url);this.fireEventArgs('providerloaderror',[url,error]);Ext.callback(options.callback,options.scope,[url,error])},registerMethod:function(name,method){this.remotingMethods[name]=method},clearAllMethods:function(){this.remotingMethods={}}}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.direct,'Manager'],function(){Ext.Direct=Ext.direct.Manager});
Ext.cmd.derive('Ext.direct.Provider',Ext.Base,{isProvider:!0,$configPrefixed:!1,$configStrict:!1,config:{headers:void 0},subscribers:0,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.requests={};Ext.applyIf(this,{id:Ext.id(null,'provider-')})},destroy:function(){this.disconnect(!0);this.callParent()},isConnected:function(){return 0<this.subscribers},connect:function(){0===this.subscribers&&(this.doConnect(),this.fireEventArgs('connect',[this]));this.subscribers++},
doConnect:Ext.emptyFn,disconnect:function(force){if(0<this.subscribers||force)force?this.subscribers=0:this.subscribers--,0===this.subscribers&&(this.doDisconnect(),this.fireEventArgs('disconnect',[this]))},doDisconnect:function(){var requests=this.requests,id;for(id in requests){var request=requests[id];request.abort()}this.requests={}},sendAjaxRequest:function(params){(params=Ext.Ajax.request(params))&&params.id&&(this.requests[params.id]=params);return params},onData:function(options,success,response){response&&
response.request&&delete this.requests[response.request.id]},inheritableStatics:{checkConfig:Ext.returnFalse},onClassExtended:function(cls,data,hooks){data.type&&Ext.direct.Manager.addProviderClass(data.type,cls)}},1,0,0,0,['direct.provider'],[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.direct,'Provider'],0);
Ext.cmd.derive('Ext.data.PageMap',Ext.util.LruCache,{config:{store:null,pageSize:0,rootProperty:''},clear:function(initial){this.pageMapGeneration=(this.pageMapGeneration||0)+1;this.indexMap={};Ext.util.LruCache.prototype.clear.call(this,initial)},forEach:function(fn,scope){var pageNumbers=Ext.Object.getKeys(this.map),pageCount=pageNumbers.length,pageSize=this.getPageSize(),i,j;for(i=0;i<pageCount;i++)pageNumbers[i]=+pageNumbers[i];Ext.Array.sort(pageNumbers,Ext.Array.numericSortFn);scope=scope||
this;for(i=0;i<pageCount;i++){var pageNumber=pageNumbers[i];var page=this.getPage(pageNumber);var len=page.length;for(j=0;j<len;j++)if(!1===fn.call(scope,page[j],(pageNumber-1)*pageSize+j))return}},findBy:function(fn,scope){var result=null;scope=scope||this;this.forEach(function(rec,index){if(fn.call(scope,rec,index))return result=rec,!1});return result},findIndexBy:function(fn,scope){var result=-1;scope=scope||this;this.forEach(function(rec,index){if(fn.call(scope,rec))return result=index,!1});return result},
find:function(property,value,start,startsWith,endsWith,ignoreCase){if(Ext.isEmpty(value,!1))return null;var regex=Ext.String.createRegex(value,startsWith,endsWith,ignoreCase),root=this.getRootProperty();return this.findBy(function(item){return item&&regex.test((root?item[root]:item)[property])},null,start)},findIndex:function(property,value,start,startsWith,endsWith,ignoreCase){if(Ext.isEmpty(value,!1))return null;var regex=Ext.String.createRegex(value,startsWith,endsWith,ignoreCase),root=this.getRootProperty();
return this.findIndexBy(function(item){return item&&regex.test((root?item[root]:item)[property])},null,start)},getPageFromRecordIndex:function(index){return Math.floor(index/this.getPageSize())+1},addAll:function(records){this.addPage(1,records)},addPage:function(pageNumber,records){var pageSize=this.getPageSize(),lastPage=pageNumber+Math.floor((records.length-1)/pageSize),storeIndex=(pageNumber-1)*pageSize,indexMap=this.indexMap,len,startIdx;for(startIdx=0;pageNumber<=lastPage;pageNumber++,startIdx+=
pageSize){var page=Ext.Array.slice(records,startIdx,startIdx+pageSize);var i=0;for(len=page.length;i<len;i++)indexMap[page[i].internalId]=storeIndex++;this.add(pageNumber,page);this.fireEvent('pageadd',this,pageNumber,page)}},getCount:function(){var result=Ext.util.LruCache.prototype.getCount.call(this);result&&(result=(result-1)*this.getPageSize()+this.last.value.length);return result},getByInternalId:function(internalId){internalId=this.indexMap[internalId];if(null!=internalId)return this.getAt(internalId)},
indexOf:function(record){var result=-1;record&&(result=this.indexMap[record.internalId],null==result&&(result=-1));return result},insert:function(){},remove:function(){},removeAt:function(){},removeAtKey:function(page){var thePage=this.getPage(page),i;if(thePage&&!1!==this.fireEvent('beforepageremove',this,page,thePage)){var len=thePage.length;for(i=0;i<len;i++)delete this.indexMap[thePage[i].internalId];len=Ext.util.LruCache.prototype.removeAtKey.apply(this,arguments);this.fireEvent('pageremove',
this,page,thePage);thePage.length=0}return len},getPage:function(pageNumber){return this.get(pageNumber)},hasRange:function(start,end){start=this.getPageFromRecordIndex(start);for(var endPageNumber=this.getPageFromRecordIndex(end);start<=endPageNumber;start++)if(!this.hasPage(start))return!1;return(endPageNumber-1)*this._pageSize+this.getPage(endPageNumber).length>end},hasPage:function(pageNumber){return!!this.get(pageNumber)},peekPage:function(pageNumber){return this.map[pageNumber]},getAt:function(index){return this.getRange(index,
index+1)[0]},getRange:function(start,end){end--;this.hasRange(start,end)||Ext.raise('PageMap asked for range which it does not have');for(var Array=Ext.Array,pageSize=this.getPageSize(),startPageNumber=this.getPageFromRecordIndex(start),endPageNumber=this.getPageFromRecordIndex(end),dataStart=(startPageNumber-1)*pageSize,dataEnd=endPageNumber*pageSize-1,pageNumber=startPageNumber,result=[],sliceBegin,sliceEnd,doSlice;pageNumber<=endPageNumber;pageNumber++)pageNumber===startPageNumber?(sliceBegin=
start-dataStart,doSlice=0<sliceBegin):(sliceBegin=0,doSlice=!1),pageNumber===endPageNumber&&(sliceEnd=pageSize-(dataEnd-end),doSlice=doSlice||sliceEnd<pageSize),doSlice?Array.push(result,Array.slice(this.getPage(pageNumber),sliceBegin,sliceEnd)):Array.push(result,this.getPage(pageNumber));return result}},0,0,0,0,0,0,[Ext.data,'PageMap'],0);
Ext.cmd.derive('Ext.data.BufferedStore',Ext.data.ProxyStore,{isBufferedStore:!0,buffered:!0,config:{data:0,pageSize:25,remoteSort:!0,remoteFilter:!0,sortOnLoad:!1,purgePageCount:5,trailingBufferZone:25,leadingBufferZone:200,defaultViewSize:100,viewSize:0,trackRemoved:!1},applyData:function(data){return this.data||(this.data=this.createDataCollection())},applyProxy:function(proxy){(proxy=Ext.data.ProxyStore.prototype.applyProxy.call(this,proxy))&&proxy.setEnablePaging&&proxy.setEnablePaging(!0);return proxy},
applyAutoSort:function(){},createFiltersCollection:function(){return new Ext.util.FilterCollection},createSortersCollection:function(){return new Ext.util.SorterCollection},updateGroupField:function(field){this.group(field)},getGrouper:function(){return this.grouper},isGrouped:function(){return!!this.grouper},createDataCollection:function(){var result=new Ext.data.PageMap({store:this,rootProperty:'data',pageSize:this.getPageSize(),maxSize:this.getPurgePageCount(),listeners:{clear:this.onPageMapClear,
scope:this}});this.relayEvents(result,['beforepageremove','pageadd','pageremove']);this.pageRequests={};return result},removeAll:function(silent){var data=this.getData();data&&(silent&&this.suspendEvent('clear'),data.clear(),silent&&this.resumeEvent('clear'))},flushLoad:function(){var options=this.pendingLoadOptions;this.clearLoadTask();if(options)return this.getData().clear(),options.page=1,options.start=0,options.limit=this.getViewSize()||this.getDefaultViewSize(),options.loadCallback=options.callback,
options.callback=null,this.loadToPrefetch(options)},reload:function(options){var me=this,data=me.getData(),lastTotal=Number.MAX_VALUE,records;options||(options={});if(!me.loading&&!1!==me.fireEvent('beforeload',me,options)){var waitForReload=function(){var newCount=me.totalCount,oldRequestSize=endIdx-startIdx;endIdx>=newCount&&(endIdx=newCount-1,startIdx=Math.max(endIdx-oldRequestSize,0));me.rangeCached(startIdx,endIdx,!1)&&(me.loadCount=(me.loadCount||0)+1,me.loading=!1,data.un('pageadd',waitForReload),
records=data.getRange(startIdx,endIdx),me.fireEvent('load',me,records,!0),me.fireEvent('refresh',me))};var startPage=Math.ceil((me.getLeadingBufferZone()+me.getTrailingBufferZone())/2);if(me.lastRequestStart&&me.preserveScrollOnReload){var startIdx=me.lastRequestStart;var endIdx=me.lastRequestEnd;lastTotal=me.getTotalCount()}else startIdx=options.start||0,endIdx=startIdx+(options.count||me.getPageSize())-1;data.clear(!0);delete me.totalCount;startIdx=Math.max(startIdx-startPage,0);endIdx=Math.min(endIdx+
startPage,lastTotal);startIdx=0===startIdx?0:startIdx-1;endIdx=endIdx===lastTotal?endIdx:endIdx+1;startPage=me.getPageFromRecordIndex(startIdx);lastTotal=me.getPageFromRecordIndex(endIdx);me.loading=!0;options.waitForReload=waitForReload;for(data.on('pageadd',waitForReload);startPage<=lastTotal;startPage++)me.prefetchPage(startPage,options)}},filter:function(){Ext.data.ProxyStore.prototype.filter.apply(this,arguments)},filterBy:function(fn,scope){},loadData:function(data,append){},loadPage:function(page,
options){options=options||{};options.page=this.currentPage=page;options.start=(page-1)*this.getPageSize();options.limit=this.getViewSize()||this.getDefaultViewSize();options.loadCallback=options.callback;options.callback=null;return this.loadToPrefetch(options)},clearData:function(isLoad){(isLoad=this.getData())&&isLoad.clear()},getCount:function(){return this.totalCount||0},getRange:function(start,end,options){var me=this,maxIndex=me.totalCount-1,lastRequestStart=me.lastRequestStart,result=[],data=
me.getData();options=Ext.apply({prefetchStart:start,prefetchEnd:end},options);end=end>=me.totalCount?maxIndex:end;if(!1!==options.forRender){var requiredStart=0===start?0:start-1;maxIndex=end===maxIndex?end:end+1}else requiredStart=start,maxIndex=end;me.lastRequestStart=start;me.lastRequestEnd=end;if(me.rangeCached(start,end,options.forRender))me.onRangeAvailable(options),result=data.getRange(start,end+1);else{me.fireEvent('cachemiss',me,start,end);var requiredStartPage=me.getPageFromRecordIndex(requiredStart);
var requiredEndPage=me.getPageFromRecordIndex(maxIndex);var pageAddHandler=function(pageMap,page,records){page>=requiredStartPage&&page<=requiredEndPage&&me.rangeCached(start,end)&&(me.fireEvent('cachefilled',me,start,end),data.un('pageadd',pageAddHandler),me.onRangeAvailable(options))};data.on('pageadd',pageAddHandler);me.prefetchRange(start,end)}me.primeCache(start,end,start<lastRequestStart?-1:1);return result},getById:function(id){return this.data.findBy(function(record){return record.getId()===
id})},getAt:function(index){var data=this.getData();if(data.hasRange(index,index))return data.getAt(index)},getByInternalId:function(internalId){return this.data.getByInternalId(internalId)},contains:function(record){return-1<this.indexOf(record)},indexOf:function(record){return this.getData().indexOf(record)},indexOfId:function(id){return this.indexOf(this.getById(id))},group:function(grouper,direction){var me=this,oldGrouper;grouper&&'string'===typeof grouper?(oldGrouper=me.grouper)&&void 0!==direction?
oldGrouper.setDirection(direction):me.grouper=new Ext.util.Grouper({property:grouper,direction:direction||'ASC',root:'data'}):me.grouper=grouper?me.getSorters().decodeSorter(grouper,'Ext.util.Grouper'):null;me.getData().clear();me.loadPage(1,{callback:function(){me.fireEvent('groupchange',me,me.getGrouper())}})},getPageFromRecordIndex:function(index){return Math.floor(index/this.getPageSize())+1},calculatePageCacheSize:function(rangeSizeRequested){var purgePageCount=this.getPurgePageCount();return purgePageCount?
Math.max(this.getData().getMaxSize()||0,2*Math.ceil((rangeSizeRequested+this.getTrailingBufferZone()+this.getLeadingBufferZone())/this.getPageSize())+purgePageCount):0},loadToPrefetch:function(options){var me=this,prefetchOptions=options,i,records$jscomp$0,dataSetSize,startIdx=options.start,endIdx=options.start+options.limit-1,rangeSizeRequested=me.getViewSize()||options.limit,loadEndIdx=Math.min(endIdx,options.start+rangeSizeRequested-1),startPage=me.getPageFromRecordIndex(Math.max(startIdx-me.getTrailingBufferZone(),
0)),endPage=me.getPageFromRecordIndex(endIdx+me.getLeadingBufferZone()),data=me.getData(),callbackFn=function(){records$jscomp$0=records$jscomp$0||[];options.loadCallback&&options.loadCallback.call(options.scope||me,records$jscomp$0,operation,!0);options.callback&&options.callback.call(options.scope||me,records$jscomp$0,startIdx||0,endIdx||0,options)},fireEventsFn=function(){me.loadCount=(me.loadCount||0)+1;me.fireEvent('datachanged',me);me.fireEvent('refresh',me);me.fireEvent('load',me,records$jscomp$0,
!0)},waitForRequestedRange=function(){me.rangeCached(startIdx,loadEndIdx)&&(me.loading=!1,records$jscomp$0=data.getRange(startIdx,loadEndIdx+1),data.un('pageadd',waitForRequestedRange),me.hasListeners.guaranteedrange&&me.guaranteeRange(startIdx,loadEndIdx,options.callback,options.scope),callbackFn(),fireEventsFn())},operation;data.setMaxSize(me.calculatePageCacheSize(rangeSizeRequested));!1!==me.fireEvent('beforeload',me,options)&&(delete me.totalCount,me.loading=!0,options.callback&&(prefetchOptions=
Ext.apply({},options),delete prefetchOptions.callback),me.on('prefetch',function(store,records,successful,op){operation=op;if(successful)if(dataSetSize=me.getTotalCount())for(data.on('pageadd',waitForRequestedRange),loadEndIdx=Math.min(loadEndIdx,dataSetSize-1),endPage=me.getPageFromRecordIndex(Math.min(loadEndIdx+me.getLeadingBufferZone(),dataSetSize-1)),i=startPage+1;i<=endPage;++i)me.prefetchPage(i,prefetchOptions);else callbackFn(),fireEventsFn();else me.loading=!1,callbackFn(),me.fireEvent('load',
me,records,!1)},null,{single:!0}),me.prefetchPage(startPage,prefetchOptions))},prefetch:function(options){var pageSize=this.getPageSize(),data=this.getData();pageSize?(this.lastPageSize&&pageSize!=this.lastPageSize&&Ext.raise('pageSize cannot be dynamically altered'),data.getPageSize()||data.setPageSize(pageSize)):this.pageSize=data.setPageSize(pageSize=options.limit);this.lastPageSize=pageSize;options.page||(options.page=this.getPageFromRecordIndex(options.start),options.start=(options.page-1)*pageSize,
options.limit=Math.ceil(options.limit/pageSize)*pageSize);pageSize=this.pageRequests[options.page];pageSize&&pageSize.getOperation().pageMapGeneration===data.pageMapGeneration||(options=Ext.apply({action:'read',filters:this.getFilters().items,sorters:this.getSorters().items,grouper:this.getGrouper(),internalCallback:this.onProxyPrefetch,internalScope:this},options),pageSize=this.createOperation('read',options),pageSize.pageMapGeneration=data.pageMapGeneration,!1!==this.fireEvent('beforeprefetch',
this,pageSize)&&(this.pageRequests[options.page]=pageSize.execute(),this.getProxy().isSynchronous&&delete this.pageRequests[options.page]));return this},onPageMapClear:function(){var loadingFlag=this.wasLoading,reqs=this.pageRequests,data=this.getData(),page;data.clearListeners();data.on('clear',this.onPageMapClear,this);this.relayEvents(data,['beforepageremove','pageadd','pageremove']);this.loading=!0;this.totalCount=0;for(page in reqs)reqs.hasOwnProperty(page)&&reqs[page].getOperation().abort();
this.fireEvent('clear',this);this.loading=loadingFlag},prefetchPage:function(page,options){var pageSize=this.getPageSize(),start=(page-1)*pageSize,total=this.totalCount;void 0!==total&&this.data.getCount()===total||this.prefetch(Ext.applyIf({page:page,start:start,limit:pageSize},options))},onProxyPrefetch:function(operation){if(!this.destroying&&!this.destroyed){var resultSet=operation.getResultSet(),records=operation.getRecords(),successful=operation.wasSuccessful(),page=operation.getPage(),waitForReload=
operation.waitForReload,oldTotal=this.totalCount,requests=this.pageRequests,key;if(operation.pageMapGeneration===this.getData().pageMapGeneration){resultSet&&(this.totalCount=resultSet.getTotal(),this.totalCount!==oldTotal&&this.fireEvent('totalcountchange',this.totalCount));void 0!==page&&delete this.pageRequests[page];this.loading=!1;this.fireEvent('prefetch',this,records,successful,operation);if(successful)if(0===this.totalCount){if(waitForReload){for(key in requests)resultSet=requests[key].getOperation(),
resultSet.waitForReload===waitForReload&&delete resultSet.waitForReload;this.getData().un('pageadd',waitForReload);this.fireEvent('load',this,[],!0);this.fireEvent('refresh',this)}}else this.cachePage(records,operation.getPage());Ext.callback(operation.getCallback(),operation.getScope()||this,[records,operation,successful])}}},cachePage:function(records,page){var len=records.length,i;Ext.isDefined(this.totalCount)||(this.totalCount=records.length,this.fireEvent('totalcountchange',this.totalCount));
for(i=0;i<len;i++)records[i].join(this);this.getData().addPage(page,records)},rangeCached:function(start,end,forRender){var requiredStart=start,requiredEnd=end;!1!==forRender&&(requiredStart=0===start?0:start-1,requiredEnd=end===this.totalCount-1?end:end+1);return this.getData().hasRange(requiredStart,requiredEnd)},pageCached:function(page){return this.getData().hasPage(page)},pagePending:function(page){return!!this.pageRequests[page]},rangeSatisfied:function(start,end){return this.rangeCached(start,
end)},onRangeAvailable:function(options){var totalCount=this.getTotalCount(),start=options.prefetchStart;totalCount=options.prefetchEnd>totalCount-1?totalCount-1:options.prefetchEnd;totalCount=Math.max(0,totalCount);var range=this.getData().getRange(start,totalCount+1);!1!==options.fireEvent&&this.fireEvent('guaranteedrange',range,start,totalCount,options);options.callback&&options.callback.call(options.scope||this,range,start,totalCount,options)},guaranteeRange:function(start,end,callback,scope,
options){options=Ext.apply({callback:callback,scope:scope},options);this.getRange(start,end+1,options)},prefetchRange:function(start,end){var data=this.getData();if(!this.rangeCached(start,end)){var startPage=this.getPageFromRecordIndex(start);var endPage=this.getPageFromRecordIndex(end);data.setMaxSize(this.calculatePageCacheSize(end-start+1));for(start=startPage;start<=endPage;start++)this.pageCached(start)||this.prefetchPage(start)}},primeCache:function(start,end,direction){var leadingBufferZone=
this.getLeadingBufferZone(),trailingBufferZone=this.getTrailingBufferZone(),pageSize=this.getPageSize(),totalCount=this.totalCount;-1===direction?(start=Math.max(start-leadingBufferZone,0),end=Math.min(end+trailingBufferZone,totalCount-1)):1===direction?(start=Math.max(Math.min(start-trailingBufferZone,totalCount-pageSize),0),end=Math.min(end+leadingBufferZone,totalCount-1)):(start=Math.min(Math.max(Math.floor(start-(leadingBufferZone+trailingBufferZone)/2),0),totalCount-this.pageSize),end=Math.min(Math.max(Math.ceil(end+
(leadingBufferZone+trailingBufferZone)/2),0),totalCount-1));this.prefetchRange(start,end)},sort:function(field,direction,mode){0===arguments.length?this.clearAndLoad():this.getSorters().addSort(field,direction,mode)},onSorterEndUpdate:function(){var me=this,sorters=me.getSorters().getRange();sorters.length?(me.fireEvent('beforesort',me,sorters),me.clearAndLoad({callback:function(){me.fireEvent('sort',me,sorters)}})):me.fireEvent('sort',me,sorters)},clearAndLoad:function(options){this.clearing=!0;
this.getData().clear();this.clearing=!1;this.loadPage(1,options)},privates:{isLast:function(record){return this.indexOf(record)===this.getTotalCount()-1},isMoving:function(){return!1}}},0,0,0,0,['store.buffered'],0,[Ext.data,'BufferedStore'],0);
Ext.cmd.derive('Ext.data.proxy.Direct',Ext.data.proxy.Server,{alternateClassName:'Ext.data.DirectProxy',config:{paramOrder:void 0,paramsAsHash:!0,directFn:void 0,api:void 0,metadata:void 0},paramOrderRe:/[\s,|]/,constructor:function(config){Ext.data.proxy.Server.prototype.constructor.call(this,config);this.canceledOperations={}},applyParamOrder:function(paramOrder){Ext.isString(paramOrder)&&(paramOrder=paramOrder.split(this.paramOrderRe));return paramOrder},updateApi:function(){this.methodsResolved=
!1},updateDirectFn:function(){this.methodsResolved=!1},resolveMethods:function(){var fn=this.getDirectFn(),api=this.getApi(),method;fn&&(this.setDirectFn(method=Ext.direct.Manager.parseMethod(fn)),Ext.isFunction(method)||Ext.raise('Cannot resolve directFn '+fn));api&&(api=Ext.direct.Manager.resolveApi(api,this),this.setApi(api));this.methodsResolved=!0},doRequest:function(operation){var writer,fn;this.methodsResolved||this.resolveMethods();var request=this.buildRequest(operation);var action=request.getAction();
(writer=this.getApi())&&(fn=writer[action]);fn=fn||this.getDirectFn();(writer=this.getWriter())&&operation.allowWrite()&&(request=writer.write(request));action='read'===action?request.getParams():request.getJsonData();operation=fn.directCfg.method.getArgs({params:action,allowSingle:writer.getAllowSingle(),paramOrder:this.getParamOrder(),paramsAsHash:this.getParamsAsHash(),paramsAsArray:!0,metadata:this.getMetadata(),callback:this.createRequestCallback(request,operation),scope:this});request.setConfig({args:operation,
directFn:fn});fn.apply(window,operation);return request},abort:function(operation){operation&&operation.isDataRequest&&(operation=operation.getOperation());if(operation&&operation.isOperation)var id=operation.id;null!=id&&(this.canceledOperations[id]=!0)},applyEncoding:Ext.identityFn,createRequestCallback:function(request,operation){var me=this;return function(data,event){me.canceledOperations[operation.id]||me.processResponse(event.status,operation,request,event);delete me.canceledOperations[operation.id]}},
extractResponseData:function(response){return Ext.isDefined(response.result)?response.result:response.data},setException:function(operation,response){operation.setException(response.message)},buildUrl:function(){return''}},1,0,0,0,['proxy.direct'],0,[Ext.data.proxy,'Direct',Ext.data,'DirectProxy'],0);
Ext.define('MainApp.overrides.data.proxy.Direct',{override:'Ext.data.proxy.Direct',createRequestCallback:function(request,operation){var me=this;return function(data,event){me.canceledOperations&&(me.canceledOperations[operation.id]||me.processResponse(event.status,operation,request,event),delete me.canceledOperations[operation.id])}}});
Ext.cmd.derive('Ext.data.JsonStore',Ext.data.Store,{constructor:function(config){config=Ext.apply({proxy:{type:'ajax',reader:'json',writer:'json'}},config);Ext.data.Store.prototype.constructor.call(this,config)}},1,0,0,0,['store.json'],0,[Ext.data,'JsonStore'],0);
Ext.cmd.derive('Ext.data.NodeInterface',Ext.Base,{statics:{decorate:function(modelClass){modelClass=Ext.data.schema.Schema.lookupEntity(modelClass);var proto=modelClass.prototype;modelClass.prototype.isObservable||modelClass.mixin(Ext.mixin.Observable.prototype.mixinId,Ext.mixin.Observable);if(!proto.isNode){proto=modelClass.getField(proto.idProperty);var idType=proto.type;modelClass.override(this.getPrototypeBody());modelClass.addFields([{name:'parentId',type:idType,defaultValue:null,allowNull:proto.allowNull},
{name:'index',type:'int',defaultValue:-1,persist:!1,convert:null},{name:'depth',type:'int',defaultValue:0,persist:!1,convert:null},{name:'expanded',type:'bool',defaultValue:!1,persist:!1,convert:null},{name:'expandable',type:'bool',defaultValue:!0,persist:!1,convert:null},{name:'checked',type:'auto',defaultValue:null,persist:!1,convert:null},{name:'leaf',type:'bool',defaultValue:!1},{name:'cls',type:'string',defaultValue:'',persist:!1,convert:null},{name:'iconCls',type:'string',defaultValue:'',persist:!1,
convert:null},{name:'icon',type:'string',defaultValue:'',persist:!1,convert:null},{name:'glyph',type:'string',defaultValue:'',persist:!1,convert:null},{name:'root',type:'boolean',defaultValue:!1,persist:!1,convert:null},{name:'isLast',type:'boolean',defaultValue:!1,persist:!1,convert:null},{name:'isFirst',type:'boolean',defaultValue:!1,persist:!1,convert:null},{name:'allowDrop',type:'boolean',defaultValue:!0,persist:!1,convert:null},{name:'allowDrag',type:'boolean',defaultValue:!0,persist:!1,convert:null},
{name:'loaded',type:'boolean',defaultValue:!1,persist:!1,convert:null},{name:'loading',type:'boolean',defaultValue:!1,persist:!1,convert:null},{name:'href',type:'string',defaultValue:'',persist:!1,convert:null},{name:'hrefTarget',type:'string',defaultValue:'',persist:!1,convert:null},{name:'qtip',type:'string',defaultValue:'',persist:!1,convert:null},{name:'qtitle',type:'string',defaultValue:'',persist:!1,convert:null},{name:'qshowDelay',type:'int',defaultValue:0,persist:!1,convert:null},{name:'children',
type:'auto',defaultValue:null,persist:!1,convert:null},{name:'visible',type:'boolean',defaultValue:!0,persist:!1},{name:'text',type:'string',persist:!1}])}},getPrototypeBody:function(){var bubbledEvents={idchanged:!0,append:!0,remove:!0,move:!0,insert:!0,beforeappend:!0,beforeremove:!0,beforemove:!0,beforeinsert:!0,expand:!0,collapse:!0,beforeexpand:!0,beforecollapse:!0,sort:!0},silently={silent:!0};return{isNode:!0,firstChild:null,lastChild:null,parentNode:null,previousSibling:null,nextSibling:null,
constructor:function(){this.mixins.observable.constructor.call(this);this.callParent(arguments);this.childNodes=[];return this},createNode:function(node){var childType=this.childType,T=this.self;if(!node.isModel){if(childType)T=this.schema.getEntity(childType);else{childType=(childType=this.getTreeStore())&&childType.getProxy().getReader();var nodeProxy=(nodeProxy=this.getProxy())?nodeProxy.getReader():null;(childType=!childType||nodeProxy&&nodeProxy.initialConfig.typeProperty?nodeProxy:childType)&&
(nodeProxy=childType.getTypeProperty())&&(T=childType.getChildType(this.schema,node,nodeProxy))}node=new T(node)}node.childNodes||(node.firstChild=node.lastChild=node.parentNode=node.previousSibling=node.nextSibling=null,node.childNodes=[]);return node},isLeaf:function(){return!0===this.get('leaf')},setFirstChild:function(node){this.firstChild=node},setLastChild:function(node){this.lastChild=node},updateInfo:function(commit,info){var phantom=this.phantom;commit={silent:!0,commit:commit};if(info.depth!==
this.data.depth){var childInfo={depth:this.data.depth+1},children=this.childNodes,childCount=children.length,i;for(i=0;i<childCount;i++)children[i].set(childInfo)}commit=this.set(info,commit);this.phantom=phantom;return commit},isLast:function(){return this.get('isLast')},isFirst:function(){return this.get('isFirst')},hasChildNodes:function(){return!this.isLeaf()&&0<this.childNodes.length},isExpandable:function(){return this.get('expandable')?!(this.isLeaf()||this.isLoaded()&&!this.phantom&&!this.hasChildNodes()):
!1},triggerUIUpdate:function(){this.callJoined('afterEdit',[])},appendChild:function(node,suppressEvents,commit){var i,previousSibling,childInfo={isLast:!0,parentId:this.getId(),depth:(this.data.depth||0)+1},bulkUpdate=(i=this.getTreeStore())&&i.bulkUpdate;Ext.suspendLayouts();if(Ext.isArray(node)){var ln=node.length;var index=Array(ln);this.callTreeStore('beginFill');for(i=0;i<ln;i++)index[i]=this.appendChild(node[i],suppressEvents,commit);this.callTreeStore('endFill',[index])}else{node=this.createNode(node);
if(!0!==suppressEvents&&!1===this.fireBubbledEvent('beforeappend',[this,node]))return Ext.resumeLayouts(!0),!1;index=this.childNodes.length;if(ln=node.parentNode)if(!0!==suppressEvents&&!1===node.fireBubbledEvent('beforemove',[node,ln,this,index])||!1===ln.removeChild(node,!1,suppressEvents,ln.getTreeStore()===i))return Ext.resumeLayouts(!0),!1;i&&i.beginUpdate();index=this.childNodes.length;0===index&&this.setFirstChild(node);this.childNodes[index]=node;node.parentNode=this;node.nextSibling=null;
this.setLastChild(node);(previousSibling=this.childNodes[index-1])?(node.previousSibling=previousSibling,previousSibling.nextSibling=node,previousSibling.updateInfo(commit,{isLast:!1}),bulkUpdate||previousSibling.triggerUIUpdate()):node.previousSibling=null;childInfo.isFirst=0===index;childInfo.index=index;commit=node.updateInfo(commit,childInfo);this.isLeaf()&&this.set('leaf',!1);this.isLoaded()?1!==this.childNodes.length||bulkUpdate||this.triggerUIUpdate():bulkUpdate?this.data.loaded=!0:this.set('loaded',
!0);index&&this.childNodes[index-1].isExpanded()&&!bulkUpdate&&this.childNodes[index-1].cascade(this.triggerUIUpdate);i&&(i.registerNode(this,!bulkUpdate),bulkUpdate&&i.registerNode(node));!0!==suppressEvents&&(this.fireBubbledEvent('append',[this,node,index]),ln&&node.fireBubbledEvent('move',[node,ln,this,index]));this.callTreeStore('onNodeAppend',[node,index]);commit&&node.callJoined('afterEdit',[commit]);index=node;i&&i.endUpdate()}Ext.resumeLayouts(!0);return index},getOwnerTree:function(){var store=
this.getTreeStore();if(store)return store.ownerTree},getTreeStore:function(){for(var root=this;root&&!root.treeStore;)root=root.parentNode;return root&&root.treeStore},removeChild:function(node,erase,suppressEvents,isMove){var index=this.indexOf(node),childCount,treeStore=this.getTreeStore(),bulkUpdate=treeStore&&treeStore.bulkUpdate,removeRange=[];if(-1===index||!0!==suppressEvents&&!1===this.fireBubbledEvent('beforeremove',[this,node,!!isMove]))return!1;Ext.suspendLayouts();treeStore&&treeStore.beginUpdate();
Ext.Array.erase(this.childNodes,index,1);this.firstChild===node&&this.setFirstChild(node.nextSibling);this.lastChild===node&&this.setLastChild(node.previousSibling);if(childCount=node.previousSibling)node.previousSibling.nextSibling=node.nextSibling;if(node.nextSibling)for(node.nextSibling.previousSibling=node.previousSibling,0===index&&node.nextSibling.updateInfo(!1,{isFirst:!0}),childCount=this.childNodes.length;index<childCount;index++)this.childNodes[index].updateInfo(!1,{index:index});else childCount&&
(childCount.updateInfo(!1,{isLast:!0}),bulkUpdate||(childCount.isExpanded()?childCount.cascade(this.triggerUIUpdate):childCount.triggerUIUpdate()));this.childNodes.length||bulkUpdate||this.triggerUIUpdate();Ext.resumeLayouts(!0);!0!==suppressEvents&&(suppressEvents={parentNode:node.parentNode,previousSibling:node.previousSibling,nextSibling:node.nextSibling},this.callTreeStore('beforeNodeRemove',[[node],!!isMove,removeRange]),node.previousSibling=node.nextSibling=node.parentNode=null,this.fireBubbledEvent('remove',
[this,node,!!isMove,suppressEvents]),this.callTreeStore('onNodeRemove',[[node],!!isMove,removeRange]));erase?node.erase(!0):node.clear();isMove||node.set({parentId:null,lastParentId:this.getId()},silently);treeStore&&treeStore.endUpdate();return node},copy:function(newId,session,deep){var result=[newId];var len=this.childNodes?this.childNodes.length:0,i;session&&session.isSession?result.push(session):3>arguments.length&&(deep=session);result=this.callParent(result);if(deep)for(i=0;i<len;i++)result.appendChild(this.childNodes[i].copy(void 0,
!0));return result},clear:function(erase,resetChildren){this.parentNode=this.previousSibling=this.nextSibling=null;erase&&(this.firstChild=this.lastChild=this.childNodes=null);resetChildren&&(this.firstChild=this.lastChild=null,this.childNodes.length=0,this.data&&(this.data.children=null))},drop:function(){var childNodes=this.childNodes,parentNode=this.parentNode,treeStore=this.getTreeStore();this.callParent();parentNode?parentNode.removeChild(this):this.get('root')&&treeStore.setRoot(null);treeStore&&
treeStore.beginUpdate();var i=0;for(parentNode=childNodes?childNodes.length:0;i<parentNode;i++){var node=childNodes[i];node.clear();node.drop()}treeStore&&treeStore.endUpdate()},erase:function(options){var childNodes=this.childNodes,len=childNodes&&childNodes.length,i;this.remove();this.clear(!0);this.callParent([options]);for(i=0;i<len;i++){var node=childNodes[i];node.parentNode=null;node.erase(options)}},insertBefore:function(node,refNode,suppressEvents){var index=this.indexOf(refNode),oldParent=
node.parentNode,refIndex=index,treeStore=this.getTreeStore(),bulkUpdate=treeStore&&treeStore.bulkUpdate,siblingModifiedFields;if(!refNode)return this.appendChild(node);if(node===refNode)return!1;node=this.createNode(node);if(!0!==suppressEvents&&!1===this.fireBubbledEvent('beforeinsert',[this,node,refNode]))return!1;oldParent===this&&this.indexOf(node)<index&&refIndex--;if(oldParent&&(!0!==suppressEvents&&!1===node.fireBubbledEvent('beforemove',[node,oldParent,this,index,refNode])||!1===oldParent.removeChild(node,
!1,suppressEvents,oldParent.getTreeStore()===treeStore)))return!1;treeStore&&treeStore.beginUpdate();0===refIndex&&this.setFirstChild(node);Ext.Array.splice(this.childNodes,refIndex,0,node);node.parentNode=this;node.nextSibling=refNode;refNode.previousSibling=node;(index=this.childNodes[refIndex-1])?(node.previousSibling=index,index.nextSibling=node):node.previousSibling=null;var modifiedFields=node.updateInfo(!1,{parentId:this.getId(),index:refIndex,isFirst:0===refIndex,isLast:!1,depth:(this.data.depth||
0)+1});var i=refIndex+1;for(index=this.childNodes.length;i<index;i++){var sibling=this.childNodes[i];(siblingModifiedFields=sibling.updateInfo(!1,{index:i}))&&sibling.callJoined('afterEdit',[siblingModifiedFields])}this.isLoaded()?1!==this.childNodes.length||bulkUpdate||this.triggerUIUpdate():bulkUpdate?this.data.loaded=!0:this.set('loaded',!0);treeStore&&treeStore.registerNode(this,!bulkUpdate);!0!==suppressEvents&&(this.fireBubbledEvent('insert',[this,node,refNode]),oldParent&&node.fireBubbledEvent('move',
[node,oldParent,this,refIndex,refNode]));this.callTreeStore('onNodeInsert',[node,refIndex]);modifiedFields&&node.callJoined('afterEdit',[modifiedFields]);treeStore&&treeStore.endUpdate();return node},insertChild:function(index,node){return(index=this.childNodes[index])?this.insertBefore(node,index):this.appendChild(node)},isLastVisible:function(){var result=this.data.isLast,next=this.nextSibling;if(!result&&this.getTreeStore().isFiltered()){for(;next;){if(next.data.visible)return!1;next=next.nextSibling}return!0}return result},
remove:function(erase,suppressEvents){var parentNode=this.parentNode;parentNode?parentNode.removeChild(this,erase,suppressEvents):erase&&this.erase(!0);return this},removeAll:function(erase,suppressEvents,fromParent){var childNodes=this.childNodes,len=childNodes.length,treeStore,i,removeRange=[];if(len){!fromParent&&(treeStore=this.getTreeStore())&&(treeStore.beginUpdate(),treeStore.suspendEvent('remove'),this.callTreeStore('beforeNodeRemove',[childNodes,!1,removeRange]));for(i=0;i<len;++i){var node=
childNodes[i];node.previousSibling=node.nextSibling=node.parentNode=null;this.fireBubbledEvent('remove',[this,node,!1]);erase?node.erase(!0):node.removeAll(!1,suppressEvents,!0)}!fromParent&&treeStore&&(treeStore.resumeEvent('remove'),this.callTreeStore('onNodeRemove',[childNodes,!1,removeRange]),treeStore.endUpdate());this.firstChild=this.lastChild=null;childNodes.length=0;fromParent||this.triggerUIUpdate();return this}},getChildAt:function(index){return this.childNodes[index]},replaceChild:function(newChild,
oldChild,suppressEvents){var s=oldChild?oldChild.nextSibling:null;this.removeChild(oldChild,!1,suppressEvents);this.insertBefore(newChild,s,suppressEvents);return oldChild},indexOf:function(child){return Ext.Array.indexOf(this.childNodes,child)},indexOfId:function(id){for(var childNodes=this.childNodes,len=childNodes.length,i=0;i<len;++i)if(childNodes[i].getId()===id)return i;return-1},getPath:function(field,separator){field=field||this.idProperty;separator=separator||'/';for(var path=[this.get(field)],
parent=this.parentNode;parent;)path.unshift(parent.get(field)),parent=parent.parentNode;return separator+path.join(separator)},getDepth:function(){return this.get('depth')},bubble:function(fn,scope,args){for(var p=this;p&&!1!==fn.apply(scope||p,args||[p]);)p=p.parentNode},cascade:function(before,scope,args,after){1!==arguments.length||Ext.isFunction(before)||(after=before.after,scope=before.scope,args=before.args,before=before.before);if(!before||!1!==before.apply(scope||this,args||[this])){var childNodes=
this.childNodes,length=childNodes.length,i;for(i=0;i<length;i++)childNodes[i].cascade.call(childNodes[i],before,scope,args,after);after&&after.apply(scope||this,args||[this])}},cascadeBy:function(){return this.cascade.apply(this,arguments)},eachChild:function(fn,scope,args){var childNodes=this.childNodes,length=childNodes.length,i;for(i=0;i<length&&!1!==fn.apply(scope||this,args||[childNodes[i]]);i++);},findChild:function(attribute,value,deep){return this.findChildBy(function(){return this.get(attribute)==
value},null,deep)},findChildBy:function(fn,scope,deep){for(var cs=this.childNodes,len=cs.length,i=0,n;i<len;i++)if(n=cs[i],!0===fn.call(scope||n,n)||deep&&(n=n.findChildBy(fn,scope,deep),null!==n))return n;return null},contains:function(node){return node.isAncestor(this)},isAncestor:function(node){for(var p=this.parentNode;p;){if(p===node)return!0;p=p.parentNode}return!1},sort:function(sortFn,recursive,suppressEvent){var childNodes=this.childNodes,ln=childNodes.length,i,info={isFirst:!0};if(0<ln){sortFn||
(sortFn=this.getTreeStore().getSortFn());Ext.Array.sort(childNodes,sortFn);this.setFirstChild(childNodes[0]);this.setLastChild(childNodes[ln-1]);for(i=0;i<ln;i++){var n=childNodes[i];n.previousSibling=childNodes[i-1];n.nextSibling=childNodes[i+1];info.isLast=i===ln-1;info.index=i;n.updateInfo(!1,info);info.isFirst=!1;recursive&&!n.isLeaf()&&n.sort(sortFn,!0,!0)}!0!==suppressEvent&&(this.fireBubbledEvent('sort',[this,childNodes]),this.callTreeStore('onNodeSort',[childNodes]))}},isExpanded:function(){return this.get('expanded')},
isLoaded:function(){return this.get('loaded')},isBranchLoaded:function(){var isBranchLoaded=!this.isLeaf()&&this.isLoaded();isBranchLoaded&&this.cascade(function(node){node.isLeaf()||(isBranchLoaded=isBranchLoaded||node.isBranchLoaded());return isBranchLoaded});return isBranchLoaded},isLoading:function(){return this.get('loading')},isRoot:function(){return!this.parentNode},isVisible:function(){for(var parent=this.parentNode;parent;){if(!parent.isExpanded())return!1;parent=parent.parentNode}return!0},
expand:function(recursive,callback,scope){var me=this;if(me.isLeaf())Ext.callback(callback,scope||me);else if(me.isLoading())me.on('expand',function(){me.expand(recursive,callback,scope)},me,{single:!0});else if(me.isExpanded())recursive?me.expandChildren(!0,callback,scope):Ext.callback(callback,scope||me,[me.childNodes]);else if(!1!==me.fireBubbledEvent('beforeexpand',[me])){if(recursive)if(me.parentNode&&me.parentNode.isSynchronousRecursiveExpand)me.isSynchronousRecursiveExpand=!0;else{var treeStore=
me.getTreeStore();if(treeStore.getProxy().isSynchronous||me.isBranchLoaded()){me.isSynchronousRecursiveExpand=!0;treeStore.suspendEvent('add','datachanged');var resumeAddEvent=!0}}me.callTreeStore('onBeforeNodeExpand',[me.onChildNodesAvailable,me,[recursive,callback,scope]]);resumeAddEvent&&(treeStore.resumeEvent('add','datachanged'),treeStore.fireEvent('datachanged',treeStore),treeStore.fireEvent('refresh',treeStore));me.isSynchronousRecursiveExpand=!1}},onChildNodesAvailable:function(records,recursive,
callback,scope){var treeStore=this.getTreeStore(),bulkUpdate=treeStore&&treeStore.bulkUpdate,ancestor,i,collapsedAncestors;Ext.suspendLayouts();for(ancestor=this.parentNode;ancestor;ancestor=ancestor.parentNode)ancestor.isExpanded()||(collapsedAncestors||(collapsedAncestors=[])).unshift(ancestor);bulkUpdate||!treeStore.isVisible(this)?this.data.expanded=!0:this.set('expanded',!0);if(collapsedAncestors){for(i=1;i<collapsedAncestors.length;i++)ancestor=collapsedAncestors[i],bulkUpdate||!treeStore.isVisible(ancestor)?
ancestor.data.expanded=!0:ancestor.set('expanded',!0);collapsedAncestors[0].expand();for(i=1;i<collapsedAncestors.length;i++)ancestor=collapsedAncestors[i],ancestor.fireBubbledEvent('expand',[ancestor,ancestor.childNodes])}else this.callTreeStore('onNodeExpand',[records,!1]);this.fireBubbledEvent('expand',[this,records]);recursive?this.expandChildren(!0,callback,scope):Ext.callback(callback,scope||this,[this.childNodes]);Ext.resumeLayouts(!0)},expandChildren:function(recursive,callback,scope,singleExpand){if(Ext.isBoolean(callback)){var origCallback=
callback;callback=scope;scope=singleExpand;singleExpand=origCallback}void 0===singleExpand&&(singleExpand=(origCallback=this.getTreeStore())&&origCallback.singleExpand);origCallback=this.childNodes;var expandNodes=[];var ln=singleExpand?Math.min(origCallback.length,1):origCallback.length;for(singleExpand=0;singleExpand<ln;++singleExpand){var node=origCallback[singleExpand];node.isLeaf()||(expandNodes[expandNodes.length]=node)}ln=expandNodes.length;for(singleExpand=0;singleExpand<ln;++singleExpand)expandNodes[singleExpand].expand(recursive);
callback&&Ext.callback(callback,scope||this,[this.childNodes])},collapse:function(recursive,callback,scope){var me=this,expanded=me.isExpanded(),treeStore=me.getTreeStore(),bulkUpdate=treeStore&&treeStore.bulkUpdate,len=me.childNodes.length,i;if(!me.isLeaf()&&(!expanded&&recursive||!1!==me.fireBubbledEvent('beforecollapse',[me]))){Ext.suspendLayouts();if(me.isExpanded())recursive?(recursive=function(){for(i=0;i<len;i++)me.childNodes[i].setCollapsed(!0)},callback=callback?Ext.Function.createSequence(recursive,
Ext.Function.bind(callback,scope,[me.childNodes])):recursive):callback&&(callback=Ext.Function.bind(callback,scope,[me.childNodes])),bulkUpdate||!treeStore.contains(me)?me.data.expanded=!1:me.set('expanded',!1),me.callTreeStore('onNodeCollapse',[me.childNodes,callback,scope]),me.fireBubbledEvent('collapse',[me,me.childNodes]),callback=null;else if(recursive)for(i=0;i<len;i++)me.childNodes[i].setCollapsed(!0);Ext.resumeLayouts(!0)}Ext.callback(callback,scope||me,[me.childNodes])},setCollapsed:function(recursive){var len=
this.childNodes.length;if(!this.isLeaf()&&!1!==this.fireBubbledEvent('beforecollapse',[this])&&(this.data.expanded=!1,this.fireBubbledEvent('collapse',[this,this.childNodes]),recursive))for(recursive=0;recursive<len;recursive++)this.childNodes[recursive].setCollapsed(!0)},collapseChildren:function(recursive,callback,scope){var i,allNodes=this.childNodes,ln=allNodes.length,collapseNodes=[];for(i=0;i<ln;++i){var node=allNodes[i];!node.isLeaf()&&node.isLoaded()&&node.isExpanded()&&collapseNodes.push(node)}if(ln=
collapseNodes.length)for(i=0;i<ln;++i)node=collapseNodes[i],i===ln-1?node.collapse(recursive,callback,scope):node.collapse(recursive);else Ext.callback(callback,scope)},fireEvent:function(eventName){return this.fireBubbledEvent(eventName,Ext.Array.slice(arguments,1))},fireBubbledEvent:function(eventName,args){var eventSource,topNode;if(bubbledEvents[eventName]){for(eventSource=this;!1!==result&&eventSource;eventSource=(topNode=eventSource).parentNode)var result=eventSource.fireEventArgs.call(eventSource,
eventName,args);!1!==result&&(eventSource=topNode.getTreeStore())&&eventSource.hasListeners&&eventSource.hasListeners[eventName='node'+eventName]&&(result=eventSource.fireEventArgs(eventName,args));return result}return this.fireEventArgs.apply(this,arguments)},serialize:function(writerParam){writerParam=writerParam||new Ext.data.writer.Json({writeAllFields:!0});var result=writerParam.getRecordData(this),childNodes=this.childNodes,len=childNodes.length,children,i;if(0<len)for(result.children=children=
[],i=0;i<len;i++)children.push(childNodes[i].serialize(writerParam));return result},callTreeStore:function(funcName,args){var target=this.getTreeStore();funcName=target&&target[funcName];target&&funcName&&(args=args||[],args[0]!==this&&args.unshift(this),funcName.apply(target,args))},addCls:function(cls){this.replaceCls(null,cls)},removeCls:function(cls){this.replaceCls(cls)},replaceCls:function(oldCls,newCls){var pieces=this._parseCls(this.data.cls);oldCls=this._parseCls(oldCls);oldCls.length&&(pieces=
Ext.Array.difference(pieces,oldCls));oldCls=this._parseCls(newCls);oldCls.length&&(pieces=Ext.Array.unique(pieces.concat(oldCls)));this.set('cls',pieces.join(' '))},toggleCls:function(cls,state){if(void 0===state){state=this._parseCls(this.data.cls);cls=this._parseCls(cls);var len=cls.length,i;for(i=0;i<len;++i){var p=cls[i];Ext.Array.contains(state,p)?Ext.Array.remove(state,p):state.push(p)}this.set('cls',state.join(' '))}else state?this.addCls(cls):this.removeCls(cls)},privates:{_noCls:[],spacesRe:/\s+/,
join:function(store){store.isTreeStore?this.isRoot()&&(this.treeStore=this.store=store):this.callParent([store])},callJoined:function(funcName,args){this.callParent([funcName,args]);this.callTreeStore(funcName,args)},_parseCls:function(cls){return cls?'string'===typeof cls?cls.split(this.spacesRe):cls:this._noCls}}}}}},0,0,0,0,0,0,[Ext.data,'NodeInterface'],0);
Ext.cmd.derive('Ext.mixin.Queryable',Ext.Base,{mixinId:'queryable',isQueryable:!0,query:function(selector){return Ext.ComponentQuery.query(selector||'*',this.getQueryRoot())},queryBy:function(fn,scope){for(var out=[],items=this.getQueryRoot().getRefItems(!0),i=0,len=items.length,item;i<len;++i)item=items[i],!1!==fn.call(scope||item,item)&&out.push(item);return out},queryById:function(id){return this.down(Ext.makeIdSelector(id))},child:function(selector){var children=this.getQueryRoot().getRefItems();
if(selector&&selector.isComponent)return this.matchById(children,selector.getItemId());selector&&(children=Ext.ComponentQuery.query(selector,children));return children.length?children[0]:null},down:function(selector){return selector&&selector.isComponent?this.matchById(this.getRefItems(!0),selector.getItemId()):this.query(selector||'')[0]||null},visitPreOrder:function(selector,fn,scope,extraArgs){Ext.ComponentQuery._visit(!0,selector,this.getQueryRoot(),fn,scope,extraArgs)},visitPostOrder:function(selector,
fn,scope,extraArgs){Ext.ComponentQuery._visit(!1,selector,this.getQueryRoot(),fn,scope,extraArgs)},getRefItems:function(){return[]},getQueryRoot:function(){return this},privates:{matchById:function(items,id){var len=items.length,i;for(i=0;i<len;++i){var item=items[i];if(item.getItemId()===id)return item}return null}}},0,0,0,0,0,0,[Ext.mixin,'Queryable'],0);
Ext.cmd.derive('Ext.data.TreeModel',Ext.data.Model,{getRefItems:function(){return this.childNodes},getRefOwner:function(){return this.parentNode},statics:{defaultProxy:'memory'}},0,0,0,0,0,[[Ext.mixin.Queryable.prototype.mixinId||Ext.mixin.Queryable.$className,Ext.mixin.Queryable]],[Ext.data,'TreeModel'],function(){Ext.data.NodeInterface.decorate(this)});
Ext.cmd.derive('Ext.data.Request',Ext.Base,{isDataRequest:!0,config:{action:void 0,params:void 0,method:'GET',url:null,operation:null,proxy:null,disableCaching:!1,headers:{},callbackKey:null,rawRequest:null,jsonData:void 0,xmlData:void 0,withCredentials:!1,username:null,password:null,binary:!1,callback:null,scope:null,timeout:3E4,records:null,directFn:null,args:null,useDefaultXhrHeader:null},constructor:function(config){this.initConfig(config)},getParam:function(key){var params=this.getParams();if(params)return params[key]},
setParam:function(key,value){var params=this.getParams()||{};params[key]=value;this.setParams(params)}},1,0,0,0,0,0,[Ext.data,'Request'],0);
Ext.cmd.derive('Ext.data.TreeStore',Ext.data.Store,{isTreeStore:!0,config:{root:null,rootVisible:!1,defaultRootProperty:'children',parentIdProperty:null,clearOnLoad:!0,clearRemovedOnLoad:!0,nodeParam:'node',defaultRootId:'root',defaultRootText:'Root',folderSort:!1,pageSize:null},filterer:'topdown',lazyFill:!1,fillCount:0,bulkUpdate:0,nodesToUnregister:0,_silentOptions:{silent:!0},implicitModel:'Ext.data.TreeModel',constructor:function(config){this.byIdMap={};Ext.data.Store.prototype.constructor.call(this,
config)},applyFields:function(fields,oldFields){fields&&this.defaultRootProperty!==this.self.prototype.config.defaultRootProperty&&(fields=fields.concat({name:this.defaultRootProperty,type:'auto',defaultValue:null,persist:!1}));Ext.data.Store.prototype.applyFields.call(this,fields,oldFields)},onSorterEndUpdate:function(){var me=this,sorters=me.getSorters().getRange(),rootNode=me.getRoot(),folderSort=me.getFolderSort();me.fireEvent('beforesort',me,sorters);rootNode&&(folderSort||sorters.length)?me.getRemoteSort()?
sorters.length&&me.load({callback:function(){me.fireEvent('sort',me,sorters)}}):(rootNode.sort(this.getSortFn(),!0),me.fireEvent('datachanged',me),me.fireEvent('refresh',me),me.fireEvent('sort',me,sorters)):me.fireEvent('sort',me,sorters)},updateFolderSort:function(folderSort){this.needsFolderSort=folderSort;this.onSorterEndUpdate()},getSortFn:function(){return this._sortFn||(this._sortFn=this.createSortFn())},createSortFn:function(){var me=this,sortersSortFn=this.sorters.getSortFn();return function(node1,
node2){var node1FolderOrder=0;if(me.needsFolderSort){node1FolderOrder=node1.data.leaf?1:0;var node2FolderOrder=node2.data.leaf?1:0;node1FolderOrder-=node2FolderOrder}me.needsIndexSort&&0===node1FolderOrder&&(node1FolderOrder=node1.data.index-node2.data.index);return node1FolderOrder||sortersSortFn(node1,node2)}},getTotalCount:function(){return this.getCount()},afterEdit:function(node,modifiedFieldNames){var parentNode=node.parentNode,rootVisible=this.getRootVisible();rootVisible=!parentNode&&!rootVisible;
var isVisible=node.get('visible');if(!rootVisible&&isVisible!==this.contains(node))if(isVisible){if(!parentNode||this.isVisible(node))rootVisible=[node],node.isExpanded()&&this.handleNodeExpand(node,node.childNodes,rootVisible),parentNode=node.previousSibling?this.indexOfPreviousVisibleNode(node.previousSibling):parentNode?this.indexOf(parentNode):-1,this.insert(parentNode+1,rootVisible)}else parentNode=this.indexOf(node),this.removeAt(parentNode,this.indexOfNextVisibleNode(node)-parentNode);else if(this.getRoot()&&
this.needsLocalFilter())this.onFilterEndUpdate(this.getFilters());Ext.data.Store.prototype.afterEdit.call(this,node,modifiedFieldNames)},afterReject:function(record){this.contains(record)&&(this.onUpdate(record,Ext.data.Model.REJECT,null),this.fireEvent('update',this,record,Ext.data.Model.REJECT,null))},afterCommit:function(record,modifiedFieldNames){modifiedFieldNames||(modifiedFieldNames=null);this.contains(record)&&(this.onUpdate(record,Ext.data.Model.COMMIT,modifiedFieldNames),this.fireEvent('update',
this,record,Ext.data.Model.COMMIT,modifiedFieldNames))},updateRootVisible:function(rootVisible){var rootNode=this.getRoot();if(rootNode){var data=this.getData();rootVisible?data.insert(0,rootNode):data.remove(rootNode)}},updateTrackRemoved:function(trackRemoved){Ext.data.Store.prototype.updateTrackRemoved.apply(this,arguments);this.removedNodes=this.removed;this.removed=null},onDestroyRecords:function(records,operation,success){success&&(this.removedNodes.length=0)},updateProxy:function(proxy){proxy&&
(proxy.setIdParam&&proxy.setIdParam(this.getNodeParam()),proxy=proxy.getReader(),Ext.isEmpty(proxy.getRootProperty())&&proxy.setRootProperty(this.getDefaultRootProperty()))},setProxy:function(proxy){this.changingProxy=!0;(arguments.callee.$previous||Ext.data.Store.prototype.setProxy).call(this,proxy);this.changingProxy=!1},updateModel:function(model){if(model){var isNode=model.prototype.isNode;Ext.data.NodeInterface.decorate(model);isNode||this.changingProxy||this.getProxy().getReader().buildExtractors(!0)}},
onCollectionFilter:Ext.emptyFn,onFilterEndUpdate:function(filters){var me=this,length=filters.length,root=me.getRoot();if(me.getRemoteFilter())Ext.data.Store.prototype.onFilterEndUpdate.call(this,filters);else{length?me.doFilter(root):root.cascade({after:function(node){node.set('visible',!0,me._silentOptions)}});if(length){var filteredNodes=[];var childNodes=root.childNodes;var i=0;for(length=childNodes.length;i<length;i++){var childNode=childNodes[i];childNode.get('visible')&&filteredNodes.push(childNode)}}else filteredNodes=
root.childNodes;me.onNodeFilter(root,filteredNodes);root.fireEvent('filterchange',root,filteredNodes);me.suppressNextFilter=!0;Ext.data.Store.prototype.onFilterEndUpdate.call(this,filters);me.suppressNextFilter=!1}},onNodeFilter:function(root,childNodes){var data=this.getData(),toAdd=[];this.getRootVisible()&&root.get('visible')&&toAdd.push(root);this.handleNodeExpand(root,childNodes,toAdd);this.suspendEvents();data.splice(0,data.getCount(),toAdd);this.resumeEvents();this.suppressNextFilter||(this.fireEvent('datachanged',
this),this.fireEvent('refresh',this))},onBeforeNodeExpand:function(node,callback,scope,args){var me=this,nodeProxy;if(node.isLoaded()){var callbackArgs=[node.childNodes];args&&callbackArgs.push.apply(callbackArgs,args);Ext.callback(callback,scope||node,callbackArgs)}else if(node.isLoading())me.on('load',function(){callbackArgs=[node.childNodes];args&&callbackArgs.push.apply(callbackArgs,args);Ext.callback(callback,scope||node,callbackArgs)},me,{single:!0,priority:1001});else{var storeReader=me.getProxy().getReader();
storeReader=(nodeProxy=(nodeProxy=node.getProxy())?nodeProxy.getReader():null)&&nodeProxy.initialConfig.rootProperty?nodeProxy:storeReader;(nodeProxy=storeReader.getRoot(node.raw||node.data))||node.phantom&&!node.isRoot()?(nodeProxy&&me.fillNode(node,storeReader.extractData(nodeProxy,{model:node.childType,recordCreator:me.recordCreator})),callbackArgs=[node.childNodes],args&&callbackArgs.push.apply(callbackArgs,args),Ext.callback(callback,scope||node,callbackArgs)):(me.read({node:node,onChildNodesAvailable:function(){delete me.lastOptions.onChildNodesAvailable;
callbackArgs=[node.childNodes];args&&callbackArgs.push.apply(callbackArgs,args);Ext.callback(callback,scope||node,callbackArgs)}}),me.flushLoad())}},onNodeExpand:function(parent,records){var insertIndex=this.indexOf(parent)+1,toAdd=[];this.handleNodeExpand(parent,records,toAdd);this.refreshCounter||!parent.isRoot()||parent.get('visible')?this.insert(insertIndex,toAdd):this.loadRecords(toAdd)},handleNodeExpand:function(parent,records,toAdd){var ln=records?records.length:0;if((parent===this.getRoot()||
this.isVisible(parent))&&ln)for(parent=0;parent<ln;parent++){var record=records[parent];record.get('visible')&&(toAdd.push(record),record.isExpanded()&&(record.isLoaded()?this.handleNodeExpand(record,record.childNodes,toAdd):(record.set('expanded',!1),record.expand())))}},onNodeCollapse:function(parent,records,callback,scope){var collapseIndex=this.indexOf(parent)+1;this.needsLocalFilter()&&(records=Ext.Array.filter(records,this.filterVisible));records.length&&this.isVisible(parent)&&(parent=this.indexOfNextVisibleNode(parent),
this.removeAt(collapseIndex,parent-collapseIndex));Ext.callback(callback,scope)},indexOfNextVisibleNode:function(node){for(var result;node.parentNode;){for(result=node.nextSibling;result&&!result.get('visible');result=result.nextSibling);if(result)return this.indexOf(result);node=node.parentNode}return this.getCount()},indexOfPreviousVisibleNode:function(node){var result;for(result=node;result&&!result.get('visible');result=result.previousSibling);if(result){if(result.isExpanded()&&result.lastChild)return this.indexOfPreviousVisibleNode(result.lastChild)}else result=
node.parentNode;return this.indexOf(result)},filterNew:function(item){return!item.get('root')&&Ext.data.Store.prototype.filterNew.call(this,item)},filterRejects:function(item){return!item.get('root')&&Ext.data.Store.prototype.filterRejects.call(this,item)},getNewRecords:function(){return Ext.Array.filter(Ext.Object.getValues(this.byIdMap),this.filterNew,this)},getRejectRecords:function(){return Ext.Array.filter(Ext.Object.getValues(this.byIdMap),this.filterRejects,this)},getUpdatedRecords:function(){return Ext.Array.filter(Ext.Object.getValues(this.byIdMap),
this.filterUpdated)},beforeNodeRemove:function(parentNode,childNodes,isMove,removeRange){Ext.isArray(childNodes)||(childNodes=[childNodes]);var me=this;parentNode=childNodes.length;var removed=me.removedNodes,i,startNode;for(i=0;!startNode&&i<parentNode;i++)childNodes[i].get('visible')&&(startNode=childNodes[i]);startNode?(removeRange[0]=me.indexOf(childNodes[0]),removeRange[1]=me.indexOfNextVisibleNode(childNodes[childNodes.length-1])-removeRange[0]):(removeRange[0]=-1,removeRange[1]=0);for(i=0;i<
parentNode;i++)childNodes[i].cascade(function(node){me.unregisterNode(node,!0);!removed||isMove||node.phantom||node.erasing||me.loading||(node.removedFrom=me.indexOf(node),removed.push(node),me.needsSync=!0)})},afterDrop:Ext.emptyFn,onNodeRemove:function(parentNode,childNodes,isMove,removeRange){this.suspendAutoSync();-1!==removeRange[0]&&(this.removeIsMove=isMove,this.removeAt.apply(this,removeRange),this.removeIsMove=!1);this.resumeAutoSync()},onNodeAppend:function(parent,node,index){this.onNodeInsert(parent,
node,index)},onNodeInsert:function(parent,node,index){var data=node.raw||node.data,removed=this.removedNodes;parent&&this.needsLocalFilter()&&this.doFilter(parent);this.beginUpdate();if(this.isVisible(node)&&(parent=0!==index&&node.previousSibling?this.indexOfPreviousVisibleNode(node.previousSibling):this.indexOf(parent),this.insert(parent+1,node),!node.isLeaf()&&node.isExpanded()))if(node.isLoaded())this.onNodeExpand(node,node.childNodes);else this.fillCount||(node.set('expanded',!1),node.expand());
Ext.Array.remove(removed,node);this.needsSync=this.needsSync||node.phantom||node.dirty;node.isLeaf()||node.isLoaded()||this.lazyFill||(removed=this.getProxy().getReader(),removed=(parent=(parent=node.getProxy())?parent.getReader():null)&&parent.initialConfig.rootProperty?parent:removed,(data=removed.getRoot(data))&&this.fillNode(node,removed.extractData(data,{model:node.childType,recordCreator:this.recordCreator})));this.endUpdate()},registerNode:function(node,includeChildren){var was=this.byIdMap[node.id];
this.byIdMap[node.id]=node;if(node.onRegisterTreeNode&&node!==was)node.onRegisterTreeNode(this);node.onUnregisterTreeNode&&this.nodesToUnregister++;if(!0===includeChildren)for(node=node.childNodes,includeChildren=node.length,was=0;was<includeChildren;was++)this.registerNode(node[was],!0)},unregisterNode:function(node,includeChildren){var was=this.byIdMap[node.id],i;delete this.byIdMap[node.id];if(!0===includeChildren){includeChildren=node.childNodes;var length=includeChildren.length;for(i=0;i<length;i++)this.unregisterNode(includeChildren[i],
!0)}node.onUnregisterTreeNode&&node===was&&(node.onUnregisterTreeNode(this),this.nodesToUnregister--)},onNodeSort:function(node,childNodes){this.suspendAutoSync();if(-1!==this.indexOf(node)&&node.isExpanded()||node===this.getRoot()&&!this.getRootVisible())Ext.suspendLayouts(),this.onNodeCollapse(node,childNodes),this.onNodeExpand(node,childNodes),Ext.resumeLayouts(!0);this.resumeAutoSync(this.autoSync)},applyRoot:function(newRoot){var Model=this.getModel(),idProperty=Model.prototype.idProperty,defaultRootId=
this.getDefaultRootId();newRoot&&!newRoot.isNode&&(newRoot=Ext.apply({text:this.getDefaultRootText(),root:!0,isFirst:!0,isLast:!0,depth:0,index:0,parentId:null,allowDrag:!1},newRoot),defaultRootId&&void 0===newRoot[idProperty]&&(newRoot[idProperty]=defaultRootId),newRoot=new Model(newRoot));return newRoot},updateRoot:function(newRoot,oldRoot){var initial=!oldRoot,removeRange=[];this.getTrackRemoved();this.suspendEvent('add','remove');if(oldRoot&&oldRoot.isModel){var oldOwner=this.getRootVisible()?
[oldRoot]:oldRoot.childNodes;this.beforeNodeRemove(null,oldOwner,!1,removeRange);oldRoot.set('root',!1);this.onNodeRemove(null,oldOwner,!1,removeRange);oldRoot.fireEvent('remove',null,oldRoot,!1);oldRoot.fireEvent('rootchange',null);oldRoot.clearListeners();oldRoot.store=oldRoot.treeStore=null;this.unregisterNode(oldRoot)}this.getData().clear();if(newRoot)if(!1===newRoot.fireEventArgs('beforeappend',[null,newRoot]))newRoot=null;else{if(oldOwner=newRoot.parentNode){if(!oldOwner.removeChild(newRoot,
!1,!1,oldOwner.getTreeStore()===this))return}else(oldOwner=newRoot.getTreeStore())&&oldOwner!==this&&newRoot===oldOwner.getRoot()&&oldOwner.setRoot(null);newRoot.store=newRoot.treeStore=this;newRoot.set('root',!0);newRoot.updateInfo(!0,{isFirst:!0,isLast:!0,depth:0,index:0,parentId:null});this.registerNode(newRoot,!0);newRoot.fireEvent('append',null,newRoot,!1);newRoot.fireEvent('rootchange',newRoot);this.onNodeAppend(null,newRoot,0);newRoot.phantom=!0}this.fireEvent('rootchange',newRoot,oldRoot);
newRoot&&(this.getAutoLoad()||newRoot.isExpanded())?newRoot.isLoaded()?(this.onNodeExpand(newRoot,newRoot.childNodes),this.fireEvent('datachanged',this),this.fireEvent('refresh',this)):(newRoot.data.expanded=!1,newRoot.expand(!1),newRoot.isLoaded&&!this.getProxy().isSynchronous&&(this.fireEvent('datachanged',this),this.fireEvent('refresh',this))):initial||(this.fireEvent('datachanged',this),this.fireEvent('refresh',this));this.resumeEvent('add','remove')},doDestroy:function(){var me=this,root=me.getRoot();
root&&me.nodesToUnregister&&root.cascade(function(node){if(node.onUnregisterTreeNode)node.onUnregisterTreeNode(me)});Ext.data.Store.prototype.doDestroy.call(this)},each:function(fn,scope,bypassFilters){var i=0;if(bypassFilters&&'object'===typeof bypassFilters){var includeCollapsed=bypassFilters.collapsed;bypassFilters=bypassFilters.filtered}if(includeCollapsed)this.getRoot().cascade(function(node){if(!0===bypassFilters||node.get('visible'))return fn.call(scope||node,node,i++)});else return Ext.data.Store.prototype.each.call(this,
fn,scope,bypassFilters)},collect:function(dataIndex,allowNull,bypassFilters){var map={},result=[],strValue,value;if(allowNull&&'object'===typeof allowNull){var includeCollapsed=allowNull.collapsed;bypassFilters=allowNull.filtered;allowNull=allowNull.allowNull}includeCollapsed||bypassFilters?this.getRoot().cascade(function(node){if(!0===bypassFilters||node.get('visible'))value=node.get(dataIndex),strValue=String(value),!allowNull&&Ext.isEmpty(value)||map[strValue]||(map[strValue]=1,result.push(value));
if(!includeCollapsed&&!node.isExpanded())return!1}):result=Ext.data.Store.prototype.collect.call(this,dataIndex,allowNull,bypassFilters);return result},getNodeById:function(id){return this.byIdMap[id]||null},findNode:function(property,value,startsWith,endsWith,ignoreCase){if(Ext.isEmpty(value,!1))return null;if(property===this.model.idProperty&&3>arguments.length)return this.byIdMap[value];var regex=Ext.String.createRegex(value,startsWith,endsWith,ignoreCase),result=null;Ext.Object.eachValue(this.byIdMap,
function(node){if(node&&regex.test(node.get(property)))return result=node,!1});return result},load:function(options){var node=options&&options.node;if(!node&!(node=this.getRoot()))this.setRoot({expanded:!0});else if(!node.isLoading())return Ext.data.Store.prototype.load.call(this,options)},reload:function(options){options=Ext.apply({},options,this.lastOptions);options.node=this.getRoot();return this.load(options)},flushLoad:function(){var options=this.pendingLoadOptions,node,clearOnLoad=this.getClearOnLoad();
this.clearLoadTask();if(options){var isRootLoad=(node=options.node||this.getRoot())&&node.isRoot();var callback=options.callback;var scope=options.scope;options.params=options.params||{};node.data.expanded&&!isRootLoad&&(node.data.loaded=!1,clearOnLoad&&(node.data.expanded=!1),options.callback=function(loadedNodes,operation,success){clearOnLoad||node.collapse();node.expand();Ext.callback(callback,scope,[loadedNodes,operation,success])});options.id=node.getId();this.setLoadOptions(options);this.getRemoteSort()&&
options.sorters&&this.fireEvent('beforesort',this,options.sorters);options=Ext.apply({node:options.node||node,internalScope:this,internalCallback:this.onProxyLoad},options);this.lastOptions=Ext.apply({},options);options.isRootLoad=isRootLoad;options=this.createOperation('read',options);if(!1!==this.fireEvent('beforeload',this,options)){this.loading=!0;if(isRootLoad){if(this.getClearRemovedOnLoad()&&(this.removedNodes.length=0),clearOnLoad){this.unregisterNode(node,!0);node.clear(!1,!0);this.registerNode(node);
var doClear=!0}}else this.getTrackRemoved()&&this.getClearRemovedOnLoad()&&this.clearRemoved(node),clearOnLoad&&node.removeAll(!1);this.loading&&node&&node.set('loading',!0);doClear&&(this.clearData(!0),this.getRootVisible()&&(this.suspendEvents(),this.add(node),this.resumeEvents()));options.execute()}return this}},onProxyLoad:function(operation){var options=operation.initialConfig,successful=operation.wasSuccessful(),records=operation.getRecords(),node=options.node,isRootLoad=options.isRootLoad,
scope=operation.getScope()||this,args=[records,operation,successful];this.destroyed||(this.loading=!1,node.set('loading',!1),successful&&(++this.loadCount,this.getClearOnLoad()||(records=this.cleanRecords(node,records)),this.getParentIdProperty()&&(records=this.treeify(node,records)),isRootLoad&&this.suspendEvent('add','update'),records=this.fillNode(node,records)),Ext.callback(options.onChildNodesAvailable,scope,args),isRootLoad&&(this.resumeEvent('add','update'),this.callObservers('BeforePopulate'),
this.fireEvent('datachanged',this),this.fireEvent('refresh',this),this.callObservers('AfterPopulate')),this.fireEvent('load',this,records,successful,operation,node))},clearRemoved:function(node){var removed=this.removedNodes,id=node.getId(),removedLength=removed.length,i=removedLength,recordsToClear={},newRemoved=[],removedHash={},targetNode;if(node===this.getRoot())this.removedNodes.length=0;else{for(;i--;)node=removed[i],removedHash[node.getId()]=node;for(i=removedLength;i--;){for(targetNode=node=
removed[i];targetNode&&targetNode.getId()!==id;){var targetId=targetNode.get('parentId')||targetNode.get('lastParentId');targetNode=targetNode.parentNode||this.getNodeById(targetId)||removedHash[targetId]}targetNode&&(recordsToClear[node.getId()]=node)}for(i=0;i<removedLength;i++)node=removed[i],recordsToClear[node.getId()]||newRemoved.push(node);this.removedNodes=newRemoved}},fillNode:function(node,newNodes){var newNodeCount=newNodes?newNodes.length:0;1===++this.bulkUpdate&&this.suspendEvent('datachanged');
newNodeCount&&this.setupNodes(newNodes);1===this.bulkUpdate?node.set('loaded',!0):node.data.loaded=!0;newNodes.length&&node.appendChild(newNodes,void 0,!0);--this.bulkUpdate||this.resumeEvent('datachanged');return newNodes},setupNodes:function(newNodes){var sorters=this.getSorters(),needsIndexSort=!1,newNodeCount=newNodes.length;sorters=this.sortOnLoad&&1<newNodeCount&&!this.getRemoteSort()&&this.getFolderSort()||sorters.length;var performLocalFilter=this.needsLocalFilter(),i;performLocalFilter&&
this.doFilter(newNodes[0]);for(i=1;i<newNodeCount;i++){needsIndexSort=newNodes[i];var node2=newNodes[i-1];performLocalFilter&&this.doFilter(needsIndexSort);needsIndexSort=needsIndexSort.data.index!==node2.data.index}sorters?(this.needsIndexSort=!0,Ext.Array.sort(newNodes,this.getSortFn()),this.needsIndexSort=!1):needsIndexSort&&Ext.Array.sort(newNodes,this.sortByIndex)},beginFill:function(){this.fillCount++||(this.beginUpdate(),this.suspendEvent('add','update'),this.suspendAutoSync(),this.fillArray=
[])},endFill:function(parent,nodes){parent=this.fillArray;var len;parent.push(nodes);if(!--this.fillCount){this.resumeAutoSync();this.resumeEvent('add','update');nodes=0;for(len=parent.length;nodes<len;nodes++){var index=this.indexOf(parent[nodes][0]);-1!==index&&this.fireEvent('add',this,parent[nodes],index)}this.fillArray=null;this.endUpdate()}},sortByIndex:function(node1,node2){return node1.data.index-node2.data.index},onIdChanged:function(node,oldId,newId){var childNodes=node.childNodes,len=childNodes&&
childNodes.length,i;Ext.data.Store.prototype.onIdChanged.apply(this,arguments);delete this.byIdMap[oldId];this.byIdMap[newId]=node;for(i=0;i<len;i++)childNodes[i].set('parentId',newId)},treeify:function(parentNode,records){var loadParentNodeId=parentNode.getId(),parentIdProperty=this.getParentIdProperty(),len=records.length;parentNode=[];var nodeMap={},i,id;for(i=0;i<len;i++){var node=records[i];node.data.depth=1;nodeMap[node.id]=node}for(i=0;i<len;i++){node=records[i];var parentId=node.data[parentIdProperty];
!parentId&&0!==parentId||parentId===loadParentNodeId?parentNode.push(node):(parentId=nodeMap[parentId],parentId.$children=parentId.$children||[],parentId.$children.push(node),node.data.depth=parentId.data.depth+1)}for(id in nodeMap){node=nodeMap[id];if(records=node.$children)delete node.$children,this.setupNodes(records),node.appendChild(records);this.registerNode(node)}this.setupNodes(parentNode);return parentNode},cleanRecords:function(node,records){var nodeHash={},childNodes=node.childNodes;node=
0;for(var len=childNodes.length,out=[];node<len;++node)nodeHash[childNodes[node].getId()]=!0;node=0;for(len=records.length;node<len;++node)childNodes=records[node],nodeHash[childNodes.getId()]||out.push(childNodes);return out},removeAll:function(){this.suspendEvents();this.setRoot(null);this.resumeEvents();Ext.data.Store.prototype.removeAll.call(this)},doSort:function(sorterFn){this.getRemoteSort()?this.load():(this.tree.sort(sorterFn,!0),this.fireEvent('datachanged',this),this.fireEvent('refresh',
this));this.fireEvent('sort',this,this.sorters.getRange())},filterVisible:function(node){return node.get('visible')},isVisible:function(node){for(var parentNode=node.parentNode,visible=node.data.visible,root=this.getRoot();visible&&parentNode;)visible=parentNode.data.expanded&&parentNode.data.visible,parentNode=parentNode.parentNode;return visible&&!(node===root&&!this.getRootVisible())},commitChanges:function(){var removed=this.removedNodes;removed&&(removed.length=0);Ext.data.Store.prototype.commitChanges.call(this)},
getRootNode:function(){return this.getRoot()},setRootNode:function(root){this.setRoot(root);return this.getRoot()},privates:{fireChangeEvent:function(record){return!!this.byIdMap[record.id]},getRawRemovedRecords:function(){return this.removedNodes},createOperation:function(type,options){var node=options.node,proxy;this.useModelProxy&&node&&node!==this.getRootNode()&&(proxy=node.getProxy());return proxy&&proxy!==this.getProxy()?proxy.createOperation(type,options):Ext.data.Store.prototype.createOperation.call(this,
type,options)},recordCreator:function(data,Model){return new Model(data)},doFilter:function(node){this.filterNodes(node,this.getFilters().getFilterFn(),!0)},filterNodes:function(node,filterFn,parentVisible){var bottomUpFiltering='bottomup'===this.filterer;parentVisible=filterFn(node)&&parentVisible||node.isRoot()&&!this.getRootVisible();var childNodes=node.childNodes,len=childNodes&&childNodes.length,i;if(len){for(i=0;i<len;++i)var matchingChildren=this.filterNodes(childNodes[i],filterFn,parentVisible||
bottomUpFiltering)||matchingChildren;bottomUpFiltering&&(parentVisible=matchingChildren||parentVisible)}node.set('visible',parentVisible,this._silentOptions);return parentVisible},needsLocalFilter:function(){return!this.getRemoteFilter()&&this.getFilters().length},onRemoteFilterSet:function(filters,remoteFilter){this.getData().setFilters(null);if(filters)filters.on('endupdate',this.onFilterEndUpdate,this)},onRemoteSortSet:function(sorters,remoteSort){this.getData().setSorters(null);if(sorters)sorters.on('endupdate',
this.onSorterEndUpdate,this)}},deprecated:{5:{properties:{tree:null}}}},1,0,0,0,['store.tree'],0,[Ext.data,'TreeStore'],0);
Ext.cmd.derive('Ext.data.Validation',Ext.data.Model,{isValidation:!0,syncGeneration:0,attach:function(record){this.record=record;this.isBase=record.self===Ext.data.Model;delete this.data.id},getValidation:function(){return null},isValid:function(){this.syncGeneration!==this.record.generation&&this.refresh();return!this.dirty},refresh:function(force){if(!this.isBase){var data=this.data,record=this.record,fields=record.fields,generation=record.generation,recordData=record.data,sep=record.validationSeparator,
values=null,currentValue,len;if(force||this.syncGeneration!==generation){this.syncGeneration=generation;var i=0;for(len=fields.length;i<len;++i){var field=fields[i];var name=field.name;var val=recordData[name];force=field.defaultInvalidMessage;generation=0;name in data?currentValue=data[name]:data[name]=currentValue=!0;field.validate!==Ext.emptyFn&&(field=field.validate(val,sep,null,record),!0!==field&&(generation=field||force));generation||(generation=!0);generation!==currentValue&&((values||(values=
{}))[name]=generation)}values&&this.set(values)}}}},0,0,0,0,0,0,[Ext.data,'Validation'],0);
Ext.cmd.derive('Ext.dom.Helper',Ext.Base,function(){var bbValues=['BeforeBegin','previousSibling'],aeValues=['AfterEnd','nextSibling'],bb_ae_PositionHash={beforebegin:bbValues,afterend:aeValues},fullPositionHash={beforebegin:bbValues,afterend:aeValues,afterbegin:['AfterBegin','firstChild'],beforeend:['BeforeEnd','lastChild']};return{singleton:!0,alternateClassName:['Ext.DomHelper','Ext.core.DomHelper'],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,attributeTransform:{cls:'class',htmlFor:'for'},closeTags:{},detachedDiv:document.createElement('div'),decamelizeName:function(){function decamel(match,p1,p2){return p1+'-'+p2.toLowerCase()}var camelCaseRe=/([a-z])([A-Z])/g,cache={};return function(s){return cache[s]||(cache[s]=s.replace(camelCaseRe,decamel))}}(),generateMarkup:function(spec,buffer){var specType=typeof spec,attr;if('string'===specType||'number'===specType)buffer.push(spec);else if(Ext.isArray(spec))for(attr=0;attr<spec.length;attr++)spec[attr]&&
this.generateMarkup(spec[attr],buffer);else{specType=spec.tag||'div';buffer.push('\x3c',specType);for(attr in spec)if(spec.hasOwnProperty(attr)){var val=spec[attr];void 0===val||this.confRe.test(attr)||(val&&val.join&&(val=val.join(' ')),'object'===typeof val?(buffer.push(' ',attr,'\x3d"'),this.generateStyles(val,buffer,!0).push('"')):buffer.push(' ',this.attributeTransform[attr]||attr,'\x3d"',val,'"'))}this.emptyTags.test(specType)?buffer.push('/\x3e'):(buffer.push('\x3e'),(val=spec.tpl)&&val.applyOut(spec.tplData,
buffer),(val=spec.html)&&buffer.push(val),(val=spec.cn||spec.children)&&this.generateMarkup(val,buffer),spec=this.closeTags,buffer.push(spec[specType]||(spec[specType]='\x3c/'+specType+'\x3e')))}return buffer},generateStyles:function(styles,buffer,encode){var a=buffer||[];for(name in styles)if(styles.hasOwnProperty(name)){var val=styles[name];var name=this.decamelizeName(name);encode&&Ext.String.hasHtmlCharacters(val)&&(val=Ext.String.htmlEncode(val));a.push(name,':',val,';')}return buffer||a.join('')},
markup:function(spec){return'string'===typeof spec?spec:this.generateMarkup(spec,[]).join('')},applyStyles:function(el,styles){Ext.fly(el).applyStyles(styles)},createContextualFragment:function(html){var div=this.detachedDiv,fragment=document.createDocumentFragment();div.innerHTML=html;div=div.childNodes;for(html=div.length;html--;)fragment.appendChild(div[0]);return fragment},createDom:function(o,parentNode){o=this.markup(o);parentNode=this.detachedDiv;parentNode.innerHTML=o;o=parentNode.firstChild;
return Ext.supports.ChildContentClearedWhenSettingInnerHTML?o.cloneNode(!0):o},insertHtml:function(where,el,html){var frag;where=where.toLowerCase();if(el.insertAdjacentHTML){if(this.ieInsertHtml&&(frag=this.ieInsertHtml(where,el,html)))return frag;if(where=fullPositionHash[where])return el.insertAdjacentHTML(where[0],html),el[where[1]]}else{3===el.nodeType&&(where='afterbegin'===where?'beforebegin':where,where='beforeend'===where?'afterend':where);var range=Ext.supports.CreateContextualFragment?
el.ownerDocument.createRange():void 0;var setStart='setStart'+(this.endRe.test(where)?'After':'Before');if(bb_ae_PositionHash[where])return range?(range[setStart](el),frag=range.createContextualFragment(html)):frag=this.createContextualFragment(html),el.parentNode.insertBefore(frag,'beforebegin'===where?el:el.nextSibling),el[('beforebegin'===where?'previous':'next')+'Sibling'];var rangeEl=('afterbegin'===where?'first':'last')+'Child';if(el.firstChild){if(range)try{range[setStart](el[rangeEl]),frag=
range.createContextualFragment(html)}catch(e){frag=this.createContextualFragment(html)}else frag=this.createContextualFragment(html);'afterbegin'===where?el.insertBefore(frag,el.firstChild):el.appendChild(frag)}else el.innerHTML=html;return el[rangeEl]}},insertBefore:function(el,o,returnElement){return this.doInsert(el,o,returnElement,'beforebegin')},insertAfter:function(el,o,returnElement){return this.doInsert(el,o,returnElement,'afterend')},insertFirst:function(el,o,returnElement){return this.doInsert(el,
o,returnElement,'afterbegin')},append:function(el,o,returnElement){return this.doInsert(el,o,returnElement,'beforeend')},overwrite:function(el,html,returnElement){var newNode;el=Ext.getDom(el);html=this.markup(html);this.ieOverwrite&&(newNode=this.ieOverwrite(el,html));newNode||(el.innerHTML=html,newNode=el.firstChild);return returnElement?Ext.get(newNode):newNode},doInsert:function(el,o,returnElement,where){el=el.dom||Ext.getDom(el);'innerHTML'in el?o=this.insertHtml(where,el,this.markup(o)):(o=
this.createDom(o,null),3===el.nodeType&&(where='afterbegin'===where?'beforebegin':where,where='beforeend'===where?'afterend':where),bb_ae_PositionHash[where]?el.parentNode.insertBefore(o,'beforebegin'===where?el:el.nextSibling):el.firstChild&&'afterbegin'===where?el.insertBefore(o,el.firstChild):el.appendChild(o));return returnElement?Ext.get(o):o},createTemplate:function(o){o=this.markup(o);return new Ext.Template(o)},createHtml:function(spec){return this.markup(spec)}}},0,0,0,0,0,0,[Ext.dom,'Helper',
Ext,'DomHelper',Ext.core,'DomHelper'],0);
Ext.define('Ext.overrides.dom.Helper',function(){var tableRe=/^(?:table|thead|tbody|tr|td)$/i,tableElRe=/td|tr|tbody|thead/i;return{override:'Ext.dom.Helper',ieInsertHtml:function(where,el,html){var frag=null;Ext.isIE9m&&tableRe.test(el.tagName)&&(frag=this.insertIntoTable(el.tagName.toLowerCase(),where,el,html));return frag},ieOverwrite:function(el,html){if(Ext.isIE9m&&tableRe.test(el.tagName)){for(;el.firstChild;)el.removeChild(el.firstChild);if(html)return this.insertHtml('afterbegin',el,html)}},
ieTable:function(depth,openingTags,htmlContent,closingTags){var i=-1,el=this.detachedDiv;for(el.innerHTML=[openingTags,htmlContent,closingTags].join('');++i<depth;)el=el.firstChild;if(depth=el.nextSibling)for(depth=el,el=document.createDocumentFragment();depth;)openingTags=depth.nextSibling,el.appendChild(depth),depth=openingTags;return el},insertIntoTable:function(tag,where,destinationEl,html){var bb='beforebegin'===where,ab='afterbegin'===where,be='beforeend'===where,ae='afterend'===where;if('td'===
tag&&(ab||be)||!tableElRe.test(tag)&&(bb||ae))return null;where=bb?destinationEl:ae?destinationEl.nextSibling:ab?destinationEl.firstChild:null;if(bb||ae)destinationEl=destinationEl.parentNode;tag='td'===tag||'tr'===tag&&(be||ab)?this.ieTable(4,'\x3ctable\x3e\x3ctbody\x3e\x3ctr\x3e',html,'\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e'):('tbody'===tag||'thead'===tag)&&(be||ab)||'tr'===tag&&(bb||ae)?this.ieTable(3,'\x3ctable\x3e\x3ctbody\x3e',html,'\x3c/tbody\x3e\x3c/table\x3e'):this.ieTable(2,'\x3ctable\x3e',
html,'\x3c/table\x3e');destinationEl.insertBefore(tag,where);return tag}}}());
Ext.cmd.derive('Ext.data.validator.Bound',Ext.data.validator.Validator,{type:'bound',config:{min:void 0,max:void 0,emptyMessage:'Must be present',minOnlyMessage:null,maxOnlyMessage:null,bothOnlyMessage:null},constructor:function(){this.preventConfigure=!0;Ext.data.validator.Validator.prototype.constructor.apply(this,arguments);delete this.preventConfigure;this.configure()},setConfig:function(){this.preventConfigure=!0;this.callParent(arguments);delete this.preventConfigure;this.configure()},configure:function(){if(!this.preventConfigure){var min=
this.getMin();var max=this.getMax();var hasMin=this.hasMin=void 0!==min;var hasMax=this.hasMax=void 0!==max;hasMin&&hasMax?this._bothMsg=Ext.String.format(this.getBothMessage(),min,max):hasMin?this._minMsg=Ext.String.format(this.getMinOnlyMessage(),min):hasMax&&(this._maxMsg=Ext.String.format(this.getMaxOnlyMessage(),max))}},updateMin:function(){this.configure()},updateMax:function(){this.configure()},updateMinOnlyMessage:function(v){this.configure()},updateMaxOnlyMessage:function(){this.configure()},
updateBothMessage:function(){this.configure()},validate:function(value){var hasMin=this.hasMin,hasMax=this.hasMax,min=this.getMin(),max=this.getMax(),msg=this.validateValue(value);if(!0!==msg)return msg;value=this.getValue(value);if(hasMin&&hasMax){if(value<min||value>max)msg=this._bothMsg}else hasMin?value<min&&(msg=this._minMsg):hasMax&&value>max&&(msg=this._maxMsg);return msg},validateValue:function(value){return void 0===value||null===value?this.getEmptyMessage():!0},getValue:Ext.identityFn},
1,0,0,0,['data.validator.bound'],0,[Ext.data.validator,'Bound'],0);Ext.cmd.derive('Ext.data.validator.Format',Ext.data.validator.Validator,{type:'format',config:{message:'Is in the wrong format',matcher:void 0},validate:function(value){var matcher=this.getMatcher();return(value=matcher&&matcher.test(value))?value:this.getMessage()}},0,0,0,0,['data.validator.format'],0,[Ext.data.validator,'Format'],0);
Ext.cmd.derive('Ext.data.validator.Email',Ext.data.validator.Format,{type:'email',config:{message:'Is not a valid email address',matcher:/^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+\/=?\^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/}},0,0,0,0,['data.validator.email'],0,[Ext.data.validator,'Email'],0);
Ext.cmd.derive('Ext.data.validator.List',Ext.data.validator.Validator,{type:'list',config:{list:null},inclusion:null,validate:function(value){value=Ext.Array.contains(this.getList(),value);var inclusion=this.inclusion;return inclusion&&value||!inclusion&&!value||this.getMessage()}},0,0,0,0,['data.validator.list'],0,[Ext.data.validator,'List'],0);
Ext.cmd.derive('Ext.data.validator.Exclusion',Ext.data.validator.List,{type:'exclusion',config:{message:'Is a value that has been excluded'},inclusion:!1},0,0,0,0,['data.validator.exclusion'],0,[Ext.data.validator,'Exclusion'],0);Ext.cmd.derive('Ext.data.validator.Inclusion',Ext.data.validator.List,{type:'inclusion',config:{message:'Is not in the list of acceptable values'},inclusion:!0},0,0,0,0,['data.validator.inclusion'],0,[Ext.data.validator,'Inclusion'],0);
Ext.cmd.derive('Ext.data.validator.Length',Ext.data.validator.Bound,{type:'length',config:{minOnlyMessage:'Length must be at least {0}',maxOnlyMessage:'Length must be no more than {0}',bothMessage:'Length must be between {0} and {1}'},getValue:function(v){return String(v).length}},0,0,0,0,['data.validator.length'],0,[Ext.data.validator,'Length'],0);
Ext.cmd.derive('Ext.data.validator.Presence',Ext.data.validator.Validator,{type:'presence',config:{message:'Must be present',allowEmpty:!1},validate:function(value){var valid=!(void 0===value||null===value);valid&&!this.getAllowEmpty()&&(valid=''!==value);return valid?!0:this.getMessage()}},0,0,0,0,['data.validator.presence'],0,[Ext.data.validator,'Presence'],0);
Ext.cmd.derive('Ext.data.validator.Range',Ext.data.validator.Bound,{type:'range',config:{minOnlyMessage:'Must be must be at least {0}',maxOnlyMessage:'Must be no more than than {0}',bothMessage:'Must be between {0} and {1}',nanMessage:'Must be numeric'},validateValue:function(value){var msg=Ext.data.validator.Bound.prototype.validateValue.call(this,value);!0===msg&&isNaN(value)&&(msg=this.getNanMessage());return msg}},0,0,0,0,['data.validator.range'],0,[Ext.data.validator,'Range'],0);
Ext.cmd.derive('Ext.direct.Event',Ext.Base,{status:!0,constructor:function(config){Ext.apply(this,config)},getName:function(){return this.name},getData:function(){return this.data}},1,0,0,0,['direct.event'],0,[Ext.direct,'Event'],0);Ext.cmd.derive('Ext.direct.RemotingEvent',Ext.direct.Event,{getTransaction:function(){return this.transaction||Ext.direct.Manager.getTransaction(this.tid)}},0,0,0,0,['direct.rpc'],0,[Ext.direct,'RemotingEvent'],0);
Ext.cmd.derive('Ext.direct.ExceptionEvent',Ext.direct.RemotingEvent,{status:!1},0,0,0,0,['direct.exception'],0,[Ext.direct,'ExceptionEvent'],0);
Ext.cmd.derive('Ext.direct.JsonProvider',Ext.direct.Provider,{parseResponse:function(response){response=response&&response.responseText;return null!=response?Ext.isObject(response)||Ext.isArray(response)?response:Ext.decode(response):null},createEvents:function(response){var data=null,events=[],len;try{data=this.parseResponse(response)}catch(e){return data=new Ext.direct.ExceptionEvent({parsingError:!0,data:e,xhr:response,code:Ext.direct.Manager.exceptions.PARSE,message:'Error parsing json response: \n\n '+
e}),[data]}if(Ext.isArray(data))for(response=0,len=data.length;response<len;++response)events.push(this.createEvent(data[response]));else Ext.isObject(data)&&events.push(this.createEvent(data));return events},createEvent:function(response){return'object'===typeof response&&'type'in response?Ext.create('direct.'+response.type,response):new Ext.direct.ExceptionEvent({data:response,code:Ext.direct.Manager.exceptions.DATA,message:'Invalid data: event type is not specified'})}},0,0,0,0,['direct.jsonprovider'],
0,[Ext.direct,'JsonProvider'],0);
Ext.cmd.derive('Ext.direct.RemotingMethod',Ext.Base,{constructor:function(config){var params=config.params,len=config.len,metadataCfg=config.metadata,metadata={};this.name=config.name;this.disableBatching=null!=config.batched?!config.batched:!1;if(config.formHandler)this.formHandler=config.formHandler;else if(Ext.isNumeric(len))this.len=len,this.ordered=!0;else for(this.named=!0,this.strict=void 0!==config.strict?config.strict:!0,this.params={},config=params&&params.length,len=0;len<config;len++){var name=
params[len];name=Ext.isObject(name)?name.name:name;this.params[name]=!0}if(metadataCfg){params=metadataCfg.params;len=metadataCfg.len;if(Ext.isNumeric(len))metadata.ordered=!0,metadata.len=len;else if(Ext.isArray(params)){metadata.named=!0;metadata.params={};len=0;for(config=params.length;len<config;len++)name=params[len],metadata.params[name]=!0;metadata.strict=void 0!==metadataCfg.strict?metadataCfg.strict:!0}this.metadata=metadata}},getArgs:function(config){var params=config.params,paramOrder=
config.paramOrder,metadata=config.metadata,options=config.options,args=[],flatten,len;if(this.ordered){if(0<this.len)if(paramOrder)if(flatten=config.paramsAsArray&&1===this.len&&(1<paramOrder.length||Ext.isArray(params))){if(Ext.isArray(params))for(flatten=0,len=params.length;flatten<len;flatten++)args.push(this.convertParams(params[flatten],paramOrder,paramOrder.length,!0));else args=this.convertParams(params,paramOrder,paramOrder.length,!0);if(!params.allowSingle||1<args.length)args=[args]}else args=
this.convertParams(params,paramOrder,this.len,!1);else args.push(params)}else args.push(params);args.push(config.callback,config.scope||window);if(options||metadata)options=Ext.apply({},options),metadata&&(options.metadata=metadata),args.push(options);return args},convertParams:function(params,paramOrder,count,flatten){var ret=[],i;for(i=0;i<count;i++){var paramName=paramOrder[i];ret.push(params[paramName])}return flatten?0===ret.length?void 0:1===ret.length?ret[0]:ret:ret},getCallData:function(args){var data=
null,len=this.len,params=this.params,strict=this.strict,name;if(this.ordered){var callback=args[len];var scope=args[len+1];var options=args[len+2];0!==len&&(data=args.slice(0,len))}else if(this.formHandler){var form=args[0];callback=args[1];scope=args[2];options=args[3]}else if(data=Ext.apply({},args[0]),callback=args[1],scope=args[2],options=args[3],strict)for(name in data)data.hasOwnProperty(name)&&!params[name]&&delete data[name];if(this.metadata&&options&&options.metadata){if(this.metadata.ordered)var metadata=
options.metadata.slice(0,this.metadata.len);else if(metadata=Ext.apply({},options.metadata),this.metadata.strict)for(name in metadata)metadata.hasOwnProperty(name)&&!this.metadata.params[name]&&delete metadata[name];delete options.metadata}return{form:form,data:data,metadata:metadata,callback:callback,scope:scope,options:options}}},1,0,0,0,0,0,[Ext.direct,'RemotingMethod'],0);
Ext.cmd.derive('Ext.direct.Transaction',Ext.Base,{statics:{TRANSACTION_ID:0},constructor:function(config){Ext.apply(this,config);this.id=this.tid=++this.self.TRANSACTION_ID;this.retryCount=0},send:function(){this.provider.queueTransaction(this)},retry:function(){this.retryCount++;this.send()},getProvider:function(){return this.provider}},1,0,0,0,['direct.transaction'],0,[Ext.direct,'Transaction'],0);
Ext.cmd.derive('Ext.direct.RemotingProvider',Ext.direct.JsonProvider,{type:'remoting',enableBuffer:10,bufferLimit:Number.MAX_VALUE,maxRetries:1,constructor:function(config){Ext.direct.JsonProvider.prototype.constructor.call(this,config);this.namespace=Ext.isString(this.namespace)?Ext.ns(this.namespace):this.namespace||Ext.global;this.callBuffer=[]},connect:function(){Ext.direct.JsonProvider.prototype.connect.call(this)},doConnect:function(){this.apiCreated||(this.initAPI(),this.apiCreated=!0)},getNamespace:function(root,
action){var len;root=root||Ext.global;action=action.toString().split('.');var i=0;for(len=action.length;i<len;i++){var ns=action[i];root=root[ns];if('undefined'===typeof root)break}return root},createNamespaces:function(root,action){var len;root=root||Ext.global;action=action.toString().split('.');var i=0;for(len=action.length;i<len;i++){var ns=action[i];root[ns]=root[ns]||{};root=root[ns]}return root},initAPI:function(){var actions=this.actions,namespace=this.namespace,Manager=Ext.direct.Manager,
action,cls,len;for(action in actions)if(actions.hasOwnProperty(action)){this.disableNestedActions?(cls=namespace[action])||(cls=namespace[action]={}):(cls=this.getNamespace(namespace,action))||(cls=this.createNamespaces(namespace,action));var methods=actions[action];var i=0;for(len=methods.length;i<len;++i){var method=new Ext.direct.RemotingMethod(methods[i]);cls[method.name]=method=this.createHandler(action,method);Manager.registerMethod(method.$name,method)}}},createHandler:function(action,method){var me=
this;var handler=function(){me.invokeFunction(action,method,Array.prototype.slice.call(arguments,0))};handler.name=handler.$name=action+'.'+method.name;handler.$directFn=!0;handler.directCfg=handler.$directCfg={action:action,method:method};return handler},invokeFunction:function(action,method,args){args=this.configureTransaction(action,method,args);if(!1!==this.fireEvent('beforecall',this,args,method)){Ext.direct.Manager.addTransaction(args);if(args.isForm){var form=args.form;var isUpload='multipart/form-data'===
String(form.getAttribute('enctype')).toLowerCase();action={extTID:args.id,extAction:action,extMethod:method.name,extType:'rpc',extUpload:String(isUpload)};args.metadata&&(action.extMetadata=Ext.JSON.encode(args.metadata));Ext.apply(args,{form:form,isUpload:isUpload,params:action})}this.queueTransaction(args);this.fireEvent('call',this,args,method)}},configureTransaction:function(action,method,args){var data=method.getCallData(args);var cb=data.callback;var scope=data.scope;var options=data.options;
cb=cb&&scope?Ext.Function.bind(cb,scope):cb;action=Ext.apply({},{provider:this,args:args,action:action,method:method.name,form:data.form,data:data.data,metadata:data.metadata,callbackOptions:options,callback:cb,isForm:!!method.formHandler,disableBatching:method.disableBatching});options&&null!=options.timeout&&(action.timeout=options.timeout);return new Ext.direct.Transaction(action)},queueTransaction:function(transaction){var callBuffer=this.callBuffer,enableBuffer=this.enableBuffer;transaction.isForm||
!1===enableBuffer||transaction.disableBatching||null!=transaction.timeout?this.sendTransaction(transaction):(callBuffer.push(transaction),enableBuffer&&callBuffer.length<this.bufferLimit?(this.callTask||(this.callTask=new Ext.util.DelayedTask(this.combineAndSend,this)),this.callTask.delay(Ext.isNumber(enableBuffer)?enableBuffer:10)):this.combineAndSend())},combineAndSend:function(){var buffer=this.callBuffer,len=buffer.length;0<len&&(this.sendTransaction(1===len?buffer[0]:buffer),this.callBuffer=
[])},sendTransaction:function(transaction){var enableUrlEncode=this.enableUrlEncode,len;var request={url:this.url,callback:this.onData,scope:this,transaction:transaction,headers:this.getHeaders()};null!=transaction.timeout?request.timeout=transaction.timeout:null!=this.timeout&&(request.timeout=this.timeout);if(transaction.isForm)Ext.apply(request,{params:transaction.params,form:transaction.form,isUpload:transaction.isUpload});else{if(Ext.isArray(transaction)){var callData=[];var i=0;for(len=transaction.length;i<
len;++i){var payload=this.getPayload(transaction[i]);callData.push(payload)}}else callData=this.getPayload(transaction);enableUrlEncode?(transaction={},transaction[Ext.isString(enableUrlEncode)?enableUrlEncode:'data']=Ext.encode(callData),request.params=transaction):request.jsonData=callData}return this.sendAjaxRequest(request)},getPayload:function(transaction){var result={action:transaction.action,method:transaction.method,data:transaction.data,type:'rpc',tid:transaction.id};transaction.metadata&&
(result.metadata=transaction.metadata);return result},onData:function(options,success,response){var len,events,transaction;if(success=(events=success&&this.createEvents(response))&&events.length&&!events[0].parsingError){var i=0;for(len=events.length;i<len;++i){var event=events[i];this.fireEvent('data',this,event);if(transaction=this.getTransaction(event))!1!==this.fireEvent('beforecallback',this,event,transaction)&&this.runCallback(transaction,event,!0),Ext.direct.Manager.removeTransaction(transaction)}}else{var transactions=
[].concat(options.transaction);event=events[0]||new Ext.direct.ExceptionEvent({data:null,transaction:transaction,code:Ext.direct.Manager.exceptions.TRANSPORT,message:'Unable to connect to the server.',xhr:response});i=0;for(len=transactions.length;i<len;++i)(transaction=this.getTransaction(transactions[i]))&&transaction.retryCount<this.maxRetries?transaction.retry():(this.fireEvent('data',this,event),this.fireEvent('exception',this,event),transaction&&!1!==this.fireEvent('beforecallback',this,event,
transaction)&&this.runCallback(transaction,event,!1),Ext.direct.Manager.removeTransaction(transaction))}Ext.direct.JsonProvider.prototype.onData.call(this,options,success,response)},getTransaction:function(options){return options&&options.tid?Ext.direct.Manager.getTransaction(options.tid):null},runCallback:function(transaction,event){var success=!!event.status,funcName=success?'success':'failure';if(transaction&&transaction.callback){var callback=transaction.callback;transaction=transaction.callbackOptions;
var result='undefined'!==typeof event.result?event.result:event.data;Ext.isFunction(callback)?callback(result,event,success,transaction):(Ext.callback(callback[funcName],callback.scope,[result,event,success,transaction]),Ext.callback(callback.callback,callback.scope,[result,event,success,transaction]))}},inheritableStatics:{checkConfig:function(config){return config&&'remoting'===config.type&&config.url&&Ext.isArray(config.actions)}}},1,0,0,0,['direct.remotingprovider'],0,[Ext.direct,'RemotingProvider'],
0);
Ext.cmd.derive('Ext.dom.GarbageCollector',Ext.Base,{singleton:!0,interval:3E4,constructor:function(){this.lastTime=Ext.now();this.onTick=this.onTick.bind(this);this.resume()},collect:function(){var cache=Ext.cache,eid;for(eid in cache)if(cache.hasOwnProperty(eid)){var el=cache[eid];if(!el.skipGarbageCollection){var dom=el.dom;try{var isGarbage=Ext.isGarbage(dom)}catch(e){delete cache[eid];continue}isGarbage&&el&&el.dom&&el.collect()}}if(Ext.isIE9m){dom={};for(eid in cache)cache.hasOwnProperty(eid)&&(dom[eid]=
cache[eid]);Ext.cache=Ext.dom.Element.cache=dom}this.lastTime=Ext.now()},onTick:function(){this.timerId=null;Ext.enableGarbageCollector&&this.collect();this.resume()},pause:function(){var timerId=this.timerId;timerId&&(this.timerId=null,clearTimeout(timerId))},resume:function(){var lastTime=this.lastTime;Ext.enableGarbageCollector&&Ext.now()-lastTime>this.interval&&this.collect();this.timerId||(this.timerId=Ext.defer(this.onTick,this.interval))}},1,0,0,0,0,0,[Ext.dom,'GarbageCollector'],0);
Ext.cmd.derive('Ext.dom.TouchAction',Ext.Base,{singleton:!0,lastTouchStartTime:0,minMoveDistance:8,spaceRe:/\s+/,preventSingle:null,preventMulti:null,disabledOverflowDom:null,panXCls:'x-touch-action-pan-x',panYCls:'x-touch-action-pan-y',cssValues:'none;pan-x;pan-y;pan-x pan-y;pinch-zoom;pan-x pinch-zoom;pan-y pinch-zoom;manipulation;double-tap-zoom;pan-x double-tap-zoom;pan-y double-tap-zoom;pan-x pan-y double-tap-zoom;pinch-zoom double-tap-zoom;pan-x pinch-zoom double-tap-zoom;pan-y pinch-zoom double-tap-zoom;'.split(';'),
objectValues:[{panX:!1,panY:!1,pinchZoom:!1,doubleTapZoom:!1},{panX:!0,panY:!1,pinchZoom:!1,doubleTapZoom:!1},{panX:!1,panY:!0,pinchZoom:!1,doubleTapZoom:!1},{panX:!0,panY:!0,pinchZoom:!1,doubleTapZoom:!1},{panX:!1,panY:!1,pinchZoom:!0,doubleTapZoom:!1},{panX:!0,panY:!1,pinchZoom:!0,doubleTapZoom:!1},{panX:!1,panY:!0,pinchZoom:!0,doubleTapZoom:!1},{panX:!0,panY:!0,pinchZoom:!0,doubleTapZoom:!1},{panX:!1,panY:!1,pinchZoom:!1,doubleTapZoom:!0},{panX:!0,panY:!1,pinchZoom:!1,doubleTapZoom:!0},{panX:!1,
panY:!0,pinchZoom:!1,doubleTapZoom:!0},{panX:!0,panY:!0,pinchZoom:!1,doubleTapZoom:!0},{panX:!1,panY:!1,pinchZoom:!0,doubleTapZoom:!0},{panX:!0,panY:!1,pinchZoom:!0,doubleTapZoom:!0},{panX:!1,panY:!0,pinchZoom:!0,doubleTapZoom:!0},{panX:!0,panY:!0,pinchZoom:!0,doubleTapZoom:!0}],attributeName:'data-extTouchAction',constructor:function(){var supports=Ext.supports;supports.PointerEvents?this.cssProp='touch-action':supports.MSPointerEvents?this.cssProp='-ms-touch-action':supports.TouchEvents&&(Ext.getWin().on({touchstart:'onTouchStart',
touchmove:'onTouchMove',touchend:'onTouchEnd',scope:this,translate:!1,capture:!0,priority:5E3}),Ext.on({scroll:'onScroll',scope:this,destroyable:!0}))},containsTargets:function(dom,e){var contains=!0;e='touchend'===e.type?e.changedTouches:e.touches;var ln;var i=0;for(ln=e.length;i<ln;i++)if(!dom.contains(e[i].target)){contains=!1;break}return contains},disableOverflow:function(dom,vertical){var overflowName=vertical?'overflow-y':'overflow-x',cls;if(!this.disabledOverflowDom&&!Ext.isiOS&&!Ext.getScrollbarSize().width)for(this.disabledOverflowDom=
dom,cls=vertical?this.panXCls:this.panYCls;dom;)vertical=Ext.fly(dom).getStyle(overflowName),'auto'!==vertical&&'scroll'!==vertical||Ext.fly(dom).addCls(cls),dom=dom.parentNode},get:function(dom){dom=dom.getAttribute(this.attributeName);var ret=null;null!=dom&&(ret=this.objectValues[dom]);return ret},getFlags:function(touchAction){if('number'===typeof touchAction)var flags=touchAction;else flags=0,!1!==touchAction.panX&&(flags|=1),!1!==touchAction.panY&&(flags|=2),!1!==touchAction.pinchZoom&&(flags|=
4),!1!==touchAction.doubleTapZoom&&(flags|=8);return flags},lookupFlags:function(dom){return dom.getAttribute&&dom.getAttribute(this.attributeName)},onScroll:function(){this.scrollOccurred=!0;this.isDoubleTap=!1},onTouchEnd:function(e){var dom=e.target;if(0===e.touches.length){if(this.isDoubleTap)for(;dom;){var flags=this.lookupFlags(dom);null!=flags&&((flags&=8)||e.preventDefault());dom=dom.parentNode}this.isDoubleTap=!1;this.preventMulti=this.preventSingle=null;this.resetOverflow()}},onTouchMove:function(e){var prevent=
null,dom=e.target;var panX=this.preventSingle;var flags=this.preventMulti;var touchCount=e.touches.length;if((1!==touchCount||!1!==panX)&&!1!==flags){if(1<touchCount&&!0===flags||1===touchCount&&!0===panX)prevent=!0;else for(;dom;){flags=this.lookupFlags(dom);if(null!=flags){if(flags)if(1===touchCount)if(panX=!!(flags&1),flags=!!(flags&2),panX&&flags)prevent=!1;else if(panX||flags){var point=e.getPoint();var startPoint=this.startPoint;var scale=Ext.Element.getViewportScale();scale=Math.abs(point.getDistanceTo(this.startPoint)*
scale);scale>=this.minMoveDistance&&(prevent=Math.abs(point.x-startPoint.x),point=Math.abs(point.y-startPoint.y),prevent=!!(panX&&point>prevent||flags&&prevent>point))}else prevent=!0;else prevent=this.containsTargets(dom,e)?!(flags&4):!1;else prevent=!0;if(prevent)break}dom=dom.parentNode}1===touchCount?this.preventSingle=prevent:1<touchCount&&(this.preventMulti=prevent);prevent&&e.preventDefault()}},onTouchStart:function(e){if(1===e.touches.length){var time=e.time;!this.scrollOccurred&&500>=time-
this.lastTouchStartTime&&(this.isDoubleTap=!0);this.lastTouchStartTime=time;this.scrollOccurred=!1;this.startPoint=e.getPoint();for(e=e.target;e;){var flags=this.lookupFlags(e);if(null!=flags&&(time=!!(flags&1),flags=!!(flags&2),time!==flags)){this.disableOverflow(e,time);break}e=e.parentNode}}else this.isDoubleTap=!1},resetOverflow:function(){for(var dom=this.disabledOverflowDom;dom;)Ext.fly(dom).removeCls([this.panXCls,this.panYCls]),dom=dom.parentNode;this.disabledOverflowDom=null},set:function(dom,
value){var cssProp=this.cssProp;value=this.getFlags(value);var attributeName=this.attributeName;cssProp&&Ext.fly(dom).setStyle(cssProp,this.cssValues[value]);15===value?dom.removeAttribute(attributeName):dom.setAttribute(attributeName,value)}},1,0,0,0,0,0,[Ext.dom,'TouchAction'],0);
Ext.cmd.derive('Ext.event.gesture.Recognizer',Ext.Base,{priority:0,handledEvents:[],isStarted:!1,config:{onRecognized:Ext.emptyFn,callbackScope:null},constructor:function(config){this.initConfig(config);Ext.event.publisher.Gesture.instance.registerRecognizer(this)},onStart:Ext.emptyFn,onEnd:Ext.emptyFn,onTouchStart:Ext.emptyFn,onTouchMove:Ext.emptyFn,onTouchEnd:function(){return this.reset()},onTouchCancel:function(e){return this.cancel(e)},fire:function(eventName,e,info,isCancel){this.getOnRecognized().call(this.getCallbackScope(),
this,eventName,e,info,isCancel)},cancel:function(e){if(this.isStarted)this.onCancel(e);return this.reset()},onCancel:Ext.emptyFn,reset:function(){return this.isStarted=!1}},1,0,0,0,0,[[Ext.mixin.Identifiable.prototype.mixinId||Ext.mixin.Identifiable.$className,Ext.mixin.Identifiable]],[Ext.event.gesture,'Recognizer'],0);
Ext.cmd.derive('Ext.event.gesture.SingleTouch',Ext.event.gesture.Recognizer,{isSingleTouch:!0,onTouchStart:function(e){if(1<e.touches.length)return this.cancel(e)}},0,0,0,0,0,0,[Ext.event.gesture,'SingleTouch'],0);
Ext.cmd.derive('Ext.event.gesture.DoubleTap',Ext.event.gesture.SingleTouch,{priority:300,config:{moveDistance:8,tapDistance:24,maxDuration:300},handledEvents:['singletap','doubletap'],singleTapTimer:null,startTime:0,lastTapTime:0,onTouchStart:function(e){var ret=Ext.event.gesture.SingleTouch.prototype.onTouchStart.call(this,e);if(!1!==ret){this.isStarted=!0;var lastStartPoint=this.lastStartPoint=e.changedTouches[0].point;this.startPoint=this.startPoint||lastStartPoint;this.startTime=e.time;clearTimeout(this.singleTapTimer)}return ret},
onTouchMove:function(e){var point=e.changedTouches[0].point,scale=Ext.Element.getViewportScale();if(Math.round(Math.abs(point.getDistanceTo(this.lastStartPoint)*scale))>=this.getMoveDistance())return this.cancel(e)},onTouchEnd:function(e){var maxDuration=this.getMaxDuration(),time=e.time,target=e.target,lastTapTime=this.lastTapTime,lastTarget=this.lastTarget,point=e.changedTouches[0].point;this.lastTapTime=time;this.lastTarget=target;if(lastTapTime&&(lastTapTime=time-lastTapTime,lastTapTime<=maxDuration)){var scale=
Ext.Element.getViewportScale();point=Math.round(Math.abs(point.getDistanceTo(this.startPoint)*scale));if(point<=this.getTapDistance()){if(target!==lastTarget)return this.cancel(e);this.lastTarget=null;this.lastTapTime=0;this.fire('doubletap',e,{touch:e.changedTouches[0],duration:lastTapTime});return Ext.event.gesture.SingleTouch.prototype.onTouchEnd.call(this,e)}}time-this.startTime>maxDuration?(this.fire('singletap',e),this.reset()):this.setSingleTapTimer(e)},setSingleTapTimer:function(e){var me=
this;me.singleTapTimer=Ext.defer(function(){me.fire('singletap',e);me.reset()},me.getMaxDuration())},reset:function(){clearTimeout(this.singleTapTimer);this.startTime=this.lastTapTime=0;this.lastStartPoint=this.startPoint=this.singleTapTimer=null;return Ext.event.gesture.SingleTouch.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'DoubleTap'],function(DoubleTap){var gestures=Ext.manifest.gestures;DoubleTap.instance=new DoubleTap(gestures&&gestures.doubleTap)});
Ext.cmd.derive('Ext.event.gesture.Drag',Ext.event.gesture.SingleTouch,{priority:100,startPoint:null,previousPoint:null,lastPoint:null,handledEvents:['dragstart','drag','dragend','dragcancel'],config:{minDistance:8},constructor:function(){Ext.event.gesture.SingleTouch.prototype.constructor.apply(this,arguments);this.initInfo()},initInfo:function(){this.info={touch:null,previous:{x:0,y:0},x:0,y:0,delta:{x:0,y:0},absDelta:{x:0,y:0},flick:{velocity:{x:0,y:0}},direction:{x:0,y:0},time:0,previousTime:{x:0,
y:0},longpress:!1}},onTouchStart:function(e){var ret=Ext.event.gesture.SingleTouch.prototype.onTouchStart.call(this,e);!1!==ret&&(this.startTime=e.time,this.startPoint=e.changedTouches[0].point);return ret},tryDragStart:function(e){var point=e.changedTouches[0].point,minDistance=this.getMinDistance(),scale=Ext.Element.getViewportScale();Math.round(Math.abs(point.getDistanceTo(this.startPoint)*scale))>=minDistance&&this.doDragStart(e)},doDragStart:function(e,isLongPress){var touch=e.changedTouches[0],
point=touch.point,info=this.info;isLongPress?(this.startTime=isLongPress=Ext.now(),this.startPoint=point,info.longpress=!0):isLongPress=e.time;this.isStarted=!0;this.previousPoint=this.lastPoint=point;this.resetInfo('x',e,touch);this.resetInfo('y',e,touch);info.time=isLongPress;this.fire('dragstart',e,info)},onTouchMove:function(e){if(this.startPoint&&(this.isStarted||this.tryDragStart(e),this.isStarted)){var touch=e.changedTouches[0];var point=touch.point;this.lastPoint&&(this.previousPoint=this.lastPoint);
this.lastPoint=point;this.lastMoveEvent=e;this.updateInfo('x',e,touch);this.updateInfo('y',e,touch);this.info.time=e.time;this.fire('drag',e,this.info)}},onAxisDragEnd:function(axis,info){var duration=info.time-info.previousTime[axis];0<duration&&(info.flick.velocity[axis]=(info[axis]-info.previous[axis])/duration)},resetInfo:function(axis,e,touch){e=this.lastPoint[axis];var startValue=this.startPoint[axis],delta=e-startValue,capAxis=axis.toUpperCase(),info=this.info;info.touch=touch;info.delta[axis]=
delta;info.absDelta[axis]=Math.abs(delta);info.previousTime[axis]=this.startTime;info.previous[axis]=startValue;info[axis]=e;info.direction[axis]=0;info['start'+capAxis]=this.startPoint[axis];info['previous'+capAxis]=info.previous[axis];info['page'+capAxis]=info[axis];info['delta'+capAxis]=info.delta[axis];info['absDelta'+capAxis]=info.absDelta[axis];info['previousDelta'+capAxis]=0;info.startTime=this.startTime},updateInfo:function(axis,e,touch){e=this.lastPoint[axis];var previousValue=this.previousPoint[axis],
startValue=this.startPoint[axis],delta=e-startValue,info=this.info,direction=info.direction,capAxis=axis.toUpperCase(),previousFlick=info.previous[axis];info.touch=touch;info.delta[axis]=delta;info.absDelta[axis]=Math.abs(delta);e!==previousFlick&&e!==info[axis]&&(info.previous[axis]=info[axis],info.previousTime[axis]=info.time);info[axis]=e;e>previousValue?direction[axis]=1:e<previousValue&&(direction[axis]=-1);info['start'+capAxis]=startValue;info['previous'+capAxis]=info.previous[axis];info['page'+
capAxis]=info[axis];info['delta'+capAxis]=info.delta[axis];info['absDelta'+capAxis]=info.absDelta[axis];info['previousDelta'+capAxis]=info.previous[axis]-startValue;info.startTime=this.startTime},onTouchEnd:function(e){if(this.isStarted){var touch=e.changedTouches[0];var point=touch.point;var info=this.info;this.lastPoint=point;this.updateInfo('x',e,touch);this.updateInfo('y',e,touch);info.time=e.time;this.onAxisDragEnd('x',info);this.onAxisDragEnd('y',info);this.fire('dragend',e,info)}return Ext.event.gesture.SingleTouch.prototype.onTouchEnd.call(this,
e)},onCancel:function(e){var touch=e.changedTouches[0],info=this.info;e.touches.length||(this.lastPoint=touch.point);this.updateInfo('x',e,touch);this.updateInfo('y',e,touch);info.time=e.time;this.fire('dragcancel',e,info,!0)},reset:function(){this.lastPoint=this.startPoint=this.previousPoint=this.lastMoveEvent=null;this.initInfo();return Ext.event.gesture.SingleTouch.prototype.reset.call(this)}},1,0,0,0,0,0,[Ext.event.gesture,'Drag'],function(Drag){var gestures=Ext.manifest.gestures;Drag.instance=
new Drag(gestures&&gestures.drag)});
Ext.cmd.derive('Ext.event.gesture.Swipe',Ext.event.gesture.SingleTouch,{priority:600,handledEvents:['swipestart','swipe','swipecancel'],config:{minDistance:80,maxOffset:35,maxDuration:1E3},onTouchStart:function(e){var ret=Ext.event.gesture.SingleTouch.prototype.onTouchStart.call(this,e);if(!1!==ret){var touch=e.changedTouches[0];this.startTime=e.time;this.isVertical=this.isHorizontal=!0;this.startX=touch.pageX;this.startY=touch.pageY}return ret},onTouchMove:function(e){var touch=e.changedTouches[0],
x=touch.pageX,y=touch.pageY,deltaX=x-this.startX,deltaY=y-this.startY;x=Math.abs(x-this.startX);y=Math.abs(y-this.startY);var duration=e.time-this.startTime;if(0===x&&0===y||duration>this.getMaxDuration())return this.cancel(e);this.isHorizontal&&y>this.getMaxOffset()&&(this.isHorizontal=!1);this.isVertical&&x>this.getMaxOffset()&&(this.isVertical=!1);if(!this.isVertical||!this.isHorizontal){var minDistance=this.getMinDistance();if(this.isHorizontal&&x<minDistance){var direction=0>deltaX?'left':'right';
var distance=x}else this.isVertical&&y<minDistance&&(direction=0>deltaY?'up':'down',distance=y)}if(!this.isHorizontal&&!this.isVertical)return this.cancel(e);direction&&!this.isStarted&&(this.isStarted=!0,this.fire('swipestart',e,{touch:touch,direction:direction,distance:distance,duration:duration}))},onTouchEnd:function(e){if(!1!==this.onTouchMove(e)){var touch=e.changedTouches[0];var x=touch.pageX;var y=touch.pageY;x-=this.startX;y-=this.startY;var absDeltaX=Math.abs(x);var absDeltaY=Math.abs(y);
var minDistance=this.getMinDistance();var duration=e.time-this.startTime;this.isVertical&&absDeltaY<minDistance&&(this.isVertical=!1);this.isHorizontal&&absDeltaX<minDistance&&(this.isHorizontal=!1);if(this.isHorizontal){var direction=0>x?'left':'right';var distance=absDeltaX}else this.isVertical&&(direction=0>y?'up':'down',distance=absDeltaY);this.fire('swipe',e,{touch:touch,direction:direction,distance:distance,duration:duration})}return Ext.event.gesture.SingleTouch.prototype.onTouchEnd.call(this,
e)},onCancel:function(e){this.fire('swipecancel',e,null,!0)},reset:function(){this.startTime=this.isHorizontal=this.isVertical=this.startX=this.startY=null;return Ext.event.gesture.SingleTouch.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'Swipe'],function(Swipe){var gestures=Ext.manifest.gestures;Swipe.instance=new Swipe(gestures&&gestures.swipe)});
Ext.cmd.derive('Ext.event.gesture.EdgeSwipe',Ext.event.gesture.Swipe,{priority:500,handledEvents:['edgeswipe','edgeswipestart','edgeswipeend','edgeswipecancel'],config:{minDistance:60},onTouchStart:function(e){var ret=Ext.event.gesture.Swipe.prototype.onTouchStart.call(this,e);!1!==ret&&(e=e.changedTouches[0],this.direction=null,this.isVertical=this.isHorizontal=!0,this.startX=e.pageX,this.startY=e.pageY);return ret},onTouchMove:function(e){var touch=e.changedTouches[0],x=touch.pageX,y=touch.pageY,
deltaX=x-this.startX,deltaY=y-this.startY;y=Math.abs(y-this.startY);x=Math.abs(x-this.startX);var minDistance=this.getMinDistance(),maxOffset=this.getMaxOffset(),duration=e.time-this.startTime,elementWidth=Ext.Viewport&&Ext.Element.getViewportWidth(),elementHeight=Ext.Viewport&&Ext.Element.getViewportHeight();this.isVertical&&x>maxOffset&&(this.isVertical=!1);this.isHorizontal&&y>maxOffset&&(this.isHorizontal=!1);this.isVertical&&this.isHorizontal&&(y>x?this.isHorizontal=!1:this.isVertical=!1);if(this.isHorizontal){var direction=
0>deltaX?'left':'right';var distance=deltaX}else this.isVertical&&(direction=0>deltaY?'up':'down',distance=deltaY);direction=this.direction||(this.direction=direction);'up'===direction?distance=-1*deltaY:'left'===direction&&(distance=-1*deltaX);this.distance=distance;if(!distance)return this.cancel(e);if(this.isStarted)this.fire('edgeswipe',e,{touch:touch,direction:direction,distance:distance,duration:duration});else{if('right'===direction&&this.startX>minDistance||'down'===direction&&this.startY>
minDistance||'left'===direction&&elementWidth-this.startX>minDistance||'up'===direction&&elementHeight-this.startY>minDistance)return this.cancel(e);this.isStarted=!0;this.startTime=e.time;this.fire('edgeswipestart',e,{touch:touch,direction:direction,distance:distance,duration:duration})}},onTouchEnd:function(e){if(!1!==this.onTouchMove(e)){var duration=e.time-this.startTime;this.fire('edgeswipeend',e,{touch:e.changedTouches[0],direction:this.direction,distance:this.distance,duration:duration})}return this.reset()},
onCancel:function(e){this.fire('edgeswipecancel',e,{touch:e.changedTouches[0]},!0)},reset:function(){this.direction=this.isHorizontal=this.isVertical=this.startX=this.startY=this.startTime=this.distance=null;return Ext.event.gesture.Swipe.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'EdgeSwipe'],function(EdgeSwipe){var gestures=Ext.manifest.gestures;EdgeSwipe.instance=new EdgeSwipe(gestures&&gestures.edgeSwipe)});
Ext.cmd.derive('Ext.event.gesture.LongPress',Ext.event.gesture.SingleTouch,{priority:400,config:{moveDistance:8,minDuration:1E3},handledEvents:['longpress','taphold'],onTouchStart:function(e){var ret=Ext.event.gesture.SingleTouch.prototype.onTouchStart.call(this,e);!1!==ret&&(this.startPoint=e.changedTouches[0].point,this.setLongPressTimer(e));return ret},setLongPressTimer:function(e){this.timer=Ext.defer(this.fireLongPress,this.getMinDuration(),this,[e])},onTouchMove:function(e){var point=e.changedTouches[0].point,
scale=Ext.Element.getViewportScale();if(Math.round(Math.abs(point.getDistanceTo(this.startPoint)*scale))>=this.getMoveDistance())return this.cancel(e)},reset:function(){clearTimeout(this.timer);this.timer=this.startPoint=null;return Ext.event.gesture.SingleTouch.prototype.reset.call(this)},fireLongPress:function(e){var info={touch:e.changedTouches[0],duration:this.getMinDuration(),startDrag:this.startDrag};this.fire('taphold',e,info);this.fire('longpress',e,info);this.reset()},startDrag:function(){var dragRecognizer=
Ext.event.gesture.Drag.instance,touchStartEvent=this.parentEvent;dragRecognizer.doDragStart(touchStartEvent,!0);Ext.event.publisher.Gesture.instance.claimRecognizer(dragRecognizer,touchStartEvent)}},0,0,0,0,0,0,[Ext.event.gesture,'LongPress'],function(LongPress){var gestures=Ext.manifest.gestures;LongPress.instance=new LongPress(gestures&&gestures.longPress)});
Ext.cmd.derive('Ext.event.gesture.MultiTouch',Ext.event.gesture.Recognizer,{requiredTouchesCount:2,isTracking:!1,isMultiTouch:!0,onTouchStart:function(e){var requiredTouchesCount=this.requiredTouchesCount,touchesCount=e.touches.length;if(touchesCount===requiredTouchesCount)this.isTracking=!0;else if(touchesCount>requiredTouchesCount)return this.cancel(e)},reset:function(){this.isTracking=!1;return Ext.event.gesture.Recognizer.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'MultiTouch'],
0);
Ext.cmd.derive('Ext.event.gesture.Pinch',Ext.event.gesture.MultiTouch,{priority:700,handledEvents:['pinchstart','pinch','pinchend','pinchcancel'],startDistance:0,lastTouches:null,onTouchMove:function(e){if(this.isTracking){var touches=e.touches;var firstPoint=touches[0].point;var secondPoint=touches[1].point;firstPoint=firstPoint.getDistanceTo(secondPoint);0!==firstPoint&&(this.isStarted?this.fire('pinch',e,{touches:touches,distance:firstPoint,scale:firstPoint/this.startDistance}):(this.isStarted=!0,
this.startDistance=firstPoint,this.fire('pinchstart',e,{touches:touches,distance:firstPoint,scale:1})))}},onTouchEnd:function(e){this.isStarted&&this.fire('pinchend',e);return Ext.event.gesture.MultiTouch.prototype.onTouchEnd.call(this,e)},onCancel:function(e){this.fire('pinchcancel',e,null,!0)},reset:function(){this.lastTouches=null;this.startDistance=0;return Ext.event.gesture.MultiTouch.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'Pinch'],function(Pinch){var gestures=Ext.manifest.gestures;
Pinch.instance=new Pinch(gestures&&gestures.pinch)});
Ext.cmd.derive('Ext.event.gesture.Rotate',Ext.event.gesture.MultiTouch,{priority:800,handledEvents:['rotatestart','rotate','rotateend','rotatecancel'],startAngle:0,lastTouches:null,lastAngle:null,onTouchMove:function(e){if(this.isTracking){var touches=e.touches;var lastAngle=this.lastAngle;var firstPoint=touches[0].point;var secondPoint=touches[1].point;firstPoint=firstPoint.getAngleTo(secondPoint);if(null!==lastAngle){var diff=Math.abs(lastAngle-firstPoint);secondPoint=firstPoint+360;var previousAngle=
firstPoint-360;Math.abs(secondPoint-lastAngle)<diff?firstPoint=secondPoint:Math.abs(previousAngle-lastAngle)<diff&&(firstPoint=previousAngle)}this.lastAngle=firstPoint;this.isStarted?this.fire('rotate',e,{touches:touches,angle:firstPoint,rotation:firstPoint-this.startAngle}):(this.isStarted=!0,this.startAngle=firstPoint,this.fire('rotatestart',e,{touches:touches,angle:firstPoint,rotation:0}));this.lastTouches=Ext.Array.clone(touches)}},onTouchEnd:function(e){this.isStarted&&this.fire('rotateend',
e);return Ext.event.gesture.MultiTouch.prototype.onTouchEnd.call(this,e)},onCancel:function(e){this.fire('rotatecancel',e,null,!0)},reset:function(){this.lastTouches=this.lastAngle=this.startAngle=null;return Ext.event.gesture.MultiTouch.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'Rotate'],function(Rotate){var gestures=Ext.manifest.gestures;Rotate.instance=new Rotate(gestures&&gestures.rotate)});
Ext.cmd.derive('Ext.event.gesture.Tap',Ext.event.gesture.SingleTouch,{priority:200,handledEvents:['tap','tapcancel'],config:{moveDistance:8},onTouchStart:function(e){var ret=Ext.event.gesture.SingleTouch.prototype.onTouchStart.call(this,e);!1!==ret&&(this.isStarted=!0,this.startPoint=e.changedTouches[0].point);return ret},onTouchMove:function(e){var point=e.changedTouches[0].point,scale=Ext.Element.getViewportScale();if(Math.round(Math.abs(point.getDistanceTo(this.startPoint)*scale))>=this.getMoveDistance())return this.cancel(e)},
onTouchEnd:function(e){this.fire('tap',e,{touch:e.changedTouches[0]});return Ext.event.gesture.SingleTouch.prototype.onTouchEnd.call(this,e)},onCancel:function(e){this.fire('tapcancel',e,{touch:e.changedTouches[0]},!0)},reset:function(){this.startPoint=null;return Ext.event.gesture.SingleTouch.prototype.reset.call(this)}},0,0,0,0,0,0,[Ext.event.gesture,'Tap'],function(Tap){var gestures=Ext.manifest.gestures;Tap.instance=new Tap(gestures&&gestures.tap)});
Ext.cmd.derive('Ext.event.publisher.Focus',Ext.event.publisher.Dom,{type:'focus',handledEvents:['focusenter','focusleave','focusmove'],handledDomEvents:['focusin','focusout'],publishDelegatedDomEvent:function(e){var relatedTarget=e.relatedTarget;'focusout'===e.type?null==relatedTarget&&this.processFocusIn(e,e.target,document.body):(null!=relatedTarget&&relatedTarget.tagName||(relatedTarget=document.body),this.processFocusIn(e,relatedTarget,e.target))},processFocusIn:function(e,fromElement,toElement){var targets=
[];var commonAncestor=Ext.fly(fromElement);var node=Ext.fly(toElement);if(!(commonAncestor&&commonAncestor.isFocusSuspended()||node&&node.isFocusSuspended())){node=fromElement;for(commonAncestor=Ext.dom.Element.getCommonAncestor(toElement,fromElement,!0);node&&node!==commonAncestor;node=node.parentNode)targets.push(node);if(targets.length&&(node=this.createSyntheticEvent('focusleave',e,fromElement,toElement),this.publish(node,targets),node.stopped))return;targets.length=0;for(node=toElement;node&&
node!==commonAncestor;node=node.parentNode)targets.push(node);var focusEnterEvent=this.createSyntheticEvent('focusenter',e,toElement,fromElement);if(targets.length&&(this.publish(focusEnterEvent,targets),focusEnterEvent.stopped))return;targets=this.getPropagatingTargets(commonAncestor);if(targets.length&&(node=this.createSyntheticEvent('focusmove',e,toElement,fromElement),this.publish(node,targets),node.stopped))return;Ext.GlobalEvents.fireEvent('focus',{event:focusEnterEvent,toElement:toElement,
fromElement:fromElement})}},createSyntheticEvent:function(eventName,browserEvent,target,relatedTarget){browserEvent=new Ext.event.Event(browserEvent);browserEvent.type=eventName;browserEvent.relatedTarget=relatedTarget;browserEvent.target=target;return browserEvent}},0,0,0,0,0,0,[Ext.event.publisher,'Focus'],function(Focus){var focusTimeout;Focus.instance=new Focus;Ext.supports.FocusinFocusoutEvents||this.override({handledDomEvents:['focus','blur'],publishDelegatedDomEvent:function(e){var me=this;
me.callSuper([e]);var targetIsElement=e.target!==window&&e.target!==document;'blur'===e.type?(targetIsElement?focusTimeout=setTimeout(function(){focusTimeout=0;me.processFocusIn(e,e.target,document.body);Focus.previousActiveElement=null},0):e.explicitOriginalTarget===Focus.previousActiveElement&&e.target===window&&(clearTimeout(focusTimeout),focusTimeout=0,me.processFocusIn(e,Focus.previousActiveElement,document.body),Focus.previousActiveElement=null),Focus.previousActiveElement=targetIsElement?e.target:
null):(clearTimeout(focusTimeout),focusTimeout=0,me.processFocusIn(e,Focus.previousActiveElement||document.body,targetIsElement?e.target:document.body))}})});
Ext.cmd.derive('Ext.fx.State',Ext.Base,{isAnimatable:{'background-color':!0,'background-image':!0,'background-position':!0,'border-bottom-color':!0,'border-bottom-width':!0,'border-color':!0,'border-left-color':!0,'border-left-width':!0,'border-right-color':!0,'border-right-width':!0,'border-spacing':!0,'border-top-color':!0,'border-top-width':!0,'border-width':!0,bottom:!0,color:!0,crop:!0,'font-size':!0,'font-weight':!0,height:!0,left:!0,'letter-spacing':!0,'line-height':!0,'margin-bottom':!0,'margin-left':!0,
'margin-right':!0,'margin-top':!0,'max-height':!0,'max-width':!0,'min-height':!0,'min-width':!0,opacity:!0,'outline-color':!0,'outline-offset':!0,'outline-width':!0,'padding-bottom':!0,'padding-left':!0,'padding-right':!0,'padding-top':!0,right:!0,'text-indent':!0,'text-shadow':!0,top:!0,'vertical-align':!0,visibility:!0,width:!0,'word-spacing':!0,'z-index':!0,zoom:!0,transform:!0},constructor:function(data){this.data={};this.set(data)},setConfig:function(data){this.set(data);return this},setRaw:function(data){this.data=
data;return this},clear:function(){return this.setRaw({})},setTransform:function(name,value){var data=this.data,isArray=Ext.isArray(value),transform=data.transform,key;transform||(transform=data.transform={translateX:0,translateY:0,translateZ:0,scaleX:1,scaleY:1,scaleZ:1,rotate:0,rotateX:0,rotateY:0,rotateZ:0,skewX:0,skewY:0});if('string'==typeof name)switch(name){case 'translate':isArray?(name=value.length,0!=name&&(transform.translateX=value[0],1!=name&&(transform.translateY=value[1],2!=name&&(transform.translateZ=
value[2])))):transform.translateX=value;break;case 'rotate':isArray?(name=value.length,0!=name&&(transform.rotateX=value[0],1!=name&&(transform.rotateY=value[1],2!=name&&(transform.rotateZ=value[2])))):transform.rotate=value;break;case 'scale':isArray?(name=value.length,0!=name&&(transform.scaleX=value[0],1!=name&&(transform.scaleY=value[1],2!=name&&(transform.scaleZ=value[2])))):(transform.scaleX=value,transform.scaleY=value);break;case 'skew':isArray?(name=value.length,0!=name&&(transform.skewX=
value[0],1!=name&&(transform.skewY=value[1]))):transform.skewX=value;break;default:transform[name]=value}else for(key in name)name.hasOwnProperty(key)&&(value=name[key],this.setTransform(key,value))},set:function(name,value){var data=this.data,key;if('string'!=typeof name)for(key in name)value=name[key],'transform'===key?this.setTransform(value):data[key]=value;else'transform'===name?this.setTransform(value):data[name]=value;return this},unset:function(name){var data=this.data;data.hasOwnProperty(name)&&
delete data[name];return this},getData:function(){return this.data}},1,0,0,0,0,0,[Ext.fx,'State'],0);
Ext.cmd.derive('Ext.fx.animation.Abstract',Ext.Evented,{isAnimation:!0,config:{name:'',element:null,before:null,from:{},to:{},after:null,states:{},duration:300,easing:'linear',iteration:1,direction:'normal',delay:0,onBeforeStart:null,callback:null,onEnd:null,onBeforeEnd:null,scope:null,reverse:null,preserveEndState:!1,replacePrevious:!0},STATE_FROM:'0%',STATE_TO:'100%',DIRECTION_UP:'up',DIRECTION_DOWN:'down',DIRECTION_LEFT:'left',DIRECTION_RIGHT:'right',stateNameRegex:/^(?:[\d\.]+)%$/,constructor:function(){this.states=
{};Ext.Evented.prototype.constructor.apply(this,arguments);return this},applyElement:function(element){return Ext.get(element)},applyBefore:function(before,current){if(before)return Ext.factory(before,Ext.fx.State,current)},applyAfter:function(after,current){if(after)return Ext.factory(after,Ext.fx.State,current)},setFrom:function(from){return this.setState(this.STATE_FROM,from)},setTo:function(to){return this.setState(this.STATE_TO,to)},getFrom:function(){return this.getState(this.STATE_FROM)},getTo:function(){return this.getState(this.STATE_TO)},
setStates:function(states){var validNameRegex=this.stateNameRegex,name;for(name in states)validNameRegex.test(name)&&this.setState(name,states[name]);return this},getStates:function(){return this.states},updateCallback:function(callback){callback&&this.setOnEnd(callback)},end:function(){this.stop()},stop:function(){this.fireEvent('stop',this)},destroy:function(){this.stop();Ext.Evented.prototype.destroy.call(this)},setState:function(name,state){var states=this.getStates();(state=Ext.factory(state,
Ext.fx.State,states[name]))&&(states[name]=state);return this},getState:function(name){return this.getStates()[name]},getData:function(){var states=this.getStates(),statesData={},before=this.getBefore(),after=this.getAfter(),to=states[this.STATE_TO],fromData=states[this.STATE_FROM].getData();to=to.getData();var name;for(name in states)if(states.hasOwnProperty(name)){var data=states[name];data=data.getData();statesData[name]=data}return{before:before?before.getData():{},after:after?after.getData():
{},states:statesData,from:fromData,to:to,duration:this.getDuration(),iteration:this.getIteration(),direction:this.getDirection(),easing:this.getEasing(),delay:this.getDelay(),onEnd:this.getOnEnd(),onBeforeEnd:this.getOnBeforeEnd(),onBeforeStart:this.getOnBeforeStart(),scope:this.getScope(),preserveEndState:this.getPreserveEndState(),replacePrevious:this.getReplacePrevious()}}},1,0,0,0,0,0,[Ext.fx.animation,'Abstract'],0);
Ext.cmd.derive('Ext.fx.animation.Slide',Ext.fx.animation.Abstract,{alternateClassName:'Ext.fx.animation.SlideIn',config:{direction:'left',out:!1,offset:0,easing:'auto',containerBox:'auto',elementBox:'auto',isElementBoxFit:!0,useCssTransform:!0},reverseDirectionMap:{up:'down',down:'up',left:'right',right:'left'},applyEasing:function(easing){return'auto'===easing?'ease-'+(this.getOut()?'in':'out'):easing},getContainerBox:function(){var box=this._containerBox;'auto'===box&&(box=this.getElement().getParent().getBox());
return box},getElementBox:function(){var box=this._elementBox;if(this.getIsElementBoxFit())return this.getContainerBox();'auto'===box&&(box=this.getElement().getBox());return box},getData:function(){var elementBox=this.getElementBox(),containerBox=this.getContainerBox(),box=elementBox?elementBox:containerBox,from=this.getFrom();elementBox=this.getTo();var out=this.getOut(),offset=this.getOffset(),direction=this.getDirection(),useCssTransform=this.getUseCssTransform(),translateX=0,translateY=0;this.getReverse()&&
(direction=this.reverseDirectionMap[direction]);switch(direction){case this.DIRECTION_UP:translateY=out?containerBox.top-box.top-box.height-offset:containerBox.bottom-box.bottom+box.height+offset;break;case this.DIRECTION_DOWN:translateY=out?containerBox.bottom-box.bottom+box.height+offset:containerBox.top-box.height-box.top-offset;break;case this.DIRECTION_RIGHT:translateX=out?containerBox.right-box.right+box.width+offset:containerBox.left-box.left-box.width-offset;break;case this.DIRECTION_LEFT:translateX=
out?containerBox.left-box.left-box.width-offset:containerBox.right-box.right+box.width+offset}containerBox=out?0:translateX;box=out?0:translateY;useCssTransform?from.setTransform({translateX:containerBox,translateY:box}):(from.set('left',containerBox),from.set('top',box));from=out?translateX:0;out=out?translateY:0;useCssTransform?elementBox.setTransform({translateX:from,translateY:out}):(elementBox.set('left',from),elementBox.set('top',out));return Ext.fx.animation.Abstract.prototype.getData.apply(this,
arguments)}},0,0,0,0,['animation.slide','animation.slideIn'],0,[Ext.fx.animation,'Slide',Ext.fx.animation,'SlideIn'],0);Ext.cmd.derive('Ext.fx.animation.SlideOut',Ext.fx.animation.Slide,{config:{out:!0}},0,0,0,0,['animation.slideOut'],0,[Ext.fx.animation,'SlideOut'],0);
Ext.cmd.derive('Ext.fx.animation.Fade',Ext.fx.animation.Abstract,{alternateClassName:'Ext.fx.animation.FadeIn',config:{out:!1,before:{display:null,opacity:0},after:{opacity:null},reverse:null},updateOut:function(newOut){var to=this.getTo(),from=this.getFrom();newOut?(from.set('opacity',1),to.set('opacity',0)):(from.set('opacity',0),to.set('opacity',1))}},0,0,0,0,['animation.fade','animation.fadeIn'],0,[Ext.fx.animation,'Fade',Ext.fx.animation,'FadeIn'],0);
Ext.cmd.derive('Ext.fx.animation.FadeOut',Ext.fx.animation.Fade,{config:{out:!0,before:{}}},0,0,0,0,['animation.fadeOut'],0,[Ext.fx.animation,'FadeOut'],0);
Ext.cmd.derive('Ext.fx.animation.Flip',Ext.fx.animation.Abstract,{config:{easing:'ease-in',direction:'right',half:!1,out:null},getData:function(){var from=this.getFrom(),to=this.getTo(),direction=this.getDirection(),out=this.getOut(),rotate=this.getHalf()?90:180,fromScale=1,toScale=1,fromRotateX=0,fromRotateY=0,toRotateX=0,toRotateY=0;out?toScale=.8:fromScale=.8;switch(direction){case this.DIRECTION_UP:out?toRotateX=rotate:fromRotateX=-rotate;break;case this.DIRECTION_DOWN:out?toRotateX=-rotate:fromRotateX=
rotate;break;case this.DIRECTION_RIGHT:out?toRotateY=rotate:fromRotateY=-rotate;break;case this.DIRECTION_LEFT:out?toRotateY=-rotate:fromRotateY=rotate}from.setTransform({rotateX:fromRotateX,rotateY:fromRotateY,scale:fromScale});to.setTransform({rotateX:toRotateX,rotateY:toRotateY,scale:toScale});return Ext.fx.animation.Abstract.prototype.getData.call(this)}},0,0,0,0,['animation.flip'],0,[Ext.fx.animation,'Flip'],0);
Ext.cmd.derive('Ext.fx.animation.Pop',Ext.fx.animation.Abstract,{alternateClassName:'Ext.fx.animation.PopIn',config:{out:!1,before:{display:null,opacity:0},after:{opacity:null}},getData:function(){var to=this.getTo(),from=this.getFrom();this.getOut()?(from.set('opacity',1),from.setTransform({scale:1}),to.set('opacity',0),to.setTransform({scale:0})):(from.set('opacity',0),from.setTransform({scale:0}),to.set('opacity',1),to.setTransform({scale:1}));return Ext.fx.animation.Abstract.prototype.getData.apply(this,
arguments)}},0,0,0,0,['animation.pop','animation.popIn'],0,[Ext.fx.animation,'Pop',Ext.fx.animation,'PopIn'],0);Ext.cmd.derive('Ext.fx.animation.PopOut',Ext.fx.animation.Pop,{config:{out:!0,before:{}}},0,0,0,0,['animation.popOut'],0,[Ext.fx.animation,'PopOut'],0);
Ext.cmd.derive('Ext.fx.Animation',Ext.Base,{constructor:function(config){var defaultClass=Ext.fx.animation.Abstract;if('string'==typeof config){var type=config;config={}}else config&&config.type&&(type=config.type);type&&(defaultClass=Ext.ClassManager.getByAlias('animation.'+type));return Ext.factory(config,defaultClass)}},1,0,0,0,0,0,[Ext.fx,'Animation'],0);
Ext.cmd.derive('Ext.fx.runner.Css',Ext.Evented,{prefixedProperties:{transform:!0,'transform-origin':!0,perspective:!0,'transform-style':!0,transition:!0,'transition-property':!0,'transition-duration':!0,'transition-timing-function':!0,'transition-delay':!0,animation:!0,'animation-name':!0,'animation-duration':!0,'animation-iteration-count':!0,'animation-direction':!0,'animation-timing-function':!0,'animation-delay':!0},lengthProperties:{top:!0,right:!0,bottom:!0,left:!0,width:!0,height:!0,'max-height':!0,
'max-width':!0,'min-height':!0,'min-width':!0,'margin-bottom':!0,'margin-left':!0,'margin-right':!0,'margin-top':!0,'padding-bottom':!0,'padding-left':!0,'padding-right':!0,'padding-top':!0,'border-bottom-width':!0,'border-left-width':!0,'border-right-width':!0,'border-spacing':!0,'border-top-width':!0,'border-width':!0,'outline-width':!0,'letter-spacing':!0,'line-height':!0,'text-indent':!0,'word-spacing':!0,'font-size':!0,translate:!0,translateX:!0,translateY:!0,translateZ:!0,translate3d:!0,x:!0,
y:!0},durationProperties:{'transition-duration':!0,'transition-delay':!0,'animation-duration':!0,'animation-delay':!0},angleProperties:{rotate:!0,rotateX:!0,rotateY:!0,rotateZ:!0,skew:!0,skewX:!0,skewY:!0},lengthUnitRegex:/([a-z%]*)$/,DEFAULT_UNIT_LENGTH:'px',DEFAULT_UNIT_ANGLE:'deg',DEFAULT_UNIT_DURATION:'ms',customProperties:{x:!0,y:!0},formattedNameCache:{x:'left',y:'top'},transformMethods3d:'translateX translateY translateZ rotate rotateX rotateY rotateZ skewX skewY scaleX scaleY scaleZ'.split(' '),
transformMethodsNo3d:'translateX translateY rotate skewX skewY scaleX scaleY'.split(' '),constructor:function(){this.transformMethods=Ext.feature.has.Css3dTransforms?this.transformMethods3d:this.transformMethodsNo3d;this.vendorPrefix=Ext.browser.getStyleDashPrefix();this.ruleStylesCache={};Ext.Evented.prototype.constructor.call(this)},getStyleSheet:function(){var styleSheet=this.styleSheet;styleSheet||(styleSheet=document.createElement('style'),styleSheet.type='text/css',(document.head||document.getElementsByTagName('head')[0]).appendChild(styleSheet),
styleSheet=document.styleSheets,this.styleSheet=styleSheet=styleSheet[styleSheet.length-1]);return styleSheet},applyRules:function(selectors){var styleSheet=this.getStyleSheet(),ruleStylesCache=this.ruleStylesCache,rules=styleSheet.cssRules,selector;for(selector in selectors){var properties=selectors[selector];var ruleStyle=ruleStylesCache[selector];void 0===ruleStyle&&(ruleStyle=rules.length,styleSheet.insertRule(selector+'{}',ruleStyle),ruleStyle=ruleStylesCache[selector]=rules.item(ruleStyle).style);
var ruleStyleCache=ruleStyle.$cache;ruleStyleCache||(ruleStyleCache=ruleStyle.$cache={});for(name in properties){var value=this.formatValue(properties[name],name);var name=this.formatName(name);ruleStyleCache[name]!==value&&(ruleStyleCache[name]=value,null===value?ruleStyle.removeProperty(name):ruleStyle.setProperty(name,value,'important'))}}return this},applyStyles:function(styles){var id,element;for(id in styles)if(styles.hasOwnProperty(id)&&(this.activeElement=element=document.getElementById(id))){element=
element.style;var properties=styles[id];for(name in properties)if(properties.hasOwnProperty(name)){var value=this.formatValue(properties[name],name);var name=this.formatName(name);null===value?element.removeProperty(name):element.setProperty(name,value,'important')}}this.activeElement=null;return this},formatName:function(name){var cache=this.formattedNameCache,formattedName=cache[name];formattedName||(formattedName=!Ext.os.is.Tizen&&Ext.feature.has.CssTransformNoPrefix||!this.prefixedProperties[name]?
name:this.vendorPrefix+name,cache[name]=formattedName);return formattedName},formatValue:function(value,name){var type=typeof value,lengthUnit=this.DEFAULT_UNIT_LENGTH,isCustom=this.customProperties[name];if(null===value)return'';if('string'===type)this.lengthProperties[name]&&(type=value.match(this.lengthUnitRegex)[1],0<type.length||(value+=lengthUnit,isCustom&&(value=this.getCustomValue(value,name))));else if('number'===type){if(0==value)return'0';if(this.lengthProperties[name])return value+=lengthUnit,
isCustom&&(value=this.getCustomValue(value,name)),value;if(this.angleProperties[name])return value+this.DEFAULT_UNIT_ANGLE;if(this.durationProperties[name])return value+this.DEFAULT_UNIT_DURATION}else{if('transform'===name){name=this.transformMethods;var transformValues=[];lengthUnit=0;for(isCustom=name.length;lengthUnit<isCustom;lengthUnit++)type=name[lengthUnit],transformValues.push(type+'('+this.formatValue(value[type],type)+')');return transformValues.join(' ')}if(Ext.isArray(value)){type=[];
lengthUnit=0;for(isCustom=value.length;lengthUnit<isCustom;lengthUnit++)type.push(this.formatValue(value[lengthUnit],name));return 0<type.length?type.join(', '):'none'}}return value},getCustomValue:function(value,name){var el=Ext.fly(this.activeElement),unit=value.match(this.lengthUnitRegex)[1];'x'===name?value=el.translateXY(parseInt(value,10)).x:'y'===name&&(value=el.translateXY(null,parseInt(value,10)).y);return value+unit}},1,0,0,0,0,0,[Ext.fx.runner,'Css'],0);
Ext.cmd.derive('Ext.fx.runner.CssTransition',Ext.fx.runner.Css,{alternateClassName:'Ext.Animator',singleton:!0,listenersAttached:!1,constructor:function(){this.runningAnimationsData={};return this.callParent(arguments)},attachListeners:function(){this.listenersAttached=!0;Ext.getWin().on('transitionend','onTransitionEnd',this)},onTransitionEnd:function(e){var target=e.target,id=target.id;id&&this.runningAnimationsData.hasOwnProperty(id)&&this.refreshRunningAnimationsData(Ext.get(target),[e.browserEvent.propertyName])},
getElementId:function(element){return element.getId?element.getId():element.id},onAnimationEnd:function(element,data,animation,isInterrupted,isReplaced){var id=this.getElementId(element),runningData=this.runningAnimationsData[id],endRules={},endData={};animation.un('stop','onAnimationStop',this);if(runningData)var runningNameMap=runningData.nameMap;endRules[id]=endData;data.onBeforeEnd&&data.onBeforeEnd.call(data.scope||this,element,isInterrupted);animation.fireEvent('animationbeforeend',animation,
element,isInterrupted);this.fireEvent('animationbeforeend',this,animation,element,isInterrupted);if(isReplaced||!isInterrupted&&!data.preserveEndState)for(isReplaced=data.toPropertyNames,id=0,runningData=isReplaced.length;id<runningData;id++){var name=isReplaced[id];runningNameMap&&!runningNameMap.hasOwnProperty(name)&&(endData[name]=null)}data.after&&Ext.merge(endData,data.after);this.applyStyles(endRules);data.onEnd&&data.onEnd.call(data.scope||this,element,isInterrupted);animation.fireEvent('animationend',
animation,element,isInterrupted);this.fireEvent('animationend',this,animation,element,isInterrupted);Ext.AnimationQueue.stop(Ext.emptyFn,animation)},onAllAnimationsEnd:function(element){var id=this.getElementId(element),endRules={};delete this.runningAnimationsData[id];endRules[id]={'transition-property':null,'transition-duration':null,'transition-timing-function':null,'transition-delay':null};this.applyStyles(endRules);this.fireEvent('animationallend',this,element)},hasRunningAnimations:function(element){element=
this.getElementId(element);var runningAnimationsData=this.runningAnimationsData;return runningAnimationsData.hasOwnProperty(element)&&0<runningAnimationsData[element].sessions.length},refreshRunningAnimationsData:function(element,propertyNames,interrupt,replace){var id=this.getElementId(element),runningData=this.runningAnimationsData[id];if(runningData){id=runningData.nameMap;var nameList=runningData.nameList,sessions=runningData.sessions,subLn,i,hasCompletedSession=!1;interrupt=!!interrupt;replace=
!!replace;if(!sessions)return this;var ln=sessions.length;if(0===ln)return this;if(replace){runningData.nameMap={};for(i=nameList.length=0;i<ln;i++){var session=sessions[i];this.onAnimationEnd(element,session.data,session.animation,interrupt,replace)}sessions.length=0}else for(i=0;i<ln;i++){session=sessions[i];var map=session.map;var list=session.list;runningData=0;for(subLn=propertyNames.length;runningData<subLn;runningData++){var name=propertyNames[runningData];map[name]&&(delete map[name],Ext.Array.remove(list,
name),session.length--,0==--id[name]&&(delete id[name],Ext.Array.remove(nameList,name)))}0==session.length&&(sessions.splice(i,1),i--,ln--,hasCompletedSession=!0,this.onAnimationEnd(element,session.data,session.animation,interrupt))}if(!replace&&!interrupt&&0==sessions.length&&hasCompletedSession)this.onAllAnimationsEnd(element)}},getRunningData:function(id){var runningAnimationsData=this.runningAnimationsData;runningAnimationsData.hasOwnProperty(id)||(runningAnimationsData[id]={nameMap:{},nameList:[],
sessions:[]});return runningAnimationsData[id]},getTestElement:function(){var testElement=this.testElement,iframe=this.iframe;if(testElement)testElement.ownerDocument.defaultView!==iframe.contentWindow&&(iframe.contentDocument.body.appendChild(testElement),this.testElementComputedStyle=iframeDocument.defaultView.getComputedStyle(testElement));else{iframe=this.iframe=document.createElement('iframe');iframe.setAttribute('tabIndex',-1);testElement=iframe.style;testElement.setProperty('visibility','hidden',
'important');testElement.setProperty('width','0px','important');testElement.setProperty('height','0px','important');testElement.setProperty('position','absolute','important');testElement.setProperty('border','0px','important');testElement.setProperty('zIndex','-1000','important');document.body.appendChild(iframe);var iframeDocument=iframe.contentDocument;iframeDocument.open();iframeDocument.writeln('\x3c/body\x3e');iframeDocument.close();this.testElement=testElement=iframeDocument.createElement('div');
testElement.style.setProperty('position','absolute','important');iframeDocument.body.appendChild(testElement);this.testElementComputedStyle=iframeDocument.defaultView.getComputedStyle(testElement)}return testElement},getCssStyleValue:function(name,value){var testElement=this.getTestElement(),computedStyle=this.testElementComputedStyle,style=testElement.style;style.setProperty(name,value);Ext.browser.is.Firefox&&testElement.offsetHeight;value=computedStyle.getPropertyValue(name);style.removeProperty(name);
return value},run:function(animations){var me=this,Function=Ext.Function,isLengthPropertyMap=me.lengthProperties,fromData={},toData={},data={},transitionData={},element,fromPropertyNames,toPropertyNames,j,ln,propertiesLength,computedValue;me.listenersAttached||me.attachListeners();animations=Ext.Array.from(animations);var i=0;for(ln=animations.length;i<ln;i++){var animation=animations[i];animation=Ext.factory(animation,Ext.fx.Animation);me.activeElement=element=animation.getElement();Ext.AnimationQueue.start(Ext.emptyFn,
animation);var runningData=window.getComputedStyle(element.dom);var elementId=me.getElementId(element);data[elementId]=data=Ext.merge({},animation.getData());animation.onBeforeStart&&animation.onBeforeStart.call(animation.scope||me,element);animation.fireEvent('animationstart',animation,data);me.fireEvent('animationstart',me,animation,data);var before=data.before;var from=data.from;var to=data.to;data.fromPropertyNames=fromPropertyNames=[];data.toPropertyNames=toPropertyNames=[];for(name in to)if(to.hasOwnProperty(name)){to[name]=
propertiesLength=me.formatValue(to[name],name);var formattedName=me.formatName(name);(j=isLengthPropertyMap.hasOwnProperty(name))||(propertiesLength=me.getCssStyleValue(formattedName,propertiesLength));from.hasOwnProperty(name)?(from[name]=computedValue=me.formatValue(from[name],name),j||(computedValue=me.getCssStyleValue(formattedName,computedValue)),propertiesLength!==computedValue&&(fromPropertyNames.push(formattedName),toPropertyNames.push(formattedName))):(computedValue=runningData.getPropertyValue(formattedName),
propertiesLength!==computedValue&&toPropertyNames.push(formattedName))}propertiesLength=toPropertyNames.length;if(0===propertiesLength)me.onAnimationEnd(element,data,animation);else{runningData=me.getRunningData(elementId);formattedName=runningData.sessions;0<formattedName.length&&me.refreshRunningAnimationsData(element,Ext.Array.merge(fromPropertyNames,toPropertyNames),!0,data.replacePrevious);computedValue=runningData.nameMap;runningData=runningData.nameList;var sessionNameMap={};for(j=0;j<propertiesLength;j++){var name=
toPropertyNames[j];sessionNameMap[name]=!0;computedValue.hasOwnProperty(name)?computedValue[name]++:(computedValue[name]=1,runningData.push(name))}element={element:element,map:sessionNameMap,list:toPropertyNames.slice(),length:propertiesLength,data:data,animation:animation};formattedName.push(element);animation.on('stop','onAnimationStop',me);before=Ext.apply({},before);Ext.apply(before,from);0<runningData.length&&(fromPropertyNames=Ext.Array.difference(runningData,fromPropertyNames),toPropertyNames=
Ext.Array.merge(fromPropertyNames,toPropertyNames),before['transition-property']=fromPropertyNames);fromData[elementId]=before;toData[elementId]=Ext.apply({},to);transitionData[elementId]={'transition-property':toPropertyNames,'transition-duration':data.duration,'transition-timing-function':data.easing,'transition-delay':data.delay};animation.startTime=Date.now()}}me.activeElement=null;var message=me.$className;me.applyStyles(fromData);var doApplyTo=function(e){e.data===message&&e.source===window&&
(window.removeEventListener('message',doApplyTo,!1),me.applyStyles(toData))};Function.requestAnimationFrame(function(){Ext.isIE?(me.applyStyles(transitionData),Function.requestAnimationFrame(function(){window.addEventListener('message',doApplyTo,!1);window.postMessage(message,'*')})):(Ext.merge(toData,transitionData),window.addEventListener('message',doApplyTo,!1),window.postMessage(message,'*'))})},onAnimationStop:function(animation){var runningAnimationsData=this.runningAnimationsData,id,ln;for(id in runningAnimationsData)if(runningAnimationsData.hasOwnProperty(id)){var runningData=
runningAnimationsData[id];runningData=runningData.sessions;var i=0;for(ln=runningData.length;i<ln;i++){var session=runningData[i];session.animation===animation&&this.refreshRunningAnimationsData(session.element,session.list.slice(),!1)}}}},1,0,0,0,0,0,[Ext.fx.runner,'CssTransition',Ext,'Animator'],0);
Ext.cmd.derive('Ext.mixin.Container',Ext.Mixin,{mixinConfig:{id:'container'},isContainer:!0,config:{referenceHolder:!1},getReferences:function(){Ext.ComponentManager.fixReferences();return this.refs||null},lookup:function(key){var refs=this.getReferences();return refs&&refs[key]||null},lookupReference:function(key){return this.lookup(key)},privates:{attachReference:function(component){this.destroying||this.destroyed||((this.refs||(this.refs={}))[component.referenceKey]=component)},clearReference:function(component){var refs=
this.refs,key=component.referenceKey;refs&&key&&(component.viewModelKey=component.referenceKey=refs[key]=null)},containerOnAdded:function(component,instanced){instanced&&Ext.ComponentManager.markReferencesDirty()},containerOnRemoved:function(destroying){!destroying&&(destroying=this.lookupReferenceHolder())&&(Ext.ComponentManager.markReferencesDirty(),destroying.clearReferences())},clearReferences:function(){this.refs=null},initContainerInheritedState:function(inheritedState,inheritedStateInner){inheritedStateInner=
this.getController();var session=this.getSession(),viewModel=this.getConfig('viewModel',!0),reference=this.getReference(),referenceHolder=this.getReferenceHolder();inheritedStateInner?(inheritedState.referenceHolder=inheritedStateInner,referenceHolder=!0):referenceHolder&&(inheritedState.referenceHolder=this);referenceHolder?inheritedState.referencePath='':reference&&this.isParentReference&&(inheritedState.referencePath=this.referenceKey+'.');session&&(inheritedState.session=session);viewModel?inheritedState.viewModelPath=
'':reference&&this.isParentReference&&(inheritedState.viewModelPath=this.viewModelKey+'.')},setupReference:function(reference){var len;reference&&'\x3e'===reference.charAt(len=reference.length-1)&&(this.isParentReference=!0,reference=reference.substring(0,len));return reference}}},0,0,0,0,0,0,[Ext.mixin,'Container'],0);
Ext.cmd.derive('Ext.mixin.Responsive',Ext.Mixin,function(Responsive){return{mixinConfig:{id:'responsive',after:{destroy:'destroy'}},config:{responsiveConfig:{$value:void 0,merge:function(newValue,oldValue,target,mixinClass){if(!newValue)return oldValue;oldValue=oldValue?Ext.Object.chain(oldValue):{};for(var rule in newValue)mixinClass&&rule in oldValue||(oldValue[rule]={fn:null,config:newValue[rule]});return oldValue}},responsiveFormulas:{$value:0,merge:function(newValue,oldValue,target,mixinClass){return this.mergeNew(newValue,
oldValue,target,mixinClass)}}},destroy:function(){Responsive.unregister(this)},privates:{statics:{active:!1,all:{},context:Ext.Object.chain(Ext.platformTags),count:0,nextId:0,activate:function(){Responsive.active=!0;Responsive.updateContext();Ext.on('resize',Responsive.onResize,Responsive)},deactivate:function(){Responsive.active=!1;Ext.un('resize',Responsive.onResize,Responsive)},notify:function(){var all=Responsive.all,context=Responsive.context,globalEvents=Ext.GlobalEvents,timer=Responsive.timer,
id;timer&&(Responsive.timer=null,Ext.asapCancel(timer));Responsive.updateContext();Ext.suspendLayouts();globalEvents.fireEvent('beforeresponsiveupdate',context);for(id in all)all[id].setupResponsiveContext();globalEvents.fireEvent('beginresponsiveupdate',context);for(id in all)all[id].updateResponsiveState();globalEvents.fireEvent('responsiveupdate',context);Ext.resumeLayouts(!0)},onResize:function(){Responsive.timer||(Responsive.timer=Ext.asap(Responsive.onTimer))},onTimer:function(){Responsive.timer=
null;Responsive.notify()},processConfig:function(instance,instanceConfig,name){instanceConfig=instanceConfig&&instanceConfig[name];var config=instance.config;if(instanceConfig){var cfg=instance.self.getConfigurator();cfg=cfg.configs[name];config[name]=cfg.merge(instanceConfig,config[name],instance)}},register:function(responder){var id=responder.$responsiveId;id||(responder.$responsiveId=id=++Responsive.nextId,Responsive.all[id]=responder,1===++Responsive.count&&Responsive.activate())},unregister:function(responder){var id=
responder.$responsiveId;id in Responsive.all&&(responder.$responsiveId=null,delete Responsive.all[id],0===--Responsive.count&&Responsive.deactivate())},updateContext:function(){var El=Ext.Element,width=El.getViewportWidth();El=El.getViewportHeight();var context=Responsive.context;context.width=width;context.height=El;context.tall=width<El;context.wide=!context.tall;context.landscape=context.portrait=!1;context.platform||(context.platform=Ext.platformTags);context[Ext.dom.Element.getOrientation()]=
!0}},afterClassMixedIn:function(targetClass){var proto=targetClass.prototype,responsiveConfig=proto.responsiveConfig,responsiveFormulas=proto.responsiveFormulas;if(responsiveConfig||responsiveFormulas){var config={};responsiveConfig&&(delete proto.responsiveConfig,config.responsiveConfig=responsiveConfig);responsiveFormulas&&(delete proto.responsiveFormulas,config.responsiveFormulas=responsiveFormulas);targetClass.getConfigurator().add(config)}},applyResponsiveConfig:function(rules){for(var rule in rules)rules[rule].fn=
Ext.createRuleFn(rule);return rules},applyResponsiveFormulas:function(formulas){var ret={},fn,name;if(formulas)for(name in formulas)Ext.isString(fn=formulas[name])&&(fn=Ext.createRuleFn(fn)),ret[name]=fn;return ret},getResponsiveState:function(){var context=Responsive.context,rules=this.getResponsiveConfig(),ret={},rule;if(rules)for(rule in rules){var entry=rules[rule];entry.fn.call(this,context)&&Ext.merge(ret,entry.config)}return ret},setupResponsiveContext:function(){var formulas=this.getResponsiveFormulas(),
context=Responsive.context,name;if(formulas)for(name in formulas)context[name]=formulas[name].call(this,context)},transformInstanceConfig:function(instanceConfig){Responsive.register(this);instanceConfig&&(Responsive.processConfig(this,instanceConfig,'responsiveConfig'),Responsive.processConfig(this,instanceConfig,'responsiveFormulas'));this.setupResponsiveContext();var ret=this.getResponsiveState();instanceConfig&&(ret=Ext.merge({},instanceConfig,ret),delete ret.responsiveConfig,delete ret.responsiveFormulas);
return ret},updateResponsiveState:function(){var config=this.getResponsiveState();this.setConfig(config)}}}},0,0,0,0,0,0,[Ext.mixin,'Responsive'],0);
Ext.cmd.derive('Ext.perf.Accumulator',Ext.Base,function(){function adjustSet(set,time){set.sum+=time;set.min=Math.min(set.min,time);set.max=Math.max(set.max,time)}function leaveFrame(time){time=time?time:getTimestamp()-this.time;var accum=this.accum;++accum.count;--accum.depth||adjustSet(accum.total,time);adjustSet(accum.pure,time-this.childTime);if(currentFrame=this.parent)++currentFrame.accum.childCount,currentFrame.childTime+=time}function makeTap(me,fn){return function(){var frame=me.enter(),
ret=fn.apply(this,arguments);frame.leave();return ret}}function setToJSON(count,childCount,calibration,set){var data={avg:0,min:set.min,max:set.max,sum:0};count&&(data.sum=set.sum-childCount*(calibration||0),data.avg=data.sum/count);return data}var currentFrame=null,khrome=Ext.global.chrome,formatTpl,getTimestamp=function(){getTimestamp=Ext.now;if(Ext.isChrome&&khrome&&khrome.Interval){var interval=new khrome.Interval;interval.start();getTimestamp=function(){return interval.microseconds()/1E3}}else if(window.ActiveXObject)try{var toolbox=
new ActiveXObject('SenchaToolbox.Toolbox');Ext.senchaToolbox=toolbox;getTimestamp=function(){return toolbox.milliseconds}}catch(e){}Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=getTimestamp;return getTimestamp()};return{constructor:function(name){this.count=this.childCount=this.depth=this.maxDepth=0;this.pure={min:Number.MAX_VALUE,max:0,sum:0};this.total={min:Number.MAX_VALUE,max:0,sum:0};this.name=name},statics:{getTimestamp:getTimestamp},format:function(calibration){formatTpl||(formatTpl=
new Ext.XTemplate('{name} - {count} call(s)\x3ctpl if\x3d"count"\x3e\x3ctpl if\x3d"childCount"\x3e ({childCount} children)\x3c/tpl\x3e\x3ctpl if\x3d"depth - 1"\x3e ({depth} deep)\x3c/tpl\x3e\x3ctpl for\x3d"times"\x3e, {type}: {[this.time(values.sum)]} msec (avg\x3d{[this.time(values.sum / parent.count)]})\x3c/tpl\x3e\x3c/tpl\x3e',{time:function(t){return Math.round(100*t)/100}}));calibration=this.getData(calibration);calibration.name=this.name;calibration.pure.type='Pure';calibration.total.type='Total';
calibration.times=[calibration.pure,calibration.total];return formatTpl.apply(calibration)},getData:function(calibration){return{count:this.count,childCount:this.childCount,depth:this.maxDepth,pure:setToJSON(this.count,this.childCount,calibration,this.pure),total:setToJSON(this.count,this.childCount,calibration,this.total)}},enter:function(){var frame={accum:this,leave:leaveFrame,childTime:0,parent:currentFrame};++this.depth;this.maxDepth<this.depth&&(this.maxDepth=this.depth);currentFrame=frame;
frame.time=getTimestamp();return frame},monitor:function(fn,scope,args){var frame=this.enter();args?fn.apply(scope,args):fn.call(scope);frame.leave()},report:function(){Ext.log(this.format())},tap:function(className,methodName){var me=this,methods='string'===typeof methodName?[methodName]:methodName,klass,statik,i,parts,length,name,src;Ext.ClassManager.onCreated(function(){if('string'===typeof className)for(klass=Ext.global,parts=className.split('.'),i=0,length=parts.length;i<length;++i)klass=klass[parts[i]];
else klass=className;i=0;for(length=methods.length;i<length;++i)name=methods[i],(statik='!'===name.charAt(0))?name=name.substring(1):statik=!(name in klass.prototype),src=statik?klass:klass.prototype,src[name]=makeTap(me,src[name])},me,className);return me}}},1,0,0,0,0,0,[Ext.perf,'Accumulator'],function(){Ext.perf.getTimestamp=this.getTimestamp});
Ext.cmd.derive('Ext.perf.Monitor',Ext.Base,{singleton:!0,alternateClassName:'Ext.Perf',constructor:function(){this.accumulators=[];this.accumulatorsByName={}},calibrate:function(){var accum=new Ext.perf.Accumulator('$'),total=accum.total,getTimestamp=Ext.perf.Accumulator.getTimestamp,count=0;var startTime=getTimestamp();do{var frame=accum.enter();frame.leave();++count}while(100>total.sum);return(getTimestamp()-startTime)/count},get:function(name){var accum=this.accumulatorsByName[name];accum||(this.accumulatorsByName[name]=
accum=new Ext.perf.Accumulator(name),this.accumulators.push(accum));return accum},enter:function(name){return this.get(name).enter()},monitor:function(name,fn,scope){this.get(name).monitor(fn,scope)},report:function(){var accumulators=this.accumulators,calibration=this.calibrate();accumulators.sort(function(a,b){return a.name<b.name?-1:b.name<a.name?1:0});this.updateGC();Ext.log('Calibration: '+Math.round(100*calibration)/100+' msec/sample');Ext.each(accumulators,function(accum){Ext.log(accum.format(calibration))})},
getData:function(all){var ret={};Ext.each(this.accumulators,function(accum){if(all||accum.count)ret[accum.name]=accum.getData()});return ret},reset:function(){Ext.each(this.accumulators,function(accum){accum.count=accum.childCount=accum.depth=accum.maxDepth=0;accum.pure={min:Number.MAX_VALUE,max:0,sum:0};accum.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var accumGC=this.accumulatorsByName.GC,toolbox=Ext.senchaToolbox;if(accumGC&&(accumGC.count=toolbox.garbageCollectionCounter||
0,accumGC.count)){var bucket=accumGC.pure;accumGC.total.sum=bucket.sum=toolbox.garbageCollectionMilliseconds;bucket.min=bucket.max=bucket.sum/accumGC.count;bucket=accumGC.total;bucket.min=bucket.max=bucket.sum/accumGC.count}},watchGC:function(){Ext.perf.getTimestamp();var toolbox=Ext.senchaToolbox;toolbox&&(this.get('GC'),toolbox.watchGarbageCollector(!1))},setup:function(config){config||(config={render:{'Ext.Component':'render'},layout:{'Ext.layout.Context':'run'}});this.currentConfig=config;var key,
className;for(key in config)if(config.hasOwnProperty(key)){var prop=config[key];var accum=Ext.Perf.get(key);for(className in prop)if(prop.hasOwnProperty(className)){var methods=prop[className];accum.tap(className,methods)}}this.watchGC()},setupLog:function(config){var className,cls,method;for(className in config)if(config.hasOwnProperty(className)&&(cls=Ext.ClassManager.get(className))){var methods=config[className];var override={};for(method in methods)override[method]=function(methodName,idProp){return function(){var idHolder;
var before=+Date.now();var ret=this.callParent(arguments);before=+Date.now()-before;if(window.console&&0<before){if(idHolder='this'===idProp?this:'string'===typeof idProp?this[idProp]:'number'===typeof idProp?arguments[idProp]:null)var id=idHolder.id;null!=id?console.log(methodName+' for '+id+': '+before+'ms'):console.log(methodName+' for unknown: '+before+'ms');console.trace&&console.trace()}return ret}}(method,methods[method]);Ext.override(cls,override)}}},1,0,0,0,0,0,[Ext.perf,'Monitor',Ext,'Perf'],
0);
Ext.cmd.derive('Ext.plugin.Abstract',Ext.Base,{alternateClassName:'Ext.AbstractPlugin',isPlugin:!0,constructor:function(config){config&&(this.pluginConfig=config,this.initConfig(config))},clonePlugin:function(overrideCfg){return new this.self(Ext.apply({},overrideCfg,this.pluginConfig))},getCmp:function(){return this.cmp},setCmp:function(host){this.cmp=host},init:Ext.emptyFn,destroy:function(){this.cmp=this.pluginConfig=null;this.callParent()},onClassExtended:function(cls,data,hooks){hooks=data.alias;cls=
cls.prototype;hooks&&!data.ptype&&(Ext.isArray(hooks)&&(hooks=hooks[0]),cls.ptype=hooks.split('plugin.')[1])},resolveListenerScope:function(defaultScope){var cmp=this.getCmp(),scope;cmp&&(scope=cmp.resolveSatelliteListenerScope(this,defaultScope));return scope||this.mixins.observable.resolveListenerScope.call(this,defaultScope)}},1,0,0,0,0,0,[Ext.plugin,'Abstract',Ext,'AbstractPlugin'],0);
Ext.define('Ext.overrides.plugin.Abstract',{override:'Ext.plugin.Abstract',$configStrict:!1,$configPrefixed:!1,disabled:!1,getState:null,applyState:null,enable:function(){this.disabled=!1},disable:function(){this.disabled=!0}});
Ext.cmd.derive('Ext.util.ItemCollection',Ext.util.MixedCollection,{alternateClassName:'Ext.ItemCollection',getKey:function(item){return item.getItemId&&item.getItemId()},has:function(item){return this.map.hasOwnProperty(item.getId())}},0,0,0,0,0,0,[Ext.util,'ItemCollection',Ext,'ItemCollection'],0);
Ext.cmd.derive('Ext.util.LocalStorage',Ext.Base,{id:null,destroyed:!1,lazyKeys:!0,prefix:'',session:!1,_keys:null,_store:null,_users:0,statics:{cache:{},get:function(id){var cache=this.cache,config={_users:1},instance;Ext.isString(id)?config.id=id:Ext.apply(config,id);(instance=cache[config.id])?++instance._users:instance=new this(config);return instance},supported:!0},constructor:function(config){Ext.apply(this,config);this._users&&(Ext.util.LocalStorage.cache[this.id]=this);this.init()},init:function(){var id=
this.id;!this.prefix&&id&&(this.prefix=id+'-');this._store=this.session?window.sessionStorage:window.localStorage},destroy:function(){delete Ext.util.LocalStorage.cache[this.id];this._store=this._keys=null;this.callParent()},getKeys:function(){var store=this._store,prefix=this.prefix,keys=this._keys,n=prefix.length,i;if(!keys)for(this._keys=keys=[],i=store.length;i--;){var key=store.key(i);key.length>n&&prefix===key.substring(0,n)&&keys.push(key.substring(n))}return keys},release:function(){--this._users||
this.destroy()},save:Ext.emptyFn,clear:function(){var store=this._store,prefix=this.prefix,keys=this._keys||this.getKeys(),i;for(i=keys.length;i--;)store.removeItem(prefix+keys[i]);keys.length=0},key:function(index){var keys=this._keys||this.getKeys();return 0<=index&&index<keys.length?keys[index]:null},getItem:function(key){return this._store.getItem(this.prefix+key)},removeItem:function(key){var store=this._store,keys=this._keys,length=store.length;store.removeItem(this.prefix+key);keys&&length!==
store.length&&(this.lazyKeys?this._keys=null:Ext.Array.remove(keys,key))},setItem:function(key,value){var store=this._store,length=store.length,keys=this._keys;store.setItem(this.prefix+key,value);keys&&length!==store.length&&keys.push(key)}},1,0,0,0,0,0,[Ext.util,'LocalStorage'],function(){'localStorage'in window||(Ext.isIE?this.override({data:null,flushDelay:1,init:function(){var me=this,data=me.data;me.el=data=document.createElement('div');data.id=me.id||(me.id='extjs-localstore');data.addBehavior('#default#userdata');
Ext.getHead().dom.appendChild(data);data.load(me.id);data=data.getAttribute('xdata');me.data=data=data?Ext.decode(data):{};me._flushFn=function(){me._timer=null;me.save(0)}},destroy:function(){var el=this.el;el&&(this._timer&&this.save(),el.parentNode.removeChild(el),this.data=this.el=null,this.callParent())},getKeys:function(){var keys=this._keys;keys||(this._keys=keys=Ext.Object.getKeys(this.data));return keys},save:function(delay){delay?this._timer||(this._timer=Ext.defer(this._flushFn,delay)):
(this._timer&&(clearTimeout(this._timer),this._timer=null),this.el.setAttribute('xdata',Ext.encode(this.data)),this.el.save(this.id))},clear:function(){this.data={};this._keys=null;this.save(this.flushDelay)},getItem:function(key){var data=this.data;return key in data?data[key]:null},removeItem:function(key){var keys=this._keys,data=this.data;key in data&&(delete data[key],keys&&(this.lazyKeys?this._keys=null:Ext.Array.remove(keys,key)),this.save(this.flushDelay))},setItem:function(key,value){var data=
this.data,keys=this._keys;!keys||key in data||keys.push(key);data[key]=value;this.save(this.flushDelay)}}):this.supported=!1)});Ext.cmd.derive('Ext.util.TaskManager',Ext.util.TaskRunner,{alternateClassName:['Ext.TaskManager'],singleton:!0},0,0,0,0,0,0,[Ext.util,'TaskManager',Ext,'TaskManager'],0);
Ext.cmd.derive('Ext.util.TextMetrics',Ext.Base,{statics:{shared:null,measure:function(el,text,fixedWidth){var shared=this.shared;shared||(shared=this.shared=new this(el,fixedWidth));shared.bind(el);shared.setFixedWidth(fixedWidth||'auto');return shared.getSize(text)},destroy:function(){Ext.destroy(this.shared);this.shared=null}},constructor:function(bindTo,fixedWidth){var measure=Ext.getBody().createChild({role:'presentation',cls:'x-textmetrics'});measure.setVisibilityMode(1);this.measure=measure;
bindTo&&this.bind(bindTo);measure.position('absolute');measure.setLocalXY(-1E3,-1E3);measure.hide();fixedWidth&&measure.setWidth(fixedWidth)},getSize:function(text){var measure=this.measure;measure.setHtml(text);text=measure.getSize();measure.setHtml('');return text},bind:function(el){this.el=Ext.get(el);this.measure.setStyle(this.el.getStyle('font-size font-style font-weight font-family line-height text-transform letter-spacing word-break'.split(' ')))},setFixedWidth:function(width){this.measure.setWidth(width)},
getWidth:function(text){this.measure.dom.style.width='auto';return this.getSize(text).width},getHeight:function(text){return this.getSize(text).height},destroy:function(){this.el=this.measure=Ext.destroy(this.measure);this.callParent()}},1,0,0,0,0,0,[Ext.util,'TextMetrics'],function(){Ext.Element.override({getTextWidth:function(text,min,max){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.valueFrom(text,this.dom.innerHTML,!0)).width,min||0,max||1E6)}})});
Ext.define(null,{override:'Ext.event.publisher.Focus',compatibility:Ext.isIE10m,publishDelegatedDomEvent:function(e){var body=document.body,el=Ext.synchronouslyFocusing;(!el||('focusout'!==e.type||e.srcElement!==el&&e.srcElement!==window||e.toElement!==body)&&('focusin'!==e.type||e.srcElement!==body&&e.srcElement!==window||e.fromElement!==el||null!==e.toElement))&&this.callParent([e])}});
Ext.define(null,{override:'Ext.form.field.Checkbox',compatibility:Ext.isIE8,changeEventName:'propertychange',onChangeEvent:function(e){this.duringSetRawValue||'checked'!==e.browserEvent.propertyName||this.callParent([e])},updateCheckedCls:function(checked){var displayEl=this.displayEl;this.callParent([checked]);displayEl&&checked!==this.lastValue&&displayEl.repaint()}});
Ext.define(null,{override:'Ext.form.field.Radio',compatibility:Ext.isIE8,getSubTplData:function(fieldData){fieldData=this.callParent([fieldData]);delete fieldData.checked;return fieldData},afterRender:function(){this.callParent();this.checked&&(this.inputEl.dom.checked=!0)},onChange:function(newValue,oldValue){this.callSuper([newValue,oldValue])}});
Ext.define(null,{override:'Ext.scroll.Scroller',compatibility:Ext.isIE8,privates:{doScrollTo:function(x,y,animate){var element=this.getElement();if(element&&!element.destroyed){var dom=this.getElement().dom;var xInf=Infinity===x;var yInf=Infinity===y;if(xInf||yInf){var maxPosition=this.getMaxPosition();xInf&&(x=maxPosition.x);yInf&&(y=maxPosition.y)}x=this.convertX(x);animate?element.animate(Ext.mergeIf({to:{scrollTop:y,scrollLeft:x}},animate)):(null!=x&&null!=y&&(this.deferDomScroll=!0),null!=y&&
(dom.scrollTop=y),null!=x&&(dom.scrollLeft=x),this.deferDomScroll&&(this.deferDomScroll=!1,+dom.scrollLeft,dom.scrollLeft=x));this.positionDirty=!0}},onDomScroll:function(){this.deferDomScroll||this.callParent()}}});
Ext.cmd.derive('Ext.Action',Ext.Base,{constructor:function(config){this.initialConfig=config;this.itemId=config.itemId=config.itemId||config.id||Ext.id();this.items=[]},isAction:!0,setText:function(text){this.initialConfig.text=text;this.callEach('setText',[text])},getText:function(){return this.initialConfig.text},setIconCls:function(cls){this.initialConfig.iconCls=cls;this.callEach('setIconCls',[cls])},setGlyph:function(glyph){this.initialConfig.glyph=glyph;this.callEach('setGlyph',[glyph])},getIconCls:function(){return this.initialConfig.iconCls},
setDisabled:function(disabled){this.initialConfig.disabled=disabled;this.callEach('setDisabled',[disabled])},enable:function(){this.setDisabled(!1)},disable:function(){this.setDisabled(!0)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(hidden){this.initialConfig.hidden=hidden;this.callEach('setVisible',[!hidden])},show:function(){this.setHidden(!1)},hide:function(){this.setHidden(!0)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(handler,
scope){this.initialConfig.handler=handler;this.initialConfig.scope=scope;this.callEach('setHandler',[handler,scope])},each:function(fn,scope){Ext.each(this.items,fn,scope)},callEach:function(fnName,args){var items=this.items,i=0,len=items.length;for(Ext.suspendLayouts();i<len;i++){var item=items[i];item[fnName].apply(item,args)}Ext.resumeLayouts(!0)},addComponent:function(comp){this.items.push(comp);comp.on('destroy',this.removeComponent,this)},removeComponent:function(comp){Ext.Array.remove(this.items,
comp)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||Ext.global,arguments)}},1,0,0,0,0,0,[Ext,'Action'],0);
Ext.cmd.derive('Ext.ElementLoader',Ext.Base,{statics:{Renderer:{Html:function(loader,response,active){loader.getTarget().setHtml(response.responseText,!0===active.scripts,active.rendererScope);return!0}}},url:null,params:null,baseParams:null,autoLoad:!1,target:null,loadMask:!1,ajaxOptions:null,scripts:!1,isLoader:!0,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.setTarget(this.target);this.autoLoad&&(config=this.autoLoad,!0===config&&(config=null),this.load(config))},
setTarget:function(target){target=Ext.get(target);this.target&&this.target!==target&&this.abort();this.target=target},getTarget:function(){return this.target||null},abort:function(){var active=this.active;void 0!==active&&(Ext.Ajax.abort(active.request),active.mask&&this.removeMask(),delete this.active)},removeMask:function(){this.target.unmask()},addMask:function(mask){this.target.mask(!0===mask?null:mask)},load:function(options){options=Ext.apply({},options);var mask=Ext.isDefined(options.loadMask)?
options.loadMask:this.loadMask,params=Ext.apply({},options.params),ajaxOptions=Ext.apply({},options.ajaxOptions),callback=options.callback||this.callback,scope=options.scope||this.scope||this;Ext.applyIf(ajaxOptions,this.ajaxOptions);Ext.applyIf(options,ajaxOptions);Ext.applyIf(params,this.params);Ext.apply(params,this.baseParams);Ext.applyIf(options,{url:this.url});Ext.apply(options,{scope:this,params:params,callback:this.onComplete});!1!==this.fireEvent('beforeload',this,options)&&(mask&&this.addMask(mask),
this.active={options:options,mask:mask,scope:scope,callback:callback,success:options.success||this.success,failure:options.failure||this.failure,renderer:options.renderer||this.renderer,scripts:Ext.isDefined(options.scripts)?options.scripts:this.scripts},this.active.request=Ext.Ajax.request(options),this.setOptions(this.active,options))},setOptions:function(active,options){active.rendererScope=options.rendererScope||this.rendererScope||this},onComplete:function(options,success,response){var active=
this.active;if(active){var scope=active.scope;var rendererScope=active.rendererScope;success&&(success=!1!==this.getRenderer(active.renderer).call(rendererScope,this,response,active));success?(Ext.callback(active.success,scope,[this,response,options]),this.fireEvent('load',this,response,options)):(Ext.callback(active.failure,scope,[this,response,options]),this.fireEvent('exception',this,response,options));Ext.callback(active.callback,scope,[this,success,response,options]);active.mask&&this.removeMask()}delete this.active},
getRenderer:function(renderer){return Ext.isFunction(renderer)?renderer:this.statics().Renderer.Html},startAutoRefresh:function(interval,options){var me=this;me.stopAutoRefresh();me.autoRefresh=Ext.interval(function(){me.load(options)},interval)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);this.autoRefresh=null},isAutoRefreshing:function(){return!!this.autoRefresh},destroy:function(){this.stopAutoRefresh();this.abort();this.callParent()}},1,0,0,0,0,[[Ext.util.Observable.prototype.mixinId||
Ext.util.Observable.$className,Ext.util.Observable]],[Ext,'ElementLoader'],0);
Ext.cmd.derive('Ext.ComponentLoader',Ext.ElementLoader,{statics:{Renderer:{Data:function(loader,response,active){active=!0;try{loader.getTarget().update(Ext.decode(response.responseText))}catch(e){active=!1}return active},Component:function(loader,response,active){var success=!0;loader=loader.getTarget();var items=[];try{items=Ext.decode(response.responseText)}catch(e){success=!1}success&&(loader.suspendLayouts(),active.removeAll&&loader.removeAll(),loader.add(items),loader.resumeLayouts(!0));return success}}},
target:null,loadOnRender:!1,loadMask:!1,renderer:'html',setTarget:function(target){Ext.isString(target)&&(target=Ext.getCmp(target));this.target&&this.target!==target&&this.abort();(this.target=target)&&this.loadOnRender&&(target.rendered?this.doLoadOnRender():this.mon(target,'render',this.doLoadOnRender,this))},doLoadOnRender:function(){var loadOnRender=this.loadOnRender;this.load(Ext.isObject(loadOnRender)?loadOnRender:null)},removeMask:function(){this.target.setLoading(!1)},addMask:function(mask){this.target.setLoading(mask)},
setOptions:function(active,options){active.removeAll=Ext.isDefined(options.removeAll)?options.removeAll:this.removeAll;active.rendererScope=options.rendererScope||this.rendererScope||this.target},getRenderer:function(renderer){if(Ext.isFunction(renderer))return renderer;var renderers=this.statics().Renderer;switch(renderer){case 'component':return renderers.Component;case 'data':return renderers.Data;default:return Ext.ElementLoader.Renderer.Html}}},0,0,0,0,0,0,[Ext,'ComponentLoader'],0);
Ext.cmd.derive('Ext.layout.SizeModel',Ext.Base,{constructor:function(config){var SizeModel=this.self,sizeModelsArray=SizeModel.sizeModelsArray;Ext.apply(this,config);this[config=this.name]=!0;this.fixed=!(this.auto=this.natural||this.shrinkWrap);sizeModelsArray[this.ordinal=sizeModelsArray.length]=SizeModel[config]=SizeModel.sizeModels[config]=this},statics:{sizeModelsArray:[],sizeModels:{}},calculated:!1,configured:!1,constrainedMax:!1,constrainedMin:!1,natural:!1,shrinkWrap:!1,calculatedFromConfigured:!1,
calculatedFromNatural:!1,calculatedFromShrinkWrap:!1,names:null},1,0,0,0,0,0,[Ext.layout,'SizeModel'],function(){var sizeModelsArray=this.sizeModelsArray,j,n,pairs;new this({name:'calculated'});new this({name:'configured',names:{width:'width',height:'height'}});new this({name:'natural'});new this({name:'shrinkWrap'});new this({name:'calculatedFromConfigured',configured:!0,calculatedFrom:!0,names:{width:'width',height:'height'}});new this({name:'calculatedFromNatural',natural:!0,calculatedFrom:!0});
new this({name:'calculatedFromShrinkWrap',shrinkWrap:!0,calculatedFrom:!0});new this({name:'constrainedMax',configured:!0,constrained:!0,names:{width:'maxWidth',height:'maxHeight'}});new this({name:'constrainedMin',configured:!0,constrained:!0,names:{width:'minWidth',height:'minHeight'}});new this({name:'constrainedDock',configured:!0,constrained:!0,constrainedByMin:!0,names:{width:'dockConstrainedWidth',height:'dockConstrainedHeight'}});var i=0;for(n=sizeModelsArray.length;i<n;++i){var sizeModel=
sizeModelsArray[i];sizeModel.pairsByHeightOrdinal=pairs=[];for(j=0;j<n;++j)pairs.push({width:sizeModel,height:sizeModelsArray[j]})}});
Ext.cmd.derive('Ext.layout.Layout',Ext.Base,{factoryConfig:{type:'layout'},isLayout:!0,initialized:!1,running:!1,needsItemSize:!0,setsItemSize:!0,autoSizePolicy:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},$configPrefixed:!1,$configStrict:!1,constructor:function(config){this.id=Ext.id(null,this.type+'-');this.initConfig(config);delete this.type;this.layoutCount=0},beginLayout:Ext.emptyFn,beginLayoutCycle:function(ownerContext){var changed;this.lastWidthModel!==ownerContext.widthModel&&(this.lastWidthModel&&
(changed=!0),this.lastWidthModel=ownerContext.widthModel);this.lastHeightModel!==ownerContext.heightModel&&(this.lastWidthModel&&(changed=!0),this.lastHeightModel=ownerContext.heightModel);changed&&((ownerContext=ownerContext.context).clearTriggers(this,!1),ownerContext.clearTriggers(this,!0),this.triggerCount=0)},finishedLayout:function(ownerContext){this.lastWidthModel=ownerContext.widthModel;this.lastHeightModel=ownerContext.heightModel;this.ownerContext=null},redoLayout:Ext.emptyFn,undoLayout:Ext.emptyFn,
getAnimatePolicy:function(){return this.animatePolicy},getItemSizePolicy:function(item){return this.autoSizePolicy},isItemBoxParent:function(itemContext){return!1},isItemLayoutRoot:function(item){var sizeModel=item.getSizeModel(),width=sizeModel.width;sizeModel=sizeModel.height;return item.componentLayout.lastComponentSize||!width.calculated&&!sizeModel.calculated?!width.shrinkWrap&&!sizeModel.shrinkWrap:!1},isItemShrinkWrap:function(item){return item.shrinkWrap},isRunning:function(){return!!this.ownerContext},
getItemsRenderTree:function(items,renderCfgs){var length=items.length,i;if(length){var result=[];for(i=0;i<length;++i){var item=items[i];if(!item.rendered){if(renderCfgs&&void 0!==renderCfgs[item.id])var itemConfig=renderCfgs[item.id];else this.configureItem(item),itemConfig=item.getRenderTree(),renderCfgs&&(renderCfgs[item.id]=itemConfig);itemConfig&&result.push(itemConfig)}}}return result},finishRender:Ext.emptyFn,finishRenderItems:function(target,items){target=items.length;var i;for(i=0;i<target;i++){var item=
items[i];item.rendering&&item.finishRender(i)}},renderChildren:function(){var items=this.getLayoutItems(),target=this.getRenderTarget();this.renderItems(items,target)},renderItems:function(items,target){var ln=items.length,i=0,pos=0,item;if(ln){for(Ext.suspendLayouts();i<ln;i++,pos++)(item=items[i])&&!item.rendered?this.renderItem(item,target,pos):item.ignoreDomPosition?--pos:this.isValidParent(item,target,pos)?this.configureItem(item):this.moveItem(item,target,pos);Ext.resumeLayouts(!0)}},isValidParent:function(item,
target,position){target=target&&target.dom||target;return(item=this.getItemLayoutEl(item))&&target?'number'===typeof position?(position=this.getPositionOffset(position),item===target.childNodes[position]):item.parentNode===target:!1},getItemLayoutEl:function(item){item=item.el?item.el.dom:Ext.getDom(item);var parentNode=item.parentNode;parentNode&&(parentNode=parentNode.className)&&-1!==parentNode.indexOf('x-resizable-wrap')&&(item=item.parentNode);return item},getPositionOffset:function(position){return position},
configureItem:function(item){item.ownerLayout=this},renderItem:function(item,target,position){item.rendered||(this.configureItem(item),item.render(target,position))},moveItem:function(item,target,position){var activeEl=Ext.Element.getActiveElement(!0);target=target.dom||target;'number'===typeof position&&(position=target.childNodes[position]);item.el.contains(activeEl)?activeEl.suspendFocusEvents():activeEl=null;target.insertBefore(item.el.dom,position||null);item.container=Ext.get(target);this.configureItem(item);
activeEl&&(activeEl.focus(),activeEl.resumeFocusEvents())},onContentChange:function(){this.owner.updateLayout();return!0},initLayout:function(){this.initialized=!0},setOwner:function(owner){this.owner=owner},getLayoutItems:function(){return[]},onAdd:function(item){item.ownerLayout=this},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,afterRemove:function(item){var el=item.el,owner=this.owner;if(item.rendered){var removeClasses=[].concat(this.itemCls||[]);owner.itemCls&&(removeClasses=Ext.Array.push(removeClasses,
owner.itemCls));removeClasses.length&&el.removeCls(removeClasses)}delete item.ownerLayout},afterCollapse:function(owner,animated){if(animated)this.onContentChange(owner)},afterExpand:function(owner,animated){if(animated)this.onContentChange(owner)},destroy:function(){var target;this.targetCls&&(target=this.getTarget())&&target.removeCls(this.targetCls);if(!this.onDestroy.$emptyFn)this.onDestroy();this.callParent()},sortWeightedItems:function(items,reverseProp){for(var i=0,length=items.length;i<length;++i)items[i].$i=
i;Ext.Array.sort(items,function(item1,item2){var ret=item2.weight-item1.weight;ret||(ret=item1.$i-item2.$i,item1[reverseProp]&&(ret=-ret));return ret});for(i=0;i<length;++i)delete items[i].$i}},1,0,0,0,0,[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.layout,'Layout'],function(){this.prototype.sizeModels=this.sizeModels=Ext.layout.SizeModel.sizeModels});
Ext.cmd.derive('Ext.layout.container.Container',Ext.layout.Layout,{alternateClassName:'Ext.layout.ContainerLayout',type:'container',beginCollapse:Ext.emptyFn,beginExpand:Ext.emptyFn,animatePolicy:null,activeItemCount:0,renderTpl:['{%this.renderBody(out,values)%}'],usesContainerHeight:!0,usesContainerWidth:!0,usesHeight:!0,usesWidth:!0,constructor:function(){Ext.layout.Layout.prototype.constructor.apply(this,arguments);this.mixins.elementCt.constructor.call(this)},destroy:function(){this.mixins.elementCt.destroy.call(this);
Ext.layout.Layout.prototype.destroy.call(this)},beginLayout:function(ownerContext){Ext.layout.Layout.prototype.beginLayout.apply(this,arguments);ownerContext.targetContext=ownerContext.paddingContext=ownerContext.getEl('getTarget',this);this.cacheChildItems(ownerContext)},beginLayoutCycle:function(ownerContext,firstCycle){Ext.layout.Layout.prototype.beginLayoutCycle.apply(this,arguments);firstCycle&&(this.usesContainerHeight&&++ownerContext.consumersContainerHeight,this.usesContainerWidth&&++ownerContext.consumersContainerWidth)},
cacheChildItems:function(ownerContext){var i;if(this.needsItemSize||this.setsItemSize){var context=ownerContext.context;var childItems=ownerContext.childItems=[];ownerContext=ownerContext.visibleItems=this.getVisibleItems();var length=ownerContext.length;for(i=0;i<length;++i)childItems.push(context.getCmp(ownerContext[i]))}},cacheElements:function(){var owner=this.owner;this.attachChildEls(owner.el,owner)},calculate:function(ownerContext){var props=ownerContext.props,el=ownerContext.el;ownerContext.widthModel.shrinkWrap&&
isNaN(props.width)&&ownerContext.setContentWidth(el.getWidth());ownerContext.heightModel.shrinkWrap&&isNaN(props.height)&&ownerContext.setContentHeight(el.getHeight())},configureItem:function(item){var itemCls=this.itemCls,ownerItemCls=this.owner.itemCls;item.ownerLayout=this;if(itemCls)if('string'===typeof itemCls)var addClasses=[itemCls];else{addClasses=itemCls;var needsCopy=!!addClasses}ownerItemCls&&(needsCopy&&(addClasses=Ext.Array.clone(addClasses)),addClasses=Ext.Array.push(addClasses||[],
ownerItemCls));addClasses&&item.addCls(addClasses)},doRenderBody:function(out,renderData){this.renderItems(out,renderData);this.renderContent(out,renderData)},doRenderContainer:function(out,renderData){var me=renderData.$comp.layout;renderData=me.getRenderTpl();me=me.getRenderData();renderData.applyOut(me,out)},doRenderItems:function(out,renderData){(renderData=renderData.$layout.getRenderTree())&&Ext.DomHelper.generateMarkup(renderData,out)},doRenderTabGuard:function(out,renderData,position){var cmp=
renderData.$comp,tabGuardTpl;cmp.tabGuard&&!renderData.$skipTabGuards&&(tabGuardTpl=cmp.lookupTpl('tabGuardTpl'))&&(renderData.tabGuard=position,renderData.tabGuardEl=cmp.tabGuardElements[position],cmp.addChildEl(renderData.tabGuardEl),tabGuardTpl.applyOut(renderData,out),delete renderData.tabGuard,delete renderData.tabGuardEl)},finishRender:function(){Ext.layout.Layout.prototype.finishRender.call(this);this.cacheElements();var target=this.getRenderTarget();var items=this.getLayoutItems();this.finishRenderItems(target,
items)},notifyOwner:function(){this.owner.afterLayout(this)},getContainerSize:function(ownerContext,inDom){var targetContext=ownerContext.targetContext,frameInfo=targetContext.getFrameInfo(),padding=ownerContext.paddingContext.getPaddingInfo(),got=0,needed=0,gotWidth,gotHeight;if(!ownerContext.widthModel.shrinkWrap){++needed;var width=inDom?targetContext.getDomProp('width'):targetContext.getProp('width');if(gotWidth='number'===typeof width)++got,width-=frameInfo.width+padding.width,0>width&&(width=
0)}if(!ownerContext.heightModel.shrinkWrap){++needed;var height=inDom?targetContext.getDomProp('height'):targetContext.getProp('height');if(gotHeight='number'===typeof height)++got,height-=frameInfo.height+padding.height,0>height&&(height=0)}return{width:width,height:height,needed:needed,got:got,gotAll:got===needed,gotWidth:gotWidth,gotHeight:gotHeight}},getPositionOffset:function(position){if(!this.createsInnerCt){var offset=this.owner.itemNodeOffset;offset&&(position+=offset)}return position},getLayoutItems:function(){var owner=
this.owner;return(owner=owner&&owner.items)&&owner.items||[]},getRenderData:function(){var comp=this.owner;return{$comp:comp,$layout:this,ownerId:comp.id}},getRenderedItems:function(){var target=this.getRenderTarget(),items=this.getLayoutItems(),ln=items.length,renderedItems=[],i,pos;for(pos=i=0;i<ln;i++,pos++){var item=items[i];if(item.rendered){if(item.ignoreDomPosition)--pos;else if(!this.isValidParent(item,target,pos))continue;renderedItems.push(item)}}return renderedItems},getRenderTarget:function(){return this.owner.getTargetEl()},
getElementTarget:function(){return this.getRenderTarget()},getRenderTpl:function(){var renderTpl=Ext.XTemplate.getTpl(this,'renderTpl');renderTpl.renderContent||this.owner.setupRenderTpl(renderTpl);return renderTpl},getRenderTree:function(){var items=this.owner.items,renderCfgs={};do{var itemsGen=items.generation;var result=this.getItemsRenderTree(this.getLayoutItems(),renderCfgs)}while(items.generation!==itemsGen);return result},renderChildren:function(){var ownerItems=this.owner.items,target=this.getRenderTarget();
do{var itemsGen=ownerItems.generation;var items=this.getLayoutItems();this.renderItems(items,target)}while(ownerItems.generation!==itemsGen)},getScrollbarsNeeded:function(width,height,contentWidth,contentHeight){var scrollbarSize=Ext.getScrollbarSize(),hasWidth='number'===typeof width,hasHeight='number'===typeof height,needHorz=0,needVert=0;if(!scrollbarSize.width)return 0;hasHeight&&height<contentHeight&&(needVert=2,width-=scrollbarSize.width);hasWidth&&width<contentWidth&&(needHorz=1,!needVert&&
hasHeight&&(height-=scrollbarSize.height,height<contentHeight&&(needVert=2)));return needVert+needHorz},getTarget:function(){return this.owner.getTargetEl()},getVisibleItems:function(){var target=this.getRenderTarget(),items=this.getLayoutItems(),ln=items.length,visibleItems=[],i,pos;for(pos=i=0;i<ln;i++,pos++){var item=items[i];if(item.rendered&&!0!==item.hidden&&!item.floated){if(item.ignoreDomPosition)--pos;else if(!this.isValidParent(item,target,pos))continue;visibleItems.push(item)}}return visibleItems},
getMoveAfterIndex:function(after){return this.owner.items.indexOf(after)+1},moveItemBefore:function(item,before){var owner=this.owner,items=owner.items,index=items.indexOf(item);if(item===before)return item;before?(before=items.indexOf(before),-1<index&&index<before&&--before):before=items.length;return owner.insert(before,item)},setupRenderTpl:function(renderTpl){renderTpl.renderBody=this.doRenderBody;renderTpl.renderContainer=this.doRenderContainer;renderTpl.renderItems=this.doRenderItems;renderTpl.renderTabGuard=
this.doRenderTabGuard},getContentTarget:function(){return this.owner.getDefaultContentTarget()},onAdd:function(item){item.liquidLayout||++this.activeItemCount;Ext.layout.Layout.prototype.onAdd.call(this,item)},onRemove:function(item,isDestroying){item.liquidLayout||--this.activeItemCount;Ext.layout.Layout.prototype.onRemove.call(this,item,isDestroying)}},1,0,0,0,['layout.container'],[[Ext.util.ElementContainer.prototype.mixinId||Ext.util.ElementContainer.$className,Ext.util.ElementContainer]],[Ext.layout.container,
'Container',Ext.layout,'ContainerLayout'],0);
Ext.cmd.derive('Ext.layout.container.Auto',Ext.layout.container.Container,{type:'autocontainer',childEls:['outerCt','innerCt'],reserveScrollbar:!1,managePadding:!0,manageOverflow:!1,needsItemSize:!1,setsItemSize:!1,lastOverflowAdjust:{width:0,height:0},outerCtCls:'x-autocontainer-outerCt',innerCtCls:'x-autocontainer-innerCt',renderTpl:'\x3cdiv id\x3d"{ownerId}-outerCt" data-ref\x3d"outerCt" class\x3d"{outerCtCls}" role\x3d"presentation"\x3e;\x3cdiv id\x3d"{ownerId}-innerCt" data-ref\x3d"innerCt" style\x3d"{%this.renderPadding(out, values)%}" ;\x3ctpl if\x3d"!$comp.html"\x3erole\x3d"presentation"\x3c/tpl\x3e;class\x3d"{innerCtCls}"\x3e;{%this.renderBody(out,values)%};\x3c/div\x3e;\x3c/div\x3e'.split(';'),beginLayout:function(ownerContext){Ext.layout.container.Container.prototype.beginLayout.apply(this,
arguments);this.initContextItems(ownerContext)},beforeLayoutCycle:function(ownerContext){var comp=this.owner,inheritedState=comp.inheritedState,inheritedStateInner=comp.inheritedStateInner;if(!inheritedState||inheritedState.invalid)comp.getInherited(),inheritedStateInner=comp.inheritedStateInner;ownerContext.widthModel.shrinkWrap?inheritedStateInner.inShrinkWrapTable=!0:delete inheritedStateInner.inShrinkWrapTable},beginLayoutCycle:function(ownerContext){var outerCt=this.outerCt,lastOuterCtWidth=
this.lastOuterCtWidth||'',lastOuterCtHeight=this.lastOuterCtHeight||'',lastOuterCtTableLayout=this.lastOuterCtTableLayout||'',state=ownerContext.state,overflowXStyle,outerCtHeight;Ext.layout.container.Container.prototype.beginLayoutCycle.apply(this,arguments);var outerCtWidth=outerCtHeight=overflowXStyle='';if(!ownerContext.widthModel.shrinkWrap){outerCtWidth='100%';var inheritedStateInner=this.owner.inheritedStateInner;overflowXStyle=this.getOverflowXStyle(ownerContext);overflowXStyle=inheritedStateInner.inShrinkWrapTable||
'auto'===overflowXStyle||'scroll'===overflowXStyle?'':'fixed'}ownerContext.heightModel.shrinkWrap||Ext.supports.PercentageHeightOverflowBug||(outerCtHeight='100%');if(outerCtWidth!==lastOuterCtWidth||this.hasOuterCtPxWidth)outerCt.setStyle('width',outerCtWidth),this.lastOuterCtWidth=outerCtWidth,this.hasOuterCtPxWidth=!1;overflowXStyle!==lastOuterCtTableLayout&&(outerCt.setStyle('table-layout',overflowXStyle),this.lastOuterCtTableLayout=overflowXStyle);if(outerCtHeight!==lastOuterCtHeight||this.hasOuterCtPxHeight)outerCt.setStyle('height',
outerCtHeight),this.lastOuterCtHeight=outerCtHeight,this.hasOuterCtPxHeight=!1;this.hasInnerCtPxHeight&&(this.innerCt.setStyle('height',''),this.hasInnerCtPxHeight=!1);state.overflowAdjust=state.overflowAdjust||this.lastOverflowAdjust},calculate:function(ownerContext){var state=ownerContext.state,containerSize=this.getContainerSize(ownerContext,!0);state=state.calculatedItems||(state.calculatedItems=this.calculateItems?this.calculateItems(ownerContext,containerSize):!0);this.setCtSizeIfNeeded(ownerContext,
containerSize);if(state&&ownerContext.hasDomProp('containerChildrenSizeDone')&&(this.calculateContentSize(ownerContext),containerSize.gotAll)){!this.manageOverflow||ownerContext.state.secondPass||this.reserveScrollbar||this.calculateOverflow(ownerContext,containerSize);return}this.done=!1},calculateContentSize:function(ownerContext){var containerDimensions=(ownerContext.widthModel.shrinkWrap?1:0)|(ownerContext.heightModel.shrinkWrap?2:0),calcWidth=containerDimensions&1||void 0;containerDimensions=
containerDimensions&2||void 0;var needed=0,props=ownerContext.props;calcWidth&&(isNaN(props.contentWidth)?++needed:calcWidth=void 0);containerDimensions&&(isNaN(props.contentHeight)?++needed:containerDimensions=void 0);needed&&(calcWidth&&!ownerContext.setContentWidth(this.measureContentWidth(ownerContext))&&(this.done=!1),containerDimensions&&!ownerContext.setContentHeight(this.measureContentHeight(ownerContext))&&(this.done=!1))},calculateOverflow:function(ownerContext){var xauto='auto'===this.getOverflowXStyle(ownerContext);
var width='auto'===this.getOverflowYStyle(ownerContext);if(xauto||width){var height=Ext.getScrollbarSize();var targetEl=ownerContext.overflowContext.el.dom;var scrollbars=0;targetEl.scrollWidth>targetEl.clientWidth&&(scrollbars|=1);targetEl.scrollHeight>targetEl.clientHeight&&(scrollbars|=2);width=width&&scrollbars&2?height.width:0;height=xauto&&scrollbars&1?height.height:0;if(width!==this.lastOverflowAdjust.width||height!==this.lastOverflowAdjust.height)this.done=!1,ownerContext.invalidate({state:{overflowAdjust:{width:width,
height:height},overflowState:scrollbars,secondPass:!0}})}},completeLayout:function(ownerContext){this.lastOverflowAdjust=ownerContext.state.overflowAdjust},doRenderBody:function(out,renderData){var me=renderData.$layout,XTemplate=Ext.XTemplate,afterBodyTpl=me.afterBodyTpl;me.beforeBodyTpl&&XTemplate.getTpl(me,'beforeBodyTpl').applyOut(renderData,out);this.renderItems(out,renderData);this.renderContent(out,renderData);afterBodyTpl&&XTemplate.getTpl(me,'afterBodyTpl').applyOut(renderData,out)},doRenderPadding:function(out,
renderData){var owner=renderData.$layout.owner,padding=owner[owner.contentPaddingProperty];renderData.$layout.managePadding&&padding&&out.push('padding:',owner.unitizeBox(padding))},finishedLayout:function(ownerContext){var innerCt=this.innerCt;Ext.layout.container.Container.prototype.finishedLayout.apply(this,arguments);Ext.isIE8&&innerCt.repaint();Ext.isOpera&&(innerCt.setStyle('position','relative'),innerCt.dom.scrollWidth,innerCt.setStyle('position',''))},getContainerSize:function(ownerContext,
inDom){var size=Ext.layout.container.Container.prototype.getContainerSize.apply(this,arguments),overflowAdjust=ownerContext.state.overflowAdjust;overflowAdjust&&(size.width-=overflowAdjust.width,size.height-=overflowAdjust.height);return size},getRenderData:function(){var data=Ext.layout.container.Container.prototype.getRenderData.call(this);data.innerCtCls=this.innerCtCls;data.outerCtCls=this.outerCtCls;return data},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},
getOverflowXStyle:function(ownerContext){return ownerContext.overflowXStyle||(ownerContext.overflowXStyle=this.owner.scrollFlags.overflowX||ownerContext.overflowContext.getStyle('overflow-x'))},getOverflowYStyle:function(ownerContext){return ownerContext.overflowYStyle||(ownerContext.overflowYStyle=this.owner.scrollFlags.overflowY||ownerContext.overflowContext.getStyle('overflow-y'))},initContextItems:function(ownerContext){var target=ownerContext.target,overflowEl=this.owner.getOverflowEl();ownerContext.outerCtContext=
ownerContext.getEl('outerCt',this);ownerContext.innerCtContext=ownerContext.getEl('innerCt',this);ownerContext.overflowContext=overflowEl===ownerContext.el?ownerContext:ownerContext.getEl(overflowEl);void 0!==target[target.contentPaddingProperty]&&(ownerContext.paddingContext=ownerContext.innerCtContext)},initLayout:function(){var scrollbarWidth=Ext.getScrollbarSize().width,owner=this.owner;Ext.layout.container.Container.prototype.initLayout.call(this);scrollbarWidth&&this.manageOverflow&&!this.hasOwnProperty('lastOverflowAdjust')&&
(owner.scrollable||this.reserveScrollbar)&&(this.lastOverflowAdjust={width:scrollbarWidth,height:0})},measureContentHeight:function(ownerContext){var contentHeight=this.outerCt.getHeight(),target=ownerContext.target;this.managePadding&&void 0===target[target.contentPaddingProperty]&&(contentHeight+=ownerContext.targetContext.getPaddingInfo().height);return contentHeight},measureContentWidth:function(ownerContext){if(this.chromeCellMeasureBug){var dom=this.innerCt.dom;var style=dom.style;var old=style.display;
'table-cell'===old&&(style.display='',dom.offsetWidth,style.display=old)}Ext.isSafari&&(dom=this.outerCt.dom,style=dom.style,style.display='table-cell',dom.offsetWidth,dom.style.display='');dom=this.outerCt.getWidth();style=ownerContext.target;this.managePadding&&void 0===style[style.contentPaddingProperty]&&(dom+=ownerContext.targetContext.getPaddingInfo().width);return dom},setCtSizeIfNeeded:function(ownerContext,containerSize){containerSize=containerSize.height;var padding=ownerContext.paddingContext.getPaddingInfo(),
targetEl=this.getTarget(),overflowXStyle=this.getOverflowXStyle(ownerContext);overflowXStyle='auto'===overflowXStyle||'scroll'===overflowXStyle;var scrollbarSize=Ext.getScrollbarSize(),needsOuterHeight,needsInnerHeight;containerSize&&!ownerContext.heightModel.shrinkWrap&&(Ext.supports.PercentageHeightOverflowBug&&(needsOuterHeight=!0),Ext.isIE8&&(needsInnerHeight=!0),(needsOuterHeight||needsInnerHeight)&&overflowXStyle&&targetEl.dom.scrollWidth>targetEl.dom.clientWidth&&(containerSize=Math.max(containerSize-
scrollbarSize.height,0)),needsOuterHeight&&(ownerContext.outerCtContext.setProp('height',containerSize+padding.height),this.hasOuterCtPxHeight=!0),needsInnerHeight&&(ownerContext.innerCtContext.setProp('height',containerSize),this.hasInnerCtPxHeight=!0))},setupRenderTpl:function(renderTpl){Ext.layout.container.Container.prototype.setupRenderTpl.apply(this,arguments);renderTpl.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},0,0,0,0,['layout.auto','layout.autocontainer'],
0,[Ext.layout.container,'Auto'],function(Cls){var v=Ext.chromeVersion;Cls.prototype.chromeCellMeasureBug=Ext.isChrome&&26<=v&&34>=v});
Ext.cmd.derive('Ext.ZIndexManager',Ext.Base,{alternateClassName:'Ext.WindowGroup',statics:{zBase:9E3,activeCounter:0},constructor:function(container){var me=this;me.id=Ext.id(null,'zindex-mgr-');me.zIndexStack=new Ext.util.Collection({sorters:{sorterFn:function(comp1,comp2){var ret=(comp1.alwaysOnTop||0)-(comp2.alwaysOnTop||0);ret||(ret=comp1.getActiveCounter()-comp2.getActiveCounter());return ret}},filters:{filterFn:function(comp){return comp.isVisible()}}});me.zIndexStack.addObserver(me);me.front=
null;me.sortCount=0;me.globalListeners=Ext.GlobalEvents.on({beforehide:me.onComponentShowHide,show:me.onComponentShowHide,scope:me,destroyable:!0});container?container.isContainer?(me.resizeListeners=container.on({resize:me.onContainerResize,scope:me,destroyable:!0}),me.zseed=Ext.Number.from(me.rendered?container.getEl().getStyle('zIndex'):void 0,me.getNextZSeed()),me.targetEl=container.getTargetEl(),me.container=container):(me.resizeListeners=Ext.on({resize:me.onContainerResize,scope:me,destroyable:!0}),
me.zseed=me.getNextZSeed(),me.targetEl=Ext.get(container)):(me.zseed=me.getNextZSeed(),Ext.onInternalReady(function(){me.resizeListeners=Ext.on({resize:me.scheduleContainerResize,scope:me,destroyable:!0,priority:-1E4});me.targetEl=Ext.getBody()}))},getId:function(){return this.id},getNextZSeed:function(){return Ext.ZIndexManager.zBase+=1E4},setBase:function(baseZIndex){this.zseed=baseZIndex;return this.onCollectionSort()},onCollectionSort:function(){var oldFront=this.front,zIndex=this.zseed,a=this.zIndexStack.getRange(),
len=a.length,i,topModal,doFocus=!oldFront||oldFront.isVisible();this.sortCount++;for(i=0;i<len;i++){var comp=a[i];if(!comp.destroying&&!comp.destroyed&&(zIndex=comp.setZIndex(zIndex),!comp.hidden)){var topVisible=comp;comp.modal&&(topModal=comp)}}topVisible!==oldFront&&(oldFront&&!oldFront.destroying&&oldFront.setActive(!1),topVisible&&(doFocus=doFocus&&topVisible.isFocusable(!0)&&(topVisible.modal||topVisible.focusOnToFront&&!topVisible.preventFocusOnActivate),topVisible.setActive(!0,doFocus)));
this.front=topVisible||null;topModal?topModal===oldFront?this.syncModalMask(topModal):this.showModalMask(topModal):this.hideModalMask();return zIndex},onComponentUpdate:function(comp){this.zIndexStack.contains(comp)&&this.zIndexStack.sort()},onAfterComponentRender:function(comp){comp.isVisible()&&comp.toFrontOnShow&&(this.zIndexStack.itemChanged(comp,'hidden'),this.zIndexStack.sort())},onComponentShowHide:function(comp){var zIndexStack=this.zIndexStack,sortCount=this.sortCount;if(comp.isFloating()&&
!this.hidingAll&&(zIndexStack.getSource()||zIndexStack).contains(comp)&&(this.tempHidden&&Ext.Array.remove(this.tempHidden,comp),zIndexStack.beginUpdate(),comp.isVisible()?comp.toFrontOnShow&&(zIndexStack.itemChanged(comp,'hidden'),comp.setActiveCounter(++Ext.ZIndexManager.activeCounter)):zIndexStack.itemChanged(comp,'hidden'),zIndexStack.endUpdate(),this.sortCount===sortCount))this.onCollectionSort()},register:function(comp){comp.zIndexManager&&comp.zIndexManager.unregister(comp);comp.zIndexManager=
this;if(!comp.rendered)comp.on('afterrender',this.onAfterComponentRender,this,{single:!0});this.zIndexStack.add(comp)},unregister:function(comp){delete comp.zIndexManager;comp.un('afterrender',this.onAfterComponentRender,this);this.zIndexStack.remove(comp);this.onCollectionSort()},get:function(id){return id.isComponent?id:this.zIndexStack.get(id)},bringToFront:function(comp,preventFocus){var zIndexStack=this.zIndexStack,oldFront=zIndexStack.last();comp=this.get(comp);if(!comp)return!1;var preventFocusSetting=
comp.preventFocusOnActivate;comp.preventFocusOnActivate=preventFocus;comp.setActiveCounter(++Ext.ZIndexManager.activeCounter);comp.preventFocusOnActivate=preventFocusSetting;preventFocus=zIndexStack.last();return preventFocus===comp&&preventFocus!==oldFront},sendToBack:function(comp){(comp=this.get(comp))&&comp.setActiveCounter(0);return comp||null},hideAll:function(){var all=this.zIndexStack.getRange(),len=all.length,i;this.hidingAll=!0;for(i=0;i<len;i++)all[i].hide();this.hidingAll=!1;this.hideModalMask();
this.front=null},hide:function(){var activeElement=Ext.Element.getActiveElement(),all=this.zIndexStack.getRange(),len=all.length,i;this.focusRestoreElement=null;for(i=(this.tempHidden||(this.tempHidden=[])).length=0;i<len;i++){var comp=all[i];comp.isVisible()&&(comp.el.contains(activeElement)&&(this.focusRestoreElement=activeElement),comp.el.hide(),comp.pendingShow=comp.hidden=!0,this.tempHidden.push(comp))}},show:function(){var i,tempHidden=this.tempHidden,len=tempHidden?tempHidden.length:0;for(i=
0;i<len;i++){var comp=tempHidden[i];comp.hidden=!1;comp.pendingShow?(comp.el.show(),comp.pendingShow=!1,comp.setPosition(comp.x,comp.y),comp.onFloatShow()):comp.hide()}this.tempHidden=null;this.focusRestoreElement&&this.focusRestoreElement.focus()},getActive:function(){return this.zIndexStack.last()},getBy:function(fn,scope){return this.zIndexStack.filterBy(fn,scope).getRange()},each:function(fn,scope){this.zIndexStack.each(fn,scope)},eachBottomUp:function(fn,scope){var stack=this.zIndexStack.getRange(),
i,len=stack.length;for(i=0;i<len;i++){var comp=stack[i];if(comp.isComponent&&!1===fn.call(scope||comp,comp))break}},eachTopDown:function(fn,scope){var stack=this.zIndexStack.getRange(),i;for(i=stack.length;0<i--;){var comp=stack[i];if(comp.isComponent&&!1===fn.call(scope||comp,comp))break}},destroy:function(){var stack=this.zIndexStack.getRange(),len=stack.length,i;for(i=0;i<len;i++)Ext.destroy(stack[i]);Ext.destroy(this.mask,this.maskShim,this.zIndexStack,this.globalListeners,this.resizeListeners);
this.callParent()},privates:{getMaskBox:function(){var maskTarget=this.mask.maskTarget;return maskTarget.dom===document.body?{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}:maskTarget.getBox()},scheduleContainerResize:function(){this.containerResizeTimer||(this.containerResizeTimer=Ext.Function.requestAnimationFrame(this.onContainerResize,this))},onContainerResize:function(){var mask=
this.mask,maskShim=this.maskShim;this.containerResizeTimer=null;if(mask&&mask.isVisible()){mask.hide();maskShim&&maskShim.hide();var viewSize=this.getMaskBox();maskShim&&(maskShim.setSize(viewSize),maskShim.show());mask.setSize(viewSize);mask.show()}},onMaskMousedown:function(e){this.front&&(this.front.focus(),e.preventDefault())},onMaskClick:function(){var front=this.front;if(front&&(!front.hasListeners.maskclick||!1!==front.fireEvent('maskclick',front))){var methodName=front.maskClickAction||'focus';
front[methodName]()}},showModalMask:function(comp){var compEl=comp.el,maskTarget=comp.floatParent?comp.floatParent.getEl():comp.container,mask=this.mask;mask?this.hideModalMask():(this.mask=mask=Ext.getBody().createChild({role:'presentation',cls:'x-mask x-border-box',style:'height:0;width:0'}),mask.setVisibilityMode(Ext.Element.DISPLAY),mask.on({mousedown:this.onMaskMousedown,click:this.onMaskClick,scope:this}));mask.maskTarget=maskTarget;maskTarget.saveTabbableState({excludeRoot:compEl});this.syncModalMask(comp)},
syncModalMask:function(comp){comp=comp.el.getZIndex()-4;var mask=this.mask,shim=this.maskShim,viewSize=this.getMaskBox();shim&&(shim.setZIndex(comp),shim.show(),shim.setBox(viewSize));mask.setZIndex(comp);mask.show();mask.setBox(viewSize)},hideModalMask:function(){var mask=this.mask,maskShim=this.maskShim;mask&&mask.isVisible()&&(mask.maskTarget.restoreTabbableState(),mask.maskTarget=void 0,mask.hide(),maskShim&&maskShim.hide())}}},1,0,0,0,0,0,[Ext,'ZIndexManager',Ext,'WindowGroup'],function(){Ext.WindowManager=
Ext.WindowMgr=new this});
Ext.cmd.derive('Ext.container.Container',Ext.Component,{alternateClassName:['Ext.Container','Ext.AbstractContainer'],renderTpl:'\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'before\'); %}\x3c/tpl\x3e{% this.renderContainer(out,values) %}\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'after\'); %}\x3c/tpl\x3e',config:{actions:null},autoDestroy:!0,defaultType:'panel',detachOnRemove:!0,items:void 0,layout:'auto',suspendLayout:!1,tabGuardTpl:'\x3cspan id\x3d"{id}-{tabGuardEl}" data-ref\x3d"{tabGuardEl}" aria-hidden\x3d"true" class\x3d"x-tab-guard x-tab-guard-{tabGuardPosition}" style\x3d"width:0px;height:0px;"\x3e\x3c/span\x3e',tabGuardElements:{before:'tabGuardBeforeEl',
after:'tabGuardAfterEl'},_applyDefaultsOptions:{defaults:!0,strict:!1},ariaRole:'presentation',baseCls:'x-container',layoutCounter:0,add:function(){var args=Ext.Array.slice(arguments),index='number'===typeof args[0]?args.shift():-1,layout=this.getLayout(),needsLayout=!1;if(1===args.length&&Ext.isArray(args[0])){args=args[0];var addingArray=!0}this.rendered&&Ext.suspendLayouts();var ret=args=this.prepareItems(args,!0);var length=args.length;addingArray||1!==length||(ret=args[0]);for(addingArray=0;addingArray<
length;addingArray++){var item=args[addingArray];var pos=0>index?this.items.length:index+addingArray;var instanced=!!item.instancedCmp;delete item.instancedCmp;item.floating?((this.floatingItems||(this.floatingItems=new Ext.util.ItemCollection)).add(item),item.onAdded(this,pos,instanced),delete item.$initParent,this.hasListeners.add&&this.fireEvent('add',this,item,pos)):this.hasListeners.beforeadd&&!1===this.fireEvent('beforeadd',this,item,pos)||!1===this.onBeforeAdd(item)||(this.items.insert(pos,
item),item.onAdded(this,pos,instanced),delete item.$initParent,this.onAdd(item,pos),layout.onAdd(item,pos),needsLayout=!0,this.hasListeners.add&&this.fireEvent('add',this,item,pos))}needsLayout&&this.updateLayout();this.rendered&&Ext.resumeLayouts(!0);return ret},onAdded:function(container,pos,instanced){Ext.Component.prototype.onAdded.call(this,container,pos,instanced);this.containerOnAdded(container,instanced)},onRemoved:function(destroying){this.containerOnRemoved(destroying);Ext.Component.prototype.onRemoved.apply(this,
arguments)},afterComponentLayout:function(){var floaters=this.floatingItems,i;Ext.Component.prototype.afterComponentLayout.apply(this,arguments);if(floaters){floaters=floaters.items;var floaterCount=floaters.length;for(i=0;i<floaterCount;i++){var floater=floaters[i];!floater.rendered&&floater.autoShow&&floater.show()}}},afterLayout:function(layout){++this.layoutCounter;this.hasListeners.afterlayout&&this.fireEvent('afterlayout',this,layout)},doDestroy:function(){var items=this.items,floatingItems=
this.floatingItems,c;if(items){for(;c=items.first();)this.doRemove(c,!0);items.destroy();this.items=null}if(floatingItems){for(;c=floatingItems.first();)this.doRemove(c,!0);floatingItems.destroy();this.floatingItems=null}Ext.destroy(this.layout);Ext.Component.prototype.doDestroy.call(this)},beforeRender:function(){var layout=this.getLayout();this.preventChildDisable=!0;Ext.Component.prototype.beforeRender.call(this);this.preventChildDisable=!1;layout.initialized||layout.initLayout();(layout=layout.targetCls)&&
this.applyTargetCls(layout)},cascade:function(fn,scope,origArgs){var cs=this.items?this.items.items:[],len=cs.length,i=0,args=origArgs?origArgs.concat(this):[this],componentIndex=args.length-1;if(!1!==fn.apply(scope||this,args))for(;i<len;i++){var c=cs[i];c.cascade?c.cascade(fn,scope,origArgs):(args[componentIndex]=c,fn.apply(scope||c,args))}return this},contains:function(comp,deep){var result=!1;return deep?(this.cascade(function(c){if(c.contains&&c.contains(comp))return result=!0,!1}),result):this.items.contains(comp)||
this.floatingItems&&this.floatingItems.contains(comp)},disable:function(silent,fromParent){var wasDisabled=this.disabled,i;Ext.Component.prototype.disable.call(this,silent,fromParent);if(!fromParent&&!this.preventChildDisable&&!wasDisabled)for(fromParent=this.getChildItemsToDisable(),wasDisabled=fromParent.length,i=0;i<wasDisabled;i++)fromParent[i].disable(silent,!0);return this},enable:function(silent,fromParent){var wasDisabled=this.disabled,i;Ext.Component.prototype.enable.call(this,silent,fromParent);
if(wasDisabled)for(fromParent=this.getChildItemsToDisable(),wasDisabled=fromParent.length,i=0;i<wasDisabled;i++)fromParent[i].enable(silent,!0);return this},getChildByElement:function(el,deep){var itemEl,i=0,it=this.getRefItems(),ln=it.length;for(el=Ext.getDom(el);i<ln;i++){var item=it[i];if((itemEl=item.getEl())&&(itemEl.dom===el||itemEl.contains(el)))return deep&&item.getChildByElement?item.getChildByElement(el,deep):item}return null},getComponent:function(comp){Ext.isObject(comp)&&(comp=comp.getItemId());
var c=this.items.get(comp),floaters=this.floatingItems;!c&&floaters&&'number'!==typeof comp&&(c=floaters.get(comp));return c},getFocusEl:function(){var delegate=this.getDefaultFocus();if(delegate)return delegate;if(this.focusable)return this.getTargetEl()},getLayout:function(){var layout=this.layout;layout&&layout.isLayout||this.setLayout(layout);return this.layout},getRefItems:function(deep){for(var items=this.items.items,len=items.length,i=0,item,result=[];i<len;i++)item=items[i],result[result.length]=
item,deep&&item.getRefItems&&result.push.apply(result,item.getRefItems(!0));if(this.floatingItems)for(items=this.floatingItems.items,len=items.length,i=0;i<len;i++)item=items[i],result[result.length]=item,deep&&item.getRefItems&&result.push.apply(result,item.getRefItems(!0));return result},getDefaultFocus:function(){var defaultFocus=this.defaultFocus,result;defaultFocus&&(result=this.down(defaultFocus));return result},initComponent:function(){Ext.Component.prototype.initComponent.call(this);this.getLayout();
this.constructing=!0;this.initItems();this.disabled&&(this.disabled=!1,this.disable(!0));delete this.constructing},initItems:function(){var items=this.items;items&&items.isMixedCollection||(this.items=new Ext.util.ItemCollection,items&&(Ext.isArray(items)||(items=[items]),this.$initingItems=!0,this.add(items),delete this.$initingItems))},initInheritedState:function(inheritedState,inheritedStateInner){var layout=this.layout;Ext.Component.prototype.initInheritedState.call(this,inheritedState,inheritedStateInner);
this.collapsed&&(inheritedState.collapsed=!0);this.initContainerInheritedState(inheritedState,inheritedStateInner);layout&&layout.initInheritedState&&layout.initInheritedState(inheritedState,inheritedStateInner)},insert:function(index,component){if(component&&component.isComponent){var compIdx=this.items.indexOf(component);if(-1!==compIdx)return this.move(compIdx,index)}return this.add(index,component)},lookupComponent:function(comp){var defaultType=this.defaultType,wasAction;if(!comp.isComponent){if('string'===
typeof comp){if(!(wasAction='@'===comp[0]))return Ext.ComponentManager.get(comp);comp=this.getAction(comp.substr(1));defaultType=this.defaultActionType||defaultType}comp=Ext.ComponentManager.create(comp,defaultType);wasAction&&(comp.instancedCmp=!0)}return comp},move:function(fromIdx,toIdx){var items=this.items;fromIdx.isComponent&&(fromIdx=items.indexOf(fromIdx));var item=items.getAt(fromIdx);if(fromIdx!==toIdx){item=items.removeAt(fromIdx);if(!1===item)return!1;toIdx=Math.min(toIdx,items.getCount());
items.insert(toIdx,item);this.onMove(item,fromIdx,toIdx);this.hasListeners.childmove&&this.fireEvent('childmove',this,item,fromIdx,toIdx);this.updateLayout()}return item},moveBefore:function(item,before){if(item!==before){var activeEl=Ext.Element.getActiveElement(!0);if(item.el&&item.el.contains(activeEl)){var refocusEl=activeEl;refocusEl.suspendFocusEvents();item.isLayoutMoving=!0}item=this.layout.moveItemBefore(item,before);refocusEl&&(item.isLayoutMoving=!1,refocusEl.focus(),refocusEl.resumeFocusEvents())}return item},
moveAfter:function(item,after){var layout=this.layout;item!==after&&(after=after?layout.getMoveAfterIndex(after):0,item=this.moveBefore(item,this.items.getAt(after)));return item},nextChild:function(child,selector){var items=this.items;child=items.indexOf(child);var i=0,len=items.length;if(-1!==child)if(selector)for(;i<len;i++){var result=items.getAt(child+i);if(!result||Ext.ComponentQuery.is(result,selector))break}else result=items.getAt(child+1);return result||null},onAdd:Ext.emptyFn,onBeforeAdd:function(item){var owner=
item.ownerCt;owner&&owner!==this&&owner.remove(item,!1)},onMove:Ext.emptyFn,onRemove:Ext.emptyFn,onPosition:function(){Ext.Component.prototype.onPosition.apply(this,arguments);this.repositionFloatingItems()},onResize:function(){Ext.Component.prototype.onResize.apply(this,arguments);this.repositionFloatingItems()},prevChild:function(child,selector){var items=this.items;child=items.indexOf(child);var i=0,len=items.length;if(-1!==child)if(selector)for(;i<len;i++){var result=items.getAt(child-i);if(!result||
Ext.ComponentQuery.is(result,selector))break}else result=items.getAt(child-1);return result||null},remove:function(component,autoDestroy){if(!this.destroyed&&!this.destroying)return!(component=this.getComponent(component))||this.hasListeners.beforeremove&&!1===this.fireEvent('beforeremove',this,component)||(this.doRemove(component,autoDestroy),this.hasListeners.remove&&this.fireEvent('remove',this,component),this.destroying||this.destroyAfterRemoving||component.floating||this.updateLayout(),this.destroyAfterRemoving&&
this.destroy()),component},removeAll:function(autoDestroy){var removeItems=this.floatingItems;var items=[],i=0;removeItems=removeItems?this.items.items.concat(removeItems.items):this.items.items.slice();var len=removeItems.length;Ext.suspendLayouts();for(this.removingAll=!0;i<len;i++){var item=removeItems[i];this.remove(item,autoDestroy);item.ownerCt!==this&&items.push(item)}this.removingAll=!1;Ext.resumeLayouts(!!len);return items},setLayout:function(layout){var currentLayout=this.layout,currentIsLayout=
currentLayout&&currentLayout.isLayout;'string'===typeof layout&&(layout={type:layout});var type=layout.type;!currentIsLayout||type&&type!==currentLayout.type?(currentIsLayout&&currentLayout.setOwner(null),currentLayout=this.self.prototype.layout,'string'===typeof currentLayout?layout.type=type||currentLayout:Ext.merge(Ext.merge({},currentLayout),layout),layout=this.layout=Ext.Factory.layout(layout),layout.setOwner(this)):(delete layout.type,currentLayout.setConfig(layout));this.rendered&&this.updateLayout()},
setActiveItem:function(item){return this.getLayout().setActiveItem(item)},updateActions:function(actions){for(var actionName in actions)actions[actionName].isAction||(actions[actionName]=new Ext.Action(actions[actionName]))},getAction:function(name){var owner;for(owner=this;owner;owner=owner.getRefOwner())if(owner.actions&&owner.actions[name])return owner.actions[name]},privates:{applyDefaults:function(config){var defaults=this.defaults;defaults&&(Ext.isFunction(defaults)&&(defaults=defaults.call(this,
config)),Ext.isString(config)&&(config=Ext.ComponentManager.get(config)),config.isComponent?config.setConfig(defaults,null,this._applyDefaultsOptions):config=this.self.getConfigurator().merge(this,Ext.Object.fork(defaults),config));return config},applyReference:function(reference){return this.setupReference(reference)},applyTargetCls:function(targetCls){this.layoutTargetCls=targetCls},detachComponent:function(component){Ext.getDetachedBody().appendChild(component.getEl())},doRemove:function(component,
flags){var doDetach=this.detachOnRemove,layout=this.layout,hasLayout=layout&&this.rendered,floating=component.floating;if(void 0===flags)var doDestroy=this.autoDestroy;else'boolean'===typeof flags?doDestroy=flags:(doDestroy='destroy'in flags&&flags.destroy,doDetach='detach'in flags&&flags.detach);flags=component.destroying||doDestroy;floating?this.floatingItems.remove(component):this.items.remove(component);hasLayout&&!floating&&(layout.running&&Ext.Component.cancelLayout(component,flags),layout.onRemove(component,
flags));if(!component.destroyed)component.onRemoved(flags);this.onRemove(component,flags);doDestroy?component.destroy():this.destroyed||(hasLayout&&!floating&&layout.afterRemove(component),doDetach&&component.rendered&&this.detachComponent(component))},finishRenderChildren:function(){Ext.Component.prototype.finishRenderChildren.call(this);var layout=this.getLayout();layout&&layout.finishRender()},getChildItemsToDisable:function(){return this.query('[isFormField],[isFocusableContainer],button')},getContentTarget:function(){return this.getLayout().getContentTarget()},
getDefaultContentTarget:function(){return this.el},prepareItems:function(items,applyDefaults){items=Ext.isArray(items)?items.slice():[items];for(var i=0,len=items.length,item;i<len;i++)item=items[i],null==item?(Ext.Array.erase(items,i,1),--i,--len):(applyDefaults&&(item=this.applyDefaults(item)),item.$initParent=this,item.isComponent&&(item.instancedCmp=!0),items[i]=this.lookupComponent(item),delete item.$initParent);return items},repositionFloatingItems:function(){var floaters=this.floatingItems,
i;if(floaters){floaters=floaters.items;var floaterCount=floaters.length;for(i=0;i<floaterCount;i++){var floater=floaters[i];floater.el&&!floater.hidden&&floater.setPosition(floater.x,floater.y)}}},initTabGuards:function(activate){activate=this.tabGuardBeforeEl;var afterGuard=this.tabGuardAfterEl,minTabIndex=this.tabGuardBeforeIndex||0,maxTabIndex=this.tabGuardAfterIndex||0,i;if(this.rendered&&this.tabGuard){var nodes=this.el.findTabbableElements({skipSelf:!0});nodes[0]===activate.dom&&nodes.shift();
nodes[nodes.length-1]===afterGuard.dom&&nodes.pop();if(nodes&&nodes.length){if(null==minTabIndex||null==maxTabIndex)for(i=0;i<nodes.length;i++){var tabIndex=+nodes[i].getAttribute('tabIndex');0<tabIndex&&(minTabIndex=Math.min(minTabIndex,tabIndex),maxTabIndex=Math.max(maxTabIndex,tabIndex))}activate.dom.setAttribute('tabIndex',minTabIndex);afterGuard.dom.setAttribute('tabIndex',maxTabIndex)}else activate.dom.removeAttribute('tabIndex'),afterGuard.dom.removeAttribute('tabIndex');if(this.onTabGuardFocusEnter){if(!activate.hasListeners.focusenter)activate.on('focusenter',
this.onTabGuardFocusEnter,this);if(!afterGuard.hasListeners.focusenter)afterGuard.on('focusenter',this.onTabGuardFocusEnter,this)}}},_noMargin:{'margin-top':'','margin-right':'','margin-bottom':'','margin-left':''},resetItemMargins:function(){for(var items=this.items.items,i=items.length,noMargin=this._noMargin,item;i--;)item=items[i],item.margin$=null,item.el.setStyle(noMargin)},setupRenderTpl:function(renderTpl){Ext.Component.prototype.setupRenderTpl.apply(this,arguments);this.getLayout().setupRenderTpl(renderTpl)}}},
0,['container'],['component','box','container'],{component:!0,box:!0,container:!0},['widget.container'],[[Ext.mixin.Queryable.prototype.mixinId||Ext.mixin.Queryable.$className,Ext.mixin.Queryable],[Ext.mixin.Container.prototype.mixinId||Ext.mixin.Container.$className,Ext.mixin.Container]],[Ext.container,'Container',Ext,'Container',Ext,'AbstractContainer'],0);
Ext.cmd.derive('Ext.layout.container.Editor',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(item){var key=(item=this.owner.autoSize)&&item.width,policy=this.sizePolicies;policy=
policy[key]||policy.$;key=item&&item.height;return policy=policy[key]||policy.$},calculate:function(ownerContext){var owner=this.owner,autoSize=owner.autoSize;!0===autoSize&&(autoSize=this.autoSizeDefault);if(autoSize){var fieldWidth=this.getDimension(owner,autoSize.width,'getWidth',owner.width);var fieldHeight=this.getDimension(owner,autoSize.height,'getHeight',owner.height)}ownerContext.childItems[0].setSize(fieldWidth,fieldHeight);ownerContext.setWidth(fieldWidth);ownerContext.setHeight(fieldHeight);
ownerContext.setContentSize(fieldWidth||owner.field.getWidth(),fieldHeight||owner.field.getHeight())},getDimension:function(owner,type,getMethod,ownerSize){switch(type){case 'boundEl':return owner.boundEl[getMethod]();case 'field':break;default:return ownerSize}}},0,0,0,0,['layout.editor'],0,[Ext.layout.container,'Editor'],0);
Ext.cmd.derive('Ext.Editor',Ext.container.Container,{layout:'editor',allowBlur:!0,revertInvalid:!0,value:'',alignment:'c-c?',offsets:[0,0],shadow:'frame',constrain:!1,swallowKeys:!0,completeOnEnter:!0,cancelOnEsc:!0,updateEl:!1,focusOnToFront:!1,baseCls:'x-editor',editing:!1,preventDefaultAlign:!0,useBoundValue:!0,specialKeyDelay:1,initComponent:function(){var field=this.field=Ext.ComponentManager.create(this.field||{},'textfield');field.msgTarget=field.msgTarget||'qtip';this.mon(field,{scope:this,
specialkey:this.onSpecialKey});field.grow&&this.mon(field,'autosize',this.onFieldAutosize,this,{delay:1});this.floating={constrain:this.constrain};this.items=field;Ext.container.Container.prototype.initComponent.call(this)},onAdded:function(container){this.ownerCmp=container},onFieldAutosize:function(){this.updateLayout()},afterRender:function(ct,position){var inputEl=this.field.inputEl;Ext.container.Container.prototype.afterRender.apply(this,arguments);inputEl&&(inputEl.dom.name='',this.swallowKeys&&
inputEl.swallowEvent(['keypress','keydown']))},onSpecialKey:function(field,event){var key=event.getKey(),complete=this.completeOnEnter&&key===event.ENTER;key=this.cancelOnEsc&&key===event.ESC;var task=this.specialKeyTask;if(complete||key)event.stopEvent(),task||(this.specialKeyTask=task=new Ext.util.DelayedTask),task.delay(this.specialKeyDelay,complete?this.completeEdit:this.cancelEdit,this);this.fireEvent('specialkey',this,field,event)},startEdit:function(el,value,doFocus){var field=this.field;this.completeEdit(!0);
this.boundEl=Ext.get(el);el=this.boundEl.dom;this.useBoundValue&&!Ext.isDefined(value)&&(value=Ext.String.trim(el.textContent||el.innerText||el.innerHTML));!1!==this.fireEvent('beforestartedit',this,this.boundEl,value)&&(this.context&&(value=this.context.value),Ext.suspendLayouts(),this.rendered||(el=this.ownerCt,el=this.renderTo||el&&el.getEl()||Ext.getBody(),Ext.fly(el).position(),this.renderTo=el),this.startValue=value,this.show(),this.realign(!0),field.suspendEvents(),field.setValue(value),field.resetOriginalValue(),
field.resumeEvents(),!1!==doFocus&&field.focus(field.selectOnFocus?!0:[Number.MAX_VALUE]),field.autoSize&&field.autoSize(),Ext.resumeLayouts(!0),this.toggleBoundEl(!1),this.editing=!0)},realign:function(autoSize){!0===autoSize&&this.updateLayout();this.alignTo(this.boundEl,this.alignment,this.offsets)},completeEdit:function(remainVisible){var field=this.field,startValue=this.startValue,cancel=this.context&&this.context.cancel;if(this.editing){field.assertValue&&field.assertValue();var value=this.getValue();
if(field.isValid())if(this.ignoreNoChange&&!field.didValueChange(value,startValue))this.onEditComplete(remainVisible);else!1!==this.fireEvent('beforecomplete',this,value,startValue)&&(value=this.getValue(),this.updateEl&&this.boundEl&&this.boundEl.setHtml(value),this.onEditComplete(remainVisible,cancel),this.fireEvent('complete',this,value,startValue));else!1!==this.revertInvalid&&this.cancelEdit(remainVisible)}},onShow:function(){Ext.container.Container.prototype.onShow.apply(this,arguments);this.fireEvent('startedit',
this,this.boundEl,this.startValue)},cancelEdit:function(remainVisible){var startValue=this.startValue,field=this.field;if(this.editing){if(field){var value=this.editedValue=this.getValue();field.suspendEvents();this.setValue(startValue);field.resumeEvents()}this.onEditComplete(remainVisible,!0);this.fireEvent('canceledit',this,value,startValue);delete this.editedValue}},onEditComplete:function(remainVisible,canceling){this.editing=!1;!0!==remainVisible&&(this.hide(),this.toggleBoundEl(!0))},onFocusLeave:function(e){!0===
this.allowBlur&&this.editing&&this.completeEdit();Ext.container.Container.prototype.onFocusLeave.call(this,e)},onHide:function(){var field=this.field;this.editing?this.completeEdit():field.collapse&&field.collapse();Ext.container.Container.prototype.onHide.apply(this,arguments)},getValue:function(){return this.field.getValue()},setValue:function(value){this.field.setValue(value)},toggleBoundEl:function(visible){!1!==this.hideEl&&this.boundEl.setVisible(visible)},doDestroy:function(){var task=this.specialKeyTask;
task&&task.cancel();Ext.destroy(this.field);Ext.container.Container.prototype.doDestroy.call(this)}},0,['editor'],['component','box','container','editor'],{component:!0,box:!0,container:!0,editor:!0},['widget.editor'],0,[Ext,'Editor'],0);
Ext.cmd.derive('Ext.util.StoreHolder',Ext.Base,{mixinId:'storeholder',autoDestroyBoundStore:!1,bindStore:function(store,initial,propertyName){propertyName=propertyName||'store';var oldStore=initial?null:this[propertyName];if(store!==oldStore){if(oldStore){if(!this.onUnbindStore.$emptyFn)this.onUnbindStore(oldStore,initial,propertyName);oldStore.destroyed||(this.autoDestroyBoundStore&&'store'===propertyName&&oldStore.autoDestroy?oldStore.destroy():this.unbindStoreListeners(oldStore))}if(store){if(this[propertyName]=
store=Ext.data.StoreManager.lookup(store),this.bindStoreListeners(store),!this.onBindStore.$emptyFn)this.onBindStore(store,oldStore,initial)}else this[propertyName]=null;this.fireEvent&&this.fireEvent('storechange',this,store,oldStore)}return this},getStore:function(){return this.store},setStore:function(store){this.bindStore(store)},unbindStoreListeners:function(store){var listeners=this.storeListeners;listeners&&store.un(listeners)},bindStoreListeners:function(store){var listeners=this.getStoreListeners(store);
listeners&&(listeners=Ext.apply({},listeners),listeners.scope||(listeners.scope=this),this.storeListeners=listeners,store.on(listeners))},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,'StoreHolder'],0);
Ext.cmd.derive('Ext.LoadMask',Ext.Component,{isLoadMask:!0,msg:'Loading...',msgCls:'x-mask-loading',msgWrapCls:'x-mask-msg',useMsg:!0,useTargetEl:!1,cls:'x-mask',componentCls:'x-border-box',ariaRole:'progressbar',focusable:!0,tabIndex:0,childEls:['msgWrapEl','msgEl','msgTextEl'],renderTpl:'\x3cdiv id\x3d"{id}-msgWrapEl" data-ref\x3d"msgWrapEl" class\x3d"{[values.$comp.msgWrapCls]}" role\x3d"presentation"\x3e;\x3cdiv id\x3d"{id}-msgEl" data-ref\x3d"msgEl" class\x3d"{[values.$comp.msgCls]} ;x-;mask-msg-inner {childElCls}" role\x3d"presentation"\x3e;\x3cdiv id\x3d"{id}-msgTextEl" data-ref\x3d"msgTextEl" class\x3d";x-;mask-msg-text;{childElCls}" role\x3d"presentation"\x3e{msg}\x3c/div\x3e;\x3c/div\x3e;\x3c/div\x3e'.split(';'),
maskOnDisable:!1,skipLayout:!0,constructor:function(config){if(2===arguments.length){var comp=this.target=config;config=arguments[1]}else comp=config.target;Ext.Component.prototype.constructor.call(this,config);comp.isComponent?(this.ownerCt=comp,this.hidden=!0,this.renderTo=this.getMaskTarget(),this.external=this.renderTo===Ext.getBody(),this.bindComponent(comp)):(Ext.get(comp),this.isElement=!0,this.renderTo=this.target);this.render(this.renderTo);this.store&&this.bindStore(this.store,!0)},initRenderData:function(){var result=
Ext.Component.prototype.initRenderData.apply(this,arguments);result.msg=this.msg||'';return result},onRender:function(){Ext.Component.prototype.onRender.apply(this,arguments);this.maskEl=this.el},bindComponent:function(comp){var listeners={scope:this,resize:this.sizeMask};if(this.external)if(listeners.added=this.onComponentAdded,listeners.removed=this.onComponentRemoved,comp.floating)listeners.move=this.sizeMask,this.activeOwner=comp;else if(comp.ownerCt)this.onComponentAdded(comp.ownerCt);this.mon(comp,
listeners);this.external&&this.mon(Ext.GlobalEvents,{show:this.onContainerShow,hide:this.onContainerHide,expand:this.onContainerExpand,collapse:this.onContainerCollapse,scope:this})},onComponentAdded:function(owner){delete this.activeOwner;this.floatParent=owner;owner.floating||(owner=owner.up('[floating]'));owner?(this.activeOwner=owner,this.mon(owner,'move',this.sizeMask,this),this.mon(owner,'tofront',this.onOwnerToFront,this)):this.preventBringToFront=!0;owner=this.floatParent.ownerCt;this.rendered&&
this.isVisible()&&owner&&(this.floatOwner=owner,this.mon(owner,'afterlayout',this.sizeMask,this,{single:!0}))},onComponentRemoved:function(owner){owner=this.activeOwner;var floatOwner=this.floatOwner;owner&&(this.mun(owner,'move',this.sizeMask,this),this.mun(owner,'tofront',this.onOwnerToFront,this));floatOwner&&this.mun(floatOwner,'afterlayout',this.sizeMask,this);delete this.activeOwner;delete this.floatOwner},afterRender:function(){Ext.Component.prototype.afterRender.apply(this,arguments);if(Ext.isIE)this.el.on('mousedown',
this.onMouseDown,this);this.el.skipGarbageCollection=!0},onMouseDown:function(e){var el=this.el;e.within(el)&&(e.preventDefault(),el.focus())},onOwnerToFront:function(owner,zIndex){this.el.setStyle('zIndex',zIndex+1)},onContainerShow:function(container){if(!this.isHierarchicallyHidden())this.onComponentShow()},onContainerHide:function(container){if(this.isHierarchicallyHidden())this.onComponentHide()},onContainerExpand:function(container){if(!this.isHierarchicallyHidden())this.onComponentShow()},
onContainerCollapse:function(container){if(this.isHierarchicallyHidden())this.onComponentHide()},onComponentHide:function(){this.rendered&&this.isVisible()&&(this.hide(),this.showNext=!0)},onComponentShow:function(){this.showNext&&this.show();delete this.showNext},sizeMask:function(){var target=this.activeOwner||this.target,boxTarget=this.external?this.getOwner().el:this.getMaskTarget();if(this.rendered&&this.isVisible()){if(this.external){if(!this.isElement&&target.floating){var zIndex=target.el.getZIndex();
if(!isNaN(zIndex))this.onOwnerToFront(target,zIndex)}this.el.setSize(boxTarget.getSize()).alignTo(boxTarget,'tl-tl')}this.msgWrapEl.center(this.el)}},bindStore:function(store,initial){Ext.destroy(this.proxyListeners);this.mixins.storeholder.bindStore.apply(this,arguments);if(store=this.store){for(;store.getSource;)store=store.getSource();store.loadsSynchronously()||(this.proxyListeners=store.getProxy().on({exception:this.onLoad,scope:this,destroyable:!0}));if(store.isLoading())this.onBeforeLoad()}},
getStoreListeners:function(store){var onLoad=this.onLoad,beforeLoad=this.onBeforeLoad,result={cachemiss:beforeLoad,cachefilled:{fn:onLoad,buffer:100}};store.loadsSynchronously()||(result.beforeload=beforeLoad,result.load=onLoad);return result},onDisable:function(){Ext.Component.prototype.onDisable.apply(this,arguments);if(this.loading)this.onLoad()},getOwner:function(){return this.ownerCt||this.ownerCmp||this.floatParent},getMaskTarget:function(){var owner=this.getOwner();return this.isElement?this.target:
this.useTargetEl?owner.getTargetEl():owner.getMaskTarget()||Ext.getBody()},onBeforeLoad:function(){var me=this,owner=me.getOwner();if(!me.disabled)if(me.loading=!0,owner.componentLayoutCounter)me.maybeShow();else{var origin=owner.afterComponentLayout;owner.afterComponentLayout=function(){owner.afterComponentLayout=origin;origin.apply(owner,arguments);me.maybeShow()}}},maybeShow:function(){var owner=this.getOwner();!owner.isVisible(!0)||this.isComponent&&!owner.el.isVisible(!0)?this.showNext=!0:this.loading&&
owner.rendered&&this.show()},hide:function(){var ownerCt=this.ownerCt;if(this.isElement)ownerCt.unmask(),this.fireEvent('hide',this);else return ownerCt&&ownerCt.updateMaskState(!1,this),delete this.showNext,Ext.Component.prototype.hide.apply(this,arguments)},show:function(){if(this.isElement)this.ownerCt.mask(this.useMsg?this.msg:'',this.msgCls),this.fireEvent('show',this);else return Ext.Component.prototype.show.apply(this,arguments)},afterShow:function(){var ownerCt=this.ownerCt;this.loading=!0;
Ext.Component.prototype.afterShow.apply(this,arguments);ownerCt.updateMaskState(!0,this);this.el.restoreTabbableState();this.syncMaskState()},syncMaskState:function(){var ownerCt=this.ownerCt,el=this.el;this.isVisible()&&(this.hasOwnProperty('msgWrapCls')&&(el.dom.className=this.msgWrapCls),this.useMsg?(this.msgTextEl.setHtml(this.msg),this.ariaEl.dom.setAttribute('aria-valuetext',this.msg)):this.msgWrapEl.hide(),this.shim||Ext.useShims?el.enableShim(null,!0):el.disableShim(),ownerCt.el.contains(Ext.Element.getActiveElement())&&
this.focus(),this.sizeMask())},onLoad:function(){this.loading=!1;this.hide()},doDestroy:function(){this.ownerCt=null;this.bindStore(null);this.isElement&&this.ownerCt.unmask();Ext.Component.prototype.doDestroy.call(this)}},1,['loadmask'],['component','box','loadmask'],{component:!0,box:!0,loadmask:!0},['widget.loadmask'],[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Ext,'LoadMask'],0);
Ext.cmd.derive('Ext.layout.component.Component',Ext.layout.Layout,{type:'component',isComponentLayout:!0,nullBox:{},usesContentHeight:!0,usesContentWidth:!0,usesHeight:!0,usesWidth:!0,widthCache:{},heightCache:{},beginLayoutCycle:function(ownerContext,firstCycle){var owner=this.owner,ownerCtContext=ownerContext.ownerCtContext,heightModel=ownerContext.heightModel,widthModel=ownerContext.widthModel,body=owner.el.dom===document.body,lastBox=owner.lastBox||this.nullBox,lastSize=owner.el.lastBox||this.nullBox,
dirty=!body,isTopLevel=ownerContext.isTopLevel;Ext.layout.Layout.prototype.beginLayoutCycle.call(this,ownerContext,firstCycle);firstCycle&&(this.usesContentWidth&&++ownerContext.consumersContentWidth,this.usesContentHeight&&++ownerContext.consumersContentHeight,this.usesWidth&&++ownerContext.consumersWidth,this.usesHeight&&++ownerContext.consumersHeight,ownerCtContext&&!ownerCtContext.hasRawContent&&(ownerCtContext=owner.ownerLayout))&&(ownerCtContext.usesWidth&&++ownerContext.consumersWidth,ownerCtContext.usesHeight&&
++ownerContext.consumersHeight);widthModel.configured?(ownerCtContext=owner[widthModel.names.width],isTopLevel&&widthModel.calculatedFrom&&(ownerCtContext=lastBox.width),body||(dirty=this.setWidthInDom||(firstCycle?ownerCtContext!==lastSize.width:widthModel.constrained)),ownerContext.setWidth(ownerCtContext,dirty)):isTopLevel&&(widthModel.calculated&&(widthModel=lastBox.width,ownerContext.setWidth(widthModel,widthModel!==lastSize.width)),widthModel=lastBox.x,ownerContext.setProp('x',widthModel,widthModel!==
lastSize.x));heightModel.configured?(owner=owner[heightModel.names.height],isTopLevel&&heightModel.calculatedFrom&&(owner=lastBox.height),body||(dirty=firstCycle?owner!==lastSize.height:heightModel.constrained),ownerContext.setHeight(owner,dirty)):isTopLevel&&(heightModel.calculated&&(widthModel=lastBox.height,ownerContext.setHeight(widthModel,widthModel!==lastSize.height)),widthModel=lastBox.y,ownerContext.setProp('y',widthModel,widthModel!==lastSize.y))},finishedLayout:function(ownerContext){var elementChildren=
ownerContext.children,owner=this.owner,i;if(elementChildren){var len=elementChildren.length;for(i=0;i<len;i++){var elContext=elementChildren[i];elContext.el.lastBox=elContext.props}}ownerContext.previousSize=this.lastComponentSize;this.lastComponentSize=owner.el.lastBox=elementChildren=ownerContext.props;owner=owner.lastBox||(owner.lastBox={});owner.x=elementChildren.x;owner.y=elementChildren.y;owner.width=elementChildren.width;owner.height=elementChildren.height;owner.invalid=!1;Ext.layout.Layout.prototype.finishedLayout.call(this,
ownerContext)},notifyOwner:function(ownerContext){var currentSize=this.lastComponentSize;ownerContext=ownerContext.previousSize;this.owner.afterComponentLayout(currentSize.width,currentSize.height,ownerContext?ownerContext.width:void 0,ownerContext?ownerContext.height:void 0)},getTarget:function(){return this.owner.el},getRenderTarget:function(){return this.owner.el},cacheTargetInfo:function(ownerContext){var targetInfo=this.targetInfo;targetInfo||(ownerContext=ownerContext.getEl('getTarget',this),
this.targetInfo=targetInfo={padding:ownerContext.getPaddingInfo(),border:ownerContext.getBorderInfo()});return targetInfo},measureAutoDimensions:function(ownerContext,dimensions){var owner=this.owner,containerLayout=owner.layout,heightModel=ownerContext.heightModel,widthModel=ownerContext.widthModel,boxParent=ownerContext.boxParent,isBoxParent=ownerContext.isBoxParent,target=ownerContext.target,props=ownerContext.props,isContainer,ret={gotWidth:!1,gotHeight:!1,isContainer:isContainer=!ownerContext.hasRawContent},
hv=dimensions||3,got=dimensions=0;if(widthModel.shrinkWrap&&ownerContext.consumersContentWidth){++dimensions;var zeroWidth=!(hv&1);if(isContainer)zeroWidth?(ret.contentWidth=0,ret.gotWidth=!0,++got):void 0!==(ret.contentWidth=ownerContext.getProp('contentWidth'))&&(ret.gotWidth=!0,++got);else{var ready=props.contentWidth;if('number'===typeof ready)ret.contentWidth=ready,ret.gotWidth=!0,++got;else if(ready=zeroWidth?!0:ownerContext.hasDomProp('containerChildrenSizeDone')?isBoxParent||!boxParent||boxParent.widthModel.shrinkWrap?
!0:boxParent.hasDomProp('width'):!1)zeroWidth?zeroWidth=0:containerLayout&&containerLayout.measureContentWidth?zeroWidth=containerLayout.measureContentWidth(ownerContext):target.cacheWidth?(zeroWidth=target.xtype+'-'+target.ui,ready=this.widthCache,zeroWidth=ready[zeroWidth]||(ready[zeroWidth]=this.measureContentWidth(ownerContext))):zeroWidth=this.measureContentWidth(ownerContext),isNaN(ret.contentWidth=zeroWidth)||(ownerContext.setContentWidth(zeroWidth,!0),ret.gotWidth=!0,++got)}}else widthModel.natural&&
ownerContext.consumersWidth&&(++dimensions,ready=props.width,'number'===typeof ready?(ret.width=ready,ret.gotWidth=!0,++got):(ready=isBoxParent||!boxParent?!0:boxParent.hasDomProp('width'))&&!isNaN(ret.width=this.measureOwnerWidth(ownerContext))&&(ownerContext.setWidth(ret.width,!1),ret.gotWidth=!0,++got));if(heightModel.shrinkWrap&&ownerContext.consumersContentHeight)if(++dimensions,heightModel=!(hv&2),isContainer)heightModel?(ret.contentHeight=0,ret.gotHeight=!0,++got):void 0!==(ret.contentHeight=
ownerContext.getProp('contentHeight'))&&(ret.gotHeight=!0,++got);else if(ready=props.contentHeight,'number'===typeof ready)ret.contentHeight=ready,ret.gotHeight=!0,++got;else{if(ready=heightModel?!0:ownerContext.hasDomProp('containerChildrenSizeDone')?owner.noWrap?!0:widthModel.shrinkWrap?isBoxParent||!boxParent||boxParent.widthModel.shrinkWrap?!0:boxParent.hasDomProp('width'):(ownerContext.bodyContext||ownerContext).hasDomProp('width'):!1)heightModel?zeroWidth=0:containerLayout&&containerLayout.measureContentHeight?
zeroWidth=containerLayout.measureContentHeight(ownerContext):target.cacheHeight?(zeroWidth=target.xtype+'-'+target.ui,ready=this.heightCache,zeroWidth=ready[zeroWidth]||(ready[zeroWidth]=this.measureContentHeight(ownerContext))):zeroWidth=this.measureContentHeight(ownerContext),isNaN(ret.contentHeight=zeroWidth)||(ownerContext.setContentHeight(zeroWidth,!0),ret.gotHeight=!0,++got)}else heightModel.natural&&ownerContext.consumersHeight&&(++dimensions,ready=props.height,'number'===typeof ready?(ret.height=
ready,ret.gotHeight=!0,++got):(ready=isBoxParent||!boxParent?!0:boxParent.hasDomProp('width'))&&!isNaN(ret.height=this.measureOwnerHeight(ownerContext))&&(ownerContext.setHeight(ret.height,!1),ret.gotHeight=!0,++got));if(boxParent)ownerContext.onBoxMeasured();ret.gotAll=got===dimensions;return ret},measureContentWidth:function(ownerContext){return ownerContext.el.getWidth()-ownerContext.getFrameInfo().width},measureContentHeight:function(ownerContext){return ownerContext.el.getHeight()-ownerContext.getFrameInfo().height},
measureOwnerHeight:function(ownerContext){return ownerContext.el.getHeight()},measureOwnerWidth:function(ownerContext){return ownerContext.el.getWidth()}},0,0,0,0,0,0,[Ext.layout.component,'Component'],0);
Ext.cmd.derive('Ext.layout.component.Auto',Ext.layout.component.Component,{type:'autocomponent',setHeightInDom:!1,setWidthInDom:!1,waitForOuterHeightInDom:!1,waitForOuterWidthInDom:!1,beginLayoutCycle:function(ownerContext,firstCycle){var lastWidthModel=this.lastWidthModel,lastHeightModel=this.lastHeightModel,el=this.owner.el;Ext.layout.component.Component.prototype.beginLayoutCycle.apply(this,arguments);lastWidthModel&&lastWidthModel.fixed&&ownerContext.widthModel.shrinkWrap&&el.setWidth(null);lastHeightModel&&
lastHeightModel.fixed&&ownerContext.heightModel.shrinkWrap&&el.setHeight(null)},calculate:function(ownerContext){var measurement=this.measureAutoDimensions(ownerContext),heightModel=ownerContext.heightModel,widthModel=ownerContext.widthModel;measurement.gotWidth?widthModel.shrinkWrap?this.publishOwnerWidth(ownerContext,measurement.contentWidth):this.publishInnerWidth&&this.publishInnerWidth(ownerContext,measurement.width):!widthModel.auto&&this.publishInnerWidth&&(widthModel=this.waitForOuterWidthInDom?
ownerContext.getDomProp('width'):ownerContext.getProp('width'),void 0===widthModel?this.done=!1:this.publishInnerWidth(ownerContext,widthModel));measurement.gotHeight?heightModel.shrinkWrap?this.publishOwnerHeight(ownerContext,measurement.contentHeight):this.publishInnerHeight&&this.publishInnerHeight(ownerContext,measurement.height):!heightModel.auto&&this.publishInnerHeight&&(heightModel=this.waitForOuterHeightInDom?ownerContext.getDomProp('height'):ownerContext.getProp('height'),void 0===heightModel?
this.done=!1:this.publishInnerHeight(ownerContext,heightModel));measurement.gotAll||(this.done=!1)},calculateOwnerHeightFromContentHeight:function(ownerContext,contentHeight){return contentHeight+ownerContext.getFrameInfo().height},calculateOwnerWidthFromContentWidth:function(ownerContext,contentWidth){return contentWidth+ownerContext.getFrameInfo().width},publishOwnerHeight:function(ownerContext,contentHeight){var owner=this.owner;contentHeight=this.calculateOwnerHeightFromContentHeight(ownerContext,
contentHeight);if(isNaN(contentHeight))this.done=!1;else{owner=Ext.Number.constrain(contentHeight,owner.minHeight,owner.maxHeight);if(owner===contentHeight)var dirty=this.setHeightInDom;else{var heightModel=this.sizeModels[owner<contentHeight?'constrainedMax':'constrainedMin'];contentHeight=owner;ownerContext.heightModel.calculatedFromShrinkWrap?ownerContext.heightModel=heightModel:ownerContext.invalidate({heightModel:heightModel})}ownerContext.setHeight(contentHeight,dirty)}},publishOwnerWidth:function(ownerContext,
contentWidth){var owner=this.owner;contentWidth=this.calculateOwnerWidthFromContentWidth(ownerContext,contentWidth);if(isNaN(contentWidth))this.done=!1;else{owner=Ext.Number.constrain(contentWidth,owner.minWidth,owner.maxWidth);if(owner===contentWidth)var dirty=this.setWidthInDom;else{var widthModel=this.sizeModels[owner<contentWidth?'constrainedMax':'constrainedMin'];contentWidth=owner;ownerContext.widthModel.calculatedFromShrinkWrap?ownerContext.widthModel=widthModel:ownerContext.invalidate({widthModel:widthModel})}ownerContext.setWidth(contentWidth,
dirty)}}},0,0,0,0,['layout.autocomponent'],0,[Ext.layout.component,'Auto'],0);
Ext.cmd.derive('Ext.layout.component.ProgressBar',Ext.layout.component.Auto,{type:'progressbar',beginLayout:function(ownerContext){var i;Ext.layout.component.Auto.prototype.beginLayout.apply(this,arguments);if(!ownerContext.textEls){var textEls=this.owner.textEl;if(textEls.isComposite)for(ownerContext.textEls=[],textEls=textEls.elements,i=textEls.length;i--;)ownerContext.textEls[i]=ownerContext.getEl(Ext.get(textEls[i]));else ownerContext.textEls=[ownerContext.getEl('textEl')]}},calculate:function(ownerContext){var i,
width;Ext.layout.component.Auto.prototype.calculate.apply(this,arguments);if(Ext.isNumber(width=ownerContext.getProp('width'))){width-=ownerContext.getBorderInfo().width;var textEls=ownerContext.textEls;for(i=textEls.length;i--;)textEls[i].setWidth(width)}else this.done=!1}},0,0,0,0,['layout.progressbar'],0,[Ext.layout.component,'ProgressBar'],0);
Ext.cmd.derive('Ext.ProgressBar',Ext.Component,{baseCls:'x-progress',animate:!1,text:'',waitTimer:null,childEls:['bar'],defaultBindProperty:'value',renderTpl:'\x3ctpl if\x3d"internalText"\x3e;\x3cdiv class\x3d"{baseCls}-text {baseCls}-text-back" role\x3d"presentation"\x3e{text}\x3c/div\x3e;\x3c/tpl\x3e;\x3cdiv id\x3d"{id}-bar" data-ref\x3d"bar" class\x3d"{baseCls}-bar {baseCls}-bar-{ui}" role\x3d"presentation" style\x3d"width:{percentage}%"\x3e;\x3ctpl if\x3d"internalText"\x3e;\x3cdiv class\x3d"{baseCls}-text" role\x3d"presentation"\x3e;\x3cdiv role\x3d"presentation"\x3e{text}\x3c/div\x3e;\x3c/div\x3e;\x3c/tpl\x3e;\x3c/div\x3e'.split(';'),componentLayout:'progressbar',
ariaRole:'progressbar',focusable:!0,tabIndex:0,autoEl:{'aria-valuemin':'0','aria-valuenow':'0','aria-valuemax':'100'},initRenderData:function(){var value=this.value||0;var data=Ext.Component.prototype.initRenderData.call(this);return Ext.apply(data,{internalText:!this.hasOwnProperty('textEl'),text:this.text||Math.round(100*value)+'%',percentage:100*value})},onRender:function(){Ext.Component.prototype.onRender.apply(this,arguments);this.textEl?(this.textEl=Ext.get(this.textEl),this.updateText(this.text)):
this.textEl=this.el.select('.'+this.baseCls+'-text')},afterRender:function(){Ext.Component.prototype.afterRender.apply(this,arguments);this.text&&this.ariaEl.dom.setAttribute('aria-valuetext',this.text)},updateValue:function(value){this.updateProgress(value)},updateProgress:function(value,text,animate){value=value||0;var oldValue=this.value,textTpl=this.getTextTpl();this.value=value||(value=0);null!=text?(this.autoText=!1,this.updateText(text)):textTpl?(this.autoText=!1,this.updateText(textTpl.apply({value:value,
percent:100*value}))):this.text||!1===this.autoText?this.text&&this.ariaEl.dom&&this.ariaEl.dom.removeAttribute('aria-valuetext'):(this.autoText=!0,this.updateText(Math.round(100*value)+'%'));this.rendered&&!this.destroyed&&(!0===animate||!1!==animate&&this.animate?(this.bar.stopAnimation(),this.bar.animate(Ext.apply({from:{width:100*oldValue+'%'},to:{width:100*value+'%'}},this.animate))):this.bar.setStyle('width',100*value+'%'),this.ariaEl.dom.setAttribute('aria-valuenow',Math.round(100*value)));
this.fireEvent('update',this,value,text);return this},updateText:function(text){this.autoText||(this.text=text);this.rendered&&(this.textEl.setHtml(text),this.autoText?this.ariaEl.dom.removeAttribute('aria-valuetext'):this.ariaEl.dom.setAttribute('aria-valuetext',text));return this},applyText:function(text){this.updateText(text)},getText:function(){return this.text},wait:function(o){var me=this;me.waitTimer||(o=o||{},null!=o.text&&(me.autoText=!1),me.updateText(o.text),me.waitTimer=Ext.TaskManager.start({run:function(i){var inc=
o.increment||10;me.updateProgress(100/inc*((i-1+inc)%inc+1)*.01,null,o.animate)},interval:o.interval||1E3,duration:o.duration,onStop:function(){o.fn&&o.fn.apply(o.scope||me);me.reset()},scope:me}));return me},isWaiting:function(){return null!==this.waitTimer},reset:function(hide){this.updateProgress(0);this.clearTimer();!0===hide&&this.hide();this.rendered&&this.ariaEl.dom.removeAttribute('aria-valuetext');return this},clearTimer:function(){this.waitTimer&&(this.waitTimer.onStop=null,Ext.TaskManager.stop(this.waitTimer),
this.waitTimer=null)},doDestroy:function(){var bar=this.bar;this.clearTimer();this.rendered&&(this.textEl.isComposite&&this.textEl.clear(),Ext.destroyMembers(this,'textEl','progressBar'),bar&&this.animate&&bar.stopAnimation());Ext.Component.prototype.doDestroy.call(this)}},0,['progressbar'],['component','box','progressbar'],{component:!0,box:!0,progressbar:!0},['widget.progressbar'],[[Ext.ProgressBase.prototype.mixinId||Ext.ProgressBase.$className,Ext.ProgressBase]],[Ext,'ProgressBar'],0);
Ext.cmd.derive('Ext.dom.ButtonElement',Ext.dom.Element,{setSize:function(width,height,animate){var component=this.component;Ext.dom.Element.prototype.setSize.call(this,width,height,animate);component.btnWrap.setStyle('table-layout',width&&'auto'!==width?'fixed':'');component.btnEl.setStyle('height',height&&'auto'!==height?'auto':'');return this},setStyle:function(prop,value){var component=this.component;Ext.dom.Element.prototype.setStyle.call(this,prop,value);if(prop){if('width'===prop||'string'!==
typeof prop&&'width'in prop){var width=value||prop.width;component.btnWrap.setStyle('table-layout',width&&'auto'!==width?'fixed':'')}if('height'===prop||'string'!==typeof prop&&'height'in prop)prop=value||prop.height,component.btnEl.setStyle('height',prop&&'auto'!==prop?'auto':'')}return this},setHeight:function(height,animate){Ext.dom.Element.prototype.setHeight.call(this,height,animate);this.component.btnEl.setStyle('height',height&&'auto'!==height?'auto':'');return this},setWidth:function(width,
animate){Ext.dom.Element.prototype.setWidth.call(this,width,animate);this.component.btnWrap.setStyle('table-layout',width&&'auto'!==width?'fixed':'');return this}},0,0,0,0,0,0,[Ext.dom,'ButtonElement'],0);
Ext.cmd.derive('Ext.button.Manager',Ext.Base,{singleton:!0,alternateClassName:'Ext.ButtonToggleManager',groups:{},pressedButton:null,init:function(){this.initialized||(Ext.getDoc().on({mouseup:this.onDocumentMouseUp,scope:this}),this.initialized=!0)},onButtonMousedown:function(button,e){var pressed=this.pressedButton;if(pressed&&!pressed.destroying&&!pressed.destroyed)pressed.onMouseUp(e);this.pressedButton=button},onDocumentMouseUp:function(e){var pressed=this.pressedButton;!pressed||pressed.destroying||
pressed.destroyed||(pressed.onMouseUp(e),this.pressedButton=null)},toggleGroup:function(btn,state){if(state){state=this.groups[btn.toggleGroup];var length=state.length,i;for(i=0;i<length;i++)state[i]!==btn&&state[i].toggle(!1)}},register:function(btn){var groups=this.groups,group=groups[btn.toggleGroup];this.init();btn.toggleGroup&&(group||(group=groups[btn.toggleGroup]=[]),group.push(btn),btn.on('toggle',this.toggleGroup,this))},unregister:function(btn){if(btn.toggleGroup){var group=this.groups[btn.toggleGroup];
group&&(Ext.Array.remove(group,btn),btn.un('toggle',this.toggleGroup,this))}},getPressed:function(groupName){groupName=this.groups[groupName];var i=0,len;if(groupName)for(len=groupName.length;i<len;i++)if(!0===groupName[i].pressed)return groupName[i];return null}},0,0,0,0,0,0,[Ext.button,'Manager',Ext,'ButtonToggleManager'],0);
Ext.cmd.derive('Ext.menu.Manager',Ext.Base,{singleton:!0,alternateClassName:'Ext.menu.MenuMgr',groups:{},visible:[],constructor:function(){var me=this;me.onShow=function(){me.registerGlobalListeners();return me.onShow.apply(me,arguments)}},onGlobalScroll:function(scroller){var allMenus=this.visible,len=allMenus.length,scrollerEl=scroller.getElement();if(len&&scroller!==Ext.scroll.Scroller.viewport)for(allMenus=allMenus.slice(),scroller=0;scroller<len;++scroller){var menu=allMenus[scroller];menu.alignOnScroll||
!1===menu.hideOnScroll||menu.owns(scrollerEl)||menu.hide()}},checkActiveMenus:function(e){var allMenus=this.visible,len=allMenus.length,i,mousedownCmp=Ext.Component.fromElement(e.target);if(len)for(allMenus=allMenus.slice(),i=0;i<len;++i){var menu=allMenus[i];menu.owns(e)||mousedownCmp&&mousedownCmp.isMenuItem&&mousedownCmp.menu===menu||menu.hide()}},onShow:function(menu){menu.floating&&Ext.Array.include(this.visible,menu)},onHide:function(menu){menu.floating&&Ext.Array.remove(this.visible,menu)},
hideAll:function(){var allMenus=this.visible,len=allMenus.length,result=!1,i;if(len)for(allMenus=allMenus.slice(),i=0;i<len;i++)allMenus[i].hide(),result=!0;return result},get:function(menu,config){'string'===typeof menu?(config=Ext.getCmp(menu),config instanceof Ext.menu.Menu&&(menu=config)):Ext.isArray(menu)?(config=Ext.apply({items:menu},config),menu=new Ext.menu.Menu(config)):menu.isComponent||(config=Ext.apply({},menu,config),menu=Ext.ComponentManager.create(config,'menu'));return menu},registerCheckable:function(menuItem){var groups=
this.groups,groupId=menuItem.group;groupId&&(groups[groupId]||(groups[groupId]=[]),groups[groupId].push(menuItem))},unregisterCheckable:function(menuItem){var groups=this.groups,groupId=menuItem.group;groupId&&Ext.Array.remove(groups[groupId],menuItem)},onCheckChange:function(menuItem,state){var groups=this.groups,groupId=menuItem.group,i=0;if(groupId&&state)for(state=groups[groupId],groups=state.length;i<groups;i++)groupId=state[i],groupId!==menuItem&&groupId.setChecked(!1)},registerGlobalListeners:function(){delete this.onShow;
Ext.on({mousedown:this.checkActiveMenus,scroll:this.onGlobalScroll,scope:this})}},1,0,0,0,0,0,[Ext.menu,'Manager',Ext.menu,'MenuMgr'],0);
Ext.cmd.derive('Ext.util.ClickRepeater',Ext.util.Observable,{constructor:function(el,config){this.el=Ext.get(el);this.el.unselectable();Ext.apply(this,config);Ext.util.Observable.prototype.constructor.call(this);this.disabled||(this.disabled=!0,this.enable());if(this.handler)this.on('click',this.handler,this.scope||this)},interval:20,delay:250,preventDefault:!0,stopDefault:!1,timer:0,enable:function(){if(this.disabled){this.el.on('mousedown',this.handleMouseDown,this);if(Ext.isIE8)this.el.on('dblclick',
this.handleDblClick,this);if(this.preventDefault||this.stopDefault)this.el.on('click',this.eventOptions,this)}this.disabled=!1},disable:function(force){if(force||!this.disabled)clearTimeout(this.timer),this.pressedCls&&this.el.removeCls(this.pressedCls),Ext.getDoc().un('mouseup',this.handleMouseUp,this),this.el.clearListeners();this.disabled=!0},setDisabled:function(disabled){this[disabled?'disable':'enable']()},eventOptions:function(e){this.preventDefault&&e.preventDefault();this.stopDefault&&e.stopEvent()},
destroy:function(){this.disable(!0);Ext.util.Observable.prototype.destroy.call(this)},handleDblClick:function(e){clearTimeout(this.timer);this.fireEvent('mousedown',this,e);this.fireEvent('click',this,e)},handleMouseDown:function(e){clearTimeout(this.timer);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,e);this.fireEvent('click',this,e);this.accelerate&&
(this.delay=400);this.timer=Ext.defer(this.click,this.delay||this.interval,this,[e]);this.mousedownPreventDefault&&e.preventDefault();this.mousedownStopEvent&&e.stopEvent()},click:function(e){this.fireEvent('click',this,e);this.timer=Ext.defer(this.click,this.accelerate?this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime),400,-390,12E3):this.interval,this,[e])},easeOutExpo:function(t,b,c,d){return t===d?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},handleMouseOut:function(){clearTimeout(this.timer);this.pressedCls&&
this.el.removeCls(this.pressedCls);this.el.on('mouseover',this.handleMouseReturn,this)},handleMouseReturn:function(e){this.el.un('mouseover',this.handleMouseReturn,this);this.pressedCls&&this.el.addCls(this.pressedCls);this.click(e)},handleMouseUp:function(e){clearTimeout(this.timer);this.el.un('mouseover',this.handleMouseReturn,this);this.el.un('mouseout',this.handleMouseOut,this);Ext.getDoc().un('mouseup',this.handleMouseUp,this);this.pressedCls&&this.el.removeCls(this.pressedCls);this.fireEvent('mouseup',
this,e)}},1,0,0,0,0,0,[Ext.util,'ClickRepeater'],0);
Ext.cmd.derive('Ext.button.Button',Ext.Component,{alternateClassName:'Ext.Button',config:{iconAlign:'left',text:null,textAlign:'center',arrowVisible:!0,glyph:null},isButton:!0,_syncFrameHeight:!0,liquidLayout:!0,hidden:!1,disabled:!1,pressed:!1,tabIndex:0,enableToggle:!1,menuAlign:'tl-bl?',showEmptyMenu:!1,clickEvent:'click',preventDefault:!0,handleMouseEvents:!0,tooltipType:'qtip',baseCls:'x-btn',hrefTarget:'_blank',destroyMenu:!0,focusable:!0,ariaRole:'button',keyMap:{scope:'this',SPACE:'onEnterKey',
ENTER:'onEnterKey',DOWN:'onDownKey'},defaultBindProperty:'text',childEls:['btnEl','btnWrap','btnInnerEl','btnIconEl','arrowEl'],publishes:{pressed:1},_btnWrapCls:'x-btn-wrap',_btnCls:'x-btn-button',_baseIconCls:'x-btn-icon-el',_glyphCls:'x-btn-glyph',_innerCls:'x-btn-inner',_textCls:'x-btn-text',_noTextCls:'x-btn-no-text',_hasIconCls:'x-btn-icon',_pressedCls:'x-btn-pressed',overCls:'x-btn-over',_disabledCls:'x-btn-disabled',_menuActiveCls:'x-btn-menu-active',_arrowElCls:'x-btn-arrow-el',_focusCls:'x-btn-focus',
_arrowFocusCls:'x-arrow-focus',renderTpl:'\x3cspan id\x3d"{id}-btnWrap" data-ref\x3d"btnWrap" role\x3d"presentation" unselectable\x3d"on" style\x3d"{btnWrapStyle}" class\x3d"{btnWrapCls} {btnWrapCls}-{ui} {splitCls}{childElCls}"\x3e\x3cspan id\x3d"{id}-btnEl" data-ref\x3d"btnEl" role\x3d"presentation" unselectable\x3d"on" style\x3d"{btnElStyle}" class\x3d"{btnCls} {btnCls}-{ui} {textCls} {noTextCls} {hasIconCls} {iconAlignCls} {textAlignCls} {btnElAutoHeightCls}{childElCls}"\x3e\x3ctpl if\x3d"iconBeforeText"\x3e{[values.$comp.renderIcon(values)]}\x3c/tpl\x3e\x3cspan id\x3d"{id}-btnInnerEl" data-ref\x3d"btnInnerEl" unselectable\x3d"on" class\x3d"{innerCls} {innerCls}-{ui}{childElCls}"\x3e{text}\x3c/span\x3e\x3ctpl if\x3d"!iconBeforeText"\x3e{[values.$comp.renderIcon(values)]}\x3c/tpl\x3e\x3c/span\x3e\x3c/span\x3e{[values.$comp.getAfterMarkup ? values.$comp.getAfterMarkup(values) : ""]}\x3ctpl if\x3d"closable"\x3e\x3cspan id\x3d"{id}-closeEl" data-ref\x3d"closeEl" class\x3d"{baseCls}-close-btn"\x3e\x3ctpl if\x3d"closeText"\x3e {closeText}\x3c/tpl\x3e\x3c/span\x3e\x3c/tpl\x3e\x3ctpl if\x3d"split"\x3e\x3cspan id\x3d"{id}-arrowEl" class\x3d"{arrowElCls}" data-ref\x3d"arrowEl" role\x3d"button" hidefocus\x3d"on" unselectable\x3d"on"\x3ctpl if\x3d"tabIndex !\x3d null"\x3e tabindex\x3d"{tabIndex}"\x3c/tpl\x3e\x3ctpl foreach\x3d"arrowElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e style\x3d"{arrowElStyle}"\x3e{arrowElText}\x3c/span\x3e\x3c/tpl\x3e',
iconTpl:'\x3cspan id\x3d"{id}-btnIconEl" data-ref\x3d"btnIconEl" role\x3d"presentation" unselectable\x3d"on" class\x3d"{baseIconCls} {baseIconCls}-{ui} {iconCls} {glyphCls}{childElCls}" style\x3d"\x3ctpl if\x3d"iconUrl"\x3ebackground-image:url({iconUrl});\x3c/tpl\x3e\x3ctpl if\x3d"glyph"\x3e\x3ctpl if\x3d"glyphFontFamily"\x3efont-family:{glyphFontFamily};\x3c/tpl\x3e"\x3e{glyph}\x3ctpl else\x3e"\x3e\x3c/tpl\x3e\x3c/span\x3e',scale:'small',allowedScales:['small','medium','large'],arrowAlign:'right',
arrowCls:'arrow',maskOnDisable:!1,shrinkWrap:3,frame:!0,autoEl:{tag:'a',hidefocus:'on',unselectable:'on'},hasFrameTable:function(){return this.href&&this.frameTable},frameTableListener:function(){this.disabled||this.doNavigate()},doNavigate:function(){'_blank'===this.hrefTarget?window.open(this.getHref(),this.hrefTarget):location.href=this.getHref()},_triggerRegion:{},initComponent:function(){this.addCls('x-unselectable');Ext.Component.prototype.initComponent.call(this);this.menu&&(this.split=!0,
this.setMenu(this.menu,!1,!0));this.url&&(this.href=this.url);this.configuredWithPreventDefault=this.hasOwnProperty('preventDefault');this.href&&!this.configuredWithPreventDefault&&(this.preventDefault=!1);Ext.isString(this.toggleGroup)&&''!==this.toggleGroup&&(this.enableToggle=!0);this.html&&!this.text&&(this.text=this.html,delete this.html)},getElConfig:function(){var config=Ext.Component.prototype.getElConfig.call(this),href=this.getHref(),hrefTarget=this.hrefTarget;'a'===config.tag&&(this.disabled||
(config.tabIndex=this.tabIndex),href&&!this.disabled&&(config.href=href,hrefTarget&&(config.target=hrefTarget)));this.ariaStaticRoles[this.ariaRole]||(this.menu&&!this.isSplitButton&&(config['aria-haspopup']=!0),this.enableToggle&&(config['aria-pressed']=!!this.pressed));return config},beforeRender:function(){Ext.Component.prototype.beforeRender.call(this);this.pressed&&this.addCls(this._pressedCls)},initRenderData:function(){return Ext.apply(Ext.Component.prototype.initRenderData.call(this),this.getTemplateArgs())},
getMenu:function(){return this.menu||null},setMenu:function(menu,destroyMenu,initial){var oldMenu=this.menu,ariaDom=this.isSplitButton?this.arrowEl&&this.arrowEl.dom:this.ariaEl.dom;oldMenu&&!initial&&(!1!==destroyMenu&&this.destroyMenu&&oldMenu.destroy(),oldMenu.ownerCmp=null);if(menu)destroyMenu=menu.isMenu,menu=Ext.menu.Manager.get(menu,{ownerCmp:this}),menu.setOwnerCmp(this,destroyMenu),menu.menuClickBuffer=250,this.mon(menu,{scope:this,show:this.onMenuShow,hide:this.onMenuHide}),!oldMenu&&this.getArrowVisible()&&
(this.split=!0,this.rendered&&(this._addSplitCls(),this.updateLayout())),this.menu=menu,ariaDom?(ariaDom.setAttribute('aria-haspopup',!0),ariaDom.setAttribute('aria-owns',menu.id)):(oldMenu=this.isSplitButton?this.ariaArrowElAttributes||(this.ariaArrowElAttributes={}):this.ariaRenderAttributes||(this.ariaRenderAttributes={}),oldMenu['aria-haspopup']=!0,oldMenu['aria-owns']=menu.id);else{if(this.rendered)ariaDom.removeAttribute('aria-haspopup'),ariaDom.removeAttribute('aria-owns'),this._removeSplitCls(),
this.updateLayout();else if(oldMenu=this.isSplitButton?this.ariaArrowElAttributes:this.ariaRenderAttributes)delete oldMenu['aria-haspopup'],delete oldMenu['aria-owns'];this.split=!1;this.menu=null}},onRender:function(){var addOnclick;Ext.Component.prototype.onRender.apply(this,arguments);var btn=this.el;this.tooltip&&this.setTooltip(this.tooltip,!0);if(this.handleMouseEvents){var btnListeners={scope:this,mouseover:this.onMouseOver,mouseout:this.onMouseOut,mousedown:this.onMouseDown};this.split&&(btnListeners.mousemove=
this.onMouseMove)}else btnListeners={scope:this};Ext.supports.Touch&&(btnListeners.touchstart=this.onTouchStart);this.repeat?this.mon(new Ext.util.ClickRepeater(btn,Ext.isObject(this.repeat)?this.repeat:{}),'click',this.onRepeatClick,this):btnListeners[this.clickEvent]?addOnclick=!0:btnListeners[this.clickEvent]=this.onClick;this.mon(btn,btnListeners);this.hasFrameTable()&&this.mon(this.frameTable,'click',this.frameTableListener,this);addOnclick&&this.mon(btn,this.clickEvent,this.onClick,this);Ext.button.Manager.register(this)},
onFocusLeave:function(e){Ext.Component.prototype.onFocusLeave.call(this,e);this.menu&&this.menu.hide()},getTemplateArgs:function(){var btnCls=this._btnCls,baseIconCls=this._baseIconCls,iconAlign=this.getIconAlign(),glyph=this.glyph,text=this.text,hasIcon=this._hasIcon(),hasIconCls=this._hasIconCls;if(glyph){var glyphFontFamily=glyph.fontFamily;glyph=glyph.character}return{split:this.isSplitButton,innerCls:this._innerCls,splitCls:this.getArrowVisible()?this.getSplitCls():'',iconUrl:this.icon,iconCls:this.iconCls,
glyph:glyph,glyphCls:glyph?this._glyphCls:'',glyphFontFamily:glyphFontFamily,text:text||'\x26#160;',closeText:this.closeText,textCls:text?this._textCls:'',noTextCls:text?'':this._noTextCls,hasIconCls:hasIcon?hasIconCls:'',btnWrapCls:this._btnWrapCls,btnWrapStyle:this.width?'table-layout:fixed;':'',btnElStyle:this.height?'height:auto;':'',btnCls:btnCls,baseIconCls:baseIconCls,iconBeforeText:'left'===iconAlign||'top'===iconAlign,iconAlignCls:hasIcon?hasIconCls+'-'+iconAlign:'',textAlignCls:btnCls+'-'+
this.getTextAlign(),arrowElCls:this._arrowElCls,arrowElStyle:this.arrowVisible?'':'display:none',tabIndex:this.tabIndex}},renderIcon:function(values){return this.lookupTpl('iconTpl').apply(values)},setHref:function(href){var hrefTarget=this.hrefTarget;this.href=href;this.configuredWithPreventDefault||(this.preventDefault=!href);if(this.rendered){var dom=this.el.dom;!href||this.disabled?(dom.removeAttribute('href'),dom.removeAttribute('hrefTarget')):(dom.href=this.getHref(),hrefTarget&&(dom.target=
hrefTarget))}},getHref:function(){var href=this.href;return href?Ext.urlAppend(href,Ext.Object.toQueryString(Ext.apply({},this.params,this.baseParams))):!1},setParams:function(params){this.params=params;this.rendered&&(params=this.el.dom,this.disabled?params.removeAttribute('href'):params.href=this.getHref()||'')},getSplitCls:function(){return this.split?this.baseCls+'-'+this.arrowCls+' '+(this.baseCls+'-'+this.arrowCls+'-'+this.arrowAlign):''},setIcon:function(icon){icon=icon||'';var btnIconEl=this.btnIconEl,
oldIcon=this.icon||'';this.glyph&&this.setGlyph(null);this.icon=icon;icon!==oldIcon&&(btnIconEl&&(btnIconEl.removeCls(this.iconCls),btnIconEl.setStyle('background-image',icon?'url('+icon+')':''),this._syncHasIconCls(),this.didIconStateChange(oldIcon,icon)&&this.updateLayout()),this.fireEvent('iconchange',this,oldIcon,icon));return this},setIconCls:function(cls){cls=cls||'';var btnIconEl=this.btnIconEl,oldCls=this.iconCls||'';this.glyph&&this.setGlyph(null);this.iconCls=cls;oldCls!==cls&&(btnIconEl&&
(btnIconEl.setStyle('background-image',''),btnIconEl.removeCls(oldCls),btnIconEl.addCls(cls),this._syncHasIconCls(),this.didIconStateChange(oldCls,cls)&&this.updateLayout()),this.fireEvent('iconchange',this,oldCls,cls));return this},applyGlyph:function(glyph,oldGlyph){glyph&&(glyph.isGlyph||(glyph=new Ext.Glyph(glyph)),glyph.isEqual(oldGlyph)&&(glyph=void 0));return glyph},updateGlyph:function(glyph,oldGlyph){var btnIconEl=this.btnIconEl,glyphCls=this._glyphCls;btnIconEl&&(this.icon=null,btnIconEl.setStyle('background-image',
''),glyph?(btnIconEl.dom.innerHTML=glyph.character,btnIconEl.addCls(glyphCls),btnIconEl.setStyle(glyph.getStyle())):(btnIconEl.dom.innerHTML='',btnIconEl.removeCls(glyphCls)),this._syncHasIconCls(),this.didIconStateChange(oldGlyph,glyph)&&this.updateLayout());this.fireEvent('glyphchange',this,glyph&&glyph.glyphConfig,oldGlyph&&oldGlyph.glyphConfig);return this},setTooltip:function(tooltip,initial){this.rendered?(initial&&tooltip||this.clearTip(),tooltip&&(Ext.quickTipsActive&&Ext.isObject(tooltip)?
(Ext.tip.QuickTipManager.register(Ext.apply({target:this.el.id},tooltip)),this.tooltip=tooltip):this.el.dom.setAttribute(this.getTipAttr(),tooltip))):this.tooltip=tooltip;return this},updateIconAlign:function(align,oldAlign){if(this.rendered){var btnEl=this.btnEl;var btnIconEl=this.btnIconEl;var hasIconCls=this._hasIconCls;oldAlign&&btnEl.removeCls(hasIconCls+'-'+oldAlign);btnEl.addCls(hasIconCls+'-'+align);'top'===align||'left'===align?btnEl.insertFirst(btnIconEl):btnEl.appendChild(btnIconEl);this.updateLayout()}},
updateTextAlign:function(align,oldAlign){var btnEl=this.btnEl,btnCls=this._btnCls;this.rendered&&(btnEl.removeCls(btnCls+'-'+oldAlign),btnEl.addCls(btnCls+'-'+align))},getTipAttr:function(){return'qtip'===this.tooltipType?'data-qtip':'title'},getRefItems:function(deep){var menu=this.menu,items=[];menu&&(deep&&(items=menu.getRefItems(deep)),items.unshift(menu));return items},clearTip:function(){var el=this.el;Ext.quickTipsActive&&Ext.isObject(this.tooltip)?Ext.tip.QuickTipManager.unregister(el):el.dom.removeAttribute(this.getTipAttr())},
doDestroy:function(){var menu=this.menu;this.rendered&&this.clearTip();Ext.destroy(this.repeater);menu&&this.destroyMenu&&(this.menu=Ext.destroy(menu));Ext.button.Manager.unregister(this);Ext.Component.prototype.doDestroy.call(this)},setHandler:function(handler,scope){this.handler=handler;1<arguments.length&&(this.scope=scope);return this},updateText:function(text,oldText){text=null==text?'':String(text);oldText=oldText||'';var btnInnerEl=this.btnInnerEl,btnEl=this.btnEl;this.rendered&&(btnInnerEl.setHtml(text||
'\x26#160;'),btnEl[text?'addCls':'removeCls'](this._textCls),btnEl[text?'removeCls':'addCls'](this._noTextCls),this.updateLayout());this.fireEvent('textchange',this,oldText,text)},didIconStateChange:function(old,current){current=Ext.isEmpty(current);return Ext.isEmpty(old)?!current:current},click:function(e){return this.onClick(e)},setPressed:function(pressed){return this.toggle(!1!==pressed)},toggle:function(state,suppressEvent){var ariaDom=this.ariaEl.dom;if(!this.enableToggle)return this;state=
void 0===state?!this.pressed:!!state;!1!==this.fireEvent('beforetoggle',this,state)&&state!==this.pressed&&(this[state?'addCls':'removeCls'](this._pressedCls),this.pressed=state,ariaDom&&ariaDom.setAttribute('aria-pressed',state),suppressEvent||(this.fireEvent('toggle',this,state),Ext.callback(this.toggleHandler,this.scope,[this,state],0,this),this.publishState&&this.publishState('pressed',state)));return this},maybeShowMenu:function(e){this.menu&&this.showMenu(e)},showMenu:function(clickEvent){var menu=
this.menu,isPointerEvent=!clickEvent||clickEvent.pointerType;if(menu&&this.rendered)if(this.tooltip&&Ext.quickTipsActive&&'title'!==this.getTipAttr()&&Ext.tip.QuickTipManager.getQuickTip().cancelShow(this.el),menu.isVisible())isPointerEvent?menu.hide():menu.focus();else if(!clickEvent||this.showEmptyMenu||0<menu.items.getCount())menu.autoFocus=!isPointerEvent,menu.showBy(this.el,this.menuAlign);return this},hideMenu:function(){this.hasVisibleMenu()&&this.menu.hide();return this},hasVisibleMenu:function(){var menu=
this.menu;return menu&&menu.rendered&&menu.isVisible()},onRepeatClick:function(repeat,e){this.onClick(e)},onTouchStart:function(e){this.doPreventDefault(e)},onEnterKey:function(e){if(!this.href)return this.onClick(e),e.stopEvent(),!1},onClick:function(e){e&&this.doPreventDefault(e);e&&'keydown'!==e.type&&e.button||this.disabled||(this.doToggle(),this.maybeShowMenu(e),this.fireHandler(e))},doToggle:function(){!1===this.allowDepress&&this.pressed||this.toggle()},doPreventDefault:function(e){e&&(this.preventDefault||
this.disabled&&this.getHref())&&e.preventDefault()},fireHandler:function(e){!1===this.fireEvent('click',this,e)||this.destroyed||Ext.callback(this.handler,this.scope,[this,e],0,this)},onMouseOver:function(e){if(!this.disabled&&!e.within(this.el,!0,!0))this.onMouseEnter(e)},onMouseOut:function(e){if(!e.within(this.el,!0,!0)){if(this.overMenuTrigger)this.onMenuTriggerOut(e);this.onMouseLeave(e)}},onMouseMove:function(e){var over=this.overMenuTrigger;if(this.split)if(this.isWithinTrigger(e)){if(!over)this.onMenuTriggerOver(e)}else if(over)this.onMenuTriggerOut(e)},
isWithinTrigger:function(e){var el=this.el;e='right'===this.arrowAlign?e.getX()-this.getX():e.getY()-el.getY();el=this.getTriggerRegion();return e>el.begin&&e<el.end},getTriggerRegion:function(){var region=this._triggerRegion,isRight='right'===this.arrowAlign,getEnd=isRight?'getRight':'getBottom';isRight=isRight?this.getWidth():this.getHeight();region.begin=isRight-(this.el[getEnd]()-this.btnEl[getEnd]());region.end=isRight;return region},onMouseEnter:function(e){this.fireEvent('mouseover',this,e)},
onMouseLeave:function(e){this.fireEvent('mouseout',this,e)},onMenuTriggerOver:function(e){var arrowTip=this.arrowTooltip;this.overMenuTrigger=!0;this.split&&arrowTip&&this.btnWrap.dom.setAttribute(this.getTipAttr(),arrowTip);this.fireEvent('menutriggerover',this,this.menu,e)},onMenuTriggerOut:function(e){delete this.overMenuTrigger;this.split&&this.arrowTooltip&&this.btnWrap.dom.setAttribute(this.getTipAttr(),'');this.fireEvent('menutriggerout',this,this.menu,e)},onEnable:function(){var href=this.href,
hrefTarget=this.hrefTarget,dom=this.el.dom;Ext.Component.prototype.onEnable.call(this);this.removeCls(this._disabledCls);dom.setAttribute('tabIndex',this.tabIndex);href&&(dom.href=href);hrefTarget&&(dom.target=hrefTarget)},onDisable:function(){var dom=this.el.dom;Ext.Component.prototype.onDisable.call(this);this.addCls(this._disabledCls);this.removeCls(this.overCls);dom.removeAttribute('tabIndex');this.href&&dom.removeAttribute('href');this.hrefTarget&&dom.removeAttribute('target')},setScale:function(scale){var ui=
this.ui.replace('-'+this.scale,'');if(!Ext.Array.contains(this.allowedScales,scale))throw'#setScale: scale must be an allowed scale ('+this.allowedScales.join(', ')+')';this.scale=scale;this.setUI(ui)},setUI:function(ui){this.scale&&!ui.match(this.scale)&&(ui=ui+'-'+this.scale);Ext.Component.prototype.setUI.call(this,ui)},onMouseDown:function(e){var me=this;(Ext.isIE||'touch'===e.pointerType)&&Ext.defer(function(){var focusEl=me.getFocusEl();focusEl&&!e.defaultPrevented&&focusEl.focus()},1);me.disabled||
0!==e.button||(Ext.button.Manager.onButtonMousedown(me,e),me.addCls(me._pressedCls))},onMouseUp:function(e){this.destroyed||0!==e.button||this.pressed||this.removeCls(this._pressedCls)},onMenuShow:function(){this.addCls(this._menuActiveCls);this.fireEvent('menushow',this,this.menu)},onMenuHide:function(e){this.removeCls(this._menuActiveCls);this.fireEvent('menuhide',this,this.menu)},onDownKey:function(e){if(this.menu&&!this.disabled)return this.showMenu(e),e.stopEvent(),!1},updateArrowVisible:function(visible){if(this.rendered)if(visible){if(this.menu||
this.isSplitButton)this.split=!0,this._addSplitCls()}else this._removeSplitCls(),this.split=!1;return visible},privates:{elClsMap:{btnWrap:'_btnWrapCls',btnEl:'_btnCls',btnIconEl:'_baseIconCls',btnInnerEl:'_innerCls'},addUIToElement:function(){Ext.Component.prototype.addUIToElement.call(this);this.updateChildElsUICls(!0)},addOverCls:function(){this.disabled||this.addCls(this.overCls)},_addSplitCls:function(){this.btnWrap.addCls(this.getSplitCls())},getTdCls:function(){return'x-button-'+this.ui+'-'+
this.scale+'-cell'},getValue:function(){return this.value},removeUIFromElement:function(){Ext.Component.prototype.removeUIFromElement.call(this);this.updateChildElsUICls(!1)},removeOverCls:function(){this.removeCls(this.overCls)},_removeSplitCls:function(){this.btnWrap.removeCls(this.getSplitCls())},_syncHasIconCls:function(){var btnEl=this.btnEl,hasIconCls=this._hasIconCls;if(btnEl)btnEl[this._hasIcon()?'addCls':'removeCls']([hasIconCls,hasIconCls+'-'+this.iconAlign])},_hasIcon:function(){return!!(this.icon||
this.iconCls||this.glyph)},updateChildElsUICls:function(add){var ui=this.ui;add=add?'addCls':'removeCls';var elClsMap=this.elClsMap,key;for(key in elClsMap){var el=this[key];var mapCls=elClsMap[key];mapCls=this[mapCls];if(el&&mapCls)el[add](mapCls+'-'+ui)}},wrapPrimaryEl:function(dom){this.el=new Ext.dom.ButtonElement(dom);Ext.Component.prototype.wrapPrimaryEl.call(this,dom)}}},0,['button'],['component','box','button'],{component:!0,box:!0,button:!0},['widget.button'],[[Ext.mixin.Queryable.prototype.mixinId||
Ext.mixin.Queryable.$className,Ext.mixin.Queryable]],[Ext.button,'Button',Ext,'Button'],0);Ext.define('Theme.override.button.Button',{override:'Ext.button.Button',beforeRender:function(){(arguments.callee.$previous||Ext.Component.prototype.beforeRender).call(this);this.menu&&this.addCls('x-btn-menu')}});
Ext.cmd.derive('Ext.button.Split',Ext.button.Button,{alternateClassName:'Ext.SplitButton',isSplitButton:!0,arrowCls:'split',split:!0,getTemplateArgs:function(){var data=Ext.button.Button.prototype.getTemplateArgs.call(this);this.disabled&&(data.tabIndex=null);var ariaAttr=this.ariaArrowElAttributes||{};ariaAttr['aria-hidden']=!!this.hidden;ariaAttr['aria-disabled']=!!this.disabled;this.arrowTooltip?ariaAttr['aria-label']=this.arrowTooltip:ariaAttr['aria-labelledby']=this.id;data.arrowElAttributes=
ariaAttr;return data},onRender:function(){var el;Ext.button.Button.prototype.onRender.call(this);if(el=this.getFocusEl())el.on({scope:this,focus:this.onMainElFocus,blur:this.onMainElBlur});if(el=this.arrowEl)el.dom.setAttribute('data-componentid',this.id),el.setVisibilityMode(Ext.dom.Element.DISPLAY),el.on({scope:this,focus:this.onArrowElFocus,blur:this.onArrowElBlur})},setArrowHandler:function(handler,scope){this.arrowHandler=handler;this.scope=scope},onClick:function(e){var arrowKeydown='keydown'===
e.type&&e.target===this.arrowEl.dom;this.doPreventDefault(e);this.disabled||(arrowKeydown||this.isWithinTrigger(e)?(e.preventDefault(),this.maybeShowMenu(e),this.fireEvent('arrowclick',this,e),this.arrowHandler&&this.arrowHandler.call(this.scope||this,this,e)):(this.doToggle(),this.fireHandler(e)))},enable:function(silent){var arrowEl=this.arrowEl;Ext.button.Button.prototype.enable.call(this,silent);arrowEl&&(arrowEl.dom.setAttribute('tabIndex',this.tabIndex),arrowEl.dom.setAttribute('aria-disabled',
'false'))},disable:function(silent){var arrowEl=this.arrowEl;Ext.button.Button.prototype.disable.call(this,silent);arrowEl&&(arrowEl.dom.removeAttribute('tabIndex'),arrowEl.dom.setAttribute('aria-disabled','true'))},afterHide:function(cb,scope){Ext.button.Button.prototype.afterHide.call(this,cb,scope);this.arrowEl.dom.setAttribute('aria-hidden','true')},afterShow:function(animateTarget,cb,scope){Ext.button.Button.prototype.afterShow.call(this,animateTarget,cb,scope);this.arrowEl.dom.setAttribute('aria-hidden',
'false')},privates:{isFocusing:function(e){var from=e.fromElement;e=e.toElement;var focusEl=this.focusEl&&this.focusEl.dom,arrowEl=this.arrowEl&&this.arrowEl.dom;return this.focusable?e===focusEl?from===arrowEl?!1:!0:e===arrowEl?from===focusEl?!1:!0:!0:!1},isBlurring:function(e){var from=e.fromElement;e=e.toElement;var focusEl=this.focusEl&&this.focusEl.dom,arrowEl=this.arrowEl&&this.arrowEl.dom;return this.focusable?from===focusEl?e===arrowEl?!1:!0:from===arrowEl?e===focusEl?!1:!0:!0:!1},getFocusClsEl:Ext.privateFn,
onMainElFocus:function(e){this.el.addCls(this._focusCls)},onMainElBlur:function(e){this.el.removeCls(this._focusCls)},onArrowElFocus:function(e){this.el.addCls(this._arrowFocusCls)},onArrowElBlur:function(){this.el.removeCls(this._arrowFocusCls)},setTabIndex:function(newTabIndex){Ext.button.Button.prototype.setTabIndex.call(this,newTabIndex);this.arrowEl&&this.arrowEl.set({tabIndex:newTabIndex})},_addSplitCls:function(){var arrowEl=this.arrowEl;Ext.button.Button.prototype._addSplitCls.call(this);
arrowEl.dom.setAttribute('tabIndex',this.tabIndex);arrowEl.setVisible(!0)},_removeSplitCls:function(){var arrowEl=this.arrowEl;Ext.button.Button.prototype._removeSplitCls.call(this);arrowEl.dom.removeAttribute('tabIndex');arrowEl.setVisible(!1)}}},0,['splitbutton'],['component','box','button','splitbutton'],{component:!0,box:!0,button:!0,splitbutton:!0},['widget.splitbutton'],0,[Ext.button,'Split',Ext,'SplitButton'],0);
Ext.cmd.derive('Ext.layout.container.SegmentedButton',Ext.layout.container.Container,{needsItemSize:!1,setsItemSize:!1,_btnRowCls:'x-segmented-button-row',getRenderTree:function(){var result=Ext.layout.container.Container.prototype.getRenderTree.call(this),ln;if(this.owner.getVertical()){var i=0;for(ln=result.length;i<ln;i++)result[i]={cls:this._btnRowCls,cn:result[i]}}return result},getItemLayoutEl:function(item){item=item.el.dom;return this.owner.getVertical()?item.parentNode:item},onDestroy:function(){if(this.rendered)for(var targetEl=
this.getRenderTarget(),row;row=targetEl.last();)row.destroy()}},0,0,0,0,['layout.segmentedbutton'],0,[Ext.layout.container,'SegmentedButton'],0);
Ext.cmd.derive('Ext.button.Segmented',Ext.container.Container,{config:{allowDepress:!1,allowMultiple:!1,forceSelection:!1,allowToggle:!0,vertical:!1,defaultUI:'default'},beforeRenderConfig:{value:void 0},defaultBindProperty:'value',publishes:['value'],twoWayBindable:['value'],layout:'segmentedbutton',defaultType:'button',maskOnDisable:!1,isSegmentedButton:!0,baseCls:'x-segmented-button',itemCls:'x-segmented-button-item',_firstCls:'x-segmented-button-first',_lastCls:'x-segmented-button-last',_middleCls:'x-segmented-button-middle',
applyValue:function(value,oldValue){var allowMultiple=this.getAllowMultiple(),i;var values=value instanceof Array?value:null==value?[]:[value];var oldValues=oldValue instanceof Array?oldValue:null==oldValue?[]:[oldValue];this._isApplyingValue=!0;if(!this.rendered)for(value=this.items.items,i=value.length-1;0<=i;i--){var button=value[i];!this.forceSelection||i||ln||(button.pressed=!0);if(button.pressed){var ln=!0;oldValue=button.value;null==oldValue&&(oldValue=this.items.indexOf(button));Ext.Array.contains(values,
oldValue)||values.unshift(oldValue)}}ln=values.length;for(i=0;i<ln;i++)if(value=values[i],button=this._lookupButtonByValue(value))oldValue=button.value,null!=oldValue&&oldValue!==value&&(values[i]=oldValue),button.pressed||button.setPressed(!0);value=allowMultiple?values:ln?values[0]:null;i=0;for(ln=oldValues.length;i<ln;i++)oldValue=oldValues[i],Ext.Array.contains(values,oldValue)||this._lookupButtonByValue(oldValue).setPressed(!1);this._isApplyingValue=!1;return value},updateValue:function(value,
oldValue){var same;this.hasListeners.change&&(value&&oldValue&&this.getAllowMultiple()&&(same=Ext.Array.equals(value,oldValue)),same||this.fireEvent('change',this,value,oldValue))},beforeRender:function(){this.addCls(this.baseCls+this._getClsSuffix());this._syncItemClasses(!0);Ext.container.Container.prototype.beforeRender.call(this)},onAdd:function(item){this.mon(item,{hide:'_syncItemClasses',show:'_syncItemClasses',beforetoggle:'_onBeforeItemToggle',toggle:'_onItemToggle',scope:this});this.getAllowToggle()&&
(item.enableToggle=!0,this.getAllowMultiple()||(item.toggleGroup=this.getId(),item.allowDepress=this.getAllowDepress()));item.addCls(this.itemCls+this._getClsSuffix());this._syncItemClasses();Ext.container.Container.prototype.onAdd.call(this,item)},onRemove:function(item){item.removeCls(this.itemCls+this._getClsSuffix());this._syncItemClasses();Ext.container.Container.prototype.onRemove.call(this,item)},beforeLayout:function(){Ext.isChrome&&this.el.dom.offsetWidth;Ext.container.Container.prototype.beforeLayout.call(this)},
updateDefaultUI:function(defaultUI){var items=this.items,ln;if(this.rendered)Ext.raise('Changing the ui config of a segmented button after render is not supported.');else if(items){items.items&&(items=items.items);var i=0;for(ln=items.length;i<ln;i++){var item=items[i];'default'!==item.ui||'default'===defaultUI||item.hasOwnProperty('ui')||(items[i].ui=defaultUI)}}},privates:{_getClsSuffix:function(){return this.getVertical()?'-vertical':'-horizontal'},_getFirstCls:function(){return this._firstCls},
_getLastCls:function(){return this._lastCls},_lookupButtonByValue:function(value){for(var items=this.items.items,ln=items.length,i=0,button=null,buttonValue,btn;i<ln;i++)if(btn=items[i],buttonValue=btn.value,null!=buttonValue&&buttonValue===value){button=btn;break}button||'number'!==typeof value||(button=items[value]);return button},_onBeforeItemToggle:function(button,pressed){if(this.allowMultiple&&this.forceSelection&&!pressed&&1===this.getValue().length)return!1},_onItemToggle:function(button,
pressed){if(!this._isApplyingValue){var Array=Ext.Array,allowMultiple=this.allowMultiple,buttonValue=null!=button.value?button.value:this.items.indexOf(button),value=this.getValue(),valueIndex;allowMultiple&&(valueIndex=Array.indexOf(value,buttonValue));pressed?allowMultiple?-1===valueIndex&&(value=Array.slice(value),value.push(buttonValue)):value=buttonValue:allowMultiple?-1<valueIndex&&(value=Array.slice(value),value.splice(valueIndex,1)):value===buttonValue&&(value=null);this.setValue(value);this.fireEvent('toggle',
this,button,pressed)}},_syncItemClasses:function(force){var i;if(force||this.rendered){force=this._getFirstCls();var middleCls=this._middleCls;var lastCls=this._getLastCls();var items=this.items.items;var ln=items.length;var visibleItems=[];for(i=0;i<ln;i++){var item=items[i];item.hidden||visibleItems.push(item)}ln=visibleItems.length;for(i=0;i<ln;i++)visibleItems[i].removeCls([force,middleCls,lastCls]);if(1<ln){visibleItems[0].addCls(force);for(i=1;i<ln-1;i++)visibleItems[i].addCls(middleCls);visibleItems[ln-
1].addCls(lastCls)}}}}},0,['segmentedbutton'],['component','box','container','segmentedbutton'],{component:!0,box:!0,container:!0,segmentedbutton:!0},['widget.segmentedbutton'],0,[Ext.button,'Segmented'],0);
Ext.cmd.derive('Ext.panel.Bar',Ext.container.Container,{vertical:!1,_verticalSides:{left:1,right:1},initComponent:function(){var vertical=this.vertical;this.dock=this.dock||(vertical?'left':'top');this.layout=Ext.apply(vertical?{type:'vbox',align:'middle',alignRoundingMethod:'ceil'}:{type:'hbox',align:'middle',alignRoundingMethod:'floor'},this.layout);Ext.container.Container.prototype.initComponent.call(this)},onAdded:function(container,pos,instanced){this.initOrientation();Ext.container.Container.prototype.onAdded.call(this,
container,pos,instanced)},onRemoved:function(destroying){this.removeClsWithUI(this.uiCls);Ext.container.Container.prototype.onRemoved.call(this,destroying)},beforeRender:function(){!this.forceOrientation&&this.ownerCt||this.initOrientation();Ext.container.Container.prototype.beforeRender.call(this)},setDock:function(dock){if(dock!==this.dock){Ext.suspendLayouts();this.clearOrientation();Ext.container.Container.prototype.setDock.call(this,dock);this.initOrientation();var vertical=this.vertical;dock=
this.layout;dock.setVertical(vertical);dock.setAlignRoundingMethod(vertical?'ceil':'floor');Ext.resumeLayouts(!0)}},privates:{clearOrientation:function(){this.removeClsWithUI([this.vertical?'vertical':'horizontal',this.getDockName()])},getDockName:function(){return this.dock},initOrientation:function(){var dock=this.dock;dock=this.vertical=dock?dock in this._verticalSides:this.vertical;this.addClsWithUI([dock?'vertical':'horizontal',this.getDockName()])}}},0,0,['component','box','container'],{component:!0,
box:!0,container:!0},0,0,[Ext.panel,'Bar'],0);
Ext.cmd.derive('Ext.panel.Title',Ext.Component,{isTitle:!0,noWrap:!0,textAlign:'left',iconAlign:'left',rotation:0,text:'\x26#160;',beforeRenderConfig:{textAlign:null,text:null,glyph:null,icon:null,iconAlign:null,iconCls:null,rotation:null},autoEl:{role:'presentation',unselectable:'on'},textElRole:'presentation',tabIndex:0,childEls:['textEl','iconEl','iconWrapEl'],renderTpl:'\x3ctpl if\x3d"iconMarkup \x26\x26 iconBeforeTitle"\x3e{iconMarkup}\x3c/tpl\x3e\x3cdiv id\x3d"{id}-textEl" data-ref\x3d"textEl" class\x3d"{textCls} {textCls}-{ui} {itemCls}{childElCls}" unselectable\x3d"on"\x3ctpl if\x3d"textElRole"\x3e role\x3d"{textElRole}"\x3c/tpl\x3e\x3e{text}\x3c/div\x3e\x3ctpl if\x3d"iconMarkup \x26\x26 !iconBeforeTitle"\x3e{iconMarkup}\x3c/tpl\x3e',iconTpl:'\x3cdiv id\x3d"{id}-iconWrapEl" data-ref\x3d"iconWrapEl" role\x3d"presentation" class\x3d"{iconWrapCls} {iconWrapCls}-{ui} {iconAlignCls} {itemCls}{childElCls}"\x3ctpl if\x3d"iconWrapStyle"\x3e style\x3d"{iconWrapStyle}"\x3c/tpl\x3e\x3e\x3cdiv id\x3d"{id}-iconEl" data-ref\x3d"iconEl" role\x3d"presentation" unselectable\x3d"on" class\x3d"{baseIconCls} {baseIconCls}-{ui} {iconCls} {glyphCls}" style\x3d"\x3ctpl if\x3d"iconUrl"\x3ebackground-image:url({iconUrl});\x3c/tpl\x3e\x3ctpl if\x3d"glyph \x26\x26 glyphFontFamily"\x3efont-family:{glyphFontFamily};\x3c/tpl\x3e"\x3e\x3ctpl if\x3d"glyph"\x3e{glyph}\x3c/tpl\x3e\x3c/div\x3e\x3c/div\x3e',
_textAlignClasses:{left:'x-title-align-left',center:'x-title-align-center',right:'x-title-align-right'},_iconAlignClasses:{top:'x-title-icon-top',right:'x-title-icon-right',bottom:'x-title-icon-bottom',left:'x-title-icon-left'},_rotationClasses:{0:'x-title-rotate-none',1:'x-title-rotate-right',2:'x-title-rotate-left'},_rotationAngles:{1:90,2:270},baseCls:'x-title',_titleSuffix:'-title',_glyphCls:'x-title-glyph',_iconWrapCls:'x-title-icon-wrap',_baseIconCls:'x-title-icon',_itemCls:'x-title-item',_textCls:'x-title-text',
afterComponentLayout:function(){var rotation=this.getRotation();if(rotation&&!Ext.isIE8){var el=this.el;var lastBox=this.lastBox;var lastX=lastBox.x;el.setStyle(this._getVerticalAdjustDirection(),lastX+(1===rotation?lastBox.width:-lastBox.height)+'px')}Ext.Component.prototype.afterComponentLayout.call(this)},onRender:function(){var rotation=this.getRotation(),el=this.el;Ext.Component.prototype.onRender.call(this);rotation&&el.setVertical(this._rotationAngles[rotation]);Ext.supports.FixedTableWidthBug&&
(el._needsTableWidthFix=!0)},applyText:function(text){text||(text='\x26#160;');return text},beforeRender:function(){Ext.Component.prototype.beforeRender.call(this);this.addCls(this._rotationClasses[this.getRotation()]);this.addCls(this._textAlignClasses[this.getTextAlign()])},getIconMarkup:function(){return this.lookupTpl('iconTpl').apply(this.getIconRenderData())},getIconRenderData:function(){var icon=this.getIcon(),iconCls=this.getIconCls(),glyph=this.getGlyph(),iconAlign=this.getIconAlign();if(glyph){var glyphFontFamily=
glyph.fontFamily;glyph=glyph.character}return{id:this.id,ui:this.ui,itemCls:this._itemCls,iconUrl:icon,iconCls:iconCls,iconWrapCls:this._iconWrapCls,baseIconCls:this._baseIconCls,iconAlignCls:this._iconAlignClasses[iconAlign],glyph:glyph,glyphCls:glyph?this._glyphCls:'',glyphFontFamily:glyphFontFamily}},initRenderData:function(){var renderData=Ext.apply({text:this.getText(),textElRole:this.textElRole,id:this.id,ui:this.ui,itemCls:this._itemCls,textCls:this._textCls,iconMarkup:null,iconBeforeTitle:null},
Ext.Component.prototype.initRenderData.call(this));if(this._hasIcon()){var iconAlign=this.getIconAlign();renderData.iconMarkup=this.getIconMarkup();renderData.iconBeforeTitle='top'===iconAlign||'left'===iconAlign}return renderData},onAdded:function(container,pos,instanced){var suffix=this._titleSuffix,baseCls=container.baseCls;this.addCls([baseCls+suffix,baseCls+suffix+'-'+container.ui]);Ext.Component.prototype.onAdded.call(this,container,pos,instanced)},applyGlyph:function(glyph,oldGlyph){glyph&&
(glyph.isGlyph||(glyph=new Ext.Glyph(glyph)),glyph.isEqual(oldGlyph)&&(glyph=void 0));return glyph},updateGlyph:function(glyph,oldGlyph){var glyphCls=this._glyphCls;if(this.rendered){this._syncIconVisibility();var iconEl=this.iconEl;glyph?(iconEl.dom.innerHTML=glyph.character,iconEl.addCls(glyphCls),iconEl.setStyle('font-family',glyph.fontFamily)):oldGlyph!==glyph&&(iconEl.dom.innerHTML='',iconEl.removeCls(glyphCls));this._didIconStateChange(oldGlyph,glyph)&&this.updateLayout()}},updateIcon:function(icon,
oldIcon){icon=icon||'';if(this.rendered&&icon!==oldIcon){this._syncIconVisibility();var iconEl=this.iconEl;iconEl.setStyle('background-image',icon?'url('+icon+')':'');this._didIconStateChange(oldIcon,icon)&&this.updateLayout()}},updateIconAlign:function(align,oldAlign){var iconWrapEl=this.iconWrapEl;if(this.iconWrapEl){var el=this.el;var iconAlignClasses=this._iconAlignClasses;oldAlign&&iconWrapEl.removeCls(iconAlignClasses[oldAlign]);iconWrapEl.addCls(iconAlignClasses[align]);'top'===align||'left'===
align?el.insertFirst(iconWrapEl):el.appendChild(iconWrapEl);this.updateLayout()}},updateIconCls:function(cls,oldCls){cls=cls||'';if(this.rendered&&oldCls!==cls){this._syncIconVisibility();var iconEl=this.iconEl;oldCls&&iconEl.removeCls(oldCls);iconEl.addCls(cls);this._didIconStateChange(oldCls,cls)&&this.updateLayout()}},updateRotation:function(rotation,oldRotation){if(this.rendered){var el=this.el;var rotationClasses=this._rotationClasses;this.removeCls(rotationClasses[oldRotation]);this.addCls(rotationClasses[rotation]);
el.setHorizontal();rotation&&el.setVertical(this._rotationAngles[rotation]);el.setStyle({right:'',left:'',top:'',height:'',width:''});this.lastBox=null;this.updateLayout()}},updateText:function(text){this.rendered&&(this.textEl.setHtml(text),this.updateLayout())},updateTextAlign:function(align,oldAlign){var textAlignClasses=this._textAlignClasses;this.rendered&&(oldAlign&&this.removeCls(textAlignClasses[oldAlign]),this.addCls(textAlignClasses[align]),this.updateLayout())},privates:{_getVerticalAdjustDirection:function(){return'left'},
_didIconStateChange:function(old,current){current=Ext.isEmpty(current);return Ext.isEmpty(old)?!current:current},_hasIcon:function(){return!!(this.getIcon()||this.getIconCls()||this.getGlyph())},_syncIconVisibility:function(){var el=this.el,hasIcon=this._hasIcon(),iconWrapEl=this.iconWrapEl;hasIcon&&!iconWrapEl&&(iconWrapEl=this.iconAlign,iconWrapEl='left'===iconWrapEl||'top'===iconWrapEl,el.dom.insertAdjacentHTML(iconWrapEl?'afterbegin':'beforeend',this.getIconMarkup()),iconWrapEl=this.iconWrapEl=
el[iconWrapEl?'first':'last'](),this.iconEl=iconWrapEl.first());iconWrapEl&&iconWrapEl.setDisplayed(hasIcon)}}},0,['title'],['component','box','title'],{component:!0,box:!0,title:!0},['widget.title'],0,[Ext.panel,'Title'],0);
Ext.cmd.derive('Ext.panel.Tool',Ext.Component,{config:{glyph:null},isTool:!0,baseCls:'x-tool',disabledCls:'x-tool-disabled',toolPressedCls:'x-tool-pressed',toolOverCls:'x-tool-over',childEls:['toolEl'],renderTpl:['\x3cdiv id\x3d"{id}-toolEl" data-ref\x3d"toolEl" class\x3d"{className} {childElCls}" role\x3d"presentation"\x3ctpl if\x3d"glyph"\x3e\x3ctpl if\x3d"glyphFontFamily"\x3e style\x3d"font-family:{glyphFontFamily};"\x3e\x3c/tpl\x3e{glyph}\x3ctpl else\x3e\x3e\x3c/tpl\x3e\x3c/div\x3e'],toolOwner:null,
tooltipType:'qtip',stopEvent:!0,ariaRole:'button',focusable:!0,tabIndex:0,keyMap:{scope:'this',SPACE:'onClick',ENTER:'onClick'},cacheHeight:!0,cacheWidth:!0,initComponent:function(){this.tooltip=this.tooltip||this.qtip;Ext.Component.prototype.initComponent.call(this)},initRenderData:function(){var data=Ext.Component.prototype.initRenderData.call(this),glyph=this.getGlyph();if(glyph){var glyphFontFamily=glyph.fontFamily;glyph=glyph.character}Ext.applyIf(data,{className:this.calculateClassName(),glyph:glyph,
glyphFontFamily:glyphFontFamily});return data},calculateClassName:function(){var result=this.baseCls+'-tool-el ';this.type?result+=this.baseCls+'-img '+this.baseCls+'-'+this.type:this.iconCls&&(result+=this.iconCls);return result},afterRender:function(){var tip;Ext.Component.prototype.afterRender.call(this);this.setTypeAfterRender&&(this.setTypeAfterRender=!1,this.setType(this.type));this.el.on({click:this.onClick,mousedown:this.onMouseDown,mouseover:this.onMouseOver,mouseout:this.onMouseOut,scope:this});
(tip=this.tooltip)&&this.setTooltip(tip)},tipAttrs:{qtip:'data-qtip'},setTooltip:function(tooltip,type){var oldTip=this.tooltip,oldType=this.tooltipType,id=this.id,el=this.el;oldTip&&Ext.quickTipsActive&&Ext.isObject(oldTip)&&Ext.tip.QuickTipManager.unregister(id);this.tooltip=tooltip;type&&(this.tooltipType=type);if(tooltip){if(Ext.quickTipsActive&&Ext.isObject(tooltip))Ext.tip.QuickTipManager.register(Ext.apply({target:id},tooltip));else if(el){if(type&&oldType&&type!==oldType){var attr=this.tipAttrs[oldType]||
'title';el.dom.removeAttribute(attr)}attr=this.tipAttrs[type||oldType]||'title';el.dom.setAttribute(attr,tooltip)}'title'!==attr&&this.ariaRole&&'presentation'!==this.ariaRole&&(el?el.dom.setAttribute('aria-label',tooltip):(this.ariaRenderAttributes=this.ariaRenderAttributes||{},this.ariaRenderAttributes['aria-label']=tooltip))}},setType:function(type){var rendering=this.rendering,clear;if(!this.updating){var oldClassName=this.calculateClassName();rendering||(this.updating=clear=!0);this.setIconCls(null);
this.setGlyph(null)}this.type=type;clear?(this.updateToolCls(oldClassName),this.updating=!1):rendering&&(this.setTypeAfterRender=!0);return this},setIconCls:function(iconCls){var clear;if(!this.updating){var oldClassName=this.calculateClassName();this.updating=clear=!0;this.setType(null);this.setGlyph(null)}this.iconCls=iconCls;clear&&(this.updateToolCls(oldClassName),this.updating=!1);return this},doDestroy:function(){this.setTooltip(null);delete this.toolOwner;Ext.Component.prototype.doDestroy.call(this)},
applyGlyph:function(glyph,oldGlyph){glyph&&(glyph.isGlyph||(glyph=new Ext.Glyph(glyph)),glyph.isEqual(oldGlyph)&&(glyph=void 0));return glyph},updateGlyph:function(glyph,oldGlyph){oldGlyph=this.toolEl;var clear;if(!this.updating){var oldClassName=this.calculateClassName();this.updating=clear=!0;this.setType(null);this.setIconCls(null)}oldGlyph&&(glyph?(oldGlyph.dom.innerHTML=glyph.character,oldGlyph.setStyle(glyph.getStyle())):oldGlyph.dom.innerHTML='');clear&&(this.updateToolCls(oldClassName),this.updating=
!1)},privates:{onClick:function(e,target){if(this.disabled)return!1;'keydown'!==e.type&&this.el.removeCls(this.toolPressedCls+' '+this.toolOverCls);!1!==this.stopEvent&&e.stopEvent();this.handler?Ext.callback(this.handler,this.scope,[e,target,this.ownerCt,this],0,this):this.callback&&Ext.callback(this.callback,this.scope,[this.toolOwner||this.ownerCt,this,e],0,this);if(!this.destroyed)return this.fireEvent('click',this,e,this.toolOwner||this.ownerCt),!0},onMouseDown:function(e){e.preventDefault();
if(this.disabled)return!1;this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled)return!1;this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)},updateToolCls:function(oldCls){var toolEl=this.toolEl;toolEl&&(toolEl.removeCls(oldCls),toolEl.addCls(this.calculateClassName()))}}},0,['tool'],['component','box','tool'],{component:!0,box:!0,tool:!0},['widget.tool'],0,[Ext.panel,'Tool'],0);
Ext.cmd.derive('Ext.util.KeyMap',Ext.Base,{alternateClassName:'Ext.KeyMap',eventName:'keydown',constructor:function(config){1!==arguments.length||'string'===typeof config||config.dom||config.tagName||config===document||config.isComponent?this.legacyConstructor.apply(this,arguments):(Ext.apply(this,config),this.bindings=[],this.target.isComponent||(this.target=Ext.get(this.target)),this.binding?this.addBinding(this.binding):config.key&&this.addBinding(config),this.enable())},legacyConstructor:function(el,
binding,eventName){Ext.apply(this,{target:Ext.get(el),eventName:eventName||this.eventName,bindings:[]});binding&&this.addBinding(binding);this.enable()},addBinding:function(binding){var keyCode=binding.key,len;this.processing&&(this.bindings=this.bindings.slice(0));if(Ext.isArray(binding))for(keyCode=0,len=binding.length;keyCode<len;keyCode++)this.addBinding(binding[keyCode]);else this.bindings.push(Ext.apply({keyCode:this.processKeys(keyCode)},binding))},removeBinding:function(binding){var bindings=
this.bindings,len=bindings.length,i;this.processing&&(this.bindings=bindings.slice(0));var keys=this.processKeys(binding.key);for(i=0;i<len;++i){var item=bindings[i];if((item.fn||item.handler)===(binding.fn||binding.handler)&&item.scope===binding.scope&&binding.alt===item.alt&&binding.ctrl===item.ctrl&&binding.shift===item.shift&&Ext.Array.equals(item.keyCode,keys)){Ext.Array.erase(this.bindings,i,1);break}}},processKeys:function(keyCode){var processed=!1;if(keyCode.test)return keyCode;if(Ext.isString(keyCode)){var key=
[];keyCode=keyCode.toUpperCase();var i=0;for(processed=keyCode.length;i<processed;++i)key.push(keyCode.charCodeAt(i));keyCode=key;processed=!0}Ext.isArray(keyCode)||(keyCode=[keyCode]);if(!processed)for(i=0,processed=keyCode.length;i<processed;++i)key=keyCode[i],Ext.isString(key)&&(keyCode[i]=key.toUpperCase().charCodeAt(0));return keyCode},handleTargetEvent:function(event){if(this.enabled){var bindings=this.bindings;var i=0;var len=bindings.length;if(event=this.processEvent.apply(this.processEventScope||
this,arguments))if(this.lastKeyEvent=event,!this.ignoreInputFields||!Ext.fly(event.target).isInputField()){if(!event.getKey)return event;for(this.processing=!0;i<len;++i){var result=this.processBinding(bindings[i],event);if(!1===result)return this.processing=!1,result}this.processing=!1}}},processEvent:Ext.identityFn,processBinding:function(binding,event){if(this.checkModifiers(binding,event)){var key=event.getKey(),handler=binding.fn||binding.handler,scope=binding.scope||this,keyCode=binding.keyCode;
binding=binding.defaultEventAction;var len;if(keyCode.test){if(keyCode.test(String.fromCharCode(event.getCharCode()))){key=handler.call(scope,key,event);if(!0!==key&&binding)event[binding]();if(!1===key)return key}}else if(keyCode.length){var i=0;for(len=keyCode.length;i<len;++i)if(key===keyCode[i]){key=handler.call(scope,key,event);if(!0!==key&&binding)event[binding]();if(!1===key)return key;break}}}},checkModifiers:function(binding,event){for(var keys=['shift','ctrl','alt'],i=0,len=keys.length,
val,key;i<len;++i)if(key=keys[i],val=binding[key],void 0!==val&&val!==event[key+'Key'])return!1;return!0},on:function(key,fn,scope){if(Ext.isObject(key)&&!Ext.isArray(key)){var keyCode=key.key;var shift=key.shift;var ctrl=key.ctrl;var alt=key.alt}else keyCode=key;this.addBinding({key:keyCode,shift:shift,ctrl:ctrl,alt:alt,fn:fn,scope:scope})},un:function(key,fn,scope){if(Ext.isObject(key)&&!Ext.isArray(key)){var keyCode=key.key;var shift=key.shift;var ctrl=key.ctrl;var alt=key.alt}else keyCode=key;
this.removeBinding({key:keyCode,shift:shift,ctrl:ctrl,alt:alt,fn:fn,scope:scope})},isEnabled:function(){return this.enabled},enable:function(){this.enabled||(this.target.on(this.eventName,this.handleTargetEvent,this,{capture:this.capture,priority:this.priority}),this.enabled=!0)},disable:function(){this.enabled&&(this.target.removeListener(this.eventName,this.handleTargetEvent,this),this.enabled=!1)},setDisabled:function(disabled){disabled?this.disable():this.enable()},destroy:function(removeTarget){var target=
this.target;this.bindings=[];this.disable();removeTarget&&target.destroy();delete this.target;this.callParent()}},1,0,0,0,0,0,[Ext.util,'KeyMap',Ext,'KeyMap'],0);
Ext.cmd.derive('Ext.util.KeyNav',Ext.Base,{alternateClassName:'Ext.KeyNav',disabled:!1,defaultEventAction:!1,forceKeyDown:!1,eventName:'keypress',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(config){2===arguments.length?this.legacyConstructor.apply(this,arguments):this.doConstruction(config)},legacyConstructor:function(el,config){this.doConstruction(Ext.apply({target:el},config))},
doConstruction:function(config){var keymapCfg={target:config.target,ignoreInputFields:config.ignoreInputFields,eventName:this.getKeyEvent('forceKeyDown'in config?config.forceKeyDown:this.forceKeyDown,config.eventName),capture:config.capture};this.map&&this.map.destroy();this.initConfig(config);config.processEvent&&(keymapCfg.processEvent=config.processEvent,keymapCfg.processEventScope=config.processEventScope||this);config.priority&&(keymapCfg.priority=config.priority);config.keyMap?keymapCfg=this.map=
config.keyMap:(keymapCfg=this.map=new Ext.util.KeyMap(keymapCfg),this.destroyKeyMap=!0);this.addBindings(config);keymapCfg.disable();config.disabled||keymapCfg.enable()},addBindings:function(bindings){var keyName,map=this.map,keyCodes=Ext.util.KeyNav.keyOptions,defaultScope=bindings.scope||this;for(keyName in bindings){var binding=bindings[keyName];var keyCode=keyCodes[keyName];null!=keyCode&&(keyName=keyCode);!binding||1!==keyName.length&&isNaN(keyName=parseInt(keyName,10))||('function'===typeof binding&&
(binding={handler:binding,defaultEventAction:void 0!==bindings.defaultEventAction?bindings.defaultEventAction:this.defaultEventAction}),map.addBinding({key:keyName,ctrl:binding.ctrl,shift:binding.shift,alt:binding.alt,handler:Ext.Function.bind(this.handleEvent,binding.scope||defaultScope,[binding.handler||binding.fn,this],!0),defaultEventAction:void 0!==binding.defaultEventAction?binding.defaultEventAction:this.defaultEventAction}))}},handleEvent:function(keyCode,event,handler,keyNav){keyNav.lastKeyEvent=
event;return handler.call(this,event)},destroy:function(removeEl){this.destroyKeyMap&&this.map.destroy(removeEl);delete this.map;this.callParent()},enable:function(){this.map&&(this.map.enable(),this.disabled=!1)},disable:function(){this.map&&this.map.disable();this.disabled=!0},setDisabled:function(disabled){this.map.setDisabled(disabled);this.disabled=disabled},getKeyEvent:function(forceKeyDown,configuredEventName){return forceKeyDown||Ext.supports.SpecialKeyDownRepeat&&!configuredEventName?'keydown':
configuredEventName||this.eventName}},1,0,0,0,0,0,[Ext.util,'KeyNav',Ext,'KeyNav'],0);
Ext.cmd.derive('Ext.util.FocusableContainer',Ext.Mixin,{mixinConfig:{id:'focusablecontainer',before:{onAdd:'onFocusableChildAdd',onRemove:'onFocusableChildRemove',doDestroy:'destroyFocusableContainer',onFocusEnter:'onFocusEnter'},after:{afterRender:'initFocusableContainer',onFocusLeave:'onFocusLeave',afterShow:'activateFocusableContainer'}},isFocusableContainer:!0,enableFocusableContainer:!0,activeChildTabIndex:0,inactiveChildTabIndex:-1,focusableContainerEl:'el',tabGuard:!0,privates:{initFocusableContainer:function(clearChildren){var len;
if(this.enableFocusableContainer)this.doInitFocusableContainer(null!=clearChildren?clearChildren:!0);else{clearChildren=this.getFocusables();var i=0;for(len=clearChildren.length;i<len;i++)clearChildren[i].focusableContainer=null}},doInitFocusableContainer:function(clearChildren){var el=this.focusableContainerEl;clearChildren&&this.clearFocusables();this.findNextFocusableChild({step:1,beforeRender:!0})?this.activateFocusableContainer(!0):this.isFocusableContainerActive()&&this.activateFocusableContainer(!1);
el.isElement||(el=this.focusableContainerEl=this[el]);this.focusableKeyNav=this.createFocusableContainerKeyNav(el)},createFocusableContainerKeyNav:function(el){return new Ext.util.KeyNav(el,{eventName:'keydown',ignoreInputFields:!0,scope:this,tab:this.onFocusableContainerTabKey,enter:this.onFocusableContainerEnterKey,space:this.onFocusableContainerSpaceKey,up:this.onFocusableContainerUpKey,down:this.onFocusableContainerDownKey,left:this.onFocusableContainerLeftKey,right:this.onFocusableContainerRightKey})},
destroyFocusableContainer:function(){this.enableFocusableContainer&&this.doDestroyFocusableContainer()},doDestroyFocusableContainer:function(){this.focusableKeyNav=Ext.destroy(this.focusableKeyNav)},getFocusables:function(){return this.items.items},initDefaultFocusable:function(){var haveFocusable=!1,i,len;var items=this.getFocusables();if(len=items.length){for(i=0;i<len;i++){var item=items[i];if(!item.disabled&&item.isFocusable&&item.isFocusable()){haveFocusable=!0;break}}if(haveFocusable)return(item=
this.findNextFocusableChild({items:items,step:!0}))&&this.activateFocusable(item),item}},clearFocusables:function(){var items=this.getFocusables(),len=items.length,i;for(i=0;i<len;i++){var item=items[i];item.focusable&&!item.disabled&&this.deactivateFocusable(item)}},activateFocusable:function(child,newTabIndex){child.setTabIndex(null!=newTabIndex?newTabIndex:this.activeChildTabIndex)},deactivateFocusable:function(child,newTabIndex){child.setTabIndex(null!=newTabIndex?newTabIndex:this.inactiveChildTabIndex)},
activateFocusableContainer:function(activate){var beforeGuard=this.tabGuardBeforeEl,afterGuard=this.tabGuardAfterEl;this.rendered&&!this.destroying&&!this.destroyed&&beforeGuard&&afterGuard&&((null!=activate?activate:1)?(beforeGuard.dom.setAttribute('tabIndex',this.activeChildTabIndex),afterGuard.dom.setAttribute('tabIndex',this.activeChildTabIndex)):(beforeGuard.dom.removeAttribute('tabIndex'),afterGuard.dom.removeAttribute('tabIndex')))},onFocusableContainerTabKey:function(){return!0},onFocusableContainerEnterKey:function(){return!0},
onFocusableContainerSpaceKey:function(){return!0},onFocusableContainerUpKey:function(e){e.preventDefault();return this.moveChildFocus(e,!1)},onFocusableContainerDownKey:function(e){e.preventDefault();return this.moveChildFocus(e,!0)},onFocusableContainerLeftKey:function(e){e.preventDefault();return this.moveChildFocus(e,!1)},onFocusableContainerRightKey:function(e){e.preventDefault();return this.moveChildFocus(e,!0)},getFocusableFromEvent:function(e){return Ext.Component.fromElement(e.getTarget())},
moveChildFocus:function(e,forward){var child=this.getFocusableFromEvent(e);return this.focusChild(child,forward,e)},focusChild:function(child,forward){(child=this.findNextFocusableChild({child:child,step:forward}))&&child.focus();return child},findNextFocusableChild:function(options){var beforeRender=options.beforeRender,i;var items=options.items||this.getFocusables();var step=null!=options.step?options.step:1;var item=options.child;options=!!this.allowFocusingDisabledChildren;var idx=Ext.Array.indexOf(items,
item);step=!0===step?1:!1===step?-1:step;var len=items.length;for(i=0<step?idx<len?idx+step:0:0<idx?idx+step:len-1;!(0>idx&&(i>=len||0>i));i+=step){if(i>=len){i=-1;continue}else if(0>i){i=len;continue}else if(i===idx)break;if((item=items[i])&&item.focusable&&(!item.disabled||options)&&(beforeRender||item.isFocusable&&item.isFocusable()))return item}return null},isFocusableContainerActive:function(){var isActive=!1,beforeGuard=this.tabGuardBeforeEl,el=this.focusableContainerEl;beforeGuard&&beforeGuard.isTabbable&&
beforeGuard.isTabbable()?isActive=!0:el.isTabbable&&el.isTabbable()?isActive=!0:(beforeGuard=(beforeGuard=this.lastFocusedChild)&&beforeGuard.getFocusEl&&beforeGuard.getFocusEl())&&beforeGuard.isTabbable&&beforeGuard.isTabbable()&&(isActive=!0);return isActive},onFocusEnter:function(e){e=e.toComponent;var child;if(!this.enableFocusableContainer||this.destroying||this.destroyed)return null;if(e===this){if(child=this.initDefaultFocusable())child.focus(),this.activateFocusableContainer(!1)}else this.activateFocusableContainer(!1);
return e},onFocusLeave:function(e){e=this.lastFocusedChild;!this.enableFocusableContainer||this.destroying||this.destroyed||(this.clearFocusables(),e&&!e.disabled?this.activateFocusable(e):this.activateFocusableContainer(!0))},beforeFocusableChildBlur:Ext.privateFn,afterFocusableChildBlur:Ext.privateFn,beforeFocusableChildFocus:function(child){!this.enableFocusableContainer||this.destroying||this.destroyed||(this.clearFocusables(),this.activateFocusable(child),child.needArrowKeys&&this.guardFocusableChild(child))},
guardFocusableChild:function(child){var index=this.activeChildTabIndex,guard;(guard=this.findNextFocusableChild({child:child,step:-1}))&&guard.setTabIndex(index);(guard=this.findNextFocusableChild({child:child,step:1}))&&guard.setTabIndex(index)},afterFocusableChildFocus:function(child){!this.enableFocusableContainer||this.destroying||this.destroyed||(this.lastFocusedChild=child)},onFocusableChildAdd:function(child){if(this.enableFocusableContainer)return this.doFocusableChildAdd(child)},doFocusableChildAdd:function(child){child.focusable&&
(child.focusableContainer=this,this.$initingItems||this.isFocusableContainerActive()||this.activateFocusableContainer(!0))},onFocusableChildRemove:function(child){if(this.enableFocusableContainer)return this.doFocusableChildRemove(child);child.focusableContainer=null},doFocusableChildRemove:function(child){child===this.lastFocusedChild&&(this.lastFocusedChild=null,this.activateFocusableContainer(!0));(child=this.findNextFocusableChild({step:1,beforeRender:!0}))||this.activateFocusableContainer(!1)},
beforeFocusableChildEnable:Ext.privateFn,onFocusableChildEnable:function(child){!this.enableFocusableContainer||this.destroying||this.destroyed||child===this.lastFocusedChild||(this.deactivateFocusable(child),this.isFocusableContainerActive()||this.activateFocusableContainer(!0))},beforeFocusableChildDisable:function(child){this.enableFocusableContainer&&!this.destroying&&!this.destroyed&&child.hasFocus&&(child=this.findNextFocusableChild({child:child})||child.findFocusTarget())&&child.focus()},onFocusableChildDisable:function(child){!this.enableFocusableContainer||
this.destroying||this.destroyed||(child===this.lastFocusedChild&&this.activateFocusableContainer(!0),this.findNextFocusableChild({step:1})||this.activateFocusableContainer(!1))},beforeFocusableChildHide:function(child){return this.beforeFocusableChildDisable(child)},onFocusableChildHide:function(child){return this.onFocusableChildDisable(child)},beforeFocusableChildShow:function(child){return this.beforeFocusableChildEnable(child)},onFocusableChildShow:function(child){return this.onFocusableChildEnable(child)},
onFocusableChildMasked:Ext.privateFn,onFocusableChildDestroy:Ext.privateFn,onFocusableChildUpdate:Ext.privateFn}},0,0,0,0,0,0,[Ext.util,'FocusableContainer'],0);
Ext.cmd.derive('Ext.panel.Header',Ext.panel.Bar,{isHeader:!0,defaultType:'tool',indicateDrag:!1,weight:-1,shrinkWrap:3,iconAlign:'left',titleAlign:'left',titlePosition:0,titleRotation:'default',autoEl:{role:'presentation'},beforeRenderConfig:{glyph:null,icon:null,iconCls:null,iconAlign:null,title:{$value:{xtype:'title',flex:1},merge:function(newValue,oldValue){'object'!==typeof newValue&&(newValue={text:newValue});return Ext.merge(oldValue?Ext.Object.chain(oldValue):{},newValue)}},titleAlign:null,
titlePosition:null,titleRotation:null},headerCls:'x-header',initComponent:function(){var items=this.items,itemPosition=this.itemPosition,cls=[this.headerCls];this.tools=this.tools||[];this.items=items=items?items.slice():[];void 0!==itemPosition&&(this._userItems=items.slice(),this.items=items=[]);this.indicateDragCls=this.headerCls+'-draggable';this.indicateDrag&&cls.push(this.indicateDragCls);this.addCls(cls);this.syncNoBorderCls();Ext.Array.push(items,this.tools);this.tools.length=0;Ext.panel.Bar.prototype.initComponent.call(this);
this.on({dblclick:this.onDblClick,click:this.onClick,element:'el',scope:this})},addTool:function(tool){this.add(Ext.ComponentManager.create(tool,'tool'));this.checkFocusableTools()},afterLayout:function(){var frameTR;if(this.vertical&&(frameTR=this.frameTR)){var frameBR=this.frameBR;var frameTL=this.frameTL;frameTL=this.getWidth()-frameTR.getPadding('r')-(frameTL?frameTL.getPadding('l'):this.el.getBorderWidth('l'))+'px';frameBR.setStyle('background-position-x',frameTL);frameTR.setStyle('background-position-x',
frameTL)}Ext.panel.Bar.prototype.afterLayout.call(this)},applyTitle:function(title,oldTitle){title=title||'';var isString=Ext.isString(title);Ext.isObject(title)||(title={text:title.toString()});oldTitle?(Ext.suspendLayouts(),oldTitle.setConfig(title),Ext.resumeLayouts(!0),title=oldTitle):(isString&&(title.xtype='title'),title.ui=this.ui,oldTitle='rotation'in title,title.id=this.id+'-title',this.isAccordionHeader&&(title.ariaRole='tab',title.textElRole=null,title.focusable=!0),title=Ext.create(title),
!oldTitle&&this.vertical&&'default'===this.titleRotation&&(title.rotation=1));return title},applyTitlePosition:function(position){var max=this.items.getCount();this._titleInItems&&--max;return Math.max(Math.min(position,max),0)},beforeLayout:function(){Ext.panel.Bar.prototype.beforeLayout.call(this);this.syncBeforeAfterTitleClasses()},beforeRender:function(){var itemPosition=this.itemPosition;this.protoEl.unselectable();Ext.panel.Bar.prototype.beforeRender.call(this);void 0!==itemPosition&&this.insert(itemPosition,
this._userItems);this.checkFocusableTools()},checkFocusableTools:function(){var tools=this.tools,len;if(this.isAccordionHeader)this.enableFocusableContainer=!1;else{var i=0;for(len=tools.length;i<len;i++)if(tools[i].focusable){var haveFocusableTool=!0;break}if(haveFocusableTool){if(!this.initialConfig.hasOwnProperty('enableFocusableContainer')||this.enableFocusableContainer)this.ariaRole='toolbar',this.enableFocusableContainer=!0,this.rendered&&(this.ariaEl.dom.setAttribute('role','toolbar'),this.initFocusableContainer(!0))}else this.ariaRole=
'presentation',this.enableFocusableContainer=!1,this.rendered&&(this.ariaEl.dom.setAttribute('role','presentation'),this.initFocusableContainer(!0))}},getTools:function(){return this.tools.slice()},onAdd:function(component,index){var tools=this.tools;Ext.panel.Bar.prototype.onAdd.call(this,component,index);component.isTool&&(tools.push(component),tools[component.type]=component)},onAdded:function(container,pos,instanced){this.syncNoBorderCls();Ext.panel.Bar.prototype.onAdded.call(this,container,pos,
instanced)},onRemoved:function(container,pos,instanced){this.syncNoBorderCls();Ext.panel.Bar.prototype.onRemoved.call(this,container,pos,instanced)},setDock:function(dock){var title=this.getTitle(),rotation=this.getTitleRotation(),titleRotation=title.getRotation();Ext.suspendLayouts();Ext.panel.Bar.prototype.setDock.call(this,dock);'default'===rotation&&(rotation=this.vertical?1:0,rotation!==titleRotation&&title.setRotation(rotation),this.rendered&&this.resetItemMargins());Ext.resumeLayouts(!0)},
updateGlyph:function(glyph){this.getTitle().setGlyph(glyph)},updateIcon:function(icon){this.getTitle().setIcon(icon)},updateIconAlign:function(align,oldAlign){this.getTitle().setIconAlign(align)},updateIconCls:function(cls){this.getTitle().setIconCls(cls)},updateTitle:function(title,oldTitle){oldTitle||(this.insert(this.getTitlePosition(),title),this._titleInItems=!0);this.titleCmp=title},updateTitleAlign:function(align,oldAlign){this.getTitle().setTextAlign(align)},updateTitlePosition:function(position){this.insert(position,
this.getTitle())},updateTitleRotation:function(rotation){'default'===rotation&&(rotation=this.vertical?1:0);this.getTitle().setRotation(rotation)},privates:{fireClickEvent:function(type,e){e.getTarget('.'+Ext.panel.Tool.prototype.baseCls)||this.fireEvent(type,this,e)},getFramingInfoCls:function(){var cls=Ext.panel.Bar.prototype.getFramingInfoCls.call(this),owner=this.ownerCt;!this.expanding&&owner&&(owner.collapsed||this.isCollapsedExpander)&&(cls+='-'+owner.collapsedCls);return cls+'-'+this.dock},
onClick:function(e){this.fireClickEvent('click',e)},onDblClick:function(e){this.fireClickEvent('dblclick',e)},syncBeforeAfterTitleClasses:function(force){var items=this.items,childItems=items.items,titlePosition=this.getTitlePosition(),itemCount=childItems.length,itemGeneration=items.generation;items=this.syncBeforeAfterGen;var i;if(force||items!==itemGeneration)for(this.syncBeforeAfterGen=itemGeneration,i=0;i<itemCount;++i){var item=childItems[i];force=item.afterTitleCls||(item.afterTitleCls=item.baseCls+
'-after-title');itemGeneration=item.beforeTitleCls||(item.beforeTitleCls=item.baseCls+'-before-title');!this.title||i<titlePosition?(items&&item.removeCls(force),item.addCls(itemGeneration)):i>titlePosition&&(items&&item.removeCls(itemGeneration),item.addCls(force))}},syncNoBorderCls:function(){var ownerCt=this.ownerCt,noBorderCls=this.headerCls+'-noborder';(ownerCt?!1!==ownerCt.border||ownerCt.frame:!1!==this.border)?this.removeCls(noBorderCls):this.addCls(noBorderCls)}}},0,['header'],['component',
'box','container','header'],{component:!0,box:!0,container:!0,header:!0},['widget.header'],[[Ext.util.FocusableContainer.prototype.mixinId||Ext.util.FocusableContainer.$className,Ext.util.FocusableContainer]],[Ext.panel,'Header'],0);
Ext.cmd.derive('Ext.layout.container.boxOverflow.None',Ext.Base,{alternateClassName:'Ext.layout.boxOverflow.None',factoryConfig:{defaultType:'none'},isBoxOverflowHandler:!0,$configPrefixed:!1,$configStrict:!1,constructor:function(config){this.initConfig(config)},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn,beginLayout:Ext.emptyFn,beginLayoutCycle:Ext.emptyFn,calculate:function(ownerContext){var plan=ownerContext.state.boxPlan;plan&&plan.tooNarrow?(plan=this.handleOverflow(ownerContext))&&
plan.reservedSpace&&this.layout.publishInnerCtSize(ownerContext,plan.reservedSpace):this.clearOverflow()},completeLayout:Ext.emptyFn,finishedLayout:function(ownerContext){ownerContext=this.layout.owner;if(ownerContext.hasListeners.overflowchange){var hiddens=ownerContext.query('\x3e[hidden]');var hiddenCount=hiddens.length;hiddenCount!==this.lastHiddenCount&&(ownerContext.fireEvent('overflowchange',this.lastHiddenCount,hiddenCount,hiddens),this.lastHiddenCount=hiddenCount)}},onRemove:Ext.emptyFn,
getItem:function(item){return this.layout.owner.getComponent(item)},getOwnerType:function(owner){return owner.isToolbar?'toolbar':owner.isTabBar?'tab-bar':owner.isMenu?'menu':owner.isBreadcrumb?'breadcrumb':owner.getXType()},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return''},setVertical:function(){var layout=this.layout,innerCt=layout.innerCt;innerCt.removeCls(this.getOverflowCls(layout.oppositeDirection));innerCt.addCls(this.getOverflowCls(layout.direction))}},
1,0,0,0,['box.overflow.None','box.overflow.none'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.layout.container.boxOverflow,'None',Ext.layout.boxOverflow,'None'],0);
Ext.cmd.derive('Ext.layout.container.boxOverflow.Scroller',Ext.layout.container.boxOverflow.None,{alternateClassName:'Ext.layout.boxOverflow.Scroller',animateScroll:!1,scrollIncrement:20,wheelIncrement:10,scrollRepeatInterval:60,scrollDuration:400,scrollerCls:'x-box-scroller',beforeSuffix:'-before-scroller',afterSuffix:'-after-scroller',constructor:function(config){this.mixins.observable.constructor.call(this,config);this.scrollSize=this.scrollPosition=0},getPrefixConfig:function(){return{role:'presentation',
id:this.layout.owner.id+this.beforeSuffix,cls:this.createScrollerCls('beforeX'),style:'display:none'}},getSuffixConfig:function(){return{role:'presentation',id:this.layout.owner.id+this.afterSuffix,cls:this.createScrollerCls('afterX'),style:'display:none'}},createScrollerCls:function(xName){var layout=this.layout,owner=layout.owner,type=this.getOwnerType(owner),scrollerCls=this.scrollerCls;xName=scrollerCls+' '+scrollerCls+'-'+layout.names[xName]+' '+scrollerCls+'-'+type+' '+scrollerCls+'-'+type+
'-'+owner.ui;owner.plain&&(xName+=' '+scrollerCls+'-plain');return xName},getOverflowCls:function(direction){return this.scrollerCls+'-body-'+direction},beginLayout:function(ownerContext){ownerContext.innerCtScrollPos=this.getScrollPosition();Ext.layout.container.boxOverflow.None.prototype.beginLayout.apply(this,arguments)},finishedLayout:function(ownerContext){var plan=ownerContext.state.boxPlan,layout=this.layout,names=layout.names,scrollPos=Math.min(this.getMaxScrollPosition(),ownerContext.innerCtScrollPos);
plan&&plan.tooNarrow&&(plan=ownerContext.childItems[ownerContext.childItems.length-1].props,this.scrollSize=plan[names.x]+plan[names.width],this.updateScrollButtons(),layout.innerCt[names.setScrollLeft](scrollPos));Ext.layout.container.boxOverflow.None.prototype.finishedLayout.call(this,ownerContext)},handleOverflow:function(ownerContext){var names=this.layout.names,getWidth=names.getWidth,parallelMargins=names.parallelMargins;this.showScrollers();var beforeScroller=this.getBeforeScroller();var afterScroller=
this.getAfterScroller();getWidth=beforeScroller[getWidth]()+afterScroller[getWidth]()+beforeScroller.getMargin(parallelMargins)+afterScroller.getMargin(parallelMargins);ownerContext=ownerContext.targetContext.getPaddingInfo()[names.width];return{reservedSpace:Math.max(getWidth-ownerContext,0)}},getBeforeScroller:function(){return this._beforeScroller||(this._beforeScroller=this.createScroller(this.beforeSuffix,'beforeRepeater','scrollLeft'))},getAfterScroller:function(){return this._afterScroller||
(this._afterScroller=this.createScroller(this.afterSuffix,'afterRepeater','scrollRight'))},createScroller:function(suffix,repeaterName,scrollHandler){var owner=this.layout.owner,scrollerCls=this.scrollerCls;suffix=owner.el.getById(owner.id+suffix);suffix.addClsOnOver(scrollerCls+'-hover');suffix.addClsOnClick(scrollerCls+'-pressed');suffix.setVisibilityMode(Ext.Element.DISPLAY);this[repeaterName]=new Ext.util.ClickRepeater(suffix,{interval:this.scrollRepeatInterval,handler:scrollHandler,scope:this});
return suffix},createWheelListener:function(){this.wheelListener=this.layout.innerCt.on('mousewheel',this.onMouseWheel,this,{destroyable:!0})},onMouseWheel:function(e){e.stopEvent();this.scrollBy(this.getWheelDelta(e)*this.wheelIncrement*-1,!1)},getWheelDelta:function(e){return e.getWheelDelta()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){this.wheelListener||this.createWheelListener();this.getBeforeScroller().show();this.getAfterScroller().show();this.layout.owner.addClsWithUI('vertical'===
this.layout.direction?'vertical-scroller':'scroller')},hideScrollers:function(){var beforeScroller=this.getBeforeScroller(),afterScroller=this.getAfterScroller();beforeScroller&&(beforeScroller.hide(),afterScroller.hide(),this.layout.owner.removeClsWithUI('vertical'===this.layout.direction?'vertical-scroller':'scroller'))},destroy:function(){Ext.destroyMembers(this,'beforeRepeater','afterRepeater','_beforeScroller','_afterScroller','wheelListener');this.callParent()},scrollBy:function(delta,animate){this.scrollTo(this.getScrollPosition()+
delta,animate)},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){var beforeScroller=this.getBeforeScroller(),afterScroller=this.getAfterScroller();if(beforeScroller&&afterScroller){var disabledCls=this.scrollerCls+'-disabled';beforeScroller[this.atExtremeBefore()?'addCls':'removeCls'](disabledCls);afterScroller[this.atExtremeAfter()?'addCls':'removeCls'](disabledCls);this.scrolling=!1}},scrollLeft:function(){this.scrollBy(-this.scrollIncrement,
!1)},scrollRight:function(){this.scrollBy(this.scrollIncrement,!1)},getScrollPosition:function(){var layout=this.layout;return isNaN(this.scrollPosition)?layout.innerCt[layout.names.getScrollLeft]():this.scrollPosition},getMaxScrollPosition:function(){var layout=this.layout;layout=this.scrollSize-layout.innerCt.lastBox[layout.names.width];return 0>layout?0:layout},atExtremeBefore:function(){return!this.getScrollPosition()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollPosition()},
setVertical:function(){var beforeScroller=this.getBeforeScroller(),afterScroller=this.getAfterScroller(),names=this.layout.names,scrollerCls=this.scrollerCls;beforeScroller.removeCls(scrollerCls+'-'+names.beforeY);afterScroller.removeCls(scrollerCls+'-'+names.afterY);beforeScroller.addCls(scrollerCls+'-'+names.beforeX);afterScroller.addCls(scrollerCls+'-'+names.afterX);Ext.layout.container.boxOverflow.None.prototype.setVertical.call(this)},scrollTo:function(position,animate){var layout=this.layout,
names=layout.names,oldPosition=this.getScrollPosition();position=Ext.Number.constrain(position,0,this.getMaxScrollPosition());position===oldPosition||this.scrolling||(this.scrollPosition=NaN,void 0===animate&&(animate=this.animateScroll),layout.innerCt[names.scrollTo](names.beforeScrollX,position,animate?this.getScrollAnim():!1),animate?this.scrolling=!0:this.updateScrollButtons(),this.fireEvent('scroll',this,position,animate?this.getScrollAnim():!1))},scrollToItem:function(item,animate){var layout=
this.layout,owner=layout.owner,names=layout.names;layout=layout.innerCt;item=this.getItem(item);if(void 0!==item){if(item===owner.items.first())var newPos=0;else item===owner.items.last()?newPos=this.getMaxScrollPosition():(owner=this.getItemVisibility(item),owner.fullyVisible||(item=item.getBox(!1,!0),newPos=item[names.x],owner.hiddenEnd&&(newPos-=layout[names.getWidth]()-item[names.width])));void 0!==newPos&&this.scrollTo(newPos,animate)}},getItemVisibility:function(item){var box=this.getItem(item).getBox(!0,
!0),layout=this.layout,names=layout.names;item=box[names.x];box=item+box[names.width];var scrollStart=this.getScrollPosition();layout=scrollStart+layout.innerCt[names.getWidth]();return{hiddenStart:item<scrollStart,hiddenEnd:box>layout,fullyVisible:item>=scrollStart&&box<=layout}}},1,0,0,0,['box.overflow.Scroller','box.overflow.scroller'],[['observable',Ext.mixin.Observable]],[Ext.layout.container.boxOverflow,'Scroller',Ext.layout.boxOverflow,'Scroller'],0);
Ext.cmd.derive('Ext.dd.DragDropManager',Ext.Base,{singleton:!0,alternateClassName:['Ext.dd.DragDropMgr','Ext.dd.DDM'],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:!0,stopPropagation:!1,initialized:!1,locked:!1,init:function(){this.initialized=!0},POINT:0,INTERSECT:1,mode:0,notifyOccluded:!1,dragCls:'x-dd-drag-current',currentPoint:new Ext.util.Point,_execOnAll:function(sMethod,args){var ids=this.ids,i,j;for(i in ids)if(ids.hasOwnProperty(i)){var item=ids[i];for(j in item)if(item.hasOwnProperty(j)){var oDD=
item[j];this.isTypeOfDD(oDD)&&oDD[sMethod].apply(oDD,args)}}},addListeners:function(){this.init();Ext.getWin().on({unload:this._onUnload,resize:this._onResize,scope:this})},_onResize:function(e){this._execOnAll('resetConstraints',[])},lock:function(){this.locked=!0},unlock:function(){this.locked=!1},isLocked:function(){return this.locked},locationCache:{},useCache:!0,clickPixelThresh:8,dragThreshMet:!1,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,sGroup){this.initialized||this.init();
this.ids[sGroup]||(this.ids[sGroup]={});this.ids[sGroup][oDD.id]=oDD},removeDDFromGroup:function(oDD,sGroup){this.ids[sGroup]||(this.ids[sGroup]={});(sGroup=this.ids[sGroup])&&sGroup[oDD.id]&&delete sGroup[oDD.id]},_remove:function(oDD,clearGroup){var ids=this.ids,groups=oDD.groups,g;if(!this.clearingAll){this.dragCurrent===oDD&&(this.dragCurrent=null);for(g in groups)groups.hasOwnProperty(g)&&(clearGroup?delete ids[g]:ids[g]&&delete ids[g][oDD.id]);delete this.handleIds[oDD.id];delete this.locationCache[oDD.id]}},
regHandle:function(sDDId,sHandleId){this.handleIds[sDDId]||(this.handleIds[sDDId]={});this.handleIds[sDDId][sHandleId]=sHandleId},isDragDrop:function(id){return this.getDDById(id)?!0:!1},getRelated:function(p_oDD,bTargetsOnly){var oDDs=[],i,j;for(i in p_oDD.groups)for(j in this.ids[i])p_oDD=this.ids[i][j],!this.isTypeOfDD(p_oDD)||bTargetsOnly&&!p_oDD.isTarget||(oDDs[oDDs.length]=p_oDD);return oDDs},isLegalTarget:function(oDD,oTargetDD){oDD=this.getRelated(oDD,!0);var len;var i=0;for(len=oDD.length;i<
len;++i)if(oDD[i].id===oTargetDD.id)return!0;return!1},isTypeOfDD:function(oDD){return oDD&&oDD.__ygDragDrop},isHandle:function(sDDId,sHandleId){return this.handleIds[sDDId]&&this.handleIds[sDDId][sHandleId]},getDDById:function(id,force){var i;for(i in this.ids){var dd=this.ids[i][id];if(dd instanceof Ext.dd.DDTarget||force)return dd}return null},handleMouseDown:function(e,oDD){var xy=e.getXY(),el=oDD.getEl(),pointerup={translate:!1,fn:this.handleMouseUp,capture:!1,priority:-1E3},pointermove={translate:!1,
fn:this.handleMouseMove,capture:!1},listeners={capture:!0,destroyable:!0,scope:this},supports=Ext.supports;listeners.touchstart=this.handleMouseUp;supports.PointerEvents?(listeners.pointerup=pointerup,listeners.pointermove=pointermove):supports.MSPointerEvents?(listeners.mouseup=pointerup,listeners.mousemove=pointermove):'mouse'===e.pointerType?(listeners.mouseup=pointerup,listeners.mousemove=pointermove):(listeners.touchend=pointerup,listeners.touchmove=pointermove);this.pointerMoveListeners=Ext.getDoc().on(listeners);
this.isMouseDown=!0;Ext.quickTipsActive&&Ext.tip.QuickTipManager.ddDisable();this.currentPoint.setPosition(xy);this.dragCurrent&&this.handleMouseUp(e);this.mousedownEvent=e;this.currentTarget=e.getTarget();this.dragCurrent=oDD;Ext.fly(el).setCapture();this.startX=xy[0];this.startY=xy[1];this.offsetX=this.offsetY=0;this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=!1},startDrag:function(x,y){var current=this.dragCurrent;clearTimeout(this.clickTimeout);current&&
(current.b4StartDrag(x,y),current.startDrag(x,y),x=Ext.fly(current.getDragEl()))&&(x.addCls(this.dragCls),x.shim&&x.shim.el&&x.shim.el.addCls(this.dragCls));this.dragThreshMet=!0},handleMouseUp:function(e){this.pointerMoveListeners.destroy();this.isMouseDown=!1;Ext.quickTipsActive&&Ext.tip.QuickTipManager.ddEnable();this.dragCurrent&&(Ext.isIE&&document.releaseCapture&&document.releaseCapture(),clearTimeout(this.clickTimeout),this.dragThreshMet&&this.fireEvents(e,!0),this.stopDrag(e),this.dragThreshMet&&
this.stopEvent(e),this.mousedownEvent=this.currentTarget=null)},stopEvent:function(e){this.stopPropagation&&e.stopPropagation();this.preventDefault&&'touch'===e.pointerType&&e.preventDefault()},stopDrag:function(e){var current=this.dragCurrent,dragEl;if(current){if(this.dragThreshMet){if(dragEl=Ext.fly(current.getDragEl()))dragEl.removeCls(this.dragCls),dragEl.shim&&dragEl.shim.el&&dragEl.shim.el.removeCls(this.dragCls);current.b4EndDrag(e);current.endDrag(e)}this.dragCurrent.onMouseUp(e)}this.dragCurrent=
null;this.dragOvers={}},handleMouseMove:function(e){var current=this.dragCurrent,point=e.getXY(),currentY=point[1];this.offsetX=point[0]-this.startX;this.offsetY=currentY-this.startY;this.currentPoint.setPosition(point);if(!current)return!0;!this.dragThreshMet&&(point=Math.abs(this.offsetX),currentY=Math.abs(this.offsetY),point>this.clickPixelThresh||currentY>this.clickPixelThresh)&&(e.claimGesture(),this.startDrag(this.startX,this.startY));this.dragThreshMet&&(current.b4Drag(e),current.onDrag(e),
current.moveOnly||this.fireEvents(e,!1));this.stopEvent(e);return!0},fireEvents:function(e,isDrop){var isTouch=Ext.supports.Touch,dragCurrent=this.dragCurrent,mousePoint=this.currentPoint,allTargets=[],oldOvers=[],outEvts=[],overEvts=[],dropEvts=[],enterEvts=[],overTargetEl,needsSort,sGroup;if(dragCurrent&&!dragCurrent.isLocked()){var overTarget=!(0>dragCurrent.deltaX||0>dragCurrent.deltaY);if(isTouch||!this.notifyOccluded&&(!Ext.supports.CSSPointerEvents||Ext.isIE10m||Ext.isOpera)&&overTarget)isTouch=
dragCurrent.getDragEl(),overTarget&&(isTouch.style.visibility='hidden'),e=e.chain({target:this.elementFromPoint(e.clientX,e.clientY)||document.documentElement}),overTarget&&(isTouch.style.visibility='visible');for(i in this.dragOvers)overTarget=this.dragOvers[i],delete this.dragOvers[i],this.isTypeOfDD(overTarget)&&!overTarget.destroyed&&(isDrop?outEvts.push(overTarget):this.notifyOccluded?this.isOverTarget(mousePoint,overTarget,this.mode)||outEvts.push(overTarget):e.within(overTarget.getEl())||outEvts.push(overTarget),
oldOvers[i]=!0);for(sGroup in dragCurrent.groups)if('string'===typeof sGroup)for(i in this.ids[sGroup])if(overTarget=this.ids[sGroup][i],this.isTypeOfDD(overTarget)&&(overTargetEl=overTarget.getEl())&&overTarget.isTarget&&!overTarget.isLocked()&&Ext.fly(overTargetEl).isVisible(!0)&&(overTarget!==dragCurrent||!1===dragCurrent.ignoreSelf))if(this.notifyOccluded)-1!==(overTarget.zIndex=this.getZIndex(overTargetEl))&&(needsSort=!0),allTargets.push(overTarget);else if(e.within(overTarget.getEl())){allTargets.push(overTarget);
break}needsSort&&Ext.Array.sort(allTargets,this.byZIndex);var i=0;for(overTargetEl=allTargets.length;i<overTargetEl&&(overTarget=allTargets[i],!this.isOverTarget(mousePoint,overTarget,this.mode)||(isDrop?dropEvts.push(overTarget):(oldOvers[overTarget.id]?overEvts.push(overTarget):enterEvts.push(overTarget),this.dragOvers[overTarget.id]=overTarget),this.notifyOccluded));i++);if(this.mode){if(enterEvts.length)dragCurrent.onDragEnter(e,enterEvts);overEvts.length&&(dragCurrent.b4DragOver(e,overEvts),
dragCurrent.onDragOver(e,overEvts));dropEvts.length&&(dragCurrent.b4DragDrop(e,dropEvts),dragCurrent.onDragDrop(e,dropEvts));outEvts.length&&(dragCurrent.b4DragOut(e,outEvts),dragCurrent.onDragOut(e,outEvts))}else{i=0;for(overTargetEl=enterEvts.length;i<overTargetEl;++i)dragCurrent.onDragEnter(e,enterEvts[i].id);i=0;for(overTargetEl=overEvts.length;i<overTargetEl;++i)dragCurrent.b4DragOver(e,overEvts[i].id),dragCurrent.onDragOver(e,overEvts[i].id);i=0;for(overTargetEl=dropEvts.length;i<overTargetEl;++i)dragCurrent.b4DragDrop(e,
dropEvts[i].id),dragCurrent.onDragDrop(e,dropEvts[i].id);i=0;for(overTargetEl=outEvts.length;i<overTargetEl;++i)dragCurrent.b4DragOut(e,outEvts[i].id),dragCurrent.onDragOut(e,outEvts[i].id)}if(isDrop&&!dropEvts.length)dragCurrent.onInvalidDrop(e)}},elementFromPoint:function(x,y){Ext.rootInheritedState.rtl&&(x=Ext.Element.getViewportWidth()-x);return Ext.Element.fromPoint(x,y,!0)},getZIndex:function(element){var body=document.body,z,zIndex=-1;for(element=Ext.getDom(element);element!==body;)isNaN(z=
Number(Ext.fly(element).getStyle('zIndex')))||(zIndex=z),element=element.parentNode;return zIndex},byZIndex:function(d1,d2){return d1.zIndex<d2.zIndex},getBestMatch:function(dds){var winner=null,len=dds.length,i;if(1===len)winner=dds[0];else for(i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){winner=dd;break}else if(!winner||winner.overlap.getArea()<dd.overlap.getArea())winner=dd}return winner},refreshCache:function(groups){var sGroup,i,loc;for(sGroup in groups)if('string'===typeof sGroup)for(i in this.ids[sGroup])groups=
this.ids[sGroup][i],this.isTypeOfDD(groups)&&((loc=this.getLocation(groups))?this.locationCache[groups.id]=loc:delete this.locationCache[groups.id])},verifyEl:function(el){return Ext.getBody().contains(el)},getLocation:function(oDD){if(!this.isTypeOfDD(oDD))return null;if(oDD.getRegion)return oDD.getRegion();var el=oDD.getEl();try{var pos=Ext.fly(el).getXY()}catch(e){}if(!pos)return null;var x1=pos[0];var x2=x1+el.offsetWidth;pos=pos[1];el=pos+el.offsetHeight;pos-=oDD.padding[0];return new Ext.util.Region(pos,
x2+oDD.padding[1],el+oDD.padding[2],x1-oDD.padding[3])},isOverTarget:function(pt,oTarget,intersect){var loc=this.locationCache[oTarget.id];loc&&this.useCache||(loc=this.getLocation(oTarget),this.locationCache[oTarget.id]=loc);if(!loc)return!1;oTarget.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||!intersect&&!dc.constrainX&&!dc.constrainY)return oTarget.cursorIsOver;oTarget.overlap=null;pt=dc.getTargetCoord(pt.x,pt.y);dc=dc.getDragEl();return(loc=(new Ext.util.Region(pt.y,
pt.x+dc.offsetWidth,pt.y+dc.offsetHeight,pt.x)).intersect(loc))?(oTarget.overlap=loc,intersect?!0:oTarget.cursorIsOver):!1},_onUnload:function(e,me){Ext.dd.DragDropManager.unregAll()},unregAll:function(){var cache=this.elementCache,i;this.dragCurrent&&(this.stopDrag(),this.dragCurrent=null);this.clearingAll=!0;this._execOnAll('unreg',[]);delete this.clearingAll;for(i in cache)delete cache[i];this.elementCache={};this.ids={};this.handleIds={}},elementCache:{},getElWrapper:function(id){var oWrapper=
this.elementCache[id];oWrapper&&oWrapper.el||(oWrapper=this.elementCache[id]=new this.ElementWrapper(Ext.getDom(id)));return oWrapper},getElement:function(id){return Ext.getDom(id)},getCss:function(id){return(id=Ext.getDom(id))?id.style:null},ElementWrapper:function(el){this.id=(this.el=el||null)&&el.id;this.css=this.el&&el.style},getPosX:function(el){return Ext.fly(el).getX()},getPosY:function(el){return Ext.fly(el).getY()},swapNode:function(n1,n2){if(n1.swapNode)n1.swapNode(n2);else{var p=n2.parentNode,
s=n2.nextSibling;s===n1?p.insertBefore(n1,n2):n2===n1.nextSibling?p.insertBefore(n2,n1):(n1.parentNode.replaceChild(n2,n1),p.insertBefore(n1,s))}},getScroll:function(){var doc=window.document,docEl=doc.documentElement;doc=doc.body;var top=0,left=0;docEl&&(docEl.scrollTop||docEl.scrollLeft)?(top=docEl.scrollTop,left=docEl.scrollLeft):doc&&(top=doc.scrollTop,left=doc.scrollLeft);return{top:top,left:left}},getStyle:function(el,styleProp){return Ext.fly(el).getStyle(styleProp)},getScrollTop:function(){return this.getScroll().top},
getScrollLeft:function(){return this.getScroll().left},moveToEl:function(moveEl,targetEl){targetEl=Ext.fly(targetEl).getXY();Ext.fly(moveEl).setXY(targetEl)},numericSort:function(a,b){return a-b},handleWasClicked:function(node,id){if(this.isHandle(id,node.id))return!0;for(node=node.parentNode;node;){if(this.isHandle(id,node.id))return!0;node=node.parentNode}return!1}},0,0,0,0,0,0,[Ext.dd,'DragDropManager',Ext.dd,'DragDropMgr',Ext.dd,'DDM'],function(DragDropManager){Ext.onInternalReady(function(){DragDropManager.addListeners()})});
Ext.cmd.derive('Ext.resizer.Splitter',Ext.Component,{childEls:['collapseEl'],renderTpl:'\x3ctpl if\x3d"collapsible\x3d\x3d\x3dtrue"\x3e;\x3cdiv id\x3d"{id}-collapseEl" data-ref\x3d"collapseEl" role\x3d"presentation" class\x3d";x-;collapse-el ;x-;layout-split-{collapseDir}{childElCls}"\x3e;\x3c/div\x3e;\x3c/tpl\x3e'.split(';'),isSplitter:!0,baseCls:'x-splitter',collapsedClsInternal:'x-splitter-collapsed',canResize:!0,collapsible:null,collapseOnDblClick:!0,defaultSplitMin:40,defaultSplitMax:1E3,collapseTarget:'next',
horizontal:!1,vertical:!1,touchAction:void 0,size:5,tracker:null,ariaRole:'separator',focusable:!0,tabIndex:0,applyTouchAction:function(touchAction,oldTouchAction){void 0===touchAction&&(touchAction=this.vertical?{panX:!1}:{panY:!1});return Ext.Component.prototype.applyTouchAction.call(this,touchAction,oldTouchAction)},getTrackerConfig:function(){return Ext.apply({xclass:'Ext.resizer.SplitterTracker',el:this.el,splitter:this},this.tracker)},beforeRender:function(){var target=this.getCollapseTarget(),
collapsible=this.collapsible;Ext.Component.prototype.beforeRender.call(this);target.collapsed&&this.addCls(this.collapsedClsInternal);this.canResize||this.addCls(this.baseCls+'-noresize');Ext.applyIf(this.renderData,{collapseDir:this.getCollapseDirection(),collapsible:null!==collapsible?collapsible:target.collapsible});this.ariaRenderAttributes=this.ariaRenderAttributes||{};this.ariaRenderAttributes['aria-orientation']=this.orientation;this.protoEl.unselectable()},onRender:function(){var target;Ext.Component.prototype.onRender.apply(this,
arguments);!1!==this.performCollapse&&(this.renderData.collapsible&&this.mon(this.collapseEl,'click',this.toggleTargetCmp,this),this.collapseOnDblClick&&this.mon(this.el,'dblclick',this.toggleTargetCmp,this));if((target=this.getCollapseTarget())&&target.isPanel)target.on({collapse:this.onTargetCollapse,expand:this.onTargetExpand,beforeexpand:this.onBeforeTargetExpand,beforecollapse:this.onBeforeTargetCollapse,scope:this});this.canResize&&(this.tracker=Ext.create(this.getTrackerConfig()),this.relayEvents(this.tracker,
['beforedragstart','dragstart','dragend']));if(target=this.collapseEl)target.lastCollapseDirCls=this.collapseDirProps[this.collapseDirection].cls},getCollapseDirection:function(){var dir=this.collapseDirection;if(!dir){var collapseTarget=this.collapseTarget;collapseTarget.isComponent&&(dir=collapseTarget.collapseDirection);if(!dir){var type=this.ownerCt.layout.type;collapseTarget.isComponent?(dir=this.ownerCt.items,collapseTarget=Number(dir.indexOf(collapseTarget)===dir.indexOf(this)-1)<<1|Number('hbox'===
type)):collapseTarget=Number('prev'===this.collapseTarget)<<1|Number('hbox'===type);dir=['bottom','right','top','left'][collapseTarget]}this.collapseDirection=dir}this.setOrientation('top'===dir||'bottom'===dir?'horizontal':'vertical');return dir},getCollapseTarget:function(){return this.collapseTarget.isComponent?this.collapseTarget:'prev'===this.collapseTarget?this.previousSibling():this.nextSibling()},setCollapseEl:function(display){var el=this.collapseEl;el&&el.setDisplayed(display)},onBeforeTargetExpand:function(target){this.setCollapseEl('none')},
onBeforeTargetCollapse:function(){this.setCollapseEl('none')},onTargetCollapse:function(target){target===this.getCollapseTarget()&&target['vertical'===this.orientation?'collapsedHorizontal':'collapsedVertical']()&&this.el.addCls(this.collapsedClsInternal+' '+(this.collapsedCls||''));this.setCollapseEl('')},onTargetExpand:function(target){this.el.removeCls(this.collapsedClsInternal+' '+(this.collapsedCls||''));this.setCollapseEl('')},collapseDirProps:{top:{cls:'x-layout-split-top'},right:{cls:'x-layout-split-right'},
bottom:{cls:'x-layout-split-bottom'},left:{cls:'x-layout-split-left'}},orientationProps:{horizontal:{opposite:'vertical',fixedAxis:'height',stretchedAxis:'width'},vertical:{opposite:'horizontal',fixedAxis:'width',stretchedAxis:'height'}},applyCollapseDirection:function(){var collapseEl=this.collapseEl,collapseDirProps=this.collapseDirProps[this.collapseDirection],cls;collapseEl&&((cls=collapseEl.lastCollapseDirCls)&&collapseEl.removeCls(cls),collapseEl.addCls(collapseEl.lastCollapseDirCls=collapseDirProps.cls))},
applyOrientation:function(){var orientation=this.orientation,orientationProps=this.orientationProps[orientation],defaultSize=this.size,fixedSizeProp=orientationProps.fixedAxis,stretchSizeProp=orientationProps.stretchedAxis,cls=this.baseCls+'-';this[orientation]=!0;this[orientationProps.opposite]=!1;this.hasOwnProperty(fixedSizeProp)&&'100%'!==this[fixedSizeProp]||(this[fixedSizeProp]=defaultSize);this.hasOwnProperty(stretchSizeProp)&&this[stretchSizeProp]!==defaultSize||(this[stretchSizeProp]='100%');
this.removeCls(cls+orientationProps.opposite);this.addCls(cls+orientation)},setOrientation:function(orientation){this.orientation!==orientation&&(this.orientation=orientation,this.applyOrientation())},updateOrientation:function(){delete this.collapseDirection;this.getCollapseDirection();this.applyCollapseDirection()},toggleTargetCmp:function(e,t){e=this.getCollapseTarget();t=e.placeholder;Ext.isFunction(e.expand)&&Ext.isFunction(e.collapse)&&(t=t&&!t.hidden?!0:!e.hidden)&&(e.collapsed||e.floatedFromCollapse?
e.expand():e.collapseDirection?e.collapse():e.collapse(this.renderData.collapseDir))},setSize:function(){Ext.Component.prototype.setSize.apply(this,arguments);Ext.isIE&&this.el&&this.el.repaint()},doDestroy:function(){Ext.destroy(this.tracker);Ext.Component.prototype.doDestroy.call(this)}},0,['splitter'],['component','box','splitter'],{component:!0,box:!0,splitter:!0},['widget.splitter'],0,[Ext.resizer,'Splitter'],0);
Ext.define('Ext.theme.neptune.resizer.Splitter',{override:'Ext.resizer.Splitter',size:8});
Ext.cmd.derive('Ext.layout.container.Box',Ext.layout.container.Container,{alternateClassName:'Ext.layout.BoxLayout',type:'box',config:{align:'begin',constrainAlign:!1,enableSplitters:!0,overflowHandler:{$value:null,merge:function(newValue,oldValue){'string'===typeof newValue&&(newValue={type:newValue});return Ext.merge(oldValue?Ext.Object.chain(oldValue):{},newValue)}},padding:0,pack:'start',stretchMaxPartner:void 0,vertical:!1,alignRoundingMethod:'round'},itemCls:'x-box-item',targetCls:'x-box-layout-ct',
targetElCls:'x-box-target',innerCls:'x-box-inner',manageMargins:!0,createsInnerCt:!0,childEls:['innerCt','targetEl'],renderTpl:['{%var oc,l\x3dvalues.$comp.layout,oh\x3dl.overflowHandler;if (oh \x26\x26 oh.getPrefixConfig!\x3d\x3dExt.emptyFn) {if(oc\x3doh.getPrefixConfig())dh.generateMarkup(oc, out)}%}\x3cdiv id\x3d"{ownerId}-innerCt" data-ref\x3d"innerCt" role\x3d"presentation" class\x3d"{[l.innerCls]}{[oh ? (" " + oh.getOverflowCls(l.direction)) : ""]}"\x3e\x3cdiv id\x3d"{ownerId}-targetEl" data-ref\x3d"targetEl" class\x3d"{targetElCls}" role\x3d"presentation"\x3e{%this.renderBody(out, values)%}\x3c/div\x3e\x3c/div\x3e{%if (oh \x26\x26 oh.getSuffixConfig!\x3d\x3dExt.emptyFn) {if(oc\x3doh.getSuffixConfig())dh.generateMarkup(oc, out)}%}',
{disableFormats:!0,definitions:'var dh\x3dExt.DomHelper;'}],constructor:function(config){Ext.layout.container.Container.prototype.constructor.call(this,config);this.setVertical(this.vertical);this.flexSortFn=this.flexSort.bind(this);config=typeof this.padding;if('string'===config||'number'===config)this.padding=Ext.util.Format.parseBox(this.padding),this.padding.height=this.padding.top+this.padding.bottom,this.padding.width=this.padding.left+this.padding.right},_beginRe:/^(?:begin|left|top)$/,_centerRe:/^(?:center|middle)$/,
_endRe:/^(?:end|right|bottom)$/,_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(item,ownerSizeModel){var policy=this.sizePolicy,align=this.align,flex=item.flex,key=align,names=this.names,heightName=names.height;names=names.width;var height=item[heightName],percentageRe=this._percentageRe;item=percentageRe.test(item[names]);var isStretch='stretch'===align;align='stretchmax'===align;var constrain=this.constrainAlign;!ownerSizeModel&&(isStretch||flex||item||constrain&&!align)&&
(ownerSizeModel=this.owner.getSizeModel());isStretch?!percentageRe.test(height)&&ownerSizeModel[heightName].shrinkWrap&&(key='stretchmax'):align||(key=percentageRe.test(height)?'stretch':constrain&&!ownerSizeModel[heightName].shrinkWrap?'stretchmax':'');!flex&&!item||ownerSizeModel[names].shrinkWrap||(policy=policy.flex);return policy[key]},flexSort:function(a,b){var maxWidthName=this.names.maxWidth,minWidthName=this.names.minWidth,aTarget=a.target,bTarget=b.target;b=aTarget.flex;a=bTarget.flex;var result=
0;var aMax=aTarget[maxWidthName]||Infinity;maxWidthName=bTarget[maxWidthName]||Infinity;aTarget=aTarget[minWidthName]||0;minWidthName=bTarget[minWidthName]||0;bTarget=isFinite(aTarget)||isFinite(minWidthName);var hasMax=isFinite(aMax)||isFinite(maxWidthName);if(bTarget||hasMax)hasMax&&(result=aMax-maxWidthName),0===result&&bTarget&&(result=minWidthName-aTarget),0===result&&(result=hasMax?a-b:b-a);return result},isItemBoxParent:function(itemContext){return!0},isItemShrinkWrap:function(item){return!0},
roundFlex:function(width){return Math.floor(width)},beginCollapse:function(child){'vertical'===this.direction&&child.collapsedVertical()?(child.collapseMemento.capture(['flex']),delete child.flex):'horizontal'===this.direction&&child.collapsedHorizontal()&&(child.collapseMemento.capture(['flex']),delete child.flex)},beginExpand:function(child){child.collapseMemento.restore(['flex'])},beginLayout:function(ownerContext){var owner=this.owner,smp=owner.stretchMaxPartner,style=this.innerCt.dom.style,overflowHandler=
this.overflowHandler;ownerContext.boxNames=this.names;overflowHandler&&overflowHandler.beginLayout(ownerContext);'string'===typeof smp&&(smp=Ext.getCmp(smp)||owner.query(smp)[0]);ownerContext.stretchMaxPartner=smp&&ownerContext.context.getCmp(smp);Ext.layout.container.Container.prototype.beginLayout.call(this,ownerContext);ownerContext.innerCtContext=ownerContext.getEl('innerCt',this);ownerContext.targetElContext=ownerContext.getEl('targetEl',this);ownerContext.ownerScrollable=owner.getScrollable();
style.width=style.height=''},beginLayoutCycle:function(ownerContext,firstCycle){var state=ownerContext.state,scrollable=ownerContext.ownerScrollable,align=this.align,names=ownerContext.boxNames,pack=this.pack,centerRe=this._centerRe,overflowHandler=this.overflowHandler,canScroll=ownerContext.state.canScroll;overflowHandler&&overflowHandler.beginLayoutCycle(ownerContext,firstCycle);Ext.layout.container.Container.prototype.beginLayoutCycle.call(this,ownerContext,firstCycle);ownerContext.parallelSizeModel=
firstCycle=ownerContext[names.widthModel];ownerContext.perpendicularSizeModel=overflowHandler=ownerContext[names.heightModel];ownerContext.boxOptions={align:align={stretch:'stretch'===align,stretchmax:'stretchmax'===align,center:centerRe.test(align),bottom:this._endRe.test(align)},pack:pack={center:centerRe.test(pack),end:'end'===pack}};scrollable&&(canScroll||(state.canScroll={parallel:!firstCycle.shrinkWrap&&scrollable[names.getX](),perpendicular:!overflowHandler.shrinkWrap&&scrollable[names.getY]()}),
state.actualScroll||(state.actualScroll={parallel:!1,perpendicular:!1}));align.stretch&&overflowHandler.shrinkWrap&&(align.stretchmax=!0,align.stretch=!1);align.nostretch=!(align.stretch||align.stretchmax);firstCycle.shrinkWrap&&(pack.center=pack.end=!1);this.cacheFlexes(ownerContext);this.targetEl.setWidth(2E4)},cacheFlexes:function(ownerContext){for(var names=ownerContext.boxNames,widthModelName=names.widthModel,heightModelName=names.heightModel,nostretch=ownerContext.boxOptions.align.nostretch,
totalFlex=0,childItems=ownerContext.childItems,i=childItems.length,flexedItems=[],minWidth=0,smallestHeight=0,smallestWidth=0,minWidthName=names.minWidth,minHeightName=names.minHeight,percentageRe=this._percentageRe,percentageWidths=0,percentageHeights=0,child,childContext,flex,heightModel;i--;){childContext=childItems[i];child=childContext.target;heightModel=childContext[widthModelName];if(heightModel.calculated)if(childContext.flex=flex=child.flex)totalFlex+=flex,flexedItems.push(childContext),
minWidth+=child[minWidthName]||0;else if(flex=percentageRe.exec(child[names.width]))childContext.percentageParallel=parseFloat(flex[1])/100,++percentageWidths;flex=heightModel.configured?child[names.width]:child[minWidthName]||0;smallestWidth+=flex;heightModel=childContext[heightModelName];nostretch&&heightModel.calculated&&(flex=percentageRe.exec(child[names.height]),childContext.percentagePerpendicular=parseFloat(flex[1])/100,++percentageHeights);child=heightModel.configured?child[names.height]:
child[minHeightName]||0;child>smallestHeight&&(smallestHeight=child)}ownerContext.flexedItems=flexedItems;ownerContext.flexedMinWidth=minWidth;ownerContext.smallestWidth=smallestWidth;ownerContext.smallestHeight=smallestHeight;ownerContext.totalFlex=totalFlex;ownerContext.percentageWidths=percentageWidths;ownerContext.percentageHeights=percentageHeights;Ext.Array.sort(flexedItems,this.flexSortFn)},calculate:function(ownerContext){var names=ownerContext.boxNames,state=ownerContext.state,actualScroll=
state.actualScroll,needsScroll=state.needsScroll,canScroll=state.canScroll,plan=state.boxPlan||(state.boxPlan={}),overflowHandler=this.overflowHandler;plan.targetSize=this.getContainerSize(ownerContext);canScroll&&!needsScroll&&(state.needsScroll=needsScroll={parallel:canScroll.parallel&&plan.targetSize[names.width]<ownerContext.smallestWidth,perpendicular:canScroll.perpendicular&&plan.targetSize[names.height]<ownerContext.smallestHeight});state.parallelDone||(state.parallelDone=this.calculateParallel(ownerContext,
names,plan));state.perpendicularDone||(state.perpendicularDone=this.calculatePerpendicular(ownerContext,names,plan));state.parallelDone&&state.perpendicularDone?!canScroll||state.scrollPass||needsScroll.parallel===actualScroll.parallel&&needsScroll.perpendicular===actualScroll.perpendicular?(this.publishInnerCtSize(ownerContext),this.done&&ownerContext.boxOptions.align.stretchmax&&!state.stretchMaxDone&&(this.calculateStretchMax(ownerContext,names,plan),state.stretchMaxDone=!0),overflowHandler&&overflowHandler.calculate(ownerContext)):
(ownerContext.invalidate({state:{scrollPass:!0,canScroll:canScroll,needsScroll:actualScroll}}),this.done=!1):this.done=!1},calculateParallel:function(ownerContext,names,plan){var widthShrinkWrap=ownerContext.parallelSizeModel.shrinkWrap,widthName=names.width,childItems=ownerContext.childItems,beforeXName=names.beforeX,afterXName=names.afterX,setWidthName=names.setWidth,childItemsLength=childItems.length,flexedItems=ownerContext.flexedItems,flexedItemsLength=flexedItems.length,pack=ownerContext.boxOptions.pack,
padding=this.padding,targetSize=plan.targetSize,containerWidth=targetSize[widthName],state=ownerContext.state,needsScroll=state.needsScroll,canScroll=state.canScroll,totalMargin=0,left=padding[beforeXName],nonFlexWidth=left+padding[afterXName],scrollbarSize=Ext.getScrollbarSize();padding=scrollbarSize[names.width];var scrollbarHeight=scrollbarSize[names.height];if(!widthShrinkWrap&&!targetSize[names.gotWidth])return!1;for(targetSize=0;targetSize<childItemsLength;++targetSize){scrollbarSize=childItems[targetSize];
var childMargins=scrollbarSize.marginInfo||scrollbarSize.getMarginInfo();totalMargin+=childMargins[widthName];if(!scrollbarSize[names.widthModel].calculated&&(childMargins=scrollbarSize.getProp(widthName),nonFlexWidth+=childMargins,isNaN(nonFlexWidth)))return!1}nonFlexWidth+=totalMargin;if(ownerContext.percentageWidths){totalMargin=containerWidth-totalMargin;if(isNaN(totalMargin))return!1;for(targetSize=0;targetSize<childItemsLength;++targetSize)scrollbarSize=childItems[targetSize],scrollbarSize.percentageParallel&&
(childMargins=Math.ceil(totalMargin*scrollbarSize.percentageParallel),childMargins=scrollbarSize[setWidthName](childMargins),nonFlexWidth+=childMargins)}widthShrinkWrap?(targetSize=0,plan.tooNarrow=!1):(targetSize=containerWidth-nonFlexWidth,needsScroll&&needsScroll.perpendicular&&(targetSize-=scrollbarHeight),plan.tooNarrow=targetSize<ownerContext.flexedMinWidth,plan.tooNarrow&&canScroll&&canScroll.parallel&&(state.actualScroll.parallel=!0));plan=nonFlexWidth;state=targetSize;canScroll=ownerContext.totalFlex;
for(targetSize=0;targetSize<flexedItemsLength;targetSize++)scrollbarSize=flexedItems[targetSize],containerWidth=scrollbarSize.flex,nonFlexWidth=this.roundFlex(containerWidth/canScroll*state),nonFlexWidth=scrollbarSize[setWidthName](nonFlexWidth),plan+=nonFlexWidth,state=Math.max(0,state-nonFlexWidth),canScroll-=containerWidth;pack.center?(left+=state/2,0>left&&(left=0)):pack.end&&(left+=state);for(targetSize=0;targetSize<childItemsLength;++targetSize)scrollbarSize=childItems[targetSize],childMargins=
scrollbarSize.marginInfo,left+=childMargins[beforeXName],scrollbarSize.setProp(names.x,left),left+=childMargins[afterXName]+scrollbarSize.props[widthName];plan+=ownerContext.targetContext.getPaddingInfo()[widthName];ownerContext.state.contentWidth=plan;needsScroll&&needsScroll.perpendicular&&(widthShrinkWrap&&(plan+=padding),ownerContext[names.hasOverflowY]=!0,ownerContext.target.componentLayout[names.setWidthInDom]=!0,ownerContext[names.invalidateScrollY]=Ext.isIE8);ownerContext[names.setContentWidth](plan);
return!0},calculatePerpendicular:function(ownerContext,names,plan){var state=ownerContext.state,needsScroll=state.needsScroll,canScroll=state.canScroll,heightShrinkWrap=ownerContext.perpendicularSizeModel.shrinkWrap,targetSize=plan.targetSize,childItems=ownerContext.childItems,childItemsLength=childItems.length,mmax=Math.max,heightName=names.height,setHeightName=names.setHeight,beforeYName=names.beforeY,topPositionName=names.y,padding=this.padding,top=padding[beforeYName],availHeight=targetSize[heightName]-
top-padding[names.afterY],align=ownerContext.boxOptions.align;padding=align.stretch;var isStretchMax=align.stretchmax,isCenter=align.center;align=align.bottom;var constrain=this.constrainAlign,maxHeight=0,hasPercentageSizes=0,onBeforeInvalidateChild=this.onBeforeConstrainInvalidateChild,onAfterInvalidateChild=this.onAfterConstrainInvalidateChild,scrollbarHeight=Ext.getScrollbarSize().height,childHeight;if(!heightShrinkWrap&&!targetSize[names.gotHeight]||(padding||(isCenter||align)&&!heightShrinkWrap)&&
isNaN(availHeight))return!1;if(needsScroll&&needsScroll.parallel)if(heightShrinkWrap)var shrinkWrapParallelOverflow=!0;else availHeight-=scrollbarHeight,plan.targetSize[heightName]-=scrollbarHeight;if(padding){var height=availHeight;maxHeight=mmax(height,ownerContext.smallestHeight)}else for(needsScroll=0;needsScroll<childItemsLength;needsScroll++){var childContext=childItems[needsScroll];var childMargins=(childContext.marginInfo||childContext.getMarginInfo())[heightName];if(childHeight=childContext.percentagePerpendicular)if(++hasPercentageSizes,
heightShrinkWrap)continue;else childHeight=childHeight*availHeight-childMargins,childHeight=childContext[setHeightName](childHeight);else childHeight=childContext.getProp(heightName);!heightShrinkWrap&&constrain&&childContext[names.heightModel].shrinkWrap&&childHeight>availHeight&&(childContext.invalidate({before:onBeforeInvalidateChild,after:onAfterInvalidateChild,layout:this,childHeight:availHeight,names:names}),ownerContext.state.parallelDone=!1);if(isNaN(maxHeight=mmax(maxHeight,childHeight+childMargins,
childContext.target[names.minHeight]||0)))return!1}shrinkWrapParallelOverflow&&(maxHeight+=scrollbarHeight,ownerContext[names.hasOverflowX]=!0,ownerContext.target.componentLayout[names.setHeightInDom]=!0,ownerContext[names.invalidateScrollX]=Ext.isIE8);if(needsScroll=ownerContext.stretchMaxPartner)if(ownerContext.setProp('maxChildHeight',maxHeight),(childContext=needsScroll.childItems)&&childContext.length&&(maxHeight=mmax(maxHeight,needsScroll.getProp('maxChildHeight')),isNaN(maxHeight)))return!1;
ownerContext[names.setContentHeight](maxHeight+this.padding[heightName]+ownerContext.targetContext.getPaddingInfo()[heightName]);shrinkWrapParallelOverflow&&(maxHeight-=scrollbarHeight);maxHeight>targetSize[heightName]&&canScroll&&canScroll.perpendicular&&(state.actualScroll.perpendicular=!0);plan.maxSize=maxHeight;if(isStretchMax)height=maxHeight;else if(isCenter||align||hasPercentageSizes)height=constrain?heightShrinkWrap?maxHeight:availHeight:heightShrinkWrap?maxHeight:mmax(availHeight,maxHeight),
height-=ownerContext.innerCtContext.getBorderInfo()[heightName];for(needsScroll=0;needsScroll<childItemsLength;needsScroll++){childContext=childItems[needsScroll];childMargins=childContext.marginInfo||childContext.getMarginInfo();ownerContext=top+childMargins[beforeYName];if(padding)childContext[setHeightName](height-childMargins[heightName]);else childHeight=childContext.percentagePerpendicular,heightShrinkWrap&&childHeight&&(childMargins=childContext.marginInfo||childContext.getMarginInfo(),childHeight=
childHeight*height-childMargins[heightName],childContext[setHeightName](childHeight)),isCenter?(names=height-childContext.props[heightName],0<names&&(ownerContext=top+Math[this.alignRoundingMethod](names/2))):align&&(ownerContext=mmax(0,height-ownerContext-childContext.props[heightName]));childContext.setProp(topPositionName,ownerContext)}return!0},onBeforeConstrainInvalidateChild:function(childContext,options){options=options.names.heightModel;childContext[options].constrainedMin||(childContext[options]=
Ext.layout.SizeModel.calculated)},onAfterConstrainInvalidateChild:function(childContext,options){var names=options.names;childContext.setProp(names.beforeY,0);if(childContext[names.heightModel].calculated)childContext[names.setHeight](options.childHeight)},calculateStretchMax:function(ownerContext,names,plan){var heightName=names.height,widthName=names.width;ownerContext=ownerContext.childItems;var length=ownerContext.length;plan=plan.maxSize;var onBeforeStretchMaxInvalidateChild=this.onBeforeStretchMaxInvalidateChild,
onAfterStretchMaxInvalidateChild=this.onAfterStretchMaxInvalidateChild,i;for(i=0;i<length;++i){var childContext=ownerContext[i];var props=childContext.props;var childHeight=plan-childContext.getMarginInfo()[heightName];(childHeight!==props[heightName]||childContext[names.heightModel].constrained)&&childContext.invalidate({before:onBeforeStretchMaxInvalidateChild,after:onAfterStretchMaxInvalidateChild,layout:this,childWidth:props[widthName],childHeight:childHeight,childX:props.x,childY:props.y,names:names})}},
onBeforeStretchMaxInvalidateChild:function(childContext,options){options=options.names.heightModel;childContext[options].constrainedMax||(childContext[options]=Ext.layout.SizeModel.calculated)},onAfterStretchMaxInvalidateChild:function(childContext,options){var names=options.names,childHeight=options.childHeight,childWidth=options.childWidth;childContext.setProp('x',options.childX);childContext.setProp('y',options.childY);if(childContext[names.heightModel].calculated)childContext[names.setHeight](childHeight);
if(childContext[names.widthModel].calculated)childContext[names.setWidth](childWidth)},completeLayout:function(ownerContext){var invalidateScrollX=ownerContext.invalidateScrollX,invalidateScrollY=ownerContext.invalidateScrollY,overflowHandler=this.overflowHandler;overflowHandler&&overflowHandler.completeLayout(ownerContext);if(invalidateScrollX||invalidateScrollY){overflowHandler=this.getTarget();ownerContext=overflowHandler.dom;var styles=ownerContext.style;if(invalidateScrollX){var overflowX=overflowHandler.getStyle('overflowX');
'auto'===overflowX?(overflowX=styles.overflowX,styles.overflowX='scroll'):invalidateScrollX=!1}if(invalidateScrollY){var overflowY=overflowHandler.getStyle('overflowY');'auto'===overflowY?(overflowY=styles.overflowY,styles.overflowY='scroll'):invalidateScrollY=!1}if(invalidateScrollX||invalidateScrollY)ownerContext.scrollWidth,invalidateScrollX&&(styles.overflowX=overflowX),invalidateScrollY&&(styles.overflowY=overflowY)}},finishedLayout:function(ownerContext){var overflowHandler=this.overflowHandler;
overflowHandler&&overflowHandler.finishedLayout(ownerContext);Ext.layout.container.Container.prototype.finishedLayout.call(this,ownerContext)},getLayoutItems:function(){var items=Ext.layout.container.Container.prototype.getLayoutItems.call(this),n=items.length,i,item;for(i=0;i<n;++i)if(!(item=items[i]).isSplitter){var splitter=item.splitter;if(item.hidden)splitter&&!splitter.hidden&&(splitter.hidden=!0,splitter.el&&splitter.el.hide());else{var splitBefore=splitter?'next'===splitter.collapseTarget:
!1;var hide=null;lastVisibleItem&&splitAfter?(splitAfter.hidden&&(splitAfter.hidden=!1,splitAfter.el&&splitAfter.el.show()),splitBefore&&(hide=!0)):splitBefore&&(hide=!lastVisibleItem);null!==hide&&splitter.hidden!==hide&&(splitter.hidden=hide,splitter.el&&splitter.el.setVisible(!hide));var splitAfter=!splitBefore&&splitter;var lastVisibleItem=item}}lastVisibleItem&&splitAfter&&!splitAfter.hidden&&(splitAfter.hidden=!0,splitAfter.el&&splitAfter.el.hide());return items},insertSplitter:function(item,
index,hidden,splitterCfg){hidden={xtype:'splitter',id:item.id+'-splitter',hidden:hidden,splitterFor:item,synthetic:!0};index+='prev'===splitterCfg.collapseTarget?1:0;hidden[this.names.height]='100%';splitterCfg&&Ext.apply(hidden,splitterCfg);item.splitter=this.owner.add(index,hidden)},publishInnerCtSize:function(ownerContext,widthOffset){widthOffset=widthOffset||0;var state=ownerContext.state,names=ownerContext.boxNames,heightName=names.height,widthName=names.width,align=ownerContext.boxOptions.align,
padding=this.padding,plan=state.boxPlan,targetSize=plan.targetSize,height=plan.maxSize,needsScroll=state.needsScroll,innerCtContext=ownerContext.innerCtContext;ownerContext.parallelSizeModel.shrinkWrap||plan.tooNarrow&&state.canScroll?state=state.contentWidth-ownerContext.targetContext.getPaddingInfo()[widthName]:(state=targetSize[widthName],needsScroll&&needsScroll.perpendicular&&(state-=Ext.getScrollbarSize()[widthName]));state-=widthOffset;this.owner.tooNarrow=plan.tooNarrow;align.stretch?widthName=
height:(widthName=plan.maxSize+padding[names.beforeY]+padding[names.afterY]+innerCtContext.getBorderInfo()[heightName],ownerContext.perpendicularSizeModel.shrinkWrap||!align.center&&!align.bottom||(widthName=Math.max(targetSize[heightName],widthName)));innerCtContext[names.setWidth](state);innerCtContext[names.setHeight](widthName);ownerContext.targetElContext.setWidth(ownerContext.innerCtContext.props.width-(this.vertical?0:widthOffset||0));isNaN(state+widthName)&&(this.done=!1)},onAdd:function(item,
index){var split=this.enableSplitters&&!item.isButton&&item.split;Ext.layout.container.Container.prototype.onAdd.call(this,item,index);split&&(split=!0===split?{collapseTarget:'next'}:Ext.isString(split)?{collapseTarget:'before'===split?'next':'prev'}:Ext.apply({collapseTarget:'before'===split.side?'next':'prev'},split),this.insertSplitter(item,index,!!item.hidden,split))},onRemove:function(comp,isDestroying){var names=this.names,owner=this.owner,splitter=comp.splitter,overflowHandler=this.overflowHandler;
Ext.layout.container.Container.prototype.onRemove.call(this,comp,isDestroying);splitter&&owner.contains(splitter)&&(owner.doRemove(splitter,!0),comp.splitter=null);if(overflowHandler)overflowHandler.onRemove(comp);comp.layoutMarginCap===this.id&&delete comp.layoutMarginCap;!owner.destroying&&!isDestroying&&comp.rendered&&(comp=comp.getEl())&&(comp.setStyle(names.beforeY,''),comp.setStyle(names.beforeX,''),comp.setStyle('margin',''))},applyOverflowHandler:function(overflowHandler,oldOverflowHandler){'string'===
typeof overflowHandler&&(overflowHandler={type:overflowHandler});if(oldOverflowHandler&&oldOverflowHandler.type===overflowHandler.type)return delete overflowHandler.type,oldOverflowHandler.setConfig(overflowHandler),oldOverflowHandler;overflowHandler.layout=this;return Ext.Factory.boxOverflow(overflowHandler)},getRenderTarget:function(){return this.targetEl},getElementTarget:function(){return this.innerCt},destroy:function(){Ext.destroy(this.innerCt,this.overflowHandler);this.flexSortFn=this.innerCt=
null;Ext.layout.container.Container.prototype.destroy.call(this)},getRenderData:function(){var data=Ext.layout.container.Container.prototype.getRenderData.call(this);data.targetElCls=this.targetElCls;return data},updateVertical:function(vertical){var overflowHandler=this.overflowHandler,owner=this.owner,props=this._props;Ext.apply(this,vertical?props.vbox:props.hbox);overflowHandler&&owner&&owner.rendered&&overflowHandler.setVertical(vertical)},_props:{hbox:{direction:'horizontal',oppositeDirection:'vertical',
horizontal:!0,vertical:!1,names:{beforeX:'left',beforeScrollX:'left',leftCap:'Left',afterX:'right',width:'width',contentWidth:'contentWidth',minWidth:'minWidth',maxWidth:'maxWidth',widthCap:'Width',widthModel:'widthModel',widthIndex:0,x:'x',getX:'getX',setX:'setX',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',getY:'getY',setY:'setY',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',getScrollLeft:'getScrollLeft',
setScrollLeft:'setScrollLeft',scrollTo:'scrollTo'},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}}},vbox:{direction:'vertical',oppositeDirection:'horizontal',horizontal:!1,
vertical:!0,names:{beforeX:'top',beforeScrollX:'top',leftCap:'Top',afterX:'bottom',width:'height',contentWidth:'contentHeight',minWidth:'minHeight',maxWidth:'maxHeight',widthCap:'Height',widthModel:'heightModel',widthIndex:1,x:'y',getX:'getY',setX:'setY',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',getY:'getX',setY:'setX',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',getScrollLeft:'getScrollTop',setScrollLeft:'setScrollTop',
scrollTo:'scrollTo'},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}}}}},1,0,0,0,['layout.box'],0,[Ext.layout.container,'Box',Ext.layout,'BoxLayout'],0);
Ext.cmd.derive('Ext.layout.container.HBox',Ext.layout.container.Box,{alternateClassName:'Ext.layout.HBoxLayout',type:'hbox',vertical:!1},0,0,0,0,['layout.hbox'],0,[Ext.layout.container,'HBox',Ext.layout,'HBoxLayout'],0);Ext.cmd.derive('Ext.layout.container.VBox',Ext.layout.container.Box,{alternateClassName:'Ext.layout.VBoxLayout',type:'vbox',vertical:!0},0,0,0,0,['layout.vbox'],0,[Ext.layout.container,'VBox',Ext.layout,'VBoxLayout'],0);
Ext.cmd.derive('Ext.toolbar.Toolbar',Ext.container.Container,{alternateClassName:'Ext.Toolbar',isToolbar:!0,baseCls:'x-toolbar',ariaRole:'toolbar',defaultType:'button',layout:void 0,vertical:void 0,enableOverflow:!1,overflowHandler:null,defaultButtonUI:'default-toolbar',defaultFieldUI:'default',defaultFooterButtonUI:'default',defaultFooterFieldUI:'default',trackMenus:!0,itemCls:'x-toolbar-item',statics:{shortcuts:{'-':'tbseparator',' ':'tbspacer'},shortcutsHV:{0:{'-\x3e':{xtype:'tbfill',height:0}},
1:{'-\x3e':{xtype:'tbfill',width:0}}}},initComponent:function(){var layout=this.layout,vertical=this.vertical;void 0===vertical&&(this.vertical=vertical='right'===this.dock||'left'===this.dock);this.layout=layout=Ext.applyIf(Ext.isString(layout)?{type:layout}:layout||{},{type:vertical?'vbox':'hbox',align:vertical?'stretchmax':'middle'});this.overflowHandler?layout.overflowHandler=this.overflowHandler:this.enableOverflow&&(layout.overflowHandler='menu');vertical&&this.addClsWithUI('vertical');'footer'===
this.ui&&(this.ignoreBorderManagement=!0);Ext.container.Container.prototype.initComponent.call(this)},getRefItems:function(deep){var items=Ext.container.Container.prototype.getRefItems.apply(this,arguments),layout=this.layout;deep&&(this.enableOverflow||'menu'===this.overflowHandler)&&(layout=layout.overflowHandler)&&layout.menu&&(items=items.concat(layout.menu.getRefItems(deep)));return items},lookupComponent:function(c){var args=arguments;'string'===typeof c&&'@'!==c[0]&&(args=Ext.toolbar.Toolbar,
args=args.shortcutsHV[this.vertical?1:0][c]||args.shortcuts[c],c='string'===typeof args?{xtype:args}:args?Ext.apply({},args):{xtype:'tbtext',text:c},this.applyDefaults(c),args=[c]);return Ext.container.Container.prototype.lookupComponent.apply(this,args)},onBeforeAdd:function(component){var isFooter='footer'===this.ui,defaultButtonUI=isFooter?this.defaultFooterButtonUI:this.defaultButtonUI;component.isSegmentedButton?'default'!==component.getDefaultUI()||component.config.hasOwnProperty('defaultUI')||
component.setDefaultUI(defaultButtonUI):'default'!==component.ui||component.hasOwnProperty('ui')||(component.isButton?component.ui=defaultButtonUI:component.isFormField&&(component.ui=isFooter?this.defaultFooterFieldUI:this.defaultFieldUI));component instanceof Ext.toolbar.Separator&&component.setUI(this.vertical?'vertical':'horizontal');Ext.container.Container.prototype.onBeforeAdd.apply(this,arguments)},onAdd:function(component){component.needArrowKeys&&this.enableFocusableContainer&&(this.enableFocusableContainer=
!1,this.ariaRole='group');Ext.container.Container.prototype.onAdd.apply(this,arguments);this.trackMenu(component)},onRemove:function(c){Ext.container.Container.prototype.onRemove.apply(this,arguments);this.trackMenu(c,!0)},privates:{applyDefaults:function(c){Ext.isString(c)||(c=Ext.container.Container.prototype.applyDefaults.apply(this,arguments));return c},trackMenu:function(item,remove){if(this.trackMenus&&item.menu)item[remove?'un':'on']({mouseover:this.onButtonOver,menushow:this.onButtonMenuShow,
menuhide:this.onButtonMenuHide,scope:this})},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(btn,e){var activeMenuBtn=this.activeMenuBtn;activeMenuBtn&&activeMenuBtn!==btn&&(activeMenuBtn.hideMenu(),btn.focus(),btn.showMenu(e),this.activeMenuBtn=btn)},onButtonMenuShow:function(btn){this.activeMenuBtn=btn},onButtonMenuHide:function(btn){this.activeMenuBtn=null}}},0,['toolbar'],['component','box','container','toolbar'],{component:!0,box:!0,container:!0,toolbar:!0},
['widget.toolbar'],[[Ext.util.FocusableContainer.prototype.mixinId||Ext.util.FocusableContainer.$className,Ext.util.FocusableContainer]],[Ext.toolbar,'Toolbar',Ext,'Toolbar'],0);Ext.define('Ext.theme.neptune.toolbar.Toolbar',{override:'Ext.toolbar.Toolbar',usePlainButtons:!1,border:!1});
Ext.cmd.derive('Ext.dd.DragDrop',Ext.Base,{constructor:function(id,sGroup,config){id&&this.init(id,sGroup,config)},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:!1,lock:function(){this.locked=!0},moveOnly:!1,unlock:function(){this.locked=!1},isTarget:!0,padding:null,_domRef:null,__ygDragDrop:!0,constrainX:!1,constrainY:!1,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:!1,xTicks:null,
yTicks:null,primaryButtonOnly:!0,available:!1,hasOuterHandles:!1,triggerEvent:'mousedown',b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},
onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(constrainTo,pad,inContent){Ext.isNumber(pad)&&(pad={left:pad,right:pad,top:pad,bottom:pad});pad=pad||this.defaultPadding;inContent=Ext.get(this.getEl()).getBox();constrainTo=Ext.get(constrainTo);var JSCompiler_object_inline_width_66=constrainTo.getScroll();var JSCompiler_object_inline_height_67=constrainTo.dom;if(JSCompiler_object_inline_height_67===document.body){constrainTo=JSCompiler_object_inline_width_66.left;
var JSCompiler_object_inline_y_65=JSCompiler_object_inline_width_66.top;JSCompiler_object_inline_width_66=Ext.Element.getViewportWidth();JSCompiler_object_inline_height_67=Ext.Element.getViewportHeight()}else JSCompiler_object_inline_width_66=constrainTo.getXY(),constrainTo=JSCompiler_object_inline_width_66[0],JSCompiler_object_inline_y_65=JSCompiler_object_inline_width_66[1],JSCompiler_object_inline_width_66=JSCompiler_object_inline_height_67.clientWidth,JSCompiler_object_inline_height_67=JSCompiler_object_inline_height_67.clientHeight;
JSCompiler_object_inline_y_65=inContent.y-JSCompiler_object_inline_y_65;constrainTo=inContent.x-constrainTo;this.resetConstraints();this.setXConstraint(constrainTo-(pad.left||0),JSCompiler_object_inline_width_66-constrainTo-inContent.width-(pad.right||0),this.xTickSize);this.setYConstraint(JSCompiler_object_inline_y_65-(pad.top||0),JSCompiler_object_inline_height_67-JSCompiler_object_inline_y_65-inContent.height-(pad.bottom||0),this.yTickSize)},getEl:function(){this._domRef||(this._domRef=Ext.getDom(this.id));
return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(id,sGroup,config){this.el=this.el||Ext.get(id);this.initTarget(id,sGroup,config);Ext.get(this.id).on(this.triggerEvent,this.handleMouseDown,this);Ext.supports.Touch&&'longpress'===this.triggerEvent&&Ext.get(this.id).swallowEvent('contextmenu',!0)},initTarget:function(id,sGroup,config){this.config=config||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};'string'!==typeof id&&(id=Ext.id(id));this.id=id;
this.addToGroup(sGroup?sGroup:'default');this.handleElId=id;this.setDragElId(id);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=!1!==this.config.isTarget;this.maintainOffset=this.config.maintainOffset;this.primaryButtonOnly=!1!==this.config.primaryButtonOnly},handleOnAvailable:function(){this.available=!0;this.resetConstraints();this.onAvailable()},
setPadding:function(iTop,iRight,iBot,iLeft){this.padding=iRight||0===iRight?iBot||0===iBot?[iTop,iRight,iBot,iLeft]:[iTop,iRight,iTop,iRight]:[iTop,iTop,iTop,iTop]},setInitPosition:function(diffX,diffY){var el=this.getEl();this.DDMInstance.verifyEl(el)&&(diffX=diffX||0,diffY=diffY||0,el=Ext.fly(el).getXY(),this.initPageX=el[0]-diffX,this.initPageY=el[1]-diffY,this.lastPageX=el[0],this.lastPageY=el[1],this.setStartPosition(el))},setStartPosition:function(pos){pos=pos||Ext.fly(this.getEl()).getXY();
this.deltaSetXY=null;this.startPageX=pos[0];this.startPageY=pos[1]},addToGroup:function(sGroup){this.groups[sGroup]=!0;this.DDMInstance.regDragDrop(this,sGroup)},removeFromGroup:function(sGroup){this.groups[sGroup]&&delete this.groups[sGroup];this.DDMInstance.removeDDFromGroup(this,sGroup)},setDragElId:function(id){this.dragElId=id},setHandleElId:function(id){'string'!==typeof id&&(id=Ext.id(id));this.handleElId=id;this.DDMInstance.regHandle(this.id,id)},setOuterHandleElId:function(id){'string'!==
typeof id&&(id=Ext.id(id));Ext.get(id).on(this.triggerEvent,this.handleMouseDown,this);this.setHandleElId(id);this.hasOuterHandles=!0},unreg:function(){var el;this._domRef&&(el=Ext.fly(this.id))&&el.un(this.triggerEvent,this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this,this.autoGroup)},destroy:function(){this.unreg();this.callParent()},isLocked:function(){return this.DDMInstance.isLocked()||this.locked},handleMouseDown:function(e,oDD){this.primaryButtonOnly&&e.button||this.isLocked()||
(this.DDMInstance.refreshCache(this.groups),(this.hasOuterHandles||this.DDMInstance.isOverTarget(e.getPoint(),this))&&this.clickValidator(e)&&(this.setStartPosition(),this.b4MouseDown(e),this.onMouseDown(e),this.DDMInstance.handleMouseDown(e,this),this.DDMInstance.stopEvent(e)))},clickValidator:function(e){e=e.getTarget();return this.isValidHandleChild(e)&&(this.id===this.handleElId||this.DDMInstance.handleWasClicked(e,this.id))},addInvalidHandleType:function(tagName){tagName=tagName.toUpperCase();
this.invalidHandleTypes[tagName]=tagName},addInvalidHandleId:function(id){'string'!==typeof id&&(id=Ext.id(id));this.invalidHandleIds[id]=id},addInvalidHandleClass:function(cssClass){this.invalidHandleClasses.push(cssClass)},removeInvalidHandleType:function(tagName){tagName=tagName.toUpperCase();delete this.invalidHandleTypes[tagName]},removeInvalidHandleId:function(id){'string'!==typeof id&&(id=Ext.id(id));delete this.invalidHandleIds[id]},removeInvalidHandleClass:function(cssClass){var invalidHandleClasses=
this.invalidHandleClasses,len=invalidHandleClasses.length,i;for(i=0;i<len;++i)invalidHandleClasses[i]===cssClass&&delete invalidHandleClasses[i]},isValidHandleChild:function(node){var valid=!0,len;try{var nodeName=node.nodeName.toUpperCase()}catch(e){nodeName=node.nodeName}valid=(valid=valid&&!this.invalidHandleTypes[nodeName])&&!this.invalidHandleIds[node.id];nodeName=0;for(len=this.invalidHandleClasses.length;valid&&nodeName<len;++nodeName)valid=!Ext.fly(node).hasCls(this.invalidHandleClasses[nodeName]);
return valid},setXTicks:function(iStartX,iTickSize){this.xTicks=[];this.xTickSize=iTickSize;iStartX={};var i;for(i=this.initPageX;i>=this.minX;i-=iTickSize)iStartX[i]||(this.xTicks[this.xTicks.length]=i,iStartX[i]=!0);for(i=this.initPageX;i<=this.maxX;i+=iTickSize)iStartX[i]||(this.xTicks[this.xTicks.length]=i,iStartX[i]=!0);Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(iStartY,iTickSize){this.yTicks=[];this.yTickSize=iTickSize;iStartY={};var i;for(i=this.initPageY;i>=
this.minY;i-=iTickSize)iStartY[i]||(this.yTicks[this.yTicks.length]=i,iStartY[i]=!0);for(i=this.initPageY;i<=this.maxY;i+=iTickSize)iStartY[i]||(this.yTicks[this.yTicks.length]=i,iStartY[i]=!0);Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(iLeft,iRight,iTickSize){this.leftConstraint=iLeft;this.rightConstraint=iRight;this.minX=this.initPageX-iLeft;this.maxX=this.initPageX+iRight;iTickSize&&this.setXTicks(this.initPageX,iTickSize);this.constrainX=!0},clearConstraints:function(){this.constrainY=
this.constrainX=!1;this.clearTicks()},clearTicks:function(){this.yTicks=this.xTicks=null;this.yTickSize=this.xTickSize=0},setYConstraint:function(iUp,iDown,iTickSize){this.topConstraint=iUp;this.bottomConstraint=iDown;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+iDown;iTickSize&&this.setYTicks(this.initPageY,iTickSize);this.constrainY=!0},resetConstraints:function(){this.initPageX||0===this.initPageX?this.setInitPosition(this.maintainOffset?this.lastPageX-this.initPageX:0,this.maintainOffset?
this.lastPageY-this.initPageY:0):this.setInitPosition();this.constrainX&&this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);this.constrainY&&this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)},getTick:function(val,tickArray){if(tickArray){if(tickArray[0]>=val)return tickArray[0];var len;var i=0;for(len=tickArray.length;i<len;++i){var next=i+1;if(tickArray[next]&&tickArray[next]>=val)return len=val-tickArray[i],val=tickArray[next]-val,val>len?tickArray[i]:
tickArray[next]}return tickArray[tickArray.length-1]}return val},toString:function(){return'DragDrop '+this.id}},3,0,0,0,0,0,[Ext.dd,'DragDrop'],0);
Ext.cmd.derive('Ext.dd.DD',Ext.dd.DragDrop,{constructor:function(id,sGroup,config){id&&this.init(id,sGroup,config)},scroll:!0,autoOffset:function(iPageX,iPageY){this.setDelta(iPageX-this.startPageX,iPageY-this.startPageY)},setDelta:function(iDeltaX,iDeltaY){this.deltaX=iDeltaX;this.deltaY=iDeltaY},setDragElPos:function(iPageX,iPageY){var el=this.getDragEl();this.alignElWithMouse(el,iPageX,iPageY)},alignElWithMouse:function(el,iPageX,iPageY){iPageX=this.getTargetCoord(iPageX,iPageY);iPageY=el.dom?
el:Ext.fly(el,'_dd');var elSize=iPageY.getSize(),EL=Ext.Element;this.deltaSetXY?(EL=this.cachedViewportSize,this.setLocalXY(iPageY,Math.max(0,Math.min(iPageX.x+this.deltaSetXY[0],EL.width-elSize.width)),Math.max(0,Math.min(iPageX.y+this.deltaSetXY[1],EL.height-elSize.height)))):(EL=this.cachedViewportSize={width:EL.getDocumentWidth(),height:EL.getDocumentHeight()},elSize=[Math.max(0,Math.min(iPageX.x,EL.width-elSize.width)),Math.max(0,Math.min(iPageX.y,EL.height-elSize.height))],iPageY.setXY(elSize),
elSize=this.getLocalX(iPageY),iPageY=iPageY.getLocalY(),this.deltaSetXY=[elSize-iPageX.x,iPageY-iPageX.y]);this.cachePosition(iPageX.x,iPageX.y);this.autoScroll(iPageX.x,iPageX.y,el.offsetHeight,el.offsetWidth);return iPageX},cachePosition:function(iPageX,iPageY){iPageX?(this.lastPageX=iPageX,this.lastPageY=iPageY):(iPageX=Ext.fly(this.getEl()).getXY(),this.lastPageX=iPageX[0],this.lastPageY=iPageX[1])},autoScroll:function(x,y,h,w){if(this.scroll){var clientH=Ext.Element.getViewportHeight(),clientW=
Ext.Element.getViewportWidth(),st=this.DDMInstance.getScrollTop(),sl=this.DDMInstance.getScrollLeft();w+=x;var toBot=clientH+st-y-this.deltaY,toRight=clientW+sl-x-this.deltaX,scrAmt=document.all?80:30;h+y>clientH&&40>toBot&&window.scrollTo(sl,st+scrAmt);y<st&&0<st&&40>y-st&&window.scrollTo(sl,st-scrAmt);w>clientW&&40>toRight&&window.scrollTo(sl+scrAmt,st);x<sl&&0<sl&&40>x-sl&&window.scrollTo(sl-scrAmt,st)}},getTargetCoord:function(iPageX,iPageY){iPageX-=this.deltaX;iPageY-=this.deltaY;this.constrainX&&
(iPageX<this.minX&&(iPageX=this.minX),iPageX>this.maxX&&(iPageX=this.maxX));this.constrainY&&(iPageY<this.minY&&(iPageY=this.minY),iPageY>this.maxY&&(iPageY=this.maxY));iPageX=this.getTick(iPageX,this.xTicks);iPageY=this.getTick(iPageY,this.yTicks);return{x:iPageX,y:iPageY}},applyConfig:function(){Ext.dd.DragDrop.prototype.applyConfig.call(this);this.scroll=!1!==this.config.scroll},b4MouseDown:function(e){e=e.getXY();this.autoOffset(e[0],e[1])},b4Drag:function(e){e=e.getXY();this.setDragElPos(e[0],
e[1])},toString:function(){return'DD '+this.id},getLocalX:function(el){return el.getLocalX()},setLocalXY:function(el,x,y){el.setLocalXY(x,y)}},3,0,0,0,0,0,[Ext.dd,'DD'],0);
Ext.cmd.derive('Ext.dd.DDProxy',Ext.dd.DD,{statics:{dragElId:'ygddfdiv'},constructor:function(id,sGroup,config){id&&(this.init(id,sGroup,config),this.initFrame())},resizeFrame:!0,centerFrame:!1,createFrame:function(){var self=this,body=document.body;if(body&&body.firstChild){var div=this.getDragEl();if(!div){div=document.createElement('div');div.id=this.dragElId;div.setAttribute('role','presentation');var s=div.style;s.position='absolute';s.visibility='hidden';s.cursor='move';s.border='2px solid #aaa';
s.zIndex=999;body.insertBefore(div,body.firstChild)}}else Ext.defer(function(){self.createFrame()},50)},initFrame:function(){this.createFrame()},applyConfig:function(){Ext.dd.DD.prototype.applyConfig.call(this);this.resizeFrame=!1!==this.config.resizeFrame;this.centerFrame=this.config.centerFrame;this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(iPageX,iPageY){var dragEl=this.getDragEl(),s=dragEl.style;this._resizeProxy();this.centerFrame&&this.setDelta(Math.round(parseInt(s.width,
10)/2),Math.round(parseInt(s.height,10)/2));this.setDragElPos(iPageX,iPageY);Ext.fly(dragEl).show()},_resizeProxy:function(){if(this.resizeFrame){var el=this.getEl();Ext.fly(this.getDragEl()).setSize(el.offsetWidth,el.offsetHeight)}},b4MouseDown:function(e){var xy=e.getXY();e=xy[0];xy=xy[1];this.autoOffset(e,xy);this.setDragElPos(e,xy)},b4StartDrag:function(x,y){this.showFrame(x,y)},b4EndDrag:function(e){Ext.fly(this.getDragEl()).hide()},endDrag:function(e){e=this.getEl();var del=this.getDragEl();
del.style.visibility='';this.beforeMove();e.style.visibility='hidden';Ext.dd.DDM.moveToEl(e,del);del.style.visibility='hidden';e.style.visibility='';this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return'DDProxy '+this.id}},3,0,0,0,0,0,[Ext.dd,'DDProxy'],0);
Ext.cmd.derive('Ext.dd.StatusProxy',Ext.Component,{animRepair:!1,childEls:['ghost'],renderTpl:['\x3cdiv class\x3d"x-dd-drop-icon" role\x3d"presentation"\x3e\x3c/div\x3e\x3cdiv id\x3d"{id}-ghost" data-ref\x3d"ghost" class\x3d"x-dd-drag-ghost" role\x3d"presentation"\x3e\x3c/div\x3e'],repairCls:'x-dd-drag-repair',ariaRole:'presentation',skipLayout:!0,alignOnScroll:!1,constructor:function(config){config=config||{};Ext.apply(this,{hideMode:'visibility',hidden:!0,floating:!0,id:this.id||Ext.id(),cls:'x-dd-drag-proxy '+
this.dropNotAllowed,shadow:config.shadow||!1,renderTo:Ext.getDetachedBody()});Ext.Component.prototype.constructor.apply(this,arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:'x-dd-drop-ok',dropNotAllowed:'x-dd-drop-nodrop',setStatus:function(cssClass){cssClass=cssClass||this.dropNotAllowed;this.dropStatus!==cssClass&&(this.el.replaceCls(this.dropStatus,cssClass),this.dropStatus=cssClass)},reset:function(clearGhost){this.el.replaceCls('x-dd-drag-proxy '+this.dropAllowed,'x-dd-drag-proxy '+
this.dropNotAllowed);this.dropStatus=this.dropNotAllowed;clearGhost&&this.ghost.setHtml('')},update:function(html){'string'===typeof html?this.ghost.setHtml(html):(this.ghost.setHtml(''),html.style.margin='0',this.ghost.dom.appendChild(html));(html=this.ghost.dom.firstChild)&&Ext.fly(html).setStyle('float','none')},getGhost:function(){return this.ghost},hide:function(clear){Ext.Component.prototype.hide.call(this);clear&&this.reset(!0)},stop:function(){this.anim&&this.anim.isAnimated&&this.anim.isAnimated()&&
this.anim.stop()},sync:function(){this.el.syncUnderlays()},repair:function(xy,callback,scope){this.callback=callback;this.scope=scope;xy&&!1!==this.animRepair?(this.el.addCls(this.repairCls),this.el.setUnderlaysVisible(!1),this.anim=this.el.animate({duration:this.repairDuration||500,easing:'ease-out',to:{x:xy[0],y:xy[1]},stopAnimation:!0,callback:this.afterRepair,scope:this})):this.afterRepair()},afterRepair:function(){this.hide(!0);this.el.removeCls(this.repairCls);'function'===typeof this.callback&&
this.callback.call(this.scope||this);delete this.callback;delete this.scope}},1,0,['component','box'],{component:!0,box:!0},0,0,[Ext.dd,'StatusProxy'],0);
Ext.cmd.derive('Ext.dd.DragSource',Ext.dd.DDProxy,{dropAllowed:'x-dd-drop-ok',dropNotAllowed:'x-dd-drop-nodrop',animRepair:!0,repairHighlightColor:'c3daf9',constructor:function(el,config){this.el=Ext.get(el);this.dragData||(this.dragData={});Ext.apply(this,config);this.proxy||(this.proxy=new Ext.dd.StatusProxy({id:this.el.id+'-drag-status-proxy',animRepair:this.animRepair}));Ext.dd.DDProxy.prototype.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:!1,
isTarget:!1,scroll:!0===this.scroll});this.dragging=!1},getDragData:function(e){return this.dragData},onDragEnter:function(e,id){var target=Ext.dd.DragDropManager.getDDById(id);this.cachedTarget=target;if(!1!==this.beforeDragEnter(target,e,id)){if(target.isNotifyTarget){var status=target.notifyEnter(this,e,this.dragData);this.proxy.setStatus(status)}else this.proxy.setStatus(this.dropAllowed);this.afterDragEnter&&this.afterDragEnter(target,e,id)}},beforeDragEnter:function(target,e,id){return!0},onDragOver:function(e,
id){var target=this.cachedTarget||Ext.dd.DragDropManager.getDDById(id);if(!1!==this.beforeDragOver(target,e,id)){if(target.isNotifyTarget){var status=target.notifyOver(this,e,this.dragData);this.proxy.setStatus(status)}this.afterDragOver&&this.afterDragOver(target,e,id)}},beforeDragOver:function(target,e,id){return!0},onDragOut:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropManager.getDDById(id);!1!==this.beforeDragOut(target,e,id)&&(target.isNotifyTarget&&target.notifyOut(this,e,this.dragData),
this.proxy.reset(),this.afterDragOut&&this.afterDragOut(target,e,id));this.cachedTarget=null},beforeDragOut:function(target,e,id){return!0},onDragDrop:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropManager.getDDById(id);if(!1!==this.beforeDragDrop(target,e,id)){if(target.isNotifyTarget)if(!1!==target.notifyDrop(this,e,this.dragData))this.onValidDrop(target,e,id);else this.onInvalidDrop(target,e,id);else this.onValidDrop(target,e,id);this.afterDragDrop&&this.afterDragDrop(target,e,id)}delete this.cachedTarget},
beforeDragDrop:function(target,e,id){return!0},onValidDrop:function(target,e,id){this.hideProxy();this.afterValidDrop&&this.afterValidDrop(target,e,id)},getRepairXY:function(e,data){return this.el.getXY()},onInvalidDrop:function(target,e,id){e||(e=target,target=null,id=e.getTarget().id);!1!==this.beforeInvalidDrop(target,e,id)&&(this.cachedTarget&&(this.cachedTarget.isNotifyTarget&&this.cachedTarget.notifyOut(this,e,this.dragData),this.cacheTarget=null),this.proxy.repair(this.getRepairXY(e,this.dragData),
this.afterRepair,this),this.afterInvalidDrop&&this.afterInvalidDrop(e,id))},afterRepair:function(){Ext.enableFx&&this.el.highlight(this.repairHighlightColor);this.dragging=!1},beforeInvalidDrop:function(target,e,id){return!0},handleMouseDown:function(e){if(!this.dragging){var data=this.getDragData(e);data&&!1!==this.onBeforeDrag(data,e)&&(this.dragData=data,this.proxy.stop(),Ext.dd.DDProxy.prototype.handleMouseDown.apply(this,arguments))}},onBeforeDrag:function(data,e){return!0},onStartDrag:Ext.emptyFn,
alignElWithMouse:function(){this.proxy.ensureAttachedToBody(!0);return Ext.dd.DDProxy.prototype.alignElWithMouse.apply(this,arguments)},startDrag:function(x,y){this.proxy.reset();this.proxy.hidden=!1;this.dragging=!0;this.proxy.update('');this.onInitDrag(x,y);this.proxy.show()},onInitDrag:function(x,y){var clone=this.el.dom.cloneNode(!0);clone.id=Ext.id();this.proxy.update(clone);this.onStartDrag(x,y);return!0},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(!0);
this.dragging=!1},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(e){},endDrag:function(e){this.onEndDrag(this.dragData,e)},onEndDrag:function(data,e){},autoOffset:function(x,y){this.setDelta(-12,-20)},destroy:function(){Ext.destroy(this.proxy);Ext.dd.DDProxy.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.dd,'DragSource'],0);
Ext.cmd.derive('Ext.panel.Proxy',Ext.Base,{alternateClassName:'Ext.dd.PanelProxy',moveOnDrag:!0,constructor:function(panel,config){this.panel=panel;this.id=this.panel.id+'-ddproxy';Ext.apply(this,config)},insertProxy:!0,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(){this.ghost&&(this.proxy&&(this.proxy.destroy(),delete this.proxy),
this.panel.unghost(null,this.moveOnDrag),delete this.ghost)},show:function(){if(!this.ghost){var panelSize=this.panel.getSize();this.panel.el.setVisibilityMode(Ext.Element.DISPLAY);this.ghost=this.panel.ghost();this.insertProxy&&(this.proxy=this.panel.el.insertSibling({role:'presentation',cls:'x-panel-dd-spacer'}),this.proxy.setSize(panelSize))}},repair:function(xy,callback,scope){this.hide();Ext.callback(callback,scope||this)},moveProxy:function(parentNode,before){this.proxy&&parentNode.insertBefore(this.proxy.dom,
before)}},1,0,0,0,0,0,[Ext.panel,'Proxy',Ext.dd,'PanelProxy'],0);
Ext.cmd.derive('Ext.panel.DD',Ext.dd.DragSource,{constructor:function(panel,cfg){this.panel=panel;this.dragData={panel:panel};this.panelProxy=new Ext.panel.Proxy(panel,cfg);this.proxy=this.panelProxy.proxy;Ext.dd.DragSource.prototype.constructor.call(this,panel.el,cfg);this.setupEl(panel)},setupEl:function(panel){var header=panel.header,el=panel.body;header&&(this.setHandleElId(header.id),el=header.el);if(el)el.setStyle('cursor','move'),this.scroll=!1;else panel.on('boxready',this.setupEl,this,{single:!0})},
showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(x,y){this.panelProxy.show()},b4MouseDown:function(e){e=e.getXY();this.autoOffset(e[0],e[1])},onInitDrag:function(x,y){this.onStartDrag(x,y);return!0},createFrame:Ext.emptyFn,getDragEl:function(e){if(e=this.panelProxy.ghost)return e.el.dom},endDrag:function(e){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(x,y){x-=this.startPageX;y-=this.startPageY;this.setDelta(x,y)},onInvalidDrop:function(target,e,id){!1!==this.beforeInvalidDrop(target,
e,id)&&(this.cachedTarget&&(this.cachedTarget.isNotifyTarget&&this.cachedTarget.notifyOut(this,e,this.dragData),this.cacheTarget=null),this.afterInvalidDrop&&this.afterInvalidDrop(e,id))}},1,0,0,0,0,0,[Ext.panel,'DD'],0);
Ext.cmd.derive('Ext.layout.component.Dock',Ext.layout.component.Component,{alternateClassName:'Ext.layout.component.AbstractDock',type:'dock',horzAxisProps:{name:'horz',oppositeName:'vert',dockBegin:'left',dockEnd:'right',horizontal:!0,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:!1,marginBegin:'margin-top',
maxSize:'maxHeight',minSize:'minHeight',pos:'y',setSize:'setHeight',shrinkWrapDock:'shrinkWrapDockHeight',size:'height',sizeModel:'heightModel'},initializedBorders:-1,horizontalCollapsePolicy:{width:!0,x:!0},verticalCollapsePolicy:{height:!0,y:!0},finishRender:function(){Ext.layout.component.Component.prototype.finishRender.call(this);var target=this.getRenderTarget();var items=this.getDockedItems();this.finishRenderItems(target,items)},isItemBoxParent:function(itemContext){return!0},isItemShrinkWrap:function(item){return!0},
noBorderClasses:['x-docked-noborder-top','x-docked-noborder-right','x-docked-noborder-bottom','x-docked-noborder-left'],noBorderClassesSides:{top:'x-docked-noborder-top',right:'x-docked-noborder-right',bottom:'x-docked-noborder-bottom',left:'x-docked-noborder-left'},borderWidthProps:{top:'border-top-width',right:'border-right-width',bottom:'border-bottom-width',left:'border-left-width'},_itemCls:'x-docked',handleItemBorders:function(){var owner=this.owner,lastItems=this.lastDockedItems,oldBorders=
this.borders;var docked=owner.dockedItems.generation;var noBorderClassesSides=this.noBorderClassesSides,borderWidthProps=this.borderWidthProps,ln,side;var borders=this.collapsed;if(!(this.initializedBorders===docked||owner.border&&!owner.manageBodyBorders||owner.collapsed&&'mini'===owner.collapseMode)){this.initializedBorders=docked;this.collapsed=!1;this.lastDockedItems=docked=this.getLayoutItems();this.collapsed=borders;borders={top:[],right:[],bottom:[],left:[]};var i=0;for(ln=docked.length;i<
ln;i++){var item=docked[i];var dock=item.dock;item.ignoreBorderManagement||(borders[dock].satisfied||(borders[dock].push(item),borders[dock].satisfied=!0),borders.top.satisfied||'bottom'===dock||borders.top.push(item),borders.right.satisfied||'left'===dock||borders.right.push(item),borders.bottom.satisfied||'top'===dock||borders.bottom.push(item),borders.left.satisfied||'right'===dock||borders.left.push(item))}if(lastItems)for(i=0,ln=lastItems.length;i<ln;i++)item=lastItems[i],item.destroyed||item.ignoreBorderManagement||
owner.manageBodyBorders||item.removeCls(this.noBorderClasses);if(oldBorders)for(side in oldBorders)owner.manageBodyBorders&&oldBorders[side].satisfied&&owner.setBodyStyle(borderWidthProps[side],'');for(side in borders)if(ln=borders[side].length,owner.manageBodyBorders)borders[side].satisfied&&owner.setBodyStyle(borderWidthProps[side],'1px');else{for(i=0;i<ln;i++)borders[side][i].addCls(noBorderClassesSides[side]);!borders[side].satisfied&&!owner.bodyBorder||!1===owner.bodyBorder?owner.addBodyCls(noBorderClassesSides[side]):
owner.removeBodyCls(noBorderClassesSides[side])}this.borders=borders}},beforeLayoutCycle:function(ownerContext){var owner=this.owner,shrinkWrap=this.sizeModels.shrinkWrap,shrinkWrapDock=owner.shrinkWrapDock;if(owner.collapsed)if(owner.collapsedVertical()){var collapsedVert=!0;ownerContext.measureDimensions=1}else{var collapsedHorz=!0;ownerContext.measureDimensions=2}ownerContext.collapsedVert=collapsedVert;ownerContext.collapsedHorz=collapsedHorz;collapsedVert?ownerContext.heightModel=shrinkWrap:
collapsedHorz&&(ownerContext.widthModel=shrinkWrap);shrinkWrapDock=!0===shrinkWrapDock?3:shrinkWrapDock||0;ownerContext.shrinkWrapDockHeight=shrinkWrapDock&1&&ownerContext.heightModel.shrinkWrap;ownerContext.shrinkWrapDockWidth=shrinkWrapDock&2&&ownerContext.widthModel.shrinkWrap},beginLayout:function(ownerContext){var owner=this.owner,docked=this.getLayoutItems(),layoutContext=ownerContext.context,dockedItemCount=docked.length,lastCollapsedState=this.lastCollapsedState;Ext.layout.component.Component.prototype.beginLayout.apply(this,
arguments);var itemContext=owner.getCollapsed();itemContext!==lastCollapsedState&&void 0!==lastCollapsedState&&(this.owner.collapsed?(ownerContext.isCollapsingOrExpanding=1,owner.addClsWithUI(owner.collapsedCls)):(ownerContext.isCollapsingOrExpanding=2,owner.removeClsWithUI(owner.collapsedCls),ownerContext.lastCollapsedState=this.lastCollapsedState));this.lastCollapsedState=itemContext;ownerContext.dockedItems=owner=[];for(lastCollapsedState=0;lastCollapsedState<dockedItemCount;lastCollapsedState++){var item=
docked[lastCollapsedState];if(item.rendered){var dock=item.dock;itemContext=layoutContext.getCmp(item);itemContext.dockedAt={x:0,y:0};itemContext.offsets=item=Ext.Element.parseBox(item.offsets||0);itemContext.horizontal='top'===dock||'bottom'===dock;item.width=item.left+item.right;item.height=item.top+item.bottom;owner.push(itemContext)}}ownerContext.bodyContext=ownerContext.getEl('body')},beginLayoutCycle:function(ownerContext){var docked=ownerContext.dockedItems,len=docked.length,owner=this.owner,
frameBody=owner.frameBody,lastHeightModel=this.lastHeightModel;Ext.layout.component.Component.prototype.beginLayoutCycle.apply(this,arguments);this.owner.manageHeight?this.lastBodyDisplay&&(owner.body.dom.style.display=this.lastBodyDisplay=''):('inline-block'!==this.lastBodyDisplay&&(owner.body.dom.style.display=this.lastBodyDisplay='inline-block'),lastHeightModel&&lastHeightModel.shrinkWrap&&!ownerContext.heightModel.shrinkWrap&&(owner.body.dom.style.marginBottom=''));ownerContext.widthModel.auto&&
(ownerContext.widthModel.shrinkWrap&&owner.el.setWidth(null),owner.body.setWidth(null),frameBody&&frameBody.setWidth(null));ownerContext.heightModel.auto&&(owner.body.setHeight(null),frameBody&&frameBody.setHeight(null));ownerContext.collapsedVert?ownerContext.setContentHeight(0):ownerContext.collapsedHorz&&ownerContext.setContentWidth(0);for(owner=0;owner<len;owner++)frameBody=docked[owner].target,lastHeightModel=frameBody.dock,'right'===lastHeightModel&&frameBody.setLocalX(0)},calculate:function(ownerContext){var measure=
this.measureAutoDimensions(ownerContext,ownerContext.measureDimensions),state=ownerContext.state,horzDone=state.horzDone,vertDone=state.vertDone,bodyContext=ownerContext.bodyContext,backward;ownerContext.borderInfo||ownerContext.getBorderInfo();ownerContext.paddingInfo||ownerContext.getPaddingInfo();ownerContext.frameInfo||ownerContext.getFrameInfo();bodyContext.borderInfo||bodyContext.getBorderInfo();bodyContext.paddingInfo||bodyContext.getPaddingInfo();ownerContext.frameBorder||((bodyContext=ownerContext.framing)?
(ownerContext.frameBorder=bodyContext.border,ownerContext.framePadding=bodyContext.padding):(ownerContext.frameBorder=ownerContext.borderInfo,ownerContext.framePadding=ownerContext.paddingInfo));bodyContext=!horzDone&&this.createAxis(ownerContext,measure.contentWidth,ownerContext.widthModel,this.horzAxisProps,ownerContext.collapsedHorz);measure=!vertDone&&this.createAxis(ownerContext,measure.contentHeight,ownerContext.heightModel,this.vertAxisProps,ownerContext.collapsedVert);var forward=0;for(backward=
ownerContext.dockedItems.length;backward--;++forward)bodyContext&&this.dockChild(ownerContext,bodyContext,backward,forward),measure&&this.dockChild(ownerContext,measure,backward,forward);bodyContext&&this.finishAxis(ownerContext,bodyContext)&&(state.horzDone=horzDone=bodyContext);measure&&this.finishAxis(ownerContext,measure)&&(state.vertDone=vertDone=measure);horzDone&&vertDone&&this.finishConstraints(ownerContext,horzDone,vertDone)?this.finishPositions(ownerContext,horzDone,vertDone):this.done=
!1},createAxis:function(ownerContext,contentSize,sizeModel,axisProps,collapsedAxis){var begin=0,owner=this.owner,maxSize=owner[axisProps.maxSize];owner=owner[axisProps.minSize]||0;var dockBegin=axisProps.dockBegin,dockEnd=axisProps.dockEnd,posProp=axisProps.pos,sizeProp=axisProps.size,hasMaxSize=null!=maxSize;if(sizeModel.shrinkWrap)if(collapsedAxis)contentSize=0;else{var bodyContext=ownerContext.bodyContext;contentSize+=bodyContext.borderInfo[sizeProp]}else contentSize=ownerContext.frameBorder,bodyContext=
ownerContext.framePadding,begin=contentSize[dockBegin]+bodyContext[dockBegin],contentSize=ownerContext.getProp(sizeProp)-(contentSize[dockEnd]+bodyContext[dockEnd]);return{shrinkWrap:sizeModel.shrinkWrap,sizeModel:sizeModel,initialBegin:begin,begin:begin,end:contentSize,collapsed:collapsedAxis,horizontal:axisProps.horizontal,ignoreFrameBegin:null,ignoreFrameEnd:null,initialSize:contentSize-begin,maxChildSize:0,hasMinMaxConstraints:(owner||hasMaxSize)&&sizeModel.shrinkWrap,minSize:owner,maxSize:hasMaxSize?
maxSize:1E9,bodyPosProp:this.owner.manageHeight?posProp:axisProps.marginBegin,dockBegin:dockBegin,dockEnd:dockEnd,posProp:posProp,sizeProp:sizeProp,setSize:axisProps.setSize,shrinkWrapDock:ownerContext[axisProps.shrinkWrapDock],sizeModelName:axisProps.sizeModel,dockedPixelsEnd:0}},dockChild:function(ownerContext,axis,backward,forward){backward=ownerContext.dockedItems[axis.shrinkWrap?backward:forward];forward=backward.target;var dock=forward.dock,sizeProp=axis.sizeProp;forward.ignoreParentFrame&&
ownerContext.isCollapsingOrExpanding&&backward.clearMarginCache();backward.marginInfo||backward.getMarginInfo();dock===axis.dockBegin?ownerContext=axis.shrinkWrap?this.dockOutwardBegin(ownerContext,backward,forward,axis):this.dockInwardBegin(ownerContext,backward,forward,axis):dock===axis.dockEnd?ownerContext=axis.shrinkWrap?this.dockOutwardEnd(ownerContext,backward,forward,axis):this.dockInwardEnd(ownerContext,backward,forward,axis):axis.shrinkWrapDock?(ownerContext=backward.getProp(sizeProp)+backward.marginInfo[sizeProp],
axis.maxChildSize=Math.max(axis.maxChildSize,ownerContext),ownerContext=0):ownerContext=this.dockStretch(ownerContext,backward,forward,axis);backward.dockedAt[axis.posProp]=ownerContext},dockInwardBegin:function(ownerContext,itemContext,item,axis){var pos=axis.begin,sizeProp=axis.sizeProp,ignoreParentFrame=item.ignoreParentFrame;if(ignoreParentFrame){axis.ignoreFrameBegin=itemContext;var dock=item.dock;var delta=ownerContext.frameBorder[dock];pos-=delta+ownerContext.framePadding[dock]}item.overlay||
(ownerContext=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],axis.begin+=ownerContext,ignoreParentFrame&&(axis.begin-=delta));return pos},dockInwardEnd:function(ownerContext,itemContext,item,axis){var sizeProp=axis.sizeProp;sizeProp=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp];sizeProp=axis.end-sizeProp;item.overlay||(axis.end=sizeProp);item.ignoreParentFrame&&(axis.ignoreFrameEnd=itemContext,itemContext=ownerContext.frameBorder[item.dock],sizeProp+=itemContext+ownerContext.framePadding[item.dock],
axis.end+=itemContext);return sizeProp},dockOutwardBegin:function(ownerContext,itemContext,item,axis){ownerContext=axis.begin;var sizeProp=axis.sizeProp;axis.collapsed?axis.ignoreFrameBegin=axis.ignoreFrameEnd=itemContext:item.ignoreParentFrame&&(axis.ignoreFrameBegin=itemContext);item.overlay||(itemContext=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],ownerContext-=itemContext,axis.begin=ownerContext);return ownerContext},dockOutwardEnd:function(ownerContext,itemContext,item,axis){ownerContext=
axis.end;var sizeProp=axis.sizeProp;sizeProp=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp];axis.collapsed?axis.ignoreFrameBegin=axis.ignoreFrameEnd=itemContext:item.ignoreParentFrame&&(axis.ignoreFrameEnd=itemContext);item.overlay||(axis.end=ownerContext+sizeProp,axis.dockedPixelsEnd+=sizeProp);return ownerContext},dockStretch:function(ownerContext,itemContext,item,axis){var dock=item.dock,sizeProp=axis.sizeProp,horizontal='top'===dock||'bottom'===dock;dock=ownerContext.frameBorder;
var offsets=itemContext.offsets,padding=ownerContext.framePadding,startProp=horizontal?'left':'top';ownerContext=axis.begin+offsets[startProp];!1!==item.stretch&&(horizontal=axis.end-ownerContext-offsets[horizontal?'right':'bottom'],item.ignoreParentFrame&&(ownerContext-=padding[startProp]+dock[startProp],horizontal+=padding[sizeProp]+dock[sizeProp]),item=itemContext.marginInfo,horizontal-=item[sizeProp],itemContext[axis.setSize](horizontal));return ownerContext},finishAxis:function(ownerContext,
axis){if(isNaN(axis.maxChildSize))return!1;var axisBegin=axis.begin,size=axis.end-axisBegin,collapsed=axis.collapsed,setSizeMethod=axis.setSize,beginName=axis.dockBegin,endName=axis.dockEnd,padding=ownerContext.framePadding,border=ownerContext.frameBorder,borderBegin=border[beginName],framing=ownerContext.framing,framingBegin=framing&&framing[beginName];beginName=collapsed?0:padding[beginName];var sizeProp=axis.sizeProp,ignoreFrameBegin=axis.ignoreFrameBegin,ignoreFrameEnd=axis.ignoreFrameEnd;ownerContext=
ownerContext.bodyContext;var extraPaddingBegin=Math.max(borderBegin+beginName-framingBegin,0),dirty;if(axis.shrinkWrap){var bodySize=axis.initialSize;framing?(framing=-axisBegin+borderBegin+beginName,axisBegin=framing-framingBegin-extraPaddingBegin):(axisBegin=-axisBegin,framing=axisBegin+beginName);collapsed||(size+=padding[sizeProp]);ignoreFrameBegin?(framing-=borderBegin,axisBegin-=borderBegin,ignoreFrameBegin.dockedAt[axis.posProp]-=beginName):size+=borderBegin;collapsed||(ignoreFrameEnd?ignoreFrameEnd.dockedAt[axis.posProp]+=
padding[endName]:size+=border[endName]);axis.size=size;axis.horizontal||this.owner.manageHeight||(dirty=!1)}else framing?(framing=0,axisBegin=axisBegin-framingBegin-extraPaddingBegin):(framing=-borderBegin,axisBegin=axisBegin-beginName-borderBegin),bodySize=size;axis.delta=framing;ownerContext[setSizeMethod](bodySize,dirty);ownerContext.setProp(axis.bodyPosProp,axisBegin);return!isNaN(size)},beforeInvalidateShrinkWrapDock:function(itemContext,options){options=options.axis.sizeModelName;itemContext[options].constrainedMin||
(itemContext[options]=Ext.layout.SizeModel.calculated)},afterInvalidateShrinkWrapDock:function(itemContext,options){var axis=options.axis,me=options.layout;itemContext[axis.sizeModelName].calculated&&(options=me.dockStretch(options.ownerContext,itemContext,itemContext.target,axis),itemContext.setProp(axis.posProp,axis.delta+options))},finishConstraints:function(ownerContext,horz,vert){var sizeModels=this.sizeModels,publishWidth=horz.shrinkWrap,publishHeight=vert.shrinkWrap,owner=this.owner;if(publishWidth){var size=
horz.size;var minSize=horz.collapsed?0:horz.minSize;var maxSize=horz.maxSize;var maxChildSize=horz.maxChildSize;var desiredSize=Math.max(size,maxChildSize);if(desiredSize>maxSize){var widthModel=sizeModels.constrainedMax;var width=maxSize}else desiredSize<minSize?(widthModel=sizeModels.constrainedMin,width=minSize):size<maxChildSize?(widthModel=sizeModels.constrainedDock,owner.dockConstrainedWidth=width=maxChildSize):width=size}if(publishHeight)if(size=vert.size,minSize=vert.collapsed?0:vert.minSize,
maxSize=vert.maxSize,maxChildSize=vert.maxChildSize,desiredSize=Math.max(size,maxChildSize+size-vert.initialSize),desiredSize>maxSize){var heightModel=sizeModels.constrainedMax;var height=maxSize}else if(desiredSize<minSize)heightModel=sizeModels.constrainedMin,height=minSize;else if(size<maxChildSize)heightModel=sizeModels.constrainedDock,owner.dockConstrainedHeight=height=maxChildSize;else{if(!ownerContext.collapsedVert&&!owner.manageHeight){var dirty=!1;ownerContext.bodyContext.setProp('margin-bottom',
vert.dockedPixelsEnd)}height=size}if(widthModel||heightModel){if(widthModel&&heightModel&&widthModel.constrainedMax&&heightModel.constrainedByMin)return ownerContext.invalidate({widthModel:widthModel}),!1;if(!ownerContext.widthModel.calculatedFromShrinkWrap&&!ownerContext.heightModel.calculatedFromShrinkWrap)return ownerContext.invalidate({widthModel:widthModel,heightModel:heightModel}),!1}else this.invalidateAxes(ownerContext,horz,vert);publishWidth&&(ownerContext.setWidth(width),widthModel&&(ownerContext.widthModel=
widthModel));publishHeight&&(ownerContext.setHeight(height,dirty),heightModel&&(ownerContext.heightModel=heightModel));return!0},invalidateAxes:function(ownerContext,horz,vert){var before=this.beforeInvalidateShrinkWrapDock,after=this.afterInvalidateShrinkWrapDock,horzSize=horz.end-horz.begin,vertSize=vert.initialSize,invalidateHorz=horz.shrinkWrapDock&&horz.maxChildSize<=horzSize,invalidateVert=vert.shrinkWrapDock&&vert.maxChildSize<=vertSize,len;if(invalidateHorz||invalidateVert){invalidateVert&&
(vert.begin=vert.initialBegin,vert.end=vert.begin+vert.initialSize);var dockedItems=ownerContext.dockedItems;var i=0;for(len=dockedItems.length;i<len;++i){var itemContext=dockedItems[i];var isHorz=itemContext.horizontal;var axis=null;if(invalidateHorz&&isHorz){var sizeProp=horz.sizeProp;var itemSize=horzSize;axis=horz}else invalidateVert&&!isHorz&&(sizeProp=vert.sizeProp,itemSize=vertSize,axis=vert);axis&&(itemSize-=itemContext.getMarginInfo()[sizeProp],itemSize!==itemContext.props[sizeProp]&&itemContext.invalidate({before:before,
after:after,axis:axis,ownerContext:ownerContext,layout:this}))}}},finishPositions:function(ownerContext,horz,vert){ownerContext=ownerContext.dockedItems;var length=ownerContext.length;horz=horz.delta;vert=vert.delta;var index;for(index=0;index<length;++index){var itemContext=ownerContext[index];itemContext.setProp('x',horz+itemContext.dockedAt.x);itemContext.setProp('y',vert+itemContext.dockedAt.y)}},finishedLayout:function(ownerContext){var target=ownerContext.target;Ext.layout.component.Component.prototype.finishedLayout.apply(this,
arguments);ownerContext.animatePolicy||(1===ownerContext.isCollapsingOrExpanding?target.afterCollapse(!1):2===ownerContext.isCollapsingOrExpanding&&target.afterExpand(!1))},getAnimatePolicy:function(ownerContext){if(1===ownerContext.isCollapsingOrExpanding)var lastCollapsedState=this.lastCollapsedState;else 2===ownerContext.isCollapsingOrExpanding&&(lastCollapsedState=ownerContext.lastCollapsedState);if('left'===lastCollapsedState||'right'===lastCollapsedState)var policy=this.horizontalCollapsePolicy;
else if('top'===lastCollapsedState||'bottom'===lastCollapsedState)policy=this.verticalCollapsePolicy;return policy},getDockedItems:function(order,beforeBody){var me=this,renderedOnly='visual'===order,all=renderedOnly?Ext.ComponentQuery.query('[rendered]',me.owner.dockedItems.items):me.owner.dockedItems.items,sort=all&&all.length&&!1!==order,length;if(null==beforeBody)renderedOnly=sort&&!renderedOnly?all.slice():all;else{renderedOnly=[];var i=0;for(length=all.length;i<length;++i){var dock=all[i].dock;
dock='top'===dock||'left'===dock;(beforeBody?dock:!dock)&&renderedOnly.push(all[i])}sort=sort&&renderedOnly.length}if(sort){var renderOrder='render'===(order=order||'render');Ext.Array.sort(renderedOnly,function(a,b){var aw,bw;if(renderOrder&&(aw=me.owner.dockOrder[a.dock])!==(bw=me.owner.dockOrder[b.dock])&&!(aw+bw))return aw-bw;aw=me.getItemWeight(a,order);bw=me.getItemWeight(b,order);return void 0!==aw&&void 0!==bw?aw-bw:0})}return renderedOnly||[]},getItemWeight:function(item,order){item=item.weight||
this.owner.defaultDockWeights[item.dock];return item[order]||item},getLayoutItems:function(){var i;if(this.owner.collapsed)var result=this.owner.getCollapsedDockedItems();else{var items=this.getDockedItems('visual');var itemCount=items.length;result=[];for(i=0;i<itemCount;i++){var item=items[i];item.hidden||result.push(item)}}return result},measureContentWidth:function(ownerContext){ownerContext=ownerContext.bodyContext;return ownerContext.el.getWidth()-ownerContext.getBorderInfo().width},measureContentHeight:function(ownerContext){ownerContext=
ownerContext.bodyContext;return ownerContext.el.getHeight()-ownerContext.getBorderInfo().height},redoLayout:function(ownerContext){var owner=this.owner;1===ownerContext.isCollapsingOrExpanding?(owner.reExpander&&owner.reExpander.el.show(),owner.addClsWithUI(owner.collapsedCls),ownerContext.redo(!0)):2===ownerContext.isCollapsingOrExpanding&&(owner.removeClsWithUI(owner.collapsedCls),ownerContext.bodyContext.redo())},getRenderTarget:function(){return this.owner.bodyWrap},renderChildren:function(){var items=
this.getDockedItems(),target=this.getRenderTarget();this.handleItemBorders();this.renderItems(items,target)},renderItems:function(items,target){var owner=this.owner,dockedItemIds={},dockedItemCount=items.length,bodyDom=owner.body.dom,bodyWrapDom=owner.bodyWrap.dom,hasFrame=!!owner.frameSize,bodyContainer=owner.bodyContainer,hasDockedToEl,elFound,gap,i;if(dockedItemCount){for(i=0;i<dockedItemCount;i++){var childNodes=items[i];dockedItemIds[childNodes.id]=childNodes;childNodes.dockToEl&&(hasDockedToEl=
!0)}childNodes=this.getRenderTarget().dom.childNodes;var childNodeCount=childNodes.length;for(i=gap=0;i<childNodeCount;++i){var dom=childNodes[i];if(elFound=dom===bodyDom){var bodyBaseIndex=i;break}dockedItemIds[dom.id]&&++gap}bodyBaseIndex-=gap;if(hasDockedToEl){gap=0;childNodes=owner.el.dom.childNodes;childNodeCount=childNodes.length;for(i=0;i<childNodeCount;i++){dom=childNodes[i];hasFrame?(elFound=dom===bodyWrapDom||dom===bodyContainer,!elFound&&Ext.fly(dom).contains(bodyWrapDom)&&(elFound=!0,
owner.bodyContainer=dom)):elFound=dom===bodyWrapDom;if(elFound){var wrapBaseIndex=i;break}dockedItemIds[dom.id]&&++gap}wrapBaseIndex-=gap}for(i=dockedItemIds=bodyDom=0;i<dockedItemCount;i++)childNodes=items[i],childNodes.dockToEl?(bodyContainer=owner.el,bodyWrapDom=wrapBaseIndex+bodyDom++,'right'===childNodes.dock||'bottom'===childNodes.dock?(bodyWrapDom++,hasFrame&&bodyWrapDom++):hasFrame&&0<bodyWrapDom&&bodyWrapDom--):(bodyContainer=target,bodyWrapDom=bodyBaseIndex+dockedItemIds++,'right'!==childNodes.dock&&
'bottom'!==childNodes.dock||bodyWrapDom++),childNodes.rendered?this.isValidParent(childNodes,bodyContainer,bodyWrapDom)||this.moveItem(childNodes,bodyContainer,bodyWrapDom):this.renderItem(childNodes,bodyContainer,bodyWrapDom)}},undoLayout:function(ownerContext){var owner=this.owner;1===ownerContext.isCollapsingOrExpanding?(owner.reExpander&&owner.reExpander.el.hide(),owner.removeClsWithUI(owner.collapsedCls),ownerContext.undo(!0)):2===ownerContext.isCollapsingOrExpanding&&(owner.addClsWithUI(owner.collapsedCls),
ownerContext.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(item,ownerSizeModel){var policy=this.sizePolicy,shrinkWrapDock=
this.owner.shrinkWrapDock;if(!1===item.stretch)return policy.nostretch;item=item.dock;item='left'===item||'right'===item;shrinkWrapDock=!0===shrinkWrapDock?3:shrinkWrapDock||0;item?(policy=policy.vert,shrinkWrapDock&=1):(policy=policy.horz,shrinkWrapDock&=2);return shrinkWrapDock&&(ownerSizeModel||(ownerSizeModel=this.owner.getSizeModel()),ownerSizeModel[item?'height':'width'].shrinkWrap)?policy.shrinkWrap:policy.stretch},configureItem:function(item,pos){Ext.layout.component.Component.prototype.configureItem.apply(this,
arguments);item.addCls(this._itemCls);item.ignoreBorderManagement||item.addClsWithUI(this.getDockCls(item.dock))},getDockCls:function(dock){return'docked-'+dock},afterRemove:function(item){Ext.layout.component.Component.prototype.afterRemove.apply(this,arguments);item.removeCls(this._itemCls);item.ignoreBorderManagement||item.removeClsWithUI(this.getDockCls(item.dock));var dom=item.el.dom;!item.destroying&&dom&&dom.parentNode.removeChild(dom);this.childrenChanged=!0},borderCollapseMap:{},getBorderCollapseTable:function(){var map=
this.borderCollapseMap,owner=this.owner,baseCls=owner.baseCls;owner=owner.ui;map=map[baseCls]||(map[baseCls]={});var table=map[owner];table||(baseCls+='-'+owner+'-outer-border-',map[owner]=table=[0,baseCls+'l',baseCls+'b',baseCls+'bl',baseCls+'r',baseCls+'rl',baseCls+'rb',baseCls+'rbl',baseCls+'t',baseCls+'tl',baseCls+'tb',baseCls+'tbl',baseCls+'tr',baseCls+'trl',baseCls+'trb',baseCls+'trbl']);return table}},0,0,0,0,['layout.dock'],0,[Ext.layout.component,'Dock',Ext.layout.component,'AbstractDock'],
0);
Ext.define('Ext.theme.neptune.layout.component.Dock',{override:'Ext.layout.component.Dock',noBorderClassTable:[0,'x-noborder-l','x-noborder-b','x-noborder-bl','x-noborder-r','x-noborder-rl','x-noborder-rb','x-noborder-rbl','x-noborder-t','x-noborder-tl','x-noborder-tb','x-noborder-tbl','x-noborder-tr','x-noborder-trl','x-noborder-trb','x-noborder-trbl'],edgeMasks:{top:8,right:4,bottom:2,left:1},handleItemBorders:function(){var edges=0,owner=this.owner,bodyBorder=owner.bodyBorder,ownerBorder=owner.border,collapsed=
this.collapsed,edgeMasks=this.edgeMasks,noBorderCls=this.noBorderClassTable,dockedItemsGen=owner.dockedItems.generation,ln;if(this.initializedBorders!==dockedItemsGen){var addCls=[];var removeCls=[];var borderCls=this.getBorderCollapseTable();noBorderCls=this.getBorderClassTable?this.getBorderClassTable():noBorderCls;this.initializedBorders=dockedItemsGen;this.collapsed=!1;dockedItemsGen=this.getDockedItems('visual');this.collapsed=collapsed;var i=0;for(ln=dockedItemsGen.length;i<ln;i++){var item=
dockedItemsGen[i];if(!item.ignoreBorderManagement){var dock=item.dock;var mask=collapsed=0;addCls.length=0;removeCls.length=0;if('bottom'!==dock){if(edges&8)var b=item.border;else b=ownerBorder,!1!==b&&(collapsed+=8);!1===b&&(mask+=8)}'left'!==dock&&(edges&4?b=item.border:(b=ownerBorder,!1!==b&&(collapsed+=4)),!1===b&&(mask+=4));'top'!==dock&&(edges&2?b=item.border:(b=ownerBorder,!1!==b&&(collapsed+=2)),!1===b&&(mask+=2));'right'!==dock&&(edges&1?b=item.border:(b=ownerBorder,!1!==b&&(collapsed+=1)),
!1===b&&(mask+=1));(b=item.lastBorderMask)!==mask&&(item.lastBorderMask=mask,b&&(removeCls[0]=noBorderCls[b]),mask&&(addCls[0]=noBorderCls[mask]));(b=item.lastBorderCollapse)!==collapsed&&(item.lastBorderCollapse=collapsed,b&&(removeCls[removeCls.length]=borderCls[b]),collapsed&&(addCls[addCls.length]=borderCls[collapsed]));removeCls.length&&item.removeCls(removeCls);addCls.length&&item.addCls(addCls);edges|=edgeMasks[dock]}}mask=collapsed=0;addCls.length=0;removeCls.length=0;edges&8?b=bodyBorder:
(b=ownerBorder,!1!==b&&(collapsed+=8));!1===b&&(mask+=8);edges&4?b=bodyBorder:(b=ownerBorder,!1!==b&&(collapsed+=4));!1===b&&(mask+=4);edges&2?b=bodyBorder:(b=ownerBorder,!1!==b&&(collapsed+=2));!1===b&&(mask+=2);edges&1?b=bodyBorder:(b=ownerBorder,!1!==b&&(collapsed+=1));!1===b&&(mask+=1);(b=this.lastBodyBorderMask)!==mask&&(this.lastBodyBorderMask=mask,b&&(removeCls[0]=noBorderCls[b]),mask&&(addCls[0]=noBorderCls[mask]));(b=this.lastBodyBorderCollapse)!==collapsed&&(this.lastBodyBorderCollapse=
collapsed,b&&(removeCls[removeCls.length]=borderCls[b]),collapsed&&(addCls[addCls.length]=borderCls[collapsed]));removeCls.length&&owner.removeBodyCls(removeCls);addCls.length&&owner.addBodyCls(addCls)}},onRemove:function(item){var lastBorderMask=item.lastBorderMask,lastBorderCollapse=item.lastBorderCollapse;item.destroyed||item.ignoreBorderManagement||(lastBorderMask&&(item.lastBorderMask=0,item.removeCls(this.noBorderClassTable[lastBorderMask])),lastBorderCollapse&&(item.lastBorderCollapse=0,item.removeCls(this.getBorderCollapseTable()[lastBorderCollapse])));
(arguments.callee.$previous||Ext.layout.component.Component.prototype.onRemove).call(this,item)}});
Ext.cmd.derive('Ext.util.Memento',Ext.Base,function(){function captureOne(src,target,prop,prefix){src[prefix?prefix+prop:prop]=target[prop]}function removeOne(src,target,prop){delete src[prop]}function restoreOne(src,target,prop,prefix){prefix=prefix?prefix+prop:prop;var value=src[prefix];if(value||src.hasOwnProperty(prefix))Ext.isDefined(value)?target[prop]=value:delete target[prop]}function doMany(doOne,src,target,props,prefix){if(src)if(Ext.isArray(props)){var p,pLen=props.length;for(p=0;p<pLen;p++)doOne(src,
target,props[p],prefix)}else doOne(src,target,props,prefix)}return{data:null,target:null,constructor:function(target,props){this.data={};target&&(this.target=target,props&&this.capture(props))},capture:function(props,target,prefix){doMany(captureOne,this.data||(this.data={}),target||this.target,props,prefix)},remove:function(props){doMany(removeOne,this.data,null,props)},restore:function(props,clear,target,prefix){doMany(restoreOne,this.data,target||this.target,props,prefix);!1!==clear&&this.remove(props)},
restoreAll:function(clear,target$jscomp$0){target$jscomp$0=target$jscomp$0||this.target;var data=this.data,prop;clear=!1!==clear;for(prop in data)if(data.hasOwnProperty(prop)){var target=target$jscomp$0,prop$jscomp$0=prop,value=data[prop];Ext.isDefined(value)?target[prop$jscomp$0]=value:delete target[prop$jscomp$0];clear&&delete data[prop]}}}}(),1,0,0,0,0,0,[Ext.util,'Memento'],0);
Ext.cmd.derive('Ext.container.DockingContainer',Ext.Base,{isDockingContainer:!0,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(items,pos){var rendered=this.rendered,i=0,dockedItems=this.dockedItems,lastIndex=dockedItems.getCount();items=this.prepareItems(items);var length=items.length;rendered&&Ext.suspendLayouts();for(pos=void 0===pos?lastIndex:
Math.min(pos,lastIndex);i<length;i++){var item=items[i];item.dock=item.dock||'top';'left'!==item.dock&&'right'!==item.dock||this.horizontalDocks++;rendered=pos+i;dockedItems.insert(rendered,item);lastIndex=!!item.instancedCmp;delete item.instancedCmp;item.onAdded(this,rendered,lastIndex);delete item.$initParent;if(this.onDockedAdd!==Ext.emptyFn)this.onDockedAdd(item);this.hasListeners.dockedadd&&this.fireEvent('dockedadd',this,item,rendered)}this.rendered&&(this.updateLayout(),Ext.resumeLayouts(!0));
return items},destroyDockedItems:function(){var dockedItems=this.dockedItems,c;if(dockedItems)for(;c=dockedItems.first();)this.removeDocked(c,!0)},doRenderDockedItems:function(out,renderData,after){var me=renderData.$comp;renderData=me.componentLayout;me.tabGuard&&me.lookupTpl('tabGuardTpl');renderData.getDockedItems&&(after=(after=renderData.getDockedItems('render',!after))&&renderData.getItemsRenderTree(after))&&Ext.DomHelper.generateMarkup(after,out)},getDockedComponent:function(comp){Ext.isObject(comp)&&
(comp=comp.getItemId());return this.dockedItems.get(comp)},getDockedItems:function(selector,beforeBody){beforeBody=this.getComponentLayout().getDockedItems('render',beforeBody);selector&&beforeBody.length&&(beforeBody=Ext.ComponentQuery.query(selector,beforeBody));return beforeBody},getDockingRefItems:function(deep,containerItems){var selector=deep&&'*,* *';deep=this.getDockedItems(selector,!0);deep.push.apply(deep,containerItems);containerItems=this.getDockedItems(selector,!1);deep.push.apply(deep,
containerItems);return deep},initDockingItems:function(){var items=this.dockedItems;items&&items.isMixedCollection||(this.dockedItems=new Ext.util.ItemCollection,items&&this.addDocked(items))},insertDocked:function(pos,items){this.addDocked(items,pos)},onDockedAdd:Ext.emptyFn,onDockedRemove:Ext.emptyFn,removeDocked:function(item,autoDestroy){var layout,hasLayout;autoDestroy=!0===autoDestroy||!1!==autoDestroy&&this.autoDestroy;if(!this.dockedItems.contains(item))return item;'left'!==item.dock&&'right'!==
item.dock||this.horizontalDocks--;if(hasLayout=(layout=this.componentLayout)&&this.rendered)layout.onRemove(item);this.dockedItems.remove(item);item.onRemoved(item.destroying||autoDestroy);this.onDockedRemove(item);autoDestroy?item.destroy():hasLayout&&layout.afterRemove(item);this.hasListeners.dockedremove&&this.fireEvent('dockedremove',this,item);this.destroying||this.updateLayout();return item},moveDocked:function(item,side){this.rendered&&Ext.suspendLayouts();this.removeDocked(item,!1);item.dock=
side;this.addDocked(item);this.rendered&&(item.frame&&(Ext.getDetachedBody().appendChild(item.el),item.updateFrame()),Ext.resumeLayouts(!0))},setupDockingRenderTpl:function(renderTpl){renderTpl.renderDockedItems=this.doRenderDockedItems}},0,0,0,0,0,0,[Ext.container,'DockingContainer'],0);
Ext.cmd.derive('Ext.panel.Panel',Ext.container.Container,{alternateClassName:'Ext.Panel',childEls:['bodyWrap','body'],renderTpl:['\x3ctpl if\x3d"headingText"\x3e','\x3cdiv id\x3d"{id}-headingEl" data-ref\x3d"headingEl" role\x3d"heading"',' class\x3d"','x-','hidden-clip" style\x3d"height:0"\x3e','{headingText}','\x3c/div\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'before\'); %}\x3c/tpl\x3e','\x3cdiv id\x3d"{id}-bodyWrap" data-ref\x3d"bodyWrap" class\x3d"{baseCls}-bodyWrap"',
'\x3ctpl if\x3d"bodyWrapAriaAttributes"\x3e','\x3ctpl foreach\x3d"bodyWrapAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3ctpl else\x3e',' role\x3d"presentation"','\x3c/tpl\x3e','\x3e','{% this.renderDockedItems(out,values,0); %}','\x3cdiv id\x3d"{id}-body" data-ref\x3d"body" class\x3d"{baseCls}-body\x3ctpl if\x3d"bodyCls"\x3e {bodyCls}\x3c/tpl\x3e',' {baseCls}-body-{ui}\x3ctpl if\x3d"uiCls"\x3e','\x3ctpl for\x3d"uiCls"\x3e {parent.baseCls}-body-{parent.ui}-{.}\x3c/tpl\x3e','\x3c/tpl\x3e{childElCls}"',
'\x3ctpl if\x3d"bodyAriaAttributes"\x3e','\x3ctpl foreach\x3d"bodyAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3ctpl else\x3e',' role\x3d"presentation"','\x3c/tpl\x3e','\x3ctpl if\x3d"bodyStyle"\x3e style\x3d"{bodyStyle}"\x3c/tpl\x3e\x3e','{%this.renderContainer(out,values);%}','\x3c/div\x3e','{% this.renderDockedItems(out,values,1); %}','\x3c/div\x3e','\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'after\'); %}\x3c/tpl\x3e'],headerPosition:'top',iconAlign:'left',titleAlign:'left',
titleRotation:'default',beforeRenderConfig:{glyph:null,headerPosition:null,icon:null,iconAlign:null,iconCls:null,title:null,titleAlign:null,titleRotation:null},animCollapse:Ext.enableFx,border:!0,closable:!1,closeAction:'destroy',closeToolText:'Close panel',collapsed:!1,collapsedCls:'collapsed',collapseFirst:!0,collapsible:void 0,collapseToolText:'Collapse panel',expandToolText:'Expand panel',constrain:!1,constrainHeader:!1,dockedItems:null,tbar:null,bbar:null,fbar:null,lbar:null,rbar:null,buttons:null,
floatable:!0,frame:!1,frameHeader:!0,hideCollapseTool:!1,manageHeight:!0,maskElement:'el',minButtonWidth:75,preventHeader:!1,shrinkWrapDock:!1,titleCollapse:void 0,baseCls:'x-panel',bodyPosProps:{x:'x',y:'y'},componentLayout:'dock',contentPaddingProperty:'bodyPadding',emptyArray:[],isPanel:!0,defaultBindProperty:'title',addBodyCls:function(cls){(this.rendered?this.body:this.getProtoBody()).addCls(cls);return this},addTool:function(tools){Ext.isArray(tools)||(tools=[tools]);var header=this.header,
tLen=tools.length,curTools=this.tools,t;header&&header.isHeader||(header=null,curTools||(this.tools=curTools=[]));for(t=0;t<tLen;t++){var tool=tools[t];tool.toolOwner=this;header?header.addTool(tool):curTools.push(tool)}this.updateHeader()},addTools:Ext.emptyFn,getClosable:function(){return this.closable},setClosable:function(closable){var tab=this.tab;closable=!!closable;this.closable!==closable&&(this.closable=closable,tab&&tab.setClosable(closable))},setCollapsible:function(collapsible){var current=
this.collapsible,collapseTool=this.collapseTool;(this.collapsible=collapsible)&&!current?(this.updateCollapseTool(),(collapseTool=this.collapseTool)&&collapseTool.show()):!collapsible&&current&&collapseTool&&collapseTool.hide()},addUIClsToElement:function(cls){var result=Ext.container.Container.prototype.addUIClsToElement.apply(this,arguments);this.addBodyCls(['x-'+cls,this.baseCls+'-body-'+cls,this.baseCls+'-body-'+this.ui+'-'+cls]);return result},afterCollapse:function(animated){var ownerLayout=
this.ownerLayout;this.isCollapsingOrExpanding=0;this.updateCollapseTool();animated&&this.removeCls('x-animating-size');ownerLayout&&ownerLayout.afterCollapse(this,animated);this.setHiddenDocked();this.fireEvent('collapse',this)},afterExpand:function(animated){var ownerLayout=this.ownerLayout;this.isCollapsingOrExpanding=0;this.updateCollapseTool();animated&&this.removeCls('x-animating-size');ownerLayout&&ownerLayout.afterExpand(this,animated);this.fireEvent('expand',this);this.fireHierarchyEvent('expand')},
doDestroy:function(){Ext.destroy(this.placeholder,this.ghostPanel,this.dd,this.accordionHeaderKeyNav,this.accordionBodyKeyNav,this.defaultButtonKeyNav);this.destroyDockedItems();Ext.container.Container.prototype.doDestroy.call(this)},beforeRender:function(){this.getProtoBody();Ext.container.Container.prototype.beforeRender.call(this);this.initTools();(!this.preventHeader&&!1!==this.header||this.isViewportBorderChild)&&this.updateHeader();this.afterHeaderInit=!0;if(this.collapsed)if(this.isPlaceHolderCollapse()){if(!this.hidden){this.setHiddenState(!0);
this.preventCollapseFire=!0;this.placeholderCollapse();delete this.preventCollapseFire;var wasCollapsed=this.collapsed;this.collapsed=!1}}else this.beginCollapse(),this.addClsWithUI(this.collapsedCls);wasCollapsed&&(this.collapsed=wasCollapsed)},getMemento:function(name){if(name&&'string'===typeof name)return name+='Memento',this[name]||(this[name]=new Ext.util.Memento(this))},beginCollapse:function(){var lastBox=this.lastBox,rendered=this.rendered,collapseMemento=this.getMemento('collapse'),sizeModel=
this.getSizeModel(),header=this.header;collapseMemento.capture(['height','minHeight','width','minWidth']);lastBox&&collapseMemento.capture(this.restoreDimension(),lastBox,'last.');this.collapsedVertical()?(sizeModel.width.shrinkWrap&&(this.width=rendered?this.getWidth():this.width||this.minWidth||100),delete this.height,this.minHeight=0):this.collapsedHorizontal()&&(sizeModel.height.shrinkWrap&&(this.height=rendered?this.getHeight():this.height||this.minHeight||100),delete this.width,this.minWidth=
0);this.ownerCt&&this.ownerCt.getLayout().beginCollapse(this);this.isPlaceHolderCollapse()||!1===header||(header===(lastBox=this.getReExpander())?(header.collapseImmune=!0,header.getInherited().collapseImmune=!0,header.addClsWithUI(this.getHeaderCollapsedClasses(header)),header.rendered&&header.updateFrame()):lastBox.el&&(lastBox.el.show(),lastBox.hidden=!1));this.resizer&&this.resizer.disable();this.rendered&&(this.ariaEl.dom.setAttribute('aria-expanded',!1),this.isAccordionPanel&&this.body.dom.setAttribute('aria-hidden',
!0))},beginDrag:function(){this.floatingDescendants&&this.floatingDescendants.hide()},beginExpand:function(){var lastBox=this.lastBox,collapseMemento=this.getMemento('collapse'),restoreDimension=this.restoreDimension(),header=this.header;collapseMemento&&(collapseMemento.restore(['minHeight','minWidth',restoreDimension]),lastBox&&collapseMemento.restore(restoreDimension,!0,lastBox,'last.'));this.ownerCt&&this.ownerCt.getLayout().beginExpand(this);this.isPlaceHolderCollapse()||!1===header||(header===
(lastBox=this.getReExpander())?(delete header.collapseImmune,delete header.getInherited().collapseImmune,header.removeClsWithUI(this.getHeaderCollapsedClasses(header)),header.rendered&&(header.expanding=!0,header.updateFrame(),delete header.expanding)):(lastBox.hidden=!0,lastBox.el.hide()));this.resizer&&this.resizer.enable();this.rendered&&(this.ariaEl.dom.setAttribute('aria-expanded',!0),this.isAccordionPanel&&this.body.dom.setAttribute('aria-hidden',!1))},bridgeToolbars:function(){function initToolbar(toolbar,
pos,useButtonAlign,disableFocusableContainer){Ext.isArray(toolbar)?toolbar={xtype:'toolbar',items:toolbar}:toolbar.isComponent||(toolbar=Ext.apply({},toolbar));toolbar.xtype||(toolbar.xtype='toolbar');toolbar.dock=pos;disableFocusableContainer&&(toolbar.enableFocusableContainer=!1);useButtonAlign&&(toolbar.layout=Ext.applyIf(toolbar.layout||{},{pack:{left:'start',center:'center'}[me.buttonAlign]||'end'}));return toolbar}var me=this,docked=[],minButtonWidth=me.minButtonWidth;me.tbar&&(docked.push(initToolbar(me.tbar,
'top')),me.tbar=null);me.bbar&&(docked.push(initToolbar(me.bbar,'bottom')),me.bbar=null);if(me.buttons){me.fbar=me.buttons;me.buttons=null;var fbar=!0}if(me.fbar){fbar=initToolbar(me.fbar,'bottom',!0,fbar);fbar.ui='footer';if(minButtonWidth){var fbarDefaults=fbar.defaults;fbar.defaults=function(config){var defaults=fbarDefaults||{},isButton=!config.xtype||config.isButton;!isButton&&(config=Ext.ClassManager.getByAlias('widget.'+config.xtype))&&(isButton=config.prototype.isButton);!isButton||'minWidth'in
defaults||(defaults=Ext.apply({minWidth:minButtonWidth},defaults));return defaults}}docked.push(fbar);me.fbar=null}me.lbar&&(docked.push(initToolbar(me.lbar,'left')),me.lbar=null);me.rbar&&(docked.push(initToolbar(me.rbar,'right')),me.rbar=null);me.dockedItems?me.dockedItems.isMixedCollection?me.addDocked(docked):(Ext.isArray(me.dockedItems)||(me.dockedItems=[me.dockedItems]),me.dockedItems=me.dockedItems.concat(docked)):me.dockedItems=docked},close:function(){!1!==this.fireEvent('beforeclose',this)&&
this.doClose()},collapse:function(direction,animate){var collapseDir=direction||this.collapseDirection,ownerCt=this.ownerCt,layout=this.ownerLayout,rendered=this.rendered;if(this.isCollapsingOrExpanding)return this;2>arguments.length&&(animate=this.animCollapse);if(this.collapsed||!1===this.fireEvent('beforecollapse',this,direction,animate)||layout&&layout.onBeforeComponentCollapse&&!1===layout.onBeforeComponentCollapse(this))return this;if(rendered&&ownerCt&&this.isPlaceHolderCollapse())return this.placeholderCollapse(direction,
animate);this.collapsed=collapseDir;rendered&&this.beginCollapse();this.getInherited().collapsed=!0;this.fireHierarchyEvent('collapse');rendered&&this.doCollapseExpand(1,animate);return this},collapsedHorizontal:function(){var dir=this.getCollapsed();return'left'===dir||'right'===dir},collapsedVertical:function(){var dir=this.getCollapsed();return'top'===dir||'bottom'===dir},convertCollapseDir:function(collapseDir){return collapseDir.substr(0,1)},createGhost:function(cls){var me=this,header=me.header,
frame=me.frame&&!me.alwaysFramed;return{xtype:'panel',hidden:!1,header:header?{titleAlign:header.getTitleAlign()}:null,ui:frame?me.ui.replace(/-framed$/,''):me.ui,id:me.id+'-ghost',renderTo:Ext.getBody(),resizable:!1,draggable:!1,closable:!1,focusable:!1,floating:!0,alignOnScroll:!1,shadow:!1,frame:frame,shim:me.shim,alwaysFramed:me.alwaysFramed,overlapHeader:me.overlapHeader,headerPosition:me.getHeaderPosition(),titleRotation:me.getTitleRotation(),baseCls:me.baseCls,getRefOwner:function(){return me.getRefOwner()},
cls:me.baseCls+'-ghost '+(cls||'')}},createReExpander:function(direction,defaults){var isLeft='left'===direction,isRight='right'===direction,isVertical=isLeft||isRight,ownerCt=this.ownerCt,header=this.header;defaults=Ext.apply({hideMode:'offsets',title:this.getTitle(),titleAlign:this.getTitleAlign(),vertical:isVertical,textCls:this.headerTextCls,icon:this.getIcon(),iconCls:this.getIconCls(),iconAlign:this.getIconAlign(),glyph:this.getGlyph(),baseCls:this.self.prototype.baseCls+'-header',ui:this.ui,
frame:this.frame&&this.frameHeader,ignoreParentFrame:this.frame||this.overlapHeader,ignoreBorderManagement:this.frame||this.ignoreHeaderBorderManagement,indicateDrag:this.draggable,collapseImmune:!0,ariaRole:this.ariaRole,preventRefocus:!0,ownerCt:ownerCt&&'placeholder'===this.collapseMode?ownerCt:this,ownerLayout:this.componentLayout,forceOrientation:!0,margin:this.margin,defaultFocus:'tool[isDefaultExpandTool]'},defaults);'mini'===this.collapseMode&&(isVertical?defaults.width=1:defaults.height=
1);header&&Ext.apply(defaults,{enableFocusableContainer:header.enableFocusableContainer,activeChildTabIndex:header.activeChildTabIndex,inactiveChildTabIndex:header.inactiveChildTabIndex,allowFocusingDisabledChildren:header.allowFocusingDisabledChildren});if(!this.hideCollapseTool){if(isLeft||isRight&&this.isPlaceHolderCollapse())defaults.titlePosition=1;defaults.tools=[{xtype:'tool',type:'expand-'+this.getOppositeDirection(direction),isDefaultExpandTool:!0,uiCls:['top'],handler:this.toggleCollapse,
scope:this,tooltip:this.expandToolText}]}defaults=new Ext.panel.Header(defaults);defaults.addClsWithUI(this.getHeaderCollapsedClasses(defaults));defaults.expandTool=defaults.down('tool[isDefaultExpandTool\x3dtrue]');return defaults},doClose:function(){this.fireEvent('close',this);this[this.closeAction]()},doCollapseExpand:function(flags,animate){var originalAnimCollapse=this.animCollapse,ownerLayout=this.ownerLayout;this.animCollapse=animate;this.isCollapsingOrExpanding=flags;animate&&this.addCls('x-animating-size');
if(ownerLayout&&!animate)ownerLayout.onContentChange(this);else this.updateLayout({isRoot:!0});this.animCollapse=originalAnimCollapse;return this},endDrag:function(){this.floatingDescendants&&this.floatingDescendants.show()},expand:function(animate){var layout=this.ownerLayout,rendered=this.rendered;if(this.isCollapsingOrExpanding)return this;arguments.length||(animate=this.animCollapse);if(!this.collapsed&&!this.floatedFromCollapse||!1===this.fireEvent('beforeexpand',this,animate)||layout&&layout.onBeforeComponentExpand&&
!1===layout.onBeforeComponentExpand(this))return this;delete this.getInherited().collapsed;if(rendered&&this.isPlaceHolderCollapse())return this.placeholderExpand(animate);this.restoreHiddenDocked();rendered&&this.beginExpand();this.collapsed=!1;this.rendered&&this.doCollapseExpand(2,animate);return this},findReExpander:function(direction){var c=Ext.Component,dockedItems=this.dockedItems.items,dockedItemCount=dockedItems.length;if('mini'!==this.collapseMode)switch(direction){case c.DIRECTION_TOP:case c.DIRECTION_BOTTOM:for(c=
0;c<dockedItemCount;c++)if(direction=dockedItems[c],!direction.hidden&&direction.isHeader&&(!direction.dock||'top'===direction.dock||'bottom'===direction.dock))return direction;break;case c.DIRECTION_LEFT:case c.DIRECTION_RIGHT:for(c=0;c<dockedItemCount;c++)if(direction=dockedItems[c],!direction.hidden&&direction.isHeader&&('left'===direction.dock||'right'===direction.dock))return direction;break;default:throw'Panel#findReExpander must be passed a valid collapseDirection';}},floatCollapsedPanel:function(){var me=
this,placeholder=me.placeholder,splitter=me.splitter,phBox=Ext.util.Region.from(placeholder.getBox(!1,!0)),floatCls=Ext.panel.Panel.floatCls,collapsed=me.collapsed,layoutOwner=me.ownerCt||me,hoverlisteners={mouseleave:me.onMouseLeaveFloated,mouseenter:me.onMouseEnterFloated,scope:me,destroyable:!0};if(!me.isSliding)if(me.el.hasCls(floatCls))me.slideOutFloatedPanel();else if(me.isSliding=!0,placeholder.el.hide(),placeholder.hidden=!0,me.el.show(),me.setHiddenState(!1),me.collapsed=!1,layoutOwner.updateLayout(),
placeholder.el.show(),placeholder.hidden=!1,me.el.hide(),me.setHiddenState(!0),me.collapsed=collapsed,layoutOwner.updateLayout(),layoutOwner=me.getBox(!1,!0),!1!==me.fireEvent('beginfloat',me)){me.slideOutTask=me.slideOutTask||new Ext.util.DelayedTask(me.slideOutFloatedPanel,me);me.pointerLeaveListener=Ext.getDoc().on({mousedown:me.onFloatedPointerEvent,mousemove:me.onFloatedPointerEvent,scope:me,destroyable:!0});me.placeholderListener||(me.placeholderListener=placeholder.on({resize:me.onPlaceholderResize,
scope:me,destroyable:!0}));me.phHoverListeners=placeholder.el.on(hoverlisteners);me.elHoverListeners=me.el.on(hoverlisteners);me.el.addCls(floatCls);me.floated=collapsed;me.collapseTool&&me.collapseTool.el.hide();splitter&&(phBox=phBox.union(splitter.getBox(!1,!0)));switch(me.collapsed){case 'top':me.width=phBox.width;me.setLocalXY(layoutOwner.x,layoutOwner.y+phBox.height);break;case 'right':me.height=phBox.height;me.setLocalXY(layoutOwner.x-phBox.width,layoutOwner.y);break;case 'bottom':me.width=
phBox.width;me.setLocalXY(layoutOwner.x,layoutOwner.y-phBox.height);break;case 'left':me.height=phBox.height,me.setLocalXY(layoutOwner.x+phBox.width,layoutOwner.y)}placeholder=me.convertCollapseDir(me.collapsed);me.floatedFromCollapse=me.collapsed;me.collapsed=!1;me.setHiddenState(!1);me.el.slideIn(placeholder,{preserveScroll:!0,duration:Ext.Number.from(me.animCollapse,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){me.isSliding=!1;me.fireEvent('endfloat',me);me.fireEvent('float',
me)}}})}},onFloatedPointerEvent:function(event){this.owns(event)||this.placeholder.owns(event)||this.splitter&&this.splitter.owns(event)||this.floatCollapsedPanel&&this.el.getRegion().contains(event.getPoint())?this.slideOutTask.cancel():this.slideOutTask.delay(500)},onMouseEnterFloated:function(e){this.slideOutTask.cancel()},onMouseLeaveFloated:function(e){(e=e.getRelatedTarget())&&(this.owns(e)||this.placeholder.owns(e))||this.slideOutTask.delay(500)},onPlaceholderResize:function(ph,newWidth,newHeight){var splitter=
this.splitter,myBox=this.getBox(!1,!0);ph=Ext.util.Region.from(ph.getBox(!1,!0));splitter&&(ph=ph.union(splitter.getBox(!1,!0)));switch(this.floated){case 'top':this.width=newWidth;this.setLocalY(ph.y+ph.height);break;case 'right':this.height=newHeight;this.setLocalX(ph.x-myBox.width);break;case 'bottom':this.width=newWidth;this.setLocalY(ph.y-myBox.height);break;case 'left':this.height=newHeight,this.setLocalX(ph.x+ph.width)}this.updateLayout({isRoot:!0})},getAnimationProps:function(){var props=
Ext.container.Container.prototype.getAnimationProps.call(this);'number'===typeof this.animCollapseDuration?props.duration=this.animCollapseDuration:'number'===typeof this.animCollapse&&(props.duration=this.animCollapse);return props},getCollapsed:function(){return!0===this.collapsed?this.collapseDirection:this.collapsed},getCollapsedDockedItems:function(){return!1===this.header||'placeholder'===this.collapseMode?this.emptyArray:[this.getReExpander()]},getComponent:function(comp){var component=Ext.container.Container.prototype.getComponent.apply(this,
arguments);void 0!==component||Ext.isNumber(comp)||(component=this.getDockedComponent(comp));return component},getHeader:function(){return this.header},getHeaderCollapsedClasses:function(header){var collapsedCls=this.collapsedCls;var collapsedClasses=[collapsedCls,collapsedCls+'-'+header.getDockName()];this.border&&(!this.frame||this.frame&&Ext.supports.CSS3BorderRadius)&&collapsedClasses.push(collapsedCls+'-border-'+header.getDockName());return collapsedClasses},getOppositeDirection:function(d){var c=
Ext.Component;switch(d){case c.DIRECTION_TOP:return c.DIRECTION_BOTTOM;case c.DIRECTION_RIGHT:return c.DIRECTION_LEFT;case c.DIRECTION_BOTTOM:return c.DIRECTION_TOP;case c.DIRECTION_LEFT:return c.DIRECTION_RIGHT}},getPlaceholder:function(direction){var me=this;direction=direction||me.collapseDirection;var listeners=null,placeholder=me.placeholder,floatable=me.floatable,titleCollapse=me.titleCollapse;if(!placeholder){if(floatable||me.collapsible&&titleCollapse)listeners={click:{fn:function(e,target){if(!placeholder.expandTool.el.dom.contains(target))me[!titleCollapse&&
floatable?'floatCollapsedPanel':'toggleCollapse']()},element:'el',scope:me}};me.placeholder=placeholder=Ext.widget(me.createReExpander(direction,{id:me.id+'-placeholder',listeners:listeners}))}placeholder.placeholderFor||(placeholder.isComponent||(me.placeholder=placeholder=me.lookupComponent(placeholder)),Ext.applyIf(placeholder,{margin:me.margin,placeholderFor:me,synthetic:!0}),placeholder.addCls(['x-region-collapsed-placeholder','x-region-collapsed-'+direction+'-placeholder',me.collapsedCls]));
return placeholder},getProtoBody:function(){var body=this.protoBody;body||(this.protoBody=body=new Ext.util.ProtoElement({cls:this.bodyCls,style:this.bodyStyle,clsProp:'bodyCls',styleProp:'bodyStyle',styleIsText:!0}));return body},getReExpander:function(direction){direction=direction||this.collapseDirection;var reExpander=this.reExpander||this.findReExpander(direction),titleCollapse=this.titleCollapse,listeners=null;this.expandDirection=this.getOppositeDirection(direction);reExpander||(titleCollapse&&
(listeners={click:{fn:this.toggleCollapse,element:'el',scope:this}}),this.reExpander=reExpander=this.createReExpander(direction,{dock:direction,cls:'x-docked '+this.baseCls+'-'+this.ui+'-collapsed',isCollapsedExpander:!0,listeners:listeners}),this.dockedItems.insert(0,reExpander));return reExpander},getRefItems:function(deep){var placeholder=this.placeholder;if(placeholder){var result=[placeholder];deep&&placeholder.getRefItems&&result.push.apply(result,placeholder.getRefItems(deep))}else result=
[];result.push.apply(result,this.getDockingRefItems(deep,Ext.container.Container.prototype.getRefItems.call(this,deep)));return result},getState:function(){var state=Ext.container.Container.prototype.getState.call(this)||{},collapsed=this.collapsed,floated=this.floated;floated&&(this.collapsed=floated);state=this.addPropertyToState(state,'collapsed');floated&&(this.collapsed=collapsed);this.getCollapsed()&&(collapsed=this.getMemento('collapse').data,state=this.addPropertyToState(state,'collapsed',
collapsed),floated=this.isPlaceHolderCollapse(),this.collapsedVertical()?floated?(state=this.addPropertyToState(state,'height'),delete state.width):(delete state.height,collapsed&&(state=this.addPropertyToState(state,'height',collapsed.height))):floated?(state=this.addPropertyToState(state,'width'),delete state.height):(delete state.width,collapsed&&(state=this.addPropertyToState(state,'width',collapsed.width))));return state},applyState:function(state){var collapsed;if(state){if(collapsed=state.collapsed){var collapseMemento=
this.getMemento('collapse');Ext.Object.merge(collapseMemento.data,collapsed);state.collapsed=!0}Ext.container.Container.prototype.applyState.apply(this,arguments)}},ghost:function(cls){var myEl=this.el,ghostPanel=this.ghostPanel,box=this.getBox(),header=this.header,i;ghostPanel?ghostPanel.el.show():(this.ghostPanel=ghostPanel=Ext.widget(this.createGhost(cls)),ghostPanel.el.dom.removeAttribute('tabIndex'));ghostPanel.setHiddenState(!1);ghostPanel.floatParent=this.floatParent;if(header&&!this.preventHeader){cls=
ghostPanel.header;cls.suspendLayouts();var tools=cls.query('tool');for(i=tools.length;i--;)cls.remove(tools[i]);cls.setTitlePosition(0);ghostPanel.addTool(this.ghostTools());ghostPanel.setTitle(this.getTitle());cls.setTitlePosition(header.titlePosition);(header=this.getIconCls())?ghostPanel.setIconCls(header):(header=this.getIcon())?ghostPanel.setIcon(header):(header=this.getGlyph())&&ghostPanel.setGlyph(header);cls.addCls('x-header-ghost');cls.resumeLayouts(!0)}ghostPanel.setPagePosition(box.x,box.y);
ghostPanel.setSize(box.width,box.height);this.elVisMode=myEl.getVisibilityMode();myEl.setVisibilityMode(Ext.Element.CLIP);myEl.hide();return ghostPanel},ghostTools:function(){var tools=[],header=this.header;header=header?header.query('tool[hidden\x3dfalse]'):[];var tLen;if(header.length){var t=0;for(tLen=header.length;t<tLen;t++){var tool=header[t];tools.push({type:tool.type,tooltip:tool.tooltip})}}else tools=[{type:'placeholder'}];return tools},initBodyBorder:function(){this.frame&&this.bodyBorder&&
(Ext.isNumber(this.bodyBorder)||(this.bodyBorder=1),this.getProtoBody().setStyle('border-width',this.unitizeBox(this.bodyBorder)))},initBodyStyles:function(){var body=this.getProtoBody();void 0!==this.bodyPadding&&(this.layout.managePadding?body.setStyle('padding',0):body.setStyle('padding',this.unitizeBox(!0===this.bodyPadding?5:this.bodyPadding)));this.initBodyBorder()},initBorderProps:function(){this.frame&&this.border&&void 0===this.bodyBorder&&(this.bodyBorder=!1);this.frame&&this.border&&(!1===
this.bodyBorder||0===this.bodyBorder)&&(this.manageBodyBorders=!0)},initComponent:function(){this.collapsible&&this.addStateEvents(['expand','collapse']);this.unstyled&&this.setUI('plain');this.frame&&this.setUI(this.ui+'-framed');this.bridgeToolbars();this.initBorderProps();Ext.container.Container.prototype.initComponent.call(this);this.collapseDirection=this.collapseDirection||this.getHeaderPosition()||Ext.Component.DIRECTION_TOP;'number'===typeof this.animCollapse&&(this.animCollapseDuration=this.animCollapse);
this.hiddenOnCollapse=new Ext.dom.CompositeElement},initItems:function(){Ext.container.Container.prototype.initItems.call(this);this.initDockingItems()},initRenderData:function(){var bodyWrapRole=this.bodyWrapAriaRole,bodyRole=this.bodyAriaRole;var data=Ext.container.Container.prototype.initRenderData.call(this);this.initBodyStyles();this.protoBody.writeTo(data);delete this.protoBody;this.headingText&&(data.headingText=this.headingText,this.addChildEl('headingEl'));bodyWrapRole&&(data.bodyWrapAriaAttributes=
{role:bodyWrapRole},!this.ariaStaticRoles[bodyWrapRole]&&this.bodyWrapAriaRenderAttributes&&Ext.apply(data.bodyWrapAriaAttributes,this.bodyWrapAriaRenderAttributes));bodyRole&&(data.bodyAriaAttributes={role:bodyRole},!this.ariaStaticRoles[bodyRole]&&this.bodyAriaRenderAttributes&&Ext.apply(data.bodyAriaAttributes,this.bodyAriaRenderAttributes));return data},calculateConstrainedPosition:function(constrainTo,proposedPosition,local,proposedSize){var header=this.header;if(this.constrainHeader){var lastBox=
header.lastBox;proposedSize?proposedSize=header.vertical?[lastBox?lastBox.width:proposedSize[0],proposedSize[1]]:[proposedSize[0],lastBox?lastBox.height:proposedSize[1]]:lastBox&&(proposedSize=[lastBox.width,lastBox.height]);header=this.floatParent;constrainTo=constrainTo||this.constrainTo||(header?header.getTargetEl():null)||this.container||this.el.parent()}return Ext.container.Container.prototype.calculateConstrainedPosition.call(this,constrainTo,proposedPosition,local,proposedSize)},initTools:function(){var tools=
this.tools,i,tool;this.tools=[];for(i=tools&&tools.length;i;)--i,this.tools[i]=tool=tools[i],tool.toolOwner=this;!this.collapsible||this.hideCollapseTool||!1===this.header||this.preventHeader||(this.updateCollapseTool(),this.collapseFirst&&this.tools.unshift(this.collapseTool));this.addTools();this.pinnable&&this.initPinnable();if(this.closable){this.addClsWithUI('closable');tools={xtype:'tool',type:'close',scope:this,handler:this.close,tooltip:this.closeToolText};if(this.isAccordionPanel||this.disableCloseToolFocus)tools.focusable=
!1,tools.ariaRole='presentation';this.addTool(tools)}this.collapseTool&&!this.collapseFirst&&this.addTool(this.collapseTool)},isLayoutRoot:function(){return this.floatedFromCollapse?!0:Ext.container.Container.prototype.isLayoutRoot.call(this)},isPlaceHolderCollapse:function(){return'placeholder'===this.collapseMode},isVisible:function(deep){return this.collapsed&&this.placeholder?this.placeholder.isVisible(deep):Ext.container.Container.prototype.isVisible.apply(this,arguments)},onBoxReady:function(){Ext.container.Container.prototype.onBoxReady.apply(this,
arguments);this.collapsed&&this.setHiddenDocked();this.isAccordionPanel&&(this.ariaEl=this.header.titleCmp.el,this.ariaEl.dom.setAttribute('aria-expanded',!this.collapsed),this.ariaEl.dom.setAttribute('aria-controls',this.body.id),this.body.dom.setAttribute('aria-labelledby',this.header.titleCmp.id),this.body.dom.setAttribute('aria-hidden',!!this.collapsed),this.accordionHeaderKeyNav=new Ext.util.KeyNav({target:this.header.titleCmp.el,scope:this,left:this.navigateAccordionHeader,right:this.navigateAccordionHeader,
up:this.navigateAccordionHeader,down:this.navigateAccordionHeader,home:this.navigateAccordionHeader,end:this.navigateAccordionHeader,space:this.toggleCollapse,enter:this.toggleCollapse,del:{alt:!0,fn:this.maybeClose}}),this.accordionBodyKeyNav=new Ext.util.KeyNav({target:this.body,scope:this,up:{ctrl:!0,fn:this.navigateAccordionBody}}));if(this.defaultButton){var target=this.defaultButtonTarget?this[this.defaultButtonTarget]:this.body;this.defaultButtonKeyNav=new Ext.util.KeyNav({target:target,scope:this,
defaultEventAction:'stopEvent',enter:this.fireDefaultButton})}},onHide:function(animateTarget,cb,scope){var dd=this.dd;this.floatedFromCollapse&&this.slideOutFloatedPanel(!0);this.draggable&&dd&&dd.endDrag();this.collapsed&&this.placeholder?(this.splitter&&(Ext.suspendLayouts(),this.splitter.hide(),Ext.resumeLayouts()),this.placeholder.hide()):Ext.container.Container.prototype.onHide.call(this,animateTarget,cb,scope)},onRemoved:function(destroying){this.placeholder&&!destroying&&this.ownerCt.remove(this.placeholder,
!1);Ext.container.Container.prototype.onRemoved.apply(this,arguments)},onShow:function(){this.collapsed&&this.isPlaceHolderCollapse()?(this.splitter&&(Ext.suspendLayouts(),this.splitter.show(),Ext.resumeLayouts()),this.setHiddenState(!0),this.placeholderCollapse()):Ext.container.Container.prototype.onShow.apply(this,arguments)},placeholderCollapse:function(direction,animate){var ownerCt=this.ownerCt;direction=direction||this.collapseDirection;var floatCls=Ext.panel.Panel.floatCls,collapseTool=this.collapseTool,
placeholder=this.getPlaceholder(direction);if(Ext.Component.layoutSuspendCount||this.isLayoutSuspended())animate=!1;this.fireEvent('beginfloat',this);this.isCollapsingOrExpanding=1;this.setHiddenState(!0);this.collapsed=direction;placeholder.rendered?(placeholder.el.dom.parentNode!==this.el.dom.parentNode&&this.el.dom.parentNode.insertBefore(placeholder.el.dom,this.el.dom),placeholder.hidden=!1,placeholder.setHiddenState(!1),placeholder.el.show(),ownerCt.updateLayout()):ownerCt.insert(ownerCt.items.indexOf(this),
placeholder);if(this.rendered)if(this.focusPlaceholderExpandTool=this.focusPlaceHolder=!1,collapseTool&&Ext.ComponentManager.getActiveComponent()===collapseTool?this.focusPlaceholderExpandTool=!0:this.containsFocus&&(this.focusPlaceHolder=!0),this.el.setVisibilityMode(this.placeholderCollapseHideMode),animate){this.el.addCls(floatCls);placeholder.el.hide();var slideInDirection=this.convertCollapseDir(direction);this.el.slideOut(slideInDirection,{preserveScroll:!0,duration:Ext.Number.from(animate,
Ext.fx.Anim.prototype.duration),listeners:{scope:this,afteranimate:function(){var placeholderEl=this.placeholder.el;this.el.removeCls(floatCls);placeholderEl.show();this.ownerCt?(placeholderEl.setStyle('display','none'),placeholderEl.slideIn(slideInDirection,{easing:'linear',duration:100,listeners:{afteranimate:this.doPlaceholderCollapse,scope:this}})):this.doPlaceholderCollapse()}}})}else this.el.hide(),this.doPlaceholderCollapse();else this.isCollapsingOrExpanding=0,this.preventCollapseFire||this.fireEvent('collapse',
this);return this},doPlaceholderCollapse:function(){var placeholder=this.placeholder,expandTool=placeholder.expandTool;this.focusPlaceholderExpandTool&&expandTool?expandTool.focus():this.focusPlaceHolder&&placeholder.focus();this.focusPlaceholderExpandTool=!1;placeholder.setHiddenState(!1);placeholder.rendered&&(placeholder=placeholder.ariaEl.dom,placeholder.setAttribute('aria-hidden',!1),placeholder.setAttribute('aria-expanded',!1));placeholder=this.ariaEl.dom;placeholder.setAttribute('aria-hidden',
!0);placeholder.setAttribute('aria-expanded',!1);this.isCollapsingOrExpanding=0;this.fireEvent('collapse',this);this.fireEvent('endfloat',this)},placeholderExpand:function(animate){var collapseDir=this.collapsed,expandTool=this.placeholder.expandTool,floatCls=Ext.panel.Panel.floatCls,center=this.ownerLayout?this.ownerLayout.centerRegion:null;Ext.Component.layoutSuspendCount&&(animate=!1);if(this.floatedFromCollapse){var floatedPos=this.getPosition(!0);this.slideOutFloatedPanelBegin();this.slideOutFloatedPanelEnd();
this.floated=!1}expandTool&&Ext.ComponentManager.getActiveComponent()===expandTool&&(this.focusHeaderCollapseTool=!0,expandTool._ariaRole=expandTool.ariaEl.dom.getAttribute('role'),expandTool._ariaLabel=expandTool.ariaEl.dom.getAttribute('aria-label'),expandTool.ariaEl.dom.setAttribute('role','presentation'),expandTool.ariaEl.dom.removeAttribute('aria-label'));animate?(Ext.suspendLayouts(),this.placeholder.hide(),this.el.show(),this.collapsed=!1,this.setHiddenState(!1),center&&!floatedPos&&(center.hidden=
!0),Ext.resumeLayouts(!0),center.hidden=!1,this.floatedFromCollapse||this.fireEvent('beginfloat',this),this.el.addCls(floatCls),this.isCollapsingOrExpanding=2,floatedPos?(collapseDir=this.getXY(),this.setLocalXY(floatedPos[0],floatedPos[1]),this.setXY([collapseDir[0],collapseDir[1]],{duration:Ext.Number.from(animate,Ext.fx.Anim.prototype.duration),listeners:{scope:this,afteranimate:function(){this.el.removeCls(floatCls);this.isCollapsingOrExpanding=0;this.fireEvent('expand',this);this.fireEvent('endfloat',
this)}}})):(this.el.hide(),this.placeholder.el.show(),this.placeholder.hidden=!1,this.setHiddenState(!1),this.el.slideIn(this.convertCollapseDir(collapseDir),{preserveScroll:!0,duration:Ext.Number.from(animate,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:this.doPlaceholderExpand,scope:this}}))):(this.floated=this.collapsed=!1,this.doPlaceholderExpand(!0));return this},doPlaceholderExpand:function(nonAnimated){nonAnimated=!0===nonAnimated;var placeholder=this.placeholder,collapseTool=this.collapseTool,
expandTool=placeholder.expandTool;nonAnimated&&(Ext.suspendLayouts(),this.show());this.el.removeCls(Ext.panel.Panel.floatCls);placeholder.hide();nonAnimated?Ext.resumeLayouts(!0):this.updateLayout();this.focusHeaderCollapseTool&&collapseTool&&collapseTool.focus();this.focusHeaderCollapseTool=!1;placeholder.ariaEl.dom.setAttribute('aria-expanded',!0);this.ariaEl.dom.setAttribute('aria-expanded',!0);expandTool&&expandTool._ariaRole&&(expandTool.ariaEl.dom.setAttribute('role',expandTool._ariaRole),expandTool.ariaEl.dom.setAttribute('aria-label',
expandTool._ariaLabel),expandTool._ariaRole=expandTool._ariaLabel=null);this.isCollapsingOrExpanding=0;this.fireEvent('expand',this);this.fireEvent('endfloat',this)},remove:function(component,autoDestroy){var dockedItems=this.dockedItems;dockedItems&&dockedItems.contains(component)?this.removeDocked(component,autoDestroy):Ext.container.Container.prototype.remove.call(this,component,autoDestroy);return component},removeBodyCls:function(cls){(this.rendered?this.body:this.getProtoBody()).removeCls(cls);
return this},removeUIClsFromElement:function(cls){var result=Ext.container.Container.prototype.removeUIClsFromElement.apply(this,arguments);this.removeBodyCls(['x-'+cls,this.baseCls+'-body-'+cls,this.baseCls+'-body-'+this.ui+'-'+cls]);return result},restoreDimension:function(){var dir=this.collapseDirection;return'top'===dir||'bottom'===dir?'height':'width'},restoreHiddenDocked:function(){this.setDockedItemsVisibility(this.hiddenOnCollapse,!0)},setBodyStyle:function(style,value){var body=this.rendered?
this.body:this.getProtoBody();Ext.isFunction(style)&&(style=style());1===arguments.length?(Ext.isString(style)&&(style=Ext.Element.parseStyles(style)),body.setStyle(style)):body.setStyle(style,value);return this},setBorder:function(border,targetEl){targetEl||(targetEl=this.header,border=border?!0===border?'1px':this.unitizeBox(border):0,targetEl&&(targetEl.isHeader?targetEl.setBorder(border):targetEl.border=border),this.rendered&&!1!==this.bodyBorder&&this.body.setStyle('border-width',border),this.updateLayout(),
this.border=border)},setCollapsed:function(collapsed){this[collapsed?'collapse':'expand']()},setDockedItemsVisibility:function(els,show){var items=this.getDockedItems(),len=items.length,i=0,item,reExpander;for(!1!==this.header&&(reExpander=this.getReExpander());i<len;i++)(item=items[i])&&item!==reExpander&&item.el&&els.add(item.el);els.setStyle('visibility',show?'':'hidden');els.clear()},setGlyph:function(glyph){var oldGlyph=this.glyph,header=this.header,placeholder=this.placeholder;glyph!==oldGlyph&&
(this.glyph=glyph,header?header.isHeader?header.setGlyph(glyph):header.glyph=glyph:(this.rendered||this.afterHeaderInit)&&this.updateHeader(),placeholder&&placeholder.setGlyph&&placeholder.setGlyph(glyph),this.fireEvent('glyphchange',this,glyph,oldGlyph))},setIcon:function(icon){var oldIcon=this.icon,header=this.header,placeholder=this.placeholder;icon!==oldIcon&&(this.icon=icon,header?header.isHeader?header.setIcon(icon):header.icon=icon:(this.rendered||this.afterHeaderInit)&&this.updateHeader(),
placeholder&&placeholder.setIcon&&placeholder.setIcon(icon),this.fireEvent('iconchange',this,icon,oldIcon))},setIconCls:function(iconCls){var oldIconCls=this.iconCls,header=this.header,placeholder=this.placeholder;iconCls!==oldIconCls&&(this.iconCls=iconCls,header?header.isHeader?header.setIconCls(iconCls):header.iconCls=iconCls:(this.rendered||this.afterHeaderInit)&&this.updateHeader(),placeholder&&placeholder.setIconCls&&placeholder.setIconCls(iconCls),this.fireEvent('iconclschange',this,iconCls,
oldIconCls))},setTitle:function(title){var oldTitle=this.title,header=this.header,reExpander=this.reExpander,placeholder=this.placeholder;title!==oldTitle&&(this.title=title,header?header.isHeader&&header.setTitle(title):(this.rendered||this.afterHeaderInit)&&this.updateHeader(),this.headingEl&&this.headingEl.setHtml(title),reExpander&&reExpander.setTitle(title),placeholder&&placeholder.setTitle&&placeholder.setTitle(title),this.fireEvent('titlechange',this,title,oldTitle))},setHiddenDocked:function(){var toHide=
new Ext.dom.CompositeElement;this.hiddenOnCollapse.add(this.body);toHide.add(this.body);this.setDockedItemsVisibility(toHide,!1)},setUI:function(ui){Ext.container.Container.prototype.setUI.apply(this,arguments);this.header&&this.header.rendered&&this.header.setUI(ui)},toggleCollapse:function(){return this.collapsed||this.floatedFromCollapse?this.expand():this.collapse()},updateCollapseTool:function(){var collapseTool=this.collapseTool;!collapseTool&&this.collapsible&&(this.collapseDirection=this.collapseDirection||
this.getHeaderPosition()||'top',collapseTool={xtype:'tool',handler:this.toggleCollapse,scope:this},this.isAccordionPanel&&(collapseTool.focusable=!1,collapseTool.ariaRole='presentation'),this.collapseTool=this.expandTool=collapseTool=Ext.widget(collapseTool));collapseTool&&(this.collapsed&&!this.isPlaceHolderCollapse()?(collapseTool.setType('expand-'+this.getOppositeDirection(this.collapseDirection)),collapseTool.setTooltip(this.expandToolText)):(collapseTool.setType('collapse-'+this.collapseDirection),
collapseTool.setTooltip(this.collapseToolText)))},navigateAccordionHeader:function(e){switch(e.getKey()){case e.UP:case e.LEFT:var target=this.findAccordionSibling('prev');break;case e.DOWN:case e.RIGHT:target=this.findAccordionSibling('next');break;case e.HOME:target=this.findAccordionSibling('first');break;case e.END:target=this.findAccordionSibling('last');break;case e.DELETE:target=this.findAccordionSibling('prev')||this.findAccordionSibling('next'),target||(e.doNotClose=!0)}e.stopEvent();target&&
target!==this&&target.header.titleCmp.focus()},navigateAccordionBody:function(e){var target;e.getKey()===e.UP&&(target=this);e.stopEvent();target&&target.header.titleCmp.focus()},findAccordionSibling:function(which,forceFind){var sibling;switch(which){case 'prev':(sibling=this.prev('[isAccordionPanel]'))||(this.accordionWrapOver?sibling=this.ownerCt.child('[isAccordionPanel]:last'):forceFind&&(sibling=this));break;case 'next':(sibling=this.next('[isAccordionPanel]'))||(this.accordionWrapOver?sibling=
this.ownerCt.child('[isAccordionPanel]:first'):forceFind&&(sibling=this));break;case 'first':sibling=this.ownerCt.child('[isAccordionPanel]:first');break;case 'last':sibling=this.ownerCt.child('[isAccordionPanel]:last')}return sibling},fireDefaultButton:function(e){var btn;if((btn=(this.lookupReferenceHolder(!1)||this).lookupReference(this.defaultButton))&&btn.click)return btn.click(e),e.stopEvent(),!1},maybeClose:function(e){this.closable&&(this.navigateAccordionHeader(e),e.doNotClose||this.close())},
canFocus:function(skipVisibility,includeFocusTarget){return this.collapsed?!(!this.placeholder||!this.placeholder.canFocus(skipVisibility,includeFocusTarget)):this.mixins.focusable.canFocus.call(this,skipVisibility,includeFocusTarget)},focus:function(){var placeholder=this.placeholder;this.collapsed&&placeholder&&placeholder.canFocus()?placeholder.focus.apply(placeholder,arguments):Ext.container.Container.prototype.focus.apply(this,arguments)},onFocusEnter:function(e){var ariaDom=this.ariaEl.dom;
Ext.container.Container.prototype.onFocusEnter.call(this,e);this.isAccordionPanel&&ariaDom&&ariaDom.setAttribute('aria-selected',!0)},onFocusLeave:function(e){var ariaDom=this.ariaEl.dom;Ext.container.Container.prototype.onFocusLeave.call(this,e);this.isAccordionPanel&&ariaDom&&ariaDom.setAttribute('aria-selected','false')},updateHeaderPosition:function(position){var header=this.header;header&&header.isHeader&&header.setDock(position)},updateIconAlign:function(align){var header=this.header;header&&
header.isHeader&&header.setIconAlign(align)},updateTitleAlign:function(align){var header=this.header;header&&header.isHeader&&header.setTitleAlign(align)},updateTitleRotation:function(rotation){var header=this.header;header&&header.isHeader&&header.setTitleRotation(rotation)},unghost:function(show,matchPosition,focus){focus=this.el;var ghostPanel=this.ghostPanel;ghostPanel&&(focus.show(),focus.setVisibilityMode(this.elVisMode),!1!==show?!1!==matchPosition&&this.setPagePosition(ghostPanel.getXY()):
focus.hide(),ghostPanel.el.hide(),ghostPanel.setHiddenState(!0))},updateHeader:function(force){var header=this.header,title=this.getTitle(),tools=this.tools,icon=this.getIcon(),glyph=this.getGlyph(),iconCls=this.getIconCls(),hasIcon=glyph||icon||iconCls,ariaDom=this.ariaEl.dom,headerPosition=this.getHeaderPosition();headerPosition='left'===headerPosition||'right'===headerPosition;Ext.isObject(header)||!1!==header&&(force||title||hasIcon||tools&&tools.length||this.collapsible&&!this.titleCollapse)?
(header&&header.isHeader?(header.dockToEl=!0,header.show()):(header=this.header=Ext.widget(Ext.merge({xtype:'header',title:title,titleAlign:this.getTitleAlign(),vertical:headerPosition,dock:this.getHeaderPosition()||'top',dockToEl:!0,titleRotation:this.getTitleRotation(),textCls:this.headerTextCls,iconCls:iconCls,iconAlign:this.getIconAlign(),icon:icon,glyph:glyph,baseCls:this.baseCls+'-header',tools:tools,ui:this.ui,id:this.id+'_header',overCls:this.headerOverCls,indicateDrag:this.draggable,frame:(this.frame||
this.alwaysFramed)&&this.frameHeader,ignoreParentFrame:this.frame||this.overlapHeader,ignoreBorderManagement:this.frame||this.ignoreHeaderBorderManagement,isAccordionHeader:this.isAccordionPanel,ownerCt:this,synthetic:!0,listeners:this.collapsible&&this.titleCollapse?{click:this.toggleCollapse,scope:this}:null},this.header)),this.addDocked(header,0)),this.isAccordionPanel?ariaDom?(ariaDom.setAttribute('aria-labelledby',header.id+'-title'),ariaDom.removeAttribute('aria-label')):(force=this.ariaRenderAttributes||
(this.ariaRenderAttributes={}),force['aria-labelledby']=header.id+'-title',delete force['aria-label']):title?'tabpanel'!==this.ariaRole&&(ariaDom?(ariaDom.setAttribute('aria-labelledby',header.id+'-title-textEl'),ariaDom.removeAttribute('aria-label')):(force=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),force['aria-labelledby']=header.id+'-title-textEl',delete force['aria-label'])):this.ariaRenderAttributes&&delete this.ariaRenderAttributes['aria-label']):(header&&header.hide(),title=
Ext.util.Format.stripTags(title),ariaDom?ariaDom.hasAttribute('aria-labelledby')||(title?ariaDom.setAttribute('aria-label',title):ariaDom.removeAttribute('aria-label')):(force=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),force['aria-labelledby']||(title?force['aria-label']=title:delete force['aria-label'])));this.isViewportBorderChild&&!this.hasOwnProperty('ariaRole')&&(this.ariaRole='region');title&&'region'===this.ariaRole?(header=this.headingEl)?header.setHtml(title):this.rendered?
(this.headingEl=Ext.dom.Helper.insertFirst(this.el,{tag:'div',id:this.id+'-headingEl',role:'heading','class':'x-hidden-clip',style:'height:0',html:title},!0),ariaDom.removeAttribute('aria-label'),ariaDom.setAttribute('aria-labelledby',this.id+'-headingEl')):(this.headingText=this.title,force=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),force['aria-labelledby']=this.id+'-headingEl',delete force['aria-label']):this.headingEl&&(this.headingEl.destroy(),this.headingEl=null)},statics:{floatCls:'x-border-region-slide-in'},
privates:{addUIToElement:function(){Ext.container.Container.prototype.addUIToElement.apply(this,arguments);this.addBodyCls(this.baseCls+'-body-'+this.ui)},applyTargetCls:function(targetCls){this.getProtoBody().addCls(targetCls)},getDefaultContentTarget:function(){return this.body},getTargetEl:function(){return this.body||this.protoBody||this.frameBody||this.el},initDraggable:function(){this.simpleDrag?this.initSimpleDraggable():this.dd=new Ext.panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)},
initResizable:function(resizable){Ext.container.Container.prototype.initResizable.call(this,resizable);this.collapsed&&this.resizer.disable()},initSimpleDraggable:function(){var dd=this.draggable;this.header||dd.delegate||this.updateHeader(!0);if(this.header||dd.delegate){dd=Ext.apply({el:this.el,delegate:this.header&&this.header.el},dd);if(this.constrain||this.constrainHeader)dd.constrain=this.constrain,dd.constrainDelegate=this.constrainHeader,dd.constrainTo=this.constrainTo||this.container;dd=
this.dd=new Ext.util.ComponentDragger(this,dd);this.relayEvents(dd,['dragstart','drag','dragend'])}},removeUIFromElement:function(){Ext.container.Container.prototype.removeUIFromElement.apply(this,arguments);this.removeBodyCls(this.baseCls+'-body-'+this.ui)},setupRenderTpl:function(renderTpl){Ext.container.Container.prototype.setupRenderTpl.apply(this,arguments);this.setupDockingRenderTpl(renderTpl)},slideOutFloatedPanel:function(preventAnimate){var me=this,compEl=me.el,collapseDirection,afterSlideOut=
function(){me.slideOutFloatedPanelEnd();me.el.removeCls('x-border-region-slide-in');me.fireEvent('endfloat',me)};if(!me.isSliding&&!me.destroyed){me.isSliding=!0;me.floated=!1;me.slideOutFloatedPanelBegin();if(preventAnimate)return compEl.hide(),afterSlideOut();'string'===typeof me.collapsed&&(collapseDirection=me.convertCollapseDir(me.collapsed));me.fireEvent('beginfloat',me);compEl.slideOut(collapseDirection,{preserveScroll:!0,duration:Ext.Number.from(me.animCollapse,Ext.fx.Anim.prototype.duration),
listeners:{afteranimate:afterSlideOut}});this.containsFocus&&(preventAnimate=this.findFocusTarget())&&preventAnimate.focus()}},slideOutFloatedPanelBegin:function(){var bodyMousedownListener=this.bodyMousedownListener;this.collapsed=this.floatedFromCollapse;this.setHiddenState(!0);this.floatedFromCollapse=null;Ext.destroy(this.pointerLeaveListener,this.phHoverListeners,this.elHoverListeners);bodyMousedownListener&&(this.bodyMousedownListener=bodyMousedownListener.destroy())},slideOutFloatedPanelEnd:function(suppressEvents){this.collapseTool&&
this.collapseTool.el.show();this.slideOutTask.cancel();this.isSliding=!1;suppressEvents||this.fireEvent('unfloat',this)}}},0,['panel'],['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},['widget.panel'],[['docking',Ext.container.DockingContainer]],[Ext.panel,'Panel',Ext,'Panel'],function(){var proto=this.prototype;proto.animCollapse=Ext.enableFx;proto.placeholderCollapseHideMode=Ext.Element.VISIBILITY});
Ext.define('Ext.theme.neptune.panel.Panel',{override:'Ext.panel.Panel',border:!1,bodyBorder:!1,initBorderProps:Ext.emptyFn,initBodyBorder:function(){!0!==this.bodyBorder&&arguments.callee.$previous.call(this)}});Ext.define('Overrides.panel.Panel',{override:'Ext.panel.Panel',minButtonWidth:80});
Ext.cmd.derive('Ext.layout.container.Table',Ext.layout.container.Container,{alternateClassName:'Ext.layout.TableLayout',type:'table',createsInnerCt:!0,targetCls:'x-table-layout-ct',tableCls:'x-table-layout',cellCls:'x-table-layout-cell',childEls:['table','tbody'],tableAttrs:null,getItemSizePolicy:function(item){return this.autoSizePolicy},initInheritedState:function(inheritedState,inheritedStateInner){inheritedStateInner.inShrinkWrapTable=!0},getLayoutItems:function(){var result=[],items=Ext.layout.container.Container.prototype.getLayoutItems.call(this),
len=items.length,i;for(i=0;i<len;i++){var item=items[i];item.hidden||result.push(item)}return result},getHiddenItems:function(){var result=[],items=this.owner.items.items,len=items.length,i;for(i=0;i<len;++i){var item=items[i];item.rendered&&item.hidden&&result.push(item)}return result},renderChildren:function(){var items=this.getLayoutItems(),tbody=this.tbody.dom,rows=tbody.rows,len=items.length,hiddenItems=this.getHiddenItems(),i;var cells=this.calculateCells(items);for(i=0;i<len;i++){var curCell=
cells[i];var rowIdx=curCell.rowIdx;curCell=curCell.cellIdx;var item=items[i];var trEl=rows[rowIdx];trEl||(trEl=tbody.insertRow(rowIdx),this.trAttrs&&trEl.set(this.trAttrs));var tdEl=Ext.get(trEl.cells[curCell]||trEl.insertCell(curCell));item.rendered?this.isValidParent(item,tdEl,rowIdx,curCell,tbody)||this.moveItem(item,tdEl,0):this.renderItem(item,tdEl,0);this.tdAttrs&&tdEl.set(this.tdAttrs);item.tdAttrs&&tdEl.set(item.tdAttrs);tdEl.set({colSpan:item.colspan||1,rowSpan:item.rowspan||1,cls:this.cellCls+
' '+(item.cellCls||'')});if(!cells[i+1]||cells[i+1].rowIdx!==rowIdx)for(curCell++;trEl.cells[curCell];)trEl.deleteCell(curCell)}for(rowIdx++;tbody.rows[rowIdx];)tbody.deleteRow(rowIdx);i=0;for(len=hiddenItems.length;i<len;++i)this.ensureInDocument(hiddenItems[i].getEl())},ensureInDocument:function(el){for(var dom=el.dom.parentNode;dom;){if('BODY'===dom.tagName.toUpperCase())return;dom=dom.parentNode}Ext.getDetachedBody().appendChild(el)},calculate:function(ownerContext){if(ownerContext.hasDomProp('containerChildrenSizeDone')){var targetContext=
ownerContext.targetContext,widthShrinkWrap=ownerContext.widthModel.shrinkWrap,heightShrinkWrap=ownerContext.heightModel.shrinkWrap,shrinkWrap=heightShrinkWrap||widthShrinkWrap,table=shrinkWrap&&this.table.dom;targetContext=shrinkWrap&&targetContext.getPaddingInfo();widthShrinkWrap&&ownerContext.setContentWidth(table.offsetWidth+targetContext.width,!0);heightShrinkWrap&&ownerContext.setContentHeight(table.offsetHeight+targetContext.height,!0)}else this.done=!1},calculateCells:function(items){var cells=
[],rowIdx=0,colIdx=0,cellIdx=0,totalCols=this.columns||Infinity,rowspans=[],len=items.length,item,i,j;for(i=0;i<len;i++){for(item=items[i];colIdx>=totalCols||0<rowspans[colIdx];)if(colIdx>=totalCols)for(cellIdx=colIdx=0,rowIdx++,j=0;j<totalCols;j++)0<rowspans[j]&&rowspans[j]--;else colIdx++;cells.push({rowIdx:rowIdx,cellIdx:cellIdx});for(j=item.colspan||1;j;--j)rowspans[colIdx]=item.rowspan||1,++colIdx;++cellIdx}return cells},getRenderTree:function(){var items=this.getLayoutItems(),rows=[],result=
Ext.apply({tag:'table',id:this.owner.id+'-table','data-ref':'table',role:'presentation',cls:this.tableCls,cellspacing:0,cellpadding:0,cn:{tag:'tbody',id:this.owner.id+'-tbody','data-ref':'tbody',role:'presentation',cn:rows}},this.tableAttrs),tdAttrs=this.tdAttrs,i,len=items.length;var cells=this.calculateCells(items);for(i=0;i<len;i++){var item=items[i];var curCell=cells[i];var rowIdx=curCell.rowIdx;var cellIdx=curCell.cellIdx;curCell=rows[rowIdx];curCell||(curCell=rows[rowIdx]={tag:'tr',role:'presentation',
cn:[]},this.trAttrs&&Ext.apply(curCell,this.trAttrs));rowIdx=curCell.cn[cellIdx]={tag:'td',role:'presentation'};tdAttrs&&Ext.apply(rowIdx,tdAttrs);Ext.apply(rowIdx,{colSpan:item.colspan||1,rowSpan:item.rowspan||1,cls:this.cellCls+' '+(item.cellCls||'')});this.configureItem(item);rowIdx.cn=item.getRenderTree()}return result},isValidParent:function(item,target,rowIdx,cellIdx){return 3===arguments.length?this.table.isAncestor(item.el):item.el.dom.parentNode===this.tbody.dom.rows[rowIdx].cells[cellIdx]}},
0,0,0,0,['layout.table'],0,[Ext.layout.container,'Table',Ext.layout,'TableLayout'],0);
Ext.cmd.derive('Ext.container.Monitor',Ext.Base,{target:null,selector:'',scope:null,addHandler:null,removeHandler:null,invalidateHandler:null,clearPropertiesOnDestroy:!1,clearPrototypeOnDestroy:!1,disabled:0,constructor:function(config){Ext.apply(this,config)},destroy:function(){this.unbind();this.callParent()},bind:function(target){this.target=target;target.on('beforedestroy',this.disable,this);this.onContainerAdd(target)},unbind:function(){var target=this.target;target&&!target.destroyed&&(this.onContainerRemove(target,
target),target.un('beforedestroy',this.disable,this));this.items=Ext.destroy(this.items)},disable:function(){++this.disabled},enable:function(){0<this.disabled&&--this.disabled},handleAdd:function(ct,comp){if(!this.disabled){if(Ext.ComponentQuery.is(comp,this.selector))this.onItemAdd(comp.ownerCt,comp);if(comp.isQueryable)this.onContainerAdd(comp)}},onItemAdd:function(ct,comp){ct=this.items;var handler=this.addHandler;this.disabled||(handler&&handler.call(this.scope||comp,comp),ct&&ct.add(comp));
comp.clearPropertiesOnDestroy=comp.clearPrototypeOnDestroy=!1},onItemRemove:function(ct,comp){ct=this.items;var handler=this.removeHandler;this.disabled||(handler&&handler.call(this.scope||comp,comp),ct&&ct.remove(comp))},onContainerAdd:function(ct,preventChildren){var len;if(ct.isContainer)ct.on({scope:this,add:this.handleAdd,dockedadd:this.handleAdd,remove:this.handleRemove,dockedremove:this.handleRemove});if(!0!==preventChildren){preventChildren=ct.query(this.selector);var i=0;for(len=preventChildren.length;i<
len;++i){var comp=preventChildren[i];this.onItemAdd(comp.ownerCt,comp)}}preventChildren=ct.query('\x3econtainer');i=0;for(len=preventChildren.length;i<len;++i)this.onContainerAdd(preventChildren[i],!0);ct.clearPropertiesOnDestroy=ct.clearPrototypeOnDestroy=!1},handleRemove:function(ct,comp){if(!this.disabled){if(Ext.ComponentQuery.is(comp,this.selector))this.onItemRemove(ct,comp);if(comp.isQueryable)this.onContainerRemove(ct,comp)}},onContainerRemove:function(ct,comp){var len;if(!comp.destroyed&&
comp.isContainer&&(this.removeCtListeners(comp),!comp.destroying)){ct=comp.query(this.selector);var i=0;for(len=ct.length;i<len;++i){var item=ct[i];this.onItemRemove(item.ownerCt,item)}ct=comp.query('container');i=0;for(len=ct.length;i<len;++i)this.removeCtListeners(ct[i])}this.invalidateItems(!0)},removeCtListeners:function(ct){ct.un({scope:this,add:this.handleAdd,dockedadd:this.handleAdd,remove:this.handleRemove,dockedremove:this.handleRemove})},getItems:function(){var items=this.items;items||(items=
this.items=new Ext.util.MixedCollection,items.addAll(this.target.query(this.selector)));return items},invalidateItems:function(triggerHandler){var handler=this.invalidateHandler;triggerHandler&&handler&&handler.call(this.scope||this,this);this.items=Ext.destroy(this.items)}},1,0,0,0,0,0,[Ext.container,'Monitor'],0);
Ext.cmd.derive('Ext.plugin.Responsive',Ext.mixin.Responsive,{id:'responsive',isPlugin:!0,constructor:function(config){var cmp=config.cmp;config=Ext.apply({responsiveConfig:cmp.responsiveConfig,responsiveFormulas:cmp.responsiveFormulas},config);delete config.cmp;this.cmp=cmp;this.initConfig(config);this.transformed&&(cmp.setConfig(this.transformed),this.transformed=null)},init:Ext.emptyFn,privates:{transformInstanceConfig:function(config){var transformed=Ext.mixin.Responsive.prototype.transformInstanceConfig.call(this,
config);transformed.ptype&&(transformed=Ext.apply({},transformed),delete transformed.ptype);this.transformed=transformed;config=Ext.apply({},config);delete config.ptype;delete config.responsiveConfig;delete config.responsiveFormulas;return config},updateResponsiveState:function(){var config=this.getResponsiveState();this.cmp.setConfig(config)}}},1,0,0,0,['plugin.responsive'],0,[Ext.plugin,'Responsive'],0);
Ext.cmd.derive('Ext.plugin.Viewport',Ext.plugin.Responsive,{setCmp:function(cmp){(this.cmp=cmp)&&!cmp.isViewport&&(this.decorate(cmp),cmp.renderConfigs&&cmp.flushRenderConfigs(),cmp.setupViewport())},statics:{decorate:function(target){Ext.applyIf(target.prototype||target,{ariaRole:'application',viewportCls:'x-viewport'});Ext.override(target,{isViewport:!0,preserveElOnDestroy:!0,initComponent:function(){this.callParent();this.setupViewport()},getSizeModel:function(){var configured=Ext.layout.SizeModel.configured;
return configured.pairsByHeightOrdinal[configured.ordinal]},handleViewportResize:function(){var Element=Ext.dom.Element,width=Element.getViewportWidth();Element=Element.getViewportHeight();width===this.width&&Element===this.height||this.setSize(width,Element)},setupViewport:function(){var el=document.body;el.id||(el.id=this.id);el.setAttribute('data-componentid',this.id);this.ariaStaticRoles[this.ariaRole]||el.setAttribute('role',this.ariaRole);el=this.el=Ext.getBody();Ext.fly(document.documentElement).addCls(this.viewportCls);
el.setHeight=el.setWidth=Ext.emptyFn;el.dom.scroll='no';this.allowDomMove=!1;this.renderTo=el;Ext.supports.Touch&&this.addMeta('apple-mobile-web-app-capable','yes');Ext.getScrollbarSize();this.width=this.height=void 0;this.initialViewportHeight=Ext.Element.getViewportHeight();this.initialViewportWidth=Ext.Element.getViewportWidth()},afterLayout:function(layout){Ext.supports.Touch&&(document.body.scrollTop=0);this.callParent([layout])},onRender:function(){this.getOverflowEl();var body=Ext.getBody();
this.callParent(arguments);Ext.setViewportScroller(this.getScrollable()||{x:!1,y:!1,element:body});this.getOverflowEl()!==body&&body.setStyle('overflow','hidden');this.width=this.initialViewportWidth;this.height=this.initialViewportHeight;this.initialViewportWidth=this.initialViewportHeight=null},initInheritedState:function(inheritedState,inheritedStateInner){var root=Ext.rootInheritedState;inheritedState!==root?this.initInheritedState(this.inheritedState=root,this.inheritedStateInner=Ext.Object.chain(root)):
this.callParent([inheritedState,inheritedStateInner])},doDestroy:function(){var root=Ext.rootInheritedState,key;for(key in root)'rtl'!==key&&delete root[key];this.removeUIFromElement();this.el.removeCls(this.baseCls);Ext.fly(document.body.parentNode).removeCls(this.viewportCls);this.callParent()},addMeta:function(name,content){var meta=document.createElement('meta');meta.setAttribute('name',name);meta.setAttribute('content',content);Ext.getHead().appendChild(meta)},privates:{applyTargetCls:function(targetCls){this.el===
this.getTargetEl()?this.el.addCls(targetCls):this.callParent([targetCls])},disableTabbing:function(){var el=this.el;el&&el.saveTabbableState({skipSelf:!0})},enableTabbing:function(){var el=this.el;el&&el.restoreTabbableState(!0)}}})}},privates:{updateResponsiveState:function(){this.cmp.handleViewportResize();Ext.plugin.Responsive.prototype.updateResponsiveState.call(this)}}},0,0,0,0,['plugin.viewport'],0,[Ext.plugin,'Viewport'],function(Viewport){Viewport.prototype.decorate=Viewport.decorate});
Ext.cmd.derive('Ext.container.Viewport',Ext.container.Container,{alternateClassName:'Ext.Viewport',ariaRole:'application',privates:{updateResponsiveState:function(){this.handleViewportResize();this.mixins.responsive.updateResponsiveState.call(this)}}},0,['viewport'],['component','box','container','viewport'],{component:!0,box:!0,container:!0,viewport:!0},['widget.viewport'],[[Ext.mixin.Responsive.prototype.mixinId||Ext.mixin.Responsive.$className,Ext.mixin.Responsive]],[Ext.container,'Viewport',Ext,
'Viewport'],function(){Ext.plugin.Viewport.decorate(this)});
Ext.cmd.derive('Ext.layout.container.Anchor',Ext.layout.container.Auto,{alternateClassName:'Ext.layout.AnchorLayout',type:'anchor',defaultAnchor:'100%',parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:!0,setsItemSize:!0,beginLayoutCycle:function(ownerContext){var dimensions=0,anchorSpec,i;Ext.layout.container.Auto.prototype.beginLayoutCycle.apply(this,arguments);var childItems=ownerContext.childItems;var length=childItems.length;for(i=0;i<length;++i){var childContext=childItems[i];if(anchorSpec=
childContext.target.anchorSpec)if(childContext.widthModel.calculated&&anchorSpec.right&&(dimensions|=1),childContext.heightModel.calculated&&anchorSpec.bottom&&(dimensions|=2),3===dimensions)break}ownerContext.anchorDimensions=dimensions},calculateItems:function(ownerContext,containerSize){var childItems=ownerContext.childItems,length=childItems.length,gotHeight=containerSize.gotHeight,gotWidth=containerSize.gotWidth,ownerHeight=containerSize.height;containerSize=containerSize.width;var knownDimensions=
(gotWidth?1:0)|(gotHeight?2:0);ownerContext=ownerContext.anchorDimensions;var i;if(!ownerContext)return!0;for(i=0;i<length;i++){var childContext=childItems[i];var childMargins=childContext.getMarginInfo();var anchorSpec=childContext.target.anchorSpec;if(gotWidth&&childContext.widthModel.calculated){var width=anchorSpec.right(containerSize)-childMargins.width;width=this.adjustWidthAnchor(width,childContext);childContext.setWidth(width)}gotHeight&&childContext.heightModel.calculated&&(anchorSpec=anchorSpec.bottom(ownerHeight)-
childMargins.height,anchorSpec=this.adjustHeightAnchor(anchorSpec,childContext),childContext.setHeight(anchorSpec))}return(knownDimensions&ownerContext)===ownerContext},anchorFactory:{offset:function(delta){return function(v){return v+delta}},ratio:function(ratio){return function(v){return Math.floor(v*ratio)}},standard:function(diff){return function(v){return v-diff}}},parseAnchor:function(a,start,cstart){if(a&&'none'!==a){var factory=this.anchorFactory;if(this.parseAnchorRE.test(a))return factory.standard(cstart-
start);if(-1!==a.indexOf('%'))return factory.ratio(.01*parseFloat(a.replace('%','')));a=parseInt(a,10);if(!isNaN(a))return factory.offset(a)}return null},adjustWidthAnchor:function(value,childContext){return value},adjustHeightAnchor:function(value,childContext){return value},configureItem:function(item){var owner=this.owner,anchor=item.anchor;Ext.layout.container.Auto.prototype.configureItem.apply(this,arguments);item.anchor||!item.items||Ext.isNumber(item.width)||(item.anchor=anchor=this.defaultAnchor);
if(owner.anchorSize)if('number'===typeof owner.anchorSize)var anchorWidth=owner.anchorSize;else{anchorWidth=owner.anchorSize.width;var anchorHeight=owner.anchorSize.height}else anchorWidth=owner.initialConfig.width,anchorHeight=owner.initialConfig.height;anchor&&(owner=anchor.split(' '),item.anchorSpec={right:this.parseAnchor(owner[0],item.initialConfig.width,anchorWidth),bottom:this.parseAnchor(owner[1],item.initialConfig.height,anchorHeight)})},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(item){item=item.anchorSpec;var key='$',policy=this.sizePolicy;if(item){var sizeModel=this.owner.getSizeModel();item.right&&!sizeModel.width.shrinkWrap&&(policy=policy.r);item.bottom&&!sizeModel.height.shrinkWrap&&(key='b')}return policy[key]}},0,0,0,0,['layout.anchor'],0,[Ext.layout.container,
'Anchor',Ext.layout,'AnchorLayout'],0);
Ext.cmd.derive('Ext.layout.container.Column',Ext.layout.container.Auto,{alternateClassName:'Ext.layout.ColumnLayout',type:'column',itemCls:'x-column',targetCls:'x-column-layout-ct',clearSide:'left',columnWidthSizePolicy:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},createsInnerCt:!0,manageOverflow:!0,setsItemSize:!0,needsItemSize:!0,isItemShrinkWrap:function(item){return!0},getItemSizePolicy:function(item,ownerSizeModel){return item.columnWidth&&(ownerSizeModel||(ownerSizeModel=this.owner.getSizeModel()),
!ownerSizeModel.width.shrinkWrap)?this.columnWidthSizePolicy:this.autoSizePolicy},calculateItems:function(ownerContext,containerSize){var columnCount=this.columnCount,targetContext=ownerContext.targetContext,items=ownerContext.childItems,len=items.length,contentWidth=0,gotWidth=containerSize.gotWidth;if(!1===gotWidth){targetContext.domBlock(this,'width');var blocked=!0}else if(gotWidth)var availableWidth=containerSize.width;else return!0;for(containerSize=0;containerSize<len;++containerSize)if(targetContext=
items[containerSize],columnCount&&(containerSize%columnCount?targetContext.setProp('clear',null):targetContext.setProp('clear',this.clearSide)),gotWidth=targetContext.getMarginInfo().width,!targetContext.widthModel.calculated){var itemWidth=targetContext.getProp('width');'number'!==typeof itemWidth&&(targetContext.block(this,'width'),blocked=!0);contentWidth+=itemWidth+gotWidth}if(!blocked){availableWidth=availableWidth<contentWidth?0:availableWidth-contentWidth;for(containerSize=0;containerSize<
len;++containerSize)targetContext=items[containerSize],targetContext.widthModel.calculated&&(gotWidth=targetContext.marginInfo.width,itemWidth=targetContext.target.columnWidth,itemWidth=Math.floor(itemWidth*availableWidth)-gotWidth,itemWidth=targetContext.setWidth(itemWidth),contentWidth+=itemWidth+gotWidth);ownerContext.setContentWidth(contentWidth+ownerContext.paddingContext.getPaddingInfo().width)}return!blocked}},0,0,0,0,['layout.column'],0,[Ext.layout.container,'Column',Ext.layout,'ColumnLayout'],
0);
Ext.cmd.derive('Ext.dd.DragTracker',Ext.Base,{active:!1,trackOver:!1,tolerance:5,autoStart:!1,constructor:function(config){Ext.apply(this,config);this.dragRegion=new Ext.util.Region(0,0,0,0);this.el&&this.initEl(this.el);this.mixins.observable.constructor.call(this);this.disabled&&this.disable();if(Ext.supports.Touch)Ext.getWin().on({touchstart:'onWindowTouchStart',scope:this,capture:!0})},initEl:function(el){var delegate=this.delegate,touchScrollable;this.el=el=Ext.get(el);el.addCls('x-unselectable');delegate&&
delegate.isElement&&(this.handle=delegate);this.delegate=this.handle?void 0:this.delegate;Ext.supports.Touch&&(touchScrollable=(delegate=Ext.ComponentManager.fromElement(el))&&delegate.getScrollable())&&(delegate=touchScrollable.getElement(),touchScrollable=this.handle&&!delegate.contains(this.handle)?!1:this.delegate&&!delegate.down(this.delegate)?!1:touchScrollable.getX()||touchScrollable.getY());this.handle||(this.handle=el);this.handleListeners={scope:this,delegate:this.delegate,dragstart:this.onDragStart};
touchScrollable?(this.handleListeners.longpress=this.onMouseDown,this.handleListeners.mousedown={fn:this.onMouseDown,delegate:this.delegate,translate:!1},this.handleListeners.contextmenu=function(e){e.stopEvent()}):this.handleListeners.mousedown=this.onMouseDown;Ext.supports.TouchEvents||!this.trackOver&&!this.overCls||Ext.apply(this.handleListeners,{mouseover:this.onMouseOver,mouseout:this.onMouseOut});this.mon(this.handle,this.handleListeners);this.keyNav=new Ext.util.KeyNav({target:el,up:this.onResizeKeyDown,
left:this.onResizeKeyDown,right:this.onResizeKeyDown,down:this.onResizeKeyDown,scope:this})},disable:function(){this.disabled=!0},enable:function(){this.disabled=!1},destroy:function(){this.endDrag({});this.el=this.handle=this.onBeforeStart=this.onStart=this.onDrag=this.onEnd=this.onCancel=null;this.callParent()},onWindowTouchStart:function(e){if(this.mouseIsDown)this.onMouseUp(e)},onMouseOver:function(e,target){var len;if(!this.disabled&&(e.within(e.target,!0,!0)||this.delegate)){var handleCls=this.handleCls;
this.mouseIsOut=!1;if(handleCls){var i=0;for(len=this.handleEls.length;i<len;i++){var el=this.handleEls[i];var cls=el.delegateCls;cls||(cls=el.delegateCls=[handleCls,'-',el.region,'-over'].join(''));el.addCls([cls,this.overCls])}}this.fireEvent('mouseover',this,e,this.delegate?e.getTarget(this.delegate,target):this.handle)}},onMouseOut:function(e){var len;if(this.mouseIsDown)this.mouseIsOut=!0;else{if(this.handleCls){var i=0;for(len=this.handleEls.length;i<len;i++){var el=this.handleEls[i];el.removeCls([el.delegateCls,
this.overCls])}}this.fireEvent('mouseout',this,e)}},onMouseDown:function(e,target){var trackEvent=e.parentEvent||e;this.disabled||trackEvent.dragTracked||(this.dragTarget=this.delegate?target:this.handle.dom,this.startXY=this.lastXY=e.getXY(),this.startRegion=Ext.fly(this.dragTarget).getRegion(),!1===this.fireEvent('mousedown',this,e)||!1===this.fireEvent('beforedragstart',this,e)||!1===this.onBeforeStart(e))||((this.mouseIsDown=!0,trackEvent.dragTracked=!0,this.el.setCapture(),e.stopPropagation(),
!1===this.preventDefault&&'touch'!==e.pointerType||e.preventDefault(),Ext.getDoc().on({scope:this,capture:!0,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect}),this.dragEnded=!1,this.tolerance)?this.autoStart&&(this.timer=Ext.defer(this.triggerStart,!0===this.autoStart?1E3:this.autoStart,this,[e])):this.triggerStart())},onMouseMove:function(e,target){target=e.getXY();var s=this.startXY;e.stopPropagation();!1!==this.preventDefault&&e.preventDefault();if(!this.dragEnded){this.lastXY=
target;if(!this.active)if(Math.max(Math.abs(s[0]-target[0]),Math.abs(s[1]-target[1]))>this.tolerance)this.triggerStart(e);else return;if(!1===this.fireEvent('mousemove',this,e))this.onMouseUp(e);else this.onDrag(e),this.fireEvent('drag',this,e)}},onMouseUp:function(e){this.mouseIsDown=!1;this.mouseIsOut&&(this.mouseIsOut=!1,this.onMouseOut(e));!1!==this.preventDefault&&e.preventDefault();Ext.isIE&&document.releaseCapture&&document.releaseCapture();this.fireEvent('mouseup',this,e);this.endDrag(e)},
endDrag:function(e){var wasActive=this.active;Ext.getDoc().un({mousemove:this.onMouseMove,mouseup:this.onMouseUp,selectstart:this.stopSelect,capture:!0,scope:this});this.clearStart();this.active=!1;this.dragEnded=!0;if(wasActive)this.onEnd(e),this.fireEvent('dragend',this,e);else this.onCancel(e);this._constrainRegion=null},triggerStart:function(e){this.clearStart();this.active=!0;this.onStart(e);this.fireEvent('dragstart',this,e)},clearStart:function(){var timer=this.timer;timer&&(clearTimeout(timer),
this.timer=null)},stopSelect:function(e){e.stopEvent();return!1},onBeforeStart:function(e){},onStart:function(xy){},onDrag:function(e){},onCancel:function(e){},onEnd:function(e){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getConstrainRegion:function(){if(this.constrainTo){if(this.constrainTo instanceof Ext.util.Region)return this.constrainTo;this._constrainRegion||(this._constrainRegion=Ext.fly(this.constrainTo).getViewRegion())}else this._constrainRegion||
(this._constrainRegion=this.getDragCt().getViewRegion());return this._constrainRegion},getXY:function(constrain){return constrain?this.constrainModes[constrain](this,this.lastXY):this.lastXY},getOffset:function(constrain){constrain=this.getXY(constrain);var s=this.startXY;return[constrain[0]-s[0],constrain[1]-s[1]]},onDragStart:function(e){e.stopPropagation()},constrainModes:{point:function(me,xy){var dr=me.dragRegion;me=me.getConstrainRegion();if(!me)return xy;dr.x=dr.left=dr[0]=dr.right=xy[0];dr.y=
dr.top=dr[1]=dr.bottom=xy[1];dr.constrainTo(me);return[dr.left,dr.top]},dragTarget:function(me,xy){var s=me.startXY,dr=me.startRegion.copy();me=me.getConstrainRegion();if(!me)return xy;dr.translateBy(xy[0]-s[0],xy[1]-s[1]);dr.right>me.right&&(xy[0]+=s=me.right-dr.right,dr.left+=s);dr.left<me.left&&(xy[0]+=me.left-dr.left);dr.bottom>me.bottom&&(xy[1]+=s=me.bottom-dr.bottom,dr.top+=s);dr.top<me.top&&(xy[1]+=me.top-dr.top);return xy}}},1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.dd,'DragTracker'],
0);
Ext.cmd.derive('Ext.resizer.SplitterTracker',Ext.dd.DragTracker,{enabled:!0,overlayCls:'x-resizable-overlay',createDragOverlay:function(){var El=Ext.dom.Element;var overlay=this.overlay=Ext.getBody().createChild({role:'presentation',cls:this.overlayCls,html:'\x26#160;'});overlay.unselectable();overlay.setSize(El.getDocumentWidth(),El.getDocumentHeight());overlay.show()},getPrevCmp:function(){return this.getSplitter().previousSibling(':not([hidden])')},getNextCmp:function(){return this.getSplitter().nextSibling(':not([hidden])')},onBeforeStart:function(e){var prevCmp=
this.getPrevCmp(),nextCmp=this.getNextCmp(),collapseEl=this.getSplitter().collapseEl;e=e.getTarget();if(!prevCmp||!nextCmp||collapseEl&&e===collapseEl.dom||nextCmp.collapsed||prevCmp.collapsed)return!1;this.prevBox=prevCmp.getEl().getBox();this.nextBox=nextCmp.getEl().getBox();return(this.constrainTo=prevCmp=this.calculateConstrainRegion())?prevCmp:!1},onMouseDown:function(e,target){Ext.dd.DragTracker.prototype.onMouseDown.call(this,e,target);this.mouseIsDown&&this.getSplitter().el.dom===target&&
Ext.dom.Element.maskIframes()},onMouseUp:function(e){Ext.dd.DragTracker.prototype.onMouseUp.call(this,e);Ext.dom.Element.unmaskIframes()},onStart:function(e){e=this.getSplitter();this.createDragOverlay();e.addCls(e.baseCls+'-active')},onResizeKeyDown:function(e){var splitter=this.getSplitter(),key=e.getKey(),incrIdx='vertical'===splitter.orientation?0:1;key=key===e.UP||key===e.LEFT?-1:1;!this.active&&this.onBeforeStart(e)&&(Ext.fly(e.target).on('keyup',this.onResizeKeyUp,this),this.triggerStart(e),
this.onMouseDown(e),this.startXY=splitter.getXY(),this.lastKeyDownXY=Ext.Array.slice(this.startXY),e=this.easing=new Ext.fx.easing.Linear,e.setStartTime(Ext.Date.now()),e.setStartValue(1),e.setEndValue(4),e.setDuration(2E3));this.active&&(this.lastKeyDownXY[incrIdx]=Math.round(this.lastKeyDownXY[incrIdx]+key*this.easing.getValue()),this.lastXY=this.lastKeyDownXY,splitter.setXY(this.getXY('dragTarget')))},onResizeKeyUp:function(e){this.onMouseUp(e)},calculateConstrainRegion:function(){var splitter=
this.getSplitter(),splitWidth=splitter.getWidth(),defaultMin=splitter.defaultSplitMin,orient=splitter.orientation;splitter=this.prevBox;var prevCmp=this.getPrevCmp(),nextBox=this.nextBox,nextCmp=this.getNextCmp();'vertical'===orient?(splitWidth={prevCmp:prevCmp,nextCmp:nextCmp,prevBox:splitter,nextBox:nextBox,defaultMin:defaultMin,splitWidth:splitWidth},orient=new Ext.util.Region(splitter.y,this.getVertPrevConstrainRight(splitWidth),splitter.bottom,this.getVertPrevConstrainLeft(splitWidth)),splitWidth=
new Ext.util.Region(nextBox.y,this.getVertNextConstrainRight(splitWidth),nextBox.bottom,this.getVertNextConstrainLeft(splitWidth))):(orient=new Ext.util.Region(splitter.y+(prevCmp.minHeight||defaultMin),splitter.right,(prevCmp.maxHeight?splitter.y+prevCmp.maxHeight:nextBox.bottom-(nextCmp.minHeight||defaultMin))+splitWidth,splitter.x),splitWidth=new Ext.util.Region((nextCmp.maxHeight?nextBox.bottom-nextCmp.maxHeight:splitter.y+(prevCmp.minHeight||defaultMin))-splitWidth,nextBox.right,nextBox.bottom-
(nextCmp.minHeight||defaultMin),nextBox.x));return orient.intersect(splitWidth)},performResize:function(e,offset){var splitter=this.getSplitter(),orient=splitter.orientation;e=this.getPrevCmp();var nextCmp=this.getNextCmp();splitter=splitter.ownerCt;var flexedSiblings=splitter.query('\x3e[flex]'),len=flexedSiblings.length;orient='vertical'===orient;for(var i=0,dimension=orient?'width':'height',item,size;i<len;i++)item=flexedSiblings[i],size=orient?item.getWidth():item.getHeight(),item.flex=size;offset=
orient?offset[0]:offset[1];e&&(size=this.prevBox[dimension]+offset,e.flex?e.flex=size:e[dimension]=size);nextCmp&&(size=this.nextBox[dimension]-offset,nextCmp.flex?nextCmp.flex=size:nextCmp[dimension]=size);splitter.updateLayout()},endDrag:function(){this.overlay&&(this.overlay.destroy(),delete this.overlay);Ext.dd.DragTracker.prototype.endDrag.apply(this,arguments)},onEnd:function(e){var splitter=this.getSplitter();splitter.removeCls(splitter.baseCls+'-active');this.performResize(e,this.getResizeOffset())},
onDrag:function(e){e=this.getOffset('dragTarget');var splitter=this.getSplitter(),splitEl=splitter.getEl();'vertical'===splitter.orientation?splitEl.setX(this.startRegion.left+e[0]):splitEl.setY(this.startRegion.top+e[1])},getSplitter:function(){return this.splitter},getVertPrevConstrainRight:function(o){return(o.prevCmp.maxWidth?o.prevBox.x+o.prevCmp.maxWidth:o.nextBox.right-(o.nextCmp.minWidth||o.defaultMin))+o.splitWidth},getVertPrevConstrainLeft:function(o){return o.prevBox.x+(o.prevCmp.minWidth||
o.defaultMin)},getVertNextConstrainRight:function(o){return o.nextBox.right-(o.nextCmp.minWidth||o.defaultMin)},getVertNextConstrainLeft:function(o){return(o.nextCmp.maxWidth?o.nextBox.right-o.nextCmp.maxWidth:o.prevBox.x+(o.prevBox.minWidth||o.defaultMin))-o.splitWidth},getResizeOffset:function(){return this.getOffset('dragTarget')}},0,0,0,0,0,0,[Ext.resizer,'SplitterTracker'],0);
Ext.cmd.derive('Ext.dd.DDTarget',Ext.dd.DragDrop,{constructor:function(id,sGroup,config){id&&this.initTarget(id,sGroup,config)},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}},3,0,0,0,0,0,[Ext.dd,'DDTarget'],0);
Ext.cmd.derive('Ext.dd.ScrollManager',Ext.Base,{singleton:!0,dirTrans:{up:-1,left:-1,down:1,right:1},constructor:function(){var ddm=Ext.dd.DragDropManager;ddm.fireEvents=Ext.Function.createSequence(ddm.fireEvents,this.onFire,this);ddm.stopDrag=Ext.Function.createSequence(ddm.stopDrag,this.onStop,this);this.doScroll=this.doScroll.bind(this);this.ddmInstance=ddm;this.els={};this.dragEl=null;this.proc={}},onStop:function(e){e=Ext.dd.ScrollManager;e.dragEl=null;e.clearProc()},triggerRefresh:function(){this.ddmInstance.dragCurrent&&
this.ddmInstance.refreshCache(this.ddmInstance.dragCurrent.groups)},doScroll:function(){var me=this;if(me.ddmInstance.dragCurrent){var proc=me.proc,procEl=proc.el,scrollComponent=proc.component,ddScrollConfig=proc.el.ddScrollConfig,distance=ddScrollConfig&&ddScrollConfig.increment?ddScrollConfig.increment:me.increment;ddScrollConfig=ddScrollConfig&&'animate'in ddScrollConfig?ddScrollConfig.animate:me.animate;var afterScroll=function(){me.triggerRefresh()};ddScrollConfig&&(!0===ddScrollConfig?ddScrollConfig=
{callback:afterScroll}:ddScrollConfig.callback=ddScrollConfig.callback?Ext.Function.createSequence(ddScrollConfig.callback,afterScroll):afterScroll);scrollComponent?(distance*=me.dirTrans[proc.dir],'up'===proc.dir||'down'===proc.dir?scrollComponent.scrollBy(0,distance,ddScrollConfig):scrollComponent.scrollBy(distance,0,ddScrollConfig)):procEl.scroll(proc.dir,distance,ddScrollConfig);ddScrollConfig||afterScroll()}},clearProc:function(){var proc=this.proc;proc.id&&clearInterval(proc.id);proc.id=0;proc.el=
null;proc.dir=''},startProc:function(el,dir){var proc=this.proc;this.clearProc();proc.el=el;proc.dir=dir;dir=el.ddScrollConfig?el.ddScrollConfig.ddGroup:void 0;el=el.ddScrollConfig&&el.ddScrollConfig.frequency?el.ddScrollConfig.frequency:this.frequency;if(void 0===dir||this.ddmInstance.dragCurrent.ddGroup===dir)proc.id=Ext.interval(this.doScroll,el)},onFire:function(e,isDrop){var id;if(!isDrop&&this.ddmInstance.dragCurrent){this.dragEl&&this.dragEl===this.ddmInstance.dragCurrent||(this.dragEl=this.ddmInstance.dragCurrent,
this.refreshCache());e=e.getPoint();isDrop=this.proc;var els=this.els;for(id in els){var el=els[id];var elementRegion=el._region;var configSource=el.ddScrollConfig||this;if(elementRegion&&elementRegion.contains(e)&&el.isScrollable()){if(elementRegion.bottom-e.y<=configSource.vthresh){isDrop.el!==el&&this.startProc(el,'down');return}if(elementRegion.right-e.x<=configSource.hthresh){isDrop.el!==el&&this.startProc(el,'right');return}if(e.y-elementRegion.top<=configSource.vthresh){isDrop.el!==el&&this.startProc(el,
'up');return}if(e.x-elementRegion.left<=configSource.hthresh){isDrop.el!==el&&this.startProc(el,'left');return}}}this.clearProc()}},register:function(el){if(Ext.isArray(el))for(var i=0,len=el.length;i<len;i++)this.register(el[i]);else el=Ext.get(el),this.els[el.id]=el},unregister:function(el){if(Ext.isArray(el))for(var i=0,len=el.length;i<len;i++)this.unregister(el[i]);else el=Ext.get(el),delete this.els[el.id]},vthresh:25*(window.devicePixelRatio||1),hthresh:25*(window.devicePixelRatio||1),increment:100,
frequency:500,animate:!0,animDuration:.4,ddGroup:void 0,refreshCache:function(){var els=this.els,id;for(id in els)'object'===typeof els[id]&&(els[id]._region=els[id].getRegion())}},1,0,0,0,0,0,[Ext.dd,'ScrollManager'],0);
Ext.cmd.derive('Ext.dd.DropTarget',Ext.dd.DDTarget,{constructor:function(el,config){this.el=Ext.get(el);Ext.apply(this,config);this.containerScroll&&Ext.dd.ScrollManager.register(this.el);Ext.dd.DDTarget.prototype.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:!0})},containerScroll:!1,dropAllowed:'x-dd-drop-ok',dropNotAllowed:'x-dd-drop-nodrop',isTarget:!0,isNotifyTarget:!0,notifyEnter:function(dd,e,data){this.overClass&&this.el.addCls(this.overClass);return this.dropAllowed},
notifyOver:function(dd,e,data){return this.dropAllowed},notifyOut:function(dd,e,data){this.overClass&&this.el.removeCls(this.overClass)},notifyDrop:function(dd,e,data){this.overClass&&this.el.removeCls(this.overClass);return!1},destroy:function(){this.containerScroll&&Ext.dd.ScrollManager.unregister(this.el);Ext.dd.DDTarget.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.dd,'DropTarget'],0);
Ext.cmd.derive('Ext.dd.DragZone',Ext.dd.DragSource,{constructor:function(el,config){Ext.dd.DragSource.prototype.constructor.call(this,el,config);if(config=this.containerScroll)el=this.scrollEl||el,el=Ext.get(el),Ext.isObject(config)&&(el.ddScrollConfig=config),Ext.dd.ScrollManager.register(el)},getDragData:function(e){return Ext.dd.Registry.getHandleFromEvent(e)},onInitDrag:function(x,y){this.proxy.update(this.dragData.ddel.cloneNode(!0));this.onStartDrag(x,y);return!0},getRepairXY:function(e){return Ext.fly(this.dragData.ddel).getXY()},
destroy:function(){this.containerScroll&&Ext.dd.ScrollManager.unregister(this.scrollEl||this.el);Ext.dd.DragSource.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.dd,'DragZone'],0);
Ext.cmd.derive('Ext.dd.Registry',Ext.Base,{singleton:!0,constructor:function(){this.elements={};this.handles={};this.autoIdSeed=0},getId:function(el,autogen){if('string'===typeof el)return el;var id=el.id;id||!1===autogen||(id='extdd-'+ ++this.autoIdSeed,el.id=id);return id},register:function(el,data){data=data||{};'string'===typeof el&&(el=document.getElementById(el));data.ddel=el;this.elements[this.getId(el)]=data;!1!==data.isHandle&&(this.handles[data.ddel.id]=data);if(data.handles){el=data.handles;
var len;var i=0;for(len=el.length;i<len;i++)this.handles[this.getId(el[i])]=data}},unregister:function(el){el=this.getId(el,!1);var data=this.elements[el],len;if(data&&(delete this.elements[el],data.handles))for(el=data.handles,data=0,len=el.length;data<len;data++)delete this.handles[this.getId(el[data],!1)]},getHandle:function(id){'string'!==typeof id&&(id=id.id);return this.handles[id]},getHandleFromEvent:function(e){return(e=e.getTarget())?this.handles[e.id]:null},getTarget:function(id){'string'!==
typeof id&&(id=id.id);return this.elements[id]},getTargetFromEvent:function(e){return(e=e.getTarget())?this.elements[e.id]||this.handles[e.id]:null}},1,0,0,0,0,0,[Ext.dd,'Registry'],0);
Ext.cmd.derive('Ext.dd.DropZone',Ext.dd.DropTarget,{getTargetFromEvent:function(e){return Ext.dd.Registry.getTargetFromEvent(e)},onNodeEnter:function(n,dd,e,data){},onNodeOver:function(n,dd,e,data){return this.dropAllowed},onNodeOut:function(n,dd,e,data){},onNodeDrop:function(n,dd,e,data){return!1},onContainerOver:function(dd,e,data){return this.dropNotAllowed},onContainerDrop:function(dd,e,data){return!1},notifyEnter:function(dd,e,data){Ext.dd.DropTarget.prototype.notifyEnter.call(this,dd,e,data);
return this.dropNotAllowed},notifyOver:function(dd,e,data){var n=this.getTargetFromEvent(e);if(!n)return this.lastOverNode&&(this.onNodeOut(this.lastOverNode,dd,e,data),this.lastOverNode=null),this.onContainerOver(dd,e,data);if(this.lastOverNode!==n){if(this.lastOverNode)this.onNodeOut(this.lastOverNode,dd,e,data);this.onNodeEnter(n,dd,e,data);this.lastOverNode=n}return this.onNodeOver(n,dd,e,data)},notifyOut:function(dd,e,data){Ext.dd.DropTarget.prototype.notifyOut.call(this,dd,e,data);this.lastOverNode&&
(this.onNodeOut(this.lastOverNode,dd,e,data),this.lastOverNode=null)},notifyDrop:function(dd,e,data){var n=this.getTargetFromEvent(e);n=n?this.onNodeDrop(n,dd,e,data):this.onContainerDrop(dd,e,data);this.lastOverNode&&(this.onNodeOut(this.lastOverNode,dd,e,data),this.lastOverNode=null);return n},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}},0,0,0,0,0,0,[Ext.dd,'DropZone'],0);
Ext.cmd.derive('Ext.event.publisher.MouseEnterLeave',Ext.event.publisher.Dom,{type:'mouseEnterLeave'},0,0,0,0,0,0,[Ext.event.publisher,'MouseEnterLeave'],function(MouseEnterLeave){var eventMap={mouseover:'mouseenter',mouseout:'mouseleave'};Ext.supports.MouseEnterLeave||MouseEnterLeave.override({handledDomEvents:['mouseover','mouseout'],handledEvents:['mouseenter','mouseleave'],publishDelegatedDomEvent:function(e){e=this.callParent([e]);var target=e.getTarget();var relatedTarget=e.getRelatedTarget();
if(!relatedTarget||!Ext.fly(target).contains(relatedTarget))if(target=target.id)if(target=Ext.cache[target])if(relatedTarget=eventMap[e.type],e=e.chain({type:relatedTarget}),target.hasListeners[relatedTarget]&&(relatedTarget=target.events[relatedTarget]))if(relatedTarget=relatedTarget.directs)e.setCurrentTarget(target.dom),relatedTarget.fire(e,e.target)}});MouseEnterLeave.instance=new MouseEnterLeave});
Ext.cmd.derive('Ext.form.action.Action',Ext.Base,{alternateClassName:'Ext.form.Action',submitEmptyText:!0,constructor:function(config){config&&Ext.apply(this,config);config=config.params;Ext.isString(config)&&(this.params=Ext.Object.fromQueryString(config))},run:Ext.emptyFn,onFailure:function(response){var form=this.form,formActive=form&&!form.destroying&&!form.destroyed;this.response=response;this.failureType=Ext.form.action.Action.CONNECT_FAILURE;formActive&&form.afterAction(this,!1)},processResponse:function(response){this.response=
response;return response.responseText||response.responseXML?this.result=this.handleResponse(response):!0},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(){return{success:this.onSuccess,failure:this.onFailure,scope:this,timeout:1E3*(this.timeout||this.form.timeout)}},statics:{CLIENT_INVALID:'client',SERVER_INVALID:'server',
CONNECT_FAILURE:'connect',LOAD_FAILURE:'load'}},1,0,0,0,0,0,[Ext.form.action,'Action',Ext.form,'Action'],0);
Ext.cmd.derive('Ext.form.action.Load',Ext.form.action.Action,{alternateClassName:'Ext.form.Action.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(response){response=this.processResponse(response);var form=this.form,formActive=form&&!form.destroying&&!form.destroyed;!0!==response&&response.success&&response.data?formActive&&(form.clearInvalid(),form.setValues(response.data),
form.afterAction(this,!0)):(this.failureType=Ext.form.action.Action.LOAD_FAILURE,formActive&&form.afterAction(this,!1))},handleResponse:function(response){var reader=this.form.reader;return reader?(response=reader.read(response),reader=response.records&&response.records[0]?response.records[0].data:null,{success:response.success,data:reader}):Ext.decode(response.responseText)}},0,0,0,0,['formaction.load'],0,[Ext.form.action,'Load',Ext.form.Action,'Load'],0);
Ext.cmd.derive('Ext.form.action.Submit',Ext.form.action.Action,{alternateClassName:'Ext.form.Action.Submit',type:'submit',run:function(){var form=this.form;!1===this.clientValidation||form.isValid()?this.doSubmit():(this.failureType=Ext.form.action.Action.CLIENT_INVALID,form.afterAction(this,!1))},doSubmit:function(){var ajaxOptions=Ext.apply(this.createCallback(),{url:this.getUrl(),method:this.getMethod(),headers:this.headers}),form=this.form,jsonSubmit=this.jsonSubmit||form.jsonSubmit,paramsProp=
jsonSubmit?'jsonData':'params';if(form.hasUpload()){var formInfo=this.buildForm();ajaxOptions.form=formInfo.formEl;ajaxOptions.isUpload=!0}else ajaxOptions[paramsProp]=this.getParams(jsonSubmit);Ext.Ajax.request(ajaxOptions);formInfo&&this.cleanup(formInfo)},cleanup:function(formInfo){var formEl=formInfo.formEl,uploadEls=formInfo.uploadEls;formInfo=formInfo.uploadFields;var len=formInfo.length,i;for(i=0;i<len;++i){var field=formInfo[i];field.clearOnSubmit||field.restoreInput(uploadEls[i])}formEl&&
Ext.removeNode(formEl)},getParams:function(useModelValues){var configParams=Ext.form.action.Action.prototype.getParams.call(this);useModelValues=this.form.getValues(!1,!1,!1!==this.submitEmptyText,useModelValues,!0);return Ext.apply({},useModelValues,configParams)},buildForm:function(){var fieldsSpec=[],basicForm=this.form,params=this.getParams(),uploadFields=[],uploadEls=[],fields=basicForm.getFields().items,len=fields.length,key;for(basicForm=0;basicForm<len;++basicForm){var field=fields[basicForm];
field.isFileUpload()&&uploadFields.push(field)}for(key in params)if(params.hasOwnProperty(key))if(basicForm=params[key],Ext.isArray(basicForm))for(fields=basicForm.length,len=0;len<fields;len++)fieldsSpec.push(this.getFieldConfig(key,basicForm[len]));else fieldsSpec.push(this.getFieldConfig(key,basicForm));fieldsSpec={tag:'form',role:'presentation',action:this.getUrl(),method:this.getMethod(),target:this.target?Ext.isString(this.target)?this.target:Ext.fly(this.target).dom.name:'_self',style:'display:none',
cn:fieldsSpec};uploadFields.length&&(fieldsSpec.encoding=fieldsSpec.enctype='multipart/form-data');fieldsSpec=Ext.DomHelper.append(Ext.getBody(),fieldsSpec);len=uploadFields.length;for(basicForm=0;basicForm<len;++basicForm)params=uploadFields[basicForm].extractFileInput(),fieldsSpec.appendChild(params),uploadEls.push(params);return{formEl:fieldsSpec,uploadFields:uploadFields,uploadEls:uploadEls}},getFieldConfig:function(name,value){return{tag:'input',type:'hidden',name:name,value:Ext.String.htmlEncode(value)}},
onSuccess:function(response){var form=this.form,formActive=form&&!form.destroying&&!form.destroyed,success=!0;response=this.processResponse(response);!0===response||response.success||(response.errors&&formActive&&form.markInvalid(response.errors),this.failureType=Ext.form.action.Action.SERVER_INVALID,success=!1);formActive&&form.afterAction(this,success)},handleResponse:function(response){var errorReader=this.form.errorReader,len;if(errorReader){response=errorReader.read(response);var records=response.records;
errorReader=[];if(records){var i=0;for(len=records.length;i<len;i++)errorReader[i]=records[i].data}1>errorReader.length&&(errorReader=null);i={success:response.success,errors:errorReader}}else try{i=Ext.decode(response.responseText)}catch(e){i={success:!1,errors:[]}}return i}},0,0,0,0,['formaction.submit'],0,[Ext.form.action,'Submit',Ext.form.Action,'Submit'],0);
Ext.cmd.derive('Ext.form.action.StandardSubmit',Ext.form.action.Submit,{doSubmit:function(){var formInfo=this.buildForm();formInfo.formEl.submit();this.cleanup(formInfo)}},0,0,0,0,['formaction.standardsubmit'],0,[Ext.form.action,'StandardSubmit'],0);
Ext.cmd.derive('Ext.util.ComponentDragger',Ext.dd.DragTracker,{autoStart:500,constructor:function(comp,config){this.comp=comp;this.initialConstrainTo=config.constrainTo;Ext.dd.DragTracker.prototype.constructor.call(this,config)},onStart:function(e){e=this.comp;this.dragTarget=this.el;this.startRegion=this.el.getRegion();this.startPosition=e.getXY();e.ghost&&!e.liveDrag&&(this.proxy=e.ghost());if(this.constrain||this.constrainDelegate)this.constrainTo=this.calculateConstrainRegion();e.beginDrag&&e.beginDrag();
e.el.shim&&Ext.dom.Element.maskIframes()},calculateConstrainRegion:function(){var comp=this.comp,constrainTo=this.initialConstrainTo||this.comp.el.dom.parentNode,constraintInsets=comp.constraintInsets;var elRegion=this.proxy?this.proxy.el:comp.el;var shadow=elRegion.shadow;comp=shadow&&!this.constrainDelegate&&comp.constrainShadow&&!shadow.disabled?shadow.getShadowSize():0;constrainTo instanceof Ext.util.Region?constrainTo=constrainTo.copy():(constrainTo=Ext.fly(constrainTo),constrainTo=constrainTo.getConstrainRegion());
constraintInsets&&(constraintInsets=Ext.isObject(constraintInsets)?constraintInsets:Ext.Element.parseBox(constraintInsets),constrainTo.adjust(constraintInsets.top,constraintInsets.right,constraintInsets.bottom,constraintInsets.left));comp&&constrainTo.adjust(comp[0],-comp[1],-comp[2],comp[3]);this.constrainDelegate&&(constraintInsets=Ext.fly(this.handle).getRegion(),elRegion=elRegion.getRegion(),constrainTo.adjust(elRegion.top-constraintInsets.top,elRegion.right-constraintInsets.right,elRegion.bottom-
constraintInsets.bottom,elRegion.left-constraintInsets.left));return constrainTo},onDrag:function(e){e=this.proxy&&!this.comp.liveDrag?this.proxy:this.comp;var offset=this.getOffset(this.constrain||this.constrainDelegate?'dragTarget':null);e.setPagePosition(this.startPosition[0]+offset[0],this.startPosition[1]+offset[1])},onEnd:function(e){e=this.comp;e.destroyed||e.destroying||(this.proxy&&!e.liveDrag&&e.unghost(),e.endDrag&&e.endDrag(),e.el.shim&&Ext.dom.Element.unmaskIframes())}},1,0,0,0,0,0,[Ext.util,
'ComponentDragger'],0);
Ext.cmd.derive('Ext.window.Window',Ext.panel.Panel,{alternateClassName:'Ext.Window',baseCls:'x-window',resizable:!0,draggable:!0,constrain:!1,constrainHeader:!1,plain:!1,minimizable:!1,maximizable:!1,minHeight:50,minWidth:50,expandOnShow:!0,collapsible:!1,closable:!0,hidden:!0,autoRender:!0,hideMode:'offsets',floating:!0,alignOnScroll:!1,itemCls:'x-window-item',overlapHeader:!0,ignoreHeaderBorderManagement:!0,alwaysFramed:!0,isRootCfg:{isRoot:!0},isWindow:!0,ariaRole:'dialog',focusable:!0,tabGuard:!0,
closeToolText:'Close dialog',keyMap:{scope:'this',ESC:'onEsc'},maskClickAction:'focus',disableCloseToolFocus:!0,initComponent:function(){this.frame=!1;Ext.panel.Panel.prototype.initComponent.call(this);this.plain&&this.addClsWithUI('plain');this.addStateEvents(['maximize','restore','resize','dragend'])},getElConfig:function(){var elConfig=Ext.panel.Panel.prototype.getElConfig.call(this);elConfig.tabIndex=-1;return elConfig},getFocusEl:function(){return this.getDefaultFocus()||this.el},getState:function(){var state=
Ext.panel.Panel.prototype.getState.call(this)||{},maximized=!!this.maximized,ghostBox=this.ghostBox;ghostBox=(state.maximized=maximized)?this.restorePos:ghostBox?[ghostBox.x,ghostBox.y]:this.getPosition(!0);Ext.apply(state,{size:maximized?this.restoreSize:this.getSize(),pos:ghostBox});return state},applyState:function(state){state&&((this.maximized=state.maximized)?(this.hasSavedRestore=!0,this.restoreSize=state.size,this.restorePos=state.pos):Ext.apply(this,{width:state.size.width,height:state.size.height,
x:state.pos[0],y:state.pos[1]}))},onRender:function(ct,position){Ext.panel.Panel.prototype.onRender.apply(this,arguments);if(this.header)this.header.on({scope:this,click:this.onHeaderClick});if(this.maximizable)this.header.on({scope:this,dblclick:this.toggleMaximize})},afterRender:function(){var header=this.header;this.maximized&&(this.maximized=!1,this.maximize(null,!0),header&&header.removeCls(header.indicateDragCls));Ext.panel.Panel.prototype.afterRender.call(this);this.initTabGuards()},onEsc:function(e){e.stopEvent();
this.close()},doDestroy:function(){this.rendered&&(Ext.un('resize',this.onWindowResize,this),delete this.animateTarget,this.hide());Ext.panel.Panel.prototype.doDestroy.call(this)},addTools:function(){var tools=[];Ext.panel.Panel.prototype.addTools.call(this);this.minimizable&&tools.push({type:'minimize',handler:'minimize',scope:this});this.maximizable&&tools.push({type:'maximize',handler:'toggleMaximize',scope:this});tools.length&&this.addTool(tools)},addTool:function(tools){Ext.panel.Panel.prototype.addTool.call(this,
tools);this.rendered&&this.tabGuard&&this.initTabGuards()},add:function(){var ret=Ext.panel.Panel.prototype.add.apply(this,arguments);this.rendered&&this.tabGuard&&this.initTabGuards();return ret},remove:function(){var ret=Ext.panel.Panel.prototype.remove.apply(this,arguments);this.rendered&&this.tabGuard&&this.initTabGuards();return ret},addDocked:function(){var ret=Ext.panel.Panel.prototype.addDocked.apply(this,arguments);this.rendered&&this.tabGuard&&this.initTabGuards();return ret},removeDocked:function(){var ret=
Ext.panel.Panel.prototype.removeDocked.apply(this,arguments);this.rendered&&this.tabGuard&&this.initTabGuards();return ret},onShow:function(){Ext.panel.Panel.prototype.onShow.apply(this,arguments);this.expandOnShow&&this.expand(!1);this.syncMonitorWindowResize();this.rendered&&this.tabGuard&&this.initTabGuards()},doClose:function(){this.hidden?(this.fireEvent('close',this),'destroy'!==this.closeAction||this.destroying||this.destroyed||this.destroy()):this.hide(this.animateTarget,this.doClose,this)},
afterHide:function(){this.syncMonitorWindowResize();Ext.panel.Panel.prototype.afterHide.apply(this,arguments);this.rendered&&this.tabGuard&&this.initTabGuards()},onWindowResize:function(){if(!this.destroyed)if(this.maximized)this.fitContainer();else{var sizeModel=this.getSizeModel();(sizeModel.width.natural||sizeModel.height.natural)&&this.updateLayout();this.doConstrain()}},minimize:function(){this.fireEvent('minimize',this);return this},resumeHeaderLayout:function(changed){this.header.resumeLayouts(changed?
this.isRootCfg:null)},afterCollapse:function(){var header=this.header,tools=this.tools;header&&this.maximizable&&(header.suspendLayouts(),tools.maximize.hide(),this.resumeHeaderLayout(!0));this.resizer&&this.resizer.disable();Ext.panel.Panel.prototype.afterCollapse.apply(this,arguments)},afterExpand:function(){var header=this.header,tools=this.tools;if(header){header.suspendLayouts();if(this.maximizable){tools.maximize.show();var changed=!0}this.resumeHeaderLayout(changed)}this.resizer&&this.resizer.enable();
Ext.panel.Panel.prototype.afterExpand.apply(this,arguments)},maximize:function(animate,initial){var me=this,header=me.header,tools=me.tools,width=me.width,height=me.height;if(!me.maximized&&!me.maximizing){me.maximizing=!0;me.expand(!1);me.hasSavedRestore||(me.restoreSize={width:width?width:null,height:height?height:null},me.restorePos=initial?[me.x||0,me.y||0]:me.getPosition());if(header){header.suspendLayouts();tools.maximize&&tools.maximize.setType('restore');if(me.collapseTool){me.collapseTool.hide();
var changed=!0}me.resumeHeaderLayout(changed)}me.el.disableShadow();me.dd&&(me.dd.disable(),header&&header.removeCls(header.indicateDragCls));me.resizer&&me.resizer.disable();me.el.addCls('x-window-maximized');me.container.addCls('x-window-maximized-ct');me.syncMonitorWindowResize();me.fitContainer(animate=animate||me.animateTarget?{callback:function(){me.maximizing=!1;me.maximized=!0;initial||me.fireEvent('maximize',me)}}:null);animate||(me.maximizing=!1,me.maximized=!0,initial||me.fireEvent('maximize',
me))}return me},restore:function(animate){var me=this,tools=me.tools,header=me.header,newBox=me.restoreSize;if(me.maximized){me.hasSavedRestore=null;me.removeCls('x-window-maximized');if(header){header.suspendLayouts();tools.maximize&&tools.maximize.setType('maximize');if(me.collapseTool){me.collapseTool.show();var changed=!0}me.resumeHeaderLayout(changed)}newBox.x=me.restorePos[0];newBox.y=me.restorePos[1];me.setBox(newBox,animate=animate||me.animateTarget?{callback:function(){me.el.enableShadow(null,
!0);me.maximized=!1;me.fireEvent('restore',me)}}:null);me.restorePos=me.restoreSize=null;me.dd&&(me.dd.enable(),header&&header.addCls(header.indicateDragCls));me.resizer&&me.resizer.enable();me.container.removeCls('x-window-maximized-ct');me.syncMonitorWindowResize();animate||(me.el.enableShadow(null,!0),me.maximized=!1,me.fireEvent('restore',me))}return me},syncMonitorWindowResize:function(){var currentlyMonitoring=this._monitoringResize,veto=this.hidden||this.destroying||this.destroyed;(this.monitorResize||
this.constrain||this.constrainHeader||this.maximized)&&!veto?currentlyMonitoring||(Ext.on('resize',this.onWindowResize,this,{buffer:1}),this._monitoringResize=!0):currentlyMonitoring&&(Ext.un('resize',this.onWindowResize,this),this._monitoringResize=!1)},toggleMaximize:function(){return this[this.maximized?'restore':'maximize']()},createGhost:function(){var ghost=Ext.panel.Panel.prototype.createGhost.apply(this,arguments);ghost.xtype='window';ghost.focusOnToFront=!1;return ghost},getDefaultFocus:function(){var defaultComp=
this.defaultFocus;if(void 0!==defaultComp)if(Ext.isNumber(defaultComp))var result=this.query('button')[defaultComp];else Ext.isString(defaultComp)?(Ext.validIdRe.test(defaultComp)&&(result=this.down(Ext.makeIdSelector(defaultComp))),result||(result=this.down(defaultComp))):defaultComp.focus&&(result=defaultComp);return result},privates:{initDraggable:function(){this.initSimpleDraggable()},onHeaderClick:function(header,e){header.el.contains(e.getTarget())&&(header=this.getDefaultFocus())&&header.focus()},
initResizable:function(resizable){Ext.panel.Panel.prototype.initResizable.call(this,resizable);(this.maximized||this.maximizing)&&this.resizer.disable()},initSimpleDraggable:function(){var dd;Ext.panel.Panel.prototype.initSimpleDraggable.call(this);((dd=this.dd)&&this.maximized||this.maximizing)&&dd.disable()},onTabGuardFocusEnter:function(e,target){var el=this.el,beforeGuard=this.tabGuardBeforeEl,afterGuard=this.tabGuardAfterEl,from=e.relatedTarget,forward,nextFocus;var nodes=el.findTabbableElements({skipSelf:!0});
nodes[0]===beforeGuard.dom&&nodes.shift();nodes[nodes.length-1]===afterGuard.dom&&nodes.pop();0===nodes.length?nextFocus=el:forward=from===el.dom?target===beforeGuard.dom:el.contains(from)?!!e.forwardTab:target===beforeGuard.dom;(nextFocus=nextFocus||(forward?nodes[0]:nodes[nodes.length-1]))&&nextFocus.focus()}}},0,['window'],['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},['widget.window'],0,[Ext.window,'Window',Ext,'Window'],0);
Ext.cmd.derive('Ext.form.Labelable',Ext.Mixin,{isLabelable:!0,mixinConfig:{id:'labelable',on:{beforeRender:'beforeLabelRender',onRender:'onLabelRender'}},config:{childEls:'labelEl bodyEl errorEl errorWrapEl ariaErrorEl ariaStatusEl ariaHelpEl labelTextEl'.split(' ')},labelableRenderTpl:['{beforeLabelTpl}','\x3clabel id\x3d"{id}-labelEl" data-ref\x3d"labelEl" class\x3d"{labelCls} {labelCls}-{ui} {labelClsExtra} ','{childElCls} {unselectableCls}" style\x3d"{labelStyle}"','\x3ctpl if\x3d"inputId \x26\x26 !skipLabelForAttribute"\x3e for\x3d"{inputId}"\x3c/tpl\x3e',
' {labelAttrTpl}\x3e','\x3cspan class\x3d"{labelInnerCls} {labelInnerCls}-{ui}" style\x3d"{labelInnerStyle}"\x3e','{beforeLabelTextTpl}','\x3cspan id\x3d"{id}-labelTextEl" data-ref\x3d"labelTextEl" class\x3d"{labelTextCls}"\x3e','\x3ctpl if\x3d"fieldLabel"\x3e{fieldLabel}','\x3ctpl if\x3d"labelSeparator"\x3e{labelSeparator}\x3c/tpl\x3e','\x3c/tpl\x3e','\x3c/span\x3e','{afterLabelTextTpl}','\x3c/span\x3e','\x3c/label\x3e','{afterLabelTpl}','\x3cdiv id\x3d"{id}-bodyEl" data-ref\x3d"bodyEl" role\x3d"presentation"',
' class\x3d"{baseBodyCls} {baseBodyCls}-{ui}\x3ctpl if\x3d"fieldBodyCls"\x3e',' {fieldBodyCls} {fieldBodyCls}-{ui}\x3c/tpl\x3e {growCls} {extraFieldBodyCls}"','\x3ctpl if\x3d"bodyStyle"\x3e style\x3d"{bodyStyle}"\x3c/tpl\x3e\x3e','{beforeBodyEl}','{beforeSubTpl}','{[values.$comp.getSubTplMarkup(values)]}','{afterSubTpl}','{afterBodyEl}','\x3ctpl if\x3d"renderAriaElements"\x3e','\x3ctpl if\x3d"ariaHelp"\x3e','\x3cspan id\x3d"{id}-ariaHelpEl" data-ref\x3d"ariaHelpEl"',' class\x3d"x-hidden-offsets"\x3e',
'{ariaHelp}','\x3c/span\x3e','\x3c/tpl\x3e','\x3cspan id\x3d"{id}-ariaStatusEl" data-ref\x3d"ariaStatusEl" aria-hidden\x3d"true"',' class\x3d"x-hidden-offsets"\x3e','{ariaStatus}','\x3c/span\x3e','\x3cspan id\x3d"{id}-ariaErrorEl" data-ref\x3d"ariaErrorEl" aria-hidden\x3d"true" aria-live\x3d"assertive"',' class\x3d"x-hidden-clip"\x3e','\x3c/span\x3e','\x3c/tpl\x3e','\x3c/div\x3e','\x3ctpl if\x3d"renderError"\x3e','\x3cdiv id\x3d"{id}-errorWrapEl" data-ref\x3d"errorWrapEl" class\x3d"{errorWrapCls} {errorWrapCls}-{ui}',
' {errorWrapExtraCls}" style\x3d"{errorWrapStyle}"\x3e','\x3cdiv role\x3d"presentation" id\x3d"{id}-errorEl" data-ref\x3d"errorEl" ','class\x3d"{errorMsgCls} {invalidMsgCls} {invalidMsgCls}-{ui}" ','data-anchorTarget\x3d"{tipAnchorTarget}"\x3e','\x3c/div\x3e','\x3c/div\x3e','\x3c/tpl\x3e',{disableFormats:!0}],activeErrorsTpl:void 0,htmlActiveErrorsTpl:['\x3ctpl if\x3d"errors \x26\x26 errors.length"\x3e','\x3cul class\x3d"{listCls}"\x3e','\x3ctpl for\x3d"errors"\x3e\x3cli\x3e{.}\x3c/li\x3e\x3c/tpl\x3e',
'\x3c/ul\x3e','\x3c/tpl\x3e'],plaintextActiveErrorsTpl:['\x3ctpl if\x3d"errors \x26\x26 errors.length"\x3e','\x3ctpl for\x3d"errors"\x3e\x3ctpl if\x3d"xindex \x26gt; 1"\x3e\n\x3c/tpl\x3e{.}\x3c/tpl\x3e','\x3c/tpl\x3e'],ariaActiveErrorsTpl:['\x3ctpl if\x3d"errors \x26\x26 errors.length"\x3e','\x3ctpl for\x3d"errors" between\x3d". "\x3e{.}\x3c/tpl\x3e','\x3c/tpl\x3e'],isFieldLabelable:!0,formItemCls:'x-form-item',labelCls:'x-form-item-label',topLabelCls:'x-form-item-label-top',rightLabelCls:'x-form-item-label-right',
labelInnerCls:'x-form-item-label-inner',labelTextCls:'x-form-item-label-text',topLabelSideErrorCls:'x-form-item-label-top-side-error',errorMsgCls:'x-form-error-msg',errorWrapCls:'x-form-error-wrap',errorWrapSideCls:'x-form-error-wrap-side',errorWrapUnderCls:'x-form-error-wrap-under',errorWrapUnderSideLabelCls:'x-form-error-wrap-under-side-label',baseBodyCls:'x-form-item-body',invalidIconCls:'x-form-invalid-icon',invalidUnderCls:'x-form-invalid-under',noLabelCls:'x-form-item-no-label',fieldBodyCls:'',
extraFieldBodyCls:'',invalidCls:'x-form-invalid',fieldLabel:void 0,labelAlign:'left',labelWidth:100,labelPad:5,labelSeparator:':',hideLabel:!1,hideEmptyLabel:!0,preventMark:!1,autoFitErrors:!0,msgTarget:'qtip',msgTargets:{qtip:1,title:1,under:1,side:1,none:1},noWrap:!0,ariaHelp:void 0,ariaErrorText:'Input error. {0}.',labelableInsertions:'beforeBodyEl afterBodyEl beforeLabelTpl afterLabelTpl beforeSubTpl afterSubTpl beforeLabelTextTpl afterLabelTextTpl labelAttrTpl'.split(' '),statics:{initTip:function(){var tip=
this.tip;if(!tip){tip={id:'ext-form-error-tip',ui:'form-invalid'};Ext.supports.Touch&&(tip.dismissDelay=0,tip.anchor='top',tip.showDelay=0,tip.showOnTap=!0,tip.listeners={beforeshow:function(){this.minWidth=Ext.fly(this.activeTarget.el).getWidth()}});tip=this.tip=Ext.create('Ext.tip.QuickTip',tip);var copy=Ext.apply({},tip.tagConfig);copy.attribute='errorqtip';tip.setTagConfig(copy)}},destroyTip:function(){this.tip=Ext.destroy(this.tip)}},initLabelable:function(){var padding=this.padding;padding&&
(this.padding=void 0,this.extraMargins=Ext.Element.parseBox(padding));Ext.isIE8&&(this.restoreDisplay=Ext.Function.createDelayed(this.doRestoreDisplay,0,this));this.activeErrorsTpl||(this.activeErrorsTpl='title'===this.msgTarget?this.plaintextActiveErrorsTpl:this.htmlActiveErrorsTpl);this.addCls([this.formItemCls,this.formItemCls+'-'+this.ui]);this.lastActiveError='';this.enableBubble('errorchange')},trimLabelSeparator:function(){var separator=this.labelSeparator,label=this.fieldLabel||'';return label.substr(label.length-
1)===separator?label.slice(0,-1):label},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(label){label=label||'';var separator=this.labelSeparator,errorWrapEl=this.errorWrapEl,sideLabel='top'!==this.labelAlign,noLabelCls=this.noLabelCls,errorWrapUnderSideLabelCls=this.errorWrapUnderSideLabelCls;this.fieldLabel=label;this.rendered&&(Ext.isEmpty(label)&&this.hideEmptyLabel?(this.addCls(noLabelCls),sideLabel&&errorWrapEl&&errorWrapEl.removeCls(errorWrapUnderSideLabelCls)):
(separator&&(label=this.trimLabelSeparator()+separator),this.labelTextEl.dom.innerHTML=label,this.removeCls(noLabelCls),sideLabel&&errorWrapEl&&errorWrapEl.addCls(errorWrapUnderSideLabelCls)),this.updateLayout())},setHideLabel:function(hideLabel){hideLabel!==this.hideLabel&&(this.hideLabel=hideLabel,this.rendered&&(this[hideLabel?'addCls':'removeCls'](this.noLabelCls),this.updateLayout()))},setHideEmptyLabel:function(hideEmptyLabel){hideEmptyLabel!==this.hideEmptyLabel&&(this.hideEmptyLabel=hideEmptyLabel,
this.rendered&&!this.hideLabel&&(hideEmptyLabel=hideEmptyLabel&&!this.getFieldLabel(),this[hideEmptyLabel?'addCls':'removeCls'](this.noLabelCls),this.updateLayout()))},getInsertionRenderData:function(data,names){for(var i=names.length,name,value;i--;)name=names[i],(value=this[name])&&'string'!==typeof value&&(value.isTemplate||(value=Ext.XTemplate.getTpl(this,name)),value=value.apply(data)),data[name]=value||'';return data},getLabelableRenderData:function(){var labelAlign=this.labelAlign,topLabel=
'top'===labelAlign;labelAlign='right'===labelAlign;var sideError='side'===this.msgTarget,underError='under'===this.msgTarget,errorMsgCls=this.errorMsgCls,labelPad=this.labelPad,labelWidth=this.labelWidth,labelClsExtra=this.labelClsExtra||'',errorWrapExtraCls=sideError?this.errorWrapSideCls:this.errorWrapUnderCls,labelStyle='',labelInnerStyle='',labelVisible=this.hasVisibleLabel(),autoFitErrors=this.autoFitErrors,defaultBodyWidth=this.defaultBodyWidth,bodyStyle;topLabel?(labelClsExtra+=' '+this.topLabelCls,
labelPad&&(labelInnerStyle='padding-bottom:'+labelPad+'px;'),sideError&&!autoFitErrors&&(labelClsExtra+=' '+this.topLabelSideErrorCls)):(labelAlign&&(labelClsExtra+=' '+this.rightLabelCls),labelPad&&(labelStyle+=this.getHorizontalPaddingStyle()+labelPad+'px;'),labelStyle+='width:'+(labelWidth+(labelPad?labelPad:0))+'px;',labelInnerStyle='width:'+labelWidth+'px');labelVisible&&!topLabel&&underError&&(errorWrapExtraCls+=' '+this.errorWrapUnderSideLabelCls);defaultBodyWidth&&(bodyStyle='min-width:'+
defaultBodyWidth+'px;max-width:'+defaultBodyWidth+'px;');topLabel={id:this.id,inputId:this.getInputId(),labelCls:this.labelCls,labelClsExtra:labelClsExtra,labelStyle:labelStyle+(this.labelStyle||''),labelInnerStyle:labelInnerStyle,labelInnerCls:this.labelInnerCls,labelTextCls:this.labelTextCls,skipLabelForAttribute:!!this.skipLabelForAttribute,unselectableCls:Ext.Element.unselectableCls,bodyStyle:bodyStyle,baseBodyCls:this.baseBodyCls,fieldBodyCls:this.fieldBodyCls,extraFieldBodyCls:this.extraFieldBodyCls,
errorWrapCls:this.errorWrapCls,errorWrapExtraCls:errorWrapExtraCls,renderError:sideError||underError,invalidMsgCls:sideError?this.invalidIconCls:underError?this.invalidUnderCls:'',errorMsgCls:errorMsgCls,growCls:this.grow?this.growCls:'',tipAnchorTarget:this.id+'-inputEl',errorWrapStyle:sideError&&!autoFitErrors?'visibility:hidden':'display:none',fieldLabel:this.getFieldLabel(),labelSeparator:this.labelSeparator,renderAriaElements:!!this.renderAriaElements,ariaStatus:''};this.ariaHelp&&(topLabel.ariaHelp=
Ext.String.htmlEncode(this.ariaHelp));this.getInsertionRenderData(topLabel,this.labelableInsertions);return topLabel},getHorizontalPaddingStyle:function(){return'padding-right:'},beforeLabelRender:function(){this.setFieldDefaults(this.getInherited().fieldDefaults);this.ownerLayout&&this.addCls('x-'+this.ownerLayout.type+'-form-item');this.hasVisibleLabel()||this.addCls(this.noLabelCls)},onLabelRender:function(){var style={},ExtElement=Ext.Element,errorWrapEl=this.errorWrapEl,side;errorWrapEl&&errorWrapEl.setVisibilityMode('side'!==
this.msgTarget||this.autoFitErrors?ExtElement.DISPLAY:ExtElement.VISIBILITY);if(this.extraMargins){ExtElement=this.el.getMargin();for(side in ExtElement)ExtElement.hasOwnProperty(side)&&(style['margin-'+side]=ExtElement[side]+this.extraMargins[side]+'px');this.el.setStyle(style)}},hasVisibleLabel:function(){return this.hideLabel?!1:!(this.hideEmptyLabel&&!this.getFieldLabel())},getSubTplMarkup:function(){return''},getInputId:function(){return''},getActiveError:function(){return this.activeError||
''},hasActiveError:function(){return!!this.getActiveError()},setActiveError:function(msg){this.setActiveErrors(msg)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(errors){var errorWrapEl=this.errorWrapEl,msgTarget=this.msgTarget,isSide='side'===msgTarget,isQtip='qtip'===msgTarget,ariaErrorEl=this.ariaErrorEl;errors=Ext.Array.from(errors);var activeError=this.lookupTpl('activeErrorsTpl');this.activeErrors=errors;activeError=this.activeError=activeError.apply({fieldLabel:this.fieldLabel,
errors:errors,listCls:'x-list-plain'});this.renderActiveError();if(this.rendered){var actionEl=this.getActionEl();isSide?this.errorEl.dom.setAttribute('data-errorqtip',activeError):isQtip?actionEl.dom.setAttribute('data-errorqtip',activeError):'title'===msgTarget&&actionEl.dom.setAttribute('title',activeError);if('title'!==msgTarget&&ariaErrorEl){actionEl=this.lookupTpl('ariaActiveErrorsTpl');actionEl=actionEl.apply({errors:errors});var errText=Ext.String.formatEncode(this.ariaErrorText,actionEl,
this.fieldLabel);ariaErrorEl.dom.innerHTML!==errText&&(ariaErrorEl.dom.innerHTML=errText);this.ariaStatusEl.dom.innerHTML=Ext.String.htmlEncode(actionEl)}(isSide||isQtip)&&Ext.form.Labelable.initTip();!this.msgTargets[msgTarget]&&(msgTarget=Ext.get(msgTarget))&&(msgTarget.dom.innerHTML=activeError)}errorWrapEl&&(errorWrapEl.setVisible(0<errors.length),isSide&&this.autoFitErrors&&this.labelEl.addCls(this.topLabelSideErrorCls),this.updateLayout())},unsetActiveError:function(){var errorWrapEl=this.errorWrapEl,
ariaErrorEl=this.ariaErrorEl,msgTarget=this.msgTarget,restoreDisplay=this.restoreDisplay;if(this.hasActiveError()&&(delete this.activeError,delete this.activeErrors,this.renderActiveError(),this.rendered)){var actionEl=this.getActionEl();'qtip'===msgTarget?actionEl.dom.removeAttribute('data-errorqtip'):'title'===msgTarget&&actionEl.dom.removeAttribute('title');'title'!==msgTarget&&ariaErrorEl&&(ariaErrorEl.dom.innerHTML=this.ariaStatusEl.dom.innerHTML='');!this.msgTargets[msgTarget]&&(ariaErrorEl=
Ext.get(msgTarget))&&(ariaErrorEl.dom.innerHTML='');errorWrapEl&&(errorWrapEl.hide(),'side'===msgTarget&&this.autoFitErrors&&this.labelEl.removeCls(this.topLabelSideErrorCls),this.updateLayout(),restoreDisplay&&(this.el.dom.style.display='block',this.restoreDisplay()))}},doRestoreDisplay:function(){var el=this.el;el&&el.dom&&(el.dom.style.display='')},renderActiveError:function(){var activeError=this.getActiveError(),hasError=!!activeError;activeError!==this.lastActiveError&&(this.lastActiveError=
activeError,this.fireEvent('errorchange',this,activeError));!this.rendered||this.destroyed||this.preventMark||(this.toggleInvalidCls(hasError),this.errorEl&&(this.errorEl.dom.innerHTML=activeError))},toggleInvalidCls:function(hasError){this.el[hasError?'addCls':'removeCls'](this.invalidCls)},setFieldDefaults:function(defaults){for(var key in defaults)this.hasOwnProperty(key)||(this[key]=defaults[key])}},0,0,0,0,0,0,[Ext.form,'Labelable'],function(){Ext.supports.Touch&&(this.prototype.msgTarget='side')});
Ext.cmd.derive('Ext.form.field.Field',Ext.Base,{mixinId:'field',isFormField:!0,config:{validation:null,validationField:null},disabled:!1,submitValue:!0,validateOnChange:!0,valuePublishEvent:'change',suspendCheckChange:0,dirty:!1,initField:function(){var valuePublishEvent=this.valuePublishEvent,len;this.initValue();if(Ext.isString(valuePublishEvent))this.on(valuePublishEvent,this.publishValue,this);else{var i=0;for(len=valuePublishEvent.length;i<len;++i)this.on(valuePublishEvent[i],this.publishValue,
this)}},initValue:function(){'value'in this&&(this.suspendCheckChange++,this.setValue(this.value),this.suspendCheckChange--);this.initialValue=this.originalValue=this.lastValue=this.getValue()},cleanupField:function(){delete this._ownerRecord},getFieldIdentifier:function(){return this.isEditorComponent?this.dataIndex:this.name},getName:function(){return this.name},getValue:function(){return this.value},setValue:function(value){this.value=value;this.checkChange();return this},isEqual:function(value1,
value2){return String(value1)===String(value2)},isEqualAsString:function(value1,value2){return String(Ext.valueFrom(value1,''))===String(Ext.valueFrom(value2,''))},getSubmitData:function(){var data=null;!this.disabled&&this.submitValue&&(data={},data[this.getName()]=''+this.getValue());return data},getModelData:function(includeEmptyText,isSubmitting){includeEmptyText=null;this.disabled||!this.submitValue&&isSubmitting||(includeEmptyText={},includeEmptyText[this.getFieldIdentifier()]=this.getValue());
return includeEmptyText},reset:function(){this.beforeReset();this.setValue(this.originalValue);this.clearInvalid();delete this.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange&&!this.destroying&&!this.destroyed){var newVal=this.getValue();var oldVal=this.lastValue;this.didValueChange(newVal,oldVal)&&(this.lastValue=newVal,this.fireEvent('change',this,newVal,oldVal),this.onChange(newVal,
oldVal))}},didValueChange:function(newVal,oldVal){return!this.isEqual(newVal,oldVal)},onChange:function(newVal){this.validateOnChange&&this.validate();this.checkDirty()},publishValue:function(){this.rendered&&!this.getErrors().length&&this.publishState('value',this.getValue())},isDirty:function(){return!this.disabled&&!this.isEqual(this.getValue(),this.originalValue)},checkDirty:function(){var isDirty=this.isDirty();isDirty!==this.wasDirty&&(this.dirty=isDirty,this.fireEvent('dirtychange',this,isDirty),
this.onDirtyChange(isDirty),this.wasDirty=isDirty)},onDirtyChange:Ext.emptyFn,getErrors:function(value){var errors=[],validationField=this.getValidationField(),validation=this.getValidation();validationField&&(value=validationField.validate(value,null,null,this._ownerRecord),!0!==value&&errors.push(value));validation&&!0!==validation&&errors.push(validation);return errors},isValid:function(){return this.disabled||Ext.isEmpty(this.getErrors())},validate:function(){return this.checkValidityChange(this.isValid())},
checkValidityChange:function(isValid){isValid!==this.wasValid&&(this.wasValid=isValid,this.fireEvent('validitychange',this,isValid));return isValid},setValidationField:function(value,record){(arguments.callee.$previous||Ext.Base.prototype.setValidationField).call(this,value);this._ownerRecord=record},batchChanges:function(fn){try{this.suspendCheckChange++,fn()}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return!1},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,
clearInvalid:Ext.emptyFn,updateValidation:function(validation,oldValidation){oldValidation&&this.validate()},privates:{resetToInitialValue:function(){var originalValue=this.originalValue;this.originalValue=this.initialValue;this.reset();this.originalValue=originalValue}}},0,0,0,0,0,0,[Ext.form.field,'Field'],0);
Ext.cmd.derive('Ext.form.field.Base',Ext.Component,{alternateClassName:['Ext.form.Field','Ext.form.BaseField'],focusable:!0,shrinkWrap:!0,fieldSubTpl:['\x3cinput id\x3d"{id}" data-ref\x3d"inputEl" type\x3d"{type}" {inputAttrTpl}',' size\x3d"1"','\x3ctpl if\x3d"name"\x3e name\x3d"{name}"\x3c/tpl\x3e','\x3ctpl if\x3d"value"\x3e value\x3d"{[Ext.util.Format.htmlEncode(values.value)]}"\x3c/tpl\x3e','\x3ctpl if\x3d"placeholder"\x3e placeholder\x3d"{placeholder}"\x3c/tpl\x3e','{%if (values.maxLength !\x3d\x3d undefined){%} maxlength\x3d"{maxLength}"{%}%}',
'\x3ctpl if\x3d"readOnly"\x3e readonly\x3d"readonly"\x3c/tpl\x3e','\x3ctpl if\x3d"disabled"\x3e disabled\x3d"disabled"\x3c/tpl\x3e','\x3ctpl if\x3d"tabIdx !\x3d null"\x3e tabindex\x3d"{tabIdx}"\x3c/tpl\x3e','\x3ctpl if\x3d"fieldStyle"\x3e style\x3d"{fieldStyle}"\x3c/tpl\x3e','\x3ctpl if\x3d"ariaEl \x3d\x3d \'inputEl\'"\x3e','\x3ctpl foreach\x3d"ariaElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3c/tpl\x3e','\x3ctpl foreach\x3d"inputElAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e',' class\x3d"{fieldCls} {typeCls} {typeCls}-{ui} {editableCls} {inputCls}" autocomplete\x3d"off"/\x3e',
{disableFormats:!0}],defaultBindProperty:'value',autoEl:{role:'presentation'},subTplInsertions:['inputAttrTpl'],childEls:['inputEl'],inputType:'text',isTextInput:!0,invalidText:'The value in this field is invalid',fieldCls:'x-form-field',focusCls:'form-focus',dirtyCls:'x-form-dirty',checkChangeEvents:Ext.isIE&&(!document.documentMode||9>=document.documentMode)?['change','propertychange','keyup']:['change','input','textInput','keyup','dragdrop'],ignoreChangeRe:/data\-errorqtip|style\.|className/,checkChangeBuffer:50,
liquidLayout:!0,readOnly:!1,readOnlyCls:'x-form-readonly',validateOnBlur:!0,hasFocus:!1,baseCls:'x-field',fieldBodyCls:'x-field-body',maskOnDisable:!1,stretchInputElFixed:!0,ariaEl:'inputEl',renderAriaElements:!0,initComponent:function(){Ext.Component.prototype.initComponent.call(this);this.subTplData=this.subTplData||{};this.initLabelable();this.initField();this.initDefaultName();this.readOnly&&this.addCls(this.readOnlyCls);this.addCls('x-form-type-'+this.inputType);this.format&&this.formatText&&
!this.ariaHelp&&(this.ariaHelp=Ext.String.format(this.formatText,this.format))},initDefaultName:function(){this.name||(this.name=this.getInputId())},getInputId:function(){return this.inputId||(this.inputId=this.id+'-inputEl')},getSubTplData:function(fieldData){var id=this.id,type=this.inputType,inputId=this.getInputId();fieldData=Ext.apply({ui:this.ui,id:inputId,cmpId:id,name:this.name||inputId,disabled:this.disabled,readOnly:this.readOnly,value:this.getRawValue(),type:type,fieldCls:this.fieldCls,
fieldStyle:this.getFieldStyle(),childElCls:fieldData.childElCls,tabIdx:this.tabIndex,inputCls:this.inputCls,typeCls:'x-form-'+(this.isTextInput?'text':type),ariaEl:this.ariaEl},this.subTplData);this.ariaRole&&(type={},this.ariaStaticRoles[this.ariaRole]||(type['aria-hidden']=!!this.hidden,type['aria-disabled']=!!this.disabled,inputId={'aria-invalid':!1,'aria-readonly':!!this.readOnly},this.ariaLabel&&(type['aria-label']=Ext.String.htmlEncode(this.ariaLabel)),type=Ext.apply(type,this.getAriaAttributes()),
type['aria-describedby']||(inputId['aria-describedby']=this.ariaHelp?id+'-ariaStatusEl '+id+'-ariaHelpEl':id+'-ariaStatusEl'),fieldData.inputElAriaAttributes=inputId),'native'!==this.ariaRole&&(type.role=this.ariaRole),this.ariaLabel&&(type['aria-label']=this.ariaLabel),this.format&&this.formatText&&!fieldData.title&&(type.title=Ext.String.formatEncode(this.formatText,this.format)),fieldData.ariaElAttributes=type);this.getInsertionRenderData(fieldData,this.subTplInsertions);return fieldData},getSubTplMarkup:function(fieldData){fieldData=
this.getSubTplData(fieldData);var preSubTpl=this.lookupTpl('preSubTpl'),postSubTpl=this.lookupTpl('postSubTpl'),markup='';preSubTpl&&(markup+=preSubTpl.apply(fieldData));markup+=this.lookupTpl('fieldSubTpl').apply(fieldData);postSubTpl&&(markup+=postSubTpl.apply(fieldData));return markup},initRenderData:function(){return Ext.applyIf(Ext.Component.prototype.initRenderData.call(this),this.getLabelableRenderData())},setFieldStyle:function(style){var inputEl=this.inputEl;inputEl&&inputEl.applyStyles(style);
this.fieldStyle=style},getFieldStyle:function(){var style=this.fieldStyle;return Ext.isObject(style)?Ext.DomHelper.generateStyles(style,null,!0):style||''},onRender:function(){this.callParent(arguments);this.mixins.labelable.self.initTip();this.renderActiveError()},beforeBlur:function(e){this.validateOnBlur&&this.validate()},onFocusLeave:function(e){Ext.Component.prototype.onFocusLeave.call(this,e);this.completeEdit()},completeEdit:Ext.emptyFn,isFileUpload:function(){return'file'===this.inputType},
getSubmitData:function(){var data=null;if(!this.disabled&&this.submitValue){var val=this.getSubmitValue();null!==val&&(data={},data[this.getName()]=val)}return data},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var v=this.inputEl?this.inputEl.getValue():Ext.valueFrom(this.rawValue,'');return this.rawValue=v},setRawValue:function(value){var rawValue=this.rawValue;this.transformRawValue.$nullFn||(value=this.transformRawValue(value));value=Ext.valueFrom(value,
'');if(void 0===rawValue||rawValue!==value)this.rawValue=value,this.inputEl&&(this.bindChangeEvents(!1),this.inputEl.dom.value=value,this.bindChangeEvents(!0));this.rendered&&this.reference&&this.publishState('rawValue',value);return value},transformRawValue:Ext.identityFn,valueToRaw:function(value){return''+Ext.valueFrom(value,'')},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var val=this.rawToValue(this.processRawValue(this.getRawValue()));return this.value=val},
setValue:function(value){this.setRawValue(this.valueToRaw(value));return this.mixins.field.setValue.call(this,value)},onBoxReady:function(){Ext.Component.prototype.onBoxReady.apply(this,arguments);this.setReadOnlyOnBoxReady&&this.setReadOnly(this.readOnly)},onDisable:function(){var inputEl=this.inputEl;Ext.Component.prototype.onDisable.call(this);inputEl&&(inputEl.dom.disabled=!0,this.hasActiveError()&&(this.clearInvalid(),this.hadErrorOnDisable=!0));!1===this.wasValid&&this.checkValidityChange(!0)},
onEnable:function(){var inputEl=this.inputEl,mark=this.preventMark;Ext.Component.prototype.onEnable.call(this);inputEl&&(inputEl.dom.disabled=!1);void 0!==this.wasValid&&(this.forceValidation=!0,this.preventMark=!this.hadErrorOnDisable,inputEl=this.isValid(),this.forceValidation=!1,this.preventMark=mark,this.checkValidityChange(inputEl));delete this.hadErrorOnDisable},setReadOnly:function(readOnly){var inputEl=this.inputEl,old=this.readOnly;readOnly=!!readOnly;this[readOnly?'addCls':'removeCls'](this.readOnlyCls);
this.readOnly=readOnly;inputEl?(inputEl.dom.readOnly=readOnly,inputEl.dom.setAttribute('aria-readonly',readOnly)):this.rendering&&(this.setReadOnlyOnBoxReady=!0);readOnly!==old&&this.fireEvent('writeablechange',this,readOnly)},fireKey:function(e,eOpts){e.isSpecialKey()&&this.fireEvent('specialkey',this,e,eOpts)},initEvents:function(){var inputEl=this.inputEl,onFieldMutation=this.onFieldMutation,events=this.checkChangeEvents,len=events.length,i;if(inputEl)for(this.mon(inputEl,Ext.supports.SpecialKeyDownRepeat?
'keydown':'keypress',this.fireKey,this),i=0;i<len;++i){var event=events[i];'propertychange'===event&&(this.usesPropertychange=!0);'textInput'===event&&(this.usesTextInput=!0);this.mon(inputEl,event,onFieldMutation,this)}Ext.Component.prototype.initEvents.call(this)},onFieldMutation:function(e){this.readOnly||'propertychange'===e.type&&this.ignoreChangeRe.test(e.browserEvent.propertyName)||this.startCheckChangeTask()},startCheckChangeTask:function(){var task=this.checkChangeTask;task||(this.checkChangeTask=
task=new Ext.util.DelayedTask(this.doCheckChangeTask,this));this.bindNotifyListener||(this.bindNotifyListener=Ext.on('beforebindnotify',this.onBeforeNotify,this,{destroyable:!0}));task.delay(this.checkChangeBuffer)},doCheckChangeTask:function(){var bindNotifyListener=this.bindNotifyListener;bindNotifyListener&&(bindNotifyListener.destroy(),this.bindNotifyListener=null);this.checkChange()},publishValue:function(){this.rendered&&!this.getErrors().length&&this.publishState('value',this.getValue())},
onDirtyChange:function(isDirty){this[isDirty?'addCls':'removeCls'](this.dirtyCls);this.rendered&&this.reference&&this.publishState('dirty',isDirty)},isValid:function(){var disabled=this.disabled;return this.forceValidation||!disabled?this.validateValue(this.processRawValue(this.getRawValue())):disabled},validateValue:function(value){value=this.getErrors(value);var isValid=Ext.isEmpty(value);this.preventMark||(isValid?this.clearInvalid():this.markInvalid(value));return isValid},markInvalid:function(errors){var oldMsg=
this.getActiveError();this.setActiveErrors(Ext.Array.from(errors));errors=this.getActiveError();oldMsg!==errors&&(this.setError(errors),!this.ariaStaticRoles[this.ariaRole]&&this.inputEl&&this.inputEl.dom.setAttribute('aria-invalid',!0))},clearInvalid:function(){var hadError=this.hasActiveError();delete this.hadErrorOnDisable;this.unsetActiveError();hadError&&(this.setError(''),!this.ariaStaticRoles[this.ariaRole]&&this.inputEl&&this.inputEl.dom.setAttribute('aria-invalid',!1))},setError:function(error){var msgTarget=
this.msgTarget;this.rendered&&('title'===msgTarget||'qtip'===msgTarget?(msgTarget='qtip'===msgTarget?'data-errorqtip':'title',this.getActionEl().dom.setAttribute(msgTarget,error||'')):this.updateLayout())},renderActiveError:function(){var hasError=this.hasActiveError(),invalidCls=this.invalidCls+'-field';if(this.inputEl)this.inputEl[hasError?'addCls':'removeCls']([invalidCls,invalidCls+'-'+this.ui]);this.mixins.labelable.renderActiveError.call(this)},doDestroy:function(){var task=this.checkChangeTask;
task&&task.cancel();Ext.destroy(this.bindNotifyListener);this.cleanupField();Ext.Component.prototype.doDestroy.call(this)},privates:{applyBind:function(bind,currentBindings){var valueBinding=currentBindings&&currentBindings.value;if(bind=Ext.Component.prototype.applyBind.call(this,bind,currentBindings))currentBindings=bind.value,this.hasBindingValue=!!currentBindings,currentBindings!==valueBinding&&this.getInherited().modelValidation&&this.updateValueBinding(bind);return bind},applyRenderSelectors:function(){Ext.Component.prototype.applyRenderSelectors.call(this);
this.inputEl||(this.inputEl=this.el.getById(this.getInputId()))},bindChangeEvents:function(active){active=active?'resumeEvent':'suspendEvent';var inputEl=this.inputEl;if(this.usesPropertychange)inputEl[active]('propertychange');if(this.usesTextInput)inputEl[active]('textInput')},getActionEl:function(){return this.inputEl||this.el},getFocusEl:function(){return this.inputEl},initRenderTpl:function(){this.hasOwnProperty('renderTpl')||(this.renderTpl=this.lookupTpl('labelableRenderTpl'));return Ext.Component.prototype.initRenderTpl.call(this)},
onBeforeNotify:function(){this.checkChangeTask.cancel();this.checkChange()},updateValueBinding:function(bindings){var newBinding=bindings.value,fieldBinding=bindings.$fieldBinding;fieldBinding&&(fieldBinding.destroy(),bindings.$fieldBinding=null);newBinding&&newBinding.bindValidationField&&(this.fieldBinding=newBinding.bindValidationField('setValidationField',this))}},deprecated:{5:{methods:{doComponentLayout:function(){this.bindChangeEvents(!1);this.callParent(arguments);this.bindChangeEvents(!0)}}}}},
0,['field'],['component','box','field'],{component:!0,box:!0,field:!0},['widget.field'],[[Ext.form.Labelable.prototype.mixinId||Ext.form.Labelable.$className,Ext.form.Labelable],[Ext.form.field.Field.prototype.mixinId||Ext.form.field.Field.$className,Ext.form.field.Field]],[Ext.form.field,'Base',Ext.form,'Field',Ext.form,'BaseField'],0);
Ext.define('RCOP.form.field.Base',{override:'Ext.form.field.Base',msgTarget:'qtip',autoLabelWidth:!1,nameGroupLabels:'',labelPad:null,suffixLabelCls:'x-form-item-suffix-label',descriptionCls:'x-form-field-description',descriptionInnerCls:'x-form-field-description-inner',labelableInsertions:'beforeBodyEl afterBodyEl beforeLabelTpl afterLabelTpl beforeSubTpl afterSubTpl beforeLabelTextTpl afterLabelTextTpl labelAttrTpl suffixLabelTpl descriptionTpl'.split(' '),labelableRenderTpl:['{beforeLabelTpl}',
'\x3clabel id\x3d"{id}-labelEl" data-ref\x3d"labelEl" class\x3d"{labelCls} {labelCls}-{ui} {labelClsExtra} ','{childElCls} {unselectableCls}" style\x3d"{labelStyle}"\x3ctpl if\x3d"inputId"\x3e',' for\x3d"{inputId}"\x3c/tpl\x3e {labelAttrTpl}\x3e','\x3cspan class\x3d"{labelInnerCls} {labelInnerCls}-{ui}" style\x3d"{labelInnerStyle}"\x3e','{beforeLabelTextTpl}','\x3ctpl if\x3d"fieldLabel"\x3e{fieldLabel}','\x3ctpl if\x3d"labelSeparator"\x3e{labelSeparator}\x3c/tpl\x3e','\x3c/tpl\x3e','{afterLabelTextTpl}',
'\x3c/span\x3e','\x3c/label\x3e','{afterLabelTpl}','\x3cdiv id\x3d"{id}-bodyEl" data-ref\x3d"bodyEl" class\x3d"{baseBodyCls} {baseBodyCls}-{ui}\x3ctpl if\x3d"fieldBodyCls"\x3e',' {fieldBodyCls} {fieldBodyCls}-{ui}\x3c/tpl\x3e {growCls} {extraFieldBodyCls}"','\x3ctpl if\x3d"bodyStyle"\x3e style\x3d"{bodyStyle}"\x3c/tpl\x3e\x3e','{beforeBodyEl}','{beforeSubTpl}','{[values.$comp.getSubTplMarkup(values)]}','{afterSubTpl}','{afterBodyEl}','\x3c/div\x3e','\x3ctpl if\x3d"suffixLabelTpl"\x3e','\x3cdiv class\x3d"{suffixLabelCls} {suffixLabelCls}-{ui}" \x3ctpl if\x3d"suffixLabelStyle"\x3estyle\x3d"{suffixLabelStyle}"\x3c/tpl\x3e\x3e{suffixLabelTpl}\x3c/div\x3e',
'\x3c/tpl\x3e','\x3ctpl if\x3d"descriptionTpl"\x3e','\x3cdiv class\x3d"{descriptionCls} {descriptionCls}-{ui}"\x3e','\x3ctpl if\x3d"labelAlign !\x3d\x3d \'top\' \x26\x26 labelVisible"\x3e\x3cdiv class\x3d"{descriptionInnerCls} {descriptionInnerCls}-{ui}"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3cdiv class\x3d"{descriptionInnerCls} {descriptionInnerCls}-{ui}"\x3ctpl if\x3d"bodyStyleWidth"\x3e style\x3d"{bodyStyleWidth}"\x3c/tpl\x3e\x3e{descriptionTpl}\x3c/div\x3e','\x3c/div\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"renderError"\x3e',
'\x3cdiv id\x3d"{id}-errorWrapEl" data-ref\x3d"errorWrapEl" class\x3d"{errorWrapCls} {errorWrapCls}-{ui}',' {errorWrapExtraCls}" style\x3d"{errorWrapStyle}"\x3e','\x3cdiv role\x3d"alert" aria-live\x3d"polite" id\x3d"{id}-errorEl" data-ref\x3d"errorEl" ','class\x3d"{errorMsgCls} {invalidMsgCls} {invalidMsgCls}-{ui}" ','data-anchorTarget\x3d"{id}-inputEl"\x3e','\x3c/div\x3e','\x3c/div\x3e','\x3c/tpl\x3e',{disableFormats:!0}],getLabelableRenderData:function(){if(this.autoLabelWidth||Ext.isString(this.nameGroupLabels)&&
this.nameGroupLabels.length){var arrFieldComps=[this],resultLabelWidth=0;Ext.isString(this.nameGroupLabels)&&this.nameGroupLabels.length&&(arrFieldComps=Ext.ComponentQuery.query('#'+(this.itemId?this.itemId:this.id)+' ^ panel:first field[nameGroupLabels\x3d"'+this.nameGroupLabels+'"], #'+(this.itemId?this.itemId:this.id)+' ^ panel:first fieldcontainer[nameGroupLabels\x3d"'+this.nameGroupLabels+'"]'));Ext.Array.forEach(arrFieldComps,function(fieldComp){if(fieldComp.autoLabelWidth){var measureLabelEl=
Ext.getBody().createChild({role:'presentation',cls:fieldComp.labelCls+'-'+fieldComp.ui});resultLabelWidth=Math.max(resultLabelWidth,Ext.util.TextMetrics.measure(measureLabelEl,fieldComp.getFieldLabel()+(fieldComp.labelSeparator?fieldComp.labelSeparator:'')).width||0);measureLabelEl.destroy()}else resultLabelWidth=Math.max(resultLabelWidth,fieldComp.labelWidth)});resultLabelWidth&&(this.labelWidth=resultLabelWidth)}arrFieldComps=this.mixins.labelable.getLabelableRenderData.apply(this,arguments);arrFieldComps.descriptionCls=
this.descriptionCls;arrFieldComps.descriptionInnerCls=this.descriptionInnerCls;arrFieldComps.suffixLabelCls=this.suffixLabelCls;arrFieldComps.suffixLabelStyle=this.suffixLabelStyle;arrFieldComps.labelAlign=this.labelAlign;arrFieldComps.labelVisible=this.hasVisibleLabel();!this.autoLabelWidth&&Ext.isString(this.labelStyleWidth)&&/^\d+(?:\.\d+)?(?:px|%)$/ig.test(this.labelStyleWidth)&&(arrFieldComps.labelStyle='width: '+this.labelStyleWidth+';',arrFieldComps.labelInnerStyle='width: 100%;');var fieldBodyStyle=
Ext.isString(this.fieldBodyStyle)?this.fieldBodyStyle:'';Ext.isNumber(this.fieldBodyWidth)?(arrFieldComps.bodyStyleWidth=Ext.String.format('min-width: {0}px; max-width: {0}px;',80*this.fieldBodyWidth+16*Math.max(0,this.fieldBodyWidth-1)),arrFieldComps.bodyStyle=arrFieldComps.bodyStyleWidth+fieldBodyStyle):Ext.isString(this.fieldBodyWidth)&&/^\d+(?:\.\d+)?(?:px|%)$/ig.test(this.fieldBodyWidth)?(arrFieldComps.bodyStyleWidth='min-width: '+this.fieldBodyWidth+'; max-width: '+this.fieldBodyWidth+';',arrFieldComps.bodyStyle=
arrFieldComps.bodyStyleWidth+fieldBodyStyle):(arrFieldComps.bodyStyle=arrFieldComps.bodyStyle||'',arrFieldComps.bodyStyleWidth=arrFieldComps.bodyStyle,arrFieldComps.bodyStyle+=fieldBodyStyle);return arrFieldComps}});
Ext.cmd.derive('Ext.form.field.VTypes',Ext.Base,function(){var alpha=/^[a-zA-Z_]+$/,alphanum=/^[a-zA-Z0-9_]+$/,email=/^(")?(?:[^\."\s])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,url=/(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST))\/?)/i;return{singleton:!0,alternateClassName:'Ext.form.VTypes',email:function(value){return email.test(value)},emailText:'This field should be an e-mail address in the format "user@example.com"',
emailMask:/[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i,url:function(value){return url.test(value)},urlText:'This field should be a URL in the format "http://www.example.com"',alpha:function(value){return alpha.test(value)},alphaText:'This field should only contain letters and _',alphaMask:/[a-z_]/i,alphanum:function(value){return alphanum.test(value)},alphanumText:'This field should only contain letters, numbers and _',alphanumMask:/[a-z0-9_]/i}}(),0,0,0,0,0,0,[Ext.form.field,'VTypes',Ext.form,'VTypes'],0);
Ext.define('MainApp.overrides.form.field.AdvancedVTypes',{override:'Ext.form.field.VTypes',daterange:function(val,field){var date=field.parseDate(val);if(!val)return field.startDateField&&(val=field.up('form').down('#'+field.startDateField),val.setMaxValue(null),this.dateRangeMax=null),field.endDateField&&(field=field.up('form').down('#'+field.endDateField),field.setMinValue(null),this.dateRangeMin=null),!0;if(!date)return!1;!field.startDateField||this.dateRangeMax&&date.getTime()===this.dateRangeMax.getTime()?
!field.endDateField||this.dateRangeMin&&date.getTime()===this.dateRangeMin.getTime()||(field=field.up('form').down('#'+field.endDateField),field.setMinValue(date),field.validate(),this.dateRangeMin=date):(val=field.up('form').down('#'+field.startDateField),val.setMaxValue(date),val.validate(),this.dateRangeMax=date);return!0},daterangeText:'Start date must be less than end date',multiemail:function(value,field){if(!value)return!0;value=value.split(/[;,\s]/).filter(function(r){return!!r});return value.length?
value.every(function(email){return Ext.form.VTypes.email(email)}):!1},multiemailText:'Enter one or more e-mail addresses separated by semicolon'});
Ext.cmd.derive('Ext.form.trigger.Trigger',Ext.Base,{factoryConfig:{defaultType:'trigger'},repeatClick:!1,hidden:!1,hideOnReadOnly:void 0,tooltip:null,weight:0,preventMouseDown:!0,focusOnMousedown:!1,baseCls:'x-form-trigger',focusCls:'x-form-trigger-focus',overCls:'x-form-trigger-over',clickCls:'x-form-trigger-click',validIdRe:Ext.validIdRe,renderTpl:'\x3cdiv id\x3d"{triggerId}" class\x3d"{baseCls} {baseCls}-{ui} {cls} {cls}-{ui} {extraCls} ;{childElCls}"\x3ctpl if\x3d"triggerStyle"\x3e style\x3d"{triggerStyle}"\x3c/tpl\x3e;\x3ctpl if\x3d"ariaRole"\x3e role\x3d"{ariaRole}"\x3ctpl else\x3e role\x3d"presentation"\x3c/tpl\x3e;\x3e;{[values.$trigger.renderBody(values)]};\x3c/div\x3e'.split(';'),statics:{weightComparator:function(triggerA,
triggerB){return triggerA.weight-triggerB.weight}},constructor:function(config){Ext.apply(this,config);this.compat4Mode&&(config=this.cls,this.focusCls=[this.focusCls,config+'-focus'],this.overCls=[this.overCls,config+'-over'],this.clickCls=[this.clickCls,config+'-click'])},afterFieldRender:function(){var tip=this.tooltip;this.initEvents();tip&&(this.tooltip=null,this.setTooltip(tip))},destroy:function(){this.clickRepeater=this.el=Ext.destroy(this.clickRepeater,this.el);this.callParent()},getBodyRenderData:Ext.emptyFn,
getEl:function(){return this.el||null},getStateEl:function(){return this.el},hide:function(){var el=this.el;this.hidden=!0;el&&el.hide()},initEvents:function(){var isFieldEnabled=this.isFieldEnabled,stateEl=this.getStateEl(),el=this.el;stateEl.addClsOnOver(this.overCls,isFieldEnabled,this);stateEl.addClsOnClick(this.clickCls,isFieldEnabled,this);this.repeatClick?this.clickRepeater=new Ext.util.ClickRepeater(el,{preventDefault:!0,handler:this.onClick,listeners:{mousedown:this.onClickRepeaterMouseDown,
mouseup:this.onClickRepeaterMouseUp,scope:this},scope:this}):this.field.mon(el,{click:this.onClick,mousedown:this.onMouseDown,scope:this})},isFieldEnabled:function(){return!this.field.disabled},isVisible:function(){var field=this.field,hidden=!1;if(this.hidden||!field||!this.rendered||this.destroyed)hidden=!0;return!hidden},onClick:function(){var args=arguments;args=this.clickRepeater?args[1]:args[0];var field=this.field;this.handler&&!field.readOnly&&this.isFieldEnabled()&&Ext.callback(this.handler,
this.scope,[field,this,args],0,field)},resolveListenerScope:function(scope){return this.field.resolveSatelliteListenerScope(this,scope)},onMouseDown:function(e){'touch'===e.pointerType||this.field.containsFocus&&!this.focusOnMousedown||this.field.focus();this.preventMouseDown&&e.preventDefault()},onClickRepeaterMouseDown:function(clickRepeater,e){e.parentEvent&&'mousedown'!==e.parentEvent.type||this.field.inputEl.focus();e.preventDefault()},onClickRepeaterMouseUp:function(e){var field=this.field;
Ext.callback(this.endHandler,this.scope,[field,this,e],0,field)},onFieldBlur:function(){this.getStateEl().removeCls(this.focusCls)},onFieldFocus:function(){this.getStateEl().addCls(this.focusCls)},onFieldRender:function(){(this.el=this.field.triggerWrap.selectNode('#'+this.domId,!1)).setVisibilityMode(Ext.Element.DISPLAY);this.rendered=!0},renderBody:function(renderData){var bodyTpl=this.bodyTpl;Ext.apply(renderData,this.getBodyRenderData());return bodyTpl?Ext.XTemplate.getTpl(this,'bodyTpl').apply(renderData):
''},renderTrigger:function(fieldData){var width=this.width,triggerStyle=this.hidden?'display:none;':'';width&&(triggerStyle+='width:'+width);return Ext.XTemplate.getTpl(this,'renderTpl').apply({$trigger:this,fieldData:fieldData,ui:fieldData.ui,childElCls:fieldData.childElCls,triggerId:this.domId=this.field.id+'-trigger-'+this.id,cls:this.cls,triggerStyle:triggerStyle,extraCls:this.extraCls,baseCls:this.baseCls,ariaRole:this.ariaRole})},setHidden:function(hidden){if(hidden!==this.hidden)this[hidden?
'hide':'show']()},setTooltip:function(tip){var el=this.el;tip!==this.tooltip&&(this.tooltip=tip,el&&el.dom.setAttribute('data-qtip',Ext.htmlEncode(tip)))},setVisible:function(visible){this.setHidden(!visible)},show:function(){var el=this.el;this.hidden=!1;el&&el.show()}},1,0,0,0,['trigger.trigger'],[[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.form.trigger,'Trigger'],0);
Ext.cmd.derive('Ext.form.field.Text',Ext.form.field.Base,{alternateClassName:['Ext.form.TextField','Ext.form.Text'],config:{hideTrigger:!1,triggers:void 0},renderConfig:{editable:!0},growMin:30,growMax:800,growAppend:'W',allowBlank:!0,validateBlank:!1,allowOnlyWhitespace:!0,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:'',emptyText:'',emptyCls:'x-form-empty-field',
placeholderCoverCls:'x-placeholder-label',requiredCls:'x-form-required-field',ariaRole:'textbox',repeatTriggerClick:!1,triggerWrapCls:'x-form-trigger-wrap',triggerWrapFocusCls:'x-form-trigger-wrap-focus',triggerWrapInvalidCls:'x-form-trigger-wrap-invalid',fieldBodyCls:'x-form-text-field-body',inputWrapCls:'x-form-text-wrap',inputWrapFocusCls:'x-form-text-wrap-focus',inputWrapInvalidCls:'x-form-text-wrap-invalid',growCls:'x-form-text-grow',emptyClsElements:null,needArrowKeys:!0,squashMouseUp:{mouseup:function(e){this.selectOnFocus&&
this.inputEl.dom.select()},translate:!1,single:!0,preventDefault:!0},childEls:['triggerWrap','inputWrap','placeholderLabel'],preSubTpl:'\x3cdiv id\x3d"{cmpId}-triggerWrap" data-ref\x3d"triggerWrap";\x3ctpl if\x3d"ariaEl \x3d\x3d \'triggerWrap\'"\x3e;\x3ctpl foreach\x3d"ariaElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e;\x3ctpl else\x3e; role\x3d"presentation";\x3c/tpl\x3e; class\x3d"{triggerWrapCls} {triggerWrapCls}-{ui}"\x3e;\x3cdiv id\x3d{cmpId}-inputWrap data-ref\x3d"inputWrap"; role\x3d"presentation" class\x3d"{inputWrapCls} {inputWrapCls}-{ui}"\x3e'.split(';'),
postSubTpl:'\x3ctpl if\x3d"!Ext.supports.Placeholder"\x3e;\x3clabel id\x3d"{cmpId}-placeholderLabel" data-ref\x3d"placeholderLabel" for\x3d"{id}" class\x3d"{placeholderCoverCls} {placeholderCoverCls}-{ui}"\x3e{placeholder}\x3c/label\x3e;\x3c/tpl\x3e;\x3c/div\x3e;\x3ctpl for\x3d"triggers"\x3e{[values.renderTrigger(parent)]}\x3c/tpl\x3e;\x3c/div\x3e'.split(';'),initComponent:function(){var emptyCls=this.emptyCls;!1===this.allowOnlyWhitespace&&(this.allowBlank=!1);this.size&&(this.defaultBodyWidth=6.5*
this.size+20);this.onTrigger1Click||(this.onTrigger1Click=this.onTriggerClick);Ext.form.field.Base.prototype.initComponent.call(this);this.readOnly&&this.setReadOnly(this.readOnly);this.fieldFocusCls=this.baseCls+'-focus';this.emptyUICls=emptyCls+' '+emptyCls+'-'+this.ui;this.addStateEvents('change')},initEvents:function(){var el=this.inputEl;Ext.form.field.Base.prototype.initEvents.call(this);(this.selectOnFocus||this.emptyText)&&this.mon(el,'mousedown',this.onMouseDown,this);(this.maskRe||this.vtype&&
!0!==this.disableKeyFilter&&(this.maskRe=Ext.form.field.VTypes[this.vtype+'Mask']))&&this.mon(el,'keypress',this.filterKeys,this);this.enableKeyEvents&&this.mon(el,{scope:this,keyup:this.onKeyUp,keydown:this.onKeyDown,keypress:this.onKeyPress})},isEqual:function(value1,value2){return this.isEqualAsString(value1,value2)},onChange:function(newVal,oldVal){Ext.form.field.Base.prototype.onChange.call(this,newVal,oldVal);this.autoSize()},getSubTplData:function(fieldData){var value=this.getRawValue(),isEmpty=
this.emptyText&&1>value.length,maxLength=this.maxLength;this.enforceMaxLength?maxLength===Number.MAX_VALUE&&(maxLength=void 0):maxLength=void 0;if(this.emptyText)var placeholder=this.emptyText;fieldData=Ext.apply(Ext.form.field.Base.prototype.getSubTplData.call(this,fieldData),{triggerWrapCls:this.triggerWrapCls,inputWrapCls:this.inputWrapCls,placeholderCoverCls:this.placeholderCoverCls,triggers:this.orderedTriggers,maxLength:maxLength,readOnly:!this.editable||this.readOnly,placeholder:placeholder,
value:value,fieldCls:this.fieldCls+(this.allowBlank?'':' '+this.requiredCls)+(isEmpty?' '+this.emptyUICls:'')});(value=fieldData.inputElAriaAttributes)&&(value['aria-required']=!this.allowBlank);return fieldData},onRender:function(){var triggers=this.getTriggers(),elements=[],id;Ext.supports.FixedTableWidthBug&&(this.el._needsTableWidthFix=!0);(arguments.callee.$previous||Ext.form.field.Base.prototype.onRender).call(this);if(triggers){this.invokeTriggers('onFieldRender');for(id in triggers)elements.push(triggers[id].el);
this.triggerEl=this.triggerCell=new Ext.CompositeElement(elements,!0)}this.inputCell=this.inputWrap},afterRender:function(){this.autoSize();Ext.form.field.Base.prototype.afterRender.call(this);this.invokeTriggers('afterFieldRender');this.emptyClsElements=[this.inputEl]},onMouseDown:function(){this.hasFocus||(this.squashMouseUp.scope=this,Ext.getDoc().on(this.squashMouseUp))},applyTriggers:function(triggers){var hideAllTriggers=this.getHideTrigger(),readOnly=this.readOnly,orderedTriggers=this.orderedTriggers=
[],repeatTriggerClick=this.repeatTriggerClick,id,triggerCfg,i;if(!triggers)for(triggers={},this.triggerCls&&!this.trigger1Cls&&(this.trigger1Cls=this.triggerCls),i=1;triggerCfg=this['trigger'+i+'Cls'];i++)triggers['trigger'+i]={cls:triggerCfg,extraCls:'x-trigger-index-'+i,handler:'onTrigger'+i+'Click',compat4Mode:!0,scope:this};for(id in triggers)if(triggers.hasOwnProperty(id)){triggerCfg=triggers[id];triggerCfg.field=this;triggerCfg.id=id;if(readOnly&&!1!==triggerCfg.hideOnReadOnly||hideAllTriggers&&
!1!==triggerCfg.hidden)triggerCfg.hidden=!0;repeatTriggerClick&&!1!==triggerCfg.repeatClick&&(triggerCfg.repeatClick=!0);triggerCfg=triggers[id]=Ext.form.trigger.Trigger.create(triggerCfg);orderedTriggers.push(triggerCfg)}Ext.Array.sort(orderedTriggers,Ext.form.trigger.Trigger.weightComparator);return triggers},invokeTriggers:function(methodName,args){var triggers=this.getTriggers(),id;if(triggers)for(id in triggers)if(triggers.hasOwnProperty(id)){var trigger=triggers[id];trigger[methodName].apply(trigger,
args||[])}},getTrigger:function(id){return this.getTriggers()[id]},updateHideTrigger:function(hideTrigger){this.invokeTriggers(hideTrigger?'hide':'show')},updateEditable:function(editable,oldEditable){this.setReadOnlyAttr(!editable||this.readOnly)},setReadOnly:function(readOnly){var triggers=this.getTriggers(),hideTriggers=this.getHideTrigger(),id;readOnly=!!readOnly;Ext.form.field.Base.prototype.setReadOnly.call(this,readOnly);this.rendered&&this.setReadOnlyAttr(readOnly||!this.editable);if(triggers)for(id in triggers){var trigger=
triggers[id];(!0===trigger.hideOnReadOnly||!1!==trigger.hideOnReadOnly&&!hideTriggers)&&trigger.setVisible(!readOnly)}},setReadOnlyAttr:function(readOnly){var inputEl=this.inputEl.dom;readOnly?inputEl.setAttribute('readonly','readonly'):inputEl.removeAttribute('readonly');this.ariaStaticRoles[this.ariaRole]||this.inputEl.dom.setAttribute('aria-readonly',!!readOnly)},processRawValue:function(value){var stripRe=this.stripCharsRe;if(stripRe){if(!stripRe.global){var mod='g'+(stripRe.ignoreCase?'i':'');
mod+=stripRe.multiline?'m':'';stripRe=new RegExp(stripRe.source,mod)}stripRe=value.replace(stripRe,'');stripRe!==value&&(this.setRawValue(stripRe),this.lastValue===value&&(this.lastValue=stripRe),value=stripRe)}return value},onDisable:function(){Ext.form.field.Base.prototype.onDisable.call(this);Ext.isIE&&(this.inputEl.dom.unselectable='on')},onEnable:function(){Ext.form.field.Base.prototype.onEnable.call(this);Ext.isIE&&(this.inputEl.dom.unselectable='')},onKeyDown:function(e){this.fireEvent('keydown',
this,e)},onKeyUp:function(e){this.fireEvent('keyup',this,e)},onKeyPress:function(e){this.fireEvent('keypress',this,e)},getEmptyText:function(){return this.emptyText},setEmptyText:function(value){var inputEl=this.inputEl;this.emptyText=value=value||'';this.rendered&&(Ext.supports.Placeholder&&!this.simulatePlaceholder?value?inputEl.dom.setAttribute('placeholder',value):inputEl.dom.removeAttribute('placeholder'):this.placeholderLabel.setHtml(value),this.refreshEmptyText());return this},afterFirstLayout:function(){Ext.form.field.Base.prototype.afterFirstLayout.call(this);
if(Ext.isIE&&this.disabled){var el=this.inputEl;el&&(el.dom.unselectable='on')}},toggleInvalidCls:function(hasError){var method=hasError?'addCls':'removeCls';Ext.form.field.Base.prototype.toggleInvalidCls.call(this,hasError);this.triggerWrap[method](this.triggerWrapInvalidCls);this.inputWrap[method](this.inputWrapInvalidCls)},onFieldMutation:function(e){this.refreshEmptyText();Ext.form.field.Base.prototype.onFieldMutation.call(this,e)},refreshEmptyText:function(){var inputEl=this.inputEl,emptyClsElements=
this.emptyClsElements;if(inputEl){var value=this.getValue();inputEl=!(inputEl.dom.value||Ext.isArray(value)&&value.length);this.placeholderLabel&&this.placeholderLabel.setDisplayed(inputEl);for(value=0;value<emptyClsElements.length;value++)emptyClsElements[value].toggleCls(this.emptyUICls,inputEl)}},setValue:function(value){value=Ext.form.field.Base.prototype.setValue.call(this,value);this.refreshEmptyText();return value},onFocus:function(e){var me=this,len;Ext.form.field.Base.prototype.onFocus.call(this,
e);Ext.asap(function(){me.destroyed||document.activeElement!==me.inputEl.dom||(len=me.inputEl.dom.value.length,me.selectText(me.selectOnFocus?0:len,len))});me.emptyText&&me.autoSize();me.addCls(me.fieldFocusCls);me.triggerWrap.addCls(me.triggerWrapFocusCls);me.inputWrap.addCls(me.inputWrapFocusCls);me.invokeTriggers('onFieldFocus',[e])},onBlur:function(e){Ext.form.field.Base.prototype.onBlur.call(this,e);this.removeCls(this.fieldFocusCls);this.triggerWrap.removeCls(this.triggerWrapFocusCls);this.inputWrap.removeCls(this.inputWrapFocusCls);
this.invokeTriggers('onFieldBlur',[e])},filterKeys:function(e){if(!(e.ctrlKey&&!e.altKey||e.isSpecialKey())){var charCode=String.fromCharCode(e.getCharCode());this.maskRe.test(charCode)||e.stopEvent()}},getState:function(){return this.addPropertyToState(Ext.form.field.Base.prototype.getState.call(this),'value')},applyState:function(state){Ext.form.field.Base.prototype.applyState.call(this,state);state.hasOwnProperty('value')&&this.setValue(state.value)},getErrors:function(value){value=arguments.length?
null==value?'':value:this.processRawValue(this.getRawValue());var errors=Ext.form.field.Base.prototype.getErrors.call(this,value),validator=this.validator,vtype=this.vtype,vtypes=Ext.form.field.VTypes,regex=this.regex,format=Ext.String.format;Ext.isFunction(validator)&&(validator=validator.call(this,value),!0!==validator&&errors.push(validator));if(1>(this.allowOnlyWhitespace?value:Ext.String.trim(value)).length){this.allowBlank||errors.push(this.blankText);if(!this.validateBlank)return errors;var isBlank=
!0}!isBlank&&value.length<this.minLength&&errors.push(format(this.minLengthText,this.minLength));value.length>this.maxLength&&errors.push(format(this.maxLengthText,this.maxLength));vtype&&(vtypes[vtype](value,this)||errors.push(this.vtypeText||vtypes[vtype+'Text']));regex&&!regex.test(value)&&errors.push(this.regexText||this.invalidText);return errors},selectText:function(start,end){var el=this.inputEl.dom,len=el.value.length;0<len&&(start=void 0===start?0:Math.min(start,len),end=void 0===end?len:
Math.min(end,len),el.setSelectionRange?el.setSelectionRange(start,end):el.createTextRange&&(el=el.createTextRange(),el.moveStart('character',start),el.moveEnd('character',end-len),el.select()))},getGrowWidth:function(){return this.inputEl.dom.value},autoSize:function(){var triggerId;if(this.grow&&this.rendered&&this.getSizeModel().width.auto){var inputEl=this.inputEl;var triggers=this.getTriggers();var triggerWidth=0;var value=Ext.util.Format.htmlEncode(this.getGrowWidth()||(this.hasFocus?'':this.emptyText)||
'');value+=this.growAppend;for(triggerId in triggers)triggerWidth+=triggers[triggerId].el.getWidth();triggers=inputEl.getTextWidth(value)+triggerWidth+this.inputWrap.getBorderWidth('lr')+this.triggerWrap.getBorderWidth('lr');triggers=Math.min(Math.max(triggers,this.growMin),this.growMax);this.bodyEl.setWidth(triggers);this.updateLayout();this.fireEvent('autosize',this,triggers)}},doDestroy:function(){this.invokeTriggers('destroy');Ext.destroy(this.triggerRepeater);Ext.form.field.Base.prototype.doDestroy.call(this)},
onTriggerClick:Ext.emptyFn,privates:{getTdType:function(){return'textfield'}},deprecated:{5:{methods:{getTriggerWidth:function(){var triggers=this.getTriggers(),width=0,id;if(triggers&&this.rendered)for(id in triggers)triggers.hasOwnProperty(id)&&(width+=triggers[id].el.getWidth());return width}}}}},0,['textfield'],['component','box','field','textfield'],{component:!0,box:!0,field:!0,textfield:!0},['widget.textfield'],0,[Ext.form.field,'Text',Ext.form,'TextField',Ext.form,'Text'],0);
Ext.cmd.derive('Ext.form.field.TextArea',Ext.form.field.Text,{alternateClassName:'Ext.form.TextArea',fieldSubTpl:['\x3ctextarea id\x3d"{id}" data-ref\x3d"inputEl" {inputAttrTpl}','\x3ctpl if\x3d"name"\x3e name\x3d"{name}"\x3c/tpl\x3e','\x3ctpl if\x3d"placeholder"\x3e placeholder\x3d"{placeholder}"\x3c/tpl\x3e','\x3ctpl if\x3d"maxLength !\x3d\x3d undefined"\x3e maxlength\x3d"{maxLength}"\x3c/tpl\x3e','\x3ctpl if\x3d"readOnly"\x3e readonly\x3d"readonly"\x3c/tpl\x3e','\x3ctpl if\x3d"disabled"\x3e disabled\x3d"disabled"\x3c/tpl\x3e',
'\x3ctpl if\x3d"tabIdx !\x3d null"\x3e tabindex\x3d"{tabIdx}"\x3c/tpl\x3e',' class\x3d"{fieldCls} {typeCls} {typeCls}-{ui} {inputCls}" ','\x3ctpl if\x3d"fieldStyle"\x3e style\x3d"{fieldStyle}"\x3c/tpl\x3e','\x3ctpl foreach\x3d"ariaElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3ctpl foreach\x3d"inputElAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e',' autocomplete\x3d"off"\x3e\n','\x3ctpl if\x3d"value"\x3e{[Ext.util.Format.htmlEncode(values.value)]}\x3c/tpl\x3e','\x3c/textarea\x3e',{disableFormats:!0}],
growMin:60,growMax:1E3,growAppend:'\n-',enterIsSpecial:!1,preventScrollbars:!1,returnRe:/\r/g,inputCls:'x-form-textarea',extraFieldBodyCls:'x-form-textarea-body',ariaAttributes:{'aria-multiline':!0},getSubTplData:function(fieldData){var fieldStyle=this.getFieldStyle(),ret=Ext.form.field.Text.prototype.getSubTplData.apply(this,arguments);this.grow&&this.preventScrollbars&&(ret.fieldStyle=(fieldStyle||'')+';overflow:hidden;height:'+this.growMin+'px');return ret},afterRender:function(){Ext.form.field.Text.prototype.afterRender.apply(this,
arguments);if(this.needsMaxCheck=this.enforceMaxLength&&this.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength)this.inputEl.on('paste',this.onPaste,this)},transformRawValue:function(value){return this.stripReturns(value)},getValue:function(){return this.stripReturns(Ext.form.field.Text.prototype.getValue.call(this))},valueToRaw:function(value){value=this.stripReturns(value);return Ext.form.field.Text.prototype.valueToRaw.call(this,value)},stripReturns:function(value){value&&'string'===
typeof value&&(value=value.replace(this.returnRe,''));return value},onPaste:function(){this.pasteTask||(this.pasteTask=new Ext.util.DelayedTask(this.pasteCheck,this));this.pasteTask.delay(1)},pasteCheck:function(){var value=this.getValue(),max=this.maxLength;value.length>max&&(value=value.substr(0,max),this.setValue(value))},fireKey:function(e){var key=e.getKey();e.isSpecialKey()&&(this.enterIsSpecial||key!==e.ENTER||e.hasModifier())&&this.fireEvent('specialkey',this,e);key===e.ENTER&&e.stopPropagation();
!this.needsMaxCheck||key===e.BACKSPACE||key===e.DELETE||e.isNavKeyPress()||this.isCutCopyPasteSelectAll(e,key)||(key=this.getValue(),key.length>=this.maxLength&&e.stopEvent())},isCutCopyPasteSelectAll:function(e,key){return e.ctrlKey?key===e.A||key===e.C||key===e.V||key===e.X:!1},autoSize:function(){if(this.grow&&this.rendered&&this.getSizeModel().height.auto){var inputEl=this.inputEl;var curWidth=inputEl.getWidth(!0);var value=Ext.util.Format.htmlEncode(inputEl.dom.value)||'\x26#160;';value+=this.growAppend;
value=value.replace(/\n/g,'\x3cbr/\x3e');inputEl=Ext.util.TextMetrics.measure(inputEl,value,curWidth).height+inputEl.getPadding('tb')+this.inputWrap.getBorderWidth('tb')+this.triggerWrap.getBorderWidth('tb');inputEl=Math.min(Math.max(inputEl,this.growMin),this.growMax);this.bodyEl.setHeight(inputEl);this.updateLayout();this.fireEvent('autosize',this,inputEl)}},doDestroy:function(){var task=this.pasteTask;task&&task.cancel();Ext.form.field.Text.prototype.doDestroy.call(this)}},0,['textarea','textareafield'],
'component box field textfield textareafield textarea'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,textareafield:!0,textarea:!0},['widget.textarea','widget.textareafield'],0,[Ext.form.field,'TextArea',Ext.form,'TextArea'],0);
Ext.cmd.derive('Ext.window.MessageBox',Ext.window.Window,{OK:1,YES:2,NO:4,CANCEL:8,OKCANCEL:9,YESNO:6,YESNOCANCEL:14,INFO:'x-message-box-info',WARNING:'x-message-box-warning',QUESTION:'x-message-box-question',ERROR:'x-message-box-error',hideMode:'offsets',closeAction:'hide',resizable:!1,scrollable:!0,title:'\x26#160;',defaultMinWidth:250,defaultMaxWidth:600,defaultMinHeight:110,defaultMaxHeight:500,minWidth:null,maxWidth:null,minHeight:null,maxHeight:null,constrain:!0,cls:['x-message-box','x-hidden-offsets'],
layout:{type:'vbox',align:'stretch'},shrinkWrapDock:!0,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'},baseIconCls:'x-message-box-icon',ariaRole:'alertdialog',makeButton:function(btnIdx){btnIdx=this.buttonIds[btnIdx];return new Ext.button.Button({handler:this.btnCallback,itemId:btnIdx,scope:this,text:this.buttonText[btnIdx],
minWidth:75})},btnCallback:function(btn,event){var me=this;if(event&&'keydown'===event.type&&!event.isSpecialKey())event.getTarget(null,null,!0).on({keyup:function(e){me.btnCallback(btn,e)},single:!0});else{if(me.cfg.prompt||me.cfg.multiline){event=me.cfg.multiline?me.textArea:me.textField;var value=event.getValue();event.reset()}me.hide();me.userCallback(btn.itemId,value,me.cfg)}},hide:function(){var cls=this.cfg?this.cfg.cls:'';this.progressBar.reset();cls&&this.removeCls(cls);Ext.window.Window.prototype.hide.apply(this,
arguments)},constructor:function(cfg){Ext.window.Window.prototype.constructor.apply(this,arguments);this.minWidth=this.defaultMinWidth=this.minWidth||this.defaultMinWidth;this.maxWidth=this.defaultMaxWidth=this.maxWidth||this.defaultMaxWidth;this.minHeight=this.defaultMinHeight=this.minHeight||this.defaultMinHeight;this.maxHeight=this.defaultMaxHeight=this.maxHeight||this.defaultMaxHeight},initComponent:function(cfg){cfg=this.id;var i;this.title=this.title||'\x26#160;';this.iconCls=this.iconCls||
'';this.topContainer=new Ext.container.Container({layout:'hbox',padding:10,style:{overflow:'hidden'},items:[this.iconComponent=new Ext.Component({cls:this.baseIconCls}),this.promptContainer=new Ext.container.Container({flex:1,layout:{type:'vbox',align:'stretch'},items:[this.msg=new Ext.Component({id:cfg+'-msg',cls:this.baseCls+'-text'}),this.textField=new Ext.form.field.Text({id:cfg+'-textfield',enableKeyEvents:!0,ariaAttributes:{'aria-labelledby':this.msg.id},listeners:{keydown:this.onPromptKey,
scope:this}}),this.textArea=new Ext.form.field.TextArea({id:cfg+'-textarea',height:75,ariaAttributes:{'aria-labelledby':this.msg.id}})]})]});this.progressBar=new Ext.ProgressBar({id:cfg+'-progressbar',margin:'0 10 10 10'});this.items=[this.topContainer,this.progressBar];this.msgButtons=[];for(i=0;4>i;i++){var button=this.makeButton(i);this.msgButtons[button.itemId]=button;this.msgButtons.push(button)}this.bottomTb=new Ext.toolbar.Toolbar({id:cfg+'-toolbar',ui:'footer',dock:'bottom',enableFocusableContainer:!1,
ariaRole:null,layout:{pack:'center'},items:[this.msgButtons[0],this.msgButtons[1],this.msgButtons[2],this.msgButtons[3]]});this.dockedItems=[this.bottomTb];this.on('close',this.onClose,this);Ext.window.Window.prototype.initComponent.call(this)},afterRender:function(){Ext.window.Window.prototype.afterRender.apply(this,arguments);this.textField.labelEl.dom.removeAttribute('for');this.textArea.labelEl.dom.removeAttribute('for')},onClose:function(){var btn=this.msgButtons[3];btn&&this.btnCallback(btn)},
onPromptKey:function(textField,e){if(e.keyCode===e.RETURN||10===e.keyCode)this.msgButtons.ok.isVisible()?this.msgButtons.ok.handler.call(this,this.msgButtons.ok):this.msgButtons.yes.isVisible()&&this.msgButtons.yes.handler.call(this,this.msgButtons.yes)},reconfigure:function(cfg){var me=this,buttons=0,hideToolbar=!0,oldButtonText=me.buttonText,resizer=me.resizer,header=me.header;buttons=header&&!header.isHeader;var message=cfg&&(cfg.message||cfg.msg),buttonTips=cfg.buttonTips;me.updateButtonText();
me.cfg=cfg=cfg||{};var msgButtons=cfg.wait;if(cfg.width)var width=cfg.width;if(cfg.height)var height=cfg.height;me.minWidth=cfg.minWidth||me.defaultMinWidth;me.maxWidth=cfg.maxWidth||me.defaultMaxWidth;me.minHeight=cfg.minHeight||me.defaultMinHeight;me.maxHeight=cfg.maxHeight||me.defaultMaxHeight;'maskClickAction'in cfg?me.maskClickAction=cfg.maskClickAction:delete me.maskClickAction;if(resizer){var resizeTracker=resizer.resizeTracker;resizer.minWidth=resizeTracker.minWidth=me.minWidth;resizer.maxWidth=
resizeTracker.maxWidth=me.maxWidth;resizer.minHeight=resizeTracker.minHeight=me.minHeight;resizer.maxHeight=resizeTracker.maxHeight=me.maxHeight}delete me.defaultFocus;cfg.defaultFocus&&(me.defaultFocus=cfg.defaultFocus);me.animateTarget=cfg.animateTarget||void 0;me.modal=!1!==cfg.modal;resizer=null!=cfg.title?cfg.title:buttons&&null!=header.title?header.title:me.title;buttons=null!=cfg.iconCls?cfg.iconCls:buttons&&null!=header.iconCls?header.iconCls:me.iconCls;me.setTitle(resizer);me.setIconCls(buttons);
Ext.isObject(cfg.buttons)?(me.buttonText=cfg.buttons,buttons=0):(me.buttonText=cfg.buttonText||me.buttonText,buttons=Ext.isNumber(cfg.buttons)?cfg.buttons:0);Ext.each(me.buttonIds,function(buttonId){me.msgButtons[buttonId].setTooltip(buttonTips&&buttonTips[buttonId]||null)});buttons|=me.updateButtonText();me.buttonText=oldButtonText;Ext.suspendLayouts();me.width=me.height=null;if(width||height)width&&me.setWidth(width),height&&me.setHeight(height);me.rendered||me.render(Ext.getBody());me.closable=
!1!==cfg.closable&&!msgButtons;if(header=me.header)(oldButtonText=header.child('[type\x3dclose]'))&&oldButtonText.setVisible(me.closable),cfg.title||me.closable||cfg.iconCls?header.show():header.hide();me.liveDrag=!cfg.proxyDrag;me.userCallback=Ext.Function.bindCallback(cfg.callback||cfg.fn||Ext.emptyFn,cfg.scope||Ext.global);me.setIcon(cfg.icon);oldButtonText=me.msg;message?(oldButtonText.setHtml(message),oldButtonText.show(),me.ariaEl.dom.setAttribute('aria-describedby',oldButtonText.id)):(oldButtonText.hide(),
me.ariaEl.dom.removeAttribute('aria-describedby'));message=me.textArea;oldButtonText=me.textField;cfg.prompt||cfg.multiline?((me.multiline=cfg.multiline)?(message.setValue(cfg.value),message.setHeight(cfg.defaultTextHeight||me.defaultTextHeight),message.show(),oldButtonText.hide(),me.defaultFocus=message):(oldButtonText.setValue(cfg.value),message.hide(),oldButtonText.show(),me.defaultFocus=oldButtonText),me.ariaEl.dom.removeAttribute('aria-describedby')):(message.hide(),oldButtonText.hide());message=
me.progressBar;cfg.progress||msgButtons?(message.show(),me.updateProgress(0,cfg.progressText),me.defaultFocus=message,msgButtons&&message.wait(!0===msgButtons?cfg.waitConfig:msgButtons)):message.hide();msgButtons=me.msgButtons;for(cfg=0;4>cfg;cfg++)buttons&Math.pow(2,cfg)?(me.defaultFocus||(me.defaultFocus=msgButtons[cfg]),msgButtons[cfg].show(),hideToolbar=!1):msgButtons[cfg].hide();hideToolbar?me.bottomTb.hide():me.bottomTb.show();Ext.resumeLayouts(!0)},updateButtonText:function(){var buttonText=
this.buttonText,buttons=0,btnId,btn;for(btnId in buttonText)buttonText.hasOwnProperty(btnId)&&(btn=this.msgButtons[btnId])&&(this.cfg&&this.cfg.buttonText&&(buttons|=Math.pow(2,Ext.Array.indexOf(this.buttonIds,btnId))),btn.text!==buttonText[btnId]&&btn.setText(buttonText[btnId]));return buttons},show:function(cfg){var me=this;cfg=cfg||{};if(Ext.Component.layoutSuspendCount)return Ext.on({resumelayouts:function(){me.show(cfg)},single:!0}),me;me.reconfigure(cfg);cfg.cls&&me.addCls(cfg.cls);var visibleFocusables=
me.query('textfield:not([hidden]),textarea:not([hidden]),button:not([hidden])');me.preventFocusOnActivate=!visibleFocusables.length;Ext.window.Window.prototype.show.call(this);return me},onShow:function(){Ext.window.Window.prototype.onShow.apply(this,arguments);this.center()},updateText:function(text){this.msg.setHtml(text)},setIcon:function(icon,width,height){var iconCmp=this.iconComponent,cls=this.messageIconCls;cls&&iconCmp.removeCls(cls);icon?(iconCmp.show(),(width||height)&&iconCmp.setSize(width||
iconCmp.getWidth(),height||iconCmp.getHeight()),iconCmp.addCls('x-dlg-icon'),iconCmp.addCls(this.messageIconCls=icon)):(iconCmp.removeCls('x-dlg-icon'),iconCmp.hide());return this},updateProgress:function(value,progressText,message){this.progressBar.updateProgress(value,progressText);message&&this.updateText(message);return this},onEsc:function(){!1!==this.closable&&Ext.window.Window.prototype.onEsc.apply(this,arguments)},confirm:function(cfg,message,fn,scope){Ext.isString(cfg)&&(cfg={title:cfg,icon:this.QUESTION,
message:message,buttons:this.YESNO,callback:fn,scope:scope});return this.show(cfg)},prompt:function(title,message,fn,scope,multiline,value){Ext.isString(title)&&(title={prompt:!0,title:title,minWidth:this.minPromptWidth,message:message,buttons:this.OKCANCEL,callback:fn,scope:scope,multiline:multiline,value:value});return this.show(title)},wait:function(message,title,config){Ext.isString(message)&&(message={title:title,message:message,closable:!1,wait:!0,modal:!0,minWidth:this.minProgressWidth,waitConfig:config});
return this.show(message)},alert:function(title,message,fn,scope){Ext.isString(title)&&(title={title:title,message:message,buttons:this.OK,fn:fn,scope:scope,minWidth:this.minWidth});return this.show(title)},progress:function(title,message,progressText){Ext.isString(title)&&(title={title:title,message:message,progress:!0,progressText:progressText});return this.show(title)}},1,['messagebox'],'component box container panel window messagebox'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,
messagebox:!0},['widget.messagebox'],0,[Ext.window,'MessageBox'],function(MessageBox){Ext.onInternalReady(function(){Ext.MessageBox=Ext.Msg=new MessageBox})});
Ext.define('RCOP.window.MessageBox',{override:'Ext.window.MessageBox',buttonUis:{ok:'primary',yes:'primary',no:'alternate',cancel:'alternate'},config:{ui:'msg-box'},makeButton:function(btnIdx){btnIdx=this.buttonIds[btnIdx];return new Ext.button.Button({handler:this.btnCallback,itemId:btnIdx,scope:this,text:this.buttonText[btnIdx],minWidth:80,ui:this.buttonUis[btnIdx]})},initComponent:function(cfg){(arguments.callee.$previous||Ext.window.Window.prototype.initComponent).call(this,cfg);this.bottomTb.layout.pack=
'end';this.topContainer.padding='16 48 24 16'}});
Ext.cmd.derive('Ext.form.Basic',Ext.util.Observable,{alternateClassName:'Ext.form.BasicForm',taskDelay:10,constructor:function(owner,config){this.owner=owner;this.fieldMonitors={validitychange:this.checkValidityDelay,enable:this.checkValidityDelay,disable:this.checkValidityDelay,dirtychange:this.checkDirtyDelay,errorchange:this.checkErrorDelay,scope:this};this.checkValidityTask=new Ext.util.DelayedTask(this.checkValidity,this);this.checkDirtyTask=new Ext.util.DelayedTask(this.checkDirty,this);this.checkErrorTask=
new Ext.util.DelayedTask(this.checkError,this);this.monitor=new Ext.container.Monitor({selector:'[isFormField]:not([excludeForm])',scope:this,addHandler:this.onFieldAdd,removeHandler:this.onFieldRemove,invalidateHandler:this.onMonitorInvalidate});this.monitor.bind(owner);Ext.apply(this,config);Ext.isString(this.paramOrder)&&(this.paramOrder=this.paramOrder.split(/[\s,|]/));(owner=this.reader)&&!owner.isReader&&('string'===typeof owner&&(owner={type:owner}),this.reader=Ext.createByAlias('reader.'+
owner.type,owner));(owner=this.errorReader)&&!owner.isReader&&('string'===typeof owner&&(owner={type:owner}),this.errorReader=Ext.createByAlias('reader.'+owner.type,owner));Ext.util.Observable.prototype.constructor.call(this)},initialize:function(){this.initialized=!0;this.onValidityChange(!this.hasInvalidField())},timeout:30,paramsAsHash:!1,waitTitle:'Please Wait...',trackResetOnLoad:!1,wasDirty:!1,destroy:function(){var mon=this.monitor;mon&&(mon.unbind(),this.monitor=null);this.clearListeners();
this.checkValidityTask.cancel();this.checkDirtyTask.cancel();this.checkErrorTask.cancel();this.checkValidityTask=this.checkDirtyTask=this.checkErrorTask=null;Ext.util.Observable.prototype.destroy.call(this)},onFieldAdd:function(field){field.on(this.fieldMonitors);this.onMonitorInvalidate()},onFieldRemove:function(field){field.un(this.fieldMonitors);this.onMonitorInvalidate()},onMonitorInvalidate:function(){this.initialized&&this.checkValidityDelay()},getFields:function(){return this.monitor.getItems()},
getBoundItems:function(){var boundItems=this._boundItems;boundItems&&0!==boundItems.getCount()||(boundItems=this._boundItems=new Ext.util.MixedCollection,boundItems.addAll(this.owner.query('[formBind]')));return boundItems},hasInvalidField:function(){return!!this.getFields().findBy(function(field){var preventMark=field.preventMark;field.preventMark=!0;var isValid=field.isValid();field.preventMark=preventMark;return!isValid})},isValid:function(){Ext.suspendLayouts();var invalid=this.getFields().filterBy(function(field){return!field.validate()});
Ext.resumeLayouts(!0);return 1>invalid.length},checkValidity:function(){if(!this.destroyed){var valid=!this.hasInvalidField();valid!==this.wasValid&&(this.onValidityChange(valid),this.fireEvent('validitychange',this,valid),this.wasValid=valid)}},checkValidityDelay:function(){var timer=this.taskDelay;timer?this.checkValidityTask.delay(timer):this.checkValidity()},checkError:function(){this.fireEvent('errorchange',this)},checkErrorDelay:function(){var timer=this.taskDelay;timer?this.checkErrorTask.delay(timer):
this.checkError()},onValidityChange:function(valid){var boundItems=this.getBoundItems(),i;if(boundItems){boundItems=boundItems.items;var iLen=boundItems.length;for(i=0;i<iLen;i++){var cmp=boundItems[i];cmp.disabled===valid&&cmp.setDisabled(!valid)}}},isDirty:function(){return!!this.getFields().findBy(function(f){return f.isDirty()})},checkDirtyDelay:function(){var timer=this.taskDelay;timer?this.checkDirtyTask.delay(timer):this.checkDirty()},checkDirty:function(){if(!this.destroyed){var dirty=this.isDirty();
dirty!==this.wasDirty&&(this.fireEvent('dirtychange',this,dirty),this.wasDirty=dirty)}},hasUpload:function(){return!!this.getFields().findBy(function(f){return f.isFileUpload()})},doAction:function(action,options){Ext.isString(action)&&(action=Ext.ClassManager.instantiateByAlias('formaction.'+action,Ext.apply({},options,{form:this})));!1!==this.fireEvent('beforeaction',this,action)&&(this.beforeAction(action),Ext.defer(action.run,100,action));return this},submit:function(options){options=options||
{};return this.doAction(options.standardSubmit||this.standardSubmit?'standardsubmit':this.api?'directsubmit':'submit',options)},load:function(options){return this.doAction(this.api?'directload':'load',options)},updateRecord:function(record){record=record||this._record;if(!record)return this;for(var fields=record.self.fields,values=this.getFieldValues(),obj={},i=0,len=fields.length,name;i<len;++i)name=fields[i].name,values.hasOwnProperty(name)&&(obj[name]=values[name]);record.beginEdit();record.set(obj);
record.endEdit();return this},loadRecord:function(record){this._record=record;return this.setValues(record.getData())},getRecord:function(){return this._record},beforeAction:function(action){var waitMsg=action.waitMsg,fields=this.getFields().items,f,fLen=fields.length;for(f=0;f<fLen;f++){var field=fields[f];field.isFormField&&field.syncValue&&field.syncValue()}if(waitMsg)if(fields=this.waitMsgTarget,!0===fields)this.owner.el.mask(waitMsg,'x-mask-loading');else if(fields)fields=this.waitMsgTarget=
Ext.get(fields),fields.mask(waitMsg,'x-mask-loading');else{if(this.floatingAncestor=this.owner.up('[floating]'))this.savePreventFocusOnActivate=this.floatingAncestor.preventFocusOnActivate,this.floatingAncestor.preventFocusOnActivate=!0;Ext.MessageBox.wait(waitMsg,action.waitTitle||this.waitTitle)}},afterAction:function(action,success){if(action.waitMsg){var messageBox=Ext.MessageBox,waitMsgTarget=this.waitMsgTarget;!0===waitMsgTarget?this.owner.el.unmask():waitMsgTarget?waitMsgTarget.unmask():messageBox.hide()}this.floatingAncestor&&
(this.floatingAncestor.preventFocusOnActivate=this.savePreventFocusOnActivate);success?(action.reset&&this.reset(),Ext.callback(action.success,action.scope||action,[this,action]),this.fireEvent('actioncomplete',this,action)):(Ext.callback(action.failure,action.scope||action,[this,action]),this.fireEvent('actionfailed',this,action))},findField:function(id){return this.getFields().findBy(function(f){return f.id===id||f.name===id||f.dataIndex===id})},markInvalid:function(errors){function mark(fieldId,
msg){(fieldId=me.findField(fieldId))&&fieldId.markInvalid(msg)}var me=this,e;if(Ext.isArray(errors)){var eLen=errors.length;for(e=0;e<eLen;e++){var error=errors[e];mark(error.id||error.field,error.msg||error.message)}}else if(errors instanceof Ext.data.ErrorCollection)for(eLen=errors.items.length,e=0;e<eLen;e++)error=errors.items[e],mark(error.field,error.message);else for(eLen in errors)errors.hasOwnProperty(eLen)&&(e=errors[eLen],mark(eLen,e,errors));return this},setValues:function(values){function setVal(fieldId,
val){if(fieldId=me.findField(fieldId))fieldId.setValue(val),me.trackResetOnLoad&&fieldId.resetOriginalValue()}var me=this,v;Ext.suspendLayouts();if(Ext.isArray(values)){var vLen=values.length;for(v=0;v<vLen;v++){var val$jscomp$0=values[v];setVal(val$jscomp$0.id,val$jscomp$0.value)}}else Ext.iterate(values,setVal);Ext.resumeLayouts(!0);return this},getValues:function(asString,dirtyOnly,includeEmptyText,useDataValues,isSubmitting){var values={},fields=this.getFields().items,fLen=fields.length,isArray=
Ext.isArray,name,f;for(f=0;f<fLen;f++){var field=fields[f];if(!dirtyOnly||field.isDirty()){var data=field[useDataValues?'getModelData':'getSubmitData'](includeEmptyText,isSubmitting);if(Ext.isObject(data))for(name in data)if(data.hasOwnProperty(name)){var val=data[name];includeEmptyText&&''===val&&(val=field.emptyText||'');if(field.isRadio)values[name]=values[name]||val;else if(!field.isCheckbox||null!==val)if(values.hasOwnProperty(name)){var bucket=values[name];isArray(bucket)||(bucket=values[name]=
[bucket]);isArray(val)?values[name]=bucket.concat(val):bucket.push(val)}else values[name]=val}}}asString&&(values=Ext.Object.toQueryString(values));return values},getFieldValues:function(dirtyOnly){return this.getValues(!1,dirtyOnly,!1,!0)},clearInvalid:function(){Ext.suspendLayouts();var fields=this.getFields().items,f,fLen=fields.length;for(f=0;f<fLen;f++)fields[f].clearInvalid();Ext.resumeLayouts(!0);return this},reset:function(resetRecord){Ext.suspendLayouts();var fields=this.getFields().items,
f,fLen=fields.length;for(f=0;f<fLen;f++)fields[f].reset();Ext.resumeLayouts(!0);!0===resetRecord&&delete this._record;return this},applyToFields:function(obj){var fields=this.getFields().items,f,fLen=fields.length;for(f=0;f<fLen;f++)Ext.apply(fields[f],obj);return this},applyIfToFields:function(obj){var fields=this.getFields().items,f,fLen=fields.length;for(f=0;f<fLen;f++)Ext.applyIf(fields[f],obj);return this}},1,0,0,0,0,0,[Ext.form,'Basic',Ext.form,'BasicForm'],0);
Ext.define('RCOP.form.Basic',{override:'Ext.form.Basic',clearDirty:function(){this.setValues(this.getValues())},getValues:function(asString,dirtyOnly,includeEmptyText,useDataValues,isSubmitting){var values={},fields=this.getFields().items,fLen=fields.length,isArray=Ext.isArray,name,f;for(f=0;f<fLen;f++){var field=fields[f];if(!dirtyOnly||field.isDirty()){var data=field[useDataValues?'getModelData':'getSubmitData'](includeEmptyText,isSubmitting);if(Ext.isObject(data))for(name in data)if(data.hasOwnProperty(name)){var val=
data[name];includeEmptyText&&''===val&&(val=field.emptyText||'');if(field.isRadio)values[name]=null===values[name]||void 0===values[name]?val:values[name];else if(!field.isCheckbox||null!==val)if(values.hasOwnProperty(name)){var bucket=values[name];isArray(bucket)||(bucket=values[name]=[bucket]);isArray(val)?values[name]=bucket.concat(val):bucket.push(val)}else values[name]=val}}}asString&&(values=Ext.Object.toQueryString(values));return values}});
Ext.cmd.derive('Ext.form.FieldAncestor',Ext.Mixin,{mixinConfig:{id:'fieldAncestor',after:{initInheritedState:'initFieldInheritedState'},before:{doDestroy:'onBeforeDestroy'}},initFieldAncestor:function(){this.monitor=new Ext.container.Monitor({scope:this,selector:'[isFormField]:not([excludeForm])',addHandler:this.onChildFieldAdd,removeHandler:this.onChildFieldRemove});this.initFieldDefaults()},initMonitor:function(){this.monitor.bind(this)},initFieldInheritedState:function(inheritedState){var inheritedFieldDefaults=
inheritedState.fieldDefaults,fieldDefaults=this.fieldDefaults;fieldDefaults&&(inheritedState.fieldDefaults=inheritedFieldDefaults?Ext.apply(Ext.Object.chain(inheritedFieldDefaults),fieldDefaults):fieldDefaults)},onChildFieldAdd:function(field){this.mon(field,'errorchange',this.handleFieldErrorChange,this);this.mon(field,'validitychange',this.handleFieldValidityChange,this)},onChildFieldRemove:function(field){this.mun(field,'errorchange',this.handleFieldErrorChange,this);this.mun(field,'validitychange',
this.handleFieldValidityChange,this)},initFieldDefaults:function(){this.fieldDefaults||(this.fieldDefaults={})},handleFieldValidityChange:function(field,isValid){field!==this&&(this.fireEvent('fieldvaliditychange',this,field,isValid),this.onFieldValidityChange(field,isValid))},handleFieldErrorChange:function(labelable,activeError){labelable!==this&&(this.fireEvent('fielderrorchange',this,labelable,activeError),this.onFieldErrorChange(labelable,activeError))},onFieldValidityChange:Ext.emptyFn,onFieldErrorChange:Ext.emptyFn,
onBeforeDestroy:function(){this.monitor=Ext.destroy(this.monitor)}},0,0,0,0,0,0,[Ext.form,'FieldAncestor'],0);
Ext.cmd.derive('Ext.layout.component.field.FieldContainer',Ext.layout.component.Auto,{type:'fieldcontainer',waitForOuterHeightInDom:!0,waitForOuterWidthInDom:!0,beginLayout:function(ownerContext){var containerEl=this.owner.containerEl;Ext.layout.component.Auto.prototype.beginLayout.call(this,ownerContext);ownerContext.hasRawContent=!0;containerEl.setStyle('width','');containerEl.setStyle('height','');ownerContext.containerElContext=ownerContext.getEl('containerEl')},calculateOwnerHeightFromContentHeight:function(ownerContext,
contentHeight){return Ext.layout.component.Auto.prototype.calculateOwnerHeightFromContentHeight.call(this,ownerContext,contentHeight)+this.getHeightAdjustment()},calculateOwnerWidthFromContentWidth:function(ownerContext,contentWidth){return Ext.layout.component.Auto.prototype.calculateOwnerWidthFromContentWidth.call(this,ownerContext,contentWidth)+this.getWidthAdjustment()},measureContentHeight:function(ownerContext){return ownerContext.hasDomProp('containerLayoutDone')?Ext.layout.component.Auto.prototype.measureContentHeight.call(this,
ownerContext):NaN},measureContentWidth:function(ownerContext){return ownerContext.hasDomProp('containerLayoutDone')?Ext.layout.component.Auto.prototype.measureContentWidth.call(this,ownerContext):NaN},publishInnerHeight:function(ownerContext,height){height-=this.getHeightAdjustment();ownerContext.containerElContext.setHeight(height)},publishInnerWidth:function(ownerContext,width){width-=this.getWidthAdjustment();ownerContext.containerElContext.setWidth(width)},privates:{getHeightAdjustment:function(){var owner=
this.owner,h=0;'top'===owner.labelAlign&&owner.hasVisibleLabel()&&(h+=owner.labelEl.getHeight());'under'===owner.msgTarget&&owner.hasActiveError()&&(h+=owner.errorWrapEl.getHeight());return h+owner.bodyEl.getPadding('tb')},getWidthAdjustment:function(){var owner=this.owner,w=0;'top'!==owner.labelAlign&&owner.hasVisibleLabel()&&(w+=owner.labelWidth+(owner.labelPad||0));'side'===owner.msgTarget&&owner.hasActiveError()&&(w+=owner.errorWrapEl.getWidth());return w+owner.bodyEl.getPadding('lr')}}},0,0,
0,0,['layout.fieldcontainer'],0,[Ext.layout.component.field,'FieldContainer'],0);
Ext.cmd.derive('Ext.form.FieldContainer',Ext.container.Container,{componentLayout:'fieldcontainer',componentCls:'x-form-fieldcontainer',shrinkWrap:!0,autoEl:{tag:'div',role:'presentation'},childEls:['containerEl'],combineLabels:!1,labelConnector:', ',combineErrors:!1,maskOnDisable:!1,invalidCls:'',fieldSubTpl:'\x3cdiv id\x3d"{id}-containerEl" data-ref\x3d"containerEl" class\x3d"{containerElCls}";\x3ctpl if\x3d"ariaAttributes"\x3e;\x3ctpl foreach\x3d"ariaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e;\x3ctpl else\x3e; role\x3d"presentation";\x3c/tpl\x3e;\x3e;{%this.renderContainer(out,values)%};\x3c/div\x3e'.split(';'),initComponent:function(){this.initLabelable();
this.initFieldAncestor();Ext.container.Container.prototype.initComponent.call(this);this.initMonitor()},onAdd:function(labelItem){labelItem.isLabelable&&Ext.isGecko&&37>Ext.firefoxVersion&&'absolute'===this.layout.type&&!this.hideLabel&&'top'!==this.labelAlign&&(labelItem.x+=this.labelWidth+this.labelPad);Ext.container.Container.prototype.onAdd.apply(this,arguments);labelItem.isLabelable&&this.combineLabels&&(labelItem.oldHideLabel=labelItem.hideLabel,labelItem.hideLabel=!0);this.updateLabel()},onRemove:function(labelItem,
isDestroying){Ext.container.Container.prototype.onRemove.apply(this,arguments);isDestroying||(labelItem.isLabelable&&this.combineLabels&&(labelItem.hideLabel=labelItem.oldHideLabel),this.updateLabel())},initRenderData:function(){var data=Ext.container.Container.prototype.initRenderData.call(this);data.containerElCls=this.containerElCls;data=Ext.applyIf(data,this.getLabelableRenderData());if('top'===this.labelAlign||'under'===this.msgTarget)data.extraFieldBodyCls+=' x-field-container-body-vertical';
data.tipAnchorTarget=this.id+'-containerEl';return data},getFieldLabel:function(){var label=this.fieldLabel||'';!label&&this.combineLabels&&(label=Ext.Array.map(this.query('[isFieldLabelable]'),function(field){return field.getFieldLabel()}).join(this.labelConnector));return label},getSubTplData:function(){var ret=this.initRenderData();Ext.apply(ret,this.subTplData);return ret},getSubTplMarkup:function(fieldData){var tpl=this.lookupTpl('fieldSubTpl');tpl.renderContent||this.setupRenderTpl(tpl);return tpl.apply(this.getSubTplData(fieldData))},
updateLabel:function(){this.labelEl&&this.setFieldLabel(this.getFieldLabel())},onFieldErrorChange:function(){if(this.combineErrors){var oldError=this.getActiveError(),invalidFields=Ext.Array.filter(this.query('[isFormField]'),function(field){return field.hasActiveError()});(invalidFields=this.getCombinedErrors(invalidFields))?this.setActiveErrors(invalidFields):this.unsetActiveError();oldError!==this.getActiveError()&&this.updateLayout()}},getCombinedErrors:function(invalidFields){var errors=[],f,
fLen=invalidFields.length,a;for(f=0;f<fLen;f++){var field=invalidFields[f];var activeErrors=field.getActiveErrors();var aLen=activeErrors.length;for(a=0;a<aLen;a++){var error=activeErrors[a];var label=field.getFieldLabel();errors.push((label?label+': ':'')+error)}}return errors},privates:{applyTargetCls:function(targetCls){var containerElCls=this.containerElCls;this.containerElCls=containerElCls?containerElCls+' '+targetCls:targetCls},getTargetEl:function(){return this.containerEl},initRenderTpl:function(){this.hasOwnProperty('renderTpl')||
(this.renderTpl=this.lookupTpl('labelableRenderTpl'));return Ext.container.Container.prototype.initRenderTpl.call(this)}}},0,['fieldcontainer'],['component','box','container','fieldcontainer'],{component:!0,box:!0,container:!0,fieldcontainer:!0},['widget.fieldcontainer'],[['labelable',Ext.form.Labelable],['fieldAncestor',Ext.form.FieldAncestor]],[Ext.form,'FieldContainer'],0);
Ext.define('RCOP.form.FieldContainer',{override:'Ext.form.FieldContainer',autoLabelWidth:!1,nameGroupLabels:'',isNested:!1,labelPad:null,nestedContainerCls:'x-form-fieldcontainer-nested',suffixLabelCls:'x-form-item-suffix-label',descriptionCls:'x-form-field-description',labelableInsertions:'beforeBodyEl afterBodyEl beforeLabelTpl afterLabelTpl beforeSubTpl afterSubTpl beforeLabelTextTpl afterLabelTextTpl labelAttrTpl suffixLabelTpl descriptionTpl'.split(' '),labelableRenderTpl:['{beforeLabelTpl}',
'\x3clabel id\x3d"{id}-labelEl" data-ref\x3d"labelEl" class\x3d"{labelCls} {labelCls}-{ui} {labelClsExtra} ','{childElCls} {unselectableCls}" style\x3d"{labelStyle}"\x3ctpl if\x3d"inputId"\x3e',' for\x3d"{inputId}"\x3c/tpl\x3e {labelAttrTpl}\x3e','\x3cspan class\x3d"{labelInnerCls} {labelInnerCls}-{ui}" style\x3d"{labelInnerStyle}"\x3e','{beforeLabelTextTpl}','\x3ctpl if\x3d"fieldLabel"\x3e{fieldLabel}','\x3ctpl if\x3d"labelSeparator"\x3e{labelSeparator}\x3c/tpl\x3e','\x3c/tpl\x3e','{afterLabelTextTpl}',
'\x3c/span\x3e','\x3c/label\x3e','{afterLabelTpl}','\x3cdiv id\x3d"{id}-bodyEl" data-ref\x3d"bodyEl" class\x3d"{baseBodyCls} {baseBodyCls}-{ui}\x3ctpl if\x3d"fieldBodyCls"\x3e',' {fieldBodyCls} {fieldBodyCls}-{ui}\x3c/tpl\x3e {growCls} {extraFieldBodyCls}\x3ctpl if\x3d"isNested"\x3e {nestedContainerCls}\x3c/tpl\x3e"','\x3ctpl if\x3d"bodyStyle"\x3e style\x3d"{bodyStyle}"\x3c/tpl\x3e\x3e','{beforeBodyEl}','{beforeSubTpl}','{[values.$comp.getSubTplMarkup(values)]}','{afterSubTpl}','{afterBodyEl}','\x3c/div\x3e',
'\x3ctpl if\x3d"suffixLabelTpl"\x3e','\x3cdiv class\x3d"{suffixLabelCls} {suffixLabelCls}-{ui}" \x3ctpl if\x3d"suffixLabelStyle"\x3estyle\x3d"{suffixLabelStyle}"\x3c/tpl\x3e\x3e{suffixLabelTpl}\x3c/div\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"descriptionTpl"\x3e','\x3cdiv class\x3d"{descriptionCls} {descriptionCls}-{ui}"\x3e','\x3ctpl if\x3d"labelAlign !\x3d\x3d \'top\' \x26\x26 labelVisible"\x3e\x3cdiv class\x3d"{descriptionInnerCls} {descriptionInnerCls}-{ui}"\x3e\x3c/div\x3e\x3c/tpl\x3e','\x3cdiv class\x3d"{descriptionInnerCls} {descriptionInnerCls}-{ui}"\x3ctpl if\x3d"bodyStyleWidth"\x3e style\x3d"{bodyStyleWidth}"\x3c/tpl\x3e\x3e{descriptionTpl}\x3c/div\x3e',
'\x3c/div\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"renderError"\x3e','\x3cdiv id\x3d"{id}-errorWrapEl" data-ref\x3d"errorWrapEl" class\x3d"{errorWrapCls} {errorWrapCls}-{ui}',' {errorWrapExtraCls}" style\x3d"{errorWrapStyle}"\x3e','\x3cdiv role\x3d"alert" aria-live\x3d"polite" id\x3d"{id}-errorEl" data-ref\x3d"errorEl" ','class\x3d"{errorMsgCls} {invalidMsgCls} {invalidMsgCls}-{ui}" ','data-anchorTarget\x3d"{id}-inputEl"\x3e','\x3c/div\x3e','\x3c/div\x3e','\x3c/tpl\x3e',{disableFormats:!0}],getLabelableRenderData:function(){if(this.autoLabelWidth||
Ext.isString(this.nameGroupLabels)&&this.nameGroupLabels.length){var arrFieldComps=[this],resultLabelWidth=0;Ext.isString(this.nameGroupLabels)&&this.nameGroupLabels.length&&(arrFieldComps=Ext.ComponentQuery.query('#'+(this.itemId?this.itemId:this.id)+' ^ panel:first field[nameGroupLabels\x3d"'+this.nameGroupLabels+'"], #'+(this.itemId?this.itemId:this.id)+' ^ panel:first fieldcontainer[nameGroupLabels\x3d"'+this.nameGroupLabels+'"]'));Ext.Array.forEach(arrFieldComps,function(fieldComp){if(fieldComp.autoLabelWidth){var measureLabelEl=
Ext.getBody().createChild({role:'presentation',cls:fieldComp.labelCls+'-'+fieldComp.ui});resultLabelWidth=Math.max(resultLabelWidth,Ext.util.TextMetrics.measure(measureLabelEl,fieldComp.getFieldLabel()+(fieldComp.labelSeparator?fieldComp.labelSeparator:'')).width||0);measureLabelEl.destroy()}else resultLabelWidth=Math.max(resultLabelWidth,fieldComp.labelWidth)});resultLabelWidth&&(this.labelWidth=resultLabelWidth)}arrFieldComps=this.mixins.labelable.getLabelableRenderData.apply(this,arguments);arrFieldComps.isNested=
this.isNested&&!this.hasVisibleLabel();arrFieldComps.nestedContainerCls=this.nestedContainerCls;arrFieldComps.descriptionCls=this.descriptionCls;arrFieldComps.suffixLabelCls=this.suffixLabelCls;arrFieldComps.suffixLabelStyle=this.suffixLabelStyle;arrFieldComps.labelAlign=this.labelAlign;arrFieldComps.labelVisible=this.hasVisibleLabel();!this.autoLabelWidth&&Ext.isString(this.labelStyleWidth)&&/^\d+(?:\.\d+)?(?:px|%)$/ig.test(this.labelStyleWidth)&&(arrFieldComps.labelStyle='width: '+labelStyleWidth+
';',arrFieldComps.labelInnerStyle='width: 100%;');var fieldBodyStyle=Ext.isString(this.fieldBodyStyle)?this.fieldBodyStyle:'';Ext.isNumber(this.fieldBodyWidth)?(arrFieldComps.bodyStyleWidth=Ext.String.format('min-width: {0}px; max-width: {0}px;',80*this.fieldBodyWidth+16*Math.max(0,this.fieldBodyWidth-1)),arrFieldComps.bodyStyle=arrFieldComps.bodyStyleWidth+fieldBodyStyle):Ext.isString(this.fieldBodyWidth)&&/^\d+(?:\.\d+)?(?:px|%)$/ig.test(this.fieldBodyWidth)?(arrFieldComps.bodyStyleWidth='min-width: '+
this.fieldBodyWidth+'; max-width: '+this.fieldBodyWidth+';',arrFieldComps.bodyStyle=arrFieldComps.bodyStyleWidth+fieldBodyStyle):(arrFieldComps.bodyStyle=arrFieldComps.bodyStyle||'',arrFieldComps.bodyStyleWidth=arrFieldComps.bodyStyle,arrFieldComps.bodyStyle+=fieldBodyStyle);return arrFieldComps},privates:{initCls:function(){var cls=(arguments.callee.$previous||Ext.container.Container.prototype.initCls).apply(this,arguments),layoutType=Ext.isString(this.layout)?this.layout:this.layout.type;!this.componentCls||
'vbox'!==layoutType&&'hbox'!==layoutType||cls.push(this.componentCls+'-layout-'+layoutType);return cls}}});
Ext.cmd.derive('Ext.layout.container.CheckboxGroup',Ext.layout.container.Container,{autoFlex:!0,type:'checkboxgroup',createsInnerCt:!0,childEls:['innerCt'],renderTpl:'\x3ctable id\x3d"{ownerId}-innerCt" data-ref\x3d"innerCt" class\x3d"x-table-plain" cellpadding\x3d"0"role\x3d"presentation" style\x3d"{tableStyle}"\x3e\x3ctbody role\x3d"presentation"\x3e\x3ctr role\x3d"presentation"\x3e\x3ctpl for\x3d"columns"\x3e\x3ctd class\x3d"{parent.colCls}" valign\x3d"top" style\x3d"{style}" role\x3d"presentation"\x3e{% this.renderColumn(out,parent,xindex-1) %}\x3c/td\x3e\x3c/tpl\x3e\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e',lastOwnerItemsGeneration:null,
initLayout:function(){var owner=this.owner;this.columnsArray=Ext.isArray(owner.columns);this.autoColumns=!owner.columns||'auto'===owner.columns;this.autoColumns||(this.vertical=owner.vertical||1===owner.columns||1===owner.columns.length);Ext.layout.container.Container.prototype.initLayout.call(this)},beginLayout:function(ownerContext){var i,totalFlex=0,flexedCols=0,autoFlex=this.autoFlex,innerCtStyle=this.innerCt.dom.style;Ext.layout.container.Container.prototype.beginLayout.apply(this,arguments);
var columns=this.rowNodes[0].children;ownerContext.innerCtContext=ownerContext.getEl('innerCt',this);if(ownerContext.widthModel.shrinkWrap)innerCtStyle.tableLayout='auto',innerCtStyle.width='';else{var numCols=columns.length;if(this.columnsArray){for(i=0;i<numCols;i++){var width=this.owner.columns[i];1>width&&(totalFlex+=width,flexedCols++)}for(i=0;i<numCols;i++)width=this.owner.columns[i],width=1>width?width/totalFlex*100+'%':width+'px',columns[i].style.width=width}else for(i=0;i<numCols;i++)width=
autoFlex?1/numCols*100+'%':'',columns[i].style.width=width,flexedCols++;flexedCols?flexedCols<numCols?(innerCtStyle.tableLayout='fixed',innerCtStyle.width='100%'):(innerCtStyle.tableLayout='auto',innerCtStyle.width=autoFlex?'100%':''):(innerCtStyle.tableLayout='fixed',innerCtStyle.width='')}},cacheElements:function(){Ext.layout.container.Container.prototype.cacheElements.call(this);this.rowNodes=this.innerCt.query('tr',!0);this.tBodyNode=this.rowNodes[0].parentNode},calculate:function(ownerContext){if(ownerContext.getDomProp('containerChildrenSizeDone')){var targetContext=
ownerContext.innerCtContext;var widthShrinkWrap=ownerContext.widthModel.shrinkWrap;var heightShrinkWrap=ownerContext.heightModel.shrinkWrap;var table=targetContext.el.dom;targetContext=(heightShrinkWrap||widthShrinkWrap)&&targetContext.getPaddingInfo();widthShrinkWrap&&ownerContext.setContentWidth(table.offsetWidth+targetContext.width,!0);heightShrinkWrap&&ownerContext.setContentHeight(table.offsetHeight+targetContext.height,!0)}else this.done=!1},doRenderColumn:function(out,renderData,columnIndex){var me=
renderData.$layout,owner=me.owner,columnCount=renderData.columnCount;renderData=owner.items.items;var itemCount=renderData.length;owner.vertical?(owner=Math.ceil(itemCount/columnCount),columnIndex*=owner,itemCount=Math.min(itemCount,columnIndex+owner),owner=1):owner=columnCount;for(;columnIndex<itemCount;columnIndex+=owner)columnCount=renderData[columnIndex],me.configureItem(columnCount),columnCount=columnCount.getRenderTree(),Ext.DomHelper.generateMarkup(columnCount,out)},getColumnCount:function(){var owner=
this.owner,ownerColumns=owner.columns;return this.columnsArray?ownerColumns.length:Ext.isNumber(ownerColumns)?ownerColumns:owner.items.length},getItemSizePolicy:function(item){return this.autoSizePolicy},getRenderData:function(){var data=Ext.layout.container.Container.prototype.getRenderData.call(this),owner=this.owner,i,columns=this.getColumnCount(),autoFlex=this.autoFlex,totalFlex=0,flexedCols=0;if(this.columnsArray)for(i=0;i<columns;i++){var width=this.owner.columns[i];1>width&&(totalFlex+=width,
flexedCols++)}data.colCls=owner.groupCls;data.columnCount=columns;data.columns=[];for(i=0;i<columns;i++)owner=data.columns[i]={},this.columnsArray?(width=this.owner.columns[i],width=1>width?width/totalFlex*100+'%':width+'px',owner.style='width:'+width):(owner.style='width:'+1/columns*100+'%',flexedCols++);data.tableStyle=flexedCols?flexedCols<columns?'table-layout:fixed;width:100%':autoFlex?'table-layout:auto;width:100%':'table-layout:auto;':'table-layout:fixed;';return data},isValidParent:Ext.returnTrue,
setupRenderTpl:function(renderTpl){Ext.layout.container.Container.prototype.setupRenderTpl.apply(this,arguments);renderTpl.renderColumn=this.doRenderColumn},renderChildren:function(){var generation=this.owner.items.generation;this.lastOwnerItemsGeneration!==generation&&(this.lastOwnerItemsGeneration=generation,this.renderItems(this.getLayoutItems()))},renderItems:function(items){var itemCount=items.length,i;if(itemCount){Ext.suspendLayouts();if(this.autoColumns){var columnCount=itemCount;var rowCount=
1}else columnCount=this.columnsArray?this.owner.columns.length:this.owner.columns,rowCount=Math.ceil(itemCount/columnCount);for(i=0;i<itemCount;i++){var item=items[i];var rowIndex=this.getRenderRowIndex(i,rowCount,columnCount);var columnIndex=this.getRenderColumnIndex(i,rowCount,columnCount);item.rendered?this.isItemAtPosition(item,rowIndex,columnIndex)||this.moveItem(item,rowIndex,columnIndex):this.renderItem(item,rowIndex,columnIndex)}this.pruneRows(rowCount,columnCount);Ext.resumeLayouts(!0)}},
isItemAtPosition:function(item,rowIndex,columnIndex){return item.el.dom===this.getItemNodeAt(rowIndex,columnIndex)},getRenderColumnIndex:function(itemIndex,rowCount,columnCount){return this.vertical?Math.floor(itemIndex/rowCount):itemIndex%columnCount},getRenderRowIndex:function(itemIndex,rowCount,columnCount){return this.vertical?itemIndex%rowCount:Math.floor(itemIndex/columnCount)},getItemNodeAt:function(rowIndex,columnIndex){columnIndex=this.getColumnNodeAt(rowIndex,columnIndex);return this.vertical?
columnIndex.children[rowIndex]:columnIndex.children[0]},getRowNodeAt:function(rowIndex){rowIndex=this.vertical?0:rowIndex;var row=this.rowNodes[rowIndex];row||(row=this.rowNodes[rowIndex]=document.createElement('tr'),row.role='presentation',this.tBodyNode.appendChild(row));return row},getColumnNodeAt:function(rowIndex,columnIndex,row){row=row||this.getRowNodeAt(rowIndex);(rowIndex=row.children[columnIndex])||(rowIndex=Ext.fly(row).appendChild({tag:'td',cls:this.owner.groupCls,vAlign:'top',role:'presentation'},
!0));return rowIndex},pruneRows:function(rowCount,columnCount){var rows=this.tBodyNode.children,i,j;for(rowCount=this.vertical?1:rowCount;rows.length>rowCount;){var row=rows[rows.length-1];row.parentNode.removeChild(row)}for(i=rowCount-1;0<=i;i--){row=rows[i];for(rowCount=row.children;rowCount.length>columnCount;){var column=rowCount[rowCount.length-1];row.removeChild(column)}if(0<i)for(j=rowCount.length-1;0<=j;j--)if(column=rowCount[j],0===column.children.length)row.removeChild(column);else break}},
renderItem:function(item,rowIndex,columnIndex){this.configureItem(item);var itemIndex=this.vertical?rowIndex:0;rowIndex=Ext.get(this.getColumnNodeAt(rowIndex,columnIndex));item.render(rowIndex,itemIndex)},moveItem:function(item,rowIndex,columnIndex){var itemIndex=this.vertical?rowIndex:0;rowIndex=this.getColumnNodeAt(rowIndex,columnIndex);rowIndex.insertBefore(item.el.dom,rowIndex.children[itemIndex]||null)}},0,0,0,0,['layout.checkboxgroup'],0,[Ext.layout.container,'CheckboxGroup'],0);
Ext.cmd.derive('Ext.form.CheckboxManager',Ext.util.MixedCollection,{singleton:!0,getByName:function(name,formId){return this.filterBy(function(item){return item.name===name&&item.getFormId()===formId})}},0,0,0,0,0,0,[Ext.form,'CheckboxManager'],0);
Ext.cmd.derive('Ext.form.field.Checkbox',Ext.form.field.Base,{alternateClassName:'Ext.form.Checkbox',stretchInputElFixed:!1,childEls:['boxLabelEl','innerWrapEl','displayEl'],fieldSubTpl:['\x3cdiv id\x3d"{cmpId}-innerWrapEl" data-ref\x3d"innerWrapEl" role\x3d"presentation"',' class\x3d"{wrapInnerCls}"\x3e','\x3ctpl if\x3d"labelAlignedBefore"\x3e','{beforeBoxLabelTpl}','\x3clabel id\x3d"{cmpId}-boxLabelEl" data-ref\x3d"boxLabelEl" {boxLabelAttrTpl} class\x3d"{boxLabelCls} ','{boxLabelCls}-{ui} {boxLabelCls}-{boxLabelAlign} {noBoxLabelCls} {childElCls}" for\x3d"{id}"\x3e',
'{beforeBoxLabelTextTpl}','{boxLabel}','{afterBoxLabelTextTpl}','\x3c/label\x3e','{afterBoxLabelTpl}','\x3c/tpl\x3e','\x3cspan id\x3d"{cmpId}-displayEl" data-ref\x3d"displayEl" role\x3d"presentation" class\x3d"{fieldCls} {typeCls} ','{typeCls}-{ui} {inputCls} {inputCls}-{ui} {childElCls} {afterLabelCls}"\x3e','\x3cinput type\x3d"{inputType}" id\x3d"{id}" name\x3d"{inputName}" data-ref\x3d"inputEl" {inputAttrTpl}','\x3ctpl if\x3d"tabIdx !\x3d null"\x3e tabindex\x3d"{tabIdx}"\x3c/tpl\x3e','\x3ctpl if\x3d"disabled"\x3e disabled\x3d"disabled"\x3c/tpl\x3e',
'\x3ctpl if\x3d"checked"\x3e checked\x3d"checked"\x3c/tpl\x3e','\x3ctpl if\x3d"fieldStyle"\x3e style\x3d"{fieldStyle}"\x3c/tpl\x3e',' class\x3d"{checkboxCls}" autocomplete\x3d"off" hidefocus\x3d"true" ','\x3ctpl foreach\x3d"ariaElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3ctpl foreach\x3d"inputElAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','/\x3e','\x3c/span\x3e','\x3ctpl if\x3d"!labelAlignedBefore"\x3e','{beforeBoxLabelTpl}','\x3clabel id\x3d"{cmpId}-boxLabelEl" data-ref\x3d"boxLabelEl" {boxLabelAttrTpl} class\x3d"{boxLabelCls} ',
'{boxLabelCls}-{ui} {boxLabelCls}-{boxLabelAlign} {noBoxLabelCls} {childElCls}" for\x3d"{id}"\x3e','{beforeBoxLabelTextTpl}','{boxLabel}','{afterBoxLabelTextTpl}','\x3c/label\x3e','{afterBoxLabelTpl}','\x3c/tpl\x3e','\x3c/div\x3e',{disableFormats:!0,compiled:!0}],publishes:{checked:1},subTplInsertions:'beforeBoxLabelTpl afterBoxLabelTpl beforeBoxLabelTextTpl afterBoxLabelTextTpl boxLabelAttrTpl inputAttrTpl'.split(' '),isCheckbox:!0,focusCls:'form-checkbox-focus',fieldBodyCls:'x-form-cb-wrap',checked:!1,
checkedCls:'x-form-cb-checked',boxLabelCls:'x-form-cb-label',boxLabelAlign:'after',afterLabelCls:'x-form-cb-after',wrapInnerCls:'x-form-cb-wrap-inner',noBoxLabelCls:'x-form-cb-no-box-label',inputValue:'on',checkChangeEvents:[],changeEventName:'change',inputType:'checkbox',isTextInput:!1,ariaRole:'native',onRe:/^on$/i,inputCls:'x-form-cb',_checkboxCls:'x-form-cb-input',initComponent:function(){var value=this.value;void 0!==value&&(this.checked=this.isChecked(value,this.inputValue));Ext.form.field.Base.prototype.initComponent.call(this);
this.getManager().add(this)},initDefaultName:Ext.emptyFn,initValue:function(){var checked=!!this.checked;this.originalValue=this.initialValue=this.lastValue=checked;this.setValue(checked)},getElConfig:function(){this.isChecked(this.rawValue,this.inputValue)&&this.addCls(this.checkedCls);this.fieldLabel||(this.skipLabelForAttribute=!0);return Ext.form.field.Base.prototype.getElConfig.call(this)},getModelData:function(){var o=Ext.form.field.Base.prototype.getModelData.apply(this,arguments);o&&(o[this.getName()]=
this.getSubmitValue());return o},getSubTplData:function(fieldData){var boxLabel=this.boxLabel,boxLabelAlign=this.boxLabelAlign,labelAlignedBefore='before'===boxLabelAlign;fieldData=Ext.apply(Ext.form.field.Base.prototype.getSubTplData.call(this,fieldData),{inputType:this.inputType,checkboxCls:this._checkboxCls,disabled:this.readOnly||this.disabled,checked:!!this.checked,wrapInnerCls:this.wrapInnerCls,boxLabel:boxLabel,boxLabelCls:this.boxLabelCls,boxLabelAlign:boxLabelAlign,labelAlignedBefore:labelAlignedBefore,
afterLabelCls:labelAlignedBefore?this.afterLabelCls:'',noBoxLabelCls:boxLabel?'':this.noBoxLabelCls,inputName:this.name||this.id});(boxLabel=fieldData.inputElAriaAttributes)&&delete boxLabel['aria-readonly'];return fieldData},initEvents:function(){Ext.form.field.Base.prototype.initEvents.call(this);this.inputEl.on(this.changeEventName,this.onChangeEvent,this,{delegated:!1});if(Ext.isIE)this.bodyEl.on('mousedown',this.onBodyElMousedown,this);else Ext.isMac&&(Ext.isGecko||Ext.isSafari)&&(this.boxLabelEl.on('mousedown',
this.onBoxLabelOrInputMousedown,this),this.inputEl.on('mousedown',this.onBoxLabelOrInputMousedown,this))},setBoxLabel:function(boxLabel){this.boxLabel=boxLabel;this.rendered&&(this.boxLabelEl.setHtml(boxLabel),this.boxLabelEl[boxLabel?'removeCls':'addCls'](this.noBoxLabelCls),this.updateLayout())},onBodyElMousedown:function(e){e.target!==this.inputEl.dom&&e.preventDefault()},onBoxLabelOrInputMousedown:function(e){this.inputEl.focus();e.preventDefault()},onChangeEvent:function(e){this.updateValueFromDom()},
updateValueFromDom:function(){var inputEl=this.inputEl&&this.inputEl.dom;inputEl&&(this.checked=this.rawValue=this.value=inputEl.checked,this.checkChange())},updateCheckedCls:function(checked){checked=null!=checked?checked:this.getValue();this[checked?'addCls':'removeCls'](this.checkedCls)},getRawValue:function(){var inputEl=this.inputEl&&this.inputEl.dom;return inputEl?inputEl.checked:this.checked},getValue:function(){var inputEl=this.inputEl&&this.inputEl.dom;return inputEl?inputEl.checked:this.checked},
getSubmitValue:function(){var unchecked=this.uncheckedValue;unchecked=Ext.isDefined(unchecked)?unchecked:null;return this.getValue()?this.inputValue:unchecked},isChecked:function(rawValue,inputValue){return!0===rawValue||'true'===rawValue?!0:'on'===inputValue||!inputValue&&0!==inputValue||!Ext.isString(rawValue)&&!Ext.isNumber(rawValue)?'1'===rawValue||1===rawValue||this.onRe.test(rawValue):rawValue==inputValue},setRawValue:function(value){var inputEl=this.inputEl&&this.inputEl.dom;value=this.isChecked(value,
this.inputValue);inputEl&&(this.duringSetRawValue=!0,inputEl.checked=value,this.duringSetRawValue=!1,this.updateCheckedCls(value));this.checked=this.rawValue=value;this.duringSetValue||(this.lastValue=value);return value},setValue:function(checked){var i;if(Ext.isArray(checked)){var boxes=this.getManager().getByName(this.name,this.getFormId()).items;var len=boxes.length;for(i=0;i<len;++i){var box=boxes[i];box.setValue(Ext.Array.contains(checked,box.inputValue))}}else this.duringSetValue=!0,Ext.form.field.Base.prototype.setValue.apply(this,
arguments),delete this.duringSetValue;return this},valueToRaw:Ext.identityFn,onChange:function(newVal,oldVal){var handler=this.handler;this.updateCheckedCls(newVal);handler&&Ext.callback(handler,this.scope,[this,newVal],0,this);Ext.form.field.Base.prototype.onChange.apply(this,arguments);this.reference&&this.publishState&&this.publishState('checked',newVal)},resetOriginalValue:function(fromBoxInGroup){var i;if(!fromBoxInGroup){fromBoxInGroup=this.getManager().getByName(this.name,this.getFormId()).items;
var len=fromBoxInGroup.length;for(i=0;i<len;++i){var box=fromBoxInGroup[i];box!==this&&fromBoxInGroup[i].resetOriginalValue(!0)}}Ext.form.field.Base.prototype.resetOriginalValue.call(this)},doDestroy:function(){this.getManager().removeAtKey(this.id);Ext.form.field.Base.prototype.doDestroy.call(this)},getManager:function(){return Ext.form.CheckboxManager},onEnable:function(){var inputEl=this.inputEl&&this.inputEl.dom;Ext.form.field.Base.prototype.onEnable.call(this);inputEl&&(inputEl.disabled=this.readOnly)},
setReadOnly:function(readOnly){var inputEl=this.inputEl&&this.inputEl.dom;inputEl&&(inputEl.disabled=!!readOnly||this.disabled);Ext.form.field.Base.prototype.setReadOnly.apply(this,arguments)},getFormId:function(){var form;!this.formId&&(form=this.up('form'))&&(this.formId=form.id);return this.formId},getFocusClsEl:function(){return this.displayEl}},0,['checkbox','checkboxfield'],['component','box','field','checkboxfield','checkbox'],{component:!0,box:!0,field:!0,checkboxfield:!0,checkbox:!0},['widget.checkbox',
'widget.checkboxfield'],0,[Ext.form.field,'Checkbox',Ext.form,'Checkbox'],0);
Ext.define('RCOP.form.field.Checkbox',{override:'Ext.form.field.Checkbox',getModelData:function(){var o=(arguments.callee.$previous||Ext.form.field.Base.prototype.getModelData).apply(this,arguments);o&&(o[this.getName()]=this.getSubmitValue());return o},getSubTplData:function(fieldData){var data=(arguments.callee.$previous||Ext.form.field.Base.prototype.getSubTplData).apply(this,arguments);if(this.boxLabel&&!data.labelAlignedBefore&&Ext.isString(this.nameGroupBoxLabels)&&this.nameGroupBoxLabels.length){var arrCbComps=
[],resultBoxLabelWidth=0;Ext.isString(this.nameGroupBoxLabels)&&this.nameGroupBoxLabels.length&&(arrCbComps=Ext.ComponentQuery.query('#'+(this.itemId?this.itemId:this.id)+' ^ panel:first checkbox[nameGroupBoxLabels\x3d"'+this.nameGroupBoxLabels+'"], #'+(this.itemId?this.itemId:this.id)+' ^ panel:first radio[nameGroupBoxLabels\x3d"'+this.nameGroupBoxLabels+'"]'));arrCbComps.length&&(Ext.Array.forEach(arrCbComps,function(cbComp){var measureLabelEl=Ext.getBody().createChild({role:'presentation',cls:[cbComp.boxLabelCls,
cbComp.boxLabelCls+'-'+cbComp.ui,cbComp.boxLabelCls+'-'+cbComp.boxLabelAlign,cbComp.childElCls].join(' ')});resultBoxLabelWidth=Math.max(resultBoxLabelWidth,Ext.util.TextMetrics.measure(measureLabelEl,cbComp.boxLabel).width||0);measureLabelEl.destroy()}),resultBoxLabelWidth&&(data.boxLabel='\x3cdiv style\x3d"width: '+resultBoxLabelWidth+'px;"\x3e'+data.boxLabel+'\x3c/div\x3e'))}return data}});
Ext.cmd.derive('Ext.form.CheckboxGroup',Ext.form.FieldContainer,{isCheckboxGroup:!0,columns:'auto',vertical:!1,allowBlank:!0,blankText:'You must select at least one item in this group',defaultType:'checkboxfield',defaultBindProperty:'value',groupCls:'x-form-check-group',extraFieldBodyCls:'x-form-checkboxgroup-body',layout:'checkboxgroup',componentCls:'x-form-checkboxgroup',ariaRole:'group',ariaEl:'containerEl',skipLabelForAttribute:!0,ariaRenderAttributes:{'aria-invalid':!1},initComponent:function(){this.name=
this.name||this.id;Ext.form.FieldContainer.prototype.initComponent.call(this);this.initField()},initRenderData:function(){var ariaAttr;var data=Ext.form.FieldContainer.prototype.initRenderData.call(this);data.inputId=this.id+'-'+this.ariaEl;(ariaAttr=data.ariaAttributes)&&(ariaAttr['aria-labelledby']||(ariaAttr['aria-labelledby']=this.id+'-labelTextEl'));return data},initValue:function(){var valueCfg=this.value;this.originalValue=this.lastValue=valueCfg||this.getValue();valueCfg&&this.setValue(valueCfg)},
onAdd:function(field){var len;if(field.isCheckbox)null==field.name&&(field.name=this.name),this.mon(field,'change',this.checkChange,this);else if(field.isContainer){var items=field.items.items;var i=0;for(len=items.length;i<len;i++)this.onAdd(items[i])}Ext.form.FieldContainer.prototype.onAdd.apply(this,arguments)},onRemove:function(item){var len;if(item.isCheckbox)this.mun(item,'change',this.checkChange,this);else if(item.isContainer){var items=item.items.items;var i=0;for(len=items.length;i<len;i++)this.onRemove(items[i])}Ext.form.FieldContainer.prototype.onRemove.apply(this,
arguments)},isEqual:function(value1,value2){var toQueryString=Ext.Object.toQueryString;return toQueryString(value1)===toQueryString(value2)},getErrors:function(){var errors=[];!this.allowBlank&&Ext.isEmpty(this.getChecked())&&errors.push(this.blankText);return errors},getBoxes:function(query){return this.query('[isCheckbox]'+(query||''))},eachBox:function(fn,scope){Ext.Array.forEach(this.getBoxes(),fn,scope||this)},getChecked:function(){return this.getBoxes('[checked]')},isDirty:function(){var boxes=
this.getBoxes(),b,bLen=boxes.length;for(b=0;b<bLen;b++)if(boxes[b].isDirty())return!0},setReadOnly:function(readOnly){var boxes=this.getBoxes(),b,bLen=boxes.length;for(b=0;b<bLen;b++)boxes[b].setReadOnly(readOnly);this.readOnly=readOnly},reset:function(){var me=this,hadError=me.hasActiveError(),preventMark=me.preventMark;me.preventMark=!0;me.batchChanges(function(){var boxes=me.getBoxes(),b,bLen=boxes.length;for(b=0;b<bLen;b++)boxes[b].reset()});me.preventMark=preventMark;me.unsetActiveError();hadError&&
me.updateLayout()},resetOriginalValue:function(){var boxes=this.getBoxes(),b,bLen=boxes.length;for(b=0;b<bLen;b++)boxes[b].resetOriginalValue();this.originalValue=this.getValue();this.checkDirty()},setValue:function(value){var boxes=this.getBoxes(),b,bLen=boxes.length,box,name,cbValue;this.batchChanges(function(){Ext.suspendLayouts();for(b=0;b<bLen;b++)box=boxes[b],name=box.getName(),cbValue=!1,value&&(cbValue=Ext.isArray(value[name])?Ext.Array.contains(value[name],box.inputValue):value[name]),box.setValue(cbValue);
Ext.resumeLayouts(!0)});return this},getValue:function(){var values={},boxes=this.getBoxes(),b,bLen=boxes.length;for(b=0;b<bLen;b++){var box=boxes[b];var name=box.getName();var inputValue=box.inputValue;box.getValue()&&(values.hasOwnProperty(name)?(box=values[name],Ext.isArray(box)||(box=values[name]=[box]),box.push(inputValue)):values[name]=inputValue)}return values},getSubmitData:function(){return null},getModelData:function(){return null},validate:function(){if(this.disabled)var isValid=!0;else{var errors=
this.getErrors();isValid=Ext.isEmpty(errors);var wasValid=this.wasValid;isValid?this.unsetActiveError():this.setActiveError(errors)}isValid!==wasValid&&(this.wasValid=isValid,this.fireEvent('validitychange',this,isValid),this.updateLayout());return isValid}},0,['checkboxgroup'],['component','box','container','fieldcontainer','checkboxgroup'],{component:!0,box:!0,container:!0,fieldcontainer:!0,checkboxgroup:!0},['widget.checkboxgroup'],[['field',Ext.form.field.Field]],[Ext.form,'CheckboxGroup'],function(){this.borrow(Ext.form.field.Base,
['markInvalid','clearInvalid','setError'])});
Ext.cmd.derive('Ext.form.FieldSet',Ext.container.Container,{checkboxUI:'default',collapsed:!1,toggleOnTitleClick:!0,baseCls:'x-fieldset',layout:'anchor',descriptionText:'{0} field set',expandText:'Expand field set',componentLayout:'fieldset',ariaRole:'group',focusable:!1,autoEl:'fieldset',checkbox:null,childEls:['body'],renderTpl:['{%this.renderLegend(out,values);%}','\x3cdiv id\x3d"{id}-body" data-ref\x3d"body" class\x3d"{baseCls}-body {baseCls}-body-{ui} {bodyTargetCls}" ','role\x3d"presentation"\x3ctpl if\x3d"bodyStyle"\x3e style\x3d"{bodyStyle}"\x3c/tpl\x3e\x3e',
'{%this.renderContainer(out,values);%}','\x3c/div\x3e'],stateEvents:['collapse','expand'],maskOnDisable:!1,initComponent:function(){var baseCls=this.baseCls;this.ariaRole&&!this.ariaLabel&&(this.ariaLabel=Ext.String.formatEncode(this.descriptionText,this.title||''));this.ariaRenderAttributes=this.ariaRenderAttributes||{};this.ariaRenderAttributes['aria-expanded']=!this.collapsed;this.initFieldAncestor();Ext.container.Container.prototype.initComponent.call(this);this.layout.managePadding=this.layout.manageOverflow=
!1;this.collapsed&&(this.addCls(baseCls+'-collapsed'),this.collapse());if(this.title||this.checkboxToggle||this.collapsible)this.addTitleClasses(),this.legend=this.createLegendCt();this.initMonitor()},initRenderData:function(){var data=Ext.container.Container.prototype.initRenderData.call(this);data.bodyTargetCls=this.bodyTargetCls;this.protoBody.writeTo(data);delete this.protoBody;return data},doDestroy:function(){var legend=this.legend;legend&&(delete legend.ownerCt,legend.destroy(),this.legend=
null);Ext.container.Container.prototype.doDestroy.call(this)},getState:function(){var state=Ext.container.Container.prototype.getState.call(this);return state=this.addPropertyToState(state,'collapsed')},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return!0},collapsedVertical:function(){return!0},createLegendCt:function(){var items=[],legendCfg={baseCls:this.baseCls+'-header',layout:'container',ui:this.ui,id:this.id+'-legend',autoEl:'legend',ariaRole:null,items:items,
ownerCt:this,shrinkWrap:!0,ownerLayout:this.componentLayout};this.checkboxToggle?items.push(this.createCheckboxCmp()):this.collapsible&&items.push(this.createToggleCmp());items.push(this.createTitleCmp());return new Ext.container.Container(legendCfg)},createTitleCmp:function(){var cfg={html:this.title,ui:this.ui,cls:this.baseCls+'-header-text',id:this.id+'-legendTitle',ariaRole:'presentation'};this.collapsible&&this.toggleOnTitleClick&&(cfg.listeners={click:{element:'el',scope:this,fn:this.toggle}},
cfg.cls+=' '+this.baseCls+'-header-text-collapsible');return this.titleCmp=new Ext.Component(cfg)},createCheckboxCmp:function(){var cls=this.baseCls+'-header-checkbox';cls+=' '+cls+'-'+this.ui;return this.checkboxCmp=cls=new Ext.form.field.Checkbox(Ext.apply({hideEmptyLabel:!0,name:this.checkboxName||this.id+'-checkbox',cls:cls,id:this.id+'-legendChk',ui:this.checkboxUI,checked:!this.collapsed,msgTarget:'none',listeners:{change:this.onCheckChange,scope:this},ariaLabel:this.expandText},this.checkbox))},
createToggleCmp:function(){var toggleCmp;return this.toggleCmp=toggleCmp=new Ext.panel.Tool({cacheHeight:!1,cls:this.baseCls+'-header-tool-'+this.ui,type:'toggle',handler:this.toggle,id:this.id+'-legendToggle',scope:this,ariaRole:'checkbox',ariaLabel:this.expandText,ariaRenderAttributes:{'aria-checked':!this.collapsed}})},doRenderLegend:function(out,renderData){renderData=renderData.$comp;var legend=renderData.legend;legend&&(legend.ownerLayout.configureItem(legend),renderData.setLegendCollapseImmunity(legend),
renderData=legend.getRenderTree(),Ext.DomHelper.generateMarkup(renderData,out))},getCollapsed:function(){return this.collapsed?'top':!1},getCollapsedDockedItems:function(){var legend=this.legend;return legend?[legend]:[]},setTitle:function(title){var legend=this.legend;this.title=title;this.ariaLabel=Ext.String.formatEncode(this.descriptionText,title||'');this.rendered?(legend||(this.legend=legend=this.createLegendCt(),this.addTitleClasses(),legend.ownerLayout.configureItem(legend),this.setLegendCollapseImmunity(legend),
legend.render(this.el,0)),this.titleCmp.update(title),this.ariaEl.dom.setAttribute('aria-label',this.ariaLabel)):legend?this.titleCmp.update(title):(this.addTitleClasses(),this.legend=this.createLegendCt());return this},addTitleClasses:function(){var title=this.title,baseCls=this.baseCls;title&&this.addCls(baseCls+'-with-title');(title||this.checkboxToggle||this.collapsible)&&this.addCls(baseCls+'-with-legend')},expand:function(){return this.setExpanded(!0)},collapse:function(){return this.setExpanded(!1)},
setCollapsed:function(collapsed){this.setExpanded(!collapsed)},setExpanded:function(expanded){var checkboxCmp=this.checkboxCmp,toggleCmp=this.toggleCmp,operation=expanded?'expand':'collapse';this.rendered&&!1===this.fireEvent('before'+operation,this)||(expanded=!!expanded,checkboxCmp?checkboxCmp.setValue(expanded):toggleCmp&&toggleCmp.ariaEl.dom&&toggleCmp.ariaEl.dom.setAttribute('aria-checked',expanded),expanded?this.removeCls(this.baseCls+'-collapsed'):this.addCls(this.baseCls+'-collapsed'),this.ariaEl.dom&&
this.ariaEl.dom.setAttribute('aria-expanded',!!expanded),this.collapsed=!expanded,expanded?delete this.getInherited().collapsed:this.getInherited().collapsed=!0,this.rendered&&(this.updateLayout({isRoot:!1}),this.fireEvent(operation,this)));return this},getRefItems:function(deep){var refItems=Ext.container.Container.prototype.getRefItems.apply(this,arguments),legend=this.legend;legend&&(refItems.unshift(legend),deep&&refItems.unshift.apply(refItems,legend.getRefItems(!0)));return refItems},toggle:function(){this.setExpanded(!!this.collapsed)},
privates:{applyTargetCls:function(targetCls){this.bodyTargetCls=targetCls},finishRender:function(){var legend=this.legend;Ext.container.Container.prototype.finishRender.call(this);legend&&legend.finishRender()},getProtoBody:function(){var body=this.protoBody;body||(this.protoBody=body=new Ext.util.ProtoElement({styleProp:'bodyStyle',styleIsText:!0}));return body},getDefaultContentTarget:function(){return this.body},getTargetEl:function(){return this.body||this.frameBody||this.el},initPadding:function(targetEl){var body=
this.getProtoBody(),padding=this.padding;if(void 0!==padding){if(Ext.isIE8){padding=this.parseBox(padding);var bodyPadding=Ext.Element.parseBox(0);bodyPadding.top=padding.top;padding.top=0;body.setStyle('padding',this.unitizeBox(bodyPadding))}targetEl.setStyle('padding',this.unitizeBox(padding))}},onCheckChange:function(cmp,checked){this.setExpanded(checked)},setLegendCollapseImmunity:function(legend){legend.collapseImmune=!0;legend.getInherited().collapseImmune=!0},setupRenderTpl:function(renderTpl){Ext.container.Container.prototype.setupRenderTpl.apply(this,
arguments);renderTpl.renderLegend=this.doRenderLegend}}},0,['fieldset'],['component','box','container','fieldset'],{component:!0,box:!0,container:!0,fieldset:!0},['widget.fieldset'],[['fieldAncestor',Ext.form.FieldAncestor]],[Ext.form,'FieldSet'],0);Ext.define('RCOP.form.FieldSet',{override:'Ext.form.FieldSet',createLegendCt:function(){var legend=arguments.callee.$previous.apply(this,arguments);legend.autoEl='div';return legend}});
Ext.cmd.derive('Ext.form.Label',Ext.Component,{autoEl:'label',maskOnDisable:!1,getElConfig:function(){this.html=this.text?Ext.util.Format.htmlEncode(this.text):this.html||'';return Ext.apply(Ext.Component.prototype.getElConfig.call(this),{htmlFor:this.forId||''})},setText:function(text,encode){(encode=!1!==encode)?(this.text=text,delete this.html):(this.html=text,delete this.text);this.rendered&&(this.el.dom.innerHTML=!1!==encode?Ext.util.Format.htmlEncode(text):text,this.updateLayout());return this}},
0,['label'],['component','box','label'],{component:!0,box:!0,label:!0},['widget.label'],0,[Ext.form,'Label'],0);
Ext.cmd.derive('Ext.form.Panel',Ext.panel.Panel,{alternateClassName:['Ext.FormPanel','Ext.form.FormPanel'],layout:'anchor',bodyAriaRole:'form',basicFormConfigs:'api baseParams errorReader jsonSubmit method paramOrder paramsAsHash reader standardSubmit timeout trackResetOnLoad url waitMsgTarget waitTitle'.split(' '),initComponent:function(){this.frame&&(this.border=!1);this.initFieldAncestor();Ext.panel.Panel.prototype.initComponent.call(this);this.relayEvents(this.form,['beforeaction','actionfailed',
'actioncomplete','validitychange','dirtychange']);this.pollForChanges&&this.startPolling(this.pollInterval||500)},initItems:function(){Ext.panel.Panel.prototype.initItems.call(this);this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){Ext.panel.Panel.prototype.afterFirstLayout.apply(this,arguments);this.form.initialize()},createForm:function(){for(var cfg={},props=this.basicFormConfigs,len=props.length,i=0,prop;i<len;++i)prop=props[i],cfg[prop]=this[prop];return new Ext.form.Basic(this,
cfg)},getForm:function(){return this.form},loadRecord:function(record){return this.getForm().loadRecord(record)},getRecord:function(){return this.getForm().getRecord()},updateRecord:function(record){return this.getForm().updateRecord(record)},getValues:function(asString,dirtyOnly,includeEmptyText,useDataValues){return this.getForm().getValues(asString,dirtyOnly,includeEmptyText,useDataValues)},isDirty:function(){return this.form.isDirty()},isValid:function(){return this.form.isValid()},reset:function(resetRecord){return this.form.reset(resetRecord)},
hasInvalidField:function(){return this.form.hasInvalidField()},doDestroy:function(){this.stopPolling();this.form.destroy();Ext.panel.Panel.prototype.doDestroy.call(this)},load:function(options){this.form.load(options)},submit:function(options){this.form.submit(options)},startPolling:function(interval){this.stopPolling();interval=new Ext.util.TaskRunner(interval);interval.start({interval:0,run:this.checkChange,scope:this});this.pollTask=interval},stopPolling:function(){var task=this.pollTask;task&&
(task.stopAll(),delete this.pollTask)},checkChange:function(){var fields=this.form.getFields().items,f,fLen=fields.length;for(f=0;f<fLen;f++)fields[f].checkChange()}},0,['form'],['component','box','container','panel','form'],{component:!0,box:!0,container:!0,panel:!0,form:!0},['widget.form'],[['fieldAncestor',Ext.form.FieldAncestor]],[Ext.form,'Panel',Ext,'FormPanel',Ext.form,'FormPanel'],0);
Ext.cmd.derive('Ext.form.RadioManager',Ext.util.MixedCollection,{singleton:!0,getByName:function(name,formId){return this.filterBy(function(item){return item.name===name&&item.getFormId()===formId})},getWithValue:function(name,value,formId){return this.filterBy(function(item){return item.name===name&&item.inputValue==value&&item.getFormId()===formId})},getChecked:function(name,formId){return this.findBy(function(item){return item.name===name&&item.checked&&item.getFormId()===formId})}},0,0,0,0,0,
0,[Ext.form,'RadioManager'],0);
Ext.cmd.derive('Ext.form.field.Radio',Ext.form.field.Checkbox,{alternateClassName:'Ext.form.Radio',isRadio:!0,inputType:'radio',formId:null,getGroupValue:function(){var selected=this.getManager().getChecked(this.name,this.getFormId());return selected?selected.inputValue:null},onRemoved:function(){Ext.form.field.Checkbox.prototype.onRemoved.apply(this,arguments);this.formId=null},setValue:function(value){var active;Ext.isBoolean(value)?Ext.form.field.Checkbox.prototype.setValue.apply(this,arguments):
(active=this.getManager().getWithValue(this.name,value,this.getFormId()).getAt(0))&&active.setValue(!0);return this},getSubmitValue:function(){return this.checked?this.inputValue:null},onChange:function(newVal,oldVal){var ownerCt=this.ownerCt,r;Ext.form.field.Checkbox.prototype.onChange.apply(this,arguments);if(newVal){var radios=this.getManager().getByName(this.name,this.getFormId()).items;var rLen=radios.length;for(r=0;r<rLen;r++){var radio=radios[r];radio!==this&&radio.updateValueFromDom()}}ownerCt&&
ownerCt.isRadioGroup&&ownerCt.simpleValue&&ownerCt.checkChange()},getManager:function(){return Ext.form.RadioManager}},0,['radio','radiofield'],'component box field checkboxfield checkbox radiofield radio'.split(' '),{component:!0,box:!0,field:!0,checkboxfield:!0,checkbox:!0,radiofield:!0,radio:!0},['widget.radio','widget.radiofield'],0,[Ext.form.field,'Radio',Ext.form,'Radio'],0);
Ext.cmd.derive('Ext.form.RadioGroup',Ext.form.CheckboxGroup,{isRadioGroup:!0,allowBlank:!0,blankText:'You must select one item in this group',defaultType:'radiofield',local:!1,simpleValue:!1,defaultBindProperty:'value',groupCls:'x-form-radio-group',ariaRole:'radiogroup',initRenderData:function(){var ariaAttr;var data=Ext.form.CheckboxGroup.prototype.initRenderData.call(this);if(ariaAttr=data.ariaAttributes)ariaAttr['aria-required']=!this.allowBlank,ariaAttr['aria-invalid']=!1;return data},lookupComponent:function(config){config=
Ext.form.CheckboxGroup.prototype.lookupComponent.call(this,config);this.local&&(config.formId=this.getId());return config},getBoxes:function(query,root){return(root||this).query('[isRadio]'+(query||''))},checkChange:function(){var value=this.getValue();var key='object'===typeof value&&Ext.Object.getKeys(value)[0];(this.simpleValue||key&&!Ext.isArray(value[key]))&&Ext.form.CheckboxGroup.prototype.checkChange.apply(this,arguments)},isEqual:function(value1,value2){return this.simpleValue?value1===value2:
Ext.form.CheckboxGroup.prototype.isEqual.call(this,value1,value2)},getValue:function(){var items=this.items.items,i;if(this.simpleValue)for(i=items.length;0<i--;){var item=items[i];if(item.checked){var ret=item.inputValue;break}}else ret=Ext.form.CheckboxGroup.prototype.getValue.call(this);return ret},setValue:function(value){var items=this.items,len,name;Ext.suspendLayouts();if(this.simpleValue){var cbValue=0;for(len=items.length;cbValue<len;++cbValue){var cmp=items.items[cbValue];if(cmp.inputValue===
value){cmp.setValue(!0);break}}}else if(Ext.isObject(value))for(name in items=(cmp=items.first())?cmp.getFormId():null,value)for(cbValue=value[name],cmp=Ext.form.RadioManager.getWithValue(name,cbValue,items).items,len=cmp.length,cbValue=0;cbValue<len;++cbValue)cmp[cbValue].setValue(!0);Ext.resumeLayouts(!0);return this},markInvalid:function(errors){var ariaDom=this.ariaEl.dom;Ext.form.CheckboxGroup.prototype.markInvalid.call(this,errors);ariaDom&&ariaDom.setAttribute('aria-invalid',!0)},clearInvalid:function(){var ariaDom=
this.ariaEl.dom;Ext.form.CheckboxGroup.prototype.clearInvalid.call(this);ariaDom&&ariaDom.setAttribute('aria-invalid',!1)}},0,['radiogroup'],'component box container fieldcontainer checkboxgroup radiogroup'.split(' '),{component:!0,box:!0,container:!0,fieldcontainer:!0,checkboxgroup:!0,radiogroup:!0},['widget.radiogroup'],0,[Ext.form,'RadioGroup'],function(){Ext.isGecko&&this.override({onFocusEnter:function(e){e=e.toComponent;var len;if(e.isRadio){e=e.getManager().getByName(e.name,e.getFormId()).items;
var i=0;for(len=e.length;i<len;i++)e[i].disableTabbing()}},onFocusLeave:function(e){e=e.fromComponent;var len;if(e.isRadio){e=e.getManager().getByName(e.name,e.getFormId()).items;var i=0;for(len=e.length;i<len;i++)e[i].enableTabbing()}}})});
Ext.define('Common.overrides.form.RadioGroup',{override:'Ext.form.RadioGroup',setValue:function(value){var items=this.items,len,name;Ext.suspendLayouts();if(this.simpleValue){var cbValue=0;for(len=items.length;cbValue<len;++cbValue){var cmp=items.items[cbValue];if(cmp.inputValue===value){cmp.setValue(!0);break}}}else if(Ext.isObject(value))for(name in items=(cmp=items.first())&&Ext.isFunction(cmp.getFormId)?cmp.getFormId():null,value)for(cbValue=value[name],cmp=Ext.form.RadioManager.getWithValue(name,
cbValue,items).items,len=cmp.length,cbValue=0;cbValue<len;++cbValue)cmp[cbValue].setValue(!0);Ext.resumeLayouts(!0);return this}});
Ext.cmd.derive('Ext.form.field.Picker',Ext.form.field.Text,{alternateClassName:'Ext.form.Picker',config:{triggers:{picker:{handler:'onTriggerClick',scope:'this',focusOnMousedown:!0}}},renderConfig:{editable:!0},keyMap:{scope:'this',DOWN:'onDownArrow',ESC:'onEsc'},keyMapTarget:'inputEl',isPickerField:!0,matchFieldWidth:!0,pickerAlign:'tl-bl?',openCls:'x-pickerfield-open',isExpanded:!1,applyTriggers:function(triggers){var picker=triggers.picker;picker.cls||(picker.cls=this.triggerCls);return Ext.form.field.Text.prototype.applyTriggers.call(this,
triggers)},getSubTplData:function(fieldData){var ariaAttr;fieldData=Ext.form.field.Text.prototype.getSubTplData.call(this,fieldData);!this.ariaStaticRoles[this.ariaRole]&&(ariaAttr=fieldData.ariaElAttributes)&&(ariaAttr['aria-haspopup']=!0,ariaAttr['aria-expanded']=!1);return fieldData},initEvents:function(){Ext.form.field.Text.prototype.initEvents.call(this);Ext.isGecko&&this.inputEl.dom.setAttribute('autocomplete','off')},updateEditable:function(editable,oldEditable){if(editable)this.inputEl.un('click',
this.onTriggerClick,this);else this.inputEl.on('click',this.onTriggerClick,this);Ext.form.field.Text.prototype.updateEditable.call(this,editable,oldEditable)},onEsc:function(e){Ext.isIE&&e.preventDefault();this.isExpanded&&(this.collapse(),e.stopEvent())},onDownArrow:function(e){150<e.time-this.lastDownArrow&&delete this.lastDownArrow;this.isExpanded?!e.stopped&&150>e.time-this.lastDownArrow&&delete this.lastDownArrow:(e.stopEvent(),this.onTriggerClick(e),this.lastDownArrow=e.time)},expand:function(){if(this.rendered&&
!this.isExpanded&&!this.destroyed){var bodyEl=this.bodyEl;var picker=this.getPicker();var doc=Ext.getDoc();picker.setMaxHeight(picker.initialConfig.maxHeight);this.matchFieldWidth&&picker.setWidth(this.bodyEl.getWidth());picker.show();this.isExpanded=!0;this.alignPicker();bodyEl.addCls(this.openCls);this.ariaStaticRoles[this.ariaRole]||(this.ariaEl.dom.hasAttribute('aria-owns')||this.ariaEl.dom.setAttribute('aria-owns',picker.listEl?picker.listEl.id:picker.el.id),this.ariaEl.dom.setAttribute('aria-expanded',
!0));this.touchListeners=doc.on({translate:!1,touchstart:this.collapseIf,scope:this,delegated:!1,destroyable:!0});this.scrollListeners=Ext.on({scroll:this.onGlobalScroll,scope:this,destroyable:!0});Ext.on('resize',this.alignPicker,this,{buffer:1});this.fireEvent('expand',this);this.onExpand()}},onExpand:Ext.emptyFn,alignPicker:function(){if(this.rendered&&!this.destroyed){var picker=this.getPicker();picker.isVisible()&&picker.isFloating()&&this.doAlign()}},doAlign:function(){var picker=this.picker;
picker.el.alignTo(this.triggerWrap,this.pickerAlign,this.pickerOffset);var newPos=picker.floatParent?picker.getOffsetsTo(picker.floatParent.getTargetEl()):picker.getXY();picker.x=newPos[0];picker.y=newPos[1];newPos=picker.el.getY()<this.inputEl.getY();this.bodyEl[newPos?'addCls':'removeCls'](this.openCls+'-above');picker[newPos?'addCls':'removeCls'](picker.baseCls+'-above')},collapse:function(){if(this.isExpanded&&!this.destroyed&&!this.destroying){var openCls=this.openCls,picker=this.picker;picker.hide();
this.isExpanded=!1;this.bodyEl.removeCls([openCls,openCls+'-above']);picker.el.removeCls(picker.baseCls+'-above');this.ariaStaticRoles[this.ariaRole]||this.ariaEl.dom.setAttribute('aria-expanded',!1);this.touchListeners.destroy();this.scrollListeners.destroy();Ext.un('resize',this.alignPicker,this);this.fireEvent('collapse',this);this.onCollapse()}},onCollapse:Ext.emptyFn,collapseIf:function(e){this.destroyed||e.within(this.bodyEl,!1,!0)||this.owns(e.target)||Ext.fly(e.target).isFocusable()||this.collapse()},
getPicker:function(){var picker=this.picker;picker||(this.creatingPicker=!0,this.picker=picker=this.createPicker(),picker.ownerCmp=this,delete this.creatingPicker);return this.picker},onFocusLeave:function(e){this.collapse();Ext.form.field.Text.prototype.onFocusLeave.call(this,e)},getRefItems:function(){var result=[];this.picker&&(result[0]=this.picker);return result},createPicker:Ext.emptyFn,onTriggerClick:function(e){this.readOnly||this.disabled||(this.isExpanded?this.collapse():this.expand())},
doDestroy:function(){var picker=this.picker;Ext.un('resize',this.alignPicker,this);Ext.destroy(this.keyNav,picker);picker&&(this.picker=picker.pickerField=null);Ext.form.field.Text.prototype.doDestroy.call(this)},privates:{onGlobalScroll:function(scroller){this.picker.owns(scroller.getElement())||this.collapse()}}},0,['pickerfield'],['component','box','field','textfield','pickerfield'],{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0},['widget.pickerfield'],0,[Ext.form.field,'Picker',Ext.form,
'Picker'],0);
Ext.cmd.derive('Ext.selection.Model',Ext.mixin.Observable,{alternateClassName:'Ext.AbstractSelectionModel',factoryConfig:{defaultType:'dataviewmodel'},$configPrefixed:!1,$configStrict:!1,config:{store:null,selected:{}},isSelectionModel:!0,allowDeselect:void 0,toggleOnClick:!0,ordered:!1,selected:null,pruneRemoved:!0,suspendChange:0,ignoreRightMouseSelection:!1,constructor:function(cfg){this.modes={SINGLE:!0,SIMPLE:!0,MULTI:!0};Ext.mixin.Observable.prototype.constructor.call(this,cfg);this.setSelectionMode(this.mode);
'SINGLE'!==this.selectionMode&&(this.allowDeselect=!0)},updateStore:function(store,oldStore){this.bindStore(store,!oldStore)},applySelected:function(selected){selected.isBag||selected.isCollection||(selected=new Ext.util[this.ordered?'Collection':'Bag'](Ext.apply({rootProperty:'data'},selected)));return selected},getStoreListeners:function(){return{add:this.onStoreAdd,clear:this.onStoreClear,remove:this.onStoreRemove,update:this.onStoreUpdate,idchanged:this.onIdChanged,load:this.onStoreLoad,refresh:this.onStoreRefresh,
pageadd:this.onPageAdd,pageremove:this.onPageRemove}},onBindStore:function(store,oldStore,initial){initial||this.updateSelectedInstances(this.selected)},suspendChanges:function(){++this.suspendChange},resumeChanges:function(){this.suspendChange&&--this.suspendChange},selectAll:function(suppressEvent){var selections=this.store.getRange(),start=this.getSelection().length;this.suspendChanges();this.doSelect(selections,!0,suppressEvent);this.destroyed||(this.resumeChanges(),suppressEvent||this.maybeFireSelectionChange(this.getSelection().length!==
start))},deselectAll:function(suppressEvent){var selections=this.getSelection(),selIndexes={},store=this.store,start=selections.length,l;var i=0;for(l=selections.length;i<l;i++){var rec=selections[i];selIndexes[rec.id]=store.indexOf(rec)}selections=Ext.Array.sort(selections,function(r1,r2){return selIndexes[r1.id]<selIndexes[r2.id]?-1:1});this.suspendChanges();this.doDeselect(selections,suppressEvent);this.destroyed||(this.resumeChanges(),suppressEvent||this.maybeFireSelectionChange(this.getSelection().length!==
start))},getSelectionStart:function(){return this.selectionStart},setSelectionStart:function(selection){this.selectionStart=selection},selectWithEvent:function(record,e){var isSelected=this.isSelected(record),shift=e.shiftKey;switch(this.selectionMode){case 'MULTI':this.selectWithEventMulti(record,e,isSelected);break;case 'SIMPLE':this.selectWithEventSimple(record,e,isSelected);break;case 'SINGLE':this.selectWithEventSingle(record,e,isSelected)}this.destroyed||shift||(this.isSelected(record)?this.selectionStart=
record:this.selectionStart=null)},vetoSelection:function(e){if(e.stopSelection)return!0;if('keydown'!==e.type&&0!==e.button){if(this.ignoreRightMouseSelection||this.isSelected(e.record))return!0}else return'mousedown'===e.type},onNavigate:function(e){if(e.record&&!this.vetoSelection(e.keyEvent)){this.onBeforeNavigate(e);var keyEvent=e.keyEvent,ctrlKey=keyEvent.ctrlKey||e.ctrlKey,recIdx=e.recordIndex,record=e.record,lastFocused=e.previousRecord,isSelected=this.isSelected(record),from=this.selectionStart&&
this.isSelected(e.previousRecord)?this.selectionStart:this.selectionStart=e.previousRecord,fromIdx=e.previousRecordIndex,key=keyEvent.getCharCode(),isSpace=key===keyEvent.SPACE,changedRec=e.record!==e.previousRecord;changedRec=key===keyEvent.UP||key===keyEvent.PAGE_UP||key===keyEvent.HOME||key===keyEvent.LEFT&&changedRec?'up':key===keyEvent.DOWN||key===keyEvent.PAGE_DOWN||key===keyEvent.END||key===keyEvent.RIGHT&&changedRec?'down':null;switch(this.selectionMode){case 'MULTI':this.setSelectionStart(e.selectionStart);
key===keyEvent.A&&ctrlKey?(this.selected.beginUpdate(),this.selectRange(0,this.store.getCount()-1),this.selected.endUpdate()):isSpace?keyEvent.shiftKey?this.selectRange(from,record,ctrlKey):isSelected?this.allowDeselect&&this.doDeselect(record):this.doSelect(record,ctrlKey):keyEvent.shiftKey&&from?('up'===changedRec&&fromIdx<=recIdx?this.deselectRange(lastFocused,recIdx+1):'down'===changedRec&&fromIdx>=recIdx?this.deselectRange(lastFocused,recIdx-1):from!==record&&this.selectRange(from,record,ctrlKey),
this.lastSelected=record):key?ctrlKey||this.doSelect(record,!1):this.selectWithEvent(record,keyEvent);break;case 'SIMPLE':key===keyEvent.A&&ctrlKey?(this.selected.beginUpdate(),this.selectRange(0,this.store.getCount()-1),this.selected.endUpdate()):isSelected?this.doDeselect(record):this.doSelect(record,!0);break;case 'SINGLE':ctrlKey||(changedRec?this.doSelect(record,!1):(isSpace||!key)&&this.selectWithEvent(record,keyEvent))}keyEvent.shiftKey||this.destroyed||!this.isSelected(record)||(this.selectionStart=
record,this.selectionStartIdx=recIdx)}},selectRange:function(startRow,endRow,keepExisting){var store=this.store,selected=this.selected.items,i;if(!this.isLocked()){endRow=this.normalizeRowRange(startRow,endRow);startRow=endRow[0];endRow=endRow[1];var toSelect=[];for(i=startRow;i<=endRow;i++)this.isSelected(store.getAt(i))||toSelect.push(store.getAt(i));if(!keepExisting){var toDeselect=[];this.suspendChanges();i=0;for(keepExisting=selected.length;i<keepExisting;++i){var rec=selected[i];var idx=store.indexOf(rec);
(idx<startRow||idx>endRow)&&toDeselect.push(rec)}i=0;for(keepExisting=toDeselect.length;i<keepExisting&&(this.doDeselect(toDeselect[i]),!this.destroyed);++i);this.destroyed||this.resumeChanges()}this.destroyed||(toSelect.length?this.doMultiSelect(toSelect,!0):toDeselect&&this.maybeFireSelectionChange(0<toDeselect.length))}},deselectRange:function(startRow,endRow){var store=this.store,toDeselect;if(!this.isLocked()){endRow=this.normalizeRowRange(startRow,endRow);startRow=endRow[0];endRow=endRow[1];
for(toDeselect=[];startRow<=endRow;startRow++){var record=store.getAt(startRow);this.isSelected(record)&&toDeselect.push(record)}toDeselect.length&&this.doDeselect(toDeselect)}},normalizeRowRange:function(startRow,endRow){var store=this.store;Ext.isNumber(startRow)||(startRow=store.indexOf(startRow));startRow=Math.max(0,startRow);Ext.isNumber(endRow)||(endRow=store.indexOf(endRow));endRow=Math.min(endRow,store.getCount()-1);startRow>endRow&&(store=endRow,endRow=startRow,startRow=store);return[startRow,
endRow]},select:function(records,keepExisting,suppressEvent){!Ext.isDefined(records)||Ext.isArray(records)&&!records.length||this.doSelect(records,keepExisting,suppressEvent)},deselect:function(records,suppressEvent){this.doDeselect(records,suppressEvent)},doSelect:function(records,keepExisting,suppressEvent){if(!this.locked&&null!=records){if('number'===typeof records){records=this.store.getAt(records);if(!records)return;records=[records]}'SINGLE'===this.selectionMode?(records.isModel&&(records=
[records]),records.length&&this.doSingleSelect(records[0],suppressEvent)):this.doMultiSelect(records,keepExisting,suppressEvent)}},doMultiSelect:function(records,keepExisting,suppressEvent){var me=this,selected=me.selected,change=!1;if(!me.locked){records=Ext.isArray(records)?records:[records];var len=records.length;if(!keepExisting&&0<selected.getCount()){keepExisting=me.deselectDuringSelect(records,suppressEvent);if(me.destroyed)return;if(keepExisting[0]){me.maybeFireSelectionChange(0<keepExisting[1]&&
!suppressEvent);return}change=0<keepExisting[1]}var commit=function(){selected.getCount()||(me.selectionStart=record);suppressEvent||selected.add(record);change=!0};for(keepExisting=0;keepExisting<len;keepExisting++){var record=records[keepExisting];if(!me.isSelected(record)&&(me.onSelectChange(record,!0,suppressEvent,commit),me.destroyed))return}me.lastSelected=record;suppressEvent&&selected.add(records);me.maybeFireSelectionChange(change&&!suppressEvent)}},deselectDuringSelect:function(toSelect,
suppressEvent){var selected=this.selected.getRange(),len=selected.length,changed=0,failed=!1,i;this.suspendChanges();this.deselectingDuringSelect=!0;for(i=0;i<len;++i){var item=selected[i];Ext.Array.contains(toSelect,item)||(this.doDeselect(item,suppressEvent)?++changed:failed=!0);if(this.destroyed){failed=!0;changed=0;break}}this.deselectingDuringSelect=!1;this.destroyed||this.resumeChanges();return[failed,changed]},doDeselect:function(records,suppressEvent){var me=this,selected=me.selected,i=0,
attempted=0,accepted=0;if(me.locked||!me.store)return!1;if('number'===typeof records){var record=me.store.getAt(records);if(!record)return!1;records=[record]}else Ext.isArray(records)||(records=[records]);var commit=function(){++accepted;suppressEvent||selected.remove(record);record===me.selectionStart&&(me.selectionStart=null)};var len=records.length;for(me.suspendChanges();i<len;i++)if(record=records[i],me.isSelected(record)&&(me.lastSelected===record&&(me.lastSelected=selected.last()),++attempted,
me.onSelectChange(record,!1,suppressEvent,commit),me.destroyed))return!1;me.resumeChanges();suppressEvent&&selected.remove(records);me.maybeFireSelectionChange(0<accepted&&!suppressEvent);return accepted===attempted},doSingleSelect:function(record,suppressEvent){var me=this,changed=!1,selected=me.selected;me.locked||me.isSelected(record)||(me.onSelectChange(record,!0,suppressEvent,function(){if(selected.getCount()){me.suspendChanges();var result=me.deselectDuringSelect([record],suppressEvent);if(me.destroyed)return;
me.resumeChanges();if(result[0])return!1}me.lastSelected=record;selected.getCount()||(me.selectionStart=record);selected.add(record);changed=!0}),changed&&!me.destroyed&&me.maybeFireSelectionChange(!suppressEvent))},maybeFireSelectionChange:function(fireEvent){fireEvent&&!this.suspendChange&&this.fireEvent('selectionchange',this,this.getSelection())},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(selMode){selMode=
selMode?selMode.toUpperCase():'SINGLE';this.selectionMode=this.modes[selMode]?selMode:'SINGLE'},isLocked:function(){return this.locked},setLocked:function(locked){this.locked=!!locked},isRangeSelected:function(startRow,endRow){var store=this.store;endRow=this.normalizeRowRange(startRow,endRow);startRow=endRow[0];for(endRow=endRow[1];startRow<=endRow;startRow++)if(!this.isSelected(store.getAt(startRow)))return!1;return!0},isSelected:function(record){record=Ext.isNumber(record)?this.store.getAt(record):
record;return this.selected?this.selected.contains(record):!1},hasSelection:function(){var selected=this.getSelected();return!(!selected||!selected.getCount())},refresh:function(){var store=this.store,toBeSelected=[],toBeReAdded=[],oldSelections=this.getSelection(),len=oldSelections.length,selected=this.getSelected(),change,d,rec,i;if(store&&(selected.isCollection||selected.isBag||selected.isRows)&&selected.getCount()){store=store.getData();store.getSource&&(d=store.getSource())&&(store=d);this.refreshing=
!0;selected.beginUpdate();this.suspendChanges();for(i=0;i<len&&(d=oldSelections[i],(rec=store.get(d.getId()))?toBeSelected.push(rec):this.pruneRemoved||toBeReAdded.push(d),'SINGLE'!==this.mode||!toBeReAdded.length);i++);selected.getCount()!==toBeSelected.length+toBeReAdded.length&&(change=!0);this.clearSelections();toBeSelected.length&&this.doSelect(toBeSelected,!1,!0);toBeReAdded.length&&(selected.add(toBeReAdded),this.lastSelected||(this.lastSelected=toBeReAdded[toBeReAdded.length-1]));this.resumeChanges();
change?selected.endUpdate():selected.updating--;this.refreshing=!1;this.maybeFireSelectionChange(change)}},clearSelections:function(){var selected=this.getSelected();selected&&selected.clear();this.lastSelected=null},onStoreAdd:Ext.emptyFn,onStoreClear:function(){this.store.isLoading()&&!this.store.clearing||!this.hasSelection()||(this.clearSelections(),this.maybeFireSelectionChange(!0))},onStoreRemove:function(store,records,index,isMove){index=records;var moveMap;this.selectionStart&&Ext.Array.contains(records,
this.selectionStart)&&(this.selectionStart=null);if(!isMove&&!this.locked&&this.pruneRemoved){if(moveMap=store.isMoving(null,!0))for(index=null,store=0,isMove=records.length;store<isMove;++store){var rec=records[store];moveMap[rec.id]||(index||(index=[])).push(rec)}index&&this.deselect(index)}},onPageRemove:function(pageMap,pageNumber,records){this.onStoreRemove(this.store,records)},onPageAdd:function(pageMap,pageNumber,records){pageMap=records.length;for(pageNumber=0;pageNumber<pageMap;pageNumber++){var record=
records[pageNumber];this.selected.get(record.id)&&this.selected.replace(record)}},getCount:function(){return this.selected.getCount()},onUpdate:Ext.emptyFn,destroy:function(){this.clearSelections();this.bindStore(null);this.selected=Ext.destroy(this.selected);Ext.mixin.Observable.prototype.destroy.call(this)},onStoreUpdate:Ext.emptyFn,onIdChanged:function(store,rec,oldId,newId){this.selected.updateKey(rec,oldId)},onStoreRefresh:function(){this.updateSelectedInstances(this.selected)},updateSelectedInstances:function(selected){var store=
this.getStore(),lastSelected=this.lastSelected,removeCount=0,prune=this.pruneRemovedOnRefresh(),i,rec;if(!store||!store.isBufferedStore){var items=selected.getRange();var length=items.length;if(lastSelected){this.lastSelected=store.getById(lastSelected.id);var lastSelectedChanged=this.lastSelected!==lastSelected}this.refreshing=!0;if(store)for(i=0;i<length;++i){var selectedRec=items[i];(rec=store.getById(selectedRec.id))?rec!==selectedRec&&selected.add(rec):prune&&(selected.remove(selectedRec),++removeCount)}else removeCount=
selected.getCount(),selected.removeAll();this.refreshing=!1;this.maybeFireSelectionChange(0<removeCount);lastSelectedChanged&&this.fireEvent('lastselectedchanged',this,this.getSelection(),lastSelected)}},pruneRemovedOnRefresh:function(){return this.pruneRemoved},onStoreLoad:Ext.emptyFn,onSelectChange:function(record,isSelected,suppressEvent,commitFn){isSelected=isSelected?'select':'deselect';!1!==(suppressEvent||this.fireEvent('before'+isSelected,this,record))&&!1!==commitFn()&&(suppressEvent||this.destroyed||
this.fireEvent(isSelected,this,record))},onEditorKey:Ext.emptyFn,beforeViewRender:function(view){Ext.Array.include(this.views||(this.views=[]),view)},onHeaderClick:Ext.emptyFn,resolveListenerScope:function(defaultScope){var view=this.view,scope;view&&(scope=view.resolveSatelliteListenerScope(this,defaultScope));return scope||Ext.mixin.Observable.prototype.resolveListenerScope.call(this,defaultScope)},bindComponent:Ext.emptyFn,privates:{onBeforeNavigate:Ext.privateFn,getLastSelected:function(){return this.lastSelected},
selectWithEventMulti:function(record,e,isSelected){var shift=e.shiftKey,ctrl=e.ctrlKey,start=shift?this.getSelectionStart():null;e=this.getSelection();var len=e.length;if(shift&&start)this.selectRange(start,record,ctrl);else if(ctrl&&isSelected)this.allowDeselect&&this.doDeselect(record,!1);else if(ctrl)this.doSelect(record,!0,!1);else if(isSelected&&!shift&&!ctrl&&1<len){if(this.allowDeselect){isSelected=[];for(shift=0;shift<len;++shift)ctrl=e[shift],ctrl!==record&&isSelected.push(ctrl);this.doDeselect(isSelected)}}else isSelected||
this.doSelect(record,!1)},selectWithEventSimple:function(record,e,isSelected){isSelected?this.doDeselect(record):this.doSelect(record,!0)},selectWithEventSingle:function(record,e,isSelected){var allowDeselect=this.allowDeselect;allowDeselect&&!e.ctrlKey&&(allowDeselect=this.toggleOnClick);allowDeselect&&isSelected?this.doDeselect(record):this.doSelect(record,!1)}}},1,0,0,0,['selection.abstract'],[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder],[Ext.mixin.Factoryable.prototype.mixinId||
Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable]],[Ext.selection,'Model',Ext,'AbstractSelectionModel'],0);
Ext.cmd.derive('Ext.selection.DataViewModel',Ext.selection.Model,{deselectOnContainerClick:!0,bindComponent:function(view){if(this.view!==view&&(this.view&&(this.navigationModel=null,Ext.destroy(this.viewListeners,this.navigationListeners)),this.view=view)){var viewListeners=this.getViewListeners();viewListeners.scope=this;viewListeners.destroyable=!0;this.navigationModel=view.getNavigationModel();this.viewListeners=view.on(viewListeners);this.navigationListeners=this.navigationModel.on({navigate:this.onNavigate,
scope:this,destroyable:!0})}},getViewListeners:function(){var eventListeners={};eventListeners[this.view.triggerCtEvent]=this.onContainerClick;return eventListeners},onUpdate:function(record){var view=this.view;if(view&&this.isSelected(record))view.onItemSelect(record)},onContainerClick:function(){this.deselectOnContainerClick&&this.deselectAll()},onSelectChange:function(record,isSelected,suppressEvent,commitFn){var view=this.view,eventName=isSelected?'select':'deselect',recordIndex=this.store.indexOf(record);
if(!1!==(suppressEvent||this.fireEvent('before'+eventName,this,record,recordIndex))&&!1!==commitFn()){if(view&&!view.destroyed)if(isSelected)view.onItemSelect(record);else view.onItemDeselect(record);suppressEvent||this.destroyed||this.fireEvent(eventName,this,record,recordIndex)}},destroy:function(){this.bindComponent();Ext.destroy(this.keyNav);Ext.selection.Model.prototype.destroy.call(this)}},0,0,0,0,['selection.dataviewmodel'],0,[Ext.selection,'DataViewModel'],0);
Ext.cmd.derive('Ext.view.NavigationModel',Ext.Base,{config:{store:null},focusCls:'x-view-item-focused',constructor:function(){this.mixins.observable.constructor.call(this)},bindComponent:function(view){this.view!==view&&(this.view=view,this.bindView(view))},bindView:function(view){var dataSource=view.dataSource;this.initKeyNav(view);dataSource.isEmptyStore||this.setStore(dataSource);dataSource=this.getViewListeners();dataSource.destroyable=!0;this.viewListeners=this.viewListeners||[];this.viewListeners.push(view.on(dataSource))},
updateStore:function(store){this.mixins.storeholder.bindStore.apply(this,[store])},getViewListeners:function(){return{containermousedown:this.onContainerMouseDown,itemmousedown:this.onItemMouseDown,itemclick:this.onItemClick,itemcontextmenu:this.onItemMouseDown,scope:this}},initKeyNav:function(view){this.keyNav=new Ext.util.KeyNav({target:view,ignoreInputFields:!0,eventName:'itemkeydown',defaultEventAction:'stopEvent',processEvent:this.processViewEvent,up:this.onKeyUp,down:this.onKeyDown,right:this.onKeyRight,
left:this.onKeyLeft,pageDown:this.onKeyPageDown,pageUp:this.onKeyPageUp,home:this.onKeyHome,end:this.onKeyEnd,space:this.onKeySpace,enter:this.onKeyEnter,A:{ctrl:!0,handler:this.onSelectAllKeyPress},scope:this})},processViewEvent:function(view,record,node,index,event){return event},addKeyBindings:function(binding){this.keyNav.addBindings(binding)},enable:function(){this.keyNav.enable();this.disabled=!1},disable:function(){this.keyNav.disable();this.disabled=!0},onContainerMouseDown:function(view,
mousedownEvent){Ext.getScrollbarSize().width&&!view.el.getClientRegion().contains(mousedownEvent.getPoint())&&(mousedownEvent.preventDefault(),view.lastFocused='scrollbar')},onItemMouseDown:function(view,record,item,index,mousedownEvent){'touch'!==mousedownEvent.pointerType&&this.setPosition(index)},onItemClick:function(view,record,item,index,clickEvent){this.record===record?this.fireNavigateEvent(clickEvent):this.setPosition(index,clickEvent)},setPosition:function(recordIndex,keyEvent,suppressEvent,
preventNavigation,preventFocus){var view=this.view,selModel=view.getSelectionModel(),dataSource=view.dataSource;if(null!=recordIndex&&view.all.getCount())if('number'===typeof recordIndex){var newRecordIndex=Math.max(Math.min(recordIndex,dataSource.getCount()-1),0);var newRecord=dataSource.getAt(recordIndex)}else recordIndex.isEntity?(newRecord=dataSource.getById(recordIndex.id),newRecordIndex=dataSource.indexOf(newRecord),-1===newRecordIndex&&(newRecord=dataSource.getAt(0),newRecordIndex=0)):recordIndex.tagName?
(newRecord=view.getRecord(recordIndex),newRecordIndex=dataSource.indexOf(newRecord)):newRecord=newRecordIndex=null;else this.record=this.recordIndex=null;if(newRecord===this.record)return this.recordIndex=newRecordIndex,this.focusPosition(newRecordIndex);this.item&&this.item.removeCls(this.focusCls);this.previousRecordIndex=this.recordIndex;this.previousRecord=this.record;this.previousItem=this.item;this.recordIndex=newRecordIndex;this.record=newRecord;preventNavigation=preventNavigation||this.record===
this.lastFocused;newRecord?this.focusPosition(this.recordIndex):preventFocus||(this.item=null);suppressEvent||selModel.fireEvent('focuschange',selModel,this.previousRecord,this.record);!preventNavigation&&keyEvent&&this.fireNavigateEvent(keyEvent)},focusPosition:function(recordIndex){null!=recordIndex&&-1!==recordIndex?(recordIndex.isEntity&&(recordIndex=this.view.dataSource.indexOf(recordIndex)),(this.item=this.view.all.item(recordIndex))?(this.lastFocused=this.record,this.lastFocusedIndex=this.recordIndex,
this.focusItem(this.item)):this.record=null):this.item=null},focusItem:function(item){item.addCls(this.focusCls);item.focus()},getPosition:function(){return this.record?this.recordIndex:null},getRecordIndex:function(){return this.recordIndex},getItem:function(){return this.item},getRecord:function(){return this.record},getLastFocused:function(){return-1===this.view.dataSource.indexOf(this.lastFocused)?null:this.lastFocused},onKeyUp:function(keyEvent){var newPosition=this.recordIndex-1;0>newPosition&&
(newPosition=this.view.all.getCount()-1);this.setPosition(newPosition,keyEvent)},onKeyDown:function(keyEvent){var newPosition=this.recordIndex+1;newPosition>this.view.all.getCount()-1&&(newPosition=0);this.setPosition(newPosition,keyEvent)},onKeyRight:function(keyEvent){var newPosition=this.recordIndex+1;newPosition>this.view.all.getCount()-1&&(newPosition=0);this.setPosition(newPosition,keyEvent)},onKeyLeft:function(keyEvent){var newPosition=this.recordIndex-1;0>newPosition&&(newPosition=this.view.all.getCount()-
1);this.setPosition(newPosition,keyEvent)},onKeyPageDown:Ext.emptyFn,onKeyPageUp:Ext.emptyFn,onKeyHome:function(keyEvent){this.setPosition(0,keyEvent)},onKeyEnd:function(keyEvent){this.setPosition(this.view.all.getCount()-1,keyEvent)},onKeySpace:function(keyEvent){this.fireNavigateEvent(keyEvent)},onKeyEnter:function(keyEvent){keyEvent.stopEvent();keyEvent.view.fireEvent('itemclick',keyEvent.view,keyEvent.record,keyEvent.item,keyEvent.recordIndex,keyEvent)},onSelectAllKeyPress:function(keyEvent){this.fireNavigateEvent(keyEvent)},
fireNavigateEvent:function(keyEvent){this.fireEvent('navigate',{navigationModel:this,keyEvent:keyEvent,previousRecordIndex:this.previousRecordIndex,previousRecord:this.previousRecord,previousItem:this.previousItem,recordIndex:this.recordIndex,record:this.record,item:this.item})},destroy:function(){this.setStore(null);Ext.destroy(this.viewListeners,this.keyNav);this.callParent()}},1,0,0,0,['view.navigation.default'],[[Ext.util.Observable.prototype.mixinId||Ext.util.Observable.$className,Ext.util.Observable],
[Ext.mixin.Factoryable.prototype.mixinId||Ext.mixin.Factoryable.$className,Ext.mixin.Factoryable],[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Ext.view,'NavigationModel'],0);
Ext.cmd.derive('Ext.view.AbstractView',Ext.Component,{isDataView:!0,inheritableStatics:{getRecord:function(node){return this.getBoundView(node).getRecord(node)},getBoundView:function(node){return Ext.getCmp(node.getAttribute('data-boundView'))}},defaultBindProperty:'store',renderBuffer:document.createElement('div'),statics:{updateDelay:200,queueRecordChange:function(view,store,record,operation,modifiedFieldNames){store=this.changeQueue||(this.changeQueue={});var recId=record.internalId,len;var recChange=
store[recId]||(store[recId]={operation:operation,record:record,data:{},views:[]});operation=recChange.data;Ext.Array.include(recChange.views,view);if(modifiedFieldNames&&(len=modifiedFieldNames.length)){for(view=0;view<len;view++){recChange=modifiedFieldNames[view];var value=record.data[recChange];if(operation.hasOwnProperty(recChange)){if(record.isEqual(operation[recChange],value)){delete operation[recChange];var checkForReversion=!0}}else operation[recChange]=value}checkForReversion&&!Ext.Object.getKeys(operation).length&&
delete store[recId]}else Ext.apply(operation,record.data);this.flushQueueTask||(this.flushQueueTask=Ext.util.TaskManager.newTask({run:Ext.global.requestAnimationFrame?Ext.Function.createAnimationFrame(this.onFlushTick,this):Ext.Function.bind(this.onFlushTick,this),interval:Ext.view.AbstractView.updateDelay,repeat:1}));this.flushQueueTask.start()},onFlushTick:function(){Ext.AnimationQueue.start(this.flushChangeQueue,this)},flushChangeQueue:function(){var recId,i;if(Ext.isScrolling)this.flushQueueTask.start();
else{var changeQueue=this.changeQueue;this.changeQueue={};for(recId in changeQueue){var recChange=changeQueue[recId];var dirtyViews=recChange.views;var len=dirtyViews.length;for(i=0;i<len;i++){var view=dirtyViews[i];view.destroyed||view.handleUpdate(view.dataSource,recChange.record,recChange.operation,Ext.Object.getKeys(recChange.data))}}Ext.AnimationQueue.stop(this.flushChangeQueue,this)}}},config:{selection:null,store:'ext-empty-store',navigationModel:{type:'default'},selectionModel:{type:'dataviewmodel'}},
publishes:['selection'],twoWayBindable:['selection'],throttledUpdate:!1,deferInitialRefresh:!1,itemCls:'x-dataview-item',loadingText:'Loading...',loadMask:!0,loadingUseMsg:!0,selectedItemCls:'x-item-selected',emptyText:'',deferEmptyText:!0,trackOver:!1,blockRefresh:!1,preserveScrollOnRefresh:!1,preserveScrollOnReload:!1,autoDestroyBoundStore:!0,ariaRole:'listbox',itemAriaRole:'option',last:!1,focusable:!0,tabIndex:0,triggerEvent:'itemclick',triggerCtEvent:'containerclick',refreshNeeded:!0,updateSuspendCounter:0,
addCmpEvents:Ext.emptyFn,constructor:function(config){config&&config.selModel&&(config.selectionModel=config.selModel);Ext.Component.prototype.constructor.call(this,config)},initComponent:function(){var itemTpl=this.itemTpl,memberFn={};itemTpl&&(Ext.isArray(itemTpl)?('string'!==typeof itemTpl[itemTpl.length-1]&&(itemTpl=itemTpl.slice(0),memberFn=itemTpl.pop()),itemTpl=itemTpl.join('')):Ext.isObject(itemTpl)&&(memberFn=Ext.apply(memberFn,itemTpl.initialConfig),itemTpl=itemTpl.html),this.itemSelector||
(this.itemSelector='.'+this.itemCls),itemTpl=Ext.String.format('\x3ctpl for\x3d"."\x3e\x3cdiv class\x3d"{0}" role\x3d"{2}"\x3e{1}\x3c/div\x3e\x3c/tpl\x3e',this.itemCls,itemTpl,this.itemAriaRole),this.tpl=new Ext.XTemplate(itemTpl,memberFn));Ext.Component.prototype.initComponent.call(this);this.tpl=this.lookupTpl('tpl');this.overItemCls&&(this.trackOver=!0);this.addCmpEvents();itemTpl=this.store=Ext.data.StoreManager.lookup(this.store||'ext-empty-store');this.dataSource||(this.dataSource=itemTpl);
this.bindStore(itemTpl,!0);this.getNavigationModel().bindComponent(this);this.all||(this.all=new Ext.CompositeElementLite);this.scrollState={top:0,left:0};this.savedTabIndexAttribute='data-savedtabindex-'+this.id},getElConfig:function(){var result=this.mixins.renderable.getElConfig.call(this);this.focusable&&(result.tabIndex=0);return result},onRender:function(parentNode,containerIdx){var mask=this.loadMask;Ext.Component.prototype.onRender.call(this,parentNode,containerIdx);mask&&this.createMask(mask)},
beforeLayout:function(){Ext.Component.prototype.beforeLayout.call(this);this.refreshNeeded&&!this.pendingRefresh&&(this.refreshCounter?this.refreshView():this.doFirstRefresh(this.dataSource))},onMaskBeforeShow:function(){var loadingHeight=this.loadingHeight;loadingHeight&&loadingHeight>this.getHeight()&&(this.hasLoadingHeight=!0,this.oldMinHeight=this.minHeight,this.minHeight=loadingHeight,this.updateLayout())},onMaskHide:function(){!this.destroying&&this.hasLoadingHeight&&(this.minHeight=this.oldMinHeight,
this.updateLayout(),delete this.hasLoadingHeight)},beforeRender:function(){Ext.Component.prototype.beforeRender.call(this);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){Ext.Component.prototype.afterRender.call(this);this.focusable&&(this.focusEl=this.el)},getRefItems:function(){var mask=this.loadMask,result=[];mask&&mask.isComponent&&result.push(mask);return result},getSelection:function(){return this.getSelectionModel().getSelection()},updateSelection:function(selection){if(!this.ignoreNextSelection){this.ignoreNextSelection=
!0;var sm=this.getSelectionModel();selection?sm.select(selection):sm.deselectAll();this.ignoreNextSelection=!1}},updateBindSelection:function(selModel,selection){var selected=null;this.ignoreNextSelection||(this.ignoreNextSelection=!0,selection.length&&(selected=selModel.getLastSelected(),this.hasHadSelection=!0),this.hasHadSelection&&this.setSelection(selected),this.ignoreNextSelection=!1)},applySelectionModel:function(selModel,oldSelModel){var grid=this.grid;oldSelModel?(oldSelModel.destroyed||
oldSelModel.un({scope:this,selectionchange:this.updateBindSelection,lastselectedchanged:this.updateBindSelection}),Ext.destroy(this.selModelRelayer),selModel=Ext.Factory.selection(selModel)):selModel&&selModel.isSelectionModel?selModel.locked=this.disableSelection:(oldSelModel=this.simpleSelect?'SIMPLE':this.multiSelect?'MULTI':'SINGLE','string'===typeof selModel&&(selModel={type:selModel}),selModel=Ext.Factory.selection(Ext.apply({allowDeselect:this.allowDeselect||this.multiSelect,mode:oldSelModel,
locked:this.disableSelection},selModel)));'SINGLE'!==selModel.mode&&((oldSelModel=(grid||this).ariaEl.dom)?oldSelModel.setAttribute('aria-multiselectable',!0):grid||(grid=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),grid['aria-multiselectable']=!0));this.selModelRelayer=this.relayEvents(selModel,'selectionchange beforeselect beforedeselect select deselect focuschange'.split(' '));selModel.on({scope:this,lastselectedchanged:this.updateBindSelection,selectionchange:this.updateBindSelection});
return selModel},updateSelectionModel:function(selectionModel){this.selModel=selectionModel},applyNavigationModel:function(navigationModel){return Ext.Factory.viewNavigation(navigationModel)},onFocusEnter:function(e){var navigationModel=this.getNavigationModel();if('scrollbar'===focusPosition)e.relatedTarget.focus();else{this.toggleChildrenTabbability(!1);if(!this.itemFocused&&this.all.getCount()){var focusPosition=e.event.getTarget()===this.tabGuardEl?this.all.getCount()-1:navigationModel.getLastFocused();
navigationModel.setPosition(focusPosition||0,e.event,null,!focusPosition);this.itemFocused=null!=navigationModel.getPosition()}this.itemFocused&&(this.el.dom.setAttribute('tabIndex',-1),this.tabGuardEl&&this.tabGuardEl.setAttribute('tabIndex',-1));Ext.Component.prototype.onFocusEnter.call(this,e)}},onFocusLeave:function(e){this.itemFocused&&!this.refreshing&&(this.getNavigationModel().setPosition(null,e.event,null,!0),this.itemFocused=!1,this.el.dom.setAttribute('tabIndex',0),this.tabGuardEl&&this.tabGuardEl.setAttribute('tabIndex',
0));Ext.Component.prototype.onFocusLeave.call(this,e)},onRemoved:function(isDestroying){Ext.Component.prototype.onRemoved.call(this,isDestroying);if(!isDestroying)this.onFocusLeave({})},refresh:function(){var items=this.all,prevItemCount=items.getCount(),refreshCounter=this.refreshCounter,selModel=this.getSelectionModel(),scroller=refreshCounter&&items.getCount()&&this.preserveScrollOnRefresh&&this.getScrollable(),bufferedRenderer=this.bufferedRenderer;if(this.rendered&&!this.destroyed){if(!this.hasListeners.beforerefresh||
!1!==this.fireEvent('beforerefresh',this)){this.refreshing=!0;var restoreFocus=this.saveFocusState();var targetEl=this.getTargetEl();var records=this.getViewRange();if(scroller){var scrollPos=scroller.getPosition();scrollPos.x||scrollPos.y||(scrollPos=null)}refreshCounter?(this.clearViewEl(),this.refreshCounter++):this.refreshCounter=1;this.tpl.append(targetEl,this.collectData(records,items.startIndex||0));1>records.length?(this.addEmptyText(),items.clear()):(this.collectNodes(targetEl.dom),this.updateIndexes(0));
restoreFocus();!1!==this.refreshSelmodelOnRefresh&&selModel.refresh();this.refreshNeeded=!1;this.refreshSize(items.getCount()!==prevItemCount);this.fireItemMutationEvent('refresh',this,records);scroller&&scroller.scrollTo(scrollPos);this.viewReady||(this.viewReady=!0,this.fireEvent('viewready',this));this.refreshing=!1;bufferedRenderer&&bufferedRenderer.refreshSize();this.cleanupData()}this.tabGuardEl||(this.tabGuardEl=this.el.createChild({cls:'x-tab-guard x-tab-guard-after',tabIndex:'0'},null,!0))}},
addEmptyText:function(){var store=this.getStore();this.emptyText&&!store.isLoading()&&(!this.deferEmptyText||1<this.refreshCounter||store.isLoaded())&&(this.emptyEl=Ext.core.DomHelper.insertHtml('beforeEnd',this.getTargetEl().dom,this.emptyText))},getEmptyText:function(){return this.emptyText},setEmptyText:function(emptyText){this.emptyText!==emptyText&&(this.emptyText=emptyText,this.refresh());return this},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(forceLayout){var sizeModel=
this.getSizeModel();this.getScrollable();(sizeModel.height.shrinkWrap||sizeModel.width.shrinkWrap||forceLayout)&&this.updateLayout()},afterFirstLayout:function(width,height){var scroller=this.getScrollable();if(scroller)scroller.on({scroll:this.onViewScroll,scrollend:this.onViewScrollEnd,scope:this,onFrame:!!Ext.global.requestAnimationFrame});Ext.Component.prototype.afterFirstLayout.call(this,width,height)},clearViewEl:function(){var targetEl=this.getTargetEl(),all=this.all,store=this.getStore(),
i,nodeContainerIsTarget=this.getNodeContainer()===targetEl;var removedItems=all.slice();var removedRecs=[];for(i=all.startIndex;i<=all.endIndex;i++)removedRecs.push(store.getByInternalId(all.item(i,!0).getAttribute('data-recordId')));this.fireItemMutationEvent('itemremove',removedRecs,all.startIndex||0,removedItems,this);this.clearEmptyEl();this.all.clear(!nodeContainerIsTarget);if(targetEl=nodeContainerIsTarget?targetEl.dom:this.getNodeContainer())targetEl.innerHTML=''},clearEmptyEl:function(){var emptyEl=
this.emptyEl;emptyEl&&Ext.removeNode(emptyEl);this.emptyEl=null},onViewScroll:function(scroller,x,y){this.fireEvent('scroll',this,x,y)},onViewScrollEnd:function(scroller,x,y){this.fireEvent('scrollend',this,x,y)},saveScrollState:function(){var state=this.scrollState;this.rendered&&(state.left=this.getScrollX(),state.top=this.getScrollY())},restoreScrollState:function(){var state=this.scrollState;this.rendered&&(this.setScrollX(state.left),this.setScrollY(state.top))},prepareData:function(data,index,
record){var attr;if(record)for(attr in index=record.getAssociatedData(),index)if(index.hasOwnProperty(attr)){if(!hasCopied){data=Ext.Object.chain(data);var hasCopied=!0}data[attr]=index[attr]}return data},collectData:function(records,startIndex){for(var data=[],i=0,len=records.length,record;i<len;i++)record=records[i],data[i]=this.prepareData(record.data,startIndex+i,record);return data},cleanupData:Ext.emptyFn,bufferRender:function(records,index){var div=this.renderBuffer,result=document.createDocumentFragment();
this.tpl.overwrite(div,this.collectData(records,index));records=Ext.fly(div).query(this.getItemSelector());div=0;for(index=records.length;div<index;div++)result.appendChild(records[div]);return{fragment:result,children:records}},nodeContainerSelector:null,getNodeContainer:function(){var target=this.getTargetEl(),selector=this.nodeContainerSelector;return selector?target.down(selector,!0):target},setItemsDraggable:function(draggable){var selector='#'+this.id+' '+this.getItemSelector(),styleSheet=this.viewStyleSheet;
draggable?(styleSheet||(styleSheet=Ext.view.AbstractView.prototype.viewStyleSheet=Ext.util.CSS.createStyleSheet('','AbstractView')),Ext.util.CSS.createRule(styleSheet,selector,'touch-action: pinch-zoom double-tap-zoom;-ms-touch-action: pinch-zoom double-tap-zoom;-webkit-user-drag: none;')):styleSheet&&Ext.util.CSS.deleteRule(selector)},getNodeContainerSelector:function(){return this.nodeContainerSelector},onUpdate:function(store,record,operation,modifiedFieldNames,details){details&&details.filtered||
!this.getNode(record)||(this.throttledUpdate?this.statics().queueRecordChange(this,store,record,operation,modifiedFieldNames):this.handleUpdate(store,record,operation,modifiedFieldNames,details))},handleUpdate:function(store,record){var selModel=this.getSelectionModel();if(this.viewReady&&!this.refreshNeeded&&(store=this.dataSource.indexOf(record),-1<store&&this.getNode(record))){var node=this.bufferRender([record],store).children[0];this.all.replaceElement(store,node,!0);this.updateIndexes(store,
store);selModel.onUpdate(record);this.refreshSizePending=!0;if(selModel.isSelected(record))this.onItemSelect(record);this.hasListeners.itemupdate&&this.fireEvent('itemupdate',record,store,node,this);return node}},onReplace:function(store,startIndex,oldRecords,newRecords){var all=this.all;store=this.getSelectionModel();var origStart=startIndex,item,restoreFocus;if(this.rendered){var result=this.bufferRender(newRecords,startIndex,!0);var fragment=result.fragment;result=result.children;(item=all.item(startIndex))?
all.item(startIndex).insertSibling(fragment,'before',!0):this.appendNodes(fragment);all.insert(startIndex,result);oldRecords.length&&(restoreFocus=this.saveFocusState());startIndex+=newRecords.length;fragment=startIndex+oldRecords.length-1;all=all.removeRange(startIndex,fragment,!0);!1!==this.refreshSelmodelOnRefresh&&store.refresh();this.updateIndexes(startIndex);this.fireItemMutationEvent('itemremove',oldRecords,origStart,all,this);this.fireItemMutationEvent('itemadd',newRecords,origStart,result,
this);restoreFocus();this.refreshSize()}},onAdd:function(store,records,index){var selModel=this.getSelectionModel();this.rendered&&!this.refreshNeeded&&(0===this.all.getCount()?(this.refresh(),store=this.all.slice()):(store=this.doAdd(records,index),!1!==this.refreshSelmodelOnRefresh&&selModel.refresh(),this.updateIndexes(index),this.refreshSizePending=!0),this.fireItemMutationEvent('itemadd',records,index,store,this))},appendNodes:function(nodes){var all=this.all,count=all.getCount();this.nodeContainerSelector?
this.getNodeContainer().appendChild(nodes):all.item(count-1).insertSibling(nodes,'after')},doAdd:function(records,index){var result=this.bufferRender(records,index,!0);records=result.fragment;result=result.children;var all=this.all,count=all.getCount(),firstRowIndex=all.startIndex||0,lastRowIndex=all.endIndex||count-1;0===count||index>lastRowIndex?this.appendNodes(records):index<=firstRowIndex?all.item(firstRowIndex).insertSibling(records,'before',!0):all.item(index).insertSibling(result,'before',
!0);all.insert(index,result);return result},onRemove:function(store,records,index){store=this.all;var i;if(this.rendered&&!this.refreshNeeded&&store.getCount()){if(0===this.dataSource.getCount())this.refresh();else{var restoreFocus=this.saveFocusState();var nodes=[];for(i=records.length-1;0<=i;--i){var record=records[i];var currIdx=index+i;if(nodes){var node=store.item(currIdx);nodes[i]=node?node.dom:void 0}store.item(currIdx)&&this.doRemove(record,currIdx)}this.fireItemMutationEvent('itemremove',
records,index,nodes,this);restoreFocus();this.updateIndexes(index)}this.refreshSizePending=!0}},doRemove:function(record,index){this.all.removeElement(index,!0)},eventLifecycleMap:{refresh:'onViewRefresh',itemremove:'onItemRemove',itemadd:'onItemAdd'},fireItemMutationEvent:function(eventName){this.ownerGrid&&this.ownerGrid[this.eventLifecycleMap[eventName]].apply(this.ownerGrid,Ext.Array.slice(arguments,1));this.fireEvent.apply(this,arguments)},saveFocusState:function(){var me=this,store=me.dataSource||
me.store,navModel=me.getNavigationModel(),lastFocusedIndex=navModel.recordIndex,lastFocusedRec=navModel.record,containsFocus=me.el.contains(Ext.Element.getActiveElement());return lastFocusedRec?(containsFocus&&me.el.dom.focus(),function(){store.getCount()&&(lastFocusedIndex=Math.min(lastFocusedIndex,me.all.getCount()-1),navModel.setPosition(store.contains(lastFocusedRec)?lastFocusedRec:lastFocusedIndex,null,null,!0,!containsFocus))}):Ext.emptyFn},refreshNode:function(record){Ext.isNumber(record)&&
(record=this.store.getAt(record));this.onUpdate(this.dataSource,record)},updateIndexes:function(startIndex,endIndex){var nodes=this.all.elements,records=this.getViewRange(),i,myId=this.id;endIndex=endIndex||(0===endIndex?0:nodes.length-1);for(i=startIndex||0;i<=endIndex;i++)startIndex=nodes[i],startIndex.setAttribute('data-recordIndex',i),startIndex.setAttribute('data-recordId',records[i].internalId),startIndex.setAttribute('data-boundView',myId)},bindStore:function(store,initial){var selModel=this.getSelectionModel(),
navModel=this.getNavigationModel();selModel&&!selModel.destroyed&&(selModel.bindStore(store,initial),selModel.bindComponent(store?this:null));this.mixins.storeholder.bindStore.apply(this,arguments);navModel&&!navModel.destroyed&&navModel.setStore(store);store&&this.componentLayoutCounter&&!this.blockRefresh&&this.doFirstRefresh(store,!initial)},doFirstRefresh:function(store,noDefer){this.deferInitialRefresh&&!noDefer?Ext.defer(this.doFirstRefresh,1,this,[store,!0]):store&&!this.deferRefreshForLoad(store)&&
this.refresh()},onUnbindStore:function(store){this.setMaskBind(null);this.dataSource===store&&(this.dataSource=null)},onBindStore:function(store,oldStore){this.store.isBufferedStore&&(this.store.preserveScrollOnReload=this.preserveScrollOnReload);oldStore&&oldStore.isBufferedStore&&delete oldStore.preserveScrollOnReload;this.setMaskBind(store);this.dataSource||(this.dataSource=store)},setMaskBind:function(store){var mask=this.loadMask;this.rendered&&mask&&store&&!mask.bindStore&&(mask=this.createMask());
mask&&mask.bindStore&&mask.bindStore(store)},getStoreListeners:function(){return{refresh:this.onDataRefresh,replace:this.onReplace,add:this.onAdd,remove:this.onRemove,update:this.onUpdate,clear:this.onDataRefresh,beginupdate:this.onBeginUpdate,endupdate:this.onEndUpdate}},onBeginUpdate:function(){++this.updateSuspendCounter;Ext.suspendLayouts()},onEndUpdate:function(){this.updateSuspendCounter&&--this.updateSuspendCounter;Ext.resumeLayouts(!0);this.refreshSizePending&&(this.refreshSize(!0),this.refreshSizePending=
!1)},onDataRefresh:function(store){var preserveScrollOnRefresh=this.preserveScrollOnRefresh;store.loadCount>this.lastRefreshLoadCount&&(this.preserveScrollOnRefresh=this.preserveScrollOnReload);this.refreshView();this.preserveScrollOnRefresh=preserveScrollOnRefresh;this.lastRefreshLoadCount=store.loadCount},refreshView:function(startIndex){var blocked=this.blockRefresh||!this.rendered||this.up('[collapsed],[isCollapsingOrExpanding],[hidden]'),bufferedRenderer=this.bufferedRenderer;blocked?this.refreshNeeded=
!0:bufferedRenderer?bufferedRenderer.refreshView(startIndex):this.refresh()},findItemByChild:function(node){return Ext.fly(node).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(e){return e.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){for(var nodes=[],records=this.getSelectionModel().getSelection(),ln=records.length,i=0;i<ln;i++)nodes.push(this.getNode(records[i]));return nodes},getRecords:function(nodes){for(var records=[],i=0,
len=nodes.length,data=this.dataSource.data;i<len;i++)records[records.length]=data.getByKey(nodes[i].getAttribute('data-recordId'));return records},getRecord:function(node){return this.dataSource.getByInternalId(Ext.getDom(node).getAttribute('data-recordId'))},isSelected:function(node){node=this.getRecord(node);return this.getSelectionModel().isSelected(node)},select:function(records,keepExisting,suppressEvent){this.getSelectionModel().select(records,keepExisting,suppressEvent)},deselect:function(records,
suppressEvent){this.getSelectionModel().deselect(records,suppressEvent)},getNode:function(nodeInfo){if(this.rendered&&(nodeInfo||0===nodeInfo))if(Ext.isString(nodeInfo))var out=document.getElementById(nodeInfo);else nodeInfo.isModel?out=this.getNodeByRecord(nodeInfo):Ext.isNumber(nodeInfo)?out=this.all.elements[nodeInfo]:(nodeInfo.target&&nodeInfo.target.nodeType&&(nodeInfo=nodeInfo.target),out=Ext.fly(nodeInfo).findParent(this.itemSelector,this.getTargetEl()));return out||null},getNodeByRecord:function(record){record=
this.store.indexOf(record);return this.all.elements[record]||null},getNodes:function(start,end){var all=this.all;void 0!==end&&end++;return all.slice(start,end)},indexOf:function(node){return(node=this.getNode(node))||0===node?node.getAttribute('data-recordIndex')?Number(node.getAttribute('data-recordIndex')):this.all.indexOf(node):-1},doDestroy:function(){var count=this.updateSuspendCounter,tabGuardEl=this.tabGuardEl;this.all&&!this.all.destroyed&&this.all.clear();tabGuardEl&&tabGuardEl.parentNode&&
tabGuardEl.parentNode.removeChild(tabGuardEl);this.emptyEl=null;this.setItemsDraggable(!1);this.bindStore(null);this.selModelRelayer&&this.selModelRelayer.destroy();for(Ext.destroy(this.navigationModel,this.selectionModel,this.loadMask);count--;)Ext.resumeLayouts(!0);Ext.Component.prototype.doDestroy.call(this)},onItemSelect:function(record){if(record=this.getNode(record))Ext.fly(record).addCls(this.selectedItemCls),record.setAttribute('aria-selected','true');return record},onItemDeselect:function(record){if(record=
this.getNode(record))Ext.fly(record).removeCls(this.selectedItemCls),record.setAttribute('aria-selected','false');return record},getItemSelector:function(){return this.itemSelector},addItemCls:function(itemInfo,cls){(itemInfo=this.getNode(itemInfo))&&Ext.fly(itemInfo).addCls(cls)},removeItemCls:function(itemInfo,cls){(itemInfo=this.getNode(itemInfo))&&Ext.fly(itemInfo).removeCls(cls)},setStore:function(newStore){this.store!==newStore&&(this.isConfiguring?this.store=newStore:this.bindStore(newStore,
!1))},privates:{deferRefreshForLoad:function(store){return store.isLoading()},toggleChildrenTabbability:function(enableTabbing){var focusEl=this.getTargetEl();enableTabbing?focusEl.restoreTabbableState(!0):focusEl.saveTabbableState({skipSelf:!0,includeSaved:!1})},collectNodes:function(targetEl){var all=this.all,options={role:this.itemAriaRole};all.fill(Ext.fly(targetEl).query(this.getItemSelector()),all.startIndex||0);this.focusable&&(options.tabindex='-1');all.set(options)},createMask:function(mask){var maskStore=
this.getStore();!maskStore||maskStore.isEmptyStore||maskStore.loadsSynchronously()||(maskStore={target:this,msg:this.loadingText,useMsg:this.loadingUseMsg,store:maskStore},this.loadingCls&&(maskStore.msgCls=this.loadingCls),Ext.isObject(mask)&&(maskStore=Ext.apply(maskStore,mask)),this.loadMask=new Ext.LoadMask(maskStore),this.loadMask.on({scope:this,beforeshow:this.onMaskBeforeShow,hide:this.onMaskHide}));return this.loadMask},getOverflowEl:function(){return Ext.Component.prototype.getTargetEl.call(this)}}},
1,0,['component','box'],{component:!0,box:!0},0,[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Ext.view,'AbstractView'],function(){Ext.deprecate('extjs','4.0',function(){Ext.view.AbstractView.override({getSelectionCount:function(){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(){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(records,keepExisting,supressEvents){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 sm=this.getSelectionModel();return sm.select.apply(sm,arguments)},clearSelections:function(){Ext.global.console&&
Ext.global.console.warn("DataView: clearSelections will be removed, please access deselectAll through DataView's SelectionModel, ie: view.getSelectionModel().deselectAll()");return this.getSelectionModel().deselectAll()}})})});
Ext.cmd.derive('Ext.view.View',Ext.view.AbstractView,{alternateClassName:'Ext.DataView',inputTagRe:/^textarea$|^input$/i,keyEventRe:/^key/,manageLayoutScroll:!1,inheritableStatics:{EventMap:{longpress:'LongPress',mousedown:'MouseDown',mouseup:'MouseUp',click:'Click',dblclick:'DblClick',contextmenu:'ContextMenu',mouseover:'MouseOver',mouseout:'MouseOut',mouseenter:'MouseEnter',mouseleave:'MouseLeave',keydown:'KeyDown',keyup:'KeyUp',keypress:'KeyPress',focus:'Focus'},TouchEventMap:{touchstart:'mousedown',
touchend:'mouseup',tap:'click',doubletap:'dblclick'}},afterRender:function(){Ext.view.AbstractView.prototype.afterRender.call(this);this.mon(this.el,{scope:this,click:this.handleEvent,longpress:this.handleEvent,mousedown:this.handleEvent,mouseup:this.handleEvent,dblclick:this.handleEvent,contextmenu:this.handleEvent,keydown:this.handleEvent,keyup:this.handleEvent,keypress:this.handleEvent,mouseover:this.handleMouseOver,mouseout:this.handleMouseOut})},getTargetSelector:function(){return this.dataRowSelector||
this.itemSelector},handleMouseOver:function(e){var itemSelector=this.getTargetSelector();itemSelector=e.getTarget(itemSelector);this.destroyed||(itemSelector?this.mouseOverItem!==itemSelector&&this.el.contains(itemSelector)&&(this.mouseOverItem=e.item=itemSelector,e.newType='mouseenter',this.handleEvent(e)):this.handleEvent(e))},handleMouseOut:function(e){var itemSelector=this.getTargetSelector(),item=e.getTarget(itemSelector);itemSelector=e.getRelatedTarget(itemSelector);var sourceView;item===itemSelector&&
(null!==item||null!==itemSelector)||this.destroyed||(item&&(sourceView=this.self.getBoundView(item))?(e.item=item,e.newType='mouseleave',sourceView.handleEvent(e),sourceView.mouseOverItem=null):this.handleEvent(e))},handleEvent:function(e){var isKeyEvent=this.keyEventRe.test(e.type);e.isInputFieldEvent=Ext.fly(e.target).isInputField();e.view=this;e.item=e.getTarget(this.itemSelector);e.item&&(e.record=this.getRecord(e.item));!1===this.processUIEvent(e)||this.destroyed||this.processSpecialEvent(e);
isKeyEvent&&!e.isInputFieldEvent&&(e.getKey()===e.SPACE||e.isNavKeyPress(!0))&&e.preventDefault();e.view=null},processItemEvent:Ext.emptyFn,processContainerEvent:Ext.emptyFn,processSpecialEvent:Ext.emptyFn,processUIEvent:function(e){if(Ext.getBody().isAncestor(e.target)){var item=e.item,self=this.self,map=self.EventMap,touchMap=self.TouchEventMap;self=e.record;var type=e.type,newType=type;e.newType&&(newType=e.newType);if(item){newType=touchMap[newType]||newType;touchMap=e.recordIndex=this.indexInStore?
this.indexInStore(self):this.indexOf(item);if(!self||!1===this.processItemEvent(self,item,touchMap,e)||!1===this['onBeforeItem'+map[newType]](self,item,touchMap,e)||!1===this.fireEvent('beforeitem'+newType,this,self,item,touchMap,e)||!1===this['onItem'+map[newType]](self,item,touchMap,e))return!1;this.fireEvent('item'+newType,this,self,item,touchMap,e)}else{type=touchMap[type]||type;if(!1===this.processContainerEvent(e)||!1===this['onBeforeContainer'+map[type]](e)||!1===this.fireEvent('beforecontainer'+
type,this,e)||!1===this['onContainer'+map[type]](e))return!1;this.fireEvent('container'+type,this,e)}return!0}},onItemMouseEnter:function(record,item,index,e){this.trackOver&&this.highlightItem(item)},onItemMouseLeave:function(record,item,index,e){this.trackOver&&this.clearHighlight()},onItemMouseDown:Ext.emptyFn,onItemLongPress:Ext.emptyFn,onItemMouseUp:Ext.emptyFn,onItemFocus:Ext.emptyFn,onItemClick:Ext.emptyFn,onItemDblClick:Ext.emptyFn,onItemContextMenu:Ext.emptyFn,onItemKeyDown:Ext.emptyFn,onItemKeyUp:Ext.emptyFn,
onItemKeyPress:Ext.emptyFn,onBeforeItemLongPress: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,onBeforeItemKeyUp:Ext.emptyFn,onBeforeItemKeyPress:Ext.emptyFn,onContainerMouseDown:Ext.emptyFn,onContainerLongPress:Ext.emptyFn,onContainerMouseUp:Ext.emptyFn,
onContainerMouseOver:Ext.emptyFn,onContainerMouseOut:Ext.emptyFn,onContainerClick:Ext.emptyFn,onContainerDblClick:Ext.emptyFn,onContainerContextMenu:Ext.emptyFn,onContainerKeyDown:Ext.emptyFn,onContainerKeyUp:Ext.emptyFn,onContainerKeyPress:Ext.emptyFn,onBeforeContainerMouseDown:Ext.emptyFn,onBeforeContainerLongPress:Ext.emptyFn,onBeforeContainerMouseUp:Ext.emptyFn,onBeforeContainerMouseOver:Ext.emptyFn,onBeforeContainerMouseOut:Ext.emptyFn,onBeforeContainerClick:Ext.emptyFn,onBeforeContainerDblClick:Ext.emptyFn,
onBeforeContainerContextMenu:Ext.emptyFn,onBeforeContainerKeyDown:Ext.emptyFn,onBeforeContainerKeyUp:Ext.emptyFn,onBeforeContainerKeyPress:Ext.emptyFn,setHighlightedItem:function(item){var highlighted=this.highlightedItem,overItemCls=this.overItemCls;highlighted!==item&&(highlighted&&(Ext.fly(highlighted).removeCls(overItemCls),Ext.isIE8&&(this.repaintBorder(highlighted),this.repaintBorder(highlighted.nextSibling)),this.hasListeners.unhighlightitem&&this.fireEvent('unhighlightitem',this,highlighted)),
this.highlightedItem=item)&&(Ext.fly(item).addCls(this.overItemCls),Ext.isIE8&&this.repaintBorder(item.nextSibling),this.hasListeners.highlightitem&&this.fireEvent('highlightitem',this,item))},highlightItem:function(item){this.setHighlightedItem(item)},clearHighlight:function(){this.setHighlightedItem(void 0)},handleUpdate:function(store,record){var highlighted;if(this.viewReady){var node=this.getNode(record);var newNode=Ext.view.AbstractView.prototype.handleUpdate.apply(this,arguments);(highlighted=
this.highlightedItem)&&highlighted===node&&(delete this.highlightedItem,newNode&&this.highlightItem(newNode))}},refresh:function(){this.clearHighlight();Ext.view.AbstractView.prototype.refresh.apply(this,arguments)},focusNode:function(rec){rec=Ext.fly(this.getNode(rec));var el=this.el,adjustmentY=0,adjustmentX=0,elRegion=el.getRegion();elRegion.bottom=elRegion.top+el.dom.clientHeight;elRegion.right=elRegion.left+el.dom.clientWidth;rec&&(el=rec.getRegion(),el.top<elRegion.top?adjustmentY=el.top-elRegion.top:
el.bottom>elRegion.bottom&&(adjustmentY=el.bottom-elRegion.bottom),el.left<elRegion.left?adjustmentX=el.left-elRegion.left:el.right>elRegion.right&&(adjustmentX=el.right-elRegion.right),(adjustmentX||adjustmentY)&&this.scrollBy(adjustmentX,adjustmentY,!1),rec.set({tabIndex:-1}),rec.focus())},privates:{repaintBorder:function(rowIdx){if(rowIdx=this.getNode(rowIdx))rowIdx.className=rowIdx.className}}},0,['dataview'],['component','box','dataview'],{component:!0,box:!0,dataview:!0},['widget.dataview'],
0,[Ext.view,'View',Ext,'DataView'],0);
Ext.cmd.derive('Ext.view.BoundListKeyNav',Ext.view.NavigationModel,{navigateOnSpace:!0,initKeyNav:function(view){var field=view.pickerField;this.keyNav||(Ext.view.NavigationModel.prototype.initKeyNav.call(this,view),this.keyNav.map.addBinding({key:Ext.event.Event.ESC,fn:this.onKeyEsc,scope:this}));if(field)if(field.rendered)this.fieldKeyNav=new Ext.util.KeyNav({disabled:!0,target:field.inputEl,forceKeyDown:!0,up:this.onKeyUp,down:this.onKeyDown,right:this.onKeyRight,left:this.onKeyLeft,pageDown:this.onKeyPageDown,
pageUp:this.onKeyPageUp,home:this.onKeyHome,end:this.onKeyEnd,tab:this.onKeyTab,space:this.onKeySpace,enter:this.onKeyEnter,A:{ctrl:!0,handler:this.onSelectAllKeyPress},priority:1001,scope:this});else field.on('render',Ext.Function.bind(this.initKeyNav,this,[view],0),this,{single:!0})},processViewEvent:function(view,record,node,index,event){if(event.within(view.listWrap))return event;if(event.getKey()===event.ESC)return Ext.fly(event.target).isInputField()&&(event.target=event.target.parentNode),
event},enable:function(){this.fieldKeyNav.enable();Ext.view.NavigationModel.prototype.enable.call(this)},disable:function(){this.fieldKeyNav.disable();Ext.view.NavigationModel.prototype.disable.call(this)},onItemMouseDown:function(view,record,item,index,event){Ext.view.NavigationModel.prototype.onItemMouseDown.call(this,view,record,item,index,event);'mouse'===event.pointerType&&event.preventDefault()},onKeyUp:function(e){var boundList=this.view,allItems=boundList.all,oldItem=boundList.highlightedItem;
boundList=oldItem?boundList.indexOf(oldItem):-1;allItems=0<boundList?boundList-1:allItems.getCount()-1;this.setPosition(allItems);e.preventDefault()},onKeyDown:function(e){var boundList=this.view,allItems=boundList.all,oldItem=boundList.highlightedItem;boundList=oldItem?boundList.indexOf(oldItem):-1;allItems=boundList<allItems.getCount()-1?boundList+1:0;this.setPosition(allItems);e.preventDefault()},onKeyLeft:Ext.returnTrue,onKeyRight:Ext.returnTrue,onKeyTab:function(e){var view=this.view,field=view.pickerField;
view.isVisible()&&(field.selectOnTab&&this.selectHighlighted(e),field.collapse&&field.collapse());return!0},onKeyEnter:function(e){var view=this.view,selModel=view.getSelectionModel();view=view.pickerField;var count=selModel.getCount();e.stopEvent();this.selectHighlighted(e);!view.multiSelect&&count===selModel.getCount()&&view.collapse&&view.collapse();view.fireEvent('specialkey',view,e,{fromBoundList:!0});return!1},onKeySpace:function(){this.navigateOnSpace&&Ext.view.NavigationModel.prototype.onKeySpace.apply(this,
arguments);return!0},onKeyEsc:function(){this.view.pickerField&&this.view.pickerField.collapse()},focusItem:function(item){var boundList=this.view;'number'===typeof item&&(item=boundList.all.item(item));item&&(item=item.dom,boundList.highlightItem(item),boundList.getScrollable().scrollIntoView(item,!1))},selectHighlighted:function(e){var boundList=this.view,selModel=boundList.getSelectionModel(),highlightedRec,highlightedPosition=this.recordIndex;boundList.all.getCount()&&(!(highlightedRec=this.getRecord())||
e.getKey()!==e.ENTER&&selModel.isSelected(highlightedRec)||(selModel.selectWithEvent(highlightedRec,e),boundList.store.data.contains(highlightedRec)||this.setPosition(Math.min(highlightedPosition,boundList.store.getCount()-1))))},destroy:function(){this.fieldKeyNav=Ext.destroy(this.fieldKeyNav);Ext.view.NavigationModel.prototype.destroy.call(this)}},0,0,0,0,['view.navigation.boundlist'],0,[Ext.view,'BoundListKeyNav'],0);
Ext.define('Common.overrides.view.BoundListKeyNav',{override:'Ext.view.BoundListKeyNav',focusItem:function(item){var boundList=this.view;'number'===typeof item&&(item=boundList.all.item(item));if(item){var scrollable=boundList.getScrollable();item=item.dom;boundList.highlightItem(item);Ext.isFunction(scrollable.scrollIntoView)&&boundList.getScrollable().scrollIntoView(item,!1)}}});
Ext.cmd.derive('Ext.layout.component.BoundList',Ext.layout.component.Auto,{type:'component',beginLayout:function(ownerContext){var owner=this.owner,toolbar=owner.pagingToolbar;this.scrollPos=owner.listWrap.getScroll();Ext.layout.component.Auto.prototype.beginLayout.apply(this,arguments);owner.floating&&(ownerContext.savedXY=owner.getXY(),owner.setXY([0,-9999]));toolbar&&(ownerContext.toolbarContext=ownerContext.context.getCmp(toolbar));ownerContext.listContext=ownerContext.getEl('listWrap')},beginLayoutCycle:function(ownerContext){var owner=
this.owner;Ext.layout.component.Auto.prototype.beginLayoutCycle.apply(this,arguments);ownerContext.heightModel.auto&&(owner.el.setHeight('auto'),owner.listWrap.setHeight('auto'))},getLayoutItems:function(){var toolbar=this.owner.pagingToolbar;return toolbar?[toolbar]:[]},isValidParent:function(){return!0},finishedLayout:function(ownerContext){var xy=ownerContext.savedXY,listWrap=this.owner.listWrap,scrollPos=this.scrollPos;Ext.layout.component.Auto.prototype.finishedLayout.apply(this,arguments);xy&&
this.owner.setXY(xy);listWrap.setScrollLeft(scrollPos.left);listWrap.setScrollTop(scrollPos.top)},measureContentWidth:function(ownerContext){return this.owner.listWrap.getWidth()},measureContentHeight:function(ownerContext){return this.owner.listWrap.getHeight()},publishInnerHeight:function(ownerContext,height){var toolbar=ownerContext.toolbarContext,toolbarHeight=0;toolbar&&(toolbarHeight=toolbar.getProp('height'));void 0===toolbarHeight?this.done=!1:ownerContext.listContext.setHeight(height-ownerContext.getFrameInfo().height-
toolbarHeight)},calculateOwnerHeightFromContentHeight:function(ownerContext){var height=Ext.layout.component.Auto.prototype.calculateOwnerHeightFromContentHeight.apply(this,arguments),toolbar=ownerContext.toolbarContext;toolbar&&(height+=toolbar.getProp('height'));return height}},0,0,0,0,['layout.boundlist'],0,[Ext.layout.component,'BoundList'],0);
Ext.cmd.derive('Ext.toolbar.Item',Ext.Component,{alternateClassName:'Ext.Toolbar.Item',enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn},0,['tbitem'],['component','box','tbitem'],{component:!0,box:!0,tbitem:!0},['widget.tbitem'],0,[Ext.toolbar,'Item',Ext.Toolbar,'Item'],0);
Ext.cmd.derive('Ext.toolbar.TextItem',Ext.toolbar.Item,{alternateClassName:'Ext.Toolbar.TextItem',text:'',baseCls:'x-toolbar-text',ariaRole:null,beforeRender:function(){var text=this.text;Ext.toolbar.Item.prototype.beforeRender.call(this);text&&(this.html=text)},setText:function(text){this.update(text)}},0,['tbtext'],['component','box','tbitem','tbtext'],{component:!0,box:!0,tbitem:!0,tbtext:!0},['widget.tbtext'],0,[Ext.toolbar,'TextItem',Ext.Toolbar,'TextItem'],0);
Ext.cmd.derive('Ext.form.trigger.Spinner',Ext.form.trigger.Trigger,{cls:'x-form-trigger-spinner',spinnerCls:'x-form-spinner',spinnerUpCls:'x-form-spinner-up',spinnerDownCls:'x-form-spinner-down',focusCls:'x-form-spinner-focus',overCls:'x-form-spinner-over',clickCls:'x-form-spinner-click',focusFieldOnClick:!0,vertical:!0,bodyTpl:'\x3ctpl if\x3d"vertical"\x3e\x3cdiv class\x3d"{spinnerCls} {spinnerCls}-{ui} {spinnerUpCls} {spinnerUpCls}-{ui} {childElCls} {upDisabledCls}"\x3e\x3c/div\x3e\x3c/tpl\x3e\x3cdiv class\x3d"{spinnerCls} {spinnerCls}-{ui} {spinnerDownCls} {spinnerDownCls}-{ui} {childElCls} {downDisabledCls}"\x3e\x3c/div\x3e\x3ctpl if\x3d"!vertical"\x3e\x3cdiv class\x3d"{spinnerCls} {spinnerCls}-{ui} {spinnerUpCls} {spinnerUpCls}-{ui} {childElCls} {upDisabledCls}"\x3e\x3c/div\x3e\x3c/tpl\x3e',
destroy:function(){this.spinnerEl&&(this.spinnerEl.destroy(),this.spinnerEl=this.upEl=this.downEl=null);Ext.form.trigger.Trigger.prototype.destroy.call(this)},getBodyRenderData:function(){return{vertical:this.vertical,upDisabledCls:this.upEnabled?'':this.spinnerUpCls+'-disabled',downDisabledCls:this.downEnabled?'':this.spinnerDownCls+'-disabled',spinnerCls:this.spinnerCls,spinnerUpCls:this.spinnerUpCls,spinnerDownCls:this.spinnerDownCls}},getStateEl:function(){return this.spinnerEl},onClick:function(){var args=
arguments;args=this.clickRepeater?args[1]:args[0];var field=this.field;field.readOnly||field.disabled||(this.upEl.contains(args.target)?Ext.callback(this.upHandler,this.scope,[field,this,args],0,field):this.downEl.contains(args.target)&&Ext.callback(this.downHandler,this.scope,[field,this,args],0,field));field.inputEl.focus()},onFieldRender:function(){var vertical=this.vertical;Ext.form.trigger.Trigger.prototype.onFieldRender.call(this);var elements=(this.spinnerEl=this.el.select('.'+this.spinnerCls,
!0)).elements;this.upEl=vertical?elements[0]:elements[1];this.downEl=vertical?elements[1]:elements[0]},setUpEnabled:function(enabled){this.upEl[enabled?'removeCls':'addCls'](this.spinnerUpCls+'-disabled')},setDownEnabled:function(enabled){this.downEl[enabled?'removeCls':'addCls'](this.spinnerDownCls+'-disabled')}},0,0,0,0,['trigger.spinner'],0,[Ext.form.trigger,'Spinner'],0);
Ext.cmd.derive('Ext.form.field.Spinner',Ext.form.field.Text,{alternateClassName:'Ext.form.Spinner',config:{triggers:{spinner:{type:'spinner',upHandler:'onSpinnerUpClick',downHandler:'onSpinnerDownClick',endHandler:'onSpinEnd',scope:'this'}}},spinUpEnabled:!0,spinDownEnabled:!0,keyNavEnabled:!0,mouseWheelEnabled:!0,repeatTriggerClick:!0,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,ariaRole:'spinbutton',applyTriggers:function(triggers){var spinnerTrigger=triggers.spinner;spinnerTrigger.upEnabled=this.spinUpEnabled;
spinnerTrigger.downEnabled=this.spinDownEnabled;return Ext.form.field.Text.prototype.applyTriggers.call(this,triggers)},onRender:function(){var spinnerTrigger=this.getTrigger('spinner');(arguments.callee.$previous||Ext.form.field.Text.prototype.onRender).call(this);this.keyNavEnabled&&(this.spinnerKeyNav=new Ext.util.KeyNav(this.inputEl,{scope:this,up:this.spinUp,down:this.spinDown}),this.inputEl.on({keyup:this.onInputElKeyUp,scope:this}));this.mouseWheelEnabled&&this.mon(this.bodyEl,'mousewheel',
this.onMouseWheel,this);this.spinUpEl=spinnerTrigger.upEl;this.spinDownEl=spinnerTrigger.downEl},onSpinnerUpClick:function(){this.spinUp()},onSpinnerDownClick:function(){this.spinDown()},spinUp:function(){this.spinUpEnabled&&!this.disabled&&(this.fireEvent('spin',this,'up'),this.fireEvent('spinup',this),this.onSpinUp())},spinDown:function(){this.spinDownEnabled&&!this.disabled&&(this.fireEvent('spin',this,'down'),this.fireEvent('spindown',this),this.onSpinDown())},setSpinUpEnabled:function(enabled){var wasEnabled=
this.spinUpEnabled;this.spinUpEnabled=enabled;wasEnabled!==enabled&&this.rendered&&this.getTrigger('spinner').setUpEnabled(enabled)},setSpinDownEnabled:function(enabled){var wasEnabled=this.spinDownEnabled;this.spinDownEnabled=enabled;wasEnabled!==enabled&&this.rendered&&this.getTrigger('spinner').setDownEnabled(enabled)},onMouseWheel:function(e){if(this.hasFocus){var delta=e.getWheelDelta();0<delta?this.spinUp():0>delta&&this.spinDown();e.stopEvent();this.onSpinEnd()}},onInputElKeyUp:function(e){if(e.keyCode===
e.UP||e.keyCode===e.DOWN)this.onSpinEnd()},doDestroy:function(){Ext.destroyMembers(this,'spinnerKeyNav');Ext.form.field.Text.prototype.doDestroy.call(this)}},0,['spinnerfield'],['component','box','field','textfield','spinnerfield'],{component:!0,box:!0,field:!0,textfield:!0,spinnerfield:!0},['widget.spinnerfield'],0,[Ext.form.field,'Spinner',Ext.form,'Spinner'],function(Spinner){Spinner.prototype.onSpinEnd=Ext.Function.createBuffered(function(){this.fireEvent('spinend',this)},100)});
Ext.cmd.derive('Ext.form.field.Number',Ext.form.field.Spinner,{alternateClassName:['Ext.form.NumberField','Ext.form.Number'],allowExponential:!0,allowDecimals:!0,decimalSeparator:null,submitLocaleSeparator:!0,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:!1,
initComponent:function(){null===this.decimalSeparator&&(this.decimalSeparator=Ext.util.Format.decimalSeparator);Ext.form.field.Spinner.prototype.initComponent.call(this);this.setMinValue(this.minValue);this.setMaxValue(this.maxValue)},getSubTplData:function(fieldData){var min=this.minValue,max=this.maxValue,inputElAttr;fieldData=Ext.form.field.Spinner.prototype.getSubTplData.call(this,fieldData);if(inputElAttr=fieldData.inputElAriaAttributes){min>Number.NEGATIVE_INFINITY&&(inputElAttr['aria-valuemin']=
min);max<Number.MAX_VALUE&&(inputElAttr['aria-valuemax']=max);var value=this.getValue();null!=value&&value>=min&&value<=max&&(inputElAttr['aria-valuenow']=value)}return fieldData},setValue:function(value){var bind;return this.hasFocus&&(bind=(bind=this.getBind())&&bind.value)&&bind.syncing&&value===this.value?this:Ext.form.field.Spinner.prototype.setValue.call(this,value)},getErrors:function(value){value=0<arguments.length?value:this.processRawValue(this.getRawValue());var errors=Ext.form.field.Spinner.prototype.getErrors.call(this,
value),format=Ext.String.format;if(1>value.length)return errors;value=String(value).replace(this.decimalSeparator,'.');isNaN(value)&&errors.push(format(this.nanText,value));var num=this.parseValue(value);0===this.minValue&&0>num?errors.push(this.negativeText):num<this.minValue&&errors.push(format(this.minText,this.minValue));num>this.maxValue&&errors.push(format(this.maxText,this.maxValue));return errors},rawToValue:function(rawValue){var value=this.fixPrecision(this.parseValue(rawValue));null===
value&&(value=rawValue||null);return value},valueToRaw:function(value){var decimalSeparator=this.decimalSeparator;value=this.parseValue(value);value=this.fixPrecision(value);value=Ext.isNumber(value)?value:parseFloat(String(value).replace(decimalSeparator,'.'));return value=isNaN(value)?'':String(value).replace('.',decimalSeparator)},getSubmitValue:function(){var value=Ext.form.field.Spinner.prototype.getSubmitValue.call(this);this.submitLocaleSeparator||(value=value.replace(this.decimalSeparator,
'.'));return value},onChange:function(newValue){var ariaDom=this.ariaEl.dom;this.toggleSpinners();Ext.form.field.Spinner.prototype.onChange.apply(this,arguments);ariaDom&&(Ext.isNumber(newValue)&&isFinite(newValue)?ariaDom.setAttribute('aria-valuenow',newValue):ariaDom.removeAttribute('aria-valuenow'))},toggleSpinners:function(){var value=this.getValue(),valueIsNull=null===value;if(this.spinUpEnabled||this.spinUpDisabledByToggle){var enabled=valueIsNull||value<this.maxValue;this.setSpinUpEnabled(enabled,
!0)}if(this.spinDownEnabled||this.spinDownDisabledByToggle)enabled=valueIsNull||value>this.minValue,this.setSpinDownEnabled(enabled,!0)},setMinValue:function(value){var ariaDom=this.ariaEl.dom;this.minValue=value=Ext.Number.from(value,Number.NEGATIVE_INFINITY);this.toggleSpinners();ariaDom&&(value>Number.NEGATIVE_INFINITY?ariaDom.setAttribute('aria-valuemin',value):ariaDom.removeAttribute('aria-valuemin'));!0!==this.disableKeyFilter&&(ariaDom=this.baseChars+'',this.allowExponential?ariaDom+=this.decimalSeparator+
'e+-':(this.allowDecimals&&(ariaDom+=this.decimalSeparator),0>this.minValue&&(ariaDom+='-')),ariaDom=Ext.String.escapeRegex(ariaDom),this.maskRe=new RegExp('['+ariaDom+']'),this.autoStripChars&&(this.stripCharsRe=new RegExp('[^'+ariaDom+']','gi')))},setMaxValue:function(value){var ariaDom=this.ariaEl.dom;this.maxValue=value=Ext.Number.from(value,Number.MAX_VALUE);ariaDom&&(value<Number.MAX_VALUE?ariaDom.setAttribute('aria-valuemax',value):ariaDom.removeAttribute('aria-valuemax'));this.toggleSpinners()},
parseValue:function(value){value=parseFloat(String(value).replace(this.decimalSeparator,'.'));return isNaN(value)?null:value},fixPrecision:function(value){var nan=isNaN(value),precision=this.decimalPrecision;if(nan||!value)return nan?'':value;if(!this.allowDecimals||0>=precision)precision=0;return parseFloat(Ext.Number.toFixed(parseFloat(value),precision))},onBlur:function(e){var v=this.rawToValue(this.getRawValue());Ext.isEmpty(v)||this.setValue(v);Ext.form.field.Spinner.prototype.onBlur.call(this,
e)},setSpinUpEnabled:function(enabled,internal){Ext.form.field.Spinner.prototype.setSpinUpEnabled.apply(this,arguments);internal?this.spinUpDisabledByToggle=!enabled:delete this.spinUpDisabledByToggle},onSpinUp:function(){this.readOnly||this.setSpinValue(Ext.Number.constrain(this.getValue()+this.step,this.minValue,this.maxValue))},setSpinDownEnabled:function(enabled,internal){Ext.form.field.Spinner.prototype.setSpinDownEnabled.apply(this,arguments);internal?this.spinDownDisabledByToggle=!enabled:
delete this.spinDownDisabledByToggle},onSpinDown:function(){this.readOnly||this.setSpinValue(Ext.Number.constrain(this.getValue()-this.step,this.minValue,this.maxValue))},setSpinValue:function(value){this.enforceMaxLength&&this.fixPrecision(value).toString().length>this.maxLength||this.setValue(value)}},0,['numberfield'],'component box field textfield spinnerfield numberfield'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,spinnerfield:!0,numberfield:!0},['widget.numberfield'],0,[Ext.form.field,
'Number',Ext.form,'NumberField',Ext.form,'Number'],0);
Ext.cmd.derive('Ext.toolbar.Paging',Ext.toolbar.Toolbar,{alternateClassName:'Ext.PagingToolbar',displayInfo:!1,prependButtons:!1,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,emptyPageData:{total:0,currentPage:0,pageCount:0,toRecord:0,fromRecord:0},defaultBindProperty:'store',getPagingItems:function(){var inputListeners=
{scope:this,blur:this.onPagingBlur};inputListeners[Ext.supports.SpecialKeyDownRepeat?'keydown':'keypress']=this.onPagingKeyDown;return[{itemId:'first',tooltip:this.firstText,overflowText:this.firstText,iconCls:'x-tbar-page-first',disabled:!0,handler:this.moveFirst,scope:this},{itemId:'prev',tooltip:this.prevText,overflowText:this.prevText,iconCls:'x-tbar-page-prev',disabled:!0,handler:this.movePrevious,scope:this},'-',this.beforePageText,{xtype:'numberfield',itemId:'inputItem',name:'inputItem',cls:'x-tbar-page-number',
allowDecimals:!1,minValue:1,hideTrigger:!0,enableKeyEvents:!0,keyNavEnabled:!1,selectOnFocus:!0,submitValue:!1,isFormField:!1,width:this.inputItemWidth,margin:'-1 2 3 2',listeners:inputListeners},{xtype:'tbtext',itemId:'afterTextItem',html:Ext.String.format(this.afterPageText,1)},'-',{itemId:'next',tooltip:this.nextText,overflowText:this.nextText,iconCls:'x-tbar-page-next',disabled:!0,handler:this.moveNext,scope:this},{itemId:'last',tooltip:this.lastText,overflowText:this.lastText,iconCls:'x-tbar-page-last',
disabled:!0,handler:this.moveLast,scope:this},'-',{itemId:'refresh',tooltip:this.refreshText,overflowText:this.refreshText,iconCls:'x-tbar-loading',disabled:this.store.isLoading(),handler:this.doRefresh,scope:this}]},initComponent:function(){var userItems=this.items||this.buttons||[];this.bindStore(this.store||'ext-empty-store',!0);var pagingItems=this.getPagingItems();this.items=this.prependButtons?userItems.concat(pagingItems):pagingItems.concat(userItems);delete this.buttons;this.displayInfo&&
(this.items.push('-\x3e'),this.items.push({xtype:'tbtext',itemId:'displayItem'}));Ext.toolbar.Toolbar.prototype.initComponent.call(this)},beforeRender:function(){Ext.toolbar.Toolbar.prototype.beforeRender.apply(this,arguments);this.updateBarInfo()},onAdded:function(owner){var oldStore=this.store,autoStore=this._autoStore;void 0===autoStore&&(this._autoStore=autoStore=!(oldStore&&!oldStore.isEmptyStore));if(autoStore){if(oldStore=this._storeChangeListener)oldStore.destroy(),oldStore=null;(autoStore=
owner&&owner.store)&&(oldStore=owner.on({destroyable:!0,scope:this,storechange:'onOwnerStoreChange'}));this._storeChangeListener=oldStore;this.onOwnerStoreChange(owner,autoStore)}Ext.toolbar.Toolbar.prototype.onAdded.apply(this,arguments)},onOwnerStoreChange:function(owner,store){this.setStore(store||Ext.getStore('ext-empty-store'))},updateBarInfo:function(){this.store.isLoading()||(this.calledInternal=!0,this.onLoad(),this.calledInternal=!1)},updateInfo:function(){var displayItem=this.child('#displayItem'),
store=this.store,pageData=this.getPageData();displayItem&&(store=store.getCount(),pageData=0===store?this.emptyMsg:Ext.String.format(this.displayMsg,pageData.fromRecord,pageData.toRecord,pageData.total),displayItem.setText(pageData))},onLoad:function(){var currPage,isEmpty,item;if(isEmpty=0===this.store.getCount()){var pageCount=currPage=0;var afterText=Ext.String.format(this.afterPageText,0)}else{var pageData=this.getPageData();currPage=pageData.currentPage;pageCount=pageData.pageCount;if(currPage>
pageCount){0<pageCount?this.store.loadPage(pageCount):this.getInputItem().reset();return}afterText=Ext.String.format(this.afterPageText,isNaN(pageCount)?1:pageCount)}Ext.suspendLayouts();(item=this.child('#afterTextItem'))&&item.update(afterText);(item=this.getInputItem())&&item.setDisabled(isEmpty).setValue(currPage);this.setChildDisabled('#first',1===currPage||isEmpty);this.setChildDisabled('#prev',1===currPage||isEmpty);this.setChildDisabled('#next',currPage===pageCount||isEmpty);this.setChildDisabled('#last',
currPage===pageCount||isEmpty);this.setChildDisabled('#refresh',!1);this.updateInfo();Ext.resumeLayouts(!0);this.calledInternal||this.fireEvent('change',this,pageData||this.emptyPageData)},setChildDisabled:function(selector,disabled){(selector=this.child(selector))&&selector.setDisabled(disabled)},getPageData:function(){var store=this.store,totalCount=store.getTotalCount(),pageCount=Math.ceil(totalCount/store.pageSize),toRecord=Math.min(store.currentPage*store.pageSize,totalCount);return{total:totalCount,
currentPage:store.currentPage,pageCount:Ext.Number.isFinite(pageCount)?pageCount:1,fromRecord:(store.currentPage-1)*store.pageSize+1,toRecord:toRecord||totalCount}},onLoadError:function(){this.setChildDisabled('#refresh',!1)},getInputItem:function(){return this.child('#inputItem')},readPageFromInput:function(pageData){var inputItem=this.getInputItem(),pageNum=!1;if(inputItem){var v=inputItem.getValue();pageNum=parseInt(v,10);if(!v||isNaN(pageNum))return inputItem.setValue(pageData.currentPage),!1}return pageNum},
onPagingBlur:function(e){e=this.getInputItem();if(e){var curPage=this.getPageData().currentPage;e.setValue(curPage)}},onPagingKeyDown:function(field,e){this.processKeyEvent(field,e)},processKeyEvent:function(field,e){var key=e.getKey(),pageData=this.getPageData(),increment=e.shiftKey?10:1;if(key===e.RETURN){e.stopEvent();var pageNum=this.readPageFromInput(pageData);!1!==pageNum&&(pageNum=Math.min(Math.max(1,pageNum),pageData.pageCount),pageNum!==pageData.currentPage&&!1!==this.fireEvent('beforechange',
this,pageNum)&&this.store.loadPage(pageNum))}else if(key===e.HOME||key===e.END)e.stopEvent(),pageNum=key===e.HOME?1:pageData.pageCount,field.setValue(pageNum);else if(key===e.UP||key===e.PAGE_UP||key===e.DOWN||key===e.PAGE_DOWN)if(e.stopEvent(),pageNum=this.readPageFromInput(pageData)){if(key===e.DOWN||key===e.PAGE_DOWN)increment*=-1;pageNum+=increment;1<=pageNum&&pageNum<=pageData.pageCount&&field.setValue(pageNum)}},beforeLoad:function(){this.setChildDisabled('#refresh',!0)},moveFirst:function(){return!1!==
this.fireEvent('beforechange',this,1)?(this.store.loadPage(1),!0):!1},movePrevious:function(){var store=this.store,prev=store.currentPage-1;return 0<prev&&!1!==this.fireEvent('beforechange',this,prev)?(store.previousPage(),!0):!1},moveNext:function(){var store=this.store,total=this.getPageData().pageCount,next=store.currentPage+1;return next<=total&&!1!==this.fireEvent('beforechange',this,next)?(store.nextPage(),!0):!1},moveLast:function(){var last=this.getPageData().pageCount;return!1!==this.fireEvent('beforechange',
this,last)?(this.store.loadPage(last),!0):!1},doRefresh:function(){var store=this.store,current=store.currentPage;return!1!==this.fireEvent('beforechange',this,current)?(store.loadPage(current),!0):!1},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},onBindStore:function(){this.rendered&&this.updateBarInfo()},doDestroy:function(){var listener=this._storeChangeListener;listener&&(listener.destroy(),this._storeChangeListener=null);this.bindStore(null);
Ext.toolbar.Toolbar.prototype.doDestroy.call(this)}},0,['pagingtoolbar'],['component','box','container','toolbar','pagingtoolbar'],{component:!0,box:!0,container:!0,toolbar:!0,pagingtoolbar:!0},['widget.pagingtoolbar'],[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Ext.toolbar,'Paging',Ext,'PagingToolbar'],0);Ext.define('Ext.theme.neptune.toolbar.Paging',{override:'Ext.toolbar.Paging',defaultButtonUI:'plain-toolbar',inputItemWidth:40});
Ext.define('MainApp.overrides.toolbar.Paging',{override:'Ext.toolbar.Paging',beforePageText:'\x26nbsp;Page',cls:'paging-toolbar',hideRefreshBtn:!1,hidePagerForFirstPage:!0,getPagingItems:function(){var items=arguments.callee.$previous.apply(this,arguments),refreshBtn=items.pop();items.pop();var firstCmp=this.hideRefreshBtn?{type:'tbtext',html:'\x3cdiv style\x3d"width: 40px;"\x3e\x26nbsp;\x3c/div\x3e'}:refreshBtn;refreshBtn.margin=0;refreshBtn.padding=0;return[firstCmp,'-\x3e'].concat(items)},initComponent:function(){(arguments.callee.$previous||
Ext.toolbar.Toolbar.prototype.initComponent).apply(this,arguments);this.down('numberfield[name\x3dinputItem]').setMargin('-1 2 3 -6');this.hidePagerForFirstPage?this.hide():this.show();this._blurForceHandlers()},onBindStore:function(store){arguments.callee.$previous.apply(this,arguments);store&&!store.isEmptyStore&&0<store.loadCount&&this.setVisible(store.totalCount>store.getPageSize())},onLoad:function(){arguments.callee.$previous.call(this);var store=this.getStore();if(!store.isEmptyStore){var pageSize=
store.getPageSize();this.setVisible(store.totalCount>pageSize)}},_blurForceHandlers:function(){var field=this.down('numberfield[name\x3dinputItem]'),refreshBtn=this.down('[itemId\x3drefresh]'),firstBtn=this.down('[itemId\x3dfirst]'),prevBtn=this.down('[itemId\x3dprev]'),nextBtn=this.down('[itemId\x3dnext]'),lastBtn=this.down('[itemId\x3dlast]');refreshBtn.on('click',field.blur,field,{buffer:30});firstBtn.on('click',field.blur,field,{buffer:100});prevBtn.on('click',field.blur,field,{buffer:100});nextBtn.on('click',
field.blur,field,{buffer:100});lastBtn.on('click',field.blur,field,{buffer:100})},getStoreListeners:function(){var storeListeners=arguments.callee.$previous.apply(this,arguments);return Ext.apply(storeListeners,{totalcountchange:this.onLoad})}});
Ext.cmd.derive('Ext.view.BoundList',Ext.view.View,{alternateClassName:'Ext.BoundList',pageSize:0,baseCls:'x-boundlist',itemCls:'x-boundlist-item',listItemCls:'',shadow:!1,trackOver:!0,preserveScrollOnRefresh:!0,enableInitialSelection:!1,refreshSelmodelOnRefresh:!0,componentLayout:'boundlist',navigationModel:'boundlist',scrollable:!0,ariaEl:'listEl',tabIndex:-1,childEls:['listWrap','listEl'],renderTpl:['\x3cdiv id\x3d"{id}-listWrap" data-ref\x3d"listWrap"',' class\x3d"{baseCls}-list-ct ',Ext.dom.Element.unselectableCls,
'"\x3e','\x3cul id\x3d"{id}-listEl" data-ref\x3d"listEl" class\x3d"','x-','list-plain"','\x3ctpl foreach\x3d"ariaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3e','\x3c/ul\x3e','\x3c/div\x3e','{%','var pagingToolbar\x3dvalues.$comp.pagingToolbar;','if (pagingToolbar) {','Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);','}','%}',{disableFormats:!0}],focusOnToFront:!1,alignOnScroll:!1,initComponent:function(){var baseCls=this.baseCls,itemCls=this.itemCls;this.selectedItemCls=baseCls+
'-selected';this.trackOver&&(this.overItemCls=baseCls+'-item-over');this.itemSelector='.'+itemCls;this.floating&&this.addCls(baseCls+'-floating');this.tpl?this.tpl.isTemplate||(this.tpl=new Ext.XTemplate(this.tpl)):this.generateTpl();this.pageSize&&(this.pagingToolbar=this.createPagingToolbar());Ext.view.View.prototype.initComponent.call(this)},generateTpl:function(){this.tpl=new Ext.XTemplate('\x3ctpl for\x3d"."\x3e','\x3cli role\x3d"option" unselectable\x3d"on" class\x3d"'+this.itemCls+'"\x3e'+
this.getInnerTpl(this.displayField)+'\x3c/li\x3e','\x3c/tpl\x3e')},setDisplayField:function(displayField){this.displayField=displayField;this.generateTpl()},getRefOwner:function(){return this.pickerField||Ext.view.View.prototype.getRefOwner.call(this)},getRefItems:function(){var result=Ext.view.View.prototype.getRefItems.call(this),toolbar=this.pagingToolbar;toolbar&&result.push(toolbar);return result},createPagingToolbar:function(){return new Ext.toolbar.Paging({id:this.id+'-paging-toolbar',pageSize:this.pageSize,
store:this.dataSource,border:!1,ownerCt:this,ownerLayout:this.getComponentLayout()})},getNodeContainer:function(){return this.listEl},refresh:function(){var tpl=this.tpl;tpl.field=this.pickerField;tpl.store=this.store;Ext.view.View.prototype.refresh.call(this);tpl.field=tpl.store=null;this.ariaStaticRoles[this.ariaRole]||this.refreshAriaAttributes()},refreshAriaAttributes:function(){var store=this.store,selModel=this.getSelectionModel(),len;var totalCount=store.isFiltered()?store.getCount():store.getTotalCount()||
store.getCount();var nodes=this.getNodes();var multiSelect=this.pickerField&&this.pickerField.multiSelect;var i=0;for(len=nodes.length;i<len;i++){var node=nodes[i];var record=null;if(totalCount!==len){record=this.getRecord(node);var index=store.indexOf(record);node.setAttribute('aria-setsize',totalCount);node.setAttribute('aria-posinset',index)}multiSelect&&(record=record||this.getRecord(node),node.setAttribute('aria-selected',selModel.isSelected(record)))}},bindStore:function(store,initial){var toolbar=
this.pagingToolbar;Ext.view.View.prototype.bindStore.apply(this,arguments);toolbar&&toolbar.bindStore(store,initial)},getInnerTpl:function(displayField){return'{'+displayField+'}'},onShow:function(){var field=this.pickerField;Ext.view.View.prototype.onShow.call(this);field&&field.rendered&&!field.hasFocus&&field.focus()},afterComponentLayout:function(width,height,oldWidth,oldHeight){var field=this.pickerField;Ext.view.View.prototype.afterComponentLayout.call(this,width,height,oldWidth,oldHeight);
field&&field.alignPicker&&field.alignPicker()},onItemSelect:function(record){(record=Ext.view.View.prototype.onItemSelect.call(this,record))&&(this.ariaSelectable?record.setAttribute('aria-selected','true'):record.removeAttribute('aria-selected'));return record},onItemDeselect:function(record){(record=Ext.view.View.prototype.onItemDeselect.call(this,record))&&this.ariaSelectable&&(this.pickerField&&this.pickerField.multiSelect?record.setAttribute('aria-selected','false'):record.removeAttribute('aria-selected'));
return record},onItemClick:function(record){var field=this.pickerField;if(field){var valueField=field.valueField;var selected=this.getSelectionModel().getSelection();!field.multiSelect&&selected.length&&(selected=selected[0])&&field.isEqual(record.get(valueField),selected.get(valueField))&&field.collapse&&field.collapse()}},onContainerClick:function(e){var toolbar=this.pagingToolbar;if(toolbar&&toolbar.rendered&&e.within(toolbar.el))return!1;if(Ext.isIE10||Ext.isIE11)if(toolbar=this.listWrap.getClientRegion(),
!e.getPoint().isContainedBy(toolbar))return!1},doDestroy:function(){this.pagingToolbar=Ext.destroy(this.pagingToolbar);Ext.view.View.prototype.doDestroy.call(this)},privates:{getTargetEl:function(){return this.listEl},getOverflowEl:function(){return this.listWrap},finishRenderChildren:function(){var toolbar=this.pagingToolbar;Ext.view.View.prototype.finishRenderChildren.apply(this,arguments);toolbar&&toolbar.finishRender()}}},0,['boundlist'],['component','box','dataview','boundlist'],{component:!0,
box:!0,dataview:!0,boundlist:!0},['widget.boundlist'],[[Ext.mixin.Queryable.prototype.mixinId||Ext.mixin.Queryable.$className,Ext.mixin.Queryable]],[Ext.view,'BoundList',Ext,'BoundList'],0);
Ext.cmd.derive('Ext.form.field.ComboBox',Ext.form.field.Picker,{alternateClassName:'Ext.form.ComboBox',config:{filters:null,selection:null,valueNotFoundText:null,displayTpl:null,delimiter:', ',displayField:'text'},publishes:['selection'],twoWayBindable:['selection'],triggerCls:'x-form-arrow-trigger',hiddenName:'',collapseOnSelect:!1,hiddenDataCls:'x-hidden-display x-form-data-hidden',ariaRole:'combobox',autoDestroyBoundStore:!0,childEls:{hiddenDataEl:!0},filtered:!1,afterRender:function(){Ext.form.field.Picker.prototype.afterRender.apply(this,
arguments);this.setHiddenValue(this.value)},multiSelect:!1,triggerAction:'all',allQuery:'',queryParam:'query',queryMode:'remote',queryCaching:!0,autoLoadOnValue:!1,pageSize:0,anyMatch:!1,caseSensitive:!1,autoSelect:!0,autoSelectLast:!0,typeAhead:!1,typeAheadDelay:250,selectOnTab:!0,forceSelection:!1,growToLongestValue:!0,clearFilterOnBlur:!0,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:'sides'},transformInPlace:!0,clearValueOnEmpty:!0,newlineRe:/\r?\n/g,getGrowWidth:function(){var value=
this.inputEl.dom.value,currentLongestLength,i;if(this.growToLongestValue){var field=this.displayField;var store=this.store;var dataLn=store.data.length;for(i=currentLongestLength=0;i<dataLn;i++){var item=store.getAt(i).data[field];var itemLn=item.length;itemLn>currentLongestLength&&(currentLongestLength=itemLn,value=item)}}return value},initComponent:function(){var isDefined=Ext.isDefined,store=this.store,transform=this.transform,transformSelect;'pinList'in this&&(this.collapseOnSelect=!this.pinList);
transform&&(transformSelect=Ext.getDom(transform))&&(this.store||(store=Ext.Array.map(Ext.Array.from(transformSelect.options),function(option){return[option.value,option.text]})),this.name||(this.name=transformSelect.name),'value'in this||(this.value=transformSelect.value));this.displayTpl||this.setDisplayTpl(!1);this.bindStore(store||'ext-empty-store',!0,!0);store='local'===this.queryMode;isDefined(this.queryDelay)||(this.queryDelay=store?10:500);isDefined(this.minChars)||(this.minChars=store?0:
4);Ext.form.field.Picker.prototype.initComponent.call(this);this.doQueryTask=new Ext.util.DelayedTask(this.doRawQuery,this);transformSelect&&(this.transformInPlace&&(this.render(transformSelect.parentNode,transformSelect),delete this.renderTo),Ext.removeNode(transformSelect))},initEvents:function(){Ext.form.field.Picker.prototype.initEvents.call(this);this.altArrowKeyNav=new Ext.util.KeyNav({target:this.inputEl,forceKeyDown:!0,priority:1002,scope:this,down:{alt:!0,handler:this.onAltDownArrow},up:{alt:!0,
handler:this.onAltUpArrow}})},getSubTplData:function(fieldData){var id=this.id,ariaAttr;fieldData=Ext.form.field.Picker.prototype.getSubTplData.call(this,fieldData);!this.ariaStaticRoles[this.ariaRole]&&(ariaAttr=fieldData.ariaElAttributes)&&(ariaAttr['aria-owns']=id+'-inputEl '+id+'-picker-listEl',ariaAttr['aria-autocomplete']='list');return fieldData},getSubTplMarkup:function(fieldData){var hiddenDataElMarkup='',markup=Ext.form.field.Picker.prototype.getSubTplMarkup.apply(this,arguments);this.hiddenName&&
(hiddenDataElMarkup='\x3cdiv id\x3d"'+fieldData.id+'-hiddenDataEl" data-ref\x3d"hiddenDataEl" class\x3d"'+this.hiddenDataCls+'" role\x3d"presentation"\x3e\x3c/div\x3e');return hiddenDataElMarkup+markup},applyDisplayTpl:function(displayTpl){displayTpl?displayTpl.isTemplate||(displayTpl=new Ext.XTemplate(displayTpl)):(displayTpl=new Ext.XTemplate('\x3ctpl for\x3d"."\x3e{[typeof values \x3d\x3d\x3d "string" ? values : values["'+this.getDisplayField()+'"]]}\x3ctpl if\x3d"xindex \x3c xcount"\x3e'+this.getDelimiter()+
'\x3c/tpl\x3e\x3c/tpl\x3e'),displayTpl.auto=!0);return displayTpl},applyFilters:function(filters,collection){var me=this;if(null===filters||filters.isFilterCollection)return filters;filters&&(collection||(collection=this.getFilters()),collection.beginUpdate(),collection.splice(0,collection.length,filters),collection.each(function(filter){filter.ownerId=me.id}),collection.endUpdate());return collection},applyValueNotFoundText:function(v){var valueNotFoundRecord=this.valueNotFoundRecord||(this.valueNotFoundRecord=
new Ext.data.Model);valueNotFoundRecord.set(this.displayField,v);this.valueField&&this.displayField!==this.valueField&&valueNotFoundRecord.set(this.valueField,v);return v},getFilters:function(autoCreate){var ret=this.filters;ret||!1===autoCreate||(ret=new Ext.util.FilterCollection,this.setFilters(ret));return ret},updateFilters:function(newFilters,oldFilters){oldFilters&&oldFilters.un('endupdate','onEndUpdateFilters',this);if(newFilters)newFilters.on('endupdate','onEndUpdateFilters',this);this.onEndUpdateFilters(newFilters)},
onEndUpdateFilters:function(filters){var me=this,is=!!filters&&0<filters.length;if(me.filtered||is){me.filtered=is;var old=[];is=me.store.getFilters();is.each(function(filter){filter.ownerId!==me.id||filters.contains(filter)||old.push(filter)});is.splice(0,old,filters.items)}},clearLocalFilter:function(){var filter=this.queryFilter;filter&&(this.queryFilter=null,this.changingFilters=!0,this.store.removeFilter(filter,!0),this.changingFilters=!1)},completeEdit:function(e){Ext.form.field.Picker.prototype.completeEdit.call(this,
e);this.doQueryTask.cancel();this.assertValue();this.queryFilter&&'local'===this.queryMode&&this.clearFilterOnBlur&&this.clearLocalFilter()},onFocus:function(e){Ext.form.field.Picker.prototype.onFocus.call(this,e);'all'!==this.triggerAction&&this.queryFilter&&'local'===this.queryMode&&this.clearFilterOnBlur&&(delete this.lastQuery,this.doRawQuery())},onAltDownArrow:function(e){e.stopEvent();if(!this.isExpanded)this.onDownArrow(e);return!1},onAltUpArrow:function(e){e.stopEvent();if(this.isExpanded)this.onEsc(e);
return!1},assertValue:function(){var rawValue=this.getRawValue(),displayValue=this.getDisplayValue(),lastRecords=this.lastSelectedRecords,preventChange=!1,value;this.forceSelection?this.multiSelect?rawValue!==displayValue&&this.setRawValue(displayValue):(rawValue=this.findRecordByDisplay(rawValue),rawValue?this.getDisplayValue([this.getRecordDisplayData(rawValue)])===displayValue&&(rawValue=null,preventChange=!0):!lastRecords||this.allowBlank&&!this.rawValue?this.displayTplData&&this.displayTplData.length&&
(rawValue=this.findRecordByValue(this.displayTplData[0][this.valueField])):rawValue=lastRecords[0],rawValue?(this.select(rawValue,!0),this.fireEvent('select',this,rawValue)):preventChange||(lastRecords&&delete this.lastSelectedRecords,this.setRawValue(''))):(value=this.getValue())&&value==rawValue&&(!(rawValue=this.findRecordByDisplay(value))||rawValue===(lastRecords&&lastRecords[0])&&this.displayField===this.valueField||(this.select(rawValue,!0),this.fireEvent('select',this,rawValue)));this.collapse()},
onTypeAhead:function(){var displayField=this.displayField,record=this.store.findRecord(displayField,this.getRawValue());if(record){displayField=record.get(displayField);record=displayField.length;var selStart=this.getRawValue().length;0!==selStart&&selStart!==record&&(this.lastMutatedValue=displayField,this.setRawValue(displayField),this.selectText(selStart,displayField.length))}},resetToDefault:Ext.emptyFn,beforeReset:function(){Ext.form.field.Picker.prototype.beforeReset.call(this);this.clearLocalFilter()},
onUnbindStore:function(){var picker=this.picker;this.queryFilter&&!this.store.destroyed&&this.clearLocalFilter();picker&&picker.bindStore(null);this.pickerSelectionModel.destroy()},onBindStore:function(store,initial){var picker=this.picker;if(store){store.autoCreated&&(this.queryMode='local',this.valueField=this.displayField='field1',store.expanded||(this.displayField='field2'),this.getDisplayTpl().auto&&this.setDisplayTpl(null));Ext.isDefined(this.valueField)||(this.valueField=this.displayField);
var extraKeySpec={byValue:{rootProperty:'data',unique:!1}};extraKeySpec.byValue.property=this.valueField;store.setExtraKeys(extraKeySpec);this.displayField===this.valueField?store.byText=store.byValue:(extraKeySpec.byText={rootProperty:'data',unique:!1},extraKeySpec.byText.property=this.displayField,store.setExtraKeys(extraKeySpec));extraKeySpec={rootProperty:'data',extraKeys:{byInternalId:{property:'internalId'},byValue:{property:this.valueField,rootProperty:'data'}},listeners:{beginupdate:this.onValueCollectionBeginUpdate,
endupdate:this.onValueCollectionEndUpdate,scope:this}};this.valueCollection=new Ext.util.Collection(extraKeySpec);this.pickerSelectionModel=new Ext.selection.DataViewModel({mode:this.multiSelect?'SIMPLE':'SINGLE',ordered:!0,deselectOnContainerClick:!1,enableInitialSelection:!1,pruneRemoved:!1,selected:this.valueCollection,store:store,listeners:{scope:this,lastselectedchanged:this.updateBindSelection}});initial||this.resetToDefault();picker&&(this.pickerSelectionModel.on({scope:this,beforeselect:this.onBeforeSelect,
beforedeselect:this.onBeforeDeselect}),picker.setSelectionModel(this.pickerSelectionModel),picker.getStore()!==store&&picker.bindStore(store))}},bindStore:function(store,preventFilter,initial){var filter=this.queryFilter;this.mixins.storeholder.bindStore.call(this,store,initial);(store=this.getStore())&&filter&&!preventFilter&&store.getFilters().add(filter);initial||!store||store.isEmptyStore||this.setValueOnData()},getStoreListeners:function(store){if(!store.isEmptyStore){var result={datachanged:this.onDataChanged,
load:this.onLoad,exception:this.onException,update:this.onStoreUpdate,remove:this.checkValueOnChange};store.getRemoteFilter()||(result.filterchange=this.checkValueOnChange);return result}},onDataChanged:function(){this.grow&&this.growToLongestValue&&this.autoSize()},checkValueOnChange:function(){this.destroying||!this.getStore().isLoaded()||this.multiSelect||!this.forceSelection||this.changingFilters||this.findRecordByValue(this.value)||'local'!=this.queryMode&&this.hasFocus||this.setValue(null)},
onStoreUpdate:function(store,record){this.updateValue()},onException:function(){this.collapse()},onLoad:function(store,records,success){records=!this.valueCollection.byValue.get(this.value);!success||!records||store.lastOptions&&'rawQuery'in store.lastOptions||this.setValueOnData();this.checkValueOnChange()},setValueOnData:function(){this.setValue(this.value);this.isExpanded&&this.getStore().getCount()&&this.doAutoSelect()},doRawQuery:function(){var rawValue=this.inputEl.dom.value;this.multiSelect&&
(rawValue=rawValue.split(this.delimiter).pop());this.doQuery(rawValue,!1,!0)},doQuery:function(queryString,forceAll,rawQuery){var filters=this.getStore().getFilters();forceAll=this.beforeQuery({lastQuery:this.lastQuery||'',query:queryString||'',rawQuery:rawQuery,forceAll:forceAll,combo:this,cancel:!1});if(!1===forceAll||forceAll.cancel)this.startCheckChangeTask();else return queryString=!!queryString&&(!this.queryFilter||this.queryFilter&&0>filters.indexOf(this.queryFilter)),this.queryCaching&&!queryString&&
forceAll.query===this.lastQuery?(this.getPicker().refresh(),this.expand(),this.afterQuery(forceAll)):(this.lastQuery=forceAll.query,'local'===this.queryMode?this.doLocalQuery(forceAll):this.doRemoteQuery(forceAll)),!0;return!1},beforeQuery:function(queryPlan){!1===this.fireEvent('beforequery',queryPlan)?queryPlan.cancel=!0:!queryPlan.cancel&&queryPlan.query.length<this.minChars&&!queryPlan.forceAll&&(queryPlan.cancel=!0);return queryPlan},doLocalQuery:function(queryPlan){var queryString=queryPlan.query,
store=this.getStore(),value=queryString;this.clearLocalFilter();if(queryString){if(this.enableRegEx)try{value=new RegExp(value)}catch(e){value=null}null!==value&&(this.changingFilters=!0,queryString=this.queryFilter=new Ext.util.Filter({id:this.id+'-filter',anyMatch:this.anyMatch,caseSensitive:this.caseSensitive,root:'data',property:this.displayField,value:value}),store.addFilter(queryString,!0),this.changingFilters=!1)}this.store.getCount()||this.getPicker().emptyText?(this.getPicker().refresh(),
this.expand()):this.collapse();this.afterQuery(queryPlan)},doRemoteQuery:function(queryPlan){var me=this,loadCallback=function(){me.destroyed||me.afterQuery(queryPlan)};me.expand();me.pageSize?me.loadPage(1,{rawQuery:queryPlan.rawQuery,callback:loadCallback}):me.store.load({params:me.getParams(queryPlan.query),rawQuery:queryPlan.rawQuery,callback:loadCallback})},afterQuery:function(queryPlan){this.store.getCount()&&(this.typeAhead&&this.doTypeAhead(queryPlan),queryPlan.rawQuery?this.picker&&!this.picker.getSelectionModel().hasSelection()&&
this.doAutoSelect():this.doAutoSelect());this.startCheckChangeTask()},loadPage:function(pageNum,options){this.store.loadPage(pageNum,Ext.apply({params:this.getParams(this.lastQuery)},options))},onPageChange:function(toolbar,newPage){this.loadPage(newPage);return!1},getParams:function(queryString){var params={},param=this.queryParam;param&&(params[param]=queryString);return params},doAutoSelect:function(){var store=this.store,picker=this.picker,itemNode=0,lastSelected;if(picker&&this.autoSelect&&0<
store.getCount()){if(this.autoSelectLast){var selectionModel=picker.getSelectionModel();(lastSelected=selectionModel.lastSelected)&&selectionModel.selected.length&&-1<store.indexOf(lastSelected)&&(itemNode=lastSelected)}picker.getNavigationModel().setPosition(itemNode)}},doTypeAhead:function(queryPlan){this.typeAheadTask||(this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this));(queryPlan.query.length>queryPlan.lastQuery.length||!Ext.String.startsWith(queryPlan.lastQuery,queryPlan.query))&&
this.typeAheadTask.delay(this.typeAheadDelay)},onTriggerClick:function(e){this.readOnly||this.disabled||(this.isExpanded?this.collapse():e&&'keydown'===e.type&&e.altKey?(e=this.autoSelect,this.autoSelect=!1,this.expand(),this.autoSelect=e):'all'===this.triggerAction?this.doQuery(this.allQuery,!0):'last'===this.triggerAction?this.doQuery(this.lastQuery,!0):this.doQuery(this.getRawValue(),!1,!0))},onFieldMutation:function(e){var key=e.getKey(),isDelete=key===e.BACKSPACE||key===e.DELETE,rawValue=this.inputEl.dom.value,
len=rawValue.length;this.readOnly||rawValue===this.lastMutatedValue&&!isDelete||key===e.TAB||(this.lastMutatedValue=rawValue,this.refreshEmptyText(),!len||'keyup'===e.type&&e.isSpecialKey()&&!isDelete?(len||key&&!isDelete||(++this.suspendCheckChange,this.multiSelect||(this.value=null,this.displayTplData=void 0),this.clearValueOnEmpty&&(this.valueCollection.beginUpdate(),this.pickerSelectionModel.deselectAll(),this.valueCollection.removeAll(),this.valueCollection.endUpdate()),this.collapse(),this.queryFilter&&
this.clearLocalFilter(),this.lastQuery=null,--this.suspendCheckChange),Ext.form.field.Picker.prototype.onFieldMutation.call(this,e)):this.doQueryTask.delay(this.queryDelay))},doDestroy:function(){this.doQueryTask.cancel();this.typeAheadTask&&(this.typeAheadTask.cancel(),this.typeAheadTask=null);this.bindStore(null);Ext.destroy(this.altArrowKeyNav,this.valueCollection);Ext.form.field.Picker.prototype.doDestroy.call(this)},onAdded:function(){Ext.form.field.Picker.prototype.onAdded.apply(this,arguments);
this.picker&&(this.picker.ownerCt=this.up('[floating]'),this.picker.registerWithOwnerCt())},createPicker:function(){var picker=Ext.apply({xtype:'boundlist',id:this.id+'-picker',pickerField:this,selectionModel:this.pickerSelectionModel,floating:!0,hidden:!0,store:this.getPickerStore(),displayField:this.displayField,preserveScrollOnRefresh:!0,pageSize:this.pageSize,tpl:this.tpl,ariaSelectable:this.ariaSelectable},this.listConfig,this.defaultListConfig);picker=this.picker=Ext.widget(picker);if(this.pageSize)picker.pagingToolbar.on('beforechange',
this.onPageChange,this);if(!picker.initialConfig.maxHeight)picker.on({beforeshow:this.onBeforePickerShow,scope:this});picker.getSelectionModel().on({beforeselect:this.onBeforeSelect,beforedeselect:this.onBeforeDeselect,focuschange:this.onFocusChange,scope:this});picker.getNavigationModel().navigateOnSpace=!1;return picker},getPickerStore:function(){return this.store},onBeforePickerShow:function(picker){var heightAbove=this.getPosition()[1]-Ext.getBody().getScroll().top,heightBelow=Ext.Element.getViewportHeight()-
heightAbove-this.getHeight();picker.maxHeight=Math.max(heightAbove,heightBelow)-5},onBeforeSelect:function(list,record,recordIndex){return this.fireEvent('beforeselect',this,record,recordIndex)},onBeforeDeselect:function(list,record,recordIndex){return this.fireEvent('beforedeselect',this,record,recordIndex)},onFocusChange:function(selModel,prevRecord,newRecord){prevRecord=this.picker;selModel=this.inputEl;newRecord&&((newRecord=Ext.get(prevRecord.getNodeByRecord(newRecord)))?selModel.dom.setAttribute('aria-activedescendant',
newRecord.id):selModel.dom.removeAttribute('aria-activedescendant'))},getSelection:function(){var selModel=this.getPicker().getSelectionModel();return selModel.getSelection().length?selModel.getLastSelected():null},updateSelection:function(selection){if(!this.ignoreNextSelection){this.ignoreNextSelection=!0;var sm=this.getPicker().getSelectionModel();selection?(sm.select(selection),this.hasHadSelection=!0):sm.deselectAll();this.ignoreNextSelection=!1}},updateBindSelection:function(selModel,selection){var selected=
null;this.ignoreNextSelection||(this.ignoreNextSelection=!0,selection.length&&(selected=selModel.getLastSelected(),this.hasHadSelection=!0),this.hasHadSelection&&this.setSelection(selected),this.ignoreNextSelection=!1)},onValueCollectionBeginUpdate:Ext.emptyFn,onValueCollectionEndUpdate:function(){var store=this.store,selectedRecords=this.valueCollection.getRange(),selectedRecord=selectedRecords[0],selectionCount=selectedRecords.length;this.updateBindSelection(this.pickerSelectionModel,selectedRecords);
this.isSelectionUpdating()||(Ext.suspendLayouts(),this.lastSelection=selectedRecords,selectionCount&&(this.lastSelectedRecords=selectedRecords),this.updateValue(),selectionCount&&(!this.multiSelect&&store.contains(selectedRecord)||this.collapseOnSelect||!store.getCount())&&(this.updatingValue=!0,this.collapse(),this.updatingValue=!1),Ext.resumeLayouts(!0),this.suspendCheckChange||(this.multiSelect||(selectedRecords=selectedRecord),this.fireEvent('select',this,selectedRecords)))},isSelectionUpdating:function(){var selModel=
this.pickerSelectionModel;return selModel.deselectingDuringSelect||selModel.refreshing},onExpand:function(){var picker=this.getPicker(),keyNav=picker.getNavigationModel();keyNav&&keyNav.enable();this.doAutoSelect();(picker=Ext.get(picker.highlightedItem))&&this.inputEl.dom.setAttribute('aria-activedescendant',picker.id)},onCollapse:function(){var keyNav=this.getPicker().getNavigationModel();keyNav&&keyNav.disable();this.updatingValue&&this.doQueryTask.cancel();this.inputEl.dom.removeAttribute('aria-activedescendant')},
select:function(r,assert){var picker=this.picker,fireSelect;r&&r.isModel&&!0===assert&&picker&&(fireSelect=!picker.getSelectionModel().isSelected(r));fireSelect||this.suspendEvent('select');this.setValue(r);this.resumeEvent('select')},findRecord:function(field,value){var ds=this.store;field=ds.findExact(field,value);return-1!==field?ds.getAt(field):!1},getSelectedRecord:function(){return this.findRecordByValue(this.value)||null},findRecordByValue:function(value){value=this.store.byValue.get(value);
var ret=!1;value&&(ret=value[0]||value);return ret},findRecordByDisplay:function(value){value=this.store.byText.get(value);var ret=!1;value&&(ret=value[0]||value);return ret},addValue:function(value){if(null!=value)return this.doSetValue(value,!0)},setValue:function(value){var bind;if(this.hasFocus){if((bind=(bind=this.getBind())&&bind.value)&&bind.syncing&&(Ext.isEmpty(value)&&Ext.isEmpty(this.value)||value===this.value||Ext.isArray(value)&&Ext.isArray(this.value)&&Ext.Array.equals(value,this.value)))return this}else this.lastSelectedRecords=
null;null!=value?this.doSetValue(value):(this.suspendEvent('select'),this.valueCollection.beginUpdate(),this.pickerSelectionModel.deselectAll(),this.valueCollection.endUpdate(),this.resumeEvent('select'));return this},setRawValue:function(rawValue){Ext.form.field.Picker.prototype.setRawValue.call(this,rawValue);this.lastMutatedValue=rawValue},doSetValue:function(value,add){var store=this.getStore(),Model=store.getModel(),matchedRecords=[],valueArray=[],autoLoadOnValue=this.autoLoadOnValue,isLoaded=
0<store.getCount()||store.isLoaded(),pendingLoad=store.hasPendingLoad(),unloaded=autoLoadOnValue&&!isLoaded&&!pendingLoad;autoLoadOnValue=this.forceSelection;var selModel=this.pickerSelectionModel,displayIsValue=this.displayField===this.valueField,isEmptyStore=store.isEmptyStore,lastSelection=this.lastSelection,valueChanged;if(pendingLoad||unloaded||!isLoaded||isEmptyStore)if(value.isModel||(this.value=add?Ext.Array.from(this.value).concat(value):value,this.setHiddenValue(this.value),this.setRawValue(displayIsValue?
value:''),displayIsValue&&!Ext.isEmpty(value)&&this.inputEl&&this.emptyText&&this.inputEl.removeCls(this.emptyUICls)),unloaded&&!isEmptyStore&&store.load(),!value.isModel||isEmptyStore)return this;value=add?Ext.Array.from(this.value).concat(value):Ext.Array.from(value);add=0;for(store=value.length;add<store;add++)isLoaded=value[add],isLoaded&&isLoaded.isModel||(isLoaded=this.findRecordByValue(pendingLoad=isLoaded))||(isLoaded=this.valueCollection.find(this.valueField,pendingLoad)),isLoaded||(autoLoadOnValue?
this.valueNotFoundRecord&&(isLoaded=this.valueNotFoundRecord):!isLoaded&&value[add]&&(isLoaded={},isLoaded[this.displayField]=value[add],this.valueField&&this.displayField!==this.valueField&&(isLoaded[this.valueField]=value[add]),isLoaded=new Model(isLoaded))),isLoaded&&(matchedRecords.push(isLoaded),valueArray.push(isLoaded.get(this.valueField)));if(lastSelection)if(store=lastSelection.length,store===matchedRecords.length)for(add=0;!valueChanged&&add<store;add++)-1===Ext.Array.indexOf(this.lastSelection,
matchedRecords[add])&&(valueChanged=!0);else valueChanged=!0;else valueChanged=matchedRecords.length;valueChanged?(this.suspendEvent('select'),this.valueCollection.beginUpdate(),matchedRecords.length?selModel.select(matchedRecords,!1):selModel.deselectAll(),this.valueCollection.endUpdate(),this.resumeEvent('select')):this.updateValue();return this},updateValue:function(){var selectedRecords=this.valueCollection.getRange(),len=selectedRecords.length,valueArray=[],displayTplData=this.displayTplData||
(this.displayTplData=[]),inputEl=this.inputEl,i;for(i=displayTplData.length=0;i<len;i++){var record=selectedRecords[i];displayTplData.push(this.getRecordDisplayData(record));record!==this.valueNotFoundRecord&&valueArray.push(record.get(this.valueField))}this.setHiddenValue(valueArray);this.value=this.multiSelect?valueArray:valueArray[0];Ext.isDefined(this.value)||(this.value=void 0);this.displayTplData=displayTplData;selectedRecords=this.getDisplayValue();this.setRawValue(selectedRecords);this.refreshEmptyText();
this.checkChange();inputEl&&this.typeAhead&&this.hasFocus&&this.selectText(selectedRecords.length)},setHiddenValue:function(values){var name=this.hiddenName;if(this.hiddenDataEl&&name){values=Ext.Array.from(values);var dom=this.hiddenDataEl.dom;var childNodes=dom.childNodes;var input=childNodes[0];var valueCount=values.length;var childrenCount=childNodes.length;!input&&0<valueCount&&(this.hiddenDataEl.setHtml(Ext.DomHelper.markup({tag:'input',type:'hidden',name:name})),childrenCount=1,input=dom.firstChild);
for(;childrenCount>valueCount;)dom.removeChild(childNodes[0]),--childrenCount;for(;childrenCount<valueCount;)dom.appendChild(input.cloneNode(!0)),++childrenCount;for(name=0;name<valueCount;name++)childNodes[name].value=values[name]}},getDisplayValue:function(tplData){tplData=tplData||this.displayTplData;return(this.getDisplayTpl().apply(tplData)||'').replace(this.newlineRe,'')},getRecordDisplayData:function(record){return record.data},getValue:function(){var store=this.getStore(),picker=this.picker,
rawValue=this.getRawValue(),value=this.value;store.isEmptyStore||this.getDisplayValue()===rawValue||(this.displayTplData=void 0,picker&&(this.valueCollection.suspendEvents(),picker.getSelectionModel().deselectAll(),this.valueCollection.resumeEvents(),this.lastSelection=null),value=store.isLoaded()&&(this.multiSelect||this.forceSelection)?this.value=void 0:this.value=rawValue);return this.value=null==value?null:value},getSubmitValue:function(){var value=this.getValue();Ext.isEmpty(value)&&(value='');
return value},isEqual:function(v1,v2){var fromArray=Ext.Array.from;v1=fromArray(v1);v2=fromArray(v2);var len=v1.length;if(len!==v2.length)return!1;for(fromArray=0;fromArray<len;fromArray++)if(v2[fromArray]!==v1[fromArray])return!1;return!0},clearValue:function(){this.setValue(null)}},0,['combo','combobox'],'component box field textfield pickerfield combobox combo'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,combobox:!0,combo:!0},['widget.combo','widget.combobox'],[[Ext.util.StoreHolder.prototype.mixinId||
Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Ext.form.field,'ComboBox',Ext.form,'ComboBox'],0);Ext.define('RCOP.form.field.ComboBox',{override:'Ext.form.field.ComboBox',defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:'drop'}});
Ext.cmd.derive('Ext.picker.Month',Ext.Component,{alternateClassName:'Ext.MonthPicker',isMonthPicker:!0,focusable:!0,childEls:['bodyEl','prevEl','nextEl','monthEl','yearEl'],renderTpl:['\x3cdiv id\x3d"{id}-bodyEl" data-ref\x3d"bodyEl" class\x3d"{baseCls}-body"\x3e','\x3cdiv id\x3d"{id}-monthEl" data-ref\x3d"monthEl" class\x3d"{baseCls}-months"\x3e','\x3ctpl for\x3d"months"\x3e','\x3cdiv class\x3d"{parent.baseCls}-item {parent.baseCls}-month"\x3e','\x3ca style\x3d"{parent.monthStyle}" role\x3d"button" hidefocus\x3d"on" class\x3d"{parent.baseCls}-item-inner"\x3e{.}\x3c/a\x3e',
'\x3c/div\x3e','\x3c/tpl\x3e','\x3c/div\x3e','\x3cdiv id\x3d"{id}-yearEl" data-ref\x3d"yearEl" class\x3d"{baseCls}-years"\x3e','\x3cdiv class\x3d"{baseCls}-yearnav"\x3e','\x3cdiv class\x3d"{baseCls}-yearnav-button-ct"\x3e','\x3ca id\x3d"{id}-prevEl" data-ref\x3d"prevEl" class\x3d"{baseCls}-yearnav-button {baseCls}-yearnav-prev" hidefocus\x3d"on" role\x3d"button"\x3e\x3c/a\x3e','\x3c/div\x3e','\x3cdiv class\x3d"{baseCls}-yearnav-button-ct"\x3e','\x3ca id\x3d"{id}-nextEl" data-ref\x3d"nextEl" class\x3d"{baseCls}-yearnav-button {baseCls}-yearnav-next" hidefocus\x3d"on" role\x3d"button"\x3e\x3c/a\x3e',
'\x3c/div\x3e','\x3c/div\x3e','\x3ctpl for\x3d"years"\x3e','\x3cdiv class\x3d"{parent.baseCls}-item {parent.baseCls}-year"\x3e','\x3ca hidefocus\x3d"on" class\x3d"{parent.baseCls}-item-inner" role\x3d"button"\x3e{.}\x3c/a\x3e','\x3c/div\x3e','\x3c/tpl\x3e','\x3c/div\x3e','\x3cdiv class\x3d"x-clear"\x3e\x3c/div\x3e','\x3ctpl if\x3d"showButtons"\x3e','\x3cdiv class\x3d"{baseCls}-buttons"\x3e{%','var me\x3dvalues.$comp, okBtn\x3dme.okBtn, cancelBtn\x3dme.cancelBtn;','okBtn.ownerLayout \x3d cancelBtn.ownerLayout \x3d me.componentLayout;',
'okBtn.ownerCt \x3d cancelBtn.ownerCt \x3d me;','Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);','Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);','%}\x3c/div\x3e','\x3c/tpl\x3e','\x3c/div\x3e'],okText:'OK',cancelText:'Cancel',baseCls:'x-monthpicker',showButtons:!0,footerButtonUI:'default',measureWidth:35,measureMaxHeight:20,smallCls:'x-monthpicker-small',totalYears:10,yearOffset:5,monthOffset:6,alignOnScroll:!1,initComponent:function(){this.selectedCls=this.baseCls+'-selected';
this.small&&this.addCls(this.smallCls);this.setValue(this.value);this.activeYear=this.getYear((new Date).getFullYear()-4,-4);this.showButtons&&(this.okBtn=new Ext.button.Button({ui:this.footerButtonUI,text:this.okText,handler:this.onOkClick,scope:this}),this.cancelBtn=new Ext.button.Button({ui:this.footerButtonUI,text:this.cancelText,handler:this.onCancelClick,scope:this}));Ext.Component.prototype.initComponent.call(this)},beforeRender:function(){var i=0,months=[],shortName=Ext.Date.getShortMonthName,
monthLen=this.monthOffset,margin=this.monthMargin,style='';this.padding&&!this.width&&this.cacheWidth();for(Ext.Component.prototype.beforeRender.call(this);i<monthLen;++i)months.push(shortName(i),shortName(i+monthLen));Ext.isDefined(margin)&&(style='margin: 0 '+margin+'px;');Ext.apply(this.renderData,{months:months,years:this.getYears(),showButtons:this.showButtons,monthStyle:style})},cacheWidth:function(){var padding=this.parseBox(this.padding),widthEl=Ext.getBody().createChild({cls:this.baseCls+
' '+this.borderBoxCls,style:'position:absolute;top:-1000px;left:-1000px;',html:'\x26nbsp;'});this.self.prototype.width=widthEl.getWidth()+padding.left+padding.right;widthEl.destroy()},afterRender:function(){var body=this.bodyEl;Ext.Component.prototype.afterRender.call(this);if(this.up('[floating\x3dtrue]'))this.el.on('mousedown',this.onElClick,this,{translate:!1});body.on({scope:this,click:'onBodyClick',dblclick:'onBodyClick'});this.years=body.select('.'+this.baseCls+'-year a');this.months=body.select('.'+
this.baseCls+'-month a');this.backRepeater=new Ext.util.ClickRepeater(this.prevEl,{handler:Ext.Function.bind(this.adjustYear,this,[-this.totalYears])});this.prevEl.addClsOnOver(this.baseCls+'-yearnav-prev-over');this.nextRepeater=new Ext.util.ClickRepeater(this.nextEl,{handler:Ext.Function.bind(this.adjustYear,this,[this.totalYears])});this.nextEl.addClsOnOver(this.baseCls+'-yearnav-next-over');this.updateBody();Ext.isDefined(this.monthMargin)||(Ext.picker.Month.prototype.monthMargin=this.calculateMonthMargin())},
calculateMonthMargin:function(){for(var months=this.months,itemMargin=months.first().getMargin('l');itemMargin&&this.getLargest()>this.measureMaxHeight;)--itemMargin,months.setStyle('margin','0 '+itemMargin+'px');return itemMargin},getLargest:function(months){var largest=0;this.months.each(function(item){item=item.getHeight();item>largest&&(largest=item)});return largest},setValue:function(value){var active=this.activeYear;value?Ext.isDate(value)?this.value=[value.getMonth(),value.getFullYear()]:
this.value=[value[0],value[1]]:this.value=[null,null];this.rendered&&(value=this.value[1],null!==value&&(value<active||value>active+this.yearOffset)&&(this.activeYear=value-this.yearOffset+1),this.updateBody());return this},getValue:function(){return this.value},hasSelection:function(){var value=this.value;return null!==value[0]&&null!==value[1]},getYears:function(){for(var offset=this.yearOffset,start=this.activeYear,end=start+offset,years=[];start<end;++start)years.push(start,start+offset);return years},
updateBody:function(){var years=this.years,months=this.months,yearNumbers=this.getYears(),cls=this.selectedCls,value=this.getYear(null),month=this.value[0],monthOffset=this.monthOffset,y;if(this.rendered){years.removeCls(cls);months.removeCls(cls);var yearItems=years.elements;var yLen=yearItems.length;for(y=0;y<yLen;y++){var el=Ext.fly(yearItems[y]);years=yearNumbers[y];el.dom.innerHTML=years;years===value&&el.addCls(cls)}null!==month&&months.item(month<monthOffset?2*month:2*(month-monthOffset)+1).addCls(cls)}},
getYear:function(defaultValue,offset){var year=this.value[1];return null===year?defaultValue:year+(offset||0)},onElClick:function(e){e.stopEvent()},onBodyClick:function(e,t){var isDouble='dblclick'===e.type;e.getTarget('.'+this.baseCls+'-month')?(e.stopEvent(),this.onMonthClick(t,isDouble)):e.getTarget('.'+this.baseCls+'-year')&&(e.stopEvent(),this.onYearClick(t,isDouble))},adjustYear:function(offset){'number'!==typeof offset&&(offset=this.totalYears);this.activeYear+=offset;this.updateBody()},onOkClick:function(){this.fireEvent('okclick',
this,this.value)},onCancelClick:function(){this.fireEvent('cancelclick',this)},onMonthClick:function(target,isDouble){this.value[0]=this.resolveOffset(this.months.indexOf(target),this.monthOffset);this.updateBody();this.fireEvent('month'+(isDouble?'dbl':'')+'click',this,this.value);this.fireEvent('select',this,this.value)},onYearClick:function(target,isDouble){this.value[1]=this.activeYear+this.resolveOffset(this.years.indexOf(target),this.yearOffset);this.updateBody();this.fireEvent('year'+(isDouble?
'dbl':'')+'click',this,this.value);this.fireEvent('select',this,this.value)},resolveOffset:function(index,offset){return 0===index%2?index/2:offset+Math.floor(index/2)},doDestroy:function(){Ext.destroy(this.backRepeater,this.nextRepeater,this.okBtn,this.cancelBtn);Ext.Component.prototype.doDestroy.call(this)},privates:{finishRenderChildren:function(){Ext.Component.prototype.finishRenderChildren.apply(this,arguments);this.showButtons&&(this.okBtn.finishRender(),this.cancelBtn.finishRender())}}},0,
['monthpicker'],['component','box','monthpicker'],{component:!0,box:!0,monthpicker:!0},['widget.monthpicker'],0,[Ext.picker,'Month',Ext,'MonthPicker'],0);Ext.define('Ext.theme.neptune.picker.Month',{override:'Ext.picker.Month',measureMaxHeight:36});
Ext.define('Theme.override.picker.Month',{override:'Ext.picker.Month',initComponent:function(){(arguments.callee.$previous||Ext.Component.prototype.initComponent).call(this);this.showButtons&&(Ext.apply(this.okBtn,{ui:'primary',width:80}),Ext.apply(this.cancelBtn,{ui:'alternate',width:80}))}});
Ext.cmd.derive('Ext.picker.Date',Ext.Component,{alternateClassName:'Ext.DatePicker',todayText:'Today',ariaTitle:'Date Picker: {0}',ariaTitleDateFormat:'F d',todayTip:'{0} (Spacebar)',minText:'This date is before the minimum date',ariaMinText:'This date is before the minimum date',maxText:'This date is after the maximum date',ariaMaxText:'This date is after the maximum date',disabledDaysText:'Disabled',ariaDisabledDaysText:'This day of week is disabled',disabledDatesText:'Disabled',ariaDisabledDatesText:'This date is 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:!0,disableAnim:!1,baseCls:'x-datepicker',longDayFormat:'F d, Y',footerButtonUI:'default',isDatePicker:!0,alignOnScroll:!1,ariaRole:'region',focusable:!0,childEls:'innerEl eventEl prevEl nextEl middleBtnEl footerEl'.split(' '),border:!0,renderTpl:['\x3cdiv id\x3d"{id}-innerEl" data-ref\x3d"innerEl" role\x3d"presentation"\x3e',
'\x3cdiv class\x3d"{baseCls}-header"\x3e','\x3cdiv id\x3d"{id}-prevEl" data-ref\x3d"prevEl" class\x3d"{baseCls}-prev {baseCls}-arrow" role\x3d"presentation" title\x3d"{prevText}"\x3e\x3c/div\x3e','\x3cdiv id\x3d"{id}-middleBtnEl" data-ref\x3d"middleBtnEl" class\x3d"{baseCls}-month" role\x3d"heading"\x3e{%this.renderMonthBtn(values, out)%}\x3c/div\x3e','\x3cdiv id\x3d"{id}-nextEl" data-ref\x3d"nextEl" class\x3d"{baseCls}-next {baseCls}-arrow" role\x3d"presentation" title\x3d"{nextText}"\x3e\x3c/div\x3e',
'\x3c/div\x3e','\x3ctable role\x3d"grid" id\x3d"{id}-eventEl" data-ref\x3d"eventEl" class\x3d"{baseCls}-inner" cellspacing\x3d"0" tabindex\x3d"0" aria-readonly\x3d"true"\x3e','\x3cthead\x3e','\x3ctr role\x3d"row"\x3e','\x3ctpl for\x3d"dayNames"\x3e','\x3cth role\x3d"columnheader" class\x3d"{parent.baseCls}-column-header" aria-label\x3d"{.}"\x3e','\x3cdiv role\x3d"presentation" class\x3d"{parent.baseCls}-column-header-inner"\x3e{.:this.firstInitial}\x3c/div\x3e','\x3c/th\x3e','\x3c/tpl\x3e','\x3c/tr\x3e',
'\x3c/thead\x3e','\x3ctbody\x3e','\x3ctr role\x3d"row"\x3e','\x3ctpl for\x3d"days"\x3e','{#:this.isEndOfWeek}','\x3ctd role\x3d"gridcell"\x3e','\x3cdiv hidefocus\x3d"on" class\x3d"{parent.baseCls}-date"\x3e\x3c/div\x3e','\x3c/td\x3e','\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/tbody\x3e','\x3c/table\x3e','\x3ctpl if\x3d"showToday"\x3e','\x3cdiv id\x3d"{id}-footerEl" data-ref\x3d"footerEl" role\x3d"presentation" class\x3d"{baseCls}-footer"\x3e{%this.renderTodayBtn(values, out)%}\x3c/div\x3e','\x3c/tpl\x3e',
'\x3cdiv id\x3d"{id}-todayText" class\x3d"x-hidden-clip"\x3e{todayText}.\x3c/div\x3e','\x3cdiv id\x3d"{id}-ariaMinText" class\x3d"x-hidden-clip"\x3e{ariaMinText}.\x3c/div\x3e','\x3cdiv id\x3d"{id}-ariaMaxText" class\x3d"x-hidden-clip"\x3e{ariaMaxText}.\x3c/div\x3e','\x3cdiv id\x3d"{id}-ariaDisabledDaysText" class\x3d"x-hidden-clip"\x3e{ariaDisabledDaysText}.\x3c/div\x3e','\x3cdiv id\x3d"{id}-ariaDisabledDatesText" class\x3d"x-hidden-clip"\x3e{ariaDisabledDatesText}.\x3c/div\x3e','\x3c/div\x3e',{firstInitial:function(value){return Ext.picker.Date.prototype.getDayInitial(value)},
isEndOfWeek:function(value){value--;return 0===value%7&&0!==value?'\x3c/tr\x3e\x3ctr role\x3d"row"\x3e':''},renderTodayBtn:function(values,out){Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(),out)},renderMonthBtn:function(values,out){Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(),out)}}],initHour:12,numDays:42,initComponent:function(){var clearTime=Ext.Date.clearTime;this.selectedCls=this.baseCls+'-selected';this.disabledCellCls=this.baseCls+'-disabled';this.prevCls=
this.baseCls+'-prevday';this.activeCls=this.baseCls+'-active';this.cellCls=this.baseCls+'-cell';this.nextCls=this.baseCls+'-prevday';this.todayCls=this.baseCls+'-today';this.format||(this.format=Ext.Date.defaultFormat);this.dayNames||(this.dayNames=Ext.Date.dayNames);this.dayNames=this.dayNames.slice(this.startDay).concat(this.dayNames.slice(0,this.startDay));Ext.Component.prototype.initComponent.call(this);this.value=this.value?clearTime(this.value,!0):clearTime(new Date);this.initDisabledDays()},
getRefOwner:function(){return this.pickerField||Ext.Component.prototype.getRefOwner.call(this)},getRefItems:function(){var results=[],monthBtn=this.monthBtn,todayBtn=this.todayBtn;monthBtn&&results.push(monthBtn);todayBtn&&results.push(todayBtn);return results},beforeRender:function(){var encode=Ext.String.htmlEncode,days=Array(this.numDays),today=Ext.Date.format(new Date,this.format);this.padding&&!this.width&&this.cacheWidth();this.monthBtn=new Ext.button.Split({ownerCt:this,ownerLayout:this.getComponentLayout(),
text:'',tooltip:this.monthYearText,tabIndex:-1,ariaRole:'presentation',listeners:{click:this.doShowMonthPicker,arrowclick:this.doShowMonthPicker,scope:this}});this.showToday&&(this.todayBtn=new Ext.button.Button({ui:this.footerButtonUI,ownerCt:this,ownerLayout:this.getComponentLayout(),text:Ext.String.format(this.todayText,today),tooltip:Ext.String.format(this.todayTip,today),tooltipType:'title',tabIndex:-1,ariaRole:'presentation',handler:this.selectToday,scope:this}));Ext.Component.prototype.beforeRender.call(this);
Ext.applyIf(this,{renderData:{}});Ext.apply(this.renderData,{dayNames:this.dayNames,showToday:this.showToday,prevText:encode(this.prevText),nextText:encode(this.nextText),todayText:encode(this.todayText),ariaMinText:encode(this.ariaMinText),ariaMaxText:encode(this.ariaMaxText),ariaDisabledDaysText:encode(this.ariaDisabledDaysText),ariaDisabledDatesText:encode(this.ariaDisabledDatesText),days:days});this.protoEl.unselectable()},cacheWidth:function(){var padding=this.parseBox(this.padding),widthEl=
Ext.getBody().createChild({cls:this.baseCls+' '+this.borderBoxCls,style:'position:absolute;top:-1000px;left:-1000px;'});this.self.prototype.width=widthEl.getWidth()+padding.left+padding.right;widthEl.destroy()},onRender:function(container,position){var dateCellSelector='div.'+this.baseCls+'-date';Ext.Component.prototype.onRender.apply(this,arguments);this.cells=this.eventEl.select('tbody td');this.textNodes=this.eventEl.query(dateCellSelector);this.eventEl.set({'aria-labelledby':this.monthBtn.id});
this.mon(this.eventEl,{scope:this,mousewheel:this.handleMouseWheel,click:{fn:this.handleDateClick,delegate:dateCellSelector}})},initEvents:function(){Ext.Component.prototype.initEvents.call(this);if(this.pickerField)this.el.on('mousedown',this.onMouseDown,this);this.monthBtn.el.on('mousedown',this.onMouseDown,this);this.prevRepeater=new Ext.util.ClickRepeater(this.prevEl,{handler:this.showPrevMonth,scope:this,mousedownStopEvent:!0});this.nextRepeater=new Ext.util.ClickRepeater(this.nextEl,{handler:this.showNextMonth,
scope:this,mousedownStopEvent:!0});this.keyNav=new Ext.util.KeyNav(this.eventEl,Ext.apply({scope:this,left:function(e){e.ctrlKey?this.showPrevMonth():this.update(Ext.Date.add(this.activeDate,Ext.Date.DAY,-1));e.preventDefault()},right:function(e){e.ctrlKey?this.showNextMonth():this.update(Ext.Date.add(this.activeDate,Ext.Date.DAY,1));e.preventDefault()},up:function(e){e.ctrlKey?this.showNextYear():this.update(Ext.Date.add(this.activeDate,Ext.Date.DAY,-7));e.preventDefault()},down:function(e){e.ctrlKey?
this.showPrevYear():this.update(Ext.Date.add(this.activeDate,Ext.Date.DAY,7));e.preventDefault()},pageUp:function(e){e.ctrlKey?this.showPrevYear():this.showPrevMonth();e.preventDefault()},pageDown:function(e){e.ctrlKey?this.showNextYear():this.showNextMonth();e.preventDefault()},home:function(e){this.update(Ext.Date.getFirstDateOfMonth(this.activeDate));e.preventDefault()},end:function(e){this.update(Ext.Date.getLastDateOfMonth(this.activeDate));e.preventDefault()},tab:function(e){this.handleTabKey(e);
return!0},enter:function(e){this.handleDateClick(e,this.activeCell.firstChild)},space:function(e){var pickerField=this.pickerField,pickerValue;this.setValue(new Date(this.activeCell.firstChild.dateValue));if(pickerField){var startValue=this.startValue;var value=this.value;(pickerValue=pickerField.getValue())&&startValue&&pickerValue.getTime()===value.getTime()?pickerField.setValue(startValue):pickerField.setValue(value)}e.preventDefault()}},this.keyNavConfig));this.disabled&&this.syncDisabled(!0,
!0);this.update(this.value)},onMouseDown:function(e){e.preventDefault()},handleTabKey:function(e){e=this.getSelectedDate(this.activeDate);var handler=this.handler;this.disabled||!e.dateValue||Ext.fly(e.parentNode).hasCls(this.disabledCellCls)?this.fireEventArgs('tabout',[this]):(this.setValue(new Date(e.dateValue)),this.fireEvent('select',this,this.value),handler&&Ext.callback(handler,this.scope,[this,this.value],null,this,this),this.onSelect())},getSelectedDate:function(date){date=date.getTime();
var cells=this.cells,cellItems=cells.elements,cLen=cellItems.length,c;cells.removeCls(this.selectedCls);for(c=0;c<cLen;c++)if(cells=cellItems[c].firstChild,cells.dateValue===date)return cells;return null},initDisabledDays:function(){var dd=this.disabledDates,re='(?:',d;if(!this.disabledDatesRE&&dd){var len=dd.length-1;var dLen=dd.length;for(d=0;d<dLen;d++){var dI=dd[d];re+=Ext.isDate(dI)?'^'+Ext.String.escapeRegex(Ext.Date.dateFormat(dI,this.format))+'$':dI;d!==len&&(re+='|')}this.disabledDatesRE=
new RegExp(re+')')}},setDisabledDates:function(dd){Ext.isArray(dd)?(this.disabledDates=dd,this.disabledDatesRE=null):this.disabledDatesRE=dd;this.initDisabledDays();this.update(this.value,!0);return this},setDisabledDays:function(dd){this.disabledDays=dd;return this.update(this.value,!0)},setMinDate:function(dt){this.minDate=dt;return this.update(this.value,!0)},setMaxDate:function(dt){this.maxDate=dt;return this.update(this.value,!0)},setValue:function(value){this.value=Ext.Date.clearTime(value||
new Date,!0);return this.update(this.value)},getValue:function(){return this.value},getDayInitial:function(value){return value.substr(0,1)},onEnable:function(){Ext.Component.prototype.onEnable.call(this);this.syncDisabled(!1,!0);this.update(this.activeDate)},onShow:function(){Ext.Component.prototype.onShow.call(this);this.syncDisabled(!1);this.pickerField&&(this.startValue=this.pickerField.getValue())},onHide:function(){Ext.Component.prototype.onHide.call(this);this.syncDisabled(!0)},onDisable:function(){Ext.Component.prototype.onDisable.call(this);
this.syncDisabled(!0,!0)},getActive:function(){return this.activeDate||this.value},runAnimation:function(isHide){var picker=this.monthPicker,options={duration:200,callback:function(){picker.setVisible(!isHide)}};isHide?picker.el.slideOut('t',options):picker.el.slideIn('t',options)},hideMonthPicker:function(animate){var picker=this.monthPicker;picker&&picker.isVisible()&&(this.shouldAnimate(animate)?this.runAnimation(!0):picker.hide());return this},doShowMonthPicker:function(){this.showMonthPicker()},
doHideMonthPicker:function(){this.hideMonthPicker()},showMonthPicker:function(animate){var el=this.el;if(this.rendered&&!this.disabled){var picker=this.createMonthPicker();picker.isVisible()||(picker.setValue(this.getActive()),picker.setSize(el.getSize()),picker.floatParent=null,picker.setPosition(-el.getBorderWidth('l'),-el.getBorderWidth('t')),this.shouldAnimate(animate)?this.runAnimation(!1):picker.show())}return this},shouldAnimate:function(animate){return Ext.isDefined(animate)?animate:!this.disableAnim},
createMonthPicker:function(){var picker=this.monthPicker;picker||(this.monthPicker=picker=new Ext.picker.Month({renderTo:this.el,ownerCmp:this,floating:!0,padding:this.padding,shadow:!1,small:!1===this.showToday,footerButtonUI:this.footerButtonUI,listeners:{scope:this,cancelclick:this.onCancelClick,okclick:this.onOkClick,yeardblclick:this.onOkClick,monthdblclick:this.onOkClick}}),this.disableAnim||picker.el.setStyle('display','none'),picker.hide(),this.on('beforehide',this.doHideMonthPicker,this));
return picker},onOkClick:function(picker,value){picker=value[0];value=value[1];var date=new Date(value,picker,this.getActive().getDate());date.getMonth()!==picker&&(date=Ext.Date.getLastDateOfMonth(new Date(value,picker,1)));this.setValue(date);this.hideMonthPicker()},onCancelClick:function(){this.selectedUpdate(this.activeDate);this.hideMonthPicker()},showPrevMonth:function(e){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.MONTH,-1))},showNextMonth:function(e){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(e){e.stopEvent();this.disabled||(e=e.getWheelDelta(),0<e?this.showPrevMonth():0>e&&this.showNextMonth())},handleDateClick:function(e,t){var handler=this.handler;e.stopEvent();this.disabled||!t.dateValue||Ext.fly(t.parentNode).hasCls(this.disabledCellCls)||(this.setValue(new Date(t.dateValue)),
this.fireEvent('select',this,this.value),handler&&Ext.callback(handler,this.scope,[this,this.value],null,this,this),this.onSelect())},onSelect:function(){this.hideOnSelect&&this.hide()},selectToday:function(){var btn=this.todayBtn,handler=this.handler;btn&&!btn.disabled&&(this.setValue(Ext.Date.clearTime(new Date)),this.fireEvent('select',this,this.value),handler&&Ext.callback(handler,this.scope,[this,this.value],null,this,this),this.onSelect());return this},selectedUpdate:function(date){date=date.getTime();
var cells=this.cells,cls=this.selectedCls,c,cLen=cells.getCount(),cell;this.eventEl.dom.setAttribute('aria-busy','true');if(cell=this.activeCell)Ext.fly(cell).removeCls(cls),cell.setAttribute('aria-selected',!1);for(c=0;c<cLen;c++)if(cell=cells.item(c),this.textNodes[c].dateValue===date){this.activeCell=cell.dom;this.eventEl.dom.setAttribute('aria-activedescendant',cell.dom.id);cell.dom.setAttribute('aria-selected',!0);cell.addCls(cls);this.fireEvent('highlightitem',this,cell);break}this.eventEl.dom.removeAttribute('aria-busy')},
fullUpdate:function(date){var me=this,cells=me.cells.elements,textNodes=me.textNodes,disabledCls=me.disabledCellCls,eDate=Ext.Date,i=0,extraDays=0,newDate=+eDate.clearTime(date,!0),today=+eDate.clearTime(new Date),min=me.minDate?eDate.clearTime(me.minDate,!0):Number.NEGATIVE_INFINITY,max=me.maxDate?eDate.clearTime(me.maxDate,!0):Number.POSITIVE_INFINITY,ddMatch=me.disabledDatesRE,ddText=me.disabledDatesText,ddays=me.disabledDays?me.disabledDays.join(''):!1,ddaysText=me.disabledDaysText,format=me.format,
days=eDate.getDaysInMonth(date),startingPos=eDate.getFirstDateOfMonth(date).getDay()-me.startDay,previousMonth=eDate.add(date,eDate.MONTH,-1),ariaTitleDateFormat=me.ariaTitleDateFormat,formatValue,value;0>startingPos&&(startingPos+=7);days+=startingPos;var prevStart=eDate.getDaysInMonth(previousMonth)-startingPos;var current=new Date(previousMonth.getFullYear(),previousMonth.getMonth(),prevStart,me.initHour);me.showToday&&(previousMonth=eDate.clearTime(new Date),previousMonth=previousMonth<min||previousMonth>
max||ddMatch&&format&&ddMatch.test(eDate.dateFormat(previousMonth,format))||ddays&&-1!==ddays.indexOf(previousMonth.getDay()),me.todayDisabled=previousMonth,me.disabled||me.todayBtn.setDisabled(previousMonth));previousMonth=function(cellIndex,cls){var cell=cells[cellIndex],describedBy=[];cell.hasAttribute('id')||cell.setAttribute('id',me.id+'-cell-'+cellIndex);value=+eDate.clearTime(current,!0);cell.firstChild.dateValue=value;cell.setAttribute('aria-label',eDate.format(current,ariaTitleDateFormat));
cell.removeAttribute('aria-describedby');cell.removeAttribute('data-qtip');value===today&&(cls+=' '+me.todayCls,describedBy.push(me.id+'-todayText'));value===newDate?(me.activeCell=cell,me.eventEl.dom.setAttribute('aria-activedescendant',cell.id),cell.setAttribute('aria-selected',!0),cls+=' '+me.selectedCls,me.fireEvent('highlightitem',me,cell)):cell.setAttribute('aria-selected',!1);value<min?(cls+=' '+disabledCls,describedBy.push(me.id+'-ariaMinText'),cell.setAttribute('data-qtip',me.minText)):value>
max?(cls+=' '+disabledCls,describedBy.push(me.id+'-ariaMaxText'),cell.setAttribute('data-qtip',me.maxText)):ddays&&-1!==ddays.indexOf(current.getDay())?(cell.setAttribute('data-qtip',ddaysText),describedBy.push(me.id+'-ariaDisabledDaysText'),cls+=' '+disabledCls):ddMatch&&format&&(formatValue=eDate.dateFormat(current,format),ddMatch.test(formatValue)&&(cell.setAttribute('data-qtip',ddText.replace('%0',formatValue)),describedBy.push(me.id+'-ariaDisabledDatesText'),cls+=' '+disabledCls));describedBy.length&&
cell.setAttribute('aria-describedby',describedBy.join(' '));cell.className=cls+' '+me.cellCls};for(me.eventEl.dom.setAttribute('aria-busy','true');i<me.numDays;++i){if(i<startingPos){var html=++prevStart;var cls$jscomp$0=me.prevCls}else i>=days?(html=++extraDays,cls$jscomp$0=me.nextCls):(html=i-startingPos+1,cls$jscomp$0=me.activeCls);textNodes[i].innerHTML=html;current.setDate(current.getDate()+1);previousMonth(i,cls$jscomp$0)}me.eventEl.dom.removeAttribute('aria-busy');me.monthBtn.setText(Ext.Date.format(date,
me.monthYearFormat))},update:function(date,forceRefresh){var active=this.activeDate;this.rendered&&(this.activeDate=date,!forceRefresh&&active&&this.el&&active.getMonth()===date.getMonth()&&active.getFullYear()===date.getFullYear()?this.selectedUpdate(date,active):this.fullUpdate(date,active));return this},doDestroy:function(){this.rendered&&Ext.destroy(this.keyNav,this.monthPicker,this.monthBtn,this.nextRepeater,this.prevRepeater,this.todayBtn,this.todayElSpan);Ext.Component.prototype.doDestroy.call(this)},
privates:{finishRenderChildren:function(){Ext.Component.prototype.finishRenderChildren.call(this);this.monthBtn.finishRender();this.showToday&&this.todayBtn.finishRender()},getFocusEl:function(){return this.eventEl},syncDisabled:function(disabled,doButton){var keyNav=this.keyNav,todayBtn=this.todayBtn;keyNav&&(keyNav.setDisabled(disabled),this.prevRepeater.setDisabled(disabled),this.nextRepeater.setDisabled(disabled));doButton&&todayBtn&&todayBtn.setDisabled(this.todayDisabled||disabled)}}},0,['datepicker'],
['component','box','datepicker'],{component:!0,box:!0,datepicker:!0},['widget.datepicker'],0,[Ext.picker,'Date',Ext,'DatePicker'],0);Ext.define('Theme.override.picker.Date',{override:'Ext.picker.Date',beforeRender:function(){(arguments.callee.$previous||Ext.Component.prototype.beforeRender).call(this);this.todayBtn&&Ext.apply(this.todayBtn,{ui:'text',iconCls:'calendar'})}});
Ext.cmd.derive('Ext.form.field.Date',Ext.form.field.Picker,{alternateClassName:['Ext.form.DateField','Ext.form.Date'],format:'m/d/Y',ariaFormat:'M j 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',ariaDisabledDaysText:'This day of week is disabled',disabledDatesText:'Disabled',ariaDisabledDatesText:'This date cannot be selected',minText:'The date in this field must be equal to or after {0}',ariaMinText:'The date must be equal to or after {0}',
maxText:'The date in this field must be equal to or before {0}',ariaMaxText:'The date must be equal to or before {0}',invalidText:'{0} is not a valid date - it must be in the format {1}',formatText:'Expected date format {0}.',triggerCls:'x-form-date-trigger',showToday:!0,useStrict:void 0,initTime:'12',initTimeFormat:'H',matchFieldWidth:!1,startDay:0,valuePublishEvent:['select','blur'],componentCls:'x-form-field-date',ariaRole:'combobox',rawDate:null,rawDateText:'',initComponent:function(){var isString=
Ext.isString;var min=this.minValue;var max=this.maxValue;isString(min)&&(this.minValue=this.parseDate(min));isString(max)&&(this.maxValue=this.parseDate(max));this.disabledDatesRE=null;this.initDisabledDays();Ext.form.field.Picker.prototype.initComponent.call(this)},getSubTplData:function(fieldData){var ariaAttr;fieldData=Ext.form.field.Picker.prototype.getSubTplData.call(this,fieldData);!this.ariaStaticRoles[this.ariaRole]&&(ariaAttr=fieldData.ariaElAttributes)&&(ariaAttr['aria-owns']=this.id+'-inputEl '+
this.id+'-picker-eventEl',ariaAttr['aria-autocomplete']='none');return fieldData},initValue:function(){var value=this.value;Ext.isString(value)?(this.rawDate=this.value=this.rawToValue(value),this.rawDateText=this.parseDate(this.value)):this.rawDateText=(this.rawDate=this.value=value||null)?this.parseDate(this.value):'';Ext.form.field.Picker.prototype.initValue.call(this)},initDisabledDays:function(){if(this.disabledDates){var dd=this.disabledDates,len=dd.length-1,re='(?:',d,dLen=dd.length;for(d=
0;d<dLen;d++){var date=dd[d];re+=Ext.isDate(date)?'^'+Ext.String.escapeRegex(date.dateFormat(this.format))+'$':date;d!==len&&(re+='|')}this.disabledDatesRE=new RegExp(re+')')}},setDisabledDates:function(disabledDates){var picker=this.picker;this.disabledDates=disabledDates;this.initDisabledDays();picker&&picker.setDisabledDates(this.disabledDatesRE)},setDisabledDays:function(disabledDays){var picker=this.picker;this.disabledDays=disabledDays;picker&&picker.setDisabledDays(disabledDays)},setMinValue:function(value){var picker=
this.picker;this.minValue=value=Ext.isString(value)?this.parseDate(value):value;picker&&(picker.minText=Ext.String.format(this.minText,this.formatDate(this.minValue)),picker.setMinDate(value))},setMaxValue:function(value){var picker=this.picker;this.maxValue=value=Ext.isString(value)?this.parseDate(value):value;picker&&(picker.maxText=Ext.String.format(this.maxText,this.formatDate(this.maxValue)),picker.setMaxDate(value))},getErrors:function(value){value=0<arguments.length?value:this.formatDate(this.processRawValue(this.getRawValue()));
var format=Ext.String.format,clearTime=Ext.Date.clearTime,errors=Ext.form.field.Picker.prototype.getErrors.call(this,value),disabledDays=this.disabledDays,disabledDatesRE=this.disabledDatesRE,minValue=this.minValue,maxValue=this.maxValue,len=disabledDays?disabledDays.length:0,i=0;if(null===value||1>value.length)return errors;var svalue=value;value=this.parseDate(value);if(!value)return errors.push(format(this.invalidText,svalue,Ext.Date.unescapeFormat(this.format))),errors;svalue=value.getTime();
minValue&&svalue<clearTime(minValue).getTime()&&errors.push(format(this.minText,this.formatDate(minValue)));maxValue&&svalue>clearTime(maxValue).getTime()&&errors.push(format(this.maxText,this.formatDate(maxValue)));if(disabledDays)for(clearTime=value.getDay();i<len;i++)if(clearTime===disabledDays[i]){errors.push(this.disabledDaysText);break}disabledDays=this.formatDate(value);disabledDatesRE&&disabledDatesRE.test(disabledDays)&&errors.push(format(this.disabledDatesText,disabledDays));return errors},
rawToValue:function(rawValue){return rawValue===this.rawDateText?this.rawDate:this.parseDate(rawValue)||rawValue||null},valueToRaw:function(value){return this.formatDate(this.parseDate(value))},setValue:function(v){this.lastValue=this.rawDateText;this.lastDate=this.rawDate;Ext.isDate(v)?(this.rawDate=v,this.rawDateText=this.formatDate(v)):(this.rawDate=this.rawToValue(v),this.rawDateText=this.formatDate(v),this.rawDate===v&&(this.rawDate=null,this.rawDateText=''));Ext.form.field.Picker.prototype.setValue.apply(this,
arguments)},checkChange:function(){if(!this.suspendCheckChange){var newVal=this.getRawValue();var oldVal=this.lastValue;var lastDate=this.lastDate;!this.destroyed&&this.didValueChange(newVal,oldVal)&&(this.rawDate=this.rawToValue(newVal),this.rawDateText=this.formatDate(newVal),this.lastValue=newVal,this.lastDate=this.rawDate,this.fireEvent('change',this,this.getValue(),lastDate),this.onChange(newVal,oldVal))}},safeParse:function(value,format){var utilDate=Ext.Date,result=null,strict=this.useStrict;
utilDate.formatContainsHourInfo(format)?result=utilDate.parse(value,format,strict):(value=utilDate.parse(value+' '+this.initTime,format+' '+this.initTimeFormat,strict))&&(result=utilDate.clearTime(value));return result},getSubmitValue:function(){var format=this.submitFormat||this.format,value=this.rawDate;return value?Ext.Date.format(value,format):''},getValue:function(){return this.rawDate||null},setRawValue:function(value){Ext.form.field.Picker.prototype.setRawValue.call(this,value);this.rawDate=
Ext.isDate(value)?value:this.rawToValue(value);this.rawDateText=this.formatDate(value)},parseDate:function(value){if(!value||Ext.isDate(value))return value;var val=this.safeParse(value,this.format),altFormats=this.altFormats,altFormatsArray=this.altFormatsArray,i=0;if(!val&&altFormats)for(altFormatsArray=altFormatsArray||altFormats.split('|'),altFormats=altFormatsArray.length;i<altFormats&&!val;++i)val=this.safeParse(value,altFormatsArray[i]);return val},formatDate:function(date,format){return Ext.isDate(date)?
Ext.Date.dateFormat(date,format||this.format):date},createPicker:function(){var me=this,format=Ext.String.format;return new Ext.picker.Date({id:me.id+'-picker',pickerField:me,floating:!0,preventRefocus:!0,hidden:!0,minDate:me.minValue,maxDate:me.maxValue,disabledDatesRE:me.disabledDatesRE,disabledDatesText:me.disabledDatesText,ariaDisabledDatesText:me.ariaDisabledDatesText,disabledDays:me.disabledDays,disabledDaysText:me.disabledDaysText,ariaDisabledDaysText:me.ariaDisabledDaysText,format:me.format,
showToday:me.showToday,startDay:me.startDay,minText:format(me.minText,me.formatDate(me.minValue)),ariaMinText:format(me.ariaMinText,me.formatDate(me.minValue,me.ariaFormat)),maxText:format(me.maxText,me.formatDate(me.maxValue)),ariaMaxText:format(me.ariaMaxText,me.formatDate(me.maxValue,me.ariaFormat)),listeners:{scope:me,select:me.onSelect,tabout:me.onTabOut},keyNavConfig:{esc:function(){me.inputEl.focus();me.collapse()}}})},onSelect:function(m,d){this.setValue(d);this.rawDate=d;this.fireEvent('select',
this,d);this.onTabOut(m)},onTabOut:function(picker){this.inputEl.focus();this.collapse()},onExpand:function(){var value=this.rawDate;this.picker.setValue(Ext.isDate(value)?value:new Date)},onBlur:function(e){var v=this.rawToValue(this.getRawValue());(''===v||Ext.isDate(v))&&this.setValue(v);Ext.form.field.Picker.prototype.onBlur.call(this,e)}},0,['datefield'],'component box field textfield pickerfield datefield'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,datefield:!0},['widget.datefield'],
0,[Ext.form.field,'Date',Ext.form,'DateField',Ext.form,'Date'],0);
Ext.cmd.derive('Ext.form.field.Display',Ext.form.field.Base,{alternateClassName:['Ext.form.DisplayField','Ext.form.Display'],fieldSubTpl:['\x3cdiv id\x3d"{id}" data-ref\x3d"inputEl" role\x3d"textbox" aria-readonly\x3d"true"',' aria-labelledby\x3d"{cmpId}-labelEl" {inputAttrTpl}',' tabindex\x3d"\x3ctpl if\x3d"tabIdx !\x3d null"\x3e{tabIdx}\x3ctpl else\x3e-1\x3c/tpl\x3e"','\x3ctpl if\x3d"fieldStyle"\x3e style\x3d"{fieldStyle}"\x3c/tpl\x3e',' class\x3d"{fieldCls} {fieldCls}-{ui}"\x3e{value}\x3c/div\x3e',
{compiled:!0,disableFormats:!0}],ariaRole:void 0,focusable:!1,skipLabelForAttribute:!0,readOnly:!0,fieldCls:'x-form-display-field',fieldBodyCls:'x-form-display-field-body',htmlEncode:!1,noWrap:!1,validateOnChange:!1,initEvents:Ext.emptyFn,submitValue:!1,getValue:function(){return this.value},valueToRaw:function(value){return value||0===value||!1===value?value:''},isDirty:function(){return!1},isValid:Ext.returnTrue,validate:Ext.returnTrue,getRawValue:function(){return this.rawValue},setRawValue:function(value){this.rawValue=
value=Ext.valueFrom(value,'');this.rendered&&(this.inputEl.dom.innerHTML=this.getDisplayValue(),this.updateLayout());return value},getDisplayValue:function(){var value=this.getRawValue();return this.renderer?this.renderer.call(this.scope||this,value,this):this.htmlEncode?Ext.util.Format.htmlEncode(value):value},getSubTplData:function(fieldData){var ret=Ext.form.field.Base.prototype.getSubTplData.apply(this,arguments);ret.value=this.getDisplayValue();return ret}},0,['displayfield'],['component','box',
'field','displayfield'],{component:!0,box:!0,field:!0,displayfield:!0},['widget.displayfield'],0,[Ext.form.field,'Display',Ext.form,'DisplayField',Ext.form,'Display'],0);
Ext.cmd.derive('Ext.form.field.FileButton',Ext.button.Button,{childEls:['fileInputEl'],inputCls:'x-form-file-input',cls:'x-form-file-btn',preventDefault:!1,tabIndex:void 0,useTabGuards:Ext.isIE||Ext.isEdge,promptCalled:!1,autoEl:{tag:'div',unselectable:'on'},afterTpl:['\x3cinput id\x3d"{id}-fileInputEl" data-ref\x3d"fileInputEl" class\x3d"{childElCls} {inputCls}" ','type\x3d"file" size\x3d"1" name\x3d"{inputName}" unselectable\x3d"on" ','\x3ctpl if\x3d"accept !\x3d null"\x3eaccept\x3d"{accept}"\x3c/tpl\x3e',
'\x3ctpl if\x3d"tabIndex !\x3d null"\x3etabindex\x3d"{tabIndex}"\x3c/tpl\x3e','\x3e'],keyMap:null,ariaEl:'fileInputEl',getAfterMarkup:function(values){return this.lookupTpl('afterTpl').apply(values)},getTemplateArgs:function(){var args=Ext.button.Button.prototype.getTemplateArgs.call(this);args.inputCls=this.inputCls;args.inputName=this.inputName||this.id;args.tabIndex=null!=this.tabIndex?this.tabIndex:null;args.accept=this.accept||null;args.role=this.ariaRole;return args},afterRender:function(){Ext.button.Button.prototype.afterRender.apply(this,
arguments);var listeners={scope:this,mousedown:this.handlePrompt,keydown:this.handlePrompt,change:this.fireChange,focus:this.onFileFocus,blur:this.onFileBlur};if(this.useTabGuards){var cfg={tag:'span',role:'button','aria-hidden':'true','data-tabguard':'true',style:{height:0,width:0}};cfg.tabIndex=null!=this.tabIndex?this.tabIndex:0;this.beforeInputGuard=this.el.createChild(cfg,this.fileInputEl);this.afterInputGuard=this.el.createChild(cfg);this.afterInputGuard.insertAfter(this.fileInputEl);this.beforeInputGuard.on('focus',
this.onInputGuardFocus,this);this.afterInputGuard.on('focus',this.onInputGuardFocus,this);listeners.keydown=this.onFileInputKeydown}this.fileInputEl.on(listeners)},fireChange:function(e){this.fireEvent('change',this,e,this.fileInputEl.dom.value)},createFileInput:function(isTemporary){isTemporary=this.fileInputEl=this.el.createChild({name:this.inputName||this.id,id:isTemporary?void 0:this.id+'-fileInputEl',cls:this.inputCls+(this.getInherited().rtl?' x-rtl':''),tag:'input',type:'file',size:1,unselectable:'on'},
this.afterInputGuard);isTemporary.dom.setAttribute('data-componentid',this.id);null!=this.tabIndex&&this.setTabIndex(this.tabIndex);this.accept&&isTemporary.dom.setAttribute('accept',this.accept);var listeners={scope:this,change:this.fireChange,mousedown:this.handlePrompt,keydown:this.handlePrompt,focus:this.onFileFocus,blur:this.onFileBlur};this.useTabGuards&&(listeners.keydown=this.onFileInputKeydown);isTemporary.on(listeners)},handlePrompt:function(e){if('keydown'==e.type){var key=e.getKey();this.promptCalled=
!Ext.isIE&&key===e.ENTER||key===e.SPACE?!0:!1}else this.promptCalled=!0},onFileFocus:function(e){var ownerCt=this.ownerCt;if(!this.hasFocus)this.onFocus(e);if(ownerCt&&!ownerCt.hasFocus)ownerCt.onFocus(e)},onFileBlur:function(e){var ownerCt=this.ownerCt;if(this.promptCalled)this.promptCalled=!1,e.preventDefault();else{if(this.hasFocus)this.onBlur(e);if(ownerCt&&ownerCt.hasFocus)ownerCt.onBlur(e)}},onInputGuardFocus:function(e){this.fileInputEl.focus()},onFileInputKeydown:function(e){var key=e.getKey(),
focusTo;if(key===e.TAB){if(focusTo=e.shiftKey?this.beforeInputGuard:this.afterInputGuard)focusTo.suspendEvent('focus'),focusTo.focus(),setTimeout(function(){focusTo.resumeEvent('focus')},0)}else key!==e.ENTER&&key!==e.SPACE||this.handlePrompt(e);return!0},reset:function(remove){remove&&this.fileInputEl.destroy();this.createFileInput(!remove);remove&&(this.ariaEl=this.fileInputEl)},restoreInput:function(el){this.fileInputEl.destroy();el=Ext.get(el);this.useTabGuards?el.insertBefore(this.afterInputGuard):
this.el.appendChild(el);this.fileInputEl=el},onDisable:function(){Ext.button.Button.prototype.onDisable.call(this);this.fileInputEl.dom.disabled=!0},onEnable:function(){Ext.button.Button.prototype.onEnable.call(this);this.fileInputEl.dom.disabled=!1},privates:{getFocusEl:function(){return this.fileInputEl},getFocusClsEl:function(){return this.el},setTabIndex:function(tabIndex){this.focusable&&(this.tabIndex=tabIndex,!this.rendered||this.destroying||this.destroyed||(this.useTabGuards?(this.fileInputEl.dom.setAttribute('tabIndex',
-1),this.beforeInputGuard.dom.setAttribute('tabIndex',tabIndex),this.afterInputGuard.dom.setAttribute('tabIndex',tabIndex)):this.fileInputEl.dom.setAttribute('tabIndex',tabIndex)))}}},0,['filebutton'],['component','box','button','filebutton'],{component:!0,box:!0,button:!0,filebutton:!0},['widget.filebutton'],0,[Ext.form.field,'FileButton'],0);
Ext.cmd.derive('Ext.form.trigger.Component',Ext.form.trigger.Trigger,{cls:'x-form-trigger-cmp',onFieldRender:function(){var component=this.component;Ext.form.trigger.Trigger.prototype.onFieldRender.call(this);component.isComponent||component.isWidget||(component=Ext.widget(component));this.component=component;component.render(this.el)},destroy:function(){var component=this.component;(component.isComponent||component.isWidget)&&component.destroy();this.component=null;Ext.form.trigger.Trigger.prototype.destroy.call(this)}},
0,0,0,0,['trigger.component'],0,[Ext.form.trigger,'Component'],0);
Ext.cmd.derive('Ext.form.field.File',Ext.form.field.Text,{alternateClassName:['Ext.form.FileUploadField','Ext.ux.form.FileUploadField','Ext.form.File'],emptyText:void 0,needArrowKeys:!1,triggers:{filebutton:{type:'component',hideOnReadOnly:!1,preventMouseDown:!1}},buttonText:'Browse...',buttonOnly:!1,buttonMargin:3,clearOnSubmit:!0,extraFieldBodyCls:'x-form-file-wrap',inputCls:'x-form-text-file',readOnly:!0,editable:!1,submitValue:!1,triggerNoEditCls:'',childEls:['browseButtonWrap'],applyTriggers:function(triggers){var triggerCfg=
(triggers||{}).filebutton;if(triggerCfg)return triggerCfg.component=Ext.apply({xtype:'filebutton',ownerCt:this,id:this.id+'-button',ui:this.ui,disabled:this.disabled,tabIndex:this.tabIndex,text:this.buttonText,style:this.buttonOnly?'':this.getButtonMarginProp()+this.buttonMargin+'px',accept:this.accept,inputName:this.getName(),listeners:{scope:this,change:this.onFileChange}},this.buttonConfig),Ext.form.field.Text.prototype.applyTriggers.call(this,triggers)},getSubTplData:function(fieldData){fieldData=
Ext.form.field.Text.prototype.getSubTplData.call(this,fieldData);fieldData.tabIdx=-1;return fieldData},onRender:function(){(arguments.callee.$previous||Ext.form.field.Text.prototype.onRender).apply(this,arguments);var inputEl=this.inputEl;inputEl.dom.name='';inputEl.on('focus',this.onInputFocus,this);inputEl.on('mousedown',this.onInputMouseDown,this);inputEl=this.getTrigger('filebutton');var button=this.button=inputEl.component;this.fileInputEl=button.fileInputEl;button=button.el;this.buttonOnly&&
(this.inputWrap.setDisplayed(!1),this.shrinkWrap=3);inputEl.el.setWidth(button.getWidth()+button.getMargin('lr'));Ext.isIE&&this.button.getEl().repaint()},getTriggerMarkup:function(){return'\x3ctd id\x3d"'+this.id+'-browseButtonWrap" data-ref\x3d"browseButtonWrap" role\x3d"presentation"\x3e\x3c/td\x3e'},onFileChange:function(button,e,value){this.duringFileSelect=!0;Ext.form.field.File.superclass.setValue.call(this,value);delete this.duringFileSelect},didValueChange:function(){return!!this.duringFileSelect},
setEmptyText:Ext.emptyFn,setValue:Ext.emptyFn,reset:function(){var clear=this.clearOnSubmit;this.rendered&&(this.button.reset(clear),this.fileInputEl=this.button.fileInputEl,clear&&(this.inputEl.dom.value='',Ext.form.field.File.superclass.setValue.call(this,null)));Ext.form.field.Text.prototype.reset.call(this)},onShow:function(){Ext.form.field.Text.prototype.onShow.call(this);this.button.updateLayout()},onDisable:function(){Ext.form.field.Text.prototype.onDisable.call(this);this.button.disable()},
onEnable:function(){Ext.form.field.Text.prototype.onEnable.call(this);this.button.enable()},isFileUpload:Ext.returnTrue,extractFileInput:function(){if(this.rendered){var fileInput=this.button.fileInputEl.dom;this.reset()}else fileInput=document.createElement('input'),fileInput.type='file',fileInput.className='x-hidden-display',fileInput.name=this.getName();return fileInput},restoreInput:function(el){if(this.rendered){var button=this.button;button.restoreInput(el);this.fileInputEl=button.fileInputEl}},
doDestroy:function(){this.fileInputEl=this.button=null;Ext.form.field.Text.prototype.doDestroy.call(this)},getButtonMarginProp:function(){return this.getInherited().rtl?'margin-right:':'margin-left:'},onInputFocus:function(e){this.selectOnFocus&&document.activeElement===this.inputEl.dom&&this.inputEl.dom.select();this.focus();Ext.isIE9m&&(this.fileInputEl.addCls('x-position-relative'),this.fileInputEl.removeCls('x-position-relative'))},onInputMouseDown:function(e){e.preventDefault();this.focus()},
privates:{getFocusEl:function(){return this.button},getFocusClsEl:Ext.privateFn}},0,['filefield','fileuploadfield'],'component box field textfield filefield fileuploadfield'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,filefield:!0,fileuploadfield:!0},['widget.filefield','widget.fileuploadfield'],0,[Ext.form.field,'File',Ext.form,'FileUploadField',Ext.ux.form,'FileUploadField',Ext.form,'File'],0);
Ext.cmd.derive('Ext.form.field.Hidden',Ext.form.field.Base,{alternateClassName:'Ext.form.Hidden',focusable:!1,inputType:'hidden',isTextInput:!1,hideLabel:!0,hidden:!0,ariaRole:'presentation',initComponent:function(){this.formItemCls+='-hidden';Ext.form.field.Base.prototype.initComponent.call(this)},isEqual:function(value1,value2){return this.isEqualAsString(value1,value2)},initEvents:Ext.emptyFn,setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,
markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,['hidden','hiddenfield'],['component','box','field','hiddenfield','hidden'],{component:!0,box:!0,field:!0,hiddenfield:!0,hidden:!0},['widget.hidden','widget.hiddenfield'],0,[Ext.form.field,'Hidden',Ext.form,'Hidden'],0);
Ext.cmd.derive('Ext.tip.Tip',Ext.panel.Panel,{alternateClassName:'Ext.Tip',minWidth:40,maxWidth:500,shadow:'sides',constrainPosition:!0,autoRender:!0,hidden:!0,baseCls:'x-tip',focusOnToFront:!1,maskOnDisable:!1,closeAction:'hide',alwaysFramed:!0,frameHeader:!1,initComponent:function(){this.floating=Ext.apply({},{shadow:this.shadow},this.self.prototype.floating);Ext.panel.Panel.prototype.initComponent.apply(this,arguments);this.constrain=this.constrain||this.constrainPosition},showAt:function(xy){this.calledFromShowAt=
!0;Ext.panel.Panel.prototype.showAt.apply(this,arguments);this.isVisible()&&this.doAlignment(this.getRegion().alignTo({target:new Ext.util.Point(xy[0],xy[1]),inside:this.constrainPosition?Ext.getBody().getRegion().adjust(5,-5,-5,5):null,align:'tl-tl',overlap:!0}));this.calledFromShowAt=0},doAlignment:function(newRegion){var anchorEl=this.anchorEl,anchorRegion=newRegion.anchor;this.setPagePosition([newRegion.x,newRegion.y]);anchorEl&&(anchorEl.removeCls(this.anchorCls),anchorRegion?(this.anchorCls=
'x-tip-anchor-'+anchorRegion.position,anchorEl.addCls(this.anchorCls),anchorEl.show(),anchorRegion.align&1?(anchorEl.setTop(newRegion.anchor.y-newRegion.y),anchorEl.dom.style.left=''):(anchorEl.setLeft(newRegion.anchor.x-newRegion.x),anchorEl.dom.style.top='')):anchorEl.hide())},privates:{initDraggable:function(){this.draggable={el:this.getDragEl(),delegate:this.header.el,constrain:this,constrainTo:this.el.dom.parentNode};Ext.Component.prototype.initDraggable.call(this)}},ghost:void 0,unghost:void 0},
0,['tip'],['component','box','container','panel','tip'],{component:!0,box:!0,container:!0,panel:!0,tip:!0},['widget.tip'],0,[Ext.tip,'Tip',Ext,'Tip'],0);
Ext.cmd.derive('Ext.tip.ToolTip',Ext.tip.Tip,{alternateClassName:'Ext.ToolTip',autoHide:!0,showDelay:500,hideDelay:200,dismissDelay:5E3,mouseOffset:[15,18],trackMouse:!1,anchorToTarget:!0,targetCounter:0,quickShowInterval:250,hideAction:'hide',fadeOutDuration:1E3,defaultAlign:'bl-tl',ariaRole:'tooltip',alwaysOnTop:!0,initComponent:function(){Ext.tip.Tip.prototype.initComponent.call(this);this.setTarget(this.target);this.currentTarget=new Ext.dom.Fly},onRender:function(ct,position){Ext.tip.Tip.prototype.onRender.apply(this,
arguments);this.anchorEl=this.el.createChild({role:'presentation',cls:'x-tip-anchor'})},show:function(){if(!this.currentTarget.dom&&this.target)return this.showBy(this.target);Ext.tip.Tip.prototype.show.call(this)},setTarget:function(target){this.targetListeners&&this.targetListeners.destroy();if(target){this.target=target=Ext.get(target.el||target);var listeners={mouseover:'onTargetOver',mouseout:'onTargetOut',mousemove:'onMouseMove',tap:'onTargetTap',scope:this,destroyable:!0};this.targetListeners=
target.on(listeners)}else this.target=null},onMouseMove:function(e){var dismissDelay=this.dismissDelay;this.pointerEvent=e;this.isVisible()&&this.currentTarget.contains(e.target)&&(dismissDelay&&!1!==this.autoHide&&(this.clearTimer('dismiss'),this.dismissTimer=Ext.defer(this.hide,dismissDelay,this)),this.trackMouse&&this.doAlignment(this.getAlignRegion()))},getAlignRegion:function(){var anchorEl=this.anchorEl,align=this.getAnchorAlign(),mouseOffset=this.mouseOffset;this.anchorSize||(anchorEl.addCls('x-tip-anchor-top'),
anchorEl.show(),this.anchorSize=new Ext.util.Offset(anchorEl.getWidth(),anchorEl.getHeight()),anchorEl.removeCls('x-tip-anchor-top'),anchorEl.hide());if((this.anchor||this.align)&&this.anchorToTarget&&!this.trackMouse)anchorEl=this.currentTarget.getRegion();else if(anchorEl=this.pointerEvent?this.pointerEvent.getPoint().adjust(-mouseOffset[1],mouseOffset[0],mouseOffset[1],-mouseOffset[0]):new Ext.util.Point,!this.anchor){var overlap=!0;align=0<mouseOffset[0]?0<mouseOffset[1]?'tl-br':'bl-tr':0<mouseOffset[1]?
'tr-bl':'br-tl'}align={align:this.convertPositionSpec(align),axisLock:this.axisLock,target:anchorEl,overlap:overlap,offset:this.targetOffset,inside:this.constrainPosition?Ext.getBody().getRegion().adjust(5,-5,-5,5):null};this.anchor&&(align.anchorSize=this.anchorSize);return this.getRegion().alignTo(align)},fadeOut:function(){var me=this;me.el.fadeOut({duration:me.fadeOutDuration,callback:function(){me.hide();me.el.setOpacity('')}})},getAnchorAlign:function(){switch(this.anchor){case 'top':return'tl-bl';
case 'left':return'tl-tr';case 'right':return'tr-tl';default:return this.defaultAlign}},onTargetTap:function(e){if(this.showOnTap&&'mouse'!==e.pointerType)this.onTargetOver(e)},onTargetOver:function(e){var delegate=this.delegate,currentTarget=this.currentTarget,fromElement=e.relatedTarget||e.fromElement,myListeners=this.hasListeners;if(!this.disabled){if(delegate){if(currentTarget.contains(e.target)||(delegate=e.getTarget(delegate))&&Ext.fly(delegate).contains(e.fromElement))return}else{if(this.target.contains(fromElement))return;
delegate=this.target.dom}delegate?((myListeners.beforeshow||myListeners.show)&&this.isVisible()&&this.hide(),this.triggerElement=delegate,this.pointerEvent=e,currentTarget.attach(delegate),this.handleTargetOver(delegate,e)):currentTarget.dom&&this.handleTargetOut()}},handleTargetOver:function(target,event){'mouse'!==event.pointerType?this.showFromDelay():this.delayShow()},delayShow:function(){this.clearTimer('hide');this.hidden&&!this.showTimer?this.delegate&&Ext.Date.getElapsed(this.lastHidden)<
this.quickShowInterval?this.showFromDelay():this.showTimer=Ext.defer(this.showFromDelay,'mouse'!==this.pointerEvent.pointerType?0:this.showDelay,this):this.hidden||!1===this.autoHide||this.showFromDelay()},showFromDelay:function(){this.disabled||(this.fireEvent('hovertarget',this,this.currentTarget,this.currentTarget.dom),this.isVisible()?this.handleAfterShow():(this.triggerElement=this.currentTarget.dom,this.fromDelayShow=!0,this.show(),this.fromDelayShow=!1))},onTargetOut:function(e){this.currentTarget.dom&&
!this.currentTarget.contains(e.relatedTarget)&&this.handleTargetOut()},handleTargetOut:function(){this.showTimer&&this.clearTimer('show');this.isVisible()&&this.autoHide&&this.delayHide()},delayHide:function(){this.hidden||this.hideTimer||(this.clearTimer('dismiss'),this.hideTimer=Ext.defer(this[this.hideAction],this.hideDelay,this))},hide:function(){this.currentTarget.detach();this.clearTimer('dismiss');this.lastHidden=new Date;this.anchorEl&&this.anchorEl.hide();Ext.tip.Tip.prototype.hide.apply(this,
arguments);this.triggerElement=null},afterShow:function(){Ext.tip.Tip.prototype.afterShow.call(this);this.handleAfterShow()},handleAfterShow:function(){this.clearTimers();this.calledFromShowAt||this.doAlignment(this.getAlignRegion());this.dismissDelay&&!1!==this.autoHide&&(this.dismissTimer=Ext.defer(this.hide,this.dismissDelay,this))},showBy:function(target){this.align=this.defaultAlign;this.currentTarget.attach(Ext.getDom(target.el||target));this.triggerElement=this.currentTarget.dom;this.show()},
_timerNames:{},clearTimer:function(name){var names=this._timerNames;names=names[name]||(names[name]=name+'Timer');var timer=this[names];timer&&(clearTimeout(timer),this[names]=null,'show'===name&&this.isHidden()&&this.currentTarget.detach())},clearTimers:function(){this.clearTimer('show');this.clearTimer('dismiss');this.clearTimer('hide')},onShow:function(){Ext.tip.Tip.prototype.onShow.call(this);this.mon(Ext.getDoc(),'mousedown',this.onDocMouseDown,this)},onHide:function(){Ext.tip.Tip.prototype.onHide.call(this);
this.mun(Ext.getDoc(),'mousedown',this.onDocMouseDown,this)},onDocMouseDown:function(e){this.closable||e.within(this.el.dom)||(this.disable(),Ext.defer(this.doEnable,100,this))},doEnable:function(){this.destroyed||this.enable()},onDisable:function(){Ext.tip.Tip.prototype.onDisable.call(this);this.clearTimers();this.hide()},doDestroy:function(){this.clearTimers();Ext.getDoc().un('mousedown',this.onDocMouseDown,this);Ext.destroy(this.anchorEl);Ext.tip.Tip.prototype.doDestroy.call(this)},privates:{clipTo:function(clippingEl,
sides){clippingEl=clippingEl.isRegion?clippingEl:(clippingEl.isComponent?clippingEl.el:Ext.fly(clippingEl)).getConstrainRegion();Ext.tip.Tip.prototype.clipTo.call(this,clippingEl,sides);this.anchorEl.clipTo(clippingEl,sides)}}},0,['tooltip'],'component box container panel tip tooltip'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tip:!0,tooltip:!0},['widget.tooltip'],0,[Ext.tip,'ToolTip',Ext,'ToolTip'],0);
Ext.cmd.derive('Ext.tip.QuickTip',Ext.tip.ToolTip,{alternateClassName:'Ext.QuickTip',interceptTitles:!1,title:'\x26#160;',tagConfig:{namespace:'data-',attribute:'qtip',width:'qwidth',target:'target',title:'qtitle',hide:'hide',cls:'qclass',align:'qalign',anchor:'anchor',showDelay:'qshowDelay',hideAction:'hideAction',anchorTarget:'anchorTarget'},isQuickTip:!0,shrinkWrapDock:!0,initComponent:function(){var cfg=this.tagConfig;cfg.attr||(cfg.attr=cfg.namespace+cfg.attribute);this.delegate=Ext.Function.bind(this.delegate,
this);this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.tip.ToolTip.prototype.initComponent.call(this)},setTagConfig:function(cfg){this.tagConfig=Ext.apply({},cfg);delete this.tagConfig.attr},text:null,register:function(config){for(var configs=Ext.isArray(config)?config:arguments,i=0,len=configs.length,target,j,targetLen;i<len;i++)if(config=configs[i],target=config.target)if(Ext.isArray(target))for(j=0,targetLen=target.length;j<targetLen;j++)this.targets[Ext.id(target[j])]=config;
else this.targets[Ext.id(target)]=config},unregister:function(el){delete this.targets[Ext.id(el)]},cancelShow:function(el){var currentTarget=this.currentTarget;el=Ext.getDom(el);this.isVisible()?currentTarget.dom===el&&this.hide():currentTarget.dom===el&&this.clearTimer('show')},delegate:function(target){var cfg=this.tagConfig;cfg=cfg.attr||(cfg.attr=cfg.namespace+cfg.attribute);return!!(target.getAttribute(cfg)||this.interceptTitles&&target.title)},getTipText:function(target){var titleText=target.title,
cfg=this.tagConfig;cfg=cfg.attr||(cfg.attr=cfg.namespace+cfg.attribute);return this.interceptTitles&&titleText?(target.setAttribute(cfg,titleText),target.removeAttribute('title'),titleText):target.getAttribute(cfg)},onTargetOver:function(event){var currentTarget=this.currentTarget,target=event.target,key;if(target&&1===target.nodeType&&target!==document.documentElement&&target!==document.body){this.pointerEvent=event;var targets=this.targets;for(key in targets)if(targets.hasOwnProperty(key)){var registeredTarget=
targets[key];if(registeredTarget.target&&Ext.fly(registeredTarget.target).contains(target)&&!Ext.fly(registeredTarget.target).contains(event.relatedTarget)){target=Ext.getDom(registeredTarget.target);currentTarget.attach(target);this.activeTarget=registeredTarget;registeredTarget.el=currentTarget;this.anchor=registeredTarget.anchor;this.activateTarget();return}}Ext.tip.ToolTip.prototype.onTargetOver.call(this,event)}},handleTargetOver:function(target,event){var currentTarget=this.currentTarget,cfg=
this.tagConfig,ns=cfg.namespace;event=this.getTipText(target,event);if(event){var autoHide=currentTarget.getAttribute(ns+cfg.hide);this.activeTarget={el:currentTarget,text:event,width:+currentTarget.getAttribute(ns+cfg.width)||null,autoHide:'user'!==autoHide&&'false'!==autoHide,title:currentTarget.getAttribute(ns+cfg.title),cls:currentTarget.getAttribute(ns+cfg.cls),align:currentTarget.getAttribute(ns+cfg.align),showDelay:currentTarget.getAttribute(ns+cfg.showDelay),hideAction:currentTarget.getAttribute(ns+
cfg.hideAction),alignTarget:currentTarget.getAttribute(ns+cfg.anchorTarget)};this.initialConfig.hasOwnProperty('anchor')||(this.anchor=currentTarget.getAttribute(ns+cfg.anchor));this.anchor&&!this.initialConfig.hasOwnProperty('anchorTarget')&&(this.alignTarget=this.activeTarget.alignTarget||target);this.activateTarget()}},activateTarget:function(){var activeTarget=this.activeTarget,delay=activeTarget.showDelay,hideAction;this.isVisible()?(this.updateContent(),this.handleAfterShow()):(activeTarget.showDelay&&
(delay=this.showDelay,this.showDelay=parseInt(activeTarget.showDelay,10)),this.delayShow(),activeTarget.showDelay&&(this.showDelay=delay),(hideAction=activeTarget.hideAction)?this.hideAction=hideAction:delete this.hideAction)},getAnchorAlign:function(){var active=this.activeTarget;return active&&active.align||Ext.tip.ToolTip.prototype.getAnchorAlign.call(this)},getAlignRegion:function(){var activeTarget=this.activeTarget,currentTargetDom=this.currentTarget.dom;activeTarget&&activeTarget.alignTarget&&
this.anchor&&!this.initialConfig.hasOwnProperty('anchorTarget')&&this.currentTarget.attach(Ext.getDom(activeTarget.alignTarget));this.anchorToTarget=!(!activeTarget.align&&!this.anchor);activeTarget=Ext.tip.ToolTip.prototype.getAlignRegion.call(this);this.currentTarget.attach(currentTargetDom);return activeTarget},handleTargetOut:function(e){var active=this.activeTarget,autoHide=this.autoHide,hideDelay=this.hideDelay;active&&!1!==autoHide&&(this.autoHide=!0,active.hideDelay&&(this.hideDelay=parseInt(active.hideDelay,
10)),Ext.tip.ToolTip.prototype.handleTargetOut.call(this,e),this.autoHide=autoHide,this.hideDelay=hideDelay)},targetTextEmpty:function(){var target=this.activeTarget,cfg=this.tagConfig,el;return target&&(el=target.el)&&(cfg=el.getAttribute(cfg.namespace+cfg.attribute),!cfg&&!this.targets[Ext.id(target.el.dom)])?!0:!1},show:function(){this.fromDelayShow&&this.targetTextEmpty()?(this.activeTarget=null,this.currentTarget.detach()):Ext.tip.ToolTip.prototype.show.apply(this,arguments)},beforeShow:function(){this.updateContent();
Ext.tip.ToolTip.prototype.beforeShow.apply(this,arguments)},updateContent:function(){var target=this.activeTarget,header=this.header;if(target){this.suspendLayouts();target.title?(this.setTitle(target.title),header.show()):header&&header.hide();this.update(target.text);this.autoHide=target.autoHide;header=target.dismissDelay;this.dismissDelay=Ext.isNumber(header)?header:this.dismissDelay;if(header=this.lastCls)this.removeCls(header),delete this.lastCls;if(header=target.cls)this.addCls(header),this.lastCls=
header;this.setWidth(target.width);this.align=target.align;this.resumeLayouts(!0)}},hide:function(){this.activeTarget=null;Ext.tip.ToolTip.prototype.hide.call(this)}},0,['quicktip'],'component box container panel tip tooltip quicktip'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tip:!0,tooltip:!0,quicktip:!0},['widget.quicktip'],0,[Ext.tip,'QuickTip',Ext,'QuickTip'],0);
Ext.define('MainApp.overrides.tip.QuickTip',{override:'Ext.tip.QuickTip',getTipText:function(target){var s=arguments.callee.$previous.apply(this,arguments);return Ext.util.Format.stripTags(s)}});
Ext.cmd.derive('Ext.tip.QuickTipManager',Ext.Base,{singleton:!0,alternateClassName:'Ext.QuickTips',disabled:!1,init:function(autoRender,config){if(!this.tip){if(!Ext.isReady)return Ext.onInternalReady(function(){Ext.tip.QuickTipManager.init(autoRender,config)}),!1;var tipConfig=Ext.apply({disabled:this.disabled,id:'ext-quicktips-tip'},config),className=tipConfig.className,xtype=tipConfig.xtype;className?delete tipConfig.className:xtype&&(className='widget.'+xtype,delete tipConfig.xtype);!1!==autoRender&&
(tipConfig.renderTo=document.body);this.tip=Ext.create(className||'Ext.tip.QuickTip',tipConfig);this.tip.destroy=Ext.emptyFn;Ext.quickTipsActive=!0}},destroy:function(){var tip=this.tip;tip&&(delete tip.destroy,tip.destroy(),this.tip=null);Ext.quickTipsActive=!1},ddDisable:function(){var tip=this.tip;tip&&!this.disabled&&tip.disable()},ddEnable:function(){var tip=this.tip;tip&&!this.disabled&&tip.enable()},enable:function(){var tip=this.tip;tip&&tip.enable();this.disabled=!1},disable:function(){var tip=
this.tip;tip&&tip.disable();this.disabled=!0},isEnabled:function(){var tip=this.tip;return void 0!==tip&&!tip.disabled},getQuickTip:function(){return this.tip},register:function(){var tip=this.tip;tip.register.apply(tip,arguments)},unregister:function(){var tip=this.tip;tip.unregister.apply(tip,arguments)},tips:function(){var tip=this.tip;tip.register.apply(tip,arguments)}},0,0,0,0,0,0,[Ext.tip,'QuickTipManager',Ext,'QuickTips'],0);
Ext.cmd.derive('Ext.toolbar.Separator',Ext.toolbar.Item,{alternateClassName:'Ext.Toolbar.Separator',baseCls:'x-toolbar-separator',ariaRole:'separator'},0,['tbseparator'],['component','box','tbitem','tbseparator'],{component:!0,box:!0,tbitem:!0,tbseparator:!0},['widget.tbseparator'],0,[Ext.toolbar,'Separator',Ext.Toolbar,'Separator'],0);
Ext.cmd.derive('Ext.view.TagKeyNav',Ext.view.BoundListKeyNav,{onKeySpace:function(e){var field=this.view.pickerField;return field.isExpanded&&''===field.inputEl.dom.value?(this.navigateOnSpace=field.preventKeyUpEvent=!0,Ext.view.BoundListKeyNav.prototype.onKeySpace.call(this,e),e.stopEvent(),!1):!0}},0,0,0,0,['view.navigation.tagfield'],0,[Ext.view,'TagKeyNav'],0);
Ext.cmd.derive('Ext.form.field.Tag',Ext.form.field.ComboBox,{noWrap:!1,multiSelect:!0,delimiter:',',tipTpl:void 0,forceSelection:!0,createNewOnEnter:!1,createNewOnBlur:!1,encodeSubmitValue:!1,triggerOnClick:!0,stacked:!1,filterPickList:!1,clearOnBackspace:!0,grow:!0,growMin:!1,growMax:!1,simulatePlaceholder:!0,selectOnFocus:!0,ariaHelpText:'Use Up and Down arrows to view available values, Enter to select. Use Left and Right arrows to view selected values, Delete key to deselect.',ariaHelpTextEditable:'Use Up and Down arrows to view available values, Enter to select. Type and press Enter to create a new value. Use Left and Right arrows to view selected values, Delete key to deselect.',
ariaSelectedText:'Selected {0}.',ariaDeselectedText:'{0} removed from selection.',ariaNoneSelectedText:'No value selected.',ariaSelectedListLabel:'Selected values',ariaAvailableListLabel:'Available values',fieldSubTpl:['\x3cdiv id\x3d"{cmpId}-listWrapper" data-ref\x3d"listWrapper"'+(Ext.isGecko?' tabindex\x3d"-1"':''),'\x3ctpl foreach\x3d"ariaElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e',' class\x3d"x-tagfield {fieldCls} {typeCls} {typeCls}-{ui}"\x3ctpl if\x3d"wrapperStyle"\x3e style\x3d"{wrapperStyle}"\x3c/tpl\x3e\x3e',
'\x3cspan id\x3d"{cmpId}-selectedText" data-ref\x3d"selectedText" aria-hidden\x3d"true" class\x3d"x-hidden-clip"\x3e\x3c/span\x3e','\x3cul id\x3d"{cmpId}-itemList" data-ref\x3d"itemList" role\x3d"presentation" class\x3d"x-tagfield-list{itemListCls}"\x3e','\x3cli id\x3d"{cmpId}-inputElCt" data-ref\x3d"inputElCt" role\x3d"presentation" class\x3d"x-tagfield-input"\x3e','\x3cinput id\x3d"{cmpId}-inputEl" data-ref\x3d"inputEl" type\x3d"{type}" ','\x3ctpl if\x3d"name"\x3ename\x3d"{name}" \x3c/tpl\x3e',
'\x3ctpl if\x3d"value"\x3e value\x3d"{[Ext.util.Format.htmlEncode(values.value)]}"\x3c/tpl\x3e','\x3ctpl if\x3d"size"\x3esize\x3d"{size}" \x3c/tpl\x3e','\x3ctpl if\x3d"tabIdx !\x3d null"\x3etabindex\x3d"{tabIdx}" \x3c/tpl\x3e','\x3ctpl if\x3d"disabled"\x3e disabled\x3d"disabled"\x3c/tpl\x3e','\x3ctpl foreach\x3d"inputElAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','class\x3d"x-tagfield-input-field {inputElCls} {emptyCls}" autocomplete\x3d"off"\x3e','\x3c/li\x3e','\x3c/ul\x3e','\x3cul id\x3d"{cmpId}-ariaList" data-ref\x3d"ariaList" role\x3d"listbox"',
'\x3ctpl if\x3d"ariaSelectedListLabel"\x3e aria-label\x3d"{ariaSelectedListLabel}"\x3c/tpl\x3e','\x3ctpl if\x3d"multiSelect"\x3e aria-multiselectable\x3d"true"\x3c/tpl\x3e',' class\x3d"x-tagfield-arialist"\x3e','\x3c/ul\x3e','\x3c/div\x3e',{disableFormats:!0}],postSubTpl:['\x3clabel id\x3d"{cmpId}-placeholderLabel" data-ref\x3d"placeholderLabel" for\x3d"{cmpId}-inputEl" class\x3d"{placeholderCoverCls} {placeholderCoverCls}-{ui} {emptyCls}"\x3e{emptyText}\x3c/label\x3e','\x3c/div\x3e','\x3ctpl for\x3d"triggers"\x3e{[values.renderTrigger(parent)]}\x3c/tpl\x3e',
'\x3c/div\x3e'],extraFieldBodyCls:'x-tagfield-body',childEls:'listWrapper itemList inputEl inputElCt selectedText ariaList'.split(' '),clearValueOnEmpty:!1,ariaSelectable:!0,ariaEl:'listWrapper',tagItemCls:'x-tagfield-item',tagItemTextCls:'x-tagfield-item-text',tagItemCloseCls:'x-tagfield-item-close',tagItemSelector:'.x-tagfield-item',tagItemCloseSelector:'.x-tagfield-item-close',tagSelectedCls:'x-tagfield-item-selected',initComponent:function(){var typeAhead=this.typeAhead,delimiter=this.delimiter;
if(this.createNewOnEnter||this.createNewOnBlur)this.forceSelection=!1;this.typeAhead=!1;null==this.value&&(this.value=[]);this.selectionModel=new Ext.selection.Model({mode:'MULTI',onSelectChange:function(record,isSelected,suppressEvent,commitFn){commitFn()},listeners:{scope:this,selectionchange:this.onSelectionChange,focuschange:this.onFocusChange}});this.ariaHelp||(this.ariaHelp=this.createNewOnEnter?this.ariaHelpTextEditable:this.ariaHelpText);Ext.form.field.ComboBox.prototype.initComponent.call(this);
this.typeAhead=typeAhead;delimiter&&this.multiSelect&&(this.delimiterRegexp=new RegExp(Ext.String.escapeRegex(delimiter)))},initEvents:function(){var inputEl=this.inputEl;Ext.form.field.ComboBox.prototype.initEvents.apply(this,arguments);this.enableKeyEvents||(inputEl.on('keydown',this.onKeyDown,this),inputEl.on('keyup',this.onKeyUp,this));this.listWrapper.on({scope:this,click:this.onItemListClick,mousedown:this.onItemMouseDown})},createPicker:function(){var config=Ext.apply({navigationModel:'tagfield'},
this.defaultListConfig);this.ariaAvailableListLabel&&(config.ariaRenderAttributes={'aria-label':Ext.String.htmlEncode(this.ariaAvailableListLabel)});this.defaultListConfig=config;return Ext.form.field.ComboBox.prototype.createPicker.call(this)},isValid:function(){var disabled=this.disabled;return this.forceValidation||!disabled?this.validateValue(this.getValue()):disabled},onBindStore:function(store){Ext.form.field.ComboBox.prototype.onBindStore.call(this,store);store&&(this.valueStore=new Ext.data.Store({model:store.getModel(),
proxy:'memory',useModelWarning:!1}),this.selectionModel.bindStore(this.valueStore),this.filterPickList&&(this.listFilter=new Ext.util.Filter({scope:this,filterFn:this.filterPicked}),this.changingFilters=!0,store.filter(this.listFilter),this.changingFilters=!1))},filterPicked:function(rec){return!this.valueCollection.contains(rec)},onUnbindStore:function(store){var valueStore=this.valueStore,picker=this.picker;picker&&picker.bindStore(null);valueStore&&(valueStore.destroy(),this.valueStore=null);this.filterPickList&&
!store.destroyed&&(this.changingFilters=!0,store.removeFilter(this.listFilter),this.changingFilters=!1);Ext.form.field.ComboBox.prototype.onUnbindStore.apply(this,arguments)},clearInput:function(){var valueRecords=this.getValueRecords(),inputValue=this.inputEl&&this.inputEl.dom.value;valueRecords.length&&inputValue&&(valueRecords=valueRecords[valueRecords.length-1].get(this.displayField),Ext.String.startsWith(valueRecords,inputValue,!0)&&(this.inputEl.dom.value='','local'==this.queryMode&&(this.clearLocalFilter(),
this.getPicker().refresh())))},onValueCollectionEndUpdate:function(){var pickedRecords=this.valueCollection.items,valueStore=this.valueStore;this.isSelectionUpdating()||(this.filterPickList&&(this.changingFilters=!0,this.store.filter(this.listFilter),this.changingFilters=!1),Ext.form.field.ComboBox.prototype.onValueCollectionEndUpdate.call(this),Ext.suspendLayouts(),valueStore&&(valueStore.suspendEvents(),valueStore.loadRecords(pickedRecords),valueStore.resumeEvents()),this.refreshEmptyText(),this.clearInput(),
Ext.resumeLayouts(!0),this.alignPicker())},checkValueOnDataChange:Ext.emptyFn,onSelectionChange:function(selModel,selectedRecs){selModel=this.inputEl;var item;this.applyMultiselectItemMarkup();this.applyAriaListMarkup();this.applyAriaSelectedText();selModel&&(0===selectedRecs.length?selModel.dom.removeAttribute('aria-activedescendant'):(item=this.getAriaListNode(selectedRecs[0]))&&selModel.dom.setAttribute('aria-activedescendant',item.id));this.fireEvent('valueselectionchange',this,selectedRecs)},
onFocusChange:function(selectionModel,oldFocused,newFocused){Ext.form.field.ComboBox.prototype.onFocusChange.call(this,selectionModel,oldFocused,newFocused);this.fireEvent('valuefocuschange',this,oldFocused,newFocused)},getAriaListNode:function(record){var ariaList=this.ariaList,node;ariaList&&record&&(node=ariaList.selectNode('[data-recordid\x3d"'+record.internalId+'"]'));return node},doDestroy:function(){Ext.destroy(this.selectionModel);Ext.form.field.ComboBox.prototype.doDestroy.call(this)},getSubTplData:function(fieldData){var id=
this.id,data=Ext.form.field.ComboBox.prototype.getSubTplData.apply(this,arguments),emptyText=this.emptyText,isEmpty=emptyText&&1>data.value.length,growMin=this.growMin,growMax=this.growMax,wrapperStyle='';data.value='';data.emptyText=isEmpty?emptyText:'';data.itemListCls='';data.emptyCls=isEmpty?this.emptyUICls:'';this.grow?(Ext.isNumber(growMin)&&0<growMin&&(wrapperStyle+='min-height:'+growMin+'px;'),Ext.isNumber(growMax)&&0<growMax&&(wrapperStyle+='max-height:'+growMax+'px;')):wrapperStyle+='max-height: 1px;';
data.wrapperStyle=wrapperStyle;!0===this.stacked&&(data.itemListCls+=' x-tagfield-stacked');this.multiSelect||(data.itemListCls+=' x-tagfield-singleselect');!this.ariaStaticRoles[this.ariaRole]&&(data.multiSelect=this.multiSelect,data.ariaSelectedListLabel=Ext.String.htmlEncode(this.ariaSelectedListLabel),(emptyText=data.ariaElAttributes)&&(emptyText['aria-owns']=id+'-inputEl '+id+'-picker '+id+'-ariaList'),emptyText=data.inputElAriaAttributes)&&(emptyText.role='textbox',emptyText['aria-describedby']=
id+'-selectedText '+(emptyText['aria-describedby']||''));return data},afterRender:function(){var inputEl=this.inputEl;this.emptyText&&Ext.supports.Placeholder&&inputEl&&inputEl.dom.removeAttribute('placeholder');this.applyMultiselectItemMarkup();this.applyAriaListMarkup();this.applyAriaSelectedText();Ext.form.field.ComboBox.prototype.afterRender.apply(this,arguments);this.emptyClsElements.push(this.listWrapper,this.placeholderLabel)},findRecord:function(field,value){field=this.getStore().queryRecords(field,
value);return field.length?field[0]:!1},getCursorPosition:function(){if(document.selection){var cursorPos=document.selection.createRange();cursorPos.collapse(!0);cursorPos.moveStart('character',-this.inputEl.dom.value.length);cursorPos=cursorPos.text.length}else cursorPos=this.inputEl.dom.selectionStart;return cursorPos},hasSelectedText:function(){var inputEl=this.inputEl.dom;if(document.selection){var sel=document.selection;sel=sel.createRange();return sel.parentElement()===inputEl}return inputEl.selectionStart!==
inputEl.selectionEnd},onKeyDown:function(e){var key=e.getKey(),inputEl=this.inputEl,rawValue=inputEl&&inputEl.dom.value;inputEl=this.valueCollection;var selModel=this.selectionModel,stopEvent=!1,len;if(!(this.destroyed||this.readOnly||this.disabled)&&this.editable){var valueCount=inputEl.getCount();if(0<valueCount&&''===rawValue)if(rawValue=0<selModel.getCount()?inputEl.indexOf(selModel.getLastSelected()):-1,key===e.BACKSPACE&&this.clearOnBackspace||key===e.DELETE&&-1<rawValue){if(-1<rawValue){1<
selModel.getCount()&&(rawValue=-1);stopEvent=selModel.getSelection();var text=[];var i=0;for(len=stopEvent.length;i<len;i++)text.push(stopEvent[i].get(this.displayField));text=text.join(', ')}else stopEvent=inputEl.last(),text=stopEvent.get(this.displayField);inputEl.remove(stopEvent);text&&(this.ariaErrorEl.dom.innerHTML=Ext.String.formatEncode(this.ariaDeselectedText,text));selModel.clearSelections();rawValue===valueCount-1?selModel.select(inputEl.last()):-1<rawValue?selModel.select(rawValue):inputEl.getCount()&&
selModel.select(inputEl.last());stopEvent=!0}else key===e.RIGHT||key===e.LEFT?-1===rawValue&&key===e.LEFT?(selModel.select(inputEl.last()),stopEvent=!0):-1<rawValue&&(key===e.RIGHT?rawValue<valueCount-1?(selModel.select(rawValue+1,e.shiftKey),stopEvent=!0):e.shiftKey||(selModel.deselectAll(),stopEvent=!0):key===e.LEFT&&0<rawValue&&(selModel.select(rawValue-1,e.shiftKey),stopEvent=!0)):key===e.A&&e.ctrlKey&&(selModel.selectAll(),stopEvent=e.A);stopEvent?(this.preventKeyUpEvent=stopEvent,e.stopEvent()):
(this.isExpanded&&key===e.ENTER&&this.picker.highlightedItem&&(this.preventKeyUpEvent=!0),this.enableKeyEvents&&Ext.form.field.ComboBox.prototype.onKeyDown.apply(this,arguments),e.isSpecialKey()||e.hasModifier()||selModel.deselectAll())}},onKeyUp:function(e,t){var inputEl=this.inputEl,rawValue=inputEl.dom.value,preventKeyUpEvent=this.preventKeyUpEvent;if(this.preventKeyUpEvent)e.stopEvent(),!0!==preventKeyUpEvent&&e.getKey()!==preventKeyUpEvent||delete this.preventKeyUpEvent;else{if(this.multiSelect&&
this.delimiterRegexp&&this.delimiterRegexp.test(rawValue)||this.createNewOnEnter&&e.getKey()===e.ENTER)this.createNewOnEnter&&rawValue&&(this.ariaErrorEl.dom.innerHTML=Ext.String.formatEncode(this.ariaSelectedText,rawValue)),rawValue=Ext.Array.clean(rawValue.split(this.delimiterRegexp)),inputEl.dom.value='',this.setValue(this.valueStore.getRange().concat(rawValue)),inputEl.focus();Ext.form.field.ComboBox.prototype.onKeyUp.call(this,e,t)}},onEsc:function(e){var selModel=this.selectionModel,isExpanded=
this.isExpanded;Ext.form.field.ComboBox.prototype.onEsc.call(this,e);!isExpanded&&0<selModel.getCount()&&selModel.deselectAll();e.stopEvent()},onTypeAhead:function(){var displayField=this.displayField,inputElDom=this.inputEl.dom,record=this.getStore().findRecord(displayField,inputElDom.value);if(record){displayField=record.get(displayField);record=displayField.length;var selStart=inputElDom.value.length;0!==selStart&&selStart!==record&&(this.lastMutatedValue=displayField,inputElDom.value=displayField,
this.selectText(selStart,displayField.length))}},onItemListClick:function(e){var selectionModel=this.selectionModel,itemEl=e.getTarget(this.tagItemSelector),closeEl=itemEl?e.getTarget(this.tagItemCloseSelector):!1;if(!this.readOnly&&!this.disabled)if(e.stopPropagation(),itemEl)closeEl?(this.removeByListItemNode(itemEl),0<this.valueStore.getCount()&&this.fireEvent('select',this,this.valueStore.getRange())):this.toggleSelectionByListItemNode(itemEl,e.shiftKey),Ext.supports.TouchEvents||this.inputEl.focus();
else if(0<selectionModel.getCount()&&selectionModel.deselectAll(),this.inputEl.focus(),this.triggerOnClick)this.onTriggerClick()},onItemMouseDown:function(e){e.preventDefault()},getMultiSelectItemMarkup:function(){var me=this,childElCls=me._getChildElCls&&me._getChildElCls()||'';me.multiSelectItemTpl||(me.labelTpl||(me.labelTpl='{'+me.displayField+'}'),me.labelTpl=me.lookupTpl('labelTpl'),me.tipTpl&&(me.tipTpl=me.lookupTpl('tipTpl')),me.multiSelectItemTpl=new Ext.XTemplate(['\x3ctpl for\x3d"."\x3e',
'\x3cli data-selectionIndex\x3d"{[xindex - 1]}" data-recordId\x3d"{internalId}" role\x3d"presentation" class\x3d"'+me.tagItemCls+childElCls,'\x3ctpl if\x3d"this.isSelected(values)"\x3e',' '+me.tagSelectedCls,'\x3c/tpl\x3e','{%','values \x3d values.data;','%}',me.tipTpl?'" data-qtip\x3d"{[this.getTip(values)]}"\x3e':'"\x3e','\x3cdiv role\x3d"presentation" class\x3d"'+me.tagItemTextCls+'"\x3e{[this.getItemLabel(values)]}\x3c/div\x3e','\x3cdiv role\x3d"presentation" class\x3d"'+me.tagItemCloseCls+childElCls+
'"\x3e\x3c/div\x3e','\x3c/li\x3e','\x3c/tpl\x3e',{isSelected:function(rec){return me.selectionModel.isSelected(rec)},getItemLabel:function(values){return Ext.String.htmlEncode(me.labelTpl.apply(values))},getTip:function(values){return Ext.String.htmlEncode(me.tipTpl.apply(values))},strict:!0}]));me.multiSelectItemTpl.isTemplate||(me.multiSelectItemTpl=this.lookupTpl('multiSelectItemTpl'));return me.multiSelectItemTpl.apply(me.valueCollection.getRange())},applyMultiselectItemMarkup:function(){var itemList=
this.itemList;itemList&&(itemList.select('.x-tagfield-item').destroy(),this.inputElCt.insertHtml('beforeBegin',this.getMultiSelectItemMarkup()),this.autoSize())},getAriaListMarkup:function(){var me=this;me.ariaListItemTpl||(me.ariaListItemTpl=new Ext.XTemplate(['\x3ctpl for\x3d"."\x3e','\x3cli id\x3d"'+me.id+'-{internalId}" role\x3d"option"',' class\x3d"x-tagfield-arialist-item"',' aria-selected\x3d"{[this.isPicked(values)]}"','  data-recordId\x3d"{internalId}"','\x3e','{[this.getItemLabel(values.data)]}',
'\x3c/li\x3e','\x3c/tpl\x3e',{isPicked:function(rec){return me.filterPicked(rec)?'false':'true'},isSelected:function(rec){return me.selectionModel.isSelected(rec)?'true':'false'},getItemLabel:function(values){return Ext.String.htmlEncode(me.labelTpl.apply(values))},strict:!0}]));me.ariaListItemTpl.isTemplate||(me.ariaListtemTpl=me.lookupTpl('ariaListItemTpl'));var values$jscomp$0=me.valueCollection.getRange();return me.ariaListItemTpl.apply(values$jscomp$0)},applyAriaListMarkup:function(){var ariaList=
this.ariaList;ariaList&&(ariaList.select('*').destroy(),ariaList.insertHtml('afterBegin',this.getAriaListMarkup()))},getAriaSelectedText:function(values$jscomp$0){var me=this;me.ariaSelectedItemTpl||(me.ariaSelectedItemTpl=new Ext.XTemplate(['\x3ctpl for\x3d"." between\x3d", "\x3e','{[this.getItemLabel(values.data)]}','\x3c/tpl\x3e',{getItemLabel:function(values){return Ext.String.htmlEncode(me.labelTpl.apply(values))},strict:!0}]));me.ariaSelectedItemTpl.isTemplate||(me.ariaSelectedItemTpl=me.lookupTpl('ariaSelectedItemTpl'));
return Ext.String.format(me.ariaSelectedText,me.ariaSelectedItemTpl.apply(values$jscomp$0))},applyAriaSelectedText:function(){var selectedText=this.selectedText;if(selectedText){var records=this.valueCollection.getRange();records=records.length?this.getAriaSelectedText(records):this.ariaNoneSelectedText;selectedText.dom.innerHTML=Ext.String.htmlEncode(records)}},getRecordByListItemNode:function(itemEl){return this.valueCollection.items[Number(itemEl.getAttribute('data-selectionIndex'))]},toggleSelectionByListItemNode:function(itemEl,
keepExisting){itemEl=this.getRecordByListItemNode(itemEl);var selModel=this.selectionModel;itemEl&&(selModel.isSelected(itemEl)?selModel.deselect(itemEl):selModel.select(itemEl,keepExisting))},removeByListItemNode:function(itemEl){(itemEl=this.getRecordByListItemNode(itemEl))&&this.pickerSelectionModel.deselect(itemEl)},getDisplayValue:function(){return this.getRawValue()},getRawValue:function(){var records=this.getValueRecords(),values=[],len;var i=0;for(len=records.length;i<len;i++)values.push(records[i].data[this.displayField]);
return values.join(',')},setRawValue:function(value){},removeValue:function(value){var valueCollection=this.valueCollection,len,toRemove=[];if(value){value=Ext.Array.from(value);var i=0;for(len=value.length;i<len;++i){var item=value[i];item.isModel||(item=valueCollection.byValue.get(item));item&&toRemove.push(item)}this.valueCollection.beginUpdate();this.pickerSelectionModel.deselect(toRemove);this.valueCollection.endUpdate()}},setValue:function(value,add,skipLoad){var me=this,valueStore=me.valueStore,
valueField=me.valueField,unknownValues=[],store=me.store,autoLoadOnValue=me.autoLoadOnValue,isLoaded=0<store.getCount()||store.isLoaded(),pendingLoad=store.hasPendingLoad();autoLoadOnValue=autoLoadOnValue&&!isLoaded&&!pendingLoad;if(Ext.isEmpty(value)){value=null;var isNull=!0}else value=Ext.isString(value)&&me.multiSelect?value.split(me.delimiter):Ext.Array.from(value,!0);if(!isNull&&'remote'===me.queryMode&&!store.isEmptyStore&&!0!==skipLoad&&autoLoadOnValue){autoLoadOnValue=0;for(skipLoad=value.length;autoLoadOnValue<
skipLoad;autoLoadOnValue++)pendingLoad=value[autoLoadOnValue],pendingLoad&&pendingLoad.isModel||(isLoaded=valueStore.findExact(valueField,pendingLoad),-1<isLoaded?value[autoLoadOnValue]=valueStore.getAt(isLoaded):(isLoaded=me.findRecord(valueField,pendingLoad),isLoaded||(me.forceSelection?unknownValues.push(pendingLoad):(isLoaded={},isLoaded[me.valueField]=pendingLoad,isLoaded[me.displayField]=pendingLoad,pendingLoad=me.valueStore.getModel(),isLoaded=new pendingLoad(isLoaded))),isLoaded&&(value[autoLoadOnValue]=
isLoaded)));if(unknownValues.length)return valueStore={},valueStore[me.valueParam||me.valueField]=unknownValues.join(me.delimiter),store.load({params:valueStore,callback:function(){me.setValue(value,add,!0);me.autoSize();me.lastQuery=!1}}),!1}if(!isNull&&!me.multiSelect&&0<value.length){for(autoLoadOnValue=value.length-1;0<=autoLoadOnValue;autoLoadOnValue--)if(value[autoLoadOnValue].isModel){value=value[autoLoadOnValue];break}Ext.isArray(value)&&(value=value[value.length-1])}return Ext.form.field.ComboBox.prototype.setValue.call(this,
value,add)},updateValue:function(){var valueArray=this.valueCollection.getRange(),len=valueArray.length,i;for(i=0;i<len;i++)valueArray[i]=valueArray[i].get(this.valueField);this.setHiddenValue(valueArray);this.value=this.multiSelect?valueArray:valueArray[0];Ext.isDefined(this.value)||(this.value=void 0);this.applyMultiselectItemMarkup();this.applyAriaListMarkup();this.applyAriaSelectedText();this.checkChange()},getValueRecords:function(){return this.valueCollection.getRange()},getSubmitData:function(){var val=
Ext.form.field.ComboBox.prototype.getSubmitData.apply(this,arguments);this.multiSelect&&this.encodeSubmitValue&&val&&val[this.name]&&(val[this.name]=Ext.encode(val[this.name]));return val},assertValue:function(){var rawValue=this.inputEl.dom.value,rec=Ext.isEmpty(rawValue)?!1:this.findRecordByDisplay(rawValue),value=!1;rec||this.forceSelection||!this.createNewOnBlur||Ext.isEmpty(rawValue)?rec&&(value=rec):value=rawValue;value&&this.addValue(value);this.inputEl.dom.value='';this.collapse();this.refreshEmptyText()},
isEqual:function(v1,v2){var fromArray=Ext.Array.from,valueField=this.valueField;v1=fromArray(v1);v2=fromArray(v2);var len=v1.length;if(len!==v2.length)return!1;for(fromArray=0;fromArray<len;fromArray++){var t1=v1[fromArray].isModel?v1[fromArray].get(valueField):v1[fromArray];var t2=v2[fromArray].isModel?v2[fromArray].get(valueField):v2[fromArray];if(t1!==t2)return!1}return!0},onFocus:function(){var focusCls=this.focusCls,itemList=this.itemList;focusCls&&itemList&&itemList.addCls(focusCls);Ext.form.field.ComboBox.prototype.onFocus.apply(this,
arguments)},onBlur:function(){var focusCls=this.focusCls,itemList=this.itemList;focusCls&&itemList&&itemList.removeCls(focusCls);Ext.form.field.ComboBox.prototype.onBlur.apply(this,arguments)},renderActiveError:function(){var invalidCls=this.invalidCls,itemList=this.itemList,hasError=this.hasActiveError();if(invalidCls&&itemList)itemList[hasError?'addCls':'removeCls'](this.invalidCls+'-field');Ext.form.field.ComboBox.prototype.renderActiveError.apply(this,arguments)},autoSize:function(){this.grow&&
this.rendered&&(this.autoSizing=!0,this.updateLayout());return this},afterComponentLayout:function(){if(this.autoSizing){var height=this.getHeight();height!==this.lastInputHeight&&(this.isExpanded&&this.alignPicker(),this.fireEvent('autosize',this,height),this.lastInputHeight=height,this.autoSizing=!1)}}},0,['tagfield'],'component box field textfield pickerfield combobox combo tagfield'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,combobox:!0,combo:!0,tagfield:!0},['widget.tagfield'],
0,[Ext.form.field,'Tag'],0);
Ext.cmd.derive('Ext.picker.Time',Ext.view.BoundList,{config:{store:!0},statics:{createStore:function(format,increment){var dateUtil=Ext.Date,clearTime=dateUtil.clearTime,initDate=this.prototype.initDate,times=[],min=clearTime(new Date(initDate[0],initDate[1],initDate[2]));for(clearTime=dateUtil.add(clearTime(new Date(initDate[0],initDate[1],initDate[2])),'mi',1439);min<=clearTime;)times.push({disp:dateUtil.dateFormat(min,format),date:min}),min=dateUtil.add(min,'mi',increment);return new Ext.data.Store({model:Ext.picker.Time.prototype.modelType,
data:times})}},increment:15,format:'g:i A',displayField:'disp',initDate:[2008,0,1],componentCls:'x-timepicker',alignOnScroll:!1,loadMask:!1,initComponent:function(){var dateUtil=Ext.Date,clearTime=dateUtil.clearTime,initDate=this.initDate;this.absMin=clearTime(new Date(initDate[0],initDate[1],initDate[2]));this.absMax=dateUtil.add(clearTime(new Date(initDate[0],initDate[1],initDate[2])),'mi',1439);this.updateList();Ext.view.BoundList.prototype.initComponent.call(this)},setStore:function(store){this.store=
!0===store?Ext.picker.Time.createStore(this.format,this.increment):store},setMinValue:function(value){this.minValue=value;this.updateList()},setMaxValue:function(value){this.maxValue=value;this.updateList()},normalizeDate:function(date){var initDate=this.initDate;date.setFullYear(initDate[0],initDate[1],initDate[2]);return date},updateList:function(){var min=this.normalizeDate(this.minValue||this.absMin),max=this.normalizeDate(this.maxValue||this.absMax),filters=this.getStore().getFilters(),filter=
this.rangeFilter;filters.beginUpdate();filter&&filters.remove(filter);filter=this.rangeFilter=new Ext.util.Filter({filterFn:function(record){record=record.get('date');return record>=min&&record<=max}});filters.add(filter);filters.endUpdate()}},0,['timepicker'],['component','box','dataview','boundlist','timepicker'],{component:!0,box:!0,dataview:!0,boundlist:!0,timepicker:!0},['widget.timepicker'],0,[Ext.picker,'Time'],function(){this.prototype.modelType=Ext.define(null,{extend:'Ext.data.Model',fields:['disp',
'date']})});
Ext.cmd.derive('Ext.form.field.Time',Ext.form.field.ComboBox,{alternateClassName:['Ext.form.TimeField','Ext.form.Time'],triggerCls:'x-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',formatText:'Expected time format HH:MM space AM or PM',increment:15,
pickerMaxHeight:300,selectOnTab:!0,snapToIncrement:!1,valuePublishEvent:['select','blur'],initDate:'1/1/2008',initDateParts:[2008,0,1],initDateFormat:'j/n/Y',queryMode:'local',displayField:'disp',valueField:'date',initComponent:function(){var min=this.minValue,max=this.maxValue;min&&this.setMinValue(min);max&&this.setMaxValue(max);this.displayTpl=new Ext.XTemplate('\x3ctpl for\x3d"."\x3e{[typeof values \x3d\x3d\x3d "string" ? values : this.formatDate(values["'+this.displayField+'"])]}\x3ctpl if\x3d"xindex \x3c xcount"\x3e'+
this.delimiter+'\x3c/tpl\x3e\x3c/tpl\x3e',{formatDate:this.formatDate.bind(this)});this.store=Ext.picker.Time.createStore(this.format,this.increment);Ext.form.field.ComboBox.prototype.initComponent.call(this);this.getPicker()},afterQuery:function(queryPlan){Ext.form.field.ComboBox.prototype.afterQuery.call(this,queryPlan);null===this.value&&this.getRawValue()&&this.validateOnChange&&this.validate()},isEqual:function(v1,v2){var fromArray=Ext.Array.from,isEqual=Ext.Date.isEqual;v1=fromArray(v1);v2=
fromArray(v2);var len=v1.length;if(len!==v2.length)return!1;for(fromArray=0;fromArray<len;fromArray++)if(!(v2[fromArray]instanceof Date&&v1[fromArray]instanceof Date&&isEqual(v2[fromArray],v1[fromArray])))return!1;return!0},setMinValue:function(value){var picker=this.picker;this.setLimit(value,!0);picker&&picker.setMinValue(this.minValue)},setMaxValue:function(value){var picker=this.picker;this.setLimit(value,!1);picker&&picker.setMaxValue(this.maxValue)},setLimit:function(value,isMin){var d;Ext.isString(value)?
d=this.parseDate(value):Ext.isDate(value)&&(d=value);d?(value=this.getInitDate(),value.setHours(d.getHours(),d.getMinutes(),d.getSeconds(),d.getMilliseconds())):value=null;this[isMin?'minValue':'maxValue']=value},getInitDate:function(hours,minutes,seconds){var parts=this.initDateParts;return new Date(parts[0],parts[1],parts[2],hours||0,minutes||0,seconds||0,0)},valueToRaw:function(value){return this.formatDate(this.parseDate(value))},getErrors:function(value){value=0<arguments.length?value:this.getRawValue();
var format=Ext.String.format,errors=Ext.form.field.ComboBox.prototype.getErrors.call(this,value),minValue=this.minValue,maxValue=this.maxValue,data=this.displayTplData,raw=this.getRawValue(),len,date;if(data&&0<data.length)for(raw=0,len=data.length;raw<len;raw++){var item=data[raw];item=item.date||item.disp;(date=this.parseDate(item))||errors.push(format(this.invalidText,item,Ext.Date.unescapeFormat(this.format)))}else raw.length&&((date=this.parseDate(raw))||errors.push(format(this.invalidText,raw,
Ext.Date.unescapeFormat(this.format))));errors.length||(minValue&&date<minValue&&errors.push(format(this.minText,this.formatDate(minValue))),maxValue&&date>maxValue&&errors.push(format(this.maxText,this.formatDate(maxValue))));return errors},formatDate:function(items){var formatted=[],len;items=Ext.Array.from(items);var i=0;for(len=items.length;i<len;i++)formatted.push(Ext.form.field.Date.prototype.formatDate.call(this,items[i]));return formatted.join(this.delimiter)},parseDate:function(value){var val=
value,altFormats=this.altFormats,altFormatsArray=this.altFormatsArray,i=0;if(value&&!Ext.isDate(value)&&(val=this.safeParse(value,this.format),!val&&altFormats))for(altFormatsArray=altFormatsArray||altFormats.split('|'),altFormats=altFormatsArray.length;i<altFormats&&!val;++i)val=this.safeParse(value,altFormatsArray[i]);val&&this.snapToIncrement&&(val=new Date(Ext.Number.snap(val.getTime(),6E4*this.increment)));return val},safeParse:function(value,format){var utilDate=Ext.Date,result=null;utilDate.formatContainsDateInfo(format)?
result=utilDate.parse(value,format):(value=utilDate.parse(this.initDate+' '+value,this.initDateFormat+' '+format))&&(result=value);return result},getSubmitValue:function(){var format=this.submitFormat||this.format,value=this.getValue();return value?Ext.Date.format(value,format):null},createPicker:function(){this.listConfig=Ext.apply({xtype:'timepicker',pickerField:this,cls:void 0,minValue:this.minValue,maxValue:this.maxValue,increment:this.increment,format:this.format,maxHeight:this.pickerMaxHeight},
this.listConfig);return Ext.form.field.ComboBox.prototype.createPicker.call(this)},completeEdit:function(){var val=this.getValue();Ext.form.field.ComboBox.prototype.completeEdit.apply(this,arguments);this.validateValue(val)&&this.setValue(val)},findRecordByValue:function(value){'string'===typeof value&&(value=this.parseDate(value));return Ext.form.field.ComboBox.prototype.findRecordByValue.call(this,value)},rawToValue:function(item){var len;if(this.multiSelect){var values=[];item=Ext.Array.from(item);
var i=0;for(len=item.length;i<len;i++)values.push(this.parseDate(item[i]));return values}return this.parseDate(item)},setValue:function(v){if(!this.creatingPicker)return this.getPicker(),Ext.isDate(v)&&(v=this.getInitDate(v.getHours(),v.getMinutes(),v.getSeconds())),Ext.form.field.ComboBox.prototype.setValue.call(this,v)},getValue:function(){return this.rawToValue(Ext.form.field.ComboBox.prototype.getValue.apply(this,arguments))}},0,['timefield'],'component box field textfield pickerfield combobox combo timefield'.split(' '),
{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,combobox:!0,combo:!0,timefield:!0},['widget.timefield'],0,[Ext.form.field,'Time',Ext.form,'TimeField',Ext.form,'Time'],0);
Ext.cmd.derive('Ext.grid.CellContext',Ext.Base,{isCellContext:!0,generation:0,constructor:function(view){this.view=view},setPosition:function(row,col){if(1===arguments.length)if(row.length)col=row[0],row=row[1];else{if(row.isCellContext)return this.setAll(row.view,row.rowIdx,row.colIdx,row.record,row.column);row.view&&(this.view=row.view);col=row.column;row=row.row}this.setRow(row);this.setColumn(col);return this},setAll:function(view,recordIndex,columnIndex,record,columnHeader){this.view=view;this.rowIdx=
recordIndex;this.colIdx=columnIndex;this.record=record;this.column=columnHeader;this.generation++;return this},setRow:function(row){var dataSource=this.view.dataSource,oldRecord=this.record;if(void 0!==row)if('number'===typeof row){var count=dataSource.getCount();this.rowIdx=row=0>row?Math.max(count+row,0):Math.max(Math.min(row,count-1),0);this.record=dataSource.getAt(row)}else if(row.isModel)this.record=row,this.rowIdx=dataSource.indexOf(row);else if(row.tagName||row.isElement)this.record=this.view.getRecord(row),
this.rowIdx=dataSource.indexOf(this.record);this.record!==oldRecord&&this.generation++;return this},setColumn:function(col){var colMgr=this.view.getVisibleColumnManager(),oldColumn=this.column;void 0!==col&&('number'===typeof col?(this.colIdx=col,this.column=colMgr.getHeaderAtIndex(col)):col.isHeader&&(this.column=col,this.colIdx=colMgr.indexOf(col)));this.column!==oldColumn&&this.generation++;return this},getCell:function(returnDom){return this.view.getCellByPosition(this,returnDom)},getRow:function(returnDom){var result=
this.view.getRow(this.record);return returnDom?result:Ext.get(result)},getNode:function(returnDom){var result=this.view.getNode(this.record);return returnDom?result:Ext.get(result)},isEqual:function(other){return other&&other.isCellContext&&other.record===this.record&&other.column===this.column},clone:function(){var result=new this.self(this.view);result.rowIdx=this.rowIdx;result.colIdx=this.colIdx;result.record=this.record;result.column=this.column;return result},privates:{isFirstColumn:function(){var cell=
this.getCell(!0);if(cell)return!cell.previousSibling},isLastColumn:function(){var cell=this.getCell(!0);if(cell)return!cell.nextSibling},isLastRenderedRow:function(){return this.view.all.endIndex===this.rowIdx},getLastColumnIndex:function(){var row=this.getRow(!0);return row?row.lastChild.cellIndex:-1},refresh:function(){var newRowIdx=this.view.dataSource.indexOf(this.record),newColIdx=this.view.getVisibleColumnManager().indexOf(this.column);this.setRow(-1===newRowIdx?this.rowIdx:this.record);this.setColumn(-1===
newColIdx?this.colIdx:this.column)},navigate:function(direction){var columns=this.view.getVisibleColumnManager().getColumns();switch(direction){case -1:do this.colIdx?this.colIdx--:this.colIdx=columns.length-1,this.setColumn(this.colIdx);while(!this.getCell(!0));break;case 1:do this.colIdx>=columns.length?this.colIdx=0:this.colIdx++,this.setColumn(this.colIdx);while(!this.getCell(!0))}}},statics:{compare:function(c1,c2){return c1.rowIdx-c2.rowIdx||c1.colIdx-c2.colIdx}}},1,0,0,0,0,0,[Ext.grid,'CellContext'],
0);
Ext.define('Common.overrides.grid.CellContext',{override:'Ext.grid.CellContext',setRow:function(row){var dataSource=this.view.dataSource,oldRecord=this.record;if(row)if('number'===typeof row){var count=dataSource.getCount();this.rowIdx=row=0>row?Math.max(count+row,0):Math.max(Math.min(row,count-1),0);this.record=dataSource.getAt(row)}else if(row.isModel)this.record=row,this.rowIdx=dataSource.indexOf(row);else if(row.tagName||row.isElement)this.record=this.view.getRecord(row),this.rowIdx=dataSource.indexOf(this.record);this.record!==
oldRecord&&this.generation++;return this}});
Ext.cmd.derive('Ext.grid.CellEditor',Ext.Editor,{isCellEditor:!0,alignment:'l-l!',hideEl:!1,cls:'x-small-editor x-grid-editor x-grid-cell-editor',treeNodeSelector:'.x-tree-node-text',shim:!1,shadow:!1,floating:!0,alignOnScroll:!1,useBoundValue:!1,focusLeaveAction:'completeEdit',setGrid:function(grid){this.grid=grid},startEdit:function(boundEl,value,doFocus){this.context=this.editingPlugin.context;Ext.Editor.prototype.startEdit.call(this,boundEl,value,doFocus)},onShow:function(){var innerCell=this.boundEl.down(this.context.view.innerSelector);
innerCell&&(this.isForTree&&(innerCell=innerCell.child(this.treeNodeSelector)),innerCell.hide());Ext.Editor.prototype.onShow.apply(this,arguments)},onFocusEnter:function(){var context=this.context,view=context.view;context.node=view.getNode(context.record);context.row=view.getRow(context.record);context.cell=context.getCell(!0);context.rowIdx=view.indexOf(context.row);this.realign(!0);Ext.Editor.prototype.onFocusEnter.apply(this,arguments);this.focusEnterEvent=null},onFocusLeave:function(e){var view=
this.context.view,related=Ext.fly(e.relatedTarget);!1===this[this.focusLeaveAction]()?e.event.stopEvent():(delete this.focusLeaveAction,view.destroyed||!view.el.contains(related)||related.isAncestor(e.target)&&related!==view.el||related.up(view.getCellSelector(),view.el)||this.context.grid.setActionableMode(!1,view.actionPosition),this.cacheElement(),Ext.container.Container.prototype.onFocusLeave.apply(this,arguments))},completeEdit:function(remainVisible){var context=this.context;if(this.editing&&
(context.value=this.field.value,!1===this.editingPlugin.validateEdit(context)))return context.cancel&&(context.value=this.originalValue,this.editingPlugin.cancelEdit()),!!context.cancel;Ext.Editor.prototype.completeEdit.call(this,remainVisible)},onEditComplete:function(remainVisible,canceling){var activeElement=Ext.Element.getActiveElement(),boundEl;this.editing=!1;if(boundEl=this.boundEl=this.context.getCell())this.restoreCell(),boundEl.contains(activeElement)&&boundEl.dom!==activeElement&&boundEl.focus();
Ext.Editor.prototype.onEditComplete.apply(this,arguments);if(canceling)this.editingPlugin.cancelEdit(this);else this.editingPlugin.onEditComplete(this,this.getValue(),this.startValue)},cacheElement:function(){this.editing||this.destroyed||Ext.getDetachedBody().dom.appendChild(this.el.dom)},onHide:function(){Ext.Editor.superclass.onHide.apply(this,arguments)},onSpecialKey:function(field,event,eOpts){field=event.getKey();var cancel=this.cancelOnEsc&&field===event.ESC,view=this.editingPlugin.view;if(this.completeOnEnter&&
field===event.ENTER&&(!eOpts||!eOpts.fromBoundList)||cancel)event.stopEvent(),cancel&&(this.focusLeaveAction='cancelEdit'),view.ownerGrid.setActionableMode(!1)},getRefOwner:function(){return this.column&&this.column.getView()},restoreCell:function(){var innerCell=this.boundEl.down(this.context.view.innerSelector);innerCell&&(this.isForTree&&(innerCell=innerCell.child(this.treeNodeSelector)),innerCell.show())},afterRender:function(){var field=this.field;Ext.Editor.prototype.afterRender.apply(this,
arguments);field.isCheckbox&&field.mon(field.inputEl,{mousedown:this.onCheckBoxMouseDown,click:this.onCheckBoxClick,scope:this})},onCheckBoxMouseDown:function(){this.completeEdit=Ext.emptyFn},onCheckBoxClick:function(){delete this.completeEdit;this.field.focus(!1,10)},realign:function(autoSize){var boundEl=this.boundEl,innerCell=boundEl.down(this.context.view.innerSelector),innerCellTextNode=innerCell.dom.firstChild,width=boundEl.getWidth(),offsets=Ext.Array.clone(this.offsets),grid=this.grid,v='',
isEmpty=!innerCellTextNode||3===innerCellTextNode.nodeType&&!Ext.String.trim(v=innerCellTextNode.data).length;this.isForTree&&(innerCellTextNode=this.getTreeNodeOffset(innerCell),width-=Math.abs(innerCellTextNode),offsets[0]+=innerCellTextNode);grid.columnLines&&(width-=boundEl.getBorderWidth('rl'));!0===autoSize&&this.field.setWidth(width);isEmpty&&(innerCell.dom.innerHTML='X');this.alignTo(boundEl,this.alignment,offsets);isEmpty&&(innerCell.dom.firstChild.data=v)},getTreeNodeOffset:function(innerCell){return innerCell.child(this.treeNodeSelector).getOffsetsTo(innerCell)[0]}},
0,0,['component','box','container','editor'],{component:!0,box:!0,container:!0,editor:!0},0,0,[Ext.grid,'CellEditor'],0);
Ext.cmd.derive('Ext.grid.ColumnComponentLayout',Ext.layout.component.Auto,{type:'columncomponent',setWidthInDom:!0,_paddingReset:{paddingTop:'',paddingBottom:''},columnAutoCls:'x-column-header-text-container-auto',beginLayout:function(ownerContext){Ext.layout.component.Auto.prototype.beginLayout.apply(this,arguments);ownerContext.titleContext=ownerContext.getEl('titleEl')},beginLayoutCycle:function(ownerContext){var owner=this.owner,shrinkWrap=ownerContext.widthModel.shrinkWrap;Ext.layout.component.Auto.prototype.beginLayoutCycle.apply(this,
arguments);shrinkWrap&&owner.el.setWidth('');owner.textContainerEl[shrinkWrap&&!owner.isGroupHeader?'addCls':'removeCls'](this.columnAutoCls);owner.titleEl.setStyle(this._paddingReset)},publishInnerHeight:function(ownerContext,outerHeight){var owner=this.owner;owner.getRootHeaderCt().hiddenHeaders?ownerContext.setProp('innerHeight',0):ownerContext.hasRawContent||(owner.headerWrap&&!ownerContext.hasDomProp('width')?this.done=!1:(outerHeight-=ownerContext.getBorderInfo().height,ownerContext.setProp('innerHeight',
outerHeight-owner.titleEl.getHeight(),!1)))},measureContentHeight:function(ownerContext){return ownerContext.el.dom.offsetHeight},publishInnerWidth:function(ownerContext,outerWidth){ownerContext.hasRawContent||ownerContext.setProp('innerWidth',outerWidth-ownerContext.getBorderInfo().width,!1)},calculateOwnerHeightFromContentHeight:function(ownerContext,contentHeight){var result=Ext.layout.component.Auto.prototype.calculateOwnerHeightFromContentHeight.apply(this,arguments),owner=this.owner;return ownerContext.hasRawContent?
result:!owner.headerWrap||ownerContext.hasDomProp('width')?contentHeight+owner.titleEl.getHeight()+ownerContext.getBorderInfo().height:null},calculateOwnerWidthFromContentWidth:function(ownerContext,contentWidth){var owner=this.owner,padWidth=ownerContext.getPaddingInfo().width,triggerOffset=this.getTriggerOffset(owner,ownerContext);return(owner.isGroupHeader?contentWidth:Math.max(contentWidth,owner.textEl.getWidth()+ownerContext.titleContext.getPaddingInfo().width))+padWidth+triggerOffset},getTriggerOffset:function(owner,
ownerContext){var width=0;ownerContext.widthModel.shrinkWrap&&!owner.menuDisabled&&0===owner.query('\x3e:not([hidden])').length&&(width=owner.getTriggerElWidth());return width}},0,0,0,0,['layout.columncomponent'],0,[Ext.grid,'ColumnComponentLayout'],0);
Ext.cmd.derive('Ext.layout.container.Fit',Ext.layout.container.Container,{alternateClassName:'Ext.layout.FitLayout',itemCls:'x-fit-item',type:'fit',manageMargins:!0,sizePolicies:[{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}],getItemSizePolicy:function(item,ownerSizeModel){item=ownerSizeModel||this.owner.getSizeModel();return this.sizePolicies[(item.width.shrinkWrap?
0:1)|(item.height.shrinkWrap?0:2)]},beginLayoutCycle:function(ownerContext,firstCycle){var resetHeight=this.lastHeightModel&&this.lastHeightModel.calculated,resetWidth=this.lastWidthModel&&this.lastWidthModel.calculated,resetSizes=resetWidth||resetHeight,maxChildMinHeight=0,maxChildMinWidth=0,i,minWidth;Ext.layout.container.Container.prototype.beginLayoutCycle.apply(this,arguments);resetSizes&&'TD'!==ownerContext.targetContext.el.dom.tagName.toUpperCase()&&(resetSizes=resetWidth=resetHeight=!1);var childItems=
ownerContext.childItems;var length=childItems.length;for(i=0;i<length;++i){var item=childItems[i];if(firstCycle){var c=item.target;var minHeight=c.minHeight;if((minWidth=c.minWidth)||minHeight)c=item.marginInfo||item.getMarginInfo(),minHeight+=c.height,minWidth+=c.height,maxChildMinHeight<minHeight&&(maxChildMinHeight=minHeight),maxChildMinWidth<minWidth&&(maxChildMinWidth=minWidth)}resetSizes&&(item=item.el.dom.style,resetHeight&&(item.height=''),resetWidth&&(item.width=''))}firstCycle&&(ownerContext.maxChildMinHeight=
maxChildMinHeight,ownerContext.maxChildMinWidth=maxChildMinWidth);c=ownerContext.target;ownerContext.overflowX=!ownerContext.widthModel.shrinkWrap&&ownerContext.maxChildMinWidth&&c.scrollFlags.x||void 0;ownerContext.overflowY=!ownerContext.heightModel.shrinkWrap&&ownerContext.maxChildMinHeight&&c.scrollFlags.y||void 0},calculate:function(ownerContext){var childItems=ownerContext.childItems,length=childItems.length,containerSize=this.getContainerSize(ownerContext),info={length:length,ownerContext:ownerContext,
targetSize:containerSize},shrinkWrapWidth=ownerContext.widthModel.shrinkWrap,shrinkWrapHeight=ownerContext.heightModel.shrinkWrap,overflowX=ownerContext.overflowX,overflowY=ownerContext.overflowY,scrollbars,i;ownerContext.state.info=info;if(overflowX||overflowY)if(scrollbars=this.getScrollbarsNeeded(overflowX&&containerSize.width,overflowY&&containerSize.height,ownerContext.maxChildMinWidth,ownerContext.maxChildMinHeight)){var scrollbarSize=Ext.getScrollbarSize();scrollbars&1&&(containerSize.height-=
scrollbarSize.height);scrollbars&2&&(containerSize.width-=scrollbarSize.width)}if(0<length)for(i=0;i<length;++i)info.index=i,this.fitItem(childItems[i],info);else info.contentWidth=info.contentHeight=0;if(shrinkWrapHeight||shrinkWrapWidth)childItems=ownerContext.targetContext.getPaddingInfo(),shrinkWrapWidth&&(overflowY&&!containerSize.gotHeight?this.done=!1:(shrinkWrapWidth=info.contentWidth+childItems.width,scrollbars&2&&(shrinkWrapWidth+=scrollbarSize.width),ownerContext.setContentWidth(shrinkWrapWidth)||
(this.done=!1))),shrinkWrapHeight&&(overflowX&&!containerSize.gotWidth?this.done=!1:(containerSize=info.contentHeight+childItems.height,scrollbars&1&&(containerSize+=scrollbarSize.height),ownerContext.setContentHeight(containerSize)||(this.done=!1)))},fitItem:function(itemContext,info){itemContext.invalid?this.done=!1:(info.margins=itemContext.getMarginInfo(),info.needed=info.got=0,this.fitItemWidth(itemContext,info),this.fitItemHeight(itemContext,info),info.got!==info.needed&&(this.done=!1))},fitItemWidth:function(itemContext,
info){if(info.ownerContext.widthModel.shrinkWrap){var width=itemContext.getProp('width')+info.margins.width;var contentWidth=info.contentWidth;info.contentWidth=void 0===contentWidth?width:Math.max(contentWidth,width)}else if(itemContext.widthModel.calculated)if(++info.needed,info.targetSize.gotWidth)++info.got,this.setItemWidth(itemContext,info);else return;this.positionItemX(itemContext,info)},fitItemHeight:function(itemContext,info){if(info.ownerContext.heightModel.shrinkWrap){var height=itemContext.getProp('height')+
info.margins.height;var contentHeight=info.contentHeight;info.contentHeight=void 0===contentHeight?height:Math.max(contentHeight,height)}else if(itemContext.heightModel.calculated)if(++info.needed,info.targetSize.gotHeight)++info.got,this.setItemHeight(itemContext,info);else return;this.positionItemY(itemContext,info)},positionItemX:function(itemContext,info){var margins=info.margins;(info.index||margins.left)&&itemContext.setProp('x',margins.left);margins.width&&info.ownerContext.widthModel.shrinkWrap&&
itemContext.setProp('margin-right',margins.width)},positionItemY:function(itemContext,info){var margins=info.margins;(info.index||margins.top)&&itemContext.setProp('y',margins.top);margins.height&&info.ownerContext.heightModel.shrinkWrap&&itemContext.setProp('margin-bottom',margins.height)},setItemHeight:function(itemContext,info){itemContext.setHeight(info.targetSize.height-info.margins.height)},setItemWidth:function(itemContext,info){itemContext.setWidth(info.targetSize.width-info.margins.width)}},
0,0,0,0,['layout.fit'],0,[Ext.layout.container,'Fit',Ext.layout,'FitLayout'],0);
Ext.cmd.derive('Ext.panel.Table',Ext.panel.Panel,{extraBaseCls:'x-grid',extraBodyCls:'x-grid-body',actionableModeCls:'x-grid-actionable',noHeaderBordersCls:'x-no-header-borders',defaultBindProperty:'store',layout:'fit',manageLayoutScroll:!1,ariaRole:'presentation',config:{selection:null,focused:null,headerBorders:!0,hideHeaders:null},publishes:['selection'],twoWayBindable:['selection'],autoLoad:!1,variableRowHeight:!1,numFromEdge:2,trailingBufferZone:10,leadingBufferZone:20,hasView:!1,viewType:null,
deferRowRender:!1,sortableColumns:!0,multiColumnSort:!1,enableLocking:!1,scrollerOwner:!0,enableColumnMove:!0,sealedColumns:!1,enableColumnResize:!0,rowLines:!0,bufferedRenderer:!0,ownerGrid:null,colLinesCls:'x-grid-with-col-lines',rowLinesCls:'x-grid-with-row-lines',noRowLinesCls:'x-grid-no-row-lines',hiddenHeaderCtCls:'x-grid-header-ct-hidden',hiddenHeaderCls:'x-grid-header-hidden',resizeMarkerCls:'x-grid-resize-marker',emptyCls:'x-grid-empty',focusable:!0,constructor:function(config){var topGrid=
config&&config.ownerGrid;this.ownerGrid=topGrid||this;this.actionables=topGrid?topGrid.actionables:[];Ext.panel.Panel.prototype.constructor.call(this,config);config=this.store;config.trackStateChanges=!0;this.autoLoad&&(config.isEmptyStore||config.load())},registerActionable:function(actionable){Ext.Array.include(this.actionables,actionable)},initComponent:function(){var headerCtCfg=this.columns||this.colModel||[],view,i,len;var store=this.store=Ext.data.StoreManager.lookup(this.store||'ext-empty-store');
this.enableLocking=this.enableLocking||this.hasLockedColumns(headerCtCfg);this.plugins&&(this.plugins=this.constructPlugins());this.columnLines&&this.addBodyCls(this.colLinesCls);this.addBodyCls(this.rowLines?this.rowLinesCls:this.noRowLinesCls);this.addBodyCls(this.extraBodyCls);this.enableLocking?(this.self.mixin('lockable',Ext.grid.locking.Lockable),this.injectLockable(),headerCtCfg=this.headerCt):(headerCtCfg.isRootHeader?(this.headerCt=headerCtCfg,headerCtCfg.grid=this,headerCtCfg.forceFit=!!this.forceFit,
headerCtCfg.$initParent=this,this.columnManager=headerCtCfg.columnManager,this.visibleColumnManager=headerCtCfg.visibleColumnManager):(Ext.isArray(headerCtCfg)&&(headerCtCfg={items:headerCtCfg}),this.headerCt=headerCtCfg=new Ext.grid.header.Container(Ext.apply(headerCtCfg,{grid:this,$initParent:this,forceFit:this.forceFit,sortable:this.sortableColumns,enableColumnMove:this.enableColumnMove,enableColumnResize:this.enableColumnResize,columnLines:this.columnLines,sealed:this.sealedColumns}))),Ext.isDefined(this.enableColumnHide)&&
(headerCtCfg.enableColumnHide=this.enableColumnHide));this.columns=view=headerCtCfg.getGridColumns();this.scrollTask=new Ext.util.DelayedTask(this.syncHorizontalScroll,this);this.cls=(this.cls||'')+(' '+this.extraBaseCls);delete this.autoScroll;if(i=this.plugins&&Ext.Array.findBy(this.plugins,function(p){return p.isBufferedRenderer}))this.bufferedRenderer=i;if(!this.hasView){if(store.isBufferedStore&&!store.getRemoteSort())for(i=0,len=view.length;i<len;i++)view[i].sortable=!1;this.relayHeaderCtEvents(headerCtCfg);
this.features=this.features||[];Ext.isArray(this.features)||(this.features=[this.features]);this.dockedItems=[].concat(this.dockedItems||[]);this.dockedItems.unshift(headerCtCfg);this.viewConfig=this.viewConfig||{};view=this.getView();this.items=[view];this.hasView=!0;this.bindStore(store,!0);this.mon(view,{viewready:this.onViewReady,refresh:this.onRestoreHorzScroll,scope:this});this.syncHeaderVisibility()}this.selModel=this.view.getSelectionModel();this.selModel.on({scope:this,lastselectedchanged:this.updateBindSelection,
selectionchange:this.updateBindSelection});this.relayEvents(this.view,'beforeitemlongpress beforeitemmousedown beforeitemmouseup beforeitemmouseenter beforeitemmouseleave beforeitemclick beforeitemdblclick beforeitemcontextmenu itemlongpress itemmousedown itemmouseup itemmouseenter itemmouseleave itemclick itemdblclick itemcontextmenu beforecellclick cellclick beforecelldblclick celldblclick beforecellcontextmenu cellcontextmenu beforecellmousedown cellmousedown beforecellmouseup cellmouseup beforecellkeydown cellkeydown rowclick rowdblclick rowcontextmenu rowmousedown rowmouseup rowkeydown beforeitemkeydown itemkeydown beforeitemkeyup itemkeyup beforeitemkeypress itemkeypress beforecontainermousedown beforecontainermouseup beforecontainermouseover beforecontainermouseout beforecontainerclick beforecontainerdblclick beforecontainercontextmenu beforecontainerkeydown beforecontainerkeyup beforecontainerkeypress containermouseup containermousedown containermouseover containermouseout containerclick containerdblclick containercontextmenu containerkeydown containerkeyup containerkeypress beforeselect select beforedeselect deselect beforerowexit'.split(' '));
this.selModel.isSpreadsheetModel||this.relayEvents(this.view,['selectionchange']);Ext.panel.Panel.prototype.initComponent.call(this);this.enableLocking?this.afterInjectLockable():delete headerCtCfg.$initParent;this.addStateEvents('columnresize columnmove columnhide columnshow sortchange filterchange groupchange'.split(' '))},syncHeaderVisibility:function(){var headerCt=this.headerCt,columns=headerCt.items.items,len=columns.length,currentHideHeaderState=0===headerCt.height,hideHeaders=!!len,colText,
i;if(null!=this.hideHeaders)hideHeaders=this.hideHeaders;else for(i=0;hideHeaders&&i<len;i++){var column=columns[i];if((colText=column.text)&&' '!==colText||column.columns||column.isGroupHeader&&column.items.items.length)hideHeaders=!1}headerCt.rendered&&hideHeaders===currentHideHeaderState||(headerCt.setHeight(hideHeaders?0:null),headerCt.hiddenHeaders=hideHeaders,this.headerCt.toggleCls(this.hiddenHeaderCtCls,hideHeaders),this.toggleCls(this.hiddenHeaderCls,hideHeaders),hideHeaders||(headerCt.setScrollable({x:!1,
y:!1}),(columns=this.view.getScrollable())&&headerCt.getScrollable().addPartner(columns,'x')))},updateHideHeaders:function(hideHeaders){this.isConfiguring||this.syncHeaderVisibility()},beforeRender:function(){var bufferedRenderer=this.bufferedRenderer;this.lockable?this.getProtoBody().addCls(this.lockingBodyCls):(bufferedRenderer&&this.getSizeModel().height.auto&&(this.bufferedRenderer=bufferedRenderer=!1),bufferedRenderer&&!bufferedRenderer.isBufferedRenderer&&(bufferedRenderer={xclass:'Ext.grid.plugin.BufferedRenderer'},
Ext.copy(bufferedRenderer,this,'variableRowHeight,numFromEdge,trailingBufferZone,leadingBufferZone,scrollToLoadBuffer',!0),this.bufferedRenderer=this.addPlugin(bufferedRenderer)),bufferedRenderer=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),bufferedRenderer['aria-readonly']=!this.isEditable,bufferedRenderer['aria-multiselectable']='SINGLE'!==this.selModel.selectionMode);Ext.panel.Panel.prototype.beforeRender.apply(this,arguments)},beforeLayout:function(){var lockable=this.mixins.lockable;
lockable&&lockable.beforeLayout.call(this);Ext.panel.Panel.prototype.beforeLayout.call(this)},afterLayout:function(layout){var lockable=this.mixins.lockable;lockable&&lockable.syncLockableLayout.call(this,layout);Ext.panel.Panel.prototype.afterLayout.call(this,layout)},onHide:function(animateTarget,cb,scope){this.getView().onOwnerGridHide();Ext.panel.Panel.prototype.onHide.call(this,animateTarget,cb,scope)},onShow:function(){Ext.panel.Panel.prototype.onShow.call(this);this.getView().onOwnerGridShow()},
getHeaderContainer:function(){return this.getView().getHeaderCt()},getColumns:function(){return this.getColumnManager().getColumns()},getVisibleColumns:function(){return this.getVisibleColumnManager().getColumns()},getScrollable:function(){return this.scrollable||this.view.getScrollable()},focus:function(){this.getView().focus()},disableColumnHeaders:function(){this.headerCt.disable()},enableColumnHeaders:function(){this.headerCt.enable()},hasLockedColumns:function(columns){var len;columns.isRootHeader?
columns=columns.items.items:Ext.isObject(columns)&&(columns=columns.items);var i=0;for(len=columns.length;i<len;i++){var column=columns[i];if(!column.processed&&column.locked)return!0}},relayHeaderCtEvents:function(headerCt){this.relayEvents(headerCt,'columnresize columnmove columnhide columnshow columnschanged sortchange headerclick headercontextmenu headertriggerclick'.split(' '))},getState:function(){var state=Ext.panel.Panel.prototype.getState.call(this),storeState=this.store.getState();state=
this.addPropertyToState(state,'columns',this.headerCt.getColumnsState());storeState&&(state.storeState=storeState);return state},applyState:function(state){var sorter=state.sort,storeState=state.storeState,store=this.store,columns=state.columns=this.buildColumnHash(state.columns);Ext.panel.Panel.prototype.applyState.apply(this,arguments);columns&&this.headerCt.applyColumnsState(columns,storeState);sorter?store.getRemoteSort()?store.sort({property:sorter.property,direction:sorter.direction,root:sorter.root},
null,!1):store.sort(sorter.property,sorter.direction):storeState&&store.applyState(storeState)},buildColumnHash:function(columns){var len;if(columns){var result={};var i=0;for(len=columns.length;i<len;i++){var columnState=columns[i];columnState.index=i;columnState.columns&&(columnState.columns=this.buildColumnHash(columnState.columns));result[columnState.id]=columnState}return result}},getStore:function(){return this.store},onViewRefresh:function(view,records){this.onItemAdd(records,0)},onItemAdd:function(records,
index,nodes,view){nodes=records.length;view=this.freeRowContexts;var liveRowContexts=this.liveRowContexts||(this.liveRowContexts={}),rowContext,i;for(i=0;i<nodes;i++){var record=records[i];liveRowContexts[record.internalId]||((rowContext=view&&view.shift())||(rowContext=new Ext.grid.RowContext({ownerGrid:this})),this.liveRowContexts[record.internalId]=rowContext,rowContext.setRecord(record,index++))}},onItemRemove:function(records,index,nodes,view){records=this.freeRowContexts||(this.freeRowContexts=
[]);index=this.liveRowContexts;view=nodes.length;var i,context;for(i=0;i<view;i++){var id=nodes[i].getAttribute('data-recordId');if(context=index[id])context.free(),records.push(context),delete index[id]}},createManagedWidget:function(ownerId,widgetConfig,record){return this.liveRowContexts[record.internalId].getWidget(ownerId,widgetConfig)},destroyManagedWidgets:function(ownerId){var contexts=this.liveRowContexts,freeRowContexts=this.freeRowContexts,len=freeRowContexts&&freeRowContexts.length,recInternalId,
rowWidgets;for(recInternalId in contexts)if(rowWidgets=contexts[recInternalId].widgets)Ext.destroy(rowWidgets[ownerId]),delete rowWidgets[ownerId];for(contexts=0;contexts<len;contexts++)if(rowWidgets=freeRowContexts[contexts].widgets)Ext.destroy(rowWidgets[ownerId]),delete rowWidgets[ownerId]},getManagedWidgets:function(ownerId){var contexts=this.liveRowContexts,recInternalId,result=[];for(recInternalId in contexts)result.push(contexts[recInternalId].widgets[ownerId]);return result},getView:function(){if(!this.view){var viewConfig=
this.viewConfig;var scroll=viewConfig.scroll||this.scroll;var scrollable=this.scrollable;null==scrollable&&null==viewConfig.scrollable&&null!==scroll&&(!0===scroll||'both'===scroll?scrollable=!0:!1===scroll||'none'===scroll?scrollable=!1:'vertical'===scroll?scrollable={x:!1,y:!0}:'horizontal'===scroll&&(scrollable={x:!0,y:!1}));viewConfig=Ext.apply({grid:this,ownerGrid:this.ownerGrid,deferInitialRefresh:this.deferRowRender,variableRowHeight:this.variableRowHeight,preserveScrollOnRefresh:!0,trackOver:!1!==
this.trackMouseOver,throttledUpdate:!0===this.throttledUpdate,xtype:this.viewType,store:this.store,headerCt:this.headerCt,columnLines:this.columnLines,rowLines:this.rowLines,navigationModel:'grid',features:this.features,panel:this,emptyText:this.emptyText||''},this.viewConfig);'scrollable'in viewConfig||'scroll'in viewConfig||'autoScroll'in viewConfig||null==scrollable||(viewConfig.scrollable=scrollable);Ext.create(viewConfig);this.view.emptyText&&(this.view.emptyText='\x3cdiv class\x3d"'+this.emptyCls+
'"\x3e'+this.view.emptyText+'\x3c/div\x3e');this.view.getComponentLayout().headerCt=this.headerCt;this.mon(this.view,{uievent:this.processEvent,scope:this});this.headerCt.view=this.view;this.hasListeners.viewcreated&&this.fireEvent('viewcreated',this,this.view)}return this.view},getEmptyText:function(){return this.view.emptyText},setEmptyText:function(emptyText){this.emptyText=emptyText;this.view.setEmptyText('\x3cdiv class\x3d"'+this.emptyCls+'"\x3e'+emptyText+'\x3c/div\x3e');return this},getColumnManager:function(){return this.columnManager},
getVisibleColumnManager:function(){return this.visibleColumnManager},getTopLevelColumnManager:function(){return this.ownerGrid.getColumnManager()},getTopLevelVisibleColumnManager:function(){return this.ownerGrid.getVisibleColumnManager()},setAutoScroll:Ext.emptyFn,applyScrollable:function(scrollable){var view=this.view;(view=view&&(view.normalView||view))&&view.setScrollable(scrollable);return scrollable},processEvent:function(type,view,cell,recordIndex,cellIndex,e,record,row){var header=e.position.column;
if(header)return header.processEvent.apply(header,arguments)},ensureVisible:function(record,options){this.doEnsureVisible(record,options)},scrollByDeltaY:function(yDelta,animate){this.getView().scrollBy(null,yDelta,animate)},scrollByDeltaX:function(xDelta,animate){this.getView().scrollBy(xDelta,null,animate)},afterCollapse:function(){this.saveScrollPos();Ext.panel.Panel.prototype.afterCollapse.apply(this,arguments)},afterExpand:function(){Ext.panel.Panel.prototype.afterExpand.apply(this,arguments);
this.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:Ext.emptyFn,onHeaderMove:function(headerCt,header,colsToMove,fromIdx,toIdx){!1===this.optimizedColumnMove?this.view.refreshView():this.view.moveColumn(fromIdx,toIdx,colsToMove);this.delayScroll()},onHeaderHide:function(headerCt,header){header=this.view;!headerCt.childHideCount&&header.refreshCounter&&header.refreshView()},onHeaderShow:function(headerCt,header){headerCt=this.view;headerCt.refreshCounter&&
headerCt.refreshView()},onHeadersChanged:function(headerCt,header){this.rendered&&!this.reconfiguring&&(this.view.refreshView(),this.delayScroll())},delayScroll:function(){var target=this.view;target&&this.scrollTask.delay(10,null,null,[target])},onViewReady:function(){this.fireEvent('viewready',this)},onRestoreHorzScroll:function(){this.scrollXPos&&this.syncHorizontalScroll(this,!0)},getScrollerOwner:function(){var rootCmp=this;this.scrollerOwner||(rootCmp=this.up('[scrollerOwner]'));return rootCmp},
getLhsMarker:function(){return this.lhsMarker||(this.lhsMarker=Ext.DomHelper.append(this.el,{role:'presentation',cls:this.resizeMarkerCls},!0))},getRhsMarker:function(){return this.rhsMarker||(this.rhsMarker=Ext.DomHelper.append(this.el,{role:'presentation',cls:this.resizeMarkerCls},!0))},getSelection:function(){return this.getSelectionModel().getSelection()},updateSelection:function(selection){if(!this.ignoreNextSelection){this.ignoreNextSelection=!0;var sm=this.getSelectionModel();selection?sm.select(selection):
sm.deselectAll();this.ignoreNextSelection=!1}},updateBindSelection:function(selModel,selection){var selected=null;this.ignoreNextSelection||(this.ignoreNextSelection=!0,selection.length&&(selected=selModel.getLastSelected(),this.hasHadSelection=!0),this.hasHadSelection&&this.setSelection(selected),this.ignoreNextSelection=!1)},updateFocused:function(record){this.getNavigationModel().setPosition(record)},updateHeaderBorders:function(headerBorders){this[headerBorders?'removeCls':'addCls'](this.noHeaderBordersCls)},
getNavigationModel:function(){return this.getView().getNavigationModel()},getSelectionModel:function(){return this.getView().getSelectionModel()},getScrollTarget:function(){var items=this.getScrollerOwner().query('tableview');return items[items.length-1]},syncHorizontalScroll:function(target,setBody){target=this.view.getScrollX();setBody=!0===setBody;this.rendered&&(setBody||target!==this.scrollXPos)&&(setBody&&(setBody=this.getScrollTarget(),setBody.setScrollX(target)),this.headerCt.setScrollX(target),
this.scrollXPos=target)},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(store,initial){initial=this.getView();var oldStore=this.getStore();store?(this.store=store,initial.store!==store&&initial.bindStore(store,!1),this.mon(store,{load:this.onStoreLoad,scope:this}),this.storeRelayers=this.relayEvents(store,['filterchange','groupchange']),!this.reconfiguring&&this.hasListeners.storechange&&store!==oldStore&&this.fireEvent('storechange',this,store,oldStore)):
this.unbindStore()},unbindStore:function(){var store=this.store;if(store){store.trackStateChanges=!1;this.store=null;this.mun(store,{load:this.onStoreLoad,scope:this});Ext.destroy(this.storeRelayers);var view=this.view;view.store&&view.bindStore(null);!this.reconfiguring&&this.hasListeners.storechange&&this.fireEvent('storechange',this,null,store)}},setColumns:function(columns){(columns.length||this.getColumnManager().getColumns().length)&&this.reconfigure(void 0,columns)},setStore:function(store){this.reconfigure(store,
void 0,!0);this.isVisible(!0)?!store||!this.autoLoad||store.isEmptyStore||store.loading||store.isLoaded()||store.load():this.globalShowListener||(this.globalShowListener=Ext.GlobalEvents.on({show:this.onGlobalShow,scope:this,destroyable:!0}))},onGlobalShow:function(comp){var store=this.store;if(comp===this||comp.isAncestor(this)&&this.isVisible(!0))!store||!this.autoLoad||store.isEmptyStore||store.loading||store.isLoaded()||store.load(),Ext.destroy(this.globalShowListener)},reconfigure:function(store,
columns,allowUnbind){var oldStore=this.store,headerCt=this.headerCt,lockable=this.lockable,oldColumns=headerCt?headerCt.items.getRange():this.columns,view=this.getView();1===arguments.length&&Ext.isArray(store)&&(columns=store,store=null);columns&&(columns=Ext.Array.slice(columns));this.reconfiguring=!0;if(store)var storeChanged=(store=Ext.StoreManager.lookup(store))&&store!==oldStore;else allowUnbind&&(store=Ext.StoreManager.lookup('ext-empty-store'),storeChanged=store!==oldStore);this.fireEvent('beforereconfigure',
this,store,columns,oldStore,oldColumns);Ext.suspendLayouts();if(lockable)this.reconfigureLockable(store,columns,allowUnbind);else{var block=view.blockRefresh;view.blockRefresh=!0;var restoreFocus=view.saveFocusState();storeChanged&&(this.unbindStore(),this.bindStore(store));if(columns){delete this.scrollXPos;headerCt.removeAll();headerCt.add(columns);var columnsChanged=!0}headerCt.onOwnerGridReconfigure(storeChanged,columnsChanged);var refreshCounter=view.refreshCounter}Ext.resumeLayouts(!0);this.reconfiguring=
!1;lockable?this.afterReconfigureLockable():(view.blockRefresh=block,view.refreshCounter===refreshCounter&&(view.refreshView(),restoreFocus()));this.fireEvent('reconfigure',this,store,columns,oldStore,oldColumns);delete this.reconfiguring;storeChanged&&this.fireEvent('storechange',this,store,oldStore)},doDestroy:function(){var task=this.scrollTask;this.lockable&&this.destroyLockable();task&&task.cancel();Ext.destroy(this.plugins,this.focusEnterLeaveListeners,this.freeRowContexts,Ext.Object.getValues(this.liveRowContexts));
Ext.panel.Panel.prototype.doDestroy.call(this);this.unbindStore()},privates:{initFocusableElement:function(){},doEnsureVisible:function(record$jscomp$0,options){if(this.lockable)return this.ensureLockedVisible(record$jscomp$0,options);'number'===typeof record$jscomp$0||record$jscomp$0.isEntity||(record$jscomp$0=this.store.getById(record$jscomp$0));var me=this,view=me.getView(),domNode$jscomp$0=view.getNode(record$jscomp$0),cell;if(options){var callback=options.callback;var scope=options.scope;var animate=
options.animate;var highlight=options.highlight;var select=options.select;var doFocus=options.focus;var column=options.column}me.deferredEnsureVisible&&me.deferredEnsureVisible.destroy();if(view.componentLayoutCounter)if('number'===typeof column&&(column=me.ownerGrid.getVisibleColumnManager().getColumns()[column]),domNode$jscomp$0){var scrollable=view.getScrollable();column&&(cell=Ext.fly(domNode$jscomp$0).selectNode(column.getCellSelector()));scrollable&&scrollable.scrollIntoView(cell||domNode$jscomp$0,
!!column,animate,highlight);record$jscomp$0.isEntity||(record$jscomp$0=view.getRecord(domNode$jscomp$0));select&&view.getSelectionModel().select(record$jscomp$0);doFocus&&view.getNavigationModel().setPosition(record$jscomp$0,0);Ext.callback(callback,scope||me,[!0,record$jscomp$0,domNode$jscomp$0])}else view.bufferedRenderer?view.bufferedRenderer.scrollTo(record$jscomp$0,{animate:animate,highlight:highlight,select:select,focus:doFocus,column:column,callback:function(recordIdx,record,domNode){Ext.callback(callback,
scope||me,[!0,record,domNode])}}):Ext.callback(callback,scope||me,[!1,null]);else me.deferredEnsureVisible=view.on({resize:me.doEnsureVisible,args:Ext.Array.slice(arguments),scope:me,single:!0,destroyable:!0})},getFocusEl:function(){return this.getView().getFocusEl()},setActionableMode:function(enabled,position){var me=this.ownerGrid;if(!me.destroying&&!1!==me.view.setActionableMode(enabled,position))return me.fireEvent('actionablemodechange',enabled),me[enabled?'addCls':'removeCls'](me.actionableModeCls),
!0},getOverflowStyle:function(){this.scrollFlags=this._scrollFlags['false']['false'];return{overflowX:'hidden',overflowY:'hidden'}},getOverflowEl:function(){return null}}},1,['tablepanel'],['component','box','container','panel','tablepanel'],{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0},['widget.tablepanel'],0,[Ext.panel,'Table'],0);
Ext.define('Ext.theme.neptune.panel.Table',{override:'Ext.panel.Table',lockableBodyBorder:!0,initComponent:function(){(arguments.callee.$previous||Ext.panel.Panel.prototype.initComponent).call(this);this.hasOwnProperty('bodyBorder')||this.hideHeaders||!this.lockableBodyBorder&&this.lockable||(this.bodyBorder=!0)}});
Ext.cmd.derive('Ext.grid.ColumnLayout',Ext.layout.container.HBox,{type:'gridcolumn',firstHeaderCls:'x-column-header-first',lastHeaderCls:'x-column-header-last',initLayout:function(){Ext.layout.container.HBox.prototype.initLayout.call(this);void 0===this.scrollbarWidth&&(this.self.prototype.scrollbarWidth=Ext.getScrollbarSize().width)},beginLayout:function(ownerContext){var owner=this.owner,firstCls=this.firstHeaderCls,lastCls=this.lastHeaderCls,bothCls=[firstCls,lastCls],items=this.getVisibleItems(),
len=items.length,i;Ext.layout.container.HBox.prototype.beginLayout.call(this,ownerContext);for(i=0;i<len;i++){var item=items[i];1===len?item.addCls(bothCls):0===i?(item.addCls(firstCls),item.removeCls(lastCls)):i===len-1?(item.removeCls(firstCls),item.addCls(lastCls)):item.removeCls(bothCls)}this.scrollbarWidth=0;owner.isRootHeader&&!owner.grid.isLocked&&this.determineScrollbarWidth(ownerContext);this.scrollbarWidth||(ownerContext.manageScrollbar=!1)},moveItemBefore:function(item,before){var prevOwner=
item.ownerCt,nextSibling=before&&before.nextSibling();item!==before&&prevOwner&&(prevOwner.remove(item,{destroy:!1,detach:!1}),before&&before.destroyed&&(before=nextSibling));return Ext.layout.container.HBox.prototype.moveItemBefore.call(this,item,before)},determineScrollbarWidth:function(ownerContext){var grid=this.owner.grid,reserveScrollbar=grid.reserveScrollbar,scrollable=grid.view.getScrollable();scrollable=!reserveScrollbar&&scrollable&&scrollable.getY();ownerContext.manageScrollbar=scrollable;
grid.ownerGrid.collapsed||!reserveScrollbar&&!scrollable||delete this.scrollbarWidth},calculate:function(ownerContext){var owner=this.owner,grid=owner.grid,viewContext=ownerContext.viewContext,state=ownerContext.state,context=ownerContext.context,len;Ext.layout.container.HBox.prototype.calculate.call(this,ownerContext);if(grid&&owner.isRootHeader&&state.parallelDone)if(owner=viewContext.lockingPartnerContext,grid.forceFit&&!state.reflexed&&this.convertWidthsToFlexes(ownerContext))this.cacheFlexes(ownerContext),
this.done=!1,ownerContext.invalidate({state:{reflexed:!0,scrollbarAdjustment:this.getScrollbarAdjustment(ownerContext)}});else{if(void 0===state.columnsChanged){var columns=ownerContext.target.getVisibleGridColumns();grid=!1;var i=0;for(len=columns.length;i<len;i++){var column=context.getCmp(columns[i]);column.lastBox&&column.props.width===column.lastBox.width||((grid||(grid=[]))[i]=column)}state.columnsChanged=grid;ownerContext.setProp('columnsChanged',grid)}ownerContext.manageScrollbar&&(state=
this.getScrollbarAdjustment(ownerContext))&&(state=viewContext.getProp('viewOverflowY'),void 0===state?this.done=!1:state||(owner&&(owner.invalidate(),owner.headerContext.invalidate()),viewContext.invalidate(),ownerContext.invalidate({state:{scrollbarAdjustment:0}})))}},finishedLayout:function(ownerContext){Ext.layout.container.HBox.prototype.finishedLayout.call(this,ownerContext);'rowgroup'===this.owner.ariaRole&&this.innerCt.dom.setAttribute('role','row');ownerContext.props.columnsChanged=null},
convertWidthsToFlexes:function(ownerContext){var totalWidth=0,calculated=this.sizeModels.calculated,i;var childItems=ownerContext.childItems;var len=childItems.length;for(i=0;i<len;i++){var childContext=childItems[i];var item=childContext.target;totalWidth+=childContext.props.width;item.fixed||!1===item.resizable||(item.flex=ownerContext.childItems[i].flex=childContext.props.width,item.width=null,childContext.widthModel=calculated)}return totalWidth!==ownerContext.props.width},getScrollbarAdjustment:function(ownerContext){var state=
ownerContext.state,grid=this.owner.grid,scrollbarAdjustment=state.scrollbarAdjustment;if(void 0===scrollbarAdjustment){scrollbarAdjustment=0;if(grid.reserveScrollbar||ownerContext.manageScrollbar&&!grid.ownerGrid.getSizeModel().height.shrinkWrap)scrollbarAdjustment=this.scrollbarWidth;state.scrollbarAdjustment=scrollbarAdjustment}return scrollbarAdjustment},getContainerSize:function(ownerContext){var needed,gotWidth,gotHeight;if(this.owner.isRootHeader){var got=Ext.layout.container.HBox.prototype.getContainerSize.call(this,
ownerContext);got.gotWidth&&(got.width-=this.getScrollbarAdjustment(ownerContext))}else{var padding=ownerContext.paddingContext.getPaddingInfo();got=needed=0;if(!ownerContext.widthModel.shrinkWrap){++needed;var width=ownerContext.getProp('innerWidth');if(gotWidth='number'===typeof width)++got,width-=padding.width,0>width&&(width=0)}if(!ownerContext.heightModel.shrinkWrap){++needed;var height=ownerContext.getProp('innerHeight');if(gotHeight='number'===typeof height)++got,height-=padding.height,0>height&&
(height=0)}return{width:width,height:height,needed:needed,got:got,gotAll:got===needed,gotWidth:gotWidth,gotHeight:gotHeight}}return got},publishInnerCtSize:function(ownerContext){var owner=this.owner,adjustment=0;null!=ownerContext.peek('contentWidth')&&owner.isRootHeader&&(adjustment=-ownerContext.state.scrollbarAdjustment);return Ext.layout.container.HBox.prototype.publishInnerCtSize.call(this,ownerContext,adjustment)}},0,0,0,0,['layout.gridcolumn'],0,[Ext.grid,'ColumnLayout'],0);
Ext.cmd.derive('Ext.grid.ColumnManager',Ext.Base,{alternateClassName:['Ext.grid.ColumnModel'],columns:null,constructor:function(visibleOnly,headerCt,secondHeaderCt){this.headerCt=headerCt;secondHeaderCt&&(this.secondHeaderCt=secondHeaderCt);this.visibleOnly=!!visibleOnly},getColumns:function(){this.columns||this.cacheColumns();return this.columns},hasVariableRowHeight:function(){var columns=this.getColumns(),len=columns.length,i;if(null==this.variableRowHeight)for(this.variableRowHeight=!1,i=0;!this.variableRowHeight&&
i<len;i++)this.variableRowHeight=!!columns[i].variableRowHeight;return this.variableRowHeight},getHeaderIndex:function(header){header.isGroupHeader&&(header=this.getHeaderColumns(header)[0]);return Ext.Array.indexOf(this.getColumns(),header)},getHeaderAtIndex:function(index){return this.getColumns()[index]||null},getPreviousSibling:function(header){header=this.getHeaderIndex(header);var col=null;0<header&&(col=this.getColumns()[header-1]);return col},getNextSibling:function(header){header=this.getHeaderIndex(header);
var col;-1!==header&&(col=this.getColumns()[header+1]);return col||null},getFirst:function(){var columns=this.getColumns();return 0<columns.length?columns[0]:null},getLast:function(){var columns=this.getColumns(),len=columns.length;return 0<len?columns[len-1]:null},getHeaderByDataIndex:function(dataIndex){var columns=this.getColumns(),len=columns.length,i;if(Ext.isEmpty(dataIndex))return null;for(i=0;i<len;++i){var header=columns[i];if(header.dataIndex===dataIndex)return header}return null},getHeaderById:function(id){var columns=
this.getColumns(),len=columns.length,i;for(i=0;i<len;++i){var header=columns[i];if(header.getItemId()===id)return header}return null},getVisibleHeaderClosestToIndex:function(index){(index=this.getHeaderAtIndex(index))&&index.hidden&&(index=index.next(':not([hidden])')||index.prev(':not([hidden])'));return index},cacheColumns:function(){var columns=this.getHeaderColumns(this.headerCt),second=this.secondHeaderCt;second&&(columns=columns.concat(this.getHeaderColumns(second)));this.columns=columns},getHeaderColumns:function(header){header=
this.visibleOnly?header.getVisibleGridColumns():header.getGridColumns();return Ext.Array.clone(header)},invalidate:function(){var root=this.rootColumns;this.columns=this.variableRowHeight=null;root&&root.invalidate()},destroy:function(){this.columns=this.rootColumns=null;this.callParent()}},1,0,0,0,0,0,[Ext.grid,'ColumnManager',Ext.grid,'ColumnModel'],function(){this.createAlias('indexOf','getHeaderIndex')});
Ext.cmd.derive('Ext.grid.NavigationModel',Ext.view.NavigationModel,{focusCls:'x-grid-item-focused',getViewListeners:function(){return{focusmove:{element:'el',fn:this.onFocusMove},containermousedown:this.onContainerMouseDown,cellmousedown:this.onCellMouseDown,cellclick:this.onCellClick,itemmousedown:this.onItemMouseDown,itemclick:this.onItemClick,itemcontextmenu:this.onItemClick,scope:this}},initKeyNav:function(view){this.keyNav||(this.keyNav=[],this.position=new Ext.grid.CellContext(view));view=new Ext.util.KeyNav({target:view,
ignoreInputFields:!0,eventName:Ext.supports.SpecialKeyDownRepeat?'itemkeydown':'itemkeypress',defaultEventAction:'stopEvent',processEvent:this.processViewEvent,up:this.onKeyUp,down:this.onKeyDown,right:this.onKeyRight,left:this.onKeyLeft,pageDown:this.onKeyPageDown,pageUp:this.onKeyPageUp,home:this.onKeyHome,end:this.onKeyEnd,space:this.onKeySpace,enter:this.onKeyEnter,esc:this.onKeyEsc,113:this.onKeyF2,tab:this.onKeyTab,A:{ctrl:!0,handler:this.onSelectAllKeyPress},scope:this});this.keyNav.push(view);
this.onKeyNavCreate(view)},onKeyNavCreate:Ext.emptyFn,addKeyBindings:function(binding){var len=this.keyNav.length,i;for(i=0;i<len;i++)this.keyNav[i].addBindings(binding)},enable:function(){var len=this.keyNav.length,i;for(i=0;i<len;i++)this.keyNav[i].enable();this.disabled=!1},disable:function(){var len=this.keyNav.length,i;for(i=0;i<len;i++)this.keyNav[i].disable();this.disabled=!0},processViewEvent:function(view,record,row,recordIndex,event){record=event.getKey();if(view.actionableMode){if(this.map.ignoreInputFields=
!1,record===event.TAB||record===event.ESC||record===event.F2)return event}else return this.map.ignoreInputFields=!0,record===event.TAB?null:event},onCellMouseDown:function(view,cell,cellIndex,record,row,recordIndex,mousedownEvent){cellIndex=Ext.Component.fromElement(mousedownEvent.target,cell);record=mousedownEvent.getTarget(null,null,!0);record=record.isFocusable()&&!record.is(view.getCellSelector());var ac;view.actionableMode?(record||(record=(ac=Ext.ComponentManager.getActiveComponent())&&ac!==
view&&ac.owns(mousedownEvent)),record?view.setActionableMode(!0,mousedownEvent.position):view.setActionableMode(!1,mousedownEvent.position)):'touch'!==mousedownEvent.pointerType&&(!1!==mousedownEvent.position.column.cellFocusable?(record?(view.containsFocus||(view.containsFocus=!0,view.toggleChildrenTabbability(!1)),view.setActionableMode(!0,mousedownEvent.position)):cell.focus(),2===mousedownEvent.button&&this.fireNavigateEvent(mousedownEvent)):mousedownEvent.preventDefault(!0),cellIndex&&cellIndex.isFocusable&&
cellIndex.isFocusable()&&(view.setActionableMode(!0,mousedownEvent.position),cellIndex.focus()))},onCellClick:function(view,cell,cellIndex,record,row,recordIndex,clickEvent){cell=(cell=Ext.Component.fromElement(clickEvent.target,cell))&&cell.isFocusable&&cell.isFocusable();if(Ext.isIE10m||view.el.contains(Ext.Element.getActiveElement())||'touch'===clickEvent.pointerType)view.actionableMode?(clickEvent.position.isEqual(view.actionPosition)||cell||view.setActionableMode(!1,clickEvent.position),this.fireEvent('navigate',
{view:view,navigationModel:this,keyEvent:clickEvent,previousPosition:this.previousPosition,previousRecordIndex:this.previousRecordIndex,previousRecord:this.previousRecord,previousItem:this.previousItem,previousCell:this.previousCell,previousColumnIndex:this.previousColumnIndex,previousColumn:this.previousColumn,position:clickEvent.position,recordIndex:clickEvent.position.rowIdx,record:clickEvent.position.record,selectionStart:this.selectionStart,item:clickEvent.item,cell:clickEvent.position.cellElement,
columnIndex:clickEvent.position.colIdx,column:clickEvent.position.column})):this.position.isEqual(clickEvent.position)||cell?(!Ext.isIE10m||this.record)&&this.fireNavigateEvent(clickEvent):!1!==clickEvent.position.column.cellFocusable?this.setPosition(clickEvent.position,null,clickEvent):clickEvent.preventDefault()},onFocusMove:function(e){var view=Ext.Component.fromElement(e.delegatedTarget,null,'tableview'),cell=e.target,isCell=Ext.fly(cell).is(view.cellSelector);view&&(!view.actionableMode&&isCell?
(e=view.getRecord(cell),cell=view.getHeaderByCell(cell),e&&cell&&(view=(new Ext.grid.CellContext(view)).setPosition(e,cell),view.isEqual(this.position)||this.setPosition(view))):(view.actionableMode||view.activating)&&!isCell&&view.el.contains(e.target)&&view.el.dom!==e.target&&view.ownerGrid.fireEvent('cellactivate',view.ownerGrid,view.actionPosition))},onItemMouseDown:function(view,record,item,index,mousedownEvent){mousedownEvent.position.cellElement||'touch'===mousedownEvent.pointerType||(mousedownEvent.preventDefault(),
this.getClosestCell(mousedownEvent),this.position.isEqual(mousedownEvent.position)||this.setPosition(mousedownEvent.position,null,mousedownEvent),view.getScrollable().restoreState())},onItemClick:function(view,record,item,index,clickEvent){clickEvent.position.cellElement||(this.getClosestCell(clickEvent),'touch'===clickEvent.pointerType&&this.setPosition(clickEvent.position,null,clickEvent),this.fireNavigateEvent(clickEvent))},getClosestCell:function(event){var position=event.position,i;if(!position.cellElement){event=
event.getX();var columns=position.view.getVisibleColumnManager().getColumns();var len=columns.length;for(i=0;i<len;i++){var b=columns[i].getBox();if(event>=b.left&&event<b.right){position.setColumn(columns[i]);position.rowElement=position.getRow(!0);position.cellElement=position.getCell(!0);break}}}},deferSetPosition:function(delay,recordIndex,columnIndex,keyEvent,suppressEvent,preventNavigation){var setPositionTask=this.view.getFocusTask();setPositionTask.delay(delay,this.setPosition,this,[recordIndex,
columnIndex,keyEvent,suppressEvent,preventNavigation]);return setPositionTask},setPosition:function(recordIndex,columnIndex,keyEvent,suppressEvent,preventNavigation){var clearing=null==recordIndex&&null==columnIndex,isClear=null==this.record&&null==this.recordIndex&&null==this.item;var view=recordIndex&&recordIndex.isCellContext?recordIndex.view:keyEvent&&keyEvent.view?keyEvent.view:this.lastFocused?this.lastFocused.view:this.view;view.getFocusTask().cancel();if(!(view.destroyed||!view.refreshCounter||
!view.ownerCt||clearing&&isClear)&&view.all.getCount()){var selModel=view.getSelectionModel();var dataSource=view.dataSource;var columnManager=view.getVisibleColumnManager();var columns=columnManager.getColumns();if(recordIndex&&recordIndex.isCellContext){var newRecord=recordIndex.record;var newRecordIndex=recordIndex.rowIdx;var newColumnIndex=Math.min(recordIndex.colIdx,columns.length-1);isClear=columns[newColumnIndex];-1===dataSource.indexOf(newRecord)&&(columnIndex=view.getScrollable(),this.recordIndex=
-1,columnIndex&&columnIndex.getPosition().y>=columnIndex.getMaxPosition().y-view.all.last(!0).offsetHeight&&recordIndex.rowIdx--,newRecordIndex=Math.min(recordIndex.rowIdx,dataSource.getCount()-1),newRecord=dataSource.getAt(newRecordIndex))}else{if(clearing)newRecord=newRecordIndex=null;else if(null==columnIndex&&(columnIndex=this.lastFocused?this.lastFocused.column:0),'number'===typeof recordIndex)newRecordIndex=Math.max(Math.min(recordIndex,dataSource.getCount()-1),0),newRecord=dataSource.getAt(recordIndex);
else if(recordIndex.isEntity)newRecord=recordIndex,newRecordIndex=dataSource.indexOf(newRecord);else if(recordIndex.tagName)newRecord=view.getRecord(recordIndex),newRecordIndex=dataSource.indexOf(newRecord),-1===newRecordIndex&&(newRecord=null);else{if(isClear)return;clearing=!0;newRecord=newRecordIndex=null}newRecord?(-1===newRecordIndex&&(this.recordIndex=-1,newRecord=dataSource.getAt(0),newRecordIndex=0,columnIndex=null),null==columnIndex?(isClear=this.column)||(newColumnIndex=0,isClear=columns[0]):
'number'===typeof columnIndex?(isClear=columns[columnIndex],newColumnIndex=columnIndex):(isClear=columnIndex,newColumnIndex=columnManager.indexOf(columnIndex))):(clearing=!0,isClear=newColumnIndex=null)}isClear&&-1===columnManager.indexOf(isClear)&&(newColumnIndex=-1===newColumnIndex?0:Math.min(newColumnIndex,columns.length-1),isClear=columns[newColumnIndex]);if(view.actionableMode&&!clearing)return view.ownerGrid.setActionableMode(!1,(new Ext.grid.CellContext(view)).setPosition(newRecord,isClear));
if(newRecordIndex===this.recordIndex&&newColumnIndex===this.columnIndex&&view===this.position.view)return this.focusPosition(this.position);this.cell&&this.cell.removeCls(this.focusCls);this.previousRecordIndex=this.recordIndex;this.previousRecord=this.record;this.previousItem=this.item;this.previousCell=this.cell;this.previousColumn=this.column;this.previousColumnIndex=this.columnIndex;this.previousPosition=this.position.clone();this.selectionStart=selModel.selectionStart;this.position.setAll(view,
this.recordIndex=newRecordIndex,this.columnIndex=newColumnIndex,this.record=newRecord,this.column=isClear);clearing?this.item=this.cell=null:this.focusPosition(this.position,preventNavigation);suppressEvent||(selModel.fireEvent('focuschange',selModel,this.previousRecord,this.record),view.fireEvent('rowfocus',this.record,this.item,this.recordIndex),view.fireEvent('cellfocus',this.record,this.cell,this.position));keyEvent&&!preventNavigation&&this.cell!==this.previousCell&&this.fireNavigateEvent(keyEvent)}},
focusPosition:function(position){var row;this.item=this.cell=null;if(position&&position.record&&position.column){var view=position.view;(row=position.rowElement?this.item=position.rowElement:view.getRowByRecord(position.record))?(this.cell=position.cellElement||Ext.fly(row).down(position.column.getCellSelector(),!0))?(this.cell=new Ext.dom.Fly(this.cell),view.lastFocused=this.lastFocused=this.position.clone(),(position=view.getScrollable())&&position.scrollIntoView(this.cell),this.focusItem(this.cell),
view.focusEl=this.cell):(this.position.setAll(),this.record=this.column=this.recordIndex=this.columnIndex=null):(row=view.dataSource.indexOf(position.record),this.position.setAll(),this.record=this.column=this.recordIndex=this.columnIndex=null,-1!==row&&view.bufferedRenderer&&(this.lastKeyEvent=null,view.bufferedRenderer.scrollTo(row,!1,this.afterBufferedScrollTo,this)))}},focusItem:function(item){item.addCls(this.focusCls);item.focus()},getCell:function(){return this.cell},getPosition:function(skipChecks){var position=
this.position;if(position.record&&position.column){if(skipChecks)return position;var view=position.view;var dataSource=view.dataSource;skipChecks=dataSource.indexOf(position.record);-1===skipChecks&&(skipChecks=position.rowIdx,(position.record=dataSource.getAt(skipChecks))||(skipChecks=-1));if(-1===skipChecks||-1===view.getVisibleColumnManager().indexOf(position.column))position.setAll(),this.record=this.column=this.recordIndex=this.columnIndex=null;else return position}return null},getLastFocused:function(){var lastFocused=
this.lastFocused;if(lastFocused&&lastFocused.record&&lastFocused.column){var view=lastFocused.view;if(-1!==view.dataSource.indexOf(lastFocused.record)&&-1!==view.getVisibleColumnManager().indexOf(lastFocused.column))return lastFocused}},onKeyTab:function(keyEvent){var forward=!keyEvent.shiftKey,view=keyEvent.position.view;var ret=view.findFocusPosition(keyEvent.target,keyEvent.position,forward,keyEvent);var focusTarget=ret.target;ret=ret.position;if(focusTarget)this.actionPosition=ret.view.actionPosition=
ret,Ext.fly(focusTarget).focus();else view.onRowExit(keyEvent,keyEvent.item,keyEvent.item[forward?'nextSibling':'previousSibling'],forward);keyEvent.preventDefault()},onKeyUp:function(keyEvent){var newRecord=keyEvent.view.walkRecs(keyEvent.record,-1),pos=this.getPosition();newRecord&&(pos.setRow(newRecord),pos.getCell(!0)||pos.navigate(-1),this.setPosition(pos,null,keyEvent))},onKeyDown:function(keyEvent){var newRecord=keyEvent.record.isExpandingOrCollapsing?null:keyEvent.view.walkRecs(keyEvent.record,
1),pos=this.getPosition();newRecord&&(pos.setRow(newRecord),pos.getCell(!0)||pos.navigate(-1),this.setPosition(pos,null,keyEvent))},onKeyRight:function(keyEvent){var newPosition=this.move('right',keyEvent);newPosition&&this.setPosition(newPosition,null,keyEvent)},onKeyLeft:function(keyEvent){var newPosition=this.move('left',keyEvent);newPosition&&this.setPosition(newPosition,null,keyEvent)},onKeyEnter:function(keyEvent){var eventArgs=['cellclick',keyEvent.view,keyEvent.position.cellElement,keyEvent.position.colIdx,
keyEvent.record,keyEvent.position.rowElement,keyEvent.recordIndex,keyEvent],actionCell=keyEvent.position.getCell();actionCell&&(actionCell.query('[tabIndex\x3d"-1"]').length||(keyEvent.stopEvent(),keyEvent.view.fireEvent.apply(keyEvent.view,eventArgs),eventArgs[0]='celldblclick',keyEvent.view.fireEvent.apply(keyEvent.view,eventArgs)),this.view.actionableMode||this.view.ownerGrid.setActionableMode(!0,this.getPosition()))},onKeyF2:function(keyEvent){keyEvent=this.view.ownerGrid;var actionableMode=keyEvent.actionableMode;
keyEvent.setActionableMode(!actionableMode,actionableMode?null:this.getPosition())},onKeyEsc:function(keyEvent){keyEvent=this.view.ownerGrid;if(keyEvent.actionableMode)keyEvent.setActionableMode(!1);else return!0},move:function(dir,keyEvent){var position=this.getPosition(),result=position;if(position&&position.record)for(;result;)if((result=position.view.walkCells(result,dir,!keyEvent.shiftKey||'right'!==dir&&'left'!==dir?null:this.vetoRowChange,this))&&!1!==result.column.cellFocusable)return result},
vetoRowChange:function(newPosition){return this.getPosition().record===newPosition.record},onKeyPageDown:function(keyEvent){var view=keyEvent.view,rowsVisible=this.getRowsVisible();rowsVisible&&(view.bufferedRenderer?(rowsVisible=Math.min(keyEvent.recordIndex+rowsVisible,view.dataSource.getCount()-1),this.lastKeyEvent=keyEvent,view.bufferedRenderer.scrollTo(rowsVisible,!1,this.afterBufferedScrollTo,this)):(view=view.walkRecs(keyEvent.record,rowsVisible),this.setPosition(view,null,keyEvent)))},onKeyPageUp:function(keyEvent){var view=
keyEvent.view,rowsVisible=this.getRowsVisible();rowsVisible&&(view.bufferedRenderer?(rowsVisible=Math.max(keyEvent.recordIndex-rowsVisible,0),this.lastKeyEvent=keyEvent,view.bufferedRenderer.scrollTo(rowsVisible,!1,this.afterBufferedScrollTo,this)):(view=view.walkRecs(keyEvent.record,-rowsVisible),this.setPosition(view,null,keyEvent)))},onKeyHome:function(keyEvent){var view=keyEvent.view;keyEvent.altKey?view.bufferedRenderer?(this.lastKeyEvent=keyEvent,view.bufferedRenderer.scrollTo(0,!1,this.afterBufferedScrollTo,
this)):this.setPosition(view.walkRecs(keyEvent.record,-view.dataSource.indexOf(keyEvent.record)),null,keyEvent):this.setPosition(keyEvent.record,0,keyEvent)},afterBufferedScrollTo:function(newIdx,newRecord){this.setPosition(newRecord,null,this.lastKeyEvent,null,!this.lastKeyEvent)},onKeyEnd:function(keyEvent){var view=keyEvent.view;keyEvent.altKey?view.bufferedRenderer?(this.lastKeyEvent=keyEvent,view.bufferedRenderer.scrollTo(view.store.getCount()-1,!1,this.afterBufferedScrollTo,this)):this.setPosition(view.walkRecs(keyEvent.record,
view.dataSource.getCount()-1-view.dataSource.indexOf(keyEvent.record)),null,keyEvent):this.setPosition(keyEvent.record,keyEvent.view.getVisibleColumnManager().getColumns().length-1,keyEvent)},getRowsVisible:function(){var rowsVisible=!1,view=this.view,firstRow=view.all.first();firstRow&&(rowsVisible=firstRow.getHeight(),view=view.el.getHeight(),rowsVisible=Math.floor(view/rowsVisible));return rowsVisible},fireNavigateEvent:function(keyEvent){this.fireEvent('navigate',{view:this.position.view,navigationModel:this,
keyEvent:keyEvent||new Ext.event.Event({}),previousPosition:this.previousPosition,previousRecordIndex:this.previousRecordIndex,previousRecord:this.previousRecord,previousItem:this.previousItem,previousCell:this.previousCell,previousColumnIndex:this.previousColumnIndex,previousColumn:this.previousColumn,position:this.position,recordIndex:this.recordIndex,record:this.record,selectionStart:this.selectionStart,item:this.item,cell:this.cell,columnIndex:this.columnIndex,column:this.column})}},0,0,0,0,['view.navigation.grid'],
0,[Ext.grid,'NavigationModel'],0);
Ext.cmd.derive('Ext.view.TableLayout',Ext.layout.component.Auto,{type:'tableview',beginLayout:function(ownerContext){var owner=this.owner,ownerGrid=owner.ownerGrid;owner=owner.lockingPartner;var partnerContext=ownerContext.lockingPartnerContext,partnerVisible=owner&&owner.grid.isVisible()&&!owner.grid.collapsed,context=ownerContext.context;ownerContext.doSyncRowHeights=partnerVisible&&(ownerGrid.syncRowHeight||ownerGrid.syncRowHeightOnNextLayout);this.columnFlusherId||(this.columnFlusherId=this.id+
'-columns',this.rowHeightFlusherId=this.id+'-rows');Ext.layout.component.Auto.prototype.beginLayout.call(this,ownerContext);partnerVisible&&(!partnerContext&&owner.componentLayout.isRunning()&&((partnerContext=ownerContext.lockingPartnerContext=context.getCmp(owner)).lockingPartnerContext=ownerContext,partnerContext.lockingPartnerContext||(partnerContext.lockingPartnerContext=ownerContext)),ownerContext.doSyncRowHeights&&(partnerContext&&!partnerContext.rowHeightSynchronizer&&(partnerContext.rowHeightSynchronizer=
partnerContext.target.syncRowHeightBegin()),ownerContext.rowHeightSynchronizer=this.owner.syncRowHeightBegin()));(ownerContext.headerContext=context.getCmp(this.headerCt)).viewContext=ownerContext},beginLayoutCycle:function(ownerContext,firstCycle){Ext.layout.component.Auto.prototype.beginLayoutCycle.call(this,ownerContext,firstCycle);ownerContext.syncRowHeights&&(ownerContext.target.syncRowHeightClear(ownerContext.rowHeightSynchronizer),ownerContext.syncRowHeights=!1)},calculate:function(ownerContext){var context=
ownerContext.context,lockingPartnerContext=ownerContext.lockingPartnerContext,ownerCtContext=ownerContext.ownerCtContext,owner=this.owner,columnsChanged=ownerContext.headerContext.getProp('columnsChanged'),state=ownerContext.state,columnFlusher,bodyDom=owner.body.dom;if(owner.all.getCount()||bodyDom&&owner.body.child('table'))if(1===this.calcCount&&this.owner.bufferedRenderer&&this.owner.bufferedRenderer.beforeTableLayout(ownerContext),void 0===columnsChanged)this.done=!1;else{if(columnsChanged&&
((columnFlusher=state.columnFlusher)||context.queueFlush(state.columnFlusher=columnFlusher={ownerContext:ownerContext,columnsChanged:columnsChanged,layout:this,id:this.columnFlusherId,flush:this.flushColumnWidths},!0),!columnFlusher.flushed)){this.done=!1;return}if(ownerContext.doSyncRowHeights){if(!(columnsChanged=state.rowHeightFlusher)){(columnsChanged=state.rowHeights)||(state.rowHeights=columnsChanged=ownerContext.rowHeightSynchronizer,this.owner.syncRowHeightMeasure(columnsChanged),ownerContext.setProp('rowHeights',
columnsChanged));if(!(lockingPartnerContext=lockingPartnerContext.getProp('rowHeights'))){this.done=!1;return}context.queueFlush(state.rowHeightFlusher=columnsChanged={ownerContext:ownerContext,synchronizer:columnsChanged,otherSynchronizer:lockingPartnerContext,layout:this,id:this.rowHeightFlusherId,flush:this.flushRowHeights},!0)}if(!columnsChanged.flushed){this.done=!1;return}}Ext.layout.component.Auto.prototype.calculate.call(this,ownerContext);if(!ownerContext.heightModel.shrinkWrap){context=
!1;if(!ownerCtContext.heightModel.shrinkWrap){ownerCtContext=ownerCtContext.target.layout.getContainerSize(ownerCtContext);if(!ownerCtContext.gotHeight){this.done=!1;return}bodyDom=bodyDom.offsetHeight;context=bodyDom>ownerCtContext.height}ownerContext.setProp('viewOverflowY',context)}this.done&&Ext.getScrollbarSize().height&&(owner.lockingPartner||ownerContext.setProp('overflowX',!!ownerContext.headerContext.state.boxPlan.tooNarrow))}else ownerContext.setProp('viewOverflowY',!1),Ext.layout.component.Auto.prototype.calculate.call(this,
ownerContext)},measureContentHeight:function(ownerContext){var owner=this.owner,bodyDom=owner.body.dom;owner=owner.emptyEl;var bodyHeight=0;owner&&(bodyHeight+=owner.offsetHeight);bodyDom&&(bodyHeight+=bodyDom.offsetHeight);ownerContext.headerContext.state.boxPlan.tooNarrow&&(bodyHeight+=Ext.getScrollbarSize().height);return bodyHeight},flushColumnWidths:function(){var me=this.layout,ownerContext=this.ownerContext,columnsChanged=this.columnsChanged,owner=ownerContext.target,len=columnsChanged.length,
column,i;if(ownerContext.state.columnFlusher===this){for(i=0;i<len;i++)if(column=columnsChanged[i]){var colWidth=column.props.width;owner.body.select(owner.getColumnSizerSelector(column.target)).setWidth(colWidth);if(column.target.onCellsResized)column.target.onCellsResized(colWidth);if(column=column.lastBox)column.width=colWidth}this.flushed=!0;me.pending||ownerContext.context.queueLayout(me)}},flushRowHeights:function(){var me=this.layout,ownerContext=this.ownerContext;ownerContext.state.rowHeightFlusher===
this&&(ownerContext.target.syncRowHeightFinish(this.synchronizer,this.otherSynchronizer),this.flushed=!0,ownerContext.syncRowHeights=!0,me.pending||ownerContext.context.queueLayout(me))},finishedLayout:function(ownerContext){var ownerGrid=this.owner.ownerGrid,nodeContainer=Ext.fly(this.owner.getNodeContainer());Ext.layout.component.Auto.prototype.finishedLayout.call(this,ownerContext);nodeContainer&&nodeContainer.setWidth(ownerContext.headerContext.props.contentWidth);this.owner.bufferedRenderer&&
this.owner.bufferedRenderer.afterTableLayout(ownerContext);ownerGrid&&(ownerGrid.syncRowHeightOnNextLayout=!1)},getLayoutItems:function(){return this.owner.getRefItems()},isValidParent:function(){return!0}},0,0,0,0,['layout.tableview'],0,[Ext.view,'TableLayout'],0);
Ext.cmd.derive('Ext.grid.locking.RowSynchronizer',Ext.Base,{constructor:function(view,rowEl){this.view=view;this.rowEl=rowEl;this.els={};this.add('data',view.rowSelector);for(view=view.rowTpl;view;view=view.nextTpl)view.beginRowSync&&view.beginRowSync(this)},add:function(name,selector){(selector=Ext.fly(this.rowEl).down(selector,!0))&&(this.els[name]={el:selector})},finish:function(other){var els=this.els,otherEls=other.els,otherEl,growth=0,otherGrowth=0,name;for(name in els){var otherHeight=(otherEl=
otherEls[name])?otherEl.height:0;otherEl=otherHeight-els[name].height;0<otherEl?(growth+=otherEl,Ext.fly(els[name].el).setHeight(otherHeight)):otherGrowth-=otherEl}otherHeight=other.rowHeight+otherGrowth;Ext.isIE9&&this.view.ownerGrid.rowLines&&otherHeight--;this.rowHeight+growth<otherHeight&&Ext.fly(this.rowEl).setHeight(otherHeight)},measure:function(){var els=this.els,name;this.rowHeight=this.rowEl.offsetHeight;for(name in els)els[name].height=els[name].el.offsetHeight},reset:function(){var els=
this.els,name;this.rowEl.style.height='';for(name in els)els[name].el.style.height=''}},1,0,0,0,0,0,[Ext.grid.locking,'RowSynchronizer'],0);
Ext.cmd.derive('Ext.view.NodeCache',Ext.Base,{statics:{range:document.createRange&&document.createRange()},constructor:function(view){this.view=view;this.clear();this.el=new Ext.dom.Fly},destroy:function(){this.destroyed||(this.el.destroy(),this.el=this.view=null,this.destroyed=!0);this.callParent()},clear:function(removeDom){var elements=this.elements,range=this.statics().range,key;if(this.count&&removeDom)if(range&&Ext.getBody().contains(elements[0]))range.setStartBefore(elements[this.startIndex]),
range.setEndAfter(elements[this.endIndex]),range.deleteContents();else for(key in elements)Ext.removeNode(elements[key]);this.elements={};this.count=this.startIndex=0;this.endIndex=-1},fill:function(newElements,startIndex,fixedNodes){fixedNodes=fixedNodes||0;var elements=this.elements={},i,len=newElements.length-fixedNodes;startIndex||(startIndex=0);for(i=0;i<len;i++)elements[startIndex+i]=newElements[i+fixedNodes];this.startIndex=startIndex;this.endIndex=startIndex+len-1;this.count=len;return this},
insert:function(insertPoint,nodes){var elements=this.elements,i,nodeCount=nodes.length;if(this.count){if(insertPoint<this.count)for(i=this.endIndex+nodeCount;i>=insertPoint+nodeCount;i--)elements[i]=elements[i-nodeCount],elements[i].setAttribute('data-recordIndex',i);this.endIndex+=nodeCount}else this.startIndex=insertPoint,this.endIndex=insertPoint+nodeCount-1;for(i=0;i<nodeCount;i++,insertPoint++)elements[insertPoint]=nodes[i],elements[insertPoint].setAttribute('data-recordIndex',insertPoint);this.count+=
nodeCount},invoke:function(fn,args){var element,i;fn=Ext.dom.Element.prototype[fn];for(i=this.startIndex;i<=this.endIndex;i++)(element=this.item(i))&&fn.apply(element,args);return this},item:function(index,asDom){var result=null;this.elements[index]&&(result=asDom?this.elements[index]:this.el.attach(this.elements[index]));return result},first:function(asDom){return this.item(this.startIndex,asDom)},last:function(asDom){return this.item(this.endIndex,asDom)},moveBlock:function(increment){var elements=
this.elements;if(increment){if(0>increment){var i=this.startIndex-1;var end=this.endIndex;var step=1}else i=this.endIndex+1,end=this.startIndex,step=-1;this.startIndex+=increment;this.endIndex+=increment;do{i+=step;var node=elements[i+increment]=elements[i];node.setAttribute('data-recordIndex',i+increment);(i<this.startIndex||i>this.endIndex)&&delete elements[i]}while(i!==end);delete elements[i]}},getCount:function(){return this.count},slice:function(start,end){var elements=this.elements,result=[];
end=end?Math.min(this.endIndex,end-1):this.endIndex;for(start=start||this.startIndex;start<=end;start++)result.push(elements[start]);return result},replaceElement:function(el,replacement,domReplace){var elements=this.elements,index='number'===typeof el?el:this.indexOf(el);-1<index&&(replacement=Ext.getDom(replacement),domReplace&&(el=elements[index],el.parentNode.insertBefore(replacement,el),Ext.removeNode(el),replacement.setAttribute('data-recordIndex',index)),this.elements[index]=replacement);return this},
indexOf:function(el){var elements=this.elements,index;el=Ext.getDom(el);for(index=this.startIndex;index<=this.endIndex;index++)if(elements[index]===el)return index;return-1},clip:function(removeEnd,removeCount){var elements=this.elements,removed=[],end;1===removeEnd?(removeEnd=this.startIndex,this.startIndex+=removeCount):(this.endIndex-=removeCount,removeEnd=this.endIndex+1);var i=removeEnd;for(end=removeEnd+removeCount-1;i<=end;i++){var el=elements[i];removed.push(el);Ext.removeNode(el);delete elements[i]}this.count-=
removeCount;this.view.fireItemMutationEvent('itemremove',this.view.dataSource.getRange(removeEnd,end),removeEnd,removed,this.view)},removeRange:function(start,end,removeDom){var elements=this.elements,removed=[],fromPos;end=null==end?this.endIndex+1:Math.min(this.endIndex+1,end+1);null==start&&(start=this.startIndex);var removeCount=end-start;var i=start;for(fromPos=end;i<=this.endIndex;i++,fromPos++)start=elements[i],i<end&&(removed.push(start),removeDom&&Ext.removeNode(start)),fromPos<=this.endIndex?
(start=elements[i]=elements[fromPos],start.setAttribute('data-recordIndex',i)):delete elements[i];this.count-=removeCount;this.endIndex-=removeCount;return removed},removeElement:function(keys,removeDom){var elements=this.elements,keyIndex,fromIndex;if(Ext.isArray(keys)){var inKeys=keys;keys=[];var deleteCount=inKeys.length;for(keyIndex=0;keyIndex<deleteCount;keyIndex++){var key=inKeys[keyIndex];'number'!==typeof key&&(key=this.indexOf(key));key>=this.startIndex&&key<=this.endIndex&&(keys[keys.length]=
key)}Ext.Array.sort(keys);deleteCount=keys.length}else{if(keys<this.startIndex||keys>this.endIndex)return;deleteCount=1;keys=[keys]}key=fromIndex=keys[0];for(keyIndex=0;key<=this.endIndex;key++,fromIndex++)keyIndex<deleteCount&&key===keys[keyIndex]&&(fromIndex++,keyIndex++,removeDom&&Ext.removeNode(elements[key])),fromIndex<=this.endIndex&&fromIndex>=this.startIndex?(inKeys=elements[key]=elements[fromIndex],inKeys.setAttribute('data-recordIndex',key)):delete elements[key];this.endIndex-=deleteCount;
this.count-=deleteCount},scroll:function(newRecords,direction,removeCount){var view=this.view,vm=view.lookupViewModel(),store=view.store,elements=this.elements,recCount=newRecords.length,nodeContainer=view.getNodeContainer(),range=this.statics().range;if(newRecords.length||removeCount){if(-1===direction){if(removeCount){direction=[];var removedItems=[];var removeStart=this.endIndex-removeCount+1;if(range)for(range.setStartBefore(elements[removeStart]),range.setEndAfter(elements[this.endIndex]),range.deleteContents(),
range=removeStart;range<=this.endIndex;range++){var el=elements[range];delete elements[range];direction.push(store.getByInternalId(el.getAttribute('data-recordId')));removedItems.push(el)}else for(range=removeStart;range<=this.endIndex;range++)el=elements[range],delete elements[range],Ext.removeNode(el),direction.push(store.getByInternalId(el.getAttribute('data-recordId'))),removedItems.push(el);view.fireItemMutationEvent('itemremove',direction,removeStart,removedItems,view);this.endIndex-=removeCount}if(newRecords.length){store=
view.bufferRender(newRecords,this.startIndex-=recCount);var removeEnd=store.children;for(range=0;range<recCount;range++)elements[this.startIndex+range]=removeEnd[range];nodeContainer.insertBefore(store.fragment,nodeContainer.firstChild);view.fireItemMutationEvent('itemadd',newRecords,this.startIndex,removeEnd,view)}}else{if(removeCount){direction=[];removedItems=[];removeEnd=this.startIndex+removeCount;if(range)for(range.setStartBefore(elements[this.startIndex]),range.setEndAfter(elements[removeEnd-
1]),range.deleteContents(),range=this.startIndex;range<removeEnd;range++)el=elements[range],delete elements[range],direction.push(store.getByInternalId(el.getAttribute('data-recordId'))),removedItems.push(el);else for(range=this.startIndex;range<removeEnd;range++)el=elements[range],delete elements[range],Ext.removeNode(el),direction.push(store.getByInternalId(el.getAttribute('data-recordId'))),removedItems.push(el);view.fireItemMutationEvent('itemremove',direction,this.startIndex,removedItems,view);
this.startIndex=removeEnd}store=view.bufferRender(newRecords,this.endIndex+1);removeEnd=store.children;for(range=0;range<recCount;range++)elements[this.endIndex+=1]=removeEnd[range];nodeContainer.appendChild(store.fragment);view.fireItemMutationEvent('itemadd',newRecords,this.endIndex+1,removeEnd,view)}this.count=this.endIndex-this.startIndex+1;vm&&vm.notify();return removeEnd}},sumHeights:function(){var result=0,elements=this.elements,i;for(i=this.startIndex;i<=this.endIndex;i++)result+=elements[i].offsetHeight;
return result}},1,0,0,0,0,0,[Ext.view,'NodeCache'],function(){Ext.dom.CompositeElementLite.importElementMethods.call(this)});Ext.cmd.derive('Ext.scroll.TableScroller',Ext.scroll.Scroller,{config:{lockingScroller:null},'private':{doScrollTo:function(x,y,animate){var lockingScroller;null!=y&&(lockingScroller=this.getLockingScroller())&&(lockingScroller.doScrollTo(null,y,animate),y=null);this.callParent([x,y,animate])}}},0,0,0,0,['scroller.table'],0,[Ext.scroll,'TableScroller'],0);
Ext.cmd.derive('Ext.view.Table',Ext.view.View,{alternateClassName:'Ext.grid.View',isTableView:!0,config:{selectionModel:{type:'rowmodel'}},inheritableStatics:{normalSideEvents:['deselect','select','beforedeselect','beforeselect','selectionchange'],events:'blur focus move resize destroy beforedestroy boxready afterrender render beforerender removed hide beforehide show beforeshow enable disable added deactivate beforedeactivate activate beforeactivate cellkeydown beforecellkeydown cellmouseup beforecellmouseup cellmousedown beforecellmousedown cellcontextmenu beforecellcontextmenu celldblclick beforecelldblclick cellclick beforecellclick refresh itemremove itemadd beforeitemupdate itemupdate viewready beforerefresh unhighlightitem highlightitem focuschange containerkeydown containercontextmenu containerdblclick containerclick containermouseout containermouseover containermouseup containermousedown beforecontainerkeydown beforecontainercontextmenu beforecontainerdblclick beforecontainerclick beforecontainermouseout beforecontainermouseover beforecontainermouseup beforecontainermousedown itemkeydown itemcontextmenu itemdblclick itemclick itemmouseleave itemmouseenter itemmouseup itemmousedown rowclick rowcontextmenu rowdblclick rowkeydown rowmouseup rowmousedown rowkeydown beforeitemkeydown beforeitemcontextmenu beforeitemdblclick beforeitemclick beforeitemmouseleave beforeitemmouseenter beforeitemmouseup beforeitemmousedown statesave beforestatesave staterestore beforestaterestore uievent groupcollapse groupexpand scroll'.split(' ')},
scrollable:!0,componentLayout:'tableview',baseCls:'x-grid-view',unselectableCls:'x-unselectable',firstCls:'x-grid-cell-first',lastCls:'x-grid-cell-last',itemCls:'x-grid-item',selectedItemCls:'x-grid-item-selected',selectedCellCls:'x-grid-cell-selected',focusedItemCls:'x-grid-item-focused',overItemCls:'x-grid-item-over',altRowCls:'x-grid-item-alt',dirtyCls:'x-grid-dirty-cell',rowClsRe:/(?:^|\s*)x-grid-item-alt(?:\s+|$)/g,cellRe:/x-grid-cell-([^\s]+)(?:\s|$)/,positionBody:!0,positionCells:!1,stripeOnUpdate:null,
actionableMode:!1,trackOver:!0,getRowClass:null,stripeRows:!0,markDirty:!0,ariaRole:'rowgroup',rowAriaRole:'row',cellAriaRole:'gridcell',tpl:['{%','view \x3d values.view;','if (!(columns \x3d values.columns)) {','columns \x3d values.columns \x3d view.ownerCt.getVisibleColumnManager().getColumns();','}','values.fullWidth \x3d 0;','for (i \x3d 0, len \x3d columns.length; i \x3c len; i++) {','column \x3d columns[i];','values.fullWidth +\x3d (column.cellWidth \x3d column.lastBox ? column.lastBox.width : column.width || column.minWidth);',
'}','tableCls\x3dvalues.tableCls\x3d[];','%}','\x3cdiv class\x3d"x-grid-item-container" role\x3d"presentation" style\x3d"width:{fullWidth}px"\x3e','{[view.renderTHead(values, out, parent)]}','{%','view.renderRows(values.rows, values.columns, values.viewStartIndex, out);','%}','{[view.renderTFoot(values, out, parent)]}','\x3c/div\x3e','{% ','view \x3d columns \x3d column \x3d null;','%}',{definitions:'var view, tableCls, columns, i, len, column;',priority:0}],outerRowTpl:['\x3ctable id\x3d"{rowId}" role\x3d"presentation" ',
'data-boundView\x3d"{view.id}" ','data-recordId\x3d"{record.internalId}" ','data-recordIndex\x3d"{recordIndex}" ','class\x3d"{[values.itemClasses.join(" ")]}" cellpadding\x3d"0" cellspacing\x3d"0" style\x3d"{itemStyle};width:0"\x3e','{%','this.nextTpl.applyOut(values, out, parent)','%}','\x3c/table\x3e',{priority:9999}],rowTpl:['{%','var dataRowCls \x3d values.recordIndex \x3d\x3d\x3d -1 ? "" : " x-grid-row";','%}','\x3ctr class\x3d"{[values.rowClasses.join(" ")]} {[dataRowCls]}"',' role\x3d"{rowRole}" {rowAttr:attributes}\x3e',
'\x3ctpl for\x3d"columns"\x3e{%','parent.view.renderCell(values, parent.record, parent.recordIndex, parent.rowIndex, xindex - 1, out, parent)','%}','\x3c/tpl\x3e','\x3c/tr\x3e',{priority:0}],cellTpl:['\x3ctd class\x3d"{tdCls}" {tdAttr} {cellAttr:attributes}',' style\x3d"width:{column.cellWidth}px;\x3ctpl if\x3d"tdStyle"\x3e{tdStyle}\x3c/tpl\x3e"','\x3ctpl if\x3d"column.cellFocusable \x3d\x3d\x3d false"\x3e',' role\x3d"presentation"','\x3ctpl else\x3e',' role\x3d"{cellRole}" tabindex\x3d"-1"','\x3c/tpl\x3e',
'  data-columnid\x3d"{[values.column.getItemId()]}"\x3e','\x3cdiv {unselectableAttr} class\x3d"x-grid-cell-inner {innerCls}" ','style\x3d"text-align:{align};\x3ctpl if\x3d"style"\x3e{style}\x3c/tpl\x3e" ','{cellInnerAttr:attributes}\x3e{value}\x3c/div\x3e','\x3c/td\x3e',{priority:0}],refreshSelmodelOnRefresh:!1,scrollableType:'table',tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:['x-grid-cell x-grid-td']},constructor:function(config){config.grid.isTree&&(config.baseCls=
'x-tree-view');Ext.view.View.prototype.constructor.call(this,config)},hasVariableRowHeight:function(fromLockingPartner){return this.variableRowHeight||this.store.isGrouped()||this.getVisibleColumnManager().hasVariableRowHeight()||!fromLockingPartner&&this.lockingPartner&&this.lockingPartner.hasVariableRowHeight(!0)},initComponent:function(){this.columnLines&&this.addCls(this.grid.colLinesCls);this.rowLines&&this.addCls(this.grid.rowLinesCls);this.body=new Ext.dom.Fly;this.body.id=this.id+'gridBody';
this.trackOver||(this.overItemCls=null);this.headerCt.view=this;this.grid.view=this;this.initFeatures(this.grid);this.itemSelector=this.getItemSelector();this.all=new Ext.view.NodeCache(this);Ext.view.View.prototype.initComponent.call(this)},applySelectionModel:function(selModel,oldSelModel){var grid=this.ownerGrid,defaultType=selModel.type,disableSelection=this.disableSelection||grid.disableSelection;oldSelModel||selModel&&selModel.isSelectionModel||(selModel=grid.selModel||selModel);selModel&&(selModel.isSelectionModel?
(selModel.allowDeselect=grid.allowDeselect||'SINGLE'!==selModel.selectionMode,selModel.locked=disableSelection):('string'===typeof selModel?selModel={type:selModel}:selModel.type=grid.selType||selModel.selType||selModel.type||defaultType,selModel.mode||(grid.simpleSelect?selModel.mode='SIMPLE':grid.multiSelect&&(selModel.mode='MULTI')),selModel=Ext.Factory.selection(Ext.apply({allowDeselect:grid.allowDeselect,locked:disableSelection},selModel))));return selModel},updateSelectionModel:function(selModel,
oldSelModel){oldSelModel&&(oldSelModel.un({scope:this,lastselectedchanged:this.updateBindSelection,selectionchange:this.updateBindSelection}),Ext.destroy(this.selModelRelayer));this.selModelRelayer=this.relayEvents(selModel,'selectionchange beforeselect beforedeselect select deselect focuschange'.split(' '));selModel.on({scope:this,lastselectedchanged:this.updateBindSelection,selectionchange:this.updateBindSelection});this.selModel=selModel},getVisibleColumnManager:function(){return this.ownerCt.getVisibleColumnManager()},
getColumnManager:function(){return this.ownerCt.getColumnManager()},getTopLevelVisibleColumnManager:function(){return this.ownerGrid.getVisibleColumnManager()},moveColumn:function(fromIdx,toIdx,colsToMove){var multiMove=1<colsToMove,range=multiMove&&document.createRange?document.createRange():null,fragment=multiMove&&!range?document.createDocumentFragment():null,colCount=this.getGridColumns().length,lastIndex=colCount-1,doFirstLastClasses=(this.firstCls||this.lastCls)&&(0===toIdx||toIdx===colCount||
0===fromIdx||fromIdx===lastIndex),j,len;if(this.rendered&&toIdx!==fromIdx){var rows=this.el.query(this.rowSelector);var i=0;for(len=rows.length;i<len;i++){var tr=rows[i];var cells=tr.childNodes;if(doFirstLastClasses){if(1===cells.length){Ext.fly(cells[0]).addCls(this.firstCls);Ext.fly(cells[0]).addCls(this.lastCls);continue}0===fromIdx?(Ext.fly(cells[0]).removeCls(this.firstCls),Ext.fly(cells[1]).addCls(this.firstCls)):fromIdx===lastIndex&&(Ext.fly(cells[lastIndex]).removeCls(this.lastCls),Ext.fly(cells[lastIndex-
1]).addCls(this.lastCls));0===toIdx?(Ext.fly(cells[0]).removeCls(this.firstCls),Ext.fly(cells[fromIdx]).addCls(this.firstCls)):toIdx===colCount&&(Ext.fly(cells[lastIndex]).removeCls(this.lastCls),Ext.fly(cells[fromIdx]).addCls(this.lastCls))}if(multiMove){if(range)range.setStartBefore(cells[fromIdx]),range.setEndAfter(cells[fromIdx+colsToMove-1]),fragment=range.extractContents();else for(j=0;j<colsToMove;j++)fragment.appendChild(cells[fromIdx]);tr.insertBefore(fragment,cells[toIdx]||null)}else tr.insertBefore(cells[fromIdx],
cells[toIdx]||null)}colCount=this.el.query('colgroup');i=0;for(len=colCount.length;i<len;i++)if(tr=colCount[i],multiMove){if(range)range.setStartBefore(tr.childNodes[fromIdx]),range.setEndAfter(tr.childNodes[fromIdx+colsToMove-1]),fragment=range.extractContents();else for(j=0;j<colsToMove;j++)fragment.appendChild(tr.childNodes[fromIdx]);tr.insertBefore(fragment,tr.childNodes[toIdx]||null)}else tr.insertBefore(tr.childNodes[fromIdx],tr.childNodes[toIdx]||null)}},scrollToTop:Ext.emptyFn,addElListener:function(eventName,
fn,scope){this.mon(this,eventName,fn,scope,{element:'el'})},getGridColumns:function(){return this.ownerCt.getVisibleColumnManager().getColumns()},getHeaderAtIndex:function(index){return this.ownerCt.getVisibleColumnManager().getHeaderAtIndex(index)},getCell:function(record,column){if(record=this.getRow(record))return'number'===typeof column&&(column=this.getHeaderAtIndex(column)),Ext.fly(record).down(column.getCellSelector())},getFeature:function(id){var features=this.featuresMC;if(features)return features.get(id)},
findFeature:function(ftype){if(this.features)return Ext.Array.findBy(this.features,function(feature){if(feature.ftype===ftype)return!0})},initFeatures:function(grid){var i,features;this.tpl=this.lookupTpl('tpl');this.rowTpl=this.lookupTpl('rowTpl');this.addRowTpl(this.lookupTpl('outerRowTpl'));this.cellTpl=this.lookupTpl('cellTpl');this.featuresMC=new Ext.util.MixedCollection;var len=(features=this.features=this.constructFeatures())?features.length:0;for(i=0;i<len;i++){var feature=features[i];feature.view=
this;feature.grid=grid;this.featuresMC.add(feature);feature.init(grid)}},renderTHead:function(values,out,parent){var headers=values.view.headerFns,len;if(headers){var i=0;for(len=headers.length;i<len;++i)headers[i].call(this,values,out,parent)}},addHeaderFn:function(fn){var headers=this.headerFns;headers||(headers=this.headerFns=[]);headers.push(fn)},renderTFoot:function(values,out,parent){var footers=values.view.footerFns,len;if(footers){var i=0;for(len=footers.length;i<len;++i)footers[i].call(this,
values,out,parent)}},addFooterFn:function(fn){var footers=this.footerFns;footers||(footers=this.footerFns=[]);footers.push(fn)},addTpl:function(newTpl){return this.insertTpl('tpl',newTpl)},addRowTpl:function(newTpl){return this.insertTpl('rowTpl',newTpl)},addCellTpl:function(newTpl){return this.insertTpl('cellTpl',newTpl)},insertTpl:function(which,newTpl){var tpl;newTpl=newTpl.isTemplate?Ext.Object.chain(newTpl):new Ext.XTemplate('{%this.nextTpl.applyOut(values, out, parent);%}',newTpl);for(tpl=this[which];newTpl.priority<
tpl.priority;tpl=tpl.nextTpl)var prevTpl=tpl;prevTpl?prevTpl.nextTpl=newTpl:this[which]=newTpl;newTpl.nextTpl=tpl;return newTpl},tplApplyOut:function(values,out,parent){this.before&&!1===this.before(values,out,parent)||(this.nextTpl.applyOut(values,out,parent),this.after&&this.after(values,out,parent))},constructFeatures:function(){var features=this.features,i=0,len;if(features){var result=[];for(len=features.length;i<len;i++){var feature=features[i];feature.isFeature||(feature=Ext.create('feature.'+
feature.ftype,feature));result[i]=feature}}return result},beforeRender:function(){Ext.view.View.prototype.beforeRender.call(this);this.enableTextSelection||this.protoEl.unselectable()},getElConfig:function(){var config=Ext.view.View.prototype.getElConfig.call(this);delete config['aria-hidden'];delete config['aria-disabled'];return config},onBindStore:function(store){var bufferedRenderer=this.bufferedRenderer;bufferedRenderer&&bufferedRenderer.store!==store&&bufferedRenderer.bindStore(store);this.all&&
this.all.getCount()&&!this.grid.reconfiguring&&this.clearViewEl();Ext.view.View.prototype.onBindStore.apply(this,arguments)},onOwnerGridHide:function(){var scroller=this.getScrollable(),bufferedRenderer=this.bufferedRederer;scroller&&scroller.suspendPartnerSync();bufferedRenderer&&bufferedRenderer.disable()},onOwnerGridShow:function(){var scroller=this.getScrollable(),bufferedRenderer=this.bufferedRederer;scroller&&scroller.resumePartnerSync();bufferedRenderer&&bufferedRenderer.enable()},getStoreListeners:function(store){store=
Ext.view.View.prototype.getStoreListeners.call(this,store);var dataSource=this.dataSource;dataSource&&dataSource.isFeatureStore&&(delete store.add,delete store.remove);this.bufferedRenderer&&delete store.clear;store.beforepageremove=this.beforePageRemove;return store},beforePageRemove:function(pageMap,pageNumber){var rows=this.all,pageSize=pageMap.getPageSize();if(rows.startIndex>=(pageNumber-1)*pageSize&&rows.endIndex<=pageNumber*pageSize-1)return pageMap.get(pageNumber),!1},onViewScroll:function(scroller,
x,y){this.ignoreScroll||Ext.view.View.prototype.onViewScroll.call(this,scroller,x,y)},createRowElement:function(record,index,updateColumns){var div=this.renderBuffer;record=this.collectData([record],index);record.columns=updateColumns;this.tpl.overwrite(div,record);this.cleanupData();return Ext.fly(div).down(this.getNodeContainerSelector(),!0).firstChild},bufferRender:function(records,index){var div=this.renderBuffer,range=document.createRange?document.createRange():null;this.tpl.overwrite(div,this.collectData(records,
index));this.cleanupData();Ext.fly(div).saveTabbableState({skipSelf:!0,includeHidden:!0});div=Ext.fly(div).down(this.getNodeContainerSelector(),!0);if(range)range.selectNodeContents(div),records=range.extractContents();else for(records=document.createDocumentFragment();div.firstChild;)records.appendChild(div.firstChild);return{fragment:records,children:Ext.Array.toArray(records.childNodes)}},collectData:function(records,startIndex){var tableValues=this.tableValues;this.rowValues.view=this;tableValues.view=
this;tableValues.rows=records;tableValues.columns=null;tableValues.viewStartIndex=startIndex;tableValues.tableStyle='width:'+this.headerCt.getTableWidth()+'px';return tableValues},cleanupData:function(){var tableValues=this.tableValues;tableValues.view=tableValues.columns=tableValues.rows=this.rowValues.view=null},refreshSize:function(forceLayout){var bodySelector=this.getBodySelector(),lockingPartner=this.lockingPartner,restoreFocus=this.saveFocusState();bodySelector&&this.body.attach(this.el.down(bodySelector,
!0));this.hasLoadingHeight||(Ext.suspendLayouts(),Ext.view.View.prototype.refreshSize.apply(this,arguments),(forceLayout||this.hasVariableRowHeight()&&this.dataSource.getCount())&&this.grid.updateLayout(),Ext.resumeLayouts(!lockingPartner||!lockingPartner.grid.isVisible()||lockingPartner.all.getCount()===this.all.getCount()),restoreFocus())},isLayoutRoot:function(){return!1},clearViewEl:function(leaveNodeContainer){this.rendered&&(Ext.view.View.prototype.clearViewEl.call(this),leaveNodeContainer||
(leaveNodeContainer=Ext.get(this.getNodeContainer()))&&leaveNodeContainer.dom!==this.getTargetEl().dom&&leaveNodeContainer.destroy())},getRefItems:function(deep){var rowContexts=this.ownerGrid.liveRowContexts,i,recordId,result=Ext.view.View.prototype.getRefItems.apply(this,arguments);for(recordId in rowContexts){var widgets=rowContexts[recordId].getWidgets();var widgetCount=widgets.length;for(i=0;i<widgetCount;i++){var widget=widgets[i];this.isAncestor(widget)&&(result[result.length]=widget,deep&&
widget.getRefItems&&result.push.apply(result,widget.getRefItems(!0)))}}return result},getMaskTarget:function(){return this.ownerCt.body},statics:{getBoundView:function(node){return Ext.getCmp(node.getAttribute('data-boundView'))}},getRecord:function(node){if(!this.store.destroyed){if(node.isModel)return node;if(node=this.getNode(node))return this.dataSource.getByInternalId(node.getAttribute('data-recordId'))}},indexOf:function(node){return(node=this.getNode(node))||0===node?this.all.indexOf(node):
-1},indexInStore:function(node){return node?this.dataSource.indexOf(this.getRecord(node)):-1},indexOfRow:function(record){var dataSource=this.dataSource;return record.isCollapsedPlaceholder?dataSource.indexOfPlaceholder(record):dataSource.indexOf(record)},renderRows:function(rows,columns,viewStartIndex,out){var rowValues=this.rowValues,rowCount=rows.length;rowValues.view=this;rowValues.columns=columns;rowValues.rowRole=this.rowAriaRole;this.cellValues.cellRole=this.cellAriaRole;for(columns=0;columns<
rowCount;columns++,viewStartIndex++)rowValues.itemClasses.length=rowValues.rowClasses.length=0,this.renderRow(rows[columns],viewStartIndex,out);rowValues.view=rowValues.columns=rowValues.record=null},renderColumnSizer:function(values,out){values=values.columns||this.getGridColumns();var len=values.length,i;out.push('\x3ccolgroup role\x3d"presentation"\x3e');for(i=0;i<len;i++){var column=values[i];column=column.cellWidth?column.cellWidth:Ext.grid.header.Container.prototype.defaultWidth;out.push('\x3ccol role\x3d"presentation" class\x3d"',
'x-','grid-cell-',values[i].getItemId(),'" style\x3d"width:'+column+'px"\x3e')}out.push('\x3c/colgroup\x3e')},renderRow:function(record,rowIdx,out){var isMetadataRecord=-1===rowIdx,selModel=this.selectionModel,rowValues=this.rowValues,itemClasses=rowValues.itemClasses,rowClasses=rowValues.rowClasses,itemCls=this.itemCls,rowTpl=this.rowTpl;rowValues.rowAttr={};rowValues.record=record;rowValues.recordId=record.internalId;rowValues.recordIndex=this.store.indexOf(record);rowValues.rowIndex=rowIdx;rowValues.rowId=
this.getRowId(record);rowValues.itemCls=rowValues.rowCls='';rowValues.columns||(rowValues.columns=this.ownerCt.getVisibleColumnManager().getColumns());itemClasses.length=rowClasses.length=0;isMetadataRecord||(itemClasses[0]=itemCls,!this.ownerCt.disableSelection&&selModel.isRowSelected&&selModel.isRowSelected(record)&&itemClasses.push(this.selectedItemCls),this.stripeRows&&0!==rowIdx%2&&itemClasses.push(this.altRowCls),this.getRowClass&&(record=this.getRowClass(record,rowIdx,null,this.dataSource))&&
rowClasses.push(record));if(out)rowTpl.applyOut(rowValues,out,this.tableValues);else return rowTpl.apply(rowValues,this.tableValues)},renderCell:function(column,record,recordIndex,rowIndex,columnIndex,out){var selModel=this.selectionModel,cellValues=this.cellValues,classes=cellValues.classes,fieldValue=record.data[column.dataIndex],cellTpl=this.cellTpl,enableTextSelection=column.enableTextSelection,lastFocused=this.navigationModel.getPosition();null==enableTextSelection&&(enableTextSelection=this.enableTextSelection);
cellValues.record=record;cellValues.column=column;cellValues.recordIndex=recordIndex;cellValues.rowIndex=rowIndex;cellValues.columnIndex=cellValues.cellIndex=columnIndex;cellValues.align=column.textAlign;cellValues.innerCls=column.innerCls;cellValues.tdCls=cellValues.tdStyle=cellValues.tdAttr=cellValues.style='';cellValues.unselectableAttr=enableTextSelection?'':'unselectable\x3d"on"';classes[1]=column.getCellId();rowIndex=2;column.renderer&&column.renderer.call&&(columnIndex=this.ownerCt.columnManager.getHeaderIndex(column),
fieldValue=column.renderer.call(column.usingDefaultRenderer?column:column.scope||this.ownerCt,fieldValue,cellValues,record,recordIndex,columnIndex,this.dataSource,this),cellValues.css&&(record.cssWarning=!0,cellValues.tdCls+=' '+cellValues.css,cellValues.css=null),cellValues.tdCls&&(classes[rowIndex++]=cellValues.tdCls));cellValues.value=null==fieldValue||0===fieldValue.length?column.emptyCellText:fieldValue;column.tdCls&&(classes[rowIndex++]=column.tdCls);this.markDirty&&record.dirty&&record.isModified(column.dataIndex)&&
(classes[rowIndex++]=this.dirtyCls,column.dirtyTextElementId&&(cellValues.tdAttr=(cellValues.tdAttr?cellValues.tdAttr+' ':'')+'aria-describedby\x3d"'+column.dirtyTextElementId+'"'));column.isFirstVisible&&(classes[rowIndex++]=this.firstCls);column.isLastVisible&&(classes[rowIndex++]=this.lastCls);enableTextSelection||(classes[rowIndex++]=this.unselectableCls);selModel&&(selModel.isCellModel||selModel.isSpreadsheetModel)&&selModel.isCellSelected(this,recordIndex,column)&&(classes[rowIndex++]=this.selectedCellCls);
lastFocused&&lastFocused.record.id===record.id&&lastFocused.column===column&&(classes[rowIndex++]=this.focusedItemCls);classes.length=rowIndex;cellValues.tdCls=classes.join(' ');cellTpl.applyOut(cellValues,out);cellValues.column=cellValues.record=null},getRow:function(nodeInfo){if(!nodeInfo&&0!==nodeInfo||!this.rendered)return null;nodeInfo.target&&(nodeInfo=nodeInfo.target);if(Ext.isString(nodeInfo))return Ext.fly(nodeInfo).down(this.rowSelector,!0);if(Ext.isNumber(nodeInfo))return(nodeInfo=this.all.item(nodeInfo))&&
nodeInfo.down(this.rowSelector,!0);if(nodeInfo.isModel)return this.getRowByRecord(nodeInfo);nodeInfo=Ext.fly(nodeInfo);return nodeInfo.is(this.itemSelector)?this.getRowFromItem(nodeInfo):nodeInfo.findParent(this.rowSelector,this.getTargetEl())},getRowId:function(record){return this.id+'-record-'+record.internalId},constructRowId:function(internalId){return this.id+'-record-'+internalId},getNodeById:function(id){id=this.constructRowId(id);return this.retrieveNode(id,!1)},getRowById:function(id){id=
this.constructRowId(id);return this.retrieveNode(id,!0)},getNodeByRecord:function(record){return this.retrieveNode(this.getRowId(record),!1)},getRowByRecord:function(record){return this.retrieveNode(this.getRowId(record),!0)},getRowFromItem:function(item){item=Ext.getDom(item).tBodies[0].childNodes;var len=item.length,i;for(i=0;i<len;i++)if(Ext.fly(item[i]).is(this.rowSelector))return item[i]},retrieveNode:function(id,dataRow){id=this.el.getById(id,!0);return dataRow&&id?Ext.fly(id).down(this.rowSelector,
!0):id},updateIndexes:Ext.emptyFn,bodySelector:'div.x-grid-item-container',nodeContainerSelector:'div.x-grid-item-container',itemSelector:'table.x-grid-item',rowSelector:'tr.x-grid-row',cellSelector:'td.x-grid-cell',sizerSelector:'.x-grid-cell',innerSelector:'div.x-grid-cell-inner',getBodySelector:function(){return this.bodySelector},getColumnSizerSelector:function(header){header=this.sizerSelector+'-'+header.getItemId();return'td'+header+',col'+header},getItemSelector:function(){return this.itemSelector},
getCellSelector:function(header){return header?header.getCellSelector():this.cellSelector},getCellInnerSelector:function(header){return this.getCellSelector(header)+' '+this.innerSelector},addRowCls:function(rowInfo,cls){(rowInfo=this.getRow(rowInfo))&&Ext.fly(rowInfo).addCls(cls)},removeRowCls:function(rowInfo,cls){(rowInfo=this.getRow(rowInfo))&&Ext.fly(rowInfo).removeCls(cls)},onRowSelect:function(rowIdx){var rowNode;this.addItemCls(rowIdx,this.selectedItemCls);(rowNode=this.getRow(rowIdx))&&rowNode.setAttribute('aria-selected',
!0);Ext.isIE8&&this.repaintBorder(rowIdx+1)},onRowDeselect:function(rowIdx){var rowNode;this.removeItemCls(rowIdx,this.selectedItemCls);(rowNode=this.getRow(rowIdx))&&rowNode.removeAttribute('aria-selected');Ext.isIE8&&this.repaintBorder(rowIdx+1)},onCellSelect:function(position){if(position=this.getCellByPosition(position))position.addCls(this.selectedCellCls),position.dom.setAttribute('aria-selected',!0)},onCellDeselect:function(position){if(position=this.getCellByPosition(position,!0))Ext.fly(position).removeCls(this.selectedCellCls),
position.removeAttribute('aria-selected')},getCellInclusive:function(position,returnDom){if(position){var row=this.getRow(position.row);if((position=this.ownerCt.getColumnManager().getHeaderAtIndex(position.column))&&row)return Ext.fly(row).down(this.getCellSelector(position),returnDom)}return!1},getColumnByPosition:function(position){var column;if(position){if((column=position.column)&&!column.destroyed&&column.isColumn)return column;var view=position.view||this;column='number'===typeof column?column:
position.colIdx;return view.getVisibleColumnManager().getHeaderAtIndex(column)}return!1},getCellByPosition:function(position,returnDom){if(position){var view=position.view||this,row=view.getRow(position.record||position.row);if((position=view.getColumnByPosition(position))&&row)return Ext.fly(row).down(view.getCellSelector(position),returnDom)}return!1},onFocusEnter:function(e){var fromComponent=e.fromComponent,navigationModel=this.getNavigationModel();if(this.containsFocus)return Ext.Component.prototype.onFocusEnter.call(this,
e);if(this.actionableMode){if(this.actionPosition){this.el.dom.setAttribute('tabIndex','-1');this.cellFocused=!0;return}this.ownerGrid.setActionableMode(!1)}e=e.event;if(!this.cellFocused&&this.all.getCount()&&this.dataSource.getCount()){var focusTarget=e.getTarget();if(focusTarget===this.el.dom){if('scrollbar'===this.lastFocused){e.relatedTarget.focus();return}var focusPosition=this.getDefaultFocusPosition(fromComponent);if(!focusPosition){e.stopEvent();this.el.focus();return}focusTarget=null}else if(focusTarget===
this.tabGuardEl)focusPosition=(new Ext.grid.CellContext(this)).setPosition(this.all.endIndex,this.getVisibleColumnManager().getColumns().length-1),focusTarget=null;else if(fromComponent=e.getTarget(this.getCellSelector()))focusTarget===fromComponent?(focusPosition=(new Ext.grid.CellContext(this)).setPosition(this.getRecord(focusTarget),this.getHeaderByCell(fromComponent)),focusTarget=null):focusTarget&&Ext.fly(focusTarget).isFocusable()&&this.el.contains(focusTarget)&&(focusPosition=(new Ext.grid.CellContext(this)).setPosition(this.getRecord(focusTarget),
this.getHeaderByCell(fromComponent)))}focusPosition&&(this.toggleChildrenTabbability(!1),focusTarget&&this.ownerGrid.setActionableMode(!0,focusPosition)&&(focusPosition=null,Ext.fly(focusTarget).focus()),focusPosition&&navigationModel.setPosition(focusPosition,null,e,null,!0),(this.cellFocused=this.el.contains(Ext.Element.getActiveElement()))&&this.el.dom.setAttribute('tabIndex','-1'));Ext.Component.prototype.onFocusEnter.call(this,e)},onFocusLeave:function(e){var isLeavingGrid=!this.lockingPartner||
!e.toComponent||e.toComponent!==this.lockingPartner&&!this.lockingPartner.isAncestor(e.toComponent);this.refreshing||(this.cellFocused&&(isLeavingGrid&&this.getNavigationModel().setPosition(null,null,e.event,null,!0),this.cellFocused=!1,this.focusEl=this.el,this.focusEl.dom.setAttribute('tabIndex',0)),isLeavingGrid?this.ownerGrid.actionableMode&&(this.lastFocused=this.actionPosition,this.ownerGrid.setActionableMode(!1)):this.actionPosition=null,Ext.Component.prototype.onFocusLeave.call(this,e))},
onRowFocus:function(rowIdx,highlight,supressFocus){highlight?(this.addItemCls(rowIdx,this.focusedItemCls),supressFocus||this.focusRow(rowIdx)):this.removeItemCls(rowIdx,this.focusedItemCls);Ext.isIE8&&this.repaintBorder(rowIdx+1)},focusRow:function(row,delay){var focusTask=this.getFocusTask();delay?focusTask.delay(Ext.isNumber(delay)?delay:10,this.focusRow,this,[row,!1]):(focusTask.cancel(),this.isVisible(!0)&&this.getNavigationModel().setPosition(this.getRecord(row)))},focusNode:function(row,delay){this.focusRow(row,
delay)},scrollRowIntoView:function(row,animate){(row=this.getRow(row))&&this.scrollElIntoView(row,!1,animate)},focusCell:function(position,delay){var focusTask=this.getFocusTask();delay?focusTask.delay(Ext.isNumber(delay)?delay:10,this.focusCell,this,[position,!1]):(focusTask.cancel(),this.isVisible(!0)&&this.getCellByPosition(position)&&this.getNavigationModel().setPosition(position))},findFocusPosition:function(from,currentPosition,forward,keyEvent){var cell=currentPosition.cellElement;keyEvent=
this.ownerGrid.actionables;var len=keyEvent.length;currentPosition=currentPosition.clone();var tabbableChildren=Ext.fly(cell).findTabbableElements();for(from=tabbableChildren[Ext.Array.indexOf(tabbableChildren,from)+(forward?1:-1)];!from&&(cell=cell[forward?'nextSibling':'previousSibling']);){currentPosition.setColumn(this.getHeaderByCell(cell));for(cell=0;cell<len;cell++)keyEvent[cell].activateCell(currentPosition);(cell=currentPosition.getCell(!0))&&(tabbableChildren=Ext.fly(cell).findTabbableElements()).length&&
(from=tabbableChildren[forward?0:tabbableChildren.length-1])}return{target:from,position:currentPosition}},getDefaultFocusPosition:function(fromComponent){var store=this.dataSource,focusPosition=this.lastFocused,newPosition=(new Ext.grid.CellContext(this.isNormalView&&this.lockingPartner.grid.isVisible()&&!this.lockingPartner.grid.collapsed?this.lockingPartner:this)).setPosition(0,0);fromComponent&&(fromComponent.isColumn&&!1!==fromComponent.cellFocusable&&fromComponent.getView()===this?(focusPosition||
(focusPosition=newPosition),focusPosition.setColumn(fromComponent)):fromComponent.isTableView&&(focusPosition=(new Ext.grid.CellContext(this)).setPosition(fromComponent.lastFocused.record,0)));focusPosition?(fromComponent=this.getScrollable(),(!store.contains(focusPosition.record)||fromComponent&&!fromComponent.isInView(focusPosition.getRow()).y)&&focusPosition.setRow(store.getAt(Math.min(focusPosition.rowIdx,store.getCount()-1)))):(focusPosition=newPosition,(store=this.ownerGrid.view.el.down(this.getCellSelector()+
'[tabIndex\x3d"-1"]'))?focusPosition.setPosition(this.getRecord(store),this.getHeaderByCell(store)):focusPosition=null);return focusPosition},getLastFocused:function(){var lastFocused=this.lastFocused;if(lastFocused&&lastFocused.record&&lastFocused.column&&-1!==this.dataSource.indexOf(lastFocused.record)&&-1!==this.getVisibleColumnManager().indexOf(lastFocused.column)&&this.getNode(lastFocused.record))return lastFocused},scrollCellIntoView:function(cell,animate){cell.isCellContext&&(cell=this.getCellByPosition(cell));
cell&&this.scrollElIntoView(cell,null,animate)},scrollElIntoView:function(el,hscroll,animate){var scroller=this.getScrollable();scroller&&scroller.scrollIntoView(el,hscroll,animate)},syncRowHeightBegin:function(){var itemEls=this.all,ln=itemEls.count,synchronizer=[],RowSynchronizer=Ext.grid.locking.RowSynchronizer,j,rowSync;var i=0;for(j=itemEls.startIndex;i<ln;i++,j++)synchronizer[i]=rowSync=new RowSynchronizer(this,itemEls.elements[j]),rowSync.reset();return synchronizer},syncRowHeightClear:function(synchronizer){var ln=
this.all.count,i;for(i=0;i<ln;i++)synchronizer[i].reset()},syncRowHeightMeasure:function(synchronizer){var ln=synchronizer.length,i;for(i=0;i<ln;i++)synchronizer[i].measure()},syncRowHeightFinish:function(synchronizer,otherSynchronizer){var ln=synchronizer.length,bufferedRenderer=this.bufferedRenderer,i;for(i=0;i<ln;i++)synchronizer[i].finish(otherSynchronizer[i]);bufferedRenderer&&bufferedRenderer.syncRowHeightsFinish()},refreshNode:function(record){Ext.isNumber(record)&&(record=this.store.getAt(record));
this.handleUpdate(this.dataSource,record,null,null,null,!0)},handleUpdate:function(store,record,operation,changedFieldNames,info,allColumns){operation=operation||Ext.data.Model.EDIT;store=this.store.indexOf(record);var rowTpl=this.rowTpl;info=this.markDirty;var dirtyCls=this.dirtyCls;operation=operation!==Ext.data.Model.EDIT;var columnsToUpdate=[],hasVariableRowHeight=this.variableRowHeight,updateTypeFlags=0,ownerCt=this.ownerCt,cellFly=this.cellFly||(this.self.prototype.cellFly=new Ext.dom.Fly),
oldItemDom,oldDataRow,attLen,cellUpdateFlag;if(this.viewReady){this.updatingRows=!0;if(oldItemDom=this.getNodeByRecord(record)){if(record.isCollapsedPlaceholder){Ext.fly(oldItemDom).syncContent(this.createRowElement(record,this.indexOfRow(record)));return}var attrIndex=this.overItemCls;var columns=this.ownerCt.getVisibleColumnManager().getColumns();if(allColumns)columnsToUpdate=columns,updateTypeFlags=1;else{var attName=0;for(attLen=columns.length;attName<attLen;attName++)if(allColumns=columns[attName],
allColumns.preventUpdate)(cellUpdateFlag=Ext.fly(oldItemDom).down(allColumns.getCellSelector(),!0))&&!operation&&info&&(cellFly.attach(cellUpdateFlag),record.isModified(allColumns.dataIndex)?(cellFly.addCls(dirtyCls),allColumns.dirtyTextElementId&&cellUpdateFlag.setAttribute('aria-describedby',allColumns.dirtyTextElementId)):(cellFly.removeCls(dirtyCls),cellUpdateFlag.removeAttribute('aria-describedby')));else if(cellUpdateFlag=this.shouldUpdateCell(record,allColumns,changedFieldNames))updateTypeFlags|=
cellUpdateFlag,columnsToUpdate[columnsToUpdate.length]=allColumns,hasVariableRowHeight=hasVariableRowHeight||allColumns.variableRowHeight}this.fireEvent('beforeitemupdate',record,store,oldItemDom,columnsToUpdate);if(this.getRowClass||!this.getRowFromItem(oldItemDom)||updateTypeFlags&1||1<oldItemDom.tBodies[0].childNodes.length){cellFly=oldItemDom._extData;ownerCt=this.createRowElement(record,this.indexOfRow(record),columnsToUpdate);Ext.fly(oldItemDom,'_internal').hasCls(attrIndex)&&Ext.fly(ownerCt).addCls(attrIndex);
if(Ext.isIE9m&&oldItemDom.mergeAttributes)oldItemDom.mergeAttributes(ownerCt,!0);else for(allColumns=ownerCt.attributes,attLen=allColumns.length,attrIndex=0;attrIndex<attLen;attrIndex++)attName=allColumns[attrIndex].name,'id'!==attName&&oldItemDom.setAttribute(attName,allColumns[attrIndex].value);cellFly&&(cellFly.isSynchronized=!1);for(columns.length&&(oldDataRow=this.getRow(oldItemDom))&&this.updateColumns(oldDataRow,Ext.fly(ownerCt).down(this.rowSelector,!0),columnsToUpdate);rowTpl&&(!rowTpl.syncContent||
!1!==rowTpl.syncContent(oldItemDom,ownerCt,changedFieldNames?columnsToUpdate:null));)rowTpl=rowTpl.nextTpl}else for(attName=0,attLen=columnsToUpdate.length;attName<attLen;attName++)allColumns=columnsToUpdate[attName],changedFieldNames=allColumns.dataIndex,changedFieldNames=record.get(changedFieldNames),cellUpdateFlag=Ext.fly(oldItemDom).down(allColumns.getCellSelector(),!0),cellFly.attach(cellUpdateFlag),!operation&&info&&(record.isModified(allColumns.dataIndex)?(cellFly.addCls(dirtyCls),allColumns.dirtyTextElementId&&
cellUpdateFlag.setAttribute('aria-describedby',allColumns.dirtyTextElementId)):(cellFly.removeCls(dirtyCls),cellUpdateFlag.removeAttribute('aria-describedby'))),oldDataRow=(oldDataRow=allColumns.usingDefaultRenderer)?allColumns:allColumns.scope,allColumns.updater?Ext.callback(allColumns.updater,oldDataRow,[cellUpdateFlag,changedFieldNames,record,this,this.dataSource],0,allColumns,ownerCt):(allColumns.renderer&&(changedFieldNames=Ext.callback(allColumns.renderer,oldDataRow,[changedFieldNames,null,
record,0,0,this.dataSource,this],0,allColumns,ownerCt)),changedFieldNames=(oldDataRow=null==changedFieldNames||0===changedFieldNames.length)?allColumns.emptyCellText:changedFieldNames,allColumns.producesHTML||oldDataRow?cellFly.down(this.innerSelector,!0).innerHTML=changedFieldNames:cellFly.down(this.innerSelector,!0).childNodes[0].data=changedFieldNames),this.highlightClass&&(Ext.fly(cellUpdateFlag).addCls(this.highlightClass),this.changedCells||(this.self.prototype.changedCells=[],this.prototype.clearChangedTask=
new Ext.util.DelayedTask(this.clearChangedCells,this.prototype),this.clearChangedTask.delay(this.unhighlightDelay)),this.changedCells.push({cell:cellUpdateFlag,cls:this.highlightClass,expires:Ext.Date.now()+1E3}));operation&&info&&!record.dirty&&Ext.fly(oldItemDom,'_internal').select('.'+dirtyCls).removeCls(dirtyCls).set({'aria-describedby':void 0});hasVariableRowHeight&&Ext.suspendLayouts();this.fireEvent('itemupdate',record,store,oldItemDom,this);hasVariableRowHeight&&(this.ownerGrid.updateLayout(),
Ext.resumeLayouts(!0))}this.updatingRows=!1}},clearChangedCells:function(){for(var now=Ext.Date.now(),changedCell,len=this.changedCells.length;0<len;)if(changedCell=this.changedCells[0],changedCell.expires<=now)Ext.fly(changedCell.cell).removeCls(changedCell.highlightClass),Ext.Array.erase(this.changedCells,0,1),len--;else break;len&&this.clearChangedTask.delay(this.unhighlightDelay)},updateColumns:function(oldRow,newRow,columnsToUpdate){var attrIndex,colCount=columnsToUpdate.length,colIndex;this.getCellSelector();
if(oldRow.mergeAttributes)oldRow.mergeAttributes(newRow,!0);else{var newAttrs=newRow.attributes;var attLen=newAttrs.length;for(attrIndex=0;attrIndex<attLen;attrIndex++){var attName=newAttrs[attrIndex].name;'id'!==attName&&oldRow.setAttribute(attName,newAttrs[attrIndex].value)}}if(newAttrs=oldRow._extData)newAttrs.isSynchronized=!1;oldRow=Ext.get(oldRow);newRow=Ext.get(newRow);for(colIndex=0;colIndex<colCount;colIndex++){var column=columnsToUpdate[colIndex];var newCell=this.getCellSelector(column);
column=oldRow.selectNode(newCell);newCell=newRow.selectNode(newCell);newAttrs=newCell.attributes;attLen=newAttrs.length;for(attrIndex=0;attrIndex<attLen;attrIndex++)attName=newAttrs[attrIndex].name,'id'!==attName&&column.setAttribute(attName,newAttrs[attrIndex].value);if(newAttrs=column._extData)newAttrs.isSynchronized=!1;column=Ext.fly(column).selectNode(this.innerSelector);newCell=Ext.fly(newCell).selectNode(this.innerSelector);Ext.fly(column).syncContent(newCell)}},shouldUpdateCell:function(record,
column,changedFieldNames){return column.shouldUpdateCell(record,changedFieldNames)},refresh:function(){this.destroying||(this.getVisibleColumnManager().getColumns().length?(Ext.view.View.prototype.refresh.apply(this,arguments),this.headerCt.setSortState()):this.refreshCounter&&this.clearViewEl(!0))},processContainerEvent:function(e){if((e=Ext.Component.fromElement(e.target.parentNode))&&e.up(this.ownerCt))return!1},processItemEvent:function(record,item,rowIndex,e){var self=this.self,map=self.EventMap,
type=e.type,features=this.features,len=features.length,i;var result=e.position=this.eventPosition||(this.eventPosition=new Ext.grid.CellContext);if(Ext.isIE&&'mouseup'===type&&!e.within(this.el))return!1;if(-1!==this.indexInStore(item)){var row=result.rowElement=Ext.fly(item).down(this.rowSelector,!0);var cell=e.getTarget(this.getCellSelector(),row);type=self.TouchEventMap[type]||type;if(cell){if(!cell.parentNode)return!1;(i=this.getHeaderByCell(cell))?self=this.ownerCt.getColumnManager().getHeaderIndex(i):
(i=cell=null,self=-1)}else self=-1;result.setAll(this,rowIndex,i?this.getVisibleColumnManager().getHeaderIndex(i):-1,record,i);result.cellElement=cell;result=this.fireEvent('uievent',type,this,cell,rowIndex,self,e,record,row);if(!1===result||!1===Ext.view.View.prototype.processItemEvent.apply(this,arguments))return!1;for(i=0;i<len;++i){var feature=features[i];if(feature.wrapsItem&&!1===feature.vetoEvent(record,row,rowIndex,e))return this.processSpecialEvent(e),!1}cell&&'mouseover'!==type&&'mouseout'!==
type&&(result=!(!1===this['onBeforeCell'+map[type]](cell,self,record,row,rowIndex,e)||!1===this.fireEvent('beforecell'+type,this,cell,self,record,row,rowIndex,e)||!1===this['onCell'+map[type]](cell,self,record,row,rowIndex,e)||!1===this.fireEvent('cell'+type,this,cell,self,record,row,rowIndex,e)));!1!==result&&(result=this.fireEvent('row'+type,this,record,row,rowIndex,e));return result}this.processSpecialEvent(e);'mouse'===e.pointerType&&e.preventDefault();return!1},processSpecialEvent:function(e){var features=
this.features,ln=features.length,type=e.type,i,featureTarget,panel=this.ownerCt;Ext.view.View.prototype.processSpecialEvent.apply(this,arguments);if('mouseover'!==type&&'mouseout'!==type){type=this.self.TouchEventMap[type]||type;for(i=0;i<ln;i++){var feature=features[i];if(feature.hasFeatureEvent&&(featureTarget=e.getTarget(feature.eventSelector,this.getTargetEl()))){var prefix=feature.eventPrefix;var beforeArgs=feature.getFireEventArgs('before'+prefix+type,this,featureTarget,e);feature=feature.getFireEventArgs(prefix+
type,this,featureTarget,e);if(!1===this.fireEvent.apply(this,beforeArgs)||!1===panel.fireEvent.apply(panel,beforeArgs)||!1===this.fireEvent.apply(this,feature)||!1===panel.fireEvent.apply(panel,feature))return!1}}return!0}},onCellMouseDown:Ext.emptyFn,onCellLongPress:Ext.emptyFn,onCellMouseUp:Ext.emptyFn,onCellClick:Ext.emptyFn,onCellDblClick:Ext.emptyFn,onCellContextMenu:Ext.emptyFn,onCellKeyDown:Ext.emptyFn,onCellKeyUp:Ext.emptyFn,onCellKeyPress:Ext.emptyFn,onBeforeCellMouseDown:Ext.emptyFn,onBeforeCellLongPress:Ext.emptyFn,
onBeforeCellMouseUp:Ext.emptyFn,onBeforeCellClick:Ext.emptyFn,onBeforeCellDblClick:Ext.emptyFn,onBeforeCellContextMenu:Ext.emptyFn,onBeforeCellKeyDown:Ext.emptyFn,onBeforeCellKeyUp:Ext.emptyFn,onBeforeCellKeyPress:Ext.emptyFn,expandToFit:function(header){this.autoSizeColumn(header)},autoSizeColumn:function(header){Ext.isNumber(header)&&(header=this.getGridColumns()[header]);header&&(header.isGroupHeader?header.autoSize():(delete header.flex,header.setWidth(this.getMaxContentWidth(header))))},getMaxContentWidth:function(header){var cells=
this.el.query(header.getCellInnerSelector()),originalWidth=header.getWidth(),i=0,ln=cells.length,columnSizer=this.body.select(this.getColumnSizerSelector(header)),max=Math.max,widthAdjust=0;0<ln&&(Ext.supports.ScrollWidthInlinePaddingBug&&(widthAdjust+=this.getCellPaddingAfter(cells[0])),this.columnLines&&(widthAdjust+=Ext.fly(cells[0].parentNode).getBorderWidth('lr')));columnSizer.setWidth(1);header.textEl.setStyle({'text-overflow':'clip',display:'table-cell'});var maxWidth=header.textEl.dom.offsetWidth+
header.titleEl.getPadding('lr');for(header.textEl.setStyle({'text-overflow':'',display:''});i<ln;i++)maxWidth=max(maxWidth,cells[i].scrollWidth);maxWidth=max(maxWidth+widthAdjust+1,40);columnSizer.setWidth(originalWidth);return maxWidth},getPositionByEvent:function(e){var cellNode=e.getTarget(this.cellSelector);e=e.getTarget(this.itemSelector);e=this.getRecord(e);cellNode=this.getHeaderByCell(cellNode);return this.getPosition(e,cellNode)},getHeaderByCell:function(cell){return cell?this.ownerGrid.getVisibleColumnManager().getHeaderById(Ext.getDom(cell).getAttribute('data-columnId')):
!1},walkCells:function(pos,direction,verifierFn,scope){var result=pos.clone(),lockingPartner=this.lockingPartner&&this.lockingPartner.grid.isVisible()?this.lockingPartner:null,rowIdx=pos.rowIdx,maxRowIdx=this.dataSource.getCount()-1,columns=this.ownerCt.getVisibleColumnManager().getColumns();switch(direction.toLowerCase()){case 'right':if(pos.isLastColumn()){rowIdx=lockingPartner&&this.isLockedView?rowIdx:rowIdx+1;if(rowIdx>maxRowIdx)return!1;lockingPartner&&(result.view=lockingPartner);result.setPosition(rowIdx,
0)}else result.navigate(1);break;case 'left':if(pos.isFirstColumn()){rowIdx=lockingPartner&&this.isNormalView?rowIdx:rowIdx-1;if(0>rowIdx)return!1;lockingPartner&&(result.view=lockingPartner,columns=lockingPartner.getVisibleColumnManager().getColumns());result.setPosition(rowIdx,columns[columns.length-1])}else result.navigate(-1);break;case 'up':if(0===rowIdx)return!1;result.setRow(rowIdx-1);break;case 'down':if(rowIdx===maxRowIdx)return!1;result.setRow(rowIdx+1)}return verifierFn&&!0!==verifierFn.call(scope||
this,result)?!1:result},walkRows:function(startRow,distance){var store=this.dataSource,moved=0,lastValid=startRow,node,increment=(store=0>distance?0:store.getCount()-1)?1:-1;do{if(store?startRow>=store:startRow<=store)return lastValid||store;startRow+=increment;(node=Ext.fly(this.getRow(startRow)))&&node.isVisible(!0)&&(moved+=increment,lastValid=startRow)}while(moved!==distance);return startRow},walkRecs:function(startRec,distance){var store=this.dataSource,moved=0,lastValid=startRec,node,limit=
0>distance?0:(store.isBufferedStore?store.getTotalCount():store.getCount())-1,increment=limit?1:-1;startRec=store.indexOf(startRec);do{if(limit?startRec>=limit:startRec<=limit)break;startRec+=increment;var rec=store.getAt(startRec);!rec.isCollapsedPlaceholder&&(node=Ext.fly(this.getNodeByRecord(rec)))&&node.isVisible(!0)&&(moved+=increment,lastValid=rec)}while(moved!==distance);return lastValid},getFirstVisibleRowIndex:function(){var count=this.dataSource.isBufferedStore?this.dataSource.getTotalCount():
this.dataSource.getCount(),result=this.indexOf(this.all.first())-1;do if(result+=1,result===count)return;while(!Ext.fly(this.getRow(result)).isVisible(!0));return result},getLastVisibleRowIndex:function(){var result=this.indexOf(this.all.last());do if(--result,-1===result)return;while(!Ext.fly(this.getRow(result)).isVisible(!0));return result},getHeaderCt:function(){return this.headerCt},getPosition:function(record,header){return(new Ext.grid.CellContext(this)).setPosition(record,header)},doDestroy:function(){var features=
this.featuresMC,feature,len;this.bindStore(null);if(features){var i=0;for(len=features.getCount();i<len;++i)(feature=features.getAt(i))&&!feature.destroyed&&feature.destroy()}this.all.destroy();this.body.destroy();Ext.view.View.prototype.doDestroy.call(this)},onReplace:function(store,startIndex,oldRecords,newRecords){var bufferedRenderer=this.bufferedRenderer;if(this.rendered&&bufferedRenderer){var restoreFocus=this.saveFocusState();bufferedRenderer.onReplace(store,startIndex,oldRecords,newRecords);
restoreFocus()}else Ext.view.View.prototype.onReplace.apply(this,arguments);this.setPendingStripe(startIndex)},onResize:function(width,height,oldWidth,oldHeight){var bufferedRenderer=this.bufferedRenderer;if(bufferedRenderer)bufferedRenderer.onViewResize(this,width,height,oldWidth,oldHeight);Ext.view.View.prototype.onResize.call(this,width,height,oldWidth,oldHeight)},onAdd:function(store,records,index){var bufferedRenderer=this.bufferedRenderer;this.addingRows=!0;if(this.rendered&&bufferedRenderer&&
(bufferedRenderer.bodyTop||this.dataSource.getCount()+records.length>=bufferedRenderer.viewSize))bufferedRenderer.onReplace(store,index,[],records);else Ext.view.View.prototype.onAdd.apply(this,arguments);this.setPendingStripe(index);this.addingRows=!1},onRemove:function(store,records,index){var bufferedRenderer=this.bufferedRenderer;if(this.rendered&&bufferedRenderer&&this.dataSource.getCount()+records.length>=bufferedRenderer.viewSize){var restoreFocus=this.saveFocusState();bufferedRenderer.onReplace(store,
index,records,[]);restoreFocus()}else Ext.view.View.prototype.onRemove.apply(this,arguments);this.actionPosition&&-1!==Ext.Array.indexOf(records,this.actionPosition.record)&&(this.actionPosition=null);this.setPendingStripe(index)},saveFocusState:function(){var me=this,store=me.dataSource,actionableMode=me.actionableMode,navModel=me.getNavigationModel(),focusPosition=actionableMode?me.actionPosition:navModel.getPosition(!0),activeElement=Ext.Element.getActiveElement(!0),focusCell=focusPosition&&focusPosition.view===
me&&focusPosition.getCell(),refocusRow,refocusCol;return focusCell&&focusCell.contains(activeElement)?(focusPosition=focusPosition.clone(),activeElement.suspendFocusEvents(),actionableMode&&focusCell!==activeElement?me.suspendActionableMode():(actionableMode=!1,navModel.setPosition()),activeElement.resumeFocusEvents(),function(){store=me.dataSource;store.getCount()?(refocusRow=Math.min(focusPosition.rowIdx,me.all.getCount()-1),refocusCol=Math.min(focusPosition.colIdx,me.getVisibleColumnManager().getColumns().length-
1),focusPosition=(new Ext.grid.CellContext(me)).setPosition(store.contains(focusPosition.record)?focusPosition.record:refocusRow,refocusCol),actionableMode?me.resumeActionableMode(focusPosition):navModel.setPosition(focusPosition,null,null,null,!0)):focusPosition.column.focus()}):Ext.emptyFn},onDataRefresh:function(store){var owner=this.ownerCt;if(owner&&2===owner.isCollapsingOrExpanding)owner.on('expand',this.onDataRefresh,this,{single:!0});else Ext.view.View.prototype.onDataRefresh.call(this,store)},
getViewRange:function(){return this.bufferedRenderer?this.bufferedRenderer.getViewRange():Ext.view.View.prototype.getViewRange.call(this)},setPendingStripe:function(index){var current=this.stripeOnUpdate;this.stripeOnUpdate=current=null===current?index:Math.min(current,index)},onEndUpdate:function(){var stripeOnUpdate=this.stripeOnUpdate,startIndex=this.all.startIndex;this.rendered&&(stripeOnUpdate||0===stripeOnUpdate)&&(stripeOnUpdate<startIndex&&(stripeOnUpdate=startIndex),this.doStripeRows(stripeOnUpdate),
this.stripeOnUpdate=null);Ext.view.View.prototype.onEndUpdate.apply(this,arguments)},doStripeRows:function(startRow,endRow){var rowsLn;if(this.rendered&&this.stripeRows){endRow=this.getNodes(startRow,endRow);var i=0;for(rowsLn=endRow.length;i<rowsLn;i++){var row=endRow[i];row.className=row.className.replace(this.rowClsRe,' ');startRow++;0===startRow%2&&(row.className+=' '+this.altRowCls)}}},hasActiveFeature:function(){return this.isGrouping&&this.store.isGrouped()||this.isRowWrapped},getCellPaddingAfter:function(cell){return Ext.fly(cell).getPadding('r')},
privates:{collectNodes:function(targetEl){this.all.fill(this.getNodeContainer().childNodes,this.all.startIndex)},setActionableMode:function(enabled,position){var navModel=this.getNavigationModel(),actionables=this.grid.actionables,len=actionables.length;var activeEl=!1;var lockingPartner;if(this.actionableMode===enabled&&(!enabled||position.isEqual(this.actionPosition)))return!1;if(enabled)return position&&(position.view===this||position.view===(lockingPartner=this.lockingPartner)&&lockingPartner.actionableMode)&&
(activeEl=this.activateCell(position)),activeEl;activeEl=Ext.fly(Ext.Element.getActiveElement());this.el.contains(activeEl)&&!Ext.fly(activeEl).is(this.getCellSelector())&&(enabled=this.actionPosition&&this.actionPosition.record||this.getRecord(activeEl),activeEl=this.getHeaderByCell(activeEl.findParent(this.getCellSelector())),lockingPartner=position&&position.getCell(),position&&lockingPartner||(position=(new Ext.grid.CellContext(this)).setPosition(enabled||0,activeEl||0),lockingPartner=position.getCell()),
lockingPartner.focus(),activeEl=Ext.fly(Ext.Element.getActiveElement()),this.el.contains(activeEl)&&activeEl.is(this.getCellSelector())||(position=null));for(enabled=0;enabled<len;enabled++)actionables[enabled].deactivate&&actionables[enabled].deactivate();this.actionRow&&this.actionRow.saveTabbableState({skipSelf:!0,includeSaved:!1});if(this.destroyed)return!1;this.actionableMode=this.ownerGrid.actionableMode=!1;this.actionPosition=navModel.actionPosition=this.actionRow=null;position&&navModel.setPosition(position)},
activateCell:function(position){var lockingPartner=position.view!==this?this.lockingPartner:null,actionables=this.grid.actionables,len=actionables.length,navModel=this.getNavigationModel(),prevRow,tabbableChildren;position=position.clone();position.view.grid.ensureVisible(position.record,{column:position.column});var focusRow=this.all.item(position.rowIdx);this.actionPosition&&(prevRow=Ext.get(this.all.item(this.actionPosition.rowIdx,!0)))&&focusRow!==prevRow&&prevRow.saveTabbableState({skipSelf:!0,
includeSaved:!1});this.activating=!0;if(!lockingPartner){var focusCell=position.getCell();this.actionPosition=position;for(prevRow=0;prevRow<len;prevRow++)var isActionable=isActionable||actionables[prevRow].activateCell(position,null,!0)}if(lockingPartner||focusCell&&focusCell.restoreTabbableState(!0).length|(tabbableChildren=focusCell.findTabbableElements()).length||isActionable){for(prevRow=0;prevRow<len;prevRow++)actionables[prevRow].activateRow&&actionables[prevRow].activateRow(focusRow);if(lockingPartner||
tabbableChildren.length){focusRow.restoreTabbableState(!0);if(lockingPartner)return this.actionableMode=!0,this.actionPosition=null,this.activating=!1,!0;if(tabbableChildren)return this.actionRow=focusRow,this.actionableMode=this.ownerGrid.actionableMode=!0,navModel.setPosition(),navModel.actionPosition=this.actionPosition=position,Ext.fly(tabbableChildren[0]).focus(),this.activating=!1,!0}}this.activating=!1},suspendActionableMode:function(){var actionables=this.grid.actionables,len=actionables.length,
i;for(i=0;i<len;i++)actionables[i].suspend()},resumeActionableMode:function(position){var actionables=this.grid.actionables,len=actionables.length,i;this.toggleChildrenTabbability(!1);for(i=0;i<len;i++)var activated=activated||actionables[i].resume(position);activated||this.activateCell(position)},onRowExit:function(keyEvent,prevRow,newRow,forward,wrapDone){var me=this,direction=forward?'nextSibling':'previousSibling',lockingPartner=me.lockingPartner;lockingPartner&&lockingPartner.grid.isVisible()&&
(newRow=me.all.indexOf(prevRow),forward?me.isNormalView&&newRow++:(lockingPartner.getVisibleColumnManager().getColumns(),me.isLockedView&&newRow--),me.actionPosition=null,me=lockingPartner,newRow=me.all.item(newRow,!0));if(me.hasListeners.beforerowexit&&!1===me.fireEvent('beforerowexit',me,keyEvent,prevRow,newRow,forward))return!1;me.findFirstActionableElement(keyEvent,newRow,direction,forward,wrapDone)},findFirstActionableElement:function(keyEvent,focusRow,direction,forward,wrapDone){var me=this,
columns=me.getVisibleColumnManager().getColumns(),columnCount=columns.length,actionables=me.grid.actionables,actionableCount=actionables.length,position=new Ext.grid.CellContext(me),i;if(focusRow){position.setRow(focusRow);for(i=0;i<actionableCount;i++)actionables[i].activateRow&&actionables[i].activateRow(focusRow);for(i=forward?0:columnCount-1;(forward?i<columnCount:-1<i)&&!focusTarget;i+=forward?1:-1){var focusCell=columns[i];position.setColumn(focusCell);focusCell=Ext.fly(focusRow).down(position.column.getCellSelector());
for(focusCell=0;focusCell<actionableCount;focusCell++)var isActionable=isActionable||actionables[focusCell].activateCell(position);if(focusCell=position.getCell())if(focusRow=position.getNode(!0),focusCell.restoreTabbableState(!0),(focusCell=focusCell.findTabbableElements()).length||isActionable){var prevRow=me.actionRow;me.actionRow=Ext.get(focusRow);me.actionRow.restoreTabbableState(!0);var focusTarget=focusCell[forward?0:focusCell.length-1]}}if(focusTarget)me.actionPosition=me.getNavigationModel().actionPosition=
position,Ext.fly(focusTarget).focus(Ext.asyncFocus?1:0),prevRow&&focusRow!==prevRow.dom&&prevRow.saveTabbableState({skipSelf:!0,includeSaved:!1});else me.onRowExit(keyEvent,focusRow,me.all.item(position.rowIdx+(forward?1:-1)),forward,wrapDone)}else wrapDone?me.ownerGrid.setActionableMode(!1):me.grid.ensureVisible(forward?0:me.dataSource.getCount()-1,{callback:function(success,record,row){success?me.findFirstActionableElement(keyEvent,row,direction,forward,!0):me.ownerGrid.setActionableMode(!1)}})},
stretchHeight:function(height){var scroller=this.getScrollable(),stretchers=this.stretchers;if(height&&this.tabGuardEl){stretchers&&(stretchers[0].style.marginTop=stretchers[1].style.marginTop=this.el.dom.style.height=0);this.el.dom.style.height=scroller.constrainScrollRange(height)+'px';var shortfall=height-this.el.dom.offsetHeight;0<shortfall&&(this.el.dom.style.height='',stretchers=this.getStretchers(),shortfall=height-this.el.dom.offsetHeight,0<shortfall&&(stretchers[0].style.marginTop=scroller.constrainScrollRange(shortfall)+
'px',shortfall=height-this.el.dom.offsetHeight,0<shortfall&&(stretchers[1].style.marginTop=Math.min(shortfall,scroller.maxSpacerMargin||0)+'px')))}},getStretchers:function(){var stretchers=this.stretchers;stretchers?this.el.appendChild(stretchers):(stretchers={cls:'x-scroller-spacer',style:'position:relative'},stretchers=this.stretchers=this.el.appendChild([stretchers,stretchers],!0));return stretchers}}},1,['gridview','tableview'],['component','box','dataview','tableview','gridview'],{component:!0,
box:!0,dataview:!0,tableview:!0,gridview:!0},['widget.gridview','widget.tableview'],[[Ext.mixin.Queryable.prototype.mixinId||Ext.mixin.Queryable.$className,Ext.mixin.Queryable]],[Ext.view,'Table',Ext.grid,'View'],0);
Ext.cmd.derive('Ext.grid.Panel',Ext.panel.Table,{alternateClassName:['Ext.list.ListView','Ext.ListView','Ext.grid.GridPanel'],viewType:'tableview',ariaRole:'grid',lockable:!1,rowLines:!0},0,['grid','gridpanel'],'component box container panel tablepanel gridpanel grid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0},['widget.grid','widget.gridpanel'],0,[Ext.grid,'Panel',Ext.list,'ListView',Ext,'ListView',Ext.grid,'GridPanel'],0);
Ext.cmd.derive('Ext.grid.RowContext',Ext.Base,{constructor:function(config){Ext.apply(this,config);this.widgets={}},setRecord:function(record,recordIndex){var viewModel=this.viewModel;this.record=record;this.recordIndex=recordIndex;viewModel&&(viewModel.set('record',record),viewModel.set('recordIndex',recordIndex))},free:function(){var widgets=this.widgets,widgetId,focusEl;var widget=this.viewModel;this.record=null;widget&&(widget.set('record'),widget.set('recordIndex'));for(widgetId in widgets){widget=
widgets[widgetId];if(focusEl=widget.getFocusEl())focusEl.isTabbable(!0)&&focusEl.saveTabbableState({includeHidden:!0}),focusEl.blur();widget.detachFromBody();widget.hidden=!0}},getWidget:function(ownerId,widgetCfg){var widgets=this.widgets||(this.widgets={}),result;widgetCfg.bind&&!this.viewModel&&(this.viewModel=Ext.Factory.viewModel({parent:this.ownerGrid.lookupViewModel(),data:{record:this.record,recordIndex:this.recordIndex}},this.ownerGrid.rowViewModel));(result=widgets[ownerId])?result.hidden=
!1:(result=widgets[ownerId]=Ext.widget(Ext.apply({viewModel:this.viewModel,_rowContext:this},widgetCfg)),result.isWidget&&result.initBindable());return result},getWidgets:function(){var widgets=this.widgets,id,result=[];for(id in widgets)result.push(widgets[id]);return result},destroy:function(){var widgets=this.widgets,widgetId;for(widgetId in widgets){var widget=widgets[widgetId];widget._rowContext=null;widget.destroy()}Ext.destroy(this.viewModel);this.callParent()}},1,0,0,0,0,0,[Ext.grid,'RowContext'],
0);
Ext.cmd.derive('Ext.grid.RowEditorButtons',Ext.container.Container,{frame:!0,shrinkWrap:!0,position:'bottom',ariaRole:'toolbar',constructor:function(config){var rowEditor=config.rowEditor,plugin=rowEditor.editingPlugin;config=Ext.apply({baseCls:'x-grid-row-editor-buttons',defaults:{xtype:'button',ui:rowEditor.buttonUI,scope:plugin,flex:1,minWidth:Ext.panel.Panel.prototype.minButtonWidth},items:[{cls:'x-row-editor-update-button',itemId:'update',handler:plugin.completeEdit,text:rowEditor.saveBtnText,disabled:rowEditor.updateButtonDisabled,
listeners:{element:'el',keydown:this.onUpdateKeyDown,scope:this}},{cls:'x-row-editor-cancel-button',itemId:'cancel',handler:plugin.cancelEdit,text:rowEditor.cancelBtnText,listeners:{element:'el',keydown:this.onCancelKeyDown,scope:this}}]},config);Ext.container.Container.prototype.constructor.call(this,config);this.addClsWithUI(this.position)},onUpdateKeyDown:function(e){e.shiftKey&&e.getKey()===e.TAB&&(e.stopEvent(),this.rowEditor.child(':focusable:not([isButton]):last').focus(!1,!0))},onCancelKeyDown:function(e){e.shiftKey||
e.getKey()!==e.TAB||(e.stopEvent(),this.rowEditor.child(':focusable').focus(!1,!0))},setButtonPosition:function(position){var rowEditor=this.rowEditor,rowEditorHeight=rowEditor.getHeight();rowEditor=rowEditor.body;var bottom='',top='';this.removeClsWithUI(this.position);this.position=position;this.addClsWithUI(position);'top'===position?bottom=rowEditorHeight-rowEditor.getBorderWidth('t')+'px':top=rowEditorHeight-rowEditor.getBorderWidth('b')+'px';this.el.setStyle({top:top,bottom:bottom})},privates:{getFramingInfoCls:function(){return this.baseCls+
'-'+this.ui+'-'+this.position},getFrameInfo:function(){var frameInfo=Ext.container.Container.prototype.getFrameInfo.call(this);frameInfo.top=!0;return frameInfo}}},1,['roweditorbuttons'],['component','box','container','roweditorbuttons'],{component:!0,box:!0,container:!0,roweditorbuttons:!0},['widget.roweditorbuttons'],0,[Ext.grid,'RowEditorButtons'],0);
Ext.cmd.derive('Ext.grid.RowEditor',Ext.form.Panel,{saveBtnText:'Update',cancelBtnText:'Cancel',errorsText:'Errors',dirtyText:'You need to commit or cancel your changes',lastScrollLeft:0,lastScrollTop:0,border:!1,tabGuard:!0,_wrapCls:'x-grid-row-editor-wrap',errorCls:'x-grid-row-editor-errors-item',buttonUI:'default',hideMode:'offsets',_cachedNode:!1,initComponent:function(){var grid=this.editingPlugin.grid,Container=Ext.container.Container,lockedCt;this.cls='x-grid-editor x-grid-row-editor';this.layout=
{type:'hbox',align:'middle'};(this.lockable=grid.lockable)?(this.items=[lockedCt=this.lockedColumnContainer=new Container({id:grid.id+'-locked-editor-cells',scrollable:{x:!1,y:!1},layout:{type:'hbox',align:'middle'},margin:'0 1 0 0'}),Container=this.normalColumnContainer=new Container({scrollable:{x:!1,y:!1},flex:1,id:grid.id+'-normal-editor-cells',layout:{type:'hbox',align:'middle'}})],lockedCt.getScrollable().addPartner(grid.lockedGrid.view.getScrollable(),'x'),Container.getScrollable().addPartner(grid.normalGrid.view.getScrollable(),
'x'),grid.lockedGrid.on({collapse:this.onGridResize,expand:this.onGridResize,beginfloat:this.onBeginFloat,scope:this})):(this.setScrollable({x:!1,y:!1}),this.getScrollable().addPartner(grid.view.getScrollable(),'x'),this.lockedColumnContainer=this.normalColumnContainer=this);Ext.form.Panel.prototype.initComponent.call(this);this.fields&&(this.addFieldsForColumn(this.fields,!0),this.insertColumnEditor(this.fields),delete this.fields);this.mon(Ext.GlobalEvents,{scope:this,show:this.repositionIfVisible});
grid=this.getForm();grid.trackResetOnLoad=!0;grid.on('validitychange',this.onValidityChange,this);grid.on('errorchange',this.onErrorChange,this)},onGridResize:function(){if(this.rendered){var clientWidth=this.getClientWidth(),grid=this.editingPlugin.grid,gridBody=grid.body,btns=this.getFloatingButtons();this.wrapEl.setLocalX(gridBody.getOffsetsTo(grid)[0]+gridBody.getBorderWidth('l')-grid.el.getBorderWidth('l'));this.setWidth(clientWidth);btns.setLocalX((clientWidth-btns.getWidth())/2);this.lockable&&
this.lockedColumnContainer.setWidth(grid.normalGrid.el.getLeft(!0))}},onBeginFloat:function(lockedGrid){if(lockedGrid.isSliding&&this.isVisible())return!1},syncAllFieldWidths:function(){var editors=this.query('[isEditorComponent]'),len=editors.length,i;this.preventReposition=!0;for(i=0;i<len;++i){var column=editors[i].column;if(column.isVisible())this.onColumnShow(column)}this.preventReposition=!1},syncFieldWidth:function(column){var field=column.getEditor();field._marginWidth=field._marginWidth||
field.el.getMargin('lr');column=column.getWidth()-field._marginWidth;field.setWidth(column);'displayfield'===field.xtype&&(field.inputWidth=column)},onValidityChange:function(form,valid){this.updateButton(valid)},onErrorChange:function(){if(this.errorSummary&&this.isVisible()){var valid=this.getForm().isValid();this[valid?'hideToolTip':'showToolTip']()}},updateButton:function(valid){var buttons=this.floatingButtons;buttons?buttons.child('#update').setDisabled(!valid):this.updateButtonDisabled=!valid},
afterRender:function(){var plugin=this.editingPlugin,grid=plugin.grid;this.scroller=grid.getScrollable();Ext.form.Panel.prototype.afterRender.apply(this,arguments);this.scrollingView=grid.lockable?grid.normalGrid.view:grid.view;this.scrollingViewEl=this.scrollingView.el;this.scroller.on('scroll',this.onViewScroll,this);this.mon(this.el,{click:Ext.emptyFn,stopPropagation:!0});this.mon(grid,'resize',this.onGridResize,this);if(this.lockable)grid.lockedGrid.view.on('resize','onGridResize',this);this.el.swallowEvent(['keypress',
'keydown']);this.initKeyNav();this.mon(plugin.view,{beforerefresh:this.onBeforeViewRefresh,refresh:this.onViewRefresh,itemremove:this.onViewItemRemove,scope:this});this.syncAllFieldWidths();this.floatingButtons&&this.body.dom.setAttribute('aria-owns',this.floatingButtons.id)},initKeyNav:function(){var plugin=this.editingPlugin;this.keyNav=new Ext.util.KeyNav(this.el,{tab:{fn:this.onFieldTab,scope:this},enter:plugin.onEnterKey,esc:plugin.onEscKey,scope:plugin})},onBeforeViewRefresh:function(view){view=
view.el.dom;this.el.dom.parentNode===view&&view.removeChild(this.el.dom)},onViewRefresh:function(view){var context=this.context,row;this.completing||(context&&(row=view.getRow(context.record))?(context.row=row,this.reposition(),this.tooltip&&this.tooltip.isVisible()&&this.tooltip.setTarget(context.row)):this.editingPlugin.cancelEdit())},onViewItemRemove:function(records,index,items,view){records=this.context;!view.refreshing&&records&&(view=this.editingPlugin,records=view.grid,records=records.getStore(),
index=this.editingPlugin.view,records.getById(this.getRecord().getId())&&!this._cachedNode?view.editing&&(this._cachedNode=!0,this.mon(index,{itemadd:this.onViewItemAdd,scope:this})):this._cachedNode||(this.activeField=null,this.editingPlugin.cancelEdit()))},onViewItemAdd:function(records,index,items,view){index=this.editingPlugin;this._cachedNode&&this.context&&(index=index.view,-1!==(items=Ext.Array.indexOf(records,this.context.record))&&(records=records[items],this.context.node=records,this.context.row=
index.getRow(records),this.context.cell=index.getCellByPosition(this.context,!0),this.clearCache()))},onViewScroll:function(){var viewEl=this.editingPlugin.view.el,scrollingView=this.scrollingView,scrollTop=this.scroller.getPosition().y,scrollLeft=scrollingView.getScrollX();scrollingView=scrollTop!==this.lastScrollTop;this.lastScrollTop=scrollTop;this.lastScrollLeft=scrollLeft;this.isVisible()&&((scrollTop=Ext.getDom(this.context.row))&&viewEl.contains(scrollTop)?(this.getLocalY()&&this.setLocalY(0),
scrollingView&&(this.context.row=scrollTop,this.reposition(null,!0),this.tooltip&&this.tooltip.isVisible()&&this.repositionTip())):(this.setLocalY(-400),this.floatingButtons.hide()))},onColumnResize:function(column,width){this.rendered&&!this.editingPlugin.reconfiguring&&(this.onGridResize(),this.onViewScroll(),this.lockable?(this.lockedColumnContainer.getScrollable().syncWithPartners(),this.normalColumnContainer.getScrollable().syncWithPartners()):this.getScrollable().syncWithPartners(),column.isGroupHeader||
(this.syncFieldWidth(column),this.repositionIfVisible()))},onColumnHide:function(column){this.editingPlugin.reconfiguring||column.isGroupHeader||(column.getEditor().hide(),this.repositionIfVisible())},onColumnShow:function(column){this.rendered&&!this.editingPlugin.reconfiguring&&!column.isGroupHeader&&column.getEditor&&(column.getEditor().show(),this.syncFieldWidth(column),this.preventReposition||this.repositionIfVisible())},onColumnMove:function(column,fromIdx,toIdx){var fieldContainer=column.isLocked()?
this.lockedColumnContainer:this.normalColumnContainer,len,after;if(column.isGroupHeader){Ext.suspendLayouts();var offset=(after=toIdx>fromIdx)?1:0;fromIdx=column.getGridColumns();var i=0;for(len=fromIdx.length;i<len;++i)column=fromIdx[i],toIdx=column.getIndex(),after&&++offset,this.setColumnEditor(column,toIdx+offset,fieldContainer);Ext.resumeLayouts(!0)}else this.setColumnEditor(column,column.getIndex(),fieldContainer)},setColumnEditor:function(column,idx,fieldContainer){this.addFieldsForColumn(column);
fieldContainer.insert(idx,column.getEditor())},onColumnAdd:function(column){column.isGroupHeader&&(column=column.getGridColumns());this.addFieldsForColumn(column);this.insertColumnEditor(column);this.preventReposition=!1},insertColumnEditor:function(column){var len;if(Ext.isArray(column)){var i=0;for(len=column.length;i<len;i++)this.insertColumnEditor(column[i])}else column.getEditor&&((column.isLocked()?this.lockedColumnContainer:this.normalColumnContainer).insert(column.getIndex(),column=column.getEditor()),
column.on('focus',this.onFieldFocus,this),this.needsSyncFieldWidths=!0)},onFieldFocus:function(field){(Ext.isIE||Ext.isEdge)&&field.selectText&&field.selectText(field.inputEl.dom.value.length);this.activeField=field;this.context.setColumn(field.column);this.skipFocusScroll?this.skipFocusScroll=null:field.column.getView().getScrollable().scrollIntoView(field.el)},onFieldTab:function(e){var activeField=this.activeField,rowIdx=this.context.rowIdx,forwards=!e.shiftKey,target=activeField[forwards?'nextNode':
'previousNode'](':focusable');e.stopEvent();target&&target.isDescendant(this)?target.focus():this.isDirty()&&!this.autoUpdate?this.floatingButtons.child('#update').focus():(e=this.view.dataSource.getCount(),rowIdx+=forwards?1:-1,0>rowIdx?rowIdx=e-1:rowIdx>=e&&(rowIdx=0),forwards?(target=this.down(':focusable:not([isButton]):first'),activeField.column.getView().getScrollable().scrollIntoView(activeField.ownerCt.child(':focusable').el)):target=this.down(':focusable:not([isButton]):last'),this.tabGuardBeforeEl.focus(),
this.editingPlugin.startEdit(rowIdx,target.column))},destroyColumnEditor:function(column){var field;column.hasEditor()&&(field=column.getEditor())&&field.destroy()},getFloatingButtons:function(){var btns=this.floatingButtons;btns||this.destroying||this.destroyed||(this.floatingButtons=btns=new Ext.grid.RowEditorButtons({ownerCmp:this,rowEditor:this}));return btns},repositionIfVisible:function(c){var view=this.view;(!c||c!==this&&c.el.isAncestor(view.el))&&this.isVisible()&&view.isVisible(!0)&&this.reposition()},
isLayoutChild:function(ownerCandidate){return!1},getRefOwner:function(){return this.editingPlugin.grid},getRefItems:function(deep){var buttons;if(this.lockable){var result=[this.lockedColumnContainer];result.push.apply(result,this.lockedColumnContainer.getRefItems(deep));result.push(this.normalColumnContainer);result.push.apply(result,this.normalColumnContainer.getRefItems(deep))}else result=Ext.form.Panel.prototype.getRefItems.apply(this,arguments);(buttons=this.getFloatingButtons())&&result.push.apply(result,
buttons.getRefItems(deep));return result},reposition:function(animateConfig,fromScrollHandler){var me=this,context=me.context,row=context&&context.row,wrapEl=me.wrapEl;if(row&&Ext.isElement(row)){var deltaY=me.syncButtonPosition(context);row=me.calculateLocalRowTop(row);row=me.calculateEditorTop(row);var afterPosition=function(){me.syncEditorClip();me.wrapAnim=null;fromScrollHandler||(deltaY&&me.scroller.scrollBy(0,deltaY,!0),me.focusColumnField(context.column))};animateConfig?me.wrapAnim=wrapEl.addAnimation(Ext.applyIf({to:{top:row},
duration:animateConfig.duration||125,callback:afterPosition},animateConfig)):(wrapEl.setLocalY(row),afterPosition())}},getScrollDelta:function(){var scrollingViewDom=this.scroller.getElement().dom,context=this.context,body=this.body,deltaY=0;if(context)if(deltaY=Ext.fly(context.row).getOffsetsTo(scrollingViewDom)[1],0>deltaY)deltaY-=body.getBorderPadding().beforeY;else if(0<deltaY){context=scrollingViewDom.clientHeight;scrollingViewDom=scrollingViewDom.scrollHeight;var editorHeight=this.getHeight()+
this.floatingButtons.getHeight();if(context===scrollingViewDom&&editorHeight>context)return 0;deltaY=Math.max(deltaY+editorHeight-context-body.getBorderWidth('b'),0);0<deltaY&&(deltaY-=body.getBorderPadding().afterY)}return deltaY},calculateLocalRowTop:function(row){var grid=this.editingPlugin.grid;return Ext.fly(row).getOffsetsTo(grid)[1]-grid.el.getBorderWidth('t')+this.lastScrollTop},calculateEditorTop:function(rowTop){rowTop-=this.lastScrollTop;return rowTop=this._buttonsOnTop?rowTop-(this.body.dom.offsetHeight-
this.context.row.offsetHeight-this.body.getBorderPadding().afterY):rowTop-this.body.getBorderPadding().beforeY},getClientWidth:function(){var grid=this.editingPlugin.grid;if(this.lockable){var lockedCmp=grid.lockedGrid.collapsed&&grid.lockedGrid.placeholder||grid.lockedGrid;grid=lockedCmp.getRegion().union(grid.scrollBody.el.getClientRegion()).width}else grid=grid.view.el.dom.clientWidth;return grid},getEditor:function(fieldInfo){if(Ext.isNumber(fieldInfo))return this.query('[isEditorComponent]')[fieldInfo];
if(fieldInfo.isHeader&&!fieldInfo.isGroupHeader)return fieldInfo.getEditor()},addFieldsForColumn:function(column,initial){var len;if(Ext.isArray(column)){var i=0;for(len=column.length;i<len;i++)this.addFieldsForColumn(column[i],initial)}else if(column.getEditor)if(i=column.getEditor(null,this.getDefaultFieldCfg()),'right'===column.align&&((len=i.fieldStyle)?(len=Ext.isObject(len)?Ext.apply({},len):Ext.dom.Element.parseStyles(len),len.textAlign||len['text-align']||(len.textAlign='right')):len='text-align:right',
i.fieldStyle=len),'actioncolumn'===column.xtype&&(i.fieldCls+=' x-form-action-col-field'),this.isVisible()&&this.context&&(i.is('displayfield')?this.renderColumnData(i,this.context.record,column):(i.suspendEvents(),i.setValue(this.context.record.get(column.dataIndex)),i.resumeEvents())),column.hidden)this.onColumnHide(column);else if(column.rendered&&!initial)this.onColumnShow(column)},getDefaultFieldCfg:function(){return{xtype:'displayfield',skipLabelForAttribute:!0,getModelData:function(){return null}}},
loadRecord:function(record){var form=this.getForm(),items=form.getFields().items,length=items.length,i;for(i=0;i<length;i++){var item=items[i];item.suspendEvents();item.resetToInitialValue()}form.loadRecord(record);for(i=0;i<length;i++)items[i].resumeEvents();form.hasInvalidField()===form.wasValid&&delete form.wasValid;length=form.isValid();this.errorSummary&&(length?this.hideToolTip():this.showToolTip());this.updateButton(length);form=this.query('\x3edisplayfield');length=form.length;for(i=0;i<length;i++)this.renderColumnData(form[i],
record)},renderColumnData:function(field,record,activeColumn){var headerCt=this.editingPlugin.grid.headerCt,view=this.scrollingView,store=view.dataSource,column=activeColumn||field.column;activeColumn=record.get(column.dataIndex);var renderer=column.editRenderer||column.renderer,scope=column.usingDefaultRenderer&&!column.scope?column:column.scope;if(renderer){var metaData={tdCls:'',style:''};var rowIdx=store.indexOf(record);column=headerCt.getHeaderIndex(column);activeColumn=renderer.call(scope||
headerCt.ownerCt,activeColumn,metaData,record,rowIdx,column,store,view)}field.setRawValue(activeColumn)},beforeEdit:function(){var scrollDelta;if(this.lockable&&this.editingPlugin.grid.lockedGrid.floatedFromCollapse)return!1;if(this.isVisible()&&(this.isDirty()||this.context.record.phantom))if(this.autoUpdate)this.editingPlugin.completeEdit();else if(this.autoCancel)this.editingPlugin.cancelEdit();else if(this.errorSummary)return(scrollDelta=this.getScrollDelta())&&this.scrollingViewEl.scrollBy(0,
scrollDelta,!0),this.showToolTip(),!1},startEdit:function(record,columnHeader){var editingPlugin=this.editingPlugin,grid=editingPlugin.grid,context=this.context=editingPlugin.context;editingPlugin=this.isVisible();var wasRendered=this.rendered;this._cachedNode&&this.clearCache();Ext.suspendLayouts();wasRendered||(this.width=this.getClientWidth(),this.render(grid.el,grid.el.dom.firstChild),grid=this.wrapEl=this.el.wrap(),grid.setVisibilityMode(3),grid.addCls(this._wrapCls),this.getFloatingButtons().render(grid),
this.onViewScroll());this.setLocalY(0);context.grid.getSelectionModel().selectByPosition({row:record,column:columnHeader});this.rendered&&this.formAriaLabel&&(columnHeader=Ext.String.formatEncode(this.formAriaLabel,this.formAriaLabelRowBase+context.rowIdx),this.body.dom.setAttribute('aria-label',columnHeader));this.onGridResize();Ext.resumeLayouts(editingPlugin);editingPlugin?this.reposition(!0):(this.skipFocusScroll=!0,this.show());this.loadRecord(record);wasRendered||(this.lockable?(this.lockedColumnContainer.getScrollable().syncWithPartners(),
this.normalColumnContainer.getScrollable().syncWithPartners()):this.getScrollable().syncWithPartners())},syncButtonPosition:function(context){var scrollDelta=this.getScrollDelta(),floatingButtons=this.getFloatingButtons(),scrollHeight=Math.max(0,this.scroller.getSize().y-this.scroller.getClientSize().y);scrollHeight=scrollDelta-(scrollHeight-this.scroller.getPosition().y);floatingButtons.show();0<scrollHeight||0<context.rowIdx&&context.isLastRenderedRow()?(this._buttonsOnTop||(floatingButtons.setButtonPosition('top'),
this._buttonsOnTop=!0,this.layout.setAlign('bottom'),this.updateLayout()),scrollDelta=0):!1!==this._buttonsOnTop?(floatingButtons.setButtonPosition('bottom'),this._buttonsOnTop=!1,this.layout.setAlign('top'),this.updateLayout()):floatingButtons.setButtonPosition(floatingButtons.position);return scrollDelta},syncEditorClip:function(){var tip=this.tooltip,clipRegion=this.scroller.getElement().getConstrainRegion();this.clipTo(clipRegion);this.floatingButtons.clipTo(clipRegion);tip&&tip.isVisible()&&
tip.clipTo(clipRegion,5)},focusColumnField:function(column){var field;if(column&&!column.destroyed){if(column.isVisible()&&(field=this.getEditor(column))&&field.isFocusable(!0)){var didFocus=!0;field.focus()}didFocus||this.focusColumnField(column.next())}},cancelEdit:function(){var form=this.getForm(),items=form.getFields().items,length=items.length;var i=this.context.record;this._cachedNode&&this.clearCache();this.hide();i&&i.phantom&&!i.modified&&this.removeUnmodified&&this.editingPlugin.grid.store.remove(i);
form.clearInvalid();for(i=0;i<length;i++)items[i].suspendEvents();form.reset();for(i=0;i<length;i++)items[i].resumeEvents()},clearCache:function(){this.mun(this.editingPlugin.view,{itemadd:this.onViewItemAdd,scope:this});this._cachedNode=!1},completeEdit:function(){var form=this.getForm();if(!form.isValid())return!1;this.completing=!0;form.updateRecord(this.context.record);this.hide();this.completing=!1;return!0},onShow:function(){this.wrapEl.show();Ext.form.Panel.prototype.onShow.apply(this,arguments);
this.needsSyncFieldWidths&&(this.suspendLayouts(),this.preventReposition=!0,this.syncAllFieldWidths(),this.preventReposition=!1,this.resumeLayouts(!0));delete this.needsSyncFieldWidths;this.rendered&&this.initTabGuards(!0);this.reposition()},onHide:function(){var context=this.context;var column=Ext.Element.getActiveElement();this.context=null;column=this.el.contains(column)&&this.activeField?this.activeField.column:context.column;context=(new Ext.grid.CellContext(column.getView())).setPosition(context.record,
column);context.view.getNavigationModel().setPosition(context);this.activeField=null;this.wrapEl.hide();Ext.form.Panel.prototype.onHide.apply(this,arguments);this.rendered&&this.initTabGuards(!1);this.tooltip&&this.hideToolTip()},onResize:function(width,height){this.wrapEl.setSize(width,height)},isDirty:function(){return this.getForm().isDirty()},getToolTip:function(){var tip=this.tooltip,grid=this.editingPlugin.grid;tip||(this.tooltip=tip=new Ext.tip.ToolTip({cls:'x-grid-row-editor-errors',title:this.errorsText,
autoHide:!1,closable:!0,closeAction:'disable',anchor:'left',anchorToTarget:!0,targetOffset:[Ext.getScrollbarSize().width,0],constrainPosition:!0,constrainTo:document.body}),grid.add(tip),this.mon(grid,{afterlayout:this.onGridLayout,scope:this}));return tip},hideToolTip:function(){var tip=this.getToolTip();tip.rendered&&tip.disable()},showToolTip:function(wrapAnim){var tip=this.getToolTip();if(!wrapAnim&&this.wrapAnim)return this.wrapAnim.on({afteranimate:this.showToolTip,scope:this,single:!0});tip.update(this.getErrors());
this.repositionTip();tip.enable()},onGridLayout:function(){this.tooltip&&this.tooltip.isVisible()&&this.repositionTip()},repositionTip:function(){var tip=this.getToolTip();tip.isVisible()?tip.handleAfterShow():tip.showBy(this.el);this.syncEditorClip()},getErrors:function(){var errors=[],fields=this.query('\x3e[isFormField]'),length=fields.length,i;for(i=0;i<length;i++){var field=fields[i];var fieldErrors=field.getErrors();fieldErrors.length&&errors.push(this.createErrorListItem(fieldErrors[0],field.column.text))}errors.length||
this.autoCancel||!this.isDirty()||(errors[0]=this.createErrorListItem(this.dirtyText));return'\x3cul class\x3d"x-list-plain"\x3e'+errors.join('')+'\x3c/ul\x3e'},createErrorListItem:function(e,name){return'\x3cli class\x3d"'+this.errorCls+'"\x3e'+(name?name+': '+e:e)+'\x3c/li\x3e'},doDestroy:function(){this.wrapAnim&&(Ext.fx.Manager.removeAnim(this.wrapAnim),this.wrapAnim=null);this.floatingButtons=this.tooltip=Ext.destroy(this.floatingButtons,this.tooltip);Ext.form.Panel.prototype.doDestroy.call(this)}},
0,['roweditor'],'component box container panel form roweditor'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,roweditor:!0},['widget.roweditor'],0,[Ext.grid,'RowEditor'],0);Ext.define('Ext.theme.neptune.grid.RowEditor',{override:'Ext.grid.RowEditor',buttonUI:'default-toolbar'});
Ext.cmd.derive('Ext.view.DropZone',Ext.dd.DropZone,{indicatorCls:'x-grid-drop-indicator',indicatorHtml:'\x3cdiv class\x3d"x-grid-drop-indicator-left" role\x3d"presentation"\x3e\x3c/div\x3e\x3cdiv class\x3d"x-grid-drop-indicator-right" role\x3d"presentation"\x3e\x3c/div\x3e',constructor:function(config){Ext.apply(this,config);this.ddGroup||(this.ddGroup='view-dd-zone-'+this.view.id);Ext.dd.DropZone.prototype.constructor.call(this,this.view.el)},fireViewEvent:function(){this.lock();var result=this.view.fireEvent.apply(this.view,
arguments);this.unlock();return result},getTargetFromEvent:function(e){var node=e.getTarget(this.view.getItemSelector()),len;if(!node){e=e.getY();var i=0;var nodeList=this.view.getNodes();for(len=nodeList.length;i<len;i++){var testNode=nodeList[i];var box=Ext.fly(testNode).getBox();if(e<=box.bottom)return testNode}}return node},getIndicator:function(){this.indicator||(this.indicator=new Ext.Component({ariaRole:'presentation',html:this.indicatorHtml,cls:this.indicatorCls,ownerCt:this.view,floating:!0,
alignOnScroll:!1,shadow:!1}));return this.indicator},getPosition:function(e,node){e=e.getXY()[1];node=Ext.fly(node).getRegion();return node.bottom-e>=(node.bottom-node.top)/2?'before':'after'},containsRecordAtOffset:function(records,record,offset){if(!record)return!1;var view=this.view;record=view.indexOf(record);return(view=(offset=view.getNode(record+offset))?view.getRecord(offset):null)&&Ext.Array.contains(records,view)},positionIndicator:function(node,data,e){var view=this.view;e=this.getPosition(e,
node);var overRecord=view.getRecord(node);data=data.records;if(Ext.Array.contains(data,overRecord)||('before'!==e||this.containsRecordAtOffset(data,overRecord,-1))&&('after'!==e||this.containsRecordAtOffset(data,overRecord,1)))this.invalidateDrop();else if(this.valid=!0,this.overRecord!==overRecord||this.currentPosition!==e)data=Ext.fly(node).getY()-view.el.getY()-1,'after'===e&&(data+=Ext.fly(node).getHeight()),this.getIndicator().setWidth(Ext.fly(view.el).getWidth()).showAt(0,data),this.overRecord=
overRecord,this.currentPosition=e},invalidateDrop:function(){this.valid&&(this.valid=!1,this.getIndicator().hide())},onNodeOver:function(node,dragZone,e,data){Ext.Array.contains(data.records,this.view.getRecord(node))||this.positionIndicator(node,data,e);return this.valid?this.dropAllowed:this.dropNotAllowed},notifyOut:function(node,dragZone,e,data){Ext.dd.DropZone.prototype.notifyOut.apply(this,arguments);this.overRecord=this.currentPosition=null;this.valid=!1;this.indicator&&this.indicator.hide()},
onContainerOver:function(dd,e,data){dd=this.view;dd.dataSource.getCount()?this.positionIndicator(dd.all.last(),data,e):(this.overRecord=this.currentPosition=null,this.getIndicator().setWidth(Ext.fly(dd.el).getWidth()).showAt(0,0),this.valid=!0);return this.dropAllowed},onContainerDrop:function(dd,e,data){return this.onNodeDrop(dd,null,e,data)},onNodeDrop:function(targetNode,dragZone,e,data){var me=this,dropHandled=!1;dragZone={wait:!1,processDrop:function(){me.invalidateDrop();me.handleNodeDrop(data,
me.overRecord,me.currentPosition);dropHandled=!0;me.fireViewEvent('drop',targetNode,data,me.overRecord,me.currentPosition)},cancelDrop:function(){me.invalidateDrop();dropHandled=!0}};e=!1;if(me.valid){e=me.fireViewEvent('beforedrop',targetNode,data,me.overRecord,me.currentPosition,dragZone);if(dragZone.wait)return;!1!==e&&(dropHandled||dragZone.processDrop())}return e},destroy:function(){this.indicator=Ext.destroy(this.indicator);Ext.dd.DropZone.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.view,
'DropZone'],0);
Ext.cmd.derive('Ext.grid.ViewDropZone',Ext.view.DropZone,{indicatorHtml:'\x3cdiv class\x3d"x-grid-drop-indicator-left" role\x3d"presentation"\x3e\x3c/div\x3e\x3cdiv class\x3d"x-grid-drop-indicator-right" role\x3d"presentation"\x3e\x3c/div\x3e',indicatorCls:'x-grid-drop-indicator',handleNodeDrop:function(data,record,position){var view=this.view,store=view.getStore(),crossView=view!==data.view,len;if(data.copy){var records=data.records;var i=0;for(len=records.length;i<len;i++)records[i]=records[i].copy()}else crossView&&
data.view.store.remove(data.records);record&&position?(record=store.indexOf(record),'before'!==position&&record++,store.insert(record,data.records)):store.add(data.records);crossView&&view.getSelectionModel().select(data.records);view.getNavigationModel().setPosition(data.records[0])}},0,0,0,0,0,0,[Ext.grid,'ViewDropZone'],0);
Ext.cmd.derive('Ext.grid.plugin.HeaderResizer',Ext.plugin.Abstract,{disabled:!1,config:{dynamic:!1},colHeaderCls:'x-column-header',minColWidth:40,maxColWidth:1E3,eResizeCursor:'col-resize',init:function(headerCt){this.headerCt=headerCt;headerCt.on('render',this.afterHeaderRender,this,{single:this});this.minColWidth||(this.self.prototype.minColWidth=Ext.grid.column.Column.prototype.minWidth)},destroy:function(){var tracker=this.tracker;tracker&&(tracker.destroy(),this.tracker=null);this.headerCt.un('render',
this.afterHeaderRender,this);this.headerCt=null;Ext.plugin.Abstract.prototype.destroy.call(this)},afterHeaderRender:function(){var headerCt=this.headerCt,el=headerCt.el;headerCt.mon(el,'mousemove',this.onHeaderCtMouseMove,this);this.markerOwner=this.ownerGrid=this.headerCt.up('tablepanel').ownerGrid;this.tracker=new Ext.dd.DragTracker({disabled:this.disabled,onBeforeStart:this.onBeforeStart.bind(this),onStart:this.onStart.bind(this),onDrag:this.onDrag.bind(this),onEnd:this.onEnd.bind(this),onCancel:this.onCancel.bind(this),
tolerance:3,autoStart:300,el:el});headerCt.setTouchAction({panX:!1})},onHeaderCtMouseMove:function(e){this.headerCt.dragging||this.disabled?this.activeHd&&(this.activeHd.el.dom.style.cursor='',delete this.activeHd):'touch'!==e.pointerType&&this.findActiveHeader(e)},findActiveHeader:function(e){var headerCt=this.headerCt,headerEl=e.getTarget('.'+this.colHeaderCls,headerCt.el,!0),ownerGrid=this.ownerGrid,ownerLockable=ownerGrid.ownerLockable;this.activeHd=null;if(headerEl){headerEl=Ext.getCmp(headerEl.id);
if(headerEl.isAtEndEdge(e)){if(1===headerCt.visibleColumnManager.getColumns().length&&headerCt.forceFit)return;var resizeHeader=headerEl}else headerEl.isAtStartEdge(e)&&(e=headerCt.visibleColumnManager.getColumns(),headerCt=headerEl.isGroupHeader?headerEl.getGridColumns()[0]:headerEl,resizeHeader=e[Ext.Array.indexOf(e,headerCt)-1],resizeHeader||!ownerLockable||ownerGrid.isLocked||(e=ownerLockable.lockedGrid.headerCt.visibleColumnManager.getColumns(),resizeHeader=e[e.length-1]));resizeHeader?(resizeHeader.isGroupHeader&&
(e=resizeHeader.getGridColumns(),resizeHeader=e[e.length-1]),resizeHeader&&!resizeHeader.fixed&&!1!==resizeHeader.resizable&&(this.activeHd=resizeHeader,headerEl.el.dom.style.cursor=this.eResizeCursor,headerEl.triggerEl&&(headerEl.triggerEl.dom.style.cursor=this.eResizeCursor))):(headerEl.el.dom.style.cursor='',headerEl.triggerEl&&(headerEl.triggerEl.dom.style.cursor=''))}return this.activeHd},onBeforeStart:function(e){return(this.dragHd=this.activeHd||'touch'===e.pointerType&&this.findActiveHeader(e))&&
!this.headerCt.dragging?(e.claimGesture(),this.xDelta=this.dragHd.getX()+this.dragHd.getWidth()-this.tracker.getXY()[0],this.tracker.constrainTo=this.getConstrainRegion(),!0):this.headerCt.dragging=!1},onCancel:function(e){this.dragHd=this.activeHd=null;this.headerCt.dragging=!1},getConstrainRegion:function(){var dragHdEl=this.dragHd.el;var nextHd=this.ownerGrid;var widthModel=nextHd.getSizeModel().width,maxColWidth=widthModel.shrinkWrap?this.headerCt.getWidth()-this.headerCt.visibleColumnManager.getColumns().length*
this.minColWidth:this.maxColWidth;this.headerCt.forceFit?(nextHd=this.dragHd.nextNode('gridcolumn:not([hidden]):not([isGroupHeader])'))&&this.headerInSameGrid(nextHd)&&(maxColWidth=dragHdEl.getWidth()+(nextHd.getWidth()-this.minColWidth)):nextHd.isLocked&&widthModel.shrinkWrap&&(maxColWidth=this.dragHd.up('[scrollerOwner]').getTargetEl().getWidth(!0)-nextHd.getWidth()-(nextHd.ownerLockable.normalGrid.visibleColumnManager.getColumns().length*this.minColWidth+Ext.getScrollbarSize().width));nextHd=this.adjustConstrainRegion(dragHdEl.getRegion(),
0,0,0,this.minColWidth);nextHd.right=dragHdEl.getX()+maxColWidth;return nextHd},onStart:function(e){var dragHd=this.dragHd;e=dragHd.el.getWidth();var headerCt=dragHd.getRootHeaderCt();this.headerCt.dragging=!0;this.origWidth=e;if(!this.dynamic){var markerOwner=this.markerOwner;markerOwner.frame&&markerOwner.resizable&&(this.gridOverflowSetting=markerOwner.el.dom.style.overflow,markerOwner.el.dom.style.overflow='hidden');dragHd=this.getLeftMarkerX(markerOwner);var lhsMarker=markerOwner.getLhsMarker();
var rhsMarker=markerOwner.getRhsMarker();var markerHeight=this.ownerGrid.body.getHeight()+headerCt.getHeight();headerCt=headerCt.getOffsetsTo(markerOwner)[1]-markerOwner.el.getBorderWidth('t');lhsMarker.dom.style.cursor=this.eResizeCursor;rhsMarker.dom.style.cursor=this.eResizeCursor;lhsMarker.setLocalY(headerCt);rhsMarker.setLocalY(headerCt);lhsMarker.setHeight(markerHeight);rhsMarker.setHeight(markerHeight);this.setMarkerX(lhsMarker,dragHd);this.setMarkerX(rhsMarker,dragHd+e)}},onDrag:function(e){this.dynamic?
this.doResize():this.setMarkerX(this.getMovingMarker(this.markerOwner),this.calculateDragX(this.markerOwner))},getMovingMarker:function(markerOwner){return markerOwner.getRhsMarker()},onEnd:function(e){var markerOwner=this.markerOwner;this.headerCt.dragging=!1;this.dragHd&&(this.dynamic||('gridOverflowSetting'in this&&(markerOwner.el.dom.style.overflow=this.gridOverflowSetting),this.setMarkerX(markerOwner.getLhsMarker(),-9999),this.setMarkerX(markerOwner.getRhsMarker(),-9999)),this.doResize(),'touch'!==
e.pointerType?(this.dragHd=null,this.activeHd.el.dom.style.cursor=this.eResizeCursor):this.dragHd=this.activeHd=null);this.headerCt.blockNextEvent()},doResize:function(){var dragHd=this.dragHd,offset=this.tracker.getOffset('point');dragHd&&offset[0]&&(dragHd.flex&&delete dragHd.flex,Ext.suspendLayouts(),this.adjustColumnWidth(offset[0]-this.xDelta),this.headerCt.forceFit&&((dragHd=dragHd.nextNode('gridcolumn:not([hidden]):not([isGroupHeader])'))&&!this.headerInSameGrid(dragHd)&&(dragHd=null),dragHd&&
(delete dragHd.flex,dragHd.setWidth(dragHd.getWidth()-offset[0]))),Ext.resumeLayouts(!0))},headerInSameGrid:function(header){var grid=this.dragHd.up('tablepanel');return!!header.up(grid)},disable:function(){var tracker=this.tracker;this.disabled=!0;tracker&&tracker.disable()},enable:function(){var tracker=this.tracker;this.disabled=!1;tracker&&tracker.enable()},calculateDragX:function(markerOwner){return this.tracker.getXY('point')[0]+this.xDelta-markerOwner.getX()-markerOwner.el.getBorderWidth('l')},
getLeftMarkerX:function(markerOwner){return this.dragHd.getX()-markerOwner.getX()-markerOwner.el.getBorderWidth('l')-1},setMarkerX:function(marker,x){marker.setLocalX(x)},adjustConstrainRegion:function(region,t,r,b,l){return region.adjust(t,r,b,l)},adjustColumnWidth:function(offsetX){this.dragHd.setWidth(this.origWidth+offsetX)}},0,0,0,0,['plugin.gridheaderresizer'],0,[Ext.grid.plugin,'HeaderResizer'],0);
Ext.cmd.derive('Ext.grid.header.DragZone',Ext.dd.DragZone,{colHeaderSelector:'.x-column-header',colInnerSelector:'.x-column-header-inner',maxProxyWidth:120,constructor:function(headerCt){this.headerCt=headerCt;this.ddGroup=this.getDDGroup();this.autoGroup=!0;Ext.dd.DragZone.prototype.constructor.call(this,headerCt.el);this.proxy.el.addCls('x-grid-col-dd')},getDDGroup:function(){return'header-dd-zone-'+this.headerCt.up('[scrollerOwner]').id},getDragData:function(e){if(e.getTarget(this.colInnerSelector)){var header=
e.getTarget(this.colHeaderSelector);if(header&&(header=Ext.getCmp(header.id),!this.headerCt.dragging&&header.draggable&&!header.isAtStartEdge(e)&&!header.isAtEndEdge(e)))return e=document.createElement('div'),e.role='presentation',e.innerHTML=header.text,{ddel:e,header:header}}return!1},onBeforeDrag:function(){return!(this.headerCt.dragging||this.disabled)},onInitDrag:function(){this.headerCt.dragging=!0;this.headerCt.hideMenu();Ext.dd.DragZone.prototype.onInitDrag.apply(this,arguments)},onDragDrop:function(){this.headerCt.dragging=
!1;Ext.dd.DragZone.prototype.onDragDrop.apply(this,arguments)},afterRepair:function(){Ext.dd.DragZone.prototype.afterRepair.call(this);this.headerCt.dragging=!1},getRepairXY:function(){return this.dragData.header.el.getXY()},disable:function(){this.disabled=!0},enable:function(){this.disabled=!1}},1,0,0,0,0,0,[Ext.grid.header,'DragZone'],0);
Ext.cmd.derive('Ext.grid.header.DropZone',Ext.dd.DropZone,{colHeaderCls:'x-column-header',proxyOffsets:[-4,-9],constructor:function(headerCt){this.headerCt=headerCt;this.ddGroup=this.getDDGroup();this.autoGroup=!0;Ext.dd.DropZone.prototype.constructor.call(this,headerCt.el)},destroy:function(){Ext.destroy(this.topIndicator,this.bottomIndicator);Ext.dd.DropZone.prototype.destroy.call(this)},getDDGroup:function(){return'header-dd-zone-'+this.headerCt.up('[scrollerOwner]').id},getTargetFromEvent:function(e){return e.getTarget('.'+
this.colHeaderCls)},getTopIndicator:function(){this.topIndicator||(this.topIndicator=Ext.getBody().createChild({role:'presentation',cls:'x-col-move-top',html:'\x26#160;'}),this.indicatorXOffset=Math.floor((this.topIndicator.dom.offsetWidth+1)/2));return this.topIndicator},getBottomIndicator:function(){this.bottomIndicator||(this.bottomIndicator=Ext.getBody().createChild({role:'presentation',cls:'x-col-move-bottom',html:'\x26#160;'}));return this.bottomIndicator},getLocation:function(e,t){e=e.getXY()[0];
var region=Ext.fly(t).getRegion();return{pos:region.right-e<=(region.right-region.left)/2?'after':'before',header:Ext.getCmp(t.id),node:t}},positionIndicator:function(data,node,e){var dragHeader=data.header,dropLocation=this.getLocation(e,node);node=dropLocation.header;e=dropLocation.pos;if(node!==this.lastTargetHeader||e!==this.lastDropPos){var nextHd=dragHeader.nextSibling('gridcolumn:not([hidden])');var prevHd=dragHeader.previousSibling('gridcolumn:not([hidden])');this.lastTargetHeader=node;this.lastDropPos=
e;if(!node.draggable&&'before'===e&&0===node.getIndex())return!1;data.dropLocation=dropLocation;if(dragHeader!==node&&('before'===e&&nextHd!==node||'after'===e&&prevHd!==node)&&!node.isDescendantOf(dragHeader)){data=Ext.dd.DragDropManager.getRelated(this);dragHeader=data.length;for(dropLocation=0;dropLocation<dragHeader;dropLocation++)nextHd=data[dropLocation],nextHd!==this&&nextHd.invalidateDrop&&nextHd.invalidateDrop();this.valid=!0;data=this.getTopIndicator();dragHeader=this.getBottomIndicator();
'before'===e?(e='bc-tl',dropLocation='tc-bl'):(e='bc-tr',dropLocation='tc-br');e=data.getAlignToXY(node.el,e);node=dragHeader.getAlignToXY(node.el,dropLocation);nextHd=this.headerCt.el;dropLocation=nextHd.getX()-this.indicatorXOffset;nextHd=nextHd.getX()+nextHd.getWidth();e[0]=Ext.Number.constrain(e[0],dropLocation,nextHd);node[0]=Ext.Number.constrain(node[0],dropLocation,nextHd);data.setXY(e);dragHeader.setXY(node);data.show();dragHeader.show()}else this.invalidateDrop()}},invalidateDrop:function(){this.valid=
!1;this.hideIndicators()},onNodeOver:function(node,dragZone,e,data){dragZone=data.header;if(data.header.el.dom===node)var doPosition=!1;else{data.isLock=data.isUnlock=data.crossPanel=!1;var to=this.getLocation(e,node).header;doPosition=dragZone.ownerCt===to.ownerCt;if(!doPosition&&!dragZone.ownerCt.sealed&&!to.ownerCt.sealed){doPosition=!0;var fromPanel=dragZone.up('tablepanel');to=to.up('tablepanel');fromPanel!==to&&(data.crossPanel=!0,data.isLock=to.isLocked&&!fromPanel.isLocked,data.isUnlock=!to.isLocked&&
fromPanel.isLocked,data.isUnlock&&!1===dragZone.lockable||data.isLock&&!dragZone.isLockable())&&(doPosition=!1)}}doPosition?this.positionIndicator(data,node,e):this.valid=!1;return this.valid?this.dropAllowed:this.dropNotAllowed},hideIndicators:function(){this.getTopIndicator().hide();this.getBottomIndicator().hide();this.lastTargetHeader=this.lastDropPos=null},onNodeOut:function(){this.hideIndicators()},getNestedHeader:function(header,first){var items=header.items;header.isGroupHeader&&items.length&&
(header=this.getNestedHeader(items[first?'last':'first'](),first));return header},onNodeDrop:function(node,dragZone,e,data){this.headerCt.blockNextEvent();if(this.valid){node=data.header;e=data.dropLocation;dragZone=e.pos;var targetHeader=e.header,fromCt=node.ownerCt,fromCtRoot=fromCt.getRootHeaderCt();e=targetHeader.ownerCt;var visibleColumnManager=this.headerCt.visibleColumnManager,visibleFromIdx=visibleColumnManager.getHeaderIndex(node);if(data.isLock||data.isUnlock)fromCt=fromCt.up('[scrollerOwner]'),
visibleColumnManager=e.items.indexOf(targetHeader),'after'===dragZone&&visibleColumnManager++,data.isLock?fromCt.lock(node,visibleColumnManager,e):fromCt.unlock(node,visibleColumnManager,e);else{visibleColumnManager='after'===dragZone?visibleColumnManager.getHeaderIndex(this.getNestedHeader(targetHeader,1))+1:visibleColumnManager.getHeaderIndex(this.getNestedHeader(targetHeader,0));this.invalidateDrop();var savedWidth=node.getWidth();Ext.suspendLayouts();fromCtRoot.isDDMoveInGrid=!data.crossPanel;
node.isGroupHeader&&targetHeader.isGroupHeader&&node.setNestedParent(targetHeader);'before'===dragZone?e.moveBefore(node,targetHeader):e.moveAfter(node,targetHeader);0<=visibleColumnManager&&(!targetHeader.isGroupHeader||targetHeader.items&&targetHeader.items.length)&&visibleFromIdx!==visibleColumnManager&&(data=node.isGroupHeader?node.query(':not([hidden]):not([isGroupHeader])').length:1,visibleFromIdx<=visibleColumnManager&&1<data&&(visibleColumnManager-=data),e.getRootHeaderCt().grid.view.moveColumn(visibleFromIdx,
visibleColumnManager,data));fromCtRoot.fireEvent('columnmove',fromCt,node,visibleFromIdx,visibleColumnManager);fromCtRoot.isDDMoveInGrid=!1;e.isGroupHeader&&!fromCt.isGroupHeader?fromCt!==e&&(node.savedFlex=node.flex,delete node.flex,node.width=savedWidth):!fromCt.isGroupHeader&&node.savedFlex&&(node.flex=node.savedFlex,delete node.width);Ext.resumeLayouts(!0);this.headerCt.grid.floated&&this.headerCt.grid.updateLayout()}}}},1,0,0,0,0,0,[Ext.grid.header,'DropZone'],0);
Ext.cmd.derive('Ext.grid.plugin.HeaderReorderer',Ext.plugin.Abstract,{init:function(headerCt){this.headerCt=headerCt;headerCt.on({boxready:this.onHeaderCtRender,single:!0,scope:this})},destroy:function(){this.headerCt.un('boxready',this.onHeaderCtRender,this);Ext.destroy(this.dragZone,this.dropZone);this.headerCt=this.dragZone=this.dropZone=null;Ext.plugin.Abstract.prototype.destroy.call(this)},onHeaderCtRender:function(headerCt){this.dragZone=new Ext.grid.header.DragZone(this.headerCt);this.dropZone=
new Ext.grid.header.DropZone(this.headerCt);this.disabled&&this.dragZone.disable();headerCt.setTouchAction({panX:!1})},enable:function(){this.disabled=!1;this.dragZone&&this.dragZone.enable()},disable:function(){this.disabled=!0;this.dragZone&&this.dragZone.disable()}},0,0,0,0,['plugin.gridheaderreorderer'],0,[Ext.grid.plugin,'HeaderReorderer'],0);
Ext.cmd.derive('Ext.grid.header.Container',Ext.container.Container,{border:!0,baseCls:'x-grid-header-ct',dock:'top',weight:100,defaultType:'gridcolumn',defaultWidth:100,sortAscText:'Sort Ascending',sortDescText:'Sort Descending',sortClearText:'Clear Sort',columnsText:'Columns',headerOpenCls:'x-column-header-open',menuSortAscCls:'x-hmenu-sort-asc',menuSortDescCls:'x-hmenu-sort-desc',menuColsIcon:'x-cols-icon',blockEvents:!1,dragging:!1,sortOnClick:!0,enableFocusableContainer:!1,childHideCount:0,sortable:!0,
enableColumnHide:!0,initComponent:function(){this.plugins=this.plugins||[];this.defaults=this.defaults||{};this.isColumn||(this.isRootHeader=!0,this.enableColumnResize&&(this.resizer=new Ext.grid.plugin.HeaderResizer,this.plugins.push(this.resizer)),this.enableColumnMove&&(this.reorderer=new Ext.grid.plugin.HeaderReorderer,this.plugins.push(this.reorderer)));this.isColumn&&!this.isGroupHeader?this.items&&0!==this.items.length||(this.isContainer=this.isFocusableContainer=!1,this.hasOwnProperty('focusable')||
(this.focusable=!0),this.layout={type:'container',calculate:Ext.emptyFn}):(this.layout=Ext.apply({type:'gridcolumn',align:'stretch'},this.initialConfig.layout),this.defaults.columnLines=this.columnLines,this.isRootHeader?(this.hiddenHeaders||(this.enableFocusableContainer=!0,this.ariaRole='rowgroup'),this.columnManager=new Ext.grid.ColumnManager(!1,this),this.visibleColumnManager=new Ext.grid.ColumnManager(!0,this),this.grid&&(this.grid.columnManager=this.columnManager,this.grid.visibleColumnManager=
this.visibleColumnManager)):(this.visibleColumnManager=new Ext.grid.ColumnManager(!0,this),this.columnManager=new Ext.grid.ColumnManager(!1,this)));this.menuTask=new Ext.util.DelayedTask(this.updateMenuDisabledState,this);Ext.container.Container.prototype.initComponent.call(this)},isNested:function(){return!!this.getRootHeaderCt().down('[isNestedParent]')},isNestedGroupHeader:function(){var items=this.getRefOwner().query('\x3e:not([hidden])');return 1===items.length&&items[0]===this},maybeShowNestedGroupHeader:function(){var items=
this.items,item;items&&1===items.length&&(item=items.getAt(0))&&item.hidden&&item.show()},setNestedParent:function(target){target.isNestedParent=!1;target.ownerCt.isNestedParent=!(1!==this.ownerCt.items.length||1!==target.ownerCt.items.length)},initEvents:function(){Ext.container.Container.prototype.initEvents.call(this);if(!this.isColumn&&!this.isGroupHeader){var onHeaderCtEvent=this.onHeaderCtEvent;onHeaderCtEvent={click:onHeaderCtEvent,dblclick:onHeaderCtEvent,contextmenu:onHeaderCtEvent,mousedown:this.onHeaderCtMouseDown,
mouseover:this.onHeaderCtMouseOver,mouseout:this.onHeaderCtMouseOut,scope:this};Ext.supports.Touch&&(onHeaderCtEvent.longpress=this.onHeaderCtLongPress);this.mon(this.el,onHeaderCtEvent)}},onHeaderCtEvent:function(e,t){var headerEl=this.getHeaderElByEvent(e);if(this.longPressFired)this.longPressFired=!1;else if(headerEl&&!this.blockEvents&&(headerEl=Ext.getCmp(headerEl.id))){var targetEl=headerEl[headerEl.clickTargetName];if(!headerEl.isGroupHeader&&!headerEl.isContainer||e.within(targetEl))if('click'===
e.type||'tap'===e.type)if(targetEl=headerEl.onTitleElClick(e,targetEl,this.sortOnClick))this.onHeaderTriggerClick(targetEl,e,'touch'===e.pointerType?targetEl.el:targetEl.triggerEl);else this.onHeaderClick(headerEl,e,t);else if('contextmenu'===e.type)this.onHeaderContextMenu(headerEl,e,t);else if('dblclick'===e.type&&headerEl.resizable)headerEl.onTitleElDblClick(e,targetEl.dom)}},blockNextEvent:function(){this.blockEvents=!0;Ext.asap(this.unblockEvents,this)},unblockEvents:function(){this.blockEvents=
!1},onHeaderCtMouseDown:function(e,target){e=Ext.Component.fromElement(target);var len;if(e!==this){if(e.isGroupHeader){target=e.getVisibleGridColumns();var scrollable=this.getScrollable();var i=0;for(len=target.length;i<len;++i){var col=target[i];if(scrollable.doIsInView(col.el,!0).x){e=col;break}}}e.focus()}},onHeaderCtMouseOver:function(e,t){if(!e.within(this.el,!0)&&(t=(t=e.getTarget('.'+Ext.grid.column.Column.prototype.baseCls))&&Ext.getCmp(t.id))){var targetEl=t[t.clickTargetName];if(e.within(targetEl))t.onTitleMouseOver(e,
targetEl.dom)}},onHeaderCtMouseOut:function(e,t){t='.'+Ext.grid.column.Column.prototype.baseCls;var outHeaderEl=e.getTarget(t);t=e.getRelatedTarget(t);if(outHeaderEl!==t){if(outHeaderEl&&(outHeaderEl=Ext.getCmp(outHeaderEl.id))){var targetEl=outHeaderEl[outHeaderEl.clickTargetName];outHeaderEl.onTitleMouseOut(e,targetEl.dom)}t&&(outHeaderEl=Ext.getCmp(t.id))&&(targetEl=outHeaderEl[outHeaderEl.clickTargetName],outHeaderEl.onTitleMouseOver(e,targetEl.dom))}},onHeaderCtLongPress:function(e){var headerEl=
this.getHeaderElByEvent(e),header;headerEl&&(header=Ext.getCmp(headerEl.id))&&!header.menuDisabled&&(this.longPressFired=!0,this.showMenuBy(e,headerEl,header))},getHeaderElByEvent:function(e){return e.getTarget('.'+Ext.grid.column.Column.prototype.baseCls)},isLayoutRoot:function(){return this.hiddenHeaders?!1:Ext.container.Container.prototype.isLayoutRoot.call(this)},getRootHeaderCt:function(){return this.isRootHeader?this:this.up('[isRootHeader]')},doDestroy:function(){this.menu&&this.menu.un('hide',
this.onMenuHide,this);this.menuTask.cancel();Ext.destroy(this.visibleColumnManager,this.columnManager,this.menu);Ext.container.Container.prototype.doDestroy.call(this)},applyColumnsState:function(columnsState,storeState){if(columnsState){var items=this.items.items,count=items.length,i,columnState,moved=!1,newOrder=[],newCols=[];for(i=0;i<count;i++){var col=items[i];if(columnState=columnsState[col.getStateId()]){var index=columnState.index;newOrder[index]=col;i!==index&&(moved=!0);col.applyColumnState&&
col.applyColumnState(columnState,storeState)}else newCols.push({index:i,column:col})}newOrder=Ext.Array.clean(newOrder);if(columnsState=newCols.length)for(i=0;i<columnsState;i++)columnState=newCols[i],index=columnState.index,index<newOrder.length?(moved=!0,Ext.Array.splice(newOrder,index,0,columnState.column)):newOrder.push(columnState.column);moved&&(this.applyingState=!0,this.removeAll(!1),delete this.applyingState,this.add(newOrder),this.purgeCache())}},getColumnsState:function(){var columns=[],
state;this.items.each(function(col){(state=col.getColumnState&&col.getColumnState())&&columns.push(state)});return columns},onAdd:function(c){Ext.container.Container.prototype.onAdd.apply(this,arguments);var rootHeader=this.getRootHeaderCt();this.onHeadersChanged(c,rootHeader&&rootHeader.isDDMoveInGrid)},move:function(fromIdx,toIdx){var items=this.items;if(fromIdx.isComponent){var headerToMove=fromIdx;fromIdx=items.indexOf(headerToMove)}else headerToMove=items.getAt(fromIdx);headerToMove.visibleFromIdx=
this.getRootHeaderCt().visibleColumnManager.indexOf(headerToMove);Ext.container.Container.prototype.move.apply(this,arguments)},onMove:function(headerToMove,fromIdx,toIdx){var gridHeaderCt=this.getRootHeaderCt(),gridVisibleColumnManager=gridHeaderCt.visibleColumnManager,numColsToMove=1;this.onHeadersChanged(headerToMove,!0);gridVisibleColumnManager=gridVisibleColumnManager.indexOf(headerToMove);gridVisibleColumnManager>=headerToMove.visibleFromIdx&&gridVisibleColumnManager++;Ext.container.Container.prototype.onMove.apply(this,
arguments);headerToMove.isGroupHeader&&(numColsToMove=headerToMove.visibleColumnManager.getColumns().length);gridHeaderCt.onHeaderMoved(headerToMove,numColsToMove,headerToMove.visibleFromIdx,gridVisibleColumnManager)},maybeContinueRemove:function(){return this.isGroupHeader&&!this.applyingState&&!this.isNestedParent&&this.ownerCt&&!this.items.getCount()},onRemove:function(c,isDestroying){var ownerCt=this.ownerCt;Ext.container.Container.prototype.onRemove.call(this,c,isDestroying);if(!this.destroying){if(!this.getRootHeaderCt().isDDMoveInGrid)this.onHeadersChanged(c,
!1);this.maybeContinueRemove()&&(c.rendered&&this.detachComponent(c),this.destroyAfterRemoving=!0,Ext.suspendLayouts(),ownerCt.remove(this,!1),Ext.resumeLayouts(!0))}},onHeadersChanged:function(c,isMove){var gridPanel,gridHeaderCt=this.getRootHeaderCt();this.purgeHeaderCtCache(this);if(gridHeaderCt&&(gridHeaderCt.onColumnsChanged(),(gridPanel=gridHeaderCt.ownerCt)&&!isMove))gridPanel.onHeadersChanged(gridHeaderCt,c)},onHeaderMoved:function(header,colsToMove,fromIdx,toIdx){var gridSection=this.ownerCt;
if(this.rendered){if(gridSection&&gridSection.onHeaderMove)gridSection.onHeaderMove(this,header,colsToMove,fromIdx,toIdx);this.fireEvent('columnmove',this,header,fromIdx,toIdx)}},onColumnsChanged:function(){var menu=this.menu;if(this.rendered&&(this.fireEvent('columnschanged',this),menu)){var columnItemSeparator=menu.child('#columnItemSeparator');menu=menu.child('#columnItem');columnItemSeparator&&columnItemSeparator.destroy();menu&&menu.destroy()}},lookupComponent:function(comp){var result=Ext.container.Container.prototype.lookupComponent.apply(this,
arguments);result.isGroupHeader||void 0!==result.width||result.flex||(result.width=this.defaultWidth);return result},setSortState:function(){var store=this.up('[store]').store,columns=this.visibleColumnManager.getColumns(),len=columns.length,i,sorter;for(i=0;i<len;i++){var header=columns[i];(sorter=header.getSorter())?store.getSorters().contains(sorter)||(sorter=null):sorter=store.getSorters().get(header.getSortParam());header.setSortState(sorter)}},getHeaderMenu:function(){var menu=this.getMenu();
return menu&&(menu=menu.child('#columnItem'))?menu.menu:null},onHeaderVisibilityChange:function(header,visible){var menu=this.getHeaderMenu();this.purgeHeaderCtCache(header.ownerCt);menu&&((header=this.getMenuItemForHeader(menu,header))&&header.setChecked(visible,!0),menu.isVisible()&&this.menuTask.delay(50))},updateMenuDisabledState:function(menu){var columns=this.query('gridcolumn:not([hidden])'),i,len=columns.length,checkItem;menu||(menu=this.getMenu());for(i=0;i<len;++i){var item=columns[i];if(checkItem=
this.getMenuItemForHeader(menu,item))item=item.isHideable()?'enable':'disable',checkItem.menu&&(item+='CheckChange'),checkItem[item]()}},getMenuItemForHeader:function(menu,header){return header?menu.down('menucheckitem[headerId\x3d'+header.id+']'):null},onHeaderShow:function(header){var ownerCt=this.ownerCt,lastHiddenHeader=header.lastHiddenHeader;ownerCt&&(this.forceFit&&delete this.flex,lastHiddenHeader&&!header.query('[hidden\x3dfalse]').length&&(lastHiddenHeader.show(),header.lastHiddenHeader=
null),this.onHeaderVisibilityChange(header,!0),ownerCt.onHeaderShow(this,header),this.fireEvent('columnshow',this,header),this.fireEvent('columnschanged',this))},onHeaderHide:function(header){var ownerCt=this.ownerCt;ownerCt&&(this.onHeaderVisibilityChange(header,!1),ownerCt.onHeaderHide(this,header),this.fireEvent('columnhide',this,header),this.fireEvent('columnschanged',this))},onHeaderResize:function(header,w){var gridSection=this.ownerCt;if(gridSection)gridSection.onHeaderResize(this,header,w);
this.fireEvent('columnresize',this,header,w)},onHeaderClick:function(header,e,t){var selModel=header.getView().getSelectionModel();header.fireEvent('headerclick',this,header,e,t);t=this.fireEvent('headerclick',this,header,e,t);if(!1!==t&&selModel.onHeaderClick)selModel.onHeaderClick(this,header,e);return t},onHeaderContextMenu:function(header,e,t){header.fireEvent('headercontextmenu',this,header,e,t);this.fireEvent('headercontextmenu',this,header,e,t)},onHeaderTriggerClick:function(header,e,t){!1!==
header.fireEvent('headertriggerclick',this,header,e,t)&&!1!==this.fireEvent('headertriggerclick',this,header,e,t)&&(header.activeMenu?e.pointerType?header.activeMenu.hide():header.activeMenu.focus():this.showMenuBy(e,t,header))},showMenuBy:function(clickEvent,t,header){var menu=this.getMenu(),ascItem=menu.down('#ascItem'),descItem=menu.down('#descItem');menu.activeHeader=menu.ownerCmp=header;header.setMenuActive(menu);header=header.sortable?'enable':'disable';if(ascItem)ascItem[header]();if(descItem)descItem[header]();
menu.autoFocus=!clickEvent||clickEvent.keyCode;menu.showBy(t,'tl-bl?');if(!menu.isVisible())this.onMenuHide(menu)},hideMenu:function(){this.menu&&this.menu.hide()},onMenuHide:function(menu){menu.activeHeader.setMenuActive(!1)},purgeHeaderCtCache:function(headerCt){for(;headerCt;){headerCt.purgeCache();if(headerCt.isRootHeader)break;headerCt=headerCt.ownerCt}},purgeCache:function(){var visibleColumnManager=this.visibleColumnManager,columnManager=this.columnManager;this.gridVisibleColumns=this.gridDataColumns=
this.hideableColumns=null;visibleColumnManager&&(visibleColumnManager.invalidate(),columnManager.invalidate())},getMenu:function(){var grid=this.view&&this.view.ownerGrid;this.menu||(this.menu=new Ext.menu.Menu({hideOnParentHide:!1,items:this.getMenuItems(),listeners:{beforeshow:this.beforeMenuShow,hide:this.onMenuHide,scope:this}}),this.fireEvent('menucreate',this,this.menu),grid&&grid.fireEvent('headermenucreate',grid,this.menu,this));return this.menu},beforeMenuShow:function(menu){if(!menu.child('#columnItem')){var hideableColumns=
this.enableColumnHide?this.getColumnMenu(this):null;var insertPoint=this.sortable?2:0;hideableColumns&&hideableColumns.length&&menu.insert(insertPoint,[{itemId:'columnItemSeparator',xtype:'menuseparator'},{itemId:'columnItem',text:this.columnsText,iconCls:this.menuColsIcon,menu:{items:hideableColumns},hideOnClick:!1}])}this.updateMenuDisabledState(this.menu)},getMenuItems:function(){var menuItems=[],hideableColumns=this.enableColumnHide?this.getColumnMenu(this):null;this.sortable&&(menuItems=[{itemId:'ascItem',
text:this.sortAscText,iconCls:this.menuSortAscCls,handler:this.onSortAscClick,scope:this},{itemId:'descItem',text:this.sortDescText,iconCls:this.menuSortDescCls,handler:this.onSortDescClick,scope:this}]);hideableColumns&&hideableColumns.length&&(this.sortable&&menuItems.push({itemId:'columnItemSeparator',xtype:'menuseparator'}),menuItems.push({itemId:'columnItem',text:this.columnsText,iconCls:this.menuColsIcon,menu:hideableColumns,hideOnClick:!1}));return menuItems},onSortAscClick:function(){this.getMenu().activeHeader.sort('ASC')},
onSortDescClick:function(){this.getMenu().activeHeader.sort('DESC')},getColumnMenu:function(headerContainer){var menuItems=[],i=0;headerContainer=headerContainer.query('\x3egridcolumn[hideable]');for(var itemsLn=headerContainer.length;i<itemsLn;i++){var item=headerContainer[i];item=new Ext.menu.CheckItem({text:item.menuText||item.text,checked:!item.hidden,hideOnClick:!1,headerId:item.id,menu:item.isGroupHeader?this.getColumnMenu(item):void 0,checkHandler:this.onColumnCheckChange,scope:this});menuItems.push(item)}return menuItems.length?
menuItems:null},onColumnCheckChange:function(checkItem,checked){checkItem=Ext.getCmp(checkItem.headerId);if(checkItem.rendered)checkItem[checked?'show':'hide']();else checkItem.hidden=!checked},getColumnCount:function(){return this.getGridColumns().length},getTableWidth:function(){var fullWidth=0,headers=this.getVisibleGridColumns(),headersLn=headers.length,i;for(i=0;i<headersLn;i++)fullWidth+=headers[i].getCellWidth()||0;return fullWidth},getVisibleGridColumns:function(){var i;if(this.gridVisibleColumns)return this.gridVisibleColumns;
var allColumns=this.getGridColumns();var rootHeader=this.getRootHeaderCt();var result=[];var len=allColumns.length;for(i=0;i<len;i++){var column=allColumns[i];column.hidden||column.isColumnHidden(rootHeader)||(result[result.length]=column)}return this.gridVisibleColumns=result},isColumnHidden:function(rootHeader){for(var owner=this.getRefOwner();owner&&owner!==rootHeader;){if(owner.hidden)return!0;owner=owner.getRefOwner()}return!1},getGridColumns:function(inResult,hiddenAncestor){if(!inResult&&this.gridDataColumns)return this.gridDataColumns;
var result=inResult||[],items,len;hiddenAncestor=hiddenAncestor||this.hidden;if(this.items&&(items=this.items.items)){var i=0;for(len=items.length;i<len;i++){var item=items[i];item.isGroupHeader?(item.visibleIndex=result.length,item.getGridColumns(result,hiddenAncestor)):(item.hiddenAncestor=hiddenAncestor,result.push(item))}}inResult||(this.gridDataColumns=result);if(!inResult&&len){i=0;for(len=result.length;i<len;i++)if(item=result[i],item.fullColumnIndex=i,item.isFirstVisible=item.isLastVisible=
!1,!item.hidden&&!item.hiddenAncestor){lastVisibleColumn||(item.isFirstVisible=!0);var lastVisibleColumn=item}lastVisibleColumn&&(lastVisibleColumn.isLastVisible=!0)}return result},getHideableColumns:function(){var result=this.hideableColumns;result||(result=this.hideableColumns=this.query('[hideable]'));return result},getHeaderIndex:function(header){this.columnManager||(this.columnManager=this.getRootHeaderCt().columnManager);return this.columnManager.getHeaderIndex(header)},getHeaderAtIndex:function(index){this.columnManager||
(this.columnManager=this.getRootHeaderCt().columnManager);return this.columnManager.getHeaderAtIndex(index)},getVisibleHeaderClosestToIndex:function(index){this.visibleColumnManager||(this.visibleColumnManager=this.getRootHeaderCt().visibleColumnManager);return this.visibleColumnManager.getVisibleHeaderClosestToIndex(index)},applyForceFit:function(header){var view=this.view,minWidth=Ext.grid.plugin.HeaderResizer.prototype.minColWidth,useMinWidthForFlex=!1,defaultWidth=Ext.grid.header.Container.prototype.defaultWidth,
availFlex=this.el.dom.clientWidth-(view.el.dom.scrollHeight>view.el.dom.clientHeight?Ext.getScrollbarSize().width:0),totalFlex=0,items=this.getVisibleGridColumns(),hidden=header.hidden;Ext.suspendLayouts();var len=availFlex-(items.length+1)*minWidth;header.flex=null;if(hidden){var myWidth=header.width||header.savedWidth||Math.floor(len/(items.length+1));header.savedWidth=null}else myWidth=view.getMaxContentWidth(header);if(myWidth>len)header.width=len,useMinWidthForFlex=!0;else for(header.width=myWidth,
availFlex-=myWidth+defaultWidth,view=0,len=items.length;view<len;view++)hidden=items[view],hidden!==header&&(hidden.flex=hidden.flex||hidden.width||hidden.getWidth(),totalFlex+=hidden.flex,hidden.width=null);view=0;for(len=items.length;view<len;view++)hidden=items[view],myWidth=hidden===header,useMinWidthForFlex&&!myWidth?(hidden.flex=minWidth,hidden.width=null):myWidth||(myWidth=hidden.flex||defaultWidth,hidden.flex=Math.max(Math.ceil(myWidth/totalFlex*availFlex),minWidth),hidden.width=null),hidden.setWidth(hidden.width||
hidden.flex);Ext.resumeLayouts(!0)},autoSizeColumn:function(header){var view=this.view;view&&(view.autoSizeColumn(header),this.forceFit&&this.applyForceFit(header))},getRefItems:function(deep){deep=Ext.container.Container.prototype.getRefItems.call(this,deep);this.menu&&deep.push(this.menu);return deep},privates:{beginChildHide:function(){++this.childHideCount},endChildHide:function(){--this.childHideCount},getFocusables:function(){return this.isRootHeader?this.getVisibleGridColumns():this.items.items},
createFocusableContainerKeyNav:function(el){return new Ext.util.KeyNav(el,{scope:this,down:this.showHeaderMenu,left:this.onFocusableContainerLeftKey,right:this.onFocusableContainerRightKey,home:this.onHomeKey,end:this.onEndKey,space:this.onHeaderActivate,enter:this.onHeaderActivate})},onHomeKey:function(e){return this.focusChild(null,!0,e)},onEndKey:function(e){return this.focusChild(null,!1,e)},showHeaderMenu:function(e){var column=this.getFocusableFromEvent(e);if(column&&column.isColumn&&column.triggerEl)this.onHeaderTriggerClick(column,
e,column.triggerEl)},onHeaderActivate:function(e){var column=this.getFocusableFromEvent(e);if(column&&column.isColumn){var view=column.getView();if(column.sortable&&this.sortOnClick){var lastFocused=view.getNavigationModel().getLastFocused();column.toggleSortState();lastFocused&&view.ownerCt.ensureVisible(lastFocused.record)}else if(e.getKey()===e.SPACE)column.onTitleElClick(e,e.target,this.sortOnClick);return this.onHeaderClick(column,e,column.el)}},onOwnerGridReconfigure:function(storeChanged,columnsChanged){!this.rendered||
this.destroying||this.destroyed||(storeChanged||columnsChanged)&&this.initFocusableContainer()}}},0,['headercontainer'],['component','box','container','headercontainer'],{component:!0,box:!0,container:!0,headercontainer:!0},['widget.headercontainer'],[[Ext.util.FocusableContainer.prototype.mixinId||Ext.util.FocusableContainer.$className,Ext.util.FocusableContainer]],[Ext.grid.header,'Container'],0);
Ext.cmd.derive('Ext.grid.column.Column',Ext.grid.header.Container,{alternateClassName:'Ext.grid.Column',config:{triggerVisible:!1,sorter:null,align:'start'},baseCls:'x-column-header',hoverCls:'x-column-header-over',ariaRole:'columnheader',enableFocusableContainer:!1,sortState:null,possibleSortStates:['ASC','DESC'],ariaSortStates:{ASC:'ascending',DESC:'descending'},childEls:['titleEl','triggerEl','textEl','textContainerEl','textInnerEl'],headerWrap:!1,renderTpl:['\x3cdiv id\x3d"{id}-titleEl" data-ref\x3d"titleEl" role\x3d"presentation"',
'{tipMarkup}class\x3d"','x-','column-header-inner\x3ctpl if\x3d"!$comp.isContainer"\x3e ','x-','leaf-column-header\x3c/tpl\x3e','\x3ctpl if\x3d"empty"\x3e ','x-','column-header-inner-empty\x3c/tpl\x3e"\x3e','\x3cdiv id\x3d"{id}-textContainerEl" data-ref\x3d"textContainerEl" role\x3d"presentation" class\x3d"','x-','column-header-text-container"\x3e','\x3cdiv role\x3d"presentation" class\x3d"','x-','column-header-text-wrapper"\x3e','\x3cdiv id\x3d"{id}-textEl" data-ref\x3d"textEl" role\x3d"presentation" class\x3d"',
'x-','column-header-text','{childElCls}"\x3e','\x3cspan id\x3d"{id}-textInnerEl" data-ref\x3d"textInnerEl" role\x3d"presentation" class\x3d"','x-','column-header-text-inner"\x3e{text}\x3c/span\x3e','\x3c/div\x3e','{%','values.$comp.afterText(out, values);','%}','\x3c/div\x3e','\x3c/div\x3e','\x3ctpl if\x3d"!menuDisabled"\x3e','\x3cdiv id\x3d"{id}-triggerEl" data-ref\x3d"triggerEl" role\x3d"presentation" unselectable\x3d"on" class\x3d"','x-','column-header-trigger','{childElCls}" style\x3d"{triggerStyle}"\x3e\x3c/div\x3e',
'\x3c/tpl\x3e','\x3c/div\x3e','{%this.renderContainer(out,values)%}'],dataIndex:null,text:' ',menuText:null,emptyCellText:' ',sortable:!0,resizable:!0,hideable:!0,menuDisabled:!1,renderer:!1,draggable:!0,tooltipType:'qtip',initDraggable:Ext.emptyFn,tdCls:'',dirtyText:'Cell value has been edited',producesHTML:!0,ignoreExport:!1,exportStyle:null,isHeader:!0,isColumn:!0,scrollable:!1,requiresMenu:!1,tabIndex:-1,ascSortCls:'x-column-header-sort-ASC',descSortCls:'x-column-header-sort-DESC',componentLayout:'columncomponent',
groupSubHeaderCls:'x-group-sub-header',groupHeaderCls:'x-group-header',clickTargetName:'titleEl',detachOnRemove:!0,initResizable:Ext.emptyFn,rendererNames:{column:'renderer',edit:'editRenderer',summary:'summaryRenderer'},formatterNames:{column:'formatter',edit:'editFormatter',summary:'summaryFormatter'},initComponent:function(){this.rendererScope||(this.rendererScope=this.scope);null!=this.header&&(this.text=this.header,this.header=null);this.cellWrap&&(this.tdCls=(this.tdCls||'')+' x-wrap-cell');
null!=this.columns?(this.isGroupHeader=!0,this.ariaRole='presentation',this.items=this.columns,this.columns=null,this.cls=(this.cls||'')+' '+this.groupHeaderCls,this.sortable=this.resizable=!1,this.align='center'):this.flex&&(this.minWidth=this.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth);this.addCls('x-column-header-align-'+this.align);this.setupRenderer();this.setupRenderer('edit');this.setupRenderer('summary');Ext.grid.header.Container.prototype.initComponent.apply(this,arguments)},
beforeLayout:function(){var items=this.items,len,i;Ext.isArray(items)||(items=items.items);if(len=items.length){for(i=0;!hasFlexedChildren&&i<len;i++)var hasFlexedChildren=items[i].flex;hasFlexedChildren||(this.flex=null)}Ext.grid.header.Container.prototype.beforeLayout.call(this)},onAdded:function(container,pos,instanced){Ext.grid.header.Container.prototype.onAdded.call(this,container,pos,instanced);this.headerId||this.calculateHeaderId();this.configureStateInfo()},_initSorterFn:function(a,b){var scope=
this.column.resolveListenerScope(),name=this.methodName;name=scope&&scope[name];var ret=0;name&&(this.setSorterFn(name),this.column=null,ret=name.call(scope,a,b));return ret},applySorter:function(sorter){var sorterFn=sorter?sorter.sorterFn:null;'string'===typeof sorterFn?(sorter=new Ext.util.Sorter(Ext.applyIf({sorterFn:this._initSorterFn},sorter)),sorter.methodName=sorterFn,sorter.column=this):sorter=this.getRootHeaderCt().up('tablepanel').store.getData().getSorters().decodeSorter(sorter);return sorter},
updateAlign:function(align){this.textAlign=this._alignMap[align]||align},bindFormatter:function(format){var me=this;return function(v){return format(v,me.rendererScope||me.resolveListenerScope())}},bindRenderer:function(renderer){var me=this;me.hasCustomRenderer=!0;return function(){return Ext.callback(renderer,me.rendererScope,arguments,0,me)}},setupRenderer:function(type){type=type||'column';var format=this[this.formatterNames[type]],renderer=this[this.rendererNames[type]],isColumnRenderer='column'===
type;if(format)renderer=Ext.app.bind.Parser.fly(format),format=renderer.compileFormat(),renderer.release(),this[this.formatterNames[type]]=null,this[this.rendererNames[type]]=this.bindFormatter(format);else if(renderer){if('string'===typeof renderer){renderer=this[this.rendererNames[type]]=this.bindRenderer(renderer);var dynamic=!0}isColumnRenderer&&(this.hasCustomRenderer=dynamic||1<renderer.length)}else isColumnRenderer&&this.defaultRenderer&&(this.renderer=this.defaultRenderer,this.usingDefaultRenderer=
!0)},getView:function(){var rootHeaderCt=this.getRootHeaderCt();if(rootHeaderCt)return rootHeaderCt.view},onFocusLeave:function(e){Ext.grid.header.Container.prototype.onFocusLeave.call(this,e);this.activeMenu&&this.activeMenu.hide()},initItems:function(){Ext.grid.header.Container.prototype.initItems.apply(this,arguments);this.isGroupHeader&&(this.config.hidden||!this.hasVisibleChildColumns())&&this.hide()},hasVisibleChildColumns:function(){var items=this.items.items,len=items.length,i;for(i=0;i<len;++i){var item=
items[i];if(item.isColumn&&!item.hidden)return!0}return!1},onAdd:function(child){child.isColumn&&(child.isSubHeader=!0,child.addCls(this.groupSubHeaderCls));this.isGroupHeader&&this.hidden&&this.hasVisibleChildColumns()&&this.show();Ext.grid.header.Container.prototype.onAdd.call(this,child)},onRemove:function(child,isDestroying){child.isSubHeader&&(child.isSubHeader=!1,child.removeCls(this.groupSubHeaderCls));Ext.grid.header.Container.prototype.onRemove.call(this,child,isDestroying);this.destroyed||
this.destroying||this.hasVisibleChildColumns()||!this.ownerCt||this.ownerCt.isNested()||this.hide()},initRenderData:function(){var tipMarkup='',tip=this.tooltip,text=this.text,attr='qtip'===this.tooltipType?'data-qtip':'title';Ext.isEmpty(tip)||(tipMarkup=attr+'\x3d"'+tip+'" ');return Ext.applyIf(Ext.grid.header.Container.prototype.initRenderData.apply(this,arguments),{text:text,empty:this.isEmptyText(text),menuDisabled:this.menuDisabled,tipMarkup:tipMarkup,triggerStyle:this.getTriggerVisible()?'display:block':
''})},applyColumnState:function(state,storeState){var sorter=this.getSorter();storeState=storeState&&storeState.sorters;var len,i;if(sorter&&storeState&&(len=storeState.length)){var mySorterId=sorter.getId();for(i=0;i<len;i++)if(storeState[i].id===mySorterId){sorter.setDirection(storeState[i].direction);storeState[i]=sorter;break}}this.applyColumnsState(state.columns);null!=state.hidden&&(this.hidden=state.hidden);null!=state.locked&&(this.locked=state.locked);null!=state.sortable&&(this.sortable=
state.sortable);null!=state.width?(this.flex=null,this.width=state.width):null!=state.flex&&(this.width=null,this.flex=state.flex)},getColumnState:function(){var items=this.items.items,state={id:this.getStateId()};this.savePropsToState(['hidden','sortable','locked','flex','width'],state);this.isGroupHeader&&items&&items.length&&(state.columns=this.getColumnsState());'width'in state&&delete state.flex;return state},setText:function(text){this.text=text;if(this.rendered){var grid=this.getView().ownerGrid;
this.textInnerEl.setHtml(text);this.titleEl.toggleCls('x-column-header-inner-empty',this.isEmptyText(text));grid.syncHeaderVisibility()}},getIndex:function(){return this.isGroupColumn?!1:this.getRootHeaderCt().getHeaderIndex(this)},getVisibleIndex:function(){return null!=this.visibleIndex?this.visibleIndex:this.isGroupColumn?!1:Ext.Array.indexOf(this.getRootHeaderCt().getVisibleGridColumns(),this)},getLabelChain:function(){for(var child=this,labels=[];child=child.up('headercontainer');)child.text&&
labels.unshift(Ext.util.Format.stripTags(child.text));return labels},beforeRender:function(){var rootHeaderCt=this.getRootHeaderCt(),isSortable=this.isSortable();Ext.grid.header.Container.prototype.beforeRender.call(this);this.requiresMenu||isSortable||this.groupable||this.lockable||!1!==rootHeaderCt.grid.enableColumnHide&&rootHeaderCt.getHideableColumns().length||(this.menuDisabled=!0);this.cellWrap&&(this.variableRowHeight=!0);rootHeaderCt=this.ariaRenderAttributes||(this.ariaRenderAttributes={});
rootHeaderCt['aria-readonly']=!0;isSortable&&(rootHeaderCt['aria-sort']=this.ariaSortStates[this.sortState]);this.isSubHeader&&(isSortable=this.getLabelChain(),this.text&&isSortable.push(Ext.util.Format.stripTags(this.text)),isSortable.length&&(rootHeaderCt['aria-label']=isSortable.join(' ')));this.protoEl.unselectable()},getTriggerElWidth:function(){var triggerEl=this.triggerEl,width=this.self.triggerElWidth;triggerEl&&void 0===width&&(triggerEl.setStyle('display','block'),width=this.self.triggerElWidth=
triggerEl.getWidth(),triggerEl.setStyle('display',''));return width},afterComponentLayout:function(width,height,oldWidth,oldHeight){var rootHeaderCt=this.getRootHeaderCt();Ext.grid.header.Container.prototype.afterComponentLayout.apply(this,arguments);if(rootHeaderCt&&(null!=oldWidth||this.flex)&&width!==oldWidth)rootHeaderCt.onHeaderResize(this,width)},doDestroy:function(){Ext.destroy(this.field,this.editor);Ext.grid.header.Container.prototype.doDestroy.call(this)},onTitleMouseOver:function(){this.titleEl.addCls(this.hoverCls)},
onTitleMouseOut:function(){this.titleEl.removeCls(this.hoverCls)},onDownKey:function(e){if(this.triggerEl)this.onTitleElClick(e,this.triggerEl.dom||this.el.dom)},onEnterKey:function(e){this.onTitleElClick(e,this.el.dom)},onTitleElDblClick:function(e){this.isAtStartEdge(e)?(e=this.previousNode('gridcolumn:not([hidden]):not([isGroupHeader])'))&&e.getRootHeaderCt()===this.getRootHeaderCt()&&e.autoSize():this.isAtEndEdge(e)&&(this.isGroupHeader&&e.getPoint().isContainedBy(this.layout.innerCt)?(e=this.query('gridcolumn:not([hidden]):not([isGroupHeader])'),
this.getRootHeaderCt().autoSizeColumn(e[e.length-1])):(e=this.getRootHeaderCt(),1===e.visibleColumnManager.getColumns().length&&e.forceFit||this.autoSize()))},autoSize:function(){var i;if(this.isGroupHeader){var leafColumns=this.query('gridcolumn:not([hidden]):not([isGroupHeader])');var numLeaves=leafColumns.length;var headerCt=this.getRootHeaderCt();Ext.suspendLayouts();for(i=0;i<numLeaves;i++)headerCt.autoSizeColumn(leafColumns[i]);Ext.resumeLayouts(!0);grid.ownerGrid.lockable&&grid.isLayoutRoot()&&
grid.ownerGrid.syncLockableLayout()}else this.getRootHeaderCt().autoSizeColumn(this)},isEmptyText:function(text){return null==text||'\x26#160;'===text||' '===text||''===text},onTitleElClick:function(e,t,sortOnClick){var activeHeader;if('touch'===e.pointerType){t=this.previousSibling(':not([hidden])');if(!this.menuDisabled){var tapMargin=parseInt(this.triggerEl.getStyle('width'),10);isNaN(tapMargin)&&(tapMargin=3*this.getHandleWidth(e));this.isAtEndEdge(e,tapMargin)&&(activeHeader=this)}!activeHeader&&
t&&!t.menuDisabled&&this.isAtStartEdge(e)&&(activeHeader=t)}else activeHeader=this.triggerEl&&(e.target===this.triggerEl.dom||t===this.triggerEl||e.within(this.triggerEl))?this:null;!1===sortOnClick||(activeHeader||this.isAtStartEdge(e)||this.isAtEndEdge(e))&&!e.getKey()||this.toggleSortState();return activeHeader},processEvent:function(type,view,cell,recordIndex,cellIndex,e){return this.fireEvent.apply(this,arguments)},isSortable:function(){var rootHeader=this.getRootHeaderCt();rootHeader=rootHeader?
rootHeader.grid:null;var sortable=this.sortable;rootHeader&&!1===rootHeader.sortableColumns&&(sortable=!1);return sortable},toggleSortState:function(){this.isSortable()&&this.sort()},sort:function(direction){var grid=this.up('tablepanel'),store=grid.store,sorter=this.getSorter();Ext.suspendLayouts();sorter?(direction&&sorter.setDirection(direction),store.sort(sorter,grid.multiColumnSort?'multi':'replace')):store.sort(this.getSortParam(),direction,grid.multiColumnSort?'multi':'replace');Ext.resumeLayouts(!0);
grid.ownerGrid.lockable&&grid.isLayoutRoot()&&grid.ownerGrid.syncLockableLayout()},getSortParam:function(){return this.dataIndex},setSortState:function(sorter){sorter=sorter&&sorter.getDirection();var ascCls=this.ascSortCls,descCls=this.descSortCls,rootHeaderCt=this.getRootHeaderCt(),ariaDom=this.ariaEl.dom;switch(sorter){case 'DESC':if(!this.hasCls(descCls)){this.addCls(descCls);this.sortState='DESC';var changed=!0}this.removeCls(ascCls);break;case 'ASC':this.hasCls(ascCls)||(this.addCls(ascCls),
this.sortState='ASC',changed=!0);this.removeCls(descCls);break;default:this.removeCls([ascCls,descCls]),this.sortState=null}ariaDom&&(this.sortState?ariaDom.setAttribute('aria-sort',this.ariaSortStates[this.sortState]):ariaDom.removeAttribute('aria-sort'));changed&&rootHeaderCt.fireEvent('sortchange',rootHeaderCt,this,sorter)},isHideable:function(){var result={hideCandidate:this,result:this.hideable};result.result&&this.ownerCt.bubble(this.hasOtherMenuEnabledChildren,null,[result]);return result.result},
hasOtherMenuEnabledChildren:function(result){if(!this.isXType('headercontainer'))return result.result=!1;var visibleChildren=this.query('\x3egridcolumn:not([hidden]):not([menuDisabled])');var count=visibleChildren.length;Ext.Array.contains(visibleChildren,result.hideCandidate)&&count--;if(count)return!1;result.hideCandidate=this},isLockable:function(){var result={result:!1!==this.lockable};result.result&&this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[result]);return result.result},isLocked:function(){return this.locked||
!!this.up('[isColumn][locked]','[isRootHeader]')},hasMultipleVisibleChildren:function(result){if(!this.isXType('headercontainer'))return result.result=!1;if(1<this.query('\x3egridcolumn:not([hidden])').length)return!1},hide:function(){var rootHeaderCt=this.getRootHeaderCt(),owner=this.getRefOwner();if(owner.constructing)return Ext.grid.header.Container.prototype.hide.call(this),this;if(this.rendered&&!this.isVisible())return this;rootHeaderCt.forceFit&&(this.visibleSiblingCount=rootHeaderCt.getVisibleGridColumns().length-
1,this.flex&&(this.savedWidth=this.getWidth(),this.flex=null));rootHeaderCt.beginChildHide();Ext.suspendLayouts();owner.isGroupHeader&&(this.isNestedGroupHeader()&&owner.hide(),this.isSubHeader&&!this.isGroupHeader&&1===owner.query('\x3egridcolumn:not([hidden])').length&&(owner.lastHiddenHeader=this));Ext.grid.header.Container.prototype.hide.call(this);rootHeaderCt.endChildHide();rootHeaderCt.onHeaderHide(this);Ext.resumeLayouts(!0);rootHeaderCt.grid.ownerGrid.lockable&&rootHeaderCt.grid.isLayoutRoot()&&
rootHeaderCt.grid.ownerGrid.syncLockableLayout();return this},show:function(){var rootHeaderCt=this.getRootHeaderCt(),ownerCt=this.getRefOwner();if(this.isVisible())return this;ownerCt.isGroupHeader&&(ownerCt.lastHiddenHeader=null);this.rendered&&rootHeaderCt.forceFit&&rootHeaderCt.applyForceFit(this);Ext.suspendLayouts();this.isSubHeader&&ownerCt.hidden&&ownerCt.show(!1,!0);Ext.grid.header.Container.prototype.show.apply(this,arguments);this.isGroupHeader&&this.maybeShowNestedGroupHeader();if(ownerCt=
this.getRootHeaderCt())ownerCt.onHeaderShow(this);Ext.resumeLayouts(!0);rootHeaderCt.grid.ownerGrid.lockable&&rootHeaderCt.grid.isLayoutRoot()&&rootHeaderCt.grid.ownerGrid.syncLockableLayout();return this},shouldUpdateCell:function(record,changedFieldNames){if(!this.preventUpdate){if(this.hasCustomRenderer)return 1;if(changedFieldNames){var len=changedFieldNames.length,i;for(i=0;i<len;++i){var field=changedFieldNames[i];if(field===this.dataIndex||field===record.idProperty)return 2}}else return 2}},
getCellWidth:function(){var result;this.rendered&&this.componentLayout&&this.componentLayout.lastComponentSize?result=this.componentLayout.lastComponentSize.width:this.width?result=this.width:this.isColumn||(result=this.getTableWidth());return result},getCellId:function(){return'x-grid-cell-'+this.getItemId()},getCellSelector:function(){var view=this.getView();return(view?view.getCellSelector():'')+'.'+this.getCellId()},getCellInnerSelector:function(){return this.getCellSelector()+' .x-grid-cell-inner'},
isAtStartEdge:function(e){var offset=e.getXY()[0]-this.getX();return 0>offset&&0===this.getIndex()?!1:offset<this.getHandleWidth(e)},isAtEndEdge:function(e,margin){return this.getX()+this.getWidth()-e.getXY()[0]<=(margin||this.getHandleWidth(e))},getHandleWidth:function(e){return'touch'===e.pointerType?10:4},setMenuActive:function(menu){this.activeMenu=menu;this.titleEl[menu?'addCls':'removeCls'](this.headerOpenCls)},privates:{_alignMap:{start:'left',end:'right'},afterText:function(out,values){this.dirtyText&&
(this.dirtyTextElementId=this.id+'-dirty-cell-text',out.push('\x3cspan id\x3d"'+this.dirtyTextElementId+'" class\x3d"x-hidden-offsets"\x3e'+this.dirtyText+'\x3c/span\x3e'))},calculateHeaderId:function(){var items,len;if(!this.headerId){var ownerGrid=this.up('tablepanel');if(!ownerGrid)return;if(items=this.items.items){var i=0;for(len=items.length;i<len;++i){var item=items[i];item.isColumn&&item.calculateHeaderId()}}ownerGrid=ownerGrid?ownerGrid.ownerGrid:this.getRootHeaderCt();ownerGrid.headerCounter=
(ownerGrid.headerCounter||0)+1;this.headerId='h'+ownerGrid.headerCounter}this.configureStateInfo()},configureStateInfo:function(){this.stateId||(this.stateId=this.initialConfig.id||this.headerId);var sorter=this.getSorter();this.hasSetSorter||!sorter||sorter.initialConfig.id||!this.dataIndex&&!this.stateId||(sorter.setId((this.dataIndex||this.stateId)+'-sorter'),this.hasSetSorter=!0)}},deprecated:{5:{methods:{bindRenderer:function(renderer){return function(value){return Ext.util.Format[renderer](value)}}}}}},
0,['gridcolumn'],['component','box','container','headercontainer','gridcolumn'],{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0},['widget.gridcolumn'],0,[Ext.grid.column,'Column',Ext.grid,'Column'],0);
Ext.cmd.derive('Ext.grid.column.ActionProxy',Ext.Base,{constructor:function(column,item,itemIndex){this.column=column;this.item=item;this.itemIndex=itemIndex},setHandler:function(handler){this.item.handler=handler},setDisabled:function(disabled){disabled?this.column.disableAction(this.itemIndex):this.column.enableAction(this.itemIndex)},setIconCls:function(iconCls){this.item.iconCls=iconCls;this.column.getView().refreshView()},setIconGlyph:function(glyph){this.item.glyph=glyph;this.column.getView().refreshView()},
setHidden:function(hidden){this.item.hidden=hidden;this.column.getView().refreshView()},setVisible:function(visible){this.setHidden(!visible)},on:function(){return this.column.on.apply(this.column,arguments)}},1,0,0,0,0,0,[Ext.grid.column,'ActionProxy'],0);
Ext.cmd.derive('Ext.grid.column.Action',Ext.grid.column.Column,{alternateClassName:'Ext.grid.ActionColumn',stopSelection:!0,actionIdRe:/x-action-col-(\d+)/,altText:'',menuText:'\x3ci\x3eActions\x3c/i\x3e',itemTabIndex:0,itemAriaRole:'button',maskOnDisable:!1,ignoreExport:!0,sortable:!1,innerCls:'x-grid-cell-inner-action-col',actionIconCls:'x-action-col-icon',constructor:function(config){var cfg=Ext.apply({},config);config=cfg.items||this.items||[this];var hasGetClass,len;this.origRenderer=cfg.renderer||
this.renderer;this.origScope=cfg.scope||this.scope;this.renderer=this.scope=cfg.renderer=cfg.scope=null;cfg.items=null;Ext.grid.column.Column.prototype.constructor.call(this,cfg);this.items=config;cfg=0;for(len=config.length;cfg<len;++cfg){var item=config[cfg];item.substr&&'@'===item[0]&&(item=this.getAction(item.substr(1)));item.isAction&&(config[cfg]=item.initialConfig,item.addComponent(new Ext.grid.column.ActionProxy(this,config[cfg],cfg)));item.getClass&&(hasGetClass=!0)}if(this.origRenderer||
hasGetClass)this.hasCustomRenderer=!0},initComponent:function(){Ext.grid.column.Column.prototype.initComponent.call(this);this.sortable&&!this.dataIndex&&(this.sortable=!1)},defaultRenderer:function(v,cellValues,record,rowIdx,colIdx,store,view){var scope=this.origScope||this,items=this.items,len=items.length;var ret=Ext.isFunction(this.origRenderer)?this.origRenderer.apply(scope,arguments)||'':'';cellValues.tdCls+=' x-action-col-cell';for(scope=0;scope<len;scope++){var item=items[scope];var icon=
item.icon;var glyph=item.glyph;var disabled=item.disabled||(item.isDisabled?Ext.callback(item.isDisabled,item.scope||this.origScope,[view,rowIdx,colIdx,item,record],0,this):!1);var tooltip=item.tooltip||(item.getTip?Ext.callback(item.getTip,item.scope||this.origScope,arguments,0,this):null);var altText=item.getAltText?Ext.callback(item.getAltText,item.scope||this.origScope,arguments,0,this):item.altText||this.altText;item.hasActionConfiguration||(item.stopSelection=this.stopSelection,item.disable=
Ext.Function.bind(this.disableAction,this,[scope],0),item.enable=Ext.Function.bind(this.enableAction,this,[scope],0),item.hasActionConfiguration=!0);glyph&&(glyph=Ext.Glyph.fly(glyph));var tabIndex=item!==this&&void 0!==item.tabIndex?item.tabIndex:this.itemTabIndex;var ariaRole=item!==this&&void 0!==item.ariaRole?item.ariaRole:this.itemAriaRole;ret+='\x3c'+(icon?'img':'div')+('number'===typeof tabIndex?' tabIndex\x3d"'+tabIndex+'"':'')+(ariaRole?' role\x3d"'+ariaRole+'"':' role\x3d"presentation"')+
(icon?' alt\x3d"'+altText+'" src\x3d"'+item.icon+'"':'')+' class\x3d"'+this.actionIconCls+' x-action-col-'+String(scope)+' '+(disabled?this.disabledCls+' ':' ')+(item.hidden?'x-hidden-display ':'')+(item.getClass?Ext.callback(item.getClass,item.scope||this.origScope,arguments,void 0,this):item.iconCls||this.iconCls||'')+'"'+(tooltip?' data-qtip\x3d"'+tooltip+'"':'')+(icon?'/\x3e':glyph?' style\x3d"font-family:'+glyph.fontFamily+'"\x3e'+glyph.character+'\x3c/div\x3e':'\x3e\x3c/div\x3e')}return ret},
updater:function(cell,value,record,view,dataSource){var cellValues={};Ext.fly(cell).addCls(cellValues.tdCls).down(this.getView().innerSelector,!0).innerHTML=this.defaultRenderer(value,cellValues,record,null,null,dataSource,view)},enableAction:function(index,silent){index?Ext.isNumber(index)||(index=Ext.Array.indexOf(this.items,index)):index=0;this.items[index].disabled=!1;this.up('tablepanel').el.select('.x-action-col-'+index).removeCls(this.disabledCls);silent||this.fireEvent('enable',this)},disableAction:function(index,
silent){index?Ext.isNumber(index)||(index=Ext.Array.indexOf(this.items,index)):index=0;this.items[index].disabled=!0;this.up('tablepanel').el.select('.x-action-col-'+index).addCls(this.disabledCls);silent||this.fireEvent('disable',this)},doDestroy:function(){this.renderer=this.items=null;return Ext.grid.column.Column.prototype.doDestroy.call(this)},processEvent:function(type,view,cell,recordIndex,cellIndex,e,record,row){var target=e.getTarget(),key='keydown'===type&&e.getKey(),match,cellFly=Ext.fly(cell);
e.stopSelection=!key&&this.stopSelection;if(key&&(target===cell||!cellFly.contains(target)))if(target=cellFly.query('.'+this.actionIconCls,!0),1===target.length)target=target[0];else return;if(target&&(match=target.className.match(this.actionIdRe))&&(target=this.items[parseInt(match[1],10)],match=target.disabled||(target.isDisabled?Ext.callback(target.isDisabled,target.scope||this.origScope,[view,recordIndex,cellIndex,target,record],0,this):!1),target&&!match))if('mousedown'===type&&!this.getView().actionableMode)e.preventDefault();
else if('click'===type||key===e.ENTER||key===e.SPACE){Ext.callback(target.handler||this.handler,target.scope||this.origScope,[view,recordIndex,cellIndex,target,e,record,row],void 0,this);if(view.destroyed)return!1;e.position.getNode()||e.position.refresh();if(!view.el.contains(Ext.Element.getActiveElement()))return!1}return Ext.grid.column.Column.prototype.processEvent.apply(this,arguments)},cascade:function(fn,scope){fn.call(scope||this,this)},getRefItems:function(){return[]},privates:{getFocusables:function(){return[]},
shouldUpdateCell:function(){return 2}}},1,['actioncolumn'],'component box container headercontainer gridcolumn actioncolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,actioncolumn:!0},['widget.actioncolumn'],0,[Ext.grid.column,'Action',Ext.grid,'ActionColumn'],0);
Ext.cmd.derive('Ext.grid.column.Boolean',Ext.grid.column.Column,{alternateClassName:'Ext.grid.BooleanColumn',trueText:'true',falseText:'false',undefinedText:'\x26#160;',defaultFilterType:'boolean',producesHTML:!1,defaultRenderer:function(value){return void 0===value?this.undefinedText:value&&'false'!==value?this.trueText:this.falseText},updater:function(cell,value){Ext.fly(cell).down(this.getView().innerSelector,!0).innerHTML=Ext.grid.column.Boolean.prototype.defaultRenderer.call(this,value)}},0,
['booleancolumn'],'component box container headercontainer gridcolumn booleancolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,booleancolumn:!0},['widget.booleancolumn'],0,[Ext.grid.column,'Boolean',Ext.grid,'BooleanColumn'],0);
Ext.cmd.derive('Ext.grid.column.Check',Ext.grid.column.Column,{alternateClassName:['Ext.ux.CheckColumn','Ext.grid.column.CheckColumn'],isCheckColumn:!0,config:{headerCheckbox:!1},align:'center',triggerEvent:'click',invert:!1,ignoreExport:!0,stopSelection:!0,headerCheckedCls:'x-grid-hd-checker-on',headerCheckboxCls:'x-column-header-checkbox',checkboxCls:'x-grid-checkcolumn',checkboxCheckedCls:'x-grid-checkcolumn-checked',innerCls:'x-grid-checkcolumn-cell-inner',clickTargetName:'el',defaultFilterType:'boolean',
checkboxAriaRole:'button',constructor:function(config){this.updateHeaderState=Ext.Function.createAnimationFrame(config.updateHeaderState||this.updateHeaderState);this.scope=this;Ext.grid.column.Column.prototype.constructor.apply(this,arguments)},afterComponentLayout:function(){Ext.grid.column.Column.prototype.afterComponentLayout.apply(this,arguments);this.useAriaElements&&this.headerCheckbox&&this.updateHeaderAriaDescription(this.areAllChecked());this.storeListeners||(this.updateHeaderState(),this.storeListeners=
this.getView().dataSource.on({datachanged:this.onDataChanged,scope:this,destroyable:!0}))},onRemoved:function(){Ext.grid.column.Column.prototype.onRemoved.apply(this,arguments);this.storeListeners=Ext.destroy(this.storeListeners)},onDataChanged:function(store,records){this.updateHeaderState()},updateHeaderCheckbox:function(headerCheckbox){headerCheckbox?(this.addCls('x-column-header-checkbox'),this.sortable=!1,this.useAriaElements&&this.updateHeaderAriaDescription(this.areAllChecked())):(this.removeCls('x-column-header-checkbox'),
this.useAriaElements&&this.ariaEl.dom&&this.ariaEl.dom.removeAttribute('aria-describedby'));this.updateHeaderState()},processEvent:function(type,view,cell,recordIndex,cellIndex,e,record,row){var key='keydown'===type&&e.getKey(),isClick=type===this.triggerEvent,disabled=this.disabled;e.stopSelection=!key&&this.stopSelection;if(disabled||!isClick&&key!==e.ENTER&&key!==e.SPACE)var ret=Ext.grid.column.Column.prototype.processEvent.apply(this,arguments);else key=!this.isRecordChecked(record),!1!==this.fireEvent('beforecheckchange',
this,recordIndex,key,record,e)&&(this.setRecordCheck(record,recordIndex,key,cell,e),isClick&&!view.actionableMode&&e.preventDefault(),this.hasListeners.checkchange&&this.fireEvent('checkchange',this,recordIndex,key,record,e));return ret},onTitleElClick:function(e,t,sortOnClick){if(this.disabled||!e.keyCode&&this.text&&!Ext.fly(e.target).hasCls(this.headerCheckboxCls))return Ext.grid.column.Column.prototype.onTitleElClick.call(this,e,t,sortOnClick);this.toggleAll(e)},toggleAll:function(e){var me=this,
view=me.getView(),store=view.getStore(),checked=!me.allChecked;if(!1!==me.fireEvent('beforeheadercheckchange',me,checked,e)){if(me.hasListeners.checkchange||me.hasListeners.beforecheckchange)e.position=new Ext.grid.CellContext(view);store.each(function(record,recordIndex){me.setRecordCheck(record,recordIndex,checked,view.getCell(record,me))});me.setHeaderStatus(checked,e);me.fireEvent('headercheckchange',me,checked,e)}},setHeaderStatus:function(checked,e){this.allChecked!==checked&&(this.allChecked=
checked,this.headerCheckbox&&(this[checked?'addCls':'removeCls'](this.headerCheckedCls),this.useAriaElements&&this.updateHeaderAriaDescription(checked)))},updateHeaderState:function(e){!this.destroyed&&this.headerCheckbox&&this.setHeaderStatus(this.areAllChecked(),e)},onEnable:function(){Ext.grid.column.Column.prototype.onEnable.apply(this,arguments);this._setDisabled(!1)},onDisable:function(){this._setDisabled(!0)},_setDisabled:function(disabled){var cls=this.disabledCls;var items=this.up('tablepanel').el.select(this.getCellSelector());
disabled?items.addCls(cls):items.removeCls(cls)},defaultRenderer:function(value,cellValues){var cls=this.checkboxCls,tip=this.tooltip;this.invert&&(value=!value);this.disabled&&(cellValues.tdCls+=' '+this.disabledCls);value&&(cls+=' '+this.checkboxCheckedCls,tip=this.checkedTooltip||tip);this.useAriaElements&&(cellValues.tdAttr+=' aria-describedby\x3d"'+this.id+'-cell-description'+(value?'':'-not')+'-selected"');this.updateHeaderState();return'\x3cspan '+(tip||'')+' class\x3d"'+cls+'" role\x3d"'+
this.checkboxAriaRole+'"'+(this.ariaStaticRoles[this.checkboxAriaRole]?'':' tabIndex\x3d"0"')+'\x3e\x3c/span\x3e'},isRecordChecked:function(record){var prop=this.property;return prop?record[prop]:record.get(this.dataIndex)},areAllChecked:function(){var store=this.getView().getStore(),i;if(!store.isBufferedStore&&0<store.getCount()){store=store.getData().items;var len=store.length;for(i=0;i<len;++i)if(!this.isRecordChecked(store[i]))return!1;return!0}},setRecordCheck:function(record,recordIndex,checked,
cell){if((recordIndex=this.property)?record[recordIndex]:record.get(this.dataIndex)!=checked)recordIndex?(record[recordIndex]=checked,this.updater(cell,checked)):record.set(this.dataIndex,checked)},updater:function(cell,value){var tip=this.tooltip;this.invert&&(value=!value);value&&(tip=this.checkedTooltip||tip);tip?cell.setAttribute('data-qtip',tip):cell.removeAttribute('data-qtip');cell=Ext.fly(cell);this.useAriaElements&&this.updateCellAriaDescription(null,value,cell);cell[this.disabled?'addCls':
'removeCls'](this.disabledCls);Ext.fly(cell.down(this.getView().innerSelector,!0).firstChild)[value?'addCls':'removeCls']('x-grid-checkcolumn-checked');this.updateHeaderState()},updateHeaderAriaDescription:function(isSelected){this.useAriaElements&&this.ariaEl.dom&&this.ariaEl.dom.setAttribute('aria-describedby',this.id+'-header-description'+(isSelected?'':'-not')+'-selected')},updateCellAriaDescription:function(record,isSelected,cell){this.useAriaElements&&(cell=cell||this.getView().getCell(record,
this))&&cell.dom.setAttribute('aria-describedby',this.id+'-cell-description'+(isSelected?'':'-not')+'-selected')},privates:{afterText:function(out,values){values=this.id;out.push('\x3cspan role\x3d"presentation" class\x3d"',this.headerCheckboxCls,'"\x3e\x3c/span\x3e');this.useAriaElements&&out.push('\x3cspan id\x3d"'+values+'-header-description-selected" class\x3d"x-hidden-offsets"\x3e'+this.headerDeselectText+'\x3c/span\x3e\x3cspan id\x3d"'+values+'-header-description-not-selected" class\x3d"x-hidden-offsets"\x3e'+
this.headerSelectText+'\x3c/span\x3e\x3cspan id\x3d"'+values+'-cell-description-selected" class\x3d"x-hidden-offsets"\x3e'+this.rowDeselectText+'\x3c/span\x3e\x3cspan id\x3d"'+values+'-cell-description-not-selected" class\x3d"x-hidden-offsets"\x3e'+this.rowSelectText+'\x3c/span\x3e')}}},1,['checkcolumn'],'component box container headercontainer gridcolumn checkcolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,checkcolumn:!0},['widget.checkcolumn'],0,[Ext.grid.column,
'Check',Ext.ux,'CheckColumn',Ext.grid.column,'CheckColumn'],0);
Ext.cmd.derive('Ext.grid.column.Date',Ext.grid.column.Column,{alternateClassName:'Ext.grid.DateColumn',isDateColumn:!0,defaultFilterType:'date',producesHTML:!1,initComponent:function(){this.format||(this.format=Ext.Date.defaultFormat);Ext.grid.column.Column.prototype.initComponent.apply(this,arguments)},defaultRenderer:function(value){return Ext.util.Format.date(value,this.format)},updater:function(cell,value){Ext.fly(cell).down(this.getView().innerSelector,!0).innerHTML=Ext.grid.column.Date.prototype.defaultRenderer.call(this,
value)}},0,['datecolumn'],'component box container headercontainer gridcolumn datecolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,datecolumn:!0},['widget.datecolumn'],0,[Ext.grid.column,'Date',Ext.grid,'DateColumn'],0);
Ext.cmd.derive('Ext.grid.column.Template',Ext.grid.column.Column,{alternateClassName:'Ext.grid.TemplateColumn',initComponent:function(){this.tpl=!Ext.isPrimitive(this.tpl)&&this.tpl.compile?this.tpl:new Ext.XTemplate(this.tpl);this.hasCustomRenderer=!0;Ext.grid.column.Column.prototype.initComponent.apply(this,arguments)},defaultRenderer:function(value,meta,record){value=Ext.apply({},record.data,record.getAssociatedData());return this.tpl.apply(value)},updater:function(cell,value){Ext.fly(cell).down(this.getView().innerSelector,
!0).innerHTML=Ext.grid.column.CheckColumn.prototype.defaultRenderer.call(this,value)}},0,['templatecolumn'],'component box container headercontainer gridcolumn templatecolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,templatecolumn:!0},['widget.templatecolumn'],0,[Ext.grid.column,'Template',Ext.grid,'TemplateColumn'],0);
Ext.cmd.derive('Ext.grid.feature.Feature',Ext.util.Observable,{wrapsItem:!1,isFeature:!0,disabled:!1,hasFeatureEvent:!0,eventPrefix:null,eventSelector:null,view:null,grid:null,constructor:function(config){this.initialConfig=config;Ext.util.Observable.prototype.constructor.apply(this,arguments)},clone:function(){return new this.self(this.initialConfig)},init:Ext.emptyFn,getFireEventArgs:function(eventName,view,featureTarget,e){return[eventName,view,featureTarget,e]},vetoEvent:Ext.emptyFn,enable:function(){this.disabled=
!1},disable:function(){this.disabled=!0}},1,0,0,0,['feature.feature'],0,[Ext.grid.feature,'Feature'],0);
Ext.cmd.derive('Ext.grid.feature.AbstractSummary',Ext.grid.feature.Feature,{summaryRowCls:'x-grid-row-summary',readDataOptions:{recordCreator:Ext.identityFn},summaryRowTpl:{fn:function(out,values,parent){values.record.isSummary&&this.summaryFeature.showSummaryRow?this.summaryFeature.outputSummaryRecord(values.record,values,out,parent):this.nextTpl.applyOut(values,out,parent)},priority:1E3},showSummaryRow:!0,init:function(){this.view.summaryFeature=this;this.rowTpl=this.view.self.prototype.rowTpl;
this.view.addRowTpl(this.summaryRowTpl).summaryFeature=this;this.summaryData={};this.groupInfo={};this.summaryTableCls||(this.summaryTableCls='x-grid-item');this.summaryRowSelector='.'+this.summaryRowCls},bindStore:function(grid,store){Ext.destroy(this.readerListeners);this.remoteRoot&&(this.readerListeners=store.getProxy().getReader().on({scope:this,destroyable:!0,rawdata:this.onReaderRawData}))},onReaderRawData:function(data){this.summaryRows=null;this.readerRawData=data},toggleSummaryRow:function(visible,
fromLockingPartner){var prev=this.showSummaryRow;(this.showSummaryRow=visible=null!=visible?!!visible:!this.showSummaryRow)&&visible!==prev&&(this.updateSummaryRow=!0);if(this.lockingPartner){if(!fromLockingPartner){this.lockingPartner.toggleSummaryRow(visible,!0);var doRefresh=!0}}else doRefresh=!0;doRefresh&&this.grid.ownerGrid.getView().refresh()},createRenderer:function(column,record){var ownerGroup=record.ownerGroup,summaryData=ownerGroup?this.summaryData[ownerGroup]:this.summaryData,dataIndex=
column.dataIndex||column.getItemId();return function(value,metaData){return column.summaryRenderer?column.summaryRenderer(record.data[dataIndex],summaryData,dataIndex,metaData):record.data[dataIndex]}},outputSummaryRecord:function(summaryRecord,contextValues,out){var view=contextValues.view,savedRowValues=view.rowValues;contextValues=contextValues.columns||view.headerCt.getVisibleGridColumns();var colCount=contextValues.length,i,values={view:view,record:summaryRecord,rowStyle:'',rowClasses:[this.summaryRowCls],
itemClasses:[],recordIndex:-1,rowId:view.getRowId(summaryRecord),columns:contextValues};for(i=0;i<colCount;i++){var column=contextValues[i];column.savedRenderer=column.renderer;column.renderer=column.summaryType||column.summaryRenderer?this.createRenderer(column,summaryRecord):Ext.emptyFn}view.rowValues=values;view.self.prototype.rowTpl.applyOut(values,out,parent);view.rowValues=savedRowValues;for(i=0;i<colCount;i++)column=contextValues[i],column.renderer=column.savedRenderer,column.savedRenderer=
null},getSummary:function(store,type,field,group){var isGrouped=!!group;store=isGrouped?group:store;if(type){if(Ext.isFunction(type))return isGrouped?store.aggregate(field,type):store.aggregate(type,null,!1,[field]);switch(type){case 'count':return store.count();case 'min':return store.min(field);case 'max':return store.max(field);case 'sum':return store.sum(field);case 'average':return store.average(field);default:return''}}},getRawData:function(){var data=this.readerRawData;return data?data:this.view.getStore().getProxy().getReader().rawData},
generateSummaryData:function(groupField){var summaryRows=this.summaryRows,convertedSummaryRow={},remoteData={},i;if(!summaryRows){summaryRows=this.getRawData();if(!summaryRows)return;var storeReader=this.view.store.getProxy().getReader();storeReader=Ext.create('reader.'+storeReader.type,storeReader.getConfig());storeReader.setRootProperty(this.remoteRoot);if(summaryRows=storeReader.getRoot(summaryRows)){var rows=[];Ext.isArray(summaryRows)||(summaryRows=[summaryRows]);var len=summaryRows.length;for(i=
0;i<len;++i){var row=storeReader.extractRecordData(summaryRows[i],this.readDataOptions);rows.push(row)}this.summaryRows=summaryRows=rows}storeReader.destroy();this.readerRawData=null}if(summaryRows)for(i=0,len=summaryRows.length;i<len;i++)convertedSummaryRow=summaryRows[i],groupField&&(remoteData[convertedSummaryRow[groupField]]=convertedSummaryRow);return groupField?remoteData:convertedSummaryRow},setSummaryData:function(record,colId,summaryValue,groupName){record=this.summaryData;groupName?(record[groupName]||
(record[groupName]={}),record[groupName][colId]=summaryValue):record[colId]=summaryValue},destroy:function(){Ext.destroy(this.readerListeners);this.readerRawData=this.summaryRows=null;Ext.grid.feature.Feature.prototype.destroy.call(this)}},0,0,0,0,['feature.abstractsummary'],0,[Ext.grid.feature,'AbstractSummary'],0);
Ext.cmd.derive('Ext.grid.feature.GroupStore',Ext.util.Observable,{isStore:!0,defaultViewSize:100,isFeatureStore:!0,badGrouperKey:'[object Object]',constructor:function(groupingFeature,store){Ext.util.Observable.prototype.constructor.call(this);this.groupingFeature=groupingFeature;this.bindStore(store);groupingFeature.grid.isLocked||this.bindViewStoreListeners()},bindStore:function(store){store&&this.store===store||(Ext.destroy(this.storeListeners),this.store=null);store&&(this.storeListeners=store.on({datachanged:this.onDataChanged,
groupchange:this.onGroupChange,idchanged:this.onIdChanged,update:this.onUpdate,scope:this,destroyable:!0}),this.store=store,this.processStore(store))},bindViewStoreListeners:function(){var view=this.groupingFeature.view,listeners=view.getStoreListeners(this);listeners.scope=view;this.on(listeners)},processStore:function(store){var groupingFeature=this.groupingFeature,collapseAll=groupingFeature.startCollapsed,data=this.data,groups=store.getGroups(),groupCount=groups?groups.length:0,groupField=store.getGroupField(),
groupNames=groups&&Ext.Array.unique(Ext.Object.getValues(groups.itemGroupKeys)),oldMetaGroupCache=groupingFeature.getCache(),i,featureGrouper;groupingFeature.invalidateCache();var metaGroupCache=groupingFeature.getCache();data?data.clear():data=this.data=new Ext.util.Collection({rootProperty:'data',extraKeys:{byInternalId:{property:'internalId',rootProperty:''}}});if(store.getCount())if(groupingFeature.startCollapsed=!1,0<groupCount){var Model=store.getModel();for(i=0;i<groupCount;i++){var group=
groups.getAt(i);var key=group.getGroupKey();if(this.badGrouperKey===key&&(featureGrouper=groupingFeature.getGrouper(groupField))){groupingFeature.startCollapsed=collapseAll;store.group(featureGrouper);return}var isCollapsed=oldMetaGroupCache[key];var metaGroup=metaGroupCache[key]=groupingFeature.getMetaGroup(key);isCollapsed&&(metaGroup.isCollapsed=isCollapsed.isCollapsed);Ext.Array.splice(groupNames,Ext.Array.indexOf(groupNames,key),1);(isCollapsed=metaGroup.isCollapsed=collapseAll||metaGroup.isCollapsed)?
(group={},group[groupField]=key,metaGroup.placeholder=metaGroup=new Model(group),metaGroup.isNonData=metaGroup.isCollapsedPlaceholder=!0,metaGroup.groupKey=key,data.add(metaGroup)):data.insert(this.data.length,group.items)}if(groupNames.length)for(i=0,store=groupNames.length;i<store;i++)groupingFeature=groupNames[i],metaGroupCache[groupingFeature]=oldMetaGroupCache[groupingFeature]}else data.add(store.getRange())},isCollapsed:function(name){return this.groupingFeature.getCache()[name].isCollapsed},
isLoading:function(){return!1},getData:function(){return this.data},getCount:function(){return this.data.getCount()},getTotalCount:function(){return this.data.getCount()},rangeCached:function(start,end){return end<this.getCount()},getRange:function(start,end,options){var result=this.data.getRange(start,Ext.isNumber(end)?end+1:end);options&&options.callback&&options.callback.call(options.scope||this,result,start,end,options);return result},getAt:function(index){return this.data.getAt(index)},getById:function(id){return this.store.getById(id)},
getByInternalId:function(internalId){return this.store.getByInternalId(internalId)||this.data.byInternalId.get(internalId)},expandGroup:function(group){var groupingFeature=this.groupingFeature,startIdx;'string'===typeof group&&(group=groupingFeature.getGroup(group));if(group){var items=group.items;var metaGroup=groupingFeature.getMetaGroup(group);var placeholder=metaGroup.placeholder}items.length&&-1!==(startIdx=this.data.indexOf(placeholder))&&(metaGroup.isCollapsed=!1,this.isExpandingOrCollapsing=
1,this.data.removeAt(startIdx),this.data.insert(startIdx,group.items),this.fireEvent('replace',this,startIdx,[placeholder],group.items),this.fireEvent('groupexpand',this,group),this.isExpandingOrCollapsing=0)},collapseGroup:function(group){var groupingFeature=this.groupingFeature,startIdx,len;'string'===typeof group&&(group=groupingFeature.getGroup(group));if(group)var items=group.items;items&&(len=items.length)&&-1!==(startIdx=this.data.indexOf(items[0]))&&(groupingFeature.getMetaGroup(group).isCollapsed=
!0,this.isExpandingOrCollapsing=2,this.data.removeAt(startIdx,len),this.data.insert(startIdx,groupingFeature=this.getGroupPlaceholder(group)),this.fireEvent('replace',this,startIdx,items,[groupingFeature]),this.fireEvent('groupcollapse',this,group),this.isExpandingOrCollapsing=0)},getGroupPlaceholder:function(group){var metaGroup=this.groupingFeature.getMetaGroup(group);if(!metaGroup.placeholder){var store=this.store,Model=store.getModel(),modelData={};group=group.getGroupKey();modelData[store.getGroupField()]=
group;store=metaGroup.placeholder=new Model(modelData);store.isNonData=store.isCollapsedPlaceholder=!0;store.groupKey=group}return metaGroup.placeholder},indexOf:function(record){var ret=-1;record.isCollapsedPlaceholder||(ret=this.data.indexOf(record));return ret},contains:function(record){return-1<this.indexOf(record)},indexOfPlaceholder:function(record){return this.data.indexOf(record)},indexOfId:function(id){return this.data.indexOfKey(id)},indexOfTotal:function(record){return this.store.indexOf(record)},
onIdChanged:function(store,rec,oldId,newId){this.data.updateKey(rec,oldId)},onUpdate:function(store,record,operation,modifiedFieldNames){var groupingFeature=this.groupingFeature;if(store.isGrouped()){if(store=record.group=groupingFeature.getGroup(record)){var metaGroup=groupingFeature.getMetaGroup(record);if(modifiedFieldNames&&Ext.Array.contains(modifiedFieldNames,groupingFeature.getGroupField()))return this.onDataChanged();metaGroup.isCollapsed?this.fireEvent('update',this,metaGroup.placeholder):
(Ext.suspendLayouts(),this.fireEvent('update',this,record,operation,modifiedFieldNames),metaGroup=store.items,operation=metaGroup[0],metaGroup=metaGroup[metaGroup.length-1],operation!==record&&(operation.group=store,this.fireEvent('update',this,operation,'edit',modifiedFieldNames),delete operation.group),metaGroup!==record&&metaGroup!==operation&&groupingFeature.showSummaryRow&&(metaGroup.group=store,this.fireEvent('update',this,metaGroup,'edit',modifiedFieldNames),delete metaGroup.group),Ext.resumeLayouts(!0))}delete record.group}else this.fireEvent('update',
this,record,operation,modifiedFieldNames)},onGroupChange:function(store,grouper){grouper||this.processStore(store);this.fireEvent('groupchange',store,grouper)},onDataChanged:function(){this.processStore(this.store);this.fireEvent('refresh',this)},destroy:function(){this.bindStore(null);Ext.destroy(this.data);this.groupingFeature=null;Ext.util.Observable.prototype.destroy.call(this)}},1,0,0,0,0,0,[Ext.grid.feature,'GroupStore'],0);
Ext.cmd.derive('Ext.grid.feature.Grouping',Ext.grid.feature.Feature,{eventPrefix:'group',eventSelector:'.x-grid-group-hd',refreshData:{},wrapsItem:!0,groupHeaderTpl:'{columnName}: {name}',depthToIndent:17,collapsedCls:'x-grid-group-collapsed',hdCollapsedCls:'x-grid-group-hd-collapsed',hdNotCollapsibleCls:'x-grid-group-hd-not-collapsible',collapsibleCls:'x-grid-group-hd-collapsible',ctCls:'x-group-hd-container',groupByText:'Group by this field',showGroupsText:'Show in groups',hideGroupedHeader:!1,
startCollapsed:!1,enableGroupingMenu:!0,enableNoGroups:!0,collapsible:!0,groupers:null,expandTip:'Click to expand. CTRL key collapses all others',collapseTip:'Click to collapse. CTRL/click collapses all others',showSummaryRow:!1,outerTpl:['{%','if (!(this.groupingFeature.disabled || values.rows.length \x3d\x3d\x3d 1 \x26\x26 values.rows[0].isSummary)) {','this.groupingFeature.setup(values.rows, values.view.rowValues);','}','this.nextTpl.applyOut(values, out, parent);','if (!(this.groupingFeature.disabled || values.rows.length \x3d\x3d\x3d 1 \x26\x26 values.rows[0].isSummary)) {',
'this.groupingFeature.cleanup(values.rows, values.view.rowValues);','}','%}',{priority:200}],groupRowTpl:['{%','var me \x3d this.groupingFeature,','colspan \x3d "colspan\x3d" + values.columns.length;','if (me.disabled || parent.rows.length \x3d\x3d\x3d 1 \x26\x26 parent.rows[0].isSummary) {','values.needsWrap \x3d false;','} else {','me.setupRowData(values.record, values.rowIndex, values);','}','%}','\x3ctpl if\x3d"needsWrap"\x3e','\x3ctpl if\x3d"isFirstRow"\x3e','{% values.view.renderColumnSizer(values, out); %}',
'\x3ctr data-boundView\x3d"{view.id}" data-recordId\x3d"{record.internalId:htmlEncode}" data-recordIndex\x3d"{[values.isCollapsedGroup ? -1 : values.recordIndex]}" class\x3d"{groupHeaderCls}"\x3e','\x3ctd class\x3d"{[me.ctCls]}" {[colspan]}\x3e','{%','var groupTitleStyle \x3d (!values.view.lockingPartner || (values.view.ownerCt \x3d\x3d\x3d values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length \x3d\x3d\x3d 0)) ? "" : "visibility:hidden";',
'%}','\x3cdiv data-groupname\x3d"{groupName:htmlEncode}" class\x3d"','x-','grid-group-hd {collapsibleCls}" nottabindex\x3d"0" hidefocus\x3d"on" {ariaCellInnerAttr}\x3e','\x3cdiv class\x3d"','x-','grid-group-title" style\x3d"{[groupTitleStyle]}" {ariaGroupTitleAttr} data-qtip\x3d"{[values.isCollapsedGroup ? me.expandTip : me.collapseTip]}"\x3e','{[values.groupHeaderTpl.apply(values.groupRenderInfo, parent) || "\x26#160;"]}','\x3c/div\x3e','\x3c/div\x3e','\x3c/td\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"!isCollapsedGroup"\x3e',
'{%','values.itemClasses.length \x3d 0;','this.nextTpl.applyOut(values, out, parent);','%}','\x3c/tpl\x3e','\x3ctpl if\x3d"summaryRecord"\x3e','{%me.outputSummaryRecord(values.summaryRecord, values, out, parent);%}','\x3c/tpl\x3e','\x3ctpl else\x3e','{%this.nextTpl.applyOut(values, out, parent);%}','\x3c/tpl\x3e',{priority:200,beginRowSync:function(rowSync){var groupingFeature=this.groupingFeature;rowSync.add('header',groupingFeature.eventSelector);rowSync.add('summary',groupingFeature.summaryRowSelector)},
syncContent:function(destRow,sourceRow,columnsToUpdate){destRow=Ext.fly(destRow,'syncDest');sourceRow=Ext.fly(sourceRow,'syncSrc');var groupingFeature=this.groupingFeature,destHd=destRow.down(groupingFeature.eventSelector,!0),sourceHd=sourceRow.down(groupingFeature.eventSelector,!0);destRow=destRow.down(groupingFeature.summaryRowSelector,!0);sourceRow=sourceRow.down(groupingFeature.summaryRowSelector,!0);destHd&&sourceHd&&Ext.fly(destHd).syncContent(sourceHd);destRow&&sourceRow&&(columnsToUpdate?
this.groupingFeature.view.updateColumns(destRow,sourceRow,columnsToUpdate):Ext.fly(destRow).syncContent(sourceRow))}}],relayedEvents:['groupcollapse','groupexpand'],init:function(grid){var view=this.view,store=this.getGridStore(),lockPartner,dataSource;view.isGrouping=store.isGrouped();this.mixins.summary.init.call(this);Ext.grid.feature.Feature.prototype.init.call(this,grid);view.headerCt.on({columnhide:this.onColumnHideShow,columnshow:this.onColumnHideShow,columnmove:this.onColumnMove,scope:this});
view.addTpl(Ext.XTemplate.getTpl(this,'outerTpl')).groupingFeature=this;view.addRowTpl(Ext.XTemplate.getTpl(this,'groupRowTpl')).groupingFeature=this;view.preserveScrollOnRefresh=!0;store.isBufferedStore?this.collapsible=!1:this.dataSource=(lockPartner=this.lockingPartner)&&lockPartner.dataSource?view.dataSource=dataSource=lockPartner.dataSource:view.dataSource=dataSource=new Ext.grid.feature.GroupStore(this,store);grid=grid.ownerLockable||grid;grid.on('beforereconfigure',this.beforeReconfigure,this);
view.isLockedView||(this.gridEventRelayers=grid.relayEvents(view,this.relayedEvents));view.on({afterrender:this.afterViewRender,scope:this,single:!0});this.groupRenderInfo={};if(dataSource)dataSource.on('groupchange',this.onGroupChange,this);else this.setupStoreListeners(store);this.mixins.summary.bindStore.call(this,grid,grid.getStore())},getGridStore:function(){return this.view.getStore()},indexOf:function(record){return record.isCollapsedPlaceholder?this.dataSource.indexOfPlaceholder(record):this.dataSource.indexOf(record)},
indexOfPlaceholder:function(record){return this.dataSource.indexOfPlaceholder(record)},isInCollapsedGroup:function(record){var result=!1,metaGroup;this.getGridStore().isGrouped()&&(metaGroup=this.getMetaGroup(record))&&(result=!(!metaGroup||!metaGroup.isCollapsed));return result},createCache:function(){var metaGroupCache=this.metaGroupCache={},lockingPartner=this.lockingPartner;lockingPartner&&(lockingPartner.metaGroupCache=metaGroupCache);return metaGroupCache},getCache:function(){return this.metaGroupCache||
this.createCache()},invalidateCache:function(){var lockingPartner=this.lockingPartner;this.metaGroupCache=null;lockingPartner&&(lockingPartner.metaGroupCache=null)},vetoEvent:function(record,row,rowIndex,e){if('mouseover'!==e.type&&'mouseout'!==e.type&&'mouseenter'!==e.type&&'mouseleave'!==e.type&&e.getTarget(this.eventSelector))return!1},enable:function(){var view=this.view,store=this.getGridStore(),currentGroupedHeader=this.hideGroupedHeader&&this.getGroupedHeader();view.isGrouping=!0;view.lockingPartner&&
(view.lockingPartner.isGrouping=!0);Ext.grid.feature.Feature.prototype.enable.call(this);this.lastGrouper&&(store.group(this.lastGrouper),this.lastGrouper=null);currentGroupedHeader&&currentGroupedHeader.hide();(view=this.view.headerCt.getMenu().down('#groupToggleMenuItem'))&&view.setChecked(!0,!0)},disable:function(){var view=this.view,store=this.getGridStore(),currentGroupedHeader=this.hideGroupedHeader&&this.getGroupedHeader(),lastGrouper=store.getGrouper();view.isGrouping=!1;view.lockingPartner&&
(view.lockingPartner.isGrouping=!1);Ext.grid.feature.Feature.prototype.disable.call(this);lastGrouper&&(this.lastGrouper=lastGrouper,store.clearGrouping());currentGroupedHeader&&currentGroupedHeader.show();if(view=this.view.headerCt.getMenu().down('#groupToggleMenuItem'))view.setChecked(!1,!0),view.disable()},afterViewRender:function(){this.view.on({scope:this,groupmousedown:this.onGroupMousedown,groupclick:this.onGroupClick});this.enableGroupingMenu&&this.injectGroupingMenu();this.pruneGroupedHeader();
this.lastGrouper=this.getGridStore().getGrouper();this.disabled&&this.disable()},injectGroupingMenu:function(){var headerCt=this.view.headerCt;headerCt.showMenuBy=this.showMenuBy;headerCt.getMenuItems=this.getMenuItems()},onColumnHideShow:function(headerOwnerCt,header){header=this.view;headerOwnerCt=header.headerCt.getMenu();var activeHeader=headerOwnerCt.activeHeader,groupMenuItem=headerOwnerCt.down('#groupMenuItem');headerOwnerCt=this.grid.getVisibleColumnManager().getColumns().length;activeHeader&&
groupMenuItem&&(activeHeader=!1===activeHeader.groupable||!activeHeader.dataIndex||2>this.view.headerCt.getVisibleGridColumns().length?'disable':'enable',groupMenuItem[activeHeader]());if(header.rendered&&headerOwnerCt)for(header=header.el.query('.'+this.ctCls),groupMenuItem=0,activeHeader=header.length;groupMenuItem<activeHeader;++groupMenuItem)header[groupMenuItem].colSpan=headerOwnerCt},onColumnMove:function(){var view=this.view,groupName,group;if(view.getStore().isGrouped()){var groupNames=this.getCache();
Ext.suspendLayouts();for(groupName in groupNames)if(group=this.getGroup(groupName)){groupNames=group.first();group=group.last();var metaGroup=this.getMetaGroup(groupName);metaGroup.isCollapsed&&(groupNames=group=this.dataSource.getGroupPlaceholder(groupName));view.refreshNode(groupNames);this.showSummaryRow&&group!==groupNames&&view.refreshNode(group)}Ext.resumeLayouts(!0)}},showMenuBy:function(clickEvent,t,header){var menu=this.getMenu(),groupMenuItem=menu.down('#groupMenuItem'),groupMenuMeth=!1===
header.groupable||!header.dataIndex||2>this.view.headerCt.getVisibleGridColumns().length?'disable':'enable';menu=menu.down('#groupToggleMenuItem');var isGrouped=this.grid.getStore().isGrouped();groupMenuItem[groupMenuMeth]();menu&&(menu.setChecked(isGrouped,!0),menu[isGrouped?'enable':'disable']());Ext.grid.header.Container.prototype.showMenuBy.apply(this,arguments)},getMenuItems:function(){var me=this,groupByText=me.groupByText,disabled=me.disabled||!me.getGroupField(),showGroupsText=me.showGroupsText,
enableNoGroups=me.enableNoGroups,getMenuItems=me.view.headerCt.getMenuItems;return function(){var o=getMenuItems.call(this);o.push('-',{iconCls:'x-group-by-icon',itemId:'groupMenuItem',text:groupByText,handler:me.onGroupMenuItemClick,scope:me});enableNoGroups&&o.push({itemId:'groupToggleMenuItem',text:showGroupsText,checked:!disabled,checkHandler:me.onGroupToggleMenuItemClick,scope:me});return o}},onGroupMenuItemClick:function(menuItem,e){menuItem=menuItem.parentMenu.activeHeader;e=this.view;var store=
this.getGridStore();this.disabled&&(this.lastGrouper=null,this.block(),this.enable(),this.unblock());e.isGrouping=!0;store.group(this.getGrouper(menuItem.dataIndex)||menuItem.dataIndex);this.pruneGroupedHeader()},block:function(fromPartner){this.blockRefresh=this.view.blockRefresh=!0;this.lockingPartner&&!fromPartner&&this.lockingPartner.block(!0)},unblock:function(fromPartner){this.blockRefresh=this.view.blockRefresh=!1;this.lockingPartner&&!fromPartner&&this.lockingPartner.unblock(!0)},onGroupToggleMenuItemClick:function(menuItem,
checked){this[checked?'enable':'disable']()},pruneGroupedHeader:function(){var header=this.getGroupedHeader();this.hideGroupedHeader&&header&&(Ext.suspendLayouts(),this.prunedHeader&&this.prunedHeader!==header&&this.prunedHeader.show(),this.prunedHeader=header,header.rendered&&header.hide(),Ext.resumeLayouts(!0))},getHeaderNode:function(groupName){var el=this.view.getEl(),len;if(el){el=el.query(this.eventSelector);var i=0;for(len=el.length;i<len;++i){var node=el[i];if(node.getAttribute('data-groupName')===
groupName)return node}}},getGroup:function(name){var store=this.getGridStore(),value=name;if(store.isGrouped()){name.isModel&&(name=name.get(store.getGroupField()));'string'!==typeof name&&(name=store.getGrouper().getGroupString(value));var group=store.getGroups().getByKey(name)}return group},getGrouper:function(dataIndex){var groupers=this.groupers;return groupers?Ext.Array.findBy(groupers,function(grouper){return grouper.property===dataIndex}):null},getGroupField:function(){return this.getGridStore().getGroupField()},
getMetaGroup:function(group){var metaGroupCache=this.metaGroupCache||this.createCache(),metaGroup;group.isModel&&(group=this.getGroup(group));null!=group&&(group='string'===typeof group?group:group.getGroupKey(),(metaGroup=metaGroupCache[group])||(metaGroup=metaGroupCache[group]={isCollapsed:!1,lastGroup:null,lastGroupGeneration:null,lastFilterGeneration:null,aggregateRecord:new Ext.data.Model}));return metaGroup},isExpanded:function(groupName){return!this.getMetaGroup(groupName).isCollapsed},expand:function(groupName,
options){this.doCollapseExpand(!1,groupName,options)},expandAll:function(){var metaGroupCache=this.getCache(),lockingPartner=this.lockingPartner,groupName;for(groupName in metaGroupCache)metaGroupCache.hasOwnProperty(groupName)&&(metaGroupCache[groupName].isCollapsed=!1);Ext.suspendLayouts();this.dataSource.onDataChanged();Ext.resumeLayouts(!0);for(groupName in metaGroupCache)metaGroupCache.hasOwnProperty(groupName)&&(this.afterCollapseExpand(!1,groupName),lockingPartner&&lockingPartner.afterCollapseExpand(!1,
groupName))},collapse:function(groupName,options){this.doCollapseExpand(!0,groupName,options)},isAllCollapsed:function(){var metaGroupCache=this.getCache(),groupName;for(groupName in metaGroupCache)if(metaGroupCache.hasOwnProperty(groupName)&&!metaGroupCache[groupName].isCollapsed)return!1;return!0},isAllExpanded:function(){var metaGroupCache=this.getCache(),groupName;for(groupName in metaGroupCache)if(metaGroupCache.hasOwnProperty(groupName)&&metaGroupCache[groupName].isCollapsed)return!1;return!0},
collapseAll:function(){var metaGroupCache=this.getCache(),groupName,lockingPartner=this.lockingPartner;for(groupName in metaGroupCache)metaGroupCache.hasOwnProperty(groupName)&&(metaGroupCache[groupName].isCollapsed=!0);Ext.suspendLayouts();this.dataSource.onDataChanged();Ext.resumeLayouts(!0);for(groupName in metaGroupCache)metaGroupCache.hasOwnProperty(groupName)&&(this.afterCollapseExpand(!0,groupName),lockingPartner&&lockingPartner.afterCollapseExpand(!0,groupName))},doCollapseExpand:function(collapsed,
groupName,options){var lockingPartner=this.lockingPartner,group=this.getGroup(groupName);!0===options&&(options={focus:!0});this.getMetaGroup(group).isCollapsed!==collapsed&&(this.isExpandingOrCollapsing=!0,Ext.suspendLayouts(),collapsed?this.dataSource.collapseGroup(group):this.dataSource.expandGroup(group),Ext.resumeLayouts(!0),this.afterCollapseExpand(collapsed,groupName,options),lockingPartner&&(options&&options.focus&&(options=Ext.Object.chain(options),options.focus=!1),lockingPartner.afterCollapseExpand(collapsed,
groupName,options)),this.isExpandingOrCollapsing=!1)},afterCollapseExpand:function(collapsed,groupName,options){var view=this.view;var header=this.getHeaderNode(groupName);view.fireEvent(collapsed?'groupcollapse':'groupexpand',view,header,groupName);options&&(collapsed?(options.focus=!1,collapsed=this.metaGroupCache[groupName].placeholder):collapsed=this.getGroup(groupName).getAt(0),this.grid.ensureVisible(collapsed,options))},onGroupChange:function(store,grouper){grouper?this.lastGrouper=grouper:
this.view.ownerGrid.getView().refreshView()},getMenuItem:function(dataIndex){var view=this.view;dataIndex=view.headerCt.down('gridcolumn[dataIndex\x3d'+dataIndex+']');view=view.headerCt.getMenu();return dataIndex?view.down('menuitem[headerId\x3d'+dataIndex.id+']'):null},onGroupKey:function(keyCode,event){if(keyCode=this.getGroupName(event.target))this.onGroupClick(this.view,event.target,keyCode,event)},onGroupMousedown:function(view,rowElement,groupName,e){'mouse'===e.pointerType&&e.preventDefault()},
onGroupClick:function(view,rowElement,groupName,e){view=this.getCache();rowElement=!this.isExpanded(groupName);var g;if(this.collapsible)if(e.ctrlKey){Ext.suspendLayouts();for(g in view)g===groupName?rowElement&&this.expand(groupName):view[g].isCollapsed||this.doCollapseExpand(!0,g,!1);Ext.resumeLayouts(!0)}else rowElement?this.expand(groupName):this.collapse(groupName)},setupRowData:function(record,idx,rowValues){var recordIndex=rowValues.recordIndex;idx=this.refreshData;this.getCache();var groupRenderInfo=
this.groupRenderInfo,header=idx.header,groupField=idx.groupField,store=this.getGridStore(),isBufferedStore=this.view.dataSource.isBufferedStore,column=this.grid.columnManager.getHeaderByDataIndex(groupField),hasRenderer=!(!column||!column.renderer),groupKey=record.groupKey,group=record.isCollapsedPlaceholder&&Ext.isDefined(groupKey)?this.getGroup(groupKey):record.group;rowValues.isCollapsedGroup=!1;rowValues.summaryRecord=rowValues.groupHeaderCls=null;if(idx.doGrouping){var grouper=store.getGrouper();
record.isCollapsedPlaceholder?(groupKey=group.getGroupKey(),recordIndex=group.items,rowValues.isFirstRow=rowValues.isLastRow=!0,rowValues.groupHeaderCls=this.hdCollapsedCls,rowValues.isCollapsedGroup=rowValues.needsWrap=!0,rowValues.groupName=groupKey,rowValues.groupRenderInfo=groupRenderInfo,groupRenderInfo.groupField=groupField,groupRenderInfo.name=groupRenderInfo.renderedGroupValue=hasRenderer?column.renderer(group.getAt(0).get(groupField),{},record):groupKey,groupRenderInfo.groupValue=recordIndex[0].get(groupField),
groupRenderInfo.columnName=header?header.text:groupField,rowValues.collapsibleCls=this.collapsible?this.collapsibleCls:this.hdNotCollapsibleCls,groupRenderInfo.rows=groupRenderInfo.children=recordIndex,this.showSummaryRow&&(rowValues.summaryRecord=idx.summaryData[groupKey])):(groupKey=grouper.getGroupString(record),group?(recordIndex=group.items,rowValues.isFirstRow=record===recordIndex[0],rowValues.isLastRow=record===recordIndex[recordIndex.length-1]):(rowValues.isFirstRow=0===recordIndex,!rowValues.isFirstRow&&
(group=store.getAt(recordIndex-1))&&(rowValues.isFirstRow=!group.isEqual(grouper.getGroupString(group),groupKey)),rowValues.isLastRow=recordIndex===(isBufferedStore?store.getTotalCount():store.getCount())-1,!rowValues.isLastRow&&(recordIndex=store.getAt(recordIndex+1))&&(rowValues.isLastRow=!recordIndex.isEqual(grouper.getGroupString(recordIndex),groupKey))),rowValues.isFirstRow&&(groupRenderInfo.groupField=groupField,groupRenderInfo.name=groupRenderInfo.renderedGroupValue=hasRenderer?column.renderer(record.get(groupField),
{},record):groupKey,groupRenderInfo.groupValue=record.get(groupField),groupRenderInfo.columnName=header?header.text:groupField,rowValues.collapsibleCls=this.collapsible?this.collapsibleCls:this.hdNotCollapsibleCls,rowValues.groupName=groupKey,this.isExpanded(groupKey)||(rowValues.itemClasses.push(this.hdCollapsedCls),rowValues.isCollapsedGroup=!0),groupRenderInfo.rows=isBufferedStore?groupRenderInfo.children=[]:groupRenderInfo.children=this.getRecordGroup(record).items,rowValues.groupRenderInfo=groupRenderInfo),
rowValues.isLastRow&&this.showSummaryRow&&(rowValues.summaryRecord=idx.summaryData[groupKey],rowValues.itemClasses.push('x-grid-group-last')),rowValues.needsWrap=rowValues.isFirstRow||rowValues.summaryRecord)}},setup:function(rows,rowValues){rows=this.refreshData;var view=rowValues.view,isGrouping=view.isGrouping=!this.disabled&&this.getGridStore().isGrouped(),bufferedRenderer=view.bufferedRenderer;this.skippedRows=0;bufferedRenderer&&(bufferedRenderer.variableRowHeight=view.hasVariableRowHeight()||
isGrouping);rows.groupField=this.getGroupField();rows.header=this.getGroupedHeader(rows.groupField);rows.doGrouping=isGrouping;rowValues.groupHeaderTpl=Ext.XTemplate.getTpl(this,'groupHeaderTpl');isGrouping&&this.showSummaryRow&&(rows.summaryData=this.generateSummaryData())},cleanup:function(rows,rowValues){rows=this.refreshData;rowValues.groupRenderInfo=rowValues.groupHeaderTpl=rowValues.isFirstRow=null;rows.groupField=rows.header=rows.summaryData=null},getAggregateRecord:function(metaGroup,forceNew){!0!==
forceNew&&metaGroup.aggregateRecord||(forceNew=new Ext.data.Model,metaGroup.aggregateRecord=forceNew,forceNew.isNonData=forceNew.isSummary=!0);return metaGroup.aggregateRecord},generateSummaryData:function(){var store=this.getGridStore(),filters=store.getFilters(),groups=store.getGroups().items;store.getProxy().getReader();var groupField=this.getGroupField(),lockingPartner=this.lockingPartner,updateSummaryRow=this.updateSummaryRow,data={},ownerCt=this.view.ownerCt,columnsChanged=this.didColumnsChange(),
len;if(this.remoteRoot){var remoteData=this.mixins.summary.generateSummaryData.call(this,groupField);var hasRemote=!!remoteData}groupField=0;for(len=groups.length;groupField<len;++groupField){var group=groups[groupField];var metaGroup=this.getMetaGroup(group);if(updateSummaryRow||hasRemote||store.updating||this.grid.reconfiguring||columnsChanged||this.didGroupChange(group,metaGroup,filters)){var record=this.populateRecord(group,metaGroup,remoteData);lockingPartner&&ownerCt!==ownerCt.ownerLockable.normalGrid||
(metaGroup.lastGroup=group,metaGroup.lastGroupGeneration=group.generation,metaGroup.lastFilterGeneration=filters.generation)}else record=this.getAggregateRecord(metaGroup);data[group.getGroupKey()]=record}this.updateSummaryRow=!1;return data},getGroupName:function(element){var view=this.view,eventSelector=this.eventSelector;var targetEl=Ext.fly(element).findParent(eventSelector);targetEl||(element=Ext.fly(element).findParent(view.itemSelector))&&(targetEl=element.down(eventSelector,!0));if(targetEl)return targetEl.getAttribute('data-groupname')},
getRecordGroup:function(record){var store=this.getGridStore(),grouper=store.getGrouper();if(grouper)return store.getGroups().getByKey(grouper.getGroupString(record))},getGroupedHeader:function(groupField){var headerCt=this.view.headerCt,partner=this.lockingPartner;if(groupField=groupField||this.getGroupField()){groupField='[dataIndex\x3d'+groupField+']';var header=headerCt.down(groupField);!header&&partner&&(header=partner.view.headerCt.down(groupField))}return header||null},getFireEventArgs:function(type,
view,targetEl,e){return[type,view,targetEl,this.getGroupName(targetEl),e]},destroy:function(){var dataSource=this.dataSource;Ext.destroy(this.gridEventRelayers);this.gridEventRelayers=null;this.storeListeners=Ext.destroy(this.storeListeners);this.view=this.prunedHeader=this.grid=this.dataSource=this.groupers=null;this.invalidateCache();dataSource&&!dataSource.destroyed&&(dataSource.bindStore(null),Ext.destroy(dataSource));Ext.grid.feature.Feature.prototype.destroy.call(this)},beforeReconfigure:function(grid,
store,columns,oldStore,oldColumns){grid=this.view;columns=this.dataSource;store&&store!==oldStore&&(oldColumns=store.isBufferedStore,columns||(Ext.destroy(this.storeListeners),this.setupStoreListeners(store)),oldColumns!==oldStore.isBufferedStore&&Ext.raise('Cannot reconfigure grouping switching between buffered and non-buffered stores'),grid.isGrouping=!!store.getGrouper(),columns.bindStore(store))},populateRecord:function(group,metaGroup,remoteData){var view=this.grid.ownerLockable?this.grid.ownerLockable.view:
this.view,store=this.getGridStore();metaGroup=this.getAggregateRecord(metaGroup);view=view.headerCt.getGridColumns();var len=view.length,groupName=group.getGroupKey(),field;metaGroup.beginEdit();if(remoteData){var groupData=remoteData[groupName];for(field in groupData)groupData.hasOwnProperty(field)&&field!==metaGroup.idProperty&&metaGroup.set(field,groupData[field])}for(field=0;field<len;++field){groupData=view[field];var fieldName=groupData.dataIndex||groupData.getItemId();if(remoteData)var summaryValue=
metaGroup.get(groupData.dataIndex);else summaryValue=this.getSummary(store,groupData.summaryType,fieldName,group),metaGroup.set(fieldName,summaryValue);this.setSummaryData(metaGroup,groupData.getItemId(),summaryValue,groupName)}metaGroup.ownerGroup=groupName;metaGroup.endEdit(!0);metaGroup.commit();return metaGroup},privates:{didGroupChange:function(group,metaGroup,filters){var ret=!0;group===metaGroup.lastGroup&&(ret=metaGroup.lastGroupGeneration!==group.generation||metaGroup.lastFilterGeneration!==
filters.generation);return ret},didColumnsChange:function(){var result=this.view.headerCt.items.generation!==this.lastHeaderCtGeneration;this.lastHeaderCtGeneration=this.view.headerCt.items.generation;return result},setupStoreListeners:function(store){this.storeListeners=store.on({groupchange:this.onGroupChange,scope:this,destroyable:!0})}}},0,0,0,0,['feature.grouping'],[['summary',Ext.grid.feature.AbstractSummary]],[Ext.grid.feature,'Grouping'],0);
Ext.cmd.derive('Ext.menu.Item',Ext.Component,{alternateClassName:'Ext.menu.TextItem',isMenuItem:!0,config:{glyph:null},activated:!1,activeCls:'x-menu-item-active',clickHideDelay:0,destroyMenu:!0,disabledCls:'x-menu-item-disabled',hideOnClick:!0,menuAlign:'tl-tr?',menuExpandDelay:200,menuHideDelay:200,tooltipType:'qtip',focusable:!0,ariaRole:'menuitem',ariaEl:'itemEl',baseCls:'x-menu-item',arrowCls:'x-menu-item-arrow',baseIconCls:'x-menu-item-icon',textCls:'x-menu-item-text',indentCls:'x-menu-item-indent',
indentNoSeparatorCls:'x-menu-item-indent-no-separator',indentRightIconCls:'x-menu-item-indent-right-icon',indentRightArrowCls:'x-menu-item-indent-right-arrow',linkCls:'x-menu-item-link',linkHrefCls:'x-menu-item-link-href',childEls:['itemEl','iconEl','textEl','arrowEl'],renderTpl:'\x3ctpl if\x3d"plain"\x3e{text}\x3ctpl else\x3e\x3ca id\x3d"{id}-itemEl" data-ref\x3d"itemEl" class\x3d"{linkCls}\x3ctpl if\x3d"hasHref"\x3e {linkHrefCls}\x3c/tpl\x3e{childElCls}" href\x3d"{href}" \x3ctpl if\x3d"hrefTarget"\x3e target\x3d"{hrefTarget}"\x3c/tpl\x3e hidefocus\x3d"true" unselectable\x3d"on"\x3ctpl if\x3d"tabIndex !\x3d null"\x3e tabindex\x3d"{tabIndex}"\x3c/tpl\x3e\x3ctpl foreach\x3d"ariaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e\x3e\x3cspan id\x3d"{id}-textEl" data-ref\x3d"textEl" class\x3d"{textCls} {textCls}-{ui} {indentCls}{childElCls}" unselectable\x3d"on" role\x3d"presentation"\x3e{text}\x3c/span\x3e\x3ctpl if\x3d"hasIcon"\x3e\x3cdiv role\x3d"presentation" id\x3d"{id}-iconEl" data-ref\x3d"iconEl" class\x3d"{baseIconCls}-{ui} {baseIconCls}{[values.rightIcon ? "-right" : ""]} {iconCls}{childElCls} {glyphCls}" style\x3d"\x3ctpl if\x3d"icon"\x3ebackground-image:url({icon});\x3c/tpl\x3e\x3ctpl if\x3d"glyph"\x3e\x3ctpl if\x3d"glyphFontFamily"\x3efont-family:{glyphFontFamily};\x3c/tpl\x3e"\x3e{glyph}\x3ctpl else\x3e"\x3e\x3c/tpl\x3e\x3c/div\x3e\x3c/tpl\x3e\x3ctpl if\x3d"showCheckbox"\x3e\x3cdiv role\x3d"presentation" id\x3d"{id}-checkEl" data-ref\x3d"checkEl" class\x3d"{baseIconCls}-{ui} {baseIconCls}{[(values.hasIcon \x26\x26 !values.rightIcon) ? "-right" : ""]} {groupCls} {checkboxCls}{childElCls}"\x3e\x3c/div\x3e\x3c/tpl\x3e\x3ctpl if\x3d"hasMenu"\x3e\x3cdiv role\x3d"presentation" id\x3d"{id}-arrowEl" data-ref\x3d"arrowEl" class\x3d"{arrowCls} {arrowCls}-{ui}{childElCls}"\x3e\x3c/div\x3e\x3c/tpl\x3e\x3c/a\x3e\x3c/tpl\x3e',
autoEl:{role:'presentation'},maskOnDisable:!1,iconAlign:'left',initComponent:function(){var cls=this.cls?[this.cls]:[];this.hasOwnProperty('canActivate')&&(this.focusable=this.canActivate);this.plain&&cls.push('x-menu-item-plain');cls.length&&(this.cls=cls.join(' '));this.menu&&(cls=this.menu,this.menu=null,this.setMenu(cls));Ext.Component.prototype.initComponent.apply(this,arguments)},canFocus:function(){return this.focusable&&this.rendered&&!1!==this.canActivate&&!this.destroying&&!this.destroyed&&
this.isVisible(!0)},onFocus:function(e){Ext.Component.prototype.onFocus.call(this,e);this.plain||this.addCls(this.activeCls);this.activated=!0;this.hasListeners.activate&&this.fireEvent('activate',this)},onFocusLeave:function(e){Ext.Component.prototype.onFocusLeave.call(this,e);this.plain||this.removeCls(this.activeCls);this.doHideMenu();this.activated=!1;this.hasListeners.deactivate&&this.fireEvent('deactivate',this)},doHideMenu:function(){var menu=this.menu;this.cancelDeferExpand();menu&&menu.isVisible()&&
menu.hide()},deferHideParentMenus:function(){for(var menu=this.getRefOwner();menu&&(menu.isMenu&&menu.floating||menu.isMenuItem);menu=menu.getRefOwner())menu.isMenu&&menu.hide()},expandMenu:function(event,delay){!this.disabled&&this.activated&&this.menu&&(this.hideOnClick=!1,this.cancelDeferHide(),delay=null==delay?this.menuExpandDelay:delay,0===delay?this.doExpandMenu(event):(this.cancelDeferExpand(),this.expandMenuTimer=Ext.defer(this.doExpandMenu,delay,this,[event])))},doExpandMenu:function(clickEvent){var menu=
this.menu;menu.isVisible()?clickEvent&&'keydown'===clickEvent.type&&menu.focus():(this.parentMenu.activeChild=menu,menu.ownerCmp=this,menu.parentMenu=this.parentMenu,menu.constrainTo=document.body,menu.autoFocus=!clickEvent||!clickEvent.pointerType,menu.showBy(this,this.menuAlign))},getRefItems:function(deep){var menu=this.menu;if(menu){var items=menu.getRefItems(deep);items.unshift(menu)}return items||[]},getValue:function(){return this.value},hideMenu:function(delay){this.menu&&(this.cancelDeferExpand(),
this.hideMenuTimer=Ext.defer(this.doHideMenu,Ext.isNumber(delay)?delay:this.menuHideDelay,this))},onClick:function(e){var clickHideDelay=this.clickHideDelay,browserEvent=e.browserEvent;if(!this.href||this.disabled)if(e.stopEvent(),this.disabled)return!1;if(!(this.disabled||this.handlingClick||(this.hideOnClick&&!this.menu&&(clickHideDelay?this.deferHideParentMenusTimer=Ext.defer(this.deferHideParentMenus,clickHideDelay,this):this.deferHideParentMenus()),clickHideDelay=this.fireEvent('click',this,
e),this.destroyed||(!1!==clickHideDelay&&this.handler&&Ext.callback(this.handler,this.scope,[this,e],0,this),this.destroyed))))return browserEvent=Ext.isIE9m?!1===browserEvent.returnValue?!0:!1:!!browserEvent.defaultPrevented,this.href&&'click'!==e.type&&!browserEvent&&(this.handlingClick=!0,this.itemEl.dom.click(),this.handlingClick=!1),this.hideOnClick||this.hasFocus||this.focus(),clickHideDelay},onRemoved:function(){this.activated&&this.parentMenu.activeItem===this&&this.parentMenu.deactivateActiveItem();
Ext.Component.prototype.onRemoved.apply(this,arguments);this.parentMenu=this.ownerCmp=null},doDestroy:function(){this.rendered&&this.clearTip();this.cancelDeferExpand();this.cancelDeferHide();clearTimeout(this.deferHideParentMenusTimer);this.setMenu(null);Ext.Component.prototype.doDestroy.call(this)},beforeRender:function(){var glyph=this.glyph,hasIcon=!!(this.icon||this.iconCls||glyph),hasMenu=!!this.menu,rightIcon='right'===this.iconAlign&&!hasMenu,isCheckItem=this.isMenuCheckItem,indentCls=[],
ownerCt=this.ownerCt,isOwnerPlain=ownerCt.plain;this.plain&&(this.ariaEl='el');Ext.Component.prototype.beforeRender.call(this);hasIcon&&hasMenu&&this.showCheckbox&&(hasIcon=!1);if(glyph){var glyphFontFamily=glyph.fontFamily;glyph=glyph.character}if(!isOwnerPlain||hasIcon&&!rightIcon||isCheckItem)ownerCt.showSeparator&&!isOwnerPlain?indentCls.push(this.indentCls):indentCls.push(this.indentNoSeparatorCls);hasMenu?indentCls.push(this.indentRightArrowCls):hasIcon&&(rightIcon||isCheckItem)&&indentCls.push(this.indentRightIconCls);
Ext.applyIf(this.renderData,{hasHref:!!this.href,href:this.href||'#',hrefTarget:this.hrefTarget,icon:this.icon,iconCls:this.iconCls,glyph:glyph,glyphCls:glyph?'x-menu-item-glyph':void 0,glyphFontFamily:glyphFontFamily,hasIcon:hasIcon,hasMenu:hasMenu,indent:!isOwnerPlain||hasIcon||isCheckItem,isCheckItem:isCheckItem,rightIcon:rightIcon,plain:this.plain,text:this.text,arrowCls:this.arrowCls,baseIconCls:this.baseIconCls,textCls:this.textCls,indentCls:indentCls.join(' '),linkCls:this.linkCls,linkHrefCls:this.linkHrefCls,
groupCls:this.group?this.groupCls:'',tabIndex:this.tabIndex})},onRender:function(){Ext.Component.prototype.onRender.apply(this,arguments);this.tooltip&&this.setTooltip(this.tooltip,!0)},getMenu:function(){return this.menu||null},setMenu:function(menu,destroyMenu){var oldMenu=this.menu,arrowEl=this.arrowEl,ariaDom=this.ariaEl.dom;oldMenu&&(oldMenu.ownerCmp=oldMenu.parentMenu=null,(!0===destroyMenu||!1!==destroyMenu&&this.destroyMenu)&&Ext.destroy(oldMenu),ariaDom?(ariaDom.removeAttribute('aria-haspopup'),
ariaDom.removeAttribute('aria-owns')):(destroyMenu=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),delete destroyMenu['aria-haspopup'],delete destroyMenu['aria-owns']));menu?(destroyMenu=menu.isMenu,menu=this.menu=Ext.menu.Manager.get(menu,{ownerCmp:this,focusOnToFront:!1}),menu.setOwnerCmp(this,destroyMenu),ariaDom?(ariaDom.setAttribute('aria-haspopup',!0),ariaDom.setAttribute('aria-owns',menu.id)):(destroyMenu=this.ariaRenderAttributes||(this.ariaRenderAttributes={}),destroyMenu['aria-haspopup']=
!0,destroyMenu['aria-owns']=menu.id)):menu=this.menu=null;if(menu&&this.rendered&&!this.destroying&&arrowEl)arrowEl[menu?'addCls':'removeCls'](this.arrowCls)},setHandler:function(fn,scope){this.handler=fn||null;this.scope=scope},setIcon:function(icon){var iconEl=this.iconEl,oldIcon=this.icon;this.glyph&&this.setGlyph(null);iconEl&&iconEl.setStyle('background-image',icon?'url('+icon+')':'');this.icon=icon;this.fireEvent('iconchange',this,oldIcon,icon)},setIconCls:function(iconCls){var iconEl=this.iconEl,
oldCls=this.iconCls;this.glyph&&this.setGlyph(null);iconEl&&(iconEl.setStyle('background-image',''),this.iconCls&&iconEl.removeCls(this.iconCls),iconCls&&iconEl.addCls(iconCls));this.iconCls=iconCls;this.fireEvent('iconchange',this,oldCls,iconCls)},setText:function(text){var el=this.textEl||this.el,oldText=this.text;this.text=text;this.rendered&&(el.setHtml(text||''),this.updateLayout());this.fireEvent('textchange',this,oldText,text)},getTipAttr:function(){return'qtip'===this.tooltipType?'data-qtip':
'title'},clearTip:function(){Ext.quickTipsActive&&Ext.isObject(this.tooltip)&&Ext.tip.QuickTipManager.unregister(this.itemEl)},setTooltip:function(tooltip,initial){this.rendered?(initial||this.clearTip(),Ext.quickTipsActive&&Ext.isObject(tooltip)?(Ext.tip.QuickTipManager.register(Ext.apply({target:this.itemEl.id},tooltip)),this.tooltip=tooltip):this.itemEl.dom.setAttribute(this.getTipAttr(),tooltip)):this.tooltip=tooltip;return this},getFocusEl:function(){return this.plain?this.el:this.itemEl},getFocusClsEl:function(){return this.el},
privates:{cancelDeferExpand:function(){window.clearTimeout(this.expandMenuTimer)},cancelDeferHide:function(){window.clearTimeout(this.hideMenuTimer)}},applyGlyph:function(glyph,oldGlyph){glyph&&(glyph.isGlyph||(glyph=new Ext.Glyph(glyph)),glyph.isEqual(oldGlyph)&&(glyph=void 0));return glyph},updateGlyph:function(glyph,oldGlyph){if(oldGlyph=this.iconEl)oldGlyph.setStyle('background-image','none'),this.icon=null,glyph?(oldGlyph.dom.innerHTML=glyph.character,oldGlyph.setStyle(glyph.getStyle())):oldGlyph.dom.innerHTML=
''}},0,['menuitem'],['component','box','menuitem'],{component:!0,box:!0,menuitem:!0},['widget.menuitem'],[[Ext.mixin.Queryable.prototype.mixinId||Ext.mixin.Queryable.$className,Ext.mixin.Queryable]],[Ext.menu,'Item',Ext.menu,'TextItem'],0);
Ext.cmd.derive('Ext.menu.CheckItem',Ext.menu.Item,{checkedCls:'x-menu-item-checked',uncheckedCls:'x-menu-item-unchecked',groupCls:'x-menu-group-icon',hideOnClick:!1,checkChangeDisabled:!1,submenuText:'{0} submenu',ariaRole:'menuitemcheckbox',childEls:['checkEl'],defaultBindProperty:'checked',showCheckbox:!0,isMenuCheckItem:!0,checkboxCls:'x-menu-item-checkbox',initComponent:function(){this.checked=!!this.checked;Ext.menu.Item.prototype.initComponent.apply(this,arguments);this.group&&(Ext.menu.Manager.registerCheckable(this),
!1!==this.initialConfig.hideOnClick&&(this.hideOnClick=!0))},beforeRender:function(){Ext.menu.Item.prototype.beforeRender.call(this);Ext.apply(this.renderData,{checkboxCls:this.checkboxCls,showCheckbox:this.showCheckbox});var ariaAttr=this.ariaRenderAttributes||(this.ariaRenderAttributes={});ariaAttr['aria-checked']=this.menu?'mixed':this.checked;this.menu&&(ariaAttr['aria-label']=Ext.String.formatEncode(this.submenuText,this.text))},afterRender:function(){Ext.menu.Item.prototype.afterRender.call(this);
this.checked=!this.checked;this.setChecked(!this.checked,!0);this.checkChangeDisabled&&this.disableCheckChange();if(Ext.isGecko&&this.checkEl)this.checkEl.on('mousedown',this.onMouseDownCheck)},disableCheckChange:function(){var checkEl=this.checkEl;checkEl&&checkEl.addCls(this.disabledCls);Ext.isIE8&&this.rendered&&this.el.repaint();this.checkChangeDisabled=!0},enableCheckChange:function(){var checkEl=this.checkEl;checkEl&&checkEl.removeCls(this.disabledCls);this.checkChangeDisabled=!1},onMouseDownCheck:function(e){e.preventDefault()},
onClick:function(e){if(!(this.disabled||this.checkChangeDisabled||this.checked&&this.group||this.menu&&'touch'===e.pointerType&&!this.checkEl.contains(e.target))&&(this.setChecked(!this.checked),'keydown'===e.type&&this.menu))return!1;Ext.menu.Item.prototype.onClick.call(this,e)},doDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);Ext.menu.Item.prototype.doDestroy.call(this)},setText:function(text){var ariaDom=this.ariaEl.dom;Ext.menu.Item.prototype.setText.call(this,text);ariaDom&&this.menu&&
ariaDom.setAttribute('aria-label',Ext.String.formatEncode(this.submenuText,text))},setChecked:function(checked,suppressEvents){var checkedCls=this.checkedCls,uncheckedCls=this.uncheckedCls,el=this.el,ariaDom=this.ariaEl.dom;this.checked===checked||!suppressEvents&&!1===this.fireEvent('beforecheckchange',this,checked)||(el&&(checked?(el.addCls(checkedCls),el.removeCls(uncheckedCls)):(el.addCls(uncheckedCls),el.removeCls(checkedCls))),ariaDom&&ariaDom.setAttribute('aria-checked',this.menu?'mixed':!!checked),
this.checked=checked,Ext.menu.Manager.onCheckChange(this,checked),this.publishState('checked',checked),suppressEvents||(Ext.callback(this.checkHandler,this.scope,[this,checked],0,this),this.fireEvent('checkchange',this,checked)))}},0,['menucheckitem'],['component','box','menuitem','menucheckitem'],{component:!0,box:!0,menuitem:!0,menucheckitem:!0},['widget.menucheckitem'],0,[Ext.menu,'CheckItem'],0);
Ext.cmd.derive('Ext.menu.Separator',Ext.menu.Item,{focusable:!1,canActivate:!1,hideOnClick:!1,plain:!0,separatorCls:'x-menu-item-separator',text:'\x26#160;',ariaRole:'separator',beforeRender:function(){this.addCls(this.separatorCls);Ext.menu.Item.prototype.beforeRender.call(this)}},0,['menuseparator'],['component','box','menuitem','menuseparator'],{component:!0,box:!0,menuitem:!0,menuseparator:!0},['widget.menuseparator'],0,[Ext.menu,'Separator'],0);
Ext.define('Ext.theme.neptune.menu.Separator',{override:'Ext.menu.Separator',border:!0});
Ext.cmd.derive('Ext.menu.Menu',Ext.panel.Panel,{defaultType:'menuitem',enableKeyNav:!0,allowOtherMenus:!1,ariaRole:'menu',floating:!0,constrain:!0,hidden:!0,hideMode:'visibility',ignoreParentClicks:!1,mouseLeaveDelay:100,isMenu:!0,showSeparator:!0,minWidth:void 0,defaultMinWidth:120,defaultAlign:'tl-bl?',focusOnToFront:!1,bringParentToFront:!1,alignOnScroll:!1,focusable:!0,tabIndex:-1,defaultFocus:':focusable',allowFocusingDisabledChildren:!0,menuClickBuffer:0,baseCls:'x-menu',_iconSeparatorCls:'x-menu-icon-separator',
_itemCmpCls:'x-menu-item-cmp',layout:{type:'vbox',align:'stretchmax',overflowHandler:'Scroller'},initComponent:function(){var cls=['x-menu'],bodyCls=this.bodyCls?[this.bodyCls]:[],isFloating=!1!==this.floating,listeners={element:'el',click:this.onClick,mouseover:this.onMouseOver,scope:this};Ext.supports.Touch&&(listeners.pointerdown=this.onMouseOver);this.on(listeners);this.on({beforeshow:this.onBeforeShow,scope:this});this.plain&&cls.push('x-menu-plain');this.cls=cls.join(' ');bodyCls.push('x-menu-body',
Ext.dom.Element.unselectableCls);this.bodyCls=bodyCls.join(' ');isFloating?void 0===this.minWidth&&(this.minWidth=this.defaultMinWidth):(this.hidden=!!this.initialConfig.hidden,this.constrain=!1);Ext.panel.Panel.prototype.initComponent.apply(this,arguments);Ext.override(this.getLayout(),{configureItem:this.configureItem});this.itemOverTask=new Ext.util.DelayedTask(this.handleItemOver,this)},initFloatConstrain:Ext.emptyFn,getInherited:function(){var result=Ext.panel.Panel.prototype.getInherited.call(this);
this.floating&&(result.hidden=this.hidden);return result},beforeRender:function(){Ext.panel.Panel.prototype.beforeRender.apply(this,arguments);this.getSizeModel().width.shrinkWrap||(this.layout.align='stretch');this.floating&&(this.ariaRenderAttributes=this.ariaRenderAttributes||{},this.ariaRenderAttributes['aria-expanded']=!!this.autoShow)},onBoxReady:function(){var iconSeparatorCls=this._iconSeparatorCls,keyNav=this.focusableKeyNav;keyNav?(keyNav.map.processEventScope=this,keyNav.map.processEvent=
function(e){e.keyCode===e.ESC&&(e.target=this.el.dom);return e},keyNav.map.addBinding([{key:Ext.event.Event.ESC,handler:this.onEscapeKey,scope:this},{key:/[\w]/,handler:this.onShortcutKey,scope:this,shift:!1,ctrl:!1,alt:!1}])):this.escapeKeyNav=new Ext.util.KeyNav(this.el,{eventName:'keydown',scope:this,esc:this.onEscapeKey});Ext.panel.Panel.prototype.onBoxReady.apply(this,arguments);this.showSeparator&&(this.iconSepEl=this.body.insertFirst({role:'presentation',cls:iconSeparatorCls+' '+iconSeparatorCls+
'-'+this.ui,html:'\x26#160;'}));if(Ext.supports.Touch||Ext.supports.MSPointerEvents||Ext.supports.PointerEvents)this.el.on({scope:this,click:this.preventClick,translate:!1});this.mouseMonitor=this.el.monitorMouseLeave(this.mouseLeaveDelay,this.onMouseLeave,this)},onFocusEnter:function(e){Ext.panel.Panel.prototype.onFocusEnter.call(this,e);this.mixins.focusablecontainer.onFocusEnter.call(this,e);if(this.floating){var hierarchyState=this.getInherited();hierarchyState.topmostFocusEvent||(hierarchyState.topmostFocusEvent=
e)}},onFocusLeave:function(e){Ext.panel.Panel.prototype.onFocusLeave.call(this,e);this.lastFocusedChild=null;this.mixins.focusablecontainer.onFocusLeave.call(this,e);this.floating&&this.hide()},handleItemOver:function(e,item){item.containsFocus||'mouse'!==e.pointerType&&!item.isMenuItem||item.focus();item.expandMenu&&item.expandMenu(e)},canActivateItem:function(item){return item&&item.isFocusable()},deactivateActiveItem:function(){var activeItem=this.lastFocusedChild;activeItem&&activeItem.blur()},
getItemFromEvent:function(e){var renderTarget=this.layout.getRenderTarget().dom;for(e=e.getTarget();e.parentNode!==renderTarget;)if(e=e.parentNode,!e)return;return Ext.getCmp(e.id)},lookupComponent:function(cmp){'string'===typeof cmp?cmp='@'===cmp[0]?Ext.panel.Panel.prototype.lookupComponent.call(this,cmp):this.lookupItemFromString(cmp):Ext.isObject(cmp)&&(cmp=this.lookupItemFromObject(cmp));cmp.dock||(cmp.minWidth=cmp.minWidth||this.minWidth);return cmp},lookupItemFromObject:function(cmp){var type=
this.defaultType;cmp.isComponent||(!cmp.xtype&&Ext.isBoolean(cmp.checked)&&(type='menucheckitem'),cmp=Ext.ComponentManager.create(cmp,type));cmp.isMenuItem&&(cmp.parentMenu=this);return cmp},lookupItemFromString:function(cmp){return'separator'===cmp||'-'===cmp?new Ext.menu.Separator:new Ext.menu.Item({canActivate:!1,hideOnClick:!1,plain:!0,text:cmp})},configureItem:function(cmp){var me=this.owner,ui=me.ui;if(cmp.isMenuItem)cmp.setUI(ui);else if(1<me.items.getCount()&&!cmp.rendered&&!cmp.dock){var cls=
me._itemCmpCls;cls=[cls+' '+cls+'-'+ui];me.plain||!1===cmp.indent&&'no-icon'!==cmp.iconCls||cls.push('x-menu-item-indent-'+ui);cmp.rendered?cmp.el.addCls(cls):cmp.cls=(cmp.cls||'')+' '+cls.join(' ');cmp.$extraMenuCls=cls}this.callParent(arguments)},onRemove:function(cmp){Ext.panel.Panel.prototype.onRemove.call(this,cmp);!cmp.destroyed&&cmp.$extraMenuCls&&cmp.el.removeCls(cmp.$extraMenuCls)},onClick:function(e){var item,clickResult,iskeyEvent='keydown'===e.type;if(this.disabled)e.stopEvent();else{if((item=
this.getItemFromEvent(e))&&item.isMenuItem){item.menu&&this.ignoreParentClicks?e.stopEvent():clickResult=item.onClick(e);if(this.destroyed)return;item.menu&&!1!==clickResult&&iskeyEvent&&item.expandMenu(e,0)}if(!item||item.disabled)item=void 0;this.fireEvent('click',this,item,e)}},doDestroy:function(){this.escapeKeyNav&&this.escapeKeyNav.destroy();this.parentMenu=this.ownerCmp=this.escapeKeyNav=null;this.rendered&&(this.el.un(this.mouseMonitor),Ext.destroy(this.iconSepEl));Ext.menu.Manager.onHide(this);
Ext.panel.Panel.prototype.doDestroy.call(this)},onMouseLeave:function(e){this.itemOverTask&&this.itemOverTask.cancel();this.disabled||this.fireEvent('mouseleave',this,e)},onMouseOver:function(e){var fromEl=e.getRelatedTarget();fromEl=!this.el.contains(fromEl);var item=this.getItemFromEvent(e),parentMenu=this.parentMenu,ownerCmp=this.ownerCmp;fromEl&&parentMenu&&(parentMenu.setActiveItem(ownerCmp),ownerCmp.cancelDeferHide(),parentMenu.mouseMonitor.mouseenter(),parentMenu.itemOverTask.cancel());this.disabled||
(item&&this.itemOverTask.delay(this.mouseLeaveDelay,null,null,[e,item]),fromEl&&this.fireEvent('mouseenter',this,e),this.fireEvent('mouseover',this,item,e))},setActiveItem:function(item){item&&item!==this.lastFocusedChild&&this.focusChild(item,1)},onEscapeKey:function(){this.floating&&this.hide()},onShortcutKey:function(keyCode,e){keyCode=String.fromCharCode(e.getCharCode());e=this.query('\x3e[text]');var len=e.length,item=this.lastFocusedChild,focusIndex=Ext.Array.indexOf(e,item),i=focusIndex;if(0!==
len)for(;;){++i===len&&(i=0);item=e[i];if(i===focusIndex)break;if(item.text&&item.text[0].toUpperCase()===keyCode){item.focus();break}}},onBeforeShow:function(){if(Ext.Date.getElapsed(this.lastHide)<this.menuClickBuffer)return!1},beforeShow:function(){var parent;this.floating&&((parent=this.hasFloatMenuParent())||this.allowOtherMenus||Ext.menu.Manager.hideAll());Ext.panel.Panel.prototype.beforeShow.apply(this,arguments)},afterShow:function(){var ariaDom=this.ariaEl.dom;Ext.panel.Panel.prototype.afterShow.apply(this,
arguments);Ext.menu.Manager.onShow(this);this.floating&&ariaDom&&ariaDom.setAttribute('aria-expanded',!0);this.floating&&(this.maxHeight=this.savedMaxHeight);this.autoFocus&&this.focus()},onHide:function(animateTarget,cb,scope){var ariaDom=this.ariaEl.dom;Ext.panel.Panel.prototype.onHide.call(this,animateTarget,cb,scope);this.lastHide=Ext.Date.now();Ext.menu.Manager.onHide(this);this.floating&&ariaDom&&ariaDom.setAttribute('aria-expanded',!1)},afterHide:function(cb,scope){Ext.panel.Panel.prototype.afterHide.call(this,
cb,scope);delete this.getInherited().topmostFocusEvent},preventClick:function(e){var item=this.getItemFromEvent(e);item&&item.isMenuItem&&!item.href&&e.preventDefault()},privates:{applyDefaults:function(config){Ext.isString(config)||(config=Ext.panel.Panel.prototype.applyDefaults.apply(this,arguments));return config},initFocusableElement:function(){var tabIndex=this.tabIndex,el=this.el;this.floating&&null!=tabIndex&&el&&el.dom&&(el.dom.setAttribute('tabIndex',tabIndex),el.dom.setAttribute('data-componentid',
this.id))},onFocusableContainerTabKey:function(e){this.floating&&(e.shiftKey?e.preventDefault():this.focusEnterEvent=this.getInherited().topmostFocusEvent,this.hide())},onFocusableContainerEnterKey:function(e){this.onClick(e)},onFocusableContainerSpaceKey:function(e){this.onClick(e)},onFocusableContainerLeftKey:function(e){e.preventDefault();this.parentMenu&&(this.ownerCmp.focus(),this.hide())},onFocusableContainerRightKey:function(e){var focusItem=this.lastFocusedChild;e.preventDefault();focusItem&&
focusItem.expandMenu&&focusItem.expandMenu(e,0)},hasFloatMenuParent:function(){return this.parentMenu||this.up('menu[floating\x3dtrue]')},setOwnerCmp:function(comp,instanced){this.parentMenu=comp.isMenuItem?comp:null;this.ownerCmp=comp;this.registerWithOwnerCt();delete this.hierarchicallyHidden;this.onInheritedAdd(comp,instanced);this.containerOnAdded(comp,instanced)}}},0,['menu'],['component','box','container','panel','menu'],{component:!0,box:!0,container:!0,panel:!0,menu:!0},['widget.menu'],[[Ext.util.FocusableContainer.prototype.mixinId||
Ext.util.FocusableContainer.$className,Ext.util.FocusableContainer]],[Ext.menu,'Menu'],0);Ext.define('Ext.theme.neptune.menu.Menu',{override:'Ext.menu.Menu',showSeparator:!1});
Ext.cmd.derive('Ext.grid.locking.HeaderContainer',Ext.grid.header.Container,{headerCtRelayEvents:'blur focus move resize destroy beforedestroy boxready afterrender render beforerender removed hide beforehide show beforeshow enable disable added deactivate beforedeactivate activate beforeactivate remove add beforeremove beforeadd afterlayout menucreate sortchange columnschanged columnshow columnhide columnmove headertriggerclick headercontextmenu headerclick columnresize statesave beforestatesave staterestore beforestaterestore'.split(' '),constructor:function(lockable){var lockedGrid=
lockable.lockedGrid,normalGrid=lockable.normalGrid;this.lockable=lockable;Ext.grid.header.Container.prototype.constructor.call(this);lockedGrid.visibleColumnManager.rootColumns=normalGrid.visibleColumnManager.rootColumns=lockable.visibleColumnManager=this.visibleColumnManager=new Ext.grid.ColumnManager(!0,lockedGrid.headerCt,normalGrid.headerCt);lockedGrid.columnManager.rootColumns=normalGrid.columnManager.rootColumns=lockable.columnManager=this.columnManager=new Ext.grid.ColumnManager(!1,lockedGrid.headerCt,
normalGrid.headerCt);this.lockedEventRelayers=this.relayEvents(lockedGrid.headerCt,this.headerCtRelayEvents);this.normalEventRelayers=this.relayEvents(normalGrid.headerCt,this.headerCtRelayEvents)},destroy:function(){Ext.destroy(this.lockedEventRelayers,this.normalEventRelayers);this.lockedEventRelayers=this.normalEventRelayers=null;Ext.grid.header.Container.prototype.destroy.call(this)},getRefItems:function(){return this.lockable.lockedGrid.headerCt.getRefItems().concat(this.lockable.normalGrid.headerCt.getRefItems())},
getGridColumns:function(){return this.lockable.lockedGrid.headerCt.getGridColumns().concat(this.lockable.normalGrid.headerCt.getGridColumns())},getColumnsState:function(){var locked=this.lockable.lockedGrid.headerCt.getColumnsState(),normal=this.lockable.normalGrid.headerCt.getColumnsState();return locked.concat(normal)},applyColumnsState:function(columnsState,storeState){var lockedHeaderCt=this.lockable.lockedGrid.headerCt,normalHeaderCt=this.lockable.normalGrid.headerCt,columns=lockedHeaderCt.items.items.concat(normalHeaderCt.items.items),
length=columns.length,i,colState;for(i=0;i<length;i++){var column=columns[i];if(colState=columnsState[column.getStateId()]){var switchSides=null!=colState.locked&&!!column.locked!==colState.locked;column.applyColumnState&&column.applyColumnState(colState,storeState);switchSides&&(column.locked?lockedHeaderCt:normalHeaderCt).add(column)}}switchSides=lockedHeaderCt.items.items.length;for(i=0;i<length;i++)column=columns[i],(colState=columnsState[column.getStateId()])&&!column.locked&&(colState.index-=
switchSides);lockedHeaderCt.applyColumnsState(columnsState,storeState);normalHeaderCt.applyColumnsState(columnsState,storeState)},disable:function(){var topGrid=this.lockable;topGrid.lockedGrid.headerCt.disable();topGrid.normalGrid.headerCt.disable()},enable:function(){var topGrid=this.lockable;topGrid.lockedGrid.headerCt.enable();topGrid.normalGrid.headerCt.enable()}},1,0,['component','box','container','headercontainer'],{component:!0,box:!0,container:!0,headercontainer:!0},0,0,[Ext.grid.locking,
'HeaderContainer'],0);
Ext.cmd.derive('Ext.grid.locking.View',Ext.Base,{alternateClassName:'Ext.grid.LockingView',isLockingView:!0,loadMask:!0,eventRelayRe:/^(beforeitem|beforecontainer|item|container|cell|refresh)/,constructor:function(config){var ext=Ext,lockedView,normalView;this.ownerGrid=config.ownerGrid;this.ownerGrid.view=this;this.navigationModel='treepanel'===config.locked.xtype?new ext.tree.NavigationModel(this):new ext.grid.NavigationModel(this);config.locked.viewConfig.bindStore=ext.emptyFn;config.normal.viewConfig.bindStore=
this.subViewBindStore;config.normal.viewConfig.isNormalView=config.locked.viewConfig.isLockedView=!0;config.locked.viewConfig.navigationModel=config.normal.viewConfig.navigationModel=this.navigationModel;this.lockedGrid=this.ownerGrid.lockedGrid=ext.ComponentManager.create(config.locked);this.lockedView=lockedView=this.lockedGrid.getView();this.selModel=config.normal.viewConfig.selModel=lockedView.getSelectionModel();this.lockedGrid.isTree&&(this.lockedView.animate=!1,config.normal.store=lockedView.store,
config.normal.viewConfig.stripeRows=this.lockedView.stripeRows,config.normal.rowLines=this.lockedGrid.rowLines);this.normalGrid=this.ownerGrid.normalGrid=ext.ComponentManager.create(config.normal);lockedView.lockingPartner=normalView=this.normalView=this.normalGrid.getView();normalView.lockingPartner=lockedView;Ext.override(this.normalGrid,{beforeRender:this.beforeNormalGridRender});this.loadMask=void 0!==config.loadMask?config.loadMask:this.loadMask;this.mixins.observable.constructor.call(this);
this.lockedViewEventRelayers=this.relayEvents(lockedView,ext.view.Table.events);this.normalViewEventRelayers=this.relayEvents(normalView,ext.view.Table.events.concat(ext.view.Table.normalSideEvents));normalView.on({scope:this,itemmouseleave:this.onItemMouseLeave,itemmouseenter:this.onItemMouseEnter});lockedView.on({scope:this,itemmouseleave:this.onItemMouseLeave,itemmouseenter:this.onItemMouseEnter});this.loadingText=normalView.loadingText;this.loadingCls=normalView.loadingCls;this.loadingUseMsg=
normalView.loadingUseMsg;this.itemSelector=this.getItemSelector();this.all=normalView.all;this.bindStore(normalView.dataSource,!0,'dataSource')},subViewBindStore:function(store,initial){var grid=this.ownerGrid;this.destroying||this.destroyed||grid.destroying||grid.destroyed||(grid=this.getSelectionModel(),grid.bindStore(store,initial),grid.bindComponent(this))},beforeNormalGridRender:function(){this.ownerGrid.lockedGrid.getHeader()&&!this.title&&(this.title=' ');this.callParent()},onPanelRender:function(el){var mask=
this.loadMask,cfg={target:this.ownerGrid,msg:this.loadingText,msgCls:this.loadingCls,useMsg:this.loadingUseMsg,store:this.ownerGrid.store};this.el=el;this.rendered=!0;this.fireEvent('render',this);mask&&(Ext.isObject(mask)&&(cfg=Ext.apply(cfg,mask)),this.loadMask=new Ext.LoadMask(cfg))},getRefOwner:function(){return this.ownerGrid},getVisibleColumnManager:function(){return this.ownerGrid.getVisibleColumnManager()},getTopLevelVisibleColumnManager:function(){return this.ownerGrid.getVisibleColumnManager()},
getGridColumns:function(){return this.getVisibleColumnManager().getColumns()},getEl:function(column){return this.getViewForColumn(column).getEl()},getCellSelector:function(){return this.normalView.getCellSelector()},getItemSelector:function(){return this.normalView.getItemSelector()},getViewForColumn:function(column){var view=this.lockedView,inLocked;view.headerCt.cascade(function(col){if(col===column)return inLocked=!0,!1});return inLocked?view:this.normalView},onItemMouseEnter:function(view,record){var locked=
this.lockedView,other=this.normalView;view.trackOver&&(view!==locked&&(other=locked),view=other.getNode(record),other.highlightItem(view))},onItemMouseLeave:function(view,record){record=this.lockedView;var other=this.normalView;view.trackOver&&(view!==record&&(other=record),other.clearHighlight())},relayFn:function(name,args){args=args||[];var view=this.lockedView;this.relayingOperation=!0;view[name].apply(view,args);view=this.normalView;view[name].apply(view,args);this.relayingOperation=!1},getSelectionModel:function(){return this.normalView.getSelectionModel()},
getNavigationModel:function(){return this.navigationModel},getStore:function(){return this.ownerGrid.store},onBindStore:function(store,initial,propName){initial=this.lockedView;propName=this.normalView;!propName.componentLayoutCounter||initial.blockRefresh&&propName.blockRefresh||(Ext.suspendLayouts(),initial.doFirstRefresh(store),propName.doFirstRefresh(store),Ext.resumeLayouts(!0))},getStoreListeners:function(){return{priority:1E3,refresh:this.onDataRefresh,replace:this.onReplace,add:this.onAdd,
remove:this.onRemove,update:this.onUpdate,clear:this.onDataRefresh,beginupdate:this.onBeginUpdate,endupdate:this.onEndUpdate}},onOwnerGridHide:function(){Ext.suspendLayouts();this.relayFn('onOwnerGridHide',arguments);Ext.resumeLayouts(!0)},onOwnerGridShow:function(){Ext.suspendLayouts();this.relayFn('onOwnerGridShow',arguments);Ext.resumeLayouts(!0)},onBeginUpdate:function(){Ext.suspendLayouts();this.relayFn('onBeginUpdate',arguments);Ext.resumeLayouts(!0)},onEndUpdate:function(){Ext.suspendLayouts();
this.relayFn('onEndUpdate',arguments);Ext.resumeLayouts(!0)},onDataRefresh:function(){Ext.suspendLayouts();this.relayFn('onDataRefresh',arguments);Ext.resumeLayouts(!0)},onReplace:function(){Ext.suspendLayouts();this.relayFn('onReplace',arguments);Ext.resumeLayouts(!0)},onAdd:function(){Ext.suspendLayouts();this.relayFn('onAdd',arguments);Ext.resumeLayouts(!0)},onRemove:function(){Ext.suspendLayouts();this.relayFn('onRemove',arguments);Ext.resumeLayouts(!0)},setActionableMode:function(enabled,position){var targetView;
if(enabled){position||(position=this.getNavigationModel().getPosition());if(position){position=position.clone();position.view=targetView=position.column.getView();var result=targetView.setActionableMode(enabled,position);!1!==result&&targetView.lockingPartner.grid.isVisible()&&(targetView.lockingPartner.setActionableMode(enabled,position),targetView.lockingPartner.actionableMode||(targetView.setActionableMode(!1),result=!1));return result}return!1}this.relayFn('setActionableMode',[!1])},onUpdate:function(){Ext.suspendLayouts();
this.relayFn('onUpdate',arguments);Ext.resumeLayouts(!0)},refresh:function(){var lockedView=this.lockedView,normalView=this.normalView;Ext.suspendLayouts();lockedView.clearViewEl(!0);normalView.clearViewEl(!0);normalView.refresh();lockedView.refresh();Ext.resumeLayouts(!0)},refreshView:function(){var lockedView=this.lockedView,normalView=this.normalView,startIndex=normalView.all.startIndex;Ext.suspendLayouts();lockedView.clearViewEl(!0);normalView.clearViewEl(!0);normalView.refreshView(startIndex);
lockedView.refreshView(startIndex);Ext.resumeLayouts(!0)},setScrollable:function(scrollable){Ext.suspendLayouts();this.lockedView.setScrollable(scrollable);scrollable.isScroller&&(scrollable=new Ext.scroll.Scroller(scrollable.initialConfig));this.normalView.setScrollable(scrollable);Ext.resumeLayouts(!0)},getNode:function(nodeInfo){return this.normalView.getNode(nodeInfo)},getRow:function(nodeInfo){return this.normalView.getRow(nodeInfo)},getCell:function(record,column){record=this.getViewForColumn(column).getRow(record);
return Ext.fly(record).down(column.getCellSelector())},indexOf:function(record){var result=this.lockedView.indexOf(record);result||(result=this.normalView.indexOf(record));return result},focus:function(){var target=this.ownerGrid.down('\x3etablepanel:not(hidden)\x3etableview');target&&target.focus()},focusRow:function(row){var lastFocused=this.getNavigationModel().lastFocused;(lastFocused?lastFocused.view:this.normalView).focusRow(row)},focusCell:function(position){position.view.focusCell(position)},
onRowFocus:function(){this.relayFn('onRowFocus',arguments)},isVisible:function(deep){return this.ownerGrid.isVisible(deep)},getCellInclusive:function(pos,returnDom){var col=pos.column,lockedSize=this.lockedGrid.getColumnManager().getColumns().length;return col>=lockedSize?(pos=Ext.apply({},pos),pos.column-=lockedSize,this.normalView.getCellInclusive(pos,returnDom)):this.lockedView.getCellInclusive(pos,returnDom)},getHeaderByCell:function(cell){return cell?this.getVisibleColumnManager().getHeaderById(cell.getAttribute('data-columnId')):
!1},onRowSelect:function(){this.relayFn('onRowSelect',arguments)},onRowDeselect:function(){this.relayFn('onRowDeselect',arguments)},onCellSelect:function(cellContext){cellContext.column.getView().onCellSelect({record:cellContext.record,column:cellContext.column})},onCellDeselect:function(cellContext){cellContext.column.getView().onCellDeselect({record:cellContext.record,column:cellContext.column})},getCellByPosition:function(pos,returnDom){var view=pos.view,col=pos.column;view===this&&(pos=(new Ext.grid.CellContext(col.getView())).setPosition(pos.record,
pos.column));return view.getCellByPosition(pos,returnDom)},getRecord:function(node){var result=this.lockedView.getRecord(node);result||(result=this.normalView.getRecord(node));return result},scrollBy:function(){var scroller=this.ownerGrid.getScrollable();scroller.scrollBy.apply(scroller,arguments)},ensureVisible:function(){var normal=this.normalView;normal.ensureVisible.apply(normal,arguments)},disable:function(){this.relayFn('disable',arguments)},enable:function(){this.relayFn('enable',arguments)},
addElListener:function(){this.relayFn('addElListener',arguments)},refreshNode:function(){this.relayFn('refreshNode',arguments)},addRowCls:function(){this.relayFn('addRowCls',arguments)},removeRowCls:function(){this.relayFn('removeRowCls',arguments)},destroy:function(){this.rendered=!1;this.bindStore(null,!1,'dataSource');Ext.destroy(this.selModel,this.navigationModel,this.loadMask,this.lockedViewEventRelayers,this.normalViewEventRelayers);this.lockedView.lockingPartner=this.normalView.lockingPartner=
null;this.callParent()}},1,0,0,0,0,[[Ext.util.Observable.prototype.mixinId||Ext.util.Observable.$className,Ext.util.Observable],[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder],[Ext.util.Focusable.prototype.mixinId||Ext.util.Focusable.$className,Ext.util.Focusable]],[Ext.grid.locking,'View',Ext.grid,'LockingView'],function(){this.borrow(Ext.Component,['up']);this.borrow(Ext.view.AbstractView,['doFirstRefresh','applyFirstRefresh']);this.borrow(Ext.view.Table,
['cellSelector','selectedCellCls','selectedItemCls'])});
Ext.cmd.derive('Ext.scroll.LockingScroller',Ext.scroll.Scroller,{config:{lockedScroller:null,normalScroller:null},scrollTo:function(x,y,animate){var lockedX;Ext.isObject(x)&&(lockedX=x.lockedX)&&this.getLockedScroller().scrollTo(lockedX,null,animate);Ext.scroll.Scroller.prototype.scrollTo.call(this,x,y,animate)},updateLockedScroller:function(lockedScroller){lockedScroller.on('scroll','onLockedScroll',this);lockedScroller.setLockingScroller(this)},updateNormalScroller:function(normalScroller){normalScroller.on('scroll',
'onNormalScroll',this);normalScroller.setLockingScroller(this)},getPosition:function(){var position=Ext.scroll.Scroller.prototype.getPosition.call(this);position.x=this.getNormalScroller().getPosition().x;position.lockedX=this.getLockedScroller().getPosition().x;return position},privates:{updateSpacerXY:function(pos){var lockedScroller=this.getLockedScroller(),normalScroller=this.getNormalScroller();lockedScroller=lockedScroller.component;normalScroller=normalScroller.component;var height=pos.y+(normalScroller.headerCt.tooNarrow||
lockedScroller.headerCt.tooNarrow?Ext.getScrollbarSize().height:0);normalScroller.stretchHeight(height);lockedScroller.stretchHeight(height);Ext.scroll.Scroller.prototype.updateSpacerXY.call(this,pos)},doScrollTo:function(x,y,animate){null!=x&&(this.getNormalScroller().scrollTo(x,null,animate),x=null);Ext.scroll.Scroller.prototype.doScrollTo.call(this,x,y,animate)},onLockedScroll:function(lockedScroller,x,y){this.position.lockedX=x},onNormalScroll:function(normalScroller,x,y){this.position.x=x}}},
0,0,0,0,['scroller.locking'],0,[Ext.scroll,'LockingScroller'],0);
Ext.cmd.derive('Ext.grid.locking.Lockable',Ext.Base,{alternateClassName:'Ext.grid.Lockable',syncRowHeight:!0,headerCounter:0,lockedGridCls:'x-grid-inner-locked',normalGridCls:'x-grid-inner-normal',lockingBodyCls:'x-grid-locking-body',scrollContainerCls:'x-grid-scroll-container',scrollBodyCls:'x-grid-scroll-body',scrollbarClipperCls:'x-grid-scrollbar-clipper',scrollbarCls:'x-grid-scrollbar',scrollbarVisibleCls:'x-grid-scrollbar-visible',unlockText:'Unlock',lockText:'Lock',bothCfgCopy:'hideHeaders enableColumnHide enableColumnMove enableColumnResize sortableColumns multiColumnSort columnLines rowLines variableRowHeight numFromEdge trailingBufferZone leadingBufferZone scrollToLoadBuffer syncRowHeight'.split(' '),
normalCfgCopy:['scroll'],lockedCfgCopy:[],determineXTypeToCreate:function(lockedSide){if(this.subGridXType)lockedSide=this.subGridXType;else{if(!lockedSide)return'gridpanel';var xtypes=this.getXTypes().split('/');var xtypesLn=xtypes.length;lockedSide=xtypes[xtypesLn-1];xtypes=xtypes[xtypesLn-2];lockedSide='tablepanel'!==xtypes?xtypes:lockedSide}return lockedSide},injectLockable:function(){this.focusable=!1;this.hasView=this.lockable=!0;var store=this.store=Ext.StoreManager.lookup(this.store),lockedViewConfig=
this.lockedViewConfig,normalViewConfig=this.normalViewConfig,Obj=Ext.Object,viewConfig=this.viewConfig;var lockedGrid=viewConfig&&viewConfig.loadMask;var loadMask=void 0!==lockedGrid?lockedGrid:this.loadMask,bufferedRenderer=this.bufferedRenderer;var allFeatures=this.constructLockableFeatures();this.scrollable=new Ext.scroll.LockingScroller({component:this,x:!1,y:!0});this.features=null;var allPlugins=this.constructLockablePlugins();this.plugins=allPlugins.topPlugins;lockedGrid={id:this.id+'-locked',
$initParent:this,isLocked:!0,bufferedRenderer:bufferedRenderer,ownerGrid:this,ownerLockable:this,xtype:this.determineXTypeToCreate(!0),store:store,scrollerOwner:!1,animate:!1,border:!1,cls:this.lockedGridCls,isLayoutRoot:function(){return this.floatedFromCollapse||this.ownerGrid.normalGrid.floatedFromCollapse},features:allFeatures.lockedFeatures,plugins:allPlugins.lockedPlugins};allFeatures={id:this.id+'-normal',$initParent:this,isLocked:!1,bufferedRenderer:bufferedRenderer,ownerGrid:this,ownerLockable:this,
xtype:this.determineXTypeToCreate(),store:store,reserveScrollbar:this.reserveScrollbar,scrollerOwner:!1,border:!1,cls:this.normalGridCls,isLayoutRoot:function(){return this.floatedFromCollapse||this.ownerGrid.lockedGrid.floatedFromCollapse},features:allFeatures.normalFeatures,plugins:allPlugins.normalPlugins};this.addCls('x-grid-locked');Ext.copy(allFeatures,this,this.bothCfgCopy,!0);Ext.copy(lockedGrid,this,this.bothCfgCopy,!0);Ext.copy(allFeatures,this,this.normalCfgCopy,!0);Ext.copy(lockedGrid,
this,this.lockedCfgCopy,!0);Ext.apply(allFeatures,this.normalGridConfig);Ext.apply(lockedGrid,this.lockedGridConfig);for(allPlugins=0;allPlugins<this.normalCfgCopy.length;allPlugins++)delete this[this.normalCfgCopy[allPlugins]];for(allPlugins=0;allPlugins<this.lockedCfgCopy.length;allPlugins++)delete this[this.lockedCfgCopy[allPlugins]];this.addStateEvents(['lockcolumn','unlockcolumn']);allPlugins=this.processColumns(this.columns||[],lockedGrid);lockedGrid.columns=allPlugins.locked;lockedGrid.columns.items.length||
(lockedGrid.hidden=!0);allFeatures.columns=allPlugins.normal;allFeatures.columns.items.length||(allFeatures.hidden=!0);allFeatures.flex=1;lockedGrid.viewConfig=lockedViewConfig=lockedViewConfig?Obj.chain(lockedViewConfig):{};allFeatures.viewConfig=normalViewConfig=normalViewConfig?Obj.chain(normalViewConfig):{};lockedViewConfig.loadingUseMsg=!1;lockedViewConfig.loadMask=!1;normalViewConfig.loadMask=!1;Ext.applyIf(lockedViewConfig,viewConfig);Ext.applyIf(normalViewConfig,viewConfig);this.layout===
Ext.panel.Table.prototype.layout&&(this.layout={type:'hbox',align:'stretch'});this.getLayout();'border'===this.layout.type&&(this.split&&(lockedGrid.split=this.split),lockedGrid.region||(lockedGrid.region='west'),allFeatures.region||(allFeatures.region='center'),this.addCls('x-grid-locked-split'));this.layout instanceof Ext.layout.container.Box||(this.split=!1);this.view=new Ext.grid.locking.View({loadMask:loadMask,locked:lockedGrid,normal:allFeatures,ownerGrid:this});lockedGrid=this.lockedGrid;allFeatures=
this.normalGrid;lockedGrid.on({beginfloat:this.onBeginLockedFloat,endfloat:this.onEndLockedFloat,scope:this});lockedGrid.getVisibleColumnManager().getColumns().length||lockedGrid.hide();allFeatures.getVisibleColumnManager().getColumns().length||allFeatures.hide();lockedViewConfig=lockedGrid.headerCt;normalViewConfig=allFeatures.headerCt;this.headerCt=this.view.headerCt=new Ext.grid.locking.HeaderContainer(this);lockedViewConfig.lockedCt=!0;lockedViewConfig.lockableInjected=!0;normalViewConfig.lockableInjected=
!0;lockedViewConfig.on({add:this.delaySyncLockedWidth,remove:this.delaySyncLockedWidth,columnshow:this.delaySyncLockedWidth,columnhide:this.delaySyncLockedWidth,sortchange:this.onLockedHeaderSortChange,columnresize:this.delaySyncLockedWidth,scope:this});normalViewConfig.on({add:this.delaySyncLockedWidth,remove:this.delaySyncLockedWidth,columnshow:this.delaySyncLockedWidth,columnhide:this.delaySyncLockedWidth,sortchange:this.onNormalHeaderSortChange,scope:this});this.modifyHeaderCt();this.items=[lockedGrid];
this.split&&(this.addCls('x-grid-locked-split'),this.items[1]=Ext.apply({xtype:'splitter'},this.split));this.items.push(allFeatures);this.relayHeaderCtEvents(lockedViewConfig);this.relayHeaderCtEvents(normalViewConfig);this.storeRelayers=this.relayEvents(store,['filterchange','groupchange','beforeload','load']);this.gridRelayers=this.relayEvents(allFeatures,['viewready'])},afterInjectLockable:function(){delete this.lockedGrid.$initParent;delete this.normalGrid.$initParent},getLockingViewConfig:function(){return{xclass:'Ext.grid.locking.View',
locked:this.lockedGrid,normal:this.normalGrid,panel:this}},onBeginLockedFloat:function(locked){var el=locked.getContentTarget().dom,lockedHeaderCt=this.lockedGrid.headerCt,normalHeaderCt=this.normalGrid.headerCt,headerCtHeight=Math.max(normalHeaderCt.getHeight(),lockedHeaderCt.getHeight());lockedHeaderCt.minHeight=headerCtHeight;normalHeaderCt.minHeight=headerCtHeight;locked.el.addCls(Ext.panel.Panel.floatCls);el.firstChild!==locked.view.el.dom&&el.appendChild(locked.view.el.dom);locked.body.dom.style.overflowX=
this.normalGrid.headerCt.tooNarrow?'scroll':'';locked.body.dom.scrollTop=this.getScrollable().getPosition().y},onEndLockedFloat:function(){var locked=this.lockedGrid;locked.getContentTarget();locked.collapsed?locked.el.removeCls(Ext.panel.Panel.floatCls):this.lockedGrid.headerCt.minHeight=this.normalGrid.headerCt.minHeight=null;this.lockedScrollbarClipper.appendChild(locked.view.el.dom);this.syncLockableLayout()},beforeLayout:function(){var lockedGrid=this.lockedGrid,normalGrid=this.normalGrid;if(lockedGrid&&
normalGrid){!lockedGrid.layoutCounter&&lockedGrid.getSizeModel().width.shrinkWrap&&(lockedGrid.gridPanelBorderWidth=lockedGrid.el.getBorderWidth('lr'),lockedGrid.shrinkWrapColumns=!0);if(lockedGrid.shrinkWrapColumns){var totalColumnWidth=lockedGrid.headerCt.getTableWidth();lockedGrid.setWidth(totalColumnWidth+lockedGrid.gridPanelBorderWidth)}this.scrollContainer||this.initScrollContainer();this.lastScrollPos=this.getScrollable().getPosition();lockedGrid.view.el.setStyle('margin-bottom','');normalGrid.view.el.setStyle('margin-bottom',
'')}},syncLockableLayout:function(){var lockedGrid=this.lockedGrid,normalGrid=this.normalGrid,scrollContainerHeight;if(!this.isCollapsingOrExpanding&&lockedGrid&&normalGrid){var lockedGridVisible=lockedGrid.isVisible(!0)&&!lockedGrid.collapsed;var normalViewWidth=normalGrid.isVisible(!0);var lockedViewEl=lockedGrid.view.el;var normalViewEl=normalGrid.view.el;var scrollBodyDom=this.scrollBody.dom;var lockedViewRegion=lockedGridVisible?lockedGrid.body.getRegion(!0):new Ext.util.Region(0,0,0,0);var normalViewRegion=
normalViewWidth?normalGrid.body.getRegion(!0):new Ext.util.Region(0,0,0,0);var scrollbarSize=Ext.getScrollbarSize();var scrollbarWidth=scrollbarSize.width;scrollbarSize=scrollbarSize.height;normalViewWidth=normalViewWidth?normalViewRegion.width:0;var normalViewX=lockedGridVisible?normalViewRegion.x-lockedViewRegion.x:0;var hasHorizontalScrollbar=normalGrid.headerCt.tooNarrow||lockedGrid.headerCt.tooNarrow?scrollbarSize:0;var scrollBodyHeight=scrollContainerHeight=normalViewRegion.height;var lockedScrollbar=
this.lockedScrollbar;var normalScrollbar=this.normalScrollbar;var scrollbarVisibleCls=this.scrollbarVisibleCls;scrollContainerHeight=normalViewEl._rtlScrollbarOnRight;hasHorizontalScrollbar&&(lockedViewEl.setStyle('margin-bottom',-scrollbarSize+'px'),normalViewEl.setStyle('margin-bottom',-scrollbarSize+'px'),scrollBodyHeight-=scrollbarSize,lockedGridVisible&&lockedGrid.view.body.dom&&this.lockedScrollbarScroller.setSize({x:lockedGrid.headerCt.getTableWidth()}),normalGrid.view.body.dom&&this.normalScrollbarScroller.setSize({x:normalGrid.headerCt.getTableWidth()}));
this.scrollBody.setHeight(scrollBodyHeight);lockedViewEl.dom.style.height=normalViewEl.dom.style.height='';lockedViewEl=this.scrollable.getSize().y+hasHorizontalScrollbar;normalGrid.view.stretchHeight(lockedViewEl);lockedGrid.view.stretchHeight(lockedViewEl);(lockedGrid=scrollbarWidth&&scrollBodyDom.scrollHeight>scrollBodyDom.clientHeight)&&normalViewWidth&&(normalViewWidth-=scrollbarWidth,normalViewEl.setStyle('width',normalViewWidth+'px'));lockedScrollbar.toggleCls(scrollbarVisibleCls,lockedGridVisible&&
!!hasHorizontalScrollbar);normalScrollbar.toggleCls(scrollbarVisibleCls,!!hasHorizontalScrollbar);this.normalScrollbarClipper.toggleCls(this.scrollbarClipperCls+'-floated',!!this.normalGrid.floatedFromCollapse);this.normalScrollbar.toggleCls(this.scrollbarCls+'-floated',!!this.normalGrid.floatedFromCollapse);this.lockedScrollbarClipper.toggleCls(this.scrollbarClipperCls+'-floated',!!this.lockedGrid.floatedFromCollapse);this.lockedScrollbar.toggleCls(this.scrollbarCls+'-floated',!!this.lockedGrid.floatedFromCollapse);
lockedScrollbar.setSize(this.lockedScrollbarClipper.dom.offsetWidth,scrollbarSize);normalScrollbar.setSize(normalViewWidth,scrollbarSize);this.getInherited().rtl?(normalScrollbar.rtlSetLocalX(normalViewX),this.normalScrollbarClipper.rtlSetLocalX(normalViewX)):(normalScrollbar.setLocalX(normalViewX),this.normalScrollbarClipper.setLocalX(normalViewX));this.scrollContainer.setBox(normalViewEl=lockedGridVisible?lockedViewRegion.union(normalViewRegion):normalViewRegion);scrollContainerHeight&&(lockedGrid?
(scrollBodyDom.style.width=normalViewEl+scrollbarWidth+'px',scrollBodyDom.style.right=-scrollbarWidth+'px',normalGrid.headerCt.layout.innerCt.setWidth(normalGrid.headerCt.layout.innerCt.getWidth()+scrollbarWidth),this.verticalScrollbarScroller.setSize({y:this.scrollable.getSize().y}),this.verticalScrollbar.show()):this.verticalScrollbar.hide());this.getScrollable().scrollTo(this.lastScrollPos)}},initScrollContainer:function(){var scrollContainer=this.scrollContainer=this.body.insertFirst({cls:[this.scrollContainerCls,
this._rtlCls]}),scrollBody=this.scrollBody=scrollContainer.appendChild({cls:this.scrollBodyCls}),lockedScrollbar=this.lockedScrollbar=scrollContainer.appendChild({cls:[this.scrollbarCls,this.scrollbarCls+'-locked',this._rtlCls]}),normalScrollbar=this.normalScrollbar=scrollContainer.appendChild({cls:[this.scrollbarCls,this._rtlCls]}),lockedView=this.lockedGrid.view,normalView=this.normalGrid.view,lockedScroller=lockedView.getScrollable(),normalScroller=normalView.getScrollable(),Scroller=Ext.scroll.Scroller;
lockedView.stretchHeight(0);normalView.stretchHeight(0);this.scrollable.setConfig({element:scrollBody,lockedScroller:lockedScroller,normalScroller:normalScroller});var lockedScrollbarClipper=this.lockedScrollbarClipper=scrollBody.appendChild({cls:[this.scrollbarClipperCls,this.scrollbarClipperCls+'-locked',this._rtlCls]});var normalScrollbarClipper=this.normalScrollbarClipper=scrollBody.appendChild({cls:[this.scrollbarClipperCls,this._rtlCls]});lockedScrollbarClipper.appendChild(lockedView.el);normalScrollbarClipper.appendChild(normalView.el);
lockedView.ignoreDomPosition=!0;normalView.ignoreDomPosition=!0;lockedScrollbar=this.lockedScrollbarScroller=new Scroller({element:lockedScrollbar,x:'scroll',y:!1,rtl:lockedScroller.getRtl&&lockedScroller.getRtl()});normalScrollbar=this.normalScrollbarScroller=new Scroller({element:normalScrollbar,x:'scroll',y:!1,rtl:normalScroller.getRtl&&normalScroller.getRtl()});normalView.el._rtlScrollbarOnRight&&(this.verticalScrollbar=scrollContainer.appendChild({cls:this.scrollbarCls,style:{top:0,left:0,bottom:0,
width:Ext.getScrollbarSize().width+'px'}}),this.verticalScrollbarScroller=new Scroller({element:this.verticalScrollbar,x:!1,y:!0}),this.verticalScrollbarScroller.addPartner(this.scrollable,'y'));lockedScrollbar.addPartner(lockedScroller,'x');normalScrollbar.addPartner(normalScroller,'x');(scrollContainer=this.lockedGrid.headerCt.getScrollable())&&lockedScrollbar.addPartner(scrollContainer,'x');(scrollContainer=this.normalGrid.headerCt.getScrollable())&&normalScrollbar.addPartner(scrollContainer,'x');
this.view.onPanelRender(scrollBody)},processColumns:function(columns,lockedGrid){lockedGrid=new Ext.grid.header.Container({$initParent:this});var lockedHeaders=[],normalHeaders=[];var i={itemId:'lockedHeaderCt',stretchMaxPartner:'^^\x3e\x3e#normalHeaderCt',items:lockedHeaders};var len={itemId:'normalHeaderCt',stretchMaxPartner:'^^\x3e\x3e#lockedHeaderCt',items:normalHeaders};var result={locked:i,normal:len};Ext.isObject(columns)&&(Ext.applyIf(i,columns),Ext.applyIf(len,columns),i=Ext.apply({},columns),
delete i.items,Ext.apply(lockedGrid,i),columns=columns.items);lockedGrid.constructing=!0;i=0;for(len=columns.length;i<len;++i){var column=columns[i];column.isComponent||(column=lockedGrid.applyDefaults(column),column.$initParent=lockedGrid,column=lockedGrid.lookupComponent(column),delete column.$initParent);column.processed=!0;column.locked||column.autoLock?lockedHeaders.push(column):normalHeaders.push(column)}this.fireEvent('processcolumns',this,lockedHeaders,normalHeaders);lockedGrid.destroy();
return result},ensureLockedVisible:function(){this.lockedGrid.ensureVisible.apply(this.lockedGrid,arguments);this.normalGrid.ensureVisible.apply(this.normalGrid,arguments)},syncRowHeights:function(){if(!this.destroyed){var normalView=this.normalGrid.getView(),lockedView=this.lockedGrid.getView(),normalSync=normalView.syncRowHeightBegin(),lockedSync=lockedView.syncRowHeightBegin();normalView.syncRowHeightMeasure(normalSync);lockedView.syncRowHeightMeasure(lockedSync);normalView.syncRowHeightFinish(normalSync,
lockedSync);lockedView.syncRowHeightFinish(lockedSync,normalSync);normalView=normalView.getScrollY();lockedView.setScrollY(normalView)}},modifyHeaderCt:function(){this.lockedGrid.headerCt.getMenuItems=this.getMenuItems(this.lockedGrid.headerCt.getMenuItems,!0);this.normalGrid.headerCt.getMenuItems=this.getMenuItems(this.normalGrid.headerCt.getMenuItems,!1);this.lockedGrid.headerCt.showMenuBy=Ext.Function.createInterceptor(this.lockedGrid.headerCt.showMenuBy,this.showMenuBy);this.normalGrid.headerCt.showMenuBy=
Ext.Function.createInterceptor(this.normalGrid.headerCt.showMenuBy,this.showMenuBy)},onUnlockMenuClick:function(){this.unlock()},onLockMenuClick:function(){this.lock()},showMenuBy:function(clickEvent,t,header){t=this.getMenu();clickEvent=t.down('#unlockItem');t=t.down('#lockItem');var sep=clickEvent.prev();!1===header.lockable?(sep.hide(),clickEvent.hide(),t.hide()):(sep.show(),clickEvent.show(),t.show(),clickEvent.initialConfig.disabled||clickEvent.setDisabled(!1===header.lockable),t.initialConfig.disabled||
t.setDisabled(!header.isLockable()))},getMenuItems:function(getMenuItems,locked){var unlockText=this.unlockText,lockText=this.lockText,unlockHandler=this.onUnlockMenuClick.bind(this),lockHandler=this.onLockMenuClick.bind(this);return function(){var o=getMenuItems.call(this);o.push('-',{itemId:'unlockItem',iconCls:'x-hmenu-unlock',text:unlockText,handler:unlockHandler,disabled:!locked});o.push({itemId:'lockItem',iconCls:'x-hmenu-lock',text:lockText,handler:lockHandler,disabled:locked});return o}},
delaySyncLockedWidth:function(){var task=this.syncLockedWidthTask||(this.syncLockedWidthTask=new Ext.util.DelayedTask(this.syncLockedWidth,this));this.reconfiguring||(Ext.Component.layoutSuspendCount&&0!==this.syncTaskDelay?task.delay(1):this.syncLockedWidth())},syncLockedWidth:function(){var rendered=this.rendered,locked=this.lockedGrid;locked.view.getScrollable();var normal=this.normalGrid,lockedColCount=locked.getVisibleColumnManager().getColumns().length,normalColCount=normal.getVisibleColumnManager().getColumns().length,
task=this.syncLockedWidthTask;task&&task.cancel();if(!this.reconfiguring)return Ext.suspendLayouts(),normalColCount?(normal.show(),lockedColCount?('border'===this.layout.type&&(locked.region=locked.initialConfig.region),rendered&&locked.shrinkWrapColumns&&!locked.headerCt.forceFit&&(delete locked.flex,locked.width=locked.headerCt.getTableWidth()+locked.gridPanelBorderWidth,locked.updateLayout()),locked.addCls(this.lockedGridCls),locked.show(),locked.split&&(this.child('splitter').show(),this.addCls('x-grid-locked-split'))):
(locked.hide(),rendered&&locked.getView().clearViewEl(!0),locked.split&&(this.child('splitter').hide(),this.removeCls('x-grid-locked-split')))):(normal.hide(),delete locked.width,'border'===this.layout.type?(locked.region='center',normal.region='west'):locked.flex=1,locked.removeCls(this.lockedGridCls),locked.show()),Ext.resumeLayouts(!0),{locked:!!lockedColCount,normal:!!normalColCount}},onLockedHeaderSortChange:Ext.emptyFn,onNormalHeaderSortChange:Ext.emptyFn,lock:function(activeHd,toIdx,toCt){var normalGrid=
this.normalGrid,lockedGrid=this.lockedGrid,normalView=normalGrid.view,lockedView=lockedGrid.view,startIndex=normalView.all.startIndex,normalScroller=normalView.getScrollable(),lockedScroller=lockedView.getScrollable(),normalHCt=normalGrid.headerCt,layoutCount=this.componentLayoutCounter;activeHd=activeHd||normalHCt.getMenu().activeHeader;activeHd.unlockedWidth=activeHd.width;activeHd.flex&&(activeHd.lockedWidth?(activeHd.width=activeHd.lockedWidth,activeHd.lockedWidth=null):activeHd.width=activeHd.lastBox.width,
activeHd.flex=null);toCt=toCt||lockedGrid.headerCt;normalHCt=activeHd.ownerCt;if(!normalHCt||activeHd.isLockable()){Ext.suspendLayouts();normalScroller&&(normalScroller.suspendPartnerSync(),lockedScroller.suspendPartnerSync());if(lockedGrid.hidden){if(!lockedGrid.componentLayoutCounter&&(lockedGrid.height=normalGrid.lastBox.height,lockedView.bufferedRenderer))lockedView.bufferedRenderer.onViewResize(lockedView,0,normalGrid.body.lastBox.height);lockedGrid.show()}lockedGrid.reconfiguring=normalGrid.reconfiguring=
!0;activeHd.ownerCmp=activeHd.ownerCt;normalHCt&&normalHCt.remove(activeHd,!1);activeHd.locked=!0;Ext.isDefined(toIdx)?toCt.insert(toIdx,activeHd):toCt.add(activeHd);lockedGrid.reconfiguring=normalGrid.reconfiguring=!1;activeHd.ownerCmp=null;toIdx=this.syncLockedWidth();toIdx.locked&&lockedView.clearViewEl(!0);toIdx.normal&&normalView.clearViewEl(!0);toIdx.normal&&normalGrid.getView().refreshView(startIndex);toIdx.locked&&lockedGrid.getView().refreshView(startIndex);this.fireEvent('lockcolumn',this,
activeHd);Ext.resumeLayouts(!0);normalScroller&&(normalScroller.resumePartnerSync(!0),lockedScroller.resumePartnerSync());this.componentLayoutCounter===layoutCount&&this.syncLockableLayout()}},unlock:function(activeHd,toIdx,toCt){var normalGrid=this.normalGrid,lockedGrid=this.lockedGrid,normalView=normalGrid.view,lockedView=lockedGrid.view,startIndex=normalView.all.startIndex,lockedHCt=lockedGrid.headerCt,layoutCount=this.componentLayoutCounter;Ext.isDefined(toIdx)||(toIdx=0);activeHd=activeHd||lockedHCt.getMenu().activeHeader;
activeHd.lockedWidth=activeHd.width;activeHd.flex&&(activeHd.unlockedWidth?(activeHd.width=activeHd.unlockedWidth,activeHd.unlockedWidth=null):activeHd.width=activeHd.lastBox.width,activeHd.flex=null);toCt=toCt||normalGrid.headerCt;Ext.suspendLayouts();lockedGrid.reconfiguring=normalGrid.reconfiguring=!0;(activeHd.ownerCmp=activeHd.ownerCt)&&activeHd.ownerCt.remove(activeHd,!1);activeHd.locked=!1;toCt.insert(toIdx,activeHd);lockedGrid.reconfiguring=normalGrid.reconfiguring=!1;activeHd.ownerCmp=null;
toIdx=this.syncLockedWidth();toIdx.locked&&lockedView.clearViewEl(!0);toIdx.normal&&normalView.clearViewEl(!0);toIdx.normal&&normalGrid.getView().refreshView(startIndex);toIdx.locked&&lockedGrid.getView().refreshView(startIndex);this.fireEvent('unlockcolumn',this,activeHd);Ext.resumeLayouts(!0);this.componentLayoutCounter===layoutCount&&this.syncLockableLayout()},reconfigureLockable:function(store,columns,allowUnbind){var oldStore=this.store,lockedGrid=this.lockedGrid,normalGrid=this.normalGrid;!store&&
allowUnbind&&(store=Ext.StoreManager.lookup('ext-empty-store'));store&&store!==oldStore&&(this.store=store=Ext.data.StoreManager.lookup(store),lockedGrid.view.blockRefresh=normalGrid.view.blockRefresh=!0,lockedGrid.bindStore(store),allowUnbind=lockedGrid.view,allowUnbind.store=store,allowUnbind.dataSource.isFeatureStore||(allowUnbind.dataSource=store),allowUnbind.bufferedRenderer&&allowUnbind.bufferedRenderer.bindStore(store),normalGrid.bindStore(store),allowUnbind=normalGrid.view,allowUnbind.store=
store,allowUnbind.dataSource.isFeatureStore||(allowUnbind.dataSource=store),allowUnbind.bufferedRenderer&&allowUnbind.bufferedRenderer.bindStore(store),this.view.store=store,(allowUnbind=this.view.loadMask)&&allowUnbind.isLoadMask&&allowUnbind.bindStore(store),this.view.bindStore(normalGrid.view.dataSource,!1,'dataSource'),lockedGrid.view.blockRefresh=normalGrid.view.blockRefresh=!1);columns&&(lockedGrid.reconfiguring=normalGrid.reconfiguring=!0,lockedGrid.headerCt.removeAll(),normalGrid.headerCt.removeAll(),
columns=this.processColumns(columns,lockedGrid),lockedGrid.headerCt.add(columns.locked.items),normalGrid.headerCt.add(columns.normal.items),lockedGrid.reconfiguring=normalGrid.reconfiguring=!1,this.syncLockedWidth());this.refreshCounter=normalGrid.view.refreshCounter},afterReconfigureLockable:function(){this.syncLockedWidth();this.refreshCounter===this.normalGrid.getView().refreshCounter&&this.view.refreshView()},constructLockableFeatures:function(){var features=this.features,featureClone,i=0,len;
if(features){Ext.isArray(features)||(features=[features]);var lockedFeatures=[];var normalFeatures=[];for(len=features.length;i<len;i++){var feature=features[i];feature.isFeature||(feature=Ext.create('feature.'+feature.ftype,feature));switch(feature.lockableScope){case 'locked':lockedFeatures.push(feature);break;case 'normal':normalFeatures.push(feature);break;default:feature.lockableScope='both',lockedFeatures.push(feature),normalFeatures.push(featureClone=feature.clone()),featureClone.lockingPartner=
feature,feature.lockingPartner=featureClone}}}return{normalFeatures:normalFeatures,lockedFeatures:lockedFeatures}},constructLockablePlugins:function(){var plugins=this.plugins,lockedPlugin,i=0,len;if(plugins){Ext.isArray(plugins)||(plugins=[plugins]);var topPlugins=[];var lockedPlugins=[];var normalPlugins=[];for(len=plugins.length;i<len;i++){var plugin=plugins[i];if(plugin.init)var normalPlugin=plugin.lockableScope;else normalPlugin=plugin.ptype?Ext.ClassManager.getByAlias('plugin.'+plugin.ptype):
Ext.ClassManager.get(plugin.xclass),normalPlugin=normalPlugin.prototype.lockableScope;switch(normalPlugin){case 'both':lockedPlugins.push(lockedPlugin=plugin.clonePlugin());normalPlugins.push(normalPlugin=plugin.clonePlugin());lockedPlugin.lockingPartner=normalPlugin;normalPlugin.lockingPartner=lockedPlugin;Ext.destroy(plugin);break;case 'locked':lockedPlugins.push(plugin);break;case 'normal':normalPlugins.push(plugin);break;default:topPlugins.push(plugin)}}}return{topPlugins:topPlugins,normalPlugins:normalPlugins,
lockedPlugins:lockedPlugins}},destroyLockable:function(){var task=this.syncLockedWidthTask;task&&(task.cancel(),this.syncLockedWidthTask=null);this.lockedGrid&&this.lockedGrid.headerCt&&(this.lockedGrid.headerCt.showMenuBy=null);this.normalGrid&&this.normalGrid.headerCt&&(this.normalGrid.headerCt.showMenuBy=null);Ext.destroy(this.view,this.headerCt)}},0,0,0,0,0,0,[Ext.grid.locking,'Lockable',Ext.grid,'Lockable'],function(){this.borrow(Ext.Component,['constructPlugin'])});
Ext.cmd.derive('Ext.grid.plugin.BufferedRenderer',Ext.AbstractPlugin,{isBufferedRenderer:!0,lockableScope:'both',numFromEdge:2,trailingBufferZone:10,leadingBufferZone:20,synchronousRender:!0,scrollToLoadBuffer:200,viewSize:100,rowHeight:21,position:0,scrollTop:0,lastScrollDirection:1,bodyTop:0,scrollHeight:0,loadId:0,init:function(grid){var view=grid.view,viewListeners={refresh:this.onViewRefresh,columnschanged:this.checkVariableRowHeight,boxready:this.onViewBoxReady,scope:this,destroyable:!0},scrollerListeners=
{scroll:this.onViewScroll,scope:this},initialConfig=view.initialConfig;this.scroller=view.lockingPartner?view.ownerGrid.scrollable:view.getScrollable();if(grid.isTree||grid.ownerLockable&&grid.ownerLockable.isTree)view.blockRefresh=!1,initialConfig&&void 0===initialConfig.loadMask&&(view.loadMask=!0);view.positionBody&&(viewListeners.refresh=this.onViewRefresh);Ext.isWebKit&&(this.needsPointerEventsFix=!0,scrollerListeners.scrollend=this.onViewScrollEnd,viewListeners.itemmousedown=this.onViewItemMouseDown);
this.grid=grid;this.view=view;this.isRTL=view.getInherited().rtl;view.bufferedRenderer=this;view.preserveScrollOnRefresh=!0;view.animate=!1;this.bindStore(view.dataSource);view.hasOwnProperty('rowHeight')&&(this.rowHeight=view.rowHeight);this.position=0;this.viewListeners=view.on(viewListeners);this.scroller&&(this.scrollListeners=this.scroller.on(scrollerListeners))},checkVariableRowHeight:function(){var hadVariableRowHeight=this.variableRowHeight;this.variableRowHeight=this.view.hasVariableRowHeight();
!!this.variableRowHeight!==!!hadVariableRowHeight&&delete this.rowHeight},bindStore:function(newStore){var currentStore=this.store;currentStore&&currentStore.isFeatureStore||(currentStore&&this.unbindStore(),this.storeListeners=newStore.on({scope:this,groupchange:this.onStoreGroupChange,clear:this.onStoreClear,beforeload:this.onBeforeStoreLoad,load:this.onStoreLoad,destroyable:!0}),this.store=newStore,this.setBodyTop(0),delete this.viewSize,delete this.rowHeight,newStore.isBufferedStore&&newStore.setViewSize(this.viewSize))},
unbindStore:function(){this.storeListeners.destroy();this.storeListeners=this.store=null},onBeforeStoreLoad:function(store){var view=this.view;view&&view.refreshCounter&&(store.isTreeStore||view.preserveScrollOnReload?this.nextRefreshStartIndex=view.all.startIndex:0!==this.scrollTop&&(this.setBodyTop(this.bodyTop=this.scrollTop=this.position=this.scrollHeight=this.nextRefreshStartIndex=0),this.scroller.scrollTo(null,0)),this.lastScrollDirection=this.scrollOffset=null);this.disable()},onStoreLoad:function(){this.enable()},
onStoreClear:function(){var view=this.view;view.rendered&&!this.store.destroyed&&(0!==this.scrollTop&&(this.bodyTop=this.scrollTop=this.position=this.scrollHeight=0,this.nextRefreshStartIndex=null,this.scroller.scrollTo(null,0)),view.refresh(),this.lastScrollDirection=this.scrollOffset=null)},onStoreGroupChange:function(store){this.refreshSize()},onViewBoxReady:function(view){this.refreshScroller(view,this.scrollHeight)},onViewRefresh:function(view,records){var rows=view.all,height;this.checkVariableRowHeight();
view.componentLayoutCounter||!view.headerCt.down('{flex}')&&!this.variableRowHeight?(this.skipNextRefreshSize=!1,this.refreshing||(this.refreshSize(),this.scroller&&(this.scrollTop!==this.scroller.getPosition().y?(this.onViewScroll(),this.onViewScrollEnd()):(this.hasOwnProperty('bodyTop')||(this.bodyTop=rows.startIndex*this.rowHeight,this.scroller.scrollTo(null,this.bodyTop)),this.setBodyTop(this.bodyTop),(height=view.lastBox&&view.lastBox.height)&&rows.getCount()&&(this.onViewResize(view,null,height),
records&&rows.getCount()!==records.length&&(records.length=0,records.push.apply(records,this.store.getRange(rows.startIndex,rows.endIndex)))))))):(view.on({boxready:Ext.Function.pass(this.onViewRefresh,[view,records],this),single:!0}),this.skipNextRefreshSize=!0)},beforeTableLayout:function(ownerContext){var dom=this.view.body.dom;dom&&(ownerContext.bodyHeight=dom.offsetHeight,ownerContext.bodyWidth=dom.offsetWidth)},afterTableLayout:function(ownerContext){var view=this.view;if(ownerContext.bodyHeight&&
view.body.dom){delete this.rowHeight;this.refreshSize();var renderedBlockHeight=view.body.dom.offsetHeight;renderedBlockHeight!==ownerContext.bodyHeight&&(this.onViewResize(view,null,view.el.lastBox.height),renderedBlockHeight=this.bodyHeight,renderedBlockHeight<ownerContext.bodyHeight&&(this.viewSize>=this.store.getCount()?this.setBodyTop(0):(this.bodyTop>this.scrollTop||this.bodyTop+renderedBlockHeight<this.scrollTop+this.viewClientHeight)&&this.setBodyTop(this.scrollTop-this.trailingBufferZone*
this.rowHeight)),view.all.endIndex===view.dataSource.getCount()-1&&this.stretchView(view,this.scrollHeight=this.bodyTop+renderedBlockHeight-1))}},refreshSize:function(){var view=this.view,skipNextRefreshSize=this.skipNextRefreshSize||Ext.Component.pendingLayouts&&Ext.Component.layoutSuspendCount||!view.body.dom;this.skipNextRefreshSize=!1;skipNextRefreshSize||(this.bodyHeight=view.body.dom.offsetHeight,this.scrollHeight=this.getScrollHeight(),this.stretchView(view,this.scrollHeight))},onViewResize:function(view,
width,height,oldWidth,oldHeight){this.refreshSize();oldHeight&&height===oldHeight||(this.viewClientHeight=view.lockingPartner?this.scroller&&this.scroller.getClientSize().y||height:view.el.dom.clientHeight,view=Math.ceil(height/this.rowHeight)+this.trailingBufferZone+this.leadingBufferZone,this.viewSize=this.setViewSize(view))},stretchView:function(view,scrollRange){this.scrollTop>scrollRange&&(this.position=this.scrollTop=Math.max(scrollRange-this.bodyHeight,0),this.scroller.scrollTo(null,this.scrollTop));
this.bodyTop>scrollRange&&view.body.translate(null,this.bodyTop=this.position);view.getScrollable()&&this.refreshScroller(view,scrollRange)},refreshScroller:function(view,scrollRange){var scroller=view.getScrollable();scroller&&(scroller.setElementSize&&scroller.setElementSize(),scroller.setSize({x:view.headerCt.getTableWidth(),y:scrollRange}),view.lockingPartner&&this.scroller.setSize({x:0,y:scrollRange}))},setViewSize:function(viewSize,fromLockingPartner){var me=this,store=me.store,view=me.view,
ownerGrid,rows=view.all,elCount=rows.getCount(),storeCount=store.getCount(),lockingPartner=me.view.lockingPartner&&me.view.lockingPartner.bufferedRenderer,diff=elCount-viewSize,oldTop=0;var end$jscomp$0=Math.max(0,storeCount-1);var pointyEnd=Ext.Number.sign(me.getFirstVisibleRowIndex()-rows.startIndex-(rows.endIndex-me.getLastVisibleRowIndex()));lockingPartner&&!fromLockingPartner&&lockingPartner.view.componentLayoutCounter&&(lockingPartner.viewSize>viewSize?viewSize=lockingPartner.viewSize:view.componentLayoutCounter&&
lockingPartner.setViewSize(viewSize,!0));if(diff=elCount-viewSize){me.scrollTop=me.scroller?me.scroller.getPosition().y:0;me.viewSize=viewSize;store.isBufferedStore&&store.setViewSize(viewSize);if(elCount){var start$jscomp$0=Math.max(0,Math.min(rows.startIndex,storeCount-viewSize));end$jscomp$0=Math.min(start$jscomp$0+viewSize-1,end$jscomp$0);start$jscomp$0===rows.startIndex&&end$jscomp$0===rows.endIndex?0>diff&&me.handleViewScroll(pointyEnd):(lockingPartner&&lockingPartner.disable(),0>diff?storeCount>
viewSize&&storeCount>elCount?store.getRange(start$jscomp$0,end$jscomp$0,{callback:function(newRecords,start,end){ownerGrid=view.ownerGrid;end>rows.endIndex&&rows.scroll(Ext.Array.slice(newRecords,rows.endIndex+1,Infinity),1,0);start<rows.startIndex&&(oldTop=rows.first(!0),rows.scroll(Ext.Array.slice(newRecords,0,rows.startIndex-start),-1,0),me.bodyTop-=oldTop.offsetTop);me.setBodyTop(me.bodyTop);lockingPartner&&!fromLockingPartner&&(ownerGrid.syncRowHeight||ownerGrid.syncRowHeightOnNextLayout)&&(lockingPartner.setViewSize(viewSize,
!0),ownerGrid.syncRowHeights())}}):me.refreshView(0):(1===pointyEnd&&(oldTop=rows.item(rows.startIndex+diff,!0).offsetTop),rows.clip(pointyEnd,diff),me.setBodyTop(me.bodyTop+oldTop)),lockingPartner&&lockingPartner.enable())}me.refreshSize()}return viewSize},getViewRange:function(){var view=this.view,rows=view.all,rowCount=rows.getCount(),lockingPartnerRows=view.lockingPartner&&view.lockingPartner.all;view=this.store;var startIndex=0;!this.hasOwnProperty('viewSize')&&this.ownerCt&&this.ownerCt.height&&
(this.viewSize=Math.ceil(this.ownerCt.height/this.rowHeight));if(!view.data.getCount())return[];!rowCount&&lockingPartnerRows&&lockingPartnerRows.getCount()?(startIndex=lockingPartnerRows.startIndex,rows=Math.min(lockingPartnerRows.endIndex,startIndex+this.viewSize-1,view.getCount()-1)):(rowCount?startIndex=rows.startIndex:view.isBufferedStore&&(view.currentPage||(view.currentPage=1),startIndex=rows.startIndex=(view.currentPage-1)*(view.pageSize||1),view.currentPage=1),rows=startIndex+(this.viewSize||
view.defaultViewSize)-1);return view.getRange(startIndex,rows)},onReplace:function(store,startIndex,oldRecords,newRecords){var scroller=this.scroller,view=this.view,rows=view.all,renderedSize=rows.getCount(),lastAffectedIndex=startIndex+oldRecords.length-1,recordIncrement=newRecords.length-oldRecords.length,scrollIncrement=recordIncrement*this.rowHeight;if(startIndex>=rows.startIndex+this.viewSize)this.refreshSize();else if(renderedSize&&lastAffectedIndex<rows.startIndex&&rows.getCount()>=this.viewSize)rows.moveBlock(recordIncrement),
this.refreshSize(),store=rows.startIndex,0<recordIncrement&&(this.doNotMirror=!0,this.handleViewScroll(-1),this.doNotMirror=!1),rows.startIndex===store?rows.startIndex&&(this.setBodyTop(this.bodyTop+=scrollIncrement),view.suspendEvent('scroll'),view.scrollBy(0,scrollIncrement),view.resumeEvent('scroll'),this.position=this.scrollTop=this.scroller.getPosition().y):(view.suspendEvent('scroll'),view.scrollBy(0,(store-rows.startIndex)*this.rowHeight),view.resumeEvent('scroll')),view.refreshSize(rows.getCount()!==
renderedSize);else if(renderedSize&&startIndex>rows.endIndex){this.refreshSize();if(0<recordIncrement)this.onRangeFetched(null,rows.startIndex,Math.min(store.getCount(),rows.startIndex+this.viewSize)-1,null,!0);view.refreshSize(rows.getCount()!==renderedSize)}else startIndex<rows.startIndex&&lastAffectedIndex<=rows.endIndex?this.refreshView(rows.startIndex-oldRecords.length+newRecords.length):(startIndex<rows.startIndex&&lastAffectedIndex<=rows.endIndex&&scrollIncrement&&(scroller.suspendEvent('scroll'),
scroller.scrollTo(null,this.position=this.scrollTop+=scrollIncrement),scroller.resumeEvent('scroll')),this.refreshView())},scrollTo:function(recordIdx,options){var args=arguments,me=this,view=me.view,lockingPartner=view.lockingPartner&&view.lockingPartner.grid.isVisible()&&view.lockingPartner.bufferedRenderer,store=me.store,total=store.getCount(),startIdx,targetRow;void 0===options||options instanceof Object||(options={select:args[1],callback:args[2],scope:args[3]});if((startIdx=view.dataSource.groupingFeature)&&
startIdx.collapsible){var record=recordIdx.isEntity?recordIdx:view.store.getAt(Math.min(Math.max(recordIdx,0),view.store.getCount()-1));(args=startIdx.getMetaGroup(record))&&args.isCollapsed?startIdx.isExpandingOrCollapsing||record===args.placeholder?(record=args.placeholder,recordIdx=startIdx.indexOfPlaceholder(record)):(startIdx.expand(startIdx.getGroup(record).getGroupKey()),total=store.getCount(),recordIdx=startIdx.indexOf(record)):recordIdx=startIdx.indexOf(record)}else if(recordIdx.isEntity){if(record=
recordIdx,recordIdx=store.indexOf(record),-1===recordIdx)return}else recordIdx=Math.min(Math.max(recordIdx,0),total-1),record=store.getAt(recordIdx);if(record&&(targetRow=view.getNode(record)))view.grid.ensureVisible(record,options),me.onViewScroll(),me.onViewScrollEnd();else{if(recordIdx<view.all.startIndex){var direction=-1;startIdx=Math.max(Math.min(recordIdx-Math.floor((me.leadingBufferZone+me.trailingBufferZone)/2),total-me.viewSize+1),0);total=Math.min(startIdx+me.viewSize-1,total-1)}else direction=
1,total=Math.min(recordIdx+Math.floor((me.leadingBufferZone+me.trailingBufferZone)/2),total-1),startIdx=Math.max(total-(me.viewSize-1),0);var tableTop=Math.max(startIdx*me.rowHeight,0);store.getRange(startIdx,total,{callback:function(range,start,end){me.renderRange(start,end,!0,!0);record=store.data.getRange(recordIdx,recordIdx+1)[0];targetRow=view.getNode(record);view.body.translate(null,me.bodyTop=tableTop);1===direction&&me.refreshSize();lockingPartner&&(lockingPartner.renderRange(start,end,!0,
!0),me.syncRowHeights(),lockingPartner.view.body.translate(null,lockingPartner.bodyTop=tableTop),1===direction&&lockingPartner.refreshSize());targetRow&&(view.grid.ensureVisible(record,options),me.scrollTop=me.position=me.scroller.getPosition().y,lockingPartner&&(lockingPartner.position=lockingPartner.scrollTop=me.scrollTop))}})}},onViewItemMouseDown:function(){Ext.getDoc().on({mouseup:this.onDocumentMouseUp,scope:this,single:!0});this.preservePointerEvents=!0},onDocumentMouseUp:function(){this.preservePointerEvents=
!1},onViewScroll:function(scroller,x,y){scroller=this.view.body.dom;x=this.store.getCount();y=this.scrollTop=this.scroller.getPosition().y;scroller&&(this.needsPointerEventsFix&&!this.preservePointerEvents&&(scroller.style.pointerEvents='none'),!(this.disabled||x<this.viewSize)&&(scroller=y-this.position,x=0<scroller?1:-1,20<=Math.abs(scroller)||x!==this.lastScrollDirection))&&(this.lastScrollDirection=x,this.handleViewScroll(this.lastScrollDirection,scroller))},onViewScrollEnd:function(){var bodyDom=
this.view.body.dom;bodyDom&&this.needsPointerEventsFix&&(bodyDom.style.pointerEvents='',this.preservePointerEvents=!1)},handleViewScroll:function(direction,vscrollDistance){var rows=this.view.all,storeCount=this.store.getCount(),viewSize=this.viewSize,lastItemIndex=storeCount-1;storeCount=Math.max(0,storeCount-viewSize);if(-1===direction){if(rows.startIndex&&this.topOfViewCloseToEdge()){var requestStart=Math.max(0,this.getLastVisibleRowIndex()+this.trailingBufferZone-viewSize);requestStart>rows.startIndex&&
(requestStart=rows.startIndex+Math.floor(vscrollDistance/this.rowHeight))}}else rows.endIndex<lastItemIndex&&this.bottomOfViewCloseToEdge()&&(requestStart=Math.max(0,Math.min(this.getFirstVisibleRowIndex()-this.trailingBufferZone,storeCount)));if(null==requestStart)this.position=this.scrollTop,this.loadId++;else if(direction=Math.min(requestStart+viewSize-1,lastItemIndex),this.variableRowHeight&&direction===rows.endIndex&&direction<lastItemIndex&&(direction++,requestStart++),requestStart!==rows.startIndex||
direction!==rows.endIndex)return this.renderRange(requestStart,direction),!0},bottomOfViewCloseToEdge:function(){return this.variableRowHeight?this.bodyTop+this.bodyHeight<this.scrollTop+this.view.lastBox.height+this.numFromEdge*this.rowHeight:this.view.all.endIndex-this.getLastVisibleRowIndex()<this.numFromEdge},topOfViewCloseToEdge:function(){return this.variableRowHeight?this.bodyTop>this.scrollTop-this.numFromEdge*this.rowHeight:this.getFirstVisibleRowIndex()-this.view.all.startIndex<this.numFromEdge},
refreshView:function(startIndex){var viewSize=this.viewSize,view=this.view,rows=view.all,store=this.store,storeCount=store.getCount(),maxIndex=Math.max(0,storeCount-1);view=view.lockingPartner&&view.lockingPartner.all;if(storeCount)storeCount<viewSize?(startIndex=0,rows=maxIndex):null==startIndex&&!rows.getCount()&&view&&view.getCount()?(startIndex=view.startIndex,rows=Math.min(view.endIndex,startIndex+viewSize-1,maxIndex)):(null==startIndex&&(null!=this.nextRefreshStartIndex?(startIndex=this.nextRefreshStartIndex,
this.nextRefreshStartIndex=null):startIndex=rows.startIndex),startIndex=Math.max(0,Math.min(startIndex,maxIndex-viewSize+1)),rows=Math.min(startIndex+viewSize-1,maxIndex),rows-startIndex+1>viewSize&&(startIndex=rows-viewSize+1));else return this.doRefreshView([],0,0);0===startIndex&&-1===rows?this.doRefreshView([],0,0):store.getRange(startIndex,rows,{callback:this.doRefreshView,scope:this})},doRefreshView:function(range,startIndex,endIndex,options){endIndex=this.view;options=this.scroller;var rows=
endIndex.all,previousStartIndex=rows.startIndex,previousEndIndex=rows.endIndex,prevRowCount=rows.getCount(),viewMoved=startIndex!==rows.startIndex,scrollIncrement;endIndex.refreshing=this.refreshing=!0;if(endIndex.refreshCounter){if(endIndex.hasListeners.beforerefresh&&!1===endIndex.fireEvent('beforerefresh',endIndex))return endIndex.refreshNeeded=endIndex.refreshing=this.refreshing=!1;var restoreFocus=endIndex.saveFocusState();endIndex.clearViewEl(!0);endIndex.refreshCounter++;if(range.length){if(endIndex.doAdd(range,
startIndex),viewMoved){var previousFirstItem=rows.item(previousStartIndex,!0);previousEndIndex=rows.item(previousEndIndex,!0);previousFirstItem?scrollIncrement=-previousFirstItem.offsetTop:previousEndIndex&&(scrollIncrement=rows.last(!0).offsetTop-previousEndIndex.offsetTop);scrollIncrement?this.scrollTop=(previousFirstItem=Math.max(this.bodyTop+scrollIncrement,0))?this.scrollTop+scrollIncrement:0:(previousFirstItem=startIndex*this.rowHeight,this.scrollTop=Math.max(previousFirstItem+this.rowHeight*
(previousFirstItem<this.bodyTop?this.leadingBufferZone:this.trailingBufferZone),0))}}else this.scrollTop&&(previousFirstItem=this.scrollTop=0),endIndex.addEmptyText();viewMoved&&(this.setBodyTop(previousFirstItem),options.suspendEvent('scroll'),options.scrollTo(null,this.position=this.scrollTop),options.resumeEvent('scroll'));this.refreshSize();endIndex.refreshSize(rows.getCount()!==prevRowCount);endIndex.fireItemMutationEvent('refresh',endIndex,range);restoreFocus();endIndex.headerCt.setSortState()}else endIndex.refresh();
endIndex.refreshNeeded=endIndex.refreshing=this.refreshing=!1},renderRange:function(start,end,forceSynchronous,fromLockingPartner){var rows=this.view.all,store=this.store;if(start!==rows.startIndex||end!==rows.endIndex)if(store.rangeCached(start,end))if(this.cancelLoad(),this.synchronousRender||forceSynchronous)this.onRangeFetched(null,start,end,null,fromLockingPartner);else this.renderTask||(this.renderTask=new Ext.util.DelayedTask(this.onRangeFetched,this,null,!1)),this.renderTask.delay(1,null,
null,[null,start,end,null,fromLockingPartner]);else this.attemptLoad(start,end,this.scrollTop)},onRangeFetched:function(range,start,end,options,fromLockingPartner){var view=this.view,scroller=this.scroller,viewEl=view.el,rows=view.all,increment=0,lockingPartner=view.lockingPartner&&!fromLockingPartner&&!this.doNotMirror&&view.lockingPartner.bufferedRenderer,variableRowHeight=this.variableRowHeight,oldBodyHeight=this.bodyHeight,layoutCount=view.componentLayoutCounter,containsFocus,noOverlap;if(!view.destroyed){if(range)fromLockingPartner||
(this.scrollTop=this.scroller.getPosition().y);else if(range=this.store.getRange(start,end),!range)return;var activeEl=Ext.Element.getActiveElement(!0);(containsFocus=viewEl.contains(activeEl))&&activeEl.suspendFocusEvents();var calculatedTop=start*this.rowHeight;if(start<rows.startIndex&&end>rows.endIndex){scroller=rows.startIndex-start;view.clearViewEl(!0);fromLockingPartner=view.doAdd(range,start);view.fireItemMutationEvent('itemadd',range,start,fromLockingPartner,view);for(rows=0;rows<scroller;rows++)increment-=
fromLockingPartner[rows].offsetHeight;increment=this.bodyTop+increment}else{if(noOverlap=this.teleported||start>rows.endIndex||end<rows.startIndex)view.clearViewEl(!0),this.teleported=!1;rows.getCount()?end>rows.endIndex?(fromLockingPartner=Math.max(start-rows.startIndex,0),variableRowHeight&&(increment=rows.item(rows.startIndex+fromLockingPartner,!0).offsetTop),fromLockingPartner=rows.scroll(Ext.Array.slice(range,rows.endIndex+1-start),1,fromLockingPartner),increment=variableRowHeight?this.bodyTop+
increment:calculatedTop):(fromLockingPartner=Math.max(rows.endIndex-end,0),increment=rows.startIndex,fromLockingPartner=rows.scroll(Ext.Array.slice(range,0,rows.startIndex-start),-1,fromLockingPartner),variableRowHeight)?(increment=this.bodyTop-rows.item(increment,!0).offsetTop,rows.startIndex)?0>increment&&(increment=rows.startIndex*this.rowHeight,scroller.scrollTo(null,this.position=this.scrollTop+=increment),increment=this.bodyTop+increment):increment&&(scroller.scrollTo(null,this.position=this.scrollTop-=
increment),increment=0):increment=calculatedTop:(fromLockingPartner=view.doAdd(range,start),view.fireItemMutationEvent('itemadd',range,start,fromLockingPartner,view),increment=calculatedTop,noOverlap&&variableRowHeight&&(scroller=this.scrollTop<this.position?this.leadingBufferZone:this.trailingBufferZone,increment=Math.max(this.scrollTop-rows.item(rows.startIndex+scroller-1,!0).offsetTop,0)));this.position=this.scrollTop}containsFocus&&(activeEl.resumeFocusEvents(),viewEl.contains(activeEl)||(viewEl=
view.actionableMode?view.actionPosition:view.lastFocused)&&viewEl.column&&(view.renderingRows=!0,view.onFocusLeave({}),view.renderingRows=!1,viewEl=viewEl.column.focusable?viewEl.column:viewEl.column.el.findTabbableElements()[0],viewEl||(viewEl=view.el),viewEl.focus()));increment=Math.max(Math.floor(increment),0);view.positionBody&&this.setBodyTop(increment);fromLockingPartner&&lockingPartner&&!lockingPartner.disabled&&(lockingPartner.scrollTop=lockingPartner.position=this.scrollTop,lockingPartner.view.ownerCt.isVisible()&&
(range=lockingPartner.onRangeFetched(range,start,end,options,!0),view.ownerGrid.syncRowHeight||view.ownerGrid.syncRowHeightOnNextLayout||lockingPartner.variableRowHeight!==variableRowHeight)&&(this.syncRowHeights(fromLockingPartner,range),view.ownerGrid.syncRowHeightOnNextLayout=!1),lockingPartner.bodyTop!==increment&&lockingPartner.setBodyTop(increment),lockingPartner.scroller.scrollTo(null,this.scrollTop));this.variableRowHeight&&this.bodyHeight!==oldBodyHeight&&view.componentLayoutCounter===layoutCount&&
(delete this.rowHeight,this.refreshSize());return fromLockingPartner}},syncRowHeights:function(itemEls,partnerItemEls){var ln=0,otherLn=1,mySynchronizer=[],otherSynchronizer=[],RowSynchronizer=Ext.grid.locking.RowSynchronizer,i,rowSync;itemEls&&partnerItemEls&&(ln=itemEls.length,otherLn=partnerItemEls.length);ln!==otherLn&&(itemEls=this.view.all.slice(),partnerItemEls=this.view.lockingPartner.all.slice(),ln=otherLn=itemEls.length);for(i=0;i<ln;i++)mySynchronizer[i]=rowSync=new RowSynchronizer(this.view,
itemEls[i]),rowSync.measure();for(i=0;i<otherLn;i++)otherSynchronizer[i]=rowSync=new RowSynchronizer(this.view.lockingPartner,partnerItemEls[i]),rowSync.measure();for(i=0;i<ln;i++)mySynchronizer[i].finish(otherSynchronizer[i]),otherSynchronizer[i].finish(mySynchronizer[i]);this.syncRowHeightsFinish()},syncRowHeightsFinish:function(){var view=this.view,lockingPartner=view.lockingPartner.bufferedRenderer;view.componentLayoutCounter&&(delete this.rowHeight,this.refreshSize(),lockingPartner.rowHeight!==
this.rowHeight&&(delete lockingPartner.rowHeight,lockingPartner.refreshSize()));this.bodyHeight=lockingPartner.bodyHeight=view.body.dom.offsetHeight},setBodyTop:function(bodyTop){var view=this.view,rows=view.all,store=this.store,body=view.body;body.dom&&(this.translateBody(body,bodyTop),this.variableRowHeight?(this.bodyHeight=body.dom.offsetHeight,rows.endIndex===store.getCount()-1?this.scrollHeight=bodyTop+this.bodyHeight-1:this.scrollHeight=this.getScrollHeight(),this.stretchView(view,this.scrollHeight)):
this.bodyHeight=rows.getCount()*this.rowHeight)},translateBody:function(body,bodyTop){body.translate(null,this.bodyTop=bodyTop)},getFirstVisibleRowIndex:function(startRow,endRow,viewportTop,viewportBottom){var rows=this.view.all,elements=rows.elements,clientHeight=this.viewClientHeight;var targetTop=this.bodyTop;if(rows.getCount()&&this.variableRowHeight){if(arguments.length){if(startRow===endRow)return endRow;rows=startRow+Math.floor((endRow-startRow)/2)}else{startRow=rows.startIndex;endRow=rows.endIndex;
viewportTop=this.scrollTop;viewportBottom=viewportTop+clientHeight;if(targetTop>viewportBottom||targetTop+this.bodyHeight<viewportTop)return this.teleported=!0,Math.floor(this.scrollTop/this.rowHeight);rows=startRow+Math.min(this.numFromEdge+(-1===this.lastScrollDirection?this.leadingBufferZone:this.trailingBufferZone),Math.floor((endRow-startRow)/2))}targetTop+=elements[rows].offsetTop;if(targetTop+elements[rows].offsetHeight<=viewportTop)return this.getFirstVisibleRowIndex(rows+1,endRow,viewportTop,
viewportBottom);if(targetTop<=viewportTop)return rows;if(rows!==startRow)return this.getFirstVisibleRowIndex(startRow,rows-1,viewportTop,viewportBottom)}return Math.floor(this.scrollTop/this.rowHeight)},getLastVisibleRowIndex:function(startRow,endRow,viewportTop,viewportBottom){var rows=this.view.all,elements=rows.elements,clientHeight=this.viewClientHeight;var targetTop=this.bodyTop;if(rows.getCount()&&this.variableRowHeight){if(arguments.length){if(startRow===endRow)return endRow;rows=startRow+
Math.floor((endRow-startRow)/2)}else{startRow=rows.startIndex;endRow=rows.endIndex;viewportTop=this.scrollTop;viewportBottom=viewportTop+clientHeight;if(targetTop>viewportBottom||targetTop+this.bodyHeight<viewportTop)return this.teleported=!0,Math.floor(this.scrollTop/this.rowHeight)+Math.ceil(clientHeight/this.rowHeight);rows=endRow-Math.min(this.numFromEdge+(1===this.lastScrollDirection?this.leadingBufferZone:this.trailingBufferZone),Math.floor((endRow-startRow)/2))}targetTop+=elements[rows].offsetTop;
if(targetTop>viewportBottom)return this.getLastVisibleRowIndex(startRow,rows-1,viewportTop,viewportBottom);elements=targetTop+elements[rows].offsetHeight;if(elements>=viewportBottom)return rows;if(rows!==endRow)return this.getLastVisibleRowIndex(rows+1,endRow,viewportTop,viewportBottom)}return this.getFirstVisibleRowIndex()+Math.ceil(clientHeight/this.rowHeight)},getScrollHeight:function(){var rows=this.view.all,recCount=this.store.getCount(),rowCount=rows.getCount();if(!recCount)return 0;if(!this.hasOwnProperty('rowHeight'))if(rowCount)if(this.variableRowHeight)this.rowHeight=
Math.floor(this.bodyHeight/rowCount);else{var row=rows.first();var rowHeight=row.getHeight();Ext.isIE8&&(row=row.getBorderWidth('b'),0<row&&(rowHeight-=row));this.rowHeight=rowHeight}else delete this.rowHeight;this.variableRowHeight?rows.endIndex===recCount-1?recCount=this.bodyTop+this.bodyHeight-1:(recCount=Math.floor((recCount-rowCount)*this.rowHeight)+this.bodyHeight,recCount+=this.bodyTop-rows.startIndex*this.rowHeight):recCount=Math.floor(recCount*this.rowHeight);return this.scrollHeight=recCount},
attemptLoad:function(start,end,loadScrollPosition){this.scrollToLoadBuffer?(this.loadTask||(this.loadTask=new Ext.util.DelayedTask),this.loadTask.delay(this.scrollToLoadBuffer,this.doAttemptLoad,this,[start,end,loadScrollPosition])):this.doAttemptLoad(start,end,loadScrollPosition)},cancelLoad:function(){this.loadTask&&this.loadTask.cancel()},doAttemptLoad:function(start$jscomp$0,end$jscomp$0,loadScrollPosition){var me=this;me.destroyed||me.store.getRange(start$jscomp$0,end$jscomp$0,{loadId:++me.loadId,
callback:function(range,start,end,options){if(options.loadId===me.loadId&&me.scrollTop===loadScrollPosition)me.onRangeFetched(range,start,end,options)},fireEvent:!1})},destroy:function(){var view=this.view;this.cancelLoad();view&&view.el&&view.un('scroll',this.onViewScroll,this);this.store&&this.unbindStore();Ext.destroy(this.viewListeners,this.stretcher,this.gridListeners,this.scrollListeners);Ext.plugin.Abstract.prototype.destroy.call(this)}},0,0,0,0,['plugin.bufferedrenderer'],0,[Ext.grid.plugin,
'BufferedRenderer'],0);
Ext.cmd.derive('Ext.grid.plugin.Editing',Ext.plugin.Abstract,{clicksToEdit:2,triggerEvent:void 0,relayedEvents:['beforeedit','edit','validateedit','canceledit'],defaultFieldUI:'default',defaultFieldXType:'textfield',editStyle:'',constructor:function(config){var me=this;Ext.plugin.Abstract.prototype.constructor.call(this,config);me.mixins.observable.constructor.call(me);me.on('edit',function(editor,e){me.fireEvent('afteredit',editor,e)})},init:function(grid){var ownerLockable=grid.ownerLockable;this.grid=
grid;this.view=grid.view;this.initEvents();grid.rendered?this.setup():this.mon(grid,{beforereconfigure:this.onBeforeReconfigure,reconfigure:this.onReconfigure,scope:this,beforerender:{fn:this.onBeforeRender,single:!0,scope:this}});grid.editorEventRelayers=grid.relayEvents(this,this.relayedEvents);ownerLockable&&(ownerLockable.editorEventRelayers=ownerLockable.relayEvents(this,this.relayedEvents));grid.isEditable=!0;grid.editingPlugin=grid.view.editingPlugin=this},onBeforeReconfigure:function(){this.reconfiguring=
!0},onReconfigure:function(){this.setup();delete this.reconfiguring},onBeforeRender:function(){this.setup()},setup:function(){this.initFieldAccessors(this.grid.getTopLevelColumnManager().getColumns())},destroy:function(){var grid=this.grid;Ext.destroy(this.keyNav);this.clearListeners();grid&&(grid.ownerLockable&&(Ext.destroy(grid.ownerLockable.editorEventRelayers),grid.ownerLockable.editorEventRelayers=null),Ext.destroy(grid.editorEventRelayers),grid.editorEventRelayers=null,grid.editingPlugin=grid.view.editingPlugin=
null);Ext.plugin.Abstract.prototype.destroy.call(this)},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(columns){columns.isGroupHeader?columns=columns.getGridColumns():Ext.isArray(columns)||(columns=[columns]);var me=this,c,cLen=columns.length,getEditor=function(record,defaultField){return me.getColumnField(this,defaultField)},hasEditor=function(){return me.hasColumnField(this)},setEditor=function(field){me.setColumnField(this,field)};for(c=0;c<cLen;c++){var column=columns[c];
column.getEditor||(column.getEditor=getEditor);column.hasEditor||(column.hasEditor=hasEditor);column.setEditor||(column.setEditor=setEditor)}},removeFieldAccessors:function(columns){columns.isGroupHeader?columns=columns.getGridColumns():Ext.isArray(columns)||(columns=[columns]);var c,cLen=columns.length;for(c=0;c<cLen;c++){var column=columns[c];column.getEditor=column.hasEditor=column.setEditor=column.field=column.editor=null}},getColumnField:function(columnHeader,defaultField){var field=columnHeader.field;
field&&field.isFormField||(field=columnHeader.field=this.createColumnField(columnHeader,defaultField));field&&'default'===field.ui&&!field.hasOwnProperty('ui')&&(field.ui=this.defaultFieldUI);return field},hasColumnField:function(columnHeader){return!(!columnHeader.field||!columnHeader.field.isComponent)},setColumnField:function(columnHeader,field){columnHeader.field=field;columnHeader.field=this.createColumnField(columnHeader)},createColumnField:function(column,defaultField){var field=column.field;
!field&&column.editor&&(field=column.editor=Ext.clone(column.editor),field.field&&(field=field.field,field.editorCfg=column.editor,delete field.editorCfg.field),column.editor=null);!field&&defaultField&&(field=defaultField);field&&(defaultField=column.dataIndex,field.isComponent?field.column=column:(field=Ext.isString(field)?{name:defaultField,xtype:field,column:column}:Ext.apply({name:defaultField,column:column},field),field=Ext.ComponentManager.create(field,this.defaultFieldXType)),field.dataIndex=
defaultField,field.isEditorComponent=!0,column.field=field);return field},initEvents:function(){this.initEditTriggers();this.initCancelTriggers()},initCancelTriggers:Ext.emptyFn,initEditTriggers:function(){var view=this.view;'cellfocus'===this.triggerEvent?this.mon(view,'cellfocus',this.onCellFocus,this):'rowfocus'===this.triggerEvent?this.mon(view,'rowfocus',this.onRowFocus,this):(view.getSelectionModel().isCellModel&&(view.onCellFocus=this.beforeViewCellFocus.bind(this)),this.mon(view,this.triggerEvent||
'cell'+(1===this.clicksToEdit?'click':'dblclick'),this.onCellClick,this));this.initAddRemoveHeaderEvents();this.view.getNavigationModel().addKeyBindings({esc:this.onEscKey,scope:this})},beforeViewCellFocus:function(position){!this.view.selModel.keyNavigation&&this.editing&&this.isCellEditable&&this.isCellEditable(position.row,position.columnHeader)||this.view.focusCell.apply(this.view,arguments)},onRowFocus:function(record,row,rowIdx){this.startEdit(row,0)},onCellFocus:function(record,cell,position){this.startEdit(position.row,
position.column)},onCellClick:function(view,cell,colIdx,record,row,rowIdx,e){row=view.ownerGrid;rowIdx=view.expanderSelector;colIdx=view.ownerCt.getColumnManager().getHeaderAtIndex(colIdx).getEditor(record);!this.shouldStartEdit(colIdx)||rowIdx&&e.getTarget(rowIdx)?row.actionableMode&&view.owns(e.target)&&Ext.Component.fromElement(e.target,cell)&&(void 0).focusable||row.actionableMode&&row.setActionableMode(!1):row.setActionableMode(!0,e.position)},initAddRemoveHeaderEvents:function(){this.mon(this.grid.headerCt,
{scope:this,add:this.onColumnAdd,columnmove:this.onColumnMove,beforedestroy:this.beforeGridHeaderDestroy})},onColumnAdd:function(ct,column){this.initFieldAccessors(column)},onColumnMove:Ext.emptyFn,onEscKey:function(e){if(this.editing&&(e=Ext.getCmp(e.getTarget().getAttribute('componentId')),!(e&&e.isPickerField&&e.isExpanded)))return this.cancelEdit()},beforeEdit:Ext.emptyFn,shouldStartEdit:function(editor){return!!editor},getEditingContext:function(record,columnHeader){var grid=this.grid;grid=grid.visibleColumnManager;
var gridRow;var view=this.grid.lockable?this.grid:this.view;if(!view.componentLayoutCounter)view.on({boxready:Ext.Function.bind(this.startEdit,this,[record,columnHeader]),single:!0});else if(!this.disabled&&!this.grid.collapsed&&this.grid.view.isVisible(!0)&&(Ext.isNumber(columnHeader)&&(columnHeader=grid.getHeaderAtIndex(Math.min(columnHeader,grid.getColumns().length))),columnHeader)){columnHeader.hidden&&(columnHeader=columnHeader.next(':not([hidden])')||columnHeader.prev(':not([hidden])'));view=
columnHeader.getView();grid=view.ownerCt;if(Ext.isNumber(record)){var rowIdx=Math.min(record,view.dataSource.getCount()-1);record=view.dataSource.getAt(rowIdx)}else rowIdx=view.dataSource.indexOf(record);grid.ensureVisible(record,{column:columnHeader});if(gridRow=view.getRow(record)){var colIdx=view.getVisibleColumnManager().indexOf(columnHeader);if(record)return rowIdx=(new Ext.grid.CellContext(view)).setAll(view,rowIdx,colIdx,record,columnHeader),rowIdx.grid=grid,rowIdx.store=view.dataSource,rowIdx.field=
columnHeader.dataIndex,rowIdx.value=rowIdx.originalValue=record.get(columnHeader.dataIndex),rowIdx.row=gridRow,rowIdx.node=view.getNode(record),rowIdx.cell=rowIdx.getCell(!0),rowIdx}}},cancelEdit:function(){this.editing=!1;this.fireEvent('canceledit',this,this.context)},completeEdit:function(){this.editing&&this.validateEdit()&&this.fireEvent('edit',this,this.context);this.context=null;this.editing=!1},validateEdit:function(context){return!1!==this.fireEvent('validateedit',this,context)&&!context.cancel}},
1,0,0,0,['editing.editing'],[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Ext.grid.plugin,'Editing'],0);
Ext.cmd.derive('Ext.grid.plugin.CellEditing',Ext.grid.plugin.Editing,{init:function(grid){grid.registerActionable(this);Ext.grid.plugin.Editing.prototype.init.apply(this,arguments);this.editors=new Ext.util.MixedCollection(!1,function(editor){return editor.editorId})},beforeGridHeaderDestroy:function(headerCt){headerCt=this.grid.getColumnManager().getColumns();var len=headerCt.length,i,editor;for(i=0;i<len;i++){var column=headerCt[i];(editor=this.editors.getByKey(column.getItemId()))||(editor=column.editor||
column.field);Ext.destroy(editor);this.removeFieldAccessors(column)}},onReconfigure:function(grid,store,columns){columns&&this.editors.clear();Ext.grid.plugin.Editing.prototype.onReconfigure.call(this)},destroy:function(){this.editors&&(this.editors.each(Ext.destroy,Ext),this.editors.clear());Ext.grid.plugin.Editing.prototype.destroy.call(this)},initCancelTriggers:function(){this.mon(this.grid,{columnresize:this.cancelEdit,columnmove:this.cancelEdit,scope:this})},isCellEditable:function(record,columnHeader){record=
this.getEditingContext(record,columnHeader);if(record.view.isVisible(!0)&&record&&(columnHeader=record.column,record=record.record,columnHeader&&this.getEditor(record,columnHeader)))return!0},activateCell:function(position,skipBeforeCheck,doFocus){var record=position.record,column=position.column,context,prevEditor=this.getActiveEditor();if((context=this.getEditingContext(record,column))&&column.getEditor(record)){if(prevEditor&&prevEditor.editing){this.view.actionPosition=null;var contextGeneration=
context.generation;if(!1===prevEditor.completeEdit())return;context.generation===contextGeneration&&context.refresh()}if(!skipBeforeCheck){contextGeneration=context.generation;if(!1===this.beforeEdit(context)||!1===this.fireEvent('beforeedit',this,context)||context.cancel)return;context.generation===contextGeneration&&context.refresh()}record=this.getEditor(record,column);context.cell!==context.getCell(!0)&&(context=this.getEditingContext(context.rowIdx,context.colIdx),position.setPosition(context));
if(record){skipBeforeCheck=Ext.get(context.cell);if(record.rendered){if(column=record.el.dom.parentNode,column!==skipBeforeCheck.dom){try{column.removeChild(record.el.dom)}catch(e){}record.container=skipBeforeCheck;skipBeforeCheck.dom.appendChild(record.el.dom,skipBeforeCheck.dom.firstChild)}}else record.hidden=!0,record.render(skipBeforeCheck);column=context.record.get(context.column.dataIndex);column!==context.originalValue&&(context.value=context.originalValue=column);this.setEditingContext(context);
record.startEdit(skipBeforeCheck,context.value,doFocus||!1);record.editing&&(this.setActiveEditor(record),this.setActiveRecord(context.record),this.setActiveColumn(context.column),this.editing=!0,this.scroll=position.view.el.getScroll());return record.editing}}},activateRow:Ext.emptyFn,deactivate:function(){var context=this.context,editors=this.editors.items,len=editors.length,i;for(i=0;i<len;i++){var editor=editors[i];context.view.renderingRows&&(editor.editing&&this.cancelEdit(),editor.cacheElement())}},
suspend:function(){var editor=this.activeEditor;editor&&editor.editing&&(this.suspendedEditor=editor,this.suspendEvents(),editor.suspendEvents(),editor.cancelEdit(!0),editor.resumeEvents(),this.resumeEvents())},resume:function(position){var editor=this.activeEditor=this.suspendedEditor;if(editor){this.suspendEvents();editor.suspendEvents();var result=this.activateCell(position,!0,!0);editor.resumeEvents();this.resumeEvents()}return result},startEdit:function(record,columnHeader){this.startEditByPosition((new Ext.grid.CellContext(this.view)).setPosition(record,
columnHeader))},completeEdit:function(remainVisible){var activeEd=this.getActiveEditor();activeEd&&activeEd.completeEdit(remainVisible)},setEditingContext:function(context){this.context=context},setActiveEditor:function(ed){this.activeEditor=ed},getActiveEditor:function(){return this.activeEditor},setActiveColumn:function(column){this.activeColumn=column},getActiveColumn:function(){return this.activeColumn},setActiveRecord:function(record){this.activeRecord=record},getActiveRecord:function(){return this.activeRecord},
getEditor:function(record,column){var editors=this.editors,editorId=column.getItemId(),editor=editors.getByKey(editorId);if(!editor){editor=column.getEditor(record);if(!editor)return!1;editor instanceof Ext.grid.CellEditor||(editor=new Ext.grid.CellEditor(Ext.apply({floating:!0,editorId:editorId,field:editor},editor.editorCfg)));editor.field.excludeForm=!0;editor.column!==column&&(editor.column=column,column.on('removed',this.onColumnRemoved,this));editors.add(editor)}editor.ownerCmp=this.grid.ownerGrid;
column.isTreeColumn&&(editor.isForTree=column.isTreeColumn,editor.addCls('x-tree-cell-editor'));editor.setGrid(this.grid);editor.editingPlugin=this;return editor},onColumnRemoved:function(column){var context=this.context;context&&context.column===column&&this.cancelEdit();column.un('removed',this.onColumnRemoved,this)},setColumnField:function(column,field){var ed=this.editors.getByKey(column.getItemId());Ext.destroy(ed,column.field);this.editors.removeAtKey(column.getItemId());Ext.grid.plugin.Editing.prototype.setColumnField.apply(this,
arguments)},getCell:function(record,column){return this.grid.getView().getCell(record,column)},onEditComplete:function(ed,value,startValue){ed=ed.context;var view=ed.view;var record=ed.record;ed.value=value;record.isEqual(value,startValue)||(record.set(ed.column.dataIndex,value),ed.rowIdx=view.indexOf(record));this.context===ed&&(this.setActiveEditor(null),this.setActiveColumn(null),this.setActiveRecord(null),this.editing=!1);this.fireEvent('edit',this,ed)},cancelEdit:function(activeEd){var context=
this.context;activeEd&&activeEd.isCellEditor?(this.context.value='editedValue'in activeEd?activeEd.editedValue:activeEd.getValue(),Ext.grid.plugin.Editing.prototype.cancelEdit.apply(this,arguments),activeEd.context===context?(this.setActiveEditor(null),this.setActiveColumn(null),this.setActiveRecord(null)):this.editing=!0):(activeEd=this.getActiveEditor())&&activeEd.field&&activeEd.cancelEdit()},startEditByPosition:function(position){var cm=this.grid.getColumnManager(),activeEditor=this.getActiveEditor();
position.isCellContext||(position=(new Ext.grid.CellContext(this.view)).setPosition(position.row,this.grid.getColumnManager().getColumns()[position.column]));var index=cm.getHeaderIndex(position.column);position.column=cm.getVisibleHeaderClosestToIndex(index);if(this.grid.actionableMode){if(this.editing&&position.isEqual(this.context))return;activeEditor&&activeEditor.completeEdit()}if(this.grid.actionableMode)this.activateCell(position)&&(this.activateRow(this.view.all.item(position.rowIdx,!0)),
(activeEditor=this.getEditor(position.record,position.column))&&activeEditor.field.focus());else return this.grid.setActionableMode(!0,position)}},0,0,0,0,['plugin.cellediting'],0,[Ext.grid.plugin,'CellEditing'],0);
Ext.cmd.derive('Ext.grid.plugin.DragDrop',Ext.plugin.Abstract,{dragText:'{0} selected row{1}',ddGroup:'GridDD',enableDrop:!0,enableDrag:!0,containerScroll:!1,init:function(view){Ext.applyIf(view,{copy:this.copy,allowCopy:this.allowCopy});view.on('render',this.onViewRender,this,{single:!0})},destroy:function(){this.dragZone=this.dropZone=Ext.destroy(this.dragZone,this.dropZone);Ext.plugin.Abstract.prototype.destroy.call(this)},enable:function(){this.dragZone&&this.dragZone.unlock();this.dropZone&&
this.dropZone.unlock();(arguments.callee.$previous||Ext.plugin.Abstract.prototype.enable).call(this)},disable:function(){this.dragZone&&this.dragZone.lock();this.dropZone&&this.dropZone.lock();(arguments.callee.$previous||Ext.plugin.Abstract.prototype.disable).call(this)},onViewRender:function(view){var scrollEl;(view.ownerCt.ownerGrid||view.ownerCt).relayEvents(view,['beforedrop','drop']);this.enableDrag&&(this.containerScroll&&(scrollEl=view.getEl()),this.dragZone=new Ext.view.DragZone(Ext.apply({view:view,
ddGroup:this.dragGroup||this.ddGroup,dragText:this.dragText,containerScroll:this.containerScroll,scrollEl:scrollEl},this.dragZone)));this.enableDrop&&(this.dropZone=new Ext.grid.ViewDropZone(Ext.apply({view:view,ddGroup:this.dropGroup||this.ddGroup},this.dropZone)))}},0,0,0,0,['plugin.gridviewdragdrop'],0,[Ext.grid.plugin,'DragDrop'],0);
Ext.cmd.derive('Ext.grid.plugin.RowEditing',Ext.grid.plugin.Editing,{lockableScope:'top',editStyle:'row',autoCancel:!0,autoUpdate:!1,errorSummary:!0,formAriaLabel:'Editing row {0}',formAriaLabelRowBase:2,constructor:function(){Ext.grid.plugin.Editing.prototype.constructor.apply(this,arguments);this.clicksToMoveEditor||(this.clicksToMoveEditor=this.clicksToEdit);this.autoCancel=!!this.autoCancel;if(this.autoUpdate=!!this.autoUpdate)this.autoCancel=!1},init:function(grid){Ext.grid.plugin.Editing.prototype.init.call(this,
grid);grid.lockedGrid?(grid.lockedGrid.registerActionable(this),grid.normalGrid.registerActionable(this)):grid.registerActionable(this)},destroy:function(){Ext.destroy(this.editor);Ext.grid.plugin.Editing.prototype.destroy.call(this)},onBeforeReconfigure:function(){Ext.grid.plugin.Editing.prototype.onBeforeReconfigure.apply(this,arguments);this.cancelEdit()},onReconfigure:function(grid,store,columns){var ed=this.editor;Ext.grid.plugin.Editing.prototype.onReconfigure.apply(this,arguments);columns&&
ed&&ed.rendered&&(ed.needsSyncFieldWidths=!0)},shouldStartEdit:function(editor){return!0},startEdit:function(record,columnHeader){var editor=this.getEditor();Ext.isEmpty(columnHeader)&&(columnHeader=this.grid.getTopLevelVisibleColumnManager().getHeaderAtIndex(0));return!1!==editor.beforeEdit()&&(record=this.getEditingContext(record,columnHeader))&&!1!==this.beforeEdit(record)&&!1!==this.fireEvent('beforeedit',this,record)&&!record.cancel?(this.context=record,this.lockingPartner&&this.lockingPartner.cancelEdit(),
editor.startEdit(record.record,record.column,record),this.editing=!0):!1},activateCell:function(pos){if(!pos.getCell().query('[tabIndex\x3d"-1"]').length)return this.startEdit(pos.record,pos.column),!0},suspend:Ext.emptyFn,resume:Ext.emptyFn,onEnterKey:function(e){!this.grid.ownerGrid.actionableMode&&this.editing&&((e=Ext.getCmp(e.getTarget().getAttribute('componentId')))&&e.isPickerField&&e.isExpanded||this.completeEdit())},cancelEdit:function(){if(this.editing)this.getContextFieldValues(),this.getEditor().cancelEdit(),
Ext.grid.plugin.Editing.prototype.cancelEdit.apply(this,arguments);else return!0},completeEdit:function(){var context=this.context;this.editing&&this.validateEdit(context)&&(this.editing=!1,this.fireEvent('edit',this,context))},validateEdit:function(){this.getContextFieldValues();return Ext.grid.plugin.Editing.prototype.validateEdit.apply(this,arguments)&&this.getEditor().completeEdit()},getEditor:function(){this.editor||(this.editor=this.initEditor());return this.editor},getContextFieldValues:function(){var context=
this.context,record=context.record,newValues={},originalValues={},editors=this.editor.query('\x3e[isFormField]'),len=editors.length,i;for(i=0;i<len;i++){var item=editors[i];var name=item.dataIndex;newValues[name]=item.getValue();originalValues[name]=record.get(name)}Ext.apply(context,{newValues:newValues,originalValues:originalValues})},initEditor:function(){return new Ext.grid.RowEditor(this.initEditorConfig())},initEditorConfig:function(){var grid=this.grid,view=this.view,btns=['saveBtnText','cancelBtnText',
'errorsText','dirtyText'],bLen=btns.length;view={autoCancel:this.autoCancel,autoUpdate:this.autoUpdate,removeUnmodified:this.removeUnmodified,errorSummary:this.errorSummary,formAriaLabel:this.formAriaLabel,formAriaLabelRowBase:this.formAriaLabelRowBase+(grid.hideHeaders?-1:0),fields:grid.headerCt.getGridColumns(),hidden:!0,view:view,editingPlugin:this};for(grid=0;grid<bLen;grid++){var item=btns[grid];Ext.isDefined(this[item])&&(view[item]=this[item])}return view},initEditTriggers:function(){var me=
this,view=me.view,moveEditorEvent=1===me.clicksToMoveEditor?'click':'dblclick';Ext.grid.plugin.Editing.prototype.initEditTriggers.apply(this,arguments);me.clicksToMoveEditor!==me.clicksToEdit&&me.mon(view,'cell'+moveEditorEvent,me.moveEditorByClick,me);view.on({render:function(){me.mon(me.grid.headerCt,{scope:me,columnresize:me.onColumnResize,columnhide:me.onColumnHide,columnshow:me.onColumnShow})},single:!0})},moveEditorByClick:function(){this.editing&&this.superclass.onCellClick.apply(this,arguments)},
onColumnAdd:function(ct,column){if(column.isHeader&&(this.initFieldAccessors(column),ct=this.editor))ct.onColumnAdd(column)},beforeGridHeaderDestroy:function(headerCt){headerCt=this.grid.getColumnManager().getColumns();var len=headerCt.length,i,field;for(i=0;i<len;i++){var column=headerCt[i];column.hasEditor&&(column.hasEditor()&&(field=column.getEditor())&&field.destroy(),this.removeFieldAccessors(column))}},onColumnResize:function(ct,column,width){if(column.isHeader&&(ct=this.getEditor()))ct.onColumnResize(column,
width)},onColumnHide:function(ct,column){if(ct=this.getEditor())ct.onColumnHide(column)},onColumnShow:function(ct,column){if(ct=this.getEditor())ct.onColumnShow(column)},onColumnMove:function(ct,column,fromIdx,toIdx){ct=this.getEditor();this.initFieldAccessors(column);if(ct)ct.onColumnMove(column,fromIdx,toIdx)},setColumnField:function(column,field){var editor=this.getEditor();editor&&editor.destroyColumnEditor(column);Ext.grid.plugin.Editing.prototype.setColumnField.apply(this,arguments);editor&&
editor.insertColumnEditor(column)},createColumnField:function(column,defaultField){var editor=this.editor,def;editor&&(def=editor.getDefaultFieldCfg());if(defaultField=Ext.grid.plugin.Editing.prototype.createColumnField.call(this,column,defaultField||def))defaultField.skipLabelForAttribute=!0,defaultField.ariaAttributes=defaultField.ariaAttributes||{},this.grid.hideHeaders?defaultField.ariaAttributes['aria-label']=column.text:defaultField.ariaAttributes['aria-labelledby']=column.id;return defaultField}},
1,0,0,0,['plugin.rowediting'],0,[Ext.grid.plugin,'RowEditing'],0);
Ext.cmd.derive('Ext.util.Queue',Ext.Base,{constructor:function(){this.clear()},add:function(obj,replace){var key=this.getKey(obj),prevEntry;(prevEntry=this.map[key])?replace&&(this.map[key]=obj,this.items[Ext.Array.indexOf(this.items,prevEntry)]=obj):(++this.length,this.items.push(obj),this.map[key]=obj);return obj},clear:function(){var items=this.items;this.items=[];this.map={};this.length=0;return items},contains:function(obj){obj=this.getKey(obj);return this.map.hasOwnProperty(obj)},getCount:function(){return this.length},
getKey:function(obj){return obj.id},remove:function(obj){var key=this.getKey(obj),items=this.items;if(this.map[key]){var index=Ext.Array.indexOf(items,obj);Ext.Array.erase(items,index,1);delete this.map[key];--this.length}return obj}},1,0,0,0,0,0,[Ext.util,'Queue'],0);
Ext.cmd.derive('Ext.layout.ContextItem',Ext.Base,{heightModel:null,widthModel:null,sizeModel:null,optOut:!1,ownerSizePolicy:null,boxChildren:null,boxParent:null,children:[],dirty:null,dirtyCount:0,hasRawContent:!0,isContextItem:!0,isTopLevel:!1,consumersContentHeight:0,consumersContentWidth:0,consumersContainerHeight:0,consumersContainerWidth:0,consumersHeight:0,consumersWidth:0,ownerCtContext:null,remainingChildDimensions:0,props:null,state:null,wrapsComponent:!1,constructor:function(config){var sizeModels=
Ext.layout.SizeModel.sizeModels,configured=sizeModels.configured;sizeModels=sizeModels.shrinkWrap;var ownerCt,ownerCtContext,heightModel,optOut;Ext.apply(this,config);var target=this.target;var el=this.el;this.id=target.id;this.flushedProps={};this.props=config={};this.styles={};if(target.isComponent){if(this.wrapsComponent=!0,this.framing=target.frameSize||null,this.isComponentChild=target.ownerLayout&&target.ownerLayout.isComponentLayout,el=target.lastBox,(ownerCt=target.ownerCt)&&(ownerCtContext=
ownerCt.el&&this.context.items[ownerCt.el.id])&&(this.ownerCtContext=ownerCtContext),this.sizeModel=ownerCt=target.getSizeModel(ownerCtContext&&ownerCtContext.widthModel.pairsByHeightOrdinal[ownerCtContext.heightModel.ordinal]),this.widthModel=ownerCtContext=ownerCt.width,this.heightModel=heightModel=ownerCt.height,el&&!1===el.invalid){var sameWidth=target.width===(ownerCt=el.width);var sameHeight=target.height===(target=el.height);ownerCtContext===sizeModels&&heightModel===sizeModels?optOut=!0:ownerCtContext===
configured&&sameWidth&&(optOut=heightModel===sizeModels||heightModel===configured&&sameHeight);optOut&&(this.optOut=!0,config.width=ownerCt,config.height=target)}}else el=el.lastBox;this.lastBox=el},init:function(full,options){var oldProps=this.props,oldDirty=this.dirty,ownerCtContext=this.ownerCtContext,ownerLayout=this.target.ownerLayout,firstTime=!this.state,ret=full||firstTime,children,n,oldHeightModel=this.heightModel,oldWidthModel=this.widthModel,remainingCount=0;this.dirty=this.invalid=!1;
this.props={};this.remainingChildDimensions=0;this.boxChildren&&(this.boxChildren.length=0);firstTime||(this.clearAllBlocks('blocks'),this.clearAllBlocks('domBlocks'));if(!this.wrapsComponent)return ret;var target=this.target;this.state={};if(firstTime)target.beforeLayout&&target.beforeLayout!==Ext.emptyFn&&target.beforeLayout(),!ownerCtContext&&(children=target.ownerCt)&&(ownerCtContext=this.context.items[children.el.id]),ownerCtContext?(this.ownerCtContext=ownerCtContext,this.isBoxParent=ownerLayout&&
ownerLayout.isItemBoxParent(this)):this.isTopLevel=!0,this.frameBodyContext=this.getEl('frameBody');else{ownerCtContext=this.ownerCtContext;this.isTopLevel=!ownerCtContext;children=this.children;var i=0;for(n=children.length;i<n;++i)children[i].init(!0)}this.hasRawContent=!(target.isContainer&&0<target.items.items.length);full?(this.widthModel=this.heightModel=null,full=target.getSizeModel(ownerCtContext&&ownerCtContext.widthModel.pairsByHeightOrdinal[ownerCtContext.heightModel.ordinal]),firstTime&&
(this.sizeModel=full),this.widthModel=full.width,this.heightModel=full.height,ownerCtContext&&!this.isComponentChild&&(ownerLayout.needsItemSize||!target.liquidLayout?ownerCtContext.remainingChildDimensions+=2:(this.widthModel.calculated&&++ownerCtContext.remainingChildDimensions,this.heightModel.calculated&&++ownerCtContext.remainingChildDimensions))):oldProps&&(this.recoverProp('x',oldProps,oldDirty),this.recoverProp('y',oldProps,oldDirty),this.widthModel.calculated?this.recoverProp('width',oldProps,
oldDirty):'width'in oldProps&&++remainingCount,this.heightModel.calculated?this.recoverProp('height',oldProps,oldDirty):'height'in oldProps&&++remainingCount,ownerCtContext&&!this.isComponentChild&&(ownerCtContext.remainingChildDimensions+=remainingCount));oldProps&&ownerLayout&&ownerLayout.manageMargins&&(this.recoverProp('margin-top',oldProps,oldDirty),this.recoverProp('margin-right',oldProps,oldDirty),this.recoverProp('margin-bottom',oldProps,oldDirty),this.recoverProp('margin-left',oldProps,oldDirty));
options&&(oldProps=options.heightModel,(oldDirty=options.widthModel)&&oldProps&&oldWidthModel&&oldHeightModel&&oldWidthModel.shrinkWrap&&oldHeightModel.shrinkWrap&&oldDirty.constrainedMax&&oldProps.constrainedMin&&(oldProps=null),oldDirty&&(this.widthModel=oldDirty),oldProps&&(this.heightModel=oldProps),options.state&&Ext.apply(this.state,options.state));return ret},initContinue:function(full){var ownerCtContext=this.ownerCtContext,widthModel=this.widthModel,inheritedState=this.target.getInherited();
widthModel.fixed?inheritedState.inShrinkWrapTable=!1:delete inheritedState.inShrinkWrapTable;full&&(ownerCtContext&&widthModel.shrinkWrap?(ownerCtContext=ownerCtContext.isBoxParent?ownerCtContext:ownerCtContext.boxParent)&&ownerCtContext.addBoxChild(this):widthModel.natural&&(this.boxParent=ownerCtContext));return full},initDone:function(containerLayoutDone){var props=this.props,state=this.state;0===this.remainingChildDimensions&&(props.containerChildrenSizeDone=!0);containerLayoutDone&&(props.containerLayoutDone=
!0);this.boxChildren&&this.boxChildren.length&&this.widthModel.shrinkWrap&&(this.el.setWidth(1E4),state.blocks=(state.blocks||0)+1)},initAnimation:function(){var target=this.target,ownerCtContext=this.ownerCtContext;ownerCtContext&&ownerCtContext.isTopLevel?this.animatePolicy=target.ownerLayout.getAnimatePolicy(this):!ownerCtContext&&target.isCollapsingOrExpanding&&target.animCollapse&&(this.animatePolicy=target.componentLayout.getAnimatePolicy(this));this.animatePolicy&&this.context.queueAnimation(this)},
addBlock:function(name,layout,propName){name=this[name]||(this[name]={});propName=name[propName]||(name[propName]={});propName[layout.id]||(propName[layout.id]=layout,++layout.blockCount,++this.context.blockCount)},addBoxChild:function(boxChildItem){var children=boxChildItem.widthModel;boxChildItem.boxParent=this;boxChildItem.measuresBox=children.shrinkWrap?boxChildItem.hasRawContent:children.natural;boxChildItem.measuresBox&&((children=this.boxChildren)?children.push(boxChildItem):this.boxChildren=
[boxChildItem])},addPositionStyles:function(styles,props){var x=props.x;props=props.y;var count=0;void 0!==x&&(styles.left=x+'px',++count);void 0!==props&&(styles.top=props+'px',++count);return count},addTrigger:function(propName,inDom){var name=inDom?'domTriggers':'triggers',collection=this[name]||(this[name]={});name=this.context;var layout=name.currentLayout;collection=collection[propName]||(collection[propName]={});collection[layout.id]||(collection[layout.id]=layout,++layout.triggerCount,collection=
name.triggers[inDom?'dom':'data'],(collection[layout.id]||(collection[layout.id]=[])).push({item:this,prop:propName}),void 0!==this.props[propName]&&(inDom&&this.dirty&&propName in this.dirty||++layout.firedTriggers))},boxChildMeasured:function(){var state=this.state;(state.boxesMeasured=(state.boxesMeasured||0)+1)===this.boxChildren.length&&(state.clearBoxWidth=1,++this.context.progressCount,this.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(me){me=me.getStyles(me.borderNames,me.trblNames);me.width=me.left+me.right;me.height=me.top+me.bottom;return me},marginInfo:function(me){me=me.getStyles(me.marginNames,me.trblNames);me.width=me.left+me.right;me.height=me.top+me.bottom;return me},paddingInfo:function(me){me=
(me.frameBodyContext||me).getStyles(me.paddingNames,me.trblNames);me.width=me.left+me.right;me.height=me.top+me.bottom;return me}},checkCache:function(entry){return this.cacheMissHandlers[entry](this)},clearAllBlocks:function(name){var collection=this[name],propName;if(collection)for(propName in collection)this.clearBlocks(name,propName)},clearBlocks:function(name,propName){var collection=this[name];name=collection&&collection[propName];var layoutId;if(name)for(layoutId in delete collection[propName],
propName=this.context,name)collection=name[layoutId],--propName.blockCount,--collection.blockCount||collection.pending||collection.done||propName.queueLayout(collection)},block:function(layout,propName){this.addBlock('blocks',layout,propName)},domBlock:function(layout,propName){this.addBlock('domBlocks',layout,propName)},fireTriggers:function(name,propName){propName=(name=this[name])&&name[propName];name=this.context;var layoutId;if(propName)for(layoutId in propName){var layout=propName[layoutId];
++layout.firedTriggers;layout.done||layout.blockCount||layout.pending||name.queueLayout(layout)}},flush:function(){var dirty=this.dirty,state=this.state,targetEl=this.el;this.dirtyCount=0;'attributes'in this&&(targetEl.set(this.attributes),delete this.attributes);'innerHTML'in this&&(targetEl.innerHTML=this.innerHTML,delete this.innerHTML);state&&state.clearBoxWidth&&(state.clearBoxWidth=0,this.el.setStyle('width',null),--state.blocks||this.context.queueItemLayouts(this));dirty&&(delete this.dirty,
this.writeProps(dirty,!0))},flushAnimations:function(){var me=this,animateFrom=me.previousSize,propsLen;if(animateFrom){var target=me.target;var targetAnim=target.getAnimationProps();var duration=targetAnim.duration;var animateProps=Ext.Object.getKeys(me.animatePolicy);targetAnim=Ext.apply({},{from:{},to:{},duration:duration||Ext.fx.Anim.prototype.duration},targetAnim);var j=duration=0;for(propsLen=animateProps.length;j<propsLen;j++){var propName=animateProps[j];var oldValue=animateFrom[propName];
var newValue=me.peek(propName);oldValue!==newValue&&null!=newValue&&(propName=me.translateProps[propName]||propName,targetAnim.from[propName]=oldValue,targetAnim.to[propName]=newValue,++duration)}duration?(1===me.isCollapsingOrExpanding?target.componentLayout.undoLayout(me):me.writeProps(targetAnim.from),me.el.animate(targetAnim),targetAnim=Ext.fx.Manager.getFxQueue(me.el.id)[0],target.$layoutAnim=targetAnim,targetAnim.on({afteranimate:function(){delete target.$layoutAnim;target.destroying||target.destroyed||
(1===me.isCollapsingOrExpanding?(target.componentLayout.redoLayout(me),target.afterCollapse(!0)):2===me.isCollapsingOrExpanding&&target.afterExpand(!0),target.hasListeners.afterlayoutanimation&&target.fireEvent('afterlayoutanimation',target))}})):2===me.isCollapsingOrExpanding&&target.afterExpand(!0)}},getBorderInfo:function(){var info=this.borderInfo;info||(this.borderInfo=info=this.checkCache('borderInfo'));return info},getEl:function(nameOrEl,owner){var elContext;if(nameOrEl){if(!nameOrEl.dom){var src=
this.target;owner&&(src=owner);nameOrEl=src[nameOrEl];if('function'===typeof nameOrEl&&(nameOrEl=nameOrEl.call(src),nameOrEl===this.el))return this}nameOrEl&&(elContext=this.context.getEl(this,nameOrEl))}return elContext||null},getFrameInfo:function(){var info=this.frameInfo;if(!info){info=this.framing;var border=this.getBorderInfo();this.frameInfo=info=info?{top:info.top+border.top,right:info.right+border.right,bottom:info.bottom+border.bottom,left:info.left+border.left,width:info.width+border.width,
height:info.height+border.height}:border}return info},getMarginInfo:function(){var info=this.marginInfo;if(!info){if(this.wrapsComponent){var comp=this.target;var ownerLayoutId=(info=comp.ownerLayout)?info.id:null;var manageMargins=info&&info.manageMargins;(info=comp.margin$)&&info.ownerId!==ownerLayoutId&&(info=null);info||(info=this.parseMargins(comp,comp.margin)||this.checkCache('marginInfo'),manageMargins&&(this.setProp('margin-top',0),this.setProp('margin-right',0),this.setProp('margin-bottom',
0),this.setProp('margin-left',0)),info.ownerId=ownerLayoutId,comp.margin$=info);info.width=info.left+info.right;info.height=info.top+info.bottom}else info=this.checkCache('marginInfo');this.marginInfo=info}return info},clearMarginCache:function(){delete this.marginInfo;delete this.target.margin$},getPaddingInfo:function(){var info=this.paddingInfo;info||(this.paddingInfo=info=this.checkCache('paddingInfo'));return info},getProp:function(propName){var result=this.props[propName];this.addTrigger(propName);
return result},getDomProp:function(propName){var result=this.dirty&&propName in this.dirty?void 0:this.props[propName];this.addTrigger(propName,!0);return result},getStyle:function(styleName){var styles=this.styles;if(styleName in styles)var value=styles[styleName];else{var info=this.styleInfo[styleName];value=this.el.getStyle(styleName);info&&info.parseInt&&(value=parseInt(value,10)||0);styles[styleName]=value}return value},getStyles:function(styleNames,altNames){var styleCache=this.styles,values=
{},hits=0,n=styleNames.length,i;altNames=altNames||styleNames;for(i=0;i<n;++i){var name=styleNames[i];if(name in styleCache){if(values[altNames[i]]=styleCache[name],++hits,i&&1===hits){var missing=styleNames.slice(0,i);var missingAltNames=altNames.slice(0,i)}}else hits&&((missing||(missing=[])).push(name),(missingAltNames||(missingAltNames=[])).push(altNames[i]))}if(hits<n)for(missing=missing||styleNames,missingAltNames=missingAltNames||altNames,altNames=this.styleInfo,hits=this.el.getStyle(missing),
i=missing.length;i--;)name=missing[i],styleNames=altNames[name],n=hits[name],styleNames&&styleNames.parseInt&&(n=parseInt(n,10)||0),values[missingAltNames[i]]=n,styleCache[name]=n;return values},hasProp:function(propName){return null!=this.getProp(propName)},hasDomProp:function(propName){return null!=this.getDomProp(propName)},invalidate:function(options){this.context.queueInvalidate(this,options)},markDirty:function(){1===++this.dirtyCount&&this.context.queueFlush(this)},onBoxMeasured:function(){var boxParent=
this.boxParent,state=this.state;boxParent&&boxParent.widthModel.shrinkWrap&&!state.boxMeasured&&this.measuresBox&&(state.boxMeasured=1,boxParent.boxChildMeasured())},parseMargins:function(comp,margins){!0===margins&&(margins=5);var type=typeof margins;if('string'===type||'number'===type)var ret=comp.parseBox(margins);else margins&&(ret={top:0,right:0,bottom:0,left:0},margins&&Ext.apply(ret,comp.parseBox(margins)));return ret},peek:function(propName){return this.props[propName]},recalculateSizeModel:function(){var target=
this.target,componentLayout=target.componentLayout,ownerCtContext=this.ownerCtContext,oldContext=componentLayout.ownerContext;componentLayout.ownerContext=null;this.sizeModel=target=target.getSizeModel(ownerCtContext&&ownerCtContext.widthModel.pairsByHeightOrdinal[ownerCtContext.heightModel.ordinal]);this.widthModel=target.width;this.heightModel=target.height;oldContext&&(componentLayout.ownerContext=this)},recoverProp:function(propName,oldProps,oldDirty){var props=this.props;propName in oldProps&&
(props[propName]=oldProps[propName],oldDirty&&propName in oldDirty&&(oldProps=this.dirty||(this.dirty={}),oldProps[propName]=oldDirty[propName]))},redo:function(deep){var len;this.revertProps(this.props);if(deep&&this.wrapsComponent){if(this.childItems){var i=0;var items=this.childItems;for(len=items.length;i<len;i++)items[i].redo(deep)}i=0;items=this.children;for(len=items.length;i<len;i++)items[i].redo()}},removeEl:function(nameOrEl,owner){if(nameOrEl){if(!nameOrEl.dom){var src=this.target;owner&&
(src=owner);nameOrEl=src[nameOrEl];if('function'===typeof nameOrEl&&(nameOrEl=nameOrEl.call(src),nameOrEl===this.el))return this}nameOrEl&&this.context.removeEl(nameOrEl,this)}},revertProps:function(props){var name,flushed=this.flushedProps,reverted={};for(name in props)flushed.hasOwnProperty(name)&&(reverted[name]=props[name]);this.writeProps(reverted)},setAttribute:function(name,value){this.attributes||(this.attributes={});this.attributes[name]=value;this.markDirty()},setBox:function(box){'left'in
box&&this.setProp('x',box.left);'top'in box&&this.setProp('y',box.top);this.setSize(box.width,box.height)},setContentHeight:function(height,measured){return!measured&&this.hasRawContent?1:this.setProp('contentHeight',height)},setContentWidth:function(width,measured){return!measured&&this.hasRawContent?1:this.setProp('contentWidth',width)},setContentSize:function(width,height,measured){return 2===this.setContentWidth(width,measured)+this.setContentHeight(height,measured)},setProp:function(propName,
value,dirty){var valueType=typeof value;if('undefined'===valueType||'number'===valueType&&isNaN(value))return 0;if(this.props[propName]===value)return 1;this.props[propName]=value;++this.context.progressCount;if(!1===dirty)this.fireTriggers('domTriggers',propName),this.clearBlocks('domBlocks',propName);else if(dirty=this.styleInfo[propName])this.dirty||(this.dirty={}),this.dirty[propName]=value,this.markDirty();this.fireTriggers('triggers',propName);this.clearBlocks('blocks',propName);return 1},setHeight:function(height,
dirty){var comp=this.target,ownerCtContext=this.ownerCtContext;0>height&&(height=0);if(this.wrapsComponent){var min=this.collapsedVert?0:comp.minHeight||0;height=Ext.Number.constrain(height,min,comp.maxHeight);comp=this.props.height;if(!this.setProp('height',height,dirty))return NaN;ownerCtContext&&!this.isComponentChild&&isNaN(comp)&&((comp=--ownerCtContext.remainingChildDimensions)||ownerCtContext.setProp('containerChildrenSizeDone',!0));if(ownerCtContext=this.frameBodyContext)comp=this.getFrameInfo(),
ownerCtContext[this.el.vertical?'setWidth':'setHeight'](height-comp.height,dirty)}else if(!this.setProp('height',height,dirty))return NaN;return height},setWidth:function(width,dirty){var comp=this.target,ownerCtContext=this.ownerCtContext;0>width&&(width=0);if(this.wrapsComponent){var min=this.collapsedHorz?0:comp.minWidth||0;width=Ext.Number.constrain(width,min,comp.maxWidth);comp=this.props.width;if(!this.setProp('width',width,dirty))return NaN;ownerCtContext&&!this.isComponentChild&&isNaN(comp)&&
((comp=--ownerCtContext.remainingChildDimensions)||ownerCtContext.setProp('containerChildrenSizeDone',!0));if(ownerCtContext=this.frameBodyContext)comp=this.getFrameInfo(),ownerCtContext.setWidth(width-comp.width,dirty)}else if(!this.setProp('width',width,dirty))return NaN;return width},setSize:function(width,height,dirty){this.setWidth(width,dirty);this.setHeight(height,dirty)},translateProps:{x:'left',y:'top'},undo:function(deep){var len;this.revertProps(this.lastBox);if(deep&&this.wrapsComponent){if(this.childItems){var i=
0;var items=this.childItems;for(len=items.length;i<len;i++)items[i].undo(deep)}i=0;items=this.children;for(len=items.length;i<len;i++)items[i].undo()}},unsetProp:function(propName){var dirty=this.dirty;delete this.props[propName];dirty&&delete dirty[propName]},writeProps:function(dirtyProps,flushing){if(dirtyProps&&'object'===typeof dirtyProps){var el=this.el,styles={},styleCount=0,styleInfo=this.styleInfo,info,propName,numericValue,width=dirtyProps.width,height=dirtyProps.height,target=this.target,
hasWidth,hasHeight,scroller;'displayed'in dirtyProps&&el.setDisplayed(dirtyProps.displayed);for(propName in dirtyProps)flushing&&(this.fireTriggers('domTriggers',propName),this.clearBlocks('domBlocks',propName),this.flushedProps[propName]=1),(info=styleInfo[propName])&&info.dom&&(info.suffix&&(numericValue=parseInt(dirtyProps[propName],10))?styles[propName]=numericValue+info.suffix:styles[propName]=dirtyProps[propName],++styleCount);if('x'in dirtyProps||'y'in dirtyProps)target.isComponent?target.setPosition(dirtyProps.x,
dirtyProps.y):styleCount+=this.addPositionStyles(styles,dirtyProps);'overflowX'in dirtyProps&&(scroller=target.getScrollable())&&scroller.setX(dirtyProps.overflowX);'overflowY'in dirtyProps&&(scroller||(scroller=target.getScrollable()))&&scroller.setY(dirtyProps.overflowY);this.wrapsComponent&&Ext.isIE9&&((hasWidth=void 0!==width&&this.hasOverflowY)||(hasHeight=void 0!==height&&this.hasOverflowX))&&(dirtyProps=this.isAbsolute,void 0===dirtyProps&&(dirtyProps=this.target.getTargetEl(),dirtyProps=dirtyProps.getStyle('position'),
this.isAbsolute=dirtyProps='absolute'===dirtyProps),dirtyProps&&(dirtyProps=Ext.getScrollbarSize(),hasWidth&&(width=parseInt(width,10)+dirtyProps.width,styles.width=width+'px',++styleCount),hasHeight&&(height=parseInt(height,10)+dirtyProps.height,styles.height=height+'px',++styleCount)));styleCount&&el.setStyle(styles)}}},1,0,0,0,0,0,[Ext.layout,'ContextItem'],function(){var px={dom:!0,parseInt:!0,suffix:'px'},isDom={dom:!0},faux={dom:!1};this.prototype.styleInfo={containerChildrenSizeDone:faux,containerLayoutDone:faux,
displayed:faux,done:faux,x:faux,y:faux,columnsChanged:faux,rowHeights:faux,viewOverflowY:faux,overflowX:faux,overflowY:faux,left:px,top:px,right:px,bottom:px,width:px,height:px,'border-top-width':px,'border-right-width':px,'border-bottom-width':px,'border-left-width':px,'margin-top':px,'margin-right':px,'margin-bottom':px,'margin-left':px,'padding-top':px,'padding-right':px,'padding-bottom':px,'padding-left':px,'line-height':isDom,display:isDom,clear:isDom}});
Ext.cmd.derive('Ext.layout.Context',Ext.Base,{remainingLayouts:0,state:0,cycleWatchDog:200,constructor:function(config){Ext.apply(this,config);this.items={};this.layouts={};this.calcCount=this.flushCount=this.cycleCount=this.blockCount=0;this.animateQueue=this.newQueue();this.completionQueue=this.newQueue();this.finalizeQueue=this.newQueue();this.finishQueue=this.newQueue();this.flushQueue=this.newQueue();this.invalidateData={};this.layoutQueue=this.newQueue();this.invalidQueue=[];this.triggers={data:{},
dom:{}}},callLayout:function(layout,methodName){this.currentLayout=layout;layout[methodName](this.getCmp(layout.owner))},cancelComponent:function(comp,isChild,isDestroying){var components=comp,isArray=!comp.isComponent,length=isArray?components.length:1,i,k,klen,newQueue;for(i=0;i<length;++i){isArray&&(comp=components[i]);isDestroying&&(comp.ownerCt?(k=this.items[comp.ownerCt.el.id])&&Ext.Array.remove(k.childItems,this.getCmp(comp)):comp.rendered&&this.removeEl(comp.el));if(!isChild){var oldQueue=
this.invalidQueue;if(klen=oldQueue.length)for(this.invalidQueue=newQueue=[],k=0;k<klen;++k){var entry=oldQueue[k];var temp=entry.item.target;temp===comp||temp.up(comp)||newQueue.push(entry)}}k=comp.componentLayout;this.cancelLayout(k);comp.destroying||(k.getLayoutItems&&(k=k.getLayoutItems(),k.length&&this.cancelComponent(k,!0)),comp.isContainer&&!comp.collapsed&&(k=comp.layout,this.cancelLayout(k),k=k.getVisibleItems(),k.length&&this.cancelComponent(k,!0)))}},cancelLayout:function(layout){this.completionQueue.remove(layout);
this.finalizeQueue.remove(layout);this.finishQueue.remove(layout);this.layoutQueue.remove(layout);layout.running&&this.layoutDone(layout);layout.ownerContext=null},clearTriggers:function(layout,inDom){layout=layout.id;var collection=this.triggers[inDom?'dom':'data'],triggers=collection&&collection[layout],length=triggers&&triggers.length||0,i;for(i=0;i<length;++i){var trigger=triggers[i];collection=trigger.item;collection=inDom?collection.domTriggers:collection.triggers;delete collection[trigger.prop][layout]}},
flush:function(){var items=this.flushQueue.clear(),length=items.length,i;if(length)for(++this.flushCount,i=0;i<length;++i)items[i].flush()},flushAnimations:function(){var items=this.animateQueue.clear(),len=items.length,i;if(len){for(i=0;i<len;i++)!1!==items[i].target.animate&&items[i].flushAnimations();Ext.fx.Manager.runner()}},flushInvalidates:function(){var queue=this.invalidQueue,length=queue&&queue.length,entry,i;this.invalidQueue=[];if(length){var components=[];for(i=0;i<length;++i){var comp=
(entry=queue[i]).item.target;comp.container.isDetachedBody||(components.push(comp),entry.options&&(this.invalidateData[comp.id]=entry.options))}this.invalidate(components,null)}},flushLayouts:function(queueName,methodName,dontClear){queueName=dontClear?this[queueName].items:this[queueName].clear();dontClear=queueName.length;var i;if(dontClear){for(i=0;i<dontClear;++i){var layout=queueName[i];layout.running||this.callLayout(layout,methodName)}this.currentLayout=null}},getCmp:function(cmp){return this.getItem(cmp,
cmp.el)},getEl:function(parent,el){el=this.getItem(el,el);el.parent||(el.parent=parent,parent.children.length?parent.children.push(el):parent.children=[el]);return el},getItem:function(target,el){var id=el.id,items=this.items;return items[id]||(items[id]=new Ext.layout.ContextItem({context:this,target:target,el:el}))},handleFailure:function(){var layouts=this.layouts,key;Ext.failedLayouts=(Ext.failedLayouts||0)+1;for(key in layouts){var layout=layouts[key];layouts.hasOwnProperty(key)&&(layout.running=
!1,layout.ownerContext=null)}},invalidate:function(components,full){var isArray=!components.isComponent,length;var i=0;for(length=isArray?components.length:1;i<length;++i){var comp=isArray?components[i]:components;if(comp.rendered&&!comp.hidden){var containerLayoutDone=comp.ownerLayout;var componentLayout=comp.componentLayout;var skipLayout=!1;containerLayoutDone&&containerLayoutDone.needsItemSize||!comp.liquidLayout||(skipLayout=!0);if(!skipLayout||containerLayoutDone&&containerLayoutDone.setsItemSize){var item=
this.getCmp(comp);var firstTime=!item.state;var layout=comp.isContainer&&!comp.collapsed?comp.layout:null;var invalidateOptions=this.invalidateData[item.id];delete this.invalidateData[item.id];var token=item.init(full,invalidateOptions)}skipLayout||(invalidateOptions&&this.processInvalidate(invalidateOptions,item,'before'),componentLayout.beforeLayoutCycle&&componentLayout.beforeLayoutCycle(item),layout&&layout.beforeLayoutCycle&&layout.beforeLayoutCycle(item),token=item.initContinue(token),containerLayoutDone=
!0,componentLayout.getLayoutItems&&(componentLayout.renderChildren(),comp=componentLayout.getLayoutItems(),comp.length&&this.invalidate(comp,!0)),layout&&(containerLayoutDone=!1,layout.renderChildren(),layout.needsItemSize||layout.activeItemCount)&&(comp=layout.getVisibleItems(),comp.length&&this.invalidate(comp,!0)),item.initDone(containerLayoutDone),this.resetLayout(componentLayout,item,firstTime),layout&&this.resetLayout(layout,item,firstTime),item.initAnimation(),invalidateOptions&&this.processInvalidate(invalidateOptions,
item,'after'))}}this.currentLayout=null},isDescendant:function(ancestor,descendant){if(ancestor.isContainer)for(descendant=descendant.ownerCt;descendant;descendant=descendant.ownerCt)if(descendant===ancestor)return!0;return!1},layoutDone:function(layout){var ownerContext=layout.ownerContext;layout.running=!1;if(layout.isComponentLayout){if(ownerContext.measuresBox)ownerContext.onBoxMeasured();ownerContext.setProp('done',!0)}else ownerContext.setProp('containerLayoutDone',!0);--this.remainingLayouts;
++this.progressCount},newQueue:function(){return new Ext.util.Queue},processInvalidate:function(options,item,name){if(options[name]){var currentLayout=this.currentLayout;this.currentLayout=options.layout||null;options[name](item,options);this.currentLayout=currentLayout}},queueAnimation:function(item){this.animateQueue.add(item)},queueCompletion:function(layout){this.completionQueue.add(layout)},queueFinalize:function(layout){this.finalizeQueue.add(layout)},queueFlush:function(item,replace){this.flushQueue.add(item,
replace)},chainFns:function(oldOptions,newOptions,funcName){var me=this,oldLayout=oldOptions.layout,newLayout=newOptions.layout,oldFn=oldOptions[funcName],newFn=newOptions[funcName];return function(contextItem){var prev=me.currentLayout;oldFn&&(me.currentLayout=oldLayout,oldFn.call(oldOptions.scope||oldOptions,contextItem,oldOptions));me.currentLayout=newLayout;newFn.call(newOptions.scope||newOptions,contextItem,newOptions);me.currentLayout=prev}},purgeInvalidates:function(){var newQueue=[],oldQueue=
this.invalidQueue,oldLength=oldQueue.length,oldIndex,newIndex;for(oldIndex=0;oldIndex<oldLength;++oldIndex){var oldEntry=oldQueue[oldIndex];var oldComp=oldEntry.item.target;var keep=!0;for(newIndex=newQueue.length;newIndex--;){var newEntry=newQueue[newIndex];newEntry=newEntry.item.target;if(oldComp.isLayoutChild(newEntry)){keep=!1;break}newEntry.isLayoutChild(oldComp)&&Ext.Array.erase(newQueue,newIndex,1)}keep&&newQueue.push(oldEntry)}this.invalidQueue=newQueue},queueInvalidate:function(item,options){var newQueue=
[],oldQueue=this.invalidQueue,index=oldQueue.length,oldState;if(item.isComponent){var comp=item;(item=this.items[comp.el.id])?item.recalculateSizeModel():item=this.getCmp(comp)}else comp=item.target;for(item.invalid=!0;index--;){var old=oldQueue[index];var oldComp=old.item.target;if(!comp.isFloating&&comp.up(oldComp))return;if(oldComp===comp){(item=old.options)?options&&(options.widthModel&&(item.widthModel=options.widthModel),options.heightModel&&(item.heightModel=options.heightModel),(oldState=
item.state)?options.state&&Ext.apply(oldState,options.state):item.state=options.state,options.before&&(item.before=this.chainFns(item,options,'before')),options.after&&(item.after=this.chainFns(item,options,'after'))):old.options=options;return}oldComp.isLayoutChild(comp)||newQueue.push(old)}newQueue.push({item:item,options:options});this.invalidQueue=newQueue},queueItemLayouts:function(item){item=item.isComponent?item:item.target;var layout=item.componentLayout;layout.pending||layout.invalid||layout.done||
this.queueLayout(layout);layout=item.layout;!layout||layout.pending||layout.invalid||layout.done||item.collapsed||this.queueLayout(layout)},queueLayout:function(layout){this.layoutQueue.add(layout);layout.pending=!0},removeEl:function(el,parent){el=el.id;parent=parent?parent.children:null;var items=this.items;parent&&Ext.Array.remove(parent,items[el]);delete items[el]},resetLayout:function(layout,ownerContext,firstTime){this.currentLayout=layout;layout.done=!1;layout.pending=!0;layout.firedTriggers=
0;this.layoutQueue.add(layout);firstTime?(this.layouts[layout.id]=layout,layout.running=!0,layout.finishedLayout&&this.finishQueue.add(layout),++this.remainingLayouts,++layout.layoutCount,layout.ownerContext=ownerContext,layout.beginCount=0,layout.blockCount=0,layout.calcCount=0,layout.triggerCount=0,layout.initialized||layout.initLayout(),layout.beginLayout(ownerContext)):(++layout.beginCount,layout.running||(++this.remainingLayouts,layout.running=!0,layout.ownerContext=ownerContext,layout.isComponentLayout&&
ownerContext.unsetProp('done'),this.completionQueue.remove(layout),this.finalizeQueue.remove(layout)));layout.beginLayoutCycle(ownerContext,firstTime)},run:function(){var flushed=!1,watchDog=this.cycleWatchDog;this.purgeInvalidates();this.flushInvalidates();this.state=1;this.totalCount=this.layoutQueue.getCount();for(this.flush();(this.remainingLayouts||this.invalidQueue.length)&&watchDog--;){this.invalidQueue.length&&this.flushInvalidates();if(this.runCycle())flushed=!1;else if(!flushed)this.flush(),
flushed=!0,this.flushLayouts('completionQueue','completeLayout');else if(!this.invalidQueue.length){this.state=2;break}this.remainingLayouts||this.invalidQueue.length||(this.flush(),this.flushLayouts('completionQueue','completeLayout'),this.flushLayouts('finalizeQueue','finalizeLayout'))}return this.runComplete()},runComplete:function(){this.state=2;if(this.remainingLayouts)return this.handleFailure(),!1;this.flush();this.flushLayouts('finishQueue','finishedLayout',!0);this.flushLayouts('finishQueue',
'notifyOwner');this.flush();this.flushAnimations();return!0},runCycle:function(){var layouts=this.layoutQueue.clear(),length=layouts.length,i;++this.cycleCount;for(i=this.progressCount=0;i<length;++i)this.runLayout(this.currentLayout=layouts[i]);this.currentLayout=null;return 0<this.progressCount},runLayout:function(layout){var ownerContext=this.getCmp(layout.owner);layout.pending=!1;ownerContext.state.blocks||(layout.done=!0,++layout.calcCount,++this.calcCount,layout.calculate(ownerContext),layout.done?
(this.layoutDone(layout),layout.completeLayout&&this.queueCompletion(layout),layout.finalizeLayout&&this.queueFinalize(layout)):layout.pending||layout.invalid||layout.blockCount+layout.triggerCount-layout.firedTriggers||this.queueLayout(layout))},setItemSize:function(item,width,height){var items=item,len=1,i;item.isComposite?(items=item.elements,len=items.length,item=items[0]):item.dom||item.el||(len=items.length,item=items[0]);for(i=0;i<len;)item=this.get(item),item.setSize(width,height),item=items[++i]}},
1,0,0,0,0,0,[Ext.layout,'Context'],0);
Ext.cmd.derive('Ext.layout.component.Body',Ext.layout.component.Auto,{type:'body',beginLayout:function(ownerContext){Ext.layout.component.Auto.prototype.beginLayout.apply(this,arguments);ownerContext.bodyContext=ownerContext.getEl('body')},beginLayoutCycle:function(ownerContext,firstCycle){var lastWidthModel=this.lastWidthModel,lastHeightModel=this.lastHeightModel,body=this.owner.body;Ext.layout.component.Auto.prototype.beginLayoutCycle.apply(this,arguments);lastWidthModel&&lastWidthModel.fixed&&
ownerContext.widthModel.shrinkWrap&&body.setWidth(null);lastHeightModel&&lastHeightModel.fixed&&ownerContext.heightModel.shrinkWrap&&body.setHeight(null)},calculateOwnerHeightFromContentHeight:function(ownerContext,contentHeight){var height=Ext.layout.component.Auto.prototype.calculateOwnerHeightFromContentHeight.apply(this,arguments);ownerContext.targetContext!==ownerContext&&(height+=ownerContext.getPaddingInfo().height);return height},calculateOwnerWidthFromContentWidth:function(ownerContext,contentWidth){var width=
Ext.layout.component.Auto.prototype.calculateOwnerWidthFromContentWidth.apply(this,arguments);ownerContext.targetContext!==ownerContext&&(width+=ownerContext.getPaddingInfo().width);return width},measureContentWidth:function(ownerContext){return ownerContext.bodyContext.setWidth(ownerContext.bodyContext.el.dom.offsetWidth,!1)},measureContentHeight:function(ownerContext){return ownerContext.bodyContext.setHeight(ownerContext.bodyContext.el.dom.offsetHeight,!1)},publishInnerHeight:function(ownerContext,
height){height-=ownerContext.getFrameInfo().height;ownerContext.targetContext!==ownerContext&&(height-=ownerContext.getPaddingInfo().height);return ownerContext.bodyContext.setHeight(height,!ownerContext.heightModel.natural)},publishInnerWidth:function(ownerContext,width){width-=ownerContext.getFrameInfo().width;ownerContext.targetContext!==ownerContext&&(width-=ownerContext.getPaddingInfo().width);ownerContext.bodyContext.setWidth(width,!ownerContext.widthModel.natural)}},0,0,0,0,['layout.body'],
0,[Ext.layout.component,'Body'],0);
Ext.cmd.derive('Ext.layout.component.FieldSet',Ext.layout.component.Body,{type:'fieldset',defaultCollapsedWidth:100,beforeLayoutCycle:function(ownerContext){ownerContext.target.collapsed&&(ownerContext.heightModel=this.sizeModels.shrinkWrap)},beginLayout:function(ownerContext){var legend=this.owner.legend;Ext.layout.component.Body.prototype.beginLayout.call(this,ownerContext);legend&&(ownerContext.legendContext=ownerContext.context.getCmp(legend))},beginLayoutCycle:function(ownerContext){var target=ownerContext.target;
Ext.layout.component.Body.prototype.beginLayoutCycle.apply(this,arguments);target.collapsed&&(ownerContext.setContentHeight(0),ownerContext.restoreMinHeight=target.minHeight,delete target.minHeight,ownerContext.widthModel.shrinkWrap&&(target=this.lastComponentSize,ownerContext.setContentWidth(target&&target.contentWidth||this.defaultCollapsedWidth)))},finishedLayout:function(ownerContext){var owner=this.owner,restore=ownerContext.restoreMinHeight;Ext.layout.component.Body.prototype.finishedLayout.apply(this,
arguments);restore&&(owner.minHeight=restore)},calculateOwnerWidthFromContentWidth:function(ownerContext,contentWidth){var legendContext=ownerContext.legendContext;legendContext&&(contentWidth=Math.max(contentWidth,legendContext.getProp('width')));return Ext.layout.component.Body.prototype.calculateOwnerWidthFromContentWidth.call(this,ownerContext,contentWidth)},calculateOwnerHeightFromContentHeight:function(ownerContext,contentHeight){contentHeight=ownerContext.getBorderInfo();var legendContext=
ownerContext.legendContext;return ownerContext.getProp('contentHeight')+ownerContext.getPaddingInfo().height+(Ext.isIE8?ownerContext.bodyContext.getPaddingInfo().top:0)+(legendContext?legendContext.getProp('height'):contentHeight.top)+contentHeight.bottom},publishInnerHeight:function(ownerContext,height){var legendContext=ownerContext.legendContext,legendHeight=0;legendContext&&(legendHeight=legendContext.getProp('height'));void 0===legendHeight?this.done=!1:Ext.layout.component.Body.prototype.publishInnerHeight.call(this,
ownerContext,height-legendHeight)},getLayoutItems:function(){var legend=this.owner.legend;return legend?[legend]:[]}},0,0,0,0,['layout.fieldset'],0,[Ext.layout.component,'FieldSet'],0);
Ext.cmd.derive('Ext.resizer.BorderSplitter',Ext.resizer.Splitter,{collapseTarget:null,getTrackerConfig:function(){var trackerConfig=Ext.resizer.Splitter.prototype.getTrackerConfig.call(this);trackerConfig.xclass='Ext.resizer.BorderSplitterTracker';return trackerConfig},onTargetCollapse:function(target){Ext.resizer.Splitter.prototype.onTargetCollapse.call(this,target);!1!==this.performCollapse&&'mini'==target.collapseMode&&target.addCls(target.baseCls+'-'+target.collapsedCls+'-mini')},onTargetExpand:function(target){Ext.resizer.Splitter.prototype.onTargetExpand.call(this,
target);!1!==this.performCollapse&&'mini'==target.collapseMode&&target.removeCls(target.baseCls+'-'+target.collapsedCls+'-mini')}},0,['bordersplitter'],['component','box','splitter','bordersplitter'],{component:!0,box:!0,splitter:!0,bordersplitter:!0},['widget.bordersplitter'],0,[Ext.resizer,'BorderSplitter'],0);
Ext.cmd.derive('Ext.layout.container.Border',Ext.layout.container.Container,{alternateClassName:'Ext.layout.BorderLayout',targetCls:'x-border-layout-ct',itemCls:['x-border-item','x-box-item'],type:'border',isBorderLayout:!0,padding:void 0,percentageRe:/(\d+)%/,horzPositionProp:'left',padOnContainerProp:'left',padNotOnContainerProp:'right',axisProps:{horz:{borderBegin:'west',borderEnd:'east',horizontal:!0,posProp:'x',sizeProp:'width',sizePropCap:'Width'},vert:{borderBegin:'north',borderEnd:'south',
horizontal:!1,posProp:'y',sizeProp:'height',sizePropCap:'Height'}},centerRegion:null,manageMargins:!0,panelCollapseAnimate:!0,panelCollapseMode:'placeholder',regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(ownerContext,regions,name){var props=this.axisProps[name],isVert=!props.horizontal,sizeProp=props.sizeProp,totalFlex=0,childItems=ownerContext.childItems,length=childItems.length,i,region,match;for(i=0;i<length;++i){var childContext=childItems[i];var comp=childContext.target;
childContext.layoutPos={};if(comp.region)if(childContext.region=region=comp.region,childContext.isCenter=comp.isCenter,childContext.isHorz=comp.isHorz,childContext.isVert=comp.isVert,childContext.weight=comp.weight||this.regionWeights[region]||0,comp.weight=childContext.weight,regions[comp.id]=childContext,comp.isCenter){var center=childContext;var centerFlex=comp.flex;ownerContext.centerRegion=center}else if(isVert===childContext.isVert){childContext.reverseWeighting=region===props.borderEnd;region=
comp[sizeProp];var type=typeof region;comp.collapsed||('string'===type&&(match=this.percentageRe.exec(region))?childContext.percentage=parseInt(match[1],10):comp.flex&&(totalFlex+=childContext.flex=comp.flex))}}center&&(ownerContext=center.target,(regions=ownerContext.placeholderFor)?centerFlex||isVert!==regions.collapsedVertical()||(centerFlex=0,center.collapseAxis=name):ownerContext.collapsed&&isVert===ownerContext.collapsedVertical()&&(centerFlex=0,center.collapseAxis=name));null==centerFlex&&
(centerFlex=1);return Ext.apply({before:isVert?'top':'left',totalFlex:totalFlex+centerFlex},props)},beginLayout:function(ownerContext){var items=this.getLayoutItems(),pad=this.padding,type=typeof pad,padOnContainer=!1;if(pad){if('string'===type||'number'===type)pad=Ext.util.Format.parseBox(pad)}else pad=ownerContext.getEl('getTargetEl').getPaddingInfo(),padOnContainer=!0;ownerContext.outerPad=pad;ownerContext.padOnContainer=padOnContainer;type=0;for(pad=items.length;type<pad;++type){var childContext=
items[type];if(padOnContainer=this.getSplitterTarget(childContext)){var regions=void 0;var hidden=!!childContext.hidden;padOnContainer.split?hidden!==padOnContainer.hidden&&(regions=!padOnContainer.hidden):padOnContainer.isCollapsingOrExpanding&&(regions=!!padOnContainer.collapsed);regions?childContext.show():!1===regions&&childContext.hide()}}Ext.layout.container.Container.prototype.beginLayout.apply(this,arguments);items=ownerContext.childItems;pad=items.length;regions={};ownerContext.borderAxisHorz=
this.beginAxis(ownerContext,regions,'horz');ownerContext.borderAxisVert=this.beginAxis(ownerContext,regions,'vert');for(type=0;type<pad;++type)if(childContext=items[type],padOnContainer=this.getSplitterTarget(childContext.target))hidden=regions[padOnContainer.id],hidden||(hidden=ownerContext.getEl(padOnContainer.el,this),hidden.region=padOnContainer.region),childContext.collapseTarget=padOnContainer=hidden,childContext.weight=padOnContainer.weight,childContext.reverseWeighting=padOnContainer.reverseWeighting,
padOnContainer.splitter=childContext,childContext.isHorz=padOnContainer.isHorz,childContext.isVert=padOnContainer.isVert;this.sortWeightedItems(items,'reverseWeighting');this.setupSplitterNeighbors(items)},calculate:function(ownerContext){var containerSize=this.getContainerSize(ownerContext),childItems=ownerContext.childItems,length=childItems.length,horz=ownerContext.borderAxisHorz,vert=ownerContext.borderAxisVert,pad=ownerContext.outerPad,padOnContainer=ownerContext.padOnContainer;horz.begin=pad[this.padOnContainerProp];
vert.begin=pad.top;var horzPercentTotal=horz.end=horz.flexSpace=containerSize.width+(padOnContainer?pad[this.padOnContainerProp]:-pad[this.padNotOnContainerProp]);padOnContainer=vert.end=vert.flexSpace=containerSize.height+(padOnContainer?pad.top:-pad.bottom);for(containerSize=0;containerSize<length;++containerSize){pad=childItems[containerSize];var childMargins=pad.getMarginInfo();if(pad.isHorz||pad.isCenter)horz.addUnflexed(childMargins.width),horzPercentTotal-=childMargins.width;if(pad.isVert||
pad.isCenter)vert.addUnflexed(childMargins.height),padOnContainer-=childMargins.height;if(!pad.flex&&!pad.percentage)if(pad.isHorz||pad.isCenter&&'horz'===pad.collapseAxis)childMargins=pad.getProp('width'),horz.addUnflexed(childMargins),pad.collapseTarget&&(horzPercentTotal-=childMargins);else if(pad.isVert||pad.isCenter&&'vert'===pad.collapseAxis)childMargins=pad.getProp('height'),vert.addUnflexed(childMargins),pad.collapseTarget&&(padOnContainer-=childMargins)}for(containerSize=0;containerSize<
length;++containerSize)pad=childItems[containerSize],pad.getMarginInfo(),pad.percentage&&(pad.isHorz?(childMargins=Math.ceil(horzPercentTotal*pad.percentage/100),childMargins=pad.setWidth(childMargins),horz.addUnflexed(childMargins)):pad.isVert&&(childMargins=Math.ceil(padOnContainer*pad.percentage/100),childMargins=pad.setHeight(childMargins),vert.addUnflexed(childMargins)));for(containerSize=0;containerSize<length;++containerSize)pad=childItems[containerSize],pad.isCenter||(this.calculateChildAxis(pad,
horz),this.calculateChildAxis(pad,vert));2>this.finishAxis(ownerContext,vert)+this.finishAxis(ownerContext,horz)?this.done=!1:this.finishPositions(childItems)},calculateChildAxis:function(childContext,axis){var collapseTarget=childContext.collapseTarget,setSizeMethod='set'+axis.sizePropCap,sizeProp=axis.sizeProp,childMarginSize=childContext.getMarginInfo()[sizeProp];if(collapseTarget)var region=collapseTarget.region;else{region=childContext.region;var flex=childContext.flex}(collapseTarget=region===
axis.borderBegin)||region===axis.borderEnd?(flex?(sizeProp=Math.ceil(flex/axis.totalFlex*axis.flexSpace),sizeProp=childContext[setSizeMethod](sizeProp)):sizeProp=childContext.percentage?childContext.peek(sizeProp):childContext.getProp(sizeProp),sizeProp+=childMarginSize,collapseTarget?(setSizeMethod=axis.begin,axis.begin+=sizeProp):axis.end=setSizeMethod=axis.end-sizeProp):(childContext[setSizeMethod](axis.end-axis.begin-childMarginSize),setSizeMethod=axis.begin);childContext.layoutPos[axis.posProp]=
setSizeMethod},eachItem:function(region,fn,scope){var items=this.getLayoutItems(),i=0;Ext.isFunction(region)&&(scope=fn=region);for(i;i<items.length;i++){var item=items[i];if((!region||item.region===region)&&!1===fn.call(scope,item))break}},finishAxis:function(ownerContext,axis){var size=axis.end-axis.begin;if(ownerContext=ownerContext.centerRegion)ownerContext['set'+axis.sizePropCap](size-ownerContext.getMarginInfo()[axis.sizeProp]),ownerContext.layoutPos[axis.posProp]=axis.begin;return Ext.isNumber(size)?
1:0},finishPositions:function(childItems){var length=childItems.length,index,marginProp=this.horzPositionProp;for(index=0;index<length;++index){var childContext=childItems[index];childContext.setProp('x',childContext.layoutPos.x+childContext.marginInfo[marginProp]);childContext.setProp('y',childContext.layoutPos.y+childContext.marginInfo.top)}},getLayoutItems:function(){var owner=this.owner;owner=owner&&owner.items&&owner.items.items||[];for(var length=owner.length,items=[],i=0,ownerItem,placeholderFor;i<
length;i++)ownerItem=owner[i],placeholderFor=ownerItem.placeholderFor,!ownerItem.hidden&&(ownerItem.floated&&2!==ownerItem.isCollapsingOrExpanding||placeholderFor&&2===placeholderFor.isCollapsingOrExpanding)||items.push(ownerItem);return items},getPlaceholder:function(comp){return comp.getPlaceholder&&comp.getPlaceholder()},getMaxWeight:function(region){return this.getMinMaxWeight(region)},getMinWeight:function(region){return this.getMinMaxWeight(region,!0)},getMinMaxWeight:function(region,min){var weight=
null;this.eachItem(region,function(item){if(item.hasOwnProperty('weight'))if(null===weight)weight=item.weight;else if(min&&item.weight<weight||item.weight>weight)weight=item.weight},this);return weight},getSplitterTarget:function(splitter){return(splitter=splitter.collapseTarget)&&splitter.collapsed?splitter.placeholder||splitter:splitter},isItemBoxParent:function(itemContext){return!0},isItemShrinkWrap:function(item){return!0},insertSplitter:function(item,index,hidden,splitterCfg){var region=item.region;
hidden=Ext.apply({xtype:'bordersplitter',collapseTarget:item,id:item.id+'-splitter',hidden:hidden,canResize:!1!==item.splitterResize,splitterFor:item,synthetic:!0},splitterCfg);'mini'===item.collapseMode&&(hidden.collapsedCls=item.collapsedCls);item.splitter=this.owner.add(index+('south'===region||'east'===region?0:1),hidden)},getMoveAfterIndex:function(after){var index=Ext.layout.container.Container.prototype.getMoveAfterIndex.apply(this,arguments);after.splitter&&index++;return index},moveItemBefore:function(item,
before){if(before&&before.splitter){var beforeRegion=before.region;if('south'===beforeRegion||'east'===beforeRegion)before=before.splitter}return Ext.layout.container.Container.prototype.moveItemBefore.call(this,item,before)},onAdd:function(item,index){var placeholderFor=item.placeholderFor,region=item.region;Ext.layout.container.Container.prototype.onAdd.apply(this,arguments);if(region){Ext.apply(item,this.regionFlags[region]);this.owner.isViewport&&(item.isViewportBorderChild=!0);item.initBorderRegion&&
item.initBorderRegion();if(placeholderFor='center'===region)this.centerRegion=item;else{region=item.split;var hidden=!!item.hidden;if('object'===typeof region){var cfg=region;region=!0}!item.isHorz&&!item.isVert||!region&&'mini'!==item.collapseMode||this.insertSplitter(item,index,hidden||!region,cfg)}placeholderFor||item.hasOwnProperty('collapseMode')||(item.collapseMode=this.panelCollapseMode);item.hasOwnProperty('animCollapse')||(item.animCollapse='placeholder'!==item.collapseMode?!1:this.panelCollapseAnimate);
hidden&&item.placeholder&&item.placeholder.isVisible()&&this.owner.insert(index,item.placeholder)}else placeholderFor&&(Ext.apply(item,this.regionFlags[placeholderFor.region]),item.region=placeholderFor.region,item.weight=placeholderFor.weight)},onDestroy:function(){this.centerRegion=null;Ext.layout.container.Container.prototype.onDestroy.call(this)},onRemove:function(comp,isDestroying){var splitter=comp.splitter,owner=this.owner,destroying=owner.destroying;comp.region&&(comp.isCenter&&(this.centerRegion=
null),delete comp.isCenter,delete comp.isHorz,delete comp.isVert,splitter&&!owner.destroying&&owner.doRemove(splitter,!0),delete comp.splitter);Ext.layout.container.Container.prototype.onRemove.apply(this,arguments);!destroying&&!isDestroying&&comp.rendered&&(splitter=comp.getEl())&&(splitter.setStyle('top',''),splitter.setStyle(this.horzPositionProp,''))},regionMeta:{center:{splitterDelta:0},north:{splitterDelta:1},south:{splitterDelta:-1},west:{splitterDelta:1},east:{splitterDelta:-1}},regionFlags:{center:{isCenter:!0,
isHorz:!1,isVert:!1},north:{isCenter:!1,isHorz:!1,isVert:!0,collapseDirection:'top'},south:{isCenter:!1,isHorz:!1,isVert:!0,collapseDirection:'bottom'},west:{isCenter:!1,isHorz:!0,isVert:!1,collapseDirection:'left'},east:{isCenter:!1,isHorz:!0,isVert:!1,collapseDirection:'right'}},setupSplitterNeighbors:function(items){var edgeRegions={},length=items.length,touchedRegions=this.touchedRegions,i,count,edge;for(i=0;i<length;++i){var comp=items[i].target;var region=comp.region;if(comp.isCenter)var center=
comp;else if(region){var touched=touchedRegions[region];var j=0;for(count=touched.length;j<count;++j)(edge=edgeRegions[touched[j]])&&edge.neighbors.push(comp);if(j=comp.placeholderFor?comp.placeholderFor.splitter:comp.splitter)j.neighbors=[];edgeRegions[region]=j}}if(center)for(touched=touchedRegions.center,j=0,count=touched.length;j<count;++j)(edge=edgeRegions[touched[j]])&&edge.neighbors.push(center)},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(item){var policies=this.sizePolicies,collapseTarget;if(item.isCenter)return(collapseTarget=item.placeholderFor)?collapseTarget.collapsedVertical()?policies.vert:policies.horz:item.collapsed?item.collapsedVertical()?
policies.vert:policies.horz:policies.flexAll;if(collapseTarget=item.collapseTarget)return collapseTarget.isVert?policies.vert:policies.horz;if(item.region){if(item.isVert){collapseTarget=item.height;var policy=policies.vert}else collapseTarget=item.width,policy=policies.horz;return item.flex||'string'===typeof collapseTarget&&this.percentageRe.test(collapseTarget)?policies.flexAll:policy}return this.autoSizePolicy}},0,0,0,0,['layout.border'],0,[Ext.layout.container,'Border',Ext.layout,'BorderLayout'],
function(){var methods={addUnflexed:function(px){this.flexSpace=Math.max(this.flexSpace-px,0)}},props=this.prototype.axisProps;Ext.apply(props.horz,methods);Ext.apply(props.vert,methods)});
Ext.cmd.derive('Ext.layout.container.Card',Ext.layout.container.Fit,{alternateClassName:'Ext.layout.CardLayout',type:'card',hideInactive:!0,deferredRender:!1,getRenderTree:function(){var activeItem=this.getActiveItem();if(activeItem){if(activeItem.hasListeners.beforeactivate&&!1===activeItem.fireEvent('beforeactivate',activeItem))activeItem=this.activeItem=this.owner.activeItem=null;else if(activeItem.hasListeners.activate)activeItem.on({boxready:function(){activeItem.fireEvent('activate',activeItem)},
single:!0});if(this.deferredRender){if(activeItem)return this.getItemsRenderTree([activeItem])}else return Ext.layout.container.Fit.prototype.getRenderTree.apply(this,arguments)}},renderChildren:function(){var active=this.getActiveItem();this.deferredRender?active&&this.renderItems([active],this.getRenderTarget()):Ext.layout.container.Fit.prototype.renderChildren.call(this)},isValidParent:function(item,target,position){return(item=item.el?item.el.dom:Ext.getDom(item))&&item.parentNode===(target.dom||
target)||!1},getActiveItem:function(){var result=this.parseActiveItem(void 0===this.activeItem?this.owner&&this.owner.activeItem:this.activeItem);result&&-1!==this.owner.items.indexOf(result)&&(this.activeItem=result);return null==result?null:this.activeItem||this.owner.activeItem},parseActiveItem:function(item){return item&&item.isComponent?item:'number'===typeof item||void 0===item?this.getLayoutItems()[item||0]:null===item?null:this.owner.getComponent(item)},configureItem:function(item){item.setHiddenState(item!==
this.getActiveItem());Ext.layout.container.Fit.prototype.configureItem.apply(this,arguments)},onAdd:function(item,pos){Ext.layout.container.Fit.prototype.onAdd.call(this,item,pos);this.setItemHideMode(item)},onRemove:function(component){Ext.layout.container.Fit.prototype.onRemove.call(this,component);this.resetItemHideMode(component);component===this.activeItem&&(this.activeItem=void 0)},getAnimation:function(newCard,owner){newCard=(newCard||{}).cardSwitchAnimation;return!1===newCard?!1:newCard||
owner.cardSwitchAnimation},getNext:function(JSCompiler_OptimizeArgumentsArray_p0){var items=this.getLayoutItems(),index=Ext.Array.indexOf(items,this.activeItem);return items[index+1]||(JSCompiler_OptimizeArgumentsArray_p0?items[0]:!1)},next:function(JSCompiler_OptimizeArgumentsArray_p1,JSCompiler_OptimizeArgumentsArray_p2){return this.setActiveItem(this.getNext(JSCompiler_OptimizeArgumentsArray_p2),JSCompiler_OptimizeArgumentsArray_p1)},getPrev:function(JSCompiler_OptimizeArgumentsArray_p3){var items=
this.getLayoutItems(),index=Ext.Array.indexOf(items,this.activeItem);return items[index-1]||(JSCompiler_OptimizeArgumentsArray_p3?items[items.length-1]:!1)},prev:function(JSCompiler_OptimizeArgumentsArray_p4,JSCompiler_OptimizeArgumentsArray_p5){return this.setActiveItem(this.getPrev(JSCompiler_OptimizeArgumentsArray_p5),JSCompiler_OptimizeArgumentsArray_p4)},setActiveItem:function(newCard){var owner=this.owner,oldCard=this.activeItem,rendered=owner.rendered;newCard=this.parseActiveItem(newCard);
-1===owner.items.indexOf(newCard)&&(Ext.suspendLayouts(),newCard=owner.add(newCard),Ext.resumeLayouts());if(newCard&&oldCard!==newCard){if(!1===newCard.fireEvent('beforeactivate',newCard,oldCard)||oldCard&&!1===oldCard.fireEvent('beforedeactivate',oldCard,newCard))return!1;if(rendered){Ext.suspendLayouts();newCard.rendered||this.renderItem(newCard,this.getRenderTarget(),owner.items.length);if(oldCard&&this.hideInactive){var focusNewCard=oldCard.el.contains(Ext.Element.getActiveElement());oldCard.hide();
if(oldCard.hidden)oldCard.hiddenByLayout=!0,oldCard.fireEvent('deactivate',oldCard,newCard);else return!1}newCard.hidden&&newCard.show();newCard.hidden?this.activeItem=newCard=null:(this.activeItem=newCard,focusNewCard&&(newCard.defaultFocus||(newCard.defaultFocus=':focusable'),newCard.focus()));Ext.resumeLayouts(!0)}else this.activeItem=newCard;newCard.fireEvent('activate',newCard,oldCard);return this.activeItem}return!1},resetItemHideMode:function(item){item.hideMode=item.originalHideMode;delete item.originalHideMode},
setItemHideMode:function(item){item.originalHideMode=item.hideMode;item.hideMode='offsets'}},0,0,0,0,['layout.card'],0,[Ext.layout.container,'Card',Ext.layout,'CardLayout'],0);
Ext.cmd.derive('Ext.layout.container.Center',Ext.layout.container.Fit,{alternateClassName:'Ext.ux.layout.Center',type:'center',percentRe:/^\d+(?:\.\d+)?\%$/,itemCls:'x-center-layout-item',childEls:['targetEl'],renderTpl:['\x3cdiv id\x3d"{ownerId}-targetEl" data-ref\x3d"targetEl" class\x3d"{targetElCls}" role\x3d"presentation"\x3e{%this.renderBody(out, values)%}\x3c/div\x3e'],targetElCls:'x-center-target',beginLayout:function(ownerContext){var percentRe=this.percentRe,len;Ext.layout.container.Fit.prototype.beginLayout.call(this,
ownerContext);var childItems=ownerContext.childItems;var i=0;for(len=childItems.length;i<len;++i){var itemContext=childItems[i];itemContext=itemContext.target;percentRe.test(itemContext.width)&&itemContext.getEl().setStyle('width','');percentRe.test(itemContext.height)&&itemContext.getEl().setStyle('height','')}ownerContext.targetElContext=ownerContext.getEl('targetEl',this)},beginLayoutCycle:function(ownerContext,firstCycle){var targetEl=this.targetEl;Ext.layout.container.Fit.prototype.beginLayoutCycle.call(this,
ownerContext,firstCycle);targetEl.setStyle('width','');targetEl.setStyle('height','')},getRenderData:function(){var data=Ext.layout.container.Fit.prototype.getRenderData.call(this);data.targetElCls=this.targetElCls;return data},getRenderTarget:function(){return this.targetEl},getItemSizePolicy:function(item,ownerSizeModel){ownerSizeModel=ownerSizeModel||this.owner.getSizeModel();var percentRe=this.percentRe;item=(ownerSizeModel.width.shrinkWrap||!percentRe.test(item.width)?0:1)|(ownerSizeModel.height.shrinkWrap||
!percentRe.test(item.height)?0:2);return this.sizePolicies[item]},isItemShrinkWrap:function(item){return!0},calculate:function(ownerContext){var targetElContext=ownerContext.targetElContext;Ext.layout.container.Fit.prototype.calculate.call(this,ownerContext);var info=ownerContext.state.info;ownerContext.widthModel.shrinkWrap&&targetElContext.setWidth(info.contentWidth);ownerContext.heightModel.shrinkWrap&&targetElContext.setHeight(info.contentHeight)},getPos:function(itemContext,info,dimension){var modelName=
dimension+'Model',size=itemContext.props[dimension],pos=0;itemContext[modelName].calculated||(size+=info.margins[dimension]);info.ownerContext[modelName].shrinkWrap||(pos=Math.round((info.targetSize[dimension]-size)/2),isNaN(pos)&&(this.done=!1));return Math.max(pos,0)},positionItemX:function(itemContext,info){info=this.getPos(itemContext,info,'width');itemContext.setProp('x',info)},positionItemY:function(itemContext,info){info=this.getPos(itemContext,info,'height');itemContext.setProp('y',info)},
setItemHeight:function(itemContext,info){var ratio=parseFloat(itemContext.target.height)/100;itemContext.setHeight(Math.round((info.targetSize.height-info.margins.height)*ratio))},setItemWidth:function(itemContext,info){var ratio=parseFloat(itemContext.target.width)/100;itemContext.setWidth(Math.round((info.targetSize.width-info.margins.width)*ratio))}},0,0,0,0,['layout.center','layout.ux.center'],0,[Ext.layout.container,'Center',Ext.ux.layout,'Center'],0);
Ext.cmd.derive('Ext.plugin.Manager',Ext.Base,{alternateClassName:['Ext.PluginManager','Ext.PluginMgr'],singleton:!0,typeName:'ptype',create:function(config,defaultType,host){config.init||(host?(config=Ext.apply({},config),config.cmp=host):host=config.cmp,config.xclass?config=Ext.create(config):(defaultType='plugin.'+(config.ptype||defaultType),config=Ext.ClassManager.instantiateByAlias(defaultType,config)));config&&host&&config.setCmp&&!config.setCmpCalled&&(config.setCmp(host),config.setCmpCalled=
!0);return config}},0,0,0,0,0,0,[Ext.plugin,'Manager',Ext,'PluginManager',Ext,'PluginMgr'],0);
Ext.cmd.derive('Ext.resizer.BorderSplitterTracker',Ext.resizer.SplitterTracker,{getPrevCmp:null,getNextCmp:null,calculateConstrainRegion:function(){var splitter=this.splitter,collapseTarget=splitter.collapseTarget,defaultSplitMin=splitter.defaultSplitMin,sizePropCap=splitter.vertical?'Width':'Height',minSizeProp='min'+sizePropCap,maxSizeProp='max'+sizePropCap;sizePropCap='get'+sizePropCap;var neighbors=splitter.neighbors,length=neighbors.length,box=collapseTarget.el.getBox(),left=box.x,top=box.y,
right=box.right;box=box.bottom;var size=splitter.vertical?right-left:box-top,i;var minRange=(collapseTarget[minSizeProp]||Math.min(size,defaultSplitMin))-size;collapseTarget=(collapseTarget=collapseTarget[maxSizeProp])?collapseTarget-size:1E9;var targetSize=size;for(i=0;i<length;++i){var neighbor=neighbors[i];size=neighbor[sizePropCap]();var neighborMaxSize=neighbor[maxSizeProp];null===neighborMaxSize&&(neighborMaxSize=void 0);neighborMaxSize=size-neighborMaxSize;size-=neighbor[minSizeProp]||Math.min(size,
defaultSplitMin);isNaN(neighborMaxSize)||minRange<neighborMaxSize&&(minRange=neighborMaxSize);collapseTarget>size&&(collapseTarget=size)}if(2>collapseTarget-minRange)return null;box=new Ext.util.Region(top,right,box,left);this.constraintAdjusters[this.getCollapseDirection()](box,minRange,collapseTarget,splitter);this.dragInfo={minRange:minRange,maxRange:collapseTarget,targetSize:targetSize};return box},constraintAdjusters:{left:function(box,minRange,maxRange,splitter){box[0]=box.x=box.left=box.right+
minRange;box.right+=maxRange+splitter.getWidth()},top:function(box,minRange,maxRange,splitter){box[1]=box.y=box.top=box.bottom+minRange;box.bottom+=maxRange+splitter.getHeight()},bottom:function(box,minRange,maxRange,splitter){box.bottom=box.top-minRange;box.top-=maxRange+splitter.getHeight()},right:function(box,minRange,maxRange,splitter){box.right=box.left-minRange;box[0]=box.x=box.left=box.x-maxRange+splitter.getWidth()}},onBeforeStart:function(e){var splitter=this.splitter;e=splitter.collapseTarget;
splitter=splitter.neighbors;var length=splitter.length,i;if(e.collapsed)return!1;for(i=0;i<length;++i){var neighbor=splitter[i];if(neighbor.collapsed&&neighbor.isHorz===e.isHorz)return!1}return(this.constrainTo=this.calculateConstrainRegion())?!0:!1},performResize:function(e,offset){var splitter=this.splitter,collapseDirection=splitter.getCollapseDirection();e=splitter.collapseTarget;var adjusters=this.splitAdjusters[splitter.vertical?'horz':'vert'];offset=offset[adjusters.index];var dragInfo=this.dragInfo;
if('right'===collapseDirection||'bottom'===collapseDirection)offset=-offset;if(offset=Math.min(Math.max(dragInfo.minRange,offset),dragInfo.maxRange))(splitter=splitter.ownerCt).suspendLayouts(),adjusters.adjustTarget(e,dragInfo.targetSize,offset),splitter.resumeLayouts(!0)},splitAdjusters:{horz:{index:0,adjustTarget:function(target,size,delta){target.flex=null;target.setSize(size+delta)}},vert:{index:1,adjustTarget:function(target,targetSize,delta){target.flex=null;target.setSize(void 0,targetSize+
delta)}}},getCollapseDirection:function(){return this.splitter.getCollapseDirection()}},0,0,0,0,0,0,[Ext.resizer,'BorderSplitterTracker'],0);
Ext.cmd.derive('Ext.resizer.ResizeTracker',Ext.dd.DragTracker,{dynamic:!0,preserveRatio:!1,preventDefault:!1,constrainTo:null,proxyCls:'x-resizable-proxy',constructor:function(config){var me=this;config.el||(me.el=config.target.isComponent?config.target.getEl():config.target);Ext.dd.DragTracker.prototype.constructor.apply(this,arguments);if(me.preserveRatio&&me.minWidth&&me.minHeight){var widthRatio=me.minWidth/me.el.getWidth();var heightRatio=me.minHeight/me.el.getHeight();heightRatio>widthRatio?
me.minWidth=me.el.getWidth()*heightRatio:me.minHeight=me.el.getHeight()*widthRatio}if(me.throttle){var throttledResizeFn=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(me,arguments)},me.throttle);me.resize=function(box,direction,atEnd){atEnd?Ext.resizer.ResizeTracker.prototype.resize.apply(me,arguments):throttledResizeFn.apply(null,arguments)}}},onBeforeStart:function(e){this.startBox=this.target.getBox()},getProxy:function(){this.dynamic||this.proxy||(this.proxy=
this.createProxy(this.target||this.el),this.hideProxy=!0);if(this.proxy)return this.proxy.show(),this.proxy},createProxy:function(target){var cls=this.proxyCls;target=target.isComponent?target.getProxy().addCls(cls):target.createProxy({tag:'div',role:'presentation',cls:cls,id:target.id+'-rzproxy'},Ext.getBody());target.removeCls('x-proxy-el');return target},onStart:function(e){this.activeResizeHandle=Ext.get(this.getDragTarget().id);this.dynamic||this.resize(this.startBox)},onMouseDown:function(e,
target){Ext.dd.DragTracker.prototype.onMouseDown.call(this,e,target);Ext.dom.Element.maskIframes()},onMouseUp:function(e){Ext.dd.DragTracker.prototype.onMouseUp.call(this,e);Ext.dom.Element.unmaskIframes()},onDrag:function(e){(this.dynamic||this.proxy)&&this.updateDimensions(e)},updateDimensions:function(e,atEnd){var region=this.activeResizeHandle.region,offset=this.getOffset(this.constrainTo?'dragTarget':null),box=this.startBox,widthAdjust=0,heightAdjust=0,adjustX=0,adjustY=0;region=this.convertRegionName(region);
switch(region){case 'south':heightAdjust=offset[1];var axis=2;break;case 'north':heightAdjust=-offset[1];adjustY=-heightAdjust;axis=2;break;case 'east':widthAdjust=offset[0];axis=1;break;case 'west':widthAdjust=-offset[0];adjustX=-widthAdjust;axis=1;break;case 'northeast':heightAdjust=-offset[1];adjustY=-heightAdjust;widthAdjust=offset[0];var dragRatio=[box.x,box.y+box.height];axis=3;break;case 'southeast':heightAdjust=offset[1];widthAdjust=offset[0];dragRatio=[box.x,box.y];axis=3;break;case 'southwest':widthAdjust=
-offset[0];adjustX=-widthAdjust;heightAdjust=offset[1];dragRatio=[box.x+box.width,box.y];axis=3;break;case 'northwest':heightAdjust=-offset[1],adjustY=-heightAdjust,widthAdjust=-offset[0],adjustX=-widthAdjust,dragRatio=[box.x+box.width,box.y+box.height],axis=3}offset={width:box.width+widthAdjust,height:box.height+heightAdjust,x:box.x+adjustX,y:box.y+adjustY};widthAdjust=Ext.Number.snap(offset.width,this.widthIncrement);heightAdjust=Ext.Number.snap(offset.height,this.heightIncrement);if(widthAdjust!==
offset.width||heightAdjust!==offset.height){switch(region){case 'northeast':offset.y-=heightAdjust-offset.height;break;case 'north':offset.y-=heightAdjust-offset.height;break;case 'southwest':offset.x-=widthAdjust-offset.width;break;case 'west':offset.x-=widthAdjust-offset.width;break;case 'northwest':offset.x-=widthAdjust-offset.width,offset.y-=heightAdjust-offset.height}offset.width=widthAdjust;offset.height=heightAdjust}offset.width<this.minWidth||offset.width>this.maxWidth?(offset.width=Ext.Number.constrain(offset.width,
this.minWidth,this.maxWidth),adjustX&&(offset.x=box.x+(box.width-offset.width))):this.lastX=offset.x;offset.height<this.minHeight||offset.height>this.maxHeight?(offset.height=Ext.Number.constrain(offset.height,this.minHeight,this.maxHeight),adjustY&&(offset.y=box.y+(box.height-offset.height))):this.lastY=offset.y;if(this.preserveRatio||e.shiftKey)e=this.startBox.width/this.startBox.height,adjustX=Math.min(Math.max(this.minHeight,offset.width/e),this.maxHeight),adjustY=Math.min(Math.max(this.minWidth,
offset.height*e),this.maxWidth),1===axis?offset.height=adjustX:2===axis?offset.width=adjustY:(dragRatio=Math.abs(dragRatio[0]-this.lastXY[0])/Math.abs(dragRatio[1]-this.lastXY[1]),dragRatio>e?offset.height=adjustX:offset.width=adjustY,'northeast'===region?offset.y=box.y-(offset.height-box.height):'northwest'===region?(offset.y=box.y-(offset.height-box.height),offset.x=box.x-(offset.width-box.width)):'southwest'===region&&(offset.x=box.x-(offset.width-box.width)));this.setPosition=offset.x!==this.startBox.x||
offset.y!==this.startBox.y;this.resize(offset,atEnd)},resize:function(box,atEnd){var setPosition=this.setPosition;if(this.dynamic||!this.dynamic&&atEnd)setPosition?this.target.setBox(box):this.target.setSize(box.width,box.height);atEnd||(atEnd=this.getProxy())&&atEnd!==this.target&&(setPosition||this.hideProxy?atEnd.setBox(box):atEnd.setSize(box.width,box.height))},onEnd:function(e){this.updateDimensions(e,!0);this.proxy&&this.hideProxy&&this.proxy.hide()},convertRegionName:function(name){return name}},
1,0,0,0,0,0,[Ext.resizer,'ResizeTracker'],0);
Ext.cmd.derive('Ext.resizer.Resizer',Ext.Base,{alternateClassName:'Ext.Resizable',handleCls:'x-resizable-handle',overCls:'x-resizable-handle-over',pinnedCls:'x-resizable-pinned',wrapCls:'x-resizable-wrap',wrappedCls:'x-resizable-wrapped',delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:!0,handles:'s e se',height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:1E4,maxWidth:1E4,pinned:!1,preserveRatio:!1,transparent:!1,possiblePositions:{n:'north',s:'south',e:'east',w:'west',
se:'southeast',sw:'southwest',nw:'northwest',ne:'northeast'},touchActionMap:{n:{panY:!1},s:{panY:!1},e:{panX:!1},w:{panX:!1},se:{panX:!1,panY:!1},sw:{panX:!1,panY:!1},nw:{panX:!1,panY:!1},ne:{panX:!1,panY:!1}},ariaRole:'presentation',constructor:function(config,JSCompiler_OptimizeArgumentsArray_p6){var unselectableCls=Ext.dom.Element.unselectableCls,handleEls=[],handle;if(Ext.isString(config)||Ext.isElement(config)||config.dom){var resizeTarget=config;config=JSCompiler_OptimizeArgumentsArray_p6||
{};config.target=resizeTarget}this.mixins.observable.constructor.call(this,config);(resizeTarget=this.target)?resizeTarget.isComponent?(resizeTarget.addClsWithUI('resizable'),resizeTarget.minWidth&&(this.minWidth=resizeTarget.minWidth),resizeTarget.minHeight&&(this.minHeight=resizeTarget.minHeight),resizeTarget.maxWidth&&(this.maxWidth=resizeTarget.maxWidth),resizeTarget.maxHeight&&(this.maxHeight=resizeTarget.maxHeight),resizeTarget.floating&&!this.hasOwnProperty('handles')&&(this.handles='n ne e se s sw w nw'),
this.el=resizeTarget.getEl()):resizeTarget=this.el=this.target=Ext.get(resizeTarget):resizeTarget=this.target=this.el=Ext.get(this.el);this.el.addCls(Ext.Component.prototype.borderBoxCls);Ext.isNumber(this.width)&&(this.width=Ext.Number.constrain(this.width,this.minWidth,this.maxWidth));Ext.isNumber(this.height)&&(this.height=Ext.Number.constrain(this.height,this.minHeight,this.maxHeight));null===this.width&&null===this.height||this.target.setSize(this.width,this.height);config=this.el.dom.tagName.toUpperCase();
if('TEXTAREA'===config||'IMG'===config||'TABLE'===config){this.originalTarget=this.target;JSCompiler_OptimizeArgumentsArray_p6=resizeTarget.isComponent?resizeTarget.getEl():resizeTarget;this.el.addCls(this.wrappedCls);this.target=this.el=this.el.wrap({role:'presentation',cls:this.wrapCls,id:this.el.id+'-rzwrap',style:JSCompiler_OptimizeArgumentsArray_p6.getStyle(['margin-top','margin-bottom'])});var handles=JSCompiler_OptimizeArgumentsArray_p6.getPositioning();this.el.setPositioning(handles);JSCompiler_OptimizeArgumentsArray_p6.clearPositioning();
config=JSCompiler_OptimizeArgumentsArray_p6.getBox();'absolute'!==handles.position&&(config.x=0,config.y=0);this.el.setBox(config);JSCompiler_OptimizeArgumentsArray_p6.setStyle('position','absolute');this.isTargetWrapped=!0}this.el.position();this.pinned&&this.el.addCls(this.pinnedCls);this.resizeTracker=new Ext.resizer.ResizeTracker({disabled:this.disabled,target:resizeTarget,el:this.el,constrainTo:this.constrainTo,handleCls:this.handleCls,overCls:this.overCls,throttle:this.throttle,proxy:this.originalTarget?
this.el:null,dynamic:this.originalTarget?!0:this.dynamic,originalTarget:this.originalTarget,delegate:'.'+this.handleCls,preserveRatio:this.preserveRatio,heightIncrement:this.heightIncrement,widthIncrement:this.widthIncrement,minHeight:this.minHeight,maxHeight:this.maxHeight,minWidth:this.minWidth,maxWidth:this.maxWidth});this.resizeTracker.on({mousedown:this.onBeforeResize,drag:this.onResize,dragend:this.onResizeEnd,scope:this});'all'===this.handles&&(this.handles='n s e w ne nw se sw');handles=this.handles=
this.handles.split(this.delimiterRe);config=this.possiblePositions;JSCompiler_OptimizeArgumentsArray_p6=handles.length;resizeTarget=this.handleCls+' '+this.handleCls+'-{0}';if(this.target.isComponent){var i=this.target.baseCls;resizeTarget+=' '+i+'-handle '+i+'-handle-{0}';Ext.supports.CSS3BorderRadius&&(resizeTarget+=' '+i+'-handle-{0}-br')}for(i=0;i<JSCompiler_OptimizeArgumentsArray_p6;i++)if((handle=handles[i])&&config[handle]){var pos=config[handle];var handleEl=this[pos]=this.el.createChild({id:this.el.id+
'-'+pos+'-handle',cls:Ext.String.format(resizeTarget,pos)+' '+unselectableCls,unselectable:'on',role:'presentation'});handleEl.region=pos;this.transparent&&handleEl.setOpacity(0);handleEl.setTouchAction(this.touchActionMap[handle]);handleEls.push(handleEl)}this.resizeTracker.handleEls=handleEls},disable:function(){this.disabled=!0;this.resizeTracker.disable()},enable:function(){this.disabled=!1;this.resizeTracker.enable()},onBeforeResize:function(tracker,e){return this.fireResizeEvent('beforeresize',
tracker,e)},onResize:function(tracker,e){return this.fireResizeEvent('resizedrag',tracker,e)},onResizeEnd:function(tracker,e){return this.fireResizeEvent('resize',tracker,e)},fireResizeEvent:function(name,tracker,e){if(this.hasListeners[name])return tracker=this.el.getBox(),this.fireEvent(name,this,tracker.width,tracker.height,e)},resizeTo:function(width,height){this.target.setSize(width,height);this.fireEvent('resize',this,width,height,null)},getEl:function(){return this.el},getTarget:function(){return this.target},
destroy:function(){var handles=this.handles,len=handles.length,positions=this.possiblePositions,handle,i;this.resizeTracker.destroy();this.isTargetWrapped&&this.target.destroy();for(i=0;i<len;i++){var pos=positions[handles[i]];if(handle=this[pos])handle.destroy(),this[pos]=null}this.callParent()}},1,0,0,0,0,[['observable',Ext.util.Observable]],[Ext.resizer,'Resizer',Ext,'Resizable'],0);
Ext.cmd.derive('Ext.selection.CellModel',Ext.selection.DataViewModel,{isCellModel:!0,deselectOnContainerClick:!1,enableKeyNav:!0,preventWrap:!1,bindComponent:function(view){this.view&&this.gridListeners&&this.gridListeners.destroy();Ext.selection.DataViewModel.prototype.bindComponent.call(this,view);view&&(view=view.grid||view.ownerCt,!1!==view.optimizedColumnMove&&(this.gridListeners=view.on({columnmove:this.onColumnMove,scope:this,destroyable:!0})))},getViewListeners:function(){var result=Ext.selection.DataViewModel.prototype.getViewListeners.call(this);
result.refresh=this.onViewRefresh;return result},getHeaderCt:function(){var selection=this.navigationModel.getPosition();return(selection?selection.view:this.primaryView).headerCt},onNavigate:function(e){e.record&&!e.keyEvent.stopSelection&&this.setPosition(e.position)},selectWithEvent:function(record,e){this.select(record)},select:function(pos,keepExisting,suppressEvent){keepExisting=this.getPosition();var store=this.view.store;if(pos||0===pos)pos.isModel?(pos=store.indexOf(pos),pos=-1!==pos?{row:pos,
column:keepExisting?keepExisting.column:0}:null):'number'===typeof pos&&(pos={row:pos,column:0});pos?this.selectByPosition(pos,suppressEvent):this.deselect()},getCurrentPosition:function(){var position=this.selecting?this.nextSelection:this.selection;return position?{view:position.view,record:position.record,row:position.rowIdx,columnHeader:position.column,column:position.view.getColumnManager().indexOf(position.column)}:position},getPosition:function(){return(this.selecting?this.nextSelection:this.selection)||
null},setCurrentPosition:function(pos,suppressEvent,preventCheck){pos&&!pos.isCellContext&&(pos=(new Ext.grid.CellContext(this.view)).setPosition({row:pos.row,column:'number'===typeof pos.column?this.view.getColumnManager().getColumns()[pos.column]:pos.column}));return this.setPosition(pos,suppressEvent,preventCheck)},setPosition:function(pos,suppressEvent,preventCheck){var last=this.selection;pos&&(pos=pos.isCellContext?pos.clone():(new Ext.grid.CellContext(this.view)).setPosition(pos));if(!preventCheck&&
last)if(pos&&pos.record===last.record&&pos.column===last.column&&pos.view===last.view)pos=null;else this.onCellDeselect(this.selection,suppressEvent);if(pos)return this.nextSelection=pos,this.selecting=!0,this.onCellSelect(this.nextSelection,suppressEvent),this.selecting=!1,this.selection=pos},isCellSelected:function(view,row,column){var pos=this.getPosition();if(pos&&pos.view===view)return view=(new Ext.grid.CellContext(view)).setPosition({row:row,column:'number'===typeof column?view.getColumnManager().getColumns()[column]:
column}),view.record===pos.record&&view.column===pos.column},onStoreRemove:function(store,records,indices){var pos=this.getPosition();Ext.selection.DataViewModel.prototype.onStoreRemove.apply(this,arguments);pos&&store.isMoving(pos.record)||(pos&&store.getCount()&&-1!==store.indexOf(pos.record)?pos.setRow(pos.record):this.selection=null)},onStoreClear:function(){Ext.selection.DataViewModel.prototype.onStoreClear.apply(this,arguments);this.selection=null},onStoreAdd:function(){var pos=this.getPosition();
Ext.selection.DataViewModel.prototype.onStoreAdd.apply(this,arguments);pos?pos.setRow(pos.record):this.selection=null},updateSelectedInstances:function(selected){var pos=this.getPosition(),selRec=selected.getAt(0);selRec&&pos&&pos.record.id===selRec.id&&pos.setRow(selRec);Ext.selection.DataViewModel.prototype.updateSelectedInstances.call(this,selected)},onCellClick:function(view,cell,cellIndex,record,row,recordIndex,e){-1!==recordIndex&&this.setPosition(e.position)},onCellSelect:function(position,
supressEvent){position&&void 0!==position.rowIdx&&-1<position.rowIdx&&this.doSelect(position.record,!1,supressEvent)},onCellDeselect:function(position,supressEvent){position&&void 0!==position.rowIdx&&this.doDeselect(position.record,supressEvent)},onSelectChange:function(record,isSelected,suppressEvent,commitFn){if(isSelected){var pos=this.nextSelection;var eventName='select'}else pos=this.selection,eventName='deselect';var view=pos.view||this.primaryView;if(!1!==(suppressEvent||this.fireEvent('before'+
eventName,this,record,pos.rowIdx,pos.colIdx))&&!1!==commitFn()){if(isSelected)view.onCellSelect(pos);else view.onCellDeselect(pos),delete this.selection;suppressEvent||this.fireEvent(eventName,this,record,pos.rowIdx,pos.colIdx)}},refresh:function(){var pos=this.getPosition(),selRowIdx;pos&&-1!==(selRowIdx=this.store.indexOf(this.selected.last()))&&(pos.rowIdx=selRowIdx)},onColumnMove:function(headerCt,header,fromIdx,toIdx){if(headerCt=headerCt.up('tablepanel'))this.onViewRefresh(headerCt.view)},onUpdate:function(record){this.isSelected(record)&&
(record=this.selecting?this.nextSelection:this.selection,this.view.onCellSelect(record))},onViewRefresh:function(view){var pos=this.getPosition(),headerCt=view.headerCt;if(pos&&pos.view===view){var record=pos.record;var column=view.getColumnByPosition(pos);column.isDescendantOf(headerCt)||(column=headerCt.queryById(column.id)||headerCt.down('[text\x3d"'+column.text+'"]')||headerCt.down('[dataIndex\x3d"'+column.dataIndex+'"]'));pos.record?column&&-1!==view.store.indexOfId(record.getId())&&(view=(new Ext.grid.CellContext(view)).setPosition({row:record,
column:column}),this.setPosition(view)):this.selection=null}},selectByPosition:function(position,suppressEvent){this.setPosition(position,suppressEvent)}},0,0,0,0,['selection.cellmodel'],0,[Ext.selection,'CellModel'],0);
Ext.cmd.derive('Ext.selection.RowModel',Ext.selection.DataViewModel,{enableKeyNav:!0,isRowModel:!0,deselectOnContainerClick:!1,onUpdate:function(record){var view=this.view;if(view&&this.isSelected(record)){var index=view.indexOf(record);view.onRowSelect(index);if(record===this.lastFocused)view.onRowFocus(index,!0)}},onSelectChange:function(record,isSelected,suppressEvent,commitFn){var views=this.views||[this.view],viewsLn=views.length,recordIndex=this.store.indexOf(record),eventName=isSelected?'select':
'deselect';if(!1!==(suppressEvent||this.fireEvent('before'+eventName,this,record,recordIndex))&&!1!==commitFn()){for(commitFn=0;commitFn<viewsLn;commitFn++){var view=views[commitFn];recordIndex=view.indexOf(record);if(-1!==view.indexOf(record))if(isSelected)view.onRowSelect(recordIndex,suppressEvent);else view.onRowDeselect(recordIndex,suppressEvent)}suppressEvent||this.fireEvent(eventName,this,record,recordIndex)}},getCurrentPosition:function(){var firstSelection=this.selected.getAt(0);if(firstSelection)return(new Ext.grid.CellContext(this.view)).setPosition(this.store.indexOf(firstSelection),
0)},selectByPosition:function(position,keepExisting){position.isCellContext||(position=(new Ext.grid.CellContext(this.view)).setPosition(position.row,position.column));this.select(position.record,keepExisting)},selectNext:function(keepExisting,suppressEvent){var store=this.store,selection=this.getSelection();selection=this.view.indexOf(selection[selection.length-1])+1;selection===store.getCount()||0===selection?keepExisting=!1:(this.doSelect(selection,keepExisting,suppressEvent),keepExisting=!0);
return keepExisting},selectPrevious:function(keepExisting,suppressEvent){var record=this.getSelection()[0];record=this.view.indexOf(record)-1;0>record?keepExisting=!1:(this.doSelect(record,keepExisting,suppressEvent),keepExisting=!0);return keepExisting},isRowSelected:function(record){return this.isSelected(record)},isCellSelected:function(view,record,columnHeader){return this.isSelected(record)},vetoSelection:function(e){var navModel=this.view.getNavigationModel(),key=e.getKey();return(key===e.RIGHT||
key===e.LEFT)&&navModel.previousRecord===navModel.record||Ext.selection.DataViewModel.prototype.vetoSelection.call(this,e)}},0,0,0,0,['selection.rowmodel'],0,[Ext.selection,'RowModel'],0);
Ext.cmd.derive('Ext.selection.CheckboxModel',Ext.selection.RowModel,{mode:'MULTI',injectCheckbox:0,checkOnly:!1,showHeaderCheckbox:void 0,headerText:void 0,headerAriaLabel:'Row selector',headerSelectText:'Press Space to select all rows',headerDeselectText:'Press Space to deselect all rows',rowSelectText:'Press Space to select this row',rowDeselectText:'Press Space to deselect this row',allowDeselect:!0,headerWidth:24,checkerOnCls:'x-grid-hd-checker-on',tdCls:'x-grid-cell-special x-selmodel-column',
constructor:function(){Ext.selection.RowModel.prototype.constructor.apply(this,arguments);'SINGLE'===this.mode&&(this.showHeaderCheckbox=!1)},beforeViewRender:function(view){var ownerLockable=view.grid.ownerLockable;Ext.selection.RowModel.prototype.beforeViewRender.apply(this,arguments);!1!==this.injectCheckbox&&(ownerLockable&&!this.lockListeners&&(this.lockListeners=ownerLockable.mon(ownerLockable,{lockcolumn:this.onColumnLock,unlockcolumn:this.onColumnUnlock,scope:this,destroyable:!0})),!ownerLockable||
view.isLockedView&&this.hasLockedHeader()||view.isNormalView&&!this.column)&&(this.addCheckbox(view),this.mon(view.ownerGrid,{beforereconfigure:this.onBeforeReconfigure,reconfigure:this.onReconfigure,scope:this}))},onColumnUnlock:function(lockable,column){column=this.injectCheckbox;var lockedColumns=lockable.lockedGrid.visibleColumnManager.getColumns();1===lockedColumns.length&&lockedColumns[0]===this.column&&('first'===column?column=0:'last'===column&&(column=lockable.normalGrid.visibleColumnManager.getColumns().length),
lockable.unlock(this.column,column))},onColumnLock:function(lockable,column){column=this.injectCheckbox;1===lockable.lockedGrid.visibleColumnManager.getColumns().length&&('first'===column?column=0:'last'===column&&(column=lockable.lockedGrid.visibleColumnManager.getColumns().length),lockable.lock(this.column,column))},bindComponent:function(view){this.sortable=!1;Ext.selection.RowModel.prototype.bindComponent.apply(this,arguments)},hasLockedHeader:function(){var columns=this.view.ownerGrid.getVisibleColumnManager().getColumns(),
len=columns.length,i;for(i=0;i<len;i++)if(columns[i].locked)return!0;return!1},addCheckbox:function(view){var checkboxIndex=this.injectCheckbox,headerCt=view.headerCt;!1!==checkboxIndex&&('first'===checkboxIndex?checkboxIndex=0:'last'===checkboxIndex&&(checkboxIndex=headerCt.getColumnCount()),Ext.suspendLayouts(),view.getStore().isBufferedStore&&(this.showHeaderCheckbox=!1),this.column=headerCt.add(checkboxIndex,this.column||this.getHeaderConfig()),Ext.resumeLayouts())},onBeforeReconfigure:function(grid,
store,columns,oldStore,oldColumns){grid=this.column;store=grid.ownerCt;columns&&store&&store.remove(grid,!1)},onReconfigure:function(grid,store,columns){columns&&(grid.lockable?grid.lockedGrid.isVisible()?grid.lock(this.column,0):grid.unlock(this.column,0):this.addCheckbox(this.view),grid.view.refreshView())},onHeaderClick:function(headerCt,header,e){headerCt=this.store;var len;if(!1!==this.showHeaderCheckbox&&header===this.column&&'SINGLE'!==this.mode)if(e.stopEvent(),header=header.el.hasCls('x-grid-hd-checker-on')){header=
[];var selections=this.getSelection();e=0;for(len=selections.length;e<len;++e){var selection=selections[e];-1<headerCt.indexOf(selection)&&header.push(selection)}0<header.length&&this.deselect(header)}else this.selectAll()},getHeaderConfig:function(){var showCheck=!1!==this.showHeaderCheckbox,htmlEncode=Ext.String.htmlEncode;showCheck={xtype:'checkcolumn',headerCheckbox:showCheck,isCheckerHd:showCheck,ignoreExport:!0,text:this.headerText,width:this.headerWidth,sortable:!1,draggable:!1,resizable:!1,
hideable:!1,menuDisabled:!0,checkOnly:this.checkOnly,checkboxAriaRole:'presentation',tdCls:this.tdCls,cls:'x-selmodel-column',editRenderer:this.editRenderer||this.renderEmpty,locked:this.hasLockedHeader(),processEvent:this.processColumnEvent,toggleAll:Ext.emptyFn,setRecordCheck:Ext.emptyFn,isRecordChecked:this.isRowSelected.bind(this)};this.checkOnly?(showCheck.useAriaElements=!0,showCheck.ariaLabel=htmlEncode(this.headerAriaLabel),showCheck.headerSelectText=htmlEncode(this.headerSelectText),showCheck.headerDeselectText=
htmlEncode(this.headerDeselectText),showCheck.rowSelectText=htmlEncode(this.rowSelectText),showCheck.rowDeselectText=htmlEncode(this.rowDeselectText)):(showCheck.tabIndex=void 0,showCheck.ariaRole='presentation',showCheck.focusable=!1,showCheck.cellFocusable=!1);return showCheck},processColumnEvent:function(type,view,cell,recordIndex,cellIndex,e,record,row){type=view.getNavigationModel();('keydown'===e.type&&view.actionableMode&&e.getKey()===e.SPACE||!this.checkOnly&&e.type===this.triggerEvent)&&
type.fireEvent('navigate',{view:view,navigationModel:type,keyEvent:e,position:e.position,recordIndex:recordIndex,record:record,item:e.item,cell:e.position.cellElement,columnIndex:e.position.colIdx,column:e.position.column})},toggleRecord:function(record,recordIndex,checked,cell){this[checked?'select':'deselect']([record],'SINGLE'!==this.mode)},renderEmpty:function(){return'\x26#160;'},refresh:function(){Ext.selection.RowModel.prototype.refresh.apply(this,arguments);this.updateHeaderState()},selectByPosition:function(position,
keepExisting){position.isCellContext||(position=(new Ext.grid.CellContext(this.view)).setPosition(position.row,position.column));this.checkOnly&&position.column!==this.column||Ext.selection.RowModel.prototype.selectByPosition.call(this,position,keepExisting)},onSelectChange:function(record,isSelected){Ext.selection.RowModel.prototype.onSelectChange.apply(this,arguments);this.column&&this.column.updateCellAriaDescription(record,isSelected);this.suspendChange||this.updateHeaderState()},onStoreLoad:function(){Ext.selection.RowModel.prototype.onStoreLoad.apply(this,
arguments);this.updateHeaderState()},onStoreAdd:function(){Ext.selection.RowModel.prototype.onStoreAdd.apply(this,arguments);this.updateHeaderState()},onStoreRemove:function(){Ext.selection.RowModel.prototype.onStoreRemove.apply(this,arguments);this.updateHeaderState()},onStoreRefresh:function(){Ext.selection.RowModel.prototype.onStoreRefresh.apply(this,arguments);this.updateHeaderState()},maybeFireSelectionChange:function(fireEvent){fireEvent&&!this.suspendChange&&this.updateHeaderState();Ext.selection.RowModel.prototype.maybeFireSelectionChange.apply(this,
arguments)},resumeChanges:function(){Ext.selection.RowModel.prototype.resumeChanges.call(this);this.suspendChange||this.updateHeaderState()},updateHeaderState:function(){var store=this.store,storeCount=store.getCount(),views=this.views,hdSelectStatus=!1,selectedCount=0,len;if(!store.isBufferedStore&&0<storeCount){hdSelectStatus=this.selected;var i=0;for(len=hdSelectStatus.getCount();i<len;++i)-1<store.indexOfId(hdSelectStatus.getAt(i).id)&&++selectedCount;hdSelectStatus=storeCount===selectedCount}views&&
views.length&&this.column.setHeaderStatus(hdSelectStatus)},vetoSelection:function(e){var column=this.column;if(this.checkOnly){var veto=e.type===column.triggerEvent&&e.getTarget(this.column.getCellSelector());column=e.getKey()===e.SPACE&&e.position.column===column;veto=!(veto||column)}return veto||Ext.selection.RowModel.prototype.vetoSelection.call(this,e)},privates:{onBeforeNavigate:function(metaEvent){var e=metaEvent.keyEvent;'SINGLE'!==this.selectionMode&&(metaEvent.ctrlKey=metaEvent.ctrlKey||
e.ctrlKey||e.type===this.column.triggerEvent&&!e.shiftKey||e.getKey()===e.SPACE)},selectWithEventMulti:function(record,e,isSelected){e.shiftKey||e.ctrlKey||!e.getTarget(this.column.getCellSelector())?Ext.selection.RowModel.prototype.selectWithEventMulti.call(this,record,e,isSelected):isSelected?this.doDeselect(record):this.doSelect(record,!0)}}},1,0,0,0,['selection.checkboxmodel'],0,[Ext.selection,'CheckboxModel'],function(CheckboxModel){CheckboxModel.prototype.checkSelector='.'+Ext.grid.column.Check.prototype.checkboxCls});
Ext.cmd.derive('Ext.selection.TreeModel',Ext.selection.RowModel,{selectOnExpanderClick:!1,constructor:function(config){Ext.selection.RowModel.prototype.constructor.call(this,config);this.pruneRemoved&&(this.pruneRemoved=!1,this.pruneRemovedNodes=!0)},getStoreListeners:function(){var result=Ext.selection.RowModel.prototype.getStoreListeners.call(this);result.noderemove=this.onNodeRemove;return result},onNodeRemove:function(parent,node,isMove){isMove||(parent=[],this.gatherSelected(node,parent),parent.length&&
this.deselect(parent))},pruneRemovedOnRefresh:function(){return this.pruneRemovedNodes},vetoSelection:function(e){var view=this.view;return!this.selectOnExpanderClick&&'click'===e.type&&e.getTarget(view.expanderSelector||view.lockingPartner&&view.lockingPartner.expanderSelector)||Ext.selection.RowModel.prototype.vetoSelection.call(this,e)},privates:{gatherSelected:function(node,toDeselect){var childNodes=node.childNodes,len;this.selected.containsKey(node.id)&&toDeselect.push(node);if(childNodes)for(node=
0,len=childNodes.length;node<len;++node){var child=childNodes[node];this.gatherSelected(child,toDeselect)}}}},1,0,0,0,['selection.treemodel'],0,[Ext.selection,'TreeModel'],0);
Ext.cmd.derive('Ext.slider.Thumb',Ext.Base,{overCls:'x-slider-thumb-over',constructor:function(config){Ext.apply(this,config||{},{cls:'x-slider-thumb',constrain:!1});this.callParent([config])},render:function(){this.el=this.slider.innerEl.insertFirst(this.getElConfig());this.onRender()},onRender:function(){var touchAction={};touchAction[this.slider.vertical?'panY':'panX']=!1;this.el.setTouchAction(touchAction);this.disabled&&this.disable();this.initEvents()},getElConfig:function(){var slider=this.slider,
style={};style[slider.vertical?'bottom':slider.horizontalProp]=slider.calculateThumbPosition(slider.normalizeValue(this.value))+'%';return{style:style,id:this.id,cls:this.cls,role:'presentation'}},move:function(v,animate){var el=this.el,slider=this.slider;slider=slider.vertical?'bottom':slider.horizontalProp;v+='%';if(animate){var to={};to[slider]=v;if(!Ext.supports.GetPositionPercentage){var from={};from[slider]=el.dom.style[slider]}v={target:el,duration:350,from:from,to:to,scope:this,callback:this.onAnimComplete};
!0!==animate&&Ext.apply(v,animate);this.anim=new Ext.fx.Anim(v)}else el.dom.style[slider]=v},onAnimComplete:function(){this.anim=null},enable:function(){var el=this.el;this.disabled=!1;el&&el.removeCls(this.slider.disabledCls)},disable:function(){var el=this.el;this.disabled=!0;el&&el.addCls(this.slider.disabledCls)},initEvents:function(){this.tracker=new Ext.dd.DragTracker({el:this.el,onBeforeStart:this.onBeforeDragStart.bind(this),onStart:this.onDragStart.bind(this),onDrag:this.onDrag.bind(this),
onEnd:this.onDragEnd.bind(this),tolerance:3,autoStart:300});this.el.hover(this.addOverCls,this.removeOverCls,this)},addOverCls:function(){this.disabled||this.el.addCls(this.overCls)},removeOverCls:function(){this.el.removeCls(this.overCls)},onBeforeDragStart:function(e){e=this.el;var trackerXY=this.tracker.getXY(),delta=this.pointerOffset=e.getXY();if(this.disabled)return!1;delta[0]+=Math.floor(e.getWidth()/2)-trackerXY[0];delta[1]+=Math.floor(e.getHeight()/2)-trackerXY[1];this.slider.promoteThumb(this);
return!0},onDragStart:function(e){var slider=this.slider;slider.onDragStart(this,e);this.el.addCls('x-slider-thumb-drag');this.dragging=this.slider.dragging=!0;this.dragStartValue=this.value;slider.fireEvent('dragstart',slider,e,this)},onDrag:function(e){var slider=this.slider,index=this.index,newValue=this.getValueFromTracker();if(void 0!==newValue){if(this.constrain){var above=slider.thumbs[index+1];var below=slider.thumbs[index-1];void 0!==below&&newValue<=below.value&&(newValue=below.value);void 0!==
above&&newValue>=above.value&&(newValue=above.value)}slider.setValue(index,newValue,!1);slider.fireEvent('drag',slider,e,this)}},getValueFromTracker:function(){var slider=this.slider,trackerXY=this.tracker.getXY();trackerXY[0]+=this.pointerOffset[0];trackerXY[1]+=this.pointerOffset[1];trackerXY=slider.getTrackpoint(trackerXY);if(void 0!==trackerXY)return slider.reversePixelValue(trackerXY)},onDragEnd:function(e){var slider=this.slider,value=this.value;slider.onDragEnd(this,e);this.el.removeCls('x-slider-thumb-drag');
this.dragging=slider.dragging=!1;slider.fireEvent('dragend',slider,e);this.dragStartValue!==value&&slider.fireEvent('changecomplete',slider,value,this)},destroy:function(){var anim=this.anim;anim&&anim.end();this.el=this.tracker=this.anim=Ext.destroy(this.el,this.tracker);this.callParent()}},1,0,0,0,0,0,[Ext.slider,'Thumb'],0);
Ext.cmd.derive('Ext.slider.Tip',Ext.tip.Tip,{minWidth:10,offsets:null,align:null,position:'',defaultVerticalPosition:'left',defaultHorizontalPosition:'top',isSliderTip:!0,init:function(slider){this.position||(this.position=slider.vertical?this.defaultVerticalPosition:this.defaultHorizontalPosition);switch(this.position){case 'top':var offsets=[0,-10];var align='b-t?';break;case 'bottom':offsets=[0,10];align='t-b?';break;case 'left':offsets=[-10,0];align='r-l?';break;case 'right':offsets=[10,0],align=
'l-r?'}this.align||(this.align=align);this.offsets||(this.offsets=offsets);slider.on({scope:this,dragstart:this.onSlide,drag:this.onSlide,dragend:this.hide,destroy:this.destroy})},onSlide:function(slider,e,thumb){this.update(this.getText(thumb));this.show();this.el.alignTo(thumb.el,this.align,this.offsets)},getText:function(thumb){return String(thumb.value)}},0,['slidertip'],'component box container panel tip slidertip'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tip:!0,slidertip:!0},['widget.slidertip'],
0,[Ext.slider,'Tip'],0);
Ext.define('Overrides.slider.Tip',{override:'Ext.slider.Tip',offsets:[0,-8],align:'b-t?',shadow:!1,ui:'slider',init:function(slider){this.slider=slider;slider.on({scope:this,drag:this.onSlide,dragstart:this.onDragStart,dragend:this.onDragEnd,enable:this.onEnable,disable:this.onDisable,destroy:this.destroy,afterrender:{fn:this.initTip,single:!0}})},initTip:function(){var thumb=this.slider.getNearest();this.slider.on({change:{fn:this.onSlide,buffer:50},scope:this});Ext.apply(this,{renderTo:this.slider.bodyEl,
constrain:!0,alignTarget:thumb,alignOffset:this.offsets,defaultAlign:this.align});thumb.el.hover(this.onFocusEnter,this.onFocusLeave,this);if(!this.slider.disabled)this.onSlide(this.slider,null,thumb)},onDragStart:function(slider,e,thumb){this.onSlide(this.slider,e,thumb);this.toggleCls('active',!0)},onDragEnd:function(){this.toggleCls('active',!1)},onFocusEnter:function(){this.toggleCls('hover',!0)},onFocusLeave:function(){this.toggleCls('hover',!1)},onEnable:function(){this.show()},onDisable:function(){this.hidden||
this.hide()},onSlide:function(slider,e,thumb){this.update(this.getText(thumb));this.hidden&&this.show();this.el.alignTo(thumb.el,this.align,this.offsets)},doDestroy:function(){this.slider=null;(arguments.callee.$previous||Ext.tip.Tip.prototype.doDestroy).call(this)}});
Ext.cmd.derive('Ext.slider.Multi',Ext.form.field.Base,{alternateClassName:'Ext.slider.MultiSlider',vertical:!1,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,pageSize:10,increment:0,clickRange:[5,15],clickToChange:!0,animate:!0,dragging:!1,constrainThumbs:!0,useTips:!0,tipText:null,defaultBindProperty:'values',ariaRole:'slider',focusable:!0,needArrowKeys:!0,tabIndex:0,skipLabelForAttribute:!0,focusCls:'slider-focus',childEls:['endEl','innerEl'],fieldSubTpl:['\x3cdiv id\x3d"{id}" data-ref\x3d"inputEl" {inputAttrTpl}',
' class\x3d"','x-','slider {fieldCls} {vertical}','{childElCls}"','\x3ctpl if\x3d"tabIdx !\x3d null"\x3e tabindex\x3d"{tabIdx}"\x3c/tpl\x3e','\x3ctpl foreach\x3d"ariaElAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3ctpl foreach\x3d"inputElAriaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e','\x3e','\x3cdiv id\x3d"{cmpId}-endEl" data-ref\x3d"endEl" class\x3d"x-slider-end" role\x3d"presentation"\x3e','\x3cdiv id\x3d"{cmpId}-innerEl" data-ref\x3d"innerEl" class\x3d"x-slider-inner" role\x3d"presentation"\x3e',
'{%this.renderThumbs(out, values)%}','\x3c/div\x3e','\x3c/div\x3e','\x3c/div\x3e',{renderThumbs:function(out,values){values=values.$comp;for(var i=0,thumbs=values.thumbs,len=thumbs.length,thumb;i<len;i++)thumb=thumbs[i],thumb=thumb.getElConfig(),thumb.id=values.id+'-thumb-'+i,Ext.DomHelper.generateMarkup(thumb,out)},disableFormats:!0}],horizontalProp:'left',initValue:function(){var extValueFrom=Ext.valueFrom;extValueFrom=extValueFrom(this.values,[extValueFrom(this.value,extValueFrom(this.minValue,
0))]);var i=0,len=extValueFrom.length;for(this.originalValue=extValueFrom;i<len;i++)this.addThumb(this.normalizeValue(extValueFrom[i]))},initComponent:function(){var me=this,tipText=me.tipText,p;me.thumbs=[];me.keyIncrement=Math.max(me.increment,me.keyIncrement);me.extraFieldBodyCls='x-slider-ct-'+(me.vertical?'vert':'horz');Ext.form.field.Base.prototype.initComponent.call(this);if(me.useTips){var tipPlug={};Ext.isObject(me.useTips)?Ext.apply(tipPlug,me.useTips):tipText&&(tipPlug.getText=tipText);
'string'===typeof(tipText=tipPlug.getText)&&(tipPlug.getText=function(thumb){return Ext.callback(tipText,null,[thumb],0,me,me)});var plugins=me.plugins=me.plugins||[];var pLen=plugins.length;for(p=0;p<pLen;p++)if(plugins[p].isSliderTip){var hasTip=!0;break}hasTip||me.plugins.push(new Ext.slider.Tip(tipPlug))}},addThumb:function(value){value=new Ext.slider.Thumb({ownerCt:this,value:value,slider:this,index:this.thumbs.length,constrain:this.constrainThumbs,disabled:!!this.readOnly});this.thumbs.push(value);
this.rendered&&value.render();return value},promoteThumb:function(topThumb){var thumbs=this.thumbStack||(this.thumbStack=Ext.Array.slice(this.thumbs)),ln=thumbs.length,zIndex=1E4;thumbs[0]!==topThumb&&(Ext.Array.remove(thumbs,topThumb),thumbs.unshift(topThumb));for(topThumb=0;topThumb<ln;topThumb++)thumbs[topThumb].el.setStyle('zIndex',zIndex),zIndex-=1E3},getSubTplData:function(fieldData){var ariaAttr;fieldData=Ext.apply(Ext.form.field.Base.prototype.getSubTplData.call(this,fieldData),{$comp:this,
vertical:this.vertical?'x-slider-vert':'x-slider-horz',minValue:this.minValue,maxValue:this.maxValue,value:this.value,tabIdx:this.tabIndex,childElCls:''});if(ariaAttr=fieldData.inputElAriaAttributes)ariaAttr['aria-labelledby']||(ariaAttr['aria-labelledby']=this.id+'-labelEl'),ariaAttr['aria-orientation']=this.vertical?'vertical':'horizontal',ariaAttr['aria-valuemin']=this.minValue,ariaAttr['aria-valuemax']=this.maxValue,ariaAttr['aria-valuenow']=this.value;return fieldData},onRender:function(){var thumbs=
this.thumbs,len=thumbs.length,i;(arguments.callee.$previous||Ext.form.field.Base.prototype.onRender).apply(this,arguments);for(i=0;i<len;i++){var thumb=thumbs[i];thumb.el=this.el.getById(this.id+'-thumb-'+i);thumb.onRender()}},initEvents:function(){Ext.form.field.Base.prototype.initEvents.call(this);this.mon(this.el,{scope:this,mousedown:this.onMouseDown,keydown:this.onKeyDown})},onDragStart:Ext.emptyFn,onDragEnd:Ext.emptyFn,getTrackpoint:function(xy){var vertical=this.vertical,sliderTrack=this.innerEl;
if(vertical){var positionProperty='top';var trackLength=sliderTrack.getHeight()}else positionProperty=this.horizontalProp,trackLength=sliderTrack.getWidth();xy=this.transformTrackPoints(sliderTrack.translatePoints(xy));xy=Ext.Number.constrain(xy[positionProperty],0,trackLength);return vertical?trackLength-xy:xy},transformTrackPoints:Ext.identityFn,checkChange:Ext.emptyFn,onMouseDown:function(e){var thumbClicked=!1,i=0,thumbs=this.thumbs,len=thumbs.length;if(!this.disabled){for(;!thumbClicked&&i<len;i++)thumbClicked=
thumbClicked||e.target===thumbs[i].el.dom;this.focus();if(this.clickToChange&&!thumbClicked&&(e=this.getTrackpoint(e.getXY()),void 0!==e))this.onClickChange(e)}},onClickChange:function(trackPoint){var thumb=this.getNearest(trackPoint);thumb.disabled||(thumb=thumb.index,this.setValue(thumb,Ext.util.Format.round(this.reversePixelValue(trackPoint),this.decimalPrecision),void 0,!0))},getNearest:function(trackPoint){trackPoint=this.reversePixelValue(trackPoint);for(var nearestDistance=this.getRange()+
5,nearest=null,i=0,len=this.thumbs.length,thumb,value,dist;i<len;i++)thumb=this.thumbs[i],value=thumb.value,dist=Math.abs(value-trackPoint),Math.abs(dist)<=nearestDistance&&!(nearest&&nearest.value==value&&value>trackPoint&&thumb.index>nearest.index)&&(nearest=thumb,nearestDistance=dist);return nearest},onKeyDown:function(e){var ariaDom=this.ariaEl.dom;var k=e.getKey();if(this.disabled||1!==this.thumbs.length)k!==e.TAB&&e.preventDefault();else{switch(k){case e.UP:case e.RIGHT:var val=e.ctrlKey?this.maxValue:
this.getValue(0)+this.keyIncrement;break;case e.DOWN:case e.LEFT:val=e.ctrlKey?this.minValue:this.getValue(0)-this.keyIncrement;break;case e.HOME:val=this.minValue;break;case e.END:val=this.maxValue;break;case e.PAGE_UP:val=this.getValue(0)+this.pageSize;break;case e.PAGE_DOWN:val=this.getValue(0)-this.pageSize}void 0!==val&&(e.stopEvent(),val=this.normalizeValue(val),this.setValue(0,val,void 0,!0),ariaDom&&ariaDom.setAttribute('aria-valuenow',val))}},normalizeValue:function(v){v=Ext.Number[this.zeroBasedSnapping?
'snap':'snapInRange'](v,this.increment,this.minValue,this.maxValue);v=Ext.util.Format.round(v,this.decimalPrecision);return v=Ext.Number.constrain(v,this.minValue,this.maxValue)},setMinValue:function(val){var thumbs=this.thumbs,len=thumbs.length,ariaDom=this.ariaEl.dom,i;this.minValue=val;for(i=0;i<len;++i){var thumb=thumbs[i];thumb.value<val&&this.setValue(i,val,!1)}ariaDom&&ariaDom.setAttribute('aria-valuemin',val);this.syncThumbs()},setMaxValue:function(val){var thumbs=this.thumbs,len=thumbs.length,
ariaDom=this.ariaEl.dom,i;this.maxValue=val;for(i=0;i<len;++i){var thumb=thumbs[i];thumb.value>val&&this.setValue(i,val,!1)}ariaDom&&ariaDom.setAttribute('aria-valuemax',val);this.syncThumbs()},setValue:function(index,value,animate,changeComplete){var thumbs=this.thumbs,ariaDom=this.ariaEl.dom,thumb;if(Ext.isArray(index)){animate=value;changeComplete=0;for(value=index.length;changeComplete<value;++changeComplete)(thumb=thumbs[changeComplete])&&this.setValue(changeComplete,index[changeComplete],animate);
return this}thumb=this.thumbs[index];value=this.normalizeValue(value);value!==thumb.value&&!1!==this.fireEvent('beforechange',this,value,thumb.value,thumb)&&(thumb.value=value,this.rendered&&(animate=Ext.isDefined(animate)?!1===animate?!1:animate:this.animate,thumb.move(this.calculateThumbPosition(value),animate),0===index&&ariaDom&&ariaDom.setAttribute('aria-valuenow',value),this.fireEvent('change',this,value,thumb),this.checkDirty(),changeComplete&&this.fireEvent('changecomplete',this,value,thumb)));
return this},calculateThumbPosition:function(v){v=(v-this.minValue)/this.getRange()*100;isNaN(v)&&(v=0);return v},getRatio:function(){var innerEl=this.innerEl;innerEl=this.vertical?innerEl.getHeight():innerEl.getWidth();var valueRange=this.getRange();return 0===valueRange?innerEl:innerEl/valueRange},getRange:function(){return this.maxValue-this.minValue},reversePixelValue:function(pos){return this.minValue+pos/this.getRatio()},reversePercentageValue:function(pos){return this.minValue+this.getRange()*
(pos/100)},onDisable:function(){var i=0,thumbs=this.thumbs,len=thumbs.length;for(Ext.form.field.Base.prototype.onDisable.call(this);i<len;i++){var thumb=thumbs[i];var el=thumb.el;thumb.disable();Ext.isIE&&(thumb=el.getXY(),el.hide(),this.innerEl.addCls(this.disabledCls).dom.disabled=!0,this.thumbHolder||(this.thumbHolder=this.endEl.createChild({role:'presentation',cls:'x-slider-thumb '+this.disabledCls})),this.thumbHolder.show().setXY(thumb))}},onEnable:function(){var i=0,thumbs=this.thumbs,len=thumbs.length;
for(Ext.form.field.Base.prototype.onEnable.call(this);i<len;i++){var thumb=thumbs[i];var el=thumb.el;thumb.enable();Ext.isIE&&(this.innerEl.removeCls(this.disabledCls).dom.disabled=!1,this.thumbHolder&&this.thumbHolder.hide(),el.show(),this.syncThumbs())}},syncThumbs:function(){if(this.rendered)for(var thumbs=this.thumbs,length=thumbs.length,i=0;i<length;i++)thumbs[i].move(this.calculateThumbPosition(thumbs[i].value))},getValue:function(index){return Ext.isNumber(index)?this.thumbs[index].value:this.getValues()},
getValues:function(){for(var values=[],i=0,thumbs=this.thumbs,len=thumbs.length;i<len;i++)values.push(thumbs[i].value);return values},getSubmitValue:function(){return this.disabled||!this.submitValue?null:this.getValue()},reset:function(){for(var arr=[].concat(this.originalValue),a=0,aLen=arr.length,val;a<aLen;a++)val=arr[a],this.setValue(a,val);this.clearInvalid();delete this.wasValid},setReadOnly:function(readOnly){var thumbs=this.thumbs,len=thumbs.length,i=0;Ext.form.field.Base.prototype.setReadOnly.apply(this,
arguments);for(readOnly=this.readOnly;i<len;++i)readOnly?thumbs[i].disable():thumbs[i].enable()},doDestroy:function(){this.rendered&&Ext.destroy(this.thumbs);Ext.form.field.Base.prototype.doDestroy.call(this)}},0,['multislider'],['component','box','field','multislider'],{component:!0,box:!0,field:!0,multislider:!0},['widget.multislider'],0,[Ext.slider,'Multi',Ext.slider,'MultiSlider'],0);
Ext.cmd.derive('Ext.slider.Single',Ext.slider.Multi,{alternateClassName:['Ext.Slider','Ext.form.SliderField','Ext.slider.SingleSlider','Ext.slider.Slider'],defaultBindProperty:'value',initComponent:function(){this.publishOnComplete&&(this.valuePublishEvent='changecomplete');Ext.slider.Multi.prototype.initComponent.call(this)},publishOnComplete:!0,getValue:function(){return Ext.slider.Multi.prototype.getValue.call(this,0)},setValue:function(value,animate){var args=arguments,len=args.length;if(1===
len||3>=len&&'number'!==typeof args[1])args=Ext.toArray(args),args.unshift(0);return Ext.slider.Multi.prototype.setValue.apply(this,args)},getNearest:function(){return this.thumbs[0]}},0,['slider','sliderfield'],'component box field multislider slider sliderfield'.split(' '),{component:!0,box:!0,field:!0,multislider:!0,slider:!0,sliderfield:!0},['widget.slider','widget.sliderfield'],0,[Ext.slider,'Single',Ext,'Slider',Ext.form,'SliderField',Ext.slider,'SingleSlider',Ext.slider,'Slider'],0);
Ext.define('Override.slider.Single',{override:'Ext.slider.Single',componentCls:'x-form-field-slider',childEls:['endEl','innerEl','minValueEl','maxValueEl'],postSubTpl:['\x3cdiv id\x3d"{cmpId}-labels" class\x3d"labels-bottom text-secondary" \x3e','\x3cdiv class\x3d"label-left" data-ref\x3d"minValueEl" id\x3d"{cmpId}-minValueEl" role\x3d"presentation"\x3e\x3c/div\x3e','\x3cdiv class\x3d"label-right" data-ref\x3d"maxValueEl" id\x3d"{cmpId}-maxValueEl" role\x3d"presentation"\x3e\x3c/div\x3e','\x3c/div\x3e',
{disableFormats:!0}],initComponent:function(){var me=this,labelFormat=me.labelFormat;(arguments.callee.$previous||Ext.slider.Multi.prototype.initComponent).call(this);'string'===typeof labelFormat&&(me.labelFormat=function(value){return Ext.callback(labelFormat,null,[value],0,me,me)})},setMinValue:function(value){var formatFn=this.labelFormat;(arguments.callee.$previous||Ext.slider.Multi.prototype.setMinValue).call(this,value);this.updateValueEl('minValueEl',formatFn?formatFn(value):value);return value},
setMaxValue:function(value){var formatFn=this.labelFormat;(arguments.callee.$previous||Ext.slider.Multi.prototype.setMaxValue).call(this,value);this.updateValueEl('maxValueEl',formatFn?formatFn(value):value);return value},privates:{updateValueEl:function(el,value){this[el]&&this[el].update(value)}},onDragStart:function(){this.focus();(arguments.callee.$previous||Ext.slider.Multi.prototype.onDragStart).apply(this,arguments)}});
Ext.cmd.derive('Ext.state.LocalStorageProvider',Ext.state.Provider,{constructor:function(){Ext.state.Provider.prototype.constructor.apply(this,arguments);this.state=(this.store=this.getStorageObject())?this.readLocalStorage():{}},readLocalStorage:function(){for(var store=this.store,data={},keys=store.getKeys(),i=keys.length,key;i--;)key=keys[i],data[key]=this.decodeValue(store.getItem(key));return data},set:function(name,value){this.clear(name);null!=value&&(this.store.setItem(name,this.encodeValue(value)),
Ext.state.Provider.prototype.set.apply(this,arguments))},clear:function(name){this.store.removeItem(name);Ext.state.Provider.prototype.clear.apply(this,arguments)},getStorageObject:function(){var prefix=this.prefix,id=prefix,n=id.length-1;'-'===id.charAt(n)&&(id=id.substring(0,n));return new Ext.util.LocalStorage({id:id,prefix:prefix})}},1,0,0,0,['state.localstorage'],0,[Ext.state,'LocalStorageProvider'],0);
Ext.cmd.derive('Ext.tab.Tab',Ext.button.Button,{isTab:!0,baseCls:'x-tab',closeElOverCls:'x-tab-close-btn-over',closeElPressedCls:'x-tab-close-btn-pressed',config:{rotation:'default',tabPosition:'top'},closable:!0,closeText:'removable',active:!1,childEls:['closeEl'],scale:!1,ariaRole:'tab',tabIndex:-1,keyMap:{scope:'this',DELETE:'onDeleteKey'},_btnWrapCls:'x-tab-wrap',_btnCls:'x-tab-button',_baseIconCls:'x-tab-icon-el',_glyphCls:'x-tab-glyph',_innerCls:'x-tab-inner',_textCls:'x-tab-text',_noTextCls:'x-tab-no-text',
_hasIconCls:'x-tab-icon',_activeCls:'x-tab-active',_closableCls:'x-tab-closable',overCls:'x-tab-over',_pressedCls:'x-tab-pressed',_disabledCls:'x-tab-disabled',_rotateClasses:{1:'x-tab-rotate-right',2:'x-tab-rotate-left'},_positions:{top:{'default':'top',0:'top',1:'left',2:'right'},right:{'default':'top',0:'right',1:'top',2:'bottom'},bottom:{'default':'bottom',0:'bottom',1:'right',2:'left'},left:{'default':'top',0:'left',1:'bottom',2:'top'}},_defaultRotations:{top:0,right:1,bottom:0,left:2},initComponent:function(){this.card&&
this.setCard(this.card);Ext.button.Button.prototype.initComponent.apply(this,arguments)},getActualRotation:function(){var rotation=this.getRotation();return'default'!==rotation?rotation:this._defaultRotations[this.getTabPosition()]},updateRotation:function(){this.syncRotationAndPosition()},updateTabPosition:function(){this.syncRotationAndPosition()},syncRotationAndPosition:function(){var rotateClasses=this._rotateClasses,position=this.getTabPosition(),rotation=this.getActualRotation(),oldRotateCls=
this._rotateCls;rotateClasses=this._rotateCls=rotateClasses[rotation];var oldPositionCls=this._positionCls;position=this._positionCls=this._positions[position][rotation];oldRotateCls!==rotateClasses&&(oldRotateCls&&this.removeCls(oldRotateCls),rotateClasses&&this.addCls(rotateClasses));oldPositionCls!==position&&(oldPositionCls&&this.removeClsWithUI(oldPositionCls),position&&this.addClsWithUI(position),this.rendered&&this.updateFrame());this.rendered&&this.setElOrientation()},onAdded:function(container,
pos,instanced){Ext.button.Button.prototype.onAdded.call(this,container,pos,instanced);this.syncRotationAndPosition()},getTemplateArgs:function(){var result=Ext.button.Button.prototype.getTemplateArgs.call(this);result.closable=this.closable;result.closeText=this.closeText;return result},beforeRender:function(){var tabBar=this.up('tabbar'),tabPanel=this.up('tabpanel');Ext.button.Button.prototype.beforeRender.call(this);this.ariaRenderAttributes=this.ariaRenderAttributes||{};this.active?(this.ariaRenderAttributes['aria-selected']=
!0,this.addCls(this._activeCls)):this.ariaRenderAttributes['aria-selected']=!1;this.syncClosableCls();this.minWidth||(this.minWidth=tabBar?tabBar.minTabWidth:this.minWidth,!this.minWidth&&tabPanel&&(this.minWidth=tabPanel.minTabWidth),this.minWidth&&this.iconCls&&(this.minWidth+=25));this.maxWidth||(this.maxWidth=tabBar?tabBar.maxTabWidth:this.maxWidth,!this.maxWidth&&tabPanel&&(this.maxWidth=tabPanel.maxTabWidth))},onRender:function(){this.setElOrientation();Ext.button.Button.prototype.onRender.apply(this,
arguments);this.closable&&(this.closeEl.addClsOnOver(this.closeElOverCls),this.closeEl.addClsOnClick(this.closeElPressedCls))},setElOrientation:function(){var rotation=this.getActualRotation(),el=this.el;rotation?el.setVertical(1===rotation?90:270):el.setHorizontal()},enable:function(silent){Ext.button.Button.prototype.enable.apply(this,arguments);this.removeCls(this._disabledCls);return this},disable:function(silent){Ext.button.Button.prototype.disable.apply(this,arguments);this.addCls(this._disabledCls);
return this},setClosable:function(closable){closable=!arguments.length||!!closable;this.closable!==closable&&(this.closable=closable,this.card&&(this.card.closable=closable),this.syncClosableCls(),this.rendered&&(this.syncClosableElements(),this.updateLayout()))},syncClosableElements:function(){var closeEl=this.closeEl;this.closable?(closeEl||(closeEl=this.closeEl=this.btnWrap.insertSibling({tag:'span',id:this.id+'-closeEl',cls:this.baseCls+'-close-btn',html:this.closeText},'after')),closeEl.addClsOnOver(this.closeElOverCls),
closeEl.addClsOnClick(this.closeElPressedCls)):closeEl&&(closeEl.destroy(),delete this.closeEl)},syncClosableCls:function(){var closableCls=this._closableCls;this.closable?this.addCls(closableCls):this.removeCls(closableCls)},setCard:function(card){this.card=card;card.iconAlign&&this.setIconAlign(card.iconAlign);card.textAlign&&this.setTextAlign(card.textAlign);this.setText(this.title||card.title);this.setIconCls(this.iconCls||card.iconCls);this.setIcon(this.icon||card.icon);this.setGlyph(this.glyph||
card.glyph)},onCloseClick:function(){!1!==this.fireEvent('beforeclose',this)&&(this.tabBar?this.tabBar.closeTab(this):this.fireClose())},fireClose:function(){this.fireEvent('close',this)},onEnterKey:function(e){if(this.tabBar)return this.tabBar.onClick(e,this.el),e.stopEvent(),!1},onDeleteKey:function(e){if(this.closable)return this.onCloseClick(),e.stopEvent(),!1},beforeClick:function(isCloseClick){isCloseClick||this.focus()},activate:function(supressEvent){var card=this.card,ariaDom=this.ariaEl.dom;
this.active=!0;this.addCls(this._activeCls);ariaDom?ariaDom.setAttribute('aria-selected',!0):(this.ariaRenderAttributes=this.ariaRenderAttributes||{},this.ariaRenderAttributes['aria-selected']=!0);card&&(card.ariaEl.dom?card.ariaEl.dom.setAttribute('aria-expanded',!0):(card.ariaRenderAttributes=card.ariaRenderAttributes||{},card.ariaRenderAttributes['aria-expanded']=!0));!0!==supressEvent&&this.fireEvent('activate',this)},deactivate:function(supressEvent){var card=this.card,ariaDom=this.ariaEl.dom;
this.active=!1;this.removeCls(this._activeCls);ariaDom?ariaDom.setAttribute('aria-selected',!1):(this.ariaRenderAttributes=this.ariaRenderAttributes||{},this.ariaRenderAttributes['aria-selected']=!1);card&&(card.ariaEl.dom?card.ariaEl.dom.setAttribute('aria-expanded',!1):(card.ariaRenderAttributes=card.ariaRenderAttributes||{},card.ariaRenderAttributes['aria-expanded']=!1));!0!==supressEvent&&this.fireEvent('deactivate',this)},privates:{getFramingInfoCls:function(){return this.baseCls+'-'+this.ui+
'-'+this._positionCls},wrapPrimaryEl:function(dom){Ext.Button.superclass.wrapPrimaryEl.call(this,dom)}}},0,['tab'],['component','box','button','tab'],{component:!0,box:!0,button:!0,tab:!0},['widget.tab'],0,[Ext.tab,'Tab'],0);
Ext.define('My.tab.Tab',{override:'Ext.tab.Tab',stateLineTpl:['\x3cdiv id\x3d"{id}-restLine" class\x3d"{baseCls}-state-line {baseCls}-rest-line"\x3e\x3c/div\x3e','\x3cdiv id\x3d"{id}-activeLine" class\x3d"{baseCls}-state-line {baseCls}-active-line"\x3e\x3c/div\x3e'],getAfterMarkup:function(values){if('top'===this.getTabPosition()&&'default'===this.ui)return this.lookupTpl('stateLineTpl').apply(values)}});
Ext.cmd.derive('Ext.tab.Bar',Ext.panel.Bar,{baseCls:'x-tab-bar',componentLayout:'body',isTabBar:!0,config:{tabRotation:'default',tabStretchMax:!0,activateOnFocus:!0},defaultType:'tab',plain:!1,ensureActiveVisibleOnChange:!0,ariaRole:'tablist',childEls:['body','strip'],_stripCls:'x-tab-bar-strip',_baseBodyCls:'x-tab-bar-body',renderTpl:'\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'before\'); %}\x3c/tpl\x3e\x3cdiv id\x3d"{id}-body" data-ref\x3d"body" role\x3d"presentation" class\x3d"{baseBodyCls} {baseBodyCls}-{ui} {bodyCls} {bodyTargetCls}{childElCls}"\x3ctpl if\x3d"bodyStyle"\x3e style\x3d"{bodyStyle}"\x3c/tpl\x3e\x3e{%this.renderContainer(out,values)%}\x3c/div\x3e\x3ctpl if\x3d"hasTabGuard"\x3e{% this.renderTabGuard(out, values, \'after\'); %}\x3c/tpl\x3e\x3cdiv id\x3d"{id}-strip" data-ref\x3d"strip" role\x3d"presentation" class\x3d"{stripCls} {stripCls}-{ui}{childElCls}"\x3e\x3c/div\x3e',
_reverseDockNames:{left:'right',right:'left'},_layoutAlign:{top:'end',right:'begin',bottom:'begin',left:'end'},initComponent:function(){var initialLayout=this.initialConfig.layout,initialAlign=initialLayout&&initialLayout.align;initialLayout=initialLayout&&initialLayout.overflowHandler;this.plain&&this.addCls(this.baseCls+'-plain');Ext.panel.Bar.prototype.initComponent.call(this);this.setLayout({align:initialAlign||(this.getTabStretchMax()?'stretchmax':this._layoutAlign[this.dock]),overflowHandler:initialLayout||
'scroller'});this.on({click:this.onClick,element:'el',scope:this})},ensureTabVisible:function(tab){var tabPanel=this.tabPanel,overflowHandler=this.layout.overflowHandler;this.rendered&&overflowHandler&&this.tooNarrow&&overflowHandler.scrollToItem&&(!tab&&0!==tab||tab.isTab||(Ext.isNumber(tab)?tab=this.items.getAt(tab):tab.isComponent&&tabPanel&&tabPanel.items.contains(tab)&&(tab=tab.tab)),tab||(tab=this.activeTab),tab&&overflowHandler.scrollToItem(tab))},initRenderData:function(){return Ext.apply(Ext.panel.Bar.prototype.initRenderData.call(this),
{bodyCls:this.bodyCls,baseBodyCls:this._baseBodyCls,bodyTargetCls:this.bodyTargetCls,stripCls:this._stripCls,dock:this.dock})},setDock:function(dock){var items=this.items,ownerCt=this.ownerCt,ln;if(items=items&&items.items){var i=0;for(ln=items.length;i<ln;i++){var item=items[i];item.isTab&&item.setTabPosition(dock)}}this.rendered&&(this.resetItemMargins(),ownerCt&&ownerCt.isHeader&&ownerCt.resetItemMargins(),this.needsScroll=!0);Ext.panel.Bar.prototype.setDock.call(this,dock)},updateTabRotation:function(tabRotation){var items=
this.items,ln;if(items=items&&items.items){var i=0;for(ln=items.length;i<ln;i++){var item=items[i];item.isTab&&item.setRotation(tabRotation)}}this.rendered&&(this.resetItemMargins(),this.needsScroll=!0,this.updateLayout())},onRender:function(){var overflowHandler=this.layout.overflowHandler;Ext.panel.Bar.prototype.onRender.call(this);if(Ext.isIE8&&this.vertical)this.el.on({mousemove:this.onMouseMove,scope:this});if(overflowHandler&&'menu'===overflowHandler.type)overflowHandler.menu.on('click','onOverflowMenuItemClick',
this)},afterLayout:function(){this.adjustTabPositions();Ext.panel.Bar.prototype.afterLayout.apply(this,arguments)},onAdd:function(tab,pos){var fn=this.onTabContentChange;this.ensureActiveVisibleOnChange&&(tab.barListeners=tab.on({scope:this,destroyable:!0,glyphchange:fn,iconchange:fn,textchange:fn}));Ext.panel.Bar.prototype.onAdd.call(this,tab,pos)},onAdded:function(container,pos,instanced){container.isHeader&&this.addCls(container.baseCls+'-'+container.ui+'-tab-bar');Ext.panel.Bar.prototype.onAdded.call(this,
container,pos,instanced)},onRemove:function(tab,destroying){this.ensureActiveVisibleOnChange&&(destroying||tab.barListeners.destroy(),tab.barListeners=null);tab===this.previousTab&&(this.previousTab=null);Ext.panel.Bar.prototype.onRemove.call(this,tab,destroying)},onRemoved:function(destroying){var ownerCt=this.ownerCt;ownerCt.isHeader&&this.removeCls(ownerCt.baseCls+'-'+ownerCt.ui+'-tab-bar');Ext.panel.Bar.prototype.onRemoved.call(this,destroying)},onTabContentChange:function(tab){tab===this.activeTab&&
this.ensureTabVisible(tab)},afterComponentLayout:function(width){var needsScroll=this.needsScroll,overflowHandler=this.layout.overflowHandler;Ext.panel.Bar.prototype.afterComponentLayout.apply(this,arguments);overflowHandler&&needsScroll&&this.tooNarrow&&overflowHandler.scrollToItem&&overflowHandler.scrollToItem(this.activeTab);delete this.needsScroll},onMouseMove:function(e){var overTab=this._overTab;if(!e.getTarget('.x-box-scroller')){var tab=this.getTabInfoFromPoint(e.getXY()).tab;tab!==overTab&&
(overTab&&overTab.rendered&&(overTab.onMouseLeave(e),this._overTab=null),tab?(tab.onMouseEnter(e),this._overTab=tab,tab.disabled||this.el.setStyle('cursor','pointer')):this.el.setStyle('cursor','default'))}},onMouseLeave:function(e){var overTab=this._overTab;if(overTab&&overTab.rendered)overTab.onMouseLeave(e)},getTabInfoFromPoint:function(xy){var tabs=this.items.items,length=tabs.length,innerCt=this.layout.innerCt,innerCtXY=innerCt.getXY();xy=new Ext.util.Point(xy[0],xy[1]);for(var i=0,lastBox,tabRegion,
close,closeXY,closeX,closeHeight,tabWidth,tab;i<length;i++)if(tab=tabs[i],(lastBox=tab.lastBox)&&tab.isTab&&(closeX=innerCtXY[0]+lastBox.x,closeXY=innerCtXY[1]-innerCt.dom.scrollTop+lastBox.y,tabWidth=lastBox.width,lastBox=lastBox.height,tabRegion=new Ext.util.Region(closeXY,closeX+tabWidth,closeXY+lastBox,closeX),tabRegion.contains(xy))){if(tabs=tab.closeEl)void 0===this._isTabReversed&&(this._isTabReversed=closeHeight=-1!==tab.btnWrap.dom.currentStyle.filter.indexOf('rotation\x3d2')),length=closeHeight?
this._reverseDockNames[this.dock]:this.dock,close=tabs.getWidth(),closeHeight=tabs.getHeight(),closeXY=this.getCloseXY(tabs,closeX,closeXY,tabWidth,lastBox,close,closeHeight,length),closeX=closeXY[0],closeXY=closeXY[1],closeX=new Ext.util.Region(closeXY,closeX+close,closeXY+closeHeight,closeX),close=closeX.contains(xy);break}return{tab:tab,close:close}},getCloseXY:function(closeEl,tabX,tabY,tabWidth,tabHeight,closeWidth,closeHeight,direction){closeEl=closeEl.getXY();'right'===direction?(tabWidth=
tabX+tabWidth-(closeEl[1]-tabY+closeHeight),tabX=tabY+(closeEl[0]-tabX)):(tabWidth=tabX+(closeEl[1]-tabY),tabX=tabY+tabX+tabHeight-closeEl[0]-closeWidth);return[tabWidth,tabX]},closeTab:function(toClose){var card=toClose.card,tabPanel=this.tabPanel;if(card&&!1===card.fireEvent('beforeclose',card))return!1;var toActivate=this.findNextActivatable(toClose);Ext.suspendLayouts();toActivate&&(tabPanel?tabPanel.setActiveTab(toActivate.card):this.setActiveTab(toActivate),toActivate.focus());if(tabPanel&&
card)if(delete toClose.ownerCt,card.fireEvent('close',card),tabPanel.remove(card),card.ownerCt!==tabPanel)toClose.fireClose(),this.remove(toClose);else return toClose.ownerCt=this,Ext.resumeLayouts(!0),!1;Ext.resumeLayouts(!0)},findNextActivatable:function(toClose){var previousTab=this.previousTab,nextTab;toClose.active&&1<this.items.getCount()&&(nextTab=previousTab&&previousTab!==toClose&&!previousTab.disabled?previousTab:toClose.next('tab[disabled\x3dfalse]')||toClose.prev('tab[disabled\x3dfalse]'));
return nextTab||this.activeTab},setActiveTab:function(tab,initial){tab.disabled||tab===this.activeTab||(this.activeTab&&(this.activeTab.destroyed?this.previousTab=null:(this.previousTab=this.activeTab,this.activeTab.deactivate(),this.deactivateFocusable(this.activeTab))),tab.activate(),this.activateFocusable(tab),this.activeTab=tab,this.needsScroll=!0,initial||(this.fireEvent('change',this,tab,tab.card),this.updateLayout()))},privates:{adjustTabPositions:function(){var items=this.items.items,i=items.length,
prop;if(!Ext.isIE8)for(prop=this._getTabAdjustProp();i--;){var tab=items[i];var el=tab.el;var lastBox=tab.lastBox;var rotation=tab.isTab?tab.getActualRotation():0;1===rotation&&tab.isVisible()?el.setStyle(prop,lastBox.x+lastBox.width+'px'):2===rotation&&tab.isVisible()&&el.setStyle(prop,lastBox.x-lastBox.height+'px')}},applyTargetCls:function(targetCls){this.bodyTargetCls=targetCls},_getTabAdjustProp:function(){return'left'},getTargetEl:function(){return this.body||this.frameBody||this.el},onClick:function(e,
target){if(!e.getTarget('.x-box-scroller')){if(Ext.isIE8&&this.vertical){target=this.getTabInfoFromPoint(e.getXY());var tabEl=target.tab;target=target.close}else target=(tabEl=(tabEl=e.getTarget('.'+Ext.tab.Tab.prototype.baseCls))&&Ext.getCmp(tabEl.id))&&tabEl.closeEl&&target===tabEl.closeEl.dom;target&&e.preventDefault();if(tabEl&&tabEl.isDisabled&&!tabEl.isDisabled())if(tabEl.beforeClick(target),tabEl.closable&&target)tabEl.onCloseClick();else this.doActivateTab(tabEl)}},onOverflowMenuItemClick:function(menu,
item,e,eOpts){menu=item&&item.masterComponent;item=this.layout.overflowHandler;menu&&!menu.isDisabled()&&(this.doActivateTab(menu),item.menuTrigger&&item.menuTrigger.focus())},doActivateTab:function(tab){var tabPanel=this.tabPanel;tabPanel?tab.disabled||tabPanel.setActiveTab(tab.card):this.setActiveTab(tab)},onFocusableContainerFocus:function(e){(e=this.mixins.focusablecontainer.onFocusableContainerFocus.call(this,e))&&e.isTab&&this.doActivateTab(e)},onFocusableContainerFocusEnter:function(e){(e=
this.mixins.focusablecontainer.onFocusableContainerFocusEnter.call(this,e))&&e.isTab&&this.doActivateTab(e)},focusChild:function(child,forward){child=this.mixins.focusablecontainer.focusChild.call(this,child,forward);this.activateOnFocus&&child&&child.isTab&&this.doActivateTab(child)}}},0,['tabbar'],['component','box','container','tabbar'],{component:!0,box:!0,container:!0,tabbar:!0},['widget.tabbar'],[[Ext.util.FocusableContainer.prototype.mixinId||Ext.util.FocusableContainer.$className,Ext.util.FocusableContainer]],
[Ext.tab,'Bar'],0);
Ext.cmd.derive('Ext.tab.Panel',Ext.panel.Panel,{alternateClassName:['Ext.TabPanel'],config:{tabBar:void 0,tabPosition:'top',tabRotation:'default',tabStretchMax:!0},removePanelHeader:!0,plain:!1,itemCls:'x-tabpanel-child',minTabWidth:void 0,maxTabWidth:void 0,deferredRender:!0,_defaultTabRotation:{top:0,right:1,bottom:0,left:2},initComponent:function(){var activeTab=null!==this.activeTab?this.activeTab||0:null;var dockedItems=this.header;var tabBarHeaderPosition=this.tabBarHeaderPosition,tabBar=this.getTabBar();
this.layout=new Ext.layout.container.Card(Ext.apply({owner:this,deferredRender:this.deferredRender,itemCls:this.itemCls,activeItem:activeTab},this.layout));if(null!=tabBarHeaderPosition){dockedItems=this.header=Ext.apply({},dockedItems);var headerItems=dockedItems.items=dockedItems.items?dockedItems.items.slice():[];dockedItems.itemPosition=tabBarHeaderPosition;headerItems.push(tabBar);dockedItems.hasTabBar=!0}else dockedItems=[].concat(this.dockedItems||[]),dockedItems.push(tabBar),this.dockedItems=
dockedItems;Ext.panel.Panel.prototype.initComponent.apply(this,arguments);(activeTab=this.activeTab=this.getComponent(activeTab))&&tabBar.setActiveTab(activeTab.tab,!0)},onRender:function(){var items=this.items.items,len=items.length,i;Ext.panel.Panel.prototype.onRender.apply(this,arguments);for(i=0;i<len;++i)items[i].getBind()},setActiveTab:function(card){if(!Ext.isObject(card)||card.isComponent)card=this.getComponent(card);var previous=this.getActiveTab();if(card){Ext.suspendLayouts();card.isComponent||
(card=this.add(card));if(previous===card||!1===this.fireEvent('beforetabchange',this,card,previous))return Ext.resumeLayouts(!0),previous;this.activeTab=card;this.layout.setActiveItem(card);(card=this.activeTab=this.layout.getActiveItem())&&card!==previous?(this.tabBar.setActiveTab(card.tab),Ext.resumeLayouts(!0),previous!==card&&this.fireEvent('tabchange',this,card,previous)):Ext.resumeLayouts(!0);return card}return previous},setActiveItem:function(item){return this.setActiveTab(item)},getActiveTab:function(){var result=
this.getComponent(this.activeTab);result&&-1!==this.items.indexOf(result)?this.activeTab=result:this.activeTab=void 0;return this.activeTab},applyTabBar:function(tabBar){var dock=null!=this.tabBarHeaderPosition?this.getHeaderPosition():this.getTabPosition();return new Ext.tab.Bar(Ext.apply({ui:this.ui,dock:dock,tabRotation:this.getTabRotation(),vertical:'left'===dock||'right'===dock,plain:this.plain,tabStretchMax:this.getTabStretchMax(),tabPanel:this},tabBar))},updateHeaderPosition:function(headerPosition,
oldHeaderPosition){var tabBar=this.getTabBar();tabBar&&null!=this.tabBarHeaderPosition&&tabBar.setDock(headerPosition);Ext.panel.Panel.prototype.updateHeaderPosition.call(this,headerPosition,oldHeaderPosition)},updateTabPosition:function(tabPosition){var tabBar=this.getTabBar();tabBar&&null==this.tabBarHeaderPosition&&tabBar.setDock(tabPosition)},updateTabRotation:function(tabRotation){var tabBar=this.getTabBar();tabBar&&tabBar.setTabRotation(tabRotation)},onAdd:function(item,index){var cfg=Ext.apply({},
item.tabConfig),tabBar=this.getTabBar();tabBar={xtype:'tab',title:item.title,icon:item.icon,iconCls:item.iconCls,glyph:item.glyph,ui:tabBar.ui,card:item,disabled:item.disabled,closable:item.closable,hidden:item.hidden&&!item.hiddenByLayout,tooltip:item.tooltip,tabBar:tabBar,tabPosition:tabBar.dock,rotation:tabBar.getTabRotation()};void 0!==item.closeText&&(tabBar.closeText=item.closeText);cfg=Ext.applyIf(cfg,tabBar);item.tab=this.tabBar.insert(index,cfg);item.ariaRole='tabpanel';(index=item.ariaEl.dom)?
index.setAttribute('aria-labelledby',item.tab.id):(item.ariaRenderAttributes=item.ariaRenderAttributes||{},item.ariaRenderAttributes['aria-labelledby']=item.tab.id);item.on({scope:this,enable:this.onItemEnable,disable:this.onItemDisable,beforeshow:this.onItemBeforeShow,iconchange:this.onItemIconChange,iconclschange:this.onItemIconClsChange,glyphchange:this.onItemGlyphChange,titlechange:this.onItemTitleChange});item.isPanel&&(this.removePanelHeader&&(item.rendered?item.header&&item.header.hide():item.header=
!1),item.isPanel&&this.border&&item.setBorder(!1));this.rendered&&item.getBind();this.rendered&&this.loader&&void 0===this.activeTab&&null!==this.layout.activeItem&&this.setActiveTab(0)},onMove:function(item,fromIdx,toIdx){var tabBar=this.getTabBar();Ext.panel.Panel.prototype.onMove.call(this,item,fromIdx,toIdx);tabBar.items.indexOf(item.tab)!==toIdx&&tabBar.move(item.tab,toIdx)},onItemEnable:function(item){item.tab.enable()},onItemDisable:function(item){item.tab.disable()},onItemBeforeShow:function(item){if(item!==
this.activeTab)return this.setActiveTab(item),!1},onItemGlyphChange:function(item,newGlyph){item.tab.setGlyph(newGlyph)},onItemIconChange:function(item,newIcon){item.tab.setIcon(newIcon)},onItemIconClsChange:function(item,newIconCls){item.tab.setIconCls(newIconCls)},onItemTitleChange:function(item,newTitle){item.tab.setText(newTitle)},onRemove:function(item,destroying){item.un({scope:this,enable:this.onItemEnable,disable:this.onItemDisable,beforeshow:this.onItemBeforeShow,iconchange:this.onItemIconChange,
iconclschange:this.onItemIconClsChange,glyphchange:this.onItemGlyphChange,titlechange:this.onItemTitleChange});item.tab&&!this.destroying&&item.tab.ownerCt===this.tabBar&&this.tabBar.remove(item.tab)},enable:function(){var activeTab=null!==this.activeTab?this.activeTab||0:null,wasDisabled=this.disabled;Ext.panel.Panel.prototype.enable.apply(this,arguments);wasDisabled&&(activeTab=activeTab.isComponent?activeTab:this.getComponent(activeTab))&&this.getTabBar().setActiveTab(activeTab.tab)},privates:{doRemove:function(item,
autoDestroy){var toActivate;this.removingAll||this.destroying||1===this.items.getCount()?this.activeTab=null:item.tab&&-1!==(toActivate=this.tabBar.items.indexOf(this.tabBar.findNextActivatable(item.tab)))&&this.setActiveTab(toActivate);Ext.panel.Panel.prototype.doRemove.call(this,item,autoDestroy);item.tab&&(delete item.tab.card,delete item.tab)}}},0,['tabpanel'],['component','box','container','panel','tabpanel'],{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0},['widget.tabpanel'],0,[Ext.tab,
'Panel',Ext,'TabPanel'],0);Ext.cmd.derive('Ext.toolbar.Fill',Ext.Component,{alternateClassName:'Ext.Toolbar.Fill',ariaRole:'presentation',isFill:!0,flex:1},0,['tbfill'],['component','box','tbfill'],{component:!0,box:!0,tbfill:!0},['widget.tbfill'],0,[Ext.toolbar,'Fill',Ext.Toolbar,'Fill'],0);
Ext.cmd.derive('Ext.toolbar.Spacer',Ext.Component,{alternateClassName:'Ext.Toolbar.Spacer',baseCls:'x-toolbar-spacer',ariaRole:'presentation'},0,['tbspacer'],['component','box','tbspacer'],{component:!0,box:!0,tbspacer:!0},['widget.tbspacer'],0,[Ext.toolbar,'Spacer',Ext.Toolbar,'Spacer'],0);
Ext.cmd.derive('Ext.tree.Column',Ext.grid.column.Column,{tdCls:'x-grid-cell-treecolumn',autoLock:!0,lockable:!1,draggable:!1,hideable:!1,iconCls:'x-tree-icon',checkboxCls:'x-tree-checkbox',elbowCls:'x-tree-elbow',expanderCls:'x-tree-expander',textCls:'x-tree-node-text',innerCls:'x-grid-cell-inner-treecolumn',customIconCls:'x-tree-icon-custom',isTreeColumn:!0,cellTpl:'\x3ctpl for\x3d"lines"\x3e;\x3cdiv class\x3d"{parent.childCls} {parent.elbowCls}-img ;{parent.elbowCls}-\x3ctpl if\x3d"."\x3eline\x3ctpl else\x3eempty\x3c/tpl\x3e" role\x3d"presentation"\x3e\x3c/div\x3e;\x3c/tpl\x3e;\x3cdiv class\x3d"{childCls} {elbowCls}-img {elbowCls};\x3ctpl if\x3d"isLast"\x3e-end\x3c/tpl\x3e\x3ctpl if\x3d"expandable"\x3e-plus {expanderCls}\x3c/tpl\x3e" role\x3d"presentation"\x3e\x3c/div\x3e;\x3ctpl if\x3d"checked !\x3d\x3d null"\x3e;\x3cdiv role\x3d"button" {ariaCellCheckboxAttr}; class\x3d"{childCls} {checkboxCls}\x3ctpl if\x3d"checked"\x3e {checkboxCls}-checked\x3c/tpl\x3e"\x3e\x3c/div\x3e;\x3c/tpl\x3e;\x3ctpl if\x3d"glyph"\x3e;\x3cspan class\x3d"{baseIconCls}" ;\x3ctpl if\x3d"glyphFontFamily"\x3e;style\x3d"font-family:{glyphFontFamily}";\x3c/tpl\x3e;\x3e{glyph}\x3c/span\x3e;\x3ctpl else\x3e;\x3ctpl if\x3d"icon"\x3e;\x3cimg src\x3d"{blankUrl}";\x3ctpl else\x3e;\x3cdiv;\x3c/tpl\x3e; role\x3d"presentation" class\x3d"{childCls} {baseIconCls} {customIconCls} ;{baseIconCls}-\x3ctpl if\x3d"leaf"\x3eleaf\x3ctpl else\x3e\x3ctpl if\x3d"expanded"\x3eparent-expanded\x3ctpl else\x3eparent\x3c/tpl\x3e\x3c/tpl\x3e {iconCls}" ;\x3ctpl if\x3d"icon"\x3estyle\x3d"background-image:url({icon})"/\x3e\x3ctpl else\x3e\x3e\x3c/div\x3e\x3c/tpl\x3e;\x3c/tpl\x3e;\x3ctpl if\x3d"href"\x3e;\x3ca href\x3d"{href}" role\x3d"link" target\x3d"{hrefTarget}" class\x3d"{textCls} {childCls}"\x3e{value}\x3c/a\x3e;\x3ctpl else\x3e;\x3cspan class\x3d"{textCls} {childCls}"\x3e{value}\x3c/span\x3e;\x3c/tpl\x3e'.split(';'),
uiFields:{checked:1,icon:1,iconCls:1},rowFields:{expanded:1,loaded:1,expandable:1,leaf:1,loading:1,qtip:1,qtitle:1,cls:1},initComponent:function(){this.rendererScope=this.scope;this.setupRenderer();this.innerRenderer=this.renderer;this.renderer=this.treeRenderer;Ext.grid.column.Column.prototype.initComponent.call(this);this.scope=this;this.hasCustomRenderer=this.innerRenderer&&1<this.innerRenderer.length},treeRenderer:function(value,metaData,record,rowIdx,colIdx,store,view){var cls=record.get('cls');
metaData&&cls&&(metaData.tdCls+=' '+cls);value=this.initTemplateRendererData(value,metaData,record,rowIdx,colIdx,store,view);return this.lookupTpl('cellTpl').apply(value)},initTemplateRendererData:function(value,metaData,record,rowIdx,colIdx,store,view){for(var innerRenderer=this.innerRenderer,data=record.data,parent=record.parentNode,rootVisible=view.rootVisible,lines=[],parentData,glyphFontFamily;parent&&(rootVisible||0<parent.data.depth);)parentData=parent.data,lines[rootVisible?parentData.depth:
parentData.depth-1]=parent.isLastVisible()?0:1,parent=parent.parentNode;metaData?metaData.iconCls=metaData.icon=metaData.glyph=null:metaData={};value=innerRenderer?innerRenderer.apply(this.rendererScope,arguments):value;if(innerRenderer=metaData.glyph||data.glyph)innerRenderer=Ext.Glyph.fly(innerRenderer),glyphFontFamily=innerRenderer.fontFamily,innerRenderer=innerRenderer.character;return{record:record,baseIconCls:this.iconCls,customIconCls:data.icon||data.iconCls?this.customIconCls:'',glyph:innerRenderer,
glyphFontFamily:glyphFontFamily,iconCls:metaData.iconCls||data.iconCls,icon:metaData.icon||data.icon,checkboxCls:this.checkboxCls,checked:data.checked,elbowCls:this.elbowCls,expanderCls:this.expanderCls,textCls:this.textCls,leaf:data.leaf,expandable:record.isExpandable(),expanded:data.expanded,isLast:record.isLastVisible(),blankUrl:Ext.BLANK_IMAGE_URL,href:data.href,hrefTarget:data.hrefTarget,lines:lines,metaData:metaData,childCls:this.getChildCls?this.getChildCls()+' ':'',value:value}},shouldUpdateCell:function(record,
changedFieldNames){var i=0,len;if(this.hasCustomRenderer)return 1;if(changedFieldNames)for(len=changedFieldNames.length;i<len;++i){var field=changedFieldNames[i];if(this.rowFields[field])return 1;if(this.uiFields[field])return 2}return Ext.grid.column.Column.prototype.shouldUpdateCell.call(this,record,changedFieldNames)}},0,['treecolumn'],'component box container headercontainer gridcolumn treecolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,treecolumn:!0},['widget.treecolumn'],
0,[Ext.tree,'Column'],0);
Ext.cmd.derive('Ext.tree.NavigationModel',Ext.grid.NavigationModel,{initKeyNav:function(view){var columns=this.view.ownerGrid.columns;this.isTreeGrid=columns&&1<columns.length;Ext.grid.NavigationModel.prototype.initKeyNav.call(this,view);this.view.grid.on({columnschanged:this.onColumnsChanged,scope:this})},onKeyNavCreate:function(keyNav){var fn=this.onAsterisk;keyNav.map.addBinding([{key:'8',shift:!0,handler:fn,scope:this},{key:Ext.event.Event.NUM_MULTIPLY,handler:fn,scope:this}])},onColumnsChanged:function(){this.isTreeGrid=
1<this.view.ownerGrid.getVisibleColumnManager().getColumns().length},onCellClick:function(view,cell,cellIndex,record,row,recordIndex,clickEvent){Ext.grid.NavigationModel.prototype.onCellClick.call(this,view,cell,cellIndex,record,row,recordIndex,clickEvent);return!clickEvent.nodeToggled},onKeyLeft:function(keyEvent){var view=keyEvent.view,record=this.record;if(this.isTreeGrid&&!keyEvent.ctrlKey)return Ext.grid.NavigationModel.prototype.onKeyLeft.call(this,keyEvent);keyEvent.position.column.isTreeColumn&&
record.isExpanded()?view.collapse(record):(record=record.parentNode,!record||record.isRoot()&&!view.rootVisible||this.setPosition(record,null,keyEvent))},onKeyRight:function(keyEvent){var record=this.record;if(this.isTreeGrid&&!keyEvent.ctrlKey)return Ext.grid.NavigationModel.prototype.onKeyRight.call(this,keyEvent);record.isLeaf()||(keyEvent.position.column.isTreeColumn&&!record.isExpanded()?keyEvent.view.expand(record):record.isExpanded()&&(record=record.childNodes[0])&&this.setPosition(record))},
onKeyEnter:function(keyEvent){null!=this.record.data.checked?this.toggleCheck(keyEvent):Ext.grid.NavigationModel.prototype.onKeyEnter.call(this,keyEvent)},onKeySpace:function(keyEvent){null!=this.record.data.checked?this.toggleCheck(keyEvent):Ext.grid.NavigationModel.prototype.onKeySpace.call(this,keyEvent)},toggleCheck:function(keyEvent){this.view.onCheckChange(keyEvent)},onAsterisk:function(keyEvent){this.view.ownerGrid.expandAll()}},0,0,0,0,['view.navigation.tree'],0,[Ext.tree,'NavigationModel'],
0);
Ext.cmd.derive('Ext.tree.View',Ext.view.Table,{config:{selectionModel:{type:'treemodel'}},isTreeView:!0,loadingCls:'x-grid-tree-loading',expandedCls:'x-grid-tree-node-expanded',leafCls:'x-grid-tree-node-leaf',expanderSelector:'.x-tree-expander',checkboxSelector:'.x-tree-checkbox',expanderIconOverCls:'x-tree-expander-over',nodeAnimWrapCls:'x-tree-animator-wrap',ariaRole:'treegrid',loadMask:!1,rootVisible:!0,expandDuration:250,collapseDuration:250,toggleOnDblClick:!0,stripeRows:!1,treeRowTpl:['{%','this.processRowValues(values);',
'this.nextTpl.applyOut(values, out, parent);','%}',{priority:10,processRowValues:function(rowValues){var record=rowValues.record,view=rowValues.view;rowValues.rowAttr['data-qtip']=record.get('qtip')||'';rowValues.rowAttr['data-qtitle']=record.get('qtitle')||'';rowValues.rowAttr['aria-level']=record.getDepth()+1;record.isLeaf()?rowValues.rowClasses.push(view.leafCls):record.isExpanded()?(rowValues.rowClasses.push(view.expandedCls),rowValues.rowAttr['aria-expanded']=!0):rowValues.rowAttr['aria-expanded']=
!1;record.isLoading()&&rowValues.rowClasses.push(view.loadingCls)}}],initComponent:function(){this.bufferedRenderer?this.animate=!1:void 0===this.initialConfig.animate&&(this.animate=Ext.enableFx);this.store=this.panel.getStore();this.onRootChange(this.store.getRoot());this.animQueue={};this.animWraps={};Ext.view.Table.prototype.initComponent.call(this);this.store.setRootVisible(this.rootVisible);this.addRowTpl(this.lookupTpl('treeRowTpl'))},onFillComplete:function(treeStore,fillRoot,newNodes){treeStore=
this.store.indexOf(newNodes[0]);fillRoot.triggerUIUpdate();newNodes.length&&-1!==treeStore&&(this.onAdd(this.store,newNodes,treeStore),this.refreshPartner())},refreshPartner:function(){var partner=this.lockingPartner;partner&&partner.refresh()},afterRender:function(){Ext.view.Table.prototype.afterRender.call(this);this.el.on({scope:this,delegate:this.expanderSelector,mouseover:this.onExpanderMouseOver,mouseout:this.onExpanderMouseOut})},processUIEvent:function(e){return e.getTarget('.'+this.nodeAnimWrapCls,
this.el)?!1:Ext.view.Table.prototype.processUIEvent.call(this,e)},setRootNode:function(node){this.node=node},getChecked:function(){var checked=[];this.node.cascade(function(rec){rec.get('checked')&&checked.push(rec)});return checked},isItemChecked:function(rec){return rec.get('checked')},createAnimWrap:function(record,index){index=this.getNode(record);var tmpEl=Ext.fly(index).insertSibling({role:'presentation',tag:'div',cls:this.nodeAnimWrapCls},'after');return{record:record,node:index,el:tmpEl,expanding:!1,
collapsing:!1,animateEl:tmpEl,targetEl:tmpEl}},getAnimWrap:function(parent,bubble){if(!this.animate)return null;var wraps=this.animWraps,wrap=wraps[parent.internalId];if(!1!==bubble)for(;!wrap&&parent;)(parent=parent.parentNode)&&(wrap=wraps[parent.internalId]);return wrap},doAdd:function(records,index){var parent=records[0].parentNode,all=this.all,animWrap=this.getAnimWrap(parent);if(!animWrap||!animWrap.expanding)return Ext.view.Table.prototype.doAdd.call(this,records,index);records=this.bufferRender(records,
index,!0);var children=records.children;parent=animWrap.record;animWrap=animWrap.targetEl;var childNodes=animWrap.dom.childNodes;var len=childNodes.length;parent=index-this.indexInStore(parent)-1;!len||parent>=len?animWrap.appendChild(records.fragment,!0):Ext.fly(childNodes[parent]).insertSibling(children,'before',!0);all.insert(index,children);return children},onRemove:function(ds,records,index){var fireRemoveEvent=this.hasListeners.remove,oldItems;if(this.viewReady){var empty=0===this.store.getCount();
if(this.bufferedRenderer)return Ext.view.Table.prototype.onRemove.call(this,ds,records,index);fireRemoveEvent&&(oldItems=this.all.slice(index,index+records.length));if(empty)this.refresh();else{ds=records.length-1;for(index+=ds;0<=ds;--ds,--index)this.doRemove(records[ds],index);this.refreshSizePending=!0}fireRemoveEvent&&this.fireItemMutationEvent('itemremove',records,index,oldItems,this)}},doRemove:function(record,index){var all=this.all,animWrap=this.getAnimWrap(record),item=all.item(index);item=
item?item.dom:null;if(!item||!animWrap||!animWrap.collapsing)return Ext.view.Table.prototype.doRemove.call(this,record,index);animWrap.targetEl.dom.insertBefore(item,animWrap.targetEl.dom.firstChild);all.removeElement(index)},onBeforeExpand:function(parent,records,index){this.rendered&&this.all.getCount()&&this.animate&&this.getNode(parent)&&((records=this.getAnimWrap(parent,!1))?records.collapsing&&records.targetEl.select(this.itemSelector).destroy():(records=this.animWraps[parent.internalId]=this.createAnimWrap(parent),
records.animateEl.setHeight(0)),records.expanding=!0,records.collapsing=!1)},onExpand:function(parent){var me=this,queue=me.animQueue,id=parent.getId(),node=me.getNode(parent),index=node?me.indexOf(node):-1,animWrap;me.singleExpand&&me.ensureSingleExpand(parent);if(-1!==index)if(animWrap=me.getAnimWrap(parent,!1)){var animateEl=animWrap.animateEl;var targetEl=animWrap.targetEl;animateEl.stopAnimation();queue[id]=!0;Ext.on('idle',function(){animateEl.dom.style.height='0px'},null,{single:!0});animateEl.animate({from:{height:0},
to:{height:targetEl.dom.scrollHeight},duration:me.expandDuration,listeners:{afteranimate:function(){var items=targetEl.dom.childNodes,activeEl=Ext.Element.getActiveElement();items.length&&(targetEl.contains(activeEl)||(activeEl=null),animWrap.el.insertSibling(items,'before',!0),activeEl&&Ext.fly(activeEl).focus());animWrap.el.destroy();me.animWraps[animWrap.record.internalId]=queue[id]=null}},callback:function(){parent.isExpandingOrCollapsing=!1;me.destroyed||me.refreshSize(!0);me.fireEvent('afteritemexpand',
parent,index,node)}})}else parent.isExpandingOrCollapsing=!1,me.fireEvent('afteritemexpand',parent,index,node)},onBeforeCollapse:function(parent,records,index,callback,scope){this.rendered&&this.all.getCount()&&(this.animate?parent.isVisible()&&((records=this.getAnimWrap(parent))?records.expanding&&records.targetEl.select(this.itemSelector).destroy():records=this.animWraps[parent.internalId]=this.createAnimWrap(parent,index),records.expanding=!1,records.collapsing=!0,records.callback=callback,records.scope=
scope):(this.onCollapseCallback=callback,this.onCollapseScope=scope))},onCollapse:function(parent){var me=this,queue=me.animQueue,id=parent.getId(),node=me.getNode(parent),index=node?me.indexOf(node):-1,animWrap=me.getAnimWrap(parent);if(me.all.getCount()&&parent.isVisible())if(animWrap){var animateEl=animWrap.animateEl;queue[id]=!0;animateEl.stopAnimation();animateEl.animate({to:{height:0},duration:me.collapseDuration,listeners:{afteranimate:function(){animWrap.el.destroy();me.animWraps[animWrap.record.internalId]=
queue[id]=null}},callback:function(){parent.isExpandingOrCollapsing=!1;me.destroyed||me.refreshSize(!0);me.fireEvent('afteritemcollapse',parent,index,node);Ext.callback(animWrap.callback,animWrap.scope);animWrap.callback=animWrap.scope=null}})}else parent.isExpandingOrCollapsing=!1,me.fireEvent('afteritemcollapse',parent,index,node),Ext.callback(me.onCollapseCallback,me.onCollapseScope),me.onCollapseCallback=me.onCollapseScope=null},isAnimating:function(node){return!!this.animQueue[node.getId()]},
expand:function(record,deep,callback,scope){var doAnimate=!!this.animate;if(!doAnimate||!record.isExpandingOrCollapsing)return record.isLeaf()||(record.isExpandingOrCollapsing=doAnimate),Ext.suspendLayouts(),record=record.expand(deep,callback,scope),Ext.resumeLayouts(!0),record},collapse:function(record,deep,callback,scope){var doAnimate=!!this.animate;if(!doAnimate||!record.isExpandingOrCollapsing)return record.isLeaf()||(record.isExpandingOrCollapsing=doAnimate),record.collapse(deep,callback,scope)},
toggle:function(record,deep,callback,scope){record.isExpanded()?this.collapse(record,deep,callback,scope):this.expand(record,deep,callback,scope)},onItemDblClick:function(record,item,index,e){var editingPlugin=this.editingPlugin;Ext.view.Table.prototype.onItemDblClick.call(this,record,item,index,e);!this.toggleOnDblClick||!record.isExpandable()||editingPlugin&&2===editingPlugin.clicksToEdit||this.toggle(record)},onCellClick:function(cell,cellIndex,record,row,rowIndex,e){var column=e.position.column;
if(column.isTreeColumn)return e.getTarget(this.checkboxSelector,cell)&&null!=record.get('checked')?(this.onCheckChange(e),column.stopSelection&&(e.stopSelection=!0)):e.getTarget(this.expanderSelector,cell)&&record.isExpandable()&&(this.getNavigationModel().setPosition(e.position),this.toggle(record,e.ctrlKey),e.nodeToggled=!0),Ext.view.Table.prototype.onCellClick.call(this,cell,cellIndex,record,row,rowIndex,e)},onCheckChange:function(e){var record=e.record,wasChecked=record.get('checked');this.setChecked(record,
1===wasChecked?!0:!wasChecked,e)},setChecked:function(record,meChecked,e,options){var checkPropagation=this.checkPropagationFlags[this.ownerGrid.checkPropagation.toLowerCase()],halfCheckedValue=this.ownerGrid.triStateCheckbox?1:!1,progagateCheck=(!options||!1!==options.propagateCheck)&&checkPropagation&1,checkParent=(!options||!1!==options.checkParent)&&checkPropagation&2,parentNode,matchedChildCount=0,i;if(!1!==this.fireEvent('beforecheckchange',record,record.data.checked,e)){if(1!==meChecked&&progagateCheck){progagateCheck=
record.childNodes;checkPropagation=progagateCheck.length;for(i=0;i<checkPropagation;i++)this.setChecked(progagateCheck[i],meChecked,e,{checkParent:!1}),progagateCheck[i].get('checked')===meChecked&&matchedChildCount++;matchedChildCount!==checkPropagation&&(meChecked=matchedChildCount?halfCheckedValue:!1)}if(record.get('data')!==meChecked&&(record.set('checked',meChecked,options),this.fireEvent('checkchange',record,meChecked,e),checkParent&&(parentNode=record.parentNode)&&null!=parentNode.data.checked)){progagateCheck=
parentNode.childNodes;checkPropagation=progagateCheck.length;if(meChecked!==halfCheckedValue)if(1===checkPropagation)halfCheckedValue=meChecked;else{record=meChecked=!1;for(i=0;!(record&&meChecked)&i<checkPropagation;i++)1===progagateCheck[i].data.checked?record=meChecked=!0:progagateCheck[i].data.checked?record=!0:meChecked=!0;halfCheckedValue=record&&meChecked?halfCheckedValue:record?!0:!1}this.setChecked(parentNode,halfCheckedValue,e,{propagateCheck:!1})}}},onExpanderMouseOver:function(e){e.getTarget(this.cellSelector,
10,!0).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(e){e.getTarget(this.cellSelector,10,!0).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){return Ext.apply(Ext.view.Table.prototype.getStoreListeners.call(this),{rootchange:this.onRootChange,fillcomplete:this.onFillComplete})},onBindStore:function(store,initial,propName,oldStore){var oldRoot=oldStore&&oldStore.getRootNode(),newRoot=store&&store.getRootNode();Ext.view.Table.prototype.onBindStore.call(this,store,initial,
propName,oldStore);if(newRoot!==oldRoot)this.onRootChange(newRoot,oldRoot)},onRootChange:function(newRoot,oldRoot){var grid=this.grid;oldRoot&&(this.rootListeners.destroy(),this.rootListeners=null);newRoot&&(this.rootListeners=newRoot.on({beforeexpand:this.onBeforeExpand,expand:this.onExpand,beforecollapse:this.onBeforeCollapse,collapse:this.onCollapse,destroyable:!0,scope:this}),grid.addRelayers(newRoot))},ensureSingleExpand:function(node){var parent=node.parentNode;parent&&parent.eachChild(function(child){child!==
node&&child.isExpanded()&&child.collapse()})},privates:{checkPropagationFlags:{none:0,down:1,up:2,both:3},deferRefreshForLoad:function(store){var ret=Ext.view.Table.prototype.deferRefreshForLoad.call(this,store),options;ret&&(options=(options=store.lastOptions)&&options.node)&&options!==store.getRoot()&&(ret=!1);return ret}}},0,['treeview'],'component box dataview tableview gridview treeview'.split(' '),{component:!0,box:!0,dataview:!0,tableview:!0,gridview:!0,treeview:!0},['widget.treeview'],0,[Ext.tree,
'View'],0);
Ext.cmd.derive('Ext.tree.Panel',Ext.panel.Table,{alternateClassName:['Ext.tree.TreePanel','Ext.TreePanel'],viewType:'treeview',treeCls:'x-tree-panel',rowLines:!1,lines:!0,useArrows:!1,singleExpand:!1,ddConfig:{enableDrag:!0,enableDrop:!0},rootVisible:!0,displayField:'text',root:null,checkPropagation:'none',normalCfgCopy:'displayField root singleExpand useArrows lines rootVisible scroll'.split(' '),lockedCfgCopy:'displayField root singleExpand useArrows lines rootVisible'.split(' '),isTree:!0,arrowCls:'x-tree-arrows',
linesCls:'x-tree-lines',noLinesCls:'x-tree-no-lines',autoWidthCls:'x-autowidth-table',constructor:function(config){config=config||{};void 0===config.animate&&(config.animate=Ext.isBoolean(this.animate)?this.animate:Ext.enableFx);this.enableAnimations=config.animate;delete config.animate;Ext.panel.Table.prototype.constructor.call(this,config)},initComponent:function(){var cls=[this.treeCls],autoTree;this.useArrows&&(cls.push(this.arrowCls),this.lines=!1);this.lines?cls.push(this.linesCls):this.useArrows||
cls.push(this.noLinesCls);var store=this.applyStore(this.store);store.getRoot()||store.setRoot({});store.setRootVisible(this.rootVisible);this.columns||(this.isAutoTree=autoTree=!0);this.viewConfig=Ext.apply({rootVisible:this.rootVisible,animate:this.enableAnimations,singleExpand:this.singleExpand,node:store.getRoot(),navigationModel:'tree',isAutoTree:autoTree},this.viewConfig);autoTree&&(this.addCls(this.autoWidthCls),this.columns=[{xtype:'treecolumn',text:!0===this.hideHeaders?'Name':null,flex:1,
dataIndex:this.displayField}]);this.cls&&cls.push(this.cls);this.cls=cls.join(' ');Ext.panel.Table.prototype.initComponent.call(this);cls=this.getView();this.relayEvents(cls,['beforecheckchange','checkchange','afteritemexpand','afteritemcollapse'])},applyStore:function(store){Ext.isString(store)?store=this.store=Ext.StoreMgr.lookup(store):store&&store.isStore?this.root&&(store=this.store=Ext.data.StoreManager.lookup(store),store.setRoot(this.root),void 0!==this.folderSort&&(store.folderSort=this.folderSort,
store.sort())):(store=Ext.apply({type:'tree',proxy:'memory'},store),this.root&&(store.root=this.root),this.fields?store.fields=this.fields:this.model&&(store.model=this.model),this.folderSort&&(store.folderSort=this.folderSort),store=this.store=Ext.StoreMgr.lookup(store));return store},setRoot:function(root){this.store.setRoot(root)},setStore:function(store){store=this.applyStore(store);store.getRoot()||store.setRoot({});store.setRootVisible(this.rootVisible);this.enableLocking?this.reconfigure(store):
(this.view&&this.view.setRootNode(store.getRootNode()),this.bindStore(store))},bindStore:function(store,initial){var root=store.getRoot();Ext.panel.Table.prototype.bindStore.apply(this,arguments);store.singleExpand=this.singleExpand;this.storeListeners=this.mon(store,{destroyable:!0,rootchange:this.onRootChange,scope:this});this.storeRelayers=this.relayEvents(store,['beforeload','load']);this.rootVisible||store.autoLoad||root.isExpanded()||root.isLoading()||(root.isLoaded()?(root.data.expanded=!0,
store.onNodeExpand(root,root.childNodes)):!1===store.autoLoad||store.hasPendingLoad()||(root.data.expanded=!1,root.expand()));store.ownerTree=this;initial||this.view.setRootNode(root)},addRelayers:function(newRoot){this.rootRelayers&&(this.rootRelayers.destroy(),this.rootRelayers=null);this.rootRelayers=this.mon(newRoot,{destroyable:!0,append:this.createRelayer('itemappend'),remove:this.createRelayer('itemremove'),move:this.createRelayer('itemmove',[0,4]),insert:this.createRelayer('iteminsert'),beforeappend:this.createRelayer('beforeitemappend'),
beforeremove:this.createRelayer('beforeitemremove'),beforemove:this.createRelayer('beforeitemmove'),beforeinsert:this.createRelayer('beforeiteminsert'),expand:this.createRelayer('itemexpand',[0,1]),collapse:this.createRelayer('itemcollapse',[0,1]),beforeexpand:this.createRelayer('beforeitemexpand',[0,1]),beforecollapse:this.createRelayer('beforeitemcollapse',[0,1]),scope:this})},unbindStore:function(){var store=this.store;store&&(Ext.panel.Table.prototype.unbindStore.call(this),Ext.destroy(this.storeListeners,
this.storeRelayers,this.rootRelayers),delete store.ownerTree,store.singleExpand=null)},setRootNode:function(){return this.store.setRoot.apply(this.store,arguments)},getRootNode:function(){return this.store.getRoot()},onRootChange:function(root){this.view.setRootNode(root)},getChecked:function(){return this.getView().getChecked()},isItemChecked:function(rec){return rec.get('checked')},expandNode:function(record,deep,callback,scope){return this.getView().expand(record,deep,callback,scope||this)},collapseNode:function(record,
deep,callback,scope){return this.getView().collapse(record,deep,callback,scope||this)},expandAll:function(callback,scope){var root=this.getRootNode();root&&(Ext.suspendLayouts(),root.expand(!0,callback,scope||this),Ext.resumeLayouts(!0))},collapseAll:function(callback,scope){var root=this.getRootNode(),view=this.getView();root&&(Ext.suspendLayouts(),scope=scope||this,view.rootVisible?root.collapse(!0,callback,scope):root.collapseChildren(!0,callback,scope),Ext.resumeLayouts(!0))},expandPath:function(path,
options){var args=arguments,me=this,view=me.view,field=options&&options.field||me.store.model.idProperty,separator=options&&options.separator||'/';if(options&&'object'===typeof options){field=options.field||me.store.model.idProperty;separator=options.separator||'/';var callback=options.callback;var scope=options.scope;var select=options.select;var doFocus=options.focus}else field=args[1]||me.store.model.idProperty,separator=args[2]||'/',callback=args[3],scope=args[4];if(Ext.isEmpty(path))return Ext.callback(callback,
scope||me,[!1,null]);var keys=path.split(separator);if(separator=!keys[0]){args=me.getRootNode();var index=1}else args=me.store.findNode(field,keys[0]),index=0;if(!args||separator&&args.get(field)+''!==keys[1])return Ext.callback(callback,scope||me,[!1,args]);var expander=function(newChildren){var node=this,len,value;if(++index===keys.length)return select&&view.getSelectionModel().select(node),doFocus&&view.getNavigationModel().setPosition(node,0),Ext.callback(callback,scope||me,[!0,node,view.getNode(node)]);
var i=0;for(len=newChildren?newChildren.length:0;i<len;i++){node=newChildren[i];if((value=node.get(field))||0===value)value=value.toString();if(value===keys[index])return node.expand(!1,expander)}node=this;Ext.callback(callback,scope||me,[!1,node,view.getNode(node)])};args.expand(!1,expander)},ensureVisible:function(path,options){if(path.isEntity||'number'===typeof path)return Ext.panel.Table.prototype.ensureVisible.call(this,path,options);var me=this,field=options&&options.field||me.store.model.idProperty,
separator=options&&options.separator||'/',onLastExpanded=function(success,lastExpanded,lastExpandedHtmlNode,targetNode){!targetNode&&success&&lastExpanded&&(targetNode=lastExpanded.findChild(field,last));targetNode?me.doEnsureVisible(targetNode,options):Ext.callback(callback,scope||me,[!1,lastExpanded])};if(options){var callback=options.callback;var scope=options.scope}path=path.split(separator);var rooted=!path[0];var last=path.pop();!path.length||rooted&&1===path.length?(separator=me.store.findNode(field,
last))?((path=separator.parentNode)&&!path.isExpanded()&&path.expand(),onLastExpanded(!0,null,null,separator)):Ext.callback(callback,scope||me,[!1,null]):me.expandPath(path.join(separator),field,separator,onLastExpanded)},selectPath:function(path,field,separator,callback,scope){this.ensureVisible(path,{field:field,separator:separator,select:!0,callback:callback,scope:scope})}},1,['treepanel'],'component box container panel tablepanel treepanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,
tablepanel:!0,treepanel:!0},['widget.treepanel'],0,[Ext.tree,'Panel',Ext.tree,'TreePanel',Ext,'TreePanel'],0);
Ext.cmd.derive('Ext.view.DragZone',Ext.dd.DragZone,{containerScroll:!1,constructor:function(config){var ownerCt;Ext.apply(this,config);this.ddGroup||(this.ddGroup='view-dd-zone-'+this.view.id);config=this.view;config.setItemsDraggable(!0);config=(ownerCt=config.ownerCt)?ownerCt.getTargetEl().dom:config.el.dom.parentNode;Ext.dd.DragZone.prototype.constructor.call(this,config);this.ddel=document.createElement('div');this.ddel.className='x-grid-dd-wrap'},init:function(id,sGroup,config){var eventSpec=
{itemmousedown:this.onItemMouseDown,scope:this};Ext.supports.Touch&&(eventSpec.itemlongpress=this.onItemLongPress,eventSpec.contextmenu={element:'el',fn:this.onViewContextMenu});this.initTarget(id,sGroup,config);this.view.mon(this.view,eventSpec)},onValidDrop:function(target,e,id){Ext.dd.DragZone.prototype.onValidDrop.call(this,target,e,id);target.el.contains(Ext.Element.getActiveElement())||target.el.focus()},onViewContextMenu:function(e){'mouse'!==e.pointerType&&e.preventDefault()},onItemMouseDown:function(view,
record,item,index,e){if('mouse'===e.pointerType)this.onTriggerGesture(view,record,item,index,e)},onItemLongPress:function(view,record,item,index,e){if('mouse'!==e.pointerType)this.onTriggerGesture(view,record,item,index,e)},onTriggerGesture:function(view,record,item,index,e){'touch'===e.pointerType&&'longpress'!==e.type||e.position&&e.position.isEqual(e.view.actionPosition)||this.isPreventDrag(e,record,item,index)||(view=view.getNavigationModel(),e.position?view.setPosition(e.position):view.setPosition(index),
this.handleMouseDown(e))},isPreventDrag:function(e,record,item,index){return!!e.isInputFieldEvent},getDragData:function(e){var view=this.view,item=e.getTarget(view.getItemSelector());if(item)return{copy:view.copy||view.allowCopy&&e.ctrlKey,event:e,view:view,ddel:this.ddel,item:item,records:view.getSelectionModel().getSelection(),fromPosition:Ext.fly(item).getXY()}},onInitDrag:function(x,y){var data=this.dragData,view=data.view,selectionModel=view.getSelectionModel();view=view.getRecord(data.item);
selectionModel.isSelected(view)||selectionModel.selectWithEvent(view,this.DDMInstance.mousedownEvent);data.records=selectionModel.getSelection();Ext.fly(this.ddel).setHtml(this.getDragText());this.proxy.update(this.ddel);this.onStartDrag(x,y);return!0},getDragText:function(){var count=this.dragData.records.length;return Ext.String.format(this.dragText,count,1===count?'':'s')},getRepairXY:function(e,data){return data?data.fromPosition:!1}},1,0,0,0,0,0,[Ext.view,'DragZone'],0);
Ext.namespace('Ext.theme.is')['base-theme']=!0;Ext.theme.name='base-theme';Ext.cmd.derive('Common.Options',Ext.Base,{constructor:function(){if(Ext.supports.LocalStorage){var isDebug=Ext.decode(window.localStorage.getItem('isDebug'),!0);'boolean'===typeof isDebug&&(this._isDebug=isDebug)}},getIsDebug:function(){return this._isDebug},privates:{_isDebug:!1}},1,0,0,0,0,0,[Common,'Options'],0);
Ext.cmd.derive('Common.Log',Ext.Base,{singleton:!0,init:function(options){options.getIsDebug()&&(this._logLevel='debug')},message:function(format){var args=Array.prototype.slice.call(arguments,1);this._log('normal',format,args)},error:function(format){var args=Array.prototype.slice.call(arguments,1);this._error('normal',format,args)},debug:function(format){var args=Array.prototype.slice.call(arguments,1);this._log('debug',format,args)},privates:{_logLevel:'normal',_logLevelPriorities:{normal:0,debug:1},
_log:function(logLevel,format,args){this._isLogLevelCompatible(logLevel)&&(logLevel=this._formatMessage(format,args),console.log(logLevel))},_error:function(logLevel,format,args){this._isLogLevelCompatible(logLevel)&&(logLevel=this._formatMessage(format,args),console.error(logLevel))},_formatMessage:function(format,args){format=[format];Array.prototype.push.apply(format,args);return Ext.util.Format.format.apply(Ext.util.Format,format)},_isLogLevelCompatible:function(logLevel){logLevel=this._getLogPriority(logLevel);
var currentLogPriority=this._getLogPriority(this._logLevel);return logLevel<=currentLogPriority},_getLogPriority:function(logLevel){if('undefined'===typeof logLevel)throw Error('Log level is undefined');var logPriority=this._logLevelPriorities[logLevel];if('undefined'===typeof logPriority)throw Error('Unknown log level: '+logLevel);return logPriority}}},0,0,0,0,0,0,[Common,'Log'],0);
Ext.cmd.derive('Common.Request',Ext.Base,{statics:{thenable:function(){var method=arguments[0],args=Array.prototype.slice.call(arguments,1);'function'===typeof method&&method.directCfg||Ext.raise('Method argument is not an API function');var deferred=new Ext.Deferred;method.directCfg.method.len!==args.length&&Ext.raise('Arguments count is invalid.');method.apply(null,[].concat(args,function(result){return result&&!1===result.success?deferred.reject(result):deferred.resolve(result)}));return deferred.promise},
loadStore:function(store,pageNumber){function callbackHandler(records,operation,success){success?(console.log('callbackHandler',arguments),deferred.resolve({records:records,operation:operation})):deferred.reject(operation)}var deferred=new Ext.Deferred;Ext.isNumber(pageNumber)&&0<pageNumber?store.loadPage(pageNumber,{callback:callbackHandler,scope:this}):store.load({callback:callbackHandler,scope:this});return deferred.promise}}},0,0,0,0,0,0,[Common,'Request'],0);
Ext.cmd.derive('Common.data.field.SafeString',Ext.data.field.String,{convert:function(v){return Ext.String.htmlEncode(Ext.data.field.String.prototype.convert.apply(this,arguments))},getType:function(){return'safestring'}},0,0,0,0,['data.field.safestring'],0,[Common.data.field,'SafeString'],0);
Ext.cmd.derive('Common.form.TextFileField',Ext.form.field.File,{config:{allowedExtensions:[]},messages:{fileApiNotSupported:'Your browser does not support dynamic file loading',fileNotFound:'File not found',invalidExtension:'Invalid file extension'},initComponent:function(){Ext.form.field.File.prototype.initComponent.apply(this,arguments);this.apiEnabled=!!(window.File&&window.FileList&&window.FileReader);this.on('change','_changeValue',this)},onDestroy:function(){this.un('change','_changeValue',
this);Ext.form.field.File.prototype.onDestroy.apply(this,arguments)},privates:{_changeValue:function(fileField,value){var reader=new FileReader,input=fileField.fileInputEl.dom;value&&(this.apiEnabled?input.files.length?this._checkExtension(input.files[0])?(reader.onload=function(){fileField.fireEvent('load',fileField,reader.result,value)},reader.readAsText(input.files[0]),fileField.fireEvent('beforeload',fileField,value)):(this.fireEvent('fileerror',fileField,this.messages.invalidExtension),Common.Log.error(this.messages.invalidExtension)):
(this.fireEvent('fileerror',fileField,this.messages.fileNotFound),Common.Log.error(this.messages.fileNotFound)):(this.fireEvent('fileerror',fileField,this.messages.fileApiNotSupported),Common.Log.error(this.messages.fileApiNotSupported)))},_checkExtension:function(file){var extensions=this.getAllowedExtensions()||[];file=file.name.split('.').slice(-1)[0];return extensions.length?Ext.Array.contains(extensions,file):!0}}},0,['common.textfilefield','textfilefield','textfileuploadfield'],'component box field textfield filefield fileuploadfield common.textfilefield textfilefield textfileuploadfield'.split(' '),
{component:!0,box:!0,field:!0,textfield:!0,filefield:!0,fileuploadfield:!0,'common.textfilefield':!0,textfilefield:!0,textfileuploadfield:!0},['widget.common.textfilefield','widget.textfilefield','widget.textfileuploadfield'],0,[Common.form,'TextFileField'],0);
Ext.cmd.derive('Common.widget.Alert',Ext.Component,{ui:'default',baseCls:'x-alert'},0,['alert','widget.alert'],['component','box','alert','widget.alert'],{component:!0,box:!0,alert:!0,'widget.alert':!0},['widget.alert','widget.widget.alert'],0,[Common.widget,'Alert'],0);
Ext.cmd.derive('Common.dialogs.credentials.Linux',Ext.window.Window,{alternateClassName:'Common.LinuxCredentials',viewModel:{data:{formData:{username:null,password:null,passphrase:null,description:null,privateKey:null,port:22,elevateToRoot:!1,autoSudo:!1,rootPassword:null,failoverToSu:!1},usePrivateKey:!1,privateKeyAllowBlank:!1},formulas:{rootPasswordEnabled:{bind:{sudo:'{formData.autoSudo}',su:'{formData.failoverToSu}',elevate:'{formData.elevateToRoot}'},get:function(bind){return bind.elevate&&
(bind.sudo||bind.su)}},rootUserName:{bind:{name:'{formData.username}'},get:function(bind){return'root'===bind.name}}}},config:{authType:0,username:null,password:null,passphrase:null,description:null,port:22,elevateToRoot:!1,autoSudo:!1,rootPassword:null,info:null,passwordAllowBlank:!1,closeAfterClickOk:!1,hidePortField:!1,hideDescriptionField:!1,errorMessage:null,failoverToSu:!1},modal:!0,ui:'wizard',cls:'linux-credentials',title:'Linux Credentials',resizable:!1,draggable:!1,layout:{type:'vbox',align:'stretch'},
width:550,bodyPadding:20,initComponent:function(){var errorMessage=this.getErrorMessage();Ext.apply(this,{items:[{xtype:'widget.alert',ui:'error',hidden:!(errorMessage&&0<errorMessage.length),html:Ext.htmlEncode(errorMessage)},{xtype:'form',flex:1,layout:{type:'vbox',align:'stretch'},items:[{xtype:'component',html:this.getInfo(),hidden:!this.getInfo(),margin:'0 0 20 0'},{xtype:'textfield',fieldLabel:'Username',allowBlank:!1,labelWidth:66,bind:{value:'{formData.username}'},listeners:{change:this.handlers.userNameField.onChange,
scope:this}},{xtype:'textfield',fieldLabel:'Password',inputType:'password',ctype:'password',labelWidth:66,flex:1,setAllowBlank:function(value){this.allowBlank=!!value;this.publishValue();this.needValidate?this.validate():this.needValidate=!0},bind:{value:'{formData.password}',allowBlank:'{usePrivateKey}'}},{xtype:'checkbox',boxLabel:'Private key is required for this connection',value:!1,bind:{value:'{usePrivateKey}'},listeners:{change:this.handlers.usePrivateKey.change,scope:this}},{xtype:'fieldcontainer',
layout:'anchor',margin:'0 0 0 30',fieldDefaults:{anchor:'100%',labelWidth:72},items:[{xtype:'textfilefield',fieldLabel:'Private Key',cls:'private-key-upload-field',emptyText:'[Set private key from file]',emptyCls:'upload-field-empty',allowBlank:0===this.getAuthType(),disabled:!0,flex:1,buttonConfig:{ui:'text',margin:'0 0 0 6'},bind:{disabled:'{!usePrivateKey}',allowBlank:'{privateKeyAllowBlank}'},listeners:{beforeload:this.handlers.privateKeyFileField.beforeLoad,load:this.handlers.privateKeyFileField.load,
scope:this},setAllowBlank:function(value){this.allowBlank=!!value}},{xtype:'textfield',inputType:'password',fieldLabel:'Passphrase',disabled:!0,bind:{disabled:'{!usePrivateKey}',value:'{formData.passphrase}'}}]},{xtype:'numberfield',fieldLabel:'SSH port',value:22,labelWidth:66,minValue:0,maxValue:65535,allowBlank:!1,maxWidth:70,hidden:this.getHidePortField(),bind:{value:'{formData.port}'}},{xtype:'component',html:'Non-root account',cls:'widget-section-header'},{xtype:'checkbox',boxLabel:'Elevate specified account to root',
value:!1,bind:{value:'{formData.elevateToRoot}',disabled:'{rootUserName}'},listeners:{change:this.handlers.elevateToRootField.change,scope:this}},{xtype:'container',cls:'checkbox-group--nested',layout:{type:'vbox',align:'stretch'},items:[{xtype:'checkbox',name:'autoSudo',boxLabel:'Add account to the sudoers file automatically',value:!1,disabled:!0,bind:{value:'{formData.autoSudo}',disabled:'{!formData.elevateToRoot}'}},{xtype:'checkbox',boxLabel:'Use "su" if "sudo" fails',name:'failoverToSu',value:!1,
disabled:!0,bind:{value:'{formData.failoverToSu}',disabled:'{!formData.elevateToRoot}'}},{xtype:'textfield',inputType:'password',fieldLabel:'Root password',labelWidth:94,allowBlank:!1,disabled:!0,bind:{value:'{formData.rootPassword}',disabled:'{!rootPasswordEnabled}'}}]},{xtype:'textarea',fieldLabel:'Description',labelWidth:72,hidden:this.getHideDescriptionField(),bind:{value:'{formData.description}'}}]}],buttons:[{text:'OK',ui:'primary',handler:'okHandler',scope:this},{text:'Cancel',ui:'alternate',
handler:function(btn){btn.up('window').close()}}],listeners:{boxready:'onBoxReady',scope:this}});Ext.window.Window.prototype.initComponent.apply(this,arguments)},onBoxReady:function(){this.getViewModel().set('formData',{username:this.getUsername(),password:this.getPassword(),passphrase:this.getPassphrase(),description:this.getDescription(),port:this.getPort(),elevateToRoot:this.getElevateToRoot(),autoSudo:this.getAutoSudo(),rootPassword:this.getRootPassword(),failoverToSu:this.getFailoverToSu()})},
okHandler:function(){if(this.down('form').getForm().isValid()){var vm=this.getViewModel(),closeAfterClickOk=this.getCloseAfterClickOk(),data=Ext.clone(vm.get('formData'));vm=vm.get('usePrivateKey');this.fireEvent('select',this,data,!vm);closeAfterClickOk&&this.close()}},getFormData:function(){var vm=this.getViewModel(),data=Ext.clone(vm.get('formData'));data=(vm=vm.get('usePrivateKey'))?{username:data.username,password:data.password,passphrase:data.passphrase,description:data.description,port:data.port,
elevateToRoot:!!data.elevateToRoot,autoSudo:!!data.autoSudo,rootPassword:data.rootPassword,privateKey:data.privateKey,failoverToSu:data.failoverToSu}:{username:data.username,password:data.password,description:data.description,port:data.port,elevateToRoot:!!data.elevateToRoot,autoSudo:!!data.autoSudo,rootPassword:data.rootPassword,failoverToSu:data.failoverToSu};data.authType=vm?1:0;return data},getCredsType:function(){return'linux'},handlers:{userNameField:{onChange:function(field,value){field=this.getViewModel();
'root'===value&&field.set('formData.elevateToRoot',!1)}},usePrivateKey:{change:function(field,value){var fileField=this.down('textfilefield');value&&!fileField.apiEnabled&&Common.ui.Msg.error('Your browser does not support dynamic file loading',function(){field.setValue(!1);field.setDisabled(!0)})}},privateKeyFileField:{load:function(field,privateKey,value){var vm=this.getViewModel();this.setLoading(!1);this._isPrivateKeyContentValid(privateKey)?vm.set('formData.privateKey',privateKey):Common.ui.Msg.error('Unknown SSH private key format',
function(){field.setRawValue(null);vm.set('formData.privateKey',null)})},beforeLoad:function(field,privateKey){this.setLoading()}},elevateToRootField:{change:function(field,value){value||(field=this.down('checkbox[name\x3dautoSudo]'),value=this.down('checkbox[name\x3dfailoverToSu]'),field&&field.setValue(!1),value&&value.setValue(!1))}}},privates:{_isPrivateKeyContentValid:function(privateKey){for(var prefixes='SSH PRIVATE KEY FILE FORMAT 1.1;PuTTY-User-Key-File-;---- BEGIN SSH2 ENCRYPTED PRIVATE;-----BEGIN RSA PRIVATE KEY;-----BEGIN DSA PRIVATE KEY;-----BEGIN EC PRIVATE KEY;-----BEGIN EC PARAMETERS;-----BEGIN PRIVATE KEY;-----BEGIN ENCRYPTED PRIVATE KEY'.split(';'),
i=0;i<prefixes.length;i++){var prefix=prefixes[i];if(privateKey.substr(0,prefix.length)===prefix)return!0}return!1}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Common.dialogs.credentials,'Linux',Common,'LinuxCredentials'],0);
Ext.cmd.derive('Common.dialogs.credentials.Windows',Ext.window.Window,{alternateClassName:'Common.WindowsCredentials',viewModel:{data:{username:null,password:null,description:null}},config:{username:null,password:null,description:null,info:null,passwordAllowBlank:!0,closeAfterClickOk:!1,hideDescriptionField:!1,disableUsernameField:!1,usernameFieldLabel:'Username',errorMessage:null},modal:!0,resizable:!1,draggable:!1,ui:'wizard',title:'Credentials',layout:{type:'vbox',align:'stretch'},width:450,bodyPadding:20,
initComponent:function(){var passwordAllowBlank=this.getPasswordAllowBlank(),errorMessage=this.getErrorMessage();Ext.apply(this,{items:[{xtype:'widget.alert',ui:'error',hidden:!(errorMessage&&0<errorMessage.length),html:Ext.htmlEncode(errorMessage)},{xtype:'form',layout:{type:'vbox',align:'stretch'},flex:1,defaults:{labelWidth:75},items:[{xtype:'component',html:this.getInfo(),hidden:!this.getInfo(),margin:'0 0 20 0'},{xtype:'textfield',fieldLabel:this.getUsernameFieldLabel(),allowBlank:!1,disabled:this.getDisableUsernameField(),
bind:{value:'{username}'}},{xtype:'textfield',inputType:'password',fieldLabel:'Password',allowBlank:passwordAllowBlank,bind:{value:'{password}'},listeners:{specialkey:function(field,e){e.getKey()===e.ENTER&&this.okHandler()},scope:this}},{xtype:'textarea',fieldLabel:'Description',hidden:this.getHideDescriptionField(),bind:{value:'{description}'}}]}],buttons:[{text:'OK',ui:'primary',handler:'okHandler',scope:this},{text:'Cancel',ui:'alternate',handler:function(btn){btn.up('window').close()}}],listeners:{boxready:'onBoxReady',
scope:this}});Ext.window.Window.prototype.initComponent.apply(this,arguments)},onBoxReady:function(){this.getViewModel().set({username:this.getUsername(),password:this.getPassword(),description:this.getDescription()})},okHandler:function(){if(this.down('form').getForm().isValid()){var vm=this.getViewModel(),closeAfterClickOk=this.getCloseAfterClickOk();this.fireEvent('select',this,vm.getData());closeAfterClickOk&&this.close()}},getFormData:function(){var vm=this.getViewModel();return{username:vm.get('username'),
password:vm.get('password'),description:vm.get('description')}},getCredsType:function(){return'windows'}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Common.dialogs.credentials,'Windows',Common,'WindowsCredentials'],0);
Ext.cmd.derive('Common.form.CheckboxImageField',Ext.form.field.Checkbox,{iconCls:null,cls:'checkbox-image-field',initComponent:function(){this.iconCls&&(this.boxLabel=Ext.String.format('\x3cspan class\x3d"{0} label-with-icon"\x3e{1}\x3c/span\x3e',this.iconCls,this.boxLabel));Ext.form.field.Checkbox.prototype.initComponent.apply(this,arguments)}},0,['checkboximage','checkboximagefield','common.checkboximagefield'],'component box field checkboxfield checkbox common.checkboximagefield checkboximagefield checkboximage'.split(' '),
{component:!0,box:!0,field:!0,checkboxfield:!0,checkbox:!0,'common.checkboximagefield':!0,checkboximagefield:!0,checkboximage:!0},['widget.checkboximage','widget.checkboximagefield','widget.common.checkboximagefield'],0,[Common.form,'CheckboxImageField'],0);
Ext.cmd.derive('Common.form.AdvancedFilterField',Ext.button.Button,{viewModel:{},config:{value:[],items:[],minMenuWidth:null},publishes:['value'],defaultBindProperty:'value',cls:'advanced-filter-field',title:'Filtering Option',noneEnabled:!1,selectAllAfterRender:!0,arrowVisible:!1,iconCls:'filter',initComponent:function(){this._baseText=this.text;this.menu={items:[{xtype:'form',cls:'advanced-filter-field-menu',ctype:'formPanel',minWidth:this.minMenuWidth,bbar:{items:['-\x3e',{text:'Apply',ui:'primary',
handler:'applyHandler',scope:this},{text:'Cancel',cls:'cancel-btn',ui:'alternate',handler:'cancelHandler',scope:this}]},tbar:{defaults:{padding:0},items:[{xtype:'tbtext',html:this.title},{text:'All',cls:'before-separator',handler:'selectAll',scope:this},{xtype:'tbseparator'},{text:'None',handler:'deselectAll',scope:this}]},items:[{xtype:'fieldcontainer',ctype:'itemsContainer',defaultType:'checkboximage',items:this.items}]}],listeners:{hide:'onMenuHide',beforeHide:'onBeforeMenuHide',scope:this}};Ext.button.Button.prototype.initComponent.apply(this,
arguments)},setValue:function(value){Ext.isArray(value)&&((arguments.callee.$previous||Ext.button.Button.prototype.setValue).apply(this,arguments),this.rendered&&(this._updateCheckboxValues(),this._updateButtonText()))},setItems:function(items){(arguments.callee.$previous||Ext.button.Button.prototype.setItems).apply(this,arguments);if(this.rendered){var container=this.down('[ctype\x3ditemsContainer]');container.removeAll();container.add(items);this.selectAllAfterRender&&(this.selectAll(),this._syncValue())}},
setMinMenuWidth:function(value){(arguments.callee.$previous||Ext.button.Button.prototype.setMinMenuWidth).apply(this,arguments);this.rendered&&this.down('[ctype\x3dformPanel]').setMinWidth(value)},afterRender:function(){var value=this.getValue();this.selectAllAfterRender?(this.selectAll(),this._syncValue()):Ext.isArray(value)&&value.length?this._updateCheckboxValues():setTimeout(this._syncValue.bind(this));Ext.button.Button.prototype.afterRender.apply(this,arguments)},applyHandler:function(){var me=
this,data=me._getSelection();me.noneEnabled||data.length?(me._syncValue(),me.fireEvent('changedata',me,data),me.getMenu().hide()):(me._hideDisabled=!0,Common.ui.Msg.error('At least one condition must be selected',function(){me._hideDisabled=!1}))},cancelHandler:function(){this.getMenu().hide()},onMenuHide:function(){var value=this.getValue()||[],selection=this._getSelection()||[];Ext.Array.equals(value,selection)||this._updateCheckboxValues();this.removeCls('x-btn-menu-active')},onBeforeMenuHide:function(){return this._hideDisabled?
!1:!0},deselectAll:function(){this._multipleSelect(!1)},selectAll:function(){this._multipleSelect(!0)},privates:{_getSelection:function(){var chbx=this._getCheckboxes(!0),data=[];Ext.each(chbx,function(checkbox){data.push(checkbox.inputValue)});return data},_getCheckboxes:function(onlyChecked){var form=this.getMenu().down('form');return onlyChecked?form.query('checkbox[checked\x3dtrue]'):form.query('checkbox')},_multipleSelect:function(checked){var chbx=this._getCheckboxes();Ext.each(chbx,function(checkbox){checkbox.setValue(checked)})},
_updateCheckboxValues:function(){var data=this.getValue()||[],chbx=this._getCheckboxes();Ext.each(chbx,function(checkbox){checkbox.setValue(Ext.Array.contains(data,checkbox.inputValue))})},_syncValue:function(){var data=this._getSelection();this.setValue(data)},_updateButtonText:function(){var chbx=this._getCheckboxes(),data=this._getSelection();chbx=chbx.length===data.length?'(All)':Ext.String.format('({0} of {1})',data.length,chbx.length);chbx=Ext.String.format('{0} {1}',this._baseText,chbx);this.setText(chbx)}}},
0,['common-advancedfilterfield','common.advancedfilterfield'],['component','box','button','common.advancedfilterfield','common-advancedfilterfield'],{component:!0,box:!0,button:!0,'common.advancedfilterfield':!0,'common-advancedfilterfield':!0},['widget.common-advancedfilterfield','widget.common.advancedfilterfield'],0,[Common.form,'AdvancedFilterField'],0);
Ext.cmd.derive('Common.form.SearchField',Ext.form.field.Text,{inputAttrTpl:'required',cls:'textfield-search',triggers:{clear:{weight:0,cls:'x-form-clear-trigger',hidden:!0,handler:'onClearClick',scope:'this'},search:{weight:1,cls:'x-form-search-trigger',handler:'onSearchClick',scope:'this'}},hasSearch:!1,paramName:'query',enableKeyEvents:!0,listeners:{keyup:{fn:'onUserTypes',scope:'this',buffer:100}},initComponent:function(){var me=this,store=me.store;Ext.form.field.Text.prototype.initComponent.apply(this,
arguments);me.on('specialkey',function(f,e){if(e.getKey()==e.ENTER)me.onSearchClick()});me.bindStore(store||'ext-empty-store',!0,!0)},onClearClick:function(){var activeFilter=this.activeFilter;this.toggleClearTrigger(!1);this.setValue('');activeFilter&&(this.store.getFilters().remove(activeFilter),this.activeFilter=null,this.updateLayout(),this.fireEvent('clear'))},onSearchClick:function(){var value=this.getValue();0<value.length&&(this.activeFilter=new Ext.util.Filter({property:this.paramName,value:value}),
this.store.getFilters().add(this.activeFilter),this.toggleClearTrigger(!0),this.updateLayout(),this.fireEvent('search',value))},onUnbindStore:function(){},onBindStore:function(store,initial){store.setRemoteFilter(!0);store=store.getProxy();store.isRemote&&(store.setFilterParam(this.paramName),store.encodeFilters=function(filters){return filters[0].getValue()})},bindStore:function(store,initial){this.mixins.storeholder.bindStore.call(this,store,initial)},doDestroy:function(){this.bindStore(null);Ext.form.field.Text.prototype.doDestroy.call(this)},
onUserTypes:function(){var value=this.getRawValue();this.toggleClearTrigger(!!value);if(!value)this.onClearClick()},privates:{toggleClearTrigger:function(show){var trigger=this.getTrigger('clear');trigger&&trigger.rendered&&(trigger.setVisible(show),trigger.getEl().toggleCls('trigger-visible',show))}}},0,['common.searchfield','widget.common.searchfield'],'component box field textfield common.searchfield widget.common.searchfield'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,'common.searchfield':!0,
'widget.common.searchfield':!0},['widget.common.searchfield','widget.widget.common.searchfield'],[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Common.form,'SearchField'],0);
Ext.cmd.derive('Common.form.CategorizedSearchField',Common.form.SearchField,{cls:'categorized-search-field textfield-search',btnWidth:120,categoryPropId:'category',allowEmptySearch:!1,triggers:{clear:{weight:0,cls:'x-form-clear-trigger trigger-separator',hidden:!0,handler:'onClearClick',scope:'this'},search:{weight:1,cls:'x-form-search-trigger trigger-separator',handler:'onSearchClick',scope:'this'},category:{weight:2,type:'component',preventMouseDown:!1}},applyTriggers:function(triggers){var categoryTriggerCfg=
(triggers||{}).category,btnWidth=this.btnWidth||120;categoryTriggerCfg&&(categoryTriggerCfg.component=Ext.apply({xtype:'button',text:'Everything',cls:'category-button',iconCls:'everything',textAlign:'left',width:btnWidth,ui:'text',arrowVisible:!0,menu:{cls:'categorized-search-field-menu',minWidth:btnWidth-1,items:[{text:'Everything',iconCls:'everything',type:null}],listeners:{show:'_onMenuShow',hide:'_onMenuHide',scope:this}}},{}));return Common.form.SearchField.prototype.applyTriggers.call(this,
triggers)},setCategories:function(menuItems){var me=this,categoryButton=me._getCategoryButton();categoryButton.menu.removeAll();Ext.each(menuItems,function(item,i){Ext.apply(item,{group:item.group||this.id,itemIndex:i,handler:me._changeCategory,scope:me});categoryButton.menu.add(item)});menuItems&&menuItems.length&&me._changeCategory.call(me,categoryButton[me.categoryPropId]=categoryButton.menu.items.items[0])},getCategory:function(){return this._getCategoryButton()[this.categoryPropId]},onSearchClick:function(){var value=
this.getValue();if(this.allowEmptySearch||0<value.length)this.activeFilter=new Ext.util.Filter({property:this.paramName,value:value}),this.store.getFilters().add(this.activeFilter),this.getTrigger('clear').show(),this.updateLayout(),this.fireEvent('search',this,value,this.getCategory())},privates:{_changeCategory:function(menuItem){var categoryButton=this._getCategoryButton();categoryButton.setIconCls(menuItem.iconCls);categoryButton[this.categoryPropId]=menuItem[this.categoryPropId];categoryButton.setText(menuItem.text);
this.fireEvent('changecategory',this,menuItem[this.categoryPropId])},_getCategoryButton:function(){return this.getTrigger('category').component},_getTriggerWrap:function(){return this.getEl().down('[data-ref\x3dtriggerWrap]')},_onMenuShow:function(){this._getTriggerWrap().addCls('x-form-trigger-wrap-focus')},_onMenuHide:function(){this._getTriggerWrap().removeCls('x-form-trigger-wrap-focus')}}},0,['common-categorizedsearchfield','common.categorizedsearchfield'],'component box field textfield common.searchfield widget.common.searchfield common.categorizedsearchfield common-categorizedsearchfield'.split(' '),
{component:!0,box:!0,field:!0,textfield:!0,'common.searchfield':!0,'widget.common.searchfield':!0,'common.categorizedsearchfield':!0,'common-categorizedsearchfield':!0},['widget.common-categorizedsearchfield','widget.common.categorizedsearchfield'],0,[Common.form,'CategorizedSearchField'],0);
Ext.cmd.derive('Common.form.FilteredSearchField',Ext.form.Picker,{cls:'filtered-search-field',inputAttrTpl:'required',hasSearch:!1,paramName:'query',matchFieldWidth:!1,pickerAlign:'br',pickerOffset:[-93,-1],focusable:!0,publishes:['filtered','filterDisabled'],enableKeyEvents:!0,config:{filtered:!1,filterDisabled:!1,filterBtnUI:'text',filterBtnNoFilterTxt:'No Filter',filterBtnFilteredTxt:'Filtered',filterBtnTip:'Search filters',filterIconCls:'filter',filteredCls:'filtered',filterConfig:{},popup:{lazy:!0,
$value:{xtype:'window',cls:'menu-filter',closeAction:'hide',referenceHolder:!0,layout:'fit',header:!1,resizable:!1}}},listeners:{keyup:{fn:'onUserTypes',scope:'this',buffer:100}},triggers:{clear:{weight:0,cls:'x-form-clear-trigger',hidden:!0,handler:'onClearClick',scope:'this'},search:{weight:1,cls:'x-form-search-trigger',handler:'onSearchClick',scope:'this'},picker:{weight:2,width:'92px',cls:'x-form-trigger-filter',bodyTpl:['\x3cdiv class\x3d"{filterWrapCls}"\x3e\x3cdiv class\x3d"trigger-icon {filterIconCls}"\x3e\x3c/div\x3e{%this.renderFilterBtn(values, out)%}\x3c/div\x3e',
{renderFilterBtn:function(values,out){Ext.DomHelper.generateMarkup(values.filterBtn.getRenderTree(),out)}}],getBodyRenderData:function(){return{filterBtn:this.field.filterBtn,filterWrapCls:'filter-wrap',filterIconCls:this.field.filterIconCls}},handler:'showFilters',scope:'this'}},createPicker:function(){var popup=this.getPopup(),pickerConfig=this.getFilterConfig();this.pickerWindow=popup=Ext.create(popup);popup.add(pickerConfig);popup.on({close:'collapse',scope:this});return this.pickerWindow},initComponent:function(){var me=
this,store=me.store;me.filterBtn=new Ext.button.Button({ui:me.filterBtnUI,ownerCt:me,ownerLayout:me.getComponentLayout(),text:me.filterBtnNoFilterTxt,tooltip:me.filterBtnTip,tooltipType:'title',tabIndex:-1,maxHeight:30,padding:'7 0',ariaRole:'presentation',scope:me});Ext.form.field.Picker.prototype.initComponent.apply(this,arguments);me.on('specialkey',function(f,e){e.getKey()===e.ENTER&&(me.onSearchClick(),e.preventDefault())});me.bindStore(store||'ext-empty-store',!0,!0)},updateFiltered:function(value){this.toggleCls(this.getFilteredCls(),
value);this.filterBtn&&this.filterBtn.setText(value?this.getFilterBtnFilteredTxt():this.getFilterBtnNoFilterTxt());return value},updateFilterDisabled:function(value,oldValue){var trigger=this.getTrigger('picker'),btn=this.filterBtn;trigger=Ext.fly(trigger.getEl());value!==oldValue&&trigger&&(trigger.toggleCls('x-item-disabled',value),btn.setDisabled(value));!0===value&&this.isExpanded&&this.collapse();return value},setDisabled:function(value){var btn=this.filterBtn;Ext.form.field.Picker.prototype.setDisabled.call(this,
value);btn&&btn.setDisabled(value);!0===value&&this.isExpanded&&this.collapse()},showFilters:function(){this.readOnly||this.disabled||this.filterDisabled||(this.isExpanded?this.collapse():this.expand())},doDestroy:function(){this.rendered&&Ext.destroy(this.filterBtn);this.bindStore(null);Ext.form.field.Picker.prototype.doDestroy.call(this)},onClearClick:function(){var activeFilter=this.activeFilter;this.toggleClearTrigger(!1);this.setValue('');activeFilter&&(this.store.getFilters().remove(activeFilter),
this.activeFilter=null,this.updateLayout(),this.fireEvent('clear'))},onSearchClick:function(){var value=this.getValue();0<value.length&&(this.activeFilter=new Ext.util.Filter({property:this.paramName,value:value}),this.store.getFilters().add(this.activeFilter),this.toggleClearTrigger(!0),this.updateLayout(),this.isExpanded&&this.collapse(),this.fireEvent('search',value))},onUnbindStore:function(){},onBindStore:function(store,initial){store.setRemoteFilter(!0);store=store.getProxy();store.isRemote&&
(store.setFilterParam(this.paramName),store.encodeFilters=function(filters){return filters[0].getValue()})},bindStore:function(store,initial){this.mixins.storeholder.bindStore.call(this,store,initial)},expand:function(){Ext.form.field.Picker.prototype.expand.call(this);this.toggleCls('expanded',!0)},collapse:function(){Ext.form.field.Picker.prototype.collapse.call(this);this.toggleCls('expanded',!1)},onUserTypes:function(){var value=this.getRawValue();this.toggleClearTrigger(!!value);if(!value)this.onClearClick()},
privates:{finishRenderChildren:function(){Ext.form.field.Picker.prototype.finishRenderChildren.call(this);this.filterBtn&&this.filterBtn.finishRender()},toggleClearTrigger:function(show){var trigger=this.getTrigger('clear');trigger&&trigger.rendered&&(trigger.setVisible(show),trigger.getEl().toggleCls('trigger-visible',show))}}},0,['common.filteredsearchfield','widget.common.filteredsearchfield'],'component box field textfield pickerfield common.filteredsearchfield widget.common.filteredsearchfield'.split(' '),
{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,'common.filteredsearchfield':!0,'widget.common.filteredsearchfield':!0},['widget.common.filteredsearchfield','widget.widget.common.filteredsearchfield'],[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Common.form,'FilteredSearchField'],0);
Ext.cmd.derive('Common.grid.RowEditorButtons',Ext.grid.RowEditorButtons,{constructor:function(config){var rowEditor=config.rowEditor,plugin=rowEditor.editingPlugin;config=Ext.apply({baseCls:'x-grid-row-editor-buttons',defaults:{xtype:'button',ui:rowEditor.buttonUI,scope:plugin,flex:1,minWidth:Ext.panel.Panel.prototype.minButtonWidth},items:[{cls:'x-row-editor-update-button',itemId:'update',handler:plugin.completeEdit,text:rowEditor.saveBtnText,disabled:rowEditor.updateButtonDisabled,iconCls:rowEditor.updateButtonIconCls||
'save',listeners:{element:'el',keydown:this.onUpdateKeyDown,scope:this}},{cls:'x-row-editor-cancel-button',itemId:'cancel',handler:plugin.cancelEdit,text:rowEditor.cancelBtnText,iconCls:rowEditor.cancelButtonIconCls||'cancel',listeners:{element:'el',keydown:this.onCancelKeyDown,scope:this}}]},config);Ext.grid.RowEditorButtons.prototype.constructor.call(this,config);this.addClsWithUI(this.position)}},1,0,['component','box','container','roweditorbuttons'],{component:!0,box:!0,container:!0,roweditorbuttons:!0},
0,0,[Common.grid,'RowEditorButtons'],0);
Ext.cmd.derive('Common.grid.RowEditor',Ext.grid.RowEditor,{config:{buttonUI:'text'},getFloatingButtons:function(){var btns=this.floatingButtons;btns||this.destroying||this.destroyed||(this.floatingButtons=btns=new Common.grid.RowEditorButtons({ownerCmp:this,rowEditor:this}));return btns},onGridResize:function(){if(this.rendered){var clientWidth=this.getClientWidth(),grid=this.editingPlugin.grid,gridBody=grid.body,btns=this.getFloatingButtons();this.wrapEl.setLocalX(gridBody.getOffsetsTo(grid)[0]+gridBody.getBorderWidth('l')-
grid.el.getBorderWidth('l'));this.setWidth(clientWidth);btns.setLocalX(clientWidth-btns.getWidth()-3);this.lockable&&this.lockedColumnContainer.setWidth(grid.normalGrid.el.getLeft(!0))}}},0,0,'component box container panel form roweditor'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,roweditor:!0},0,0,[Common.grid,'RowEditor'],0);
Ext.cmd.derive('Common.grid.column.DescriptionColumn',Ext.grid.column.Column,{renderer:function(value,meta,record){record=Ext.util.Format;if(value=record.htmlDecode(value))meta.tdAttr='data-qtip\x3d"'+record.htmlEncode(value)+'"';return record.htmlEncode(value)}},0,['descriptioncolumn'],'component box container headercontainer gridcolumn descriptioncolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,descriptioncolumn:!0},['widget.descriptioncolumn'],0,[Common.grid.column,
'DescriptionColumn'],0);
Ext.cmd.derive('Common.grid.column.FsItemIconColumn',Ext.grid.Column,{header:null,width:32,dataIndex:'isFolder',nameIndex:null,renderer:function(value,metaData,record,rowIndex,colIndex){metaData=this.getHeaderContainer().getHeaderAtIndex(colIndex).nameIndex;value=value?'folder':'file';return Ext.isString(metaData)?Ext.String.format('\x3cspan\x3e\x3cspan class\x3d"cell__icon {0} with-text"\x3e{1}\x3c/span\x3e',value,record.get(metaData)):'\x3cspan class\x3d"cell__icon '+value+'" /\x3e'},getSortParam:function(){return this.nameIndex||
this.dataIndex}},0,['fsiconcolumn'],'component box container headercontainer gridcolumn fsiconcolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,fsiconcolumn:!0},['widget.fsiconcolumn'],0,[Common.grid.column,'FsItemIconColumn'],0);
Ext.cmd.derive('Common.grid.column.LinkColumn',Ext.grid.Column,{tpl:'\x3ca href\x3d"#{url}"\x3e{value}\x3c/a\x3e',handler:Ext.emptyFn,constructor:function(cfg){cfg=cfg||{};Ext.grid.column.Column.prototype.constructor.call(this,cfg);var tpl=!Ext.isPrimitive(this.tpl)&&this.tpl.compile?this.tpl:new Ext.XTemplate(this.tpl),dataIndex=this.dataIndex;'function'==typeof cfg.buildUrl&&(this.buildUrl=cfg.buildUrl);this.renderer='function'==typeof cfg.renderer?cfg.renderer:function(value,meta,r){meta.css+=
' x-action-col-cell';return(meta=r.data[dataIndex])&&meta.reportQuery?tpl.apply(meta):value};this.tpl=tpl},destroy:function(){delete this.renderer;Ext.grid.column.Column.prototype.destroy.apply(this,arguments)}},1,['linkcolumn'],'component box container headercontainer gridcolumn linkcolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,linkcolumn:!0},['widget.linkcolumn'],0,[Common.grid.column,'LinkColumn'],0);
Ext.cmd.derive('Common.grid.column.NullableDateColumn',Ext.grid.DateColumn,{constructor:function(cfg){Ext.grid.column.Date.prototype.constructor.apply(this,arguments);this.renderer=function(value){return Ext.isDate(value)?Ext.Date.format(value,this.format):value}}},1,['nullabledatecolumn'],'component box container headercontainer gridcolumn datecolumn nullabledatecolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,gridcolumn:!0,datecolumn:!0,nullabledatecolumn:!0},['widget.nullabledatecolumn'],
0,[Common.grid.column,'NullableDateColumn'],0);
Ext.cmd.derive('Common.grid.column.StatusColumn',Ext.grid.TemplateColumn,{tpl:'\x3cspan class\x3d"cell__icon {cls}"\x3e{text}\x3c/span\x3e',defaultRenderer:function(value,meta,record){value=(meta=Ext.isString(value)?value:'')?'x-'+String(value).toLowerCase():value.css;value=Ext.apply({text:meta,cls:value});return this.tpl.apply(value)}},0,['statuscolumn'],'component box container headercontainer gridcolumn templatecolumn statuscolumn'.split(' '),{component:!0,box:!0,container:!0,headercontainer:!0,
gridcolumn:!0,templatecolumn:!0,statuscolumn:!0},['widget.statuscolumn'],0,[Common.grid.column,'StatusColumn'],0);Ext.cmd.derive('Common.grid.plugin.RowEditing',Ext.grid.plugin.RowEditing,{initEditor:function(){return new Common.grid.RowEditor(this.initEditorConfig())}},0,0,0,0,['plugin.common-rowediting'],0,[Common.grid.plugin,'RowEditing'],0);
Ext.cmd.derive('Common.service.SessionService',Ext.Base,{singleton:!0,keepAlive:function(){return Common.Request.thenable(RPC.Api.keepAliveSession)}},0,0,0,0,0,0,[Common.service,'SessionService'],0);
Ext.cmd.derive('Common.util.ErrorHandler',Ext.Base,{singleton:!0,redirectIfRequired:function(result){if(result.redirectUrl)return this.redirect(result.redirectUrl),Ext.app.Application.instance.needRedirect=!0;if(result.redirectLogin){var location=document.location;location.href=location.protocol+'//'+location.host+result.redirectLogin+'?'+(location.pathname+location.search);return Ext.app.Application.instance.needRedirect=!0}return!1},redirect:function(redirectUrl){var location=document.location;
Ext.app.Application.instance.needRedirect=!0;location.href=location.protocol+'//'+location.host+decodeURI(redirectUrl)}},0,0,0,0,0,0,[Common.util,'ErrorHandler'],0);
Ext.cmd.derive('Common.signalr.DispatcherHub',Ext.Base,{singleton:!0,config:{recreateConnectionTimeout:5E3,endpointUrl:null,loggingEnabled:!1},constructor:function(config){this.mixins.observable.constructor.call(this,config)},init:function(options){this.setLoggingEnabled(options.getIsDebug());this._initConnection();this._initProxy();this._connect(!0)},subscribeAutoUpdate:function(autoUpdateId){autoUpdateId=this._hubProxy.invoke('subscribeAutoUpdate',autoUpdateId);return this._handleResponse(autoUpdateId)},
unsubscribeAutoUpdate:function(autoUpdateId){autoUpdateId=this._hubProxy.invoke('unsubscribeAutoUpdate',autoUpdateId);return this._handleResponse(autoUpdateId)},subscribeTask:function(taskId){taskId=this._hubProxy.invoke('subscribeTask',taskId);return this._handleResponse(taskId)},unsubscribeTask:function(taskId){taskId=this._hubProxy.invoke('unsubscribeTask',taskId);return this._handleResponse(taskId)},privates:{_hubConnection:null,_hubProxy:null,_isReconnecting:!1,_initConnection:function(){var me=
this;me._hubConnection=$.hubConnection(me.getEndpointUrl(),{logging:me.getLoggingEnabled()});me._hubConnection.reconnecting(function(){!1===me._isReconnecting&&(me._isReconnecting=!0,me.fireEvent('reconnecting',me))});me._hubConnection.reconnected(function(){!0===me._isReconnecting&&(me._isReconnecting=!1,me.fireEvent('reconnected',me))});me._hubConnection.disconnected(function(){me.fireEvent('disconnected',me);!0===me._isReconnecting&&setTimeout(me._connect.bind(me,!1),me.getRecreateConnectionTimeout())})},
_initProxy:function(){this._hubProxy=this._hubConnection.createHubProxy('dispatcherHub');this._registerProxyEvent('autoUpdatesChanged');this._registerProxyEvent('fileRestoresChanged');this._registerProxyEvent('tasksCompleted')},_registerProxyEvent:function(eventName){var me=this;me._hubProxy.on(eventName,function(){var args=[eventName,me].concat(Array.prototype.slice.call(arguments));me.fireEvent.apply(me,args)})},_connect:function(isInitialConnection){var me=this;me._hubConnection.start({transport:['webSockets',
'serverSentEvents','longPolling','foreverFrame']}).done(function(connectionContext){!0===me._isReconnecting&&(me._isReconnecting=!1,me.fireEvent('reconnected',me));me.fireEvent('connected',me,connectionContext.id)}).fail(function(message){!0===isInitialConnection&&(me._isReconnecting=!0,me.fireEvent('reconnecting',me));me.fireEvent('exception',{message:message})})},_handleResponse:function(promise){var deferred=new Ext.Deferred;promise.done(function(response){!0===response.success?deferred.resolve(response.result):
Common.util.ErrorHandler.redirectIfRequired(response)||deferred.reject({reason:'server',message:response.message})}).fail(function(response){deferred.reject({reason:'network',message:'Failed to invoke hub method'})});return deferred.promise}}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Common.signalr,'DispatcherHub'],0);
Ext.cmd.derive('Common.signalr.Subscriptions',Ext.Base,{constructor:function(config){if('function'!==typeof config.invokeSubscribe)throw Error('invokeSubscribe not found.');if('function'!==typeof config.invokeUnsubscribe)throw Error('invokeUnsubscribe not found.');this._invokeSubscribe=config.invokeSubscribe;this._invokeUnsubscribe=config.invokeUnsubscribe;this._subscriptions=new Ext.util.HashMap},subscribe:function(subscriptionId,callback,isHubConnected){var deferred=new Ext.Deferred;if(this._subscriptions.containsKey(subscriptionId))return Ext.Deferred.rejected('Subscription already exists.');
this._subscriptions.add(subscriptionId,{callback:callback,isActive:!0,state:{id:this.STATE_PENDING_SUBSCRIBE_ID,promise:deferred}});this._logSubscriptionAdded(subscriptionId);this._logSubscriptionState(subscriptionId);!0===isHubConnected&&this._invokePendingSubscribe(subscriptionId);return deferred.promise},unsubscribe:function(subscriptionId,isHubConnected){var deferred=new Ext.Deferred;if(!this._subscriptions.containsKey(subscriptionId))return Ext.Deferred.rejected('Subscription does not exists.');
var subscription=this._subscriptions.get(subscriptionId);if(subscription.state.id!==this.STATE_ACTIVE_ID)return Ext.Deferred.rejected('Invalid subscription state: '+subscription.state.id);subscription.isActive=!1;subscription.state={id:this.STATE_PENDING_UNSUBSCRIBE_ID,promise:deferred};this._logSubscriptionState(subscriptionId);!0===isHubConnected&&this._invokePendingUnsubscribe(subscriptionId);return deferred.promise},invokePendingSubscriptions:function(){var me=this,pendingSubscribesIds=[],pendingUnsubscribesIds=
[];me._subscriptions.each(function(subscriptionId,subscription){subscription.state.id===me.STATE_PENDING_SUBSCRIBE_ID?pendingSubscribesIds.push(subscriptionId):subscription.state.id===me.STATE_PENDING_UNSUBSCRIBE_ID&&pendingUnsubscribesIds.push(subscriptionId)});pendingSubscribesIds.forEach(function(subscriptionId){me._invokePendingSubscribe(subscriptionId)});pendingUnsubscribesIds.forEach(function(subscriptionId){me._invokePendingUnsubscribe(subscriptionId)})},onSubscriptionReceived:function(subscriptionId,
result){this._subscriptions.containsKey(subscriptionId)&&(subscriptionId=this._subscriptions.get(subscriptionId),subscriptionId.state.id===this.STATE_ACTIVE_ID&&!0===subscriptionId.isActive&&(subscriptionId.isActive=!1,subscriptionId.callback(result)))},privates:{STATE_PENDING_SUBSCRIBE_ID:'pending-subscribe',STATE_SUBSCRIBING_ID:'subscribing',STATE_ACTIVE_ID:'active',STATE_PENDING_UNSUBSCRIBE_ID:'pending-unsubscribe',STATE_UNSUBSCRIBING_ID:'unsubscribing',_invokePendingSubscribe:function(subscriptionId){var me=
this,subscription=me._subscriptions.get(subscriptionId),promise=subscription.state.promise;subscription.state.id=me.STATE_SUBSCRIBING_ID;me._logSubscriptionState(subscriptionId);me._invokeSubscribe(subscriptionId).then(function(){subscription.state={id:me.STATE_ACTIVE_ID};me._logSubscriptionState(subscriptionId);promise.resolve()}).otherwise(function(response){'network'===response.reason?(subscription.state.id=me.STATE_PENDING_SUBSCRIBE_ID,me._logSubscriptionState(subscriptionId)):(me._subscriptions.removeByKey(subscriptionId),
me._logSubscriptionRemoved(subscriptionId),promise.reject(response.message))})},_invokePendingUnsubscribe:function(subscriptionId){var me=this,subscription=me._subscriptions.get(subscriptionId),promise=subscription.state.promise;subscription.state.id=me.STATE_UNSUBSCRIBING_ID;me._logSubscriptionState(subscriptionId);me._invokeUnsubscribe(subscriptionId).then(function(){me._subscriptions.removeByKey(subscriptionId);me._logSubscriptionRemoved(subscriptionId);promise.resolve()}).otherwise(function(response){'network'===
response.reason?(subscription.state.id=me.STATE_PENDING_UNSUBSCRIBE_ID,me._logSubscriptionState(subscriptionId)):(me._subscriptions.removeByKey(subscriptionId),me._logSubscriptionRemoved(subscriptionId),promise.reject(response.message))})},_logSubscriptionAdded:function(subscriptionId){Common.Log.debug('[Subscriptions] Subscription {0}: added',subscriptionId)},_logSubscriptionRemoved:function(subscriptionId){Common.Log.debug('[Subscriptions] Subscription {0}: removed',subscriptionId)},_logSubscriptionState:function(subscriptionId){if(this._subscriptions.containsKey(subscriptionId)){var subscription=
this._subscriptions.get(subscriptionId);Common.Log.debug('[Subscriptions] Subscription {0}: {1}',subscriptionId,subscription.state.id)}}}},1,0,0,0,0,0,[Common.signalr,'Subscriptions'],0);
Ext.cmd.derive('Common.signalr.EventManager',Ext.Base,{singleton:!0,config:{pendingSubscriptionsTimeout:5E3},constructor:function(config){this._autoUpdateSubscriptions=new Common.signalr.Subscriptions({invokeSubscribe:Common.signalr.DispatcherHub.subscribeAutoUpdate.bind(Common.signalr.DispatcherHub),invokeUnsubscribe:Common.signalr.DispatcherHub.unsubscribeAutoUpdate.bind(Common.signalr.DispatcherHub)});this._taskSubscriptions=new Common.signalr.Subscriptions({invokeSubscribe:Common.signalr.DispatcherHub.subscribeTask.bind(Common.signalr.DispatcherHub),
invokeUnsubscribe:Common.signalr.DispatcherHub.unsubscribeTask.bind(Common.signalr.DispatcherHub)});this.mixins.observable.constructor.call(this,config)},init:function(){var me=this;me._resetPendingSubscriptionsTimer();Common.signalr.DispatcherHub.on('connected',function(hub,connectionId){Common.Log.message('Hub connected. Connection id: {0}',connectionId);me._isHubConnected=!0;me._invokePendingSubscriptions();me._resetPendingSubscriptionsTimer()});Common.signalr.DispatcherHub.on('reconnecting',function(){Common.Log.message('Hub reconnecting.');
me._isHubConnected=!1;me.fireEvent('hubConnectionLost',{message:'Hub connection lost, reconnecting...',type:'error'})});Common.signalr.DispatcherHub.on('reconnected',function(){Common.Log.message('Hub reconnected.');me._isHubConnected=!0;me.fireEvent('hubConnectionRestored',{message:'Hub connection has been restored.',type:'success'})});Common.signalr.DispatcherHub.on('disconnected',function(){Common.Log.message('Hub disconnected.');me._isHubConnected=!1});Common.signalr.DispatcherHub.on('exception',
function(error){Common.Log.error('Hub error: {0}',error.message)});Common.signalr.DispatcherHub.on('autoUpdatesChanged',me._autoUpdatesChanged.bind(me));Common.signalr.DispatcherHub.on('tasksCompleted',me._onTasksCompleted.bind(me));Common.signalr.DispatcherHub.on('fileRestoresChanged',me._fileRestoresChanged.bind(me))},subscribeAutoUpdate:function(autoUpdateId,callback){return this._autoUpdateSubscriptions.subscribe(autoUpdateId,callback,this._isHubConnected)},unsubscribeAutoUpdate:function(autoUpdateId){return this._autoUpdateSubscriptions.unsubscribe(autoUpdateId,
this._isHubConnected)},subscribeTask:function(taskId,callback){return this._taskSubscriptions.subscribe(taskId,callback,this._isHubConnected)},unsubscribeTask:function(taskId){return this._taskSubscriptions.unsubscribe(taskId,this._isHubConnected)},privates:{_isHubConnected:!1,_pendingSubscribesTimer:null,_autoUpdateSubscriptions:null,_taskSubscriptions:null,_resetPendingSubscriptionsTimer:function(){this._pendingSubscribesTimer&&(clearTimeout(this._pendingSubscribesTimer),this._pendingSubscribesTimer=
null);this._pendingSubscribesTimer=setTimeout(this._onInvokePendingSubscriptions.bind(this),this.getPendingSubscriptionsTimeout())},_onInvokePendingSubscriptions:function(){!0===this._isHubConnected&&this._invokePendingSubscriptions();this._pendingSubscribesTimer=setTimeout(this._onInvokePendingSubscriptions.bind(this),this.getPendingSubscriptionsTimeout())},_invokePendingSubscriptions:function(){this._autoUpdateSubscriptions.invokePendingSubscriptions();this._taskSubscriptions.invokePendingSubscriptions()},
_autoUpdatesChanged:function(sender,autoUpdatesIds){var me=this;autoUpdatesIds.forEach(function(autoUpdateId){me._autoUpdateSubscriptions.onSubscriptionReceived(autoUpdateId,{})})},_onTasksCompleted:function(sender,taskResults){var me=this;taskResults.forEach(function(taskResult){me._taskSubscriptions.onSubscriptionReceived(taskResult.taskId,taskResult);me.fireEvent('taskcomplete',taskResult)})},_fileRestoresChanged:function(sender,fileRestores){for(sender=0;sender<fileRestores.length;sender++)this.fireEvent('fileRestoreChanged',
this,fileRestores[sender])}}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Common.signalr,'EventManager'],0);
Ext.cmd.derive('Common.signalr.EventDomain',Ext.app.EventDomain,{singleton:!0,type:'eventmanager',match:Ext.returnTrue,constructor:function(){this.callParent();this.monitor(Common.signalr.EventManager)},listen:function(listeners,controller){this.callParent([{eventmanager:listeners},controller])}},1,0,0,0,0,0,[Common.signalr,'EventDomain'],0);
Ext.cmd.derive('Common.signalr.TaskManager',Ext.Base,{singleton:!0,TASK_KEY:'taskId',constructor:function(config){var me=this;me._activeTasks={};Common.signalr.EventManager.addListener('taskcomplete',me._onTaskNotification,me);try{var storedTasks=sessionStorage.getItem('activeTasks');storedTasks&&(me._activeTasks=JSON.parse(storedTasks),Ext.Object.each(me._activeTasks,function(key,value){me.monitorTask(key,value.taskType,value)}))}catch(e){console.error('Failed to parse stored tasks JSON',e)}me.mixins.observable.constructor.call(me,
config)},destroy:function(){Common.signalr.EventManager.removeListener('taskcomplete',this._onTaskNotification,this)},executeTask:function(apiMethodName,apiMethodArguments){var me=this;apiMethodName=[RPC.Api[apiMethodName]].concat(apiMethodArguments);var deferred=new Ext.Deferred;Common.Request.thenable.apply(me,apiMethodName).then(function(response){response=response[me.TASK_KEY];Common.signalr.EventManager.subscribeTask(response,me._onTaskCompleted.bind(me,deferred,response)).then(Ext.emptyFn,function(){var args=
Array.prototype.slice.call(arguments);deferred.reject.apply(me,args)})},function(){var args=Array.prototype.slice.call(arguments);deferred.reject.apply(me,args)});return deferred.promise},waitForTask:function(taskId,taskType,taskContext){var deferred=new Ext.Deferred;taskContext=taskContext||{};taskType=taskType||'generic';Common.signalr.EventManager.subscribeTask(taskId,this._onTaskCompleted.bind(this,deferred,taskId));this._registerTask(taskId,taskType,taskContext);return deferred.promise},monitorTask:function(taskId,
taskType,taskContext){var me=this;taskContext=taskContext||{};taskType=taskType||'generic';return Common.signalr.EventManager.subscribeTask(taskId,Ext.emptyFn).then(function(){me._registerTask(taskId,taskType,taskContext);return!0})},privates:{_activeTasks:{},_onTaskCompleted:function(promise,taskId,taskResult){!0===taskResult.success?promise.resolve(taskResult):promise.reject(Error(taskResult.message));Common.signalr.EventManager.unsubscribeTask(taskId);this._unregisterTask(taskId)},_registerTask:function(taskId,
taskType,taskContext){this._activeTasks[taskId]=Ext.apply({taskType:taskType,taskId:taskId},taskContext);sessionStorage.setItem('activeTasks',JSON.stringify(this._activeTasks))},_unregisterTask:function(taskId){this._activeTasks[taskId]=null;delete this._activeTasks[taskId];sessionStorage.setItem('activeTasks',JSON.stringify(this._activeTasks))},_onTaskNotification:function(taskResult){var taskId=taskResult.taskId,taskInfo=this._activeTasks[taskId];taskInfo?!1===this.fireEvent('complete',taskInfo.taskType,
taskInfo,taskResult)&&Common.signalr.EventManager.unsubscribeTask(taskId).always(this._unregisterTask.bind(this,taskId)):(console.warn('Recieved  notification for inacive task. Id ',taskId),Common.signalr.DispatcherHub.unsubscribeTask(taskId))}}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Common.signalr,'TaskManager'],0);
Ext.cmd.derive('Common.signalr.TaskManagerDomain',Ext.app.EventDomain,{singleton:!0,type:'taskmanager',match:Ext.returnTrue,constructor:function(){this.callParent();this.monitor(Common.signalr.TaskManager)},listen:function(listeners,controller){this.callParent([{taskmanager:listeners},controller])}},1,0,0,0,0,0,[Common.signalr,'TaskManagerDomain'],0);
Ext.cmd.derive('Common.toolbar.Notification',Ext.toolbar.Toolbar,{ui:'notification',height:48,opacity:0,referenceHolder:!0,autoClose:!0,autoCloseDelay:5E3,hideCloseButton:!1,initComponent:function(){this.notificationArea=new Ext.toolbar.Item;this.items=[this.notificationArea,{xtype:'tbfill'},{xtype:'button',ui:'icon',cls:'tool',iconCls:'close-medium',hidden:this.hideCloseButton,handler:this.onClose,scope:this}];Ext.toolbar.Toolbar.prototype.initComponent.call(this)},onClose:function(){this.animate({to:{opacity:0},
remove:!0,callback:this.destroy,scope:this})},setInfo:function(text){this.setNotification(text,'info')},setError:function(text){this.setNotification(text,'error')},setSuccess:function(text){this.setNotification(text,'success')},setWarning:function(text){this.setNotification(text,'warning')},doDestroy:function(){this.notificationArea=Ext.destroy(this.notificationArea);this.cancelAutoClose();Ext.toolbar.Toolbar.prototype.doDestroy.call(this)},onRender:function(){Ext.toolbar.Toolbar.prototype.onRender.apply(this,
arguments);this.el.hover(this.onMouseEnter,this.onMouseLeave,this);this.autoClose&&!this.closeTask&&(this.closeTask=new Ext.util.DelayedTask(this.doAutoClose,this));this.animate({duration:500,from:{opacity:0},to:{opacity:1}});this.afterPositioned()},afterPositioned:function(){this.destroying||this.destroyed||!this.autoClose||this.closeTask.delay(this.autoCloseDelay)},doAutoClose:function(){if(this.mouseIsOver)this.closeOnMouseOut=!0;else this.onClose()},onMouseEnter:function(){this.mouseIsOver=!0},
onMouseLeave:function(){this.mouseIsOver=!1;this.closeOnMouseOut&&(this.closeOnMouseOut=!1,this.onClose())},cancelAutoClose:function(){var closeTask=this.closeTask;closeTask&&closeTask.cancel()},privates:{setNotification:function(text,cls){this.notificationArea.setHtml(text);this.notificationArea.setUserCls(['icon',cls])}}},0,['notificationtoolbar'],['component','box','container','toolbar','notificationtoolbar'],{component:!0,box:!0,container:!0,toolbar:!0,notificationtoolbar:!0},['widget.notificationtoolbar'],
0,[Common.toolbar,'Notification'],0);
Ext.cmd.derive('Common.toolbar.SaveNotification',Ext.toolbar.Toolbar,{ui:'notification',config:{message:'Save changes?'},height:48,opacity:0,items:[{xtype:'tbitem',html:'',margin:'0 16 0 0'},{xtype:'button',ui:'primary',text:'Save',handler:function(btn){btn=btn.up('savenotificationtoolbar');btn.fireEvent('save',btn)}}],setMessage:function(text){(arguments.callee.$previous||Ext.toolbar.Toolbar.prototype.setMessage).apply(this,arguments);this._setMessageText(text)},listeners:{afterrender:function(me){me._setMessageText(me.getMessage())},
show:function(){var me=this;me.setHeight(0);me.hideTimeout&&clearInterval(me.hideTimeout);me.showTimeout=setInterval(function(){me.setHeight(me.getHeight()+4);48<=me.getHeight()&&clearInterval(me.showTimeout)},1)},beforehide:function(){var me=this;if(me.endAnimation)return me.endAnimation=!1,!0;me.showTimeout&&clearInterval(me.showTimeout);me.hideTimeout=setInterval(function(){me.isVisible()?(me.setHeight(me.getHeight()-4),16>=me.getHeight()&&(me.endAnimation=!0,me.hide(),clearInterval(me.hideTimeout))):
clearInterval(me.hideTimeout)},1);return!1}},privates:{_setMessageText:function(text){var textItem=this.rendered?this.down('tbitem'):null;textItem&&textItem.setHtml(text)}}},0,['savenotificationtoolbar'],['component','box','container','toolbar','savenotificationtoolbar'],{component:!0,box:!0,container:!0,toolbar:!0,savenotificationtoolbar:!0},['widget.savenotificationtoolbar'],0,[Common.toolbar,'SaveNotification'],0);
Ext.cmd.derive('Common.ui.Msg',Ext.Base,{singleton:!0,_title:'Veeam Backup Enterprise Manager',setTitle:function(title){title&&(Common.ui.Msg._title=title)},success:function(config,handler){return Ext.Msg.show({title:Common.ui.Msg._title,message:Common.ui.Msg._htmlEncode('string'===typeof config?config:config.message),buttons:Ext.Msg.OK,icon:Ext.Msg.INFO,fn:handler||Ext.emptyFn})},successHtml:function(config,handler){return Ext.Msg.show({title:Common.ui.Msg._title,message:'string'===typeof config?
config:config.message,buttons:Ext.Msg.OK,icon:Ext.Msg.INFO,fn:handler||Ext.emptyFn})},error:function(config,handler,asHtml){config='string'===typeof config?config:config.message;return Ext.Msg.show({title:Common.ui.Msg._title,message:'boolean'===typeof asHtml&&asHtml?config:Common.ui.Msg._htmlEncode(config),buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR,fn:handler||Ext.emptyFn})},confirm:function(title,message,handler,scope){return Ext.Msg.show({title:Common.ui.Msg._htmlEncode(title)||Common.ui.Msg._title,
message:Common.ui.Msg._htmlEncode(message),buttons:Ext.Msg.YESNO,icon:Ext.Msg.QUESTION,fn:handler,scope:scope})},confirmHtml:function(title,message,handler,scope){return Ext.Msg.show({title:Common.ui.Msg._htmlEncode(title)||Common.ui.Msg._title,message:message,buttons:Ext.Msg.YESNO,icon:Ext.Msg.QUESTION,fn:handler,scope:scope})},warning:function(config,handler){var message='string'===typeof config?config:config.message;return Ext.Msg.show({title:Common.ui.Msg._htmlEncode(config.title)||Common.ui.Msg._title,
message:Common.ui.Msg._htmlEncode(message),buttons:Ext.Msg.OKCANCEL,icon:Ext.Msg.WARNING,fn:handler||config.fn||Ext.emptyFn}).toFront()},wait:function(message){this.mask=!0;Ext.getBody().mask(Common.ui.Msg._htmlEncode(message)||'Please wait...').setStyle('z-index',999999)},hide:function(){return this.mask?(this.mask=!1,Ext.getBody().unmask(),!0):Ext.Msg.hide()},privates:{_htmlEncode:function(value){if(!value)return value;value=value.split('\x26quot;').join('"');return Ext.util.Format.nl2br(Ext.htmlEncode(value))}}},
0,0,0,0,0,0,[Common.ui,'Msg'],0);
Ext.cmd.derive('Common.util.ActivityObserver',Ext.Base,{singleton:!0,init:function(config){this._logoutUrl=config.logoutUrl;var dom=Ext.getBody();this._mousemoveListener=dom.on('mousemove',this._registerActivity,this,{destroyable:!0,buffer:100});this._keydownListener=dom.on('keydown',this._registerActivity,this,{destroyable:!0,buffer:100});this._observeTask=Ext.TaskManager.start({run:this._observe,interval:config.sessionLiveTime/this._keepAliveCount,fireOnStart:!1,scope:this})},privates:{_keepAliveCount:3,
_logoutUrl:null,_mousemoveListener:null,_keydownListener:null,_observeTask:null,_hasActivity:!1,_inactivityCount:0,_registerActivity:function(){this._hasActivity=!0},_observe:function(){!0===this._hasActivity?(this._hasActivity=!1,this._inactivityCount=0,Common.service.SessionService.keepAlive()):(this._inactivityCount++,this._inactivityCount===this._keepAliveCount&&(this._stop(),Common.util.ErrorHandler.redirect(this._logoutUrl)))},_stop:function(){Ext.util.TaskManager.stop(this._observeTask);this._mousemoveListener.destroy();
this._keydownListener.destroy()}}},0,0,0,0,0,0,[Common.util,'ActivityObserver'],0);Ext.cmd.derive('Common.util.Constants',Ext.Base,{statics:{EMPTY_GUID:'00000000-0000-0000-0000-000000000000',WINDOWS_PATH_SEPARATOR:'\\',UNIX_PATH_SEPARATOR:'/'}},0,0,0,0,0,0,[Common.util,'Constants'],0);
Ext.cmd.derive('Common.util.DefferedMask',Ext.Base,{constructor:function(config){if(!config.element||'function'!==typeof config.element.mask||'function'!==typeof config.element.unmask)throw Error('Mask element is undefined or invalid');this._element=config.element;this._message=config.message;this._delay=config.delay||300;this._isMasked=!1},mask:function(message){var me=this;me._maskTask&&(clearTimeout(me._maskTask),me._maskTask=null);me._maskTask=setTimeout(function(){me._element.mask(message||me._message);
me._isMasked=!0},me._delay)},unmask:function(){!0===this._isMasked?this._element.unmask():clearTimeout(this._maskTask);this._isMasked=!1}},1,0,0,0,0,0,[Common.util,'DefferedMask'],0);
Ext.cmd.derive('Common.util.Format',Ext.Base,function(){return{singleton:!0,fileSize:function(){return function(size){return Ext.isNumber(size)?1024>size?0===size?'0':1===size?'1 B':size+' B':1048576>size?Math.round(10*size/1024)/10+' KB':1073741824>size?Math.round(10*size/1048576)/10+' MB':1099511627776>size?Math.round(10*size/1073741824)/10+' GB':Math.round(10*size/1099511627776)/10+' TB':null}}(),speedRate:function(){return function(rate){return 1024>rate?1===rate?'1 byte/s':rate+' bytes/s':1048576>
rate?Math.round(10*rate/1024)/10+' KB/s':1073741824>rate?Math.round(10*rate/1048576)/10+' MB/s':1099511627776>rate?Math.round(10*rate/1073741824)/10+' GB/s':Math.round(10*rate/1099511627776)/10+' TB/s'}}(),parseVersion:function(versionText){if(!versionText)throw Error('versionText');versionText=/^(\d+?)\.(\d+?)\./i.exec(versionText)||[];return{major:versionText[1],minor:versionText[2]}},compareVersion:function(version1,version2){if(!version1)throw Error('version1 not found');if(!version2)throw Error('version2 not found');
var version1Major='number'===typeof version1.major?version1.major:parseInt(version1.major),version2Major='number'===typeof version2.major?version2.major:parseInt(version2.major);if(version1Major<version2Major)return-1;if(version1Major>version2Major)return 1;version1='number'===typeof version1.minor?version1.minor:parseInt(version1.minor);version2='number'===typeof version2.minor?version2.minor:parseInt(version2.minor);return version1<version2?-1:version1>version2?1:0},centralEllipsis:function(text,
maxLength,ellipsisChar){maxLength=maxLength||50;ellipsisChar=ellipsisChar||'\x26hellip;';var prefixLength=Math.ceil(maxLength/2),suffixLength=maxLength-prefixLength;return maxLength<text.length?(prefixLength=text.substr(0,prefixLength),text=2>maxLength?'':text.substr(-suffixLength),prefixLength+ellipsisChar+text):text},elapsedTime:function(date){var now=new Date;now=new Date(now.getYear(),now.getMonth(),now.getDate());date=new Date(date.getYear(),date.getMonth(),date.getDate());date=now-date;return 0===
date?'earlier today':864E5===date?'yesterday':(date/864E5).toFixed()+' days ago'},btoa:function(str){return window.btoa(unescape(encodeURIComponent(str)))},atob:function(str){return decodeURIComponent(escape(window.atob(str)))},ltrim:function(str){return null==str?str:str.replace(/^\s+/g,'')},rtrim:function(str){return null==str?str:str.replace(/\s+$/g,'')}}},0,0,0,0,0,0,[Common.util,'Format'],0);
Ext.cmd.derive('Common.util.JsonRpcProvider',Ext.direct.RemotingProvider,{enableBuffer:!1,enableUrlEncode:'JSON-RPC',maxRetries:0,getPayload:function(transaction){var result={id:transaction.id,method:transaction.method,params:transaction.data};transaction.metadata&&(result.metadata=transaction.metadata);return result},onData:function(options,success,response){var data=Ext.decode(response.responseText);data&&data.error&&data.error.redirectUrl&&'exception'===data.type?Common.util.ErrorHandler.redirectIfRequired(data.error):
Ext.direct.RemotingProvider.prototype.onData.apply(this,arguments)},getTransaction:function(options){return options&&options.id?Ext.direct.Manager.getTransaction(options.id):null},runCallback:function(transaction,event){var errorHandler=Common.util.ErrorHandler;if(event.result&&!1===event.result.success){if(errorHandler.redirectIfRequired(event.result))return;this.isUserInteractionRequired(event.result)||Ext.GlobalEvents.fireEvent('notification',{type:'error',message:event.result.message||'Unknown error',
options:{autoCloseDelay:5E3}})}else if(event.error||'exception'===event.type){if(event.error&&errorHandler.redirectIfRequired(event.error)||'exception'===event.type&&errorHandler.redirectIfRequired(event))return;Ext.GlobalEvents.fireEvent('notification',{type:'error',message:event.message||'Unknown error',options:{autoCloseDelay:5E3}});event.result={success:!1,message:event.message}}else event.message&&(event.result={success:!1,message:event.message});Ext.direct.RemotingProvider.prototype.runCallback.call(this,
transaction,event)},isUserInteractionRequired:function(result){return['promt','prompt','prompt2','errors'].some(function(p){return result.hasOwnProperty(p)})}},0,0,0,0,['direct.jsonrpcprovider'],0,[Common.util,'JsonRpcProvider'],0);
Ext.cmd.derive('Common.util.LocalPathSynchronizer',Ext.Base,{config:{pathSeparator:null},extensionRegexp:new RegExp(/([^\\/]+)(\.[^\\/]+)$/),constructor:function(config){config=config||{};Ext.applyIf(config,{pathSeparator:Common.util.Constants.WINDOWS_PATH_SEPARATOR});this.initConfig(config)},changeFilePath:function(before,after,isPatternFile,target){return this.changePath(before,after,isPatternFile,target,!0)},changeFolderPath:function(before,after,isPatternFile,target){return this.changePath(before,
after,isPatternFile,target,!1)},privates:{changePath:function(before,after,isPatternFile,target,isTargetFile){if(this.equals(after,target))return target;var extension='';isTargetFile&&(extension=this.getExtension(target),target=this.getPathWithoutExtension(target));isPatternFile&&(before=this.getPathWithoutExtension(before),after=this.getPathWithoutExtension(after));before=this.splitPath(before);after=this.splitPath(after);var targetParts=this.splitPath(target);target='';isTargetFile&&isPatternFile?
target=this.changeName(before,after,targetParts):isTargetFile?target=targetParts.pop():isPatternFile&&(before.pop(),after.pop());isPatternFile=this.changeDirectory(before,after,targetParts);isPatternFile=this.aggregate(isPatternFile);return target?isPatternFile===this.getPathSeparator()?isPatternFile+target+extension:isPatternFile+this.getPathSeparator()+target+extension:isPatternFile},changeName:function(beforeParts,afterParts,targetParts){var targetName='';1<beforeParts.length&&1<afterParts.length&&
1<targetParts.length&&(beforeParts=beforeParts.pop(),afterParts=afterParts.pop(),targetName=targetParts.pop(),targetName=this.changeNamePart(beforeParts,afterParts,targetName));return targetName},changeNamePart:function(beforeName,afterName,targetName){return beforeName&&afterName&&targetName&&!this.equals(beforeName,afterName)&&0===targetName.indexOf(beforeName)?afterName+targetName.substring(beforeName.length):targetName},equals:function(str1,str2){return 0===str1.localeCompare(str2)},getPathWithoutExtension:function(path){return path.replace(/\.[^/.]+$/,
'')},getExtension:function(path){return(path.match(this.extensionRegexp)||[])[2]},splitPath:function(path){return path===Common.util.Constants.UNIX_PATH_SEPARATOR?[]:path.split(this.getPathSeparator())},findLastMatchedElementIndex:function(arr1,arr2){for(var index=0,lastMatchedElementIndex=-1,minCount=Math.min(arr1.length,arr2.length);index<minCount&&this.equals(arr1[index],arr2[index]);)lastMatchedElementIndex=index,index++;return lastMatchedElementIndex},aggregate:function(parts){return this.getPathSeparator()===
Common.util.UNIX_PATH_SEPARATOR&&1===parts.length?this.getPathSeparator():parts.join(this.getPathSeparator())},changeDirectory:function(beforeParts,afterParts,targetParts){if(beforeParts[0]!==targetParts[0])return targetParts;var beforeTargetIntersectionIndex=this.findLastMatchedElementIndex(beforeParts,targetParts);if(beforeTargetIntersectionIndex===beforeParts.length-1)return[].concat(afterParts).concat(targetParts.slice(beforeParts.length));var beforePartsRest=beforeParts.slice(beforeTargetIntersectionIndex+
1);if(beforePartsRest.length>afterParts.length)return targetParts;beforeParts=this.findLastMatchedElementIndex(beforeParts,afterParts);for(var afterPartRest=afterParts.slice(beforeParts+1),beforeAfterSplitIndex=-1;0<beforePartsRest.length&&-1===beforeAfterSplitIndex;){for(var i=afterPartRest.length-1,j=beforePartsRest.length-1;0<=i&&0<=j;)if(this.equals(afterPartRest[i],beforePartsRest[j])){if(0===j){beforeAfterSplitIndex=i;break}j--;i--}else i+=beforePartsRest.length-1-j-1,j=beforePartsRest.length-
1;-1===beforeAfterSplitIndex&&beforePartsRest.pop()}if(-1===beforeAfterSplitIndex)return targetParts;afterParts=afterParts.slice(0,beforeAfterSplitIndex+beforeParts+1);targetParts=targetParts.slice(beforeTargetIntersectionIndex+1);return[].concat(afterParts).concat(targetParts)}}},1,0,0,0,0,0,[Common.util,'LocalPathSynchronizer'],0);
Ext.cmd.derive('Common.ux.grid.Printer',Ext.Base,{statics:{print:function(grid,featureId){var feature,isGrouped=grid.store.isGrouped?grid.store.isGrouped():!1,groupField;isGrouped&&((feature=this.getFeature(grid,'grouping'))?groupField=feature.getGroupField():isGrouped=!1);if(grid.columnManager)var columns=grid.view.headerCt.getVisibleGridColumns();else columns=[],Ext.each(grid.columns,function(c){c.items&&0<c.items.length?columns=columns.concat(c.items.items):columns.push(c)});var clearColumns=[];
Ext.each(columns,function(column){column&&(Ext.isEmpty(column.dataIndex)||column.hidden||isGrouped?'rownumberer'===column.xtype?(column.text||(column.text='Row'),clearColumns.push(column)):'templatecolumn'===column.xtype?clearColumns.push(column):isGrouped&&column.dataIndex!==groupField&&'actioncolumn'!==column.xtype&&clearColumns.push(column):clearColumns.push(column))});columns=clearColumns;null===this.stylesheetPath&&(featureId=Ext.Loader.getPath('Common.ux.grid.Printer'),this.stylesheetPath=featureId.substring(0,
featureId.indexOf('Printer.js'))+'gridPrinterCss/print.css');featureId=Ext.create('Ext.XTemplate',this.headerTpl).apply(columns);feature=this.generateBody(grid,columns,feature);var expanderTemplate,pluginsBodyMarkup=[];Ext.each(grid.plugins,function(p){'rowexpander'==p.ptype&&(expanderTemplate=p.rowBodyTpl)});expanderTemplate&&(pluginsBodyMarkup=['\x3ctr class\x3d"{[xindex % 2 \x3d\x3d\x3d 0 ? "even" : "odd"]}"\x3e\x3ctd colspan\x3d"'+columns.length+'"\x3e','{[ this.applyTpl(values) ]}','\x3c/td\x3e\x3c/tr\x3e']);
var title=grid.title?grid.title:this.pageTitle,summaryFeature=this.getFeature(grid,'summary');featureId=['\x3c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\x3e','\x3chtml class\x3d"x-ux-grid-printer"\x3e','\x3chead\x3e','\x3cmeta content\x3d"text/html; charset\x3dUTF-8" http-equiv\x3d"Content-Type" /\x3e','\x3clink href\x3d"'+this.stylesheetPath+'" rel\x3d"stylesheet" type\x3d"text/css" /\x3e','\x3ctitle\x3e'+title+'\x3c/title\x3e',
'\x3cscript type\x3d"text/javascript"\x3e','function printOnload() {["{"]}','if ('+this.printAutomatically+') {["{"]}','window.print();','if ('+this.closeAutomaticallyAfterPrint+') {["{"]}','window.close();','{["}"]}','{["}"]}','{["}"]}','\x3c/script\x3e','\x3c/head\x3e','\x3cbody class\x3d"x-ux-grid-printer-body" onload\x3d"printOnload();"\x3e','\x3cdiv class\x3d"x-ux-grid-printer-noprint x-ux-grid-printer-links"\x3e','\x3ca class\x3d"x-ux-grid-printer-linkprint" href\x3d"javascript:void(0);" onclick\x3d"window.print();"\x3e'+
this.printLinkText+'\x3c/a\x3e','\x3ca class\x3d"x-ux-grid-printer-linkclose" href\x3d"javascript:void(0);" onclick\x3d"window.close();"\x3e'+this.closeLinkText+'\x3c/a\x3e','\x3c/div\x3e','\x3ch1\x3e'+this.mainTitle+'\x3c/h1\x3e','\x3ctable\x3e','\x3ctr\x3e',featureId,'\x3c/tr\x3e','\x3ctpl for\x3d"."\x3e','\x3ctr class\x3d"{[xindex % 2 \x3d\x3d\x3d 0 ? "even" : "odd"]}"\x3e',feature,'\x3c/tr\x3e',pluginsBodyMarkup.join(''),'{% if (this.isGrouped \x26\x26 xindex \x3e 0) break; %}','\x3c/tpl\x3e',
'\x3ctpl if\x3d"this.hasSummary"\x3e','\x3ctr\x3e','\x3ctpl for\x3d"this.columns"\x3e','{[ this.renderSummary(values, xindex) ]}','\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3c/table\x3e','\x3c/body\x3e','\x3c/html\x3e',{isGrouped:isGrouped,grid:grid,columns:columns,hasSummary:Ext.isObject(summaryFeature),summaryFeature:summaryFeature,expanderTemplate:expanderTemplate,renderColumn:function(column,value,rcd,col){var meta={align:column.align,cellIndex:col,classes:[],column:column,css:'',innerCls:'',
record:rcd,recordIndex:grid.store.indexOf?grid.store.indexOf(rcd):void 0,style:'',tdAttr:'',tdCls:'',unselectableAttr:'unselectable\x3d"on"',value:value};'templatecolumn'==column.xtype?value=column.tpl?column.tpl.apply(rcd.data):value:column.renderer&&(value=column instanceof Ext.tree.Column?column.renderer.call(column,value,meta,rcd,-1,col-1,this.grid.store,this.grid.view):column.renderer.call(this.grid,value,meta,rcd,-1,col-1,this.grid.store,this.grid.view));return this.getHtml(value,meta)},applyTpl:function(rcd){return this.expanderTemplate.apply(rcd.data)},
renderSummary:function(column,colIndex){if(this.summaryFeature.remoteRoot){var value=this.summaryFeature.summaryRecord||new this.grid.view.store.model(null,this.grid.view.id+'-summary-record');this.grid.view.store.proxy.reader.rawData&&(Ext.isArray(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot])?value.set(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot][0]):value.set(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot]));value=
value.get(column.dataIndex)}else value=this.getSummary(this.grid.store,column.summaryType,column.dataIndex,!1);if(column.summaryRenderer){if(Ext.getVersion().isLessThan('4.2.0')){var summaryObject=this.getSummaryObject(column.align);value=column.summaryRenderer.call(column,value,summaryObject,column.dataIndex)}else{var summaryRcd=this.getSummaryRecord42();summaryObject=this.getSummaryObject42(value,column,colIndex,summaryRcd);value=column.summaryRenderer.call(this.grid,value,summaryObject,summaryRcd,
-1,colIndex,this.grid.store,this.grid.view)}return this.getHtml(value,summaryObject)}column=this.getSummaryObject42(column,colIndex);return void 0===value||0==value?this.getHtml('\x26nbsp;',column):this.getHtml(value,column)},getSummaryObject:function(align){for(var summaryValues={},i=0;i<columns.length;i++){var valueObject=this.getSummary(this.grid.store,this.columns[i].summaryType,this.columns[i].dataIndex,!1);void 0!==valueObject&&(summaryValues[columns[i].id]=valueObject)}summaryValues.style=
'text-align:'+align+';';return summaryValues},getSummaryRecord42:function(){if(this.summaryFeature.remoteRoot){var summaryRecord=this.summaryFeature.summaryRecord||new this.grid.view.store.model(null,this.grid.view.id+'-summary-record');this.grid.view.store.proxy.reader.rawData&&(Ext.isArray(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot])?summaryRecord.set(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot][0]):summaryRecord.set(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot]));
return summaryRecord}summaryRecord=Ext.create(this.grid.store.model);for(var i=0;i<this.columns.length;i++){var valueObject=this.getSummary(this.grid.store,this.columns[i].summaryType,this.columns[i].dataIndex,!1);void 0!==valueObject&&summaryRecord.set(this.columns[i].dataIndex,valueObject)}return summaryRecord},getSummaryObject42:function(value,column,colIndex,rcd){return{align:column.align,cellIndex:colIndex,column:column,classes:[],css:'',innerCls:'',record:rcd,recordIndex:-1,style:'',tdAttr:'',
tdCls:'',unselectableAttr:'unselectable\x3d"on"',value:value}},getSummary:function(store,type,field,group){if(type){if(Ext.isFunction(type))return store.aggregate(type,null,group,[field]);switch(type){case 'count':return store.count(group);case 'min':return store.min(field,group);case 'max':return store.max(field,group);case 'sum':return store.sum(field,group);case 'average':return store.average(field,group);default:return group?{}:''}}},getHtml:function(value,meta){void 0==value&&(value='\x26nbsp;');
var html='\x3ctd ',tdClasses='';meta.tdCls&&(tdClasses=meta.tdCls);meta.css&&(tdClasses=0<tdClasses.length?tdClasses+(' '+meta.css):meta.css);0<tdClasses.length&&(html+='class\x3d"'+tdClasses+'"');meta.tdAttr&&(html+=' '+meta.tdAttr);html+='\x3e\x3cdiv ';meta.innerCls&&(html+='class\x3d"'+meta.innerCls+'"');html+=' style\x3d"text-align: '+meta.align+';';meta.style&&(html+=meta.style);html+='" ';meta.unselectableAttr&&(html+=meta.unselectableAttr);return html+('\x3e'+value+'\x3c/div\x3e\x3c/td\x3e')}}];
if(grid.store instanceof Ext.data.TreeStore){var records=[];grid.store.getRootNode().cascadeBy(function(node){(!node.isRoot()||grid.rootVisible)&&node.isVisible()&&records.push(node)},this)}else records=grid.store.getRange();featureId=Ext.create('Ext.XTemplate',featureId).apply(records);feature=window.open('','printgrid');feature.document.open();feature.document.write(featureId);feature.document.close()},getFeature:function(grid,featureFType){grid=grid.getView();if(grid.features)var features=grid.features;
else grid.featuresMC?features=grid.featuresMC.items:grid.normalView.featuresMC&&(features=grid.normalView.featuresMC.items);if(features)for(grid=0;grid<features.length;grid++)if('grouping'==featureFType&&('grouping'==features[grid].ftype||'groupingsummary'==features[grid].ftype)||'groupingsummary'==featureFType&&'groupingsummary'==features[grid].ftype||'summary'==featureFType&&'summary'==features[grid].ftype)return features[grid]},generateBody:function(grid,columns,feature){var groups=[],fields=grid.store.getProxy().getModel().getFields(),
hideGroupField=!0,groupingSummaryFeature=this.getFeature(grid,'groupingsummary');grid instanceof Ext.grid.Panel&&(groups=grid.store.getGroups());if(grid.store.isGrouped()&&groups&&groups.length&&feature){hideGroupField=feature.hideGroupedHeader;var groupField=feature.getGroupField();var groupColumn;Ext.each(grid.columns,function(col){col.dataIndex==groupField&&(groupColumn=col)});if(!feature||!fields||!groupField)return;hideGroupField&&(fields=fields.filter(function(item){return item.name!=groupField}));
if(Ext.getVersion().isGreaterThanOrEqual('5.0.0')){fields=[];for(hideGroupField=0;hideGroupField<groups.getCount();hideGroupField++){var groupObj=groups.getAt(hideGroupField);fields.push({name:groupObj.getGroupKey(),children:groupObj.getRange()})}groups=fields}feature=['\x3ctpl for\x3d"."\x3e','\x3ctr class\x3d"group-header"\x3e','\x3ctd colspan\x3d"{[this.colSpan]}"\x3e','{[ this.applyGroupTpl(values) ]}','\x3c/td\x3e','\x3c/tr\x3e','\x3ctpl for\x3d"children"\x3e','\x3ctr class\x3d"{[xindex % 2 \x3d\x3d\x3d 0 ? "even" : "odd"]}"\x3e',
'\x3ctpl for\x3d"this.columns"\x3e','{[ this.renderColumn(values, parent.get(values.dataIndex), parent, xindex) ]}','\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3ctpl if\x3d"this.hasSummary"\x3e','\x3ctr\x3e','\x3ctpl for\x3d"this.columns"\x3e','{[ this.renderSummary(values, xindex) ]}','\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3c/tpl\x3e',{columns:columns,groupColumn:groupColumn,colSpan:columns.length,grid:grid,groupName:'',groupTpl:feature.groupHeaderTpl,hasSummary:Ext.isObject(groupingSummaryFeature)&&
groupingSummaryFeature.showSummaryRow,summaryFeature:groupingSummaryFeature,childCount:function(c){return c.length},renderColumn:function(column,value,rcd,col){var meta={align:column.align,cellIndex:col,classes:[],column:column,css:'',innerCls:'',record:rcd,recordIndex:grid.store.indexOf(rcd),style:'',tdAttr:'',tdCls:'',unselectableAttr:'unselectable\x3d"on"',value:value};column.renderer&&'templatecolumn'!=column.xtype?value=column.renderer.call(this.grid,value,meta,rcd,-1,col-1,this.grid.store,this.grid.view):
column.renderer&&'templatecolumn'==column.xtype&&(value=column.tpl.apply(rcd.data));return this.getHtml(value,meta)},getHtml:function(value,meta){void 0==value&&(value='\x26nbsp;');var html='\x3ctd ',tdClasses='';meta.tdCls&&(tdClasses=meta.tdCls);meta.css&&(tdClasses=0<tdClasses.length?tdClasses+(' '+meta.css):meta.css);0<tdClasses.length&&(html+='class\x3d"'+tdClasses+'"');meta.tdAttr&&(html+=' '+meta.tdAttr);html+='\x3e\x3cdiv ';meta.innerCls&&(html+='class\x3d"'+meta.innerCls+'"');html+=' style\x3d"text-align: '+
meta.align+';';meta.style&&(html+=meta.style);html+='" ';meta.unselectableAttr&&(html+=meta.unselectableAttr);return html+('\x3e'+value+'\x3c/div\x3e\x3c/td\x3e')},renderSummary:function(column,colIndex){if(this.summaryFeature.remoteRoot){var value=this.summaryFeature.summaryRecord||new this.grid.view.store.model(null,this.grid.view.id+'-summary-record');this.grid.view.store.proxy.reader.rawData&&(Ext.isArray(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot])?value.set(this.getSummaryRcd(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot],
this.grid.store.groupField,this.groupName)):value.set(this.grid.view.store.proxy.reader.rawData[this.summaryFeature.remoteRoot]));value=value.get(column.dataIndex)}else value=this.getSummary(this.grid.store,column.summaryType,column.dataIndex,this.grid.store.isGrouped());Ext.isObject(value)&&(value=value[this.groupName]);if(column.summaryRenderer)if(Ext.getVersion().isLessThan('4.2.0'))value=column.summaryRenderer.call(column,value,this.getSummaryObject(column.align),column.dataIndex);else{var summaryObject=
this.getSummaryObject42(column,colIndex);value=column.summaryRenderer.call(this.grid,value,this.getSummaryObject42(column,colIndex),this.getSummaryRecord42(),-1,colIndex,this.grid.store,this.grid.view);return this.getHtml(value,summaryObject)}else if(void 0==value||0==value)value='\x26nbsp;';return'\x3ctd\x3e\x3cdiv\x3e'+value+'\x3c/div\x3e\x3c/td\x3e'},applyGroupTpl:function(rcd){this.groupName=rcd.name;rcd.groupField=this.grid.store.groupField;var meta={align:'',cellIndex:-1,classes:[],column:this.groupColumn,
css:'',innerCls:'',record:rcd.children[0],recordIndex:this.grid.store.indexOf(rcd.children[0]),style:'',tdAttr:'',tdCls:'',unselectableAttr:'unselectable\x3d"on"',value:rcd.name};rcd.columnName=this.groupColumn?this.groupColumn.text:this.groupField;rcd.groupValue=rcd.name;rcd.renderedGroupValue=this.groupColumn&&this.groupColumn.renderer?this.groupColumn.renderer.call(this.grid,rcd.name,meta,rcd.children[0],-1,-1,this.grid.store,this.grid.view):rcd.name;return this.groupTpl.apply(rcd)},getSummaryObject:function(align){for(var summaryValues=
{},i=0;i<this.columns.length;i++){var valueObject=this.getSummary(this.grid.store,this.columns[i].summaryType,this.columns[i].dataIndex,this.grid.store.isGrouped());void 0!==valueObject&&(Ext.isObject(valueObject)?summaryValues[columns[i].id]=valueObject[this.groupName]:summaryValues[columns[i].id]=valueObject)}summaryValues.style='text-align:'+align+';';return summaryValues},getSummaryRecord42:function(){for(var rcd=Ext.create(this.grid.store.model),i=0;i<this.columns.length;i++){var valueObject=
this.getSummary(this.grid.store,this.columns[i].summaryType,this.columns[i].dataIndex,this.grid.store.isGrouped());void 0!==valueObject&&(Ext.isObject(valueObject)?rcd.set(this.columns[i].dataIndex,valueObject[this.groupName]):rcd.set(this.columns[i].dataIndex,valueObject))}return rcd},getSummaryObject42:function(column,colIndex){return{align:column.align,cellIndex:colIndex,classes:[],css:'',innerCls:'',record:this.getSummaryRecord42(),recordIndex:-1,style:'',tdAttr:'',tdCls:'',unselectableAttr:'unselectable\x3d"on"',
value:'\x26#160;'}},getSummary:function(store,type,field,group){if(type){if(Ext.isFunction(type))return store.aggregate(type,null,group,[field]);switch(type){case 'count':return store.count(group);case 'min':return store.min(field,group);case 'max':return store.max(field,group);case 'sum':return store.sum(field,group);case 'average':return store.average(field,group);default:return group?{}:''}}},getSummaryRcd:function(rawDataObject,fieldName,value){if(Ext.isArray(rawDataObject))for(var i=0;i<rawDataObject.length;i++){if(rawDataObject[i][fieldName]&&
rawDataObject[i][fieldName]==value)return rawDataObject[i]}else if(rawDataObject.data[fieldName])return rawDataObject}}];groups=Ext.create('Ext.XTemplate',feature).apply(groups)}else feature=['\x3ctpl for\x3d"this.columns"\x3e','{[ this.renderColumn(values, parent.get(values.dataIndex), parent, xindex) ]}','\x3c/tpl\x3e'],groups=feature.join('');return groups},stylesheetPath:null,printAutomatically:!1,closeAutomaticallyAfterPrint:!1,pageTitle:'Print View',mainTitle:'',printLinkText:'Print',closeLinkText:'Close',
headerTpl:['\x3ctpl for\x3d"."\x3e','\x3cth style\x3d"text-align: {align}"\x3e{text}\x3c/th\x3e','\x3c/tpl\x3e'],bodyTpl:['\x3ctpl for\x3d"columns"\x3e','{[ this.renderColumn(values, parent.get(values.dataIndex), parent, xindex) ]}','\x3c/tpl\x3e']}},0,0,0,0,0,0,[Common.ux.grid,'Printer'],0);
Ext.cmd.derive('Common.view.periods.ux.DragSelector',Ext.Base,{init:function(dataview){var scroller=dataview.getScrollable();scroller&&(scroller.getX()||scroller.getY())&&(Ext.supports.PointerEvents||Ext.supports.MSPointerEvents)||(this.dataview=dataview,dataview.mon(dataview,{beforecontainerclick:this.cancelClick,scope:this,render:{fn:this.onRender,scope:this,single:!0}}))},onRender:function(){this.tracker=Ext.create('Ext.dd.DragTracker',{dataview:this.dataview,el:this.dataview.el,onBeforeStart:this.onBeforeStart,
onStart:this.onStart.bind(this),onDrag:this.onDrag.bind(this),onEnd:Ext.Function.createDelayed(this.onEnd,100,this)});this.dragRegion=Ext.create('Ext.util.Region')},onBeforeStart:function(e){return e.target===this.dataview.getEl().dom},onStart:function(e){e=this.dataview;this.dragging=!0;this.fillRegions();this.getProxy().show();e.getSelectionModel().deselectAll()},cancelClick:function(){return!this.dragging},onDrag:function(e){e=this.dataview.getSelectionModel();var dragRegion=this.dragRegion,bodyRegion=
this.bodyRegion,proxy=this.getProxy(),regions=this.regions,length=regions.length,startXY=this.tracker.startXY,currentXY=this.tracker.getXY(),minX=Math.min(startXY[0],currentXY[0]),minY=Math.min(startXY[1],currentXY[1]);Ext.apply(dragRegion,{top:minY,left:minX,right:minX+Math.abs(startXY[0]-currentXY[0]),bottom:minY+Math.abs(startXY[1]-currentXY[1])});dragRegion.constrainTo(bodyRegion);proxy.setBox(dragRegion);for(bodyRegion=0;bodyRegion<length;bodyRegion++)proxy=regions[bodyRegion],(proxy=dragRegion.intersect(proxy))?
e.select(bodyRegion,!0):e.deselect(bodyRegion)},onEnd:function(e){this.dataview.getSelectionModel();this.dragging=!1;this.getProxy().hide()},getProxy:function(){this.proxy||(this.proxy=this.dataview.getEl().createChild({tag:'div',cls:'x-view-selector'}));return this.proxy},fillRegions:function(){var dataview=this.dataview,regions=this.regions=[];dataview.all.each(function(node){regions.push(node.getRegion())});this.bodyRegion=dataview.getEl().getRegion()}},0,0,0,0,0,0,[Common.view.periods.ux,'DragSelector'],
0);
Ext.cmd.derive('Common.view.periods.DragSelector',Common.view.periods.ux.DragSelector,{onBeforeStart:function(e){return!0},onRender:function(){Common.view.periods.ux.DragSelector.prototype.onRender.apply(this,arguments);this.proxy=null},onDrag:function(e){this.dataview.getSelectionModel();e=this.dragRegion;var bodyRegion=this.bodyRegion,proxy=this.getProxy(),regions=this.regions,length=regions.length,startXY=this.tracker.startXY,currentXY=this.tracker.getXY(),minX=Math.min(startXY[0],currentXY[0]),minY=
Math.min(startXY[1],currentXY[1]),selection=[];Ext.apply(e,{top:minY,left:minX,right:minX+Math.abs(startXY[0]-currentXY[0]),bottom:minY+Math.abs(startXY[1]-currentXY[1])});e.constrainTo(bodyRegion);proxy.setBox(e);for(bodyRegion=0;bodyRegion<length;bodyRegion++)if(minX=regions[bodyRegion],proxy=Ext.get(this.dataview.getNode(bodyRegion)),startXY=Number(proxy.getAttribute('data-day-index')),currentXY=Number(proxy.getAttribute('data-hour-index')),minX=e.intersect(minX)){proxy.addCls(this.dataview.self.HIGHLIGHTED_ITEM_CLS);
selection.push(bodyRegion);if(void 0===minDayIndex||minDayIndex>startXY)var minDayIndex=startXY;if(void 0===maxDayIndex||maxDayIndex<startXY)var maxDayIndex=startXY;if(void 0===minHourIndex||minHourIndex>currentXY)var minHourIndex=currentXY;if(void 0===maxHourIndex||maxHourIndex<currentXY)var maxHourIndex=currentXY}else proxy.removeCls(this.dataview.self.HIGHLIGHTED_ITEM_CLS);this.dataview.highlightGrid(minDayIndex,maxDayIndex,minHourIndex,maxHourIndex);this.lastSelection=selection},onEnd:function(e){var me=
this,lastSelection=me.lastSelection||[],store=me.dataview.getStore(),selectedRecords=[],selModel=me.dataview.getSelectionModel();Common.view.periods.ux.DragSelector.prototype.onEnd.apply(this,arguments);Ext.each(lastSelection,function(i){var nodeEl=Ext.get(me.dataview.getNode(i));i=store.getAt(i);nodeEl.removeCls(me.dataview.self.HIGHLIGHTED_ITEM_CLS);selectedRecords.push(i)});selectedRecords.length&&selModel.select(selectedRecords,!0);me.dataview.highlightGrid();me.lastSelection=null}},0,0,0,0,0,
0,[Common.view.periods,'DragSelector'],0);
Ext.cmd.derive('Common.view.periods.PeriodsDataView',Ext.view.View,{statics:{HIGHLIGHTED_ITEM_CLS:'highlighted-item'},initComponent:function(){Ext.view.View.prototype.initComponent.call(this);this.mixins.dragSelector.init(this);this.enableDeselection=!1},selectionModel:{selType:'dataviewmodel',mode:'SIMPLE'},flex:1,border:1,cls:'period-data-view',itemSelector:'td.item',tpl:new Ext.XTemplate('\x3ctable\x3e','\x3ctr class\x3d"am-pm"\x3e\x3ctd\x3e\x3c/td\x3e\x3ctd colspan\x3d"12"\x3eAM\x3c/td\x3e\x3ctd colspan\x3d"12"\x3ePM\x3c/td\x3e\x3c/tr\x3e','\x3ctr class\x3d"numbers-header"\x3e\x3ctd\x3e\x3c/td\x3e',
'\x3ctd data-hour-index\x3d"0" class\x3d"hour-cell hour-0"\x3e\x3cdiv class\x3d"two-numbers night"\x3e\x3cstrong\x3e12\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"1" class\x3d"hour-cell hour-1"\x3e\x3cdiv\x3e1\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"2" class\x3d"hour-cell hour-2"\x3e\x3cdiv\x3e\x3cstrong\x3e2\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"3" class\x3d"hour-cell hour-3"\x3e\x3cdiv\x3e3\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"4" class\x3d"hour-cell hour-4"\x3e\x3cdiv\x3e\x3cstrong\x3e4\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e',
'\x3ctd data-hour-index\x3d"5" class\x3d"hour-cell hour-5"\x3e\x3cdiv\x3e5\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"6" class\x3d"hour-cell hour-6"\x3e\x3cdiv\x3e\x3cstrong\x3e6\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"7" class\x3d"hour-cell hour-7"\x3e\x3cdiv\x3e7\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"8" class\x3d"hour-cell hour-8"\x3e\x3cdiv\x3e\x3cstrong\x3e8\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"9" class\x3d"hour-cell hour-9"\x3e\x3cdiv\x3e9\x3c/div\x3e\x3c/td\x3e',
'\x3ctd data-hour-index\x3d"10" class\x3d"hour-cell hour-10"\x3e\x3cdiv class\x3d"two-numbers"\x3e\x3cstrong\x3e10\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"11" class\x3d"hour-cell hour-11"\x3e\x3cdiv class\x3d"two-numbers"\x3e11\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"12" class\x3d"hour-cell hour-12"\x3e\x3cdiv class\x3d"two-numbers day"\x3e\x3cstrong\x3e12\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"13" class\x3d"hour-cell hour-13"\x3e\x3cdiv\x3e1\x3c/div\x3e\x3c/td\x3e',
'\x3ctd data-hour-index\x3d"14" class\x3d"hour-cell hour-14"\x3e\x3cdiv\x3e\x3cstrong\x3e2\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"15" class\x3d"hour-cell hour-15"\x3e\x3cdiv\x3e3\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"16" class\x3d"hour-cell hour-16"\x3e\x3cdiv\x3e\x3cstrong\x3e4\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"17" class\x3d"hour-cell hour-17"\x3e\x3cdiv\x3e5\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"18" class\x3d"hour-cell hour-18"\x3e\x3cdiv\x3e\x3cstrong\x3e6\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e',
'\x3ctd data-hour-index\x3d"19" class\x3d"hour-cell hour-19"\x3e\x3cdiv\x3e7\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"20" class\x3d"hour-cell hour-20"\x3e\x3cdiv\x3e\x3cstrong\x3e8\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"21" class\x3d"hour-cell hour-21"\x3e\x3cdiv\x3e9\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"22" class\x3d"hour-cell hour-22"\x3e\x3cdiv class\x3d"two-numbers"\x3e\x3cstrong\x3e10\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctd data-hour-index\x3d"23" class\x3d"hour-cell hour-23"\x3e\x3cdiv class\x3d"two-numbers"\x3e11\x3c/div\x3e\x3c/td\x3e',
'\x3ctd data-hour-index\x3d"24" class\x3d"hour-24"\x3e\x3cdiv class\x3d"two-numbers night"\x3e\x3cstrong\x3e12\x3c/strong\x3e\x3c/div\x3e\x3c/td\x3e','\x3ctpl for\x3d"."\x3e','\x3ctpl if\x3d"newLine"\x3e','\x3c/tr\x3e','\x3ctr\x3e\x3ctd class\x3d"day-name-cell day-{dayIndex}" data-day-index\x3d"{dayIndex}"\x3e{day}\x3c/td\x3e','\x3c/tpl\x3e','\x3ctd class\x3d"item" data-day-index\x3d"{dayIndex}" data-hour-index\x3d"{index}"\x3e\x3c/td\x3e','\x3c/tpl\x3e','\x3c/tr\x3e','\x3c/table\x3e'),listeners:{beforedeselect:function(selModel){return selModel.view.enableDeselection}},
updateDragSelector:function(){this.mixins.dragSelector.proxy=null},highlightGrid:function(minDayIndex,maxDayIndex,minHourIndex,maxHourIndex){var me=this,dataViewEl=me.getEl(),rows=dataViewEl.query('.day-name-cell',!1);dataViewEl=dataViewEl.query('.numbers-header td.hour-cell',!1);Ext.each(rows,function(cellEl,index){!Ext.isNumber(minDayIndex)||!Ext.isNumber(maxDayIndex)||index<minDayIndex||index>maxDayIndex?cellEl.removeCls(me.self.HIGHLIGHTED_ITEM_CLS):cellEl.addCls(me.self.HIGHLIGHTED_ITEM_CLS)});
Ext.each(dataViewEl,function(cellEl,index){!Ext.isNumber(minHourIndex)||!Ext.isNumber(maxHourIndex)||index<minHourIndex||index>maxHourIndex?cellEl.removeCls(me.self.HIGHLIGHTED_ITEM_CLS):cellEl.addCls(me.self.HIGHLIGHTED_ITEM_CLS)})},highlightRow:function(rowIndex){if(this.rendered){var start=24*rowIndex;for(rowIndex=start+23;start<=rowIndex;start++){var nodeEl=Ext.get(this.getNode(start));nodeEl&&nodeEl.addCls(this.self.HIGHLIGHTED_ITEM_CLS)}}},highlightCol:function(colIndex){if(this.rendered)for(var i=
0;7>i;i++){var nodeEl=Ext.get(this.getNode(24*i+colIndex));nodeEl&&nodeEl.addCls(this.self.HIGHLIGHTED_ITEM_CLS)}},clearHighlight:function(){if(this.rendered)for(var i=0;168>i;i++){var nodeEl=Ext.get(this.getNode(i));nodeEl&&nodeEl.removeCls(this.self.HIGHLIGHTED_ITEM_CLS)}},selectRow:function(rowIndex){var start=24*rowIndex;rowIndex=start+23;for(var selection=[];start<=rowIndex;start++){var record=this.getStore().getAt(start);record&&selection.push(record)}this.getSelectionModel().select(selection,
!0)},selectCol:function(colIndex){for(var selection=[],i=0;7>i;i++){var currentIndex=24*i+colIndex;(currentIndex=this.getStore().getAt(currentIndex))&&selection.push(currentIndex)}this.getSelectionModel().select(selection,!0)}},0,['periodsdataview'],['component','box','dataview','periodsdataview'],{component:!0,box:!0,dataview:!0,periodsdataview:!0},['widget.periodsdataview'],[['dragSelector',Common.view.periods.DragSelector]],[Common.view.periods,'PeriodsDataView'],0);
Ext.cmd.derive('Common.widget.Link',Ext.Component,{defaultListenerScope:!0,publishes:{anchorText:!0,href:!0},config:{anchorText:'',href:'#',alwaysEnabled:!0},onClick:function(ev){ev.stopEvent();if(this.disabled)return!1;if('undefined'!=typeof this.handler){var c=this.lookupController(),handler=this.handler;Ext.isFunction(handler)||c&&(handler=c[this.handler]);if(Ext.isFunction(handler))handler.apply(this.scope||c,Array.prototype.slice.call(arguments));else throw new ReferenceError('Handler is not a function');
}},listeners:{click:{element:'el',fn:'onClick'}},renderTpl:new Ext.XTemplate('\x3ca id\x3d"{id}" cls\x3d"{componentCls}" href\x3d"{href}"\x3e{[ values.tpl.apply(values) ]}\x3c/a\x3e'),tpl:new Ext.XTemplate('{anchorText:htmlEncode}'),initRenderData:function(){var data=Ext.Component.prototype.initRenderData.call(this);return Ext.apply(data,{anchorText:this.getAnchorText(),href:this.getHref(),tpl:this.tpl})},updateAnchorText:function(newText){this.update({anchorText:newText})},onDestroy:function(){Ext.destroy(this.el);
null==this.el}},0,['common.link','linkbutton'],['component','box','common.link','linkbutton'],{component:!0,box:!0,'common.link':!0,linkbutton:!0},['widget.common.link','widget.linkbutton'],0,[Common.widget,'Link'],0);
Ext.cmd.derive('ToolKit.components.TitleBar',Ext.container.Container,{baseCls:'x-title-bar',dock:'top',initComponent:function(){var titles=this.titles,buttons=this.buttons;this.items=[];if(Ext.isArray(titles)&&titles.length||Ext.isArray(buttons)&&buttons.length){var titleBarWrapConfig={xtype:'container',cls:'x-title-bar-wrap',layout:{type:'hbox',align:'middle'},items:[]},titleBarTextConfig={xtype:'toolbar',vertical:!0,ui:'title',flex:1,layout:{align:'stretch'}},titleBarButtonsConfig={xtype:'toolbar',
vertical:!1,ui:'buttons',defaultButtonUI:'text-toolbar',layout:{align:'middle',pack:'end'}};if(Ext.isArray(titles)&&titles.length){var mappedTitles=Ext.Array.map(titles,function(item){var result={xtype:'tbtext',ui:'title'};Ext.isString(item)?result.html=Ext.String.trim(item):Ext.isObject(item)?Ext.applyIf(result,item):Ext.Error.raise({msg:'Titles in TitleBar must be an object or string!',option:titles});return result});titleBarWrapConfig.items.push(Ext.applyIf(titleBarTextConfig,{items:mappedTitles}))}else titleBarWrapConfig.items.push({xtype:'tbfill'});
Ext.isArray(buttons)&&buttons.length&&titleBarWrapConfig.items.push(Ext.applyIf(titleBarButtonsConfig,{items:buttons}));this.items.push(titleBarWrapConfig)}Ext.container.Container.prototype.initComponent.call(this)}},0,['toolkit.titlebar'],['component','box','container','toolkit.titlebar'],{component:!0,box:!0,container:!0,'toolkit.titlebar':!0},['widget.toolkit.titlebar'],0,[ToolKit.components,'TitleBar'],0);
Ext.cmd.derive('ToolKit.utils.Object',Ext.Base,{statics:{deleteNull:function(obj){Ext.Object.each(obj,function(key,value,o){null===value?delete o[key]:Ext.isObject(value)&&ToolKit.utils.Object.deleteNull(value)})},getPath:function(obj,path,notation){return path.split(notation||'.').reduce(function(prev,cur){return void 0!==prev&&null!==prev?prev[cur]:void 0},obj)},setPath:function(obj,path,value,notation){path.split(notation||'.').reduce(function(prev,cur,idx,arr){if(idx===arr.length-1)return prev[cur]=
value;idx=prev[cur];return'[object Object]'===Object.prototype.toString.call(idx)&&idx?prev[cur]:prev[cur]={}},obj);return obj}}},0,0,0,0,0,0,[ToolKit.utils,'Object'],0);
Ext.cmd.derive('ToolKit.wizard.Card',Ext.form.Panel,{disalowed:!1,trackResetOnLoad:!0,initComponent:function(){this.defaults=Ext.apply({xtype:'textfield'},this.defaults);Ext.form.Panel.prototype.initComponent.call(this)},getCustomData:function(commonData){var values=this.getForm().getValues(!1,!1,!1,!0,!0),obj={};Ext.Object.each(values,function(key,value,myself){ToolKit.utils.Object.setPath(obj,key,value)});return Ext.Object.merge(commonData,obj)},setCustomData:Ext.emptyFn,customValidate:function(){return this.getForm().isValid()},
serverValidate:function(callback,commonData){this.validationFieldCount=0;this.serverValidationResult=!0;var panel=this,cb=function(success){success||(panel.serverValidationResult=!1);panel.validationFieldCount--;0==panel.validationFieldCount&&callback.call(panel,panel.serverValidationResult)};this.getForm().getFields().each(function(field,index,coll){Ext.isFunction(field.serverValidate)&&field.isDirty()&&(panel.validationFieldCount++,panel.isServerValidateExec=!0,field.serverValidate(cb))});panel.isServerValidateExec||
callback.call(panel,!0)},completeEdit:function(){this.getForm().getFields().each(function(field,index,fields){field.completeEdit()})}},0,['toolkit.wizard.Card'],'component box container panel form toolkit.wizard.Card'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0},['widget.toolkit.wizard.Card'],0,[ToolKit.wizard,'Card'],0);
Ext.cmd.derive('ToolKit.wizard.FormCard',ToolKit.wizard.Card,{trackResetOnLoad:!0,setCustomData:function(commonData){this.getForm().getFields().each(function(field,index,all){if(index=field.getName())index=ToolKit.utils.Object.getPath(commonData,index),Ext.isEmpty(index,!0)||field.setValue(index)})}},0,['toolkit.wizard.FormCard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0},
['widget.toolkit.wizard.FormCard'],0,[ToolKit.wizard,'FormCard'],0);
Ext.cmd.derive('ToolKit.wizard.Wizard',Ext.window.Window,{controller:'toolkit.WizardController',ui:'wizard',layout:'fit',modal:!0,resizable:!1,constrain:!0,width:600,isEdit:!1,defaultCommonData:{},defaultBodyPadding:'16px',autoClose:!0,hideCancelButton:!1,showSaveButtonOnNew:!1,hideNextButtonOnSummary:!1,disableNextButtonOnSummary:!0,hideSaveButton:!1,closeMe:!1,tabWidth:200,prevButtonText:'Back',nextButtonText:'Next',saveButtonText:'Finish',cancelButtonText:'Cancel',initComponent:function(){this.isEdit&&
this.commonData&&ToolKit.utils.Object.deleteNull(this.commonData);this.commonData=Ext.Object.merge(Ext.clone(this.defaultCommonData),this.commonData);this.initialCommonData=Ext.clone(this.commonData);var me=this,wizardItems=this.items;this.isEdit||(this.hideNextButtonOnSummary=!0);this.isEdit||this.showSaveButtonOnNew||(this.hideSaveButton=!0);this.items=[{xtype:'tabpanel',ui:'wizard',activeTab:null,items:wizardItems,reference:'tabPanel',tabPosition:'left',tabRotation:0,maxTabWidth:this.tabWidth,
minTabWidth:this.tabWidth,deferredRender:!1,defaults:{bodyPadding:this.defaultBodyPadding,textAlign:'left',wizard:this},listeners:{beforetabchange:'beforeCardChange'}}];this.fbar=this.fbar||[];Ext.Array.insert(this.fbar,0,[{ui:'secondary',handler:'prevHandler',reference:'prevBtn',text:this.prevButtonText},{ui:'primary',handler:'nextHandler',reference:'nextBtn',text:this.nextButtonText},{ui:'primary',handler:'finishHandler',reference:'saveBtn',text:this.saveButtonText,hidden:this.hideSaveButton},{ui:'alternate',
handler:function(){me.close()},text:this.cancelButtonText,hidden:this.hideCancelButton}]);Ext.window.Window.prototype.initComponent.call(this);this.updateCardsState()},listeners:{beforeclose:'beforeClose',show:'onShow'},getCard:function(name){return this.items.first().getComponent(name)},getCommonDataCopy:function(){return Ext.clone(this.commonData)},updateCardsState:function(needGetCustomData){var controller=this.getController(),data=this.getCommonDataCopy();needGetCustomData&&(needGetCustomData=
controller.getActiveCard())&&Ext.isFunction(needGetCustomData.getCustomData)&&(data=needGetCustomData.getCustomData(data));controller.updateaAilabilityCards(data);controller.updateVisibilityCards(data)},insertCard:function(cards,before){var tabPanel=this.lookupReference('tabPanel'),items=tabPanel.items;var index=this.getController();Ext.isEmpty(before)?index=items.getCount()-1:Ext.isNumber(before)?index=before:(before=Ext.isString(before)?this.getCard(before):before,index=index.getCardIndex(before));
tabPanel.insert(index,cards)},removeCard:function(card){Ext.isString(card)&&(card=this.getCard(card));this.lookupReference('tabPanel').remove(card)},closeWithoutConfirm:function(){this.closeMe=!0;this.close()}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[ToolKit.wizard,'Wizard'],0);
Ext.cmd.derive('ToolKit.wizard.WizardController',Ext.app.ViewController,{allowedQuery:':not(tabbar):not(:hiddenTab)[disallowed!\x3dtrue]',allowedCard:function(card){return!card.disallowed&&!card.tab.hidden},getAllCards:function(){return this.lookupReference('tabPanel').items},updateVisibilityCards:function(data){var controller=this,cardsToHide=controller.getCardsToHide(data);this.getAllCards().each(function(card){var needHide=Ext.Array.contains(cardsToHide,card);controller.setHiddenCard(card,needHide)});
controller.updateTabsState()},setHiddenCard:function(card,hidden){hidden!=card.tab.hidden&&(card.tab.setHidden(hidden),hidden?card.fireEvent('hideCard',card):card.fireEvent('showCard',card))},getCardsToHide:function(data){var result=[];this.getAllCards().each(function(card){Ext.isFunction(card.computeHidden)&&card.computeHidden(data)&&result.push(card)});return result},updateaAilabilityCards:function(data){var controller=this,cardsToDisallow=controller.getCardsToDisallow(data);this.getAllCards().each(function(card){var needDisallow=
Ext.Array.contains(cardsToDisallow,card);controller.setDisallowedCard(card,needDisallow)})},setDisallowedCard:function(card,disallowed){card.disallowed=disallowed;card.setDisabled(disallowed)},getCardsToDisallow:function(data){var result=[];this.getAllCards().each(function(card){Ext.isFunction(card.computeDisallowed)&&card.computeDisallowed(data)&&result.push(card)});return result},onShow:function(win){this.setActiveCard(this.getFirstAllowed())},prevHandler:function(btn){this.lookupReference('tabPanel');
btn=this.getActiveCard().previousSibling(this.allowedQuery);null!=btn&&this.setActiveCard(btn)},nextHandler:function(btn){btn=this.getActiveCard().nextSibling(this.allowedQuery);null!=btn?this.setActiveCard(btn):this.finish()},finishHandler:function(btn){this.finish()},finish:function(currentCard){currentCard=this.getActiveCard();this.checkCard(currentCard,function(card,success){success&&(this.applyCardData(currentCard),this.checkCards(currentCard,null,function(invalidCard){null==invalidCard?this.action(this.getView().getCommonDataCopy()):
this.activateInvalidCard(invalidCard)}))})},beforeAction:function(){this.lookupReference('nextBtn').setDisabled(!0);this.lookupReference('saveBtn').setDisabled(!0)},afterAction:function(){this.lookupReference('nextBtn').setDisabled(!1);this.lookupReference('saveBtn').setDisabled(!1)},getActiveCard:function(){return this.lookupReference('tabPanel').getActiveTab()},getCardIndex:function(card){return this.lookupReference('tabPanel').items.indexOf(card)},setActiveCard:function(card){void 0==this.getActiveCard()&&
card.enable();this.lookupReference('tabPanel').setActiveTab(card)},getFirstAllowed:function(){return this.lookupReference('tabPanel').child(this.allowedQuery)},getLastAllowed:function(){var last=this.getAllCards().last();return this.allowedCard(last)?last:last.previousSibling(this.allowedQuery)},updateTabsState:function(){if(this.lastActive&&!this.getView().isEdit){for(var cards=this.getAllCards(),current=this.getFirstAllowed(),lastActiveIndex=cards.indexOf(this.lastActive);current;)current.setDisabled(cards.indexOf(current)>
lastActiveIndex),current=current.nextSibling(this.allowedQuery);(cards=this.lastActive.nextSibling(this.allowedQuery))&&cards.disabled&&cards.enable()}},setDataToCard:function(card,callback){if(Ext.isFunction(card.setCustomDataAsync)){Ext.isFunction(callback)||(callback=Ext.emptyFn);var view=this.getView();card.setCustomDataAsync(view.getCommonDataCopy(),callback)}else Ext.isFunction(card.setCustomData)&&(view=this.getView(),card.setCustomData(view.getCommonDataCopy()),Ext.isFunction(callback)&&callback.call(this))},
applyCardData:function(card){if(card&&Ext.isFunction(card.getCustomData)){var view=this.getView();view.commonData=card.getCustomData(view.getCommonDataCopy())}},activateCard:function(card){var wizard=this.getView(),tabPanel=this.lookupReference('tabPanel');if(card&&tabPanel.getActiveTab()!==card){tabPanel.suspendEvent('beforetabchange');tabPanel.setActiveTab(card);tabPanel.resumeEvent('beforetabchange');if(!this.lastActive||tabPanel.items.indexOf(card)>tabPanel.items.indexOf(this.lastActive))this.lastActive=
card;this.updateTabsState();tabPanel=this.lookupReference('prevBtn');var nextBtn=this.lookupReference('nextBtn'),saveBtn=this.lookupReference('saveBtn'),isFirst=card===this.getFirstAllowed();card=card===this.getLastAllowed();tabPanel.setHidden(isFirst);nextBtn.setHidden(card&&wizard.hideNextButtonOnSummary);nextBtn.setDisabled(card&&wizard.disableNextButtonOnSummary);saveBtn.setHidden(wizard.hideSaveButton&&!card);saveBtn.setDisabled(!wizard.isEdit&&!card)}},activateInvalidCard:function(card){var needValidate=
!card.rendered;this.activateCard(card);needValidate&&card.customValidate()},continueCardChange:function(newCard){this.activateCard(newCard);this.setDataToCard(newCard)},checkCard:function(card,callback,cbParams){var controller=this,execCallback=function(success){callback.call(controller,card,success,cbParams)},setDataCallback=function(){var isValid=!0;Ext.isFunction(card.customValidate)&&(isValid=card.customValidate());isValid&&Ext.isFunction(card.serverValidate)?card.serverValidate(function(success){void 0==
success&&(success=!0);execCallback(success)}):execCallback(isValid)};Ext.isFunction(card.customValidate)||Ext.isFunction(card.serverValidate)?card!=controller.getActiveCard()?this.setDataToCard(card,setDataCallback):setDataCallback():execCallback(!0)},checkCards:function(card,toCard,callback){toCard&&this.getCardIndex(card)>=this.getCardIndex(toCard)?callback.call(this,null):null!=card?this.checkCard(card,this.checkCards_callback,[toCard,callback]):callback.call(this,null)},checkCards_callback:function(card,
isValid,params){var toCard=params[0];params=params[1];isValid?(card=card.nextSibling(this.allowedQuery),this.checkCards(card,toCard,params)):params.call(this,card)},closeAfterFinish:function(){var view=this.getView();view&&(view.closeMe=!0,view.close())},beforeCardChange:function(tabPanel,newCard,oldCard){this.getView();var callback=function(invalidCard){oldCard&&this.applyCardData(oldCard);invalidCard?this.activateInvalidCard(invalidCard):this.continueCardChange(newCard)};if(oldCard&&this.getCardIndex(newCard)>
this.getCardIndex(oldCard))return this.checkCard(oldCard,function(card,success){success&&(this.allowedCard(newCard)||(newCard=newCard.nextSibling(this.allowedQuery)),this.checkCards(oldCard,newCard,callback))}),!1;callback.call(this,null);return!0},beforeClose:function(win,eOpts){if(win.closeMe)return win.closeMe=!1,!0;Ext.Msg.confirm('Close Wizard','All changes will be lost. Do you want to proceed?',function(btn){'yes'===btn&&(win.closeMe=!0,win.close())});return!1},action:function(){var view=this.getView(),
data=view.getCommonDataCopy();view.fireEvent('finish',view,data);view.autoClose&&view.closeWithoutConfirm()}},0,0,0,0,['controller.toolkit.WizardController'],0,[ToolKit.wizard,'WizardController'],0);Ext.ComponentQuery.pseudos.hiddenTab=function(items){for(var i=0,l=items.length,c,result=[];i<l;i++){var tab=(c=items[i]).tab;tab&&tab.hidden&&result.push(c)}return result};
Ext.cmd.derive('MainApp.model.AppMode',Ext.Base,function(){return{statics:{FULL:'FULL',VCLOUD:'VCLOUD',VSPHERE:'VSPHERE'}}},0,0,0,0,0,0,[MainApp.model,'AppMode'],0);Ext.cmd.derive('MainApp.model.LicenseType',Ext.Base,{statics:{STANDART:1,ENTERPRISE:2,ENTERPRISE_PLUS:3}},0,0,0,0,0,0,[MainApp.model,'LicenseType'],0);
Ext.cmd.derive('MainApp.helper.AppHelper',Ext.Base,{statics:{getLogoCssClassName:function(licType){switch(licType){case MainApp.model.LicenseType.STANDART:return'logo--standart';case MainApp.model.LicenseType.ENTERPRISE:return'logo--enterprise';case MainApp.model.LicenseType.ENTERPRISE_PLUS:return'logo--enterpriseplus';default:return'logo--standart'}},helpLinks:{_default:'167','!configuration/backup_servers':'104','!configuration/vcenter_servers':'218','!configuration/search_servers':'103','!configuration/sessions':'109',
'!configuration/roles':'215','!configuration/settings':'114','!configuration/licensing/backup_and_replication':'164','!configuration/licensing/windows_agent':'164','!configuration/licensing/linux_agent':'164','!configuration/notifications':'112','!configuration/key_management':'134','!configuration/about':'167','!configuration/selfservice':'195','!dashboard':'165','!files':'181','!reports':'203','!vms':'205','!jobs':'204','!items':'206','!requests':'207'},variables:{title:{FULL:'Veeam Backup Enterprise Manager',
VCLOUD:'SELF-SERVICE PORTAL',VSPHERE:'SELF-SERVICE PORTAL'}}},config:{mode:null},constructor:function(config){this.initConfig(config)},isEnterpriseLicense:function(){return 2<=MainApp.app.getUser().getLicenseType()},isEnterprisePlusLicense:function(){return 3==MainApp.app.getUser().getLicenseType()},getLicenseType:function(){return MainApp.app.getUser().getLicenseType()},getLink:function(section){var dictionary=MainApp.helper.AppHelper.helpLinks,rel=Object.keys(dictionary).filter(function(key){return-1!==
section.indexOf(key)}).reduce(function(prev,current){return dictionary[current]},null);rel=rel||dictionary._default;return'https://redirect.veeam.com/helpem95u4topicid\x3d'+rel},getDefaultTitle:function(){return this._getVariable('title')},isFullAppMode:function(){return MainApp.app.mode===MainApp.model.AppMode.FULL},privates:{_getVariable:function(key){var dict=MainApp.helper.AppHelper.variables[key];Ext.isDefined(dict)||Ext.Error.raise('Application variable not found: '+key);(dict=dict[this.getMode()])||
Ext.Error.raise('Application variable not found: '+key+'. Mode: '+this.getMode());return'function'===typeof dict?dict.call():dict}}},1,0,0,0,0,0,[MainApp.helper,'AppHelper'],0);
Ext.cmd.derive('Veeam.helper.ChartHelper',Ext.Base,{singleton:!0,_storageKey:'veeam-dashboard-chart-colors',_counter:0,_servers:{},_colors:'#2A6E52 #4572A7 #AA4643 #89A54E #80699B #3D96AE #DB843D #92A8CD #A47D7C #000080 #800080 #808000 #800000 #000000 #FFFF00 #00FF00 #00FFFF #008080 #D2691E #2E8B57 #DC143C #FFA500 #4B0082 #191970 #696969 #9400D3 #B22222 #B5CA92 #C71585 #FFD700 #7B68EE'.split(' '),constructor:function(config){this.initConfig(config);this._loadServers()},getColorForSever:function(serverName){var color=
this._servers[serverName];if(color)return color;this._counter>=this._colors.length&&(this._counter=0);if(color=this._colors[this._counter])this._servers[serverName]=color,this._counter++,this._saveServers();return color},clearColors:function(){this._removeServers()},privates:{_saveServers:function(){window.localStorage.setItem(this._storageKey,Ext.JSON.encode(this._servers))},_loadServers:function(){this._servers=Ext.JSON.decode(window.localStorage.getItem(this._storageKey))||{};for(var key in this._servers)this._servers.hasOwnProperty(key)&&
this._counter++},_removeServers:function(){this._servers={};window.localStorage.removeItem(this._storageKey)}}},1,0,0,0,0,0,[Veeam.helper,'ChartHelper'],0);Ext.cmd.derive('MainApp.model.AppConfig',Ext.Base,function(){return{appMode:MainApp.model.AppMode.FULL}},0,0,0,0,0,0,[MainApp.model,'AppConfig'],0);
Ext.cmd.derive('MainApp.model.ConfigMenuItem',Ext.data.Model,{fields:['uniqueName','title','token',{name:'slug',calculate:function(data){return Ext.util.Format.lowercase(data.uniqueName).replace(/[\s\:\/]/g,'_')}}],schema:{namespace:'MainApp.model'}},0,0,0,0,0,0,[MainApp.model,'ConfigMenuItem'],0);
Ext.cmd.derive('MainApp.view.common.AuthBlock',Ext.Button,{ui:'split-top-links-toolbar',menuAlign:'tr-br',textAlign:'right',menu:{xtype:'menu',items:[{iconCls:'logout',text:'Log Out',handler:function(){Ext.globalEvents.fireEvent('logout')}}]},initConfig:function(config){config.text=MainApp.app.getUser().getUsername();this.callParent([config])}},0,['authblock'],['component','box','button','authblock'],{component:!0,box:!0,button:!0,authblock:!0},['widget.authblock'],0,[MainApp.view.common,'AuthBlock'],
0);
Ext.cmd.derive('MainApp.view.common.TopMenu',Ext.tab.Bar,{config:{configurationPageLink:'/Configuration.aspx',indexPageLink:'/index.aspx',showConfigButton:!0},ui:'top-menu',cls:'top-menu no-title',defaults:{ui:'top-menu',closable:!1,hrefTarget:'_self'},items:[],initComponent:function(){Ext.tab.Bar.prototype.initComponent.apply(this,arguments);this._createTabs()},privates:{_createTabs:function(){var me=this,user=MainApp.app.getUser(),tabPanels=[];user.isDashboardTabEnabled()&&(me.add({text:'Dashboard',routeId:'dashboard',
href:me._createHref('dashboard')}),tabPanels.push({xtype:'main-dashboard',routeId:'dashboard',scrollable:!0,hasInternalRouting:!0}));user.isReportsTabEnabled()&&(me.add({text:'Reports',routeId:'reports',href:me._createHref('reports')}),tabPanels.push({xtype:'main-reports',routeId:'reports'}));user.isJobsTabEnabled()&&(me.add({text:'Jobs',routeId:'jobs',href:me._createHref('jobs')}),tabPanels.push({xtype:'main-jobs',routeId:'jobs'}));user.isVmsTabEnabled()&&(me.add({text:'Machines',routeId:'vms',href:me._createHref('vms')}),
tabPanels.push({xtype:'main-vms',routeId:'vms',hasInternalRouting:!0}));user.isFilesTabEnabled()&&(me.add({text:'Files',routeId:'files',href:me._createHref('files')}),tabPanels.push({xtype:'main-files',routeId:'files'}));user.isItemsTabEnabled()&&(me.add({text:'Items',routeId:'items',href:me._createHref('items')}),me.fireEvent('addtab',{xtype:'main-items',title:'Items',routeId:'items'}),tabPanels.push({xtype:'main-items',routeId:'items'}));user.isRequestsTabEnabled()&&(me.add({text:'Requests',routeId:'requests',
href:me._createHref('requests')}),me.fireEvent('addtab',{xtype:'main-requests',title:'Requests',routeId:'requests'}),tabPanels.push({xtype:'main-requests',routeId:'requests'}));me.add([{xtype:'tbfill'},{xtype:'authblock',iconCls:'admin-header',ui:'split-top-links-toolbar',style:{marginTop:'1px'}}]);user.canConfigurate()&&(me.add([{xtype:'tbseparator'}]),me.getShowConfigButton()&&me.add([{xtype:'button',text:'Configuration',ui:'top-links-toolbar',hidden:!me.getShowConfigButton(),iconCls:'config-header',
style:{marginTop:'1px'},handler:function(){window.location=me.getConfigurationPageLink()}},{xtype:'tbseparator'}]),me.add([{xtype:'button',ui:'top-links-toolbar',iconCls:'help-header',handler:function(){Ext.GlobalEvents.fireEvent('help')}}]));me._addTabPanelListeners(tabPanels);me.fireEvent('tabsready',tabPanels)},_addTabPanelListeners:function(tabPanels){Ext.each(tabPanels,function(panel){panel.listeners={activate:function(p){p=p.query('[isReport\x3dtrue]');Ext.each(p,function(report){if(Ext.isFunction(report.onShowCmp))report.onShowCmp(report)})}}})},
_createHref:function(routeId){return this.getIndexPageLink()+'#!'+routeId}}},0,['app-topmenu'],['component','box','container','tabbar','app-topmenu'],{component:!0,box:!0,container:!0,tabbar:!0,'app-topmenu':!0},['widget.app-topmenu'],0,[MainApp.view.common,'TopMenu'],0);
Ext.cmd.derive('MainApp.view.configuration.menu.SideController',Ext.app.ViewController,{indexPageLink:'/index.aspx',containerClicked:!1,initViewModel:function(vm){var me=this;me.storeBinding=vm.bind('{menuItemStore}',function(){me.onStoreLoaded()})},onActivateMenu:function(model){var sm=this.getView().getSelectionModel();sm.hasSelection()||(model=this.getView().findMenuItem(model.get('slug')),sm.select([model],!1,!0))},onSelect:function(view,record){this.redirectTo('!configuration/'+record.get('slug'))},
onMenuItemBeforeDeselect:function(){var containerClicked=this.containerClicked;this.containerClicked=!1;return!containerClicked},onContainerClick:function(view,e){view=e.getTarget('.exit-config');this.containerClicked=!0;view&&(window.location.href=this.indexPageLink)},onStoreLoaded:function(){this.fireViewEvent('menuloaded',this.getView())},onDestroy:function(){this.storeBinding=Ext.destroy(this.storeBinding);this.callParent(arguments)}},0,0,0,0,['controller.config.sidemenu'],0,[MainApp.view.configuration.menu,
'SideController'],0);
Ext.cmd.derive('MainApp.view.configuration.menu.SideModel',Ext.app.ViewModel,{stores:{menuItemStore:{model:'ConfigMenuItem',proxy:{type:'memory',reader:{type:'json'}},data:'{menuItemsData}'}},data:{selectedMenu:null},formulas:{menuItemsData:{get:function(){var appUser=MainApp.app.getUser();return[{title:'Backup Servers',uniqueName:'backup_servers'},{title:'vCenter Servers',uniqueName:'vcenter_servers'},{title:'Self-service',uniqueName:'selfservice'},{title:'Search Servers',uniqueName:'search_servers'},{title:'Sessions',
uniqueName:'sessions'},{title:'Roles',uniqueName:'roles'},{title:'Settings',uniqueName:'settings'},{title:'Licensing',uniqueName:'licensing'},{title:'Notifications',uniqueName:'email_notifications'},{title:'Key Management',uniqueName:'key_management'},{title:'About',uniqueName:'about'}].reduce(function(result,item){switch(item.uniqueName){case 'selfservice':appUser.isSelfServiceTabAvailable()&&result.push(item);break;case 'key_management':appUser.isKeyManagementTabAvailable()&&result.push(item);break;
default:result.push(item)}return result},[])}}}},0,0,0,0,['viewmodel.config.sidemenu'],0,[MainApp.view.configuration.menu,'SideModel'],0);
Ext.cmd.derive('MainApp.view.configuration.menu.Side',Ext.view.View,{reference:'menu',controller:'config.sidemenu',viewModel:{type:'config.sidemenu'},store:{},bind:{store:'{menuItemStore}',selection:'{selectedMenu}'},itemSelector:'.config-menu-item',selectedItemCls:'config-menu-item-active',width:244,layout:'fit',cls:'config-menu-panel config-menu',tpl:'\x3cdiv class\x3d"exit-config"\x3eExit Configuration\x3c/div\x3e;\x3cul\x3e;\x3ctpl for\x3d"."\x3e;\x3cli data-slug\x3d"{uniqueName}" class\x3d"config-menu-item x-{uniqueName}{[ xindex \x3d\x3d 0 ? " config-menu-item-first" : ""]}{[ xindex \x3d\x3d xcount-1 ? " config-menu-item-last" : ""]}"\x3e;\x3cdiv\x3e\x3cem\x3e\x3cspan\x3e{title}\x3c/span\x3e\x3c/em\x3e\x3c/div\x3e\x3c/li\x3e;\x3c/tpl\x3e;\x3c/ul\x3e'.split(';'),listeners:{activatemenu:'onActivateMenu',
select:'onSelect',beforedeselect:'onMenuItemBeforeDeselect',containerclick:'onContainerClick'},findMenuItem:function(slug){var store=this.getViewModel().getStore('menuItemStore');return store?store.findRecord('slug',slug):null},setActiveTab:function(tabSlug){tabSlug=this.findMenuItem(tabSlug);this.getSelectionModel().select(tabSlug?[tabSlug]:0)}},0,['config.sidemenu'],['component','box','dataview','config.sidemenu'],{component:!0,box:!0,dataview:!0,'config.sidemenu':!0},['widget.config.sidemenu'],
0,[MainApp.view.configuration.menu,'Side'],0);
Ext.cmd.derive('MainApp.service.Routing',Ext.Base,{singleton:!0,routes:{main:{'!:tab':{action:'onRouteChange',caseInsensitive:!0,conditions:{':tab':'(dashboard|reports|jobs|vms|files|items|requests)'}}},dashboard:{'!dashboard/:param':{action:'onRouteChange',caseInsensitive:!0,conditions:{':param':'(lastday|lastweek)'}}},items:{'!items/:param':{action:'onRouteChange',caseInsensitive:!0,conditions:{':param':'(mailbox|sql|oracle|history)'}},'!items':{action:'onRouteChange'}},reports:{'!reports/:report/:status/:period':{action:'onRouteChange',
caseInsensitive:!0,conditions:{':report':'(last_job_sessions)',':period':'(lastday|lastweek)',':status':'(all|success|warning|error)'}},'!reports/:report/:id/bs/:backupServerId/job/:jobId':{action:'onRouteChange',caseInsensitive:!0,condintions:{':report':'vm_sessions',':id':'[A-f0-9-]{36}',':backupServerId':'[A-f0-9-]{36}',':jobId':'[A-f0-9-]{36}'}},'!reports/:report/:id/bs/:backupServerId':{action:'onRouteChange',caseInsensitive:!0,condintions:{':report':'(vm_sessions|sessions_per_job|sure_backup_sessions_per_job|sessions|sure_backup_sessions)',
':id':'[A-f0-9-]{36}',':backupServerId':'[A-f0-9-]{36}'}},'!reports/:report/:id':{action:'onRouteChange',caseInsensitive:!0,condintions:{':id':'[A-f0-9-]{36}'}},'!reports/:report':{action:'onRouteChange',caseInsensitive:!0},'!reports':{action:'onRouteChange'}},vms:{'!vms/history/:id':{action:'showHistoryView',caseInsensitive:!0,condintions:{':id':'[A-f0-9-]{36}'}},'!vms/history':{action:'showHistoryView'},'!vms':{action:'showIndexView'}},files:{'!files/history':{action:'showHistoryView'},'!files':{action:'showIndexView'}}},
getRoutes:function(section){return this.routes[section.toString()]},findRoute:function(token){return Ext.app.route.Router.recognize(token)}},0,0,0,0,0,0,[MainApp.service,'Routing'],0);
Ext.cmd.derive('MainApp.base.controller.BaseController',Ext.app.ViewController,{routeSection:null,init:function(){if(this.routeSection){var routes=MainApp.service.Routing.getRoutes(this.routeSection);routes&&this.setRoutes(routes)}},onRouteChange:function(action){var view=this.getView();this.fireViewEvent('routechange',view,action)},getCurrentRoute:function(){return MainApp.service.Routing.findRoute(location.hash.toString().replace('#',''))},isOwnRoute:function(){var route=this.getCurrentRoute();
return route?route.args.controller._id===this._id:!1},silentRedirectTo:function(token){history.replaceState(void 0,void 0,'#'+token)}},0,0,0,0,0,0,[MainApp.base.controller,'BaseController'],0);
Ext.cmd.derive('MainApp.base.controller.BaseMainController',MainApp.base.controller.BaseController,{listen:{controller:{'*':{mask:'onMask',unmask:'onUnmask'}}},loadMask:null,afterRender:function(){var view=this.getView();view.down('[ctype\x3dcenterPanel]')&&(this.loadMask=Ext.create('Common.util.DefferedMask',{element:view.down('[ctype\x3dcenterPanel]'),message:'Loading'}))},onMask:function(msg){this.loadMask.mask(msg||null)},onUnmask:function(){this.loadMask.unmask()},destroy:function(){this.loadMask&&
(this.loadMask.destroy(),delete this.loadMask)}},0,0,0,0,['controller.basemaincontroller'],0,[MainApp.base.controller,'BaseMainController'],0);Ext.cmd.derive('Veeam.base.view.BaseWindowController',Ext.app.ViewController,{control:{'button[action\x3dcancel]':{click:'closeHandler'}},closeHandler:function(){this.getView().close()}},0,0,0,0,['controller.basewindow'],0,[Veeam.base.view,'BaseWindowController'],0);
Ext.cmd.derive('Veeam.util.LoadMask',Ext.LoadMask,{maybeShow:function(){var owner=this.getOwner();!owner.isVisible(!0)||this.isComponent&&!owner.el.isVisible(!0)?this.showNext=!0:this.loading&&owner.rendered&&(this.clearTimer(),this._maskTimer=Ext.defer(this.show,300,this))},hide:function(){this.clearTimer();Ext.LoadMask.prototype.hide.apply(this,arguments)},clearTimer:function(){this._maskTimer&&(clearTimeout(this._maskTimer),this._maskTimer=null)},onHide:function(animateTarget,callback,scope){var maskEl=
this.maskEl;maskEl&&maskEl.addCls('mask-fade-out');Ext.LoadMask.prototype.onHide.call(this,animateTarget,callback,scope)},afterHide:function(callback,scope){(callback=this.maskEl)&&callback.removeCls('mask-fade-out')},privates:{_maskTimer:null}},0,0,['component','box','loadmask'],{component:!0,box:!0,loadmask:!0},0,0,[Veeam.util,'LoadMask'],0);
Ext.cmd.derive('Veeam.plugin.DeferredMask',Ext.plugin.Abstract,{init:function(component){Ext.plugin.Abstract.prototype.init.call(this,component);this._init(component)},destroy:function(){var cmp=this.getCmp();cmp&&cmp.loadMask&&Ext.destroy(cmp.loadMask);Ext.plugin.Abstract.prototype.destroy.call(this)},privates:{_init:function(component){!0!==this.disabled&&(component.beforeRender=Ext.Function.createInterceptor(component.beforeRender,this._beforeComponentRender,this),Ext.override(component,{setLoading:this._setLoading}),
component instanceof Ext.view.AbstractView&&Ext.override(component,{privates:{createMask:this._createMask}}))},_beforeComponentRender:function(){var loadMask=this.cmp.loadMask,oldMaskCfg={};loadMask&&(Ext.isObject(loadMask)&&(oldMaskCfg=loadMask.isComponent?loadMask.getConfig():loadMask),Ext.isString(loadMask)&&(oldMaskCfg={msg:loadMask}));Ext.destroy(loadMask);loadMask=Ext.apply(oldMaskCfg,{target:this.cmp});this.cmp.loadMask=Ext.create('Veeam.util.LoadMask',loadMask);this.cmp.beforeRender=null},
_setLoading:function(load,targetEl){var config={target:this};this.rendered&&(!1!==load?(Ext.isString(load)?config.msg=load:Ext.apply(config,load),this.loadMask&&this.loadMask.isLoadMask?Ext.apply(this.loadMask,config):(targetEl&&null==config.useTargetEl&&(config.useTargetEl=!0),this.loadMask=new Ext.Veeam.util.LoadMask(config)),this.loadMask.isVisible()?this.loadMask.syncMaskState():(this.loadMask.loading=!0,this.loadMask.maybeShow())):this.loadMask&&this.loadMask.isLoadMask&&(this.loadMask.loading=
!1,this.loadMask.hide()));return this.loadMask},_createMask:function(mask){var maskStore=this.getStore();if(maskStore&&!maskStore.isEmptyStore&&!maskStore.loadsSynchronously()){var cfg={target:this,msg:this.loadingText,useMsg:this.loadingUseMsg};this.loadingCls&&(cfg.msgCls=this.loadingCls);Ext.isObject(mask)&&(cfg=Ext.apply(cfg,mask));this.loadMask=new Veeam.util.LoadMask(cfg);this.loadMask.setStore(maskStore);this.loadMask.on({scope:this,beforeshow:this.onMaskBeforeShow,hide:this.onMaskHide})}return this.loadMask}}},
0,0,0,0,['plugin.deferredmask'],0,[Veeam.plugin,'DeferredMask'],0);Ext.cmd.derive('Veeam.base.view.BaseWindow',Ext.window.Window,{alternateClassName:'Veeam.BaseWindow',controller:'basewindow',layout:'fit',modal:!0,ui:'wizard',bodyPadding:16,constrain:!0,config:{plugins:[{ptype:'deferredmask'}]}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.base.view,'BaseWindow',Veeam,'BaseWindow'],0);
Ext.cmd.derive('Veeam.view.dialogs.SaveConfirmation',Veeam.base.view.BaseWindow,{title:'Confirm Save',resizable:!1,minWidth:330,config:{message:'Save changes before leaving this page?'},initComponent:function(){Ext.apply(this,{fbar:['-\x3e',{text:'Save',ui:'primary',handler:this.handlers.save,scope:this},{text:'Discard',ui:'alternate',handler:this.handlers.discard,scope:this},{text:'Cancel',ui:'alternate',handler:this.handlers.cancel,scope:this}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,
arguments);var msg=this.getMessage();msg&&this.down('[ctype\x3dwindowBody]').setHtml(msg)},setMessage:function(msg){(arguments.callee.$previous||Veeam.base.view.BaseWindow.prototype.setMessage).apply(this,arguments);this.rendered&&this.down('[ctype\x3dwindowBody]').setHtml(msg)},items:[{xtype:'component',ctype:'windowBody',padding:'16 0'}],handlers:{discard:function(){var me=this;me.fireEvent('discard');setTimeout(function(){me.close()},100)},save:function(){this.fireEvent('save');this.close()},cancel:function(){this.fireEvent('cancel');
this.close()}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.view.dialogs,'SaveConfirmation'],0);
Ext.cmd.derive('MainApp.view.configuration.MainController',MainApp.base.controller.BaseMainController,{defaultRoute:'!configuration/backup_servers',routes:{'!configuration/:tab':{action:'onTabChange',before:'checkTabChangeAllowed'},'!configuration/:tab/:id':{action:'onTabAction',before:'checkTabActionAllowed'}},listen:{component:{'#menu':{menuloaded:'onAfterMenuLoaded'}},eventmanager:{hubConnectionLost:'showGlobalNotification',hubConnectionRestored:'showGlobalNotification'},global:{notification:'showGlobalNotification',
tabnotification:'showTabNotification'}},onAfterMenuLoaded:function(){var token=Ext.util.History.getToken();this.redirectTo(token||this.defaultRoute,!0)},showGlobalNotification:function(event){var panel=this.lookupReference('topMenuContainer'),notification=new Common.toolbar.Notification(event.options||{});'error'===event.type?notification.setError(event.message):'success'===event.type?notification.setSuccess(event.message):notification.setInfo(event.message);panel.insert(1,notification)},showTabNotification:function(event){var panel=
this.lookupReference('containerPn'),notification=Ext.create('Common.toolbar.Notification',{maxHeight:48});'error'===event.type?notification.setError(event.message):'success'===event.type?notification.setSuccess(event.message):notification.setInfo(event.message);panel.insert(0,notification)},onTabChange:function(tab){if(!this.isSameTab(tab)){var container=this.lookup('containerPn');var className=this.getViewClassName(tab);var menu=this.lookup('menu');var item=menu.findMenuItem(tab);if(null!=item){try{var view=
Ext.create(className)}catch(e){console.error(e),Ext.GlobalEvents.fireEvent('notification',{type:'error',message:'Failed to load tab '+className})}view&&(this.fireEvent('unmask'),container.removeAll(!0),container.add(view),menu.fireEvent('activatemenu',item),this.getView().setActiveTab(tab))}}},onTabAction:function(tab){if(!this.isSameTab(tab))this.onTabChange(tab)},isSameTab:function(tab){return this.getView().getActiveTab()==tab},getViewClassName:function(tab){if(!tab)return null;var clazzName=tab.split('_').map(function(token){return Ext.String.capitalize(token)}).join('');
'licensing'===tab&&MainApp.app.user.hasLegacyLicense()&&(clazzName='LegacyLicensing');return Ext.getNamespace(Ext.getClassName(this))+'.view.configuration.tab.'+clazzName},checkTabChangeAllowed:function(tab,action){var me=this,activeTab=me.getView().getActiveTab();tab===activeTab?action.stop():!1===Ext.GlobalEvents.fireEvent('confirmunload:check')?Ext.create('Veeam.view.dialogs.SaveConfirmation',{listeners:{discard:function(){action.resume()},save:function(){var panel=me.lookup('containerPn').items.items[0];
Ext.isFunction(panel.saveData)?panel.saveData().then(function(){action.resume()},function(){action.stop();me._restoreTab()}):(action.stop(),me._restoreTab())},cancel:function(){action.stop();me._restoreTab()}}}).show():action.resume()},checkTabActionAllowed:function(tab,id,action){return this.checkTabChangeAllowed(tab,action)},beforeInitialTab:function(action){return this.checkTabChangeAllowed(null,action)},privates:{_restoreTab:function(){var activeTab=this.getView().getActiveTab(),menu=this.lookup('menu');
Ext.util.History.back();menu.setActiveTab(activeTab)}}},0,0,0,0,['controller.config.main'],0,[MainApp.view.configuration,'MainController'],0);
Ext.cmd.derive('Veeam.base.view.DeferredMaskGrid',Ext.grid.Panel,{alternateClassName:'Veeam.DeferredMaskGrid',config:{viewConfig:{stripeRows:!1,plugins:[{ptype:'deferredmask'}]}}},0,['deferredmaskgrid'],'component box container panel tablepanel gridpanel grid deferredmaskgrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0},['widget.deferredmaskgrid'],0,[Veeam.base.view,'DeferredMaskGrid',Veeam,'DeferredMaskGrid'],0);
Ext.cmd.derive('Veeam.base.view.BaseGrid',Veeam.base.view.DeferredMaskGrid,{alternateClassName:'Veeam.BaseGrid',config:{leftButtons:[],rightButtons:[],hideRefreshBtn:!1,hideExportBtn:!1,headerMenuDisabled:!0,showPagingRefresh:!0,viewConfig:{forceFit:!0,markDirty:!1,enableTextSelection:!0,stripeRows:!1,loadMask:{delay:!0}}},border:!1,bbar:{xtype:'pagingtoolbar',displayInfo:!0},initComponent:function(){var tbarConfig=this.initToolbar();this.tbar=Ext.apply(tbarConfig,this.tbar,{});this.bbar.hideRefreshBtn=
!this.showPagingRefresh;Veeam.base.view.DeferredMaskGrid.prototype.initComponent.apply(this,arguments);this._updateColumns()},setStore:function(store$jscomp$0){var view=this.getView();store$jscomp$0&&(this.mon(store$jscomp$0,'beforeload',function(store,operation){operation.autoupdate&&(view.preserveScrollOnRefresh=!0,view.preserveScrollOnReload=!0)}),this.mon(store$jscomp$0,'load',function(){view.preserveScrollOnRefresh=!1;view.preserveScrollOnReload=!1}),Veeam.base.view.DeferredMaskGrid.prototype.setStore.apply(this,
arguments))},initToolbar:function(){var leftButtons=Ext.clone(this.getLeftButtons()),rightButtons=Ext.clone(this.getRightButtons()),needSeparator=!this.hideExportBtn&&!this.hideRefreshBtn;this.hideExportBtn||rightButtons.push({text:'Export',iconCls:'export',cls:needSeparator?'before-separator':null,handler:this.handlers.exportClick,scope:this});needSeparator&&rightButtons.push({xtype:'tbseparator'});this.hideRefreshBtn||rightButtons.push({text:'Refresh',iconCls:'refresh',handler:this.handlers.refreshClick,
scope:this});return leftButtons.length||rightButtons.length?{xtype:'toolbar',items:leftButtons.concat(['-\x3e']).concat(rightButtons)}:null},handlers:{refreshClick:function(){this.getStore().reload()},exportClick:function(btn){this.fireEvent('exporttoexcel',this,btn)}},updateHeaderMenuDisabled:function(headerMenuDisabled){this.rendered&&this._updateColumns(headerMenuDisabled)},getSortInfo:function(){var store=this.getStore();return store&&(store=store.getSorters(),(store=store.first())&&store.getProperty&&
store.getDirection)?{sort:store.getProperty(),dir:store.getDirection()}:null},privates:{_updateColumns:function(disabled){var headerMenuDisabled=Ext.isBoolean(disabled)?disabled:this.getHeaderMenuDisabled();this.columns.length&&Ext.each(this.getColumns(),function(column){column.menuDisabled=headerMenuDisabled})}}},0,['basegrid'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,
deferredmaskgrid:!0,basegrid:!0},['widget.basegrid'],0,[Veeam.base.view,'BaseGrid',Veeam,'BaseGrid'],0);Ext.cmd.derive('MainApp.model.BackupServerConfigurationRecord',Ext.data.Model,{fields:[{name:'id',type:'string'},{name:'displayName',type:'string'},{name:'username',type:'string'},{name:'version',type:'string'},{name:'description',type:'string'}]},0,0,0,0,0,0,[MainApp.model,'BackupServerConfigurationRecord'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.BackupServersModel',Ext.app.ViewModel,{stores:{backupServers:{model:'MainApp.model.BackupServerConfigurationRecord',autoLoad:!0,remoteSort:!0,sorters:[{property:'displayName',direction:'ASC'}],pageSize:20,proxy:{type:'direct',directFn:'RPC.Api.getBackupServersConfigurationReport',pageParam:!1,simpleSortMode:!0,reader:{type:'json',rootProperty:'items',totalProperty:'totalCount'}}}}},0,0,0,0,['viewmodel.backup-servers-configuration'],0,[MainApp.view.configuration.tab,
'BackupServersModel'],0);
Ext.cmd.derive('MainApp.service.BackupServersService',Ext.Base,{singleton:!0,startCollecting:function(){return Common.Request.thenable(RPC.Api.startCollecting)},addBackupServer:function(parameters){return Common.Request.thenable(RPC.Api.addBackupServer,parameters)},getBackupServerInfo:function(backupServerParameter){return Common.Request.thenable(RPC.Api.getBackupServerInfo,backupServerParameter)},editBackupServer:function(backupServerParameter,editDataParameter){return Common.Request.thenable(RPC.Api.editBackupServer,backupServerParameter,
editDataParameter)},removeBackupServer:function(backupServerParameter){return Common.Request.thenable(RPC.Api.removeBackupServer,backupServerParameter)},updateScheduleSettings:function(scheduleSettings){return Common.Request.thenable(RPC.Api.updateScheduleSettings,scheduleSettings)},getScheduleSettings:function(){return Common.Request.thenable(RPC.Api.getScheduleSettings)},canRemoveBackupServer:function(serverId){return Common.Request.thenable(RPC.Api.canRemoveBackupServer,serverId)},confirmServerCanBeRemoved:function(serverId){var deferred=
new Ext.Deferred;this.canRemoveBackupServer(serverId).then(function(){deferred.resolve()}).otherwise(function(response){response.prompt?(response=Ext.util.Format.nl2br(response.message),Common.ui.Msg.confirmHtml('Remove Backup Server',response,function(btn){return'yes'===btn?deferred.resolve():deferred.reject(null)})):deferred.reject(Error(response.message?response.message:response))});return deferred}},0,0,0,0,0,0,[MainApp.service,'BackupServersService'],0);
Ext.cmd.derive('Veeam.util.ExcelExporter',Ext.Base,{constructor:function(apiMethodName,apiMethodArguments){this.apiMethodName=apiMethodName;this.apiMethodArguments=apiMethodArguments},start:function(){this.wait('Preparing data...');Common.signalr.TaskManager.executeTask(this.apiMethodName,this.apiMethodArguments).then(this.onSuccess.bind(this)).otherwise(this.onError.bind(this))},onSuccess:function(response){Common.ui.Msg.hide();window.open('./ExportExcel.aspx?id\x3d'+response.taskId,'_self')},onError:function(response){Common.ui.Msg.hide();
Common.ui.Msg.error(response.message)},wait:function(message){Common.ui.Msg.wait(message)}},1,0,0,0,0,0,[Veeam.util,'ExcelExporter'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.BackupServersController',Ext.app.ViewController,{onRefresh:function(){this._reloadBackupServers()},_reloadBackupServers:function(){this.getViewModel().getStore('backupServers').reload()},onStartCollecting:function(){MainApp.service.BackupServersService.startCollecting().then(function(response){Ext.GlobalEvents.fireEvent('notification',{type:!0===response.success?'success':'error',message:response.message})})},onAdd:function(){MainApp.app.user.showLicenseOverwriteWarning()?
Common.ui.Msg.confirm('Warning','Enterprise Manager will push its license to all connected backup servers, overwriting currently installed license. Continue?',function(buttonText){'yes'===buttonText&&this._showAddWindow()},this):this._showAddWindow()},_showAddWindow:function(){(new MainApp.view.configuration.tab.backupservers.Settings({editMode:!1,listeners:{submit:function(dialog,data){this._addBackupServer(dialog,data,!1,!1)},scope:this}})).show()},_addBackupServer:function(dialog,data,force,overwrite){Common.ui.Msg.wait();
MainApp.service.BackupServersService.addBackupServer({servername:data.dnsOrIpAddress,creds:!0,username:data.username,password:data.password,port:data.port,description:data.description,force:force,overrideOldEM:overwrite}).then(function(){Common.ui.Msg.hide();dialog.close();this._reloadBackupServers()}.bind(this),function(response){Common.ui.Msg.hide();response.prompt?Common.ui.Msg.confirm('Status',response.prompt,function(buttonText){'yes'===buttonText&&this._addBackupServer(dialog,data,!0,overwrite)},
this):response.prompt2?Common.ui.Msg.confirm('Status',response.prompt2,function(buttonText){'yes'===buttonText&&this._addBackupServer(dialog,data,force,!0)},this):Common.ui.Msg.error(response.message)}.bind(this))},onEdit:function(){var selectedRecord=this.getView().getSelectionModel().getSelection()[0],onEditSuccess=function(dialog){Common.ui.Msg.hide();dialog.close();this._reloadBackupServers()},onEditFailure=function(dialog,response){Common.ui.Msg.hide();Common.ui.Msg.error(response.message)};
Common.ui.Msg.wait();MainApp.service.BackupServersService.getBackupServerInfo({typeId:selectedRecord.id}).then(function(response){Common.ui.Msg.hide();(new MainApp.view.configuration.tab.backupservers.Settings({editMode:!0,editData:{dnsOrIpAddress:response.servername,description:response.description,username:response.username,port:response.port},listeners:{submit:function(dialog,data){Common.ui.Msg.wait();var backupServerParameter={typeId:selectedRecord.id},editDataParameter={servername:data.dnsOrIpAddress,
description:data.description,creds:!0,username:data.username,port:data.port};'undefined'!==typeof data.password&&(editDataParameter.password=data.password);MainApp.service.BackupServersService.editBackupServer(backupServerParameter,editDataParameter).then(onEditSuccess.bind(this,dialog),onEditFailure.bind(this,dialog))},scope:this}})).show()}.bind(this),function(response){Common.ui.Msg.hide();Common.ui.Msg.error(response.message)}.bind(this))},onRemove:function(){var me=this,serverId=me.getView().getSelectionModel().getSelection()[0].id,
onRemoveSuccess=function(){Common.ui.Msg.hide();me._reloadBackupServers()},onRemoveFailure=function(response){Common.ui.Msg.hide();response&&Common.ui.Msg.error(response.message)};Common.ui.Msg.confirm('Backup Servers','Backup Server will be removed. Are you sure?',function(buttonText){'yes'===buttonText&&(buttonText=MainApp.service.BackupServersService,buttonText.confirmServerCanBeRemoved(serverId).then(buttonText.removeBackupServer.bind(buttonText,serverId)).then(onRemoveSuccess.bind(me)).otherwise(onRemoveFailure.bind(me)))},
me)},onSchedule:function(){var onUpdateScheduleSettingsSuccess=function(){Common.ui.Msg.hide()},onUpdateScheduleSettingsFailure=function(response){Common.ui.Msg.hide();Common.ui.Msg.error(response.message)};MainApp.service.BackupServersService.getScheduleSettings().then(function(response){(new MainApp.view.configuration.tab.backupservers.DataCollectionSettings({scheduleData:response,listeners:{submit:function(dialog,data){Common.ui.Msg.wait();MainApp.service.BackupServersService.updateScheduleSettings(data).then(onUpdateScheduleSettingsSuccess.bind(this),
onUpdateScheduleSettingsFailure.bind(this))},scope:this}})).show()}.bind(this),function(response){Common.ui.Msg.error(response.message)}.bind(this))},onExport:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('exportBackupServersConfigurationReport',[sortInfo])).start()},onBackupServerSelectionChange:function(control,selected){control=this.lookupReference('editButton');var removeButton=this.lookupReference('removeButton');0<selected.length?(control.enable(),removeButton.enable()):
(control.disable(),removeButton.disable())}},0,0,0,0,['controller.backup-servers-configuration'],0,[MainApp.view.configuration.tab,'BackupServersController'],0);Ext.cmd.derive('MainApp.view.configuration.tab.backupservers.SettingsModel',Ext.app.ViewModel,{},0,0,0,0,['viewmodel.backup-server-configuration'],0,[MainApp.view.configuration.tab.backupservers,'SettingsModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.backupservers.SettingsController',Ext.app.ViewController,{control:{form:{validitychange:'onFormValidation'}},init:function(){this._isPasswordChanged=!1},onPasswordChange:function(){this._isPasswordChanged=!0},onSubmit:function(){var dnsOrIpAddressField=this.lookupReference('dnsOrIpAddressField'),descriptionField=this.lookupReference('descriptionField'),usernameField=this.lookupReference('usernameField'),passwordField=this.lookupReference('passwordField'),
portField=this.lookupReference('portField');if(dnsOrIpAddressField.isValid()&&usernameField.isValid()&&portField.isValid()){var view=this.getView();dnsOrIpAddressField={dnsOrIpAddress:dnsOrIpAddressField.getValue(),description:descriptionField.getValue(),username:usernameField.getValue(),port:portField.getValue()};if(!view.initialConfig.editMode||this._isPasswordChanged)dnsOrIpAddressField.password=passwordField.getValue();view.fireEvent('submit',view,dnsOrIpAddressField)}},onCancel:function(){this.getView().close()},
onFormValidation:function(form,isValid){this.lookupReference('submitButton').setDisabled(!isValid)}},0,0,0,0,['controller.backup-server-configuration'],0,[MainApp.view.configuration.tab.backupservers,'SettingsController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.backupservers.Settings',Veeam.base.view.BaseWindow,{viewModel:'backup-server-configuration',controller:'backup-server-configuration',title:'Backup Server Settings',modal:!0,width:420,layout:'anchor',defaultButton:'submitButton',resizable:!1,initComponent:function(){Ext.apply(this,{items:{xtype:'form',reference:'form',fieldDefaults:{labelWidth:65},items:this.getItemsConfig(this.initialConfig)},buttons:this.getButtonsConfig()});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},
getItemsConfig:function(config){return[{xtype:'textfield',reference:'dnsOrIpAddressField',value:config.editMode?config.editData.dnsOrIpAddress:'',fieldLabel:'DNS name or IP address of the Veeam Backup server',labelAlign:'top',allowBlank:!1,anchor:'100%',regex:/^[^\s+?]/,validator:function(value){return 0>value.indexOf(':')||'Incorrect value'}},{xtype:'textareafield',reference:'descriptionField',value:config.editMode?config.editData.description:'',fieldLabel:'Server description',labelAlign:'top',allowBlank:!0,
maxLength:2E3,anchor:'100%'},{xtype:'textfield',reference:'usernameField',value:config.editMode?config.editData.username:'',fieldLabel:'Username',allowBlank:!1,anchor:'100%'},{xtype:'textfield',reference:'passwordField',inputType:'password',emptyText:'Type in a password',fieldLabel:'Password',allowBlank:config.editMode,anchor:'100%',listeners:{change:'onPasswordChange'}},{xtype:'numberfield',reference:'portField',value:config.editMode?config.editData.port:9392,fieldLabel:'Port',allowBlank:!1,allowDecimals:!1,
minValue:0,maxValue:65535,maxWidth:170,hideTrigger:!0}]},getButtonsConfig:function(){return[{xtype:'button',reference:'submitButton',ui:'primary',text:'OK',listeners:{click:'onSubmit'}},{xtype:'button',ui:'alternate',text:'Cancel',listeners:{click:'onCancel'}}]}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.backupservers,'Settings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.backupservers.DataCollectionSettingsModel',Ext.app.ViewModel,{stores:{collectionIntervalTypes:{fields:['value','name'],data:[{value:'hours',name:'hour(s)'},{value:'minutes',name:'minute(s)'}]}}},0,0,0,0,['viewmodel.data-collection-settings'],0,[MainApp.view.configuration.tab.backupservers,'DataCollectionSettingsModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.backupservers.DataCollectionSettingsController',Ext.app.ViewController,{control:{form:{validitychange:'onFormValidation'}},defaultSchedulePeriod:15,onPeriodicallyModeChanged:function(control,newValue,oldValue){control=this.lookupReference('periodicallyCollectionValueField');var periodicallyCollectionTypeField=this.lookupReference('periodicallyCollectionTypeField');!1===oldValue&&!0===newValue?(control.enable(),periodicallyCollectionTypeField.enable()):
!0===oldValue&&!1===newValue&&(control.disable(),periodicallyCollectionTypeField.disable())},onConfirm:function(){var view=this.getView();if(!this.lookupReference('form').getForm().isValid())return!1;var manuallyRadio=this.lookupReference('manuallyRadio'),periodicallyCollectionValueField=this.lookupReference('periodicallyCollectionValueField'),periodicallyCollectionTypeField=this.lookupReference('periodicallyCollectionTypeField');manuallyRadio={type:manuallyRadio.getValue()?'manually':'periodically',
period:manuallyRadio.getValue()?this.defaultSchedulePeriod:periodicallyCollectionValueField.getValue(),periodtype:periodicallyCollectionTypeField.getValue()};view.fireEvent('submit',view,manuallyRadio);view.close();return!0},onCancel:function(){this.getView().close()},onFormValidation:function(form,valid){this.lookupReference('okButton').setDisabled(!valid)}},0,0,0,0,['controller.data-collection-settings'],0,[MainApp.view.configuration.tab.backupservers,'DataCollectionSettingsController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.backupservers.DataCollectionSettings',Veeam.base.view.BaseWindow,{viewModel:'data-collection-settings',controller:'data-collection-settings',title:'Data Collection Settings',modal:!0,autoHeight:!0,layout:'fit',resizable:!1,initComponent:function(){Ext.apply(this,{items:{xtype:'form',reference:'form',items:this.getItemsConfig(this.initialConfig)},buttons:this.getButtonsConfig()});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},getItemsConfig:function(config){return[{xtype:'displayfield',
value:'Collect statistics from Veeam Backup servers:'},{xtype:'fieldcontainer',items:[{xtype:'radiofield',reference:'manuallyRadio',name:'collectMode',checked:'manually'===config.scheduleData.type,boxLabel:'Manually',width:170}]},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radiofield',name:'collectMode',checked:'periodically'===config.scheduleData.type,boxLabel:'Periodically every:',listeners:{change:'onPeriodicallyModeChanged'},width:160},{xtype:'numberfield',reference:'periodicallyCollectionValueField',
value:config.scheduleData.period,disabled:'periodically'!==config.scheduleData.type,allowBlank:!1,allowDecimals:!1,minValue:1,hideTrigger:!0,maxValue:99999,width:80,margin:'0 16 0 0'},{xtype:'combobox',reference:'periodicallyCollectionTypeField',value:config.scheduleData.periodtype,disabled:'periodically'!==config.scheduleData.type,bind:{store:'{collectionIntervalTypes}'},queryModel:'local',displayField:'name',valueField:'value',allowBlank:!1,editable:!1,typeAhead:!1,width:128}]}]},getButtonsConfig:function(){return[{xtype:'button',
text:'OK',reference:'okButton',ui:'primary',listeners:{click:'onConfirm'}},{xtype:'button',ui:'alternate',text:'Cancel',listeners:{click:'onCancel'}}]}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.backupservers,'DataCollectionSettings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.BackupServers',Veeam.base.view.BaseGrid,{padding:'16 16 0 16',viewModel:'backup-servers-configuration',controller:'backup-servers-configuration',reference:'backupServersGrid',layout:'fit',columns:{defaults:{menuDisabled:!0,sortableColumns:!0,multiColumnSort:!1},items:[{text:'Name',dataIndex:'displayName',sortable:!0,renderer:Ext.util.Format.htmlEncode,flex:5},{text:'Login',dataIndex:'username',sortable:!0,renderer:Ext.util.Format.htmlEncode,flex:5},{text:'Version',
dataIndex:'version',sortable:!1,align:'right',renderer:function(value){return'5.0'!==value?value:'N/A'},flex:3},{text:'Server Description',dataIndex:'description',sortable:!1,renderer:Ext.util.Format.htmlEncode,flex:10}]},bind:{store:'{backupServers}'},leftButtons:[{xtype:'button',text:'Start Collecting',iconCls:'collectnow',cls:'before-separator',listeners:{click:'onStartCollecting'}},{xtype:'tbseparator'},{xtype:'button',text:'Add...',iconCls:'addserver',listeners:{click:'onAdd'}},{xtype:'button',
reference:'editButton',text:'Edit...',iconCls:'editserver',bind:{disabled:'{!backupServersGrid.selection}'},listeners:{click:'onEdit'}},{xtype:'button',reference:'removeButton',text:'Remove',bind:{disabled:'{!backupServersGrid.selection}'},cls:'before-separator',iconCls:'removeserver',listeners:{click:'onRemove'}},{xtype:'tbseparator'},{xtype:'button',text:'Schedule...',iconCls:'schedule',listeners:{click:'onSchedule'}}],listeners:{exporttoexcel:'onExport'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,0,[MainApp.view.configuration.tab,'BackupServers'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.AboutController',Ext.app.ViewController,{onAfterRender:function(){this.fireEvent('mask');Common.Request.thenable(RPC.Api.getAboutInfo).then(this.dataLoaded.bind(this),function(r){Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',message:r.message})})},dataLoaded:function(body){this.fireEvent('unmask');this.updateEmBlock(body);this.updateCatalogBlock(body);this.updateRestApiBlock(body);this.updateWebSiteBlock(body)},updateEmBlock:function(body){var emBlock=
this.lookup('emBlock');this.updateBlock(emBlock,body.emServiceInfo,function(data){return{isAvailable:data.isAvailable,properties:{Version:data.version,'Log path':Ext.String.format('\x3cspan\x3e{0}\x3c/span\x3e{1}',data.hostname,data.logPath)}}})},updateCatalogBlock:function(body){var catalogBlock=this.lookup('catalogBlock');this.updateBlock(catalogBlock,body.catalogServiceInfo,function(data){return{isAvailable:data.isAvailable,properties:{Version:data.version,'Log path':Ext.String.format('\x3cspan\x3e{0}\x3c/span\x3e{1}',
data.hostname,data.logPath)}}})},updateRestApiBlock:function(body){var restApiBlock=this.lookup('restApiBlock');this.updateBlock(restApiBlock,body.restApiServiceInfo,function(data){return{isAvailable:data.isAvailable,properties:{URL:data.apiUrl,'Certificate thumbprint':data.certThumbprint}}})},updateWebSiteBlock:function(body){var webSiteBlock=this.lookup('webSiteBlock');this.updateBlock(webSiteBlock,body.webSiteInfo,function(data){return{isAvailable:!0,properties:{'Enterprise Manager URL':Ext.String.format('\x3ca target\x3d"_blank" href\x3d"{0}"\x3e{0}\x3c/a\x3e',
data.baseUrl),'Self Service Portal URL':Ext.String.format('\x3ca target\x3d"_blank" href\x3d"{0}/selfRestore"\x3e{0}/selfRestore\x3c/a\x3e',data.baseUrl),'Log path':Ext.String.format('\x3cspan\x3e{0}\x3c/span\x3e{1}',data.hostname,data.logPath),Version:data.version}}})},updateBlock:function(block,data,dataTransformer){data=dataTransformer(data);block.update(Ext.apply({},data,block.getData()))}},0,0,0,0,['controller.config.tab.about'],0,[MainApp.view.configuration.tab,'AboutController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.About',Ext.Container,{controller:'config.tab.about',listeners:{afterrender:'onAfterRender',scope:'controller'},itemTpl:'\x3cdiv class\x3d"infoblock"\x3e;\x3cdiv class\x3d"widget-section-header no-bg"\x3e{title}\x3c/div\x3e;\x3cdiv class\x3d"infoblock__body"\x3e;\x3cdiv class\x3d"infoblock__item property"\x3e;\x3ctpl if\x3d"isAvailable"\x3e;\x3ctpl foreach\x3d"properties"\x3e;\x3cdiv class\x3d"property__row"\x3e;\x3cdiv class\x3d"property__key"\x3e{$}\x3c/div\x3e;\x3cdiv class\x3d"property__value"\x3e{.}\x3c/div\x3e;\x3c/div\x3e;\x3c/tpl\x3e;\x3ctpl else\x3e;\x3cspan class\x3d"infoblock__item_unavailable"\x3eNot available\x3c/span\x3e;\x3c/tpl\x3e;\x3c/div\x3e;\x3c/div\x3e;\x3c/div\x3e'.split(';'),
padding:16,initComponent:function(){Ext.apply(this,{items:this.buildItems(),cls:'about-panel',border:!1});Ext.container.Container.prototype.initComponent.call(this)},buildItems:function(){var emServiceBlock=Ext.create('Ext.Component',{tpl:this.itemTpl,reference:'emBlock',data:{title:'Veeam Backup Enterprise Manager Service',isAvailable:!1}}),catalogServiceBlock=Ext.create('Ext.Component',{tpl:this.itemTpl,reference:'catalogBlock',data:{title:'Veeam Catalog Data Service',isAvailable:!1}}),restApiServiceBlock=
Ext.create('Ext.Component',{tpl:this.itemTpl,reference:'restApiBlock',data:{title:'Veeam RESTful API Service',isAvailable:!1}}),webSiteBlock=Ext.create('Ext.Component',{tpl:this.itemTpl,reference:'webSiteBlock',data:{title:'Web Site Information',isAvailable:!1}});return[emServiceBlock,catalogServiceBlock,restApiServiceBlock,webSiteBlock]}},0,0,['component','box','container'],{component:!0,box:!0,container:!0},0,0,[MainApp.view.configuration.tab,'About'],0);
Ext.cmd.derive('MainApp.model.CryptoKey',Ext.data.Model,{fields:[{name:'id',type:'auto'},{name:'hint',type:'auto',convert:Ext.util.Format.stripScripts},{name:'created',type:'date',dateFormat:'c'},{name:'active',type:'bool'}]},0,0,0,0,['model.cryptokey'],0,[MainApp.model,'CryptoKey'],0);
Ext.cmd.derive('MainApp.store.CryptoKeyStore',Ext.data.Store,{model:'MainApp.model.CryptoKey',autoLoad:!1,root:'items',proxy:{type:'direct',directFn:'Api.keymanagement.getAllKeys',reader:{type:'json',rootProperty:'items'}},sorters:[{property:'created',direction:'DESC'}],sortOnLoad:!0},0,0,0,0,['store.cryptokey'],0,[MainApp.store,'CryptoKeyStore'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.keymanagement.GenerateKeyController',Ext.app.ViewController,{control:{'button[action\x3dgenerate]':{click:'generateHandler'},'button[action\x3dcancel]':{click:'closeHandler'},textarea:{validitychange:'onFormValdation'}},generateHandler:function(){var saveBtn=this.lookupReference('saveBtn'),view=this.getView();saveBtn.setDisabled(!0);view.setLoading('Generating...');Ext.GlobalEvents.fireEvent('generatekey.commit',view,view.lookup('hint').getValue())},
closeHandler:function(){this.getView().close()},onFormValdation:function(field,valid){this.lookupReference('saveBtn').setDisabled(!valid)}},0,0,0,0,['controller.configuration.tab.keymanagement.generatekey'],0,[MainApp.view.configuration.tab.keymanagement,'GenerateKeyController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.keymanagement.GenerateKey',Veeam.base.view.BaseWindow,{controller:'configuration.tab.keymanagement.generatekey',initComponent:function(){Ext.apply(this,{title:'Generate Keyset',width:540,height:300,buttons:this.buildButtons(),items:this.buildItems(),resizable:!1});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},buildButtons:function(){var okButton=Ext.create('Ext.Button',{text:'Generate',itemId:'save',reference:'saveBtn',ui:'primary',action:'generate'}),
cancelButton=Ext.create('Ext.Button',{text:'Cancel',ui:'alternate',itemId:'cancel',action:'cancel'});return[okButton,cancelButton]},buildItems:function(){return[{xtype:'fieldcontainer',layout:'fit',fieldLabel:'Hint',itemId:'key-form',labelWidth:75,labelAlign:'top',items:[Ext.create('Ext.form.field.TextArea',{itemId:'hint',allowBlank:!0,maxLengthText:'The maximum length for this field is {0}',name:'hint',maxLength:255,reference:'hint',anchor:'100% 100%'})]}]}},0,0,['component','box','container','panel',
'window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.keymanagement,'GenerateKey'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.keymanagement.ImportKeyController',Ext.app.ViewController,{control:{'button[action\x3dimport]':{click:'importHandler'},'button[action\x3dcancel]':{click:'closeHandler'}},onFileSelected:function(f,v){var startIndex=0<=v.indexOf('\\')?v.lastIndexOf('\\'):v.lastIndexOf('/');v=v.substring(startIndex);if(0===v.indexOf('\\')||0===v.indexOf('/'))v=v.substring(1);f.setValue(v);-1!==v.lastIndexOf('.pem')&&this.lookup('hintText').setValue(v.substring(0,v.lastIndexOf('.pem')))},
importHandler:function(){var me=this,field=me.lookup('file'),formCmp=me.lookup('form'),file=field.getValue();file=me.validateFileExtension(file);if(!0!==file)return field.markInvalid(file),!1;if(!formCmp)throw Error('Parent form panel not found');formCmp.getForm().isValid()&&(me.getView().setLoading('Import in progress'),formCmp.getForm().submit({url:'./ImportKeyHandler.ashx',scope:me,success:function(fp,o){me.getView().setLoading(!1);Ext.GlobalEvents.fireEvent('importkey.commit',me.getView(),o.result)},
failure:function(form,o){me.getView().setLoading(!1);Common.ui.Msg.error(o.result.message);formCmp.getForm().reset()}}))},validateFileExtension:function(file){return file?(file=file.substring(file.length-3,file.length))&&'pem'!==file.toLowerCase()?'Invalid file format':!0:'No file selected'},closeHandler:function(){this.getView().close()}},0,0,0,0,['controller.config.tab.keymanagement.importkey'],0,[MainApp.view.configuration.tab.keymanagement,'ImportKeyController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.keymanagement.ImportKey',Veeam.base.view.BaseWindow,{controller:'config.tab.keymanagement.importkey',width:540,resizable:!1,initComponent:function(){Ext.apply(this,{title:'Import Keyset',buttons:this.buildButtons(),items:this.buildItems()});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},buildButtons:function(){var okButton=Ext.create('Ext.Button',{text:'Import',ui:'primary',action:'import'}),cancelButton=Ext.create('Ext.Button',{text:'Cancel',
ui:'alternate',action:'cancel'});return[okButton,cancelButton]},buildItems:function(){var hintText=Ext.create('Ext.form.TextArea',{itemId:'hint',labelWidth:28,fieldLabel:'Hint',allowBlank:!0,labelSeparator:'',name:'hint',reference:'hintText',anchor:'100% -53'}),file=Ext.create('Ext.form.field.File',{itemId:'file',labelWidth:28,fieldLabel:'File',reference:'file',allowBlank:!1,labelSeparator:'',anchor:'100%',buttonText:'Browse',buttonConfig:{ui:'text'},accept:'.pem,application/x-pem-file',listeners:{change:'onFileSelected'}});
return[{xtype:'form',itemId:'key-form',hasUpload:!0,reference:'form',items:[hintText,file,{xtype:'hidden',name:'csrfToken',value:CSRFToken}]}]}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.keymanagement,'ImportKey'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.KeyManagementController',Ext.app.ViewController,{control:{grid:{selectionchange:'onKeySelected'},field:{validitychange:{fn:'onValidate',buffer:100},change:{fn:'onFormDataChange',buffer:120}}},listen:{global:{'generatekey.commit':'onGenerateKey','importkey.commit':'onImportKey','confirmunload:check':'checkIfNeedConfim'}},init:function(){Ext.GlobalEvents.fireEvent('confirmunload:on',this);Ext.app.ViewController.prototype.init.apply(this,arguments)},destroy:function(){Ext.GlobalEvents.fireEvent('confirmunload:off',
this);this.bindings=Ext.destroy(this.bindings);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},onFormDataChange:function(field){var vm=this.getViewModel(),model=this.getViewModel().get('settings');setTimeout(function(){vm.set('hasChanges',model?model.dirty:!1)})},onRefreshGrid:function(){this.load()},onAfterRender:function(){var me=this;me.load();me.bindings=me.getViewModel().bind('{showNotificationPanel}',function(value){me._getSaveTabPlugin().setEnableSave(value)})},onKeySelected:function(grid,
selected){this.getViewModel().set('selectedRecords',selected)},onValidate:function(f,isValid){var vm=this.getViewModel();setTimeout(function(){vm.set('formValid',isValid)})},decryptHandler:function(btn){btn=Ext.create('MainApp.ConfigDecryptWizard');btn.show();this.getView().add(btn)},generateHandler:function(btn){btn=new Ext.create('MainApp.view.configuration.tab.keymanagement.GenerateKey');btn.show();this.getView().add(btn)},onGenerateKey:function(dialog,hint){var me=this;Common.Request.thenable(RPC.Api['keymanagement.generate'],
hint).then(function(response){dialog.close();Ext.GlobalEvents.fireEvent('tabnotification',{type:'info',message:response.message});me.load()},function(response){Common.ui.Msg.error(response);dialog.lookupReference('saveBtn').setDisabled(!1);dialog.setLoading(!1)})},importHandler:function(){var importForm=Ext.create('MainApp.view.configuration.tab.keymanagement.ImportKey');importForm.show();this.getView().add(importForm)},onImportKey:function(dialog,result){dialog.close();Ext.GlobalEvents.fireEvent('tabnotification',
{type:'info',message:result.message});this.load()},exportHandler:function(){var selectedRecords=this.lookup('grid').getSelection();if(!selectedRecords)return Common.ui.Msg.error('Select key to export');for(var paramsArray=[],i=0;i<selectedRecords.length;i++)paramsArray.push(selectedRecords[i].get('id').replace(/-/g,''));Ext.Ajax.request({url:'./KeyExport.ashx',method:'POST',withCredentials:!0,params:{op:'preload',data:paramsArray.join()},headers:{'X-CSRF-Token':CSRFToken}}).then(function(response,
opts){response=Ext.decode(response.responseText);if(1==response.Success)window.open('./KeyExport.ashx?keyId\x3d'+response.Message,'_self');else return Common.ui.Msg.error(response.Message)},function(response,opts){Common.ui.Msg.error('Server-side failure with status code '+response.status)})},activateHandler:function(){var me=this,selectedRecords=me.lookup('grid').getSelection();if(0==selectedRecords.length)return Common.ui.Msg.error('Select key to activate');this.fireEvent('mask');Common.Request.thenable(RPC.Api['keymanagement.activate'],
selectedRecords[0].get('id')).then(function(response){Ext.GlobalEvents.fireEvent('tabnotification',{type:'info',message:response.message});me.load()},Common.ui.Msg.error).always(me.hideLoading,me)},hideLoading:function(){this.fireEvent('unmask')},deleteHandler:function(){var me=this,selectedRecords=me.lookup('grid').getSelection();if(0==selectedRecords.length)return Common.ui.Msg.error('Select key to activate');var paramsArray=selectedRecords.reduce(function(params,rec){return 1==rec.get('active')?
(Common.ui.Msg.error('Active key ['+rec.get('hint')+'] cannot be deleted'),[].concat(params)):params.concat(rec.get('id').replace(/-/g,''))},[]);if(paramsArray.length!=selectedRecords.length)return!1;var callback=function(response){Ext.GlobalEvents.fireEvent('tabnotification',{type:'info',message:response.message});me.load()};Ext.Msg.confirm('Delete key(s)','The key(s) will be deleted permanently, consider exporting it first.\x3cbr/\x3e Proceed with deleting the selected key(s)?',function(btn,text){'yes'==
btn&&(this.fireEvent('mask'),Common.Request.thenable(RPC.Api['keymanagement.delete'],paramsArray.join()).then(callback,Common.ui.Msg.error).always(me.hideLoading,me))},this)},saveHandler:function(){var me=this,vm=me.getViewModel(),model=this.getViewModel().get('settings'),deferred=new Ext.Deferred;if(!model.isValid())return!1;me.fireEvent('mask');model.save({failure:function(record,operation){me.hideLoading();record=operation.getResponse().result;deferred.reject();return Common.ui.Msg.error(record&&
record.message?record.message:operation.getResponse().message)},success:function(record,operation){me.hideLoading();operation=(record=operation.getResponse().result)&&record.message?record.message:operation.getResponse().message;vm.set('hasChanges',!1);me._getSaveTabPlugin().showSuccessMessage(operation);deferred.resolve()}});return deferred},load:function(){var me=this;setTimeout(function(){me.lookup('grid').getStore().load()},1)},checkIfNeedConfim:function(){var vm=this.getViewModel();return vm?
!vm.get('hasChanges')&&vm.get('formValid'):!0},privates:{_getSaveTabPlugin:function(){return this.getView().findPlugin('savetab')}}},0,0,0,0,['controller.config.tab.keymanagement'],0,[MainApp.view.configuration.tab,'KeyManagementController'],0);
Ext.cmd.derive('MainApp.model.KeyManagementSettings',Ext.data.Model,{fields:[{name:'managementEnabled',type:'bool'},{name:'enabled',type:'bool'},{name:'period',type:'int'},{name:'autogenerate',type:'bool'}],proxy:{type:'direct',api:{read:'Api.keymanagement.getSettings',update:'Api.keymanagement.setSettings'},reader:{type:'json'},writer:{type:'json',writeAllFields:!0}},validators:{period:{type:'range',min:7,max:371}}},0,0,0,0,['model.keymanagement-settings'],0,[MainApp.model,'KeyManagementSettings'],
0);
Ext.cmd.derive('MainApp.view.configuration.tab.KeyManagementModel',Ext.app.ViewModel,{defaultRetentionDays:30,data:{selectedRecords:[],hasChanges:!1,formValid:!0},links:{settings:{type:'KeyManagementSettings',id:0}},formulas:{currentRecord:{bind:{bindTo:'{grid.selection}',deep:!0},get:function(record){return record}},actionEnabled:{get:function(get){var enabled=get('settings.managementEnabled');get=get('currentRecord');return enabled&&get}},retentionInWeeks:{get:function(get){return parseInt(get('settings.period')/7)},
set:function(value){var enabled=this.get('settings.enabled');this.set('settings.period',enabled?7*parseInt(value):this.defaultRetentionDays)}},retentionEnabled:{bind:{bindTo:'{settings}',deep:!0},get:function(model){return model.get('enabled')&&model.get('managementEnabled')}},showNotificationPanel:function(get){return get('hasChanges')&&get('formValid')}},stores:{cryptoKeyStore:{type:'cryptokey'}}},0,0,0,0,['viewmodel.config.tab.keymanagement'],0,[MainApp.view.configuration.tab,'KeyManagementModel'],
0);
Ext.cmd.derive('MainApp.view.configuration.tab.KeyManagementSettings',Ext.form.Panel,{title:'Key retention settings',items:[{xtype:'fieldcontainer',hideEmptyLabel:!0,layout:'hbox',items:[{xtype:'checkbox',boxLabel:'Key retention period',width:160,reference:'enableRetention',itemId:'key-retention-checkbox',bind:{disabled:'{!settings.managementEnabled}',value:'{settings.enabled}'}},{xtype:'numberfield',minValue:1,allowNegative:!1,allowDecimals:!1,allowBlank:!1,hideLabel:!0,maxValue:53,reference:'retentionPeriod',bind:{disabled:'{!retentionEnabled}',
value:'{retentionInWeeks}'},margin:'0 0 0 16'},{xtype:'displayfield',value:'weeks',flex:1,margin:'0 0 0 16'}]},{xtype:'checkbox',boxLabel:'Auto-generate new keys',reference:'autoGenerateKey',bind:{disabled:'{!retentionEnabled}',value:'{settings.autogenerate}'}}]},0,['keymanagementsettings'],'component box container panel form keymanagementsettings'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,keymanagementsettings:!0},['widget.keymanagementsettings'],0,[MainApp.view.configuration.tab,
'KeyManagementSettings'],0);
Ext.cmd.derive('Veeam.mixin.WizardCardTitle',Ext.Mixin,{mixinConfig:{before:{onRender:'_intiMixin'}},layout:{type:'vbox',align:'stretch'},description:null,cardTitle:null,getDescription:function(){return this.description},setCardTitle:function(value){this.cardTitle=value.toString();this._buildHtml()},getCardTitle:function(){return this.cardTitle},setDescription:function(value){this.description=value.toString();this._buildHtml()},updateTitle:function(value){this._buildHtml()},privates:{_intiMixin:function(){this.insert(0,
{xtype:'component',padding:16,cls:'widget-card-header',ctype:'cardheader',hidden:!0});this._buildHtml()},_buildHtml:function(){var cmp=this.down('[ctype\x3dcardheader]'),title=this.getCardTitle()||this.getTitle(),description=this.getDescription(),result='';title&&(result+=Ext.String.format('\x3ch3\x3e{0}\x3c/h3\x3e',title));description&&(result+=Ext.String.format('\x3cp\x3e{0}\x3c/p\x3e',description));cmp.setVisible(!!result);result&&cmp.update(result)}}},0,0,0,0,0,0,[Veeam.mixin,'WizardCardTitle'],
0);Ext.define('MainApp.view.configuration.tab.keymanagement.decryptWizard.BaseCard',{extend:ToolKit.wizard.Card,alternateClassName:'MainApp.ConfigDecryptWizard.BaseCard',mixins:[Veeam.mixin.WizardCardTitle],viewModel:{},layout:{type:'vbox',align:'stretch'},defaults:{padding:'0 16'}});
Ext.define('MainApp.view.configuration.tab.keymanagement.decryptWizard.ChallengeRequestCard',{extend:MainApp.ConfigDecryptWizard.BaseCard,alternateClassName:'MainApp.ConfigDecryptWizard.ChallengeRequestCard',xtype:'config-decryptwizard-challengerequestcard',cardTitle:'Paste challenge request provided by the restore wizard',alertMessage:'Paste is not allowed by browser security policy, use Ctrl+V instead.',referenceHolder:!0,pasteQueryCommandSupported:!1,clipboardDataSupported:!1,initComponent:function(){Ext.apply(this,
{items:[{xtype:'textarea',allowOnlyWhitespace:!1,reference:'textareaField',flex:1,bind:{value:'{key}'},margin:'0 16 0 16'},{xtype:'toolbar',layout:'hbox',margin:0,items:['-\x3e',{xtype:'textfilefield',buttonText:'Import from File',buttonOnly:!0,ui:'text',buttonConfig:{iconCls:'import'},allowedExtensions:['txt'],accept:'.txt',listeners:{fileerror:this.handlers.fileField.showError,beforeload:this.handlers.fileField.beforeLoad,load:this.handlers.fileField.load,scope:this}},{xtype:'button',text:'Paste',
iconCls:'restore',reference:'pasteButton',handler:'pasteHandler',margin:'0 0 0 24',scope:this}]}]});MainApp.view.configuration.tab.keymanagement.decryptWizard.BaseCard.prototype.initComponent.apply(this,arguments)},afterRender:function(){document.queryCommandSupported('Paste')&&document.queryCommandEnabled('Paste')&&(this.pasteQueryCommandSupported=!0);window.clipboardData&&(this.clipboardDataSupported=!0);this.lookupReference('pasteButton').setVisible(this.pasteQueryCommandSupported||this.clipboardDataSupported);
MainApp.view.configuration.tab.keymanagement.decryptWizard.BaseCard.prototype.afterRender.apply(this,arguments)},pasteHandler:function(){var textarea=this.lookupReference('textareaField');if(this.pasteQueryCommandSupported)try{textarea.getEl().focus(),document.execCommand('Paste',!1,null)}catch(e){Common.ui.Msg.success(this.alertMessage)}if(window.clipboardData)try{textarea.getEl().focus(),textarea.setValue(window.clipboardData.getData('Text'))}catch(e$2){Common.ui.Msg.success(this.alertMessage)}},
handlers:{fileField:{showError:function(field,message){Common.ui.Msg.error(message)},beforeLoad:function(){this.setLoading()},load:function(field,data){field=this.lookup('textareaField');this.setLoading(!1);field.setValue(data)}}}});
Ext.define('MainApp.view.configuration.tab.keymanagement.decryptWizard.ResponseCard',{extend:MainApp.ConfigDecryptWizard.BaseCard,alternateClassName:'MainApp.ConfigDecryptWizard.ResponseCard',xtype:'config-decryptwizard-responsecard',cardTitle:'Provide this response to the restore operator for entering in the restore wizard',initComponent:function(){Ext.apply(this,{maskOnDisable:!1,items:[{xtype:'textarea',allowOnlyWhitespace:!1,reference:'responseField',flex:1,bind:{value:'{response}'},listeners:{change:'onChange',
scope:this}}]});MainApp.view.configuration.tab.keymanagement.decryptWizard.BaseCard.prototype.initComponent.apply(this,arguments)},onChange:function(field,value){value&&(field.focus(),setTimeout(function(){field.selectText()},10))}});
Ext.define('MainApp.view.configuration.tab.keymanagement.decryptWizard.VerifyRequestCard',{extend:MainApp.ConfigDecryptWizard.BaseCard,alternateClassName:'MainApp.ConfigDecryptWizard.VerifyRequestCard',xtype:'config-decryptwizard-verifyrequestcard',cardTitle:'Verify lost password recovery request',items:[{xtype:'component',bind:{html:'{validationResult}',flex:1}}],customValidate:function(){return this.getViewModel().get('isValid')}});
Ext.cmd.derive('Veeam.view.VeeamWizard',ToolKit.wizard.Wizard,{afterRender:function(){var tabPanel=this.lookup('tabPanel');ToolKit.wizard.Wizard.prototype.afterRender.apply(this,arguments);this.mon(tabPanel,'tabchange',this.onTabChange,this,{buffer:50})},onTabChange:function(tabPanel){var fullActive=!0;Ext.each(tabPanel.items.items,function(card){card.disabled&&(fullActive=!1)});this.toggleCls('full-active',fullActive)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,
panel:!0,window:!0},0,0,[Veeam.view,'VeeamWizard'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.keymanagement.decryptWizard.WizardController',ToolKit.wizard.WizardController,{onVerifyRequest:function(card){var vm=this.getViewModel(),view=this.getView();vm.set({validationResult:null,isValid:!1});view.setLoading('Verifying request');MainApp.service.rpc.KeyManagement.verify(vm.get('key')).then(function(response){vm.set({validationResult:response.message,isValid:response.valid})}).otherwise(Common.ui.Msg.error).always(function(){view.setLoading(!1)})},onDecryptRequest:function(card){var vm=
this.getViewModel(),view=this.getView();vm.set('response',null);view.setLoading('Decrypting request');MainApp.service.rpc.KeyManagement.decrypt(vm.get('key')).then(function(response){vm.set('response',response.message)}).otherwise(Common.ui.Msg.error).always(function(){view.setLoading(!1)})},onDescriptActivate:function(){var view=this.getView();view.down('button[text\x3d'+view.cancelButtonText+']').hide()},onDescriptDeactivate:function(){var view=this.getView();view.down('button[text\x3d'+view.cancelButtonText+
']').show()}},0,0,0,0,['controller.configuration.tab.keymanagement.decryptwizard'],0,[MainApp.view.configuration.tab.keymanagement.decryptWizard,'WizardController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.keymanagement.decryptWizard.WizardModel',Ext.app.ViewModel,{data:{key:null,isValid:!1,validationResult:null,response:null},formulas:{},stores:{}},0,0,0,0,['viewmodel.configuration.tab.keymanagement.decryptwizard'],0,[MainApp.view.configuration.tab.keymanagement.decryptWizard,'WizardModel'],0);
Ext.cmd.derive('Veeam.base.wizard.CardSection',Ext.Container,{layout:{type:'vbox',align:'stretch'},title:!1,cls:'wizard-cardsection',marginHeader:null,titleWithoutBackground:!1,items:[],initComponent:function(){Ext.container.Container.prototype.initComponent.apply(this,arguments);if(this.title){var cfg={xtype:'component',html:this.title,cls:this.titleWithoutBackground?'widget-section-header no-bg':'widget-section-header'};this.marginHeader&&(cfg.margin=this.marginHeader);this.insert(0,cfg)}}},0,['basewizard.cardsection',
'wizard-cardsection'],['component','box','container','basewizard.cardsection','wizard-cardsection'],{component:!0,box:!0,container:!0,'basewizard.cardsection':!0,'wizard-cardsection':!0},['widget.basewizard.cardsection','widget.wizard-cardsection'],0,[Veeam.base.wizard,'CardSection'],0);
Ext.define('MainApp.view.configuration.tab.keymanagement.decryptWizard.Wizard',{extend:Veeam.view.VeeamWizard,alternateClassName:'MainApp.ConfigDecryptWizard',plugins:[{ptype:'deferredmask'}],viewModel:{type:'configuration.tab.keymanagement.decryptwizard'},controller:'configuration.tab.keymanagement.decryptwizard',cls:'decrypt-wizard',height:450,width:600,title:'Password Recovery',autoClose:!0,defaultBodyPadding:0,tabWidth:154,prevButtonText:'Previous',initComponent:function(){Ext.apply(this,{items:[{title:'Challenge Request',
xtype:'config-decryptwizard-challengerequestcard',reference:'challengeRequestCard',cls:'challenge-request-card'},{title:'Verify Request',xtype:'config-decryptwizard-verifyrequestcard',reference:'verifyRequestCard',cls:'verify-request-card',listeners:{show:'onVerifyRequest'}},{title:'Response',xtype:'config-decryptwizard-responsecard',reference:'responseCard',cls:'response-card',listeners:{show:'onDecryptRequest',activate:'onDescriptActivate',deactivate:'onDescriptDeactivate'}}]});Veeam.view.VeeamWizard.prototype.initComponent.apply(this,
arguments)}});
Ext.cmd.derive('Veeam.plugin.SaveTab',Ext.plugin.Abstract,{needSaveMsg:'Changes have not been saved yet',defaultSuccessMsg:'Your changes have been saved',validationMsg:'The form is not filled out correctly',saveBtnText:'Save',toolbarConfig:{},showValidationError:!0,config:{enableSave:!1},setEnableSave:function(value){(arguments.callee.$previous||Ext.plugin.Abstract.prototype.setEnableSave).apply(this,arguments)},showSuccessMessage:function(msg){var successMsg=this.savePanel.down('tbtext[ctype\x3dsuccess]');successMsg.setHtml(this._getMessage(msg||
this.defaultSuccessMsg,'success'));successMsg.show();setTimeout(function(){successMsg&&successMsg.getEl()&&Ext.create('Ext.fx.Anim',{target:successMsg.getEl(),duration:600,from:{opacity:1},to:{opacity:0},listeners:{afteranimate:function(){successMsg&&successMsg.getEl()&&(successMsg.hide(),successMsg.getEl().setStyle('opacity',1))}}})},5E3)},updateEnableSave:function(enable){this.savePanel&&this.savePanel.rendered&&(this.savePanel.down('button[ctype\x3dsave]').setDisabled(!enable),this.savePanel.down('tbtext[ctype\x3dneedSave]').setVisible(enable));
return enable},init:function(cmp){Ext.plugin.Abstract.prototype.init.apply(this,arguments);this._createSavePanel();this.showValidationError&&this._addFieldsListeners()},privates:{_getFormFields:function(){return this.cmp.query('field')},_createSavePanel:function(){var savePanelConfig=this._getSavePanelConfig();this.savePanel&&this.cmp.remove(this.savePanel);this.savePanel=this.cmp.insert(0,Ext.apply(savePanelConfig,this.toolbarConfig))},_getSavePanelConfig:function(){var me=this;return{xtype:'toolbar',
cls:'no-lr-padding-toolbar save-tab-toolbar',items:[{text:me.saveBtnText,ctype:'save',minWidth:80,disabled:!me.getEnableSave(),ui:'primary',handler:function(){me.savePanel.down('tbtext[ctype\x3dsuccess]').hide();me.cmp.fireEvent('save');me.setEnableSave(!1);me._checkActiveErrors()}},{xtype:'tbtext',ctype:'needSave',cls:'highlight-notification',hidden:!me.getEnableSave(),html:me._getMessage(me.needSaveMsg,'info'),listeners:{show:function(){me.savePanel.down('tbtext[ctype\x3dsuccess]').hide()}}},{xtype:'tbtext',
ctype:'success',hidden:!0},{xtype:'tbtext',ctype:'validationErrors',cls:'highlight-notification',hidden:!0,html:me._getMessage(me.validationMsg,'error'),listeners:{show:function(){me.savePanel.down('tbtext[ctype\x3dsuccess]').hide();me.savePanel.down('tbtext[ctype\x3dneedSave]').hide()}}}]}},_getMessage:function(text,cls){return Ext.String.format('\x3cdiv class\x3d"save-tab-toolbar-text {1}"\x3e {0}\x3c/div\x3e',text,cls)},_addFieldsListeners:function(){var me=this,fields=me._getFormFields();Ext.each(fields,
function(field){me.cmp.mon(field,'validitychange',me._checkActiveErrors,me,{delay:30})})},_checkActiveErrors:function(){if(this.showValidationError){var fields=this._getFormFields(),result=!1;Ext.each(fields,function(field){if(field.hasActiveError())return result=!0,!1});result?(this.savePanel.down('tbtext[ctype\x3dvalidationErrors]').show(),this.savePanel.down('button[ctype\x3dsave]').setDisabled(!0)):(this.savePanel.down('tbtext[ctype\x3dvalidationErrors]').hide(),fields=this.getEnableSave(),this.savePanel.down('tbtext[ctype\x3dneedSave]').setVisible(fields),
this.savePanel.down('button[ctype\x3dsave]').setDisabled(!fields))}}}},0,0,0,0,['plugin.savetab'],0,[Veeam.plugin,'SaveTab'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.KeyManagement',Ext.Panel,{controller:'config.tab.keymanagement',viewModel:{type:'config.tab.keymanagement'},scrollable:!0,listeners:{afterrender:'onAfterRender',save:'saveHandler'},cls:'key-management',layout:{type:'vbox',align:'stretch'},defaults:{maskOnDisable:!1},bodyPadding:'24 16 16 16',plugins:[{ptype:'savetab',toolbarConfig:{style:{padding:'0 0 16px 0 !important'}}}],items:[{xtype:'checkbox',boxLabel:'Enable encryption password loss protection',
reference:'enableEncryptionChb',bind:{value:'{settings.managementEnabled}'}},{margin:'24 0 24 0',title:'Managed keys',xclass:'Veeam.base.view.BaseGrid',reference:'grid',hideExportBtn:!0,hideRefreshBtn:!0,flex:2,minHeight:240,header:{maskOnDisable:!1},tbar:{maskOnDisable:!1},bind:{store:'{cryptoKeyStore}',disabled:'{!settings.managementEnabled}'},columns:{maskOnDisable:!0,defaults:{sortable:!0,menuDisabled:!0,flex:1},items:[{itemId:'created-col',header:'Created',dataIndex:'created',xtype:'datecolumn'},
{itemId:'hint-col',header:'Hint',dataIndex:'hint'},{itemId:'active-col',header:'Active',dataIndex:'active',xtype:'booleancolumn',falseText:'No',trueText:'Yes'}]},viewConfig:{emptyText:'No keys found',maskOnDisable:!0,bind:{disabled:'{!settings.managementEnabled}'}},leftButtons:[{text:'Password Recovery',reference:'btnVerify',iconCls:'decrypt',handler:'decryptHandler',cls:'before-separator',bind:{disabled:'{!settings.managementEnabled}'}},{xtype:'tbseparator'},{text:'Generate',reference:'btnGenerate',
iconCls:'add',handler:'generateHandler',bind:{disabled:'{!settings.managementEnabled}'}},{reference:'btnImportKey',text:'Import',iconCls:'import',handler:'importHandler',bind:{disabled:'{!settings.managementEnabled}'}},{text:'Activate',reference:'btnActivate',iconCls:'job-enable',handler:'activateHandler',bind:{disabled:'{!actionEnabled}'}},{reference:'btnDelete',text:'Delete Key',iconCls:'remove',handler:'deleteHandler',bind:{disabled:'{!actionEnabled}'}}],rightButtons:[{text:'Refresh',iconCls:'refresh',
handler:'onRefreshGrid',cls:'before-separator'},{xtype:'tbseparator'},{text:'Export',reference:'btnExportKey',iconCls:'toolbar-export',handler:'exportHandler',bind:{disabled:'{!actionEnabled}'}}]},{xtype:'keymanagementsettings',flex:1,minHeight:120,header:{maskOnDisable:!1},cls:'key-management-settings',bind:{disabled:'{!settings.managementEnabled}'}}],saveData:function(){return this.controller.saveHandler()}},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},
0,0,[MainApp.view.configuration.tab,'KeyManagement'],0);Ext.cmd.derive('Veeam.base.view.BaseTabPanel',Ext.tab.Panel,{alternateClassName:'Veeam.BaseTabPanel',tabBar:{cls:'tabs',dock:'top',layout:{pack:'left'}}},0,['basetabpanel'],'component box container panel tabpanel basetabpanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,basetabpanel:!0},['widget.basetabpanel'],0,[Veeam.base.view,'BaseTabPanel',Veeam,'BaseTabPanel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.EmailNotificationsController',MainApp.base.controller.BaseController,{defaultRoute:'!configuration/email_notifications/smtp',listen:{global:{'confirmunload:check':'checkIfNeedConfim'}},routes:{'!configuration/email_notifications/:param':{action:'onRouteChange',caseInsensitive:!0,conditions:{':param':'(smtp|job|labrequest|flr|license|key)'}}},init:function(){this._setUnloadNotice();MainApp.base.controller.BaseController.prototype.init.apply(this,arguments)},
destroy:function(){this._removeUnloadNotice();this.bindings=Ext.destroy(this.bindings);MainApp.base.controller.BaseController.prototype.destroy.call(this)},afterRender:function(){var me=this,tabId=me.getCurrentRoute().args.id,allowIdx='smtp job labrequest flr license key'.split(' ');tabId&&Ext.Array.contains(allowIdx,tabId)?me._changeCard(tabId):me.silentRedirectTo(me.defaultRoute);me.bindings=me.getViewModel().bind('{showNotificationPanel}',function(value){me._getSaveTabPlugin().setEnableSave(value)})},
onRouteChange:function(action){action&&this._changeCard(action)},checkIfNeedConfim:function(){var vm=this.getViewModel();return vm?!vm.get('notification.hasChanges')&&vm.get('notification.formValid'):!0},onBeforeTabChange:function(panel,card,oldCard){panel=this.getViewModel().get('notification.hasChanges');return oldCard.forceChange?(oldCard.forceChange=!1,!0):panel?(card=Ext.create('Veeam.view.dialogs.SaveConfirmation',{listeners:{discard:this.saveDiscard.bind(this,card,oldCard),save:this.saveApply.bind(this,
card,oldCard)}}),card.show(),!1):!0},onTabChange:function(panel,card){panel=this.getViewModel();panel.set('notification.hasChanges',!1);panel.set('notification.formValid',!0);panel.notify();this.redirectTo('!configuration/email_notifications/'+card.cardId)},saveDiscard:function(newCard,oldCard){var view=this.getView();this.getViewModel().get('settings.'+oldCard.section).reject();oldCard.forceChange=!0;this._getSaveTabPlugin().setEnableSave(!1);view.setActiveTab(newCard)},saveApply:function(newCard,
oldCard){var view=this.getView();this.save().then(function(){view.setActiveTab(newCard)})},save:function(){var me=this,vm=me.getViewModel(),tab=me.getView().getActiveTab(),model=me.getViewModel().get('settings'),smtpSettings=model.getSmtpSettings(),deferred=new Ext.Deferred;if(!model.isValid()||!tab.isValid())return deferred.reject(),deferred;smtpSettings.set('passwordChanged',!!smtpSettings.isModified('password'));me.fireEvent('mask');model.save({failure:function(record,operation){me.fireEvent('unmask');
operation=(record=operation.getResponse())&&record.result;deferred.reject();return Common.ui.Msg.error(operation&&operation.message?operation.message:record.message)},success:function(record,operation){me.fireEvent('unmask');record.commit();vm.set('notification.hasChanges',!1);operation=(record=operation.getResponse().result)&&record.message?record.message:operation.getResponse().message;me._getSaveTabPlugin().showSuccessMessage(operation);deferred.resolve()}});return deferred},privates:{_setUnloadNotice:function(){Ext.GlobalEvents.fireEvent('confirmunload:on',
this)},_removeUnloadNotice:function(){Ext.GlobalEvents.fireEvent('confirmunload:off',this)},_changeCard:function(cardId){var view=this.getView();(cardId=this.lookup(cardId))&&view.setActiveTab(cardId)},_getSaveTabPlugin:function(){return this.getView().getActiveTab().findPlugin('savetab')}}},0,0,0,0,['controller.config.tab.notifications'],0,[MainApp.view.configuration.tab,'EmailNotificationsController'],0);
Ext.cmd.derive('MainApp.model.SmtpNotificationSettings',Ext.data.Model,{fields:[{name:'auth',type:'boolean',defaultValue:!1},{name:'port',type:'int',defaultValue:25},{name:'useSSL',type:'boolean',defaultValue:!1},{name:'server',type:'string'},{name:'timeout',type:'int',defaultValue:100},{name:'username',type:'string'},{name:'password',type:'string',allowNull:!0,serialize:function(value,record){return record.get('passwordChanged')?value:null}},{name:'passwordChanged',type:'boolean',defaultValue:!1,
persist:!1}],writer:{proxy:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'SmtpNotificationSettings'],0);Ext.cmd.derive('MainApp.model.JobNotificationSettings',Ext.data.Model,{fields:[{name:'to'},{name:'form'},{name:'send',type:'boolean'},{name:'subject'},{name:'time',type:'date',dateFormat:'c'}],writer:{proxy:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'JobNotificationSettings'],0);
Ext.cmd.derive('MainApp.model.LabNotificationSettingsStates',Ext.data.Model,{fields:[{name:'approved',defaultValue:!1},{name:'cancelled',defaultValue:!1},{name:'failed',defaultValue:!1},{name:'pending',defaultValue:!1},{name:'ready',defaultValue:!1},{name:'stopped',defaultValue:!1}],writer:{proxy:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'LabNotificationSettingsStates'],0);
Ext.cmd.derive('MainApp.model.LabNotificationSettings',Ext.data.Model,{fields:[{name:'to'},{name:'form'},{name:'send',type:'boolean'},{name:'subject'},{name:'states',persist:!0,reference:'LabNotificationSettingsStates',allowNull:!1}],writer:{proxy:{type:'json',writeAllFields:!0}},isChanged:function(){return this.dirty||this.getStates()&&this.getStates().dirty}},0,0,0,0,0,0,[MainApp.model,'LabNotificationSettings'],0);
Ext.cmd.derive('MainApp.model.FlrNotificationSettings',Ext.data.Model,{fields:[{name:'to'},{name:'form'},{name:'send',type:'boolean'}],writer:{proxy:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'FlrNotificationSettings'],0);Ext.cmd.derive('MainApp.model.CryptoNotificationSettings',Ext.data.Model,{fields:[{name:'to'},{name:'form'},{name:'send',type:'boolean'}],writer:{proxy:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'CryptoNotificationSettings'],0);
Ext.cmd.derive('MainApp.model.LicenseNotificationSettings',Ext.data.Model,{fields:[{name:'to'},{name:'form'},{name:'send',type:'boolean'},{name:'disableSupportExpNotification',type:'boolean'}],writer:{proxy:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'LicenseNotificationSettings'],0);
Ext.cmd.derive('MainApp.model.NotificationSettings',Ext.data.Model,{fields:[{name:'smtpSettings',reference:'SmtpNotificationSettings',allowNull:!1},{name:'jobSettings',reference:'JobNotificationSettings',allowNull:!1},{name:'labSettings',reference:'LabNotificationSettings',allowNull:!1},{name:'flrSettings',reference:'FlrNotificationSettings',allowNull:!1},{name:'licenseSettings',reference:'LicenseNotificationSettings',allowNull:!1},{name:'keySettings',reference:'CryptoNotificationSettings',allowNull:!1}],
proxy:{type:'direct',api:{read:'Api.getNotificationSettings',update:'Api.updateNotificationSettings'},reader:{type:'json'},writer:{type:'json',writeAllFields:!0}},commit:function(silent,modifiedFieldNames){Ext.data.Model.prototype.commit.call(this,silent,modifiedFieldNames);var me=this;Object.keys(me.associations).forEach(function(k){(k=me[me.associations[k].instanceName])&&k.commit(silent,modifiedFieldNames)})},isChanged:function(){return this.getSmtpSettings().dirty||this.getJobSettings().dirty||
this.getLabSettings().dirty||this.getFlrSettings().dirty||this.getLicenseSettings().dirty||this.getKeySettings().dirty}},0,0,0,0,['model.notification-settings'],0,[MainApp.model,'NotificationSettings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.EmailNotificationsModel',Ext.app.ViewModel,{links:{settings:{type:'NotificationSettings',id:0}},data:{notification:{hasChanges:!1,formValid:!0}},formulas:{showNotificationPanel:{bind:{hasChanges:'{notification.hasChanges}',formValid:'{notification.formValid}'},get:function(data){return data.hasChanges&&data.formValid}}}},0,0,0,0,['viewmodel.config.tab.notifications'],0,[MainApp.view.configuration.tab,'EmailNotificationsModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.BaseController',Ext.app.ViewController,{control:{'button[action\x3dtest]':{click:'test'},field:{validitychange:{fn:'onValidate',buffer:100},change:{fn:'onFormDataChange',buffer:120}}},onValidate:function(){var me=this,vm=me.getViewModel();setTimeout(function(){vm.set('notification.formValid',!me._hasActiveErrors())})},onFormDataChange:function(field){var me=this,vm=me.getViewModel(),model=me.getViewModel().get('settings');setTimeout(function(){vm&&
(vm.set('notification.hasChanges',model.isChanged()),me.onValidate())})},onSettingsChange:function(field,value){var settings=this.getViewModel().get('settings.'+field.section);value||settings.getModified('send')||settings.reject();this.onFormDataChange(field)},test:function(button,e){var me=this;e=button.section;if(!e)return!1;if(!me.getView().isValid())return Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',message:'Please fill in all the required fields correctly'}),!1;var sectionSettings=
this.getViewModel().get('settings.'+e);button=this.getViewModel().get('settings.smtpSettings').getData({serialize:!0});sectionSettings=sectionSettings.getData();e={jobSettings:RPC.Api.testJobNotificationSettings,flrSettings:RPC.Api.testFLRNotificationSettings,labSettings:RPC.Api.testLabNotificationSettings,keySettings:RPC.Api['notification.testKeyManagementSettings'],licenseSettings:RPC.Api['notification.testLicenseNotifications']}[e];me.fireEvent('mask');Common.Request.thenable(e,button,sectionSettings).then(function(response){me.fireEvent('unmask');
Ext.GlobalEvents.fireEvent('tabnotification',{type:'success',message:response.message})},function(error){me.fireEvent('unmask');Common.ui.Msg.error(error.message)})},privates:{_hasActiveErrors:function(){var view=this.getView();view=view?view.query('field'):[];var result=!1;Ext.each(view,function(field){if(field.hasActiveError())return result=!0,!1});return result}}},0,0,0,0,['controller.config.tab.notifications.base'],0,[MainApp.view.configuration.tab.notifications,'BaseController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.Base',Ext.form.Panel,{controller:'config.tab.notifications.base',viewModel:{},saveData:function(){return this.controller.saveHandler()}},0,0,['component','box','container','panel','form'],{component:!0,box:!0,container:!0,panel:!0,form:!0},0,0,[MainApp.view.configuration.tab.notifications,'Base'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.ServerSettingsController',MainApp.view.configuration.tab.notifications.BaseController,{onSmtpSettingsChange:function(field,value){var vm=this.getViewModel(),smtpSettings=vm.get('settings.smtpSettings');value||smtpSettings.getModified('auth')||(vm.set('settings.smtpSettings.username',null),vm.set('settings.smtpSettings.password',null));this.onFormDataChange(field)}},0,0,0,0,['controller.config.tab.notifications.serversettings'],0,[MainApp.view.configuration.tab.notifications,
'ServerSettingsController'],0);
Ext.cmd.derive('Veeam.plugin.DisableInputAutocomplete',Ext.plugin.Abstract,{init:function(){if(!this.cmp.isFormField)throw Error('The plugin "DisableInputAutocomplete" can work only with form fields');this.cmp.setReadOnly(!0);Ext.plugin.Abstract.prototype.init.apply(this,arguments);this.cmp.on('focus',this._onFocus,this)},destroy:function(){this.cmp.un('focus',this._onFocus,this);Ext.plugin.Abstract.prototype.destroy.apply(this,arguments)},_onFocus:function(field){field.setReadOnly(!1)}},0,0,0,0,
['plugin.noautocomplete'],0,[Veeam.plugin,'DisableInputAutocomplete'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.ServerSettings',MainApp.view.configuration.tab.notifications.Base,{controller:'config.tab.notifications.serversettings',items:[{xtype:'fieldcontainer',layout:'hbox',defaults:{labelAlign:'top'},items:[{xtype:'textfield',anchor:'100%',allowBlank:!0,fieldLabel:'SMTP server name or address',bind:'{settings.smtpSettings.server}',flex:3},{xtype:'numberfield',fieldLabel:'Port',allowDecimals:!1,allowNegative:!1,allowBlank:!1,regex:/^\d+$/,bind:'{settings.smtpSettings.port}',
flex:1,margin:'0 0 0 16'}]},{xtype:'fieldcontainer',cls:'notification-block-fields',fieldDefaults:{labelWidth:180,labelAlign:'top'},items:[{xtype:'numberfield',fieldLabel:'Timeout (1 to 3600 seconds)',allowDecimals:!1,allowBlank:!1,minValue:1,maxValue:3600,bind:'{settings.smtpSettings.timeout}'}]},{xtype:'checkbox',name:'use-ssl',boxLabel:'Use SSL',bind:{value:'{settings.smtpSettings.useSSL}'}},{xtype:'checkbox',boxLabel:'Requires authentication',bind:'{settings.smtpSettings.auth}',listeners:{change:'onSmtpSettingsChange',
buffer:110}},{xtype:'fieldcontainer',cls:'notification-block-fields',layout:'anchor',fieldDefaults:{labelWidth:66},items:[{xtype:'textfield',anchor:'100%',fieldLabel:'Username',allowBlank:!1,plugins:['noautocomplete'],bind:{value:'{settings.smtpSettings.username}',disabled:'{!settings.smtpSettings.auth}'}},{xtype:'textfield',anchor:'100%',inputType:'password',fieldLabel:'Password',allowBlank:!1,enableKeyEvents:!0,plugins:['noautocomplete'],bind:{value:'{settings.smtpSettings.password}',disabled:'{!settings.smtpSettings.auth}'}}]}]},
0,['config-notifications-serversettings','config.notifications.serversettings'],'component box container panel form config.notifications.serversettings config-notifications-serversettings'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'config.notifications.serversettings':!0,'config-notifications-serversettings':!0},['widget.config-notifications-serversettings','widget.config.notifications.serversettings'],0,[MainApp.view.configuration.tab.notifications,'ServerSettings'],0);
Ext.cmd.derive('Veeam.view.dialogs.Signpost',Veeam.base.view.BaseWindow,{cls:'signpost',minWidth:260,minHeight:80,modal:!1,resizable:!1,draggable:!1,bodyPadding:0,config:{message:''},header:!1,layout:{type:'hbox'},setMessage:function(msg){(arguments.callee.$previous||Veeam.base.view.BaseWindow.prototype.setMessage).apply(this,arguments);this.rendered&&this.down('[ctype\x3dwindowBody]').setHtml(msg)},items:[{xtype:'component',cls:'message-panel',ctype:'windowBody',padding:'8 4 8 8',flex:1},{xtype:'button',
ui:'text',cls:'close-button',iconCls:'close',padding:4,handler:function(btn){btn.up('signpost').close()}}],listeners:{afterrender:function(win){win.down('[ctype\x3dwindowBody]').setHtml(win.getMessage());Ext.fly(document.body).on('click',win.closeByOutsideClick,win)},beforedestroy:function(win){Ext.fly(document.body).un('click',win.closeByOutsideClick,win)}},closeByOutsideClick:function(e){Ext.fly(e.getTarget()).findParent('div#'+this.getId())||this.close()}},0,['signpost'],'component box container panel window signpost'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,window:!0,signpost:!0},['widget.signpost'],0,[Veeam.view.dialogs,'Signpost'],0);
Ext.cmd.derive('Veeam.plugin.Signpost',Ext.plugin.Abstract,{init:function(){Ext.plugin.Abstract.prototype.init.apply(this,arguments);if(!this.cmp.isFormField)throw Error('The plugin "Signpost" can work only with form fields');this.cmp.on('afterrender',this._addHelpIcon,this)},destroy:function(){this.cmp.helpIcon&&this.cmp.helpIcon.un('click',this._clickHandler,this);this.cmp.un('afterrender',this._addHelpIcon,this);Ext.plugin.Abstract.prototype.destroy.apply(this,arguments)},initConfig:function(config){config.cmp.getMessage=
function(){return config.cmp.message};config.cmp.setMessage=function(msg){return config.cmp.message=msg};this.callParent(arguments)},privates:{_addHelpIcon:function(field){field=field.getEl().createChild({tag:'div',cls:'field-help-icon'});this.cmp.helpIcon=field;this.cmp.helpIcon.on('click',this._clickHandler,this)},_clickHandler:function(e){var me=this,rightSpace=Ext.fly(document.body).getWidth()-e.pageX,win=Ext.create('Veeam.view.dialogs.Signpost',{message:me.cmp.getMessage()});setTimeout(function(){rightSpace<
win.minWidth?(win.setMaxWidth(e.pageX),win.showBy(me.cmp.helpIcon,'br-tr?',[-3,2])):(win.setMaxWidth(rightSpace),win.showBy(me.cmp.helpIcon,'bl-tl?',[11,2]))},100)}}},0,0,0,0,['plugin.signpost'],0,[Veeam.plugin,'Signpost'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.JobSummary',MainApp.view.configuration.tab.notifications.Base,{items:[{xtype:'container',margin:'0 0 8 0',layout:'hbox',items:[{xtype:'checkbox',action:'test',flex:1,hideLabel:!0,boxLabel:'Send daily notification at',section:'jobSettings',bind:{value:'{settings.jobSettings.send}'},listeners:{change:'onSettingsChange',buffer:110}},{xtype:'timefield',hideLabel:!0,width:260,allowBlank:!1,padding:'0 24 0 0',valuePublishEvent:['change','select',
'blur'],bind:{value:'{settings.jobSettings.time}',disabled:'{!settings.jobSettings.send}'}}]},{xtype:'fieldcontainer',layout:'anchor',fieldDefaults:{anchor:'100%',labelWidth:50},items:[{xtype:'textfield',vtype:'multiemail',allowBlank:!1,invalidText:'Enter e-mail address',fieldLabel:'From',padding:'0 24 0 0',bind:{value:'{settings.jobSettings.from}',disabled:'{!settings.jobSettings.send}'}},{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'To',invalidText:'Enter one or more e-mail addresses separated by semicolon',
padding:'0 24 0 0',bind:{value:'{settings.jobSettings.to}',disabled:'{!settings.jobSettings.send}'}},{xtype:'textfield',fieldLabel:'Subject',allowBlank:!1,message:'\x3cdiv style\x3d"font-weight: bold;"\x3eAvailable parameters:\x3c/div\x3e\x3cdiv\x3e%1 \x26mdash; number of errors (last 24 hours)\x3c/div\x3e\x3cdiv\x3e%2 \x26mdash; number of warnings (last 24 hours)\x3c/div\x3e\x3cdiv\x3e%3 \x26mdash; number of successes (last 24 hours)\x3c/div\x3e\x3cdiv\x3e%4 \x26mdash; number of errors (latest session)\x3c/div\x3e\x3cdiv\x3e%5 \x26mdash; number of warnings (latest session)\x3c/div\x3e\x3cdiv\x3e%6 \x26mdash; number of successes (latest session)\x3c/div\x3e',
plugins:['signpost'],bind:{value:'{settings.jobSettings.subject}',disabled:'{!settings.jobSettings.send}'}}]},{xtype:'box',height:10},{xtype:'button',text:'Test',action:'test',section:'jobSettings',ui:'primary',bind:{disabled:'{!settings.jobSettings.send}'}}]},0,['config-notifications-jobsummary','config.notifications.jobsummary'],'component box container panel form config.notifications.jobsummary config-notifications-jobsummary'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'config.notifications.jobsummary':!0,
'config-notifications-jobsummary':!0},['widget.config-notifications-jobsummary','widget.config.notifications.jobsummary'],0,[MainApp.view.configuration.tab.notifications,'JobSummary'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.LabRequests',MainApp.view.configuration.tab.notifications.Base,{items:[{xtype:'checkbox',boxLabel:'Send lab request notifications',bind:'{settings.labSettings.send}',section:'labSettings',listeners:{change:'onSettingsChange',buffer:110}},{xtype:'fieldcontainer',layout:'anchor',fieldDefaults:{anchor:'100%',labelWidth:50},items:[{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'From',bind:{disabled:'{!settings.labSettings.send}',
value:'{settings.labSettings.from}'}},{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'To',bind:{disabled:'{!settings.labSettings.send}',value:'{settings.labSettings.to}'}},{xtype:'textfield',fieldLabel:'Subject',allowBlank:!1,bind:{disabled:'{!settings.labSettings.send}',value:'{settings.labSettings.subject}'}},{xtype:'fieldcontainer',layout:'checkboxgroup',itemId:'cb-lab-statuses',columns:[110,88,110],labelWidth:114,fieldLabel:'Notify on statuses',defaultType:'checkbox',items:[{boxLabel:'Pending',
name:'pending',itemId:'chb-state-pending',bind:{value:'{settings.labSettings.states.pending}'}},{boxLabel:'Ready',name:'ready',itemId:'chb-state-ready',bind:{value:'{settings.labSettings.states.ready}'}},{boxLabel:'Cancelled',name:'cancelled',itemId:'chb-state-cancelled',bind:{value:'{settings.labSettings.states.cancelled}'}},{boxLabel:'Approved',name:'approved',itemId:'chb-state-approved',bind:{value:'{settings.labSettings.states.approved}'},margin:'10 0 0 0'},{boxLabel:'Failed',name:'failed',itemId:'chb-state-failed',
bind:{value:'{settings.labSettings.states.failed}'},margin:'10 0 0 0'},{boxLabel:'Stopped',name:'stopped',itemId:'chb-state-stopped',bind:'{settings.labSettings.states.stopped}',margin:'10 0 0 0'}],bind:{disabled:'{!settings.labSettings.send}'}}]},{xtype:'box',height:10},{xtype:'button',text:'Test',ui:'primary',action:'test',section:'labSettings',bind:{disabled:'{!settings.labSettings.send}'}}]},0,['config-notifications-labrequests','config.notifications.labrequests'],'component box container panel form config.notifications.labrequests config-notifications-labrequests'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'config.notifications.labrequests':!0,'config-notifications-labrequests':!0},['widget.config-notifications-labrequests','widget.config.notifications.labrequests'],0,[MainApp.view.configuration.tab.notifications,'LabRequests'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.RestoreOperators',MainApp.view.configuration.tab.notifications.Base,{items:[{xtype:'checkbox',boxLabel:'Send notifications on restore operations',bind:'{settings.flrSettings.send}',section:'flrSettings',listeners:{change:'onSettingsChange',buffer:110}},{xtype:'fieldcontainer',layout:'anchor',fieldDefaults:{anchor:'100%',labelWidth:36},items:[{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'From',bind:{value:'{settings.flrSettings.from}',
disabled:'{!settings.flrSettings.send}'}},{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'To',bind:{value:'{settings.flrSettings.to}',disabled:'{!settings.flrSettings.send}'}}]},{xtype:'box',height:10},{xtype:'button',text:'Test',action:'test',ui:'primary',section:'flrSettings',bind:{disabled:'{!settings.flrSettings.send}'}}]},0,['config-notifications-restoreoperators','config.notifications.restoreoperators'],'component box container panel form config.notifications.restoreoperators config-notifications-restoreoperators'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'config.notifications.restoreoperators':!0,'config-notifications-restoreoperators':!0},['widget.config-notifications-restoreoperators','widget.config.notifications.restoreoperators'],0,[MainApp.view.configuration.tab.notifications,'RestoreOperators'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.LicenseInfo',MainApp.view.configuration.tab.notifications.Base,{items:[{xtype:'checkbox',boxLabel:'Disable support contract expiration notifications',bind:'{settings.licenseSettings.disableSupportExpNotification}'},{xtype:'checkbox',labelWidth:0,boxLabel:'Send notifications on license usage',bind:'{settings.licenseSettings.send}',section:'licenseSettings',listeners:{change:'onSettingsChange',buffer:110}},{xtype:'fieldcontainer',layout:'anchor',
fieldDefaults:{anchor:'100%',labelWidth:36},items:[{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'From',bind:{value:'{settings.licenseSettings.from}',disabled:'{!settings.licenseSettings.send}'}},{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'To',bind:{value:'{settings.licenseSettings.to}',disabled:'{!settings.licenseSettings.send}'}}]},{xtype:'box',height:10},{xtype:'button',text:'Test',action:'test',section:'licenseSettings',ui:'primary',bind:{disabled:'{!settings.licenseSettings.send}'}}]},
0,['config-notifications-licenseinfo','config.notifications.licenseinfo'],'component box container panel form config.notifications.licenseinfo config-notifications-licenseinfo'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'config.notifications.licenseinfo':!0,'config-notifications-licenseinfo':!0},['widget.config-notifications-licenseinfo','widget.config.notifications.licenseinfo'],0,[MainApp.view.configuration.tab.notifications,'LicenseInfo'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.notifications.KeyManagement',MainApp.view.configuration.tab.notifications.Base,{items:[{xtype:'checkbox',boxLabel:'Send notifications on key management operations',bind:'{settings.keySettings.send}',section:'keySettings',listeners:{change:'onSettingsChange',buffer:110}},{xtype:'fieldcontainer',layout:'anchor',fieldDefaults:{anchor:'100%',labelWidth:36},items:[{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'From',bind:{value:'{settings.keySettings.from}',
disabled:'{!settings.keySettings.send}'}},{xtype:'textfield',vtype:'multiemail',allowBlank:!1,fieldLabel:'To',bind:{disabled:'{!settings.keySettings.send}',value:'{settings.keySettings.to}'}}]},{xtype:'box',height:10},{xtype:'button',text:'Test',ui:'primary',action:'test',section:'keySettings',bind:{disabled:'{!settings.keySettings.send}'}}]},0,['config-notifications-keymanagement','config.notifications.keymanagement'],'component box container panel form config.notifications.keymanagement config-notifications-keymanagement'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'config.notifications.keymanagement':!0,'config-notifications-keymanagement':!0},['widget.config-notifications-keymanagement','widget.config.notifications.keymanagement'],0,[MainApp.view.configuration.tab.notifications,'KeyManagement'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.EmailNotifications',Veeam.base.view.BaseTabPanel,{controller:'config.tab.notifications',viewModel:{type:'config.tab.notifications'},margin:0,bodyPadding:16,tabBar:{margin:'16 16 0 16'},defaults:{maxWidth:450},items:[{xtype:'config-notifications-serversettings',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],title:'Server Settings',section:'smtpSettings',reference:'smtp',cardId:'smtp',listeners:{save:'save'}},{xtype:'config-notifications-jobsummary',
plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],title:'Job Summary',section:'jobSettings',reference:'job',cardId:'job',maxWidth:474,listeners:{save:'save'}},{xtype:'config-notifications-labrequests',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],title:'Lab Requests',section:'labSettings',reference:'labrequest',cardId:'labrequest',listeners:{save:'save'}},{xtype:'config-notifications-restoreoperators',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],title:'Restore Operations',
section:'flrSettings',reference:'flr',cardId:'flr',listeners:{save:'save'}},{xtype:'config-notifications-licenseinfo',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],title:'License Information',section:'licenseSettings',reference:'license',cardId:'license',listeners:{save:'save'}},{xtype:'config-notifications-keymanagement',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],title:'Key Management',section:'keySettings',reference:'key',cardId:'key',listeners:{save:'save'}}],
saveData:function(){return this.controller.save()},listeners:{tabchange:'onTabChange',beforetabchange:'onBeforeTabChange'}},0,0,'component box container panel tabpanel basetabpanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,basetabpanel:!0},0,0,[MainApp.view.configuration.tab,'EmailNotifications'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SettingsController',MainApp.base.controller.BaseController,{defaultRoute:'!configuration/settings/exchange',routes:{'!configuration/settings/:param':{action:'onRouteChange',caseInsensitive:!0,conditions:{':param':'(exchange|dashboard|retention)'}}},listen:{global:{'confirmunload:check':'checkIfNeedConfim'}},init:function(){Ext.GlobalEvents.fireEvent('confirmunload:on',this);MainApp.base.controller.BaseController.prototype.init.apply(this,arguments)},
destroy:function(){Ext.GlobalEvents.fireEvent('confirmunload:off',this);this.bindings=Ext.destroy(this.bindings);MainApp.base.controller.BaseController.prototype.destroy.apply(this,arguments)},onRouteChange:function(action){action&&this._changeCard(action)},afterRender:function(){var me=this,tabId=me.getCurrentRoute().args.id,allowIdx=['exchange','dashboard','retention'];tabId&&Ext.Array.contains(allowIdx,tabId)?me._changeCard(tabId):me.silentRedirectTo(me.defaultRoute);me.bindings=me.getViewModel().bind('{showNotificationPanel}',
function(value){me._getSaveTabPlugin().setEnableSave(value)})},onBeforeTabChange:function(panel,card,oldCard){panel=this.getViewModel().get('showNotificationPanel');return oldCard.forceChange?(oldCard.forceChange=!1,!0):panel?(card=Ext.create('Veeam.view.dialogs.SaveConfirmation',{listeners:{discard:this.saveDiscard.bind(this,card,oldCard),save:this.saveApply.bind(this,card,oldCard)}}),card.show(),!1):!0},onTabChange:function(panel,card){panel=this.getViewModel();panel.set('hasChanges',{exchange:!1,
dashboard:!1,retention:!1});panel.notify();this.redirectTo('!configuration/settings/'+card.cardId)},onShowNotification:function(notificationPanel){var card=this.getView().getActiveTab();notificationPanel.initView=card},onClickSave:function(notificationPanel){notificationPanel.initView&&notificationPanel.initView.saveData()},saveDiscard:function(newCard,oldCard){var view=this.getView();oldCard.resetForm();oldCard.forceChange=!0;this._getSaveTabPlugin().setEnableSave(!1);view.setActiveTab(newCard)},
saveApply:function(newCard,oldCard){var vm=this.getViewModel(),view=this.getView();Ext.isFunction(oldCard.saveData)&&oldCard.saveData().then(function(){vm.notify();view.setActiveTab(newCard)})},checkIfNeedConfim:function(){var vm=this.getViewModel();return vm?!vm.get('showNotificationPanel'):!0},privates:{_changeCard:function(cardId){var view=this.getView();(cardId=this.lookup(cardId))&&view.setActiveTab(cardId)},_getSaveTabPlugin:function(){return this.getView().getActiveTab().findPlugin('savetab')}}},
0,0,0,0,['controller.config.tab.settings'],0,[MainApp.view.configuration.tab,'SettingsController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SettingsModel',Ext.app.ViewModel,{data:{notification:{hasChanges:!1,formValid:!0}},stores:{},formulas:{showNotificationPanel:{bind:{hasChanges:'{notification.hasChanges}',formValid:'{notification.formValid}'},get:function(data){return data.hasChanges&&data.formValid}}}},0,0,0,0,['viewmodel.config.tab.settings'],0,[MainApp.view.configuration.tab,'SettingsModel'],0);
Ext.cmd.derive('MainApp.view.configuration.Block',Ext.Container,{renderTpl:['\x3cdiv id\x3d"{id}-block" class\x3d"notification-block"\x3e','\x3ch3 class\x3d"notification-block__header"\x3e{title}\x3c/h3\x3e','\x3cdiv data-ref\x3d"block" id\x3d"{id}-blockbody" class\x3d"notification-block__body"\x3e{%this.renderContainer(out,values);%}\x3c/div\x3e','\x3c/div\x3e'],initComponent:function(){Ext.apply(this.renderData,{title:this.initialConfig.title||this.title});Ext.container.Container.prototype.initComponent.apply(this,
arguments)},childEls:['block']},0,['config.block'],['component','box','container','config.block'],{component:!0,box:!0,container:!0,'config.block':!0},['widget.config.block'],0,[MainApp.view.configuration,'Block'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.BaseController',Ext.app.ViewController,{control:{field:{validitychange:{fn:'onValidate',buffer:100},change:{fn:'onFormDataChange',buffer:120}}},onValidate:function(){var me=this,vm=me.getViewModel();setTimeout(function(){vm.set('notification.formValid',!me._hasActiveErrors())})},onFormDataChange:function(field){var me=this,vm=me.getViewModel(),model=me.getSettingsModel();setTimeout(function(){vm&&model&&model.isModel&&(vm.set('notification.hasChanges',
model.dirty),me.onValidate())})},getSettingsModel:Ext.emptyFn,privates:{_hasActiveErrors:function(){var view=this.getView();view=view?view.query('field'):[];var result=!1;Ext.each(view,function(field){if(field.hasActiveError())return result=!0,!1});return result}}},0,0,0,0,0,0,[MainApp.view.configuration.tab.settings,'BaseController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.DashboardController',MainApp.view.configuration.tab.settings.BaseController,{initViewModel:function(vm){var record=Ext.create('MainApp.model.DashboardSettings');vm.set('settings',record);record.load({scope:this,callback:function(){vm.set('dashboardSettings',record);vm.notify()}})},getSettingsModel:function(){var vm=this.getViewModel();return vm?vm.get('dashboardSettings'):null},saveHandler:function(){var me=this,view=me.getView(),vm=me.getViewModel(),
model=vm.get('dashboardSettings'),deferred=new Ext.Deferred;if(!model.isValid()||!view.isValid())return deferred.reject(),deferred;me.fireEvent('mask');MainApp.service.rpc.Config.saveDashboardSettings(model.data).then(function(response){vm.set('notification.hasChanges',!1);view.findPlugin('savetab').showSuccessMessage(response.message);model.commit();deferred.resolve()}).otherwise(function(response){deferred.resolve();Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',message:response.message})}).always(function(){me.fireEvent('unmask')});
return deferred}},0,0,0,0,['controller.config.tab.settings.dashboard'],0,[MainApp.view.configuration.tab.settings,'DashboardController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.DashboardModel',Ext.app.ViewModel,{data:{dashboardSettings:void 0},formulas:{endTime:{bind:'{dashboardSettings.backupEnd}',get:function(date){date||(date=this.getDefaultData());return Ext.isDate(date)?date:Ext.Date.parse(date,'c')},set:function(date){var record=this.get('dashboardSettings'),recordData=record.get('backupEnd');recordData=Ext.Date.clone(Ext.isDate(recordData)?recordData:new Date);recordData.setHours(date.getHours());recordData.setMinutes(date.getMinutes());
record.set('backupEnd',recordData)}},startTime:{bind:'{dashboardSettings.backupStart}',get:function(date){date||(date=this.getDefaultData());return Ext.isDate(date)?date:Ext.Date.parse(date,'c')},set:function(date){var record=this.get('dashboardSettings'),recordData=record.get('backupStart');recordData=Ext.Date.clone(Ext.isDate(recordData)?recordData:new Date);recordData.setHours(date.getHours());recordData.setMinutes(date.getMinutes());record.set('backupStart',recordData)}}},getDefaultData:function(){var date=
new Date;date.setHours(0);date.setMinutes(0);date.setSeconds(0);return date}},0,0,0,0,['viewmodel.config.tab.settings.dashboard'],0,[MainApp.view.configuration.tab.settings,'DashboardModel'],0);
Ext.cmd.derive('MainApp.model.DashboardSettings',Ext.data.Model,{fields:[{name:'backupStart',type:'date',dateFormat:'c'},{name:'backupEnd',type:'date',dateFormat:'c'},{name:'visible',type:'boolean'},{name:'isLog',type:'boolean'}],proxy:{type:'direct',api:{read:'Api.getInterfaceSettings',update:'Api.updateInterfaceSettings'},reader:{type:'json'},writer:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'DashboardSettings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.Dashboard',Ext.form.Panel,{controller:'config.tab.settings.dashboard',viewModel:{type:'config.tab.settings.dashboard'},border:!1,maxWidth:446,fieldDefaults:{labelWidth:120},items:[{xtype:'radiogroup',labelWidth:120,fieldLabel:'Activity graph scale',layout:'hbox',cls:'label--bold',defaults:{name:'activity-scale'},items:[{boxLabel:'Logarithmic',inputValue:!0,bind:{value:'{dashboardSettings.isLog}'},margin:'0 20 0 0'},{boxLabel:'Linear',inputValue:!1,
bind:{value:'{!dashboardSettings.isLog}'}}]},{xtype:'checkbox',name:'visibleSettings',boxLabel:'Show backup window',bind:'{dashboardSettings.visible}'},{xtype:'timefield',fieldLabel:'Backup start time',allowBlank:!1,format:'defaultTimeFormat',anchor:'100%',bind:{disabled:'{!dashboardSettings.visible}',value:'{startTime}'}},{xtype:'timefield',fieldLabel:'Backup stop time',anchor:'100%',format:'defaultTimeFormat',allowBlank:!1,valuePublishEvent:['change','select','blur'],bind:{disabled:'{!dashboardSettings.visible}',
value:'{endTime}'}}],listeners:{save:'saveHandler',formchange:{fn:'onChangeFormData'}},saveData:function(){return this.controller.saveHandler()},resetForm:function(){this.getViewModel().get('dashboardSettings').reject()}},0,['configdashboardsettings'],'component box container panel form configdashboardsettings'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,configdashboardsettings:!0},['widget.configdashboardsettings'],0,[MainApp.view.configuration.tab.settings,'Dashboard'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.ExchangeController',MainApp.view.configuration.tab.settings.BaseController,{initViewModel:function(vm){var me=this,record=Ext.create('MainApp.model.ExchangeSettings',{id:0,username:'',password:''});record.load({scope:me,callback:function(){me.destroyed||(vm.set('editingMode',!!record.get('username')),vm.set('exchangeSettings',record),vm.notify())}})},getSettingsModel:function(){var vm=this.getViewModel();return vm?vm.get('exchangeSettings'):
null},saveHandler:function(btn){var me=this,view=me.getView(),vm=me.getViewModel(),model=me.getViewModel().get('exchangeSettings'),deferred=new Ext.Deferred;if(!model.isValid()||!view.isValid())return deferred.reject(),deferred;me.fireEvent('mask');MainApp.service.rpc.Config.saveExchangeSettings(model.data,model.isModified('password')).then(function(response){vm.set('notification.hasChanges',!1);view.findPlugin('savetab').showSuccessMessage(response.message);model.commit();deferred.resolve()}).otherwise(function(response){deferred.resolve();
Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',message:response.message})}).always(function(){me.fireEvent('unmask')});return deferred}},0,0,0,0,['controller.config.tab.settings.exchange'],0,[MainApp.view.configuration.tab.settings,'ExchangeController'],0);
Ext.cmd.derive('MainApp.model.ExchangeSettings',Ext.data.Model,{fields:[{name:'username',type:'string'},{name:'password',type:'string',allowNull:!0}],validators:{username:{type:'length',min:1}},proxy:{type:'direct',api:{read:'Api.exchange.getSettings',update:'Api.exchange.setSettings'},reader:{type:'json'},writer:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'ExchangeSettings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.ExchangeModel',Ext.app.ViewModel,{data:{exchangeSettings:null,editingMode:!0},stores:{},formulas:{allowEmptyPassword:{bind:{bindTo:{model:'{exchangeSettings}',editingMode:'{editingMode}',password:'{exchangeSettings.password}'}},get:function(data){return!data.editingMode||data.model.isModified('password')&&!data.password?!1:!0}}}},0,0,0,0,['viewmodel.config.tab.settings.exchange'],0,[MainApp.view.configuration.tab.settings,'ExchangeModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.Exchange',Ext.form.Panel,{controller:'config.tab.settings.exchange',viewModel:{type:'config.tab.settings.exchange'},border:!1,maxWidth:420,fieldDefaults:{labelWidth:66},items:[{xtype:'displayfield',value:'Specify Active Directory account with administrator privileges'},{xtype:'textfield',flex:1,anchor:'100%',name:'ad-account-username',fieldLabel:'Username',itemId:'ad-account-username',bind:'{exchangeSettings.username}',allowBlank:!1,plugins:['noautocomplete']},
{xtype:'textfield',flex:1,anchor:'100%',inputType:'password',name:'ad-account-password',fieldLabel:' Password',emptyText:'Type in a password',itemId:'ad-account-password',bind:{value:'{exchangeSettings.password}',allowBlank:'{allowEmptyPassword}'},setAllowBlank:function(value){this.allowBlank=value},plugins:['noautocomplete']}],listeners:{save:'saveHandler',formchange:'onChangeFormData'},saveData:function(){return this.controller.saveHandler()},resetForm:function(){this.getViewModel().get('exchangeSettings').reject()}},
0,['configexchangesettings'],'component box container panel form configexchangesettings'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,configexchangesettings:!0},['widget.configexchangesettings'],0,[MainApp.view.configuration.tab.settings,'Exchange'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.RetentionController',MainApp.view.configuration.tab.settings.BaseController,{initViewModel:function(vm){var record=Ext.create('MainApp.model.RetentionSettings',{id:0});record.load({scope:this,callback:function(){vm.set('retentionSettings',record);vm.notify()}})},getSettingsModel:function(){var vm=this.getViewModel();return vm?vm.get('retentionSettings'):null},saveHandler:function(){var me=this,view=me.getView(),vm=me.getViewModel(),model=me.getViewModel().get('retentionSettings'),
deferred=new Ext.Deferred;vm.set('entRetentionInWeeks',vm.get('entRetentionInWeeks'));if(!model.isValid()||!view.isValid())return deferred.reject(),deferred;me.fireEvent('mask');MainApp.service.rpc.Config.saveRetentionSettings(model.data).then(function(response){vm.set('notification.hasChanges',!1);view.findPlugin('savetab').showSuccessMessage(response.message);model.commit();deferred.resolve()}).otherwise(function(response){deferred.resolve();Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',
message:response.message})}).always(function(){me.fireEvent('unmask')});return deferred}},0,0,0,0,['controller.config.tab.settings.retention'],0,[MainApp.view.configuration.tab.settings,'RetentionController'],0);
Ext.cmd.derive('MainApp.model.RetentionSettings',Ext.data.Model,{fields:[{name:'catalogRetentionPeriod',type:'int',defaultValue:3},{name:'entRetentionPeriod',type:'int'},{name:'entRetentionEnabled',type:'bool'},{name:'catalogKeepArchived',type:'bool'},{name:'infoText',type:'string'}],validators:{catalogRetentionPeriod:{type:'range',min:1,max:99},entRetentionPeriod:{type:'range',min:-1,max:371}},proxy:{type:'direct',api:{read:'Api.getSettings',update:'Api.updateSettings'},reader:{type:'json'},writer:{type:'json',
writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'RetentionSettings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.RetentionModel',Ext.app.ViewModel,{defaultEntRetentionWeeks:53,data:{retentionSettings:null},formulas:{isRetentionDisabled:{bind:{bindTo:'{retentionSettings.infoText}',deep:!0},get:function(text){return text&&0<text.length}},entRetentionInWeeks:{bind:{bindTo:'{retentionSettings}',deep:!0},get:function(model){if(!model)return this.defaultEntRetentionWeeks;var period=model.get('entRetentionPeriod');return model.get('entRetentionEnabled')&&0<period?
parseInt(Math.ceil(period/7)):this.defaultEntRetentionWeeks},set:function(value){var enabled=this.get('retentionSettings.entRetentionEnabled');this.set('retentionSettings.entRetentionPeriod',7*parseInt(enabled?value:this.defaultEntRetentionWeeks))}}}},0,0,0,0,['viewmodel.config.tab.settings.retention'],0,[MainApp.view.configuration.tab.settings,'RetentionModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.settings.Retention',Ext.form.Panel,{controller:'config.tab.settings.retention',viewModel:{type:'config.tab.settings.retention'},maxWidth:446,border:!1,items:[{xtype:'panel',title:'Guest file system catalog',modelValidation:!0,marginHeader:'0 0 16 0',layout:{type:'vbox',align:'stretch'},items:[{hideLabel:!0,layout:{type:'vbox',align:'stretchmax'},items:[{hidden:!0,xtype:'widget.alert',bind:{html:'{retentionSettings.infoText}',hidden:'{!isRetentionDisabled}'}},
{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'numberfield',allowBlank:!1,name:'ret-period',fieldLabel:'Retention period',value:3,labelWidth:128,minValue:1,maxValue:99,allowDecimals:!1,allowNegative:!1,regex:/^\d+$/,bind:{value:'{retentionSettings.catalogRetentionPeriod}',disabled:'{isRetentionDisabled}'}},{margin:'0 0 0 16',xtype:'displayfield',value:'month(s)',flex:1}]},{xtype:'box',cls:'text-secondary',width:430,margin:'8 0',html:'By default, guest files system catalog only keeps data for backups currently on disk. With Standard Edition, guest file system catalog only keeps data for backups currently present in backup repositories. With Enterprise Edition, catalog is also kept for archived backups according to the set retention period.'}]}]},
{xtype:'panel',title:'Event history',items:[{layout:'vbox',hideLabel:!0,items:[{xtype:'radio',hideLabel:!0,name:'ent-ret-period-radio',boxLabel:'Keep all',intputValue:!1,bind:'{!retentionSettings.entRetentionEnabled}'},{xtype:'container',layout:'hbox',items:[{xtype:'radio',hideLabel:!0,name:'ent-ret-period-radio',boxLabel:'Keep only last:',intputValue:!0,bind:'{retentionSettings.entRetentionEnabled}'},{xtype:'numberfield',allowBlank:!1,name:'ent-ret-period',width:80,emptyText:12,minValue:1,maxValue:53,
allowDecimals:!1,allowNegative:!1,regex:/^\d+$/,bind:{value:'{entRetentionInWeeks}',disabled:'{!retentionSettings.entRetentionEnabled}'},margin:'0 0 0 16'},{margin:'0 0 0 16',xtype:'displayfield',value:'week(s)'}]}]}]}],listeners:{save:'saveHandler',formchange:'onChangeFormData'},saveData:function(){return this.controller.saveHandler()},resetForm:function(){this.getViewModel().get('retentionSettings').reject()}},0,['configretentionsettings'],'component box container panel form configretentionsettings'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,configretentionsettings:!0},['widget.configretentionsettings'],0,[MainApp.view.configuration.tab.settings,'Retention'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.Settings',Veeam.base.view.BaseTabPanel,{controller:'config.tab.settings',viewModel:{type:'config.tab.settings'},margin:0,bodyPadding:'0 16',tabBar:{margin:'16 16 16 16'},items:[{xtype:'configexchangesettings',title:'Account',cardId:'exchange',reference:'exchange',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],listeners:{save:'onClickSave'}},{xtype:'configdashboardsettings',title:'Chart Settings',cardId:'dashboard',reference:'dashboard',
plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],listeners:{save:'onClickSave'}},{xtype:'configretentionsettings',title:'Session History',cardId:'retention',reference:'retention',plugins:[{ptype:'savetab',toolbarConfig:{padding:'0 0 16 0'}}],listeners:{save:'onClickSave'}}],listeners:{tabchange:'onTabChange',beforetabchange:'onBeforeTabChange'},saveData:function(){return this.getActiveTab().saveData()}},0,0,'component box container panel tabpanel basetabpanel'.split(' '),{component:!0,
box:!0,container:!0,panel:!0,tabpanel:!0,basetabpanel:!0},0,0,[MainApp.view.configuration.tab,'Settings'],0);
Ext.cmd.derive('Veeam.model.MessageSeverity',Ext.Base,{privates:{_iconCls:{1:'success',2:'warning',3:'error',4:'info',5:'progress'},_text:{1:'Success',2:'Warning',3:'Error',4:'Info',5:'In Progress'}},singleton:!0,getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''},getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._text[enumValue]||enumValue}},0,0,0,0,0,0,[Veeam.model,'MessageSeverity'],
function(){this[this.Success=1]='Success';this[this.Warning=2]='Warning';this[this.Error=3]='Error';this[this.Informational=4]='Informational';this[this.InProgress=5]='InProgress'});
Ext.cmd.derive('Veeam.model.report.LogRecord',Ext.data.Model,{fields:[{name:'severity'},{name:'eventTime',type:'date',dateFormat:'c'},{name:'message'},{name:'icon',persist:!1,calculate:function(data){return Veeam.model.MessageSeverity.getIconCls(data.severity)}}]},0,0,0,0,['model.report.logRecord'],0,[Veeam.model.report,'LogRecord'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.sessions.SessionLogModel',Ext.app.ViewModel,{stores:{sessionLogStore:{model:'Veeam.model.report.LogRecord',remoteSort:!0,sorters:{property:'eventTime',direction:'ASC'},autoLoad:!0,proxy:{type:'direct',api:{read:'Api.config.getSessionLog'},extraParams:{id:'{sessionId}'},reader:{type:'json',rootProperty:'items',totalProperty:'totalCount'},simpleSortMode:!0},listeners:{load:'onResize',delay:1}}}},0,0,0,0,['viewmodel.config.tab.sessions.sessionlog'],0,[MainApp.view.configuration.tab.sessions,
'SessionLogModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.sessions.SessionLogController',Ext.app.ViewController,{onExport:function(){var id=this.getViewModel().get('sessionId'),sortInfo=this.getViewModel().getStore('sessionLogStore').getSorters().first(),sort=sortInfo.getProperty();sortInfo=sortInfo.getDirection();(new Veeam.util.ExcelExporter('config.exportSessionLog',[{id:id,sort:sort,dir:sortInfo}])).start()},onRefresh:function(){this.getViewModel().getStore('sessionLogStore').reload()},onClose:function(){this.getView().close()},
onResize:function(){this.getView().center()},severityRenderer:function(value){return Ext.String.format('\x3cspan class\x3d"cell__icon {0}"\x3e{1}\x3c/span\x3e',Veeam.model.MessageSeverity.getIconCls(value),Veeam.model.MessageSeverity.getLabel(value))}},0,0,0,0,['controller.config.tab.sessions.sessionlog'],0,[MainApp.view.configuration.tab.sessions,'SessionLogController'],0);
Ext.cmd.derive('Veeam.manager.ReportAutoUpdateManager',Ext.Base,{singleton:!0,constructor:function(){this._reports=new Ext.util.HashMap;this.mixins.observable.constructor.call(this)},registerReport:function(report){var args=arguments,len;if(1<args.length){var i=0;for(len=args.length;i<len;i++)this.registerReport(args[i])}else{report.isReport||Ext.Error.raise('Instance is not report');var autoUpdateId=report.getAutoUpdateId();null==autoUpdateId&&Ext.Error.raise("Report doesn't have auto-update id");
this._reports.add(report.autoUpdateId,report);Common.signalr.EventManager.subscribeAutoUpdate(autoUpdateId,this._fireReportUpdate.bind(this,autoUpdateId,report)).otherwise(function(message){Common.Log.error('[AutoUpdateManager] Failed to subscribe report {0}. Error: {1}',autoUpdateId,message)})}},unregisterReport:function(report){if(report=report.isReport?report:this._reports.get(report)){var autoUpdateId=report.getAutoUpdateId();autoUpdateId&&Common.signalr.EventManager.unsubscribeAutoUpdate(autoUpdateId).otherwise(function(message){Common.Log.error('[AutoUpdateManager] Failed to unsubscribe report {0}. Error: {1}',
autoUpdateId,message)});return report}return null},privates:{_reports:null,_fireReportUpdate:function(autoUpdateId,report){Common.Log.debug('Report is need to update: {0}',autoUpdateId);report&&report.fireEvent&&report.fireEvent(report.refreshEventName||'refresh')}}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Veeam.manager,'ReportAutoUpdateManager'],0);
Ext.cmd.derive('Veeam.mixin.BaseAutoUpdate',Ext.Mixin,{mixinConfig:{after:{initComponent:'initMixin'},before:{destroy:'destroyMixin'}},config:{autoUpdateId:null,needUpdate:!1,reportHash:null},isReport:!0,isStoreLoading:!1,refreshEventName:'autoupdaterefresh',updateEventName:'updatedata',defaultAutoUpdateTimeout:5E3,initMixin:function(){this.mixinPanelListeners=this.on({destroyable:!0,autoupdaterefresh:'onRefreshData',show:{fn:'onShowCmp',scope:this,delay:100},scope:this})},destroyMixin:function(){this.mixinPanelListeners.destroy();
Veeam.manager.ReportAutoUpdateManager.unregisterReport(this)},onRefreshData:function(){var me=this,waitTime=me._getWaitTime();me._reportIsNotActive()?me.setNeedUpdate(!0):0<waitTime?me.updateTimeoutId=setTimeout(function(){me.onRefreshData()},waitTime):(me.setNeedUpdate(!1),me.fireEvent(me.updateEventName))},onShowCmp:function(cmp){if(cmp.getNeedUpdate())this.onRefreshData()},privates:{_reportIsNotActive:function(){return!this.isVisible()||this.getReportHash()!==window.location.href},_getWaitTime:function(){var lastStoreUpdate=
this.lastStoreUpdate||0;return(this.autoUpdateTimeout||this.defaultAutoUpdateTimeout||0)-((new Date).getTime()-lastStoreUpdate)}}},0,0,0,0,0,0,[Veeam.mixin,'BaseAutoUpdate'],0);
Ext.cmd.derive('Veeam.mixin.ReportAutoUpdate',Veeam.mixin.BaseAutoUpdate,{mixinConfig:{after:{bindStore:'afterSetStore'}},initMixin:function(){Veeam.mixin.BaseAutoUpdate.prototype.initMixin.apply(this,arguments);this.updateDataListener=this.on({destroyable:!0,updatedata:'onUpdateData',scope:this})},destroyMixin:function(){this.removeMixinStoreListeners();this.updateDataListener.destroy();Veeam.mixin.BaseAutoUpdate.prototype.destroyMixin.apply(this,arguments)},afterSetStore:function(s){(s=this.getStore())&&
s.isStore&&!s.isEmptyStore&&(this.removeMixinStoreListeners(),this.addMixinStoreListeners())},onUpdateData:function(){var me=this,store=me.getStore(),view=Ext.isFunction(me.getView)?me.getView():me;store&&(me.isStoreLoading=!0,view.loadMask&&view.loadMask.setDisabled(!0),store.reload({scope:me,callback:function(){me.isStoreLoading=!1;view.loadMask&&view.loadMask.setDisabled(!1);store.lastOptions.autoupdate=void 0},autoupdate:!0}))},onMetadataChanged:function(store,meta){meta.autoUpdateId&&(store=
this.getAutoUpdateId(),null!==store&&store!==meta.autoUpdateId&&Veeam.manager.ReportAutoUpdateManager.unregisterReport(this),this.setAutoUpdateId(meta.autoUpdateId),Veeam.manager.ReportAutoUpdateManager.registerReport(this),this.setReportHash(window.location.href))},onStoreLoadHandler:function(store){this.lastStoreUpdate=(new Date).getTime()},onStoreBeforeLoadHandler:function(store){this.updateTimeoutId&&clearTimeout(this.updateTimeoutId);this.updateTimeoutId=!1},addMixinStoreListeners:function(){var store=
this.getStore(),metaData=store.proxy.reader.metaData;this.mixinStoreListeners=store.on({destroyable:!0,metachange:'onMetadataChanged',beforeload:'onStoreBeforeLoadHandler',load:'onStoreLoadHandler',scope:this});if(store.isLoaded()&&metaData)this.onMetadataChanged(store,metaData)},removeMixinStoreListeners:function(){this.mixinStoreListeners&&this.mixinStoreListeners.destroy()}},0,0,0,0,0,0,[Veeam.mixin,'ReportAutoUpdate'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.sessions.SessionLogGrid',Veeam.base.view.BaseGrid,{columns:{defaults:{sortable:!0,menuDisabled:!0},items:[{header:'Time',dataIndex:'eventTime',xtype:'datecolumn',sortable:!0,width:160},{header:'Status',dataIndex:'severity',sortable:!0,width:124,renderer:'severityRenderer'},{header:'Information',dataIndex:'message',sortable:!1,flex:1,xtype:'descriptioncolumn'}]}},0,['config.tab.sessions.sessionloggrid'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid config.tab.sessions.sessionloggrid'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,'config.tab.sessions.sessionloggrid':!0},['widget.config.tab.sessions.sessionloggrid'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.configuration.tab.sessions,'SessionLogGrid'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.sessions.SessionLog',Veeam.base.view.BaseWindow,{controller:'config.tab.sessions.sessionlog',viewModel:{type:'config.tab.sessions.sessionlog'},title:'Log',layout:'fit',modal:!0,width:800,height:600,minWidth:600,minHeight:400,closable:!0,bodyPadding:'8 16 0 16',items:[{xtype:'config.tab.sessions.sessionloggrid',bind:{store:'{sessionLogStore}'},session:!0,listeners:{exporttoexcel:'onExport'}}],buttons:[{text:'Close',ui:'primary',handler:'onClose'}]},0,
0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.sessions,'SessionLog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SessionsController',Ext.app.ViewController,{routes:{'!configuration/sessions/:id':'onSessionDetail'},initViewModel:function(vm){setTimeout(function(){vm.get('sessionStore').load()})},onCellClick:function(view,td,cellIndex,record,tr,ri,e){if('A'!==e.getTarget().tagName)return!0;e.stopEvent();this.onSessionDetail(record.id)},onSessionDetail:function(id){this.dialog&&'function'===typeof this.dialog.close&&(this.dialog.close(),this.dialog=null);this.dialog=
Ext.create('MainApp.view.configuration.tab.sessions.SessionLog',{viewModel:{data:{sessionId:id}}});this.dialog.show()},collectNow:function(){var me=this;me.fireViewEvent('mask');MainApp.service.BackupServersService.startCollecting().then(function(response){Ext.GlobalEvents.fireEvent('notification',{type:'success',message:response.message})}).always(function(){me.fireViewEvent('unmask')})},onExport:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('config.exportSessions',
[sortInfo])).start()},onRefresh:function(){this.getViewModel().getStore('sessionStore').reload()},onDestroy:function(){this.dialog=Ext.destroy(this.dialog)}},0,0,0,0,['controller.report.sessions'],0,[MainApp.view.configuration.tab,'SessionsController'],0);
Ext.cmd.derive('Veeam.model.SessionStatus',Ext.Base,{privates:{_texts:{0:'In progress...',1:'Success',2:'Warning',3:'Failed'},_iconCls:{0:'progress',1:'success',2:'warning',3:'error'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''},getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'SessionStatus'],function(){this[this.EInProgress=
0]='EInProgress';this[this.ECompletedSuccessfully=1]='ECompletedSuccessfully';this[this.ECompletedWarning=2]='ECompletedWarning';this[this.EFailed=3]='EFailed'});
Ext.cmd.derive('Veeam.model.report.CollectSession',Ext.data.Model,{fields:[{name:'id'},{name:'status',type:'int'},{name:'startDate',type:'date',dateFormat:'c'},{name:'type',type:'int'},{name:'typeLabel'},{name:'initiatedBy'},{name:'statusIconCls',persist:!1,calculate:function(data){return Veeam.model.SessionStatus.getIconCls(data.status)}},{name:'statusText',persist:!1,calculate:function(data){return Veeam.model.SessionStatus.getLabel(data.status)}}]},0,0,0,0,0,0,[Veeam.model.report,'CollectSession'],
0);Ext.cmd.derive('MainApp.view.configuration.tab.SessionsModel',Ext.app.ViewModel,{data:{reportName:'Sessions'},stores:{sessionStore:{model:'Veeam.model.report.CollectSession',remoteSort:!0,sorters:[{property:'startDate',direction:'DESC'}],pageSize:25,proxy:{type:'direct',api:{read:'Api.config.getSessions'},reader:{type:'json',rootProperty:'items',totalProperty:'totalCount'},simpleSortMode:!0}}}},0,0,0,0,['viewmodel.config.tab.sessions'],0,[MainApp.view.configuration.tab,'SessionsModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.Sessions',Veeam.base.view.BaseGrid,{controller:'report.sessions',viewModel:{type:'config.tab.sessions'},padding:'16 16 0 16',stateful:!1,bind:{store:'{sessionStore}'},viewConfig:{emptyText:'No sessions found'},leftButtons:[{text:'Start Collecting',handler:'collectNow',iconCls:'collectnow'}],columns:{defaults:{sortable:!0,menuDisabled:!0,flex:1},items:[{header:'Type',dataIndex:'type',renderer:function(v,row,r){return r.get('typeLabel')},sortable:!0,flex:1},
{header:'Start Time',dataIndex:'startDate',sortable:!0,flex:1,xtype:'nullabledatecolumn'},{header:'Status',dataIndex:'status',xtype:'templatecolumn',tpl:'\x3cspan class\x3d"cell__icon {statusIconCls}"\x3e{statusText}\x3c/span\x3e',sortable:!0,flex:1},{header:'Initiated by',dataIndex:'initiatedBy',sortable:!0,flex:1},{header:'Log',link:!0,sortable:!1,xtype:'templatecolumn',tpl:'\x3ca name\x3d"#"\x3eView\x3c/a\x3e'}]},listeners:{exporttoexcel:'onExport',cellClick:'onCellClick'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.configuration.tab,'Sessions'],0);
Ext.cmd.derive('MainApp.model.VcenterServerInfo',Ext.data.Model,{fields:[{name:'vcName'},{name:'vcId'},{name:'vcVersion'},{name:'vcStatus'},{name:'pluginStatus'},{name:'pluginVersion'},{name:'pluginIntallBy'},{name:'isHtml5Client',type:'boolean',defaultValue:!1}],idProperty:'vcId',getRequestParams:function(creds){return{id:this.get('vcId'),creds:Ext.isObject(creds)?creds:null}},checkPluginVersion:function(credentials){credentials=this.getRequestParams(credentials);return Common.Request.thenable(RPC.Api['vcplugin.checkHost'],
credentials)},installPlugin:function(credentials){credentials=this.getRequestParams(credentials);return Common.Request.thenable(RPC.Api['vcplugin.installPlugin'],credentials)},removePlugin:function(credentials){credentials=this.getRequestParams(credentials);return Common.Request.thenable(RPC.Api['vcplugin.removePlugin'],credentials)}},0,0,0,0,0,0,[MainApp.model,'VcenterServerInfo'],0);
Ext.cmd.derive('MainApp.store.VcenterServers',Ext.data.Store,{model:'MainApp.model.VcenterServerInfo',proxy:{type:'direct',directFn:'Api.vcplugin.getGridData',reader:{type:'json',rootProperty:'items'},simpleSortMode:!0},sorters:{direction:'ASC',property:'vcName'},remoteSort:!0},0,0,0,0,['store.vcenterservers'],0,[MainApp.store,'VcenterServers'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.VcenterServersModel',Ext.app.ViewModel,{data:{hostRemovedMsg:'vCenter Server was removed from backup management server.'},stores:{gridStore:{type:'vcenterservers',autoDestroy:!0,autoLoad:!0}},formulas:{removeDisabled:{bind:'{selectedRecord}',get:function(record){return null==record?!0:record.get('pluginStatus')!==MainApp.model.PluginStatus.Installed}},installDisabled:{bind:'{selectedRecord}',get:function(record){return null==record?!0:record.get('pluginStatus')!==
MainApp.model.PluginStatus.NotInstalled}}}},0,0,0,0,['viewmodel.config.tab.vcenterservers'],0,[MainApp.view.configuration.tab,'VcenterServersModel'],0);Ext.cmd.derive('MainApp.model.UserTask',Ext.Base,{config:{id:null,type:-1,context:{}},constructor:function(config){this.initConfig(config)}},1,0,0,0,0,0,[MainApp.model,'UserTask'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.VcenterServersController',Ext.app.ViewController,{listen:{taskmanager:{complete:'onTaskNotification'}},checkPluginVersion:function(){var model=this.getViewModel().get('selectedRecord');if(model){var context={recordId:model.getId(),isCheck:!0};this._checkVersion(null,model).then(this.handleTask.bind(this,context)).otherwise(this.onReject)}this.notify('Checking host')},hostStatusRenderer:function(status,meta){status===MainApp.model.HostStatus.Warning&&
(meta.attr='data-qtip\x3d"'+this.getViewModel().get('hostRemovedMsg')+'"');return MainApp.model.HostStatus[status]||'-'},statusRenderer:function(status){return MainApp.model.PluginStatus.getLabel(status)||'-'},onReject:function(error){null!=error&&Common.ui.Msg.error(error)},installPlugin:function(){var model=this.getViewModel().get('selectedRecord');if(model){var context={recordId:model.getId(),isInstall:!0};this._install(null,model).then(this.handleTask.bind(this,context)).otherwise(Common.ui.Msg.error)}this.notify('Starting install')},
refresh:function(){var cmp;(cmp=!0===this.isDestroyed?Ext.ComponentQuery.query('#vcenterservers')[0]:this.getView())&&cmp.getStore()&&cmp.getStore().reload()},removePlugin:function(){var me=this,model=this.getViewModel().get('selectedRecord');return Common.ui.Msg.confirm('','Remove vSphere Web Client plug-in?',function(btn){'yes'===btn&&(btn={recordId:model.getId(),isRemove:!0,isHtml5Client:model.get('isHtml5Client')},me._remove(null,model).then(me.handleTask.bind(me,btn)).otherwise(Common.ui.Msg.error),
me.notify('Starting uninstall'))},me)},getCredentials:function(message){var deferred=new Ext.Deferred;Ext.create({xtype:'vcenter-credentials-form',viewModel:{data:{errorMessage:message}},listeners:{commit:function(dialog,data){deferred.resolve(data);dialog.close()},cancel:function(dialog){deferred.reject();dialog.close()}}}).show();return deferred.promise},handleTask:function(context,result){result=result.taskId;var recordId=context.recordId;recordId&&(recordId=this.getViewModel().getStore('gridStore').getById(recordId))&&
recordId.set('pluginStatus',MainApp.model.PluginStatus.Pending);Common.signalr.TaskManager.monitorTask(result,'vcplugin',context)},onTaskSuccess:function(context){!0===context.isRemove&&(context=this.getAfterRemoveMessage(context.isHtml5Client),Ext.GlobalEvents.fireEvent('tabnotification',{type:'success',message:context}))},onTaskError:function(error){console.error('User task failed: ',error);Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',message:error.message?error.message:error})},onTaskFinally:function(){this.refresh()},
notify:function(message){Ext.GlobalEvents.fireEvent('tabnotification',{type:'info',message:message})},onTaskNotification:function(type,context,result){if('vcplugin'===type){this.getView().getStore().reload();if(!1===result.success)this.onTaskError(result);else this.onTaskSuccess(context);return!1}},privates:{getAfterRemoveMessage:function(isHtml5Client){return Ext.String.format('Restart {0} service on vCenter Server to complete uninstallation.',isHtml5Client?'vSphere Client':'vSphere Web Client')},
_checkVersion:function(deffered,model,credentials){deffered=deffered||new Ext.Deferred;var me=this;model.checkPluginVersion(credentials).then(function(task){return deffered.resolve(task)},function(response){return response.request?me.getCredentials(response.message).then(me._checkVersion.bind(me,deffered,model),function(){deffered.reject()}):deffered.reject(response)});return deffered.promise},_install:function(deffered,model,credentials){deffered=deffered||new Ext.Deferred;var me=this;model.installPlugin(credentials).then(function(task){return deffered.resolve(task)},
function(response){return response.request?me.getCredentials(response.message).then(me._install.bind(me,deffered,model),function(){deffered.reject(null)}):deffered.reject(response)});return deffered.promise},_remove:function(deffered,model,credentials){deffered=deffered||new Ext.Deferred;var me=this;model.removePlugin(credentials).then(function(task){return deffered.resolve(task)},function(response){return response.request?me.getCredentials(response.message).then(me._remove.bind(me,deffered,model),
function(){deffered.reject(null)}):deffered.reject(response)});return deffered.promise}}},0,0,0,0,['controller.config.tab.vcenterservers'],0,[MainApp.view.configuration.tab,'VcenterServersController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcenter.CredentialWindowController',Ext.app.ViewController,{control:{form:{validitychange:'onFormValidation'}},afterRender:function(){var form=this.getView().down('form');this.keyNav=Ext.create('Ext.util.KeyNav',form.el,{enter:this.okHandler,scope:this})},captureData:function(){return this.getViewModel().getData()},okHandler:function(){var view=this.getView();if(view.down('form').isValid()){var data=this.captureData();this.fireViewEvent('commit',view,
data)}},cancelHandler:function(){this.fireViewEvent('cancel',this.getView())},onFormValidation:function(form,valid){this.lookupReference('okButton').setDisabled(!valid)},destroy:function(){Ext.destroy(this.keyNav);Ext.app.ViewController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.config.tab.vcenter.credentialwindow'],0,[MainApp.view.configuration.tab.vcenter,'CredentialWindowController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcenter.CredentialWindow',Veeam.base.view.BaseWindow,{controller:'config.tab.vcenter.credentialwindow',viewModel:{data:{username:null,password:null,port:443,errorMessage:null}},initComponent:function(){Ext.apply(this,{title:'Web Client Plug-in',items:this.buildBody(),modal:!0,closable:!1,resizable:!1,width:400,buttons:this.buildButtons(),border:!1});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},buildBody:function(){return{xtype:'form',
layout:{type:'vbox',align:'stretch'},items:[{xtype:'alert',flex:1,ui:'error',bind:{hidden:'{!errorMessage}',html:'{errorMessage}'},hidden:!0,anchor:'100%'},{xtype:'displayfield',value:'Specify vCenter Server connection account:',hideLabel:!0,anchor:'100%',flex:1},{xtype:'textfield',allowBlank:!1,fieldLabel:'Username',bind:'{username}',flex:1,anchor:'100%'},{xtype:'textfield',fieldLabel:'Password',allowBlank:!1,inputType:'password',bind:'{password}',flex:1,anchor:'100%'},{xtype:'fieldcontainer',items:{xtype:'numberfield',
allowBlank:!1,fieldLabel:'Port',width:80,value:443,allowNegative:!1,bind:'{port}'}}]}},buildButtons:function(){return[{text:'OK',reference:'okButton',handler:'okHandler',ui:'primary'},{text:'Cancel',handler:'cancelHandler',ui:'alternate'}]}},0,['vcenter-credentials-form'],'component box container panel window vcenter-credentials-form'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'vcenter-credentials-form':!0},['widget.vcenter-credentials-form'],0,[MainApp.view.configuration.tab.vcenter,
'CredentialWindow'],0);Ext.cmd.derive('MainApp.model.HostStatus',Ext.Base,{singleton:!0},0,0,0,0,0,0,[MainApp.model,'HostStatus'],function(){this[this.Ok=0]='Ok';this[this.Warning=1]='Warning';this[this.Error=2]='Error'});
Ext.cmd.derive('MainApp.model.PluginStatus',Ext.Base,{privates:{_texts:{0:'Unknown',1:'Not installed',2:'Installed',3:'Not supported',4:'Pending...'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[MainApp.model,'PluginStatus'],function(){this[this.Unknown=0]='Unknown';this[this.NotInstalled=1]='NotInstalled';this[this.Installed=2]='Installed';this[this.NotSupported=3]='NotSupported';this[this.Pending=
4]='Pending'});
Ext.cmd.derive('MainApp.view.configuration.tab.VcenterServers',Veeam.base.view.BaseGrid,{padding:'16 16 0 16',viewModel:{type:'config.tab.vcenterservers'},controller:'config.tab.vcenterservers',itemId:'vcenterservers',layout:'fit',hideExportBtn:!0,columns:{defaults:{menuDisabled:!0,sortableColumns:!0,multiColumnSort:!1,flex:1},items:[{header:'vCenter Server',dataIndex:'vcName'},{header:'vCenter Server Version',dataIndex:'vcVersion',align:'right'},{header:'vCenter Server Status',dataIndex:'vcStatus',renderer:'hostStatusRenderer'},
{header:'Plug-in Status',dataIndex:'pluginStatus',renderer:'statusRenderer'},{header:'Plug-in Version',dataIndex:'pluginVersion',align:'right'},{header:'Installed by',dataIndex:'pluginIntallBy'}]},leftButtons:[{text:'Check version …',iconCls:'jobs',handler:'checkPluginVersion',disabled:!0,bind:{disabled:'{!selectedRecord}'}},{text:'Install',iconCls:'addserver',handler:'installPlugin',disabled:!0,bind:{disabled:'{installDisabled}'}},{text:'Remove',itemId:'remove-btn',iconCls:'removeserver',handler:'removePlugin',
disabled:!0,bind:{disabled:'{removeDisabled}'}}],bind:{store:'{gridStore}',selection:'{selectedRecord}'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,0,[MainApp.view.configuration.tab,'VcenterServers'],0);
Ext.cmd.derive('MainApp.model.Repository',Ext.data.Model,{fields:[{name:'id'},{name:'name'},{name:'backupServerId'}]},0,0,0,0,0,0,[MainApp.model,'Repository'],0);
Ext.cmd.derive('MainApp.model.TemplateJob',Ext.data.Model,{fields:[{name:'id'},{name:'name',convert:function(value){return Ext.String.htmlEncode(value)}},{name:'backupServerId',defaultValue:null}],'static':{getDefault:function(){return new this({id:Common.util.Constants.EMPTY_GUID,name:'Default settings'})},getDefaultId:function(){return Common.util.Constants.EMPTY_GUID}}},0,0,0,0,0,0,[MainApp.model,'TemplateJob'],0);
Ext.cmd.derive('MainApp.model.AccountType',Ext.Base,{singleton:!0},0,0,0,0,0,0,[MainApp.model,'AccountType'],function(){this[this.USER=2]='USER';this[this.GROUP=1]='GROUP'});
Ext.cmd.derive('MainApp.model.Workspace',Ext.data.Model,{constructor:function(data,session){Ext.apply(this,{fields:[{name:'id'},{name:'name'},{name:'accountType',type:'integer',defaultValue:MainApp.model.AccountType.USER},{name:'domainName'}]});Ext.data.Model.prototype.constructor.call(this,data,session)}},1,0,0,0,0,0,[MainApp.model,'Workspace'],0);
Ext.cmd.derive('MainApp.model.VcWorkspaceConfiguration',Ext.data.Model,{fields:[{name:'id',type:'string',allowNull:!0},{name:'workspace',allowNull:!1,reference:{type:'Workspace',unique:!0,role:'workspace',inverse:{autoLoad:!1}}},{name:'useDefaultSettings',type:'boolean'},{name:'repositoryId',allowNull:!1,reference:{type:'Repository',unique:!0,inverse:{autoLoad:!1}}},{name:'quotaGb',type:'integer',defaultValue:100},{name:'quotaUnit',type:'integer',defaultValue:1},{name:'templateJob',allowNull:!0,reference:{type:'TemplateJob',
unique:!0,inverse:{autoLoad:!1}}},{name:'perUser',allowNull:!1,type:'boolean'},{name:'jobScheduleType',allowNull:!1,type:'integer'},{name:'tags',defaultValue:[]}],proxy:{type:'direct',api:{prefix:'Api.vsphere.config',update:'saveWorkspaceConfiguration',create:'saveWorkspaceConfiguration'},reader:{type:'json'},writer:{type:'json',writeAllFields:!0}},getTemplateJobSettings:function(){var jobId=this.get('templateJob'),workspaceConfigId=!0===this.phantom?null:this.get('id');return Common.Request.thenable(RPC.Api['vsphere.config.getTemplateJobSettings'],
workspaceConfigId,jobId)}},0,0,0,0,0,0,[MainApp.model,'VcWorkspaceConfiguration'],0);
Ext.cmd.derive('MainApp.store.VcWorkspaceConfigurations',Ext.data.Store,{model:'MainApp.model.VcWorkspaceConfiguration',autoLoad:!1,root:'items',sorters:[{property:'workspace',direction:'ASC'}],proxy:{type:'direct',directFn:'Api.vsphere.config.getAllWorkspaceConfigurations',reader:{type:'json',rootProperty:'items'},simpleSortMode:!0},remoteSort:!0},0,0,0,0,['store.vsphere.configurations'],0,[MainApp.store,'VcWorkspaceConfigurations'],0);
Ext.cmd.derive('MainApp.store.VcWorkspaceRepositories',Ext.data.Store,{model:'MainApp.model.Repository',autoLoad:!1,proxy:{type:'direct',directFn:'Api.vsphere.config.getConfigurationRepositories',reader:{type:'json',rootProperty:'items'}}},0,0,0,0,['store.vsphere.repositories'],0,[MainApp.store,'VcWorkspaceRepositories'],0);
Ext.cmd.derive('MainApp.store.VcWorkspaceTemplateJobs',Ext.data.Store,{model:'MainApp.model.TemplateJob',autoLoad:!1,proxy:{type:'direct',directFn:'Api.vsphere.config.getTemplateJobs',reader:{type:'json',rootProperty:'items'}}},0,0,0,0,['store.vsphere.templateJobs'],0,[MainApp.store,'VcWorkspaceTemplateJobs'],0);
Ext.cmd.derive('MainApp.model.VsphereTag',Ext.data.Model,{fileds:[{name:'tag',type:'string',convert:function(value){return Ext.util.Format.htmlEncode(value)}}]},0,0,0,0,0,0,[MainApp.model,'VsphereTag'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.VsphereModel',Ext.app.ViewModel,{data:{theRow:null,delegationMode:{type:null,value:null}},formulas:{disabledDelegationModeButton:function(get){return!Ext.isNumber(get('delegationMode.type'))},hiddenTags:function(get){return get('delegationMode.type')!==MainApp.model.VSphereBrowseConstraintType.TAG}},stores:{gridStore:{type:'vsphere.configurations',session:!0,autoLoad:!0},repositories:{type:'vsphere.repositories',autoLoad:!0,session:!0},templateJobs:{type:'vsphere.templateJobs',
autoLoad:!0,session:!0},units:{type:'array',fields:['value','text'],data:[[1,'GB'],[1024,'TB']]},workspaceTypes:{type:'array',fields:['value','text'],data:[[2,'User'],[1,'Group']]},rolesStore:{type:'app-store',rpcMethod:'Api.config.selfservice.vsphere.getroles',fields:['id','name'],autoLoad:!0}}},0,0,0,0,['viewmodel.config.tab.vsphere'],0,[MainApp.view.configuration.tab.vsphere,'VsphereModel'],0);
Ext.cmd.derive('MainApp.model.VSphereBrowseConstraintType',Ext.Base,{singleton:!0},0,0,0,0,0,0,[MainApp.model,'VSphereBrowseConstraintType'],function(){this[this.PERMISSION=0]='PERMISSION';this[this.ROLE=1]='ROLE';this[this.TAG=2]='TAG'});
Ext.cmd.derive('MainApp.store.VcWorkspaces',Ext.data.Store,{model:'MainApp.model.Workspace',autoLoad:!1,proxy:{type:'direct',directFn:'Api.vsphere.config.getWorkspaces',reader:{type:'json',rootProperty:'items'}}},0,0,0,0,['store.vsphere.workspaces'],0,[MainApp.store,'VcWorkspaces'],0);
Ext.cmd.derive('MainApp.model.JobScheduleType',Ext.Base,{singleton:!0},0,0,0,0,0,0,[MainApp.model,'JobScheduleType'],function(){this[this.FULL=0]='FULL';this[this.PARTIAL=1]='PARTIAL';this[this.RANDOM=2]='RANDOM';this[this.DISABLED=3]='DISABLED'});
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.FormModel',Ext.app.ViewModel,{data:{detailsVisible:!1,detailsLinkText:'Show',currentAccountType:1,tagsAllowed:!1},stores:{repositories:{type:'vsphere.repositories',autoLoad:!0,session:!0,listeners:{load:'onRepositoryStoreLoad'}},templateJobs:{type:'vsphere.templateJobs',autoLoad:!0,session:!0,listeners:{load:'onTemplateJobStoreLoad'}},units:{type:'array',fields:['value','text'],data:[[1,'GB'],[1024,'TB']]},workspaceTypes:{type:'array',fields:['value',
'text'],data:[[2,'User'],[1,'Group']]},workspaces:{type:'vsphere.workspaces',autoLoad:!1,proxy:{extraParams:'{extraParams}'},session:!0,listeners:{load:'onStoreLoad'}},jobScheduleTypes:{type:'array',autoDestroy:!0,fields:['value','text'],data:'{jobScheduleTypesData}'},tagsStore:{type:'app-store',rpcMethod:'Api.config.selfservice.vsphere.getTags',model:'MainApp.model.VsphereTag',autoLoad:'{tagsAllowed}',autoDestroy:!0}},formulas:{selectedAccountType:{bind:{workspace:'{theWorkspace}',currentType:'{currentAccountType}'},
deep:!0,get:function(binding){return binding.workspace&&binding.workspace.get('accountType')?(binding=binding.workspace.get('accountType'),this.set('currentAccountType',binding),binding):binding.currentType},set:function(value){this.set('currentAccountType',value)}},extraParams:{bind:'{currentAccountType}',get:function(){return{accountType:this.get('currentAccountType')}}},isGroupAccountSelected:{bind:'{currentAccountType}',deep:!0,get:function(val){return val===MainApp.model.AccountType.GROUP}},
currentWorkspace:{bind:'{theWorkspace}',get:function(ws){return ws},set:function(value){this.set('theWorkspace',value);value&&this.set('theModel.workspaceId',value.get('id'))}},currentRepository:{bind:'{theModel}',get:function(model){return model&&model.getRepository()},set:function(value){return this.set('theModel.repository',value)}},jobScheduleTypesData:{get:function(){return[[MainApp.model.JobScheduleType.FULL,'Allow: Tenant has full access to all job scheduling options'],[MainApp.model.JobScheduleType.PARTIAL,
'Allow: Tenant can create daily and monthly jobs only'],[MainApp.model.JobScheduleType.RANDOM,'Deny: Creates daily jobs with randomized start time within the backup window'],[MainApp.model.JobScheduleType.DISABLED,'Deny: Creates jobs with no schedule assigned']]}},tagString:{bind:'{theModel}',get:function(m){return(m=m.get('tags'))?m.join(','):''},set:function(tag){this.set('theModel.tags',tag)}},currentQuota:{bind:'{theModel}',get:function(m){var quota=Number(0);m&&(quota=Number(m.get('quotaGb')),
1024<=quota&&(quota=Math.round(Number(quota/1024)),m.set('quotaGb',quota),m.set('quotaUnit',1024)));return quota},set:function(v){var m=this.get('theModel');m&&m.set('quotaGb',v)}}}},0,0,0,0,['viewmodel.config.tab.vsphere.form'],0,[MainApp.view.configuration.tab.vsphere,'FormModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.FormController',Ext.app.ViewController,{afterRender:function(){var form=this.lookupReference('form');setTimeout(function(){form.getForm().clearInvalid()})},filterTemplateJobs:function(combo,record){combo=this.getViewModel().getStore('templateJobs');combo.clearFilter(!1);var value=record.get('backupServerId');record=Ext.create('Ext.util.Filter',{filterFn:function(item){return null==item.data.backupServerId||item.data.backupServerId===value?!0:
!1}});combo.filter(record)},onSave:function(){var form=this.getView().lookupReference('form'),vm=this.getViewModel();form.isValid()&&(form=vm.get('theModel'),vm.get('isEdit')||(form.setId(null),form.setWorkspace(vm.get('theWorkspace'))),this.getView().mask('Saving...'),form.save({failure:function(model,operation){this.getView().unmask();Common.ui.Msg.error(operation.getError())},success:function(model,operation){this.getView().unmask();model=operation.getResponse().result;model.message&&Ext.isArray(model.message)&&
0<model.message.length&&(model=model.message.shift(),Common.ui.Msg.success(model));this.fireViewEvent('save',this.getView())},scope:this}))},onCancel:function(){this.fireViewEvent('cancel',this.getView())},onStoreLoad:function(store,records,successful,operation){return successful?!0:Common.ui.Msg.error(operation.getResponse().result.message)},onRepositoryStoreLoad:function(store,records,successful,operation){if(!successful)return Common.ui.Msg.error(operation.getResponse());records.length&&(successful=
this.getViewModel(),records.length&&null==successful.get('theModel.repositoryId')&&successful.set('theModel.repositoryId',records[0].get('id')),store=store.getById(successful.get('theModel.repositoryId'))||records[0],this.filterTemplateJobs(null,store));return!0},toggleAdvancedSettings:function(){var vm=this.getViewModel(),detailsVisible=vm.get('detailsVisible');vm.set('detailsLinkText',detailsVisible?'Show':'Hide');vm.set('detailsVisible',!detailsVisible)},viewCustomJobSettings:function(){var vm=
this.getViewModel(),settingsBox=this.lookupReference('settingsBox');vm=vm.get('theModel');settingsBox.mask('Loading...');vm.getTemplateJobSettings().then(function(response){settingsBox.update(response.message)}).always(settingsBox.unmask.bind(settingsBox))},applyJobSettings:function(){var template=this.lookupReference('templateJob').getSelection();template&&(this.getViewModel().set('theModel.templateJob',template),this.viewCustomJobSettings())},onTemplateJobStoreLoad:function(store,records,successful,
operation){if(!successful)return Common.ui.Msg.error(operation.getResponse());records.length&&this.getView().lookupReference('templateJob').setValue(records[0].get('id'));return!0},onWorkspaceTypeChange:function(){var cmp=this.lookupReference('workspaceName');cmp.clearValue();cmp.clearInvalid()}},0,0,0,0,['controller.config.tab.vsphere.form'],0,[MainApp.view.configuration.tab.vsphere,'FormController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.Form',Ext.window.Window,{controller:'config.tab.vsphere.form',viewModel:{type:'config.tab.vsphere.form'},bind:{title:'{title}'},layout:'fit',modal:!0,ui:'wizard',width:500,closable:!0,resizable:!1,config:{tagsAllowed:!1},updateTagsAllowed:function(value){this.getViewModel().set('tagsAllowed',value);return value},initComponent:function(){this.items=[{xtype:'form',reference:'form',bodyPadding:16,border:!1,layout:{type:'vbox',align:'stretch'},items:this.buildItems()}];
Ext.window.Window.prototype.initComponent.call(this)},listeners:{resize:function(win){win.center()}},buildItems:function(){var workspaceName={xtype:'combo',fieldLabel:'Account',reference:'workspaceName',name:'workspaceName',triggerAction:'query',queryParam:'query',queryMode:'remote',pubilishes:['value'],minChars:2,hideTrigger:!0,autoSelect:!0,selectOnFocus:!0,typeAhead:!0,forceSelection:!0,queryDelay:500,typeAheadDelay:200,displayField:'name',valueField:'id',allowBlank:!1,emptyText:'Type in a username',
displayTpl:'\x3ctpl for\x3d"."\x3e\x3ctpl if\x3d"values.domainName"\x3e{domainName}\x3c/tpl\x3e\x3c/tpl\x3e',tpl:'\x3cul class\x3d"x-list-plain"\x3e\x3ctpl for\x3d"."\x3e\x3cli role\x3d"option" class\x3d"x-boundlist-item"\x3e{domainName}\x3c/li\x3e\x3c/tpl\x3e\x3c/ul\x3e',bind:{disabled:'{isEdit}',store:'{workspaces}',selection:'{currentWorkspace}'},onLoad:function(store,records,success){records=!this.valueCollection.byValue.get(this.value);!success||!records||store.lastOptions&&'rawQuery'in store.lastOptions||
this.setValueOnData()},onStoreUpdate:Ext.emptyFn},tagField=!0===this.getTagsAllowed()?{fieldLabel:'vSphere tags',xtype:'tagfield',displayField:'tag',valueField:'tag',queryMode:'local',emptyText:'Select a vSphere tag',growMax:128,allowBlank:!0,autoLoadOnValue:!0,hidden:!0,tpl:'\x3ctpl for\x3d"."\x3e\x3cli role\x3d"option" unselectable\x3d"on" class\x3d"x-boundlist-item"\x3e{tag:htmlEncode}\x3c/li\x3e\x3c/tpl\x3e',bind:{store:'{tagsStore}',value:'{tagString}',hidden:'{!tagsAllowed}'}}:{xtype:'displayfield',
hidden:!0},details=this.buildJobSettingsDetails();return[{xtype:'combobox',fieldLabel:'Type',reference:'workspaceType',autoSelect:!0,editable:!1,triggerAction:'all',displayField:'text',valueField:'value',publishes:['value'],bind:{store:'{workspaceTypes}',value:'{selectedAccountType}',disabled:'{isEdit}'},listeners:{change:'onWorkspaceTypeChange'}},workspaceName,{xtype:'combobox',fieldLabel:'Repository',reference:'repositoryField',name:'repositoryId',displayField:'name',valueField:'id',triggerAction:'all',
editable:!1,allowBlank:!1,bind:{value:'{theModel.repositoryId}',validation:'{theModel.validation.repositoryId}',store:'{repositories}'},tpl:'\x3ctpl for\x3d"."\x3e\x3cli role\x3d"option" unselectable\x3d"on" class\x3d"x-boundlist-item"\x3e{name:htmlEncode}\x3c/li\x3e\x3c/tpl\x3e',queryMode:'local',listeners:{select:'filterTemplateJobs'}},{fieldLabel:'Quota',xtype:'fieldcontainer',layout:'hbox',cls:'field-group-item',combineErrors:!1,defaults:{hideLabel:!0},items:[{xtype:'numberfield',name:'quota',
fieldLabel:'Quota',allowBlank:!1,maxValue:999999,minValue:1,maxLength:6,enforceMaxLength:!0,width:112,allowNegative:!1,allowDecimals:!1,enableKeyEvents:!0,regex:/^[0-9]+$/,bind:{value:'{currentQuota}',validation:'{theModel.validation.quotaGb}'}},{xtype:'combobox',fieldLabel:'',width:80,reference:'quotaUnits',name:'quotaUnits',value:'GB',autoSelect:!0,allowBlank:!1,editable:!1,forceSelection:!0,valueField:'value',displayField:'text',triggerAction:'all',bind:{store:'{units}',value:'{theModel.quotaUnit}',
validation:'{theModel.validation.quotaUnit}'},margin:'0 0 0 16'}]},{xtype:'combobox',fieldLabel:'Job scheduling',reference:'jobScheduleField',forceSelection:!0,name:'jobScheduleType',displayField:'text',valueField:'value',editable:!1,allowBlank:!1,triggerAction:'all',bind:{value:'{theModel.jobScheduleType}',store:'{jobScheduleTypes}'},queryMode:'local'},tagField,{xtype:'checkbox',boxLabel:'Assign a separate quota to each group member',reference:'perUser',name:'perUser',bind:{value:'{theModel.perUser}',
disabled:'{!isGroupAccountSelected}'}},details]},buttons:[{reference:'detailsLink',ui:'text',bind:{text:'{detailsLinkText} Advanced Job Settings'},handler:'toggleAdvancedSettings'},'-\x3e',{text:'Save',ui:'primary',formBind:!0,handler:'onSave'},{text:'Cancel',ui:'alternate',handler:'onCancel'}],buildJobSettingsDetails:function(){return{xtype:'container',reference:'details',hideMode:'offsets',hidden:!0,layout:'anchor',anchor:'100%',bind:{hidden:'{!detailsVisible}'},items:[Ext.create('Ext.form.Label',
{text:'Advanced job settings:',anchor:'100%'}),{xtype:'box',autoEl:'div',cls:'job-settings',reference:'settingsBox',anchor:'100%',height:250,margin:'5 0 8 0'},{xtype:'fieldcontainer',anchor:'100%',layout:'hbox',combineErrors:!1,items:[{xtype:'combobox',fieldLabel:'Copy from',reference:'templateJob',name:'templateJob',displayField:'name',valueField:'id',autoSelect:!0,forceSelection:!0,triggerAction:'all',pubilishes:['value'],bind:{store:'{templateJobs}',disabled:'{!repository.selection}'},queryMode:'local',
allowBlank:!0,listEmptyText:'No jobs found',flex:1,listeners:{load:'onTemplateJobStoreLoad'}},{text:'Apply',xtype:'button',ui:'primary',width:80,margin:'0 0 0 16',handler:'applyJobSettings'}]}],listeners:{show:{fn:'viewCustomJobSettings',single:!0}}}}},0,['vshpere-mt-form'],'component box container panel window vshpere-mt-form'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'vshpere-mt-form':!0},['widget.vshpere-mt-form'],0,[MainApp.view.configuration.tab.vsphere,'Form'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.VsphereController',Ext.app.ViewController,{initViewModel:function(vm){MainApp.service.rpc.Config.getCurrentBrowseConstraint().then(function(response){vm.set('delegationMode',{type:response.type,value:response.value})})},onAdd:function(){this.createDialog(null)},onEdit:function(){var model=this.getSelected();this.createDialog(model)},onRemove:function(){var me=this,model=this.getSelected(),confirmMsg=Ext.create('Ext.window.MessageBox',{listeners:{afterrender:function(msg){msg.promptContainer.insert(1,
[{xtype:'checkbox',hideLabel:!0,itemId:'deleteJobs',boxLabel:'Delete jobs',checked:!0,inputValue:!0,margin:'8 0 0 0'},{xtype:'checkbox',hideLabel:!0,itemId:'deleteBackups',boxLabel:'Delete backup files',checked:!1,inputValue:!0,margin:'8 0 0 0'}])}}});return confirmMsg.show({title:'Remove configuration',message:'Self-service portal access configuration for '+model.getWorkspace().get('name')+' will be removed. Proceed?',buttons:Ext.Msg.YESNO,icon:Ext.Msg.QUESTION,fn:function(btn){if('yes'===btn){me.fireEvent('mask');
btn=model.getId();var deleteBackups=confirmMsg.down('#deleteBackups').getValue(),deleteJobs=confirmMsg.down('#deleteJobs').getValue();MainApp.service.rpc.Config.removeConfiguration({id:btn,deleteJobs:deleteJobs,deleteBackups:deleteBackups}).then(function(){model.drop();me.fireEvent('unmask')}).otherwise(function(){Common.ui.Msg.error('Failed to remove record');me.fireEvent('unmask')})}},scope:this})},createDialog:function(record){var view=this.getView(),viewModel=this.getViewModel();this.isEdit=!!record;
this.dialog=view.add({xtype:'vshpere-mt-form',renderTo:Ext.getBody(),tagsAllowed:!viewModel.get('hiddenTags'),viewModel:{data:{title:record?'Edit':'Add',isEdit:this.isEdit},links:{theModel:record||{type:'MainApp.model.VcWorkspaceConfiguration',create:!0},theWorkspace:record?record.getWorkspace():{type:'MainApp.model.Workspace',create:!0}}},session:!0});this.mon(this.dialog,{save:'onSaveClick',cancel:'onCancelClick'});this.dialog.show()},getSelected:function(){return this.lookupReference('grid').getSelectionModel().getSelection()[0]},
onSaveClick:function(){this.dialog.getSession().save();this.onCancelClick();this.getViewModel().getStore('gridStore').reload()},onCancelClick:function(){this.dialog=Ext.destroy(this.dialog)},onExport:function(){var sortInfo=this.lookupReference('grid').getSortInfo();(new Veeam.util.ExcelExporter('vsphere.config.exportWorkspaceConfigurations',[sortInfo])).start()},onShowDelegationModeDialog:function(btn){var needWarning=!!this.getViewModel().get('gridStore').getCount(),dialog=this._getDelegationModeDialog();
dialog.showWarning=needWarning;dialog.showBy(btn,'tl-bl?',[4,0])},onChangeMode:function(win,type,value){this.getViewModel().set('delegationMode',{type:type,value:value})},privates:{_getDelegationModeDialog:function(){var delegationMode=this.getViewModel().get('delegationMode');this._delegationModeDialog||(this._delegationModeDialog=Ext.create('MainApp.view.configuration.tab.vsphere.DelegationModeDialog',{delegationMode:delegationMode,listeners:{changemode:'onChangeMode',scope:this}}));return this._delegationModeDialog}}},
0,0,0,0,['controller.config.tab.vsphere'],0,[MainApp.view.configuration.tab.vsphere,'VsphereController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.BaseDelegationDialog',Veeam.base.view.BaseWindow,{layout:'fit',height:400,width:415,resizable:!0,modal:!0,closeAction:'hide',closable:!0,bodyPadding:'8 16',padding:0,buttons:[{text:'OK',ui:'primary',disabled:!0,ctype:'okbutton',bind:{disabled:'{!selectedItem}'},handler:'applyChanges'},{text:'Cancel',ui:'alternate',handler:function(btn){btn=btn.up('window');btn.fireEvent('cancel');btn.close()}}]},0,0,['component','box','container','panel','window'],
{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.vsphere,'BaseDelegationDialog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.RolesDialogController',Veeam.base.view.BaseWindowController,{afterRender:function(){this.getView().setLoading()},storeLoadHandler:function(store){this._setCurrentRole(store);this.getView().setLoading(!1)},applyChanges:function(){var view=this.getView(),role=this.getViewModel().get('selectedItem').get('name');this.fireViewEvent('selectrole',role);view.close()},privates:{_setCurrentRole:function(store){var view=this.getView(),vm=this.getViewModel();
view=view.getCurrentRole();(store=store.getById(view))&&vm.set('selectedItem',store)}}},0,0,0,0,['controller.config.tab.vsphere.rolesdialog'],0,[MainApp.view.configuration.tab.vsphere,'RolesDialogController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.RolesDialog',MainApp.view.configuration.tab.vsphere.BaseDelegationDialog,{controller:'config.tab.vsphere.rolesdialog',viewModel:{stores:{rolesStore:{type:'app-store',rpcMethod:'Api.config.selfservice.vsphere.getroles',fields:['id','name'],autoLoad:!0,listeners:{load:'storeLoadHandler'}}}},config:{currentRole:null},title:'Select Role',items:[{xtype:'deferredmaskgrid',bind:{store:'{rolesStore}',selection:'{selectedItem}'},hideHeaders:!0,columns:[{text:'Role',
dataIndex:'name',flex:1}],listeners:{rowdblclick:'applyChanges'}}]},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.vsphere,'RolesDialog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.PrivilegesDialogController',Veeam.base.view.BaseWindowController,{afterRender:function(){var okButton=this.getView().down('button[ctype\x3dokbutton]');this.getView().setLoading();MainApp.service.rpc.Config.vSphereGetPermissions().then(this.rpcHandlers.getPermissions.bind(this));okButton.setBind({disabled:'{!enabledSave}'})},applyChanges:function(){var view=this.getView(),vm=this.getViewModel(),selectedItem=vm.get('selectedItem');vm=vm.get('enabledSave');
selectedItem=selectedItem.get('id');vm&&(this.fireViewEvent('selectprivilege',selectedItem),view.close())},privates:{_setCurrentPermission:function(store){var view=this.getView(),vm=this.getViewModel();view=view.getCurrentPrivilege();(store=store.getById(view))&&vm.set('selectedItem',store)}},rpcHandlers:{getPermissions:function(response){var tree=this.getView().down('treepanel'),rootNode=tree.getRootNode();rootNode.removeAll();rootNode.appendChild([response.permissions]);rootNode.firstChild&&rootNode.firstChild.expand();
this._setCurrentPermission(tree.getStore());this.view.setLoading(!1)}}},0,0,0,0,['controller.config.tab.vsphere.privilegesdialog'],0,[MainApp.view.configuration.tab.vsphere,'PrivilegesDialogController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.PrivilegesDialog',MainApp.view.configuration.tab.vsphere.BaseDelegationDialog,{controller:'config.tab.vsphere.privilegesdialog',viewModel:{data:{selectedItem:null},formulas:{enabledSave:function(get){return get('selectedItem.leaf')}}},config:{currentPrivilege:null},title:'Select Privilege',items:[{xtype:'treepanel',rootVisible:!1,scrollable:'y',bind:{selection:'{selectedItem}'},listeners:{rowdblclick:'applyChanges'}}]},0,0,['component','box',
'container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.vsphere,'PrivilegesDialog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.DelegationModeDialogController',Ext.app.ViewController,{afterRender:function(){this.lookupReference('roleButton').setText(MainApp.view.configuration.tab.vsphere.DelegationModeDialog.defaultRoleBtnText);this.lookupReference('privilegeButton').setText(MainApp.view.configuration.tab.vsphere.DelegationModeDialog.defaultPrivilegeBtnText)},initViewModel:function(vm){var view=this.getView();vm.set('delegationMode.delegationMode',view.delegationMode.type);
this._setCurrentBrowseConstraint(view.delegationMode)},openRolesDialog:function(btn){var dialog=this.rolesDialog||Ext.create('MainApp.view.configuration.tab.vsphere.RolesDialog',{currentRole:btn.getText(),listeners:{selectrole:'onSelectRole',scope:this}});this.rolesDialog||(this.rolesDialog=dialog);dialog.showBy(btn,'tl-bl?',[8,6])},openPrivilegesDialog:function(btn){var dialog=this.privilegesDialog||Ext.create('MainApp.view.configuration.tab.vsphere.PrivilegesDialog',{currentPrivilege:btn.getText(),
listeners:{selectprivilege:'onSelectPrivilege',scope:this}});this.privilegesDialog||(this.privilegesDialog=dialog);dialog.showBy(btn,'tl-bl?',[8,6])},onSelectRole:function(win,roleName){win=this.getViewModel();this.lookupReference('roleButton').getText()!==roleName&&win.set('role',roleName)},onSelectPrivilege:function(win,value){win=this.getViewModel();this.lookupReference('privilegeButton').getText()!==value&&win.set('privilege',value)},applyChanges:function(){var vm=this.getViewModel(),type=vm.get('delegationMode.delegationMode');
vm=vm.get('actualValue');this._saveChanges(type,vm)},cancelChanges:function(){this.getView().close()},onBeforeHide:function(){var vm=this.getViewModel();vm.set('delegationMode',{delegationMode:this.previousState.type});this.previousState.type===MainApp.model.VSphereBrowseConstraintType.ROLE&&vm.set('role',this.previousState.value);this.previousState.type===MainApp.model.VSphereBrowseConstraintType.PERMISSION&&vm.set('privilege',this.previousState.value)},onChangeMode:function(field,value,oldValue){Ext.isNumber(oldValue.delegationMode)&&
this.getView().showWarning&&this.lookup('notificationPanel').show()},privates:{_saveChanges:function(type,value){var me=this,view=me.getView();me.fireViewEvent('changemode',type,value);view.setLoading('Saving...');MainApp.service.rpc.Config.saveBrowseConstraint(type,value).then(function(){me._saveDelegationModeState(type,value);view.close()}).always(function(){view.setLoading(!1)})},_saveDelegationModeState:function(type,value){this.previousState={type:type,value:value}},_setCurrentBrowseConstraint:function(delegationMode){var vm=
this.getViewModel(),radioGroup=this.lookupReference('delegationModeRadioGroup'),types=MainApp.model.VSphereBrowseConstraintType;switch(delegationMode.type){case types.PERMISSION:vm.set('privilege',delegationMode.value);break;case types.ROLE:vm.set('role',delegationMode.value);break;case types.TAG:break;default:Ext.raise('Unknown delegation mode '+delegationMode.type)}radioGroup.setValue({delegationMode:delegationMode.type});this._saveDelegationModeState(delegationMode.type,delegationMode.value)}}},
0,0,0,0,['controller.config.tab.delegationmodedialog'],0,[MainApp.view.configuration.tab.vsphere,'DelegationModeDialogController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.DelegationModeDialogModel',Ext.app.ViewModel,{data:{delegationMode:{delegationMode:null},role:null,privilege:null,roleDescription:'Users can manage all VMs for which they have the specified vSphere role assigned.',privilegeDescription:'Users can manage all VMs for which they have the specified vSphere permission.',tagsDescription:'Users can manage all VMs with tags specified in the corresponding self-service configuration.',warningText:'Changing the delegation mode will affect all existing self-service configurations, and may prevent the corresponding users from using the portal.'},
formulas:{roleIsActive:function(get){return get('delegationMode.delegationMode')===MainApp.model.VSphereBrowseConstraintType.ROLE},privilegeIsActive:function(get){return get('delegationMode.delegationMode')===MainApp.model.VSphereBrowseConstraintType.PERMISSION},roleBtnText:function(get){return get('role')||'Select Role...'},privilegeBtnText:function(get){return get('privilege')||'Select Privilege...'},disabledOkButton:function(get){return get('delegationMode.delegationMode')===MainApp.model.VSphereBrowseConstraintType.ROLE?
!get('role'):get('delegationMode.delegationMode')===MainApp.model.VSphereBrowseConstraintType.PERMISSION?!get('privilege'):!1},actualValue:function(get){return get('delegationMode.delegationMode')===MainApp.model.VSphereBrowseConstraintType.ROLE?get('role'):get('delegationMode.delegationMode')===MainApp.model.VSphereBrowseConstraintType.PERMISSION?get('privilege'):null}},stores:{rolesStore:{type:'app-store',rpcMethod:'Api.config.selfservice.vsphere.getroles',fields:['id','name'],autoLoad:!0}}},0,
0,0,0,['viewmodel.config.tab.delegationmodedialog'],0,[MainApp.view.configuration.tab.vsphere,'DelegationModeDialogModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.DelegationModeDialog',Veeam.base.view.BaseWindow,{statics:{defaultRoleBtnText:'Select Role...',defaultPrivilegeBtnText:'Select Privilege...'},controller:'config.tab.delegationmodedialog',viewModel:{type:'config.tab.delegationmodedialog'},delegationMode:{type:null,value:null},cls:'delegation-mode-dialog',title:'Delegation Mode',layout:{type:'vbox',align:'stretch'},minHeight:300,width:415,modal:!0,closeAction:'hide',resizable:!1,closable:!0,bodyPadding:0,
padding:0,items:[{xtype:'radiogroup',padding:'8 16',reference:'delegationModeRadioGroup',columns:1,bind:'{delegationMode}',listeners:{change:'onChangeMode'},items:[{xtype:'radio',boxLabel:'vSphere tags',name:'delegationMode',inputValue:2},{xtype:'container',cls:'mode-description',bind:{html:'\x3cp\x3e{tagsDescription}\x3c/p\x3e'}},{xtype:'container',layout:{type:'hbox',align:'middle'},items:[{xtype:'radio',boxLabel:'vSphere role: ',name:'delegationMode',inputValue:1},{xtype:'button',reference:'roleButton',
ui:'text',handler:'openRolesDialog',padding:'0 0 0 8',disabled:!0,bind:{text:'{roleBtnText}',disabled:'{!roleIsActive}'}}]},{xtype:'container',cls:'mode-description',bind:{html:'\x3cp\x3e{roleDescription}\x3c/p\x3e'}},{xtype:'container',layout:{type:'hbox',align:'middle'},items:[{xtype:'radio',boxLabel:'VM privilege: ',name:'delegationMode',inputValue:0},{xtype:'button',ui:'text',reference:'privilegeButton',handler:'openPrivilegesDialog',padding:'0 0 0 8',disabled:!0,bind:{text:'{privilegeBtnText}',
disabled:'{!privilegeIsActive}'}}]},{xtype:'container',cls:'mode-description',bind:{html:'\x3cp\x3e{privilegeDescription}\x3c/p\x3e'}}]},{xtype:'alert',ui:'warning',reference:'notificationPanel',hidden:!0,padding:'11 8 8 64',margin:'0 16 16 16',bind:{html:'{warningText}'}}],buttons:[{text:'OK',ui:'primary',disabled:!0,bind:{disabled:'{disabledOkButton}'},handler:'applyChanges'},{text:'Cancel',ui:'alternate',handler:'cancelChanges'}],listeners:{beforehide:'onBeforeHide'},beforeShow:function(){this.lookup('notificationPanel').hide()}},
0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.vsphere,'DelegationModeDialog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vsphere.Vsphere',Ext.panel.Panel,{controller:'config.tab.vsphere',viewModel:{type:'config.tab.vsphere'},session:!0,layout:{type:'vbox',align:'stretch'},items:[{xtype:'basegrid',reference:'grid',bind:{store:'{gridStore}'},session:!0,flex:1,columns:{defaults:{sortable:!0,menuDisabled:!0,flex:1},items:[{header:'Account',dataIndex:'workspace',renderer:function(v,meta,rec){return(v=rec.getWorkspace())?v.get('name'):''}},{header:'Repository',dataIndex:'repository',
renderer:function(v,meta,rec){return(v=rec.getRepository())?v.get('name'):''}},{header:'Quota',dataIndex:'quotaGb',align:'right',renderer:function(v){v=Number(v);return 1024>v?v+' GB':Number((v/1024).toFixed(1)).toString()+' TB'}},{header:'Per-user',dataIndex:'perUser',xtype:'booleancolumn',falseText:'No',trueText:'Yes'}]},leftButtons:[{text:'Add',iconCls:'org-create',handler:'onAdd'},{text:'Edit',bind:{disabled:'{!grid.selection}'},iconCls:'org-edit',disabled:!0,handler:'onEdit'},{text:'Remove',
disabled:!0,iconCls:'org-remove',bind:{disabled:'{!grid.selection}'},handler:'onRemove'},{text:'Delegation Mode',iconCls:'delegation-mode',disabled:!0,handler:'onShowDelegationModeDialog',bind:{disabled:'{disabledDelegationModeButton}'}}],listeners:{exporttoexcel:'onExport'}}]},0,['config.tab.vsphere'],['component','box','container','panel','config.tab.vsphere'],{component:!0,box:!0,container:!0,panel:!0,'config.tab.vsphere':!0},['widget.config.tab.vsphere'],0,[MainApp.view.configuration.tab.vsphere,
'Vsphere'],0);Ext.cmd.derive('MainApp.model.VcdOrganization',Ext.data.Model,{fields:[{name:'id'},{name:'name'}]},0,0,0,0,0,0,[MainApp.model,'VcdOrganization'],0);
Ext.cmd.derive('MainApp.model.VcdOrganizationConfiguration',Ext.data.Model,{fields:[{name:'id',type:'string',allowNull:!0},{name:'organizationId'},{name:'organizationName'},{name:'isOtherOrganizationConfig',type:'boolean'},{name:'repositoryId',allowNull:!1},{name:'repositoryName'},{name:'quota',defaultValue:100},{name:'usedQuota',allowNull:!0,defaultValue:null},{name:'templateJob',allowNull:!0,reference:{type:'TemplateJob',unique:!0,inverse:{autoLoad:!1}}},{name:'jobScheduleType',allowNull:!1,type:'integer'},
{name:'quotaGb',calculate:function(data){data=Number(data.quota);0===data%1024&&(data/=1024);return data},persist:!0},{name:'quotaUnit',calculate:function(data){return 0===Number(data.quota)%1024?1024:1},persist:!0},{name:'jobSettingsTemplateId',allowNull:!0,defaultValue:null},{name:'needToUpdateJobSettings',type:'boolean',defaultValue:!1}],convertOnSet:!1,proxy:{type:'direct',api:{update:'Api.configuration.vcloud.saveRecord',create:'Api.configuration.vcloud.saveRecord',destroy:'Api.configuration.vcloud.removeRecord'},
reader:{type:'json'},writer:{type:'json',writeAllFields:!0}},getTemplateJobSettings:function(){var jobId=this.get('jobSettingsTemplateId'),orgId=!0===this.phantom?null:this.get('id');return Common.Request.thenable(RPC.Api['configuration.vcloud.getJobSettings'],orgId,jobId)}},0,0,0,0,0,0,[MainApp.model,'VcdOrganizationConfiguration'],0);
Ext.cmd.derive('MainApp.store.VcdOrganizationConfigurations',Ext.data.Store,{model:'MainApp.model.VcdOrganizationConfiguration',autoLoad:!1,root:'items',proxy:{type:'direct',directFn:'Api.configuration.vcloud.getRecords',reader:{type:'json',rootProperty:'items'},simpleSortMode:!0},remoteSort:!0},0,0,0,0,['store.vcloud.configurations'],0,[MainApp.store,'VcdOrganizationConfigurations'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcloud.VcloudModel',Ext.app.ViewModel,{data:{theRow:null,gridSelection:null},stores:{gridStore:{type:'vcloud.configurations',session:!0,autoLoad:!1}},formulas:{canRemove:{bind:'{gridSelection}',get:function(selection){return selection&&0==selection.get('isOtherOrganizationConfig')}}}},0,0,0,0,['viewmodel.config.tab.vcloud'],0,[MainApp.view.configuration.tab.vcloud,'VcloudModel'],0);
Ext.cmd.derive('MainApp.store.VcdOrganizationRepositories',Ext.data.Store,{model:'MainApp.model.Repository',autoLoad:!1,proxy:{type:'direct',directFn:'Api.vcloud.config.getConfigurationRepositories',reader:{type:'json',rootProperty:'items'}}},0,0,0,0,['store.vcloud.repositories'],0,[MainApp.store,'VcdOrganizationRepositories'],0);
Ext.cmd.derive('MainApp.store.VcdOrganizations',Ext.data.Store,{model:'MainApp.model.VcdOrganization',autoLoad:!1},0,0,0,0,['store.vcloud.organizations'],0,[MainApp.store,'VcdOrganizations'],0);
Ext.cmd.derive('MainApp.store.VcdOrganizationTemplateJobs',Ext.data.Store,{model:'MainApp.model.TemplateJob',autoLoad:!1,proxy:{type:'direct',directFn:'Api.vcloud.config.getTemplateJobs',reader:{type:'json',rootProperty:'items'}}},0,0,0,0,['store.vcloud.templateJobs'],0,[MainApp.store,'VcdOrganizationTemplateJobs'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcloud.FormModel',Ext.app.ViewModel,{data:{detailsVisible:!1,detailsLinkText:'Show',currentAccountType:1},stores:{repositories:{type:'vcloud.repositories',autoLoad:!1,session:!1,listeners:{load:'onRepositoryStoreLoad'}},templateJobs:{type:'vcloud.templateJobs',autoLoad:!1,session:!0,listeners:{load:'onTemplateJobStoreLoad'}},units:{type:'array',fields:['value','text'],data:[[1,'GB'],[1024,'TB']]},organizations:{type:'vcloud.organizations',autoLoad:!1,
session:!0,listeners:{load:'onOrgStoreLoaded'}},jobScheduleTypes:{type:'array',autoDestroy:!0,fields:['value','text'],data:'{jobScheduleTypesData}'}},formulas:{currentRepository:{bind:'{theModel}',get:function(model){return model.get('repositoryId')},set:function(value){return this.set('theModel.repositoryId',value)}},jobScheduleTypesData:{get:function(){return[[MainApp.model.JobScheduleType.FULL,'Allow: Tenant has full access to all job scheduling options'],[MainApp.model.JobScheduleType.PARTIAL,
'Allow: Tenant can create daily and monthly jobs only'],[MainApp.model.JobScheduleType.RANDOM,'Deny: Creates daily jobs with randomized start time within the backup window'],[MainApp.model.JobScheduleType.DISABLED,'Deny: Creates jobs with no schedule assigned']]}}}},0,0,0,0,['viewmodel.config.tab.vcloud.form'],0,[MainApp.view.configuration.tab.vcloud,'FormModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcloud.FormController',Ext.app.ViewController,{control:{form:{fieldvaliditychange:'onFormValidation'}},afterRender:function(){var vm=this.getViewModel(),id=vm.get('theModel.id');vm=vm.get('isEdit')?id:null;var form=this.lookupReference('form');setTimeout(function(){form.getForm().clearInvalid()});form.setLoading(!0);MainApp.service.rpc.Config.addOrEditVcdOrgConfiguration(vm).then(this.onLoaded.bind(this)).otherwise(Common.ui.Msg.error).always(function(){form.setLoading(!1)})},
onLoaded:function(data){data=data.options;var vm=this.getViewModel();vm.getStore('repositories').loadData(data.repository);var repoCombo=this.lookupReference('repositoryField');data.repository.length&&null==vm.get('theModel.repositoryId')?repoCombo.setValue(data.repository[0][0]):repoCombo.setValue(vm.get('theModel.repositoryId'));this.filterTemplateJobs(repoCombo,repoCombo.getSelection());vm.getStore('templateJobs').loadData(data.template);data.template&&data.template.length&&this.lookupReference('templateJob').setValue(data.template[0][0]);
data.organization&&(vm=vm.getStore('organizations'),repoCombo=this.lookupReference('organizationField'),vm.loadData(data.organization),repoCombo.setValue(vm.first().get('id')));return!0},onFormValidation:function(form){form=form.isValid();this.lookupReference('saveBtn').setDisabled(!form)},filterTemplateJobs:function(combo,record){combo=this.getViewModel().getStore('templateJobs');combo.clearFilter(!1);var value=record.get('backupServerId');record=Ext.create('Ext.util.Filter',{filterFn:function(item){return null==
item.data.backupServerId||item.data.backupServerId===value?!0:!1}});combo.filter(record)},onSave:function(){var form=this.getView().lookupReference('form'),vm=this.getViewModel();form.isValid()&&(form=vm.get('theModel'),vm.get('isEdit')||form.setId(null),this.getView().mask('Saving data'),form.save({failure:function(model,operation){this.getView().unmask();Common.ui.Msg.error(operation.getError())},success:function(model,operation){this.getView().unmask();model=operation.getResponse().result;model.message&&
Ext.isArray(model.message)&&0<model.message.length&&(model=model.message.shift(),Common.ui.Msg.success(model));this.fireViewEvent('save',this.getView())},scope:this}))},onCancel:function(){this.fireViewEvent('cancel',this.getView())},onRepositoryStoreLoad:function(store,records,successful,operation){if(!successful)return Common.ui.Msg.error(operation.getResponse());records.length&&(store=this.getViewModel(),records.length&&null==store.get('theModel.repositoryId')&&store.set('theModel.repositoryId',
records[0].get('id')))},onOrgStoreLoaded:function(store,records,successful,operation){if(!successful)return Common.ui.Msg.error(operation.getResponse())},toggleAdvancedSettings:function(){var vm=this.getViewModel(),detailsVisible=vm.get('detailsVisible');vm.set('detailsLinkText',detailsVisible?'Show':'Hide');vm.set('detailsVisible',!detailsVisible)},viewCustomJobSettings:function(){var vm=this.getViewModel(),settingsBox=this.lookupReference('settingsBox');settingsBox.mask('Loading...');vm.get('theModel').getTemplateJobSettings().then(function(response){return settingsBox.update(response.message)}).always(settingsBox.unmask.bind(settingsBox))},
applyJobSettings:function(){var template=this.lookupReference('templateJob').getSelection();template&&(this.getViewModel().set('theModel.templateJob',template),this.getViewModel().set('theModel.needToUpdateJobSettings',!0),this.getViewModel().set('theModel.jobSettingsTemplateId',template.getId()),this.viewCustomJobSettings())},onTemplateJobStoreLoad:function(store,records,successful,operation){if(!successful)return Common.ui.Msg.error(operation.getResponse());records.length&&this.getView().lookupReference('templateJob').setValue(records[0].get('id'))}},
0,0,0,0,['controller.config.tab.vcloud.form'],0,[MainApp.view.configuration.tab.vcloud,'FormController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcloud.Form',Veeam.base.view.BaseWindow,{controller:'config.tab.vcloud.form',viewModel:{type:'config.tab.vcloud.form'},bind:{title:'{title}'},layout:'fit',modal:!0,width:500,closable:!0,resizable:!1,initComponent:function(){this.items=[{xtype:'form',reference:'form',border:!1,layout:{type:'vbox',align:'stretch'},items:this.buildItems()}];Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},listeners:{resize:function(win){win.center()}},buildItems:function(){return[{xtype:'combo',
fieldLabel:'Organization',reference:'organizationField',name:'organizationName',triggerAction:'all',pubilishes:['value'],minChars:3,forceSelection:!0,queryDelay:200,displayField:'name',valueField:'id',allowBlank:!1,queryMode:'local',listEmptyText:'No organizations found',bind:{disabled:'{isEdit}',store:'{organizations}',value:'{theModel.organizationId}'}},{xtype:'combobox',fieldLabel:'Repository',reference:'repositoryField',name:'repositoryId',displayField:'name',valueField:'id',triggerAction:'all',
allowBlank:!1,editable:!1,forceSelection:!0,tpl:'\x3ctpl for\x3d"."\x3e\x3cli role\x3d"option" unselectable\x3d"on" class\x3d"x-boundlist-item"\x3e{name:htmlEncode}\x3c/li\x3e\x3c/tpl\x3e',bind:{value:'{currentRepository}',validation:'{theModel.validation.repositoryId}',store:'{repositories}'},queryMode:'local',listeners:{select:'filterTemplateJobs'}},{fieldLabel:'Quota',xtype:'fieldcontainer',layout:'hbox',cls:'field-group-item',combineErrors:!1,defaults:{hideLabel:!0},items:[{xtype:'numberfield',
name:'quota',fieldLabel:'Quota',allowBlank:!1,maxValue:999999,minValue:1,maxLength:6,enforceMaxLength:!0,width:112,allowNegative:!1,allowDecimals:!1,enableKeyEvents:!0,regex:/^[0-9]+$/,bind:{value:'{theModel.quotaGb}',validation:'{theModel.validation.quotaGb}'}},{xtype:'combobox',fieldLabel:'',width:80,reference:'quotaUnits',name:'quotaUnits',value:'GB',autoSelect:!0,allowBlank:!1,editable:!1,forceSelection:!0,valueField:'value',displayField:'text',triggerAction:'all',bind:{store:'{units}',value:'{theModel.quotaUnit}',
validation:'{theModel.validation.quotaUnit}'},margin:'0 0 0 16'}]},{xtype:'combobox',fieldLabel:'Job scheduling',reference:'jobScheduleField',forceSelection:!0,name:'jobScheduleType',displayField:'text',valueField:'value',editable:!1,allowBlank:!1,triggerAction:'all',bind:{value:'{theModel.jobScheduleType}',store:'{jobScheduleTypes}'},queryMode:'local'},this.buildJobSettingsDetails()]},buttons:[{xtype:'button',ui:'text',bind:{text:'{detailsLinkText} Advanced Job Settings'},handler:'toggleAdvancedSettings'},
'-\x3e',{text:'Save',reference:'saveBtn',disabled:!0,handler:'onSave',ui:'primary'},{text:'Cancel',handler:'onCancel',ui:'alternate'}],buildJobSettingsDetails:function(){return{xtype:'container',reference:'details',hideMode:'offsets',hidden:!0,layout:'anchor',anchor:'100%',bind:{hidden:'{!detailsVisible}'},items:[Ext.create('Ext.form.Label',{text:'Advanced job settings:',anchor:'100%'}),{xtype:'box',autoEl:'div',cls:'job-settings',reference:'settingsBox',anchor:'100%',height:250,margin:'5 0 8 0'},
{xtype:'fieldcontainer',anchor:'100%',layout:'hbox',combineErrors:!1,items:[{xtype:'combobox',fieldLabel:'Copy from',reference:'templateJob',name:'templateJob',displayField:'name',valueField:'id',autoSelect:!0,forceSelection:!0,triggerAction:'all',pubilishes:['value'],bind:{store:'{templateJobs}',disabled:'{!repository.selection}'},queryMode:'local',allowBlank:!0,listEmptyText:'No jobs found',flex:1,listeners:{load:'onTemplateJobStoreLoad'}},{text:'Apply',xtype:'button',ui:'primary',margin:'0 0 0 16',
width:80,handler:'applyJobSettings'}]}],listeners:{show:{fn:'viewCustomJobSettings',single:!0}}}}},0,['vcloud-mt-form'],'component box container panel window vcloud-mt-form'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'vcloud-mt-form':!0},['widget.vcloud-mt-form'],0,[MainApp.view.configuration.tab.vcloud,'Form'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcloud.VcloudController',Ext.app.ViewController,{onAdd:function(){this.createDialog(null)},onEdit:function(){var model=this.getSelected();this.createDialog(model)},afterRender:function(){this.getViewModel().getStore('gridStore').load()},onRemove:function(){var model=this.getSelected();return Common.ui.Msg.confirm('Remove','Remove configuration for  '+model.data.organizationName+'?',function(btn){'yes'==btn&&(this.fireEvent('mask'),model.erase({failure:function(){Common.ui.Msg.error('Failed to remove record');
this.fireEvent('unmask')},success:function(record){record.drop();this.fireEvent('unmask')},scope:this}))},this)},createDialog:function(record){var view=this.getView();this.isEdit=!!record;this.dialog=view.add({xtype:'vcloud-mt-form',renderTo:Ext.getBody(),viewModel:{data:{title:record?'Edit':'Add',isEdit:this.isEdit},links:{theModel:record||{type:'MainApp.model.VcdOrganizationConfiguration',create:!0}}},session:!0});this.mon(this.dialog,{save:'onSaveClick',cancel:'onCancelClick'});this.dialog.show()},
getSelected:function(){return this.getView().getSelectionModel().getSelection()[0]},onSaveClick:function(){this.dialog.getSession().save();this.onCancelClick();this.getViewModel().getStore('gridStore').reload()},onCancelClick:function(){this.dialog=Ext.destroy(this.dialog)},onExport:function(){(new Veeam.util.ExcelExporter('configuration.vcloud.exportOrganizationsUsage',[])).start()},quotaRenderer:function(v){v=Number(v);return 1024>v?v+' GB':Number((v/1024).toFixed(1)).toString()+' TB'},usedQuotaRenderer:function(v){return null===
v?null:Common.util.Format.fileSize(v)}},0,0,0,0,['controller.config.tab.vcloud'],0,[MainApp.view.configuration.tab.vcloud,'VcloudController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.vcloud.Vcloud',Veeam.base.view.BaseGrid,{controller:'config.tab.vcloud',viewModel:{type:'config.tab.vcloud'},session:!0,stateful:!1,border:!1,bind:{store:'{gridStore}',selection:'{gridSelection}'},leftButtons:[{text:'Add',iconCls:'org-create',handler:'onAdd'},{text:'Edit',bind:{disabled:'{!gridSelection}'},iconCls:'org-edit',disabled:!0,handler:'onEdit'},{text:'Remove',disabled:!0,iconCls:'org-remove',bind:{disabled:'{!canRemove}'},handler:'onRemove'}],
columns:{defaults:{sortable:!0,menuDisabled:!0,emptyCellText:'\x3cspan class\x3d"empty"\x3eNot available\x3c/a\x3e',flex:1},items:[{header:'Organization',dataIndex:'organizationName'},{header:'Repository',dataIndex:'repositoryName'},{header:'Quota',dataIndex:'quota',align:'right',renderer:'quotaRenderer'},{header:'Used',align:'right',dataIndex:'usedQuota',renderer:'usedQuotaRenderer'}]},listeners:{exporttoexcel:'onExport'}},0,['config.tab.vcloud'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid config.tab.vcloud'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,'config.tab.vcloud':!0},['widget.config.tab.vcloud'],0,[MainApp.view.configuration.tab.vcloud,'Vcloud'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SelfserviceController',Ext.app.ViewController,{routes:{'!configuration/selfservice:tabId':{action:'onSetupView',before:'checkViewAvailable',conditions:{':tabId':'(?:(?:/){1}([a-z0-9]+))?'}}},checkViewAvailable:function(){var args=Array.prototype.slice.call(arguments,0),action=args.pop();if(args=args.pop()){if('vcloud'==args){if(!this.isVcloudAvaliable()){action.stop(!0);return}}else if('vsphere'==args&&!this.isVsphereAvailable()){action.stop(!0);return}action.resume()}else action&&
action.resume()},onSetupView:function(tabId){if(!tabId)return this.showDefault();tabId+='-tab';this.getView().setActiveTab(tabId)},isVcloudAvaliable:function(){return!0===this.getViewModel().get('vcloud')},isVsphereAvailable:function(){return!0===this.getViewModel().get('vsphere')},showDefault:function(){var hashParams=location.hash.replace('#!','').split('/');if(2<hashParams.length&&'vcloud'===hashParams[2].toLowerCase()&&this.isVcloudAvaliable())return this.redirectTo('!configuration/selfservice/vcloud',
!0);if(this.isVsphereAvailable())return this.redirectTo('!configuration/selfservice/vsphere',!0);if(this.isVcloudAvaliable())return this.redirectTo('!configuration/selfservice/vcloud',!0)},onTabChange:function(panel,tab){this.redirectTo('!configuration/selfservice/'+tab.slug)},init:function(){var me=this;me.fireEvent('mask');MainApp.service.rpc.Config.getSelfserviceTabs().then(me.onLoaded.bind(me),Common.ui.Msg.error).always(function(){me.fireEvent('unmask')})},onLoaded:function(data){this.getViewModel().set('vsphere',
data.isVsphereAvailable);this.getViewModel().set('vcloud',data.isVcloudAvailable);this.showDefault();return!0}},0,0,0,0,['controller.config.tab.selfservice'],0,[MainApp.view.configuration.tab,'SelfserviceController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.Selfservice',Veeam.base.view.BaseTabPanel,{controller:'config.tab.selfservice',viewModel:{data:{vsphere:!1,vcloud:!1},formulas:{tabsVisible:{bind:{vcloud:'{vcloud}',vsphere:'{vsphere}'},get:function(b){return b.vcloud&&b.vsphere}},vsphereTabVisible:{bind:'{vsphere}',get:function(v){return v}},vcloudTabVisible:{bind:'{vcloud}',get:function(v){return v}}}},config:{tabBar:{hidden:!0,bind:{hidden:'{!tabsVisible}'}}},padding:16,activeTab:null,deferredRender:!0,
items:[{xtype:'config.tab.vsphere',title:'vSphere',itemId:'vsphere-tab',slug:'vsphere',tabConfig:{hidden:!0,bind:{hidden:'{!vsphereTabVisible}'}}},{xtype:'config.tab.vcloud',title:'vCloud',slug:'vcloud',itemId:'vcloud-tab',tabConfig:{hidden:!0,bind:{hidden:'{!vcloudTabVisible}'}},containerConfig:{xtype:'configuration.vcloud'}}],listeners:{tabchange:'onTabChange'}},0,0,'component box container panel tabpanel basetabpanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,basetabpanel:!0},
0,0,[MainApp.view.configuration.tab,'Selfservice'],0);Ext.cmd.derive('MainApp.model.SearchServerConfigurationRecord',Ext.data.Model,{fields:[{name:'id',type:'string'},{name:'ipOrDnsName',type:'string'},{name:'username',type:'string'},{name:'state',type:'string'},{name:'usage',type:'string'},{name:'description',type:'string'}]},0,0,0,0,0,0,[MainApp.model,'SearchServerConfigurationRecord'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SearchServersModel',Ext.app.ViewModel,{stores:{searchServers:{model:'MainApp.model.SearchServerConfigurationRecord',autoLoad:!0,remoteSort:!0,sorters:[{property:'ipOrDnsName',direction:'ASC'}],pageSize:20,proxy:{type:'direct',directFn:'RPC.Api.getSearchServersConfigurationReport',pageParam:!1,simpleSortMode:!0,reader:{type:'json',rootProperty:'items',totalProperty:'totalCount'}}}}},0,0,0,0,['viewmodel.search-servers-configuration'],0,[MainApp.view.configuration.tab,
'SearchServersModel'],0);
Ext.cmd.derive('MainApp.service.SearchServerService',Ext.Base,{singleton:!0,startCatalogConsolidation:function(){return Common.Request.thenable(RPC.Api.startCatalogConsolidation)},stopCatalogConsolidation:function(){return Common.Request.thenable(RPC.Api.stopCatalogConsolidation)},addServer:function(forceData){return Common.Request.thenable(RPC.Api.addSearchServer,forceData)},editServer:function(id,data){return Common.Request.thenable(RPC.Api.editSearchServer,id,data)},getServer:function(id){return Common.Request.thenable(RPC.Api.getSearchServerInfo,id)},
removeServer:function(id,cleanupSources){return Common.Request.thenable(RPC.Api.removeSearchServer,id,cleanupSources)},updateSchedule:function(data){return Common.Request.thenable(RPC.Api.updateCatalogScheduleSettings,data)},getSchedule:function(){return Common.Request.thenable(RPC.Api.getCatalogScheduleSettings)}},0,0,0,0,0,0,[MainApp.service,'SearchServerService'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.searchservers.Settings',Veeam.base.view.BaseWindow,{viewModel:'search-server-configuration',controller:'search-server-configuration',keepOriginalSetLoading:!0,title:'Search Server Settings',modal:!0,width:420,layout:'anchor',defaultButton:'submitButton',resizable:!1,initComponent:function(){Ext.apply(this,{items:{xtype:'form',reference:'form',items:this.getItemsConfig(this.initialConfig)},buttons:this.getButtonsConfig()});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},
getItemsConfig:function(config){return[{xtype:'textfield',reference:'dnsOrIpAddressField',value:config.editMode?config.editData.dnsOrIpAddress:'',fieldLabel:'DNS name or IP address of the Search server',labelAlign:'top',allowBlank:!1,regex:/^[^\s+?]/,anchor:'100%'},{xtype:'textareafield',reference:'descriptionField',value:config.editMode?config.editData.description:'',fieldLabel:'Server description',labelAlign:'top',allowBlank:!0,maxLength:2E3,anchor:'100%'},{xtype:'numberfield',reference:'portField',
value:config.editMode?config.editData.port:9395,fieldLabel:'Port',allowBlank:!1,allowDecimals:!1,minValue:0,maxValue:65535,maxWidth:170,labelPad:32,labelWidth:'auto',hideTrigger:!0},{xtype:'checkboxfield',reference:'useTheseCredentialsCheckbox',checked:config.editMode?config.editData.useTheseCredentials:!1,boxLabel:'Use these credentials'},{xtype:'textfield',reference:'usernameField',value:config.editMode?config.editData.username:'',fieldLabel:'Username',allowBlank:!1,anchor:'100%',cls:'checkbox-group--nested',
bind:{disabled:'{!useTheseCredentialsCheckbox.checked}'},labelWidth:80},{xtype:'textfield',reference:'passwordField',inputType:'password',fieldLabel:'Password',emptyText:'Type in a password',allowBlank:config.editMode,bind:{disabled:'{!useTheseCredentialsCheckbox.checked}'},listeners:{change:'onPasswordChange'},anchor:'100%',cls:'checkbox-group--nested',labelWidth:80},{xtype:'displayfield',fieldCls:'text-strong',value:'Capacity'},{xtype:'combobox',reference:'serverTypeCombobox',value:config.editMode?
3E3===config.editData.indexLimit||3E4===config.editData.indexLimit||3E5===config.editData.indexLimit?config.editData.indexLimit:'custom':'custom',bind:{store:'{searchServerTypes}'},listeners:{select:'onServerTypeChanged'},queryModel:'local',displayField:'name',valueField:'indexLimit',editable:!1,typeAhead:!1,fieldLabel:'Server type',anchor:'100%',labelWidth:80},{xtype:'numberfield',reference:'indexLimitField',value:config.editMode?config.editData.indexLimit:'',fieldLabel:'Index limit',allowBlank:!1,
allowDecimals:!1,minValue:1E3,maxValue:999999,maxWidth:180,labelWidth:80,hideTrigger:!0},{xtype:'alert',margin:'16 0 8 0',html:'Specify backend database server type to set recommended capacity values for this indexing server'}]},getButtonsConfig:function(){return[{xtype:'button',reference:'submitButton',ui:'primary',text:'OK',listeners:{click:'onSubmit'}},{xtype:'button',text:'Cancel',ui:'alternate',listeners:{click:'onCancel'}}]}},0,0,['component','box','container','panel','window'],{component:!0,
box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.searchservers,'Settings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.searchservers.CatalogReplicationSettingsModel',Ext.app.ViewModel,{stores:{collectionIntervalTypes:{fields:['value','name'],data:[{value:'hours',name:'hour(s)'},{value:'minutes',name:'minute(s)'}]}},formulas:{waitForOtherJobsEnabled:{bind:{isAutomaticallyChecked:'{automaticallyRadio.checked}',isChecked:'{waitForOtherJobsCheckbox.checked}'},get:function(data){return data.isAutomaticallyChecked&&data.isChecked}},updateIndexLimitEnabled:{bind:{isAutomaticallyChecked:'{automaticallyRadio.checked}',
isChecked:'{updateIndexLimitCheckbox.checked}'},get:function(data){return data.isAutomaticallyChecked&&data.isChecked}}}},0,0,0,0,['viewmodel.catalog-replication-settings'],0,[MainApp.view.configuration.tab.searchservers,'CatalogReplicationSettingsModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.searchservers.CatalogReplicationSettingsController',Ext.app.ViewController,{control:{form:{validitychange:'onFormValidation'}},defaultMaxPeriod:4,defaultMinPeriod:15,onConfirm:function(){var view=this.getView(),automaticallyRadio=this.lookupReference('automaticallyRadio'),waitForOtherJobsCheckbox=this.lookupReference('waitForOtherJobsCheckbox'),waitForOtherJobsValueNumber=this.lookupReference('waitForOtherJobsValueNumber'),waitForOtherJobsTypeCombo=this.lookupReference('waitForOtherJobsTypeCombo'),
updateIndexLimitCheckbox=this.lookupReference('updateIndexLimitCheckbox'),updateIndexLimitValueNumber=this.lookupReference('updateIndexLimitValueNumber'),updateIndexLimitTypeCombo=this.lookupReference('updateIndexLimitTypeCombo');(automaticallyRadio=automaticallyRadio.getValue())?(waitForOtherJobsCheckbox={is_checked:waitForOtherJobsCheckbox.getValue(),period:waitForOtherJobsValueNumber.getValue()||this.defaultMinPeriod,type:waitForOtherJobsTypeCombo.getValue()},updateIndexLimitCheckbox={is_checked:updateIndexLimitCheckbox.getValue(),
period:updateIndexLimitValueNumber.getValue()||this.defaultMaxPeriod,type:updateIndexLimitTypeCombo.getValue()}):(waitForOtherJobsCheckbox={is_checked:!0,period:this.defaultMinPeriod,type:'minutes'},updateIndexLimitCheckbox={is_checked:!0,period:this.defaultMaxPeriod,type:'hours'});view.fireEvent('submit',view,{id:view.initialConfig.scheduleData.id,type:automaticallyRadio?'periodically':'manually',min:waitForOtherJobsCheckbox,max:updateIndexLimitCheckbox});view.close()},onCancel:function(){this.getView().close()},
onFormValidation:function(form,valid){this.lookupReference('okButton').setDisabled(!valid)}},0,0,0,0,['controller.catalog-replication-settings'],0,[MainApp.view.configuration.tab.searchservers,'CatalogReplicationSettingsController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.searchservers.CatalogReplicationSettings',Veeam.base.view.BaseWindow,{viewModel:'catalog-replication-settings',controller:'catalog-replication-settings',title:'Replicate Catalogs',modal:!0,width:620,keepOriginalSetLoading:!0,autoHeight:!0,resizable:!1,layout:'fit',initComponent:function(){Ext.apply(this,{items:{xtype:'form',reference:'form',items:this.getItemsConfig(this.initialConfig)}});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},
buttons:[{xtype:'button',text:'OK',reference:'okButton',ui:'primary',listeners:{click:'onConfirm'}},{xtype:'button',ui:'alternate',text:'Cancel',listeners:{click:'onCancel'}}],getItemsConfig:function(config){return[{xtype:'displayfield',fieldLabel:'Update index:',labelWidth:110},{xtype:'radio',reference:'manuallyRadio',name:'collectMode',checked:'manually'===config.scheduleData.type,boxLabel:'Manually',labelWidth:110},{xtype:'radio',reference:'automaticallyRadio',name:'collectMode',checked:'periodically'===
config.scheduleData.type,boxLabel:'Automatically after any backup job finishes'},{xtype:'fieldcontainer',layout:{type:'hbox'},cls:'field-group-item checkbox-group--nested',items:[{xtype:'checkbox',reference:'waitForOtherJobsCheckbox',checked:!0===config.scheduleData.min.is_checked,boxLabel:'Wait for other running jobs for up to',flex:1,bind:{disabled:'{!automaticallyRadio.checked}'}},{xtype:'numberfield',reference:'waitForOtherJobsValueNumber',value:config.scheduleData.min.period,bind:{disabled:'{!waitForOtherJobsEnabled}'},
allowBlank:!1,allowDecimals:!1,minValue:1,maxValue:99999,hideTrigger:!0,width:80,margin:'0 16 0 0'},{xtype:'combobox',reference:'waitForOtherJobsTypeCombo',value:config.scheduleData.min.type,bind:{disabled:'{!waitForOtherJobsEnabled}',store:'{collectionIntervalTypes}'},queryModel:'local',displayField:'name',valueField:'value',allowBlank:!1,editable:!1,typeAhead:!1,width:128,margin:0}]},{xtype:'fieldcontainer',layout:'hbox',cls:'checkbox-group--nested',items:[{xtype:'checkbox',reference:'updateIndexLimitCheckbox',
checked:!0===config.scheduleData.max.is_checked,boxLabel:'Update index no more often than once every',bind:{disabled:'{!automaticallyRadio.checked}'},flex:1},{xtype:'numberfield',reference:'updateIndexLimitValueNumber',value:config.scheduleData.max.period,bind:{disabled:'{!updateIndexLimitEnabled}'},allowBlank:!1,allowDecimals:!1,minValue:1,maxValue:99999,hideTrigger:!0,width:80,margin:'0 16 0 0'},{xtype:'combobox',reference:'updateIndexLimitTypeCombo',value:config.scheduleData.max.type,bind:{disabled:'{!updateIndexLimitEnabled}',
store:'{collectionIntervalTypes}'},queryModel:'local',displayField:'name',valueField:'value',allowBlank:!1,editable:!1,typeAhead:!1,width:128}]}]}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.searchservers,'CatalogReplicationSettings'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SearchServersController',Ext.app.ViewController,{onRefresh:function(){this._reloadSearchServers()},onStartSync:function(){this.getView().setLoading();MainApp.service.SearchServerService.startCatalogConsolidation().then(this.onSuccess.bind(this)).otherwise(this.onError.bind(this))},onError:function(response){this.getView().setLoading(!1);Ext.GlobalEvents.fireEvent('tabnotification',{type:'error',message:response.message})},onSuccess:function(response){this.getView().setLoading(!1);
Ext.GlobalEvents.fireEvent('tabnotification',{type:'success',message:response.message})},onStopSync:function(){this.getView().setLoading();MainApp.service.SearchServerService.stopCatalogConsolidation().then(this.onSuccess.bind(this)).otherwise(this.onError.bind(this))},onAdd:function(){var onAddSuccess=function(dialog){dialog.setLoading(!1);dialog.close();this._reloadSearchServers()},onAddFailure=function(dialog,response){dialog.setLoading(!1);Common.ui.Msg.error(response.message)};Ext.create('MainApp.view.configuration.tab.searchservers.Settings',
{editMode:!1,listeners:{submit:function(dialog,data){dialog.setLoading();MainApp.service.SearchServerService.addServer(data).then(onAddSuccess.bind(this,dialog),onAddFailure.bind(this,dialog))},scope:this}}).show()},onEdit:function(){var me=this,searchServersGrid=me.getView(),selectedRecord=searchServersGrid.getSelectionModel().getSelection()[0],onEditSuccess=function(dialog){searchServersGrid.setLoading(!1);dialog.close();this._reloadSearchServers()};searchServersGrid.setLoading();MainApp.service.SearchServerService.getServer(selectedRecord.id).then(function(response){searchServersGrid.setLoading(!1);
'Removing'===selectedRecord.state?this._removeSearchServer(response):Ext.create('MainApp.view.configuration.tab.searchservers.Settings',{editMode:!0,editData:{dnsOrIpAddress:response.servername,description:response.description,useTheseCredentials:response.creds,username:response.username,port:response.port,indexLimit:response.index_limit},listeners:{submit:function(dialog,data){dialog.setLoading();MainApp.service.SearchServerService.editServer(selectedRecord.id,data).then(onEditSuccess.bind(me,dialog)).otherwise(me.onError.bind(me))},
scope:this}}).show()}.bind(me)).otherwise(me.onError.bind(me))},onRemove:function(){var searchServersGrid=this.getView(),selectedRecord=searchServersGrid.getSelectionModel().getSelection()[0];searchServersGrid.setLoading();MainApp.service.SearchServerService.getServer(selectedRecord.id).then(this._removeSearchServer.bind(this,selectedRecord)).always(function(){searchServersGrid.setLoading(!1)})},onSchedule:function(){var me=this,view=me.getView(),catalogReplicationDialog,onUpdateScheduleSettingsSuccess=
function(dialog){view.setLoading(!1)};MainApp.service.SearchServerService.getSchedule().then(function(response){catalogReplicationDialog=Ext.create('MainApp.view.configuration.tab.searchservers.CatalogReplicationSettings',{scheduleData:response,listeners:{submit:function(dialog,data){view.setLoading();MainApp.service.SearchServerService.updateSchedule(data).then(onUpdateScheduleSettingsSuccess.bind(dialog,me)).otherwise(me.onError.bind(me))},scope:me}});catalogReplicationDialog.show()}.bind(me)).otherwise(me.onError.bind(me))},
onExport:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('exportSearchServersConfigurationReport',[sortInfo])).start()},_reloadSearchServers:function(){this.getViewModel().getStore('searchServers').reload()},_removeSearchServer:function(record,searchServerInfo){var me=this,view=me.getView(),onRemoveServerSuccess=function(){view.setLoading(!1);me._reloadSearchServers()};Common.ui.Msg.confirmHtml('Search Servers',('Removing'==record.state?'Search Server is in delete pending state':
'Search Server will be removed. Are you sure?')+"\x3cbr /\x3e\x3cbr /\x3e\x3cspan\x3e\x3cinput type\x3d'checkbox' id\x3d'search-cleanup' "+(searchServerInfo.cleanSrc?' checked ':' ')+"style\x3d'vertical-align: middle;'/\x3e\x26nbsp;\x3clabel for\x3d'search-cleanup'\x3eCleanup search sources\x3c/label\x3e\x3c/span\x3e",function(btn){'yes'==btn&&(btn=Ext.Msg.body.select('input[id\x3dsearch-cleanup]').elements[0].checked,view.setLoading(),MainApp.service.SearchServerService.removeServer(record.id,btn).then(onRemoveServerSuccess.bind(me)).otherwise(me.onError.bind(me)))},
this).focus()}},0,0,0,0,['controller.search-servers-configuration'],0,[MainApp.view.configuration.tab,'SearchServersController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.SearchServers',Veeam.base.view.BaseGrid,{viewModel:'search-servers-configuration',controller:'search-servers-configuration',layout:'fit',padding:'16 16 0 16',listeners:{exporttoexcel:'onExport'},bind:{store:'{searchServers}',selection:'{theRow}'},columns:{defaults:{menuDisabled:!0,sortableColumns:!0,multiColumnSort:!1},items:[{text:'Name',dataIndex:'ipOrDnsName',sortable:!0,renderer:Ext.util.Format.htmlEncode,flex:5},{text:'Login',dataIndex:'username',
sortable:!0,renderer:Ext.util.Format.htmlEncode,flex:5},{text:'State',dataIndex:'state',sortable:!0,flex:2},{text:'Usage',dataIndex:'usage',sortable:!0,align:'right',flex:2},{text:'Server Description',dataIndex:'description',sortable:!1,renderer:Ext.util.Format.htmlEncode,flex:10}]},leftButtons:[{xtype:'button',text:'Sync Catalog Now',iconCls:'startsync',listeners:{click:'onStartSync'}},{xtype:'button',text:'Stop Sync',iconCls:'stopsync',cls:'before-separator',listeners:{click:'onStopSync'}},{xtype:'tbseparator'},
{xtype:'button',text:'Add...',iconCls:'addserver',listeners:{click:'onAdd'}},{xtype:'button',reference:'editButton',text:'Edit...',disabled:!0,iconCls:'editserver',bind:{disabled:'{!theRow}'},listeners:{click:'onEdit'}},{xtype:'button',reference:'removeButton',text:'Remove',disabled:!0,bind:{disabled:'{!theRow}'},cls:'before-separator',iconCls:'removeserver',listeners:{click:'onRemove'}},{xtype:'tbseparator'},{xtype:'button',text:'Schedule...',iconCls:'schedule',listeners:{click:'onSchedule'}}]},
0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,0,[MainApp.view.configuration.tab,'SearchServers'],0);
Ext.cmd.derive('MainApp.model.Role',Ext.Base,{privates:{_texts:{1:'Portal Administrator',2:'Portal User',3:'Restore Operator'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[MainApp.model,'Role'],function(){this[this.PortalAdministrator=1]='PortalAdministrator';this[this.PortalViewer=2]='PortalViewer';this[this.RestoreOperator=3]='RestoreOperator'});
Ext.cmd.derive('Veeam.model.Platform',Ext.Base,{privates:{_texts:{0:'VMWare',1:'Hyper-V',4:'VCloud',6:'Veeam Agent for Windows',7:'Veeam Agent for Linux'},_iconCls:{0:'vsphere',1:'hyperv',4:'vcloud',6:'vaw',7:'val'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''},getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'Platform'],
function(){this[this.EVmware=0]='EVmware';this[this.EHyperV=1]='EHyperV';this[this.EVcd=4]='EVcd';this[this.EEndPoint=6]='EEndPoint';this[this.ELinuxPhysical=7]='ELinuxPhysical'});
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.BaseWindowController',Ext.app.ViewController,{okHandler:function(){var activeCard=this._getActiveCard();activeCard='filterview'===activeCard.getItemId()?this._getFilterResult(activeCard):this._getTreeResult(activeCard);Ext.isString(activeCard)?Common.ui.Msg.error(activeCard):(this.fireViewEvent('objectselected',activeCard,this._createJobEntities(activeCard)),this.getView().close())},cancelHandler:function(){this.getView().close()},afterRender:function(view){view.setLoading(!0);
view.provider.initHierarchy().then(this.rpcHandlers.initHierarchy.success.bind(this)).otherwise(this.rpcHandlers.initHierarchy.failure.bind(this)).always(this.rpcHandlers.initHierarchy.always,this)},changeViewHandler:function(btn){var view=this.getView(),hType=btn.hType;hType&&(view.activateCardByType(hType),this._clearFilterField(),btn.setPressed(!0))},onSearch:function(field,text,type){field=text||'';type=type||null;text=this.getView();var provider=text.getProvider();this.lastActiveCard=text.showFilterGrid();
text.setLoading();provider.filter(this.lastActiveCard.viewId,field,type).then(this.rpcHandlers.filter.success.bind(this)).otherwise(Common.ui.Msg.error).always(this.rpcHandlers.filter.always,this)},onClearFilter:function(){this.getView().hideFilterGrid()},reloadActiveTree:function(){var view=this.getView(),provider=view.getProvider(),activeCard=this._getActiveCard(),isFilterCard='filterview'===activeCard.getItemId(),viewSid=isFilterCard?this.lastActiveCard.viewId:activeCard.viewId;this._setActiveCard(activeCard);
isFilterCard||activeCard.cancelPendingOperations();view.setLoading();provider.refresh(viewSid).then(this.rpcHandlers.refresh.success.bind(this)).otherwise(Common.ui.Msg.error).always(this.rpcHandlers.refresh.always,this)},rpcHandlers:{initHierarchy:{success:function(response){var view=this.getView();!1===response.success?this.rpcHandlers.initHierarchy.failure(response):(view.createViews(response.message),response=this._getActiveCard().hType,view.activateCardByType(response),(view=this.getView().getMainPanel().down('button[hType\x3d'+
response+']'))&&view.setPressed(!0))},failure:function(response){var view=this.getView();Common.ui.Msg.error(response,function(){view.close()})},always:function(){var view=this.getView();view&&view.setLoading(!1)}},refresh:{success:function(response){var activeCard=this._getActiveCard(),view=this.getView();!1===response.success?this.rpcHandlers.refresh.failure(response):(response=activeCard.getStore(),response.getRootNode().removeAll(),response.load({callback:view.refresh,scope:view}))},always:function(){this.getView().setLoading(!1)}},
filter:{success:function(response){this.getView();var activeCard=this._getActiveCard();!1===response.success?this.rpcHandlers.filter.failure(response):(response=response.totalCount?response.items:[],activeCard.getStore().loadData(response))},always:function(){this.getView().setLoading(!1)}}},privates:{_getFilterResult:function(activeCard){var view=this.getView(),objectViewType=view.getObjectViewType();activeCard=activeCard.getSelection();var result=[];Ext.each(activeCard,function(item){var record=
item.clone();record.set('id',item.get('nodeId'));record.set('objectViewType',objectViewType);record.set('viewType',view.getActiveCard().hType);record.set('iconCls',item.get('cls'));result.push(record)});return result.length?result:'Select at least one object to process'},_getTreeResult:function(activeCard){var view=this.getView(),objectViewType=view.getObjectViewType(),checkUserAccess=view.getCheckUserAccess(),noAccess=!1;activeCard=activeCard.getSelection();var result=[];Ext.each(activeCard,function(item){if('rootnode'!==
item.id&&!item.isBackupServer())if(checkUserAccess&&item.noAccess())noAccess=!0;else{var record=item.clone();record.set('path',item.getPath('nodeId'));record.set('objectViewType',objectViewType);record.set('viewType',view.getActiveCard().hType);result.push(record)}});return noAccess?'You do not have permissions to access some of the selected objects.':result.length?result:'Select at least one object to process'},_getActiveCard:function(){return this.getView().getMainPanel().getLayout().getActiveItem()},
_setActiveCard:function(card){return this.getView().getMainPanel().getLayout().setActiveItem(card)},_clearFilterField:function(){this.getView().down('common-categorizedsearchfield').setValue(null)},_createJobEntities:function(records){var result=[];Ext.each(records,function(item){result.push({id:item.get('nodeId'),nodeId:item.get('nodeId'),text:item.get('text'),type:item.get('type'),iconCls:item.get('iconCls'),cls:item.get('iconCls'),hostId:item.get('hostId'),reference:item.get('reference'),platform:item.get('platform'),
hostInstanceId:item.get('hostInstanceId'),hostInstanceName:item.get('hostInstanceName'),objectViewType:item.get('objectViewType'),viewType:item.get('viewType')})});return result}}},0,0,0,0,['controller.objectBrowser.window'],0,[Veeam.infrastructure.objectBrowser,'BaseWindowController'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.TreePanelController',Ext.app.ViewController,{afterRender:function(){this.getView().getStore().setSorters(this._getHierarchyStoreSorter())},hierarchyStoreBeforeLoad:function(store,operation){var view=this.getView();operation=operation.config.node;store.getProxy().setExtraParams({node:operation.get('nodeId'),viewId:view.viewId,serverId:operation.get('hostId')||null,hostInstanceId:operation.get('hostInstanceId')||null,rootHostInstanceId:this._getRootHostInstanceId(operation),
type:operation.get('type'),reference:operation.get('reference')})},onBeforeSelect:function(treepanel,node){return this.getView().getCheckUserAccess()?node.noAccess()?!1:!0:!0},privates:{_getRootHostInstanceId:function(node){for(;node.parentNode&&node.parentNode.data&&'rootnode'!==node.parentNode.data.id;)node=node.parentNode;return node&&node.data?node.data.hostInstanceId:null},_getHierarchyStoreSorter:function(){var sorter=new Ext.util.Sorter({property:'type',dir:'asc'}),desc=sorter.dir&&'desc'==
sorter.dir.toLowerCase(),prop$jscomp$0=sorter.property||'text',sortType=function(prop,node){prop=node.data.text;switch(node.data.type){case 'Folder':node='0000';break;case 'Cluster':case 'StoragePod':case 'ClusterComputeResource':node='1111';break;case 'HostGroup':node='2221';break;case 'HostSystem':node='2222';break;case 'VCenterServer':node='2221';break;case 'VirtualApp':case 'Vapp':node='3331';break;case 'ResourcePool':node='3333';break;default:node='9999'}return String(node+prop).toLocaleLowerCase()},
caseSensitive=!0===sorter.caseSensitive,leafAttr=sorter.leafAttr||'leaf';sorter.setSorterFn(function(n1,n2){var attr1=n1.data,attr2=n2.data;if(attr1[leafAttr]&&!attr2[leafAttr])return 1;if(!attr1[leafAttr]&&attr2[leafAttr])return-1;attr1=attr1[prop$jscomp$0];attr2=attr2[prop$jscomp$0];n1=sortType?sortType(attr1,n1):caseSensitive?attr1:attr1.toUpperCase();n2=sortType?sortType(attr2,n2):caseSensitive?attr2:attr2.toUpperCase();return'string'==typeof n1&&'string'==typeof n2?(n2=n1.localeCompare(n2),desc?
-n2:n2):n1<n2?desc?1:-1:n1>n2?desc?-1:1:0});return sorter}}},0,0,0,0,['controller.objectBrowser.treePanel'],0,[Veeam.infrastructure.objectBrowser,'TreePanelController'],0);
Ext.cmd.derive('Veeam.model.HierarchyEntity',Ext.data.TreeModel,{fields:[{name:'id'},{name:'nodeId'},{name:'leaf',type:'bool'},{name:'type'},{name:'hostId'},{name:'reference'},{name:'hostInstanceId'},{name:'platform',type:'int'},{name:'hostInstanceName'},{name:'objectViewType',type:'int'},{name:'userHasAccess',type:'boolean',allowNull:!0},{name:'iconCls',convert:function(value,record){value=record.get('cls');record.isVeeamAgent()&&(value=Veeam.model.Platform.getIconCls(record.get('platform')));!1===
record.get('userHasAccess')&&(value+=' no-access');return value}}],isBackupServer:function(){return'BackupServer'===this.get('type')},isVeeamAgent:function(){return'VeeamAgent'===this.get('type')},noAccess:function(){return!1===this.get('userHasAccess')}},0,0,0,0,0,0,[Veeam.model,'HierarchyEntity'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.TreePanel',Ext.tree.TreePanel,{controller:'objectBrowser.treePanel',viewModel:{},config:{provider:null,checkUserAccess:!1},userCls:'objectbrowser-treepanel',layout:'fit',margin:0,padding:0,animate:!1,border:!1,stateful:!1,selModel:{mode:'MULTI'},initComponent:function(){var root=Ext.apply({draggable:!1,text:'Root Node',id:'rootnode',attributes:{nodeId:'rootnode'}},this.rootNodeCfg),store=Ext.data.TreeStore({model:'Veeam.model.HierarchyEntity',proxy:this.getProvider().createLoader(),
clearOnLoad:!0,listeners:{beforeload:'hierarchyStoreBeforeLoad',scope:this.controller}});Ext.apply(this,{store:store,root:root});Ext.tree.Panel.prototype.initComponent.apply(this,arguments);this.getCheckUserAccess()&&this.addCls('check-user-access')},listeners:{beforeselect:'onBeforeSelect'},cancelPendingOperations:function(){var store=this.store;store&&store.getProxy()&&(store=store.getProxy().pendingOperations||{},Ext.Object.each(store,function(key,operation){operation.abort()}))},onDestroy:function(){this.cancelPendingOperations()}},
0,['objectBrowser.treePanel','objectbrowser-treepanel'],'component box container panel tablepanel treepanel objectBrowser.treePanel objectbrowser-treepanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,treepanel:!0,'objectBrowser.treePanel':!0,'objectbrowser-treepanel':!0},['widget.objectBrowser.treePanel','widget.objectbrowser-treepanel'],0,[Veeam.infrastructure.objectBrowser,'TreePanel'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.BaseWindow',Veeam.base.view.BaseWindow,{controller:'objectBrowser.window',statics:{viewTypes:{HostsAndClusters:1,VMsAndTemplates:2,DatastoresAndVms:3,HvHostsAndVms:4,VCloudHostsAndVms:5,HvHostsAndVolumes:9,HvHostsAndVmGroups:12,TagsAndVms:10,VCloudOrganization:11,Endpoint:14}},config:{provider:null,disableSearch:null,checkUserAccess:!1,tbarCfg:null},cls:'objectbrowser',height:554,width:500,minHeight:400,minWidth:460,title:'Add Objects',bodyPadding:'5 10',
modal:!0,closeAction:'hide',layout:'fit',items:{xtype:'container',layout:{type:'vbox',align:'stretch'}},buttons:[{text:'OK',ui:'primary',handler:'okHandler'},{text:'Cancel',ui:'alternate',handler:'cancelHandler'}],initComponent:function(){var innerConfig=[{xtype:'toolbar',docked:'top',reference:'searchToolbar',cls:'no-lr-padding-toolbar',layout:{type:'hbox',align:'stretch'},items:[{xtype:'common-categorizedsearchfield',emptyText:'Type in an object name to search for',categoryPropId:'type',allowEmptySearch:!0,
flex:1,btnWidth:156,padding:0,margin:0,listeners:{search:{buffer:300,fn:'onSearch',scope:'controller'},clear:'onClearFilter'}}]},{xtype:'panel',reference:'mainPanel',layout:'card',tbar:{cls:'no-lr-padding-toolbar',items:this.getTbarCfg()||this.tbarCfg},flex:1,items:[],defaults:{viewConfig:{loadMask:!1}}}];Ext.apply(this.items,{items:innerConfig});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},getMainPanel:function(){return this.lookupReference('mainPanel')},createViews:function(viewsConfig){this.getMainPanel().add({xtype:'grid',
itemId:'filterview',margin:0,padding:0,selModel:{selType:'rowmodel',mode:'MULTI'},hideHeaders:!0,viewConfig:{stripeRows:!1},emptyText:'\x3cdiv class\x3d"x-entity-type"\x3eNo items to display\x3c/div\x3e',store:{root:'items',fields:['text','cls','type'],data:[]},columns:[{text:'Name',flex:1,dataIndex:'text',xtype:'templatecolumn',tpl:'\x3cdiv class\x3d"x-entity-type {cls}"\x3e{text}\x3c/div\x3e'}]})},activateCardByType:function(hType){var cardPanel=this.getMainPanel(),searchToolbar=this.lookup('searchToolbar'),
card=this.getCardByType(hType),reloadBtn=this.down('button[handler\x3dreloadActiveTree]'),searchChoises=this.searchChoises&&this.searchChoises[hType]?this.searchChoises[hType]:null;card?(cardPanel.setActiveItem(card),searchChoises?(searchToolbar.setVisible(!this.getDisableSearch()),this.down('common-categorizedsearchfield').setCategories(searchChoises)):searchToolbar.setVisible(!1),reloadBtn&&reloadBtn.show()):console.error("Card with HType \x3d\x3d '"+hType+"' not found")},getCardByType:function(hType){return this.getMainPanel().down('treepanel[hType\x3d'+
hType+']')},showFilterGrid:function(){var cardPanel=this.getMainPanel(),activeCard=this.getActiveCard(),reloadBtn=this.down('button[handler\x3dreloadActiveTree]');if('filterview'===activeCard.itemId)return this.lastActiveCard;this.lastActiveCard=activeCard;cardPanel.setActiveItem('filterview').hType=this.lastActiveCard.hType;reloadBtn&&reloadBtn.hide();return activeCard},hideFilterGrid:function(){var cardPanel=this.getMainPanel(),lastActiveCard=this.lastActiveCard||0,reloadBtn=this.down('button[handler\x3dreloadActiveTree]');
cardPanel.setActiveItem(lastActiveCard);reloadBtn&&reloadBtn.show()},getActiveCard:function(){return this.getMainPanel().getLayout().getActiveItem()},getObjectViewType:function(){var hType=this.getActiveCard().hType;return Veeam.infrastructure.objectBrowser.BaseWindow.viewTypes[hType]},onDestroy:function(){this.getProvider().destroy()}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.infrastructure.objectBrowser,'BaseWindow'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.ViWindow',Veeam.infrastructure.objectBrowser.BaseWindow,{tbarCfg:[{xtype:'button',iconCls:'refresh',text:'Reload',handler:'reloadActiveTree'},{xtype:'tbfill'},{xtype:'button',enableToggle:!0,ui:'filter',toggleGroup:'viewTypes',tooltip:'Hosts and Clusters',itemId:'hosts_and_clusters',iconCls:'hosts_and_clusters',hType:'HostsAndClusters',handler:'changeViewHandler'},{xtype:'button',ui:'filter',enableToggle:!0,toggleGroup:'viewTypes',tooltip:'VMs and Templates',
itemId:'vms_and_templates',iconCls:'vms_and_templates',hType:'VMsAndTemplates',handler:'changeViewHandler'},{xtype:'button',ui:'filter',enableToggle:!0,toggleGroup:'viewTypes',tooltip:'Datastores and VMs',itemId:'datastores_and_vms',iconCls:'datastores_and_vms',hType:'DatastoresAndVms',handler:'changeViewHandler'},{xtype:'button',ui:'filter',enableToggle:!0,toggleGroup:'viewTypes',tooltip:'Tags and VMs',itemId:'tags_and_vms',iconCls:'tags_and_vms',hType:'TagsAndVms',handler:'changeViewHandler'}],
searchChoises:{HostsAndClusters:[{text:'Everything',iconCls:'everything',type:null},{text:'Folder',iconCls:'Folder',type:'Folder'},{text:'Cluster',iconCls:'ClusterComputeResource',type:'ClusterComputeResource'},{text:'Host',iconCls:'HostSystem',type:'HostSystem'},{text:'Resource pool',iconCls:'ResourcePool',type:'ResourcePool'},{text:'Virtual app',iconCls:'VirtualApp',type:'virtualApp'},{text:'Virtual machine',iconCls:'VirtualMachine',type:'VirtualMachine'}],VMsAndTemplates:[{text:'Everything',iconCls:'everything',
type:null},{text:'Folder',iconCls:'Folder',type:'Folder'},{text:'Virtual machine',iconCls:'VirtualMachine',type:'VirtualMachine'}],DatastoresAndVms:[{text:'Everything',iconCls:'everything',type:null},{text:'Folder',iconCls:'Folder',type:'Folder'},{text:'Datastore',iconCls:'Datastore',type:'Datastore'},{text:'Virtual machine',iconCls:'VirtualMachine',type:'VirtualMachine'}],TagsAndVms:[{text:'Everything',iconCls:'everything',type:null},{text:'Category',iconCls:'Category',type:'Category'},{text:'Tag',
iconCls:'Tag',type:'Tag'},{text:'Virtual machine',iconCls:'VirtualMachine',type:'virtualMachine'}]},createViews:function(viewsConfig){this.getMainPanel().insert(0,[{itemId:'hosts_and_clusters_tree',cls:'x-vmware',hType:'HostsAndClusters',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),viewId:viewsConfig.HostsAndClusters,rootNodeCfg:{text:'Hosts and Clusters'},provider:this.provider},{itemId:'vms_and_templates_tree',cls:'x-vmware',hType:'VMsAndTemplates',xtype:'objectbrowser-treepanel',
checkUserAccess:this.getCheckUserAccess(),viewId:viewsConfig.VMsAndTemplates,rootNodeCfg:{text:'VMs and Templates'},provider:this.provider},{itemId:'datastores_and_vms_tree',cls:'x-vmware',hType:'DatastoresAndVms',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),viewId:viewsConfig.DatastoresAndVms,rootNodeCfg:{text:'Datastores and VMs'},provider:this.provider},{itemId:'tags_and_vms_tree',cls:'x-vmware',hType:'TagsAndVms',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),
viewId:viewsConfig.TagsAndVms,rootNodeCfg:{text:'Tags and VMs'},provider:this.provider}]);Veeam.infrastructure.objectBrowser.BaseWindow.prototype.createViews.apply(this,arguments)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.infrastructure.objectBrowser,'ViWindow'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.HvWindow',Veeam.infrastructure.objectBrowser.BaseWindow,{config:{disabledHOstAndVolumesButton:!1},tbarCfg:[{xtype:'button',iconCls:'refresh',text:'Reload',handler:'reloadActiveTree'},{xtype:'tbfill'},{xtype:'button',ui:'filter',hType:'HvHostsAndVms',enableToggle:!0,pressed:!0,toggleGroup:'viewTypes',tooltip:'Hosts and VMs',itemId:'hv_hosts_and_vms',iconCls:'hv_hosts_and_vms',handler:'changeViewHandler'},{xtype:'button',ui:'filter',hType:'HvHostsAndVolumes',
enableToggle:!0,pressed:!1,toggleGroup:'viewTypes',tooltip:'Hosts and Volumes',itemId:'hv_hosts_and_volumes',iconCls:'hv_hosts_and_volumes',handler:'changeViewHandler'},{xtype:'button',ui:'filter',hType:'HvHostsAndVmGroups',enableToggle:!0,pressed:!1,toggleGroup:'viewTypes',tooltip:'Hosts and VM Groups',itemId:'hv_hosts_and_vm_groups',iconCls:'hv_hosts_and_vm_groups',handler:'changeViewHandler'}],searchChoises:{HvHostsAndVms:[{text:'Everything',iconCls:'everything',type:null},{text:'Folder',iconCls:'Folder',
type:'Folder'},{text:'Host Group',iconCls:'HostGroup',type:'HostGroup'},{text:'SCVMM',iconCls:'Scvmm',type:'Scvmm'},{text:'Cluster',iconCls:'Cluster',type:'Cluster'},{text:'Host',iconCls:'Host',type:'Host'},{text:'Vm',iconCls:'Vm',type:'Vm'}],HvHostsAndVolumes:[{text:'Everything',iconCls:'everything',type:null},{text:'Folder',iconCls:'Folder',type:'Folder'},{text:'Host Group',iconCls:'HostGroup',type:'HostGroup'},{text:'SCVMM',iconCls:'Scvmm',type:'Scvmm'},{text:'Cluster',iconCls:'Cluster',type:'Cluster'},
{text:'Host',iconCls:'Host',type:'Host'},{text:'Vm',iconCls:'Vm',type:'Vm'}],HvHostsAndVmGroups:[{text:'Everything',iconCls:'everything',type:null},{text:'Host Group',iconCls:'HostGroup',type:'HostGroup'},{text:'SCVMM',iconCls:'Scvmm',type:'Scvmm'},{text:'Cluster',iconCls:'Cluster',type:'Cluster'},{text:'Host',iconCls:'Host',type:'Host'},{text:'VM Group',iconCls:'HvVmGroup',type:'HvVmGroup'},{text:'Vm',iconCls:'Vm',type:'Vm'}]},createViews:function(viewsConfig){var mainPanel=this.getMainPanel();mainPanel.insert(0,
[{itemId:'hv_hosts_and_vms_tree',hType:'HvHostsAndVms',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),cls:'x-hyperv',viewId:viewsConfig.HvHostsAndVms,rootNodeCfg:{text:'Hosts and VMs'},provider:this.provider}]);viewsConfig.HvHostsAndVolumes&&viewsConfig.HvHostsAndVolumes===Common.util.Constants.EMPTY_GUID?this.down('button[hType\x3dHvHostsAndVolumes]').setDisabled(!0):mainPanel.insert(1,[{itemId:'hv_hosts_and_volumes_tree',hType:'HvHostsAndVolumes',xtype:'objectbrowser-treepanel',
checkUserAccess:this.getCheckUserAccess(),cls:'x-hyperv',viewId:viewsConfig.HvHostsAndVolumes,rootNodeCfg:{text:'Hosts and Volumes'},provider:this.provider}]);viewsConfig.HvHostsAndVmGroups&&viewsConfig.HvHostsAndVmGroups===Common.util.Constants.EMPTY_GUID?this.down('button[hType\x3dHvHostsAndVmGroups]').setDisabled(!0):mainPanel.add({itemId:'hv_hosts_and_vm_groups_tree',hType:'HvHostsAndVmGroups',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),cls:'x-hyperv',viewId:viewsConfig.HvHostsAndVmGroups,
rootNodeCfg:{text:'Hosts and VM Groups'},provider:this.provider});Veeam.infrastructure.objectBrowser.BaseWindow.prototype.createViews.call(this,viewsConfig)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.infrastructure.objectBrowser,'HvWindow'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.VcloudWindow',Veeam.infrastructure.objectBrowser.BaseWindow,{tbarCfg:[{xtype:'button',iconCls:'refresh',text:'Reload',handler:'reloadActiveTree'},{xtype:'tbfill'}],searchChoises:{VCloudHostsAndVms:[{text:'Everything',iconCls:'everything',type:null},{text:'vCloud Instance',iconCls:'VcdSystem',type:'VcdSystem'},{text:'Organization',iconCls:'Organization',type:'Organization'},{text:'Organization vDC',iconCls:'OrgVdc',type:'OrgVdc'},{text:'vCloud App',
iconCls:'Vapp',type:'Vapp'},{text:'vCloud VM',iconCls:'VcdVm',type:'VcdVm'}]},createViews:function(viewsConfig){this.getMainPanel().insert(0,[{itemId:'vcloud_hosts_and_vms_tree',hType:'VCloudHostsAndVms',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),cls:'x-vcloud',viewId:viewsConfig.VCloudHostsAndVms,rootNodeCfg:{text:'vCloud Director'},provider:this.provider}]);Veeam.infrastructure.objectBrowser.BaseWindow.prototype.createViews.apply(this,arguments)}},0,0,['component',
'box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.infrastructure.objectBrowser,'VcloudWindow'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.EndpointWindow',Veeam.infrastructure.objectBrowser.BaseWindow,{tbarCfg:[{xtype:'button',iconCls:'refresh',text:'Reload',handler:'reloadActiveTree'},{xtype:'tbfill'}],searchChoises:{AgentProtectionGroups:[{text:'Everything',iconCls:'everything',type:null},{text:'Backup Server',iconCls:'backupServer',type:'BackupServer'},{text:'Protection Group',iconCls:'protectionGroup',type:'Folder'},{text:'Agent',iconCls:'veeamAgent',type:'VeeamAgent'}]},createViews:function(viewsConfig){this.getMainPanel().insert(0,
[{itemId:'agent_protection_groups_tree',hType:'AgentProtectionGroups',xtype:'objectbrowser-treepanel',checkUserAccess:this.getCheckUserAccess(),cls:'x-endpoint',viewId:viewsConfig.AgentProtectionGroups,rootNodeCfg:{text:'Backup Servers'},provider:this.provider}]);Veeam.infrastructure.objectBrowser.BaseWindow.prototype.createViews.apply(this,arguments)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[Veeam.infrastructure.objectBrowser,
'EndpointWindow'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.WindowFactory',Ext.Base,{statics:{createWindow:function(platform,provider,disableSearch,cfg){var platformModel=Veeam.model.Platform,windowClass;platformModel.EVmware===platform?windowClass='Veeam.infrastructure.objectBrowser.ViWindow':platformModel.EHyperV===platform?windowClass='Veeam.infrastructure.objectBrowser.HvWindow':platformModel.EVcd===platform?windowClass='Veeam.infrastructure.objectBrowser.VcloudWindow':platformModel.EEndPoint===platform&&
(windowClass='Veeam.infrastructure.objectBrowser.EndpointWindow');provider={provider:provider,renderTo:Ext.getBody(),disableSearch:disableSearch||!1};Ext.apply(provider,cfg);if(windowClass)return Ext.create(windowClass,provider);Ext.raise('Unknown platform type :'+platform)}}},0,0,0,0,0,0,[Veeam.infrastructure.objectBrowser,'WindowFactory'],0);
Ext.cmd.derive('Veeam.infrastructure.objectBrowser.providers.BaseProvider',Ext.Base,{config:{platform:0,destroyApi:null,childrenApi:null,initApi:null,refreshApi:null,filterApi:null},constructor:function(config){this.initConfig(config);return this},createLoader:function(){return new Ext.data.DirectProxy({directFn:RPC.Api[this.getChildrenApi()],idProperty:'nodeId'})},destroy:function(){RPC.Api[this.getDestroyApi()](Ext.emptyFn)},initHierarchy:function(){var platform=this.getPlatform();return Common.Request.thenable(RPC.Api[this.getInitApi()],
platform)},refresh:function(viewSid){return Common.Request.thenable(RPC.Api[this.getRefreshApi()],viewSid)},filter:function(viewSid,query,entityType){return Common.Request.thenable(RPC.Api[this.getFilterApi()],viewSid,query,entityType)}},1,0,0,0,0,0,[Veeam.infrastructure.objectBrowser.providers,'BaseProvider'],0);
Ext.cmd.derive('MainApp.view.infrastructure.objectBrowser.providers.CommonHierarchyProvider',Veeam.infrastructure.objectBrowser.providers.BaseProvider,{destroyApi:'common_hierarchy.destroy',childrenApi:'common_hierarchy.getChildren',initApi:'common_hierarchy.init',refreshApi:'common_hierarchy.refresh',filterApi:'common_hierarchy.filter',constructor:function(config){Veeam.infrastructure.objectBrowser.providers.BaseProvider.prototype.constructor.call(this,config);this.isDestroyed=!1},destroy:function(notifyServer){var me=
this;if(!1===me.isDestroyed)if(!1!==notifyServer)RPC.Api[this.getDestroyApi()](function(){me.isDestroyed=!0});else me.isDestroyed=!0}},1,0,0,0,0,0,[MainApp.view.infrastructure.objectBrowser.providers,'CommonHierarchyProvider'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.roles.ScopeWindowController',Ext.app.ViewController,{dialogs:{},listeners:{close:'rejectChanges'},addRecord:function(r){this.getStore().addRecord(r)},getStore:function(){return this.getViewModel().get('scopeObjectsStore')},createRecord:function(wnd,entities,roleAccountId){entities=[].concat(entities);if(!entities||0==entities.length)throw Error('Empty entity.');wnd=this.getStore();for(var index=0;index<entities.length;index++){var entity=entities[index];
entity=MainApp.model.ScopeObject.create({id:null,roleAccountId:roleAccountId,state:0,name:entity.get('text'),objectRef:entity.get('reference'),hostInstanceId:entity.get('hostInstanceId'),objectKeyhash:null,viewType:entity.get('viewType'),objectType:entity.get('type'),platform:entity.get('platform'),hostInstanceName:entity.get('hostInstanceName')});-1==wnd.findExact('uid',entity.get('uid'))&&wnd.add(entity)}},createObject:function(wind,entities){var accountId=this.getViewModel().get('recordId');this.createRecord(wind,
entities,accountId)},getObjects:function(){var records=this.getStore().getRange();records=Ext.pluck(records,'data');for(var i=0,len=records.length,decode=Ext.util.Format.htmlDecode;i<len;i++)records[i].id=decode(records[i].id),records[i].name=decode(records[i].name);return records},getObjectsCount:function(){return this.getStore().getCount()},validate:function(){return!0!==this.initiated?!0:0==this.isValid()?(Common.ui.Msg.error({msg:'Select at least one object first.'}),!1):!0},isValid:function(){return 0<
this.getObjectsCount()},removeSelected:function(){var selected=this.lookupReference('list').getSelection();this.getStore().remove(selected)},getNewRecords:function(){return this.getStore().queryBy(function(r){return!0===r.phantom},this).getRange()},addHvObject:function(){return this.addObjectHandler(Veeam.model.Platform.EHyperV)},addVsphereObject:function(){return this.addObjectHandler(Veeam.model.Platform.EVmware)},addVcdObject:function(){return this.addObjectHandler(Veeam.model.Platform.EVcd)},
addAgentProtectionGroupObject:function(){return this.addObjectHandler(Veeam.model.Platform.EEndPoint)},addObjectHandler:function(platform){this.infrastructureDialog&&this.infrastructureDialog.platform!==platform&&(this.infrastructureDialog.getProvider().destroy(!1),this.infrastructureDialog=Ext.destroy(this.infrastructureDialog));this.infrastructureDialog||(this.infrastructureDialog=this.createDialog(platform),this.mon(this.infrastructureDialog,'objectselected',this.createObject,this),this.infrastructureDialog.platform=
platform);this.infrastructureDialog.show()},createDialog:function(platform){var view=this.getView(),provider=Ext.create('MainApp.view.infrastructure.objectBrowser.providers.CommonHierarchyProvider',{platform:platform});return(platform=Veeam.infrastructure.objectBrowser.WindowFactory.createWindow(platform,provider,!0,{closeAction:'hide'}))?view.parentView.add(platform):null},removeObjectHandler:function(){this.removeSelected()},rejectChanges:function(){this.getStore().rejectChanges();this.getView().close()},
commitChanges:function(){var store=this.getStore();store.commitChanges();this.fireViewEvent('commitScope',this.getView(),store.getRange())},attachStoreListeners:function(grid,store,columns,oldStore){store.on('datachanged',this.onStoreDataChange,this);this.onStoreDataChange(store);oldStore.un('datachanged',this.onStoreDataChange,this)},onStoreDataChange:function(store){this.getViewModel().set('hasRecords',0<store.getCount())},destroy:function(){this.infrastructureDialog=Ext.destroy(this.infrastructureDialog);
Ext.app.ViewController.prototype.destroy.call(this)}},0,0,0,0,['controller.config.tab.roles.scope'],0,[MainApp.view.configuration.tab.roles,'ScopeWindowController'],0);Ext.cmd.derive('MainApp.view.configuration.tab.roles.ScopeWindowModel',Ext.app.ViewModel,{data:{hasRecords:!1}},0,0,0,0,['viewmodel.config.tab.roles.scope'],0,[MainApp.view.configuration.tab.roles,'ScopeWindowModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.roles.ScopeWindow',Ext.window.Window,{controller:'config.tab.roles.scope',width:620,minHeight:400,maxHeight:480,modal:!0,resizable:!1,title:'Manage Scope Objects',layout:'fit',closeAction:'hide',bodyPadding:16,ui:'wizard',viewModel:{type:'config.tab.roles.scope'},items:[{xtype:'grid',reference:'list',bind:'{scopeObjectsStore}',border:!1,selModel:{type:'rowmodel',mode:'MULTI'},viewConfig:{stripeRows:!1},emptyText:'',reserveScrollOffset:!0,scrollable:!0,
columns:{defaults:{sortable:!0,menuDisabled:!0},items:[{width:22,header:'',xtype:'actioncolumn',dataIndex:'objectType',getClass:function(value){return value}},{header:'Name',flex:1,dataIndex:'name'},{header:'Type',flex:1,dataIndex:'objectType'},{header:'Host',flex:1,dataIndex:'hostInstanceName'}]},listeners:{reconfigure:'attachStoreListeners'},tbar:[{text:'Add object',iconCls:'add',menu:[{text:'Hyper-V object',iconCls:'hyperv',reference:'addHvButton',handler:'addHvObject'},{text:'vSphere object',
iconCls:'vsphere',reference:'addViButton',handler:'addVsphereObject'},{text:'vCloud object',iconCls:'vcloud',reference:'addVcdObject',handler:'addVcdObject'},{text:'Protection Groups',iconCls:'agent_protection_groups',reference:'addAgentProtectionGroupObject',handler:'addAgentProtectionGroupObject'}]},{xtype:'button',iconCls:'remove',text:'Remove',bind:{disabled:'{!hasRecords}'},margin:'8 0 0 0',reference:'removeButton',handler:'removeObjectHandler'}]}],buttons:[{text:'OK',ui:'primary',bind:{disabled:'{!hasRecords}'},
handler:'commitChanges'},{text:'Cancel',ui:'alternate',handler:'rejectChanges'}]},0,['config.tab.roles.scope'],'component box container panel window config.tab.roles.scope'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'config.tab.roles.scope':!0},['widget.config.tab.roles.scope'],0,[MainApp.view.configuration.tab.roles,'ScopeWindow'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.roles.FormController',Ext.app.ViewController,{statics:{errors:{permissions:{type:1,msg:'Select at least one restore permission'},scope:{type:2,msg:'Select at least one scope object'},server:{type:3}}},listen:{component:{checkbox:{change:{fn:'checkPermissions',buffer:100}}}},control:{form:{validitychange:'onFormValidation'}},afterRender:function(){var me=this,id=me.getViewModel().get('recordId'),view=me.getView();id?(view.setTitle('Edit Role'),view.setLoading('Loading...'),
MainApp.service.AccountService.getAccount(id).then(me.initData.bind(me)).always(function(){view.setLoading(!1)}).otherwise(Common.ui.Msg.error)):(me.initData(null),view.setTitle('Add Role'),setTimeout(function(){me.lookupReference('accountField').focus()},10))},initData:function(record){record||(record=Ext.create('MainApp.model.FullAccountConfig',{scopeEnabled:!1,accountType:MainApp.model.AccountType.USER,roleId:MainApp.model.Role.PortalAdministrator}));this.getViewModel().set('theModel',record)},
initViewModel:function(vm){var me=this;me.bindings=vm.bind('{theModel.roleId}',function(newValue,oldValue){if(1===newValue||1===oldValue)me.getView().needCenter=!0;if(1===newValue||1===oldValue||void 0===oldValue)me.getView().needCenter=!0;me.checkPermissions()})},onChangeAccount:function(){this._hideFormError(this.self.errors.server.type)},onFormValidation:function(form,valid){this.lookupReference('saveBtn').setDisabled(!valid)},checkPermissions:function(){var vm=this.getViewModel(),hasPermissions=
vm.get('theModel').hasAnyPermission();vm=vm.get('isRestoreOperator');var error=this.self.errors.permissions;if(vm&&!hasPermissions)return this._showFormError(error.msg,error.type),!1;this._hideFormError(error.type);return!0},checkScopeSelected:function(){var vm=this.getViewModel(),scopeEnabled=vm.get('theModel.scopeEnabled');vm=vm.get('theModel.scopeObjects');var error=this.self.errors.scope;if(scopeEnabled){if(!(vm&&0<vm.getCount()))return this._showFormError(error.msg,error.type),!1;this._hideFormError(error.type)}return!0},
validate:function(){return this.getView().lookupReference('form').isValid()&&this.checkPermissions()&&this.checkScopeSelected()},onSave:function(){var me=this,vm=me.getViewModel(),errorType=me.self.errors.server.type;if(this.validate()){var rec=vm.get('theModel');vm.get('isEdit')||rec.setId(null);me.getView().mask('Saving...');MainApp.service.AccountService.saveAccount(rec).then(function(){me.fireViewEvent('save',me.getView())}).otherwise(function(error){me._showFormError(error.message?error.message:
error,errorType)}).always(function(){me.getView()&&me.getView().unmask()})}},configureScopeHandler:function(){var view=this.getView();if(!this.dialog||this.dialog.destroyed)this.dialog=view.parentView.add(Ext.create('MainApp.view.configuration.tab.roles.ScopeWindow',{renderTo:Ext.getBody(),parentView:view.parentView,viewModel:{data:{scopeObjectsStore:this.getViewModel().get('theModel.scopeObjects'),recordId:this.getViewModel().get('recordId')}}})),this.mon(this.dialog,{commitScope:'updateScopeObjects'});
this.dialog.show()},onCancel:function(){this.fireViewEvent('cancel',this.getView())},onDatabaseCheck:function(cb,checked){cb=this.getViewModel();var isAnyDbPermissions=cb.get('isAnyDbRestorePermission');if(checked&&isAnyDbPermissions)return!1;cb.set('theModel.canRestoreSQL',checked);cb.set('theModel.canRestoreOracle',checked)},updateScopeObjects:function(dialog,objects){var modelStore=this.getViewModel().get('theModel.scopeObjects');modelStore.removeAll();modelStore.add(objects);this.onDialogClose(dialog)},
onDialogClose:function(dialog){dialog.close()},destroy:function(){Ext.destroy(this.bindings);this.dialog=Ext.destroy(this.dialog);Ext.app.ViewController.prototype.destroy.call(this)},privates:{_showFormError:function(message,type){var errorsField=this.lookupReference('formErrors');message&&type&&(errorsField.setHtml(Ext.util.Format.htmlEncode(message)),errorsField.setHidden(!1),errorsField.type=type)},_hideFormError:function(type){var errorsField=this.lookupReference('formErrors');type?errorsField.type===
type&&(errorsField.setHtml(''),errorsField.setHidden(!0)):(errorsField.setHtml(''),errorsField.setHidden(!0))}}},0,0,0,0,['controller.config.tab.roles.form'],0,[MainApp.view.configuration.tab.roles,'FormController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.roles.FormModel',Ext.app.ViewModel,{stores:{roles:{type:'array',fields:['id','name'],data:'{rolesData}'},accountTypes:{type:'array',fields:['id','name'],data:[[2,'User'],[1,'Group']]}},formulas:{rolesData:{get:function(){var r=MainApp.model.Role;return[[r.PortalAdministrator,r.getLabel(r.PortalAdministrator)],[r.PortalViewer,r.getLabel(r.PortalViewer)],[r.RestoreOperator,r.getLabel(r.RestoreOperator)]]}},accountSelection:{bind:'{theModel.accountType}',
deep:!0,get:function(accType){return accType||2},set:function(type){this.set('theModel.accountType',type)}},isItemRestoreAllowed:{get:function(){return MainApp.app.getHelper().isEnterpriseLicense()}},isRestoreScopeAllowed:{get:function(){return MainApp.app.getHelper().isEnterprisePlusLicense()}},isRestoreScopeButtonActive:{bind:'{theModel.scopeEnabled}',get:function(v){return this.get('isRestoreScopeAllowed')&&v}},allowDatabaseRestore:{bind:'{databaseCheckbox.checked}',deep:!0,get:function(v){return this.get('isItemRestoreAllowed')&&
v}},allowGuestFilesRestore:{bind:'{theModel.canRestoreFiles}',deep:!0,get:function(v){return this.get('isItemRestoreAllowed')&&v}},restrictedExtFieldActive:{bind:{cb1:'{theModel.flrRestrictedByExt}',cb2:'{allowGuestFilesRestore}'},get:function(d){return d.cb1&&d.cb2}},isPortalAdmin:{bind:'{theModel.roleId}',get:function(v){return v===MainApp.model.Role.PortalAdministrator}},isRestoreOperator:{bind:'{theModel.roleId}',get:function(v){return v===MainApp.model.Role.RestoreOperator}},isAnyDbRestorePermission:{bind:{cb1:'{theModel.canRestoreOracle}',
cb2:'{theModel.canRestoreSQL}'},get:function(d){return d.cb1||d.cb2}}}},0,0,0,0,['viewmodel.config.tab.roles.form'],0,[MainApp.view.configuration.tab.roles,'FormModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.roles.Form',Veeam.base.view.BaseWindow,{controller:'config.tab.roles.form',viewModel:{type:'config.tab.roles.form'},ADMINISTRATOR_GUID:'5f37a46b-9ce2-40f4-8a62-b45b079257fc',autoHeight:!0,resizable:!1,modal:!0,layout:'fit',cls:'veeam-account-window',initComponent:function(){Ext.apply(this,{keys:[{key:13,fn:'commitHandler',scope:this}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},items:[{xtype:'form',reference:'form',bodyPadding:0,
defaults:{anchor:'100%',labelWidth:100},items:[{xtype:'combo',defaults:{allowBlank:!1,validationEvent:!1,mode:'local',typeAhead:!0,triggerAction:'all',shadow:!0},fieldLabel:'Account type',valueField:'id',displayField:'name',forceSelection:!0,editable:!1,bind:{disabled:'{isEdit}',store:'{accountTypes}',value:'{accountSelection}'}},{xtype:'textfield',fieldLabel:'Account',reference:'accountField',allowBlank:!1,anchor:'100%',bind:{disabled:'{isEdit}',value:'{theModel.accountName}'},listeners:{change:'onChangeAccount'}},
{xtype:'combo',defaults:{allowBlank:!1,validationEvent:!1,mode:'local',typeAhead:!0,triggerAction:'all',shadow:!0},fieldLabel:'Role',valueField:'id',displayField:'name',anchor:'100%',editable:!1,bind:{store:'{roles}',value:'{theModel.roleId}'}},{xtype:'container',layout:'vbox',hidden:!0,bind:{hidden:'{isPortalAdmin}'},items:[{xtype:'radio',fieldLabel:'Restore scope',labelAlign:'top',boxLabel:'All machines',name:'restore_scope_on',bind:{value:'{!theModel.scopeEnabled}',disabled:'{!isRestoreScopeAllowed}'}},
{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'Selected machines only',flex:1,reference:'scopeCheckbox',name:'restore_scope_on',bind:{value:'{theModel.scopeEnabled}',disabled:'{!isRestoreScopeAllowed}'}},{xtype:'button',width:80,margin:'0 0 0 10',disabled:!0,ui:'primary',text:'Choose',bind:{disabled:'{!isRestoreScopeButtonActive}'},handler:'configureScopeHandler'}]}]},{xtype:'container',hidden:!0,bind:{hidden:'{isPortalAdmin}'},layout:'vbox',items:[{xtype:'checkbox',fieldLabel:'Allow restore of',
labelAlign:'top',boxLabel:'Entire virtual machines',name:'vm_restore',bind:{value:'{theModel.canRestoreVms}'}},{xtype:'checkbox',boxLabel:'Guest files',name:'file_restore',reference:'guestFilesCheckbox',bind:{value:'{theModel.canRestoreFiles}'}},{xtype:'container',cls:'fieldcontainer--nested',items:[{xtype:'checkbox',boxLabel:'Allow in-place file restores only',bind:{value:'{theModel.noDownloads}',disabled:'{!allowGuestFilesRestore}'}},{xtype:'checkbox',boxLabel:'Allow restore of files with these extensions only:',
reference:'restrictedExtCheckbox',bind:{value:'{theModel.flrRestrictedByExt}',disabled:'{!allowGuestFilesRestore}'}},{xtype:'textfield',width:368,fieldLabel:!1,allowBlank:!1,hideLabel:!0,disabled:!0,validator:function(value){return this.disabled?!0:/[^A-z0-9,]+?/.test(value)||!/\S/.test(value)?'Invalid entry. Specify one or more file extensions separated by commas.':!0},bind:{value:'{theModel.flrExtRestrictions}',disabled:'{!restrictedExtFieldActive}'}}]},{xtype:'checkbox',boxLabel:'Microsoft Exchange items',
name:'items_restore',bind:{value:'{theModel.canRestoreExchange}',disabled:'{!isItemRestoreAllowed}'}},{xtype:'checkbox',boxLabel:'Databases',name:'databases',reference:'databaseCheckbox',bind:{value:'{isAnyDbRestorePermission}',disabled:'{!isItemRestoreAllowed}'},listeners:{change:'onDatabaseCheck'}},{xtype:'container',cls:'fieldcontainer--nested',items:[{xtype:'checkbox',boxLabel:'Microsoft SQL Server databases',name:'sql_restore',bind:{value:'{theModel.canRestoreSQL}',disabled:'{!allowDatabaseRestore}'}},
{xtype:'checkbox',boxLabel:'Oracle databases',name:'oracle_restore',bind:{value:'{theModel.canRestoreOracle}',disabled:'{!allowDatabaseRestore}'}},{xtype:'checkbox',boxLabel:'Deny in-place database restores (safer)',margin:0,bind:{value:'{theModel.denyRestoreToOriginal}',disabled:'{!allowDatabaseRestore}'}}]}]},{xtype:'widget.alert',ui:'error',html:'',margin:'16 0 0 0',hidden:!0,reference:'formErrors'}]}],buttons:[{text:'OK',reference:'saveBtn',handler:'onSave',ui:'primary'},{text:'Cancel',handler:'onCancel',
ui:'alternate'}],listeners:{resize:function(win){win.needCenter&&win.center();win.needCenter=!1}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.roles,'Form'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.RolesController',Ext.app.ViewController,{initViewModel:function(vm){vm.set('hiddenRebuildButton',!MainApp.app.getHelper().isEnterprisePlusLicense())},roleRenderer:function(value){return MainApp.model.Role.getLabel(value)},refreshHandler:function(){this.getViewModel().getStore('accounts').reload()},exportHandler:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('configuration.accounts.export',[sortInfo])).start()},addHandler:function(){this.createDialog(null)},
createDialog:function(record){var view=this.getView();this.isEdit=!!record;this.dialog=view.add(Ext.create('MainApp.view.configuration.tab.roles.Form',{renderTo:Ext.getBody(),parentView:view,width:576,viewModel:{data:{title:record?'Edit':'Add',isEdit:this.isEdit,recordId:this.isEdit?record.getId():null}}}));this.mon(this.dialog,{save:'onSaveClick',cancel:'onCancelClick'});this.dialog.show()},editHandler:function(){var record=this.getView().getSelectionModel().getSelection()[0];this.createDialog(record)},
removeHandler:function(){var id=this.getView().getSelectionModel().getSelection()[0].getId(),me=this;return Common.ui.Msg.confirm('Account','Account will be removed. Are you sure?',function(btn){'yes'==btn&&(me.fireEvent('mask'),MainApp.service.AccountService.removeAccount(id).then(me.refreshHandler.bind(me)).otherwise(Common.ui.Msg.error).always(function(){me.fireEvent('unmask')}))}.bind(me))},rebuildScopeHandler:function(){var me=this;return Common.ui.Msg.confirm('Account','Rebuild scope for all users?',
function(btn){'yes'==btn&&(me.fireEvent('mask'),MainApp.service.AccountService.rebuildScope().then(Common.ui.Msg.success).otherwise(Common.ui.Msg.error).always(function(){me.fireEvent('unmask')}))}.bind(me))},onSaveClick:function(){this.onCancelClick();this.refreshHandler()},onCancelClick:function(){this.dialog=Ext.destroy(this.dialog)}},0,0,0,0,['controller.config.tab.roles'],0,[MainApp.view.configuration.tab,'RolesController'],0);
Ext.cmd.derive('MainApp.model.AccountConfig',Ext.data.Model,{constructor:function(data,session){Ext.apply(this,{fields:[{name:'id'},{name:'name'},{name:'type',type:'integer',defaultValue:MainApp.model.AccountType.USER},{name:'role',type:'integer',defaultValue:MainApp.model.Role.PortalAdministrator}]});Ext.data.Model.prototype.constructor.call(this,data,session)}},1,0,0,0,0,0,[MainApp.model,'AccountConfig'],0);
Ext.cmd.derive('MainApp.store.AccountConfigs',Ext.data.Store,{model:'MainApp.model.AccountConfig',proxy:{type:'direct',directFn:'Api.getAccounts',reader:{type:'json',rootProperty:'items'},simpleSortMode:!0},sorters:{direction:'ASC',property:'name'},remoteSort:!0,sortOnLoad:!0},0,0,0,0,['store.accountConfigs'],0,[MainApp.store,'AccountConfigs'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.RolesModel',Ext.app.ViewModel,{data:{hiddenRebuildButton:!0},stores:{accounts:{type:'accountConfigs',autoDestroy:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.config.tab.roles'],0,[MainApp.view.configuration.tab,'RolesModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.Roles',Veeam.BaseGrid,{controller:'config.tab.roles',viewModel:{type:'config.tab.roles'},layout:'fit',padding:'16 16 0 16',columns:{defaults:{menuDisabled:!0,sortableColumns:!0,multiColumnSort:!1},items:[{width:22,header:'',xtype:'actioncolumn',dataIndex:'type',getClass:function(value){return value===MainApp.model.AccountType.USER?'user':'group'}},{header:'Account',dataIndex:'name',flex:1},{header:'Role',dataIndex:'role',formatter:'this.roleRenderer',
flex:1}]},bind:{store:'{accounts}',selection:'{selectedRecord}'},leftButtons:[{text:'Add...',iconCls:'account-add',handler:'addHandler'},{text:'Edit...',iconCls:'account-edit',handler:'editHandler',disabled:!0,bind:{disabled:'{!selectedRecord}'}},{text:'Remove',iconCls:'account-remove',handler:'removeHandler',disabled:!0,cls:'before-separator',bind:{disabled:'{!selectedRecord}'}},{xtype:'tbseparator',hidden:!0,bind:{hidden:'{hiddenRebuildButton}'}},{text:'Rebuild Roles',iconCls:'account-rebuild',
handler:'rebuildScopeHandler',hidden:!0,bind:{hidden:'{hiddenRebuildButton}'}}],listeners:{exporttoexcel:'exportHandler'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,0,[MainApp.view.configuration.tab,'Roles'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.LegacyLicensingController',Ext.app.ViewController,{routes:{'!configuration/licensing/:tab':{action:'onChangelicensingRoutingPath',caseInsensitive:!0,conditions:{':tab':'(backup_and_replication|windows_agent|linux_agent|united_agent)'}}},listen:{controller:{'*':{refreshpage:'_refresh'}}},onChangelicensingRoutingPath:function(tabName){var view=this.getView(),activeTab=view.getActiveTab();tabName!==activeTab.routeId&&(tabName=this._getTabByRoutingTabName(tabName))&&
view.setActiveTab(tabName)},tabChange:function(view,tab){tab.isLicenseTabBase&&tab.loadInfoData();this.redirectTo('!configuration/licensing/'+tab.routeId)},loadInfo:function(tab,result){tab.isVbrTab&&this._addVbrTabGrid(tab,result)},selectLicensesFile:function(tab,field,value){tab=field.up('form').getForm();(value=value.substring(value.length-3,value.length))&&'lic'!==value.toLowerCase()?Ext.Msg.alert('Invalid file','Selected file is not a valid license file.'):(tab.submit(this._getUploadlicenseSubmitOptions(1)),
Common.ui.Msg.wait())},boxReady:function(view){var tabName=this._getCurrentRoutingTabName();tabName?(tabName=this._getTabByRoutingTabName(tabName)||view.getActiveTab(),view.setActiveTab(tabName),this.tabChange(view,tabName)):this.tabChange(view,view.getActiveTab())},onViewAgents:function(tab,btn){btn=tab.getGridSelection();tab=Ext.create('MainApp.view.configuration.tab.legacylicensing.AgentListWindow',{licensingType:tab.licensingType,backupServerId:btn?btn.id:null});btn&&tab.show()},onReset:function(tab,
btn$jscomp$0){var me=this;btn$jscomp$0=tab.getGridSelection();var backupServerName=btn$jscomp$0.get('backupServerName'),backupServerId=btn$jscomp$0.get('id');Common.ui.Msg.confirm('Veeam Backup Enterprise Manager','Reset Veeam Agent licenses for backup server '+backupServerName+'?',function(btn){'yes'===btn&&(Common.ui.Msg.wait('Resetting agent licenses...'),MainApp.service.rpc.ConfigLicensing.resetAgentLicensing(tab.licensingType,backupServerId).then(me.rpcHandlers.agentReset.success.bind(me)).otherwise(me.rpcHandlers.agentReset.failure.bind(me)))})},
onRevoke:function(tab,btn){var me=this;tab=tab.findInnerCmp('vbrLicenseGrid');var selection=tab.getSelection();tab&&selection&&selection.length&&Common.ui.Msg.confirm('Veeam Backup Enterprise Manager','Revoke selected licenses?',function(button){if('yes'===button){var selectedIdx=[];Ext.each(selection,function(item){selectedIdx.push({typeId:item.id})});Common.ui.Msg.wait();MainApp.service.rpc.ConfigLicensing.revokeVbrLicenses(selectedIdx).then(me.rpcHandlers.vbrRevoke.success.bind(me)).otherwise(me.rpcHandlers.vbrRevoke.failure.bind(me))}})},
onShowHostJobs:function(record){Ext.create('MainApp.view.configuration.tab.legacylicensing.VbrJobListWindow',{hostUuid:record.id}).show()},rpcHandlers:{agentReset:{success:function(result){result=this.getView().getActiveTab();var store=result.getServersGridStore();Common.ui.Msg.hide();result.isLicenseTabBase&&(result.loadInfoData(),store&&store.reload())},failure:function(result){Common.ui.Msg.error(result)}},vbrRevoke:{success:function(result){Common.ui.Msg.hide();result.success?this._refresh():
Common.ui.Msg.error(result)},failure:function(result){Common.ui.Msg.error(result)}},uploadLicense:{success:function(form,action){var me=this,result=action.result;Common.ui.Msg.hide();'true'===result.confirm?Common.ui.Msg.confirm('Warning','Enterprise Manager will push its license to all connected backup servers, overwriting currently installed license. Continue?',function(button,text){'yes'===button?(Common.ui.Msg.wait(),form.submit(me._getUploadlicenseSubmitOptions(0))):me._showSuccessUploadMsg(result)}):
me._showSuccessUploadMsg(result)},failure:function(form,action){var responseMsg=atob(action.result.message);Common.ui.Msg.hide();action.failureType===Ext.form.Action.CONNECT_FAILURE?this._refresh():Common.ui.Msg.error(responseMsg,function(){form.reset()},!0)}}},privates:{_addVbrTabGrid:function(tab,data){var vm=this.getViewModel();tab=tab.findInnerCmp('vbrLicenseGrid');data.isPerVm?(data=[{text:'Machine',dataIndex:'name',formatter:'htmlEncode',menuDisabled:!0,flex:1,tdCls:'bold-td'},{text:'Location',
dataIndex:'location',menuDisabled:!0,flex:1},{text:'Machine Type',dataIndex:'type',menuDisabled:!0,flex:1,renderer:this._renderPlatformColumn},{text:'Backup Server',dataIndex:'backupServerName',menuDisabled:!0,flex:1}],vm=vm.get('perVmGridDataStore')):(data=[{text:'Host Name',dataIndex:'hostName',formatter:'htmlEncode',menuDisabled:!0,flex:1,tdCls:'bold-td'},{text:'Host Type',dataIndex:'hostType',menuDisabled:!0,flex:1,renderer:this._renderLicensedHostPlatformColumn},{text:'CPU number',dataIndex:'cpuCount',
menuDisabled:!0,width:150,align:'center'},{text:'Is licensed',dataIndex:'isLicensed',menuDisabled:!0,width:150,align:'center',renderer:this._renderIsLicensedColumn}],vm=vm.get('perSocketGridDataStore'));tab.setStore(vm);tab.setConfig({columns:data});vm.load()},_getUploadlicenseSubmitOptions:function(validate){return{url:'./UploadFileHandler.ashx?validate\x3d'+validate,waitTitle:'Updating file...',success:this.rpcHandlers.uploadLicense.success,failure:this.rpcHandlers.uploadLicense.failure,scope:this}},
_refresh:function(){Ext.Function.defer(function(){location.reload()},500)},_showSuccessUploadMsg:function(result){var me=this;result.message?Common.ui.Msg.error(result,function(){me._refresh()}):me._refresh()},_getCurrentRoutingTabName:function(){return location.hash.split('/')[2]},_getTabByRoutingTabName:function(tabName){return this.getView().down('[routeId\x3d'+tabName+']')},_renderPlatformColumn:function(value){return Veeam.model.Platform.getLabel(value)},_renderLicensedHostPlatformColumn:function(value){return Veeam.model.LicensedHostPlatform.getLabel(value)},
_renderIsLicensedColumn:function(value){return value?'\x3cspan class\x3d"is-licensed"\x3eLicensed\x3c/span\x3e':''}}},0,0,0,0,['controller.config.tab.legacylicensing'],0,[MainApp.view.configuration.tab,'LegacyLicensingController'],0);Ext.cmd.derive('MainApp.model.AgentLicense',Ext.data.Model,{fields:[{name:'id',type:'string'},{name:'backupServerName',type:'string'},{name:'workstationCount',type:'int'},{name:'serverCount',type:'int'}],idProperty:'id'},0,0,0,0,0,0,[MainApp.model,'AgentLicense'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.LegacyLicensingModel',Ext.app.ViewModel,{data:{},formulas:{},stores:{perVmGridDataStore:{type:'app-store',rpcMethod:'Api.licensing.getPerVmGridData',fields:[{name:'id',type:'string'},{name:'name',type:'string'},{name:'location',type:'string'},{name:'type',type:'int'},{name:'backupServerName',type:'string'}],sorters:{direction:'ASC',property:'name'},remoteSort:!0,sortOnLoad:!0},perSocketGridDataStore:{type:'app-store',rpcMethod:'Api.licensing.getPerSocketGridData',
fields:[{name:'id',type:'string'},{name:'hostName',type:'string'},{name:'hostUuid',type:'string'},{name:'cpuCount',type:'int'},{name:'hostType',type:'int'},{name:'isLicensed',type:'boolean'}],sorters:{direction:'ASC',property:'hostName'},remoteSort:!0,sortOnLoad:!0},winAgentDataStore:{type:'app-store',model:'MainApp.model.AgentLicense',rpcMethod:'Api.licensing.getWindowsAgentServersGridData',sorters:{direction:'ASC',property:'backupServerName'},remoteSort:!0,sortOnLoad:!0},linuxAgentDataStore:{type:'app-store',
model:'MainApp.model.AgentLicense',rpcMethod:'Api.licensing.getLinuxAgentServersGridData',sorters:{direction:'ASC',property:'backupServerName'},remoteSort:!0,sortOnLoad:!0}}},0,0,0,0,['viewmodel.config.tab.legacylicensing'],0,[MainApp.view.configuration.tab,'LegacyLicensingModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.LicenseInfoDialog',Veeam.base.view.BaseWindow,{viewModel:{data:{disabledSettings:!0,autoUpdateEnabled:!1,settingIsLoaded:!1}},config:{licenseInfo:[]},layout:{type:'vbox',align:'stretch'},width:480,resizable:!1,modal:!0,title:'License Details',cls:'license-details',initComponent:function(){Ext.apply(this,{items:[{xtype:'grid',cls:'license-params-grid',margin:'10 0 0 0',hideHeaders:!0,viewConfig:{disableSelection:!0,trackOver:!1,stripeRows:!1},
columns:[{dataIndex:'key',flex:1,tdCls:'bold-td'},{dataIndex:'value',flex:1,renderer:this._renderValue}],store:{fields:['key','value','hasDate'],data:this.getLicenseInfo()}},{xtype:'fieldcontainer',layout:'vbox',cls:'license-params-settings',margin:'20 15',bind:{disabled:'{disabledSettings}'},items:[{xtype:'checkboxfield',boxLabel:'Update license key automatically',inputValue:!0,margin:'20 0 0 0',value:!1,disabled:!0,scope:this},{xtype:'button',ui:'text',text:'Update now',disabled:!0,tooltip:'Updating legacy subscription licenses is not supported. Please obtain an instance-based license through the Veeam Customer Portal and install it manually.',
scope:this}]}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);this._getLicesingSettings()},buttons:[{text:'Close',ui:'primary',handler:function(btn){btn.up('window').close()}}],rpcHandlers:{getLicesingSettings:function(response){var vm=this.getViewModel();vm.set({disabledSettings:!1,autoUpdateEnabled:response.autoUpdateEnabled});setTimeout(function(){vm.set('settingIsLoaded',!0)},100)},licenseUpdateNow:{success:function(result){var me=this;me.getViewModel().set('disabledSettings',
!1);Common.ui.Msg.successHtml(result,function(){me._refresh()})},failure:function(result){var me=this;me.getViewModel().set('disabledSettings',!1);Common.ui.Msg.successHtml(result,function(){result.refresh&&me._refresh()})}}},privates:{_renderValue:function(value,meta,record){if(!record.get('hasDate'))return value;value=value.split(' ');(meta=Ext.Date.parse(value[0],'c',!1))&&(value[0]=Ext.Date.format(meta,'defaultDateFormat'));return value.join(' ')},_getLicesingSettings:function(){MainApp.service.rpc.ConfigLicensing.getLicesingSettings().then(this.rpcHandlers.getLicesingSettings.bind(this)).otherwise(Common.ui.Msg.error)},
_onChangeAutoUpdateOption:function(field,value,oldValue){this.getViewModel().get('settingIsLoaded')&&MainApp.service.rpc.ConfigLicensing.setLicenseAutoUpdateOption(value).then(Common.ui.Msg.successHtml)},_onClickUpdateButton:function(){this.getViewModel().set('disabledSettings',!0);MainApp.service.rpc.ConfigLicensing.licenseUpdateNow().then(this.rpcHandlers.licenseUpdateNow.success.bind(this)).otherwise(this.rpcHandlers.licenseUpdateNow.failure.bind(this))},_refresh:function(){Ext.Function.defer(function(){location.reload()},
500)}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.legacylicensing,'LicenseInfoDialog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.LicenseTabBase',Ext.Container,{plugins:[{ptype:'deferredmask'}],layout:{type:'vbox',align:'stretch'},scrollable:!0,cls:'license-tab',isLicenseTabBase:!0,gridColumns:[],getInfoGridStore:function(data){return Ext.create('Ext.data.Store')},loadInfoData:function(){},getServersGridStore:function(){return null},initComponent:function(){Ext.apply(this,{items:[{xtype:'container',layout:'hbox',margin:'20 0 30 0',cls:'license-info-container',items:[{xtype:'container',
width:506,layout:{type:'vbox',align:'stretch'},cls:'licenses-status',items:[{xtype:'container',layout:{type:'hbox',align:'stretch'},items:[{xtype:'component',html:'\x3ch3\x3eLicense edition: loading...\x3c/h3\x3e',bind:{html:'\x3ch3\x3e{licenseStatus.licenseStatusTitle}\x3c/h3\x3e'},flex:1,margin:'10 0 0 0'},{xtype:'button',ui:'text',text:'Details',iconCls:'info',margin:'0 4 0 0',handler:'showDetails',scope:this}]},{xtype:'component',html:'Loading...',bind:{html:'{licenseStatus.validationMessage}'},
margin:'0 0 25 0'},{xtype:'container',cls:'licenses-status-grid-container',minHeight:84,layout:'fit',flex:1,ctype:'gridContainer'}]},{xtype:'form',ctype:'uploadLicenseForm',margin:'0 30',flex:1,items:[{xtype:'fileuploadfield',ui:'primary',buttonOnly:!0,clearOnSubmit:!1,buttonText:'Install license',buttonConfig:{tooltip:'The new license file will be applied to all connected Veeam Backup servers automatically',tooltipType:'title'},name:'license-file',listeners:{change:function(field,value){var me=field.up('config-licenses-basetab');
value&&me.fireEvent('selectlicensefile',me,field,value)}}},{xtype:'hidden',name:'csrfToken',value:CSRFToken}]}]}]});Ext.container.Container.prototype.initComponent.apply(this,arguments)},renderLicenseInfo:function(data){var validationStatusComment=data.validationStatusComment;if('success'==data.validationStatus){var daysLeftText=Ext.util.Format.plural(data.daysLeft,'day','days');validationStatusComment+=Ext.String.format(' Period: {0} remaining.',daysLeftText)}daysLeftText=new Ext.XTemplate('\x3cdiv class\x3d"msg"\x3e',
'\x3cdiv class\x3d"msg-icon icon-cell-center {0}"\x3e\x3c/div\x3e','{1}','\x3c/div\x3e');data.validationMessage=daysLeftText.applyTemplate([{error:'error',success:'success',warning:'warning'}[data.validationStatus],validationStatusComment]);data.licenseStatusTitle=this.createLicenseStatusTitle(data);return data},createLicenseInfoGrid:function(result){return Ext.create('Ext.grid.Panel',{store:this.getInfoGridStore(result.licenseStatus),columns:{defaults:{flex:1,menuDisabled:!0,sortable:!1,draggable:!1,
align:'center'},items:this.gridColumns},viewConfig:{disableSelection:!0,stripeRows:!1},border:!1,width:480,minHeight:90})},createLicenseStatusTitle:function(data){return'License edition: '+data.licEdition},rpcHandlers:{loadInfo:{success:function(result){var vm=this.getViewModel(),gridContainer=this.findInnerCmp('gridContainer');this.grid&&this.grid.isPanel&&this.grid.destroy();this.grid=this.createLicenseInfoGrid(result);this.renderLicenseInfo(result.licenseStatus);gridContainer.insert(0,[this.grid]);
vm.set('licenseStatus',result.licenseStatus);vm.set('licenseInfo',result.licenseInfo);this.fireEvent('loadinfo',this,result)},failure:Common.ui.Msg.error}},showDetails:function(){var vm=this.getViewModel();Ext.create('MainApp.view.configuration.tab.legacylicensing.LicenseInfoDialog',{licenseInfo:vm.get('licenseInfo')}).show()},findInnerCmp:function(ctype){return this.down(Ext.String.format('[ctype\x3d{0}]',ctype))}},0,['config-licenses-basetab','config.tab.legacylicensing.basetab'],['component','box',
'container','config.tab.legacylicensing.basetab','config-licenses-basetab'],{component:!0,box:!0,container:!0,'config.tab.legacylicensing.basetab':!0,'config-licenses-basetab':!0},['widget.config-licenses-basetab','widget.config.tab.legacylicensing.basetab'],0,[MainApp.view.configuration.tab.legacylicensing,'LicenseTabBase'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.VbrTab',MainApp.view.configuration.tab.legacylicensing.LicenseTabBase,{viewModel:{},isVbrTab:!0,gridColumns:[{text:'Platform',dataIndex:'platform',align:'left',tdCls:'bold-td'},{text:'Used ',dataIndex:'used',baseText:'Used '},{text:'Licensed ',dataIndex:'licensed',baseText:'Licensed ',flex:1.2},{text:'New  ',dataIndex:'trial',baseText:'New '}],getInfoGridStore:function(data){return Ext.create('Ext.data.Store',{fields:['platform','used',
'licensed','trial'],data:Ext.clone(data.usageStats)})},loadInfoData:function(){MainApp.service.rpc.ConfigLicensing.getVbrLicenseInfo().then(this.rpcHandlers.loadInfo.success.bind(this)).otherwise(this.rpcHandlers.loadInfo.failure.bind(this))},afterRender:function(panel){var me=this;MainApp.view.configuration.tab.legacylicensing.LicenseTabBase.prototype.afterRender.apply(this,arguments);me.add({xtype:'basegrid',columns:[],ctype:'vbrLicenseGrid',flex:1,minHeight:250,selModel:{mode:'MULTI'},selType:'rowmodel',
reference:'vbrTabGrid',leftButtons:[{text:'Revoke',iconCls:'start',disabled:!0,handler:function(btn){me.fireEvent('revoke',me,btn)},bind:{disabled:'{!vbrTabGrid.selection}'}}],listeners:{exporttoexcel:function(){var sortInfo=this.getSortInfo();(new Veeam.util.ExcelExporter('licensing.exportReportData',[sortInfo])).start()},cellclick:function(tableview,td,cellIndex,record){Ext.get(td).down('.is-licensed')&&me.fireEvent('showhostjobs',record)}}})},getServersGridStore:function(){var grid=this.findInnerCmp('vbrLicenseGrid');
return grid?grid.getStore():null},createLicenseInfoGrid:function(result){var additionalText=result.isPerVm?'Machines':'Sockets';Ext.each(this.gridColumns,function(item){'platform'!==item.dataIndex&&(item.text=item.baseText+additionalText);result.licenseStatus.hasTrialColumn||'trial'!=item.dataIndex||(item.hidden=!0)});return MainApp.view.configuration.tab.legacylicensing.LicenseTabBase.prototype.createLicenseInfoGrid.apply(this,arguments)}},0,['config-license-vbrtab','config.tab.legacylicensing.vbrtab'],
'component box container config.tab.legacylicensing.basetab config-licenses-basetab config.tab.legacylicensing.vbrtab config-license-vbrtab'.split(' '),{component:!0,box:!0,container:!0,'config.tab.legacylicensing.basetab':!0,'config-licenses-basetab':!0,'config.tab.legacylicensing.vbrtab':!0,'config-license-vbrtab':!0},['widget.config-license-vbrtab','widget.config.tab.legacylicensing.vbrtab'],0,[MainApp.view.configuration.tab.legacylicensing,'VbrTab'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.AgentTab',MainApp.view.configuration.tab.legacylicensing.LicenseTabBase,{viewModel:{},isAgentTab:!0,statics:{LICENSING_TYPE_WINDOWS:6,LICENSING_TYPE_LINUX:7,LICENSING_TYPE_UNITED:8},licensingType:null,gridColumns:[{text:'Platform',dataIndex:'platform',align:'left',tdCls:'bold-td',flex:1},{text:'Used Agents',dataIndex:'used',flex:1},{text:'Licensed Agents',dataIndex:'licensed',flex:1.2},{text:'New Agents',dataIndex:'trial',flex:1}],getInfoGridStore:function(data){return Ext.create('Ext.data.Store',
{fields:['platform','used','licensed','trial'],data:[{platform:'Workstation',used:data.workstationUsage.used,licensed:data.workstationUsage.licensed,trial:data.workstationUsage.trial},{platform:'Server',used:data.serverUsage.used,licensed:data.serverUsage.licensed,trial:data.serverUsage.trial}]})},loadInfoData:function(){MainApp.service.rpc.ConfigLicensing.getAgentLicenseInfo(this.licensingType).then(this.rpcHandlers.loadInfo.success.bind(this)).otherwise(this.rpcHandlers.loadInfo.failure.bind(this))},
afterRender:function(){var me=this;MainApp.view.configuration.tab.legacylicensing.LicenseTabBase.prototype.afterRender.apply(this,arguments);var vm=me.getViewModel();if(me.licensingType==MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_WINDOWS)vm=vm.get('winAgentDataStore');else if(me.licensingType==MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_LINUX)vm=vm.get('linuxAgentDataStore');else if(me.licensingType==MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_UNITED)vm=
vm.get('unitedAgentDataStore');else throw Error('Unknown licensing type: '+me.licensingType);var selectionProp=me.getSelectionProp();vm.load();me.add({xtype:'basegrid',ctype:'serversGridStore',columns:[{text:'Veeam Backup \x26 Replication server',dataIndex:'backupServerName',flex:3,tdCls:'bold-td',formatter:'htmlEncode'},{text:'Workstations',dataIndex:'workstationCount',flex:1},{text:'Servers',dataIndex:'serverCount',flex:1}],flex:1,minHeight:250,store:vm,bind:{selection:'{'+selectionProp+'}'},leftButtons:[{text:'View Agents...',
iconCls:'info',disabled:!0,handler:function(btn){me.fireEvent('viewagents',me,btn)},bind:{disabled:'{!'+selectionProp+'}'}},{text:'Reset...',iconCls:'retry',disabled:!0,handler:function(btn){me.fireEvent('reset',me,btn)},bind:{disabled:'{!'+selectionProp+'}'}}],listeners:{exporttoexcel:function(){(new Veeam.util.ExcelExporter('licensing.agent.exportBackupServersReport',{licensingType:me.licensingType})).start()}}})},getSelectionProp:function(){return'gridselection'+this.licensingType},getGridSelection:function(){return this.getViewModel().get(this.getSelectionProp())},
createLicenseStatusTitle:function(data){if(this.licensingType==MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_WINDOWS)data='Veeam Agent for Microsoft Windows License';else if(this.licensingType==MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_LINUX)data='Veeam Agent for Linux License';else if(this.licensingType==MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_UNITED)data='Veeam Agent License';else throw Error('Unknown licensing type: '+
this.licensingType);return data},getServersGridStore:function(){var grid=this.findInnerCmp('serversGridStore');return grid?grid.getStore():null},createLicenseInfoGrid:function(result){Ext.each(this.gridColumns,function(item){result.licenseStatus.hasTrialColumn||'trial'!=item.dataIndex||(item.hidden=!0)});return MainApp.view.configuration.tab.legacylicensing.LicenseTabBase.prototype.createLicenseInfoGrid.apply(this,arguments)}},0,['config-license-agenttab','config.tab.legacylicensing.agenttab'],'component box container config.tab.legacylicensing.basetab config-licenses-basetab config.tab.legacylicensing.agenttab config-license-agenttab'.split(' '),
{component:!0,box:!0,container:!0,'config.tab.legacylicensing.basetab':!0,'config-licenses-basetab':!0,'config.tab.legacylicensing.agenttab':!0,'config-license-agenttab':!0},['widget.config-license-agenttab','widget.config.tab.legacylicensing.agenttab'],0,[MainApp.view.configuration.tab.legacylicensing,'AgentTab'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.AgentListWindowController',Veeam.base.view.BaseWindowController,{onBeforeLoad:function(store){var view=this.getView();store.getProxy().setExtraParams({licensingType:view.getLicensingType(),backupServerId:view.getBackupServerId()})},onExport:function(){var view=this.getView();view={licensingType:view.getLicensingType(),backupServerId:view.getBackupServerId(),start:0,limit:1E4};(new Veeam.util.ExcelExporter('licensing.agent.exportHostsReport',
view)).start()}},0,0,0,0,['controller.config.tab.legacylicensing.agentlistwindow'],0,[MainApp.view.configuration.tab.legacylicensing,'AgentListWindowController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.AgentListWindowModel',Ext.app.ViewModel,{data:{},formulas:{},stores:{hostsReportStore:{type:'app-store',rpcMethod:'Api.licensing.agent.getHostsReport',fields:['hostName','licensingMode'],pageSize:10,autoLoad:!0,listeners:{beforeload:'onBeforeLoad'}}}},0,0,0,0,['viewmodel.config.tab.legacylicensing.agentlistwindow'],0,[MainApp.view.configuration.tab.legacylicensing,'AgentListWindowModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.AgentListWindow',Veeam.base.view.BaseWindow,{config:{licensingType:null,backupServerId:null},controller:'config.tab.legacylicensing.agentlistwindow',viewModel:{type:'config.tab.legacylicensing.agentlistwindow'},width:800,height:600,title:'Agents managed by Backup \x26 Replication server',buttons:[{text:'Close',action:'cancel',ui:'primary'}],items:[{xtype:'basegrid',columns:{defaults:{menuDisabled:!0,sortable:!1,draggable:!1},items:[{text:'Hostname',
dataIndex:'hostName',flex:3,tdCls:'bold-td'},{text:'License',dataIndex:'licensingMode',flex:1}]},bind:'{hostsReportStore}',listeners:{exporttoexcel:'onExport'}}]},0,['config.tab.legacylicensing.agentlistwindow'],'component box container panel window config.tab.legacylicensing.agentlistwindow'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'config.tab.legacylicensing.agentlistwindow':!0},['widget.config.tab.legacylicensing.agentlistwindow'],0,[MainApp.view.configuration.tab.legacylicensing,
'AgentListWindow'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.VbrJobListWindowController',Veeam.base.view.BaseWindowController,{onBeforeLoad:function(store){var view=this.getView();store.getProxy().setExtraParams({hostUuid:view.getHostUuid()})},onExport:function(){var view=this.getView(),sortInfo=this.lookupReference('grid').getSortInfo();view=Ext.apply({hostUuid:view.getHostUuid()},sortInfo);(new Veeam.util.ExcelExporter('licensing.exportLicensedHostJobsReport',[view])).start()},isLicensedColumnFormatter:function(value){return value?
'Yes':'No'}},0,0,0,0,['controller.config.tab.legacylicensing.vbrjoblistwindow'],0,[MainApp.view.configuration.tab.legacylicensing,'VbrJobListWindowController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.VbrJobListWindowModel',Ext.app.ViewModel,{data:{},formulas:{},stores:{jobsStore:{type:'app-store',rpcMethod:'Api.licensing.getLicensedHostJobs',fields:['id','name','hostName','isLicensed'],sorters:{direction:'ASC',property:'hostName'},remoteSort:!0,sortOnLoad:!0,pageSize:10,autoLoad:!0,listeners:{beforeload:'onBeforeLoad'}}}},0,0,0,0,['viewmodel.config.tab.legacylicensing.vbrjoblistwindow'],0,[MainApp.view.configuration.tab.legacylicensing,
'VbrJobListWindowModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.legacylicensing.VbrJobListWindow',Veeam.base.view.BaseWindow,{controller:'config.tab.legacylicensing.vbrjoblistwindow',viewModel:{type:'config.tab.legacylicensing.vbrjoblistwindow'},config:{hostUuid:null},width:800,height:600,minWidth:600,minHeight:400,title:'Backup jobs referring to host',buttons:[{text:'Close',action:'cancel',ui:'primary'}],items:[{xtype:'basegrid',reference:'grid',columns:{defaults:{menuDisabled:!0,sortable:!0,draggable:!1},items:[{text:'Backup host',
dataIndex:'hostName',flex:3,tdCls:'bold-td'},{text:'Job name',dataIndex:'name',flex:3},{text:'Is licensed',dataIndex:'isLicensed',flex:1,align:'center',formatter:'this.isLicensedColumnFormatter'}]},bind:'{jobsStore}',listeners:{exporttoexcel:'onExport'}}]},0,['config.tab.legacylicensing.vbrjoblistwindow'],'component box container panel window config.tab.legacylicensing.vbrjoblistwindow'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'config.tab.legacylicensing.vbrjoblistwindow':!0},
['widget.config.tab.legacylicensing.vbrjoblistwindow'],0,[MainApp.view.configuration.tab.legacylicensing,'VbrJobListWindow'],0);Ext.cmd.derive('Veeam.model.LicensedHostPlatform',Ext.Base,{singleton:!0,getLabel:function(enumValue){return 0===enumValue||1===enumValue||2===enumValue?'VMWare':10===enumValue?'Hyper-V':''}},0,0,0,0,0,0,[Veeam.model,'LicensedHostPlatform'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.LegacyLicensing',Veeam.base.view.BaseTabPanel,{controller:'config.tab.legacylicensing',viewModel:{type:'config.tab.legacylicensing'},border:!1,layout:'fit',padding:'16 16 0 16',initComponent:function(){var items=[{xtype:'config-license-vbrtab',title:'Backup \x26 Replication',routeId:'backup_and_replication',listeners:{revoke:'onRevoke',loadinfo:'loadInfo',selectlicensefile:'selectLicensesFile',exporttoexcel:'onExportVbr',showhostjobs:'onShowHostJobs'}}];
MainApp.app.user.hasWindowsAgentLicense()&&items.push({xtype:'config-license-agenttab',title:'Agent for Windows',routeId:'windows_agent',licensingType:MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_WINDOWS,listeners:{viewagents:'onViewAgents',reset:'onReset',selectlicensefile:'selectLicensesFile'}});MainApp.app.user.hasLinuxAgentLicense()&&items.push({xtype:'config-license-agenttab',title:'Agent for Linux',routeId:'linux_agent',licensingType:MainApp.view.configuration.tab.legacylicensing.AgentTab.LICENSING_TYPE_LINUX,
listeners:{viewagents:'onViewAgents',reset:'onReset',selectlicensefile:'selectLicensesFile'}});Ext.apply(this,{items:items});Veeam.base.view.BaseTabPanel.prototype.initComponent.apply(this,arguments)},listeners:{tabchange:'tabChange'}},0,0,'component box container panel tabpanel basetabpanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,basetabpanel:!0},0,0,[MainApp.view.configuration.tab,'LegacyLicensing'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.LicensingController',Ext.app.ViewController,{routes:{'!configuration/licensing/:tab':{action:'onChangelicensingRoutingPath',caseInsensitive:!0,conditions:{':tab':'(summary|sockets|instances)'}}},onChangelicensingRoutingPath:function(tabName){var view=this.getView(),activeTab=view.getActiveTab();tabName!==activeTab.routeId&&(tabName=this._getTabByRoutingTabName(tabName))&&view.setActiveTab(tabName)},tabChange:function(view,tab){this.redirectTo('!configuration/licensing/'+
tab.routeId)},boxReady:function(view){var tabName=this._getCurrentRoutingTabName();tabName?(tabName=this._getTabByRoutingTabName(tabName)||view.getActiveTab(),view.setActiveTab(tabName),this.tabChange(view,tabName)):this.tabChange(view,view.getActiveTab())},privates:{_getCurrentRoutingTabName:function(){return location.hash.split('/')[2]},_getTabByRoutingTabName:function(tabName){return this.getView().down('[routeId\x3d'+tabName+']')}}},0,0,0,0,['controller.config.tab.licensing'],0,[MainApp.view.configuration.tab,
'LicensingController'],0);
Ext.cmd.derive('MainApp.service.rpc.ConfigLicensing',Ext.Base,{singleton:!0,getVbrLicenseInfo:function(){return Common.Request.thenable(RPC.Api.getVbrLicenseInfo)},getAgentLicenseInfo:function(licensingType){return Common.Request.thenable(RPC.Api['licensing.agent.getLicenseInfo'],{licensingType:licensingType})},getLicenseInfo:function(){return Common.Request.thenable(RPC.Api['licensing.modern.getLicenseInfo'])},resetAgentLicensing:function(licensingType,backupServerId){return Common.Request.thenable(RPC.Api['licensing.agent.revoke'],{licensingType:licensingType,
backupServerId:backupServerId})},revokeVbrLicenses:function(selectedItems){return Common.Request.thenable(RPC.Api.revokeLicenses,selectedItems)},getLicesingSettings:function(){return Common.Request.thenable(RPC.Api['licensing.getSettings'])},setLicenseAutoUpdateOption:function(autoUpdate){return Common.Request.thenable(RPC.Api['license.setAutoUpdateOption'],autoUpdate)},licenseUpdateNow:function(){return Common.Request.thenable(RPC.Api['license.updateNow'])},sendAdjustReport:function(isAdjusted){return Common.Request.thenable(RPC.Api['licensing.sendAdjustReport'],
isAdjusted)},revokeInstanceLicense:function(selectedItems){return Common.Request.thenable(RPC.Api['licensing.model.revokeInstanceLicense'],selectedItems)}},0,0,0,0,0,0,[MainApp.service.rpc,'ConfigLicensing'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.VbrJobListWindowController',Veeam.base.view.BaseWindowController,{onBeforeLoad:function(store){var view=this.getView();store.getProxy().setExtraParams({hostUuid:view.getHostUuid()})},onExport:function(){var view=this.getView(),sortInfo=this.lookupReference('grid').getSortInfo();view=Ext.apply({hostUuid:view.getHostUuid()},sortInfo);(new Veeam.util.ExcelExporter('licensing.exportLicensedHostJobsReport',[view])).start()},isLicensedColumnFormatter:function(value){return value?
'Yes':'No'}},0,0,0,0,['controller.config.tab.licensing.vbrjoblistwindow'],0,[MainApp.view.configuration.tab.licensing,'VbrJobListWindowController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.VbrJobListWindowModel',Ext.app.ViewModel,{data:{},formulas:{},stores:{jobsStore:{type:'app-store',rpcMethod:'Api.licensing.getLicensedHostJobs',fields:['id','name','hostName','isLicensed'],sorters:{direction:'ASC',property:'hostName'},remoteSort:!0,sortOnLoad:!0,pageSize:10,autoLoad:!0,listeners:{beforeload:'onBeforeLoad'}}}},0,0,0,0,['viewmodel.config.tab.licensing.vbrjoblistwindow'],0,[MainApp.view.configuration.tab.licensing,'VbrJobListWindowModel'],
0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.VbrJobListWindow',Veeam.base.view.BaseWindow,{controller:'config.tab.licensing.vbrjoblistwindow',viewModel:{type:'config.tab.licensing.vbrjoblistwindow'},config:{hostUuid:null},width:800,height:600,minWidth:600,minHeight:400,title:'Backup jobs referring to host',buttons:[{text:'Close',action:'cancel',ui:'primary'}],items:[{xtype:'deferredmaskgrid',reference:'grid',columns:{defaults:{menuDisabled:!0,sortable:!0,draggable:!1},items:[{text:'Backup host',dataIndex:'hostName',
flex:3,tdCls:'bold-td'},{text:'Job name',dataIndex:'name',flex:3},{text:'Is licensed',dataIndex:'isLicensed',flex:1,align:'center',formatter:'this.isLicensedColumnFormatter'}]},bind:'{jobsStore}',listeners:{exporttoexcel:'onExport'}}]},0,['config.tab.licensing.vbrjoblistwindow'],'component box container panel window config.tab.licensing.vbrjoblistwindow'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'config.tab.licensing.vbrjoblistwindow':!0},['widget.config.tab.licensing.vbrjoblistwindow'],
0,[MainApp.view.configuration.tab.licensing,'VbrJobListWindow'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.SummaryTabController',Ext.app.ViewController,{socketsByPlatformGridColumns:[{text:'Platform',dataIndex:'platform',width:120},{text:'Used Sockets',dataIndex:'used',align:'right',flex:1},{text:'Licensed Sockets',dataIndex:'licensed',align:'right',flex:1.2}],unitedSocketsGridColumns:[{text:'Platform',dataIndex:'platform',flex:1.5},{text:'Used Sockets',dataIndex:'used',align:'right',flex:1},{text:'Licensed Sockets',dataIndex:'licensed',align:'right',
flex:1.2}],instancesGridColumns:[{text:'Platform',dataIndex:'platform',flex:1.5},{text:'Count ',dataIndex:'count',align:'right'},{text:'Multiplier ',dataIndex:'multiplier',align:'right',flex:1.2},{text:'Instances  ',dataIndex:'instances',align:'right'}],afterRender:function(){this.loadInfoData()},loadInfoData:function(){MainApp.service.rpc.ConfigLicensing.getLicenseInfo().then(this.onLoadInfo.success.bind(this)).otherwise(Common.ui.Msg.error)},showDetails:function(){var vm=this.getViewModel();this.detailsDialog=
Ext.create('MainApp.view.configuration.tab.licensing.LicenseInfoDialog',{licenseInfo:vm.get('licenseInfo')});this.detailsDialog.show()},selectLicensesFile:function(field,value){field=this.lookupReference('uploadLicenseForm');(value=value.substring(value.length-3,value.length))&&'lic'!==value.toLowerCase()?Ext.Msg.alert('Invalid file','Selected file is not a valid license file.'):(field.submit(this._getUploadlicenseSubmitOptions(1)),Common.ui.Msg.wait())},destroy:function(){Ext.destroy(this.detailsDialog,
this.instancesGrid,this.socketsGrid);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},onLoadInfo:{success:function(result){if(!this.destroyed){var vm=this.getViewModel(),socketsGridContainer=this.lookupReference('socketsGridContainer'),instancesGridContainer=this.lookupReference('instancesGridContainer');this.socketsGrid&&this.socketsGrid.isPanel&&this.socketsGrid.destroy();this.socketsGrid=this.createSocketsInfoGrid(result);socketsGridContainer.add(this.socketsGrid);this.instancesGrid&&
this.instancesGrid.isPanel&&this.instancesGrid.destroy();this.instancesGrid=this.createInstancesInfoGrid(result);instancesGridContainer.add(this.instancesGrid);this.renderLicenseInfo(result.licenseStatus);vm.set('licenseStatus',result.licenseStatus);vm.set('licenseInfo',result.licenseInfo);vm.set('isLoaded',!0);this.fireEvent('loadinfo',this,result);this.lookup('detailsButton').setDisabled(!1)}},failure:Common.ui.Msg.error},uploadLicense:{success:function(form,action){var me=this,result=action.result;
Common.ui.Msg.hide();'true'===result.confirm?Common.ui.Msg.confirm('Warning','Enterprise Manager will push its license to all connected backup servers, overwriting currently installed license. Continue?',function(button,text){'yes'===button?(Common.ui.Msg.wait(),form.submit(me._getUploadlicenseSubmitOptions(0))):me._showSuccessUploadMsg(result)}):me._showSuccessUploadMsg(result)},failure:function(form,action){var responseMsg=atob(action.result.message);Common.ui.Msg.hide();action.failureType===Ext.form.Action.CONNECT_FAILURE?
this._refresh():Common.ui.Msg.error(responseMsg,function(){form.reset()},!0)}},renderLicenseInfo:function(data){var validationStatusComment=data.validationStatusComment;if('success'===data.validationStatus){var daysLeftText=Ext.util.Format.plural(data.daysLeft,'day','days');validationStatusComment+=Ext.String.format(' Period: {0} remaining.',daysLeftText)}daysLeftText=new Ext.XTemplate('\x3cdiv class\x3d"msg"\x3e','\x3cdiv class\x3d"msg-icon icon-cell-center {0}"\x3e\x3c/div\x3e','{1}','\x3c/div\x3e');
data.validationMessage=daysLeftText.applyTemplate([{error:'error',success:'success',warning:'warning'}[data.validationStatus],validationStatusComment]);data.licenseStatusTitle=this.createLicenseStatusTitle(data);return data},createInstancesInfoGrid:function(result){return new Ext.grid.Panel({store:{fields:['platform','count','multiplier','instances'],data:Ext.clone(result.licenseStatus.instancesUsage.platformUsages)},columns:{defaults:{flex:1,menuDisabled:!0,sortable:!1,draggable:!1},items:this.instancesGridColumns},
viewConfig:{disableSelection:!0,stripeRows:!1},border:!1,width:480,minHeight:90})},createSocketsInfoGrid:function(result){return result.licenseStatus.socketsUsage?this.createSocketsByPlatformInfoGrid(result.licenseStatus.socketsUsage):result.licenseStatus.unitedSocketsUsage?this.createUnitedSocketsInfoGrid(result.licenseStatus.unitedSocketsUsage):null},createSocketsByPlatformInfoGrid:function(data){return new Ext.grid.Panel({store:{fields:['platform','used','licensed'],data:Ext.clone(data.platformUsages)},
columns:{defaults:{menuDisabled:!0,sortable:!1,draggable:!1},items:this.socketsByPlatformGridColumns},viewConfig:{disableSelection:!0,stripeRows:!1},border:!1,width:480,minHeight:90})},createUnitedSocketsInfoGrid:function(data){return new Ext.grid.Panel({store:{fields:['platform','used','licensed'],data:Ext.apply({platform:'Hypervisor sockets'},data)},columns:{defaults:{menuDisabled:!0,sortable:!1,draggable:!1},items:this.unitedSocketsGridColumns},viewConfig:{disableSelection:!0,stripeRows:!1},border:!1,
width:320,minHeight:60})},createLicenseStatusTitle:function(data){return'License edition: '+data.licEdition},onOpenReport:function(){window.open('./MonthlyReport.aspx?isMonthly\x3dfalse','VeeamMonthlyUsageReportPreview')},privates:{_getUploadlicenseSubmitOptions:function(validate){return{url:'./UploadFileHandler.ashx?validate\x3d'+validate,waitTitle:'Updating file...',success:this.uploadLicense.success,failure:this.uploadLicense.failure,scope:this}},_refresh:function(){Ext.Function.defer(function(){location.reload()},
500)},_showSuccessUploadMsg:function(result){result.message?Common.ui.Msg.error(result,this._refresh.bind(this)):this._refresh()}}},0,0,0,0,['controller.config.tab.licensing.summarytab'],0,[MainApp.view.configuration.tab.licensing,'SummaryTabController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.LicenseInfoDialog',Veeam.base.view.BaseWindow,{viewModel:{data:{disabledSettings:!0,autoUpdateEnabled:!1,oldAutoUpdateEnabled:!1,settingIsLoaded:!1},formulas:{saveButtonDisabled:function(get){return get('autoUpdateEnabled')===get('oldAutoUpdateEnabled')}}},config:{licenseInfo:[]},layout:{type:'vbox',align:'stretch'},width:480,resizable:!1,modal:!0,title:'License Details',cls:'license-details',initComponent:function(){Ext.apply(this,{items:[{xtype:'grid',
cls:'license-params-grid',margin:'10 0 0 0',hideHeaders:!0,viewConfig:{disableSelection:!0,trackOver:!1,stripeRows:!1},columns:[{dataIndex:'key',flex:1,tdCls:'bold-td'},{dataIndex:'value',flex:1,renderer:this._renderValue}],store:{fields:['key','value','hasDate'],data:this.getLicenseInfo()}},{xtype:'fieldcontainer',layout:'vbox',cls:'license-params-settings',margin:'20 15',bind:{disabled:'{disabledSettings}'},items:[{xtype:'checkboxfield',boxLabel:'Update license key automatically',inputValue:!0,
margin:'20 0 0 0',bind:{value:'{autoUpdateEnabled}'}},{xtype:'button',ui:'text',text:'Update now',handler:'_onClickUpdateButton',scope:this}]}],buttons:[{text:'Save',ui:'primary',disabled:!0,handler:'_onChangeAutoUpdateOption',scope:this,bind:{disabled:'{saveButtonDisabled}'}},{text:'Cancel',ui:'alternate',handler:function(btn){btn.up('window').close()}}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);this._getLicesingSettings()},rpcHandlers:{getLicesingSettings:function(response){this.getViewModel().set({disabledSettings:!1,
autoUpdateEnabled:response.autoUpdateEnabled,oldAutoUpdateEnabled:response.autoUpdateEnabled})},licenseUpdateNow:{success:function(result){var me=this;me.getViewModel().set('disabledSettings',!1);Common.ui.Msg.successHtml(result,function(){me._refresh()})},failure:function(result){var me=this;me.getViewModel().set('disabledSettings',!1);Common.ui.Msg.successHtml(result,function(){result.refresh&&me._refresh()})}}},privates:{_renderValue:function(value,meta,record){if(!record.get('hasDate'))return value;
value=value.split(' ');(meta=Ext.Date.parse(value[0],'c',!1))&&(value[0]=Ext.Date.format(meta,'defaultDateFormat'));return value.join(' ')},_getLicesingSettings:function(){MainApp.service.rpc.ConfigLicensing.getLicesingSettings().then(this.rpcHandlers.getLicesingSettings.bind(this)).otherwise(Common.ui.Msg.error)},_onChangeAutoUpdateOption:function(){var value=this.getViewModel().get('autoUpdateEnabled');MainApp.service.rpc.ConfigLicensing.setLicenseAutoUpdateOption(value).then(Common.ui.Msg.successHtml);
this.close()},_onClickUpdateButton:function(){this.getViewModel().set('disabledSettings',!0);MainApp.service.rpc.ConfigLicensing.licenseUpdateNow().then(this.rpcHandlers.licenseUpdateNow.success.bind(this)).otherwise(this.rpcHandlers.licenseUpdateNow.failure.bind(this))},_refresh:function(){Ext.Function.defer(function(){location.reload()},500)}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.configuration.tab.licensing,
'LicenseInfoDialog'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.SummaryTab',Ext.Panel,{controller:'config.tab.licensing.summarytab',viewModel:{data:{isLoaded:!1},formulas:{hasSocketsLicense:function(get){return get('isLoaded')&&MainApp.app.user.hasSocketsLicense()}}},cls:'license-summary-tab',maxWidth:600,items:[{xtype:'toolbar',cls:'no-lr-padding-toolbar',items:[{text:'Details',iconCls:'info',reference:'detailsButton',disabled:!0,handler:'showDetails'},{text:'Report',iconCls:'license-report',handler:'onOpenReport'},
'-\x3e',{xtype:'form',reference:'uploadLicenseForm',items:[{xtype:'fileuploadfield',ui:'primary',buttonOnly:!0,clearOnSubmit:!1,buttonText:'Install license',buttonConfig:{tooltip:'The new license file will be applied to all connected Veeam Backup servers automatically',tooltipType:'title'},name:'license-file',listeners:{change:'selectLicensesFile'}},{xtype:'hidden',name:'csrfToken',value:window.CSRFToken}]}]},{xtype:'component',padding:'48 0',html:'\x3cdiv class\x3d"x-mask-loading x-mask-msg-inner"\x3e\x3cdiv class\x3d"x-mask-msg-text" style\x3d"text-align: center;"\x3eLoading...\x3c/div\x3e\x3c/div\x3e',
bind:{hidden:'{isLoaded}'}},{xtype:'component',html:'\x3ch3\x3eLicense edition: loading...\x3c/h3\x3e',hidden:!0,bind:{hidden:'{!isLoaded}',html:'\x3ch3\x3e{licenseStatus.licenseStatusTitle}\x3c/h3\x3e'},margin:'8 0 0 0'},{xtype:'component',html:'Loading...',hidden:!0,bind:{hidden:'{!isLoaded}',html:'{licenseStatus.validationMessage}'},margin:'0 0 24 0'},{xtype:'wizard-cardsection',title:'Sockets',cls:'licenses-status-grid-container',hidden:!0,marginHeader:'0 0 0 0',titleWithoutBackground:!0,bind:{hidden:'{!hasSocketsLicense}'},
reference:'socketsGridContainer'},{xtype:'wizard-cardsection',title:'Instances',marginHeader:'32 0 0 0',cls:'licenses-status-grid-container',titleWithoutBackground:!0,hidden:!0,reference:'instancesGridContainer',bind:{hidden:'{!isLoaded}'}}]},0,['config-license-summary','config.tab.licensing.summarytab'],'component box container panel config.tab.licensing.summarytab config-license-summary'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'config.tab.licensing.summarytab':!0,'config-license-summary':!0},
['widget.config-license-summary','widget.config.tab.licensing.summarytab'],0,[MainApp.view.configuration.tab.licensing,'SummaryTab'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.SocketsTabController',Ext.app.ViewController,{afterRender:function(){this.getViewModel().getStore('perSocketGridDataStore').load()},onRevoke:{success:function(result){Common.ui.Msg.hide();this._refresh()}},onExport:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('licensing.exportReportData',[sortInfo])).start()},onShowHostJobs:function(record){this.jobsDialog=Ext.create('MainApp.view.configuration.tab.legacylicensing.VbrJobListWindow',
{hostUuid:record.id});this.jobsDialog.show()},revoke:function(tab,btn){var me=this;tab=me.getView();var selection=tab.getSelection();tab&&selection&&selection.length&&Common.ui.Msg.confirm('Veeam Backup Enterprise Manager','Revoke selected licenses?',function(button){if('yes'===button){var selectedIdx=[];Ext.each(selection,function(item){selectedIdx.push({typeId:item.id})});Common.ui.Msg.wait();MainApp.service.rpc.ConfigLicensing.revokeVbrLicenses(selectedIdx).then(me.onRevoke.success.bind(me)).otherwise(Common.ui.Msg.error)}})},
renderlicensedHostPlatformColumn:function(value){return Veeam.model.LicensedHostPlatform.getLabel(value)},renderIsLicensedColumn:function(value){return value?'\x3ca class\x3d"is-licensed"\x3eLicensed\x3c/a\x3e':''},destroy:function(){Ext.destroy(this.jobsDialog);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},privates:{_refresh:function(){Ext.Function.defer(function(){location.reload()},500)}}},0,0,0,0,['controller.config.tab.licensing.socketstab'],0,[MainApp.view.configuration.tab.licensing,
'SocketsTabController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.SocketsTabModel',Ext.app.ViewModel,{stores:{perSocketGridDataStore:{type:'app-store',rpcMethod:'Api.licensing.getPerSocketGridData',fields:[{name:'id',type:'string'},{name:'hostName',type:'string'},{name:'hostUuid',type:'string'},{name:'cpuCount',type:'int'},{name:'hostType',type:'int'},{name:'isLicensed',type:'boolean'}],sorters:{direction:'ASC',property:'hostName'},remoteSort:!0,sortOnLoad:!0}}},0,0,0,0,['viewmodel.config.tab.licensing.socketstab'],0,
[MainApp.view.configuration.tab.licensing,'SocketsTabModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.SocketsTab',Veeam.base.view.BaseGrid,{controller:'config.tab.licensing.socketstab',viewModel:{type:'config.tab.licensing.socketstab'},columns:[{text:'Host Name',dataIndex:'hostName',formatter:'htmlEncode',menuDisabled:!0,flex:1},{text:'Host Type',dataIndex:'hostType',menuDisabled:!0,flex:1,renderer:'renderlicensedHostPlatformColumn'},{text:'CPU number',dataIndex:'cpuCount',menuDisabled:!0,width:150,align:'center'},{text:'Is licensed',dataIndex:'isLicensed',
menuDisabled:!0,width:150,align:'center',emptyCellText:'\x3cspan class\x3d"empty"\x3eNot available\x3c/a\x3e',renderer:'renderIsLicensedColumn'}],bind:{store:'{perSocketGridDataStore}',selection:'{theModel}'},flex:1,minHeight:250,selModel:{mode:'MULTI'},selType:'rowmodel',leftButtons:[{text:'Revoke',iconCls:'start',disabled:!0,handler:'revoke',bind:{disabled:'{!theModel}'}}],listeners:{showhostjobs:'onShowHostJobs',exporttoexcel:'onExport',cellclick:function(tableview,td,cellIndex,record){Ext.fly(td).down('.is-licensed')&&
this.fireEvent('showhostjobs',record)}}},0,['config-license-sockets'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid config-license-sockets'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,'config-license-sockets':!0},['widget.config-license-sockets'],0,[MainApp.view.configuration.tab.licensing,'SocketsTab'],0);
Ext.cmd.derive('MainApp.model.LicenseInstanceType',Ext.data.Model,{privates:{texts:{0:'Virtual Machine',1:'Server',2:'Workstation',3:'Cloud Machine',4:'Application'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this.texts[enumValue]||''}},0,0,0,0,0,0,[MainApp.model,'LicenseInstanceType'],function(){this[this.VirtualMachine=0]='VirtualMachine';this[this.Workstation=1]='Workstation';this[this.Server=2]='Server';this[this.CloudMachine=3]='CloudMachine';
this[this.Application=4]='Application'});
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.InstancesTabController',Ext.app.ViewController,{afterRender:function(){this.getViewModel().getStore('instanceGridDataStore').load()},onRevoke:{success:function(result){Common.ui.Msg.hide();this._refresh()}},onExport:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('licensing.modern.exportInstancesReport',[sortInfo])).start()},typeRenderer:function(value){return MainApp.model.LicenseInstanceType.getLabel(value)},revoke:function(tab,
btn){var me=this;tab=me.getView();var selection=tab.getSelection();tab&&selection&&selection.length&&Common.ui.Msg.confirm('Veeam Backup Enterprise Manager','Revoke selected licenses?',function(button){'yes'===button&&(button=selection.map(function(s){return{instanceId:s.get('instanceId'),backupServerId:s.get('backupServerId'),dbInstanceId:s.get('dbInstanceId')}}),Common.ui.Msg.wait(),MainApp.service.rpc.ConfigLicensing.revokeInstanceLicense(button).then(me.onRevoke.success.bind(me)).otherwise(Common.ui.Msg.error))})},
privates:{_refresh:function(){Ext.Function.defer(function(){location.reload()},500)}}},0,0,0,0,['controller.config.tab.licensing.instancestab'],0,[MainApp.view.configuration.tab.licensing,'InstancesTabController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.InstancesTabModel',Ext.app.ViewModel,{stores:{instanceGridDataStore:{type:'app-store',rpcMethod:'Api.licensing.modern.getInstancesReport',fields:[{name:'instanceId',type:'string'},{name:'name',type:'string'},{name:'type',type:'int'},{name:'backupServerId',type:'string'},{name:'dbInstanceId',type:'string'}],sorters:{direction:'ASC',property:'name'},remoteSort:!0,sortOnLoad:!0}}},0,0,0,0,['viewmodel.config.tab.licensing.instancestab'],0,[MainApp.view.configuration.tab.licensing,
'InstancesTabModel'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.licensing.InstancesTab',Veeam.BaseGrid,{controller:'config.tab.licensing.instancestab',viewModel:{type:'config.tab.licensing.instancestab'},columns:[{text:'Name',dataIndex:'name',formatter:'htmlEncode',menuDisabled:!1,flex:1},{text:'License',dataIndex:'type',menuDisabled:!1,flex:1,renderer:'typeRenderer'}],bind:{store:'{instanceGridDataStore}',selection:'{theModel}'},flex:1,minHeight:250,selModel:{mode:'MULTI'},selType:'rowmodel',leftButtons:[{text:'Revoke',
iconCls:'start',disabled:!0,handler:'revoke',bind:{disabled:'{!theModel}'}}],listeners:{showhostjobs:'onShowHostJobs',exporttoexcel:'onExport',cellclick:function(tableview,td,cellIndex,record){Ext.fly(td).down('.is-licensed')&&this.fireEvent('showhostjobs',record)}}},0,['config-license-instances'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid config-license-instances'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,
basegrid:!0,'config-license-instances':!0},['widget.config-license-instances'],0,[MainApp.view.configuration.tab.licensing,'InstancesTab'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.Licensing',Veeam.base.view.BaseTabPanel,{controller:'config.tab.licensing',viewModel:{},border:!1,layout:'fit',padding:'16 16 0 16',initComponent:function(){var items=[{xtype:'config-license-summary',title:'Summary',routeId:'summary'}];MainApp.app.user.hasSocketsLicense()&&items.push({xtype:'config-license-sockets',title:'Sockets',routeId:'sockets'});items.push({xtype:'config-license-instances',title:'Instances',routeId:'instances'});Ext.apply(this,{items:items});
Veeam.base.view.BaseTabPanel.prototype.initComponent.apply(this,arguments)},listeners:{tabchange:'tabChange'}},0,0,'component box container panel tabpanel basetabpanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,basetabpanel:!0},0,0,[MainApp.view.configuration.tab,'Licensing'],0);
Ext.cmd.derive('MainApp.view.configuration.Main',Ext.Panel,{layout:'border',border:!1,cls:'configuration-panel',bodyCssClass:'configuration-panel-body',controller:'config.main',config:{activeTab:null},items:[{xtype:'config.sidemenu',itemId:'menu',reference:'menu',region:'west'},{xtype:'panel',reference:'containerPn',cls:'config-tab-container',ctype:'centerPanel',header:!1,layout:'fit',region:'center',scrollable:'y'},{xtype:'container',region:'north',reference:'topMenuContainer',layout:{type:'vbox',
align:'stretch'},items:[{xtype:'app-topmenu',showConfigButton:!1}]}]},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},0,0,[MainApp.view.configuration,'Main'],0);
Ext.cmd.derive('MainApp.view.main.MainController',MainApp.base.controller.BaseMainController,{defaultRoute:'!dashboard',routeSection:'main',config:{configurationPageLink:'/Configuration.aspx'},listen:{controller:{'#':{unmatchedroute:{fn:'onUnmatchedRoute'}}},component:{'*':{routechange:{fn:'onInternalRouteChange'}}},eventmanager:{hubConnectionLost:'showGlobalNotification',hubConnectionRestored:'showGlobalNotification'},global:{notification:'showGlobalNotification'}},showGlobalNotification:function(event){var panel=
this.getView().down('#tabPanelBody'),options=Ext.apply({dock:'top'},event.options);options=new Common.toolbar.Notification(options);'error'===event.type?options.setError(event.message):'success'===event.type?options.setSuccess(event.message):options.setInfo(event.message);panel.addDocked(options)},onInternalRouteChange:function(view){if(view.routeId)this.onRouteChange(view.routeId)},onUnmatchedRoute:function(hash){(hash=(hash=this._getTabPanel().getActiveTab())?'!'+hash.routeId:this.defaultRoute)&&
this.redirectTo(hash)},onRouteChange:function(tabName){this._getTabPanel().setActiveTab(tabName)},tabPanelBeforeRender:function(tabPanel){var tabName=this._getCurrentRoutingTabName();tabName=tabName?tabPanel.getTabByRouteId(tabName)||tabPanel.getActiveTab()||tabPanel.setActiveTab(0):tabPanel.getActiveTab()||tabPanel.setActiveTab(0);tabPanel.suspendEvents();tabPanel.setActiveTab(tabName);tabPanel.resumeEvents()},privates:{_getTabPanel:function(){return this.getView().down('maintabpanel')},_getCurrentRoutingTabName:function(){return(Ext.isString(location.hash)?
location.hash.split('/'):[])[0].toString().replace(/(\#\!)/,'')}}},0,0,0,0,['controller.main.main'],0,[MainApp.view.main,'MainController'],0);
Ext.cmd.derive('MainApp.view.main.IndexTabPanel',Ext.Panel,{referenceHolder:!0,layout:'fit',tabsRendered:!1,initComponent:function(){Ext.apply(this,{items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},minWidth:1100,items:[{xtype:'app-topmenu',reference:'tabPanelTopMenu',indexPageLink:'',listeners:{tabsready:'_onTabsReady',scope:this}},{xtype:'panel',minHeight:100,layout:{type:'card',deferredRender:!0},reference:'tabPanelBody',itemId:'tabPanelBody',flex:1,defaults:{padding:'8 16 16 16'},
items:[]}]}]});Ext.panel.Panel.prototype.initComponent.apply(this,arguments);this.cardPanels&&this.lookupReference('tabPanelBody').insert(0,this.cardPanels)},getActiveTab:function(){return this.lookupReference('tabPanelBody').getLayout().getActiveItem()},setActiveTab:function(tab){var cardPanel=this.lookupReference('tabPanelBody');if(!cardPanel.items.items.length)return null;Ext.isString(tab)?(tab=this.getTabByRouteId(tab))&&cardPanel.getLayout().setActiveItem(tab):tab=cardPanel.getLayout().setActiveItem(tab);
return tab?(this._setActiveButton(tab.routeId),tab):null},getTabByRouteId:function(routeId){return this.lookupReference('tabPanelBody').down('[routeId\x3d'+routeId+']')},privates:{_onTabsReady:function(panels){this.cardPanels=panels},_setActiveButton:function(routeId){var tabBar=this.lookupReference('tabPanelTopMenu');(routeId=tabBar.down('[routeId\x3d'+routeId+']'))&&tabBar.setActiveTab(routeId)}}},0,['maintabpanel'],['component','box','container','panel','maintabpanel'],{component:!0,box:!0,container:!0,
panel:!0,maintabpanel:!0},['widget.maintabpanel'],0,[MainApp.view.main,'IndexTabPanel'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.DashboardController',MainApp.base.controller.BaseController,{routeSection:'dashboard',defaultRoute:'!dashboard/lastday',onRouteChange:function(action){var btn=action===MainApp.view.main.dashboard.Dashboard.LAST_WEEK?this._getLastWeekButton():this._getLastDayButton();MainApp.base.controller.BaseController.prototype.onRouteChange.apply(this,arguments);btn.click()},onChangeAction:function(segm,button,isPressed){segm=this.getViewModel();isPressed&&(segm.set('period',
button.routeId),segm.notify(),this._loadData(!0),this._redirect(button.routeId))},onActivate:function(){var action=this._getActiveAction();this.isOwnRoute()||(this.silentRedirectTo(Ext.String.format('!{0}/{1}',this.routeSection,action)),this.onRouteChange(action))},refreshData:function(){this._loadData(!0)},showLicenseStatus:function(data,e){Ext.create('MainApp.view.main.dashboard.LicenseStatusDialog',{licenseStatus:data.vbrSection}).show()},showServers:function(data){Ext.create('MainApp.view.main.dashboard.ServersWindow',
{serverData:data}).show()},showWarnings:function(status){var warningsPanel=this.lookupReference('warningsPanel'),warningData=this._buildLicenseAlertsData(status);this._addWarnings(warningData);warningsPanel.licenseStatus=status},warningsPanelRender:function(panel){panel.getEl().on('click','onClickWarningPanel',this)},onClickWarningPanel:function(e){var warningsPanel=this.lookupReference('warningsPanel'),licenseStatus=warningsPanel.licenseStatus,monthlyReportLink=e.getTarget('#dashboard-monthly-report-dialog-href'),
moreBtn=e.getTarget('#warningPanelMoreBtn'),lessBtn=e.getTarget('#warningPanelLessBtn');monthlyReportLink&&(e.stopEvent(),Ext.create('MainApp.view.main.dashboard.MonthlyReportDialog',{isOnline:licenseStatus.adjustStatus.isAdjustOnline,vmsCount:licenseStatus.adjustStatus.protectedVmsCount,daysLeft:licenseStatus.adjustStatus.daysLeftToSubmit}).show().center());moreBtn&&(warningsPanel.addCls('show-all'),this.getView().updateLayout());lessBtn&&(warningsPanel.removeCls('show-all'),this.getView().updateLayout())},
onUpdateWidgetData:function(){this._loadWidgetsData(!0,!0)},onShow:function(){var widgetsPanel=this.lookup('widgetsPanel'),chartPanel=this.lookup('chartPanel');widgetsPanel.onShowComplete();chartPanel.onShowComplete()},privates:{_loadData:function(force){this._loadChartData(force);this._loadWidgetsData(force)},_loadChartData:function(force){this.lookupReference('chartPanel').loadData(force)},_loadWidgetsData:function(force,hideLoadingMask){var vm=this.getViewModel(),widgetsPanel=this.lookupReference('widgetsPanel');
hideLoadingMask||widgetsPanel.setLoading();MainApp.service.rpc.Dashboard.getBlocksData(this._getCashingMode(force),vm.get('period')).then(function(response){widgetsPanel.setWidgetData(response.data);widgetsPanel.setAutoUpdateId(response.autoUpdateId)}).always(function(){hideLoadingMask||widgetsPanel.setLoading(!1)})},_getCashingMode:function(force){return force?MainApp.view.main.dashboard.Dashboard.REFRESH_CACHING_MODE:MainApp.view.main.dashboard.Dashboard.DEFAULT_CACHING_MODE},_getLastDayButton:function(){return this.getView().down('[routeId\x3d'+
MainApp.view.main.dashboard.Dashboard.LAST_DAY+']')},_getLastWeekButton:function(){return this.getView().down('[routeId\x3d'+MainApp.view.main.dashboard.Dashboard.LAST_WEEK+']')},_getActiveAction:function(){return this._getLastWeekButton().pressed?MainApp.view.main.dashboard.Dashboard.LAST_WEEK:MainApp.view.main.dashboard.Dashboard.LAST_DAY},_redirect:function(routeId){this.redirectTo('!dashboard/'+routeId)},_addWarnings:function(warnings){var warningsPanel=this.lookupReference('warningsPanel'),html=
'';Ext.each(warnings,function(warning,index){warning=Ext.String.format('\x3cdiv class\x3d"alert-row alert-{0}"\x3e{1} {2}\x3c/div\x3e {3}',warning[0],warning[2],0===index&&1<warnings.length?' \x3cspan class\x3d"warning-btn" id\x3d"warningPanelMoreBtn"\x3e +'+(warnings.length-1).toString()+' more...\x3c/span\x3e':'',index===warnings.length-1&&1<warnings.length?'\x3cdiv class\x3d"less-btn-row"\x3e\x3cspan class\x3d"warning-btn" id\x3d"warningPanelLessBtn"\x3eShow less\x3c/span\x3e\x3c/div\x3e':'');
html+=warning});warningsPanel.update(html);warningsPanel.setVisible(html)},_buildLicenseAlertsData:function(licenseStatus){var data=[],vbrSecionGridData=this._buildLicenseAlertsSectionData('Backup \x26 Replication','summary',licenseStatus.vbrSection);data=data.concat(vbrSecionGridData);!0===licenseStatus.adjustStatus.isAdjustRequired&&(licenseStatus=Ext.util.Format.plural(licenseStatus.adjustStatus.daysLeftToSubmit,'day','days'),licenseStatus=Ext.String.format('\x3cspan\x3ePlease \x3ca href\x3d"#" id\x3d"dashboard-monthly-report-dialog-href"\x3esubmit\x3c/a\x3e a monthly usage report ({0} left)\x3c/span\x3e',
licenseStatus),data.push(['warning','Backup \x26 Replication',licenseStatus]));return data},_buildLicenseAlertsSectionData:function(sectionName,sectionTabLink,sectionStatus){var sectionData=[];!0===sectionStatus.isExeeded&&(sectionTabLink=Ext.String.format('\x3cspan\x3e{0} \x3ca href\x3d"./Configuration.aspx#!configuration/licensing/{1}" title\x3d"details"\x3eView details\x3c/a\x3e\x3c/span\x3e',sectionStatus.exeededMessage,sectionTabLink),sectionData.push(['error',sectionName,sectionTabLink]));'EvaluationFinished'===
sectionStatus.fail?(sectionTabLink='\x3cspan\x3e'+sectionStatus.validationStatusComment+'\x3c/span\x3e',sectionData.push(['warning',sectionName,sectionTabLink])):!0===sectionStatus.gracePeriod?(sectionTabLink=Ext.String.format('\x3cspan\x3e{0}\x3c/span\x3e',sectionStatus.gracePeriodMessage),sectionData.push(['warning',sectionName,sectionTabLink])):'ExpirationElapsed'===sectionStatus.fail&&(sectionTabLink='\x3cspan\x3e'+sectionStatus.validationStatusComment+'\x3c/span\x3e',sectionData.push(['warning',
sectionName,sectionTabLink]));return sectionData}}},0,0,0,0,['controller.main.dashboard'],0,[MainApp.view.main.dashboard,'DashboardController'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.DashboardModel',Ext.app.ViewModel,{data:{period:null},stores:{chartLegendStore:{fields:[{name:'id',type:'integer'},{name:'hidden',type:'boolean'},'name','color','data'],data:[],hasVisibleSerie:function(){var result=!1;this.each(function(r){if(!r.get('hidden'))return result=!0,!1});return result}}}},0,0,0,0,['viewmodel.main.dashboard'],0,[MainApp.view.main.dashboard,'DashboardModel'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.ServersWindowController',Veeam.base.view.BaseWindowController,{afterRender:function(){var grid=this.lookupReference('theGrid');var notificationtoolbar=new Common.toolbar.Notification({autoClose:!1,hideCloseButton:!0,layout:'table'});notificationtoolbar.setInfo(Ext.String.format('No backup servers added. To add, go to \x3ca href\x3d"{0}"\x3eBackup Servers\x3c/a\x3e',this.getView().getConfigBackupServersLink()));notificationtoolbar=Ext.DomHelper.markup(notificationtoolbar.getRenderTree());
grid.setEmptyText(notificationtoolbar)},initViewModel:function(vm){var serverData=this.getView().getServerData(),store=vm.get('serversStore');serverData&&(store.loadData(serverData.items),vm.set('dataIsLoaded',0<serverData.items.length))},statusColumnRenderer:function(value,meta,record){return'\x3cspan class\x3d"icon '+record.data.statusIcon+'"\x3e'+Ext.String.htmlEncode(value)+'\x3c/span\x3e'},infoColumnRenderer:function(value,meta){meta.tdAttr+=' data-qtip\x3d"'+Ext.String.htmlEncode(value.replace('"',
"'"))+'"';return Ext.String.htmlEncode(value)}},0,0,0,0,['controller.main.dashboard.serverswindow'],0,[MainApp.view.main.dashboard,'ServersWindowController'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.ServersWindowModel',Ext.app.ViewModel,{data:{dataIsLoaded:!1},formulas:{},stores:{serversStore:{fields:['server','status','info',{name:'statusIcon',calculate:function(data){return'Online'===data.status?'success':'error'}}],proxy:'memory'}}},0,0,0,0,['viewmodel.main.dashboard.serverswindow'],0,[MainApp.view.main.dashboard,'ServersWindowModel'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.ServersWindow',Veeam.base.view.BaseWindow,{controller:'main.dashboard.serverswindow',viewModel:{type:'main.dashboard.serverswindow'},config:{configBackupServersLink:'/Configuration.aspx#!configuration/backup_servers',serverData:null},title:'Backup Servers',modal:!0,width:600,height:350,minHeight:350,minWidth:460,layout:'fit',bodyPadding:'8 16 16 16',buttons:[{text:'Close',action:'cancel',ui:'primary'}],items:[{xtype:'grid',disableSelection:!0,bind:'{serversStore}',
flex:1,padding:0,reference:'theGrid',viewConfig:{forceFit:!0,deferEmptyText:!1},columns:{defaults:{sortable:!1,menuDisabled:!0},items:[{header:'Server',formatter:'htmlEncode',dataIndex:'server',width:120,tdCls:'bold-td'},{header:'Status',dataIndex:'status',width:120,renderer:'statusColumnRenderer'},{header:'Info',dataIndex:'info',flex:1,renderer:'infoColumnRenderer'}]}}]},0,['main.dashboard.serverswindow'],'component box container panel window main.dashboard.serverswindow'.split(' '),{component:!0,
box:!0,container:!0,panel:!0,window:!0,'main.dashboard.serverswindow':!0},['widget.main.dashboard.serverswindow'],0,[MainApp.view.main.dashboard,'ServersWindow'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.widgets.Base',Ext.view.View,{config:{title:'Widget'},cls:'main-dashboard-widget',border:1,plugins:'responsive',maxWidth:330,responsiveConfig:{'width \x3c 1280':{minWidth:300},'width \x3c\x3d 1100':{minWidth:340},'width \x3e\x3d 1280':{minWidth:280}},initComponent:function(){var store=Ext.create('Ext.data.Store',{fields:['label','value','link','labelCls','valueCls'],proxy:'memory'});store={tpl:this._createTpl(),store:store};Ext.apply(this,store);Ext.view.View.prototype.initComponent.apply(this,
arguments)},itemSelector:'tr',getCashingMode:function(force){return force?MainApp.view.main.dashboard.Dashboard.REFRESH_CACHING_MODE:MainApp.view.main.dashboard.Dashboard.DEFAULT_CACHING_MODE},updateTpl:function(){var tpl=this._createTpl();this.setConfig({tpl:tpl})},privates:{_createTpl:function(){return new Ext.XTemplate('\x3cdiv class\x3d"widget-title"\x3e',this.getTitle(),'\x3c/div\x3e','\x3ctable cellpadding\x3d"0" cellspacing\x3d"0"\x3e\x3ctbody\x3e','\x3ctpl for\x3d"."\x3e','\x3ctr\x3e','\x3ctd class\x3d"dashboard-summary-label {labelCls}"\x3e\x3cdiv\x3e{label}\x3c/div\x3e\x3c/td\x3e',
'\x3ctd class\x3d"dashboard-summary-cell {valueCls}"\x3e\x3cdiv\x3e','\x3ctpl if\x3d"link"\x3e\x3ca href\x3d"{link}"\x3e{value}\x3c/a\x3e','\x3ctpl else\x3e{value}\x3c/tpl\x3e','\x3c/div\x3e\x3c/td\x3e','\x3c/tr\x3e','\x3c/tpl\x3e','\x3c/tbody\x3e\x3c/table\x3e')}}},0,['main-dashboard-basewidget','main.dashboard.basewidget'],['component','box','dataview','main.dashboard.basewidget','main-dashboard-basewidget'],{component:!0,box:!0,dataview:!0,'main.dashboard.basewidget':!0,'main-dashboard-basewidget':!0},
['widget.main-dashboard-basewidget','widget.main.dashboard.basewidget'],0,[MainApp.view.main.dashboard.widgets,'Base'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.widgets.Summary',MainApp.view.main.dashboard.widgets.Base,{config:{title:'Summary',backupServersLink:'#!reports',jobsLink:'#!jobs',vmsLink:'#!vms'},loadWidgetData:function(data){this.getStore().loadData([{label:'Backup servers',value:data.backupServers,link:this.getBackupServersLink()},{label:'Jobs',value:data.jobs,link:this.getJobsLink()},{label:'Machines',value:data.vms,link:this.getVmsLink()},{label:'Templates',value:data.templates}])}},0,['main-dashboard-summarywidget',
'main.dashboard.summarywidget'],'component box dataview main.dashboard.basewidget main-dashboard-basewidget main.dashboard.summarywidget main-dashboard-summarywidget'.split(' '),{component:!0,box:!0,dataview:!0,'main.dashboard.basewidget':!0,'main-dashboard-basewidget':!0,'main.dashboard.summarywidget':!0,'main-dashboard-summarywidget':!0},['widget.main-dashboard-summarywidget','widget.main.dashboard.summarywidget'],0,[MainApp.view.main.dashboard.widgets,'Summary'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.widgets.Backup',MainApp.view.main.dashboard.widgets.Base,{config:{title:'Data'},loadWidgetData:function(data){this.getStore().loadData([{label:'Processing speed',value:data.processingSpeed},{label:'Source size',value:data.sourceVmsSize},{label:'Full backups',value:data.fullBackups},{label:'Restore points',value:data.restorePoints}])}},0,['main-dashboard-backupwidget','main.dashboard.backupwidget'],'component box dataview main.dashboard.basewidget main-dashboard-basewidget main.dashboard.backupwidget main-dashboard-backupwidget'.split(' '),
{component:!0,box:!0,dataview:!0,'main.dashboard.basewidget':!0,'main-dashboard-basewidget':!0,'main.dashboard.backupwidget':!0,'main-dashboard-backupwidget':!0},['widget.main-dashboard-backupwidget','widget.main.dashboard.backupwidget'],0,[MainApp.view.main.dashboard.widgets,'Backup'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.widgets.Jobs',MainApp.view.main.dashboard.widgets.Base,{viewModel:{},config:{title:'jobs',totalJobsLink:'#!reports/last_job_sessions/all/',successedJobsLink:'#!reports/last_job_sessions/success/',warningJobsLink:'#!reports/last_job_sessions/warning/',errorJobsLink:'#!reports/last_job_sessions/error/'},userCls:'jobs-widget',loadWidgetData:function(data){var period=this.getViewModel().get('period');this.setTitle(period===MainApp.view.main.dashboard.Dashboard.LAST_DAY?
'Last 24 hours':'Last 7 days');this.updateTpl();this.getStore().loadData([{label:'Total job runs',value:data.totalJobRuns,labelCls:'progress',link:data.totalJobRuns?this.getTotalJobsLink()+period:null},{label:'Success',value:data.successes,labelCls:'success',link:data.successes?this.getSuccessedJobsLink()+period:null},{label:'Warning',value:data.warnings,labelCls:'warning',link:data.warnings?this.getWarningJobsLink()+period:null},{label:'Error',value:data.errors,labelCls:'error',link:data.errors?
this.getErrorJobsLink()+period:null}])}},0,['main-dashboard-jobswidget','main.dashboard.jobswidget'],'component box dataview main.dashboard.basewidget main-dashboard-basewidget main.dashboard.jobswidget main-dashboard-jobswidget'.split(' '),{component:!0,box:!0,dataview:!0,'main.dashboard.basewidget':!0,'main-dashboard-basewidget':!0,'main.dashboard.jobswidget':!0,'main-dashboard-jobswidget':!0},['widget.main-dashboard-jobswidget','widget.main.dashboard.jobswidget'],0,[MainApp.view.main.dashboard.widgets,
'Jobs'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.widgets.Status',MainApp.view.main.dashboard.widgets.Base,{config:{title:'Status',response:null},userCls:'status-widget',loadWidgetData:function(data){var rows=[],licValidationStatus=data.licenseStatus.vbrSection.validationStatus,currentUrl=location.hash,statusText={error:'Error',success:'OK',warning:'Warning'};this.setResponse(data);data.backups&&rows.push({label:'Backups',valueCls:data.backups,value:statusText[data.backups]});data.backupServers&&rows.push({label:'\x3ca class\x3d"x-bs-link" href\x3d"'+
currentUrl+'"\x3eBackup servers\x3c/a\x3e',valueCls:data.backupServers.status,value:statusText[data.backupServers.status]});rows.push({label:'Management server',valueCls:data.mngServer,value:statusText[data.mngServer]});rows.push({label:'success'!==licValidationStatus?'\x3ca href\x3d"'+currentUrl+'" class\x3d"x-license-link"\x3eLicense\x3c/a\x3e':'License',valueCls:licValidationStatus,value:statusText[licValidationStatus]});this.getStore().loadData(rows);this.fireEvent('loadstatus',data.licenseStatus)}},
0,['main-dashboard-statuswidget','main.dashboard.statuswidget'],'component box dataview main.dashboard.basewidget main-dashboard-basewidget main.dashboard.statuswidget main-dashboard-statuswidget'.split(' '),{component:!0,box:!0,dataview:!0,'main.dashboard.basewidget':!0,'main-dashboard-basewidget':!0,'main.dashboard.statuswidget':!0,'main-dashboard-statuswidget':!0},['widget.main-dashboard-statuswidget','widget.main.dashboard.statuswidget'],0,[MainApp.view.main.dashboard.widgets,'Status'],0);
Ext.cmd.derive('Veeam.mixin.PanelAutoUpdate',Veeam.mixin.BaseAutoUpdate,{setAutoUpdateId:function(autoUpdateId){var previousUpdateId=this.getAutoUpdateId();null!==previousUpdateId&&previousUpdateId!==autoUpdateId&&Veeam.manager.ReportAutoUpdateManager.unregisterReport(this);(arguments.callee.$previous||Veeam.mixin.BaseAutoUpdate.prototype.setAutoUpdateId).apply(this,arguments);Veeam.manager.ReportAutoUpdateManager.registerReport(this);this.setReportHash(window.location.href);this.lastStoreUpdate=
(new Date).getTime()}},0,0,0,0,0,0,[Veeam.mixin,'PanelAutoUpdate'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.Widgets',Ext.Panel,{plugins:[{ptype:'deferredmask'}],viewModel:{},controller:{},cls:'main-dashboard-widgets',bodyCls:'main-dashboard-widgets-body',layout:{type:'column'},margin:'4 0 0 0',autoUpdateTimeout:3E4,defaults:{margin:'0 32 16 0',columnWidth:.25},items:[{xtype:'main-dashboard-summarywidget',reference:'summaryWidget'},{xtype:'main-dashboard-backupwidget',reference:'backupWidget'},{xtype:'main-dashboard-jobswidget',reference:'jobsWidget'},{xtype:'main-dashboard-statuswidget',
reference:'statusWidget',listeners:{itemclick:function(view,record,item,index,e){e.stopEvent();record=view.up('main-dashboard-widgets');view=view.getResponse();item=e.getTarget('.x-bs-link');e.getTarget('.x-license-link')&&record.fireEvent('showlicensestatus',view.licenseStatus,e);item&&record.fireEvent('showservers',view.backupServers.serverData)}}}],setWidgetData:function(data){this.lookupReference('summaryWidget').loadWidgetData(data.summary);this.lookupReference('backupWidget').loadWidgetData(data.backupStatistics);
this.lookupReference('jobsWidget').loadWidgetData(data.jobRunStatistics);this.lookupReference('statusWidget').loadWidgetData(data.status)},initComponent:function(){Ext.panel.Panel.prototype.initComponent.apply(this,arguments);this.relayEvents(this.lookupReference('statusWidget'),['loadstatus'])}},0,['main-dashboard-widgets','main.dashboard.widgets'],'component box container panel main.dashboard.widgets main-dashboard-widgets'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.dashboard.widgets':!0,
'main-dashboard-widgets':!0},['widget.main-dashboard-widgets','widget.main.dashboard.widgets'],[[Veeam.mixin.PanelAutoUpdate.prototype.mixinId||Veeam.mixin.PanelAutoUpdate.$className,Veeam.mixin.PanelAutoUpdate]],[MainApp.view.main.dashboard,'Widgets'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.ChartController',MainApp.base.controller.BaseController,{loadData:function(cachingMode,period){var isLastDayView=period===MainApp.view.main.dashboard.Dashboard.LAST_DAY,sizeChart=this.lookupReference('sizeChart'),sizeChartTitle=this.lookupReference('sizeChartTitle');this.activityChart&&(this.activityChart.destroy(),this.activityChart=null,delete this.activityChart);this.sizeChart&&(this.sizeChart.destroy(),this.sizeChart=null,delete this.sizeChart);this._loadActivityChartData(cachingMode,
period,!1);isLastDayView?(sizeChartTitle.hide(),sizeChart.setHeight(1)):(sizeChart.setHeight(100),sizeChartTitle.show(),this._loadSizeChartData(cachingMode,!1));this._setEmptyChartWarningVisible(!1)},onResize:function(){var activityChart=this.lookupReference('activityChart'),sizeChart=this.lookupReference('sizeChart');this.activityChart&&this.activityChart.setSize(activityChart.getWidth(),activityChart.getHeight(),!1);this.sizeChart&&this.sizeChart.setSize(sizeChart.getWidth(),sizeChart.getHeight(),
!1)},onUpdateActivityChart:function(){var period=this.getViewModel().get('period');this._loadActivityChartData(MainApp.view.main.dashboard.Dashboard.REFRESH_CACHING_MODE,period,!0)},onUpdateSizeChart:function(){this._loadSizeChartData(MainApp.view.main.dashboard.Dashboard.REFRESH_CACHING_MODE,!0)},legendServerNameRenderer:function(name,metaData,record){var hidden=record.get('hidden');record=hidden?'#fff':record.get('color');hidden&&(metaData.tdCls='hidden-item');return Ext.String.format('\x3cdiv class\x3d"server-name"\x3e\x3cspan style\x3d"background-color: {1};"\x3e\x3c/span\x3e{0}\x3c/div\x3e',
name,record)},onLegendAfterRender:function(legend){var header=legend.getHeaderContainer(),column=legend.columns[0];header.getVisibleGridColumns=function(){return[column]};header.add({xtype:'label',text:'Show:',width:38,margin:'8 0 0 96'},{xtype:'button',text:'All',ui:'text',width:25,handler:function(){legend.fireEvent('showall',legend)}},{xtype:'tbseparator',width:1},{xtype:'button',text:'None',ui:'text',width:42,handler:function(){legend.fireEvent('shownone',legend)}})},onLegendItemClick:function(view,
record,item){view=!record.get('hidden');item=this.getViewModel().get('chartLegendStore');this._setSerieVisible(record,!view);record=item.hasVisibleSerie();this._setEmptyChartWarningVisible(!record)},onLegendShowAll:function(){var me=this;me.getViewModel().get('chartLegendStore').each(function(record){me._setSerieVisible(record,!0)});me._setEmptyChartWarningVisible(!1)},onLegendHideAll:function(){var me=this;me.getViewModel().get('chartLegendStore').each(function(record){me._setSerieVisible(record,
!1)});me._setEmptyChartWarningVisible(!0)},privates:{_setSerieVisible:function(record,visible){var activityChartSerie=this.activityChart.series[record.id],sizeChartSerie=this.sizeChart?this.sizeChart.series[record.id]:null;record.set('hidden',!visible);activityChartSerie&&(visible?activityChartSerie.show():activityChartSerie.hide());sizeChartSerie&&(visible?sizeChartSerie.show():sizeChartSerie.hide())},_setEmptyChartWarningVisible:function(visible){var notificationToolbar=this.getView().down('notificationtoolbar');
notificationToolbar&&notificationToolbar.setVisible(visible);this.onResize()},_loadActivityChartData:function(cachingMode,period,disabledAnimation){this.lookup('legend').hide();disabledAnimation||this.getView().setLoading();MainApp.service.rpc.Dashboard.getActivityChartData(cachingMode,period).then(this._initializeActivityChart.bind(this,disabledAnimation)).otherwise(Common.ui.Msg.error)},_loadSizeChartData:function(cachingMode,disabledAnimation){MainApp.service.rpc.Dashboard.getSizeChartData(cachingMode).then(this._initializeSizeChart.bind(this,
disabledAnimation)).otherwise(Common.ui.Msg.error)},_initializeActivityChart:function(disabledAnimation,config){var me=this,vm=me.getViewModel(),legend=me.lookup('legend'),legendStore=vm.get('chartLegendStore');config=config||{};config.autoUpdateId&&this.lookup('activityChart').setAutoUpdateId(config.autoUpdateId);disabledAnimation||me.getView().setLoading(!1);legend.show();vm=function(){return Highcharts.numberFormat(Math.pow(10,this.value))};var tooltipFormatter=config.yAxis.log_scale?function(){return 0==
this.y?0:Highcharts.numberFormat(Math.pow(10,this.y),3)}:function(){return Highcharts.numberFormat(this.y,3)};Highcharts.setOptions({chart:{style:{fontFamily:'"Droid Sans", Verdana, sans-serif',fontSize:'12px'}}});var options=Ext.apply(config,{chart:{renderTo:'activity-chart',defaultSeriesType:'spline',showAxes:!0,animation:!1,spacingBottom:30,events:{load:function(e){me._redrawChartTicks.call(me,e.target,!0)},redraw:function(e){me._redrawChartTicks.call(me,e.target,!1)}}},title:Ext.apply({},config.title,
{text:''}),xAxis:Ext.apply({},config.xAxis,{type:'datetime',showEmpty:!0,tickWidth:1,lineColor:'#c0c0c0',labels:{style:{color:'#888888'},formatter:function(){return Ext.Date.format(new Date(this.value),config.weekly?'defaultDateFormat':'defaultTimeFormat')}}}),yAxis:Ext.apply({},config.yAxis,{minorGridLineWidth:1,gridLineWidth:1,alternateGridColor:null,showEmpty:!1,labels:{style:{color:'#888888'},formatter:1==config.yAxis.log_scale?vm:null},title:Ext.apply(config.yAxis.title,{style:{color:'#888888',
fontWeight:'normal'}})}),tooltip:{enabled:!1,formatter:function(){return''+Ext.Date.format(new Date(this.x),'defaultFullDateFormat')+'\x3cbr /\x3eThroughput: \x3cem\x3e'+tooltipFormatter.call(this)+'\x3c/em\x3e'}},plotOptions:{area:{shadow:!1,enableMouseTracking:!1},spline:{lineWidth:3,shadow:!1,states:{hover:{enabled:!1,lineWidth:3}},marker:{enabled:!1}},series:{lineWidth:3,animation:!disabledAnimation}},credits:{enabled:!1},legend:{enabled:!1,weekly:config.weekly||!1,align:'right',layout:'vertical',
verticalAlign:'top',x:-50,y:50,borderColor:'#c0c0c0',itemStyle:{color:'#026ab3',fontWeight:'normal'},itemHiddenStyle:{color:'#026ab3',fontWeight:'normal'}}});disabledAnimation=0;for(vm=options.series.length;disabledAnimation<vm;disabledAnimation++)options.series[disabledAnimation].color=Veeam.helper.ChartHelper.getColorForSever(options.series[disabledAnimation].name);Ext.each(options.series,function(series,index){series=Ext.clone(series);series.id=index;legendStore.add(series)});me.activityChart=
new Highcharts.Chart(options,function(chart){0==chart.series.length&&chart.addSeries({name:'dummy',data:[],visible:!1})});me.initializeAxisTimerId=setTimeout(function(){0==options.weekly&&config.xAxis.plotBands&&me.activityChart.xAxis[0].addPlotBand(Ext.apply(config.xAxis.plotBands[0],{color:'#f4f4f4'}))},100)},_redrawChartTicks:function(chart,firstRedraw){var me=this;Ext.Object.each(chart.xAxis[0].ticks,function(key,tick){var dArray=tick.mark.d.split(' ');dArray=me._createCircleTickPath(dArray[1],
dArray[2]);var svg=me.lookup('activityChart').getEl().query('svg',!1)[0];firstRedraw?(tick.mark.attr({id:key+'-tick',d:dArray,fill:'white','class':'circle-tick',style:'z-index: 11111'}),svg.insertHtml('beforeEnd','\x3cuse xlink:href\x3d"#'+key+'-tick" /\x3e')):tick.mark.attr({d:dArray,fill:'white'})})},_createCircleTickPath:function(cx,cy){return'M '+cx+' '+cy+' m -3, 0 a 3,3 0 1,0 6,0 a 3,3 0 1,0 -6,0'},_initializeSizeChart:function(disabledAnimation,data){data.autoUpdateId&&this.lookup('sizeChart').setAutoUpdateId(data.autoUpdateId);
disabledAnimation=Ext.apply(data,{chart:{renderTo:'size-chart',defaultSeriesType:'bar',showAxes:!0,height:100,marginLeft:24,spacingRight:0},title:!1,xAxis:{labels:{enabled:!1},tickColor:'#c0c0c0',lineWidth:0},yAxis:{min:0,lineWidth:0,gridLineWidth:0,minorGridLineWidth:0,max:100,labels:{enabled:!1},title:{text:''}},legend:{enabled:!1,reversed:!0},tooltip:{formatter:function(){return Ext.String.htmlEncode(this.series.name)+': '+this.y+'%'},followPointer:!0,hideDelay:100},plotOptions:{series:{stacking:'normal',
animation:!disabledAnimation}},credits:{enabled:!1}});if(disabledAnimation.series&&disabledAnimation.series.length){data=0;for(var l=disabledAnimation.series.length;data<l;data++){var dataSet=disabledAnimation.series[data];dataSet.color=Veeam.helper.ChartHelper.getColorForSever(dataSet.name)}}this.sizeChart=new Highcharts.Chart(disabledAnimation)}}},0,0,0,0,['controller.main.dashboard.chart'],0,[MainApp.view.main.dashboard,'ChartController'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.BaseChartPanel',Ext.Component,{},0,['main-dashboard-basechartpanel','main.dashboard.basechartpanel'],['component','box','main.dashboard.basechartpanel','main-dashboard-basechartpanel'],{component:!0,box:!0,'main.dashboard.basechartpanel':!0,'main-dashboard-basechartpanel':!0},['widget.main-dashboard-basechartpanel','widget.main.dashboard.basechartpanel'],[[Veeam.mixin.PanelAutoUpdate.prototype.mixinId||Veeam.mixin.PanelAutoUpdate.$className,Veeam.mixin.PanelAutoUpdate]],
[MainApp.view.main.dashboard,'BaseChartPanel'],0);
Ext.cmd.derive('Veeam.view.chart.BackupServersChartLegend',Veeam.base.view.BaseGrid,{hideExportBtn:!0,hideRefreshBtn:!0,cls:'legend',columns:[{text:'Name',dataIndex:'name',flex:1,resizable:!1,draggable:!1,renderer:'legendServerNameRenderer'}],afterRender:function(){var me=this,header=me.getHeaderContainer(),column=me.columns[0];Veeam.base.view.BaseGrid.prototype.afterRender.apply(this,arguments);header.getVisibleGridColumns=function(){return[column]};header.add({xtype:'label',text:'Show:',width:38,
margin:'8 0 0 96'},{xtype:'button',text:'All',ui:'text',width:25,handler:function(){me.fireEvent('showall',me)}},{xtype:'tbseparator',cls:'btn-separator',width:1},{xtype:'button',text:'None',ui:'text',width:42,handler:function(){me.fireEvent('shownone',me)}})}},0,['backup-servers-chart-legend'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid backup-servers-chart-legend'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,
basegrid:!0,'backup-servers-chart-legend':!0},['widget.backup-servers-chart-legend'],0,[Veeam.view.chart,'BackupServersChartLegend'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.Chart',Ext.Container,{plugins:[{ptype:'deferredmask'}],controller:'main.dashboard.chart',viewModel:{},id:'live-chart',cls:'main-dashboard-chart',bodyCls:'main-dashboard-chart-body',layout:{type:'vbox',align:'stretch'},margin:'8 0 0 0',items:[{xtype:'container',flex:1,layout:{type:'hbox',align:'stretch'},items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,items:[{xtype:'component',html:'\x3ch3 class\x3d"big-title"\x3eBackup Servers\x3c/h3\x3e',
margin:'12 0 20 24'},{xtype:'notificationtoolbar',autoClose:!1,margin:'0 0 16 0',hidden:!0,hideCloseButton:!0,listeners:{afterrender:function(tb){tb.setWarning('Select at least one backup server to view the data.')}}},{xtype:'main-dashboard-basechartpanel',id:'activity-chart',reference:'activityChart',flex:1,listeners:{updatedata:'onUpdateActivityChart'}}]},{xtype:'backup-servers-chart-legend',width:310,margin:'0 0 10 22',reference:'legend',bind:{store:'{chartLegendStore}'},listeners:{itemclick:'onLegendItemClick',
showall:'onLegendShowAll',shownone:'onLegendHideAll'}}]},{xtype:'component',reference:'sizeChartTitle',html:'\x3ch3\x3eSource data distribution across backup servers\x3c/h3\x3e',margin:'8 0 4 24'},{xtype:'main-dashboard-basechartpanel',id:'size-chart',reference:'sizeChart',minHeight:1,listeners:{updatedata:'onUpdateSizeChart'}}],loadData:function(force){var period=this.getViewModel().get('period');this.controller.loadData(force?MainApp.view.main.dashboard.Dashboard.REFRESH_CACHING_MODE:MainApp.view.main.dashboard.Dashboard.DEFAULT_CACHING_MODE,
period)},listeners:{resize:'onResize'}},0,['main-dashboard-chart','main.dashboard.chart'],['component','box','container','main.dashboard.chart','main-dashboard-chart'],{component:!0,box:!0,container:!0,'main.dashboard.chart':!0,'main-dashboard-chart':!0},['widget.main-dashboard-chart','widget.main.dashboard.chart'],0,[MainApp.view.main.dashboard,'Chart'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.MonthlyReportDialogController',Veeam.base.view.BaseWindowController,{onReview:function(){window.open('./MonthlyReport.aspx?isMonthly\x3dtrue','VeeamMonthlyUsageReportPreview');this.close()},close:function(){this.getView().close()},onSend:function(){MainApp.service.rpc.ConfigLicensing.sendAdjustReport(!1).then(this.rpcHandlers.sendAdjustReport.bind(this)).otherwise(Common.ui.Msg.error);this.getView().setLoading('Sending...')},rpcHandlers:{sendAdjustReport:function(response){this.getView().setLoading();
Common.ui.Msg.success('Report has been submitted successfully');this.close()}},onDownloadPdf:function(){this._onDownload('pdf')},onDownloadJson:function(){this._onDownload('json')},privates:{_onDownload:function(format){var timezoneOffset=(new Date).getTimezoneOffset();format=Ext.util.Format.format('./ZipDownload.ashx?monthly_report\x3d1\x26is_adjusted\x3d0\x26format\x3d{0}\x26timezoneOffset\x3d{1}',format,timezoneOffset);window.open(format,'_blank');this.close()}}},0,0,0,0,['controller.main.dashboard.monthlyreport'],
0,[MainApp.view.main.dashboard,'MonthlyReportDialogController'],0);Ext.cmd.derive('MainApp.view.main.dashboard.MonthlyReportDialogModel',Ext.app.ViewModel,{data:{},formulas:{daysLeftText:function(get){get=get('dashboardMonthlyReport.daysLeft');return 1>=get?'until tomorrow':Ext.String.format('within the next {0} days',get)}},stores:{}},0,0,0,0,['viewmodel.main.dashboard.monthlyreport'],0,[MainApp.view.main.dashboard,'MonthlyReportDialogModel'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.MonthlyReportDialog',Veeam.base.view.BaseWindow,{viewModel:{type:'main.dashboard.monthlyreport'},controller:'main.dashboard.monthlyreport',config:{isOnline:!1,vmsCount:0,daysLeft:0},layout:{type:'hbox',align:'stretch'},reference:'dashboardMonthlyReport',publishes:['isOnline','vmsCount','daysLeft'],width:480,title:'Monthly Usage Report',resizable:!1,buttons:[{xtype:'button',text:'Review',handler:'onReview',ui:'text',minWidth:50},{xtype:'button',text:'Download',
hidden:!0,ui:'command-menu',bind:{hidden:'{dashboardMonthlyReport.isOnline}'},menu:{items:[{text:'PDF',iconCls:'pdf',handler:'onDownloadPdf'},{text:'JSON',iconCls:'csv',handler:'onDownloadJson'}]}},'-\x3e',{xtype:'button',hidden:!0,text:'Send',handler:'onSend',ui:'primary',bind:{hidden:'{!dashboardMonthlyReport.isOnline}'}},{xtype:'button',text:'Postpone',handler:'close',ui:'alternate'}],defaults:{xtype:'component'},items:[{cls:'x-message-box-icon x-dlg-icon x-message-box-question',width:48},{flex:1,
bind:{html:'Monthly usage report has been generated.\x3cbr\x3eNumber of managed Instances for the previous month: {dashboardMonthlyReport.vmsCount}\x3cbr\x3ePlease review and submit the report {daysLeftText}'}}]},0,['main-dashboard-monthlyreport','main.dashboard.monthlyreport'],'component box container panel window main.dashboard.monthlyreport main-dashboard-monthlyreport'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.dashboard.monthlyreport':!0,'main-dashboard-monthlyreport':!0},
['widget.main-dashboard-monthlyreport','widget.main.dashboard.monthlyreport'],0,[MainApp.view.main.dashboard,'MonthlyReportDialog'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.LicenseStatusDialog',Veeam.base.view.BaseWindow,{title:'License Status',minHeight:150,minWidth:300,resizable:!1,config:{licenseStatus:null},layout:{type:'hbox',align:'stretch'},buttons:[{text:'Close',ui:'primary',handler:function(btn){btn.up('main-dashboard-licensestatus').close()}}],initComponent:function(){var licenseStatus=this.getLicenseStatus(),iconCls=this.getStatusIconCls(licenseStatus.validationStatus);Ext.apply(this,{items:[{xtype:'component',cls:'x-message-box-icon icon-large '+
iconCls},{flex:1,xtype:'component',html:licenseStatus.validationStatusComment}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},getStatusIconCls:function(status){switch(status){case 'success':return'success-large';case 'error':return'error-large';case 'warning':return'warning-large';default:return'info-large'}}},0,['main-dashboard-licensestatus','main.dashboard.licensestatus'],'component box container panel window main.dashboard.licensestatus main-dashboard-licensestatus'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.dashboard.licensestatus':!0,'main-dashboard-licensestatus':!0},['widget.main-dashboard-licensestatus','widget.main.dashboard.licensestatus'],0,[MainApp.view.main.dashboard,'LicenseStatusDialog'],0);
Ext.cmd.derive('MainApp.view.main.dashboard.Dashboard',Ext.Panel,{statics:{LAST_DAY:'lastday',LAST_WEEK:'lastweek',DEFAULT_CACHING_MODE:'default',REFRESH_CACHING_MODE:'invalidate'},controller:'main.dashboard',viewModel:{type:'main.dashboard'},cls:'main-dashboard',bodyCls:'main-dashboard-body',layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{padding:0,items:[{xtype:'component',reference:'warningsPanel',padding:'15 10',cls:'main-dashboard-warnings',hidden:!0,listeners:{render:'warningsPanelRender'}},
{xtype:'panel',padding:'8 16',plugins:'responsive',responsiveConfig:{'width \x3c 1280':{minHeight:820},'width \x3e\x3d 1280':{minHeight:600}},minWidth:600,flex:1,layout:{type:'vbox',align:'stretch'},items:[{xtype:'main-dashboard-widgets',reference:'widgetsPanel',minWidth:600,padding:'16 0 0 0',listeners:{showlicensestatus:'showLicenseStatus',showservers:'showServers',loadstatus:'showWarnings',updatedata:'onUpdateWidgetData'}},{xtype:'main-dashboard-chart',reference:'chartPanel',minWidth:600,border:!0,
flex:1}],dockedItems:[{xtype:'toolbar',dock:'top',padding:0,margin:0,items:[{xtype:'segmentedbutton',cls:'segmented-button-tabs',items:[{text:'Last 24 hours',routeId:MainApp.view.main.dashboard.Dashboard.LAST_DAY},{text:'Last 7 days',routeId:MainApp.view.main.dashboard.Dashboard.LAST_WEEK}],listeners:{toggle:'onChangeAction'}},'-\x3e',{xtype:'button',text:'Refresh',iconCls:'refresh',handler:'refreshData',margin:'0 -8 0 0'}]}]}]});Ext.panel.Panel.prototype.initComponent.apply(this,arguments)},listeners:{activate:'onActivate',
show:'onShow'}},0,['main-dashboard','main.dashboard'],'component box container panel main.dashboard main-dashboard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.dashboard':!0,'main-dashboard':!0},['widget.main-dashboard','widget.main.dashboard'],0,[MainApp.view.main.dashboard,'Dashboard'],0);
Ext.cmd.derive('MainApp.view.main.reports.ReportsController',MainApp.base.controller.BaseController,{routeSection:'reports',defaultRoute:'!reports/allservers',statics:{REPORTXTYPE:{jobs_per_server:'report.jobsperserver',sure_backup_jobs_per_server:'report.surebackupjobsperserver',allservers:'report.allservers',sessions_per_job:'report.sessionsperjob',sessions:'report.sessiondetails',sure_backup_sessions_per_job:'report.surebackupsessionsperjob',sure_backup_sessions:'report.surebackupsessiondetails',
last_job_sessions:'report.lastjobsessions',vm_sessions:'report.vmsessions'},REPORTS_WITH_2_PRAMS:['vm_sessions','sessions_per_job','sessions','sure_backup_sessions','sure_backup_sessions_per_job']},onTabChange:function(tabPanel,newItem,oldItem){newItem!==oldItem&&(tabPanel=newItem.getUrl(),this.redirectTo(tabPanel));return!0},onRouteChange:function(){var me=this,view=me.getView(),args=Array.prototype.slice.call(arguments,0),reportKey=null,tab;MainApp.base.controller.BaseController.prototype.onRouteChange.apply(this,
arguments);var reportId=args.shift()||'allservers';var xtype=me.findReportXtype(reportId);if(!xtype)return!1;var spec=me.getReportMetadataSpec(reportId,Ext.clone(args));Ext.apply(spec,{xtype:xtype});var reportConfig=me.getReportConfig(reportId,Ext.clone(args));reportConfig=Ext.apply(reportConfig,{xtype:xtype,listeners:{destroy:'_updateClosable',scope:me}});reportKey=reportConfig.reportKey;if(tab=me.hasTab(reportKey))return view.setActiveTab(tab);me.fireViewEvent('mask');me.loadReportMetadata(spec).then(function(meta){Ext.apply(reportConfig,
meta);tab=view.add(reportConfig);tab.setUrl(reportKey);view.setActiveTab(tab);me._updateClosable();return!0}).otherwise(function(error){console.error('[MainReportController] Error: ',error);Common.ui.Msg.error(error);return!1}).always(function(){me.fireViewEvent('ummask')})},getReportMetadataSpec:function(reportId,args){var spec={};if('last_job_sessions'===reportId)reportId=args.shift(),args=args.shift(),spec.status=reportId,spec.period=args;else if(0<=this.self.REPORTS_WITH_2_PRAMS.indexOf(reportId)){reportId=
args.shift();var dbInstanceId=args.shift();args=args.shift();spec.id=reportId;spec.dbInstanceId=dbInstanceId;spec.jobId=args}else spec.id=args.shift();return spec},getReportConfig:function(reportId,args){if('last_job_sessions'===reportId){var status=args.shift();var period=args.shift();reportId=this.getReportUrl(reportId,status,period);reportId={status:status,period:period,reportKey:reportId}}else 0<=this.self.REPORTS_WITH_2_PRAMS.indexOf(reportId)?(status=args.shift(),period=args.shift(),args=args.shift(),
reportId=this.getReportUrl(reportId,status,period,args),reportId={entityId:status,dbInstanceId:period,jobId:args,reportKey:reportId}):(status=args.shift(),reportId=this.getReportUrl(reportId,status),reportId={entityId:status,reportKey:reportId});return reportId},loadReportMetadata:function(spec){var xtype=spec.xtype;xtype||Ext.error('No xtype spectified for load loadReportMetadata');var id=spec.id;return'report.jobsperserver'===xtype?Veeam.service.ReportService.getJobsPerServerReportMetadata(id):
'report.surebackupjobsperserver'===xtype?Veeam.service.ReportService.getSureBackupJobsPerServerReportMetadata(id):'report.sessionsperjob'===xtype?Veeam.service.ReportService.getSessionsPerJobReportMetadata(id):'report.surebackupsessionsperjob'===xtype?Veeam.service.ReportService.getSureBackupSessionsPerJobReportMetadata(id):'report.sessiondetails'===xtype?Veeam.service.ReportService.getSessionDetailsReportMetadata(id):'report.surebackupsessiondetails'===xtype?Veeam.service.ReportService.getSureBackupSessionDetailsReportMetadata(id):
'report.lastjobsessions'===xtype?Veeam.service.ReportService.getLastJobSessionsReportMetadata(spec.status,spec.period):'report.vmsessions'===xtype?Veeam.service.ReportService.getVmSessionsReportMetadata(spec.id,spec.dbInstanceId,spec.jobId):Ext.Deferred.resolved({})},hasTab:function(reportHash){reportHash=this.getView().query('grid[url\x3d'+reportHash+']');return reportHash.length?reportHash[0]:null},getReportUrl:function(){var args=Array.prototype.slice.call(arguments,0);args=Ext.Array.clean(args);
var reportType=args.shift();if(0<=this.self.REPORTS_WITH_2_PRAMS.indexOf(reportType)){var id=args.shift();var bsId=args.shift();args=args.shift();return'!reports/'+reportType+'/'+id+'/bs/'+bsId+(args?'/job/'+args:'')}if('last_job_sessions'===reportType)return'!reports/'+reportType+'/'+args.join('/');id=args.shift();return'!reports/'+reportType+(id?'/'+id:'')},findReportXtype:function(reportId){if(!reportId)return console.error('Report id not set'),!1;var xtype=this.self.REPORTXTYPE[reportId];return xtype?
xtype:(console.error('Report for reportId is not registered. Report id: ',reportId),!1)},privates:{_updateClosable:function(){var view=this.getView(),itemsLength=view.items.length,items=view.items.items;1<itemsLength&&Ext.each(items,function(tab){tab.setClosable(!0)});1===itemsLength&&view.items.items[0].setClosable(!1)}}},0,0,0,0,['controller.main.reports'],0,[MainApp.view.main.reports,'ReportsController'],0);
Ext.cmd.derive('Veeam.base.view.BaseReport',Veeam.base.view.BaseGrid,{alternateClassName:'Veeam.BaseReport',reportId:null,isReport:!0,border:!1,config:{url:null,reportName:null,autoUpdateId:null},updateUrl:function(url){this.getViewModel().set('url',url)},updateReportName:function(val){this.getViewModel().set('reportName',Ext.util.Format.htmlEncode(val))},listeners:{refresh:'onRefresh'}},0,['basereport'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0},['widget.basereport'],0,[Veeam.base.view,'BaseReport',Veeam,'BaseReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.AllServersReportController',MainApp.base.controller.BaseController,{onExport:function(){var sortInfo=this.getView().getSortInfo();(new Veeam.util.ExcelExporter('report.export.allServers',[sortInfo])).start()},linkToSureBackupJobs:function(v,meta,r){meta=r.get('dbInstanceId');return 0!==v&&meta?Ext.String.format('\x3ca href\x3d"#!reports/sure_backup_jobs_per_server/{0}"\x3e{1}\x3c/a\x3e',meta,v):v},linkToJobsPerServerRenederer:function(v,meta,r){return(meta=
r.get('dbInstanceId'))?Ext.String.format('\x3ca href\x3d"#!reports/jobs_per_server/{0}"\x3e{1}\x3c/a\x3e',meta,v):v}},0,0,0,0,['controller.main.reports.allservers'],0,[MainApp.view.main.reports,'AllServersReportController'],0);
Ext.cmd.derive('Veeam.model.BackupServerStatus',Ext.Base,{privates:{_texts:{'-1':'Never processed',0:'Processing',1:'OK',2:'Warning',3:'Error'},_iconCls:{'-1':'',0:'progress',1:'success',2:'warning',3:'error'}},singleton:!0,getLabel:function(enumValue){return this._texts[enumValue]||''},getIconCls:function(enumValue){return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'BackupServerStatus'],function(){this[this.NeverProcessed=-1]='NeverProcessed';this[this.Processing=0]='Processing';this[this.OK=
1]='OK';this[this.Warning=2]='Warning';this[this.Error=3]='Error'});
Ext.cmd.derive('MainApp.view.main.reports.AllServersReportModel',Ext.app.ViewModel,{stores:{allServersStore:{type:'app-store',rpcMethod:'Api.report.allServers',fields:[{name:'id'},{name:'backupServerName'},{name:'backupServerStatus'},{name:'description'},{name:'jobsCount',type:'int'},{name:'sureBackupJobsCount',type:'int'},{name:'serverVersion'},{name:'vmsCount',type:'int'},{name:'vmsTotalSize',type:'int'},{name:'dbInstanceId',allowNull:!0},{name:'statusText',calculate:function(data){return Veeam.model.BackupServerStatus.getLabel(data.backupServerStatus)}},
{name:'statusIconCls',calculate:function(data){return Veeam.model.BackupServerStatus.getIconCls(data.backupServerStatus)}}],sorters:{direction:'ASC',property:'backupServerName'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}},data:{reportName:'All Servers'}},0,0,0,0,['viewmodel.main.reports.allservers'],0,[MainApp.view.main.reports,'AllServersReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.AllServersReport',Veeam.base.view.BaseReport,{controller:'main.reports.allservers',viewModel:{type:'main.reports.allservers'},bind:{title:'{reportName}',store:'{allServersStore}'},columns:{defaults:{sortable:!0,flex:1},items:[{header:'Backup Server',dataIndex:'backupServerName',renderer:'linkToJobsPerServerRenederer'},{header:'Status',dataIndex:'backupServerStatus',xtype:'templatecolumn',tpl:'\x3cspan class\x3d"cell__icon {statusIconCls}"\x3e{statusText}\x3c/span\x3e'},
{header:'Jobs',dataIndex:'jobsCount',align:'right'},{header:'Machines',dataIndex:'vmsCount',align:'right'},{header:'Verification Jobs Count',dataIndex:'sureBackupJobsCount',renderer:'linkToSureBackupJobs',align:'right'},{header:'Source Data Size',dataIndex:'vmsTotalSize',renderer:Common.util.Format.fileSize,align:'right'},{header:'Server Description',dataIndex:'description',xtype:'descriptioncolumn',sortable:!1}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.allservers'],
'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.allservers'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.allservers':!0},['widget.report.allservers'],0,[MainApp.view.main.reports,'AllServersReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.JobsPerServerReportController',MainApp.base.controller.BaseController,{init:function(){},jobTypeRenderer:function(v){return Veeam.model.JobType.getLabel(v)},currentStateRenderer:function(v,meta,record){meta.tdCls=record.get('currentStateIcon');return Veeam.model.JobStatus.getLabel(v)},totalSizeRenderer:function(v){return Common.util.Format.fileSize(v)},onExport:function(){var id=this.getViewModel().get('entityId'),sortInfo=this.getView().getSortInfo();id=
Ext.apply({dbInstanceId:id},sortInfo);(new Veeam.util.ExcelExporter('report.export.jobsPerServer',[id])).start()}},0,0,0,0,['controller.main.reports.jobsperserver'],0,[MainApp.view.main.reports,'JobsPerServerReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.JobsPerServerReportModel',Ext.app.ViewModel,{data:{reportName:'Jobs per server'},stores:{jobsPerServerStore:{type:'app-store',rpcMethod:'Api.report.jobsPerServer',fields:[{name:'id'},{name:'jobName'},{name:'jobStatus',type:'int'},{name:'jobType'},{name:'vmsCount',type:'int'},{name:'totalSize',type:'int'},{name:'currentState',type:'int'},{name:'lastResult',type:'int'},{name:'lastSuccess',allowNull:!0,type:'date',dateFormat:'c'},{name:'description'},{name:'lastSessionIsRetry',
type:'boolean'},{name:'jobLastSessionId',allowNull:!0},{name:'dbInstanceId',type:'string'},{name:'currentStateIcon',calculate:function(data){return Veeam.model.JobStatus.getIconCls(data.currentState)}},{name:'isSureBackup',calculate:function(data){return 3==data.jobType}},{name:'sessionUrl',calculate:function(data){return data.isSureBackup?'sb_sessions_per_job':'sessions_per_job'}},{name:'urlToSession',calculate:function(data){var resText=Veeam.model.JobResult.getLabel(data.lastResult);return data.jobLastSessionId?
Ext.String.format('\x3ca href\x3d"#!reports/{0}/{1}/bs/{2}"\x3e{3}\x3c/a\x3e',data.isSureBackup?'sure_backup_sessions':'sessions',data.jobLastSessionId,data.dbInstanceId,resText):resText}}],extraParams:{DbInstanceId:'{entityId}'},sorters:{direction:'ASC',property:'jobName'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.jobsperserver'],0,[MainApp.view.main.reports,'JobsPerServerReportModel'],0);
Ext.cmd.derive('Veeam.model.JobType',Ext.Base,{privates:{_text:{0:'Backup',1:'Replica',2:'Copy',3:'SureBackup',22:'SanRescan',24:'File to Tape',28:'Backup to Tape',51:'Backup Copy',12002:'Agent Policy',12003:'Agent Backup'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._text[enumValue]||enumValue}},0,0,0,0,0,0,[Veeam.model,'JobType'],function(){this[this.Backup=0]='Backup';this[this.Replica=1]='Replica';this[this.Copy=2]='Copy';this[this.DRV=
3]='DRV';this[this.SanRescan=22]='SanRescan';this[this.FileTapeBackup=24]='FileTapeBackup';this[this.VmTapeBackup=28]='VmTapeBackup';this[this.BackupSync=51]='BackupSync';this[this.EpAgentPolicy=12002]='EpAgentPolicy';this[this.EpAgentBackup=12003]='EpAgentBackup'});
Ext.cmd.derive('Veeam.model.JobResult',Ext.Base,{privates:{_iconCls:{'-1':'process',0:'success',1:'warning',2:'error',9:''},_text:{'-1':'Running/Never started',0:'Success',1:'Warning',2:'Error',9:'Idle'}},singleton:!0,getIconCls:function(enumValue){return this._iconCls[enumValue]||''},getLabel:function(enumValue){return this._text[enumValue]||''},getList:function(){return this._text}},0,0,0,0,0,0,[Veeam.model,'JobResult'],function(){this[this.Running='-1']='Running';this[this.Success=0]='Success';
this[this.Warning=1]='Warning';this[this.Error=2]='Error';this[this.Idle=9]='Idle'});
Ext.cmd.derive('Veeam.model.JobStatus',Ext.Base,{privates:{_iconCls:{'-1':'never_started',0:'success',1:'warning',2:'failed',3:'starting',4:'stopping',5:'working',8:'waiting_tape',9:'idle'},_text:{'-1':'Never started',0:'Success',1:'Warning',2:'Failed',3:'Starting',4:'Stopping',5:'Working',8:'Waiting Tape',9:'Idle'}},singleton:!0,getIconCls:function(enumValue){return this._iconCls[enumValue]||''},getLabel:function(enumValue){return this._text[enumValue]||''},getList:function(){return this._text},
getCount:function(){return Ext.Object.getKeys(this._text).length}},0,0,0,0,0,0,[Veeam.model,'JobStatus'],function(){this[this.NeverStarted='-1']='NeverStarted';this[this.Success=0]='Success';this[this.Warning=1]='Warning';this[this.Error=2]='Error';this[this.Starting=3]='Starting';this[this.Stopping=4]='Stopping';this[this.Working=5]='Working';this[this.WaitingTape=8]='WaitingTape';this[this.Idle=9]='Idle'});
Ext.cmd.derive('MainApp.view.main.reports.JobsPerServerReport',Veeam.base.view.BaseReport,{controller:'main.reports.jobsperserver',viewModel:{type:'main.reports.jobsperserver'},config:{entityId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},bind:{title:'{reportName}',store:'{jobsPerServerStore}'},columns:{defaults:{sortable:!0},items:[{header:'Job',dataIndex:'jobName',xtype:'templatecolumn',tpl:'\x3ca href\x3d"#!reports/{sessionUrl}/{id}/bs/{dbInstanceId}"\x3e{jobName:htmlEncode}\x3c/a\x3e',
flex:2},{header:'Type',dataIndex:'jobType',renderer:'jobTypeRenderer',flex:1},{header:'Machines',dataIndex:'vmsCount',flex:1,align:'right'},{header:'Total Size',dataIndex:'totalSize',renderer:'totalSizeRenderer',flex:1,align:'right'},{header:'Current State',dataIndex:'currentState',renderer:'currentStateRenderer',tdCls:'status-column',flex:1},{header:'Last Result',dataIndex:'lastResult',xtype:'templatecolumn',tpl:'{urlToSession}',flex:1},{header:'Last Success',dataIndex:'lastSuccess',xtype:'nullabledatecolumn',
sortable:!1,flex:1},{header:'Job Description',dataIndex:'description',xtype:'descriptioncolumn',sortable:!1,flex:2}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.jobsperserver'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.jobsperserver'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.jobsperserver':!0},['widget.report.jobsperserver'],
[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'JobsPerServerReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.SessionsPerJobReportController',MainApp.base.controller.BaseController,{onExport:function(){var id=this.getViewModel().get('entityId'),dbInstanceId=this.getViewModel().get('dbInstanceId'),sortInfo=this.getView().getSortInfo();id=Ext.apply({dbInstanceId:dbInstanceId,jobId:id},sortInfo);(new Veeam.util.ExcelExporter('report.export.sessionsPerJob',[id])).start()},statusColumnRenderer:function(v,meta,record){meta.tdCls=record.get('statusIcon');return record.get('urlToSession')},
dataSizeRenderer:function(v){return Common.util.Format.fileSize(v)},performanceRateRenderer:function(v){return Common.util.Format.speedRate(v)}},0,0,0,0,['controller.main.reports.sessionsperjob'],0,[MainApp.view.main.reports,'SessionsPerJobReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.SessionsPerJobReportModel',Ext.app.ViewModel,{data:{reportName:'Job sessions'},stores:{jobSessionsStore:{type:'app-store',rpcMethod:'Api.report.sessionsPerJob',fields:[{name:'id'},{name:'status'},{name:'startTime',type:'date',format:'c'},{name:'endTime',type:'date',format:'c',allowNull:!0},{name:'performanceRate',type:'int'},{name:'dataTransferred',type:'int'},{name:'dbInstanceId'},{name:'urlToSession',calculate:function(data){var resText=Veeam.model.JobStatus.getLabel(data.status);
return Ext.String.format('\x3ca href\x3d"#!reports/sessions/{0}/bs/{1}"\x3e{2}\x3c/a\x3e',data.id,data.dbInstanceId,resText)}},{name:'statusIcon',calculate:function(data){return Veeam.model.JobStatus.getIconCls(data.status)}}],extraParams:{dbInstanceId:'{dbInstanceId}',jobId:'{entityId}'},sorters:{direction:'DESC',property:'endTime'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.sessionsperjob'],0,[MainApp.view.main.reports,'SessionsPerJobReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.SessionsPerJobReport',Veeam.base.view.BaseReport,{controller:'main.reports.sessionsperjob',viewModel:{type:'main.reports.sessionsperjob'},config:{entityId:null,dbInstanceId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},updateDbInstanceId:function(val){this.getViewModel().set('dbInstanceId',val)},bind:{title:'{reportName}',store:'{jobSessionsStore}'},columns:{defaults:{sortable:!0},items:[{header:'Start Time',dataIndex:'startTime',
xtype:'datecolumn',flex:1},{header:'End Time',dataIndex:'endTime',xtype:'nullabledatecolumn',flex:1},{header:'Status',dataIndex:'status',tdCls:'status-column',renderer:'statusColumnRenderer',flex:1},{header:'Performance Rate',dataIndex:'performanceRate',renderer:'performanceRateRenderer',flex:1,align:'right'},{header:'Data Transferred',dataIndex:'dataTransferred',renderer:'dataSizeRenderer',flex:1,align:'right'}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.sessionsperjob'],
'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.sessionsperjob'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.sessionsperjob':!0},['widget.report.sessionsperjob'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'SessionsPerJobReport'],0);
Ext.cmd.derive('Veeam.model.JobSessionStatus',Ext.Base,{privates:{_texts:{0:'Success',2:'Failed',3:'Warning',5:'In progress',6:'Pending'},_iconCls:{5:'progress',0:'success',3:'warning',2:'error'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''},getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'JobSessionStatus'],function(){this[this.Success=
0]='Success';this[this.Failed=2]='Failed';this[this.Warning=3]='Warning';this[this.InProgress=5]='InProgress';this[this.Pending=6]='Pending'});
Ext.cmd.derive('MainApp.view.main.reports.SessionDetailsReportModel',Ext.app.ViewModel,{stores:{sessionTasksStore:{type:'app-store',rpcMethod:'Api.report.sessionDetails',fields:[{name:'id'},{name:'vmId',allowNull:!0},{name:'vmName'},{name:'status',type:'int'},{name:'startTime',type:'date',format:'c'},{name:'endTime',type:'date',format:'c',allowNull:!0},{name:'processedSize',type:'int'},{name:'processingRate',type:'int'},{name:'dbInstanceId'},{name:'statusIcon',calculate:function(data){return Veeam.model.JobSessionStatus.getIconCls(data.status)}}],
extraParams:{jobSessionId:'{entityId}',dbInstanceId:'{dbInstanceId}'},sorters:{direction:'ASC',property:'vmName'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}},data:{currentRecord:null}},0,0,0,0,['viewmodel.main.reports.sessiondetails'],0,[MainApp.view.main.reports,'SessionDetailsReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.SessionDetailsReportController',MainApp.base.controller.BaseController,{onExport:function(){var vm=this.getViewModel(),id=vm.get('entityId');vm=vm.get('dbInstanceId');var sortInfo=this.getView().getSortInfo();id=Ext.apply({dbInstanceId:vm,jobSessionId:id},sortInfo);(new Veeam.util.ExcelExporter('report.export.sessionDetails',[id])).start()},dataSizeRenderer:function(v){return Common.util.Format.fileSize(v)},performanceRateRenderer:function(v){return Common.util.Format.speedRate(v)},
renderUrlToSession:function(name,cell,record){name=Ext.util.Format.htmlEncode(name);return record.get('vmId')?Ext.String.format('\x3ca href\x3d"#!reports/vm_sessions/{0}/bs/{1}"\x3e{2}\x3c/a\x3e',record.get('vmId'),record.get('dbInstanceId'),name):name},statusRenderer:function(status,meta,record){meta.tdCls=record.get('statusIcon');return Veeam.model.JobSessionStatus.getLabel(status)}},0,0,0,0,['controller.main.reports.sessiondetails'],0,[MainApp.view.main.reports,'SessionDetailsReportController'],
0);
Ext.cmd.derive('Veeam.service.ReportService',Ext.Base,{singleton:!0,getJobsPerServerReportMetadata:function(id){return Common.Request.thenable(RPC.Api['report.meta.jobsPerServer'],id).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getSureBackupJobsPerServerReportMetadata:function(id){return Common.Request.thenable(RPC.Api['report.meta.sureBackupJobsPerServer'],id).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getSessionsPerJobReportMetadata:function(id){return Common.Request.thenable(RPC.Api['report.meta.sessionsPerJob'],
id).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getSureBackupSessionsPerJobReportMetadata:function(id){return Common.Request.thenable(RPC.Api['report.meta.sureBackupSessionsPerJob'],id).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getSessionDetailsReportMetadata:function(id){return Common.Request.thenable(RPC.Api['report.meta.sessionDetails'],
id).then(function(response){var date=response.message.sessionStartTimeUtc;response='Session';date&&(date=Ext.Date.parse(date,'c'),Ext.isDate(date)&&(response+=' '+Ext.Date.format(date,Ext.Date.defaultFormat)));return Ext.Deferred.resolved({reportName:response})}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getSureBackupSessionDetailsReportMetadata:function(id){return Common.Request.thenable(RPC.Api['report.meta.sureBackupSessionDetails'],id).then(function(response){var date=response.message.sessionStartTimeUtc;
response='Session';date&&(date=Ext.Date.parse(date,'c'),Ext.isDate(date)&&(response+=' '+Ext.Date.format(date,Ext.Date.defaultFormat)));return Ext.Deferred.resolved({reportName:response})}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getSessionDetailsReportHeader:function(id,dbInstanceId){return Common.Request.thenable(RPC.Api['report.header.sessionDetails'],id,dbInstanceId).then(function(response){return Ext.Deferred.resolved({data:response.message,autoUpdateId:response.autoUpdateId})}).otherwise(function(error){return Ext.Deferred.rejected(error)})},
getSureBackupSessionDetailsReportHeader:function(id,dbInstanceId){return Common.Request.thenable(RPC.Api['report.header.sureBackupSessionDetails'],id,dbInstanceId).then(function(response){return Ext.Deferred.resolved({data:response.message,autoUpdateId:response.autoUpdateId})}).otherwise(function(error){return Ext.Deferred.rejected(error)})},getLastJobSessionsReportMetadata:function(status,period){var reportName='Total job runs',statusCode=null;'undefined'!==typeof status&&('success'===status&&(statusCode=
0,reportName='Success'),'warning'===status&&(statusCode=1,reportName='Warning'),'error'===status&&(statusCode=2,reportName='Error'));return Ext.Deferred.resolved({reportName:reportName,status:statusCode,period:'lastweek'===period?168:24})},getVmSessionsReportMetadata:function(id,dbInstanceId){return Common.Request.thenable(RPC.Api['report.meta.vmSessions'],id,dbInstanceId).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})},
getVmsReportMetadata:function(){return Common.Request.thenable(RPC.Api['report.meta.vms']).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})}},0,0,0,0,0,0,[Veeam.service,'ReportService'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SessionDetailsHeaderController',MainApp.base.controller.BaseMainController,{afterRender:function(){this.loadReportHeader()},onExportClick:function(){this.fireViewEvent('exporttoexcel')},onRefreshClick:function(){this.fireViewEvent('refreshgrid')},loadReportHeader:function(){var id=this.getView().getSessionId(),dbInstanceId=this.getView().getDbInstanceId();Veeam.service.ReportService.getSessionDetailsReportHeader(id,dbInstanceId).then(this.onDataLoaded.bind(this)).otherwise(Common.ui.Msg.error)},
onDataLoaded:function(response){this.getViewModel().set('header',response.data);this.getView().setAutoUpdateId(response.autoUpdateId)},onDetailsClick:function(){var view=this.getView(),sessionId=view.getSessionId();view=view.getDbInstanceId();var win=Ext.create('Veeam.base.view.BaseWindow',{layout:'fit',title:'Job log',modal:!0,width:700,height:575,items:[{xclass:'MainApp.view.main.reports.JobLogReport',entityId:sessionId,dbInstanceId:view}],buttons:[{text:'Close',ui:'primary',handler:function(){win.close()}}]});
this.dialog=this.getView().add(win.show())}},0,0,0,0,['controller.main.reports.sessiondetailsheader'],0,[MainApp.view.main.reports.widget,'SessionDetailsHeaderController'],0);
Ext.cmd.derive('Veeam.model.SessionResult',Ext.Base,{privates:{_texts:{'-1':'None',0:'Success',1:'Warning',2:'Failed'},_iconCls:{0:'success',1:'warning',2:'error'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''},getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'SessionResult'],function(){this[this.None='-1']='None';this[this.Success=
0]='Success';this[this.Warning=1]='Warning';this[this.Failed=2]='Failed'});
Ext.cmd.derive('MainApp.view.main.reports.widget.SessionDetailsHeaderModel',Ext.app.ViewModel,{data:{header:{jobName:'[Job name placeholder]',error:null,processedCount:0,totalCount:0,processingVms:!0,errorCount:0,warningCount:0,totalSize:0,performanceRate:0,runTime:'',processedSize:0,result:null}},formulas:{processedSizeString:{bind:'{header}',deep:!0,get:function(d){return Common.util.Format.fileSize(d.processedSize)}},totalSizeString:{bind:'{header}',deep:!0,get:function(d){return Common.util.Format.fileSize(d.totalSize)}},
performanceRateString:{bind:'{header}',deep:!0,get:function(d){return Common.util.Format.fileSize(d.performanceRate)}},objectsType:{bind:'{header}',deep:!0,get:function(d){return d.processingVms?'Machines':'objects'}},hasError:{bind:'{header}',deep:!0,get:function(d){return d.error&&0<d.error.length}},messageData:{bind:'{header}',deep:!0,get:function(d){d=Ext.clone(d);return Ext.apply(d,{objectsType:this.get('objectsType')})}},statusIcon:{bind:'{header.result}',deep:!0,get:function(result){return Veeam.model.SessionResult.getIconCls(result)}}}},
0,0,0,0,['viewmodel.main.reports.sessiondetailsheader'],0,[MainApp.view.main.reports.widget,'SessionDetailsHeaderModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.JobLogReportController',MainApp.base.controller.BaseController,{severityRenderer:function(value){return Ext.String.format('\x3cspan class\x3d"cell__icon {0}"\x3e{1}\x3c/span\x3e',Veeam.model.MessageSeverity.getIconCls(value),Veeam.model.MessageSeverity.getLabel(value))},onExport:function(){var id=this.getViewModel().get('entityId'),dbInstanceId=this.getViewModel().get('dbInstanceId');(new Veeam.util.ExcelExporter('report.exportBackupJobSessionLog',[{sessionId:id,
dbInstanceId:dbInstanceId}])).start()}},0,0,0,0,['controller.main.reports.joblog'],0,[MainApp.view.main.reports,'JobLogReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.JobLogReportModel',Ext.app.ViewModel,{stores:{jobLogStore:{type:'app-store',rpcMethod:'Api.report.getBackupJobSessionLog',model:'Veeam.model.report.LogRecord',extraParams:{sessionId:'{entityId}',dbInstanceId:'{dbInstanceId}'},autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.joblog'],0,[MainApp.view.main.reports,'JobLogReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.JobLogReport',Veeam.base.view.BaseReport,{controller:'main.reports.joblog',viewModel:{type:'main.reports.joblog'},config:{entityId:null,dbInstanceId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},updateDbInstanceId:function(val){this.getViewModel().set('dbInstanceId',val)},bind:{title:'{reportName}',store:'{jobLogStore}'},initBbar:function(){return null},columns:{defaults:{sortable:!1},items:[{header:'Time',xtype:'datecolumn',
dataIndex:'eventTime',flex:1},{header:'Status',dataIndex:'severity',renderer:'severityRenderer',flex:1},{header:'Information',dataIndex:'message',xtype:'descriptioncolumn',flex:2}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0},0,[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||
Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'JobLogReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SessionDetailsHeader',Ext.Container,{config:{sessionId:null,dbInstanceId:null},controller:'main.reports.sessiondetailsheader',viewModel:{type:'main.reports.sessiondetailsheader'},layout:'hbox',cls:'session-details-header',listeners:{refresh:'loadReportHeader',updatedata:'loadReportHeader'},isReport:!0,items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,items:[{xtype:'toolbar',cls:'no-lr-padding-toolbar',items:[{xtype:'tbtext',autoEl:'h2',
bind:'{header.jobName:htmlEncode}',padding:0},{xtype:'button',ui:'text',text:'Details',margin:'0 0 0 8',bind:{iconCls:'{statusIcon}'},handler:'onDetailsClick'}]},{xtype:'component',margin:'0 0 10 0',tpl:'Machines processed: {processedCount} of {totalCount}',bind:{data:'{messageData}',hidden:'{hasError}'}},{xtype:'alert',bind:{html:'{header.error}',hidden:'{!hasError}'}},{xtype:'container',layout:{type:'hbox',align:'stretch'},margin:'-5 0 8 0',defaultType:'container',items:[{defaultType:'displayfield',
layout:{type:'vbox',align:'stretch'},margin:'0 0 0 0',padding:'0 0 10 0',defaults:{labelWidth:75,margin:0,padding:0,minHeight:24,height:24},items:[{fieldLabel:'Errors',bind:'{header.errorCount}'},{fieldLabel:'Warnings',bind:'{header.warningCount}'}]},{defaultType:'displayfield',cls:'sessions-header-right-block',layout:{type:'vbox',align:'stretch'},margin:'0 24 0 24',padding:'0 0 10 24',defaults:{labelWidth:110,margin:0,padding:0,minHeight:24,height:24},items:[{fieldLabel:'Total size',bind:'{totalSizeString}'},
{fieldLabel:'Processing rate',bind:'{performanceRateString}'}]},{defaultType:'displayfield',cls:'sessions-header-right-block',layout:{type:'vbox',align:'stretch'},padding:'0 0 10 24',defaults:{labelWidth:106,margin:0,padding:0,minHeight:24,height:24},items:[{fieldLabel:'Processed size',bind:'{processedSizeString}'},{fieldLabel:'Total time',bind:'{header.runTime}'}]}]}]},{xtype:'toolbar',cls:'button-section',items:[{xtype:'button',ui:'text',cls:'before-separator',text:'Export',iconCls:'export',handler:'onExportClick'},
{xtype:'tbseparator',style:{marginLeft:'8px'}},{xtype:'button',ui:'text',text:'Refresh',iconCls:'refresh',handler:'onRefreshClick'}]}]},0,['main.reports.sessiondetailsheader','widget.main.reports.sessiondetailsheader'],['component','box','container','main.reports.sessiondetailsheader','widget.main.reports.sessiondetailsheader'],{component:!0,box:!0,container:!0,'main.reports.sessiondetailsheader':!0,'widget.main.reports.sessiondetailsheader':!0},['widget.main.reports.sessiondetailsheader','widget.widget.main.reports.sessiondetailsheader'],
[[Veeam.mixin.PanelAutoUpdate.prototype.mixinId||Veeam.mixin.PanelAutoUpdate.$className,Veeam.mixin.PanelAutoUpdate]],[MainApp.view.main.reports.widget,'SessionDetailsHeader'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SessionDetailsFooterModel',Ext.app.ViewModel,{data:{isSureBackup:!1,sessionId:null,dbInstanceId:null},stores:{backupSessionRecordStore:{type:'app-store',rpcMethod:'Api.report.backupTaskSessionLog',model:'Veeam.model.report.LogRecord',extraParams:{taskSessionId:'{sessionId}',dbInstanceId:'{dbInstanceId}'},autoLoad:!1},sureBackupSessionRecordStore:{type:'app-store',rpcMethod:'Api.report.sureBackupTaskSessionLog',model:'Veeam.model.report.LogRecord',extraParams:{taskSessionId:'{sessionId}',
dbInstanceId:'{dbInstanceId}'},autoLoad:!1},emptyStore:{proxy:'memory'}},formulas:{currentStore:{bind:{session:'{sessionId}',sbStore:'{sureBackupSessionRecordStore}',store:'{backupSessionRecordStore}'},get:function(x){if(null==x.session)return this.getStore('emptyStore');x=this.get('isSureBackup')?x.sbStore:x.store;x.load();return x}}}},0,0,0,0,['viewmodel.main.reports.sessiondetailsfooter'],0,[MainApp.view.main.reports.widget,'SessionDetailsFooterModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SessionDetailsFooterController',Ext.app.ViewController,{onRefresh:function(){var store=this.getStore();store&&!store.isEmptyStore&&store.reload()},onReset:function(){var store=this.getStore();store&&!store.isEmptyStore&&store.removeAll()}},0,0,0,0,['controller.main.reports.sessiondetailsfooter'],0,[MainApp.view.main.reports.widget,'SessionDetailsFooterController'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SessionDetailsFooter',Ext.view.View,{controller:'main.reports.sessiondetailsfooter',viewModel:{type:'main.reports.sessiondetailsfooter'},config:{sessionId:null,isSureBackup:!1,dbInstanceId:null,autoUpdateId:null},cls:'details-footer',isReport:!0,listeners:{refresh:'onRefresh'},updateSessionId:function(id){this.getViewModel().set('sessionId',id)},updateIsSureBackup:function(flag){this.getViewModel().set('isSureBackup',flag)},updateDbInstanceId:function(id){this.getViewModel().set('dbInstanceId',
id)},layout:'fit',border:!1,loadMask:!1,tpl:'\x3cdiv class\x3d"session-details-footer"\x3e;\x3ctpl for\x3d"."\x3e;\x3cdiv class\x3d"log-record" data-tip\x3d"event time: {eventTime:date}"\x3e;\x3cdiv class\x3d"icon {icon}"\x3e{message}\x3c/div\x3e;\x3c/div\x3e;\x3c/tpl\x3e;\x3c/div\x3e'.split(';'),itemSelector:'.log-record',emptyText:'\x3cdiv class\x3d"session-details-footer"\x3eSelect machine to view details\x3c/div\x3e',bind:{store:'{currentStore}'}},0,['main.reports.sessiondetailsfooter','widget.main.reports.sessiondetailsfooter'],
['component','box','dataview','main.reports.sessiondetailsfooter','widget.main.reports.sessiondetailsfooter'],{component:!0,box:!0,dataview:!0,'main.reports.sessiondetailsfooter':!0,'widget.main.reports.sessiondetailsfooter':!0},['widget.main.reports.sessiondetailsfooter','widget.widget.main.reports.sessiondetailsfooter'],[['autoupdate',Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports.widget,'SessionDetailsFooter'],0);
Ext.cmd.derive('MainApp.view.main.reports.SessionDetailsReport',Veeam.base.view.BaseReport,{controller:'main.reports.sessiondetails',viewModel:{type:'main.reports.sessiondetails'},bind:{title:'{reportName}',store:'{sessionTasksStore}',selection:'{currentRecord}'},config:{entityId:null,dbInstanceId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},updateDbInstanceId:function(val){this.getViewModel().set('dbInstanceId',val)},initToolbar:function(){var me=this;return{xtype:'container',
items:[{xtype:'main.reports.sessiondetailsheader',sessionId:me.getEntityId(),dbInstanceId:me.getDbInstanceId(),listeners:{exporttoexcel:function(){me.fireEvent('exporttoexcel')},refreshgrid:function(){me.getStore().reload()}}}]}},bbar:{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'pagingtoolbar',displayInfo:!0,bind:{store:'{sessionTasksStore}'}},{xtype:'main.reports.sessiondetailsfooter',reference:'footer',height:250,flex:1,scrollable:'y',isSureBackup:!1,bind:{sessionId:'{currentRecord.id}',
dbInstanceId:'{currentRecord.dbInstanceId}'}}]},columns:{defaults:{sortable:!0},items:[{header:'Object',dataIndex:'vmName',renderer:'renderUrlToSession',flex:1},{header:'Start Time',dataIndex:'startTime',xtype:'datecolumn',flex:1},{header:'End Time',dataIndex:'endTime',xtype:'nullabledatecolumn',flex:1},{header:'Status',dataIndex:'status',tdCls:'status-column',renderer:'statusRenderer',flex:1},{header:'Performance Rate',dataIndex:'processingRate',renderer:'performanceRateRenderer',flex:1,align:'right'},
{header:'Data Transferred',dataIndex:'processedSize',renderer:'dataSizeRenderer',flex:1,align:'right'}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.sessiondetails'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.sessiondetails'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.sessiondetails':!0},['widget.report.sessiondetails'],
[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'SessionDetailsReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupJobsPerServerReportController',MainApp.base.controller.BaseController,{init:function(){},jobTypeRenderer:function(v){return Veeam.model.JobType.getLabel(v)},currentStateRenderer:function(v,meta,record){meta.tdCls=record.get('currentStateIcon');return Veeam.model.JobStatus.getLabel(v)},totalSizeRenderer:function(v){return Common.util.Format.fileSize(v)},onExport:function(){var id=this.getViewModel().get('entityId'),sortInfo=this.getView().getSortInfo();
id=Ext.apply({dbInstanceId:id},sortInfo);(new Veeam.util.ExcelExporter('report.export.sureBackupJobsPerServer',[id])).start()}},0,0,0,0,['controller.main.reports.surebackupjobsperserver'],0,[MainApp.view.main.reports,'SureBackupJobsPerServerReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupJobsPerServerReportModel',Ext.app.ViewModel,{data:{reportName:'SureBackup jobs per server'},stores:{sureBackupJobsPerServerStore:{type:'app-store',rpcMethod:'Api.report.sureBackupJobsPerServer',fields:[{name:'id'},{name:'jobName'},{name:'esxHostName'},{name:'currentState'},{name:'virtualLabName'},{name:'lastResult',type:'int'},{name:'lastSuccess',allowNull:!0,type:'date',dateFormat:'c'},{name:'description'},{name:'lastSessionIsRetry',type:'boolean'},
{name:'jobLastSessionId',allowNull:!0},{name:'dbInstanceId'},{name:'currentStateIcon',calculate:function(data){return Veeam.model.JobStatus.getIconCls(data.currentState)}},{name:'urlToSession',calculate:function(data){var resText=Veeam.model.JobResult.getLabel(data.lastResult);return data.jobLastSessionId?Ext.String.format('\x3ca href\x3d"#!reports/{0}/{1}/bs/{2}"\x3e{3}\x3c/a\x3e','sure_backup_sessions',data.jobLastSessionId,data.dbInstanceId,resText):resText}}],extraParams:{dbInstanceId:'{entityId}'},
sorters:{direction:'ASC',property:'jobName'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.surebackupjobsperserver'],0,[MainApp.view.main.reports,'SureBackupJobsPerServerReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupJobsPerServerReport',Veeam.base.view.BaseReport,{controller:'main.reports.surebackupjobsperserver',viewModel:{type:'main.reports.surebackupjobsperserver'},config:{entityId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},bind:{title:'{reportName}',store:'{sureBackupJobsPerServerStore}'},columns:{defaults:{sortable:!0},items:[{header:'Job Name',dataIndex:'jobName',xtype:'templatecolumn',tpl:'\x3ca href\x3d"#!reports/sure_backup_sessions_per_job/{id}/bs/{dbInstanceId}"\x3e{jobName:htmlEncode}\x3c/a\x3e',
flex:2},{header:'ESX Host',dataIndex:'esxHostName',flex:1},{header:'VLab Name',dataIndex:'virtualLabName',flex:1},{header:'Current State',dataIndex:'currentState',renderer:'currentStateRenderer',tdCls:'status-column',flex:1},{header:'Last Result',dataIndex:'lastResult',xtype:'templatecolumn',tpl:'{urlToSession}',flex:1},{header:'Last Success',dataIndex:'lastSuccess',xtype:'nullabledatecolumn',sortable:!1,flex:1},{header:'Job Description',dataIndex:'description',xtype:'descriptioncolumn',sortable:!1,
flex:2}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.surebackupjobsperserver'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.surebackupjobsperserver'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.surebackupjobsperserver':!0},['widget.report.surebackupjobsperserver'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,
Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'SureBackupJobsPerServerReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupSessionsPerJobReportController',MainApp.base.controller.BaseController,{onExport:function(){var id=this.getViewModel().get('entityId'),dbInstanceId=this.getViewModel().get('dbInstanceId'),sortInfo=this.getView().getSortInfo();id=Ext.apply({dbInstanceId:dbInstanceId,jobId:id},sortInfo);(new Veeam.util.ExcelExporter('report.export.sureBackupSessionsPerJob',[id])).start()},statusRenderer:function(value,meta,record){meta.tdCls=record.get('statusIcon');
return Veeam.model.JobSessionStatus.getLabel(value)}},0,0,0,0,['controller.main.reports.surebackupsessionsperjob'],0,[MainApp.view.main.reports,'SureBackupSessionsPerJobReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupSessionsPerJobReportModel',Ext.app.ViewModel,{data:{reportName:'SureBackup job sessions'},stores:{jobSessionsStore:{type:'app-store',rpcMethod:'Api.report.sureBackupSessionsPerJob',fields:[{name:'id'},{name:'status'},{name:'startTime',type:'date',format:'c'},{name:'endTime',type:'date',format:'c',allowNull:!0},{name:'statusIcon',calculate:function(data){return Veeam.model.JobSessionStatus.getIconCls(data.status)}}],extraParams:{jobId:'{entityId}',
dbInstanceId:'{dbInstanceId}'},sorters:{direction:'DESC',property:'endTime'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.surebackupsessionsperjob'],0,[MainApp.view.main.reports,'SureBackupSessionsPerJobReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupSessionsPerJobReport',Veeam.base.view.BaseReport,{controller:'main.reports.surebackupsessionsperjob',viewModel:{type:'main.reports.surebackupsessionsperjob'},config:{entityId:null,dbInstanceId:null},updateDbInstanceId:function(val){this.getViewModel().set('dbInstanceId',val)},updateEntityId:function(val){this.getViewModel().set('entityId',val)},bind:{title:'{reportName}',store:'{jobSessionsStore}'},columns:{defaults:{sortable:!0},items:[{header:'Start Time',
dataIndex:'startTime',xtype:'datecolumn',flex:1},{header:'End Time',dataIndex:'endTime',xtype:'nullabledatecolumn',flex:1},{header:'Status',dataIndex:'status',tdCls:'status-column',renderer:'statusRenderer',flex:1}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.surebackupsessionsperjob'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.surebackupsessionsperjob'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,
gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.surebackupsessionsperjob':!0},['widget.report.surebackupsessionsperjob'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'SureBackupSessionsPerJobReport'],0);
Ext.cmd.derive('Veeam.model.SureBackupJobSessionStatus',Ext.Base,{privates:{_texts:{0:'Skipped',1:'Success',2:'Failed',3:'Warning'},_iconCls:{0:'never_started',1:'success',3:'warning',2:'error'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''},getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'SureBackupJobSessionStatus'],
function(){this[this.NotRunned=0]='NotRunned';this[this.Success=1]='Success';this[this.Failed=2]='Failed';this[this.Warning=3]='Warning'});
Ext.cmd.derive('Veeam.model.SureBackupOperationStatus',Ext.Base,{privates:{_texts:{0:'Pending',2:'In progress',3:'Success',4:'Failed',5:'Warning',6:'Skipped',7:'Disabled'}},singleton:!0,getLabel:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''},getIconCls:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._iconCls[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'SureBackupOperationStatus'],function(){this[this.Pending=
0]='Pending';this[this.InProgress=2]='InProgress';this[this.Success=3]='Success';this[this.Failed=4]='Failed';this[this.Warning=5]='Warning';this[this.NotRunned=6]='NotRunned';this[this.Disabled=7]='Disabled'});
Ext.cmd.derive('MainApp.view.main.reports.SureBackupSessionDetailsReportModel',Ext.app.ViewModel,{stores:{sessionTasksStore:{type:'app-store',rpcMethod:'Api.report.sureBackupSessionDetails',fields:[{name:'id'},{name:'vmId',allowNull:!0},{name:'vmName'},{name:'status',type:'int'},{name:'startTime',type:'date',format:'c'},{name:'endTime',type:'date',format:'c',allowNull:!0},{name:'testStatus',type:'int'},{name:'heartbeatStatus',type:'int'},{name:'pingStatus',type:'int'},{name:'dbInstanceId'},{name:'statusIcon',
calculate:function(data){return Veeam.model.SureBackupJobSessionStatus.getIconCls(data.status)}}],extraParams:{jobSessionId:'{entityId}',dbInstanceId:'{dbInstanceId}'},sorters:{direction:'ASC',property:'vmName'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}},data:{currentRecord:null}},0,0,0,0,['viewmodel.main.reports.surebackupsessiondetails'],0,[MainApp.view.main.reports,'SureBackupSessionDetailsReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupSessionDetailsReportController',MainApp.base.controller.BaseController,{onExport:function(){var vm=this.getViewModel(),id=vm.get('entityId');vm=vm.get('dbInstanceId');var sortInfo=this.getView().getSortInfo();id=Ext.apply({dbInstanceId:vm,jobSessionId:id},sortInfo);exporter=new Veeam.util.ExcelExporter('report.export.sureBackupSessionDetails',[id]);exporter.start()},onSelectionChange:function(){var footer=this.getView().lookupReference('footer');
footer&&footer.fireEvent('reset')},renderUrlToSession:function(name,cell,record){name=Ext.util.Format.htmlEncode(name);return record.get('vmId')?Ext.String.format('\x3ca href\x3d"#!reports/vm_sessions/{0}/bs/{2}"\x3e{1}\x3c/a\x3e',record.get('vmId'),name,record.get('dbInstanceId')):name},statusRenderer:function(status,meta,record){meta.tdCls=record.get('statusIcon');return Veeam.model.SureBackupJobSessionStatus.getLabel(status)},operationStatusRenderer:function(operation){return Veeam.model.SureBackupOperationStatus.getLabel(operation)}},
0,0,0,0,['controller.main.reports.surebackupsessiondetails'],0,[MainApp.view.main.reports,'SureBackupSessionDetailsReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SureBackupSessionDetailsHeaderController',MainApp.view.main.reports.widget.SessionDetailsHeaderController,{loadReportHeader:function(){var id=this.getView().getSessionId(),dbInstanceId=this.getView().getDbInstanceId();Veeam.service.ReportService.getSureBackupSessionDetailsReportHeader(id,dbInstanceId).then(this.onDataLoaded.bind(this)).otherwise(Common.ui.Msg.error)},onExportClick:function(){this.fireViewEvent('exporttoexcel')}},0,0,0,0,['controller.main.reports.surebackupsessiondetailsheader'],
0,[MainApp.view.main.reports.widget,'SureBackupSessionDetailsHeaderController'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SureBackupSessionDetailsHeaderModel',Ext.app.ViewModel,{data:{header:{jobName:'[Job name placeholder]',defaultText:null,startTime:null,endTime:null,runTime:'',result:null}},formulas:{hasError:{bind:'{header}',deep:!0,get:function(d){return d.defaultText&&0<d.defaultText.length}},statusIcon:{bind:'{header.result}',deep:!0,get:function(result){return Veeam.model.SessionResult.getIconCls(result)}}}},0,0,0,0,['viewmodel.main.reports.surebackupsessiondetailsheader'],
0,[MainApp.view.main.reports.widget,'SureBackupSessionDetailsHeaderModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.widget.SureBackupSessionDetailsHeader',Ext.Container,{config:{sessionId:null,dbInstanceId:null,autoUpdateId:null},isReport:!0,controller:'main.reports.surebackupsessiondetailsheader',viewModel:{type:'main.reports.surebackupsessiondetailsheader'},layout:'hbox',cls:'session-details-header',items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,items:[{xtype:'box',autoEl:'h2',bind:'{header.jobName}'},{xtype:'alert',bind:{html:'{header.error}',
hidden:'{!hasError}'}},{xtype:'container',layout:{type:'vbox',align:'stretch'},defaultType:'displayfield',margin:'0 0 8 0',defaults:{labelWidth:88,margin:0,padding:0,minHeight:24,height:24},items:[{fieldLabel:'Start time',bind:'{header.startTime:date}'},{fieldLabel:'End time',bind:'{header.endTime:date}'},{fieldLabel:'Total time',bind:'{header.runTime}'}]}]},{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'button',ui:'text',text:'Details',bind:{iconCls:'{statusIcon}'},handler:'onDetailsClick'},
{xtype:'button',ui:'text',text:'Export',iconCls:'export',margin:'52 0 0 0',handler:'onExportClick'}]}]},0,['main.reports.surebackupsessiondetailsheader','widget.main.reports.surebackupsessiondetailsheader'],['component','box','container','main.reports.surebackupsessiondetailsheader','widget.main.reports.surebackupsessiondetailsheader'],{component:!0,box:!0,container:!0,'main.reports.surebackupsessiondetailsheader':!0,'widget.main.reports.surebackupsessiondetailsheader':!0},['widget.main.reports.surebackupsessiondetailsheader',
'widget.widget.main.reports.surebackupsessiondetailsheader'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports.widget,'SureBackupSessionDetailsHeader'],0);
Ext.cmd.derive('MainApp.view.main.reports.SureBackupSessionDetailsReport',Veeam.base.view.BaseReport,{controller:'main.reports.surebackupsessiondetails',viewModel:{type:'main.reports.surebackupsessiondetails'},bind:{title:'{reportName}',store:'{sessionTasksStore}',selection:'{currentRecord}'},config:{entityId:null,dbInstanceId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},updateDbInstanceId:function(val){this.getViewModel().set('dbInstanceId',val)},initToolbar:function(){var me=
this;return{xtype:'container',items:[{xtype:'main.reports.surebackupsessiondetailsheader',sessionId:me.getEntityId(),dbInstanceId:me.getDbInstanceId(),listeners:{exporttoexcel:function(){me.fireEvent('exporttoexcel')}}}]}},bbar:{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'pagingtoolbar',displayInfo:!0},{xtype:'main.reports.sessiondetailsfooter',reference:'footer',height:250,flex:1,scrollable:'y',isSureBackup:!0,bind:{sessionId:'{currentRecord.id}',dbInstanceId:'{currentRecord.dbInstanceId}'}}]},
columns:{defaults:{sortable:!0},items:[{header:'Object',dataIndex:'vmName',renderer:'renderUrlToSession',flex:1},{header:'Start Time',dataIndex:'startTime',xtype:'datecolumn',flex:1},{header:'End Time',dataIndex:'endTime',xtype:'nullabledatecolumn',flex:1},{header:'Status',dataIndex:'status',renderer:'statusRenderer',tdCls:'status-column',flex:1},{header:'Test',dataIndex:'testStatus',renderer:'operationStatusRenderer',flex:1},{header:'Heartbeat',dataIndex:'heartbeatStatus',renderer:'operationStatusRenderer',
flex:1},{header:'Ping',dataIndex:'pingStatus',renderer:'operationStatusRenderer',flex:1}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport',selectionchange:'onSelectionChange'}},0,['report.surebackupsessiondetails'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.surebackupsessiondetails'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.surebackupsessiondetails':!0},
['widget.report.surebackupsessiondetails'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'SureBackupSessionDetailsReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.LastJobSessionsReportController',MainApp.base.controller.BaseController,{onExport:function(){var status=this.getViewModel().get('status'),period=this.getViewModel().get('period'),sortInfo=this.getView().getSortInfo();status=Ext.apply({sessionStatus:status,periodHours:period},sortInfo);(new Veeam.util.ExcelExporter('report.export.lastJobSessions',[status])).start()},urlToJobRenderer:function(value,cell,record){return Ext.String.format('\x3ca href\x3d"#!reports/sessions_per_job/{0}/bs/{1}"\x3e{2}\x3c/a\x3e',
record.get('jobId'),record.get('dbInstanceId'),Ext.htmlEncode(value))},urlToBackupSeverRenderer:function(value,cell,record){return Ext.String.format('\x3ca href\x3d"#!reports/jobs_per_server/{0}"\x3e{1}\x3c/a\x3e',record.get('dbInstanceId'),Ext.htmlEncode(value))},statusRenderer:function(status,meta,record){meta.tdCls=record.get('statusIcon');return Veeam.model.JobStatus.getLabel(status)}},0,0,0,0,['controller.main.reports.lastjobsessions'],0,[MainApp.view.main.reports,'LastJobSessionsReportController'],
0);
Ext.cmd.derive('MainApp.view.main.reports.LastJobSessionsReportModel',Ext.app.ViewModel,{data:{reportName:'Total job runs',status:null},stores:{lastJobSessionsStore:{type:'app-store',rpcMethod:'Api.report.lastJobSessions',fields:[{name:'id'},{name:'jobId'},{name:'jobName'},{name:'status'},{name:'backupServerName'},{name:'backupServerId'},{name:'startTime',type:'date',format:'c'},{name:'endTime',type:'date',format:'c',allowNull:!0},{name:'dbInstanceId',type:'string'},{name:'statusIcon',calculate:function(data){return Veeam.model.JobStatus.getIconCls(data.status)}}],extraParams:{sessionStatus:'{status}',
periodHours:'{period}'},sorters:{direction:'DESC',property:'endTime'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.lastjobsessions'],0,[MainApp.view.main.reports,'LastJobSessionsReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.LastJobSessionsReport',Veeam.base.view.BaseReport,{controller:'main.reports.lastjobsessions',viewModel:{type:'main.reports.lastjobsessions'},config:{period:null,status:null},updatePeriod:function(val){this.getViewModel().set('period',val)},updateStatus:function(val){this.getViewModel().set('status',val)},bind:{title:'{reportName}',store:'{lastJobSessionsStore}'},columns:{defaults:{sortable:!0},items:[{header:'Job name',dataIndex:'jobName',renderer:'urlToJobRenderer',
flex:1},{header:'Backup server',dataIndex:'backupServerName',renderer:'urlToBackupSeverRenderer',flex:1},{header:'Start Time',dataIndex:'startTime',xtype:'datecolumn',flex:1},{header:'End Time',dataIndex:'endTime',xtype:'nullabledatecolumn',flex:1},{header:'Status',dataIndex:'status',renderer:'statusRenderer',tdCls:'status-column',flex:1}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.lastjobsessions'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.lastjobsessions'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.lastjobsessions':!0},['widget.report.lastjobsessions'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'LastJobSessionsReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.VmSessionsReportController',MainApp.base.controller.BaseController,{onExport:function(){var vm=this.getViewModel(),id=vm.get('entityId'),dbInstanceId=vm.get('dbInstanceId');vm=vm.get('jobId');var sortInfo=this.getView().getSortInfo();id=Ext.apply({vmId:id,dbInstanceId:dbInstanceId,jobId:vm},sortInfo);(new Veeam.util.ExcelExporter('report.export.vmSessions',[id])).start()},dataSizeRenderer:function(v){return Common.util.Format.fileSize(v)},performanceRateRenderer:function(v){return Common.util.Format.speedRate(v)},
urlToJobSessionRenderer:function(value,cell,record){cell=this.getViewModel().get('dbInstanceId');return Ext.String.format('\x3ca href\x3d"#!reports/sessions/{0}/bs/{1}"\x3e{2}\x3c/a\x3e',record.get('jobSessionId'),cell,Ext.util.Format.htmlEncode(value))},statusRenderer:function(status,meta,record){meta.tdCls=record.get('statusIcon');return Veeam.model.JobSessionStatus.getLabel(status)}},0,0,0,0,['controller.main.reports.vmsessions'],0,[MainApp.view.main.reports,'VmSessionsReportController'],0);
Ext.cmd.derive('MainApp.view.main.reports.VmSessionsReportModel',Ext.app.ViewModel,{data:{reportName:'Machine sessions',jobId:null},stores:{vmSessionsStore:{type:'app-store',rpcMethod:'Api.report.vmSessions',fields:[{name:'id'},{name:'jobName'},{name:'jobSessionId'},{name:'startTime',type:'date',format:'c'},{name:'endTime',type:'date',format:'c',allowNull:!0},{name:'status',type:'int'},{name:'performanceRate',type:'int'},{name:'transferredSize',type:'int'},{name:'dbInstanceId'},{name:'statusIcon',
calculate:function(data){return Veeam.model.JobSessionStatus.getIconCls(data.status)}}],extraParams:{vmId:'{entityId}',dbInstanceId:'{dbInstanceId}',jobId:'{jobId}'},sorters:{direction:'DESC',property:'endTime'},remoteSort:!0,sortOnLoad:!0,autoLoad:!0}}},0,0,0,0,['viewmodel.main.reports.vmsessions'],0,[MainApp.view.main.reports,'VmSessionsReportModel'],0);
Ext.cmd.derive('MainApp.view.main.reports.VmSessionsReport',Veeam.base.view.BaseReport,{controller:'main.reports.vmsessions',viewModel:{type:'main.reports.vmsessions'},reference:'vmSessionsGrid',config:{entityId:null,dbInstanceId:null,jobId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},updateDbInstanceId:function(val){this.getViewModel().set('dbInstanceId',val)},updateJobId:function(val){this.getViewModel().set('jobId',val||null)},bind:{title:'{reportName}',store:'{vmSessionsStore}'},
bbar:{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'pagingtoolbar',displayInfo:!0,bind:{store:'{vmSessionsStore}'}},{xtype:'main.reports.sessiondetailsfooter',reference:'footer',height:250,flex:1,scrollable:'y',isSureBackup:!1,bind:{sessionId:'{vmSessionsGrid.selection.id}',dbInstanceId:'{vmSessionsGrid.selection.dbInstanceId}'}}]},columns:{defaults:{sortable:!0},items:[{header:'Start Time',dataIndex:'startTime',xtype:'datecolumn',flex:1},{header:'End Time',dataIndex:'endTime',
xtype:'nullabledatecolumn',flex:1},{header:'Job session',dataIndex:'jobName',renderer:'urlToJobSessionRenderer',flex:1},{header:'Performance Rate',dataIndex:'performanceRate',renderer:'performanceRateRenderer',flex:1,align:'right'},{header:'Data Transferred',dataIndex:'transferredSize',renderer:'dataSizeRenderer',flex:1,align:'right'},{header:'Status',dataIndex:'status',renderer:'statusRenderer',tdCls:'status-column',flex:1}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,['report.vmsessions'],
'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport report.vmsessions'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'report.vmsessions':!0},['widget.report.vmsessions'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.reports,'VmSessionsReport'],0);
Ext.cmd.derive('MainApp.view.main.reports.Reports',Ext.tab.Panel,{cls:'main-reports',bodyCls:'main-reports-body',controller:'main.reports',listeners:{tabchange:'onTabChange'},defaults:{viewConfig:{stripeRows:!1}},items:[]},0,['main-reports','main.reports'],'component box container panel tabpanel main.reports main-reports'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,'main.reports':!0,'main-reports':!0},['widget.main-reports','widget.main.reports'],0,[MainApp.view.main.reports,
'Reports'],0);
Ext.cmd.derive('MainApp.service.rpc.Jobs',Ext.Base,{singleton:!0,getMetaJobs:function(){return Common.Request.thenable(RPC.Api['report.meta.jobs'])},startJob:function(jobId,startChained){return Common.Request.thenable(RPC.Api['job.startJob'],jobId,startChained)},stopJob:function(jobId){return Common.Request.thenable(RPC.Api['job.stopJob'],jobId)},retryJob:function(jobId){return Common.Request.thenable(RPC.Api['job.retryJob'],jobId)},cloneJob:function(jobId){return Common.Request.thenable(RPC.Api['job.cloneJob'],jobId)},
startActiveFull:function(jobId,startChained){return Common.Request.thenable(RPC.Api['job.startActiveFull'],jobId,startChained)},editBackupJob:function(jobId){return Common.Request.thenable(RPC.Api['job.editBackupJob'],jobId)},enableJob:function(jobId,enable){return Common.Request.thenable(RPC.Api['job.enable'],jobId,enable)},deleteJob:function(jobId,deleteBackups,deleteDependant){return Common.Request.thenable(RPC.Api['job.deleteJob'],jobId,deleteBackups,deleteDependant)},updateBackupJob:function(jobId,
data){return Common.Request.thenable(RPC.Api['job.updateBackupJobAsync'],jobId,data)},getUpdateState:function(operationUuid){return Common.Request.thenable(RPC.Api['job.getUpdateState'],operationUuid)},createCredentials:function(jobId,data,isLinux){return Common.Request.thenable(RPC.Api['job.createCredentials'],jobId,data,isLinux)},validateLocation:function(jobId,data){return Common.Request.thenable(RPC.Api['job.validateLocation'],jobId,data)},validateName:function(jobId,jobName){return Common.Request.thenable(RPC.Api['job.validate'],
{jobId:jobId,jobName:jobName})}},0,0,0,0,0,0,[MainApp.service.rpc,'Jobs'],0);
Ext.cmd.derive('MainApp.view.main.jobs.JobsController',MainApp.base.controller.BaseController,{listen:{taskmanager:{complete:'onTaskComplete'}},afterRender:function(){var vm=this.getViewModel(),statusItems=this._getStatusItems();vm.set('statusItems',statusItems);MainApp.service.rpc.Jobs.getMetaJobs().then(this.rpcHandlers.getMetaJobs.bind(this))},jobStatusRenderer:function(value,meta,record){var jobStatus=record.get('jobStatus'),status=Veeam.model.JobStatus;jobStatus=status.getIconCls(jobStatus);
value=status.getLabel(value);status=record.get('jobLastSessionId');var dbInstanceId=record.get('dbInstanceId');record=record.get('jobType')===Veeam.model.JobType.DRV?'sure_backup_sessions':'sessions';meta.tdCls=jobStatus;return status?Ext.String.format('\x3ca href\x3d"{0}"\x3e{1}\x3c/a\x3e','#!reports/'+record+'/'+status+'/bs/'+dbInstanceId,value):value},jobNameRenderer:function(value,meta,record){meta=record.get('jobId');var bsId=record.get('dbInstanceId');record=record.get('jobType')===Veeam.model.JobType.DRV?
'sure_backup_sessions_per_job':'sessions_per_job';return Ext.String.format('\x3ca href\x3d"{0}"\x3e{1}\x3c/a\x3e','#!reports/'+record+'/'+meta+'/bs/'+bsId,value)},nameFieldChange:function(field){var value=Common.util.Format.ltrim(field.getValue()),hasValue=!!value,triggers=field.getTriggers();field.setValue(value);triggers.clear.setVisible(hasValue);triggers.search.setVisible(!hasValue);this.loadData()},clearNameField:function(field){field.setValue(null)},loadData:function(){var vm=this.getViewModel(),
store=this._getJobsStore(),filter=vm.get('filter'),proxy=store.getProxy(),extraParams={};vm=vm.get('allStatusesSelected');if(!store.isLoading()||store.isLoaded())filter.server&&'all'!=filter.server&&(extraParams.dbInstanceId=filter.server),filter.name&&(extraParams.jobName=filter.name),!vm&&Ext.isArray(filter.statuses)&&filter.statuses.length&&(extraParams.statuses=filter.statuses),Ext.isFunction(proxy.setExtraParams)&&store.getProxy().setExtraParams(extraParams),store.loadPage(1)},reloadGrid:function(){this._getJobsStore().reload()},
startJob:function(){this._callStartJob(null)},stopJob:function(){this._executeJob(MainApp.service.rpc.Jobs.stopJob,'Job "{0}" has been stopped')},retryJob:function(){this._executeJob(MainApp.service.rpc.Jobs.retryJob,'Job "{0}" has been retried')},cloneJob:function(){this._executeJob(MainApp.service.rpc.Jobs.cloneJob,'Job "{0}" has been cloned')},startActiveFull:function(){this._callActiveFull(null)},editJob:function(){var vm=this.getViewModel(),view=this.getView(),job=vm.get('selectedJob');vm=job.get('jobId');
var platform=job.get('jobPlatform');job=job.get('jobType');var provider=Ext.create('MainApp.view.infrastructure.objectBrowser.providers.RemoteHierarchyProvider',{platform:platform,jobId:vm});(view.wizard=Ext.create('MainApp.view.main.jobs.wizard.JobWizard',{jobType:job,platform:platform,jobId:vm,isEdit:!0,jobNames:this._getJobNames(),objectBrowser:Veeam.infrastructure.objectBrowser.WindowFactory.createWindow(platform,provider,!1,{}),listeners:{updatejob:'onJobUpdated',scope:this}})).show()},onJobUpdated:function(cmp,
message){this.reloadGrid();Ext.GlobalEvents.fireEvent('notification',{type:'success',message:Ext.String.htmlEncode(message)})},deleteJob:function(){var me=this,job=me.getViewModel().get('selectedJob'),jobName=job.get('jobName');job=job.get('jobType')===Veeam.model.JobType.Backup;me._showDeleteConfirmationDialog(jobName,job).then(function(){me._deleteJob()})},changeEnabled:function(){var me=this,job=me.getViewModel().get('selectedJob'),jobId=job.get('jobId'),jobName=job.get('jobName'),enabled=job.get('scheduleEnabled'),
message=Ext.String.format('Job "{0}" has been {1}',jobName,enabled?'disabled':'enabled');me._setLoading();MainApp.service.rpc.Jobs.enableJob(jobId,!enabled).then(function(){Ext.GlobalEvents.fireEvent('notification',{type:'success',message:message});job.set('scheduleEnabled',!enabled)}).always(function(){me._setLoading(!1)})},onExport:function(){var sortInfo=this.lookupReference('jobList').getSortInfo(),filter=this.getViewModel().get('filter'),allStatusesSelected=this.getViewModel().get('allStatusesSelected'),
request={};filter.server&&'all'!==filter.server&&(request.dbInstanceId=filter.server);filter.name&&(request.jobName=filter.name);!allStatusesSelected&&Ext.isArray(filter.statuses)&&filter.statuses.length&&(request.statuses=filter.statuses);Ext.apply(request,sortInfo);(new Veeam.util.ExcelExporter('report.export.jobs',[request])).start()},onTaskComplete:function(taskType,context,taskResult){if('jobupdate'===taskType)return Ext.GlobalEvents.fireEvent('notification',{type:taskResult.success?'success':
'error',message:taskResult.message?Ext.String.htmlEncode(taskResult.message):'Job has been updated'}),!1},rpcHandlers:{getMetaJobs:function(response){var vm=this.getViewModel(),store=vm.get('serversStore');response=response.message.backupServerFilters;response.unshift({name:'All Servers',id:'all'});store.loadData(response);vm.set('filter.selectedServer',store.getAt(0))},startActiveFull:{success:function(response){response=this.getViewModel().get('selectedJob').get('jobName');response=Ext.String.format('Active full for job "{0}" has been started',
response);Ext.GlobalEvents.fireEvent('notification',{type:'success',message:response})},failure:function(response){var me=this,btnHandler=function(btn){me._callActiveFull('yes'==btn)};response.prompt?Common.ui.Msg.confirm('Active full backup',response.message,btnHandler,me):Ext.GlobalEvents.fireEvent('notification',{type:'error',message:response.message})}},startJob:{success:function(response){response=this.getViewModel().get('selectedJob').get('jobName');response=Ext.String.format('Job "{0}" was started',
response);Ext.GlobalEvents.fireEvent('notification',{type:'success',message:response})},failure:function(response){var me=this,btnHandler=function(btn){me._callStartJob('yes'==btn)};response.prompt?Common.ui.Msg.confirm('Backup Job',response.message,btnHandler,me):Ext.GlobalEvents.fireEvent('notification',{type:'error',message:response.message})}},deleteJob:{failure:function(response){var me=this;response.prompt?me._showDeleteDependantJobsConfirmationDialog(response.message).then(function(){me._deleteJob(!0)}):
Ext.GlobalEvents.fireEvent('notification',{type:'error',message:response.message})}}},privates:{_getJobNames:function(){var vm=this.getViewModel(),store=vm.get('jobsStore'),selectedJob=vm.get('selectedJob'),result=[];store.each(function(record){record=record.get('jobName');selectedJob.get('jobName')!=record&&result.push(Ext.String.trim(record))});return result},_getStatusItems:function(){var rawData=Veeam.model.JobStatus.getList(),items=[];Ext.Object.each(rawData,function(key,value){items.push({boxLabel:value,
iconCls:value.toLowerCase().replace(' ','_'),inputValue:key.toString()})});return items},_getJobsStore:function(){return this.lookup('jobList').getStore()},_executeJob:function(rpcFn,msg){var me=this,job=me.getViewModel().get('selectedJob'),jobName=job.get('jobName'),message=Ext.String.format(msg,jobName);job&&(me._setLoading(),rpcFn(job.get('jobId')).then(function(response){Ext.GlobalEvents.fireEvent('notification',{type:'success',message:message})}).always(function(){me._setLoading(!1)}))},_callActiveFull:function(startChained){var me=
this,job=me.getViewModel().get('selectedJob');me._setLoading();MainApp.service.rpc.Jobs.startActiveFull(job.get('jobId'),startChained).then(me.rpcHandlers.startActiveFull.success.bind(me)).otherwise(me.rpcHandlers.startActiveFull.failure.bind(me)).always(function(){me._setLoading(!1)})},_callStartJob:function(startChained){var me=this,job=me.getViewModel().get('selectedJob');me._setLoading();MainApp.service.rpc.Jobs.startJob(job.get('jobId'),startChained).then(me.rpcHandlers.startJob.success.bind(me)).otherwise(me.rpcHandlers.startJob.failure.bind(me)).always(function(){me._setLoading(!1)})},
_showDeleteConfirmationDialog:function(jobName,isBackup){var me=this,deferred=new Ext.Deferred;me.deleteMsg||(me.deleteMsg=Ext.create('Ext.window.MessageBox',{listeners:{afterrender:function(msg){msg.insert(1,{xtype:'checkbox',boxLabel:'Delete backup files',checked:!0,inputValue:!0,margin:'6 20 6 52'})},destroy:function(cmp){me.deleteMsg=null}},setCheckboxVisible:function(visible){this.down('checkbox').setVisible(visible);return this}}));me.deleteMsg.show({title:'Delete job?',message:'Job "'+jobName+
'" will be deleted. \x3cbr /\x3eContinue?',buttons:Ext.Msg.YESNO,icon:Ext.Msg.QUESTION,fn:function(btn){return'yes'===btn?deferred.resolve():deferred.reject()}}).setCheckboxVisible(isBackup);return deferred},_showDeleteDependantJobsConfirmationDialog:function(jobsNames){var deferred=new Ext.Deferred,message=new Ext.XTemplate('Deleted job has one or more dependent jobs:\x3cbr /\x3e\x3cbr /\x3e','\x3cul\x3e\x3ctpl for\x3d"."\x3e','\x3cli\x3e\x3cstrong\x3e* {.}\x3c/strong\x3e\x3c/li\x3e','\x3c/tpl\x3e\x3c/ul\x3e',
'\x3cbr /\x3e\x3cbr /\x3e','Proceed with deleting the job anyway?');Common.ui.Msg.confirmHtml('Delete job?',message.apply(jobsNames),function(btn){return'yes'===btn?deferred.resolve():deferred.reject()});return deferred},_deleteJob:function(deleteDependant){var me=this,job=me.getViewModel().get('selectedJob'),jobName=job.get('jobName'),message=Ext.String.format('Job "{0}" has been deleted',jobName);jobName=job.get('jobType')===Veeam.model.JobType.Backup;var needsDeleteFiles=me.deleteMsg.down('checkbox').getValue();
me._setLoading('Deleting the job, please wait...');MainApp.service.rpc.Jobs.deleteJob(job.get('jobId'),jobName&&needsDeleteFiles,deleteDependant).then(function(){Ext.GlobalEvents.fireEvent('notification',{type:'success',message:message});me.reloadGrid()}).otherwise(me.rpcHandlers.deleteJob.failure.bind(me)).always(function(){me._setLoading(!1)})},_setLoading:function(message){this.getView().setLoading(!1===message?!1:message||'Loading...')}}},0,0,0,0,['controller.main.jobs'],0,[MainApp.view.main.jobs,
'JobsController'],0);
Ext.cmd.derive('Veeam.helper.JobActionHelper',Ext.Base,{statics:{editAllowed:function(backupServerVersion,jobType,appVersion){return this.isAllowAction('edit',jobType)&&this._isSupportedVersion('edit',backupServerVersion,appVersion)},deleteAllowed:function(backupServerVersion,jobType,appVersion){return this.isAllowAction('delete',jobType)&&this._isSupportedVersion('delete',backupServerVersion,appVersion)},activeFullAllowed:function(backupServerVersion,jobType,appVersion,scheduleEnabled){return this.isAllowAction('activeFull',jobType)?
this._isSupportedVersion('activeFull',backupServerVersion,appVersion)?jobType!==Veeam.model.JobType.BackupSync||scheduleEnabled?0:3:2:1},startAllowed:function(backupServerVersion,jobType,appVersion){return this.isAllowAction('start',jobType)&&this._isSupportedVersion('start',backupServerVersion,appVersion)},stopAllowed:function(backupServerVersion,jobType,appVersion){return this.isAllowAction('stop',jobType)&&this._isSupportedVersion('stop',backupServerVersion,appVersion)},retryAllowed:function(backupServerVersion,
jobType,appVersion){return this.isAllowAction('retry',jobType)&&this._isSupportedVersion('retry',backupServerVersion,appVersion)},cloneAllowed:function(backupServerVersion,jobType,appVersion){return this.isAllowAction('clone',jobType)&&this._isSupportedVersion('clone',backupServerVersion,appVersion)},enableAllowed:function(backupServerVersion,jobType,appVersion){return this.isAllowAction('enable',jobType)&&this._isSupportedVersion('enable',backupServerVersion,appVersion)},disableAllowed:function(backupServerVersion,
jobType,appVersion){return this.isAllowAction('disable',jobType)&&this._isSupportedVersion('disable',backupServerVersion,appVersion)},isAllowAction:function(action,jobType){return(jobType={Backup:'edit start stop retry clone enable disable activeFull delete'.split(' '),Replica:'edit start stop retry clone enable disable delete'.split(' '),DRV:['start','stop','enable','disable','delete'],Copy:'start stop clone enable disable delete'.split(' '),BackupSync:['clone','enable','disable','delete'],VmTapeBackup:'start stop clone enable disable delete'.split(' '),
FileTapeBackup:'start stop clone enable disable activeFull delete'.split(' '),EpAgentPolicy:'start stop retry enable disable delete'.split(' '),EpAgentBackup:'start stop retry enable disable activeFull delete'.split(' ')}[Veeam.model.JobType[jobType]]||null)?Ext.Array.contains(jobType,action):!1},_isSupportedVersion:function(action,backupServerVersion,appVersion){appVersion=Common.util.Format.parseVersion(appVersion);backupServerVersion=Common.util.Format.parseVersion(backupServerVersion);return'edit'===
action?backupServerVersion.major===appVersion.major&&backupServerVersion.minor===appVersion.minor:'activeFull'===action||'delete'===action?'9'<backupServerVersion.major||'9'===backupServerVersion.major&&'5'<=backupServerVersion.minor:!0}}},0,0,0,0,0,0,[Veeam.helper,'JobActionHelper'],0);
Ext.cmd.derive('Veeam.model.Job',Ext.data.Model,{fields:[{name:'backupServerName',type:'safestring'},{name:'backupServerVersion',type:'safestring'},{name:'jobDescription',type:'safestring'},{name:'jobId',type:'safestring'},{name:'jobLastRunTimeUtc',type:'date',dateFormat:'c'},{name:'jobLastSessionId',type:'safestring'},{name:'jobName',type:'safestring'},{name:'jobNextRunTime',type:'safestring'},{name:'jobPlatform',type:'int'},{name:'jobPlatformName',type:'safestring'},{name:'jobStatus',type:'int'},
{name:'jobType',type:'int'},{name:'scheduleEnabled',type:'boolean'},{name:'dbInstanceId',type:'safestring'},{name:'scheduleConfigured',type:'boolean'}],idProperty:'jobId'},0,0,0,0,0,0,[Veeam.model,'Job'],0);
Ext.cmd.derive('MainApp.view.main.jobs.JobsModel',Ext.app.ViewModel,{_notSupportedTypeMessage:'This action is not supported for the selected job type',_notSupportedVersionMessage:'This action is not supported due to the backup server version',_notSupportedStatusMessage:'This action is not supported for jobs in "{0}" status',_notSupportedActionMessage:'This action is not available for this job',data:{filter:{server:'all',name:null,statuses:null,selectedServer:null},statusItems:[],selectedJob:null},
formulas:{allStatusesSelected:function(get){var statusesListSize=Veeam.model.JobStatus.getCount();get=get('filter.statuses');return Ext.isArray(get)?statusesListSize===get.length:!1},editAllowed:{get:function(get){if(!get('selectedJob'))return!1;var jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');return Veeam.helper.JobActionHelper.editAllowed(get,jobType,MainApp.app.getUser().getAppVersion())}},editBtnTooltip:{bind:{editAllowed:'{editAllowed}',job:'{selectedJob}'},get:function(data){return data.editAllowed||
!data.job?'':this._getTooltipMessage('edit',data.job)}},deleteAllowed:function(get){if(!get('selectedJob'))return!1;var jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');return Veeam.helper.JobActionHelper.deleteAllowed(get,jobType,MainApp.app.getUser().getAppVersion())},deleteBtnTooltip:{bind:{deleteAllowed:'{deleteAllowed}',job:'{selectedJob}'},get:function(data){return data.deleteAllowed||!data.job?'':this._getTooltipMessage('delete',data.job)}},activeFullAvailability:{bind:{bindTo:'{selectedJob}',
deep:!0},get:function(job){if(!job)return null;var jobType=job.get('jobType'),backupServerVersion=job.get('backupServerVersion');job=job.get('scheduleEnabled');return Veeam.helper.JobActionHelper.activeFullAllowed(backupServerVersion,jobType,MainApp.app.getUser().getAppVersion(),job)}},activeFullAllowed:{bind:'{activeFullAvailability}',get:function(available){return null==available?!1:0===available}},activeFullBtnTooltip:{bind:'{activeFullAvailability}',get:function(available){return null==available||
0===available?'':1===available?this._notSupportedTypeMessage:2===available?this._notSupportedVersionMessage:3===available?this._notSupportedActionMessage:'Not available'}},startAllowed:function(get){if(!get('selectedJob'))return!1;var status=get('selectedJob.jobStatus'),jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');return Veeam.helper.JobActionHelper.startAllowed(get,jobType,MainApp.app.getUser().getAppVersion())&&status!=Veeam.model.JobStatus.Starting&&status!=Veeam.model.JobStatus.Stopping&&
status!=Veeam.model.JobStatus.Working},startBtnTooltip:{bind:{startAllowed:'{startAllowed}',job:'{selectedJob}'},get:function(data){if(data.startAllowed||!data.job)return null;var status=data.job.get('jobStatus');return status==Veeam.model.JobStatus.Starting||status==Veeam.model.JobStatus.Stopping||status==Veeam.model.JobStatus.Working?Ext.String.format(this._notSupportedStatusMessage,Veeam.model.JobStatus.getLabel(status)):this._getTooltipMessage('start',data.job)}},stopAllowed:function(get){if(!get('selectedJob'))return!1;
var jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');return Veeam.helper.JobActionHelper.stopAllowed(get,jobType,MainApp.app.getUser().getAppVersion())},stopBtnTooltip:{bind:{stopAllowed:'{stopAllowed}',job:'{selectedJob}'},get:function(data){return data.stopAllowed||!data.job?null:this._getTooltipMessage('stop',data.job)}},retryAllowed:function(get){if(!get('selectedJob'))return!1;var status=get('selectedJob.jobStatus'),jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');
return Veeam.helper.JobActionHelper.retryAllowed(get,jobType,MainApp.app.getUser().getAppVersion())&&status==Veeam.model.JobStatus.Error},retryBtnTooltip:{bind:{retryAllowed:'{retryAllowed}',job:'{selectedJob}'},get:function(data){if(data.retryAllowed||!data.job)return null;var status=data.job.get('jobStatus');return status!=Veeam.model.JobStatus.Error?Ext.String.format(this._notSupportedStatusMessage,Veeam.model.JobStatus.getLabel(status)):this._getTooltipMessage('retry',data.job)}},cloneAllowed:function(get){if(!get('selectedJob'))return!1;
var jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');return Veeam.helper.JobActionHelper.cloneAllowed(get,jobType,MainApp.app.getUser().getAppVersion())},cloneBtnTooltip:{bind:{cloneAllowed:'{cloneAllowed}',job:'{selectedJob}'},get:function(data){return data.cloneAllowed||!data.job?'':this._getTooltipMessage('clone',data.job)}},enableAllowed:function(get){if(!get('selectedJob'))return!1;var jobType=get('selectedJob.jobType'),backupServerVersion=get('selectedJob.backupServerVersion');
return get('selectedJob.canDisable')&&Veeam.helper.JobActionHelper.enableAllowed(backupServerVersion,jobType,MainApp.app.getUser().getAppVersion())},enableBtnTooltip:{bind:{enableAllowed:'{enableAllowed}',job:'{selectedJob}'},get:function(data){return data.enableAllowed||!data.job?'':data.job.get('canDisable')?this._getTooltipMessage('enable',data.job):this._notSupportedActionMessage}},disableAllowed:function(get){if(!get('selectedJob')||!get('selectedJob.scheduleConfigured')||!get('selectedJob.canDisable'))return!1;
var jobType=get('selectedJob.jobType');get=get('selectedJob.backupServerVersion');return Veeam.helper.JobActionHelper.disableAllowed(get,jobType,MainApp.app.getUser().getAppVersion())},disableBtnTooltip:{bind:{disableAllowed:'{disableAllowed}',job:'{selectedJob}'},get:function(data){return data.disableAllowed||!data.job?'':data.job.get('canDisable')&&data.job.get('scheduleConfigured')?this._getTooltipMessage('disable',data.job):this._notSupportedActionMessage}},disableBtnText:function(get){return get('selectedJob.scheduleEnabled')?
'Disable':'Enable'},disableBtnIconCls:function(get){return get('selectedJob.scheduleEnabled')?'job-disable':'job-enable'},hideActionBtn:function(get){return!MainApp.app.getUser().canConfigurate()}},stores:{jobsStore:{type:'app-store',rpcMethod:'Api.report.jobs',model:'Veeam.model.Job',sorters:{direction:'DESC',property:'jobLastRunTimeUtc'},remoteSort:!0,sortOnLoad:!0},serversStore:{fields:['id','name'],idProperty:'id',data:[]}},privates:{_getTooltipMessage:function(action,job){return Veeam.helper.JobActionHelper.isAllowAction(action,
job.get('jobType'))?this._notSupportedVersionMessage:this._notSupportedTypeMessage}}},0,0,0,0,['viewmodel.main.jobs'],0,[MainApp.view.main.jobs,'JobsModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.JobList',Veeam.base.view.BaseGrid,{cls:'main-job-list'},0,['main-jobslist','main.jobslist'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid main.jobslist main-jobslist'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,'main.jobslist':!0,'main-jobslist':!0},['widget.main-jobslist','widget.main.jobslist'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||
Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.jobs,'JobList'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.JobWizardController',ToolKit.wizard.WizardController,{listen:{controller:{'main.jobs.wizard.vmsgrid':{changejobsourcerepo:'onChangeJobSourceRepo'}}},initViewModel:function(vm){this._loadData()},vmsCardReady:function(card){var view=this.getView();card.setPlatform(view.getPlatform());card.setJobId(view.getJobId())},saveChanges:function(wizard){var me=this,vm=me.getViewModel(),jobId=me.getView().getJobId(),data=vm.get('job'),saveBtn=wizard.lookupReference('saveBtn');
saveBtn.setDisabled(!0);me._checkScheduleConfig(data).then(me._validateAppProcessingOptions.bind(me)).then(me._validateLocation.bind(me)).then(function(){setTimeout(function(){me.getView().setLoading('Updating...')});return MainApp.service.rpc.Jobs.updateBackupJob(jobId,data)}).then(me.rpcHandlers.updateBackupJob.success.bind(me)).otherwise(me.rpcHandlers.updateBackupJob.failure.bind(me)).always(function(){saveBtn&&saveBtn.setDisabled(!1)})},onChangeJobSourceRepo:function(data){var view=this.getView();
data=data&&data.length;view=view.down('main-jobs-wizard-guestprocessingcard');this.setHiddenCard(view,data);this.setDisallowedCard(view,data)},rpcHandlers:{editBackupJob:{success:function(response){this.getViewModel().set('job',response);this.fireEvent('loadjobdata',response);this.onChangeJobSourceRepo(response.jobSourceRepoIds)},failure:function(response){var view=this.getView();Common.ui.Msg.error(response);view.closeWithoutConfirm()}},updateBackupJob:{success:function(response){this._createUpdateStateTask(response.taskId)},
failure:function(response){Common.ui.Msg.error(response);this.getView().setLoading(!1)}},getUpdateState:{success:function(response){var view=this.getView();response&&(this.fireViewEvent('updatejob',response.message),view.closeWithoutConfirm())},failure:function(error){error=this.getView();var saveBtn=error.lookupReference('saveBtn');error.setLoading(!1);saveBtn&&saveBtn.setDisabled(!1)}}},privates:{_validateAppProcessingOptions:function(data){var isGuestDbBackupEnabled=this._isGuestDbBackupEnabled(data);
return data.hasCloudRepository&&isGuestDbBackupEnabled?Ext.Deferred.rejected(Error('Transaction log backup to cloud repositories is not supported.\nPlease disable transaction log backup, or choose a different backup repository.')):Ext.Deferred.resolved(data)},_isGuestDbBackupEnabled:function(data){var sqlBackupEnabled=!1,oracleBackupEnabled=!1,jobWizard=MainApp.view.main.jobs.wizard.JobWizard;if(!data.guestProcessingOptions.vssSnapshotOptions.enabled)return!1;Ext.each(data.jobItems,function(itemData){itemData=
itemData.guestProcessingOptions;var vssSnapshotOptions=itemData.vssSnapshotOptions;!0!==vssSnapshotOptions.isCopyOnly&&!1!==vssSnapshotOptions.enabled&&(itemData.sqlBackupOptions.transactionLogsProcessing===jobWizard.transactionLogsProcessing.BACKUP&&(sqlBackupEnabled=!0),!0===itemData.oracleBackupOptions.backupLogsEnabled&&(oracleBackupEnabled=!0))});return sqlBackupEnabled||oracleBackupEnabled},_checkScheduleConfig:function(data){var deferred=new Ext.Deferred,scheduleEnabled=!data.runManually,isGuestDbBackupEnabled=
this._isGuestDbBackupEnabled(data);!scheduleEnabled&&isGuestDbBackupEnabled?Common.ui.Msg.confirm(!1,"Transaction log backup is enabled, but it's schedule is not configured. Continue anyway?",function(btn){'yes'===btn?deferred.resolve(data):deferred.reject()},this):deferred.resolve(data);return deferred},_validateLocation:function(data){var me=this,jobId=me.getView().getJobId(),deferred=new Ext.Deferred;setTimeout(function(){me.getView().setLoading('Validating job settings. Please wait...')});MainApp.service.rpc.Jobs.validateLocation(jobId,
data).then(function(response){return deferred.resolve(data)}).otherwise(function(response){me.getView().setLoading(!1);Common.ui.Msg.confirmHtml(!1,Ext.util.Format.nl2br(response.message),function(btn){'yes'==btn?deferred.resolve(data):deferred.reject()},me).toFront()}).always(me.getView().setLoading.bind(me,!1));return deferred},_loadData:function(){var view=this.getView(),jobId=view.getJobId();setTimeout(function(){view.setLoading('Loading...')});MainApp.service.rpc.Jobs.editBackupJob(jobId).then(this.rpcHandlers.editBackupJob.success.bind(this)).otherwise(this.rpcHandlers.editBackupJob.failure.bind(this)).always(function(){view.setLoading(!1)})},
_createUpdateStateTask:function(uuid){return Common.signalr.TaskManager.waitForTask(uuid,'jobupdate').then(MainApp.service.rpc.Jobs.getUpdateState.bind(this,uuid)).then(this.rpcHandlers.getUpdateState.success.bind(this)).otherwise(this.rpcHandlers.getUpdateState.failure.bind(this))}}},0,0,0,0,['controller.main.jobs.wizard'],0,[MainApp.view.main.jobs.wizard,'JobWizardController'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.JobWizardModel',Ext.app.ViewModel,{data:{job:{credentials:void 0,description:void 0,guestProcessingOptions:void 0,isReplica:void 0,isSnapshotOnlyMode:void 0,hasCloudRepository:void 0,jobItems:void 0,maxRetention:void 0,name:void 0,retention:void 0,runManually:void 0,scheduleOptions:void 0},selectedVm:null},formulas:{includedVmsItems:{bind:'{job.jobItems}',deep:!0,get:function(items){var result=[];Ext.each(items,function(item){item.isChild||!item.isIncluded||
item.policy||(item=Ext.clone(item),item.id=item.entity.nodeId,result.push(item))});return result}},excludedVmsItems:{bind:'{job.jobItems}',deep:!0,get:function(items){var result=[];Ext.each(items,function(item){item.isChild||item.isIncluded||item.policy||(item=Ext.clone(item),item.id=item.entity.nodeId,result.push(item))});return result}},vssSnapshotItems:{bind:'{job.jobItems}',deep:!0,get:function(items){var result=[],baseItems=this.get('includedVmsItems')||[];Ext.each(items,function(item){item.isChild&&
item.policy===MainApp.view.main.jobs.wizard.JobWizard.policyType.VSS&&(item=Ext.clone(item),item.id=item.entity.nodeId,result.push(item))});return baseItems.concat(result)}},guestFsItems:{bind:'{job.jobItems}',deep:!0,get:function(items){var result=[],baseItems=this.get('includedVmsItems')||[];Ext.each(items,function(item){item.isChild&&item.policy===MainApp.view.main.jobs.wizard.JobWizard.policyType.GUEST_FS_INDEXING&&(item=Ext.clone(item),item.id=item.entity.nodeId,result.push(item))});return baseItems.concat(result)}},
guestCredsItems:{bind:'{job.jobItems}',deep:!0,get:function(items){var result=[],baseItems=this.get('includedVmsItems')||[];Ext.each(items,function(item){item.isChild&&item.policy===MainApp.view.main.jobs.wizard.JobWizard.policyType.GUEST_CREDS&&(item=Ext.clone(item),item.id=item.entity.nodeId,result.push(item))});return baseItems.concat(result)}}},stores:{}},0,0,0,0,['viewmodel.main.jobs.wizard'],0,[MainApp.view.main.jobs.wizard,'JobWizardModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.BaseJobWizardCard',ToolKit.wizard.FormCard,{layout:{type:'vbox',align:'stretch'},config:{objectBrowser:null,jobId:null},defaults:{padding:'0 16'},getJobItemByNodeId:function(nodeId){var jobItems=this.getViewModel().get('job.jobItems'),result=null;Ext.each(jobItems,function(item){item.entity.nodeId==nodeId&&(result=item)});return result},collectJobItems:function(newItems,isChild,policy){var me=this,vm=me.getViewModel(),jobItems=vm.get('job.jobItems'),result=
[];Ext.each(jobItems,function(item){item.isChild===isChild&&item.policy===policy||result.push(item)});Ext.each(newItems,function(record){if(record.get('isChild')===isChild&&record.get('policy')===policy)record=Ext.clone(record.data),result.push(record);else{var entity=record.get('entity');if(entity=me.getJobItemByNodeId(entity.nodeId))entity.guestProcessingOptions=record.get('guestProcessingOptions')}});vm.set('job.jobItems',result)}},0,0,'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0},0,[[Veeam.mixin.WizardCardTitle.prototype.mixinId||Veeam.mixin.WizardCardTitle.$className,Veeam.mixin.WizardCardTitle]],[MainApp.view.main.jobs.wizard,'BaseJobWizardCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.MainCard',MainApp.view.main.jobs.wizard.BaseJobWizardCard,{viewModel:{},config:{jobNames:[],isReplica:!1},title:'Job',cardTitle:'Specify the job name, description and retention policy',isValidating:!1,initComponent:function(){this.getJobNames();Ext.apply(this,{items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'textfield',labelWidth:80,name:'jobName',fieldLabel:'Job name',allowOnlyWhitespace:!1,bind:'{job.name}'},{xtype:'textarea',
labelWidth:80,fieldLabel:'Description',height:180,bind:'{job.description}'}]},{xtype:'wizard-cardsection',title:'Retention policy',hidden:this.getIsReplica(),items:[{xtype:'numberfield',fieldLabel:'Restore points to keep on disk',allowBlank:!1,minValue:1,maxValue:999,labelWidth:188,maxWidth:280,allowDecimals:!1,bind:{value:'{job.retention}',disabled:'{job.isReplica}'}}],bind:{hidden:'{job.isReplica}'}}]});MainApp.view.main.jobs.wizard.BaseJobWizardCard.prototype.initComponent.apply(this,arguments)},
serverValidate:function(callback){var me=this,jobName=me.getViewModel().get('job.name'),jobId=me.wizard.getJobId();me.isValidating?callback(!0):(me.setLoading('Validating...'),me.isValidating=!0,MainApp.service.rpc.Jobs.validateName(jobId,jobName).then(function(){me.setLoading(!1);callback(!0);me.isValidating=!1}).otherwise(function(result){me.setLoading(!1);me.getForm().markInvalid([{field:'jobName',message:result.errors.join('\n')}]);me.isValidating=!1;callback(!1)}))}},0,['main-jobs-wizard-maincard',
'main.jobs.wizard.maincard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.jobs.wizard.maincard main-jobs-wizard-maincard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.jobs.wizard.maincard':!0,'main-jobs-wizard-maincard':!0},['widget.main-jobs-wizard-maincard','widget.main.jobs.wizard.maincard'],0,[MainApp.view.main.jobs.wizard,'MainCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.VmsCardController',MainApp.base.controller.BaseController,{listen:{controller:{'main.jobs.wizard':{loadjobdata:'onLoadJobData'}}},onLoadJobData:function(data){this.lookupReference('vmsGrid').setJobItems(data.jobItems)},boxReady:function(){var grid=this.lookupReference('vmsGrid'),browser=this.getView().getObjectBrowser();grid.setObjectBrowser(browser)},onChangeData:function(grid,data,exclusions){var isIncluded=!exclusions;grid=this.getViewModel();exclusions=
grid.get('job.jobItems');var savedJobItems=[],newJobItems=[];Ext.each(exclusions,function(item){item.isIncluded!=isIncluded&&savedJobItems.push(item)});newJobItems=isIncluded?data.concat(savedJobItems):savedJobItems.concat(data);grid.set('job.jobItems',newJobItems)},onSelectObjects:function(browser,data){var me=this,vm=me.getViewModel(),grid=me.lookupReference('vmsGrid'),jobItems=vm.get('job.jobItems'),i=me._getOrderNumber(!browser.exclusions);data&&data.length&&Ext.each(data,function(item){jobItems.push(me._createJobItem(item,
i,!browser.exclusions));i++});grid.setJobItems(jobItems);vm.set('job.jobItems',null);vm.set('job.jobItems',jobItems)},onOpenExclusionsDialog:function(grid,dialog){var vm=this.getViewModel();grid=this.getView();dialog=dialog.getVmsGrid();vm=vm.get('job.jobItems');grid=grid.objectBrowser;dialog.setJobItems(vm);dialog.setObjectBrowser(grid)},onCardActivate:function(panel){panel.getObjectBrowser().on('objectselected','onSelectObjects',this)},onCardDeactivate:function(){this.getView().getObjectBrowser().un('objectselected',
'onSelectObjects',this)},privates:{_getOrderNumber:function(isIncluded){var jobItems=this.getViewModel().get('job.jobItems'),i=0;Ext.each(jobItems,function(item){item.isIncluded==isIncluded&&i++});return i},_createJobItem:function(item,i,isIncluded){return{isIncluded:isIncluded,entity:{id:item.get('nodeId'),nodeId:item.get('nodeId'),text:item.get('text'),type:item.get('type'),iconCls:item.get('iconCls'),cls:item.get('iconCls'),hostId:item.get('hostId'),reference:item.get('reference'),platform:item.get('platform'),
hostInstanceId:item.get('hostInstanceId'),hostInstanceName:item.get('hostInstanceName'),leaf:item.get('leaf'),objectViewType:item.get('objectViewType')},size:0,isChild:!1,orderNum:i,guestProcessingOptions:MainApp.view.main.jobs.wizard.JobWizard.getDefaultGuestProcessingOptions(),policy:0}}}},0,0,0,0,['controller.main.jobs.wizard.vmscard'],0,[MainApp.view.main.jobs.wizard,'VmsCardController'],0);
Ext.cmd.derive('MainApp.view.infrastructure.objectBrowser.providers.RemoteHierarchyProvider',Veeam.infrastructure.objectBrowser.providers.BaseProvider,{destroyApi:'hierarchy.closeBrowser',childrenApi:'hierarchy.getChildren',initApi:'hierarchy.initHierarchy',refreshApi:'hierarchy.refresh',filterApi:'hierarchy.filter',jobId:null,initHierarchy:function(){var jobId=this.jobId,platform=this.getPlatform();return Common.Request.thenable(RPC.Api[this.getInitApi()],jobId,platform)}},0,0,0,0,0,0,[MainApp.view.infrastructure.objectBrowser.providers,
'RemoteHierarchyProvider'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.VmsGridController',MainApp.base.controller.BaseController,{moveUpHandler:function(){var me=this,vm=me.getViewModel(),store=vm.get('vmsStore');vm=vm.get('selectedVm');var position=vm.get('ord');store=store.getAt(position-1);vm.set('ord',position-1);store.set('ord',position);setTimeout(function(){me._changeData()})},moveDownHandler:function(){var me=this,vm=me.getViewModel(),store=vm.get('vmsStore');vm=vm.get('selectedVm');var position=vm.get('ord');store=
store.getAt(position+1);vm.set('ord',position+1);store.set('ord',position);setTimeout(function(){me._changeData()})},addHandler:function(){var view=this.getView(),objectBrowser=view.getObjectBrowser();objectBrowser&&(objectBrowser.exclusions=view.getExclusions(),objectBrowser.show())},removeHandler:function(){var vm=this.getViewModel(),store=vm.get('vmsStore');vm=vm.get('selectedVm');store.remove(vm);this._changeData()},onBeforeDropRow:function(node,data,overModel,dropPosition){var me=this;node=me.getViewModel();
data=data.view.getStore();var selectedRecord=node.get('selectedVm'),selectedOrd=selectedRecord.get('ord'),overModelOrd=overModel.get('ord');overModel=selectedOrd<overModelOrd?'down':'up';'down'===overModel&&('before'===dropPosition&&overModelOrd--,data.each(function(item){var itemOrd=item.get('ord');itemOrd>selectedOrd&&itemOrd<=overModelOrd&&item.set('ord',itemOrd-1)}),selectedRecord.set('ord',overModelOrd));'up'===overModel&&('after'===dropPosition&&overModelOrd++,data.each(function(item,index){index=
item.get('ord');index>=overModelOrd&&index<selectedOrd&&item.set('ord',index+1)}),selectedRecord.set('ord',overModelOrd));node.set('selectedVm',null);node.set('selectedVm',selectedRecord);setTimeout(function(){me._changeData()})},onShowSourceDialog:function(){var view=this.getView(),jobData=this.getViewModel().get('job');view.sourceDialog=Ext.create('MainApp.view.main.jobs.wizard.dialogs.ReplicaSource',{repositories:jobData.repositories||[],jobSourceRepoIds:jobData.jobSourceRepoIds||[],listeners:{selectsource:this._updateJobSourceRepoIds,
scope:this}}).show()},onShowExclusionsDialog:function(){var me=this,view=me.getView();view.exclusionsDialog=Ext.create('MainApp.view.main.jobs.wizard.dialogs.Exclusions',{listeners:{changedata:function(grid,data,exclusions){me.fireViewEvent('changedata',data,exclusions)}}});view.exclusionsDialog.show();me.fireViewEvent('openexclusions',view.exclusionsDialog)},privates:{_changeData:function(){var exclusions=this.getView().getExclusions(),data=this._getNewData();this.fireViewEvent('changedata',data,
exclusions)},_getNewData:function(){var result=[];this.getView().getStore().each(function(item){var jobItem=Ext.clone(item.get('fullData'));jobItem.orderNum=item.get('ord');result.push(jobItem)});return result},_updateJobSourceRepoIds:function(win,data){this.getViewModel().set('job.jobSourceRepoIds',data);this.fireEvent('changejobsourcerepo',data)}}},0,0,0,0,['controller.main.jobs.wizard.vmsgrid'],0,[MainApp.view.main.jobs.wizard,'VmsGridController'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.VmsGridModel',Ext.app.ViewModel,{data:{selectedVm:null},formulas:{moveUpDisabled:{bind:{ord:'{selectedVm.ord}'},get:function(data){return!(Ext.isNumber(data.ord)&&0<data.ord)}},moveDownDisabled:{bind:{ord:'{selectedVm.ord}'},get:function(data){var lastIndex=this.get('vmsStore').count()-1;return!(Ext.isNumber(data.ord)&&data.ord<lastIndex)}}},stores:{vmsStore:{storeId:'vms-grid-store',fields:'id hostId text type fullData ord'.split(' '),data:[],sorters:['ord']}}},
0,0,0,0,['viewmodel.main.jobs.wizard.vmsgrid'],0,[MainApp.view.main.jobs.wizard,'VmsGridModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.VmsGrid',Ext.grid.Panel,{controller:'main.jobs.wizard.vmsgrid',viewModel:{type:'main.jobs.wizard.vmsgrid'},config:{exclusions:!1,jobItems:[],enableSorting:!0,objectBrowser:null},flex:1,border:!1,padding:0,margin:0,columns:{defaults:{sortable:!1,menuDisabled:!0},items:[{text:'Name',dataIndex:'text',flex:1,renderer:function(value,_metaData,record){return Ext.String.format('\x3cdiv class\x3d"icon {0}"\x3e{1}\x3c/div\x3e',record.get('type'),Ext.String.htmlEncode(value))}},
{text:'Type',dataIndex:'type',flex:1}]},initComponent:function(){var config={},buttons=[{text:'Add',iconCls:'toolbar-add',handler:'addHandler'},{text:'Remove',iconCls:'toolbar-remove',handler:'removeHandler',bind:{disabled:'{!selectedVm}'}}];this.getEnableSorting()&&(buttons.push({text:'Exclusions\x26hellip;',iconCls:'toolbar-exclusion',handler:'onShowExclusionsDialog'},{text:'Source\x26hellip;',iconCls:'source',hidden:!0,bind:{hidden:'{!job.isReplica}'},handler:'onShowSourceDialog'},{text:'Up',iconCls:'toolbar-move-up',
disabled:!0,handler:'moveUpHandler',bind:{disabled:'{moveUpDisabled}'}},{text:'Down',iconCls:'toolbar-move-down',disabled:!0,handler:'moveDownHandler',bind:{disabled:'{moveDownDisabled}'}}),config.viewConfig={plugins:{ptype:'gridviewdragdrop'},stripeRows:!1});config.dockedItems=[{dock:'top',xtype:'toolbar',items:buttons}];Ext.apply(this,config);Ext.grid.Panel.prototype.initComponent.apply(this,arguments)},listeners:{beforedrop:'onBeforeDropRow'},bind:{store:'{vmsStore}',selection:'{selectedVm}'},
setJobItems:function(jobItems){this._loadVmsStoreData(jobItems||[]);this.exclusionsDialog&&!this.exclusionsDialog.destroyed&&this.exclusionsDialog.getVmsGrid().setJobItems(jobItems);(arguments.callee.$previous||Ext.grid.Panel.prototype.setJobItems).apply(this,arguments)},privates:{_loadVmsStoreData:function(data){var me=this,store=me.getViewModel().getStore('vmsStore'),result=[];store&&'vms-grid-store'===store.storeId?(Ext.each(data,function(item){item.isIncluded===!me.getExclusions()&&item.policy===
MainApp.view.main.jobs.wizard.JobWizard.policyType.NONE&&result.push({id:item.entity.id,hostId:item.entity.hostId,text:item.entity.text,type:item.entity.type,fullData:item,ord:item.orderNum})}),store.loadData(result)):setTimeout(function(){me._loadVmsStoreData(data)},100)}}},0,['main-jobs-wizard-vmsgrid','main.jobs.wizard.vmsgrid'],'component box container panel tablepanel gridpanel grid main.jobs.wizard.vmsgrid main-jobs-wizard-vmsgrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,
gridpanel:!0,grid:!0,'main.jobs.wizard.vmsgrid':!0,'main-jobs-wizard-vmsgrid':!0},['widget.main-jobs-wizard-vmsgrid','widget.main.jobs.wizard.vmsgrid'],0,[MainApp.view.main.jobs.wizard,'VmsGrid'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.Exclusions',Veeam.base.view.BaseWindow,{config:{vms:[],platform:null,jobId:null},width:600,height:400,minWidth:560,minHeight:380,title:'Exclusions',items:[{xtype:'main-jobs-wizard-vmsgrid',reference:'exclusionsVmsGrid',exclusions:!0,enableSorting:!1}],buttons:[{text:'OK',ui:'primary',handler:function(btn){btn.up('window').close()}}],initComponent:function(){Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);this.relayEvents(this.getVmsGrid(),
['changedata'])},getVmsGrid:function(){return this.lookupReference('exclusionsVmsGrid')}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'Exclusions'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ReplicaSourceController',Ext.app.ViewController,{initViewModel:function(vm){var view=this.getView(),jobSourceRepoIds=view.getJobSourceRepoIds();view=view.getRepositories();var rb=jobSourceRepoIds.length?this.lookup('backupRadio'):this.lookup('storageRadio'),sourcesStore=vm.get('sourcesStore');rb.setValue(!0);vm.set('currentSourceType',{sourceType:jobSourceRepoIds.length?'backup':'storage'});sourcesStore.loadData(view);jobSourceRepoIds.length&&
this._selectSources(jobSourceRepoIds,sourcesStore)},onBtnHandler:function(){this._isValid()&&(this.fireViewEvent('selectsource',this._collectData()),this.getView().close())},privates:{_selectSources:function(jobSourceRepoIds,sourcesStore){var selModel=this.lookup('sourcesGrid').getSelectionModel(),selection=[];Ext.each(jobSourceRepoIds,function(item){(item=sourcesStore.getById(item))&&selection.push(item)});selection.length&&selModel.select(selection)},_isValid:function(){var vm=this.getViewModel(),
grid=this.lookup('sourcesGrid');return'backup'!=vm.get('currentSourceType.sourceType')||grid.getSelectionModel().hasSelection()?!0:(Common.ui.Msg.error('Select at least one repository'),!1)},_collectData:function(){var vm=this.getViewModel(),grid=this.lookup('sourcesGrid');return'backup'===vm.get('currentSourceType.sourceType')?grid.getSelectionModel().getSelection().map(function(r){return r.get('id')}):[]}}},0,0,0,0,['controller.main.jobs.wizard.replicasource'],0,[MainApp.view.main.jobs.wizard.dialogs,
'ReplicaSourceController'],0);Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ReplicaSourceModel',Ext.app.ViewModel,{data:{currentSourceType:null},formulas:{gridDisabled:function(get){return'storage'===get('currentSourceType.sourceType')}},stores:{sourcesStore:{fields:[{name:'id',mapping:'id',type:'string'},{name:'name',mapping:'name',type:'string'}]}}},0,0,0,0,['viewmodel.main.jobs.wizard.replicasource'],0,[MainApp.view.main.jobs.wizard.dialogs,'ReplicaSourceModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ReplicaSource',Veeam.base.view.BaseWindow,{bodyPadding:0,viewModel:{type:'main.jobs.wizard.replicasource'},controller:'main.jobs.wizard.replicasource',config:{repositories:[],jobSourceRepoIds:[]},title:'Source Repositories',cardTitle:'Choose where this replication job should be obtaining VM data from',description:'Replicating from backup files reduces impact on production storage',width:500,resizable:!1,cls:'source-repositories',layout:{type:'vbox',
align:'stretch'},items:[{flex:1,xtype:'container',layout:{type:'vbox',align:'stretch'},padding:'0 16 16 16',items:[{xtype:'radiogroup',bind:'{currentSourceType}',layout:{type:'vbox',align:'stretch'},items:[{xtype:'radio',boxLabel:'From production storage (actual VM state)',name:'sourceType',reference:'storageRadio',inputValue:'storage'},{xtype:'component',cls:'text-secondary',html:'Obtains the most recent VM state directly from the production storage. Allows to replicate VM more often than you back them up.',
margin:'0 0 8 28'},{xtype:'radio',boxLabel:'From backup files (latest VM state available in backups)',name:'sourceType',reference:'backupRadio',inputValue:'backup'}]},{xtype:'grid',margin:'0 0 0 32',reference:'sourcesGrid',minHeight:150,maxHeight:220,maskOnDisable:!1,reserveScrollbar:!0,scrollable:!0,viewConfig:{stripeRows:!1,maskOnDisable:!0,bind:{disabled:'{gridDisabled}'}},selModel:{selType:'checkboxmodel',headerWidth:30},columns:[{header:'Backup repositories',dataIndex:'name',flex:1,menuDisabled:!0,
sortable:!1}],bind:{store:'{sourcesStore}',disabled:'{gridDisabled}'}}]}],buttons:[{text:'OK',ui:'primary',handler:'onBtnHandler'},{text:'Cancel',ui:'alternate',handler:function(btn){btn.up('window').close()}}]},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,[[Veeam.mixin.WizardCardTitle.prototype.mixinId||Veeam.mixin.WizardCardTitle.$className,Veeam.mixin.WizardCardTitle]],[MainApp.view.main.jobs.wizard.dialogs,'ReplicaSource'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.VmsCard',MainApp.view.main.jobs.wizard.BaseJobWizardCard,{viewModel:{},controller:'main.jobs.wizard.vmscard',config:{jobId:null,platform:null},cls:'jobs-wizard-vmscard',title:'Virtual machines',cardTitle:'Select virtual machines to process',items:[{xtype:'main-jobs-wizard-vmsgrid',reference:'vmsGrid',listeners:{changedata:'onChangeData',openexclusions:'onOpenExclusionsDialog'}}],listeners:{activate:'onCardActivate',deactivate:'onCardDeactivate'}},0,['main-jobs-wizard-vmscard',
'main.jobs.wizard.vmscard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.jobs.wizard.vmscard main-jobs-wizard-vmscard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.jobs.wizard.vmscard':!0,'main-jobs-wizard-vmscard':!0},['widget.main-jobs-wizard-vmscard','widget.main.jobs.wizard.vmscard'],0,[MainApp.view.main.jobs.wizard,'VmsCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.GuestProcessingCardModel',Ext.app.ViewModel,{data:{guestprocessingcard:{title:'Guest Processing',description:'Choose guest OS processing options available for running machines'},enableImgProcessing:{label:'Enable application-aware image-processing',tip:'Detects and prepares applications for consistent backup, performs transaction logs processing, and configures the OS to perform required application restore steps upon first boot.',btnText:'Customize application handling options for individual machines and applications'},
enableIndexing:{label:'Enable guest file system indexing',tip:'Indexes guest OS files inside processed machine to enable browsing and searching for guest files in backup. Indexing is completely optional, and not required to be able to perform instant file level recovery.',btnText:'Customize advanced guest file system indexing options for individual machines'},credentials:{btnText:'Customize guest OS credentials for individual machines and operating systems'},selectedCredential:null},formulas:{enableCredentialsSelect:{bind:{enableIndexing:'{enableCustomizeIndexing}',
enableApplications:'{job.guestProcessingOptions.vssSnapshotOptions.enabled}'},get:function(data){return data.enableApplications||data.enableIndexing}},changeCredentials:{bind:'{selectedCredential}',get:function(record){record&&(record.get('isLinux')?(this.set('job.guestProcessingOptions.linCredsId',record.id),this.set('job.guestProcessingOptions.winCredsId','00000000-0000-0000-0000-000000000000')):(this.set('job.guestProcessingOptions.winCredsId',record.id),this.set('job.guestProcessingOptions.linCredsId',
'00000000-0000-0000-0000-000000000000')))}},enableCustomizeIndexing:{bind:{winIndexingType:'{job.guestProcessingOptions.winGuestFSIndexingOptions.indexingType}',linIndexingType:'{job.guestProcessingOptions.linGuestFSIndexingOptions.indexingType}'},get:function(data){var jobWizard=MainApp.view.main.jobs.wizard.JobWizard;return data.winIndexingType==jobWizard.guestFSIndexingType.EVERY_FOLDERS&&data.linIndexingType==jobWizard.guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS},set:function(value){var jobWizard=
MainApp.view.main.jobs.wizard.JobWizard;value?(this.set('job.guestProcessingOptions.winGuestFSIndexingOptions.indexingType',jobWizard.guestFSIndexingType.EVERY_FOLDERS),this.set('job.guestProcessingOptions.linGuestFSIndexingOptions.indexingType',jobWizard.guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS)):(this.set('job.guestProcessingOptions.winGuestFSIndexingOptions.indexingType',jobWizard.guestFSIndexingType.NONE),this.set('job.guestProcessingOptions.linGuestFSIndexingOptions.indexingType',jobWizard.guestFSIndexingType.NONE))}}},
stores:{credentialsStore:{storeId:'credentials-store',fields:[{name:'id',type:'string'},{name:'name',type:'safestring'},{name:'isLinux',type:'boolean'}],idProperty:'id',data:[]}}},0,0,0,0,['viewmodel.main.jobs.wizard.guestprocessingcard'],0,[MainApp.view.main.jobs.wizard,'GuestProcessingCardModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialogGrid',Veeam.base.view.DeferredMaskGrid,{viewModel:{data:{selectedRecord:null}},config:{addBtnText:'Add machine...',editBtnText:'Edit...',removeBtnText:'Remove'},flex:1,padding:0,margin:0,columns:[{text:'Object',dataIndex:'entity.text'}],initComponent:function(){var store=Ext.create('Ext.data.Store',{fields:[{name:'id'},{name:'entity'},{name:'isIncluded',type:'boolean'},{name:'guestProcessingOptions'},{name:'isChild',type:'boolean'},
{name:'orderNum',type:'int'},{name:'policy',type:'int'},{name:'removable',type:'boolean',calculate:function(data){return data.policy}},{name:'text',type:'safestring',calculate:function(data){return data.entity.text}}]});Ext.apply(this,{store:store,dockedItems:[{xtype:'toolbar',dock:'top',defaults:{xtype:'button',scope:this},items:[{text:this.getAddBtnText(),handler:'showBrowser',iconCls:'toolbar-add'},{text:this.getEditBtnText(),handler:'editHandler',iconCls:'toolbar-edit',bind:{disabled:'{!selectedRecord}'}},
{text:this.getRemoveBtnText(),handler:'removeHandler',iconCls:'toolbar-remove',disabled:!0,bind:{disabled:'{!selectedRecord.removable}'}}]}]});Veeam.base.view.DeferredMaskGrid.prototype.initComponent.apply(this,arguments)},bind:{selection:'{selectedRecord}'},showBrowser:function(){this.fireEvent('showbrowser',this)},removeHandler:function(){var record=this.getViewModel().get('selectedRecord');this.fireEvent('removerecord',this,record)},editHandler:function(){var record=this.getViewModel().get('selectedRecord');
this.fireEvent('editrecord',this,record)}},0,['main-jobs-wizard-basedialoggrid','main.jobs.wizard.basedialoggrid'],'component box container panel tablepanel gridpanel grid deferredmaskgrid main.jobs.wizard.basedialoggrid main-jobs-wizard-basedialoggrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,'main.jobs.wizard.basedialoggrid':!0,'main-jobs-wizard-basedialoggrid':!0},['widget.main-jobs-wizard-basedialoggrid','widget.main.jobs.wizard.basedialoggrid'],
0,[MainApp.view.main.jobs.wizard.dialogs,'BaseOptionsDialogGrid'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog',Veeam.base.view.BaseWindow,{width:1E3,height:550,minWidth:800,minHeight:400,config:{objectBrowser:null,gridData:[]},layout:'fit',initComponent:function(){var gridConfig=this.items[0];this.jobItemDefaultParams={isChild:!0,isIncluded:!1,orderNum:0,policy:0,size:0};gridConfig&&'main-jobs-wizard-basedialoggrid'===gridConfig.xtype&&(gridConfig.reference='optionsGrid',gridConfig.listeners={showbrowser:'onShowBrowser',editrecord:'onEditRecord',
removerecord:'onRemoveRecord',scope:this});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);gridConfig=this.getObjectBrowser();var grid=this.getGrid();gridConfig.on('objectselected','onSelectObjects',this);grid.getStore().loadData(this.getGridData()||[])},buttons:[{text:'OK',ui:'primary',handler:function(btn){btn=btn.up('window');var grid=btn.getGrid();btn.fireEvent('changedata',grid.getStore().getRange());btn.close()}},{text:'Cancel',ui:'alternate',handler:function(btn){btn.up('window').close()}}],
getGrid:function(){return this.lookupReference('optionsGrid')},onShowBrowser:function(){this.getObjectBrowser().show()},onEditRecord:function(grid,record){console.log('onEdit',record.data)},onRemoveRecord:function(grid,record){grid.getStore().remove(record)},onSelectObjects:function(browser,data,jobEntities){var defaults=this.jobItemDefaultParams,store=this.getGrid().getStore();Ext.each(jobEntities,function(item){item=Ext.apply(Ext.clone(defaults),{entity:item,guestProcessingOptions:MainApp.view.main.jobs.wizard.JobWizard.getDefaultGuestProcessingOptions(),
id:item.nodeId});store.add(item)})},onDestroy:function(){this.getObjectBrowser().un('objectselected','onSelectObjects',this)},updateGridData:function(data){var grid=this.getGrid();grid&&grid.getStore().loadData(data)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'BaseOptionsDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.VssSnapshotsDialog',MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog,{title:'Application-Aware Processing Options',initComponent:function(){Ext.apply(this,{items:[{xtype:'main-jobs-wizard-basedialoggrid',columns:{defaults:{xtype:'templatecolumn',menuDisabled:!0,sortable:!1},items:[{text:'Object',tpl:'\x3cdiv class\x3d"x-entity-type x-type-{entity.cls:lowercase}"\x3e{text}\x3c/div\x3e',flex:1.5},{text:'VSS',tpl:this.columnTemplates.vssColumn(),
flex:1},{text:'Transaction logs',tpl:this.columnTemplates.transactionLogsColumn(),flex:2},{text:'Excludes',tpl:this.columnTemplates.excludesColumn(),width:110}]}}]});MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog.prototype.initComponent.apply(this,arguments);this.jobItemDefaultParams.policy=MainApp.view.main.jobs.wizard.JobWizard.policyType.VSS},columnTemplates:{vssColumn:function(){return new Ext.XTemplate('{[ this.getValue(values) ]}',{getValue:function(data){data=data.guestProcessingOptions.vssSnapshotOptions;
return data.enabled?data.ignoreErrors?'Ignore failures':'Require success':'Disabled'}})},transactionLogsColumn:function(){return new Ext.XTemplate('{[ this.getValue(values) ]}',{getValue:function(data){var gp=data.guestProcessingOptions,sqlBackupOptions=gp.sqlBackupOptions,snapshotOptions=gp.vssSnapshotOptions;data=gp.oracleBackupOptions;var transactionLogsProcessing=MainApp.view.main.jobs.wizard.JobWizard.transactionLogsProcessing,archivedLogsTruncation=MainApp.view.main.jobs.wizard.JobWizard.archivedLogsTruncation,
logTruncateText=function(logProcessingType){switch(logProcessingType){case transactionLogsProcessing.ALWAYS_TRUNCATE:return'Truncate';case transactionLogsProcessing.TRUNCATE_ONLY_ON_SUCCESS_JOB:return'Truncate';case transactionLogsProcessing.BACKUP:return'Backup';default:return null}};if(!snapshotOptions.enabled||snapshotOptions.enabled&&snapshotOptions.isCopyOnly)return'Copy only';gp='Exchange: '+logTruncateText(gp.exchangeBackupOptions.transactionLogsProcessing);(sqlBackupOptions=logTruncateText(sqlBackupOptions.transactionLogsProcessing))&&
(gp+=', SQL: '+sqlBackupOptions);(data=data.backupLogsEnabled?'Backup':data.archivedLogsTruncation!==archivedLogsTruncation.DISABLED?'Delete':null)&&(gp+=', Oracle: '+data);return gp+';'}})},excludesColumn:function(){return new Ext.XTemplate('{[ this.getValue(values) ]}',{getValue:function(data){return data.guestProcessingOptions.guestFsExcludeOptions.backupScope!=MainApp.view.main.jobs.wizard.JobWizard.guestFsBackupScope.EVERYTHING?'Enabled':'Disable'}})}},onEditRecord:function(grid,record){this.fireEvent('editrecord',
grid,record)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'VssSnapshotsDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.IndexingDialog',MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog,{title:'Guest File System Indexing Options',width:700,initComponent:function(){Ext.apply(this,{items:[{xtype:'main-jobs-wizard-basedialoggrid',columns:{defaults:{xtype:'templatecolumn',menuDisabled:!0,sortable:!1},items:[{text:'Object',tpl:'\x3cdiv class\x3d"x-entity-type x-type-{entity.cls:lowercase}"\x3e{text}\x3c/div\x3e',flex:2},{header:'Windows',flex:1,tpl:this.createIndexingTpl('winGuestFSIndexingOptions')},
{header:'Linux',flex:1,tpl:this.createIndexingTpl('linGuestFSIndexingOptions')}]}}]});MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog.prototype.initComponent.apply(this,arguments);this.jobItemDefaultParams.policy=MainApp.view.main.jobs.wizard.JobWizard.policyType.GUEST_FS_INDEXING},createIndexingTpl:function(dataIndex){var guestFSIndexingType=MainApp.view.main.jobs.wizard.JobWizard.guestFSIndexingType;return new Ext.XTemplate('\x3ctpl if\x3d"this.isDisabled(this.getValue(values))"\x3eDisabled\x3c/tpl\x3e',
'\x3ctpl if\x3d"this.isEverything(this.getValue(values))"\x3eEverything\x3c/tpl\x3e','\x3ctpl if\x3d"this.isPartial(this.getValue(values))"\x3ePartial\x3c/tpl\x3e',{isDisabled:function(options){return options.indexingType===guestFSIndexingType.NONE},isEverything:function(options){return options.indexingType===guestFSIndexingType.EVERY_FOLDERS},isPartial:function(options){return options.indexingType===guestFSIndexingType.SPECIFIED_FOLDERS||options.indexingType===guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS},
getValue:function(dataModel){return dataModel.guestProcessingOptions[dataIndex]}})},onEditRecord:function(grid,record){this.fireEvent('editrecord',grid,record)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'IndexingDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.CredentialsDialog',MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog,{config:{jobId:null,credentials:[]},title:'Guest OS Credentials',initComponent:function(){Ext.apply(this,{items:[{xtype:'main-jobs-wizard-basedialoggrid',editBtnText:'Set user...',columns:{defaults:{xtype:'templatecolumn',menuDisabled:!0,sortable:!1},items:[{text:'Object',tpl:'\x3cdiv class\x3d"x-entity-type x-type-{entity.cls:lowercase}"\x3e{text}\x3c/div\x3e',flex:1},
{header:'Windows',flex:1,tpl:this.createColumnTpl('winCredsId')},{header:'Linux',flex:1,tpl:this.createColumnTpl('linCredsId')}]}}]});MainApp.view.main.jobs.wizard.dialogs.BaseOptionsDialog.prototype.initComponent.apply(this,arguments);this.jobItemDefaultParams.policy=MainApp.view.main.jobs.wizard.JobWizard.policyType.GUEST_CREDS},createColumnTpl:function(dataIndex){var me=this;return new Ext.XTemplate('{[this.getValue(values)]}',{getValue:function(data){return me._getCredentialsName(data.guestProcessingOptions[dataIndex])}})},
onEditRecord:function(grid,record){Ext.create('MainApp.view.main.jobs.wizard.dialogs.GuestCredsOptions',{jobItem:record,jobId:this.getJobId(),credentials:this.getCredentials(),listeners:{updatecreds:'onUpdateCreds',addcreds:'onAddCreds',scope:this}}).show()},onUpdateCreds:function(win,jobItem){this.getGrid().getView().refreshNode(jobItem)},onAddCreds:function(){this.fireEvent('updatecreds',this)},privates:{_getCredentialsName:function(credsId){var creds=this.getCredentials(),result='\x26lt;Default\x26gt;';
Ext.each(creds,function(item){item.id===credsId&&(result=Ext.util.Format.htmlEncode(item.name))});return result}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'CredentialsDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestCredsOptionsController',MainApp.base.controller.BaseController,{initViewModel:function(vm){var view=this.getView(),credentials=Ext.clone(view.getCredentials()),credsStore=vm.get('credentialsStore');view=view.getJobItem();var guestProcessingOptions=view.get('guestProcessingOptions');credsStore.reloadData(credentials);credentials=credsStore.getById(guestProcessingOptions.winCredsId);credsStore=credsStore.getById(guestProcessingOptions.linCredsId);
vm.set({jobItem:view,winCredsSelection:credentials,linuxCredsSelection:credsStore})},addWindowsCreds:function(field){this.windowsCredentialsDialog=Ext.create('Common.WindowsCredentials',{listeners:{select:'onSelectWindowsCreds',scope:this}});this.windowsCredentialsDialog.show()},addLinuxCreds:function(field){this.linuxCredentialsDialog=Ext.create('Common.LinuxCredentials',{listeners:{select:'onSelectLinuxCreds',scope:this}});this.linuxCredentialsDialog.show()},onSelectLinuxCreds:function(window,data){this._selectCreds(window,
data,!0)},onSelectWindowsCreds:function(window,data){this._selectCreds(window,data,!1)},okHandler:function(){var vm=this.getViewModel(),view=this.getView(),winCredsSelection=vm.get('winCredsSelection');vm=vm.get('linuxCredsSelection');var jobItem=view.getJobItem(),guestProcessingOptions=jobItem.get('guestProcessingOptions');guestProcessingOptions.winCredsId=winCredsSelection.get('id');guestProcessingOptions.linCredsId=vm.get('id');jobItem.set('guestProcessingOptions',guestProcessingOptions);this.fireViewEvent('updatecreds',
jobItem);view.close()},rpcHandlers:{createCredentials:function(response,window,data,isLinux){var view=this.getView(),credsStore=this.getViewModel().get('credentialsStore'),combo=isLinux?this.lookupReference('linuxCredsCombo'):this.lookupReference('winCredsCombo');view=view.getCredentials();!1===response.success?Common.ui.Msg.error(response):(data={id:response,name:data.description?Ext.String.format('{0} ({1})',data.username,data.description):data.username,isLinux:isLinux},credsStore.add(data),view.push(data),
combo.setValue(response),window.close(),this.fireViewEvent('addcreds',data))}},privates:{_selectCreds:function(window,data,isLinux){var me=this,jobId=me.getView().getJobId(),rpcData=window.getFormData();MainApp.service.rpc.Jobs.createCredentials(jobId,rpcData,isLinux).then(function(response){me.rpcHandlers.createCredentials.call(me,response,window,data,isLinux)},Common.ui.Msg.error)}}},0,0,0,0,['controller.main.jobs.wizard.credsoptions'],0,[MainApp.view.main.jobs.wizard.dialogs,'GuestCredsOptionsController'],
0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestCredsOptionsModel',Ext.app.ViewModel,{data:{jobItem:null,winCredsSelection:void 0,linuxCredsSelection:void 0},formulas:{},stores:{credentialsStore:{fields:['id','name',{name:'isLinux',type:'boolean',allowNull:!0}],data:[],reloadData:function(data){var defaultRecord={id:Common.util.Constants.EMPTY_GUID,name:'\x26lt;Default\x26gt;',isLinux:null};Ext.isArray(data)&&this.loadData([defaultRecord].concat(data))}},winCredsStore:{source:'{credentialsStore}',filters:[function(item){return!item.get('isLinux')}]},
linuxCredsStore:{source:'{credentialsStore}',filters:[function(item){return(item=item.get('isLinux'))||null===item}]}}},0,0,0,0,['viewmodel.main.jobs.wizard.credsoptions'],0,[MainApp.view.main.jobs.wizard.dialogs,'GuestCredsOptionsModel'],0);
Ext.cmd.derive('Veeam.view.field.CredsField',Ext.Container,{comboConfig:{},buttonConfig:{},linux:!0,windows:!0,layout:{type:'hbox',align:'stretch'},baseCls:'creds-field',fieldLabel:'Credentials',labelWidth:84,initComponent:function(){var me=this,menu=me.linux&&me.windows?[{text:'Standard Account\x26hellip;',iconCls:'windows',handler:function(){me.fireEvent('windowscredentials',me)}},{text:'Linux Account\x26hellip;',iconCls:'linux',handler:function(){me.fireEvent('linuxcredentials',me)}}]:null,handler=
me.linux&&me.windows?null:function(){me.linux&&me.fireEvent('linuxcredentials',me);me.windows&&me.fireEvent('windowscredentials',me)},label=Ext.apply({xtype:'label',text:me.fieldLabel+':',width:me.labelWidth+8,padding:'8 8 0 0'},me.labelConfig),combo=Ext.apply({xtype:'credscombofield',valueField:'id',displayField:'name',queryMode:'local',editable:!1,allowBlank:!1,flex:1},me.comboConfig);menu=Ext.apply({xtype:'button',iconCls:'add',text:'Add',ui:'text',margin:'0 0 0 24',menu:menu,handler:handler},
me.buttonConfig);me.items=[label,combo,menu];Ext.container.Container.prototype.initComponent.apply(this,arguments)},getStore:function(){return this.down('credscombofield').getStore()}},0,['credsfield'],['component','box','container','credsfield'],{component:!0,box:!0,container:!0,credsfield:!0},['widget.credsfield'],0,[Veeam.view.field,'CredsField'],0);
Ext.cmd.derive('Veeam.view.field.CredsComboField',Ext.form.ComboBox,{listConfig:{listeners:{move:function(boundlist){boundlist.refreshSize(!0)}}},getDisplayValue:function(tplData){var value=Ext.form.field.ComboBox.prototype.getDisplayValue.apply(this,arguments);return Ext.String.htmlDecode(value)}},0,['credscombofield'],'component box field textfield pickerfield combobox combo credscombofield'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,combobox:!0,combo:!0,credscombofield:!0},
['widget.credscombofield'],0,[Veeam.view.field,'CredsComboField'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestCredsOptions',Veeam.base.view.BaseWindow,{viewModel:{type:'main.jobs.wizard.credsoptions'},controller:'main.jobs.wizard.credsoptions',config:{jobId:null,jobItem:null,credentials:[]},cls:'guest-creds-options-dialog',layout:{type:'vbox',align:'stretch'},width:600,resizable:!1,initComponent:function(){var name=this.getJobItem().get('entity').text;Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);this.setTitle(name+': Processing Settings')},
items:[{xtype:'credsfield',fieldLabel:'Windows credentials',labelWidth:136,linux:!1,margin:'0 0 8 0',comboConfig:{reference:'winCredsCombo',bind:{store:'{winCredsStore}',selection:'{winCredsSelection}'}},listeners:{windowscredentials:'addWindowsCreds'}},{xtype:'credsfield',fieldLabel:'Linux credentials',labelWidth:136,windows:!1,comboConfig:{reference:'linuxCredsCombo',bind:{store:'{linuxCredsStore}',selection:'{linuxCredsSelection}'}},listeners:{linuxcredentials:'addLinuxCreds'}}],buttons:[{text:'OK',
ui:'primary',handler:'okHandler'},{text:'Cancel',ui:'alternate',handler:function(btn){btn.up('window').close()}}]},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'GuestCredsOptions'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestIndexingOptionsController',MainApp.base.controller.BaseController,{initViewModel:function(vm){var guestProcessingOptions=this.getView().getJobItem().get('guestProcessingOptions');vm.set('options',guestProcessingOptions)},okHandler:function(){var view=this.getView(),winOptionsCard=view.getWinOptionsCard(),linOptionsCard=view.getLinOptionsCard();view=view.getJobItem();var guestProcessingOptions=Ext.clone(view.get('guestProcessingOptions'));
winOptionsCard={winGuestFSIndexingOptions:winOptionsCard.getNewOptions(),linGuestFSIndexingOptions:linOptionsCard.getNewOptions()};winOptionsCard=Ext.apply(guestProcessingOptions,winOptionsCard);view.set('guestProcessingOptions',winOptionsCard);this.closeDialog()},cancelHandler:function(){this.closeDialog()},closeDialog:function(){var view=this.getView(),winOptionsCard=view.getWinOptionsCard(),linOptionsCard=view.getLinOptionsCard();winOptionsCard.down('radiogroup').destroy();linOptionsCard.down('radiogroup').destroy();
view.close()}},0,0,0,0,['controller.main.jobs.wizard.indexingoptions'],0,[MainApp.view.main.jobs.wizard.dialogs,'GuestIndexingOptionsController'],0);Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestIndexingOptionsModel',Ext.app.ViewModel,{data:{options:null},formulas:{},stores:{}},0,0,0,0,['viewmodel.main.jobs.wizard.indexingoptions'],0,[MainApp.view.main.jobs.wizard.dialogs,'GuestIndexingOptionsModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.FilesGrid',Veeam.base.view.DeferredMaskGrid,{viewModel:{},config:{hideDefaultBtn:!1,defaultFolders:[],maskOnDisable:!1},columns:[{text:null,dataIndex:'folder',renderer:Ext.util.Format.htmlEncode,flex:1,editor:{xtype:'textfield',allowOnlyWhitespace:!1,flex:1,anchor:'100%',validator:function(value){return value&&this.existingValues&&Ext.isArray(this.existingValues)&&this.existingValues.length&&Ext.Array.contains(this.existingValues,value)?'Specified folder already exists':
!0}},menuDisabled:!0,sortable:!1,draggable:!1}],margin:0,padding:0,height:168,cls:'files-list',store:{fields:[{name:'folder',type:'string'}],idProperty:'folder',data:[]},selModel:'rowmodel',plugins:{ptype:'common-rowediting',errorSummary:!1,saveBtnText:'Ok'},initComponent:function(){Ext.apply(this,{dockedItems:[{xtype:'toolbar',dock:'top',maskOnDisable:!1,defaults:{xtype:'button',scope:this},items:[{text:'Add',iconCls:'toolbar-add',handler:this.handlers.addHandler,scope:this},{text:'Remove',iconCls:'toolbar-remove',
ctype:'removeBtn',disabled:!0,handler:this.handlers.removeHandler,scope:this},{text:'Default',iconCls:'toolbar-default',handler:this.handlers.defaultHandler,hidden:this.getHideDefaultBtn(),scope:this}]}],listeners:{canceledit:this.handlers.onCancelEdit,edit:this.handlers.onEdit,beforeedit:this.handlers.onBeforeEdit,selectionchange:this.handlers.onSelectionChange,scope:this}});Veeam.base.view.DeferredMaskGrid.prototype.initComponent.apply(this,arguments)},onDisable:function(){var plugin=this.findPlugin('common-rowediting');
plugin&&plugin.cancelEdit()},handlers:{addHandler:function(){var record=this.getStore().add({folder:''})[0];this.editingPlugin.startEdit(record);record.isNew=!0},removeHandler:function(){var selection=this.getViewModel().get(this.reference+'.selection'),store=this.getStore();selection&&selection.isModel&&store.remove(selection);this.fireEvent('datachange',this,store)},defaultHandler:function(){this.loadData(this.getDefaultFolders());this.fireEvent('datachange',this,this.getStore())},onCancelEdit:function(editor,
e){e.record.isNew&&e.grid.getStore().remove(e.record)},onEdit:function(editor,e){e.record.isNew=!1;e.record.commit();this.fireEvent('datachange',e.grid,e.grid.getStore())},onBeforeEdit:function(editor,e){var field=editor.editor.form.getFields().items[0],existingValues=[];e.grid.getStore().each(function(item){item=item.get('folder');e.value&&e.value==item||existingValues.push(item)});field.existingValues=existingValues;setTimeout(function(){field.clearInvalid()},1)},onSelectionChange:function(grid,
selected){this.down('[ctype\x3dremoveBtn]').setDisabled(!selected.length)}},loadData:function(data){var store=this.getStore(),result=[];Ext.each(data||[],function(str){result.push({folder:str})});store.loadData(result)},getDataAsArray:function(){var result=[];this.getStore().each(function(record){result.push(record.get('folder'))});return result}},0,['main-jobs-wizard-files','main.jobs.wizard.files'],'component box container panel tablepanel gridpanel grid deferredmaskgrid main.jobs.wizard.files main-jobs-wizard-files'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,'main.jobs.wizard.files':!0,'main-jobs-wizard-files':!0},['widget.main-jobs-wizard-files','widget.main.jobs.wizard.files'],0,[MainApp.view.main.jobs.wizard.dialogs,'FilesGrid'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestIndexingOptionsCard',Ext.Panel,{layout:'fit',config:{rbName:'test',options:void 0,defaultFolders:[]},initComponent:function(){var rbName=this.getRbName(),guestFSIndexingType=MainApp.view.main.jobs.wizard.JobWizard.guestFSIndexingType,defaultFolders=this.getDefaultFolders();Ext.apply(this,{items:[{xtype:'radiogroup',layout:{type:'vbox',align:'stretch'},bind:{value:'{indexingType}'},items:[{boxLabel:'Disable indexing',name:rbName,inputValue:guestFSIndexingType.NONE},
{boxLabel:'Index everything',name:rbName,inputValue:guestFSIndexingType.EVERY_FOLDERS},{boxLabel:'Index everything except folders',name:rbName,inputValue:guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS},{xtype:'main-jobs-wizard-files',ctype:'exceptSpecifiedFoldersGrid',reference:this.getId()+'-excludedFoldersGrid',defaultFolders:defaultFolders,bind:{disabled:'{disabledExceptSpecifiedFoldersGrid}'},margin:'0 0 16 0'},{boxLabel:'Index only following folders',name:rbName,inputValue:guestFSIndexingType.SPECIFIED_FOLDERS},
{xtype:'main-jobs-wizard-files',ctype:'specifiedFoldersGrid',reference:this.getId()+'-includedFoldersGrid',hideDefaultBtn:!0,bind:{disabled:'{disabledSpecifiedFoldersGrid}'}}]}]});Ext.panel.Panel.prototype.initComponent.apply(this,arguments)},afterRender:function(){var options=this.getOptions(),rbValue={};Ext.panel.Panel.prototype.afterRender.apply(this,arguments);var excludedGrid=this.getExcludedGrid(),includedGrid=this.getIncludedGrid();excludedGrid.loadData(options.excludedFolders);includedGrid.loadData(options.includedFolders);
rbValue[this.getRbName()]=options.indexingType;this.getViewModel().set('indexingType',rbValue)},getNewOptions:function(){return{indexingType:this.getIndexingType(),excludedFolders:this.getExcludedGrid().getDataAsArray(),includedFolders:this.getIncludedGrid().getDataAsArray()}},privates:{getExcludedGrid:function(){return this.down('main-jobs-wizard-files[ctype\x3dexceptSpecifiedFoldersGrid]')},getIncludedGrid:function(){return this.down('main-jobs-wizard-files[ctype\x3dspecifiedFoldersGrid]')},getIndexingType:function(){var value=
this.down('radiogroup').getValue(),rbName=this.getRbName();return value[rbName]}}},0,['main-jobs-wizard-indexingoptionscard','main.jobs.wizard.indexingoptionscard'],'component box container panel main.jobs.wizard.indexingoptionscard main-jobs-wizard-indexingoptionscard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.jobs.wizard.indexingoptionscard':!0,'main-jobs-wizard-indexingoptionscard':!0},['widget.main-jobs-wizard-indexingoptionscard','widget.main.jobs.wizard.indexingoptionscard'],
0,[MainApp.view.main.jobs.wizard.dialogs,'GuestIndexingOptionsCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.GuestIndexingOptions',Veeam.base.view.BaseWindow,{viewModel:{type:'main.jobs.wizard.indexingoptions'},controller:'main.jobs.wizard.indexingoptions',config:{jobId:null,jobItem:null},cls:'guest-indexing-options-dialog',layout:'fit',width:450,resizable:!1,title:'Indexing Settings',initComponent:function(){var jobItem=this.getJobItem(),name=jobItem.get('entity').text;jobItem=jobItem.get('guestProcessingOptions');var guestFSIndexingType=MainApp.view.main.jobs.wizard.JobWizard.guestFSIndexingType;
Ext.apply(this,{items:[{xtype:'tabpanel',deferredRender:!1,items:[{xtype:'main-jobs-wizard-indexingoptionscard',title:'Windows',rbName:'winOptions',defaultFolders:['%windir%','%ProgramFiles%','%ProgramFiles(x86)%','%ProgramW6432%','%TEMP%'],options:jobItem.winGuestFSIndexingOptions,viewModel:{formulas:{disabledExceptSpecifiedFoldersGrid:{bind:'{indexingType.winOptions}',deep:!0,get:function(indexingType){return indexingType!==guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS}},disabledSpecifiedFoldersGrid:{bind:'{indexingType.winOptions}',
deep:!0,get:function(indexingType){return indexingType!==guestFSIndexingType.SPECIFIED_FOLDERS}}}}},{xtype:'main-jobs-wizard-indexingoptionscard',title:'Linux',rbName:'linuxOptions',defaultFolders:'/cdrom /dev /media /mnt /proc /tmp /lost+found'.split(' '),options:jobItem.linGuestFSIndexingOptions,viewModel:{formulas:{disabledExceptSpecifiedFoldersGrid:{bind:'{indexingType.linuxOptions}',deep:!0,get:function(indexingType){return indexingType!==guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS}},disabledSpecifiedFoldersGrid:{bind:'{indexingType.linuxOptions}',
deep:!0,get:function(indexingType){return indexingType!==guestFSIndexingType.SPECIFIED_FOLDERS}}}}}]}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);this.setTitle(name+': Indexing Settings')},buttons:[{text:'OK',ui:'primary',handler:'okHandler'},{text:'Cancel',ui:'alternate',handler:'cancelHandler'}],getWinOptionsCard:function(){return this.down('main-jobs-wizard-indexingoptionscard[rbName\x3dwinOptions]')},getLinOptionsCard:function(){return this.down('main-jobs-wizard-indexingoptionscard[rbName\x3dlinuxOptions]')}},
0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'GuestIndexingOptions'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsController',MainApp.base.controller.BaseController,{initViewModel:function(vm){var view=this.getView(),jobItem=view.getJobItem(),isReplica=view.getIsReplica();view=view.getCredentials()||[];jobItem=jobItem.get('guestProcessingOptions');this.defaultOptions=Ext.clone(jobItem);vm.set('options',jobItem);vm.set('isReplica',isReplica);vm.set('credentials',view)},okHandler:function(){var jobItem=this.getView().getJobItem(),vm=this.getViewModel();
jobItem.set('guestProcessingOptions',Ext.clone(vm.get('options')));this.closeDialog()},cancelHandler:function(){var options=this.getViewModel().get('options');options.exchangeBackupOptions=this.defaultOptions.exchangeBackupOptions;options.guestFsExcludeOptions=this.defaultOptions.guestFsExcludeOptions;options.linCredsId=this.defaultOptions.linCredsId;options.linGuestFSIndexingOptions=this.defaultOptions.linGuestFSIndexingOptions;options.oracleBackupOptions=this.defaultOptions.oracleBackupOptions;
options.sqlBackupOptions=this.defaultOptions.sqlBackupOptions;options.vssSnapshotOptions=this.defaultOptions.vssSnapshotOptions;options.winCredsId=this.defaultOptions.winCredsId;options.winGuestFSIndexingOptions=this.defaultOptions.winGuestFSIndexingOptions;this.closeDialog()},closeDialog:function(){var view=this.getView();view.down('main-jobs-wizard-applications-options-file-exclusions').down('radiogroup').destroy();view.close()}},0,0,0,0,['controller.main.jobs.wizard.applicationsoptions'],0,[MainApp.view.main.jobs.wizard.dialogs,
'ApplicationsOptionsController'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsModel',Ext.app.ViewModel,{data:{options:null,isReplica:!1,credentials:[]},formulas:{disabledTransactionLogs:{bind:{enabled:'{options.vssSnapshotOptions.enabled}',isCopyOnly:'{options.vssSnapshotOptions.isCopyOnly}'},get:function(data){return!data.enabled||data.isCopyOnly}}},stores:{}},0,0,0,0,['viewmodel.main.jobs.wizard.applicationsoptions'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsGeneralCardModel',Ext.app.ViewModel,{data:{},formulas:{generalOptions:{bind:{enabled:'{options.vssSnapshotOptions.enabled}',ignoreErrors:'{options.vssSnapshotOptions.ignoreErrors}',isCopyOnly:'{options.vssSnapshotOptions.isCopyOnly}'},get:function(data){var generalCard=MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsGeneralCard;return{aware:data.enabled?data.ignoreErrors?generalCard.awareProcessing.IGNORE_FAILURE:generalCard.awareProcessing.REQUIRE_SUCCESSFUL:
generalCard.awareProcessing.DISABLE,transactionLogs:data.isCopyOnly?generalCard.transactionLogsProcessing.ONLY_COPY:generalCard.transactionLogsProcessing.NOT_ONLY_COPY}},set:function(value){var aware=value.aware;value=value.transactionLogs;var generalCard=MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsGeneralCard;void 0!==aware&&(this.set('options.vssSnapshotOptions.enabled',aware!=generalCard.awareProcessing.DISABLE),this.set('options.vssSnapshotOptions.ignoreErrors',aware==generalCard.awareProcessing.IGNORE_FAILURE));
void 0!==value&&this.set('options.vssSnapshotOptions.isCopyOnly',value==generalCard.transactionLogsProcessing.ONLY_COPY)}}},stores:{}},0,0,0,0,['viewmodel.main.jobs.wizard.applications.options.general'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsGeneralCardModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsGeneralCard',Ext.Panel,{statics:{awareProcessing:{REQUIRE_SUCCESSFUL:0,IGNORE_FAILURE:1,DISABLE:2},transactionLogsProcessing:{NOT_ONLY_COPY:0,ONLY_COPY:1}},viewModel:{type:'main.jobs.wizard.applications.options.general'},initComponent:function(){Ext.apply(this,{items:[{xtype:'wizard-cardsection',cls:'first-wizard-cardsection',title:'Applications:',items:[{xtype:'component',html:'Application-aware processing detects and prepares applications for consistent backup using application-specific methods, and configures the OS to perform required application restore steps upon first boot.'},
{xtype:'radiogroup',margin:'15 0 0 0',layout:{type:'vbox',align:'stretch'},bind:'{generalOptions}',items:[{boxLabel:'Require successful application processing',name:'aware',inputValue:this.self.awareProcessing.REQUIRE_SUCCESSFUL},{boxLabel:'Ignore application processing failures',name:'aware',inputValue:this.self.awareProcessing.IGNORE_FAILURE},{boxLabel:'Disable application processing',name:'aware',inputValue:this.self.awareProcessing.DISABLE}]}]},{xtype:'wizard-cardsection',title:'Transaction logs processing',
items:[{xtype:'label',disabled:!0,bind:{disabled:'{!options.vssSnapshotOptions.enabled}'},text:'Choose whether this job should process transaction logs upon successful backup. Logs pruning is supported for Microsoft Exchange, Microsoft SQL Server and Oracle.'},{xtype:'radiogroup',disabled:!0,bind:{value:'{generalOptions}',disabled:'{!options.vssSnapshotOptions.enabled}'},margin:'15 0 0 0',layout:{type:'vbox',align:'stretch'},items:[{boxLabel:'Process transaction logs with this job (recommended)',
name:'transactionLogs',inputValue:this.self.transactionLogsProcessing.NOT_ONLY_COPY},{boxLabel:'Perform copy only (lets another application use logs)',name:'transactionLogs',inputValue:this.self.transactionLogsProcessing.ONLY_COPY}]}]}]});Ext.panel.Panel.prototype.initComponent.apply(this,arguments)}},0,['main-jobs-wizard-applications-options-general','main.jobs.wizard.applications.options.general'],'component box container panel main.jobs.wizard.applications.options.general main-jobs-wizard-applications-options-general'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,'main.jobs.wizard.applications.options.general':!0,'main-jobs-wizard-applications-options-general':!0},['widget.main-jobs-wizard-applications-options-general','widget.main.jobs.wizard.applications.options.general'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsGeneralCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsSqlCardModel',Ext.app.ViewModel,{data:{},formulas:{sqlTransactionLog:{bind:'{options.sqlBackupOptions.transactionLogsProcessing}',get:function(transactionLogsProcessing){return{transactionLogsProcessing:transactionLogsProcessing}},set:function(value){this.set('options.sqlBackupOptions.transactionLogsProcessing',value.transactionLogsProcessing)}},sqlBackupSettingsDisabled:function(get){return get('options.sqlBackupOptions.transactionLogsProcessing')!==
MainApp.view.main.jobs.wizard.JobWizard.transactionLogsProcessing.BACKUP},sqlUseDbBackupRetention:{bind:'{options.sqlBackupOptions.useDbBackupRetention}',get:function(useDbBackupRetention){return{useDbBackupRetention:useDbBackupRetention}},set:function(value){this.set('options.sqlBackupOptions.useDbBackupRetention',!!value.useDbBackupRetention)}}},stores:{}},0,0,0,0,['viewmodel.main.jobs.wizard.applications.options.sql'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsSqlCardModel'],
0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsSqlCard',Ext.form.Panel,{cls:'guest-applications-options-sql-card',viewModel:{type:'main.jobs.wizard.applications.options.sql'},initComponent:function(){var transactionLogsProcessing=MainApp.view.main.jobs.wizard.JobWizard.transactionLogsProcessing;Ext.apply(this,{items:[{xtype:'wizard-cardsection',cls:'first-wizard-cardsection',title:'Choose how this job should process Microsoft SQL Server transaction logs',items:[{xtype:'radiogroup',layout:{type:'vbox',
align:'stretch'},bind:'{sqlTransactionLog}',items:[{boxLabel:'Truncate logs (prevents logs from growing forever)',name:'transactionLogsProcessing',inputValue:transactionLogsProcessing.TRUNCATE_ONLY_ON_SUCCESS_JOB},{boxLabel:'Do not truncate logs (requires simple recovery model)',name:'transactionLogsProcessing',inputValue:transactionLogsProcessing.NEVER_TRUNCATE},{boxLabel:'Backup logs periodically (backed up logs are truncated)',name:'transactionLogsProcessing',inputValue:transactionLogsProcessing.BACKUP,
bind:{hidden:'{isReplica}'}}]},{xtype:'container',margin:'0 0 0 30',layout:{type:'vbox',align:'stretch'},bind:{hidden:'{isReplica}'},items:[{xtype:'fieldcontainer',layout:{type:'hbox'},disabled:!0,bind:{disabled:'{sqlBackupSettingsDisabled}'},width:350,items:[{xtype:'numberfield',fieldLabel:'Backup logs every',allowBlank:!1,labelWidth:118,labelSeparator:'',maxValue:480,minValue:5,allowDecimals:!1,bind:'{options.sqlBackupOptions.backupLogsFrequencyMin}'},{xtype:'label',text:'minutes',padding:'8 0 0 10'}]},
{xtype:'label',text:'Retain log backups:',margin:'15 0 5 0',style:{'font-weight':'bold'},disabled:!0,bind:{disabled:'{sqlBackupSettingsDisabled}'}},{xtype:'radiogroup',layout:{type:'vbox',align:'stretch'},bind:{disabled:'{sqlBackupSettingsDisabled}',value:'{sqlUseDbBackupRetention}'},items:[{boxLabel:'Until the corresponding image-level backup is deleted',name:'useDbBackupRetention',inputValue:1},{xtype:'fieldcontainer',layout:{type:'hbox'},width:350,items:[{xtype:'radio',boxLabel:'Keep only last',
name:'useDbBackupRetention',inputValue:0,width:115},{xtype:'numberfield',allowBlank:!1,margin:'0 0 0 10',allowDecimals:!1,maxValue:60,minValue:1,bind:{value:'{options.sqlBackupOptions.retainDays}',disabled:'{options.sqlBackupOptions.useDbBackupRetention}'}},{xtype:'label',text:'days',padding:'8 0 0 10',bind:{disabled:'{options.sqlBackupOptions.useDbBackupRetention}'}}]}]}]}]}]});Ext.form.Panel.prototype.initComponent.apply(this,arguments)}},0,['main-jobs-wizard-applications-options-sql','main.jobs.wizard.applications.options.sql'],
'component box container panel form main.jobs.wizard.applications.options.sql main-jobs-wizard-applications-options-sql'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'main.jobs.wizard.applications.options.sql':!0,'main-jobs-wizard-applications-options-sql':!0},['widget.main-jobs-wizard-applications-options-sql','widget.main.jobs.wizard.applications.options.sql'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsSqlCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsOracleCardModel',Ext.app.ViewModel,{data:{selectedCredential:null},formulas:{archivedLogsTruncation:{bind:'{options.oracleBackupOptions.archivedLogsTruncation}',get:function(archivedLogsTruncation){return{archivedLogsTruncation:archivedLogsTruncation}},set:function(value){this.set('options.oracleBackupOptions.archivedLogsTruncation',value.archivedLogsTruncation)}},disabledOracleArchivedLogsMaxAgeHours:function(get){return get('options.oracleBackupOptions.archivedLogsTruncation')!==
MainApp.view.main.jobs.wizard.JobWizard.archivedLogsTruncation.BY_AGE},disabledOracleArchivedLogsMaxSizeGb:function(get){return get('options.oracleBackupOptions.archivedLogsTruncation')!==MainApp.view.main.jobs.wizard.JobWizard.archivedLogsTruncation.BY_SIZE},oracleUseDbBackupRetention:{bind:'{options.oracleBackupOptions.useDbBackupRetention}',get:function(useDbBackupRetention){return{useDbBackupRetention:useDbBackupRetention}},set:function(value){this.set('options.oracleBackupOptions.useDbBackupRetention',
!!value.useDbBackupRetention)}}},stores:{credentialsStore:{fields:[{name:'id',type:'string'},{name:'name',type:'string'},{name:'isLinux',type:'boolean'}],idProperty:'id',data:[],loadWindowsCreds:function(allCreds){var store=this;store.loadData([{id:Common.util.Constants.EMPTY_GUID,name:'Use guest credentials',isLinux:!1}]);Ext.each(allCreds,function(item){!1===item.isLinux&&store.add(item)})}}}},0,0,0,0,['viewmodel.main.jobs.wizard.applications.options.oracle'],0,[MainApp.view.main.jobs.wizard.dialogs,
'ApplicationsOptionsOracleCardModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsOracleCard',Ext.Panel,{cls:'guest-applications-options-oracle-card',viewModel:{type:'main.jobs.wizard.applications.options.oracle'},referenceHolder:!0,config:{jobId:null},initComponent:function(){var archivedLogsTruncation=MainApp.view.main.jobs.wizard.JobWizard.archivedLogsTruncation;Ext.apply(this,{items:[{xtype:'wizard-cardsection',cls:'first-wizard-cardsection',title:'Choose how this job should process Oracle archived logs',items:[{xtype:'credsfield',
linux:!1,margin:'0 0 8 0',layout:{type:'hbox',align:'end'},labelConfig:{hidden:!0},comboConfig:{fieldLabel:'Specify Oracle account with SYSDBA privileges',labelAlign:'top',reference:'comboCredentials',bind:{store:'{credentialsStore}',selection:'{selectedCredential}'},listeners:{change:'onCredentialsChange',scope:this}},listeners:{windowscredentials:'openWinCredentialsMenu',scope:this}},{xtype:'radiogroup',margin:'15 0 0 0',layout:{type:'table',columns:2,tdAttrs:{width:'182px'}},bind:'{archivedLogsTruncation}',
items:[{xtype:'radio',boxLabel:'Do not delete archived logs',name:'archivedLogsTruncation',inputValue:archivedLogsTruncation.DISABLED,colspan:2},{boxLabel:'Delete logs older than:',name:'archivedLogsTruncation',inputValue:archivedLogsTruncation.BY_AGE},{xtype:'fieldcontainer',bind:{disabled:'{disabledOracleArchivedLogsMaxAgeHours}'},layout:'hbox',items:[{xtype:'numberfield',maxValue:60,minValue:1,allowDecimals:!1,allowBlank:!1,bind:'{options.oracleBackupOptions.archivedLogsMaxAgeHours}'},{xtype:'label',
text:'hours',padding:'8 0 0 10'}]},{boxLabel:'Delete logs over:',name:'archivedLogsTruncation',inputValue:archivedLogsTruncation.BY_SIZE},{xtype:'fieldcontainer',layout:'hbox',bind:{disabled:'{disabledOracleArchivedLogsMaxSizeGb}'},items:[{xtype:'numberfield',maxValue:999,minValue:1,allowDecimals:!1,allowBlank:!1,bind:'{options.oracleBackupOptions.archivedLogsMaxSizeGb}'},{xtype:'label',text:'GB',padding:'8 0 0 10'}]},{xtype:'checkbox',boxLabel:'Backup logs every:',bind:{value:'{options.oracleBackupOptions.backupLogsEnabled}'}},
{xtype:'fieldcontainer',layout:'hbox',bind:{disabled:'{!options.oracleBackupOptions.backupLogsEnabled}'},items:[{xtype:'numberfield',maxValue:480,minValue:5,allowDecimals:!1,allowBlank:!1,bind:'{options.oracleBackupOptions.backupLogsFrequencyMin}'},{xtype:'label',text:'minutes',padding:'8 0 0 10'}]}]},{xtype:'radiogroup',margin:'15 30 0 30',layout:{type:'vbox',align:'stretch'},disabled:!0,bind:{value:'{oracleUseDbBackupRetention}',disabled:'{!options.oracleBackupOptions.backupLogsEnabled}'},items:[{xtype:'label',
text:'Retain log backups:',style:{'font-weight':'bold'}},{xtype:'radio',boxLabel:'Until the corresponding image-level backup is deleted',margin:'5 0 0 0',name:'useDbBackupRetention',inputValue:1},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'Keep only last',name:'useDbBackupRetention',inputValue:0,width:152},{xtype:'numberfield',maxValue:60,minValue:1,allowDecimals:!1,allowBlank:!1,bind:{value:'{options.oracleBackupOptions.retainDays}',disabled:'{options.oracleBackupOptions.useDbBackupRetention}'}},
{xtype:'label',text:'days',padding:'8 0 0 10',bind:{disabled:'{options.oracleBackupOptions.useDbBackupRetention}'}}]}]}]}]});Ext.panel.Panel.prototype.initComponent.apply(this,arguments)},afterRender:function(){var vm=this.getViewModel(),allCreds=vm.get('credentials'),store=vm.get('credentialsStore'),selectionId=vm.get('options.oracleBackupOptions.sysDbaCredsId');Ext.panel.Panel.prototype.afterRender.apply(this,arguments);store.loadWindowsCreds(allCreds);selectionId&&(allCreds=store.getById(selectionId))&&
vm.set('selectedCredential',allCreds)},openWinCredentialsMenu:function(){this.windowsCredentialsDialog=Ext.create('Common.WindowsCredentials',{listeners:{select:'onSelectWindowsCreds',scope:this}});this.windowsCredentialsDialog.show()},onSelectWindowsCreds:function(window,data){var me=this,jobId=me.getJobId(),rpcData=window.getFormData(),isLinux='linux'===window.getCredsType();MainApp.service.rpc.Jobs.createCredentials(jobId,rpcData,isLinux).then(function(response){me._createCredentials.call(me,response,
window,data)},Common.ui.Msg.error).always(Ext.emptyFn)},onCredentialsChange:function(como,value){value&&this.getViewModel().set('options.oracleBackupOptions.sysDbaCredsId',value)},privates:{_createCredentials:function(response,window,data){var vm=this.getViewModel(),store=vm.get('credentialsStore'),credentials=vm.get('credentials'),combo=this.lookupReference('comboCredentials');credentials.push({id:response,name:Ext.String.htmlEncode(data.description?Ext.String.format('{0} ({1})',data.username,data.description):
data.username),isLinux:!1});vm.set('options.oracleBackupOptions.sysDbaCredsId',response);combo.getStore().loadData(credentials);(response=store.getById(response))&&vm.set('selectedCredential',response);window.close()}}},0,['main-jobs-wizard-applications-options-oracle','main.jobs.wizard.applications.options.oracle'],'component box container panel main.jobs.wizard.applications.options.oracle main-jobs-wizard-applications-options-oracle'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.jobs.wizard.applications.options.oracle':!0,
'main-jobs-wizard-applications-options-oracle':!0},['widget.main-jobs-wizard-applications-options-oracle','widget.main.jobs.wizard.applications.options.oracle'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsOracleCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsFileExclusionsCardModel',Ext.app.ViewModel,{data:{},formulas:{backupScope:{bind:'{options.guestFsExcludeOptions.backupScope}',get:function(backupScope){return{backupScope:backupScope}},set:function(value){this.set('options.guestFsExcludeOptions.backupScope',value.backupScope)}},disabledExcludedFilesGrid:function(get){return get('options.guestFsExcludeOptions.backupScope')!==MainApp.view.main.jobs.wizard.JobWizard.guestFsBackupScope.EXCLUDE_SPECIFIED_FOLDERS},
disabledIncludedFilesGrid:function(get){return get('options.guestFsExcludeOptions.backupScope')!==MainApp.view.main.jobs.wizard.JobWizard.guestFsBackupScope.INCLUDE_SPECIFIED_FOLDERS}},stores:{}},0,0,0,0,['viewmodel.main.jobs.wizard.applications.options.fileexclusions'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsFileExclusionsCardModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptionsFileExclusionsCard',Ext.Panel,{viewModel:{type:'main.jobs.wizard.applications.options.fileexclusions'},cls:'guest-applications-options-file-exclusions-card',layout:{type:'hbox',align:'stretch'},referenceHolder:!0,initComponent:function(){var guestFsBackupScope=MainApp.view.main.jobs.wizard.JobWizard.guestFsBackupScope;Ext.apply(this,{items:[{xtype:'radiogroup',flex:1,layout:{type:'vbox',align:'stretch'},bind:{value:'{backupScope}'},
items:[{boxLabel:'Disable file level exclusions',name:'backupScope',inputValue:guestFsBackupScope.EVERYTHING},{boxLabel:'Exclude the following files and folders:',name:'backupScope',inputValue:guestFsBackupScope.EXCLUDE_SPECIFIED_FOLDERS},{xtype:'main-jobs-wizard-files',height:192,margin:'0 0 10 0',reference:'excludedFilesGrid',hideDefaultBtn:!0,bind:{disabled:'{disabledExcludedFilesGrid}'},listeners:{datachange:'onDataChange',scope:this}},{boxLabel:'Include only the following files and folders:',
name:'backupScope',inputValue:guestFsBackupScope.INCLUDE_SPECIFIED_FOLDERS},{xtype:'main-jobs-wizard-files',height:192,reference:'includedFilesGrid',hideDefaultBtn:!0,bind:{disabled:'{disabledIncludedFilesGrid}'},listeners:{datachange:'onDataChange',scope:this}}]},{xtype:'label',width:200,text:'File selective processing takes additional time proportional to the amount of excluded files, and stores extra per-file metadata in backups. Thus, it is best used for excluding large files, and keeping the total number of excluded files under a few hundred thousands.',
margin:'10 0 0 20'}]});Ext.panel.Panel.prototype.initComponent.apply(this,arguments)},onDataChange:function(grid){var vm=this.getViewModel();'excludedFilesGrid'===grid.getReference()?vm.set('options.guestFsExcludeOptions.excludeList',grid.getDataAsArray()):vm.set('options.guestFsExcludeOptions.includeList',grid.getDataAsArray())},afterRender:function(){var vm=this.getViewModel(),excludedFilesGrid=this.lookupReference('excludedFilesGrid'),includedFilesGrid=this.lookupReference('includedFilesGrid');
Ext.panel.Panel.prototype.afterRender.apply(this,arguments);excludedFilesGrid.loadData(vm.get('options.guestFsExcludeOptions.excludeList'));includedFilesGrid.loadData(vm.get('options.guestFsExcludeOptions.includeList'))}},0,['main-jobs-wizard-applications-options-file-exclusions','main.jobs.wizard.applications.options.fileexclusions'],'component box container panel main.jobs.wizard.applications.options.fileexclusions main-jobs-wizard-applications-options-file-exclusions'.split(' '),{component:!0,
box:!0,container:!0,panel:!0,'main.jobs.wizard.applications.options.fileexclusions':!0,'main-jobs-wizard-applications-options-file-exclusions':!0},['widget.main-jobs-wizard-applications-options-file-exclusions','widget.main.jobs.wizard.applications.options.fileexclusions'],0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptionsFileExclusionsCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptions',Veeam.base.view.BaseWindow,{viewModel:{type:'main.jobs.wizard.applicationsoptions'},controller:'main.jobs.wizard.applicationsoptions',config:{jobId:null,jobItem:null,isReplica:!1,credentials:[]},cls:'guest-applications-options-dialog',layout:'fit',width:650,height:680,minWidth:460,minHeigth:400,title:'Processing Settings',initComponent:function(){var name=this.getJobItem().get('entity').text;Ext.apply(this,{items:[{xtype:'tabpanel',
deferredRender:!1,items:[{title:'General',xtype:'main-jobs-wizard-applications-options-general'},{title:'SQL',xtype:'main-jobs-wizard-applications-options-sql',bind:{disabled:'{disabledTransactionLogs}'}},{title:'Oracle',xtype:'main-jobs-wizard-applications-options-oracle',jobId:this.getJobId(),bind:{disabled:'{disabledTransactionLogs}'}},{title:'File Exclusions',xtype:'main-jobs-wizard-applications-options-file-exclusions'}]}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments);
this.setTitle(name+': Processing Settings')},buttons:[{text:'OK',ui:'primary',handler:'okHandler'},{text:'Cancel',ui:'alternate',handler:'cancelHandler'}]},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'ApplicationsOptions'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.GuestProcessingCardController',MainApp.base.controller.BaseController,{config:{menu:null},listen:{controller:{'main.jobs.wizard':{loadjobdata:'onLoadJobData'}}},onLoadJobData:function(data){var vm=this.getViewModel(),store=vm.get('credentialsStore');store.loadData(data.credentials||[]);vm.set('selectedCredential',this._getSelectedCredentialId(data,store))},openWinCredentialsDialog:function(){this.windowsCredentialsDialog=Ext.create('Common.WindowsCredentials',
{listeners:{select:'onSelectWindowsCreds',scope:this}});this.windowsCredentialsDialog.show()},openLinuxCredentialsDialog:function(){this.linuxCredentialsDialog=Ext.create('Common.LinuxCredentials',{listeners:{select:'onSelectLinuxCreds',scope:this}});this.linuxCredentialsDialog.show()},onSelectWindowsCreds:function(window,data){this._selectCreds(window,data,!1)},onSelectLinuxCreds:function(window,data){this._selectCreds(window,data,!0)},openApplicationsDialog:function(){var data=this.getViewModel().get('vssSnapshotItems');
Ext.create('MainApp.view.main.jobs.wizard.dialogs.VssSnapshotsDialog',{gridData:Ext.clone(data),objectBrowser:this.getView().getObjectBrowser(),listeners:{changedata:'changeVssSnapshotsData',editrecord:'onEditApplicationsRecord',scope:this}}).show()},onEditApplicationsRecord:function(grid,record){grid=this.getViewModel();var view=this.getView();Ext.create('MainApp.view.main.jobs.wizard.dialogs.ApplicationsOptions',{credentials:grid.get('job.credentials'),isReplica:grid.get('job.isReplica'),jobItem:record,
jobId:view.getJobId()}).show()},openIndexingDialog:function(){var data=this.getViewModel().get('guestFsItems');Ext.create('MainApp.view.main.jobs.wizard.dialogs.IndexingDialog',{gridData:Ext.clone(data),objectBrowser:this.getView().getObjectBrowser(),listeners:{changedata:'changeGuestFsData',editrecord:'onEditIndexingRecord',scope:this}}).show()},onEditIndexingRecord:function(grid,record){Ext.create('MainApp.view.main.jobs.wizard.dialogs.GuestIndexingOptions',{jobItem:record,jobId:this.getView().getJobId()}).show()},
openCredentialsDialog:function(){var vm=this.getViewModel(),credentials=vm.get('job.credentials');vm=vm.get('guestCredsItems');Ext.create('MainApp.view.main.jobs.wizard.dialogs.CredentialsDialog',{gridData:Ext.clone(vm),credentials:credentials,jobId:this.getView().getJobId(),objectBrowser:this.getView().getObjectBrowser(),listeners:{changedata:'changeGuestCredsData',updatecreds:'updateCredentialsStore',scope:this}}).show()},changeVssSnapshotsData:function(data){this._collectJobItems(data,MainApp.view.main.jobs.wizard.JobWizard.policyType.VSS)},
changeGuestFsData:function(data){this._collectJobItems(data,MainApp.view.main.jobs.wizard.JobWizard.policyType.GUEST_FS_INDEXING)},changeGuestCredsData:function(data){this._collectJobItems(data,MainApp.view.main.jobs.wizard.JobWizard.policyType.GUEST_CREDS)},updateCredentialsStore:function(){var vm=this.getViewModel(),store=vm.get('credentialsStore');vm=vm.get('job.credentials');store.loadData(vm)},privates:{_getSelectedCredentialId:function(data,store){data=data.guestProcessingOptions;return store.getById(data.linCredsId)||
store.getById(data.winCredsId)},_collectJobItems:function(data,policyType){this.getView().collectJobItems(data,!0,policyType)},_selectCreds:function(window,data,isLinux){var me=this,rpcData=window.getFormData(),jobId=me.getView().getJobId();MainApp.service.rpc.Jobs.createCredentials(jobId,rpcData,isLinux).then(function(response){me._createCredentials.call(me,response,window,data,isLinux)},Common.ui.Msg.error)},_createCredentials:function(response,window,data,isLinux){var vm=this.getViewModel(),store=
vm.get('credentialsStore');vm.get('job.credentials').push({id:response,name:data.description?Ext.String.format('{0} ({1})',data.username,data.description):data.username,isLinux:isLinux});this.updateCredentialsStore();(response=store.getById(response))&&vm.set('selectedCredential',response);window.close()}}},0,0,0,0,['controller.main.jobs.wizard.guestprocessingcard'],0,[MainApp.view.main.jobs.wizard,'GuestProcessingCardController'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.GuestProcessingCard',MainApp.view.main.jobs.wizard.BaseJobWizardCard,{viewModel:{type:'main.jobs.wizard.guestprocessingcard'},controller:'main.jobs.wizard.guestprocessingcard',cls:'jobs-wizard-guestprocessingcard',bind:{title:'{guestprocessingcard.title}',cardTitle:'{guestprocessingcard.description}'},items:[{xtype:'container',cls:'checkbox-container',margin:'0 0 16 0',items:[{xtype:'checkbox',bind:{boxLabel:'{enableImgProcessing.label} \x3cspan class\x3d"info-tip" data-qtip\x3d"{enableImgProcessing.tip}"\x3e\x26nbsp;\x3c/span\x3e',
value:'{job.guestProcessingOptions.vssSnapshotOptions.enabled}'}},{xtype:'button',text:'Customize Application',ui:'text',iconCls:'customize',textAlign:'left',handler:'openApplicationsDialog',bind:{disabled:'{!job.guestProcessingOptions.vssSnapshotOptions.enabled}'}},{xtype:'container',cls:'small-text',maskOnDisable:!1,bind:{html:'{enableImgProcessing.btnText}',disabled:'{!job.guestProcessingOptions.vssSnapshotOptions.enabled}'}}]},{xtype:'container',cls:'checkbox-container',items:[{xtype:'checkbox',
bind:{boxLabel:'{enableIndexing.label} \x3cspan class\x3d"info-tip" data-qtip\x3d"{enableIndexing.tip}"\x3e\x26nbsp;\x3c/span\x3e',value:'{enableCustomizeIndexing}',disabled:'{job.isReplica}'}},{xtype:'button',text:'Customize Indexing',ui:'text',iconCls:'customize',textAlign:'left',handler:'openIndexingDialog',bind:{disabled:'{!enableCustomizeIndexing}'}},{xtype:'container',cls:'small-text',maskOnDisable:!1,bind:{html:'{enableIndexing.btnText}',disabled:'{!enableCustomizeIndexing}'}}]},{xtype:'wizard-cardsection',
title:'Guest OS credentials',margin:'16 0',items:[{xtype:'credsfield',labelConfig:{bind:{disabled:'{!enableCredentialsSelect}'}},comboConfig:{reference:'comboCredentials',bind:{store:'{credentialsStore}',selection:'{selectedCredential}',disabled:'{!enableCredentialsSelect}'}},buttonConfig:{bind:{disabled:'{!enableCredentialsSelect}'}},listeners:{linuxcredentials:'openLinuxCredentialsDialog',windowscredentials:'openWinCredentialsDialog'}},{xtype:'container',margin:'16 0 0 0',items:[{xtype:'button',
text:'Customize Credentials',ui:'text',iconCls:'manage-credentials',textAlign:'left',handler:'openCredentialsDialog',bind:{disabled:'{!enableCredentialsSelect}'}},{xtype:'container',cls:'small-text',maskOnDisable:!1,bind:{html:'{credentials.btnText}',disabled:'{!enableCredentialsSelect}'}}]}]}]},0,['main-jobs-wizard-guestprocessingcard','main.jobs.wizard.guestprocessingcard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.jobs.wizard.guestprocessingcard main-jobs-wizard-guestprocessingcard'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.jobs.wizard.guestprocessingcard':!0,'main-jobs-wizard-guestprocessingcard':!0},['widget.main-jobs-wizard-guestprocessingcard','widget.main.jobs.wizard.guestprocessingcard'],0,[MainApp.view.main.jobs.wizard,'GuestProcessingCard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.JobScheduleCardController',MainApp.base.controller.BaseController,{listen:{controller:{'main.jobs.wizard':{loadjobdata:'onLoadJobData'}}},onLoadJobData:function(data){var vm=this.getViewModel(),view=this.getView(),jobListStore=vm.get('jobListStore');vm.get('periodicallyKindStore').loadData([{id:view.self.PERIODICALLY_TYPE_HOURS,name:'Hours'},{id:view.self.PERIODICALLY_TYPE_MINUTES,name:'Minutes'},{id:view.self.PERIODICALLY_TYPE_CONTINUOUSLY,name:'Continuously'}]);
jobListStore.loadData(data.scheduleOptions.optionsScheduleAfterJob.jobsList);data.scheduleOptions.optionsScheduleAfterJob.parentJobId||vm.set('parentJobComboSelection',jobListStore.getAt(0));this._initPeriodicallyType(data);this._initScheduleType(data)},showPeriodsDialog:function(){var vm=this.getViewModel(),data=vm.get('job.scheduleOptions.optionsPeriodicaly.schedule.cells');vm=vm.get('job.scheduleOptions.optionsPeriodicaly.hourlyOffset');this._openScheduleDialog(data,vm,this.periodicallyScheduleChangeHandler)},
periodicallyScheduleChangeHandler:function(data,offset){this.getViewModel().set('job.scheduleOptions.optionsPeriodicaly.schedule.cells',data);this.getViewModel().set('job.scheduleOptions.optionsPeriodicaly.hourlyOffset',offset)},onClickWindowBtn:function(){var data=this.getViewModel().get('job.scheduleOptions.optionsBackupWindow.backupWindow.cells');this._openScheduleDialog(data,null,this.backupScheduleChangeHandler)},backupScheduleChangeHandler:function(data,offset){this.getViewModel().set('job.scheduleOptions.optionsBackupWindow.backupWindow.cells',
data)},showDaysDialog:function(){var days=this.getViewModel().get('job.scheduleOptions.optionsDaily.days');Ext.create('MainApp.view.main.jobs.wizard.dialogs.DaysDialog',{days:days,listeners:{dayschange:'onDaysChange',scope:this}}).show()},onDaysChange:function(window,data){this.getViewModel().set('job.scheduleOptions.optionsDaily.days',data)},showMonthsDialog:function(){var months=this.getViewModel().get('job.scheduleOptions.optionsMonthly.months');Ext.create('MainApp.view.main.jobs.wizard.dialogs.MonthsDialog',
{months:months,listeners:{monthschange:'onMonthsChange',scope:this}}).show()},onMonthsChange:function(window,data){window=this.lookupReference('dayOfMonthCombo');this.getViewModel().set('job.scheduleOptions.optionsMonthly.months',data);window.isValid()},dayOfMonthHideHandler:function(combo){combo.clearInvalid()},dayOfMonthShowHandler:function(combo){combo.isValid()},privates:{_initScheduleType:function(data){var me=this,vm=me.getViewModel();setTimeout(function(){var currentScheduleType=vm.get('currentScheduleType');
currentScheduleType&&(currentScheduleType=me.getView().down('radiofield[inputValue\x3d'+currentScheduleType+']'),currentScheduleType.isRadio&&currentScheduleType.setValue(!0))},100)},_initPeriodicallyType:function(data){var vm=this.getViewModel(),view=this.getView(),selectedPeriodicalyType=data.scheduleOptions.optionsPeriodicaly.kind;data.scheduleOptions.optionsContinuous.enabled&&(selectedPeriodicalyType===view.self.PERIODICALLY_TYPE_HOURS&&vm.set('periodicallyHoursPeriod',view.self.roundMinutesToHours(data.scheduleOptions.optionsPeriodicaly.fullPeriod)),
selectedPeriodicalyType=view.self.PERIODICALLY_TYPE_CONTINUOUSLY);setTimeout(function(){vm.set('selectedPeriodicalyType',selectedPeriodicalyType)},10)},_openScheduleDialog:function(data,offset,changeHandler){Ext.create('MainApp.view.main.jobs.wizard.dialogs.PeriodsDialog',{schedule:data,title:'Set Backup Window',offset:offset,listeners:{schedulechange:changeHandler,scope:this}}).show()}}},0,0,0,0,['controller.main.jobs.wizard.jobschedulecard'],0,[MainApp.view.main.jobs.wizard,'JobScheduleCardController'],
0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.JobScheduleCardModel',Ext.app.ViewModel,{data:{hidePeriodicallyHoursCombo:!1,periodicallyHoursPeriod:null,selectedPeriodicalyType:null,runManually:!1,parentJobComboSelection:null},formulas:{currentScheduleType:{bind:{daily:'{job.scheduleOptions.optionsDaily.enabled}',monthily:'{job.scheduleOptions.optionsMonthly.enabled}',periodically:'{job.scheduleOptions.optionsPeriodicaly.enabled}',continuous:'{job.scheduleOptions.optionsContinuous.enabled}',afterJob:'{job.scheduleOptions.optionsScheduleAfterJob.isEnabled}'},get:function(data){var viewClass=
MainApp.view.main.jobs.wizard.JobScheduleCard;return data.daily?viewClass.SCHEDULE_TYPE_DAILY:data.monthily?viewClass.SCHEDULE_TYPE_MONTHLY:data.afterJob?viewClass.SCHEDULE_TYPE_AFTER_JOB:data.periodically||data.continuous?viewClass.SCHEDULE_TYPE_PERIODICALLY:null},set:function(value){value=value.scheduleType;var viewClass=MainApp.view.main.jobs.wizard.JobScheduleCard;this.set('job.scheduleOptions.optionsDaily.enabled',value===viewClass.SCHEDULE_TYPE_DAILY);this.set('job.scheduleOptions.optionsMonthly.enabled',
value===viewClass.SCHEDULE_TYPE_MONTHLY);this.set('job.scheduleOptions.optionsPeriodicaly.enabled',value===viewClass.SCHEDULE_TYPE_PERIODICALLY);this.set('job.scheduleOptions.optionsScheduleAfterJob.isEnabled',value===viewClass.SCHEDULE_TYPE_AFTER_JOB)}},runAutomatically:{bind:'{job.runManually}',get:function(value){return!value},set:function(value){this.set('job.runManually',!value)}},waitForBackupCompletion:{bind:'{job.scheduleOptions.optionsBackupWindow.isEnabled}',get:function(value){this.set('job.scheduleOptions.waitForBackupCompletion',
value);return value}},dailyTime:{bind:'{job.scheduleOptions.optionsDaily.time}',get:function(value){return Ext.Date.parse(value,'c')},set:function(value){this.set('job.scheduleOptions.optionsDaily.time',Ext.Date.format(value,'c'))}},disabledDaysButton:{bind:{kind:'{job.scheduleOptions.optionsDaily.kind}',enabled:'{job.scheduleOptions.optionsDaily.enabled}'},get:function(data){return!(data.enabled&&'selectedDays'===data.kind)}},monthlyTime:{bind:'{job.scheduleOptions.optionsMonthly.time}',get:function(value){return Ext.Date.parse(value,
'c')},set:function(value){this.set('job.scheduleOptions.optionsMonthly.time',Ext.Date.format(value,'c'))}},showDayOfMonthCombo:{bind:'{job.scheduleOptions.optionsMonthly.dayNumberInMonth}',get:function(value){return'OnDay'===value}},disabledPeriodicallyCombo:{bind:{disabledPeriodicallyLine:'{disabledPeriodicallyLine}',continuouslyEnabled:'{job.scheduleOptions.optionsContinuous.enabled}'},get:function(data){return data.disabledPeriodicallyLine||data.continuouslyEnabled}},disabledPeriodicallyLine:{bind:{periodicallyEnabled:'{job.scheduleOptions.optionsPeriodicaly.enabled}',
continuouslyEnabled:'{job.scheduleOptions.optionsContinuous.enabled}'},get:function(data){return!(data.periodicallyEnabled||data.continuouslyEnabled)}},retryTimeoutDisabled:{bind:{retryDisabled:'{!job.scheduleOptions.retrySpecified}',isContinuous:'{job.scheduleOptions.optionsContinuous.enabled}',currentScheduleType:'{currentScheduleType}'},get:function(data){return data.retryDisabled||data.currentScheduleType===MainApp.view.main.jobs.wizard.JobScheduleCard.SCHEDULE_TYPE_PERIODICALLY&&data.isContinuous}},
changePeriodicallyType:{bind:'{selectedPeriodicalyType}',get:function(value){var viewClass=MainApp.view.main.jobs.wizard.JobScheduleCard,currentFullPeriod=this.get('job.scheduleOptions.optionsPeriodicaly.fullPeriod');this.set('job.scheduleOptions.optionsContinuous.enabled',value===viewClass.PERIODICALLY_TYPE_CONTINUOUSLY);value===viewClass.PERIODICALLY_TYPE_HOURS&&(currentFullPeriod=viewClass.roundMinutesToHours(currentFullPeriod),this.set('job.scheduleOptions.optionsPeriodicaly.kind',value),this.set('hidePeriodicallyHoursCombo',
!1),this.set('periodicallyHoursPeriod',currentFullPeriod));value===viewClass.PERIODICALLY_TYPE_MINUTES&&(this.set('job.scheduleOptions.optionsPeriodicaly.kind',value),this.set('hidePeriodicallyHoursCombo',!0))}},changePeriodicallyHours:{bind:'{periodicallyHoursPeriod}',get:function(value){this.set('job.scheduleOptions.optionsPeriodicaly.fullPeriod',60*value)}}},stores:{dailyKindsStore:{fields:['id','name'],data:[{id:'everyday',name:'Everyday'},{id:'weekDays',name:'On week-days'},{id:'selectedDays',
name:'On these days'}]},monthlyDayNumbersStore:{fields:['id','name'],data:[{id:'first',name:'First'},{id:'second',name:'Second'},{id:'third',name:'Third'},{id:'fourth',name:'Fourth'},{id:'last',name:'Last'},{id:'OnDay',name:'This day'}]},monthlyWeekDaysStore:{fields:['id','name'],data:[{id:'sunday',name:'Sunday'},{id:'monday',name:'Monday'},{id:'tuesday',name:'Tuesday'},{id:'wednesday',name:'Wednesday'},{id:'thursday',name:'Thursday'},{id:'friday',name:'Friday'},{id:'saturday',name:'Saturday'}]},
monthlyMonthDaysStore:{fields:['id','name'],data:[{id:1,name:1},{id:2,name:2},{id:3,name:3},{id:4,name:4},{id:5,name:5},{id:6,name:6},{id:7,name:7},{id:8,name:8},{id:9,name:9},{id:10,name:10},{id:11,name:11},{id:12,name:12},{id:13,name:13},{id:14,name:14},{id:15,name:15},{id:16,name:16},{id:17,name:17},{id:18,name:18},{id:19,name:19},{id:20,name:20},{id:21,name:21},{id:22,name:22},{id:23,name:23},{id:24,name:24},{id:25,name:25},{id:26,name:26},{id:27,name:27},{id:28,name:28},{id:29,name:29},{id:30,
name:30},{id:31,name:31},{id:32,name:'Last'}]},periodicallyHoursStore:{fields:['id'],data:[{id:1},{id:2},{id:3},{id:4},{id:6},{id:8},{id:12},{id:24}]},periodicallyKindStore:{fields:['id','name'],data:[]},jobListStore:{fields:['id','name'],data:[]}}},0,0,0,0,['viewmodel.main.jobs.wizard.jobschedulecard'],0,[MainApp.view.main.jobs.wizard,'JobScheduleCardModel'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.DaysDialog',Veeam.base.view.BaseWindow,{config:{days:[]},title:'Choose Days',resizable:!1,initComponent:function(){var days=this.getDays();Ext.apply(this,{items:[{xtype:'checkboxgroup',cls:'weekdays-all',name:'days',columns:2,vertical:!0,defaults:{margin:'0 24 0 0'},items:[{inputValue:'Sunday',boxLabel:'Sunday',checked:0<=days.indexOf('Sunday')},{inputValue:'Monday',boxLabel:'Monday',checked:0<=days.indexOf('Monday')},{inputValue:'Tuesday',boxLabel:'Tuesday',
checked:0<=days.indexOf('Tuesday')},{inputValue:'Wednesday',boxLabel:'Wednesday',checked:0<=days.indexOf('Wednesday')},{inputValue:'Thursday',boxLabel:'Thursday',checked:0<=days.indexOf('Thursday')},{inputValue:'Friday',boxLabel:'Friday',checked:0<=days.indexOf('Friday')},{inputValue:'Saturday',boxLabel:'Saturday',checked:0<=days.indexOf('Saturday')}],listeners:{change:'onChange',scope:this}}],buttons:[{text:'OK',handler:'okHandler',ui:'primary',scope:this}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,
arguments)},okHandler:function(){var value=this.down('checkboxgroup').getValue();value=Ext.isArray(value.days)?value.days:[value.days];this.fireEvent('dayschange',this,value);this.close()},onChange:function(checkboxgroup,value){this.down('button[text\x3dOK]').setDisabled(!value.days)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'DaysDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.MonthsDialog',Veeam.base.view.BaseWindow,{config:{months:[]},title:'Choose Months',resizable:!1,initComponent:function(){var months=this.getMonths();Ext.apply(this,{items:[{xtype:'checkboxgroup',cls:'months-all',name:'months',columns:2,vertical:!0,defaults:{margin:'0 24 0 0'},items:[{inputValue:'January',boxLabel:'January',checked:0<=months.indexOf('January')},{inputValue:'February',boxLabel:'February',checked:0<=months.indexOf('February')},{inputValue:'March',
boxLabel:'March',checked:0<=months.indexOf('March')},{inputValue:'April',boxLabel:'April',checked:0<=months.indexOf('April')},{inputValue:'May',boxLabel:'May',checked:0<=months.indexOf('May')},{inputValue:'June',boxLabel:'June',checked:0<=months.indexOf('June')},{inputValue:'July',boxLabel:'July',checked:0<=months.indexOf('July')},{inputValue:'August',boxLabel:'August',checked:0<=months.indexOf('August')},{inputValue:'September',boxLabel:'September',checked:0<=months.indexOf('September')},{inputValue:'October',
boxLabel:'October',checked:0<=months.indexOf('October')},{inputValue:'November',boxLabel:'November',checked:0<=months.indexOf('November')},{inputValue:'December',boxLabel:'December',checked:0<=months.indexOf('December')}],listeners:{change:'onChange',scope:this}}],buttons:[{text:'OK',handler:'okHandler',ui:'primary',scope:this}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},okHandler:function(){var value=this.down('checkboxgroup').getValue();value=Ext.isArray(value.months)?
value.months:[value.months];this.fireEvent('monthschange',this,value);this.close()},onChange:function(checkboxgroup,value){this.down('button[text\x3dOK]').setDisabled(!value.months)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'MonthsDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.dialogs.PeriodsDialog',Veeam.base.view.BaseWindow,{config:{schedule:[],offset:null,invertMode:!1,allowAllDeny:!1},cls:'periods-dialog',title:'Select Periods',minWidth:570,minHeight:420,width:650,height:480,layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{items:[{xtype:'periodsdataview',store:{fields:[{name:'id',type:'integer'},{name:'dayIndex',type:'integer'},{name:'index',type:'integer'},{name:'newLine',type:'boolean'},{name:'day',
type:'string'},{name:'value',type:'integer'}],idPropery:'id',data:[]},listeners:{select:this.handlers.dataview.onSelect,containermouseover:this.handlers.dataview.onContainerMouseOver,containermouseout:this.handlers.dataview.onContainerMouseOut,containerclick:this.handlers.dataview.onContainerClick,selectionchange:this.handlers.dataview.onSelectionChange,scope:this}},{xtype:'form',padding:'0 0 0 4',margin:'10 0',layout:{type:'vbox',align:'stretch'},listeners:{fieldvaliditychange:this.onFormValidation,
scope:this},items:[{xtype:'container',layout:{type:'hbox',align:'stretch'},items:[{xtype:'radiogroup',labelWidth:92,padding:'8 0 0 0',fieldLabel:'Select',items:[{boxLabel:'Denied',name:'invertMode',inputValue:!0,style:{marginRight:'20px'},selectMode:'denied',beforeLabelTpl:'\x3cdiv class\x3d"legend denied"\x3e\x26nbsp;\x3c/div\x3e'},{boxLabel:'Permitted',name:'invertMode',inputValue:!1,checked:!0,selectMode:'permitted',beforeLabelTpl:'\x3cdiv class\x3d"legend permitted"\x3e\x26nbsp;\x3c/div\x3e'}],
listeners:{change:this.handlers.radiogroup.onChange,scope:this}},{xtype:'component',flex:1},{xtype:'button',text:'Deny All',ui:'text',selectMode:'denied',handler:this.handlers.buttons.onSelectAll,scope:this},{xtype:'button',text:'Permit All',ui:'text',selectMode:'permitted',margin:'0 0 0 20',handler:this.handlers.buttons.onSelectAll,scope:this}]},{xtype:'container',ctype:'offsetFieldContainer',layout:'hbox',padding:'20 0 0 100',items:[{xtype:'numberfield',fieldLabel:'Start time within an hour',labelWidth:160,
minValue:0,maxValue:59,allowDecimals:!1,allowExponential:!1,allowBlank:!1,ctype:'offsetField',value:0},{xtype:'label',text:'min',margin:'7 0 0 10'}]}]}],buttons:[{text:'OK',ctype:'okButton',ui:'primary',handler:this.handlers.buttons.okHandler,scope:this},{text:'Cancel',ui:'alternate',handler:this.handlers.buttons.cancelHandler,scope:this}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},updateSchedule:function(data){this.rendered&&this._loadStoreData()},updateInvertMode:function(invertMode){this.rendered&&
(this._setInvertModeCls(),this._setupSelection())},updateOffset:function(offset){this.rendered&&this._setOffsetValue()},afterRender:function(){Veeam.base.view.BaseWindow.prototype.afterRender.apply(this,arguments);this._setOffsetValue();this._setInvertModeCls();this._loadStoreData()},onFormValidation:function(form){form=form.isValid();this.down('button[ctype\x3dokButton]').setDisabled(!form)},handlers:{buttons:{cancelHandler:function(){this.close()},okHandler:function(){var store=this.down('periodsdataview').getStore(),
offset=this.down('numberfield[ctype\x3doffsetField]').getValue()||0,result=[];store.each(function(record){var dayIndex=record.get('dayIndex'),index=record.get('index');result[dayIndex]||(result[dayIndex]=[]);result[dayIndex][index]=record.get('value')});this.fireEvent('schedulechange',result,offset);this.close()},onSelectAll:function(btn){var invertMode=this.getInvertMode(),dataview=this.down('periodsdataview');!invertMode&&'permitted'===btn.selectMode||invertMode&&'denied'===btn.selectMode?dataview.getSelectionModel().selectAll():
(dataview.enableDeselection=!0,dataview.getSelectionModel().deselectAll(),dataview.getStore().each(function(item){item.set('value',invertMode?0:1)}),dataview.enableDeselection=!1)}},dataview:{onSelect:function(selModel,record){selModel=this.getInvertMode();record.set('value',selModel?1:0)},onContainerMouseOver:function(dataview,e){var hourCell=e.getTarget('.hour-cell');e=e.getTarget('.day-name-cell');hourCell&&(hourCell=Ext.get(hourCell),hourCell=Number(hourCell.getAttribute('data-hour-index')),dataview.highlightCol(hourCell));
e&&(e=Ext.get(e),e=Number(e.getAttribute('data-day-index')),dataview.highlightRow(e))},onContainerMouseOut:function(dataview,e){var hourCell=e.getTarget('.hour-cell');e=e.getTarget('.day-name-cell');(hourCell||e)&&dataview.clearHighlight()},onContainerClick:function(dataview,e){var hourCell=e.getTarget('.hour-cell');e=e.getTarget('.day-name-cell');hourCell&&(hourCell=Ext.get(hourCell),hourCell=Number(hourCell.getAttribute('data-hour-index')),dataview.selectCol(hourCell));e&&(e=Ext.get(e),e=Number(e.getAttribute('data-day-index')),
dataview.selectRow(e))},onSelectionChange:function(dataview,selected){var invertMode=this.getInvertMode();dataview=this.getAllowAllDeny();var okButton=this.down('button[ctype\x3dokButton]');selected=invertMode?168===selected.length:0===selected.length;dataview||okButton.setDisabled(selected)}},radiogroup:{onChange:function(radiogroup,value){this.setInvertMode(value.invertMode)}}},privates:{_setOffsetValue:function(){var value=this.getOffset(),isVisibleOffsetField=Ext.isNumber(value),minHeight=isVisibleOffsetField?
420:370,offsetFieldContainer=this.down('container[ctype\x3doffsetFieldContainer]');this.down('numberfield[ctype\x3doffsetField]').setValue(value);offsetFieldContainer.setVisible(isVisibleOffsetField);this.setMinHeight(minHeight)},_loadStoreData:function(){var store=this.down('periodsdataview').getStore(),rawData=this.getSchedule();this._prepareData(rawData);Ext.isArray(rawData)&&7==rawData.length&&store.loadData(this._prepareData(rawData));this._setupSelection()},_prepareData:function(rawData){var days=
'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '),result=[],id=0;Ext.each(rawData,function(dayData,dayIndex){var day=days[dayIndex];Ext.each(dayData,function(value,index){id=index+24*dayIndex;result.push({id:id,dayIndex:dayIndex,index:index,newLine:0===id%24,day:day,value:value})})});return result},_setInvertModeCls:function(){var invertMode=this.getInvertMode(),radiogroup=this.down('form radiogroup');invertMode?this.getEl().addCls('invert-mode'):this.getEl().removeCls('invert-mode');
radiogroup.setValue({invertMode:invertMode})},_setupSelection:function(){var invertMode=this.getInvertMode(),dataview=this.down('periodsdataview'),store=dataview.getStore(),selectedItems=[];dataview.enableDeselection=!0;store.each(function(item){!!item.get('value')==invertMode&&selectedItems.push(item)});dataview.getSelectionModel().deselectAll();selectedItems.length&&dataview.getSelectionModel().select(selectedItems);dataview.updateDragSelector();dataview.enableDeselection=!1}}},0,0,['component',
'box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.jobs.wizard.dialogs,'PeriodsDialog'],0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.JobScheduleCard',MainApp.view.main.jobs.wizard.BaseJobWizardCard,{viewModel:{type:'main.jobs.wizard.jobschedulecard'},controller:'main.jobs.wizard.jobschedulecard',statics:{SCHEDULE_TYPE_DAILY:'daily',SCHEDULE_TYPE_MONTHLY:'monthly',SCHEDULE_TYPE_PERIODICALLY:'periodically',SCHEDULE_TYPE_AFTER_JOB:'afterjob',PERIODICALLY_TYPE_HOURS:'hours',PERIODICALLY_TYPE_MINUTES:'minutes',PERIODICALLY_TYPE_CONTINUOUSLY:'continuously',roundMinutesToHours:function(minutes){minutes=
Math.round(minutes/60);return 0===minutes?1:5>minutes?minutes:10>minutes?minutes-minutes%2:18>minutes?12:24}},cls:'jobs-wizard-schedulecard',title:'Job schedule',cardTitle:'Specify the job scheduling options',initComponent:function(){var me=this;Ext.apply(me,{items:[{xtype:'checkbox',boxLabel:'Run the job automatically:',bind:{value:'{runAutomatically}'},listeners:{change:function(checkbox,value){checkbox=me.getViewModel();var dailyType=me.self.SCHEDULE_TYPE_DAILY;value&&!checkbox.get('currentScheduleType')&&
(value=me.down('radiofield[inputValue\x3d'+dailyType+']'),value.isRadio&&value.setValue(!0))}}},{xtype:'wizard-cardsection',items:[{xtype:'radiogroup',reference:'scheduleTypeRadioGroup',layout:{type:'vbox',align:'stretch'},bind:{value:'{currentScheduleType}',disabled:'{!runAutomatically}'},items:[{xtype:'container',margin:'0 0 8 0',layout:{type:'hbox',align:'stretch'},defaults:{margin:'0 8 0 0'},items:[{xtype:'radiofield',boxLabel:'Daily at this time:',name:'scheduleType',inputValue:MainApp.view.main.jobs.wizard.JobScheduleCard.SCHEDULE_TYPE_DAILY,
width:140},{xtype:'timefield',increment:5,format:'defaultTimeFormat',formatText:'',width:108,allowBlank:!1,bind:{value:'{dailyTime}',disabled:'{!job.scheduleOptions.optionsDaily.enabled}'}},{xtype:'combo',valueField:'id',displayField:'name',editable:!1,flex:1,margin:'0 16 0 0',bind:{store:'{dailyKindsStore}',value:'{job.scheduleOptions.optionsDaily.kind}',disabled:'{!job.scheduleOptions.optionsDaily.enabled}'}},{xtype:'button',text:'Days\x26hellip;',textAlign:'left',iconCls:'week',ui:'text',width:90,
margin:0,handler:'showDaysDialog',bind:{disabled:'{disabledDaysButton}'}}]},{xtype:'container',margin:'0 0 8 0',layout:{type:'hbox',align:'stretch'},defaults:{margin:'0 8 0 0'},items:[{xtype:'radiofield',boxLabel:'Monthly at:',name:'scheduleType',inputValue:MainApp.view.main.jobs.wizard.JobScheduleCard.SCHEDULE_TYPE_MONTHLY,width:140},{xtype:'timefield',increment:5,format:'defaultTimeFormat',formatText:'',allowBlank:!1,width:108,bind:{value:'{monthlyTime}',disabled:'{!job.scheduleOptions.optionsMonthly.enabled}'}},
{xtype:'combo',valueField:'id',displayField:'name',width:118,editable:!1,bind:{value:'{job.scheduleOptions.optionsMonthly.dayNumberInMonth}',store:'{monthlyDayNumbersStore}',disabled:'{!job.scheduleOptions.optionsMonthly.enabled}'}},{xtype:'combo',valueField:'id',displayField:'name',value:1,editable:!1,flex:1,bind:{store:'{monthlyWeekDaysStore}',value:'{job.scheduleOptions.optionsMonthly.dayOfWeek}',disabled:'{!job.scheduleOptions.optionsMonthly.enabled}',hidden:'{showDayOfMonthCombo}'}},{xtype:'combo',
valueField:'id',displayField:'name',reference:'dayOfMonthCombo',value:1,editable:!1,flex:1,validator:function(value){var months=me.getViewModel().get('job.scheduleOptions.optionsMonthly.months'),longMonths='January March May July August October December'.split(' ');value=Number(value);return 29>value||!this.isVisible()?!0:(29===value||30===value)&&1===months.length&&'February'===months[0]||31===value&&!Ext.Array.intersect(months,longMonths).length?'The specified day is not present in any of the selected months':
!0},listeners:{hide:'dayOfMonthHideHandler',show:'dayOfMonthShowHandler'},bind:{store:'{monthlyMonthDaysStore}',value:'{job.scheduleOptions.optionsMonthly.dayOfMonth}',disabled:'{!job.scheduleOptions.optionsMonthly.enabled}',hidden:'{!showDayOfMonthCombo}'}},{xtype:'button',text:'Months\x26hellip;',textAlign:'left',iconCls:'month',ui:'text',width:90,margin:'0 0 0 8',handler:'showMonthsDialog',bind:{disabled:'{!job.scheduleOptions.optionsMonthly.enabled}'}}]},{xtype:'container',margin:'0 0 8 0',layout:{type:'hbox',
align:'stretch'},defaults:{margin:'0 8 0 0'},items:[{xtype:'radiofield',boxLabel:'Periodically every:',name:'scheduleType',inputValue:MainApp.view.main.jobs.wizard.JobScheduleCard.SCHEDULE_TYPE_PERIODICALLY,width:140},{xtype:'combo',valueField:'id',displayField:'id',editable:!1,allowBlank:!1,width:108,bind:{store:'{periodicallyHoursStore}',value:'{periodicallyHoursPeriod}',disabled:'{disabledPeriodicallyCombo}',hidden:'{hidePeriodicallyHoursCombo}',allowBlank:'{hidePeriodicallyHoursCombo}'},setAllowBlank:function(value){this.allowBlank=
value;this.validate()}},{xtype:'numberfield',width:85,minValue:1,maxValue:1440,allowBlank:!1,bind:{value:'{job.scheduleOptions.optionsPeriodicaly.fullPeriod}',disabled:'{disabledPeriodicallyCombo}',hidden:'{!hidePeriodicallyHoursCombo}'}},{xtype:'combo',valueField:'id',displayField:'name',queryMode:'local',editable:!1,flex:1,margin:'0 16 0 0',bind:{store:'{periodicallyKindStore}',disabled:'{!job.scheduleOptions.optionsPeriodicaly.enabled}',value:'{selectedPeriodicalyType}'}},{xtype:'button',text:'Schedule\x26hellip;',
textAlign:'left',iconCls:'schedule',ui:'text',handler:'showPeriodsDialog',width:90,margin:0,bind:{disabled:'{!job.scheduleOptions.optionsPeriodicaly.enabled}'}}]},{xtype:'container',margin:'0 0 8 0',layout:{type:'hbox',align:'stretch'},items:[{xtype:'radiofield',boxLabel:'After this job:',name:'scheduleType',inputValue:MainApp.view.main.jobs.wizard.JobScheduleCard.SCHEDULE_TYPE_AFTER_JOB,width:140,margin:'0 8 0 0'},{xtype:'combo',valueField:'id',displayField:'name',queryMode:'local',editable:!1,allowBlank:!1,
flex:1,margin:0,tpl:'\x3ctpl for\x3d"."\x3e\x3cli role\x3d"option" unselectable\x3d"on" class\x3d"x-boundlist-item"\x3e{name:htmlEncode}\x3c/li\x3e\x3c/tpl\x3e',bind:{store:'{jobListStore}',disabled:'{!job.scheduleOptions.optionsScheduleAfterJob.isEnabled}',value:'{job.scheduleOptions.optionsScheduleAfterJob.parentJobId}',selection:'{parentJobComboSelection}'}}]}]}]},{xtype:'wizard-cardsection',title:'Automatic retry',items:[{xtype:'fieldcontainer',layout:'hbox',cls:'checkbox-group-item',bind:{disabled:'{!runAutomatically}'},
items:[{xtype:'checkbox',cls:'retry-specified',boxLabel:'Retry failed machine processing:',bind:{value:'{job.scheduleOptions.retrySpecified}',disabled:'{!runAutomatically}'}},{xtype:'numberfield',minValue:1,maxValue:777,margin:'0 8 0 8',allowBlank:!1,bind:{value:'{job.scheduleOptions.retryTimes}',disabled:'{!job.scheduleOptions.retrySpecified}'}},{xtype:'displayfield',value:'times',bind:{disabled:'{!job.scheduleOptions.retrySpecified}'}}]},{xtype:'fieldcontainer',layout:'hbox',bind:{disabled:'{!runAutomatically}'},
items:[{xtype:'numberfield',fieldLabel:'Wait before each attempt for',labelWidth:195,margin:'0 8 0 30',allowBlank:!1,minValue:1,maxValue:999,bind:{value:'{job.scheduleOptions.retryTimeout}',disabled:'{retryTimeoutDisabled}'}},{xtype:'displayfield',value:'minutes',bind:{disabled:'{retryTimeoutDisabled}'}}]}]},{xtype:'wizard-cardsection',title:'Backup window',items:[{xtype:'container',maskOnDisable:!1,layout:{type:'hbox'},bind:{disabled:'{!runAutomatically}'},items:[{xtype:'checkbox',cls:'wait-backup-completion',
boxLabel:'Terminate job if it gets out of allowed backup window',bind:{value:'{job.scheduleOptions.optionsBackupWindow.isEnabled}',disabled:'{!runAutomatically}'}},{xtype:'button',text:'Window\x26hellip;',textAlign:'left',iconCls:'schedule',ui:'text',margin:'0 0 0 24',handler:'onClickWindowBtn',bind:{disabled:'{!job.scheduleOptions.optionsBackupWindow.isEnabled}'}}]}]}]});MainApp.view.main.jobs.wizard.BaseJobWizardCard.prototype.initComponent.apply(this,arguments)}},0,['main-jobs-wizard-jobschedulecard',
'main.jobs.wizard.jobschedulecard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.jobs.wizard.jobschedulecard main-jobs-wizard-jobschedulecard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.jobs.wizard.jobschedulecard':!0,'main-jobs-wizard-jobschedulecard':!0},['widget.main-jobs-wizard-jobschedulecard','widget.main.jobs.wizard.jobschedulecard'],0,[MainApp.view.main.jobs.wizard,'JobScheduleCard'],
0);
Ext.cmd.derive('MainApp.view.main.jobs.wizard.JobWizard',Veeam.view.VeeamWizard,{plugins:['deferredmask'],viewModel:{type:'main.jobs.wizard'},controller:'main.jobs.wizard',tabWidth:146,statics:{policyType:{NONE:0,VSS:2,DISK_EXCLUSION:3,EXTENDED:4,GUEST_FS_INDEXING:5,GUEST_CREDS:6},transactionLogsProcessing:{NEVER_TRUNCATE:0,TRUNCATE_ONLY_ON_SUCCESS_JOB:1,ALWAYS_TRUNCATE:2,BACKUP:3},archivedLogsTruncation:{DISABLED:0,BY_AGE:1,BY_SIZE:2},guestFsBackupScope:{EVERYTHING:0,INCLUDE_SPECIFIED_FOLDERS:1,EXCLUDE_SPECIFIED_FOLDERS:2},
guestFSIndexingType:{NONE:0,EVERY_FOLDERS:1,SPECIFIED_FOLDERS:2,EXPECT_SPECIFIED_FOLDERS:3},getDefaultGuestProcessingOptions:function(){var jobWizard=MainApp.view.main.jobs.wizard.JobWizard;return{winCredsId:Common.util.Constants.EMPTY_GUID,linCredsId:Common.util.Constants.EMPTY_GUID,vssSnapshotOptions:{enabled:!0,ignoreErrors:!1,isCopyOnly:!1},winGuestFSIndexingOptions:{excludedFolders:['%windir%','%ProgramFiles%','%ProgramFiles(x86)%','%ProgramW6432%','%TEMP%'],includedFolders:[],indexingType:jobWizard.guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS},
linGuestFSIndexingOptions:{excludedFolders:'/cdrom /dev /media /mnt /proc /tmp /lost+found'.split(' '),includedFolders:[],indexingType:jobWizard.guestFSIndexingType.EXPECT_SPECIFIED_FOLDERS},sqlBackupOptions:{backupLogsFrequencyMin:15,retainDays:15,proxyAutoSelect:!0,useDbBackupRetention:!0,transactionLogsProcessing:jobWizard.transactionLogsProcessing.TRUNCATE_ONLY_ON_SUCCESS_JOB},oracleBackupOptions:{archivedLogsTruncation:jobWizard.archivedLogsTruncation.DISABLED,backupLogsEnabled:!1,backupLogsFrequencyMin:15,
useDbBackupRetention:!0,archivedLogsMaxAgeHours:24,archivedLogsMaxSizeGb:10,retainDays:15,proxyAutoSelect:!0,sysDbaCredsId:Common.util.Constants.EMPTY_GUID},guestFsExcludeOptions:{backupScope:jobWizard.guestFsBackupScope.EVERYTHING,excludeList:[],includeList:[]},exchangeBackupOptions:{transactionLogsProcessing:jobWizard.transactionLogsProcessing.TRUNCATE_ONLY_ON_SUCCESS_JOB}}}},config:{jobId:null,platform:null,jobType:null,objectBrowser:null,jobNames:[]},cls:'main-jobs-wizard',bodyCls:'main-jobs-wizard-body',
ui:'wizard',defaultBodyPadding:0,prevButtonText:'Previous',height:630,width:800,title:'',autoClose:!1,initComponent:function(){var objectBrowser=this.getObjectBrowser(),jobId=this.getJobId(),isReplica=1===this.jobType;this.title=isReplica?'Edit Replication Job':'Edit Backup Job';Ext.apply(this,{items:[{title:'Job Settings',xtype:'main-jobs-wizard-maincard',objectBrowser:objectBrowser,jobId:jobId,isReplica:isReplica,jobNames:this.getJobNames(),plugins:['deferredmask']},{title:'Virtual Machines',xtype:'main-jobs-wizard-vmscard',
objectBrowser:objectBrowser,jobId:jobId,listeners:{boxready:'vmsCardReady'}},{title:'Guest Processing',xtype:'main-jobs-wizard-guestprocessingcard',objectBrowser:objectBrowser,jobId:jobId},{title:'Job Schedule',xtype:'main-jobs-wizard-jobschedulecard',jobId:jobId,objectBrowser:objectBrowser}]});Veeam.view.VeeamWizard.prototype.initComponent.apply(this,arguments)},listeners:{finish:'saveChanges',buffer:100},onDestroy:function(){var objectBrowser=this.getObjectBrowser();objectBrowser&&objectBrowser.destroy()}},
0,['main-jobs-wizard','main.jobs.wizard'],'component box container panel window main.jobs.wizard main-jobs-wizard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.jobs.wizard':!0,'main-jobs-wizard':!0},['widget.main-jobs-wizard','widget.main.jobs.wizard'],0,[MainApp.view.main.jobs.wizard,'JobWizard'],0);
Ext.cmd.derive('MainApp.view.main.jobs.Jobs',Ext.Panel,{viewModel:{type:'main.jobs'},controller:'main.jobs',layout:{type:'vbox',align:'stretch'},items:[{xtype:'toolbar',cls:'filter-toolbar',items:[{xtype:'combo',width:466,labelWidth:90,fieldLabel:'Backup server',queryMode:'local',displayField:'name',valueField:'id',forceSelection:!0,listConfig:{minWidth:368},editable:!1,bind:{store:'{serversStore}',value:'{filter.server}',selection:'{filter.selectedServer}'},listeners:{select:'loadData'}},{xtype:'common-advancedfilterfield',
text:'Status',title:'Filter Statuses',minMenuWidth:216,bind:{value:'{filter.statuses}',items:'{statusItems}'},listeners:{changedata:'loadData',delay:100}}]},{xtype:'main-jobslist',reference:'jobList',flex:1,columns:[{text:'Name',dataIndex:'jobName',flex:1,minWidth:180,renderer:'jobNameRenderer'},{text:'Type',dataIndex:'jobType',renderer:Veeam.model.JobType.getLabel,scope:Veeam.model.JobType,width:150},{text:'Platform',dataIndex:'jobPlatformName',width:150},{text:'Backup Server',dataIndex:'backupServerName',
flex:1},{text:'Status',dataIndex:'jobStatus',renderer:'jobStatusRenderer',width:150,tdCls:'status-column'},{text:'Latest Run',dataIndex:'jobLastRunTimeUtc',xtype:'datecolumn',width:160},{text:'Next Run',dataIndex:'jobNextRunTime',flex:1,sortable:!1},{text:'Description',xtype:'descriptioncolumn',dataIndex:'jobDescription',flex:2,sortable:!1}],leftButtons:[{xtype:'textfield',width:272,emptyText:'Search by job name',cls:'textfield-search',inputAttrTpl:'required',triggers:{clear:{cls:'x-form-clear-trigger',
hidden:!0,handler:'clearNameField'},search:{cls:'x-form-search-trigger',handler:'loadData'}},bind:'{filter.name}',listeners:{change:{buffer:500,fn:'nameFieldChange'}}},{text:'Start',iconCls:'job-start',handler:'startJob',disabled:!0,bind:{hidden:'{hideActionBtn}',disabled:'{!startAllowed}',tooltip:'{startBtnTooltip}'}},{text:'Stop',iconCls:'job-stop',handler:'stopJob',disabled:!0,bind:{hidden:'{hideActionBtn}',disabled:'{!stopAllowed}',tooltip:'{stopBtnTooltip}'}},{text:'Retry',iconCls:'job-retry',
handler:'retryJob',disabled:!0,bind:{hidden:'{hideActionBtn}',disabled:'{!retryAllowed}',tooltip:'{retryBtnTooltip}'}},{text:'Job',iconCls:'jobs',disabled:!0,bind:{hidden:'{hideActionBtn}',disabled:'{!selectedJob}'},menu:[{text:'Edit',iconCls:'job-edit',handler:'editJob',disabled:!0,bind:{disabled:'{!editAllowed}',tooltip:'{editBtnTooltip}'}},{text:'Active Full',iconCls:'job-active-full',handler:'startActiveFull',disabled:!0,bind:{disabled:'{!activeFullAllowed}',tooltip:'{activeFullBtnTooltip}'}},
{text:'Disable',iconCls:'job-disable',handler:'changeEnabled',disabled:!0,bind:{disabled:'{!disableAllowed}',text:'{disableBtnText}',iconCls:'{disableBtnIconCls}',tooltip:'{disableBtnTooltip}'}},{text:'Clone',iconCls:'job-clone',handler:'cloneJob',disabled:!0,bind:{disabled:'{!cloneAllowed}',tooltip:'{cloneBtnTooltip}'}},{text:'Delete',iconCls:'job-delete',handler:'deleteJob',disabled:!0,bind:{disabled:'{!deleteAllowed}',tooltip:'{deleteBtnTooltip}'}}]}],bind:{store:'{jobsStore}',selection:'{selectedJob}'},
listeners:{activate:'loadData',exporttoexcel:'onExport'}}]},0,['main-jobs','main.jobs'],'component box container panel main.jobs main-jobs'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.jobs':!0,'main-jobs':!0},['widget.main-jobs','widget.main.jobs'],0,[MainApp.view.main.jobs,'Jobs'],0);
Ext.cmd.derive('MainApp.view.main.vms.MainController',MainApp.base.controller.BaseController,{routeSection:'vms',showHistoryView:function(sessionId){var component=this.getView().setActiveItem(1);component&&sessionId&&component.selectSession(sessionId)},showIndexView:function(){this.getView().setActiveItem(0)}},0,0,0,0,['controller.main.vms.main'],0,[MainApp.view.main.vms,'MainController'],0);
Ext.cmd.derive('MainApp.view.main.vms.VmsController',MainApp.base.controller.BaseController,{listen:{taskmanager:{complete:'onTaskComplete'}},onCellClick:function(view,td,cellIndex,record,tr,ri,e){view=e.getTarget();return'A'===view.tagName&&0<=view.className.indexOf('restore-points')?(e.stopEvent(),this.onRestorePointsClick(record),!1):!0},onExport:function(){var vm=this.getViewModel(),filter=vm.get('filter');vm=vm.get('hasVCloud');var sortInfo=this.lookupReference('vmsList').getSortInfo(),apiParams=
{};apiParams.dbInstanceId=filter.server&&'all'!==filter.server?filter.server:null;apiParams.vmName=filter.name||null;Ext.apply(apiParams,sortInfo);(new Veeam.util.ExcelExporter('report.export.vms',[apiParams,vm])).start()},urlToVmRenderer:function(val,cell,record){cell=record.get('jobId');val=Ext.util.Format.htmlEncode(val);return cell&&cell!==Common.util.Constants.EMPTY_GUID?Ext.String.format('\x3ca href\x3d"#!reports/vm_sessions/{0}/bs/{1}/job/{2}"\x3e{3}\x3c/a\x3e',record.get('vmId'),record.get('dbInstanceId'),
cell,val):val},restorePointsRenderer:function(val,cell,record){return!1===record.get('showRestorePoints')?null:'\x3ca class\x3d"restore-points" name\x3d""\x3e'+Ext.util.Format.plural(val,'point')+'\x3c/a\x3e'},onRestorePointsClick:function(selected){var win=Ext.create('Veeam.base.view.BaseWindow',{layout:'fit',title:Ext.String.htmlEncode(selected.get('vmName'))+': Restore Points',modal:!0,width:575,height:575,items:[{xclass:'MainApp.view.main.vms.VmRestorePoints',entityId:selected.get('vmId'),pointId:selected.get('pointId')}],
buttons:[{text:'Close',ui:'primary',handler:function(){win.close()}}]});this.dialog=this.getView().add(win.show())},onDestroy:function(){this.dialog=Ext.destroy(this.dialog)},afterRender:function(){Veeam.service.ReportService.getVmsReportMetadata().then(this.onMetadataLoaded.bind(this)).otherwise(Common.ui.Msg.error)},onMetadataLoaded:function(meta){var vm=this.getViewModel(),store=vm.get('serversStore'),data=meta.filters;data.unshift({name:'All Servers',id:'all'});store.loadData(data);vm.set('filter.selectedServer',
store.getAt(0));vm.set('hasVCloud',meta.hasVCloud)},nameFieldChange:function(field){var value=Common.util.Format.ltrim(field.getValue()),hasValue=!!value,triggers=field.getTriggers();field.setValue(value);triggers.clear.setVisible(hasValue);triggers.search.setVisible(!hasValue);this.loadData()},clearNameField:function(field){field.setValue(null)},loadData:function(){var vm=this.getViewModel(),store=this._getStore();vm=vm.get('filter');var proxy=store.getProxy(),extraParams={};if(!store.isLoading()||
store.isLoaded())vm.server&&'all'!==vm.server&&(extraParams.dbInstanceId=vm.server),vm.name&&(extraParams.vmName=vm.name),Ext.isFunction(proxy.setExtraParams)&&store.getProxy().setExtraParams(extraParams),store.loadPage(1)},onRestoreVmClick:function(menuItem){var selected=this._getSelected();menuItem=Ext.create('MainApp.view.main.vms.widgets.RestoreVmWizard',{oibId:selected.get('id'),isReplica:selected.get('isReplica'),bsVersion:selected.get('backupServerVersion'),vmName:selected.get('vmName'),platform:selected.get('platform'),
isOverwrite:!menuItem.keep,listeners:{finish:'onVmRestoreStarted',close:'showScopeButton'}});menuItem.show();this.dialog=this.getView().add(menuItem)},onFailoverPlanClick:function(){var win=Ext.create('MainApp.view.main.vms.widgets.FailoverPlan',{width:575});this.dialog=this.getView().add(win.show())},onDeleteClick:function(){var record=this._getSelected(),service=MainApp.service.rpc.VmService;if(record){var vmName=record.get('vmName');var id=record.get('id');record=function(result){Common.ui.Msg.hide();
Ext.GlobalEvents.fireEvent('notification',{type:'success',message:'VM has been removed from the backup'});return!0};service.confirmDelete(vmName).then(function(){return service.deleteVm(id)}).then(function(taskResult){Common.ui.Msg.hide();Ext.GlobalEvents.fireEvent('notification',{type:'info',message:'Removing VM from the backup'});return Common.signalr.TaskManager.waitForTask(taskResult.taskId,'deletevm')}).then(record).otherwise(function(error){Common.ui.Msg.hide();error instanceof Error&&Ext.GlobalEvents.fireEvent('notification',
{type:'error',message:error.message});console.error('User task failed: ',error)})}},onQuickBackupClick:function(){var me=this,record=me._getSelected();record&&(record=record.get('id'),me.fireEvent('mask','Starting Quick Backup, please wait...'),MainApp.service.rpc.VmService.startQuickBackup(record).then(Common.ui.Msg.success).otherwise(Common.ui.Msg.error).always(function(){me.fireEvent('unmask')}))},onViewHistory:function(){this.redirectTo('!vms/history')},onVmRestoreStarted:function(wizard,id){this.redirectTo('!vms/history/'+
id)},showScopeButton:function(){if(!MainApp.app.getUser().isSelfRestoreMode()){var scopeBtn=this.lookupReference('scopeButton');scopeBtn.canBeShown()&&scopeBtn.show()}},onTaskComplete:function(taskType,context,taskResult){if('deletevm'===taskType)return Ext.GlobalEvents.fireEvent('notification',{type:taskResult.success?'success':'error',message:taskResult.message?taskResult.message:'VM has been removed from the backup'}),!1},privates:{_getStore:function(){return this.lookup('vmsList').getStore()},
_getSelected:function(){return this.getViewModel().get('selectedVm')}}},0,0,0,0,['controller.main.vms'],0,[MainApp.view.main.vms,'VmsController'],0);
Ext.cmd.derive('Veeam.model.VmRestoreAvailability',Ext.Base,{singleton:!0,privates:{_texts:{0:'',1:'Restore of agent backups is not supported',2:'Restore of application backups is not supported',3:'Restore of cloud replicas is not supported'}},getReason:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'VmRestoreAvailability'],function(){this[this.Available=0]='Available';this[this.AgentBackup=1]='AgentBackup';this[this.ApplicationBackup=
2]='ApplicationBackup';this[this.CloudReplica=3]='CloudReplica'});
Ext.cmd.derive('Veeam.model.VmDeleteAvailability',Ext.Base,{singleton:!0,privates:{_texts:{0:'',1:'Deletion of cloud replicas is not supported, please use Veeam Backup \x26 Replication console',2:'Deletion of replicas is not supported, please use Veeam Backup \x26 Replication console',3:'Deletion of storage snapshots is not supported',4:'Deletion of tape backups is not supported',5:'Deletion of VMs from backup is not supported in this version of Veeam Backup \x26 Replication'}},getReason:function(enumValue){Ext.isString(enumValue)&&
(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'VmDeleteAvailability'],function(){this[this.Available=0]='Available';this[this.CloudReplica=1]='CloudReplica';this[this.Replica=2]='Replica';this[this.SanSnapshot=3]='SanSnapshot';this[this.Tape=4]='Tape';this[this.VbrVersionNotSupported=5]='VbrVersionNotSupported'});
Ext.cmd.derive('Veeam.model.VmQuickBackupAvailability',Ext.Base,{singleton:!0,privates:{_texts:{0:'',1:'Quick Backup is only supported for VMs included in backup job',2:'Unable to perform Quick Backup: backup job is missing',3:'Quick Backup is not supported for vCloud Director VMs',4:'Quick Backup is only supported for VMs included in backup job'}},getReason:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'VmQuickBackupAvailability'],
function(){this[this.Available=0]='Available';this[this.JobTypeIsNotBackup=1]='JobTypeIsNotBackup';this[this.JobDoesNotExist=2]='JobDoesNotExist';this[this.PlatformVcd=3]='PlatformVcd';this[this.Agent=4]='Agent'});
Ext.cmd.derive('MainApp.view.main.vms.VmsModel',Ext.app.ViewModel,{data:{hasVCloud:!1,filter:{server:'all',name:null,selectedServer:null},selectedVm:null},stores:{vmsStore:{type:'app-store',rpcMethod:'Api.report.vms',fields:[{name:'id'},{name:'pointId'},{name:'vmId'},{name:'vmName'},{name:'platform',type:'int'},{name:'lastSuccessTime',type:'date',format:'c'},{name:'dbInstanceId'},{name:'backupServerName'},{name:'backupServerVersion'},{name:'jobId',allowNull:!0},{name:'jobName',allowNull:!0},{name:'location'},
{name:'lastBackupFile'},{name:'vAppId',allowNull:!0},{name:'vAppName'},{name:'restorePointsCount',type:'int'},{name:'isReplica',type:'boolean'},{name:'showRestorePoints',type:'boolean',defaultValue:!0},{name:'restoreAvailability',type:'int',allowNull:!1},{name:'canRestore',calculate:function(data){return data.restoreAvailability===Veeam.model.VmRestoreAvailability.Available}},{name:'deleteAvailability',type:'int',allowNull:!1},{name:'canDelete',calculate:function(data){return data.deleteAvailability===
Veeam.model.VmDeleteAvailability.Available}},{name:'quickBackupAvailability',type:'int',allowNull:!1},{name:'canQuickBackup',calculate:function(data){return data.quickBackupAvailability===Veeam.model.VmQuickBackupAvailability.Available}}],sorters:{direction:'ASC',property:'vmName'},remoteSort:!0,sortOnLoad:!0},serversStore:{fields:['id','name'],idProperty:'id',data:[]}},formulas:{isRestoreAvailable:{bind:'{selectedVm}',get:function(selected){return null!=selected&&MainApp.app.getHelper().isEnterpriseLicense()&&
MainApp.app.getUser().canRestoreVm()?null!=selected.get('canRestore')&&selected.get('canRestore'):!1}},showRestoreMenu:{bind:'{selectedVm}',get:function(selected){return selected?selected.get('isReplica')?!1:(selected=selected.get('backupServerVersion'))&&9===selected.major&&0===selected.minor?!1:!0:!0}},isDeleteAvailable:{bind:'{selectedVm}',get:function(selected){return null!=selected&&MainApp.app.getHelper().isEnterpriseLicense()?MainApp.app.getUser().canDeleteVm()&&selected.get('canDelete'):!1}},
restoreTooltip:{bind:'{selectedVm}',get:function(selected){return MainApp.app.getHelper().isEnterpriseLicense()?MainApp.app.getUser().canRestoreVm()?selected&&Veeam.model.VmRestoreAvailability.getReason(selected.get('restoreAvailability')):"You don't have sufficient permissions to perform this action":'This feature is not available in your product edition'}},deleteTooltip:{bind:'{selectedVm}',get:function(selected){return MainApp.app.getHelper().isEnterpriseLicense()?MainApp.app.getUser().canDeleteVm()?
selected&&Veeam.model.VmDeleteAvailability.getReason(selected.get('deleteAvailability')):"You don't have sufficient permissions to perform this action":'This feature is not available in your product edition'}},isFailoverPlanAvaliable:{get:function(){return MainApp.app.getHelper().isEnterpriseLicense()}},failoverPlanTooltip:function(){return MainApp.app.getHelper().isEnterpriseLicense()?null:'This feature is not available in your product edition'},isQuickBackupAvailable:{bind:'{selectedVm}',get:function(selected){return null!=
selected&&MainApp.app.getHelper().isEnterpriseLicense()?MainApp.app.getUser().canQuickBackup()&&selected.get('canQuickBackup'):!1}},quickBackupTooltip:{bind:'{selectedVm}',get:function(selected){return MainApp.app.getHelper().isEnterpriseLicense()?MainApp.app.getUser().canQuickBackup()?selected&&Veeam.model.VmQuickBackupAvailability.getReason(selected.get('quickBackupAvailability')):"You don't have sufficient permissions to perform this action":'This feature is not available in your product edition'}},
isHistoryAvailable:{get:function(){return MainApp.app.getHelper().isEnterpriseLicense()}}}},0,0,0,0,['viewmodel.main.vms'],0,[MainApp.view.main.vms,'VmsModel'],0);
Ext.cmd.derive('MainApp.view.main.vms.VmRestorePointsController',MainApp.base.controller.BaseController,{oibTypeRenderer:function(val){return Veeam.model.OibType[val]},onExport:function(){var vm=this.getViewModel(),id=vm.get('entityId');vm=vm.get('pointId');var sortInfo=this.getView().getSortInfo();id=Ext.apply({vmId:id,pointId:vm},sortInfo);(new Veeam.util.ExcelExporter('report.export.vmRestorePoints',[id])).start()}},0,0,0,0,['controller.main.vms.vmrestorepoints'],0,[MainApp.view.main.vms,'VmRestorePointsController'],
0);
Ext.cmd.derive('MainApp.view.main.vms.VmRestorePointsModel',Ext.app.ViewModel,{stores:{restorePointsStore:{type:'app-store',rpcMethod:'Api.report.vmRestorePoints',fields:[{name:'id'},{name:'oibCreationTime',type:'date',dateFormat:'c'},{name:'oibType',type:'int'}],extraParams:{vmId:'{entityId}',pointId:'{pointId}'},autoLoad:!0,sortOnLoad:!0,remoteSort:!0,sorters:{property:'oibCreationTime',direction:'DESC'}}}},0,0,0,0,['viewmodel.main.vms.vmrestorepoints'],0,[MainApp.view.main.vms,'VmRestorePointsModel'],0);
Ext.cmd.derive('Veeam.model.OibType',Ext.Base,{singleton:!0},0,0,0,0,0,0,[Veeam.model,'OibType'],function(){this[this.Full=0]='Full';this[this.Rollback=1]='Rollback';this[this.Increment=2]='Increment';this[this.Different=3]='Different';this[this.Snapshot=4]='Snapshot';this[this.Vaio=5]='Vaio'});
Ext.cmd.derive('MainApp.view.main.vms.VmRestorePoints',Veeam.base.view.BaseReport,{controller:'main.vms.vmrestorepoints',viewModel:{type:'main.vms.vmrestorepoints'},config:{entityId:null,pointId:null},updateEntityId:function(val){this.getViewModel().set('entityId',val)},updatePointId:function(val){this.getViewModel().set('pointId',val)},bind:{title:'{reportName}',store:'{restorePointsStore}'},columns:{defaults:{sortable:!0},items:[{header:'Restore Point',xtype:'datecolumn',dataIndex:'oibCreationTime',
flex:1},{header:'Type',dataIndex:'oibType',renderer:'oibTypeRenderer',flex:1}]},selModel:{mode:'MULTI'},listeners:{exporttoexcel:'onExport'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0},0,0,[MainApp.view.main.vms,'VmRestorePoints'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.FailoverPlanController',Veeam.base.view.BaseWindowController,{control:{form:{fieldvaliditychange:'onFormValidation'}},afterRender:function(){var form=this.lookupReference('form');setTimeout(function(){form.getForm().clearInvalid()})},getData:function(){var vm=this.getViewModel(),startupType=vm.get('startupType'),date=new Date;if(0!==startupType){date=vm.get('startDate');var t=vm.get('startTime');date=Ext.Date.add(date,Ext.Date.HOUR,t.getHours());date=
Ext.Date.add(date,Ext.Date.MINUTE,t.getMinutes())}console.log('getData','startupType',startupType);return{id:vm.get('selectedPlan.id'),startNow:0===startupType,startDate:Ext.Date.format(date,'c'),undo:2===startupType}},submitHandler:function(){var data=this.getData(),view=this.getView();if(!this.lookupReference('form').isValid())return!1;view.setLoading();MainApp.service.rpc.VmService.startFailoverPlan(data).then(this.onPlanStarted.bind(this)).otherwise(this.onError.bind(this))},onPlanStarted:function(sessionId){var view=
this.getView();view.setLoading(!1);this.redirectTo('!vms/history/'+sessionId);view.close()},onError:function(error){this.getView().setLoading(!1);return Common.ui.Msg.error(error)},onFormValidation:function(form){form=form.isValid();this.lookupReference('submitBtn').setDisabled(!form)}},0,0,0,0,['controller.main.vms.failoverplan'],0,[MainApp.view.main.vms.widgets,'FailoverPlanController'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.FailoverPlanModel',Ext.app.ViewModel,{data:{selectedPlan:null,startupType:0,startDate:new Date,startTime:new Date},stores:{failoverPlansStore:{type:'app-store',rpcMethod:'Api.failoverplan.getAll',fields:[{name:'id'},{name:'name'},{name:'dbInstanceUid'},{name:'dbInstanceName'},{name:'isRunning',type:'boolean'}],sorters:[{direction:'ASC',property:'dbInstanceName'},{direction:'ASC',property:'name'}]}},formulas:{isStartToTime:{bind:'{startupType}',get:function(t){return 1===
t}}}},0,0,0,0,['viewmodel.main.vms.failoverplan'],0,[MainApp.view.main.vms.widgets,'FailoverPlanModel'],0);
Ext.cmd.derive('MainApp.service.rpc.VmService',Ext.Base,{singleton:!0,startFailoverPlan:function(spec){return Common.Request.thenable(RPC.Api['failoverplan.start'],spec).then(function(response){return Ext.Deferred.resolved(response.message)}).otherwise(function(error){return Ext.Deferred.rejected(error)})},deleteVm:function(id){return Common.Request.thenable(RPC.Api['vm.deleteFromBackup'],id)},startQuickBackup:function(id){return Common.Request.thenable(RPC.Api['vm.quickbackup'],id)},confirmDelete:function(vmName){var deferred=
new Ext.Deferred;Common.ui.Msg.confirm('Delete machine',vmName+' will be deleted from backup. Proceed?',function(btn){return'yes'===btn?(Common.ui.Msg.wait(),deferred.resolve()):deferred.reject()});return deferred},getStageInfo:function(oibId){return Common.Request.thenable(RPC.Api['vm.getStagingInfo'],{oibId:oibId})},startVmRestore:function(spec){return Common.Request.thenable(RPC.Api['vm.startVmRestore'],spec)}},0,0,0,0,0,0,[MainApp.service.rpc,'VmService'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.FailoverPlan',Veeam.base.view.BaseWindow,{controller:'main.vms.failoverplan',viewModel:{type:'main.vms.failoverplan'},title:'Failover Plan',cls:'failover-plan-dialog',layout:'fit',resizable:!1,items:[{xtype:'form',reference:'form',monitorValid:!0,defaults:{hideLabel:!0},items:[{xtype:'combobox',reference:'selectbox',allowBlank:!1,anchor:'100%',margin:'0 0 24 0',autoSelect:!1,editable:!1,valueField:'id',displayField:'name',triggerAction:'all',emptyText:'Select failover plan',
listEmptyText:'No failover plans found',listConfig:{tpl:Ext.create('Ext.XTemplate','\x3cul class\x3d"x-list-plain"\x3e\x3ctpl for\x3d"."\x3e','\x3ctpl if\x3d"xindex \x3d\x3d 1 || this.getGroupStr(parent[xindex - 2]) !\x3d this.getGroupStr(values)"\x3e','\x3cli class\x3d"boundlist-group"\x3e\x3cb\x3e{[this.getGroupStr(values)]}\x3c/b\x3e\x3c/li\x3e','\x3c/tpl\x3e','\x3cli role\x3d"option" class\x3d"x-boundlist-item"\x3e{name}\x3c/li\x3e','\x3c/tpl\x3e\x3c/ul\x3e',{getGroupStr:function(values){return values.dbInstanceName}})},
bind:{store:'{failoverPlansStore}',selection:'{selectedPlan}'}},{xtype:'radiogroup',vertical:!0,columns:1,simpleValue:!0,bind:{value:'{startupType}',disabled:'{selectedPlan.isRunning}'},items:[{boxLabel:'Start now',inputValue:0},{boxLabel:'Start to most recent replica prior to:',inputValue:1,margin:0},{xtype:'fieldcontainer',combineErrors:!1,layout:'hbox',margin:'0 0 8 30',items:[{reference:'startDateField',xtype:'datefield',allowBlank:!1,editable:!1,minValue:new Date(0),width:128,bind:{value:'{startDate}',
disabled:'{!isStartToTime}'}},{reference:'startTimeField',xtype:'timefield',increment:10,margin:'0 0 0 8',format:'defaultTimeFormat',width:128,typeahead:!0,allowBlank:!1,bind:{value:'{startTime}',disabled:'{!isStartToTime}'}}]},{boxLabel:'Undo',inputValue:2}]}]}],buttons:[{text:'OK',ui:'primary',reference:'submitBtn',handler:'submitHandler'},{text:'Cancel',ui:'alternate',handler:'closeHandler'}]},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},
0,0,[MainApp.view.main.vms.widgets,'FailoverPlan'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.RestoreVmWizardController',ToolKit.wizard.WizardController,{initViewModel:function(vm){this.reloadStageBinding=vm.bind('{selectedPoint}',this.loadStagingInfo,this)},loadStagingInfo:function(selectedPoint){var card=this.lookupReference('repository-card');if(null==selectedPoint)return!1;var jobType=selectedPoint.get('jobType');Veeam.model.JobType[jobType]===Veeam.model.JobType.VmTapeBackup?(selectedPoint=selectedPoint.get('oibId'),MainApp.service.rpc.VmService.getStageInfo(selectedPoint).then(this.onStageInfoLoaded.bind(this),
Common.ui.Msg.error),this.setHiddenCard(card,!1),this.updateButtonsState(),this.getView().defaultCommonData.isTapeJobSelected=!0):(this.setHiddenCard(card,!0),this.getView().defaultCommonData.isTapeJobSelected=!1);return!0},onStageInfoLoaded:function(stagingData){var repositories=stagingData.repositories;stagingData=stagingData.isDirectRestoreSupported;repositories.length&&this.getViewModel().getStore('stagingRepoStore').add(repositories);this.getViewModel().set('isDirectRestoreSupported',stagingData);
stagingData||this.getViewModel().set('data.useStaging',!0)},onRestorePointsLoad:function(store){var vm=this.getViewModel();store.count()&&vm.set('selectedPoint',store.getAt(0))},isValid:function(){var validationMessage=this.checkIfSanSnapshot();return validationMessage?(Common.ui.Msg.error(validationMessage),!1):!0},action:function(data){var spec=this.getRestoreSpec();this.isValid(data)&&(this.beforeAction(),this.startRestore(spec))},startRestore:function(spec){var me=this,vm=me.getViewModel(),vmName=
vm.get('vmName'),isReplica=vm.get('isReplica');me.getView().setLoading('Please wait...');var onSuccess=function(response){Ext.MessageBox.hide();me.fireViewEvent('finish',response.message);me.closeAfterFinish()};var onError=function(response){me.getView().setLoading(!1);me.afterAction();return response.prompt?onPrompt(response):Common.ui.Msg.error(response)};var onPrompt=function(response){me.showPrompt(response.message).then(function(){var forcedSpec=Ext.apply({forceStart:!0},spec);me.startRestore(forcedSpec)})};
spec.isOverwrite&&!spec.forceStart?Common.ui.Msg.confirm(!1,Ext.String.format(isReplica?'{0} failover will now be executed.':'{0} will be restored back to the original location.\nIf present, the existing VM will be shut down and deleted.',vmName),function(btn){'yes'===btn?(spec.forceStart=isReplica,MainApp.service.rpc.VmService.startVmRestore(spec).then(onSuccess).otherwise(onError)):(me.getView().setLoading(!1),me.afterAction())},me):MainApp.service.rpc.VmService.startVmRestore(spec).then(onSuccess).otherwise(onError)},
showPrompt:function(messages){var me=this;return messages.split('/r/n').reduce(function(promise,message){return promise.then(function(){return me.showWarning(message)})},Ext.Promise.resolve())},showWarning:function(message){var deferred=new Ext.Deferred;Common.ui.Msg.warning({message:'Warning: '+message,fn:function(act){'ok'!==act&&deferred.reject(!1);deferred.resolve(!0)}});return deferred.promise},getRestoreSpec:function(){var vm=this.getViewModel(),data=Ext.clone(vm.get('data'));return Ext.apply(data,
{oibId:vm.get('selectedPoint.oibId'),repositoryId:null==vm.get('repositoryId')?Common.util.Constants.EMPTY_GUID:vm.get('repositoryId'),isOverwrite:vm.get('isOverwrite')})},destroy:function(){Ext.destroy(this.reloadStageBinding);ToolKit.wizard.WizardController.prototype.destroy.call(this)},checkIfSanSnapshot:function(){var selected=this.getViewModel().get('selectedPoint'),jobType=selected.get('jobType'),text=this.getViewModel().get('sanSnapshotErrorText');return selected?Veeam.model.JobType[jobType]===
Veeam.model.JobType.SanRescan?text:!1:!1},updateButtonsState:function(){var card=this.lastActive,wizard=this.getView(),prevBtn=this.lookupReference('prevBtn'),nextBtn=this.lookupReference('nextBtn'),saveBtn=this.lookupReference('saveBtn'),isFirst=card===this.getFirstAllowed();card=card===this.getLastAllowed();prevBtn.setHidden(isFirst);nextBtn.setHidden(card&&wizard.hideNextButtonOnSummary);nextBtn.setDisabled(card&&wizard.disableNextButtonOnSummary);saveBtn.setHidden(wizard.hideSaveButton&&!card);
saveBtn.setDisabled(!wizard.isEdit&&!card)}},0,0,0,0,['controller.main.vms.widget.restorevm'],0,[MainApp.view.main.vms.widgets,'RestoreVmWizardController'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.RestoreVmWizardModel',Ext.app.ViewModel,{data:{platform:null,oibId:null,vmName:null,bsVersion:null,isOverwrite:!0,selectedPoint:null,isReplica:!1,isVApp:!1,isTapeJobSelected:!1,isSanSnapshotSelected:!1,isDirectRestoreSupported:!0,data:{powerOn:!0,quickRollback:!1,restoreVmTags:!0,useStaging:!0,repositoryId:null},repositoryInfoText:'If you select this option, all required backup files will be copied from tape to the selected backup repository first, allowing multiple machines located in the same backup files to be restored faster while reducing stress on tape hardware and media',
sanSnapshotErrorText:'Restoring machine from storage snapshot is not possible through this portal.\nContact your backup administrator to perform the restore'},formulas:{notReplica:{bind:'{selectedPoint}',get:function(p){return!!p&&Veeam.model.JobType[p.jobType]!==Veeam.model.JobType.Replica}},powerOnAvailable:{bind:'{notReplica}',get:function(p){return!!p}},quickBackupAvailable:{bind:{selection:'{notReplica}',isOverwrite:'{isOverwrite}'},get:function(d){return!!d.selection&&d.isOverwrite}}},stores:{restorePointsStore:{type:'app-store',
rpcMethod:'Api.vm.getAllRestorePoints',fields:[{name:'oibId'},{name:'backupDate',type:'date',dateFormat:'c'},{name:'pointType'},{name:'jobName'},{name:'jobType'}],idProperty:'oibId',extraParams:{oibId:'{oibId}'},autoLoad:!0,listeners:{load:'onRestorePointsLoad'}},stagingRepoStore:{fields:['id','name'],autoLoad:!1}}},0,0,0,0,['viewmodel.main.vms.widget.restorevm'],0,[MainApp.view.main.vms.widgets,'RestoreVmWizardModel'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.BaseWizardCard',ToolKit.wizard.FormCard,{layout:{type:'vbox',align:'stretch'}},0,0,'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0},0,[[Veeam.mixin.WizardCardTitle.prototype.mixinId||Veeam.mixin.WizardCardTitle.$className,Veeam.mixin.WizardCardTitle]],[MainApp.view.main.vms.widgets,'BaseWizardCard'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.RestorePointCard',MainApp.view.main.vms.widgets.BaseWizardCard,{viewModel:{},title:'Restore point',cardTitle:'Select machine restore point',hidden:!0,defaults:{padding:'0 16'},items:[{bind:{store:'{restorePointsStore}',selection:'{selectedPoint}'},xtype:'deferredmaskgrid',multiSelect:!1,singleSelect:!0,flex:1,emptyText:'Found 0 restore points',columnResize:!0,columnSort:!1,margin:'0 0 24 0',columns:{defaults:{menuDisabled:!0,sortable:!1},items:[{header:'Backup Date',
dataIndex:'backupDate',flex:1,xtype:'datecolumn'},{header:'Type',flex:1,dataIndex:'pointType'},{header:'Job Name',flex:1,dataIndex:'jobName',xtype:'templatecolumn',tpl:'{jobName:htmlEncode}'}]}},{xtype:'checkbox',boxLabel:'Quick rollback (restore changed blocks only) ',bind:{disabled:'{!quickBackupAvailable}',value:'{data.quickRollback}',hidden:'{isReplica}'}},{xtype:'checkbox',boxLabel:'Power on machine after restoring',bind:{value:'{data.powerOn}',disabled:'{!powerOnAvailable}',hidden:'{isReplica}'}}],
getCustomData:function(customData){customData=Ext.clone(customData);var cardData=this.getViewModel().get('data');return Ext.apply(customData,cardData)}},0,['main-vms-wizard-restorepointcard','main.vms.widget.restorepointcard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.vms.widget.restorepointcard main-vms-wizard-restorepointcard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.vms.widget.restorepointcard':!0,
'main-vms-wizard-restorepointcard':!0},['widget.main-vms-wizard-restorepointcard','widget.main.vms.widget.restorepointcard'],0,[MainApp.view.main.vms.widgets,'RestorePointCard'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.RepositoryCard',MainApp.view.main.vms.widgets.BaseWizardCard,{viewModel:{},title:'Restore Source',cardTitle:'Choose whether the restore should be performed directly from tape, or via staging repository.',items:[{xtype:'checkbox',padding:'0 16',hideLabel:!0,checked:!1,boxLabel:'Restore through a staging backup repository',bind:{value:'{data.useStaging}',disabled:'{!isDirectRestoreSupported}'}},{xtype:'combobox',padding:'0 16',bind:{store:'{stagingRepoStore}',
value:'{data.repositoryId}',disabled:'{!data.useStaging}'},fieldLabel:'Backup repository',allowBlank:!1,valueField:'id',labelWidth:180,displayField:'name',queryMode:'local',editable:!1,disabled:!0,triggerAction:'all'},{xclass:'Common.widget.Alert',margin:'8 16',bind:{html:'{repositoryInfoText}'}}],computeHidden:function(data){return!data.isTapeJobSelected}},0,['main-vms-wizard-repositorycard','main.vms.widget.repositorycard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.vms.widget.repositorycard main-vms-wizard-repositorycard'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.vms.widget.repositorycard':!0,'main-vms-wizard-repositorycard':!0},['widget.main-vms-wizard-repositorycard','widget.main.vms.widget.repositorycard'],0,[MainApp.view.main.vms.widgets,'RepositoryCard'],0);
Ext.cmd.derive('MainApp.view.main.vms.widgets.RestoreVmWizard',Veeam.view.VeeamWizard,{plugins:['deferredmask'],viewModel:{type:'main.vms.widget.restorevm'},controller:'main.vms.widget.restorevm',title:'Restore',defaultBodyPadding:0,tabWidth:130,prevButtonText:'Previous',cls:'main-vms-restorevm-wizard',bodyCls:'main-vms-restorevm-wizard-body',ui:'wizard',width:800,height:600,config:{vmName:null,bsVersion:null,oibId:null,platform:null,isOverwrite:null,isReplica:!1},updateVmName:function(v){this.getViewModel().set('vmName',
v)},updateBsVersion:function(v){this.getViewModel().set('bsVersion',v)},updateOibId:function(v){this.getViewModel().set('oibId',v)},updatePlatform:function(v){this.getViewModel().set('platform',v)},updateIsOverwrite:function(v){this.getViewModel().set('isOverwrite',v)},updateIsReplica:function(v){this.getViewModel().set('isReplica',v)},defaults:{xtype:'toolkit.wizard.FormCard'},items:[{title:'Restore point',xtype:'main-vms-wizard-restorepointcard'},{xtype:'main-vms-wizard-repositorycard',reference:'repository-card'}],
initComponent:function(){Ext.apply(this,{hideSaveButton:!0,commonData:{isTapeJobSelected:!1}});Veeam.view.VeeamWizard.prototype.initComponent.call(this)}},0,['main-vms-restorevm','main.vms.wizard'],'component box container panel window main.vms.wizard main-vms-restorevm'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.vms.wizard':!0,'main-vms-restorevm':!0},['widget.main-vms-restorevm','widget.main.vms.wizard'],0,[MainApp.view.main.vms.widgets,'RestoreVmWizard'],0);
Ext.cmd.derive('MainApp.model.UserTaskType',Ext.Base,{singleton:!0},0,0,0,0,0,0,[MainApp.model,'UserTaskType'],function(){this[this.RebuildRoles=0]='RebuildRoles';this[this.VcPlugin=1]='VcPlugin';this[this.Mount=2]='Mount'});Ext.cmd.derive('MainApp.model.UserTaskResult',Ext.Base,{singleton:!0},0,0,0,0,0,0,[MainApp.model,'UserTaskResult'],function(){this[this.SUCCESS=1]='SUCCESS';this[this.WARNING=2]='WARNING';this[this.ERROR=3]='ERROR'});
Ext.cmd.derive('MainApp.util.UserTaskManager',Ext.Base,{config:{updateInterval:5E3},tasks:null,intervalId:null,constructor:function(config){this.mixins.observable.constructor.call(this,config);this.initConfig(config);this.tasks=new Ext.util.MixedCollection},addTask:function(task){if(!(task instanceof MainApp.model.UserTask))throw Error('task is not instance of UserTask');this.tasks.add(task.getId(),task);this.intervalId&&(clearTimeout(this.intervalId),this.intervalId=null);this.cancelNextSync();this.syncTasks();
Ext.GlobalEvents.fireEvent('taskadded',this,task)},cancelNextSync:function(){this.inervalId&&(window.clearTimeout(this.intervalId),this.intervalId=null)},getTask:function(taskId){return this.tasks.get(taskId)},removeTask:function(taskid){this.tasks.removeAtKey(taskid);0==this.tasks.getCount()&&this.cancelNextSync();Ext.GlobalEvents.fireEvent('taskremoved',this,taskid)},syncTasks:function(){var pendingTasks=this.tasks.getRange().map(function(t){return t.getId()})||[];0!==pendingTasks.length&&(Common.Request.thenable(RPC.Api['taskmanager.sync'],
pendingTasks).then(this.syncTasksCallback.bind(this)).otherwise(console.error.bind(console)).done(),Ext.GlobalEvents.fireEvent('tasksync'))},syncTasksCallback:function(result){if(!1===result.success)throw Error('Failed to sync user tasks.');Ext.each(result.tasksResults,function(taskResult){!0===taskResult.complete&&(Ext.GlobalEvents.fireEvent('taskcomplete',this,taskResult),this.removeTask(taskResult.id))},this);0<this.tasks.getCount()&&(this.intervalId=window.setTimeout(this.syncTasks.bind(this),
this.getUpdateInterval()))},check:function(taskId){return-1!=this.tasks.indexOfKey(taskId)}},1,0,0,0,0,[[Ext.util.Observable.prototype.mixinId||Ext.util.Observable.$className,Ext.util.Observable]],[MainApp.util,'UserTaskManager'],0);
Ext.cmd.derive('MainApp.model.ScopeObject',Ext.data.Model,{fields:[{name:'id',allowNull:!0,defaultValue:null},{name:'clientId',persist:!1},{name:'state',type:'integer'},{name:'name'},{name:'objectRef'},{name:'hostInstanceId'},{name:'objectKeyHash'},{name:'viewType'},{name:'objectType'},{name:'platform',type:'integer'},{name:'hostInstanceName'},{name:'uid',calculate:function(data){return data.hostInstanceId+'_'+data.objectRef}}],idProperty:'clientId'},0,0,0,0,0,0,[MainApp.model,'ScopeObject'],0);
Ext.cmd.derive('MainApp.model.FullAccountConfig',Ext.data.Model,{fields:[{name:'id',allowNull:!0,defaultValue:null},{name:'clientId',persist:!1},{name:'accountName',mapping:'account.name'},{name:'accountType',type:'integer',defaultValue:1},{name:'roleId',type:'integer',mapping:'role.id'},{name:'scopeEnabled',type:'boolean'},{name:'canRestoreFiles',type:'boolean'},{name:'canRestoreVms',type:'boolean'},{name:'canRestoreExchange',type:'boolean'},{name:'canRestoreSQL',type:'boolean'},{name:'canRestoreOracle',
type:'boolean'},{name:'noDownloads',type:'boolean',mapping:'flrSettings.noDownloads'},{name:'flrRestrictedByExt',type:'bool',mapping:'flrSettings.flrRestrictedByExt'},{name:'flrExtRestrictions',mapping:'flrSettings.flrExtRestrictions'},{name:'denyRestoreToOriginal',type:'boolean',mapping:'dbRestoreSettings.denyRestoreToOriginal'}],idProperty:'clientId',hasAnyPermission:function(){var data=this.data;return!!(data.canRestoreFiles||data.canRestoreVms||data.canRestoreExchange||data.canRestoreSQL||data.canRestoreOracle)},
hasMany:{model:'MainApp.model.ScopeObject',name:'scopeObjects'},validators:{accountName:'presence'},proxy:{type:'direct',api:{read:'Api.getAccount',create:'Api.addAccount',update:'Api.editAccount',destroy:'Api.removeAccount'},reader:{type:'json'},writer:{type:'json',writeAllFields:!0}}},0,0,0,0,0,0,[MainApp.model,'FullAccountConfig'],0);
Ext.cmd.derive('MainApp.service.AccountService',Ext.Base,{singleton:!0,getAccount:function(id){var deferred=new Ext.Deferred;MainApp.model.FullAccountConfig.load(id,{success:function(account){return deferred.resolve(account)},failure:function(record,operation){return deferred.reject(operation.getError())}});return deferred.promise},saveAccount:function(rec){var deffered=new Ext.Deferred;rec.save({failure:function(model,operation){return deffered.reject(operation.getError())},success:function(model){return deffered.resolve(model)}});
return deffered.promise},removeAccount:function(id){return Common.Request.thenable(RPC.Api.removeAccount,id)},rebuildScope:function(){return Common.Request.thenable(RPC.Api['scope.rebuildAll'])},rebuildUserScope:function(){return Common.Request.thenable(RPC.Api['scope.rebuild'])}},0,0,0,0,0,0,[MainApp.service,'AccountService'],0);
Ext.cmd.derive('MainApp.view.common.ScopeRebuildButtonController',Ext.app.ViewController,{listen:{taskmanager:{complete:'taskCompleteHandler'}},onTaskSuccess:function(){Ext.GlobalEvents.fireEvent('notification',{type:'success',message:'Scope has been rebuilt successfully'})},onTaskError:function(error){console.error('User task failed: ',error);Ext.GlobalEvents.fireEvent('notification',{type:'error',message:error.message?error.message:error})},clickHandler:function(){if(this.getView().busy)return!1;
MainApp.service.AccountService.rebuildUserScope().then(this.startJobCallback.bind(this)).otherwise(this.onTaskError.bind(this))},startJobCallback:function(response){(response=response.taskId)||Ext.raise('Failed to create task subscription - no task ID');this.getView().busy=!0;this.getView().updateUI();return Common.signalr.TaskManager.monitorTask(response,'scoperebuild')},taskCompleteHandler:function(type,context,result){if('scoperebuild'===type){this._onComplete();if(!1===result.success)this.onTaskError(result);
else this.onTaskSuccess(context);return!1}},privates:{_onComplete:function(){this.getView().busy=!1;this.getView().updateUI()}}},0,0,0,0,['controller.scoperebuildbutton'],0,[MainApp.view.common,'ScopeRebuildButtonController'],0);
Ext.cmd.derive('MainApp.view.common.ScopeRebuildButton',Ext.Button,{hidden:!0,busy:!1,iconCls:'scope-rebuild',text:"I don't see my machine",busyLinkText:'Rebuilding your scope\x26hellip;',listeners:{click:'clickHandler'},controller:'scoperebuildbutton',updateUI:function(){this.busy?(this.setText(this.busyLinkText),this.setIconCls('progress')):(this.setText(this.getInitialConfig().text),this.setIconCls('scope-rebuild'))},canBeShown:function(){var app=MainApp.app;return app.getHelper().isEnterprisePlusLicense()&&
!app.getUser().canConfigurate()&&app.getHelper().isFullAppMode()}},0,['scopebutton'],['component','box','button','scopebutton'],{component:!0,box:!0,button:!0,scopebutton:!0},['widget.scopebutton'],0,[MainApp.view.common,'ScopeRebuildButton'],0);
Ext.cmd.derive('MainApp.view.main.vms.VmsList',Veeam.base.view.BaseGrid,{autoUpdateTimeout:2E4},0,['main-vms-list'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid main-vms-list'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,'main-vms-list':!0},['widget.main-vms-list'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],
[MainApp.view.main.vms,'VmsList'],0);
Ext.cmd.derive('MainApp.view.main.vms.Vms',Ext.Panel,{viewModel:{type:'main.vms'},controller:'main.vms',layout:{type:'vbox',align:'stretch'},items:[{xtype:'toolbar',cls:'filter-toolbar',items:[{xtype:'combo',width:466,labelWidth:90,matchFieldWidth:!1,listConfig:{minWidth:368},fieldLabel:'Backup server',queryMode:'local',displayField:'name',valueField:'id',forceSelection:!0,editable:!1,bind:{store:'{serversStore}',value:'{filter.server}',selection:'{filter.selectedServer}'},listeners:{select:'loadData'}}]},
{xtype:'main-vms-list',reference:'vmsList',flex:1,bind:{store:'{vmsStore}',selection:'{selectedVm}'},listeners:{activate:'loadData',cellclick:'onCellClick',exporttoexcel:'onExport'},columns:{defaults:{emptyCellText:'\x3cspan class\x3d"empty"\x3eNot available\x3c/a\x3e'},items:[{text:'Machine',dataIndex:'vmName',flex:1.5,renderer:'urlToVmRenderer'},{text:'vApp',dataIndex:'vAppName',xtype:'templatecolumn',tpl:'{vAppName:htmlEncode}',flex:1,bind:{hidden:'{!hasVCloud}'}},{text:'Backup server',dataIndex:'backupServerName',
flex:1},{text:'Job name',dataIndex:'jobName',flex:1,xtype:'templatecolumn',tpl:'{jobName:htmlEncode}'},{text:'Restore points',dataIndex:'restorePointsCount',renderer:'restorePointsRenderer',align:'right',width:150},{text:'Location',dataIndex:'location',flex:1},{text:'Path',dataIndex:'lastBackupFile',flex:1.5,sortable:!1},{text:'Last Success',dataIndex:'lastSuccessTime',flex:1,xtype:'datecolumn'}]},leftButtons:[{xtype:'textfield',width:272,emptyText:'Search by machine name',cls:'textfield-search',
inputAttrTpl:'required',triggers:{clear:{cls:'x-form-clear-trigger',hidden:!0,handler:'clearNameField'},search:{cls:'x-form-search-trigger',handler:'loadData'}},bind:'{filter.name}',listeners:{change:{buffer:500,fn:'nameFieldChange'}}},{xtype:'scopebutton',reference:'scopeButton',ui:'text',hiden:!0},{text:'Restore',iconCls:'restore-vm',width:104,disabled:!0,menu:new Ext.menu.Menu({items:[{iconCls:'restore-overwrite',text:'Overwrite',handler:'onRestoreVmClick',keep:!1},{iconCls:'restore-keep',text:'Keep',
handler:'onRestoreVmClick',keep:!0}]}),bind:{disabled:'{!isRestoreAvailable}',tooltip:'{restoreTooltip}',hidden:'{!showRestoreMenu}'}},{text:'Restore',iconCls:'restore-vm',width:104,padding:'8 16 8 3',disabled:!0,handler:'onRestoreVmClick',keep:!1,bind:{disabled:'{!isRestoreAvailable}',tooltip:'{restoreTooltip}',hidden:'{showRestoreMenu}'}},{text:'Failover Plan...',iconCls:'failover-plan',handler:'onFailoverPlanClick',disabled:!0,bind:{disabled:'{!isFailoverPlanAvaliable}',tooltip:'{failoverPlanTooltip}'}},
{text:'Delete',iconCls:'delete-vm',handler:'onDeleteClick',bind:{disabled:'{!isDeleteAvailable}',tooltip:'{deleteTooltip}'}},{text:'Quick Backup',iconCls:'quick-backup',handler:'onQuickBackupClick',bind:{disabled:'{!isQuickBackupAvailable}',tooltip:'{quickBackupTooltip}'}},{text:'History',iconCls:'history',handler:'onViewHistory',bind:{hidden:'{!isHistoryAvailable}'}}]}]},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},0,0,[MainApp.view.main.vms,'Vms'],0);
Ext.cmd.derive('MainApp.view.main.vms.RestoreSessionsHistoryController',MainApp.base.controller.BaseController,{onSelectionChange:function(grid,selection){grid=this.getView();0===selection.length&&(selection=grid.lookupReference('footer'))&&selection.fireEvent('reset')},statusRenderer:function(status){return Ext.String.format('\x3cspan class\x3d"cell__icon {0}"\x3e{1}\x3c/span\x3e',Veeam.model.JobSessionStatus.getIconCls(status),Veeam.model.JobSessionStatus.getLabel(status))},reloadData:function(){this.getView().getStore().reload()},
onBeforeReload:function(store,operation){var sm=this.getView().getSelectionModel(),i,reselect=null;if(sm&&sm.hasSelection()){var selection=sm.getSelection();for(i=0;i<selection.length;i++)selection[i]=store.indexOf(selection[i]);reselect=function(){for(i=0;i<selection.length;i++)sm.select(selection[i])}}operation.setCallback(reselect)},navigateToIndex:function(){this.redirectTo('!vms')},refreshHistory:function(){this.getViewModel().get('vmRestoreSessionsStore').reload()}},0,0,0,0,['controller.main.vms.restoresessions'],
0,[MainApp.view.main.vms,'RestoreSessionsHistoryController'],0);
Ext.cmd.derive('MainApp.view.main.vms.RestoreSessionsHistoryModel',Ext.app.ViewModel,{stores:{vmRestoreSessionsStore:{type:'app-store',rpcMethod:'Api.report.vmRestoreSessions',fields:[{name:'uid'},{name:'dateStartTs',type:'date',dateFormat:'c'},{name:'dateEndTs',type:'date',dateFormat:'c',allowNull:!0},{name:'initiator'},{name:'status'}],idProperty:'uid',autoLoad:!0,sortOnLoad:!0,remoteSort:!0,sorters:{property:'dateStartTs',direction:'DESC'},listeners:{beforeload:'onBeforeReload'}}},data:{selectedSession:null}},
0,0,0,0,['viewmodel.main.vms.restoresessions'],0,[MainApp.view.main.vms,'RestoreSessionsHistoryModel'],0);
Ext.cmd.derive('MainApp.view.main.vms.RestoreSessionLogController',MainApp.base.controller.BaseController,{initViewModel:function(vm){this.binding=vm.bind('{sessionId}',this.onSessionIdBindingChange,this)},onSessionIdBindingChange:function(sessionId){if(null===sessionId)this.onReset();else this.onRefresh()},onRefresh:function(){this.getView().getStore().reload()},onReset:function(){this.getView().getStore().removeAll()},destroy:function(){Ext.destroy(this.binding);MainApp.base.controller.BaseController.prototype.destroy.apply(this,
arguments)}},0,0,0,0,['controller.main.vms.sessionlog'],0,[MainApp.view.main.vms,'RestoreSessionLogController'],0);Ext.cmd.derive('MainApp.view.main.vms.RestoreSessionLogModel',Ext.app.ViewModel,{stores:{sessionLogStore:{type:'app-store',rpcMethod:'Api.report.vmRestoreSessionLog',model:'Veeam.model.report.LogRecord',extraParams:{sessionId:'{sessionId}',dbInstanceId:'{dbInstanceId}'},autoLoad:!0}}},0,0,0,0,['viewmodel.main.vms.sessionlog'],0,[MainApp.view.main.vms,'RestoreSessionLogModel'],0);
Ext.cmd.derive('MainApp.view.main.vms.RestoreSessionLog',Ext.view.View,{controller:'main.vms.sessionlog',viewModel:{type:'main.vms.sessionlog'},config:{sessionId:null,dbInstanceId:null},cls:'details-footer',publishes:['sessionId','dbInstanceId'],updateSessionId:function(value){this.getViewModel().set('sessionId',value)},updateDbInstanceId:function(value){this.getViewModel().set('dbInstanceId',value)},layout:'fit',bind:{store:'{sessionLogStore}'},loadMask:!1,tpl:'\x3cdiv class\x3d"session-details-footer"\x3e;\x3ctpl for\x3d"."\x3e;\x3cdiv class\x3d"log-record"\x3e;\x3cdiv class\x3d"icon {icon}"\x3e\x3cspan class\x3d"cursor-help" data-qtip\x3d"event time: {eventTime:date}"\x3e{message}\x3c/span\x3e\x3c/div\x3e;\x3c/div\x3e;\x3c/tpl\x3e;\x3c/div\x3e'.split(';'),
itemSelector:'.log-record',emptyText:'\x3cdiv class\x3d"session-details-footer"\x3eSelect session to view details\x3c/div\x3e'},0,['main.vms.sessionlog'],['component','box','dataview','main.vms.sessionlog'],{component:!0,box:!0,dataview:!0,'main.vms.sessionlog':!0},['widget.main.vms.sessionlog'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.vms,'RestoreSessionLog'],0);
Ext.cmd.derive('MainApp.view.main.vms.RestoreSessionsHistory',Veeam.base.view.BaseReport,{controller:'main.vms.restoresessions',viewModel:{type:'main.vms.restoresessions'},bind:{store:'{vmRestoreSessionsStore}',selection:'{selectedSession}'},initToolbar:function(){return null},dockedItems:[{dock:'top',xtype:'toolbar',cls:'toolbar-history',items:[{xtype:'button',scale:'large',ui:'text',iconCls:'exit__large',handler:'navigateToIndex'},{xtype:'tbseparator',cls:'big-separator'},{xtype:'tbtext',html:'\x3ch1\x3eVM Restore History\x3c/h1\x3e'},
'-\x3e',{text:'Refresh',iconCls:'refresh',handler:'refreshHistory'}]}],bbar:{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'pagingtoolbar',displayInfo:!0,bind:'{vmRestoreSessionsStore}'},{xclass:'MainApp.view.main.vms.RestoreSessionLog',reference:'footer',height:250,flex:1,scrollable:'y',bind:{sessionId:'{selectedSession.uid}',dbInstanceId:'{selectedSession.dbInstanceId}'}}]},columns:{defaults:{sortable:!0},items:[{header:'Machine',dataIndex:'vmName',xtype:'templatecolumn',
tpl:'{vmName:htmlEncode}',flex:1},{header:'Initiated by',dataIndex:'initiator',flex:1},{header:'Started at',dataIndex:'dateStartTs',xtype:'nullabledatecolumn',flex:1},{header:'End Time',dataIndex:'dateEndTs',xtype:'nullabledatecolumn',flex:1},{header:'Status',dataIndex:'status',renderer:'statusRenderer',flex:1}]},selModel:{mode:'MULTI'},listeners:{activate:'reloadData',selectionchange:'onSelectionChange'},selectSession:function(id){(id=this.getStore().findRecord('uid',id))&&this.getSelectionModel().select(id)}},
0,['main-vms-restoresessionshistory'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid basereport main-vms-restoresessionshistory'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,basereport:!0,'main-vms-restoresessionshistory':!0},['widget.main-vms-restoresessionshistory'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],
[MainApp.view.main.vms,'RestoreSessionsHistory'],0);
Ext.cmd.derive('MainApp.view.main.vms.Main',Ext.Panel,{controller:'main.vms.main',cls:'main-vms',bodyCls:'main-vms-body',layout:{type:'card',deferredRender:!0},items:[{xclass:'MainApp.view.main.vms.Vms'},{xclass:'MainApp.view.main.vms.RestoreSessionsHistory'}]},0,['main-vms','main.vms'],'component box container panel main.vms main-vms'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.vms':!0,'main-vms':!0},['widget.main-vms','widget.main.vms'],0,[MainApp.view.main.vms,'Main'],0);
Ext.cmd.derive('MainApp.view.main.files.FilesController',MainApp.base.controller.BaseController,{listen:{global:{'files:selectvm':'changeSelectedVm','files:selectpoint':'onRestorePointChanged','files:selectpath':'onPathSelected','files:viewstatechange':'onBrowseViewStateChange','files:selectFsItem':'onFsItemSelected','files:listadd':'addToRestoreList','files:listclear':'clearRestoreList','files:restorePointsChange':'onRestorePointsChange','files:restore':'startFileRestore','files:download':'startFileDownload',
'files:refreshdata':'onRefreshData'},component:{'#searchToolbar':{search:'onSearch',reset:'onReset'},'#browsepanel':{toggleMountMode:'onToggleMountMode'}},eventmanager:{fileRestoreChanged:'onRestoreSessionProgress'}},routeSection:'files',showHistoryView:function(sessionId){var component=this.getView().setActiveItem(1);component&&sessionId&&component.selectSession(sessionId)},showIndexView:function(){this.getView().setActiveItem(0)},afterRender:function(){MainApp.app.getUser().isSelfRestoreMode()?
Veeam.service.SearchService.findUserSelfRestoreVms().then(this.selfRestoreVmResolved.bind(this)).otherwise(this.selfRestoreVmRejected.bind(this)):this.loadInitialData()},loadInitialData:function(){var vm=this.getViewModel(),session=MainApp.app.getSession(),selectedVmJson=session.getItem('files-selectedVm');session=session.getItem('files-selectedRestorePoint');if(selectedVmJson)try{var selectedVm=JSON.parse(selectedVmJson);selectedVm&&vm.set('selectedVm',Veeam.model.VmSearchResult.create(selectedVm));
if(session){var selectedRestorePoint=JSON.parse(session);selectedRestorePoint&&vm.set('selectedRestorePoint',Veeam.model.IndexedRestorePoint.create(selectedRestorePoint))}}catch(e){console.error('Failed to deserialize model. Error:',e.message)}},destroy:function(){this.selectedVmBinding=Ext.destroy(this.selectedVmBinding);this.selectedRestorePointBinding=Ext.destroy(this.selectedRestorePointBinding);MainApp.base.controller.BaseController.prototype.destroy.call(this)},selfRestoreVmResolved:function(response){var viewModel=
this.getViewModel(),vmName=response.vmName;viewModel.set('selfrestore',{vmName:vmName,vmsCount:response.vmsCount});Veeam.service.SearchService.findVm(vmName).then(this.changeSelectedVm.bind(this)).otherwise(Common.ui.Msg.error)},selfRestoreVmRejected:function(error){this.getViewModel().set('selfrestore.vmsCount',0);Common.ui.Msg.error(error)},changeSelectedVm:function(selectedVm){var viewModel=this.getViewModel(),browseResultGrid=this.lookupReference('browseresultgrid');viewModel.set('selectedVm',
selectedVm);viewModel.set('selectedRestorePoint',null);viewModel.set('selectedPath',null);viewModel.set('isMountMode',!1);viewModel.set('isSearchMode',!1);browseResultGrid.clearResults()},onRestorePointChanged:function(restorePoint,oldRestorePoint){oldRestorePoint=this.getViewModel();var browseResultGrid=this.lookupReference('browseresultgrid');oldRestorePoint.set('selectedRestorePoint',restorePoint);oldRestorePoint.set('selectedPath',null);restorePoint||oldRestorePoint.set('isMountMode',!1);oldRestorePoint.set('isSearchMode',
!restorePoint);browseResultGrid.clearResults()},onBrowseViewStateChange:function(viewState){this.getViewModel().set('currentViewState',viewState)},onFsItemSelected:function(fsItems){this.getViewModel().set('selectedFsItems',fsItems)},onRestorePointsChange:function(info){var vm=this.getViewModel();vm.set('restorePointsCount',info.count);vm.set('hasAnyIndexedPoints',info.hasAnyIndexed)},onSearch:function(cmp,request){cmp=this.getViewModel();var resultsGrid=this.lookupReference('searchresultgrid'),progressbar=
this.lookupReference('searchprogressbar');resultsGrid.loadResults(null);resultsGrid.setLoading();progressbar.show();request=this.applySearchInfo(request);console.log('Start searching. Request: ',request);cmp.set('isSearchMode',!0);Veeam.service.SearchService.search(request,this.onSearchProgress.bind(this)).then(this.onSearchComplete.bind(this)).otherwise(this.onSearchError.bind(this))},onPathSelected:function(params){var vm=this.getViewModel(),browseResultGrid=this.lookupReference('browseresultgrid');
params.totalCount?browseResultGrid.loadResults(params):(browseResultGrid.clearResults(),Ext.GlobalEvents.fireEvent('files:endbrowse'));vm.set('selectedPath',params?params.nodePath:null);vm.set('isSearchMode',!1)},onToggleMountMode:function(view,isMountMode){this.getViewModel().set('isMountMode',isMountMode)},addToRestoreList:function(record){var store=this.getViewModel().getStore('restoreListStore');store.add(record);store.sync()},clearRestoreList:function(){var store=this.getViewModel().getStore('restoreListStore');
store&&store.removeAll()},calculateRestoreListItems:function(store){var vm=this.getViewModel();vm&&vm.set('restoreItemsCount',store.getCount())},startFileRestore:function(files,isOverwrite){files=[].concat(files);console.info('files:restore: Files: %o, overwrite: %s',files,isOverwrite);return Veeam.service.FileRestoreService.confirmRestore(!1).then(this._startRestoreInternal.bind(this,files,isOverwrite?3:2)).otherwise(Common.ui.Msg.error)},startFileDownload:function(files){files=[].concat(files);
console.info('files:download',files);return Veeam.service.FileRestoreService.confirmRestore(!0).then(this._startRestoreInternal.bind(this,files,1)).otherwise(Common.ui.Msg.error)},onRestoreListItemsChanged:function(store){var storage=MainApp.app.getSession();this.calculateRestoreListItems(store);store=store.getRange().map(function(record){return record.serialize()});storage.setItem('restore-list',JSON.stringify(store));return!0},onRestoreSessionProgress:function(sender,fileRestore){console.log('File restore changed: '+
JSON.stringify(fileRestore));(sender=Veeam.manager.RestoreSessionUpdaterManager.findUpdater(fileRestore.sessionId))&&sender.handleUpdate(fileRestore)},onRefreshData:function(){var vm=this.getViewModel(),searchResultGrid=this.lookupReference('searchresultgrid'),browseResultGrid=this.lookupReference('browseresultgrid');searchResultGrid.isVisible()&&vm.get('currentSearchTask.taskId')&&searchResultGrid.getStore().reload();browseResultGrid.isVisible()&&browseResultGrid.getStore().reload()},initViewModel:function(viewModel){var storage=
MainApp.app.getSession(),configData=JSON.parse(storage.getItem('restore-list'))||[];viewModel.set('initialRestoreListData',configData);MainApp.app.getUser().isSelfRestoreMode()||(this.selectedVmBinding=viewModel.bind('{selectedVm}',function(vm){storage.setItem('files-selectedVm',vm?JSON.stringify(vm.isModel?vm.getData():vm):null)}),this.selectedRestorePointBinding=viewModel.bind('{selectedRestorePoint}',function(rp){storage.setItem('files-selectedRestorePoint',rp?JSON.stringify(rp.isModel?rp.getData():
rp):null)}))},onReset:function(){var viewModel=this.getViewModel();null!==viewModel.get('selectedPath')&&viewModel.set('isSearchMode',!1);viewModel.set('currentSearchTask',null)},onRestoreListToolbarShow:function(){this.lookupReference('wrapper-panel').toggleCls('notifcation-active',!0)},onRestoreListToolbarHide:function(){this.lookupReference('wrapper-panel').toggleCls('notifcation-active',!1)},privates:{_startRestoreInternal:function(records,restoreType){if(0===records.length)return Common.ui.Msg.error('Select an item to restore.');
if(2===restoreType||3===restoreType)for(var i=0;i<records.length;i++){var record$jscomp$0=records[i];if(!1===record$jscomp$0.canBeRestored())return Common.ui.Msg.error(Ext.String.format('Unable to restore [{0}] due to an unsupported VM platform or unknown guest path in mounted backup',record$jscomp$0.get('path')))}i=records.map(function(record){return record.getData(!0)});(new Veeam.util.RestoreStartMediator({validateCredsFunction:Veeam.service.FileRestoreService.validateCredentialsForFlr,validateCredsParam:{files:i,
restoreType:restoreType},actionAfterValidationFunction:Veeam.service.FileRestoreService.startRestore,actionAfterValidationParam:null,listeners:{failed:Common.ui.Msg.error,started:function(restoreRequest,sessionId){try{Veeam.manager.RestoreSessionUpdaterManager.createUpdater(sessionId,records)}catch(e){console.error(e)}this.redirectTo('!files/history')},showvalidate:'onShowLoadingMask',hidevalidate:'onHideLoadingMask',scope:this}})).start()},onShowLoadingMask:function(){this.getView().setLoading('Connecting...')},
onHideLoadingMask:function(){this.getView().setLoading(!1)},onSearchProgress:function(searchContext){var vm=this.getViewModel(),resultsGrid=this.lookupReference('searchresultgrid'),progressbar=this.lookupReference('searchprogressbar'),taskState=searchContext.getTask();console.log('Search task state: ',taskState);vm.set('currentSearchTask',taskState);progressbar.updateState(taskState);resultsGrid.setLoading(!1);0<taskState.resultsCount&&(!1===searchContext.getInitialLoad()&&(resultsGrid.loadResults(taskState),
searchContext.setInitialLoad(!0)),resultsGrid.updateResultsCount(taskState))},onSearchError:function(error){var resultsGrid=this.lookupReference('searchresultgrid'),progressbar=this.lookupReference('searchprogressbar');resultsGrid.loadResults(null);resultsGrid.setLoading(!1);progressbar.hide();Common.ui.Msg.error(error)},onSearchComplete:function(searchContext){var vm=this.getViewModel(),resultsGrid=this.lookupReference('searchresultgrid'),progressbar=this.lookupReference('searchprogressbar'),finishedTask=
searchContext.getTask();vm.set('currentSearchTask',finishedTask);progressbar.updateState(finishedTask);resultsGrid.setLoading(!1);!0!==finishedTask.isCanceled&&(!0===finishedTask.isError?progressbar.finishProgress():(progressbar.hide(),console.log('Loading search results',finishedTask),!1===searchContext.getInitialLoad()&&resultsGrid.loadResults(finishedTask)))},applySearchInfo:function(request){var vm=this.getViewModel(),selectedVm=vm.get('selectedVm'),selectedRestorePoint=vm.get('selectedRestorePoint'),
selectedPath=vm.get('selectedPath');return selectedRestorePoint?{vm:selectedVm?selectedVm.getData():null,restorePoint:selectedRestorePoint.getData()||null,query:request.query,advancedParams:request.advancedParams,path:selectedPath?selectedPath.isInstance?selectedPath.getFullPath():selectedPath:null,isSearchGlobally:!1}:Ext.apply(request,{vm:selectedVm?selectedVm.getData():null,activeSearchTaskId:vm.get('currentSearchTask.taskId'),isSearchGlobally:!0})}}},0,0,0,0,['controller.main.files'],0,[MainApp.view.main.files,
'FilesController'],0);Ext.cmd.derive('Veeam.model.GuestOsKind',Ext.Base,{singleton:!0},0,0,0,0,0,0,[Veeam.model,'GuestOsKind'],function(){this[this.Unknown=0]='Unknown';this[this.Windows=1]='Windows';this[this.Linux=2]='Linux';this[this.Other=3]='Other'});
Ext.cmd.derive('Veeam.model.PointRestoreAvailability',Ext.Base,{singleton:!0,privates:{_texts:{0:'',2:'Restore of agents backups located in cloud repository is not supported, please use Veeam Backup \x26 Replication console',3:'Restore of Nutanix AHV backups is not supported, please use Veeam Backup \x26 Replication console',4:'Restore of backups located in external repositories is not supported, please use Veeam Backup \x26 Replication console',5:'Restore of this backups type is not supported, please use Veeam Backup \x26 Replication console'}},
getReason:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'PointRestoreAvailability'],function(){this[this.Available=0]='Available';this[this.CloudAgentBackup=2]='CloudAgentBackup';this[this.NutanixBackup=3]='NutanixBackup';this[this.ExternalRepositoryBackup=4]='ExternalRepositoryBackup';this[this.SdkBackup=5]='SdkBackup'});
Ext.cmd.derive('Veeam.model.IndexedRestorePoint',Ext.data.Model,{fields:[{name:'backupDate',type:'date',format:'c'},{name:'oibId'},{name:'hasIndex',type:'boolean'},{name:'isRegistered',type:'boolean'},{name:'guestOsKind',type:'int'},{name:'restoreAvailability',type:'int',allowNull:!1},{name:'displayBackupDate',calculate:function(data){return Ext.isDate(data.backupDate)?Ext.Date.format(data.backupDate,'defaultFullDateFormat'):''}},{name:'isRestoreAvailable',calculate:function(data){return data.restoreAvailability===
Veeam.model.PointRestoreAvailability.Available}}],idProperty:'oibId',isMountNeeded:function(){return!1===this.get('hasIndex')},isOsKindKnown:function(){var known=!0,guestOsKind=this.get('guestOsKind'),osKind=Veeam.model.GuestOsKind;guestOsKind!==osKind.Windows&&guestOsKind!==osKind.Linux&&(known=!1);return known}},0,0,0,0,0,0,[Veeam.model,'IndexedRestorePoint'],0);
Ext.cmd.derive('Veeam.helper.IconHelper',Ext.Base,function(){return{singleton:!0,getForVmPlatform:function(platform){var p=Veeam.model.Platform;switch(platform){case p.EHyperV:return'vm';case p.EVcd:case p.EVmware:return'VirtualMachine';case p.EEndPoint:return'vaw';case p.ELinuxPhysical:return'val';default:return'VirtualMachine'}}}},0,0,0,0,0,0,[Veeam.helper,'IconHelper'],0);
Ext.cmd.derive('Veeam.model.VmSearchResult',Ext.data.Model,{fields:[{name:'clientId',persist:!1},{name:'displayName',mapping:'vmDisplayName'},{name:'realName',mapping:'vmRealName'},{name:'platform',mapping:'vmPlatform'},{name:'osKind',mapping:'vmOsKind'},{name:'platformIcon',persist:!1,calculate:function(data){return Veeam.helper.IconHelper.getForVmPlatform(data.platform)}}],idProperty:'clientId',isNasBackup:function(){return 11===this.get('platform')}},0,0,0,0,0,0,[Veeam.model,'VmSearchResult'],
0);Ext.cmd.derive('Veeam.model.FsItemRestoreAvailability',Ext.Base,{singleton:!0,privates:{_texts:{0:'',1:'Unknown drive letter',2:'Root folder selected'}},getReason:function(enumValue){Ext.isString(enumValue)&&(enumValue=this[enumValue]);return this._texts[enumValue]||''}},0,0,0,0,0,0,[Veeam.model,'FsItemRestoreAvailability'],function(){this[this.Available=0]='Available';this[this.NotMappedVolume=1]='NotMappedVolume';this[this.RootFolder=2]='RootFolder'});
Ext.cmd.derive('Veeam.model.SearchResult',Ext.data.Model,{fields:[{name:'clientId',persist:!1},{name:'path'},{name:'objectName'},{name:'owner'},{name:'size'},{name:'isFolder',type:'boolean'},{name:'modified',type:'date',dateFormat:'c',allowNull:!0},{name:'lastRestoreState',persist:!1,defaultValue:null,allowNull:!0},{name:'restoreAvailability',type:'int',allowNull:!1},{name:'canRestore',calculate:function(data){return data.restoreAvailability===Veeam.model.FsItemRestoreAvailability.Available}}],idProperty:'clientId',
hasOne:[{role:'vm',type:'Veeam.model.VmSearchResult'},{role:'restorePoint',type:'Veeam.model.IndexedRestorePoint'}],messages:{NOT_REGISTERED:'Backup file is not registered on the backup server'},clone:function(session){var vm=this.getVm(),restorePoint=this.getRestorePoint(),clonned=Ext.data.Model.prototype.clone.call(this,session);vm=vm?vm.clone(session):null;session=restorePoint?restorePoint.clone(session):null;vm&&clonned.setVm(vm);session&&clonned.setRestorePoint(session);return clonned},getHash:function(){return((this.getRestorePoint()?
this.getRestorePoint().get('oibId'):'')+'@'+this.get('path')).toLowerCase()},canBeRestored:function(){var restorePoint=this.getRestorePoint();return restorePoint&&restorePoint.get('isRegistered')&&restorePoint.get('isRestoreAvailable')?!!this.get('path')&&this.get('canRestore'):!1},canBeDownloaded:function(){var restorePoint=this.getRestorePoint();return restorePoint?restorePoint.get('isRegistered'):!1},getLegacyDataFormat:function(){return{m_fileName:this.get('objectName'),m_backedUpPath:this.get('path'),
m_modified:Ext.isDate(this.get('modified'))?Ext.Date.format(this.get('modified'),'U'):0,m_vmName:this.getVm().getData(),m_fileOwnerName:this.get('owner'),m_fileSize:this.get('size'),m_restorePoint:this.getRestorePoint().getData(),m_isDir:this.get('isFolder')}},serialize:function(){var data=this.getData();delete data[this.idProperty];var vmModel=this.getVm();var vmData=vmModel.getData();delete vmData[vmModel.getIdProperty()];vmModel=this.getRestorePoint().getData();return Ext.apply(data,{vm:vmData,
restorePoint:vmModel})},getRestoreMessage:function(){var restorePoint=this.getRestorePoint();return!1===restorePoint.get('isRegistered')?this.messages.NOT_REGISTERED:!1===restorePoint.get('isRestoreAvailable')?Veeam.model.PointRestoreAvailability.getReason(restorePoint.get('restoreAvailability')):Veeam.model.FsItemRestoreAvailability.getReason(this.get('restoreAvailability'))},getDownloadMessage:function(){return!1===this.getRestorePoint().get('isRegistered')?this.messages.NOT_REGISTERED:''}},0,0,
0,0,0,0,[Veeam.model,'SearchResult'],0);
Ext.cmd.derive('MainApp.view.main.files.FilesModel',Ext.app.ViewModel,{data:{selectedVm:null,currentSearchTask:null,isMountMode:!1,selectedRestorePoint:null,selectedPath:null,currentViewState:null,isSearchMode:!0,selectedFsItems:[],restoreItemsCount:0,restorePointsCount:0,selfrestore:{vmName:null,vmsCount:0,elapsedTime:null},initialRestoreListData:[]},stores:{restoreListStore:{model:'Veeam.model.SearchResult',autoLoad:!0,autoSync:!0,proxy:{type:'memory',data:'{initialRestoreListData}',writer:{writeAllFileds:!0}},
listeners:{datachanged:'onRestoreListItemsChanged'}}},formulas:{isSelfRestoreMode:{get:function(){return MainApp.app.getUser().isSelfRestoreMode()}},lastBackupTaken:{bind:{isSelfRestore:'{isSelfRestoreMode}',point:'{selectedRestorePoint}'},get:function(binding){return binding.isSelfRestore&&null!==binding.point?(binding=binding.point.get('backupDate'),Common.util.Format.elapsedTime(binding)):null}},hasFewVms:{bind:{isSelfRestore:'{isSelfRestoreMode}',vmsCount:'{selfrestore.vmsCount}'},get:function(binding){return binding.isSelfRestore&&
1<binding.vmsCount}},hasFewRestorePoints:{bind:{isSelfRestore:'{isSelfRestoreMode}',count:'{restorePointsCount}'},get:function(binding){return binding.isSelfRestore&&1<binding.count}},hasFewVmsOrRestorePoints:{bind:{hasVms:'{hasFewVms}',hasPoints:'{hasFewRestorePoints}'},get:function(binding){return binding.hasVms||binding.hasPoints}},hasFewVmsAndRestorePoints:{bind:{hasVms:'{hasFewVms}',hasPoints:'{hasFewRestorePoints}'},get:function(binding){return binding.hasVms&&binding.hasPoints}},selectedVmName:{bind:'{selectedVm}',
get:function(binding){return(binding?binding.get('vmDisplayName'):this.get('selfrestore.vmName'))||''}},selectedFsItem:{bind:'{selectedFsItems}',deep:!0,get:function(items){return items&&0<items.length?items[0]:null}}}},0,0,0,0,['viewmodel.main.files'],0,[MainApp.view.main.files,'FilesModel'],0);
Ext.cmd.derive('Veeam.view.field.ComboSearchField',Ext.form.ComboBox,{triggerCls:'x-form-search-trigger',displayField:'displayName',triggerAction:'query',autoSelect:!0,queryMode:'remote',editable:!0,forceSelection:!0,tpl:Ext.create('Ext.XTemplate','\x3cul class\x3d"x-list-plain"\x3e\x3ctpl for\x3d"."\x3e','\x3cli role\x3d"option" class\x3d"x-boundlist-item "\x3e\x3cdiv style\x3d"min-height: 16px;" class\x3d"icon {platformIcon}"\x3e{displayName:htmlEncode}\x3c/div\x3e\x3c/li\x3e','\x3c/tpl\x3e\x3c/ul\x3e'),
inputAttrTpl:'required',cls:'textfield-search',config:{triggers:{cross:{weight:0,cls:'x-form-clear-trigger',hidden:!0,handler:'onClearClick',scope:'this'},picker:{weight:1,handler:'onTriggerClick',scope:'this',focusOnMousedown:!0}}},listeners:{change:'checkEmptyValue',scope:'this'},onClearClick:function(){this.setValue(null);this.fireEvent('clear')},onTriggerClick:function(){Ext.form.field.ComboBox.prototype.onTriggerClick.apply(this,arguments)},updateSelection:function(selection){Ext.form.field.ComboBox.prototype.updateSelection.apply(this,
arguments);selection?(this.getTrigger('cross').show(),this.getTrigger('picker').hide()):(this.getTrigger('cross').hide(),this.getTrigger('picker').show())},checkEmptyValue:function(combo,newValue){if(!newValue)this.onClearClick()}},0,['combosearch'],'component box field textfield pickerfield combobox combo combosearch'.split(' '),{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,combobox:!0,combo:!0,combosearch:!0},['widget.combosearch'],0,[Veeam.view.field,'ComboSearchField'],0);
Ext.cmd.derive('MainApp.view.main.files.HeaderController',MainApp.base.controller.BaseController,{onPickupVm:function(btn){var dialog=Ext.create('MainApp.view.main.files.widget.PickVmWindow',{listeners:{selectvm:'pickupVmHandler',close:'showScopeButton'}});this.dialog=this.getView().add(dialog.showBy(btn,'tl',[0,32]))},pickupVmHandler:function(dialog,selectedData){dialog=this.getStore('vmSearchResultStore');selectedData&&(dialog.loadRecords(selectedData),Ext.GlobalEvents.fireEvent('files:selectvm',
selectedData))},handleVmChange:function(combo,newVal){Ext.GlobalEvents.fireEvent('files:selectvm',newVal)},handleVmClear:function(){Ext.GlobalEvents.fireEvent('files:selectvm',null)},onDestroy:function(){this.dialog=Ext.destroy(this.dialog)},onPickAnotherRestorePoint:function(){Ext.GlobalEvents.fireEvent('files:pickRetorePoint')},showScopeButton:function(){if(!MainApp.app.getUser().isSelfRestoreMode()){var scopeBtn=this.lookupReference('scopeButton');scopeBtn.canBeShown()&&scopeBtn.show()}}},0,0,
0,0,['controller.main.files.header'],0,[MainApp.view.main.files,'HeaderController'],0);
Ext.cmd.derive('MainApp.view.main.files.HeaderModel',Ext.app.ViewModel,{stores:{vmSearchResultStore:{type:'app-store',rpcMethod:'Api.files.searchVm',model:'Veeam.model.VmSearchResult',sorters:{direction:'ASC',property:'displayName'},autoLoad:!1,remoteSort:!0,sortOnLoad:!0,autoDestroy:!0}},data:{vmNotFoundText:'No machines to display'},formulas:{showSelfRestoreHeader:{bind:{mode:'{isSelfRestoreMode}',vmsCount:'{selfrestore.vmsCount}'},get:function(binding){return binding.mode&&0<Number(binding.vmsCount)}}}},
0,0,0,0,['viewmodel.main.files.header'],0,[MainApp.view.main.files,'HeaderModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.PickVmWindowController',Veeam.base.view.BaseWindowController,{initViewModel:function(vm){var me=this;me.taskIdBinding=vm.bind('{taskId}',function(value){null!==value&&vm.getStore('vmsStore').load({})},me);me.storeBinding=vm.bind('{vmsStore}',function(){me.createSearchTask(null)},me)},selectHandler:function(){var vm=this.getViewModel().get('selectedVm');vm&&(this.fireViewEvent('selectvm',vm.clone()),this.closeHandler())},onDblClicked:function(){this.selectHandler();
return!0},refresh:function(btn){var lastQuery=this.getViewModel().get('lastQuery');btn.setDisabled(!0);this.createSearchTask(lastQuery).always(function(){btn.setDisabled(!1)})},createSearchTask:function(query){var me=this,vm=me.getViewModel(),store=vm.get('vmsStore'),vmsGrid=me.lookup('vmsGrid');store.removeAll();vm.set('lastQuery',query);vmsGrid.getView().setLoading();return Veeam.service.SearchService.findVmAsync(query).then(function(task){me.getViewModel().set('taskId',task.taskId);me.getViewModel().set('resultsNumber',
task.resultsNumber);store.setTotalCount(task.resultsNumber)})},onSearch:function(query){return this.createSearchTask(query)},onClear:function(query){return this.createSearchTask(null)},destroy:function(){Ext.destroy(this.taskIdBinding,this.storeBinding);Veeam.base.view.BaseWindowController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.main.files.widget.pickvm'],0,[MainApp.view.main.files.widget,'PickVmWindowController'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.PickVmWindowModel',Ext.app.ViewModel,{stores:{vmsStore:{type:'app-store',rpcMethod:'Api.files.getSearchVmResults',model:'Veeam.model.VmSearchResult',sorters:{direction:'ASC',property:'displayName'},remoteSort:!0,sortOnLoad:!0,autoDestroy:!0,extraParams:{taskId:'{taskId}'}}},data:{selectedVm:null,taskId:null,resultsNumber:0},formulas:{selectedVmName:{bind:'{selectedVm}',get:function(vm){return vm&&Ext.util.Format.htmlEncode(vm.get('displayName'))}}}},
0,0,0,0,['viewmodel.main.files.widget.pickvm'],0,[MainApp.view.main.files.widget,'PickVmWindowModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.PickVmWindow',Veeam.base.view.BaseWindow,{controller:'main.files.widget.pickvm',viewModel:{type:'main.files.widget.pickvm'},title:'Select Machine',width:576,height:576,minWidth:520,minHeight:400,padding:0,bodyPadding:0,layout:{type:'vbox',align:'stretch'},items:[{xtype:'basegrid',flex:1,reference:'vmsGrid',cls:'vmpicker-view',hideExportBtn:!0,hideHeaders:!0,leftButtons:[{xtype:'common.searchfield',width:368,listeners:{search:'onSearch',clear:'onClear'}}],
handlers:{refreshClick:function(b){this.fireEvent('refreshClick',b)}},bind:{store:'{vmsStore}',selection:'{selectedVm}'},columns:[{dataIndex:'displayName',flex:1,renderer:function(value,metaData,record){return Ext.String.format('\x3cdiv class\x3d"icon {0}"\x3e{1}\x3c/div\x3e',record.get('platformIcon'),Ext.String.htmlEncode(value))}}],listeners:{itemdblclick:'onDblClicked',refreshClick:'refresh'}}],buttons:[{text:'Select',ui:'primary',disabled:!0,bind:{disabled:'{!selectedVm}'},handler:'selectHandler'},
{text:'Cancel',ui:'alternate',handler:'closeHandler'}]},0,['main.files.pickvm'],'component box container panel window main.files.pickvm'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.files.pickvm':!0},['widget.main.files.pickvm'],0,[MainApp.view.main.files.widget,'PickVmWindow'],0);
Ext.cmd.derive('MainApp.view.main.files.Header',Ext.Container,{controller:'main.files.header',viewModel:{type:'main.files.header'},layout:{type:'hbox',align:'middle'},height:48,margin:0,items:[{xtype:'combosearch',fieldLabel:'Type in machine name',cls:'searchfield',labelWidth:142,minChars:1,width:422,emptyText:'All Machines',bind:{store:'{vmSearchResultStore}',selection:'{selectedVm}',valueNotFoundText:'{vmNotFoundText}',hidden:'{isSelfRestoreMode}'},listeners:{select:'handleVmChange',clear:'handleVmClear'}},
{xtype:'box',width:32,bind:{hidden:'{isSelfRestoreMode}'}},{xtype:'button',ui:'text',handler:'onPickupVm',text:'Pick from List\x26#8230',bind:{hidden:'{isSelfRestoreMode}'}},{xtype:'tbspacer',width:16},{xtype:'scopebutton',reference:'scopeButton',ui:'text',hiden:!0},{xtype:'tbtext',cls:'selfrestore-header-text',hidden:!0,bind:{hidden:'{!showSelfRestoreHeader}',text:'Showing \x3cb\x3e{selectedVmName:htmlEncode}\x3c/b\x3e as of {lastBackupTaken}.'}},{xtype:'tbtext',hidden:!0,cls:'selfrestore-header-text',
text:'You can ',bind:{hidden:'{!hasFewVmsOrRestorePoints}'}},{xtype:'button',ui:'text',hidden:!0,handler:'onPickAnotherRestorePoint',text:'pick another restore point',bind:{hidden:'{!hasFewRestorePoints}'}},{xtype:'tbspacer',hidden:!0,cls:'selfrestore-header-text',text:', or',bind:{hidden:'{!hasFewVmsAndRestorePoints}'}},{xtype:'button',ui:'text',hidden:!0,handler:'onPickupVm',text:'pick different machine',bind:{hidden:'{!hasFewVms}'}}]},0,0,['component','box','container'],{component:!0,box:!0,container:!0},
0,0,[MainApp.view.main.files,'Header'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchToolbarController',MainApp.base.controller.BaseController,{afterRender:function(toolbar){var userCanRestore=this._userCanRestore(),plugin=toolbar.findPlugin('toggledtoolbar');userCanRestore||(plugin.disable(),toolbar=toolbar.query('button[collapsible\x3dtrue]'),Ext.each(toolbar,function(button){button.hide()}))},onSearchClick:function(value){value=this.getViewModel();var request=value.get('searchRequest');if(Ext.isEmpty(request.query))return Common.ui.Msg.error(value.get('emptyQueryText'));this.fireViewEvent('search',
request);return!1},onSearchAfterRender:function(cmp){var triggerPicker=cmp.triggers.picker;Ext.create('Ext.tip.ToolTip',{target:triggerPicker.el,listeners:{beforeshow:function(){return triggerPicker.getEl().hasCls('x-item-disabled')}}}).update('Search filters cannot be used on mounted restore points');triggerPicker.getEl().setStyle('pointer-events','all')},applyAdvancedParams:function(form,data,isDefaultOptions){this.getViewModel().set('searchRequest.advancedParams',data);this.toggleFilterButton(isDefaultOptions)},
hideMenu:function(){var field=this.lookupReference('searchfield');field&&field.collapse()},toggleFilterButton:function(isDirty){this.lookupReference('searchfield').setFiltered(isDirty)},onSearchButtonClick:function(){this.lookupReference('searchfield').onSearchClick()},onSearchClear:function(){this.fireViewEvent('reset')},restoreOverwriteItem:function(){this._restore(!0)},restoreKeepOriginalItem:function(){this._restore(!1)},downloadItem:function(){var records=this.getViewModel().get('selectedFsItems').map(function(r){return r.clone()});
Ext.GlobalEvents.fireEvent('files:download',records)},addToRestoreList:function(){var records=this.getViewModel().get('selectedFsItems').map(function(r){return r.clone()});Ext.GlobalEvents.fireEvent('files:listadd',records)},onViewHistoryClick:function(){return this.navigateToHistory()},navigateToHistory:function(){this.redirectTo('!files/history')},onRefreshClick:function(){Ext.GlobalEvents.fireEvent('files:refreshdata')},privates:{_restore:function(isOverwrite){var vm=this.getViewModel();vm.get('canBeRestored')?
(vm=vm.get('selectedFsItems'),vm=vm.map(function(r){return r.clone()}),Ext.GlobalEvents.fireEvent('files:restore',vm,isOverwrite)):Common.ui.Msg.error('Unable to restore this item')},_userCanRestore:function(){var restoreEnabled=MainApp.app.getHelper().isEnterpriseLicense(),appUser;restoreEnabled&&(appUser=MainApp.app.getUser())&&(restoreEnabled=appUser.canRestore());return restoreEnabled}}},0,0,0,0,['controller.main.files.searchtoolbar'],0,[MainApp.view.main.files,'SearchToolbarController'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchToolbarModel',Ext.app.ViewModel,{data:{searchRequest:{query:null,advancedParams:null},emptyQueryText:'Please enter one or more search words'},buttonLabels:{NO_LICENSE:'This feature is not available in your product edition',ACCESS_DENIED:"You don't have sufficient permissions to perform this action"},formulas:{filterDisabled:{bind:{rp:'{selectedRestorePoint}',hasIndexedPoints:'{hasAnyIndexedPoints}'},get:function(binding){return binding.rp?!binding.rp.get('hasIndex'):
!binding.hasIndexedPoints}},userCanRestore:{get:function(){var restoreEnabled=MainApp.app.getHelper().isEnterpriseLicense(),appUser;restoreEnabled&&(appUser=MainApp.app.getUser())&&(restoreEnabled=appUser.canRestore());return restoreEnabled}},userCanDownload:{get:function(){var downloadEnabled=MainApp.app.getHelper().isEnterpriseLicense(),appUser;downloadEnabled&&(appUser=MainApp.app.getUser())&&(downloadEnabled=appUser.canDownload());return downloadEnabled}},fileRestorePoint:{bind:{fileSelected:'{selectedFsItem}'},
get:function(binding){return(binding=binding.fileSelected)?binding.getRestorePoint():null}},canBeRestored:{bind:{permitted:'{userCanRestore}',fileSelected:'{selectedFsItem}'},get:function(binding){var file=binding.fileSelected;return binding.permitted&&file?file.canBeRestored():!1}},canBeDownloaded:{bind:{permitted:'{userCanDownload}',fileSelected:'{selectedFsItem}'},get:function(binding){var file=binding.fileSelected;return binding.permitted&&file?file.canBeDownloaded():!1}},canBeAddedToList:{bind:{canBeDownloaded:'{canBeDownloaded}',
canBeRestored:'{canBeRestored}'},get:function(binding){return binding.canBeDownloaded||binding.canBeRestored}},restoreTooltip:{bind:{permitted:'{userCanRestore}',fileSelected:'{selectedFsItem}'},get:function(b){return b.fileSelected?b.permitted?b.fileSelected.getRestoreMessage():MainApp.app.getUser().canRestore()?this.buttonLabels.NO_LICENSE:this.buttonLabels.ACCESS_DENIED:''}},downloadTooltip:{bind:{permitted:'{userCanDownload}',fileSelected:'{selectedFsItem}'},get:function(b){return b.fileSelected?
b.permitted?b.fileSelected.getDownloadMessage():MainApp.app.getUser().canDownload()?this.buttonLabels.NO_LICENSE:this.buttonLabels.ACCESS_DENIED:''}}}},0,0,0,0,['viewmodel.main.files.searchtoolbar'],0,[MainApp.view.main.files,'SearchToolbarModel'],0);Ext.cmd.derive('Veeam.model.SearchContext',Ext.Base,{config:{task:null,initialLoad:!1,iteration:0},constructor:function(config){this.initConfig(config)}},1,0,0,0,0,0,[Veeam.model,'SearchContext'],0);
Ext.cmd.derive('Veeam.service.SearchService',Ext.Base,{singleton:!0,options:{checkDelay:2E3},checkTask:function(action,cb,context,options){var emiter=new Ext.util.Observable,state={taskId:null,isError:!1,isComplete:!1,errorsCount:0,resultsCount:0,warningsCount:0,isCanceled:!1};options=options||{};var checkDelay=options.checkDelay||2E3,i=0;(function loop(){action().then(function(taskState){state=taskState;context.setTask(taskState);context.setIteration(i);if(null==state)return cb(Error('Empty task response'));
if(!0===state.isCanceled||!0===state.isComplete)return cb(null,context);emiter.fireEvent('progress',context);i+=1;setTimeout(loop,checkDelay)}).otherwise(function(error){return cb(error instanceof Error?error:Error(error.message?error.message:error))})})();return emiter},search:function(request,progessAction,options){var me=this,deferred=new Ext.Deferred;options=options||me.options;var callBack=function(error,result,i){return error?deferred.reject(error):deferred.resolve(result,i)};me.startSearch(request).then(function(task){var searchContext=
new Veeam.model.SearchContext({task:task});task=me.checkTask(me.getTaskProgress.bind(me,task),callBack,searchContext,options);task.on('progress',progessAction);return task}).otherwise(function(error){return deferred.reject(error)});return deferred},startSearch:function(request){return request.isSearchGlobally?Common.Request.thenable(RPC.Api['files.search'],request):Common.Request.thenable(RPC.Api['files.searchInOib'],request)},getTaskProgress:function(task){return Common.Request.thenable(RPC.Api['files.search.getState'],
task)},getResults:function(gridRequest){return Common.Request.thenable(RPC.Api['files.search.getResults'],gridRequest)},cancelSearchTask:function(id){return Common.Request.thenable(RPC.Api['files.search.cancel'],id)},getRestorePointInfo:function(vm,restorePoint){vm=vm.isModel?vm.getData():vm;restorePoint=restorePoint.isModel?restorePoint.getData():restorePoint;return Common.Request.thenable(RPC.Api['files.browse.getRestoreInfo'],{vm:vm,restorePoint:restorePoint})},confirmMount:function(vm,restorePoint){var deferred=
new Ext.Deferred;restorePoint.isOsKindKnown()||vm.isNasBackup()?deferred.resolve(null):Ext.MessageBox.show({icon:Ext.MessageBox.QUESTION,title:"Select guest's OS type",msg:"OS info was not collected from this VM during backup.\x3cbr /\x3ePlease select guest's operating system type to continue.",fn:function(buttonPressed){'cancel'==buttonPressed?deferred.reject('canceled'):deferred.resolve({forceMountOsKind:!0,forcedOsKind:'yes'===buttonPressed?'Windows':'Linux'})},closable:!0,buttons:['yes','no',
'cancel'],buttonText:{yes:'Windows',no:'Linux',cancel:'Cancel'}});return deferred},credsCheckAndMount:function(viewId,initSpec,oibId,onCancel){var me=this,deferred=new Ext.Deferred;(new Veeam.util.RestoreStartMediator({validateCredsFunction:Veeam.service.FileRestoreService.validateCredentialsForOib,validateCredsParam:{oibId:oibId},actionAfterValidationFunction:function(param,shareCredsTaskId){return me.startMount(param,shareCredsTaskId).then(deferred.resolve.bind(deferred),deferred.reject.bind(deferred))},
actionAfterValidationParam:{initSpec:initSpec,viewId:viewId},listeners:{failed:deferred.reject.bind(deferred),cancelled:onCancel.bind(null,deferred),scope:this}})).start();return deferred.promise},startMount:function(param,shareCredsTaskId){return Common.Request.thenable(RPC.Api['browse.mount'],param.viewId,param.initSpec)},cancelMount:function(viewId){return Common.Request.thenable(RPC.Api['browse.cancelMount'],viewId)},releaseView:function(viewId){return Common.Request.thenable(RPC.Api['browse.releaseView'],
viewId)},getRestorePoints:function(vm){vm=vm.isModel?vm.getData():vm;return Common.Request.thenable(RPC.Api['files.browse.getRestorePoints'],{vm:vm})},getLatestRestorePoint:function(vm){return this.getRestorePoints(vm).then(function(result){if(!result.items)return Ext.raise('No restore points found');result=result.items;return new Veeam.model.IndexedRestorePoint(result[result.length-1])})},getOrCreateView:function(vm,restorePoint){vm.isModel&&(vm=vm.getData());restorePoint&&restorePoint.isModel&&
(restorePoint=restorePoint.getData());return Common.Request.thenable(RPC.Api['files.browse.getOrCreateView'],{vm:vm,restorePoint:restorePoint})},getViewState:function(viewStateId){return Common.Request.thenable(RPC.Api['browse.getViewState'],viewStateId)},createFilesEnumerator:function(viewStateId,pathStuct){return Common.Request.thenable(RPC.Api['files.browse.createOibFsItemsBrowserAsync'],{viewId:viewStateId,fullPath:pathStuct?pathStuct.getFullPath():null,displayFullPath:pathStuct?pathStuct.getDisplayPath():
null,filter:null,sort:'objectName',dir:'asc'})},getOibFsItemsBrowserState:function(viewStateId,operatonId){return Common.Request.thenable(RPC.Api['files.browse.getOibFsItemsBrowserState'],{viewId:viewStateId,operationId:operatonId})},getOibFsItemsAsync:function(viewStateId,pathStuct){var me=this,deferred=new Ext.Deferred,callBack=function(error,result,i){return error?deferred.reject(error):deferred.resolve(result,i)};me.createFilesEnumerator(viewStateId,pathStuct).then(function(response){response=
me.checkFsFileEnumeratorState(me.getOibFsItemsBrowserState.bind(me,viewStateId,response.operationId),callBack,null,me.options);response.on('progress',Ext.emptyFn);return response}).otherwise(function(error){return deferred.reject(error)});return deferred},createOibSubFolderBrowser:function(viewStateId,isRootPath,path){return Common.Request.thenable(RPC.Api['files.browse.createSubFoldersBrowserAsync'],{viewId:viewStateId,isRootPath:isRootPath,fullPath:path?path.getFullPath():null,displayFullPath:path?
path.getDisplayPath():null})},getOibSubFoldersBrowsersStates:function(viewStateId,operatonIds){return Common.Request.thenable(RPC.Api['files.browse.getOibSubFoldersBrowsersStates'],{viewId:viewStateId,operationIds:[].concat(operatonIds)}).then(function(response){return response.items})},getOibSubFolders:function(viewStateId,browserId,start,limit){return Common.Request.thenable(RPC.Api['files.browse.browseOibSubFolders'],{viewId:viewStateId,browserId:browserId,start:start,limit:limit}).then(function(response){return response.items})},
findUserSelfRestoreVms:function(){return Common.Request.thenable(RPC.Api.findUserSelfRestoreVm,null)},findVm:function(vmQuery){return Common.Request.thenable(RPC.Api['files.searchVm'],{query:vmQuery,start:0,limit:1}).then(function(result){result=result.items;return 0<result.length?new Veeam.model.VmSearchResult(result[0]):null})},findVmAsync:function(vmQuery){return Common.Request.thenable(RPC.Api['files.createSearchVmTask'],{query:vmQuery}).then(function(result){return{taskId:result.taskId,resultsNumber:result.resultsNumber}})},
checkFsFileEnumeratorState:function(action,cb,context,options){var emiter=new Ext.util.Observable,state={operationId:null,taskState:0,browserId:null,itemsTotalCount:0,errorMessage:null};options=options||{};var checkDelay=options.checkDelay||2E3;(function loop(){action().then(function(taskState){state=taskState;if(null==state)return cb(Error('Empty task response'));if(1===state.taskState)return cb(null,state);if(2===state.taskState)return cb(Error(state.errorMessage));emiter.fireEvent('progress',context);
setTimeout(loop,checkDelay)}).otherwise(function(error){return cb(error instanceof Error?error:Error(error.message?error.message:error))})})();return emiter}},0,0,0,0,0,0,[Veeam.service,'SearchService'],0);Ext.cmd.derive('Veeam.base.view.filter.MenuFilter',Ext.form.FormPanel,{bbar:{ui:'m-footer'}},0,0,['component','box','container','panel','form'],{component:!0,box:!0,container:!0,panel:!0,form:!0},0,0,[Veeam.base.view.filter,'MenuFilter'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.AdvancedOptionsFormController',Ext.app.ViewController,{initViewModel:function(viewModel){var options=Ext.clone(viewModel.get('options'));viewModel.set('initialOptions',options);viewModel.set('initialOptionsHash',JSON.stringify(options));this.selectedPathBinding=viewModel.bind('{selectedPath}',function(path){viewModel.set('options.isPathSpecified',!!path);viewModel.set('options.path',path&&path.isInstance?path.getFullPath():path)},this);this.optionsBinding=
viewModel.bind('{options}',this.onFormFieldChange,this,{deep:!0})},onTimeStoreLoaded:function(){this.bindStoreValues('options.modificationTimePeriod').apply(this,arguments)},onDocTypeStoreLoaded:function(){this.bindStoreValues('options.docType').apply(this,arguments)},onSizeStoreLoaded:function(){this.bindStoreValues('options.fileSizePeriod').apply(this,arguments)},onSizeUnitStoreLoaded:function(){this.bindStoreValues(['options.fileSizeToUnit','options.fileSizeFromUnit']).apply(this,arguments)},onApply:function(){var view=
this.getView(),vm=this.getViewModel();if(view.isValid()){var data=vm.get('options');vm=vm.get('optionsChanged');this.fireViewEvent('apply',data,vm);view.fireEvent('hide')}},onCancel:function(){this.getView().fireEvent('hide')},onReset:function(){var vm=this.getViewModel(),initialOptions=Ext.clone(vm.get('initialOptions'));vm.set('options',initialOptions);vm.notify()},onBrowseClick:function(){var vm=this.getViewModel();(this.dialog=Ext.create({xclass:'MainApp.view.main.files.widget.FolderPickerWindow',
vm:vm.get('selectedVm'),listeners:{selectpath:'onFolderSelected',scope:this}})).show()},onFolderSelected:function(win,path){this.getViewModel().set('options.path',path)},destroy:function(){this.dialog=Ext.destroy(this.dialog);this.selectedPathBinding=Ext.destroy(this.selectedPathBinding);this.optionsBinding=Ext.destroy(this.optionsBinding);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},privates:{bindStoreValues:function(vmKeys){var vm=this.getViewModel(),keys=[].concat(vmKeys);return function(store,
records){records.length&&keys.forEach(function(key){null==vm.get(key)&&vm.set(key,records[0].get('value'))})}},onFormFieldChange:function(){var vm=this.getViewModel(),defaultOptionsHash=vm.get('initialOptionsHash'),options=Ext.clone(vm.get('options'));defaultOptionsHash=options&&JSON.stringify(options)!==defaultOptionsHash;vm.set('optionsChanged',defaultOptionsHash)}}},0,0,0,0,['controller.main.files.widget.advancedoptions'],0,[MainApp.view.main.files.widget,'AdvancedOptionsFormController'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.AdvancedOptionsFormModel',Ext.app.ViewModel,{stores:{timeStore:{type:'array',autoDestroy:!0,fields:['value','text'],valueField:'value',displayField:'text',data:[[1,'A long time ago'],[2,'Earlier this year'],[3,'Earlier this month'],[4,'Last week'],[5,'Yesterday']],autoLoad:!0,listeners:{load:'onTimeStoreLoaded'}},docTypeStore:{type:'array',autoDestroy:!0,fields:['value','text'],valueField:'value',displayField:'text',data:[['txt','TXT'],['rtf','RTF'],
['doc','Microsoft Word (doc)'],['xls','Microsoft Excel (xls)'],['ppt','Microsoft PowerPoint (ppt)'],['pdf','Adobe PDF'],['jpg','JPG'],['gif','GIF'],['png','PNG'],['avi','AVI'],['mpg','MPG'],['flv','Flash Video (flv)']],autoLoad:!0,listeners:{load:'onDocTypeStoreLoaded'}},sizeStore:{type:'array',autoDestroy:!0,fields:['value','text'],valueField:'value',displayField:'text',data:[[1,'Tiny (0-10KB)'],[2,'Small (10-100KB)'],[3,'Medium (100KB-1MB)'],[4,'Large (\x3e 1MB)']],autoLoad:!0,listeners:{load:'onSizeStoreLoaded'}},
sizeUnitStore:{type:'array',autoDestroy:!0,fields:['value','text'],valueField:'value',displayField:'text',data:[[1024,'KB'],[1048576,'MB'],[1073741824,'GB']],autoLoad:!0,listeners:{load:'onSizeUnitStoreLoaded'}}},data:{options:{isPathSpecified:!1,path:null,isAuthorSpecified:!1,author:null,isBackupDateSpecified:!1,backupDateFrom:null,backupDateTo:null,fileSizeOption:0,fileSizePeriod:null,fileSizeFrom:null,fileSizeFromUnit:null,fileSizeTo:null,fileSizeToUnit:null,registeredBackupsOnly:!1,modificationTimeOption:0,
modificationTimePeriod:null,modificationTimeFrom:null,modificationTimeTo:null,docTypeOption:0,docType:null,customDocType:null},optionsChanged:!1},formulas:{modificationTimeOption:{bind:'{options.modificationTimeOption}',deep:!0,get:function(option){return{modificationTimeOption:option}},set:function(value){this.set('options.modificationTimeOption',value.modificationTimeOption)}},docTypeOption:{bind:'{options.docTypeOption}',deep:!0,get:function(option){return{docTypeOption:option}},set:function(value){this.set('options.docTypeOption',
value.docTypeOption)}},fileSizeOption:{bind:'{options.fileSizeOption}',deep:!0,get:function(option){return{fileSizeOption:option}},set:function(value){this.set('options.fileSizeOption',value.fileSizeOption)}},backupDateFrom:{bind:'{options.backupDateFrom}',get:function(v){return v},set:function(v){Ext.isDate(v)&&Ext.Date.clearTime(v);this.set('options.backupDateFrom',v)}},backupDateTo:{bind:'{options.backupDateTo}',get:function(v){return v},set:function(v){Ext.isDate(v)&&(v=Ext.Date.add(Ext.Date.clearTime(v),
Ext.Date.SECOND,86399));this.set('options.backupDateTo',v)}},modificationTimeFrom:{bind:'{options.modificationTimeFrom}',get:function(v){return v},set:function(v){Ext.isDate(v)&&Ext.Date.clearTime(v);this.set('options.modificationTimeFrom',v)}},modificationTimeTo:{bind:'{options.modificationTimeTo}',get:function(v){return v},set:function(v){Ext.isDate(v)&&(v=Ext.Date.add(Ext.Date.clearTime(v),Ext.Date.SECOND,86399));this.set('options.modificationTimeTo',v)}},selectFolderActive:{bind:{pathSpecified:'{options.isPathSpecified}',
selectedVm:'{selectedVm}',deep:!0},get:function(binding){return binding.pathSpecified&&null!==binding.selectedVm}},isRestorePointSelected:{bind:'{selectedRestorePoint}',deep:!0,get:function(b){return null!==b}},currentFolder:{bind:{path:'{options.path}',selectedFolder:'{selectedPath}'},get:function(binding){return(binding=binding.path||binding.selectedFolder)?binding.isInstance?binding.getFullPath():binding:null},set:function(v){this.set('options.path',v&&v.isInstance?v.getFullPath():v)}}}},0,0,0,
0,['viewmodel.main.files.widget.advancedoptions'],0,[MainApp.view.main.files.widget,'AdvancedOptionsFormModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.FolderPickerWindowController',Veeam.base.view.BaseWindowController,{afterRender:function(){var view=this.getView(),viewModel=this.getViewModel(),vm=view.getVm();view.setLoading();Veeam.service.SearchService.getLatestRestorePoint(vm).then(function(restorePoint){viewModel.set('osKind',restorePoint.get('guestOsKind'));return Veeam.service.SearchService.getOrCreateView(vm,restorePoint)}).then(this.onViewStateRecieved.bind(this)).otherwise(this.showError.bind(this)).always(view.setLoading.bind(view,
!1))},onViewStateRecieved:function(viewState){var state=viewState.state.toLowerCase();if('ready'==state)return this.loadData(viewState),!0;'error'==state?this.showError(Error(viewState.errorMessage||'Unknown error, see logs for details.')):this.showError(Error('MountView'===viewState.type?'Mount the restore point first':'Unable to browse in this state'));return!1},loadData:function(viewState){var viewModel=this.getViewModel();viewModel.set('viewId',viewState.id);viewModel.set('folder',null)},showError:function(error){var viewModel=
this.getViewModel();viewModel.set('hasError',!!error);viewModel.set('errorMessage',error.message)},beforeNodeExpand:function(store,operation){var node=operation.node;store=operation.getParams();node=this.getNodePath(node);Ext.apply(store,{folder:node});operation.setParams(store);return!0},afterNodeChildLoaded:function(store,records){if(records)for(store=0;store<records.length;store++)records[store].set('cls',null)},getNodePath:function(node,attr){var vm=this.getViewModel(),store=node.getTreeStore(),
currentNode=node;store=store.getRootNode();var relativePathSegments=[],volumeNameSegments=[],mountPointFlag=!1;vm=vm.get('pathSeparator');attr=attr||'path';if(node.isRoot())return node.get(attr);for(;currentNode&&!0!==currentNode.isRoot();)!0===currentNode.get('isMountPoint')&&(mountPointFlag=!0),!1===mountPointFlag?relativePathSegments.unshift(currentNode.get(attr)):volumeNameSegments.unshift(currentNode.get(attr)),currentNode=currentNode.parentNode;node=relativePathSegments.join(vm);0===volumeNameSegments.length?
(attr=store.get(attr),attr=Ext.String.endsWith(attr,'|')?attr+node:[attr,node].join(vm)):(attr=volumeNameSegments.join(vm),attr=[attr,node].join('|'));return attr},onTreeNodeSelected:function(sm,records){records=records[0];sm=this.getViewModel();records&&(records=this.getNodePath(records),sm.set('currentFolder',records))},okHandler:function(){var folder=this.getViewModel().get('currentFolder');this.fireViewEvent('selectpath',folder);this.closeHandler()}},0,0,0,0,['controller.main.files.widget.folderpickerwindow'],
0,[MainApp.view.main.files.widget,'FolderPickerWindowController'],0);
Ext.cmd.derive('Veeam.model.FsItemNode',Ext.data.Model,{fields:[{name:'text'},{name:'path'},{name:'leaf',type:'bool'},{name:'cls'},{name:'isMountPoint',type:'bool'},{name:'children'},{name:'isExist',type:'bool'},{name:'browserId',defaultValue:null},{name:'realName',type:'string'},{name:'totalCount',type:'int',defaultValue:0}],setBrowserId:function(browserId){this.set('browserId',browserId)},getBrowserId:function(){return this.get('browserId')},setTotalCount:function(totalCount){this.set('totalCount',
totalCount)},getTotalCount:function(){return this.get('totalCount')}},0,0,0,0,0,0,[Veeam.model,'FsItemNode'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.FolderPickerWindowModel',Ext.app.ViewModel,{stores:{folderStore:{type:'tree',model:'Veeam.model.FsItemNode',proxy:{type:'app-direct',directFn:'Api.browse.getDirectory',extraParams:{viewId:'{viewId}',guestOsKind:'{osKind}'}},autoLoad:!0,autoDestroy:!0,listeners:{beforeload:'beforeNodeExpand',load:'afterNodeChildLoaded'}}},data:{currentFolder:null,hasError:!1,errorMessage:null},formulas:{pathSeparator:{bind:'{osKind}',get:function(osKind){return osKind===
Veeam.model.GuestOsKind.Linux?'/':'\\'}}}},0,0,0,0,['viewmodel.main.files.widget.folderpickerwindow'],0,[MainApp.view.main.files.widget,'FolderPickerWindowModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.FolderPickerWindow',Veeam.base.view.BaseWindow,{controller:'main.files.widget.folderpickerwindow',viewModel:{type:'main.files.widget.folderpickerwindow'},publishes:['vm'],config:{vm:null},updateVm:function(v){this.getViewModel().set('vm',v);return v},width:576,height:576,minHeight:300,minWidth:460,modal:!0,layout:'fit',items:[{xtype:'form',items:[{xtype:'alert',ui:'error',hidden:!0,bind:{hidden:'{!hasError}',html:'{errorMessage}'}},{xtype:'textfield',
fieldLabel:'Path',anchor:'100%',labelAlign:'top',bind:{value:'{currentFolder}'}},{xtype:'treepanel',anchor:'100%',rootVisible:!1,root:{text:'Computer',expanded:!0},border:!1,reserveScrollbar:!0,scrollable:!0,flex:1,reference:'foldertree',bind:{store:'{folderStore}'},listeners:{selectionchange:'onTreeNodeSelected'}}]}],buttons:[{text:'OK',handler:'okHandler',bind:{disabled:'{!currentFolder}'},ui:'primary'},{text:'Cancel',handler:'closeHandler',ui:'alternate'}]},0,0,['component','box','container','panel',
'window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.files.widget,'FolderPickerWindow'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.AdvancedOptionsForm',Veeam.base.view.filter.MenuFilter,{controller:'main.files.widget.advancedoptions',viewModel:{type:'main.files.widget.advancedoptions'},trackResetOnLoad:!0,width:960,header:!1,tbar:{ui:'m-header',items:[{xtype:'tbtext',cls:'text-strong',text:'Set Options',padding:'0 16'},{xtype:'button',ui:'text',text:'Reset All',handler:'onReset'}]},cls:'advanced-options-form',reference:'advancedOptionsForm',layout:{type:'table',columns:2,tableAttrs:{style:{width:'960px'}},
cellCls:'advanced-option-group'},defaultType:'fieldset',items:[{title:'Location',items:{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'radio',boxLabel:'Anywhere on this computer',name:'isPathSpecifiedRadio',bind:{value:'{!options.isPathSpecified}'}},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'Folder:',name:'isPathSpecifiedRadio',reference:'radio_folder',bind:{value:'{options.isPathSpecified}'}},{xtype:'textfield',flex:1,margin:'0 8',bind:{disabled:'{!radio_folder.checked}',
value:'{currentFolder}'}},{xtype:'button',text:'Browse...',ui:'text',handler:'onBrowseClick',bind:{disabled:'{!selectFolderActive}'}}]}]}},{title:'Owner',items:[{xtype:'container',cls:'checkbox-group',layout:{type:'vbox',align:'stretch'},items:[{xtype:'radio',boxLabel:'Any owner',name:'isAuthorSpecifiedRadio',bind:'{!options.isAuthorSpecified}'},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'This owner:',reference:'radio__owner',name:'isAuthorSpecifiedRadio',bind:'{options.isAuthorSpecified}'},
{xtype:'textfield',margin:'0 0 0 8',flex:1,bind:{disabled:'{!radio__owner.checked}',value:'{options.author}'}}]}]}]},{title:'Last modification time',items:{xtype:'radiogroup',layout:{type:'vbox',align:'stretch'},bind:{value:'{modificationTimeOption}'},items:[{xtype:'radio',boxLabel:'Not sure',name:'modificationTimeOption',inputValue:0},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'Approximate time:',name:'modificationTimeOption',reference:'radio_approxtime',inputValue:1},{xtype:'combobox',
flex:1,margin:'0 0 0 8',forceSelection:!0,valueField:'value',displayField:'text',triggerAction:'all',editable:!1,queryMode:'local',bind:{store:'{timeStore}',value:'{options.modificationTimePeriod}',disabled:'{!radio_approxtime.checked}'}}]},{xtype:'fieldcontainer',layout:{type:'hbox',align:'bottom'},items:[{xtype:'radio',boxLabel:'Time period:',reference:'radio_timeperiod',name:'modificationTimeOption',inputValue:2},{xtype:'datefield',fieldLabel:'From',labelAlign:'top',flex:1,margin:'0 16 0 8',vtype:'daterange',
itemId:'modificationTimeFrom',format:'defaultDateFormat',endDateField:'modificationTimeTo',formatText:'',validateBlank:!0,bind:{disabled:'{!radio_timeperiod.checked}',value:'{modificationTimeFrom}'},validator:function(value){return value?Ext.Date.parse(value,'defaultDateFormat')<=new Date||'Incorrect date':!0}},{xtype:'datefield',fieldLabel:'To',labelAlign:'top',flex:1,vtype:'daterange',format:'defaultDateFormat',itemId:'modificationTimeTo',startDateField:'modificationTimeFrom',formatText:'',validateBlank:!0,
bind:{disabled:'{!radio_timeperiod.checked}',value:'{modificationTimeTo}'},validator:function(value){return value?Ext.Date.parse(value,'defaultDateFormat')<=new Date||'Incorrect date':!0}}]}]}},{title:'Type',items:[{xtype:'radiogroup',layout:{type:'vbox',align:'stretch'},bind:{value:'{docTypeOption}'},items:[{xtype:'radio',boxLabel:'Any document',name:'docTypeOption',inputValue:0},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'Known type:',name:'docTypeOption',reference:'radio_document',
inputValue:1},{xtype:'combobox',flex:1,forceSelection:!0,triggerAction:'all',editable:!1,margin:'0 0 0 8',bind:{disabled:'{!radio_document.checked}',store:'{docTypeStore}',value:'{options.docType}'}}]},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',name:'docTypeOption',boxLabel:'Extension:',reference:'radio_customdoctype',inputValue:2},{xtype:'textfield',margin:'0 0 0 8',flex:1,bind:{disabled:'{!radio_customdoctype.checked}',value:'{options.customDocType}'}}]}]}]},{title:'Backup time',
bind:{disabled:'{selectedRestorePoint}'},items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},items:[{xtype:'radio',boxLabel:'Latest backup',name:'isBackupDateSpecifiedRadio',bind:{value:'{!options.isBackupDateSpecified}'}},{xtype:'fieldcontainer',cls:'checkbox-group-item',layout:{type:'hbox',align:'bottom'},items:[{xtype:'radio',boxLabel:'Backup period:',name:'isBackupDateSpecifiedRadio',reference:'radio_backupperiod',bind:{value:'{options.isBackupDateSpecified}'}},{xtype:'datefield',fieldLabel:'From',
itemId:'backupDateFrom',margin:'0 16 0 8',labelAlign:'top',flex:1,vtype:'daterange',format:'defaultDateFormat',endDateField:'backupDateTo',bind:{disabled:'{!radio_backupperiod.checked}',value:'{backupDateFrom}'},validator:function(value){return value?Ext.Date.parse(value,'defaultDateFormat')<=new Date||'Incorrect date':!0}},{xtype:'datefield',fieldLabel:'To',labelAlign:'top',itemId:'backupDateTo',startDateField:'backupDateFrom',vtype:'daterange',format:'defaultDateFormat',flex:1,bind:{disabled:'{!radio_backupperiod.checked}',
value:'{backupDateTo}'},validator:function(value){return value?Ext.Date.parse(value,'defaultDateFormat')<=new Date||'Incorrect date':!0}}]},{xtype:'checkbox',boxLabel:'Search imported backups only',bind:{value:'{options.registeredBackupsOnly}'}}]}]},{title:'Size',items:[{xtype:'radiogroup',layout:{type:'vbox',align:'stretch'},bind:'{fileSizeOption}',name:'fileSizeOption',items:[{boxLabel:'Not sure',inputValue:0},{xtype:'fieldcontainer',layout:'hbox',items:[{xtype:'radio',boxLabel:'Approximate size:',
reference:'radio_approxsize',inputValue:1},{xtype:'combobox',forceSelection:!0,triggerAction:'all',editable:!1,margin:'0 0 0 8',valueField:'value',flex:1,bind:{disabled:'{!radio_approxsize.checked}',store:'{sizeStore}',value:'{options.fileSizePeriod}'}}]},{xtype:'container',layout:{type:'hbox',align:'bottom',pack:'end'},items:[{xtype:'radio',boxLabel:'Size:',reference:'radio__size',inputValue:2,flex:1},{xtype:'numberfield',fieldLabel:'From',labelAlign:'top',minValue:0,width:88,allowDecimals:!1,allowExponential:!1,
bind:{disabled:'{!radio__size.checked}',value:'{options.fileSizeFrom}'}},{xtype:'box',width:8},{xtype:'combobox',width:88,forceSelection:!0,triggerAction:'all',valueField:'value',editable:!1,bind:{disabled:'{!radio__size.checked}',store:'{sizeUnitStore}',value:'{options.fileSizeFromUnit}'}},{xtype:'box',width:16},{xtype:'numberfield',fieldLabel:'To',minValue:0,width:88,allowDecimals:!1,allowExponential:!1,labelAlign:'top',bind:{disabled:'{!radio__size.checked}',value:'{options.fileSizeTo}'}},{xtype:'box',
width:8},{xtype:'combobox',width:88,forceSelection:!0,triggerAction:'all',valueField:'value',editable:!1,bind:{disabled:'{!radio__size.checked}',store:'{sizeUnitStore}',value:'{options.fileSizeToUnit}'}}]}]}]}],bbar:{ui:'m-footer',items:['-\x3e',{text:'Apply',minWidth:80,handler:'onApply',ui:'primary'},{text:'Cancel',minWidth:80,handler:'onCancel',ui:'alternate'}]}},0,['main.files.widget.advancedoptions'],'component box container panel form main.files.widget.advancedoptions'.split(' '),{component:!0,
box:!0,container:!0,panel:!0,form:!0,'main.files.widget.advancedoptions':!0},['widget.main.files.widget.advancedoptions'],0,[MainApp.view.main.files.widget,'AdvancedOptionsForm'],0);
Ext.cmd.derive('Veeam.plugin.ToggledToolbar',Ext.plugin.Abstract,{buttonText:'Other Actions',buttonIconCls:null,buttonIndex:null,buttonConfig:null,collapsedWidth:1024,collapsibleProperyName:'collapsible',_collapsed:!1,_menuBtn:null,_collapsibleButtons:null,_collapsedButtons:[],init:function(){Ext.plugin.Abstract.prototype.init.apply(this,arguments);if(!this.cmp.isToolbar)throw Error('The plugin "ToggledToolbar" can work only with toolbars');this.cmp.on('resize',this._onResize,this)},destroy:function(){this.cmp.helpIcon&&
this.cmp.helpIcon.un('click',this._clickHandler,this);this.cmp.un('resize',this._onResize,this);Ext.plugin.Abstract.prototype.destroy.apply(this,arguments)},privates:{_onResize:function(toolbar,width,height,oldWidth){this.disabled||!(toolbar=toolbar.getWidth()<=this.collapsedWidth)&&!this._collapsed||!toolbar&&!this._collapsed||(!toolbar&&this._collapsed&&(height=this._getMenuButton(),height.hide(),this._showAllButtons(),this._collapsed=!1),toolbar&&(this._collapsed||(height=this._getMenuButton(),
height.show(),this._collapseLastTwoButtons(),this._collapsed=!0),width>oldWidth&&this._showNextButtonIfPossible(),width<oldWidth&&this._hidePrevButtonIfPossible()))}},_showAllButtons:function(){var me=this,collapsedButtons=Ext.clone(me._collapsedButtons);Ext.each(collapsedButtons,function(button){me._showButton(button)})},_collapseLastTwoButtons:function(){var menuBtn=this._getMenuButton(),buttons=this._getCollapsibleButtons(),prevBtn=buttons[buttons.length-2];this._hideButton(buttons[buttons.length-
1]);this._hideButton(prevBtn);menuBtn.show()},_getMenuButton:function(){return this._menuBtn||this._createMenuButton()},_getCollapsibleButtons:function(){var me=this,buttons=[];if(me._collapsibleButtons)return me._collapsibleButtons;Ext.each(me.cmp.items.items,function(item){item.isButton&&item[me.collapsibleProperyName]&&buttons.push(item)});if(2>buttons.length)throw Error('The toolbar must has at least two collapsible buttons');return me._collapsibleButtons=buttons},_createMenuButton:function(){var toolbar=
this.cmp,buttonIndex=this._getMenuButtonIndex(),btnConfig=Ext.apply({xtype:'button',text:this.buttonText,iconCls:this.buttonIconCls,hidden:!0,menu:this._getMenuConfig()},this.buttonConfig);return this._menuBtn=toolbar.insert(buttonIndex,btnConfig)},_getMenuConfig:function(){var me=this,buttons=me._getCollapsibleButtons(),menuItems=[];Ext.each(buttons,function(button){var menuItemConfig=Ext.apply(button.initialConfig,button[me.collapsibleProperyName]);menuItemConfig.btnId=button.getId();menuItemConfig.hidden=
!0;menuItems.push(menuItemConfig)});return{items:menuItems}},_getMenuButtonIndex:function(){var toolbar=this.cmp;return Ext.isNumber(this.buttonIndex)?0<=this.buttonIndex?this.buttonIndex:toolbar.items.items.length+this.buttonIndex:toolbar.items.items.length},_hideButton:function(button){this._setVisibleButton(button,!1);this._collapsedButtons.push(button)},_showButton:function(button){this._setVisibleButton(button,!0);Ext.Array.remove(this._collapsedButtons,button)},_setVisibleButton:function(button,
visible){if(button&&button.isButton){var menuItem=this._getMenuButton().getMenu().down('[btnId\x3d'+button.getId()+']');button.setVisible(visible);menuItem.setVisible(!visible)}},_showNextButtonIfPossible:function(){if(2!==this._collapsedButtons.length){var availableWidth=this._getAvailableWidth(),nextBtn=this._collapsedButtons[this._collapsedButtons.length-1];if(nextBtn&&!(0>=availableWidth)){var nextBtnApproxWidth=Ext.util.TextMetrics.measure(nextBtn.getEl(),nextBtn.text).width+(nextBtn._hasIcon()?
48:16)+(nextBtn.menu?16:0);availableWidth>nextBtnApproxWidth&&(this._showButton(nextBtn),this._showNextButtonIfPossible())}}},_hidePrevButtonIfPossible:function(){if(this._collapsedButtons.length!==this._collapsibleButtons.length){var availableWidth=this._getAvailableWidth(),prevBtn=this._collapsibleButtons[this._collapsibleButtons.length-this._collapsedButtons.length-1];prevBtn&&!(0<=availableWidth)&&0>availableWidth&&(this._hideButton(prevBtn),this._hidePrevButtonIfPossible())}},_getAvailableWidth:function(){var toolbar=
this.cmp,lastCmp=this._getLastVisibleCmp();lastCmp=Number(lastCmp.getEl().getStyle('left').replace('px',''))+lastCmp.getWidth()+16;return toolbar.getWidth()-lastCmp},_getLastVisibleCmp:function(){var items=this.cmp.query('\x3e [hidden\x3dfalse]');return items[items.length-1]}},0,0,0,0,['plugin.toggledtoolbar'],0,[Veeam.plugin,'ToggledToolbar'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchToolbar',Ext.toolbar.Toolbar,{controller:'main.files.searchtoolbar',viewModel:{type:'main.files.searchtoolbar'},itemId:'searchToolbar',ui:'wide',cls:'no-lr-padding-toolbar search-toolbar',plugins:[{ptype:'toggledtoolbar',collapsedWidth:992,buttonIndex:-1,buttonConfig:{bind:{disabled:'{!selectedFsItem}'}}}],items:[{xtype:'common.filteredsearchfield',reference:'searchfield',bind:{value:'{searchRequest.query}',filterDisabled:'{filterDisabled}'},emptyText:'Enter file name',
filterBtnTip:null,submitEmptyText:!1,listeners:{search:'onSearchClick',clear:'onSearchClear',afterrender:'onSearchAfterRender'},width:368,filterConfig:{border:!0,xtype:'main.files.widget.advancedoptions',itemId:'advancedSearchForm',floatable:!1,listeners:{apply:'applyAdvancedParams',hide:'hideMenu'}}},{xtype:'button',text:'Search',ui:'primary',handler:'onSearchButtonClick',bind:{disabled:'{!searchRequest.query}'}},{text:'Restore',iconCls:'restore',collapsible:{cls:null},cls:'x-toolbar-item x-default-toolbar-small',
bind:{disabled:'{!canBeRestored}',tooltip:'{restoreTooltip}'},disabled:!0,menu:{items:[{text:'Overwrite',iconCls:'restore--overwrite',handler:'restoreOverwriteItem'},{text:'Keep',iconCls:'restore--keep',handler:'restoreKeepOriginalItem'}]}},{text:'Download',ui:'text',bind:{disabled:'{!canBeDownloaded}',tooltip:'{downloadTooltip}'},disabled:!0,collapsible:!0,iconCls:'download',handler:'downloadItem'},{text:'Add to Restore List',handler:'addToRestoreList',collapsible:!0,iconCls:'restorelist--add',bind:{disabled:'{!canBeAddedToList}'},
disabled:!0},{text:'History',iconCls:'history',handler:'onViewHistoryClick',bind:{hidden:'{!userCanRestore}'}}]},0,['view.main.files.searchtoolbar'],['component','box','container','toolbar','view.main.files.searchtoolbar'],{component:!0,box:!0,container:!0,toolbar:!0,'view.main.files.searchtoolbar':!0},['widget.view.main.files.searchtoolbar'],0,[MainApp.view.main.files,'SearchToolbar'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchProgressBarController',Ext.app.ViewController,{startProgress:function(){this.progressAction('start')},finishProgress:function(){this.progressAction('finish')},resetProgress:function(){this.progressAction('reset')},progressAction:function(action){var progress=this.lookupReference('progress');switch(action){case 'start':progress.wait();break;case 'reset':progress.reset();break;case 'finish':progress.reset();progress.updateProgress(1);break;default:console.warn('progress action not exist: ',
action)}},onClose:function(){this.getView().hide()},onSearchCancel:function(btn){var taskId=this.getViewModel().get('task.taskId');taskId&&(btn.setDisabled(!0),Veeam.service.SearchService.cancelSearchTask(taskId).then(this.onClose.bind(this)).otherwise(Common.ui.Msg.error).always(btn.setDisabled.bind(btn,!1)))},onShowErrors:function(){var vm=this.getViewModel(),view=this.getView();if(vm=vm.get('task.taskId'))vm=Ext.createByAlias('widget.main.files.widget.searcherrors',{taskId:vm}),this.dialog=view.add(vm.show())},
destroy:function(){this.dialog=Ext.destroy(this.dialog);Ext.app.ViewController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.view.main.files.searchprogressbar'],0,[MainApp.view.main.files,'SearchProgressBarController'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchProgressBarModel',Ext.app.ViewModel,{data:{task:{taskId:null,resultsCount:0,errorsCount:0,warningsCount:0,isComplete:!1,isError:!1}},formulas:{resultsFoundText:{bind:'{task}',deep:!0,get:function(task){return(99999<Number(task.resultsCount)?'99999+':Number(task.resultsCount))+' Results Found'}},hasErrorsOrWarnings:{bind:'{task}',deep:!0,get:function(task){return 0<task.errorsCount||0<task.warningsCount}},errorsText:{bind:'{task}',deep:!0,get:function(task){var isWarnings=
0<task.warningsCount,isErrors=0<task.errorsCount;return isErrors||isWarnings?Number(isErrors?task.errorsCount:task.warningsCount)+(isErrors?' Errors':' Warnings'):''}},isSearchComplete:{bind:'{task}',deep:!0,get:function(task){return task.isComplete}},showCloseButton:{bind:{hasErrors:'{hasErrorsOrWarnings}',isComplete:'{isSearchComplete}'},get:function(b){return b.isComplete&&b.isComplete}},searchLabel:{bind:'{task}',deep:!0,get:function(task){return task.isComplete?'Complete':'Searching ...'}}}},
0,0,0,0,['viewmodel.view.main.files.searchprogressbar'],0,[MainApp.view.main.files,'SearchProgressBarModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.SearchErrorsWindowController',Veeam.base.view.BaseWindowController,{errorTypeRenderer:function(value){switch(value){case 0:value='Error';var cls='error';break;default:value='Warning',cls='warning'}return Ext.String.format('\x3cspan class\x3d"icon {0}"\x3e{1}\x3c/span\x3e',cls,value)},destroy:function(){var view=this.getView();Ext.destroy(view.dialog);Veeam.base.view.BaseWindowController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.main.files.widget.searcherrors'],
0,[MainApp.view.main.files.widget,'SearchErrorsWindowController'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.SearchErrorsWindowModel',Ext.app.ViewModel,{stores:{errorStore:{type:'app-store',rpcMethod:'Api.files.search.getErrors',fields:[{name:'errorType',type:'int'},{name:'text',type:'string'}],extraParams:{taskId:'{taskId}'},sorters:{direction:'ASC',property:'errorType'},autoLoad:!0,autoDestroy:!0}}},0,0,0,0,['viewmodel.main.files.widget.searcherrors'],0,[MainApp.view.main.files.widget,'SearchErrorsWindowModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.SearchErrorsWindow',Veeam.base.view.BaseWindow,{controller:'main.files.widget.searcherrors',viewModel:{type:'main.files.widget.searcherrors'},config:{taskId:null},updateTaskId:function(v){this.getViewModel().set('taskId',v)},title:'Errors',layout:'fit',width:576,maxHeight:576,minHeight:300,items:{xtype:'gridpanel',forceFit:!0,layout:'fit',scrollable:'y',bind:{store:'{errorStore}'},viewConfig:{stripeRows:!1},columns:{defaults:{sortable:!0,menuDisabled:!0},
items:[{header:'Severity',dataIndex:'errorType',renderer:'errorTypeRenderer',width:100},{header:'Message',dataIndex:'text',xtype:'descriptioncolumn',flex:1}]}},buttons:[{text:'Close',ui:'primary',handler:'closeHandler'}]},0,['main.files.widget.searcherrors'],'component box container panel window main.files.widget.searcherrors'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.files.widget.searcherrors':!0},['widget.main.files.widget.searcherrors'],0,[MainApp.view.main.files.widget,
'SearchErrorsWindow'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchProgressBar',Ext.toolbar.Toolbar,{cls:'search-progress-toolbar',controller:'view.main.files.searchprogressbar',viewModel:{type:'view.main.files.searchprogressbar'},listeners:{show:'startProgress',hide:'resetProgress'},ui:'notification',reference:'searchprogressbar',updateState:function(task){this.getViewModel().set('task',task)},startProgress:function(){this.lookupController().startProgress()},finishProgress:function(){this.lookupController().finishProgress()},items:[{xtype:'displayfield',
bind:{value:'{searchLabel}'}},{xtype:'progressbar',reference:'progress',textTpl:'',width:300},{xtype:'displayfield',minWidth:134,bind:{value:'{resultsFoundText}'}},{xtype:'tbseparator'},{xtype:'button',ui:'text',handler:'onShowErrors',iconCls:'error',bind:{text:'{errorsText}',hidden:'{!hasErrorsOrWarnings}'}},{xtype:'button',handler:'onSearchCancel',text:'Cancel',iconCls:'remove',ui:'text',bind:{hidden:'{isSearchComplete}',disabled:'{!task.taskId}'}},{xtype:'button',handler:'onClose',text:'Close',
iconCls:'remove',ui:'text',bind:{hidden:'{!showCloseButton}'}}]},0,['view.main.files.searchprogressbar'],['component','box','container','toolbar','view.main.files.searchprogressbar'],{component:!0,box:!0,container:!0,toolbar:!0,'view.main.files.searchprogressbar':!0},['widget.view.main.files.searchprogressbar'],0,[MainApp.view.main.files,'SearchProgressBar'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchResultGridModel',Ext.app.ViewModel,{data:{storeHasRecords:!1},stores:{searchResultStore:{type:'app-store',rpcMethod:'Api.files.search.getResults',model:'Veeam.model.SearchResult',autoLoad:!1,listeners:{datachanged:'onSearchResultStoreDataChanged'}}}},0,0,0,0,['viewmodel.main.files.searchresultgrid'],0,[MainApp.view.main.files,'SearchResultGridModel'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchResultGridController',Ext.app.ViewController,{emptyGridNotificationText:['To searching for a file, enter its name in the search box above and click "Search"','Only backups made with the guest files indexing enabled can be searched here.','Other restore points must be mounted before performing a search.'],noResultsGridNotificationText:['No results found, please refine your search criteria'],afterRender:function(){var markup=this.getNotificationTextMarkup(this.emptyGridNotificationText);
this.getView().setEmptyText(markup)},initViewModel:function(viewModel){var me=this;me.searchModeBinding=viewModel.bind('{currentSearchTask}',function(value){me.getView().setEmptyText(value?'':me.getNotificationTextMarkup(me.emptyGridNotificationText))})},restorePointRenderer:function(value,td,model){value=model.getRestorePoint().get('backupDate');return Ext.isDate(value)?Ext.Date.format(value,Ext.Date.defaultFormat):value},vmRenderer:function(value,td,model){return model.getVm()?model.getVm().get('displayName'):
value},pathRenderer:function(value,meta){var string=Ext.util.Format,ellipsis=Common.util.Format.centralEllipsis;meta.tdAttr='data-qtip\x3d"'+string.htmlEncode(value)+'"';return ellipsis(string.htmlEncode(value))},onItemSelected:function(sm,selected){sm=selected.map(function(r){return r.clone()});Ext.GlobalEvents.fireEvent('files:selectFsItem',sm)},onSearchResultStoreDataChanged:function(store){var vm=this.getViewModel();store=!!(store&&0<store.getCount());vm.set('storeHasRecords',store);this.getView().setEmptyText(store?
'':this.getNotificationTextMarkup(this.noResultsGridNotificationText))},sizeColumnRenderer:function(value){return Common.util.Format.fileSize(value)},destroy:function(){Ext.destroy(this.searchModeBinding);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},privates:{getNotificationTextMarkup:function(text){var notificationtoolbar=new Common.toolbar.Notification({autoClose:!1,hideCloseButton:!0,layout:'table'});notificationtoolbar.setInfo(Ext.String.format.apply(null,['\x3cdiv\x3e{0}\x3c/div\x3e\x3cdiv class\x3d"text-secondary"\x3e{1}\x3c/div\x3e'].concat(text)));
return Ext.DomHelper.markup(notificationtoolbar.getRenderTree())}}},0,0,0,0,['controller.main.files.searchresultgrid'],0,[MainApp.view.main.files,'SearchResultGridController'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchResultGrid',Veeam.base.view.BaseGrid,{controller:'main.files.searchresultgrid',viewModel:{type:'main.files.searchresultgrid'},bind:{store:'{searchResultStore}'},border:!1,bbar:{xtype:'pagingtoolbar',displayInfo:!0,bind:{hidden:'{!storeHasRecords}'}},hideRefreshBtn:!0,hideExportBtn:!0,flex:1,config:{viewConfig:{forceFit:!0,deferEmptyText:!1}},listeners:{selectionchange:'onItemSelected'},columns:{defaults:{emptyCellText:'\x3cspan class\x3d"empty"\x3eNot available\x3c/a\x3e',
sortable:!1,menuDisabled:!0},items:[{xtype:'fsiconcolumn',header:'Name',flex:1,nameIndex:'objectName'},{header:'Size',flex:1,dataIndex:'size',align:'right',renderer:'sizeColumnRenderer'},{header:'Owner',flex:1,dataIndex:'owner'},{header:'Created',flex:1,dataIndex:'modified',xtype:'datecolumn'},{header:'Restore Point',dataIndex:'restorePoint',flex:1,xtype:'datecolumn',renderer:'restorePointRenderer',bind:{hidden:'{selectedRestorePoint}'}},{header:'Machine',flex:1,dataIndex:'vmName',renderer:'vmRenderer',
bind:{hidden:'{selectedRestorePoint}'}},{header:'Path',flex:1,dataIndex:'path',renderer:'pathRenderer'}]},selModel:{mode:'MULTI'},loadResults:function(task){var store=this.getStore();task?(store.getProxy().getExtraParams().taskId=task.taskId,store.load()):(store.removeAll(),store.setTotalCount&&store.setTotalCount(0),store.currentPage=1)},updateResultsCount:function(task){var store=this.getStore();task&&store.setTotalCount&&store.setTotalCount(task.resultsCount)},loadErrors:function(task){var store=
this.getViewModel().getStore('searchErrorStore');task?(store.getProxy().getExtraParams().taskId=task.taskId,store.load()):store.removeAll()}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,0,[MainApp.view.main.files,'SearchResultGrid'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.BrowseResultGridController',Ext.app.ViewController,{listen:{global:{'files:startbrowse':'onBrowseStart','files:endbrowse':'onBrowseEnd'}},initViewModel:function(vm){this.storeBinding=vm.bind('{browseResultStore}',this.onStoreBinded,this)},onStoreBinded:function(store){store&&!store.isEmptyStore&&(store.onProxyLoad=Ext.Function.createInterceptor(store.onProxyLoad,this.onBeforeStoreUpdated,this))},onBeforeStoreUpdated:function(operation){if(this.getViewModel().get('browserId')!==
operation.getRequest().getParams().browserId)return operation.abort(),!1},onBeforeStoreLoad:function(store,operation){store=this.getViewModel();var table=this.getView().getView(),totalCount=store.get('totalCount'),limit=operation.getLimit(),start=operation.getStart();if(null==store.get('viewId')||null==store.get('browserId'))return!1;start+limit>totalCount&&(store=Number(totalCount-start),operation.setLimit(store));setTimeout(function(){table.setLoading()})},onStoreLoad:function(store){this.getView().getView().setLoading(!1)},
onItemSelected:function(sm,selected){var vm=this.getViewModel();sm=selected.map(function(r){r=r.clone();r.setRestorePoint(vm.get('selectedRestorePoint').clone());r.setVm(vm.get('selectedVm').clone());return r});Ext.GlobalEvents.fireEvent('files:selectFsItem',sm)},onItemDblClick:function(treeview,record){if(record.get('isFolder')){var viewId=this.getViewModel().get('viewId'),pathStruct=new Veeam.model.Path(record.get('path'));pathStruct.setDisplayPath(record.get('displayPath'));Veeam.service.SearchService.getOibFsItemsAsync(viewId,
pathStruct).then(function(response){Ext.GlobalEvents.fireEvent('files:selectpath',{browserId:response.browserId,viewId:viewId,nodePath:pathStruct,totalCount:response.itemsTotalCount})}).otherwise(function(){Ext.GlobalEvents.fireEvent('files:endbrowse')});this.onBrowseStart();Ext.GlobalEvents.fireEvent('files:openfolder',pathStruct)}},onBrowseResultsStoreDataChanged:function(store){this.getViewModel().set('storeHasRecords',store&&0<store.getCount())},onBrowseStart:function(){this.getView().getView().setLoading()},
onBrowseEnd:function(){this.getView().getView().setLoading(!1)},destroy:function(){this.storeBinding=Ext.destroy(this.storeBinding);Ext.app.ViewController.prototype.destroy.call(this)},sizeColumnRenderer:function(value,meta,record){return!0===record.get('isFolder')?null:Common.util.Format.fileSize(value)}},0,0,0,0,['controller.main.files.browse.browseresultgrid'],0,[MainApp.view.main.files.browse,'BrowseResultGridController'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.BrowseResultGridModel',Ext.app.ViewModel,{stores:{browseResultStore:{type:'app-store',rpcMethod:'Api.files.browse.browseOibFsItems',model:'Veeam.model.SearchResult',autoLoad:!1,listeners:{beforeload:'onBeforeStoreLoad',datachanged:'onBrowseResultsStoreDataChanged',load:'onStoreLoad'},remoteSort:!0,sorters:{property:'objectName',direction:'asc'},extraParams:{viewId:'{viewId}',browserId:'{browserId}'}}},data:{viewId:null,browserId:null,osKind:null,storeHasRecords:!1},
formulas:{isUnixOs:{bind:'{osKind}',get:function(osKind){return osKind===Veeam.model.GuestOsKind.Linux}}}},0,0,0,0,['viewmodel.main.files.browse.browseresultgrid'],0,[MainApp.view.main.files.browse,'BrowseResultGridModel'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.BrowseResultGrid',Veeam.base.view.BaseGrid,{controller:'main.files.browse.browseresultgrid',viewModel:{type:'main.files.browse.browseresultgrid'},publishes:['viewId','browseId','path','osKind'],config:{viewId:null,browserId:null,path:null,totalCount:0,osKind:null},viewConfig:{enableTextSelection:!1},hideRefreshBtn:!0,hideExportBtn:!0,bbar:{xtype:'pagingtoolbar',displayInfo:!0,hidden:!0,bind:{hidden:'{!storeHasRecords}'}},updateViewId:function(v){this.getViewModel().set('viewId',
v);return v},updateBrowserId:function(v,oldValue){this.getViewModel().set('browserId',v);return v},updatePath:function(v){this.getViewModel().set('path',v);return v},updateTotalCount:function(v){this.getViewModel().set('totalCount',v);return v},updateOsKind:function(v){this.getViewModel().set('osKind',v);return v},bind:{store:'{browseResultStore}'},flex:1,columns:{defaults:{menuDisabled:!0},items:[{xtype:'fsiconcolumn',header:'Name',nameIndex:'objectName',flex:1},{header:'Size',dataIndex:'size',flex:1,
bind:{hidden:'{isUnixOs}'},align:'right',renderer:'sizeColumnRenderer'},{header:'Owner',dataIndex:'owner',sortable:!1,flex:1,bind:{hidden:'{isUnixOs}'}},{header:'Created',dataIndex:'modified',xtype:'datecolumn',sortable:!1,flex:1,bind:{hidden:'{isUnixOs}'}}]},selModel:{mode:'MULTI'},listeners:{selectionchange:'onItemSelected',itemdblclick:'onItemDblClick'},loadResults:function(params){var store=this.getStore(),browserId=params.browserId,viewId=params.viewId;this.setViewId(viewId);this.setBrowserId(browserId);
this.setPath(params.nodePath);this.setTotalCount(params.totalCount);this.updateResultsCount(params.totalCount);store.currentPage=1;store.load({params:{browserId:browserId,viewId:viewId},callback:function(){Ext.GlobalEvents.fireEvent('files:endbrowse')}})},clearResults:function(){var store=this.getStore();store&&!store.isEmptyStore&&store.removeAll();this.setViewId(null);this.setTotalCount(0);this.setBrowserId(null);this.setPath(null)},updateResultsCount:function(resultsCount){var store=this.getStore();
store&&store.setTotalCount&&store.setTotalCount(resultsCount)}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0},0,0,[MainApp.view.main.files.browse,'BrowseResultGrid'],0);
Ext.cmd.derive('MainApp.view.main.files.SearchViewport',Ext.Panel,{cls:'search-viewport',viewModel:{formulas:{activeTab:{bind:'{isSearchMode}',get:function(isSearchMode){return isSearchMode?'searchGrid':'browseGrid'}}}},dockedItems:[{dock:'top',layout:{type:'vbox',align:'stretch'},items:[{xtype:'view.main.files.searchprogressbar',height:48,hidden:!0},{xtype:'view.main.files.searchtoolbar',height:48}]}],layout:'card',activeItem:'searchGrid',bind:{activeItem:'{activeTab}'},items:[{xclass:'MainApp.view.main.files.SearchResultGrid',
flex:1,itemId:'searchGrid',reference:'searchresultgrid'},{xclass:'MainApp.view.main.files.browse.BrowseResultGrid',flex:1,itemId:'browseGrid',reference:'browseresultgrid',bind:{osKind:'{selectedRestorePoint.guestOsKind}'}}]},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},['main.files.searchviewport'],0,[MainApp.view.main.files,'SearchViewport'],0);
Ext.cmd.derive('MainApp.view.main.files.BrowsePanelController',Ext.app.ViewController,{listen:{component:{'#browseViewport':{mountEnabled:'onMountStateChange',mountButtonVisible:'toggleMountMode'}},global:{'files:selectvm':'changeSelectedVm','files:pickRetorePoint':'pickRestorePoint'}},changeSelectedVm:function(selectedVm){var viewModel=this.getViewModel(),store=this.lookupReference('datepicker').getStore(),browseViewport=this.lookupReference('browseViewport');viewModel.set('currentRestorePoint',
null);null==selectedVm?store.removeAll():(store.getProxy().setExtraParams({vm:selectedVm.getData()}),this.getView().setLoading(),store.load(this.onRestorePointsLoaded.bind(this)));browseViewport.releaseView();browseViewport.clearView();this.toggleMountMode(null,!1)},onRestorePointsLoaded:function(records){var viewModel=this.getViewModel(),count=0,hasAnyIndexed=!1;this.getView().setLoading(!1);0<records.length&&(viewModel.set('currentRestorePoint',records[records.length-1]),count=records.length,hasAnyIndexed=
this.hasAnyIndexedPoint(records));Ext.GlobalEvents.fireEvent('files:restorePointsChange',{count:count,hasAnyIndexed:hasAnyIndexed})},hasAnyIndexedPoint:function(records){return records.some(function(r){return!0===r.get('hasIndex')})},onRestorePointChange:function(field,newPoint,oldPoint){field=this.lookupReference('browseViewport');var vm=this.getViewModel().get('selectedVm');oldPoint&&oldPoint!==newPoint&&(field.releaseView(),field.clearView());Ext.GlobalEvents.fireEvent('files:selectpoint',newPoint,
oldPoint);newPoint?field.getOrCreateView(vm,newPoint):this.toggleMountMode(null,!1)},onShowBackupInfo:function(){var restorePoint=this.getViewModel().get('currentRestorePoint'),vm=this.getViewModel().get('selectedVm');restorePoint=Ext.create('MainApp.view.main.files.widget.BackupInfoWindow',{restorePoint:restorePoint,vm:vm});this.dialog=this.getView().add(restorePoint.show())},onMountClick:function(){var viewModel=this.getViewModel(),mountView=this.getView().down('#mount');viewModel.set('mountButtonEnabled',
!1);mountView.startMount()},onMountStateChange:function(view,state){this.getViewModel().set('mountButtonEnabled',state)},toggleMountMode:function(view,isMountMode){this.getViewModel().set('mountButtonVisible',isMountMode);this.fireViewEvent('toggleMountMode',isMountMode)},pickRestorePoint:function(){this.lookupReference('datepicker').expand()},onDestroy:function(){this.dialog=Ext.destroy(this.dialog)}},0,0,0,0,['controller.main.files.browsepanel'],0,[MainApp.view.main.files,'BrowsePanelController'],
0);Ext.cmd.derive('MainApp.view.main.files.BrowsePanelModel',Ext.app.ViewModel,{stores:{},data:{currentRestorePoint:null,mountButtonEnabled:!0,mountButtonVisible:!1}},0,0,0,0,['viewmodel.main.files.browsepanel'],0,[MainApp.view.main.files,'BrowsePanelModel'],0);
Ext.cmd.derive('Veeam.view.field.DateTimePicker',Ext.form.field.Picker,{config:{selection:null,displayField:null,valueField:null,listTitle:'Restore point:',selectOnTab:!0,triggers:{cross:{weight:0,cls:'x-form-clear-trigger',hidden:!0,handler:'onClearClick',scope:'this'},picker:{weight:1,handler:'onTriggerClick',scope:'this',focusOnMousedown:!0}}},onClearClick:function(){this.selectItem(null);this.fireEvent('clear')},publishes:['selection'],twoWayBindable:['selection'],componentCls:'x-form-field-date',
triggerCls:'x-form-date-trigger',fieldDateFormat:'c',timeFormat:'hh:mm:ss',dateFormat:'yyyy-mm-dd',editable:!1,matchFieldWidth:!1,referenceHolder:!0,autoSelect:!0,hideClearButton:!1,initComponent:function(){this.bindStore(this.store||'ext-empty-store',!0,!0);this.startDay=Ext.Date.firstDayOfWeek;Ext.form.field.Picker.prototype.initComponent.apply(this,arguments)},resetToDefault:Ext.emptyFn,bindStore:function(store,preventFilter,initial){this.mixins.storeholder.bindStore.call(this,store,initial)},
onBindStore:function(store,initial){var timeList=this.getPicker().down('#timelist');store&&!store.isEmptyStore&&(initial||this.resetToDefault(),timeList.getStore()!==store&&timeList.bindStore(store),this.listFilter=new Ext.util.Filter({scope:this,filterFn:this.filterPicked}),this.changingFilters=!0,store.filter(this.listFilter),this.changingFilters=!1)},updateSelection:function(newVal,oldVal){var cross=this.getTrigger('cross');null==newVal?(this.setRawValue(null),cross.hide()):(this.setValue(newVal),
this.hideClearButton||cross.show());this.fireEvent('updateselection',this,newVal,oldVal)},getStoreListeners:function(store){if(!store.isEmptyStore)return store={load:this.onLoad}},onLoad:function(store,records){store=this.getPicker().down('#calendar');var record=0<records.length?records[records.length-1]:null;this.setAllowedDates(records);record&&(records=record.get(this.displayField),Ext.isDate(records)&&(this.selectedDate=records=Ext.Date.clearTime(records,!0)),this.autoSelect&&this.setSelection(record));
this.selectedDate&&store.setValue(this.selectedDate)},onUnbindStore:function(store){var timeList=this.getPicker().down('#timelist');timeList&&timeList.bindStore(null);store.destroyed||(this.changingFilters=!0,store.removeFilter(this.listFilter),this.changingFilters=!1)},filterPicked:function(r){var s=this.selectedDate;r=r.get(this.displayField);if(!s)return!1;var year=s.getFullYear();var month=s.getMonth();s=s.getDate();return r.getFullYear()===year&&r.getMonth()===month&&r.getDate()===s?!0:!1},createPicker:function(){return Ext.create({xtype:'container',
floating:!0,cls:'x-form-field-date-picker',id:this.id+'-picker',layout:{type:'hbox',align:'stretchmax'},items:[{xtype:'datepicker',pickerField:this,cls:'x-form-field-date-picker-calendar',itemId:'calendar',format:this.dateFormat,startDay:Ext.Date.firstDayOfWeek,flex:1,listeners:{select:this.onDateSelect,show:this.onPickerShow,scope:this}},{xtype:'boundlist',itemId:'timelist',cls:'x-form-field-date-picker-timelist',listTitle:this.getListTitle(),width:208,displayField:this.getDisplayField(),store:this.getStore(),
pickerField:this,format:this.timeFormat,loadMask:!1,getInnerTpl:function(displayField){return'{'+displayField+':date("'+this.format+'")}'},listeners:{select:this.onItemSelect,scope:this},renderTpl:['\x3cdiv id\x3d"{id}-listWrap" data-ref\x3d"listWrap"',' class\x3d"{baseCls}-list-ct ',Ext.dom.Element.unselectableCls,'"\x3e','\x3clabel class\x3d"{baseCls}-title"\x3e{listTitle}\x3c/label\x3e','\x3cul id\x3d"{id}-listEl" data-ref\x3d"listEl" class\x3d"','x-','list-plain"','\x3ctpl foreach\x3d"ariaAttributes"\x3e {$}\x3d"{.}"\x3c/tpl\x3e',
'\x3e','\x3c/ul\x3e','\x3c/div\x3e','{%','var pagingToolbar\x3dvalues.$comp.pagingToolbar;','if (pagingToolbar) {','Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);','}','%}',{disableFormats:!0}],beforeRender:function(){Ext.apply(this.renderData,{listTitle:this.listTitle})}}]})},onDateSelect:function(datepicker,date){datepicker=this.getStore();this.selectedDate=date;datepicker.filter(this.listFilter)},onPickerShow:function(){var store=this.getStore();store&&store.filter(this.listFilter)},
expand:function(){Ext.form.field.Picker.prototype.expand.call(this);this.onPickerShow()},onItemSelect:function(list,record){this.selectItem(record)},selectItem:function(record){this.setSelection(record);this.picker.hide();this.inputEl.focus();this.fireEvent('select',this,record)},setValue:function(record){record=record?record.get(this.getDisplayField()):null;var formattedDate=null;record&&(formattedDate=Ext.Date.format(record,this.fieldDateFormat));Ext.form.field.Picker.prototype.setValue.call(this,
formattedDate)},setAllowedDates:function(records){var me=this,calendar=me.getPicker().down('#calendar');records=records.map(function(r){return r.get(me.displayField)});var dLen=records.length,len=records.length-1,re='^(?!';for(d=0;d<dLen;d++)dI=records[d],re+=Ext.isDate(dI)?Ext.String.escapeRegex(Ext.Date.dateFormat(dI,me.dateFormat)):dI,d!==len&&(re+='|');calendar.setDisabledDates(new RegExp(re+').*$'))}},0,['form.field.datetimepicker'],'component box field textfield pickerfield form.field.datetimepicker'.split(' '),
{component:!0,box:!0,field:!0,textfield:!0,pickerfield:!0,'form.field.datetimepicker':!0},['widget.form.field.datetimepicker'],[[Ext.util.StoreHolder.prototype.mixinId||Ext.util.StoreHolder.$className,Ext.util.StoreHolder]],[Veeam.view.field,'DateTimePicker'],0);
Ext.cmd.derive('MainApp.view.main.files.BrowseViewportController',Ext.app.ViewController,{updateInterval:5E3,states:{none:{handler:'preMountViewHandler'},initializing:{handler:'mountingViewHandler'},ready:{handler:'browseViewHandler'},finalizing:{handler:'unmountingViewHandler'},error:{handler:'errorViewHandler'}},stateHistory:[],afterRender:function(){this.initBindings();this.update()},initBindings:function(){this.viewStateBinging=this.getViewModel().bind('{viewState}',this.publishViewStateChange,
this)},destroyBindings:function(){this.viewStateBinging=Ext.destroy(this.viewStateBinging)},publishViewStateChange:function(viewState){Ext.GlobalEvents.fireEvent('files:viewstatechange',viewState)},transitionTo:function(stateName,data){stateName=stateName&&stateName.toLowerCase();var destinationState=this.states[stateName];if(!destinationState)throw Error('Non-existant state: '+stateName);if('function'!==typeof this[destinationState.handler])throw Error('Non-existant state handler function: '+destinationState.handler);
stateName={stateName:stateName,transitionTime:Date.now()};data&&(stateName.data=data);this[destinationState.handler].call(this,data);this.stateHistory.push(stateName)},preMountViewHandler:function(){var mountView=this.lookupReference('mountView'),viewState=this.getViewModel().get('viewState'),hasError='error'===viewState.error;hasError||mountView.clearLog();this.activateMountButton(!0);mountView.stopLogUpdate(hasError);mountView.setViewId(viewState.id);this.switchToMountMode()},mountingViewHandler:function(){var mountView=
this.lookupReference('mountView'),viewState=this.getViewModel().get('viewState');this.switchToMountMode();mountView.setViewId(viewState.id);this.activateMountButton(!1);mountView.startLogUpdate()},browseViewHandler:function(){var mountView=this.lookupReference('mountView'),viewState=this.getViewModel().get('viewState'),treeView=this.lookupReference('treeView');this.switchToBrowseMode();mountView.setViewId(viewState.id);mountView.stopLogUpdate();this.activateMountButton(!1);treeView.getDirectories(viewState)},
unmountingViewHandler:function(){var mountView=this.lookupReference('mountView'),viewState=this.getViewModel().get('viewState');this.switchToMountMode();mountView.setViewId(viewState.id);this.activateMountButton(!1)},errorViewHandler:function(viewState){var errorView=this.lookupReference('errorView');this.switchToErrorMode();errorView.update(viewState.errorMessage)},clearView:function(){var viewModel=this.getViewModel(),fsTreeView=this.lookupReference('treeView'),mountView=this.lookupReference('mountView');
viewModel.set('viewState',null);fsTreeView.clearView();mountView.clearView()},switchToMountMode:function(){this.switchToView('mount');this.toggleMountButton(!0);this.doUpdate=!0},switchToBrowseMode:function(){this.switchToView('fs');this.toggleMountButton(!1);this.doUpdate=!1},switchToErrorMode:function(){this.switchToView('error');this.toggleMountButton(!1);this.doUpdate=!1},activateMountButton:function(flag){this.fireViewEvent('mountEnabled',flag)},toggleMountButton:function(visible){this.fireViewEvent('mountButtonVisible',
visible)},onMountEnd:function(result){result.success&&this.switchToBrowseMode()},onMountStart:function(){var viewModel=this.getViewModel(),vm=viewModel.get('selectedVm');(viewModel=viewModel.get('selectedRestorePoint'))||Ext.raise('No restore point selected');Veeam.service.SearchService.confirmMount(vm,viewModel).then(this.onBeforeMountStart.bind(this),this.onRejectMount.bind(this));return!1},onRejectMount:function(reason){'canceled'===reason&&this.activateMountButton(!0)},onBeforeMountStart:function(initSpec){var vm=
this.getViewModel(),mountView=this.lookupReference('mountView'),viewState=vm.get('viewState'),guestOsKind=vm.get('selectedRestorePoint.guestOsKind'),specOsKind=initSpec?Veeam.model.GuestOsKind[initSpec.forcedOsKind]:null;initSpec&&initSpec.forceMountOsKind&&guestOsKind!==specOsKind&&vm.set('selectedRestorePoint.guestOsKind',Number(specOsKind));mountView.setPreparing(!0);Veeam.service.SearchService.credsCheckAndMount(viewState.id,initSpec,vm.get('selectedRestorePoint.oibId'),this.onCredsValidationCancel.bind(this)).then(this.viewStateRecieved.bind(this)).otherwise(this.handleInvokeError.bind(this)).always(mountView.setPreparing.bind(mountView,
!1))},onCredsValidationCancel:function(deferred){this.activateMountButton(!0);deferred.reject(null)},onMountCancel:function(){var viewState=this.getViewModel().get('viewState');Veeam.service.SearchService.cancelMount(viewState.id).then(this.viewStateRecieved.bind(this)).otherwise(this.handleInvokeError.bind(this))},releaseView:function(){var viewState=this.getViewModel().get('viewState');viewState&&Veeam.service.SearchService.releaseView(viewState.id).then(function(){MainApp.app.getSession().setItem('mountError',
null)}).otherwise(Common.ui.Msg.error)},getOrCreateView:function(vm,selectedPoint){var me=this,view=me.getView();view.setLoading();Veeam.service.SearchService.getOrCreateView(vm,selectedPoint).then(me.showViewError.bind(me)).then(me.viewStateRecieved.bind(me)).otherwise(function(response){me.transitionTo('error',{errorMessage:response.message});Common.ui.Msg.error(response.message)}).always(function(){view.setLoading(!1)})},viewStateRecieved:function(viewState){var viewModel=this.getViewModel(),vs=
viewModel.get('viewState'),currentViewState=vs&&vs.state;var isViewChanged=vs&&vs.id;var isViewErrorChanged=vs&&vs.error;vs=vs&&vs.errorMessage;viewModel.set('viewState',viewState);viewModel=currentViewState!==viewState.state;isViewChanged=isViewChanged!==viewState.id;isViewErrorChanged=viewState.error&&viewState.errorMessage&&(isViewChanged||viewState.error!==isViewErrorChanged&&viewState.errorMessage!==vs);if(viewModel||isViewChanged)this.transitionTo(viewState.state,viewState),this.fireViewEvent('viewstate.change',
viewState),isViewErrorChanged&&('warning'===viewState.error&&viewState.errorMessage&&this.showViewWarning(viewState),'undefined'!==typeof currentViewState&&'error'===viewState.error&&viewState.errorMessage&&this.showViewError(viewState));return viewState},showViewWarning:function(viewState){var messages=[],msg;if('warning'===viewState.error&&viewState.errorMessage){messages=viewState.errorMessage.split('\r\n');var showWarning=function(){return(msg=messages.shift())?Common.ui.Msg.warning({message:'Warning: '+
msg,fn:showWarning}):!1};showWarning()}return!1},showViewError:function(viewState){var session=MainApp.app.getSession();if(viewState&&'error'===viewState.error&&viewState.errorMessage){this.activateMountButton(!0);var lastSeenErrorId=session.getItem('mountError')||null;lastSeenErrorId!==viewState.id&&Common.ui.Msg.error('Server error: '+viewState.errorMessage,function(){session.setItem('mountError',viewState.id)})}return viewState},getViewState:function(){var viewState=this.getViewModel().get('viewState');
Veeam.service.SearchService.getViewState(viewState.id).then(this.viewStateRecieved.bind(this)).otherwise(Common.ui.Msg.error)},update:function(){if(this.isDestroyed)return!1;!0===this.doUpdate&&this.getViewModel().get('viewState')&&(this.getViewState(),clearTimeout(this.pendingUpdateId));this.pendingUpdateId=setTimeout(this.update.bind(this),this.updateInterval||15E3)},switchToView:function(itemId){this.getView().getLayout().setActiveItem(itemId)},handleInvokeError:function(error){this.activateMountButton(!0);
error&&Common.ui.Msg.error(error)},destroy:function(){this.destroyBindings();Ext.app.ViewController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.main.files.browseviewport'],0,[MainApp.view.main.files,'BrowseViewportController'],0);Ext.cmd.derive('MainApp.view.main.files.BrowseViewportModel',Ext.app.ViewModel,{stores:{},data:{viewState:null}},0,0,0,0,['viewmodel.main.files.browseviewport'],0,[MainApp.view.main.files,'BrowseViewportModel'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.MountViewController',Ext.app.ViewController,{init:function(){this.task={run:this.runUpdate,interval:5E3,running:!1,id:'log-update',scope:this}},startUpdate:function(){!1===this.task.running&&(Ext.util.TaskManager.start(this.task),this.task.running=!0)},stopUpdate:function(isError){!0===this.task.running&&(Ext.util.TaskManager.stop(this.task),this.task.running=!1,!0!==isError&&this.getView().setHidden(!0))},runUpdate:function(){var store=this.getView().getStore();
store.reload({callback:function(records,operation,success){success&&store.add({severity:Veeam.model.MessageSeverity.InProgress,message:'Loading\x26#133;',eventTime:(new Date).valueOf()})}})},destroy:function(){this.stopAutoUpdate();this.task=Ext.destroy(this.task);Ext.app.ViewController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.main.files.browse.mountview'],0,[MainApp.view.main.files.browse,'MountViewController'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.MountView',Ext.DataView,{controller:'main.files.browse.mountview',config:{viewId:null},loadMask:!1,applyViewId:function(v){this.getViewModel().set('viewId',v)},viewModel:{stores:{mountLog:{type:'app-store',model:'Veeam.model.report.LogRecord',rpcMethod:'Api.browse.getMountLog',extraParams:{viewId:'{viewId}'}}},data:{runData:{text:'Loading\x26#133;',icon:'progress'},preRunData:{text:'Preparing\x26#133;',icon:'idle'},idleData:{text:'',icon:null},logState:{icon:null,
text:null}}},bind:{store:'{mountLog}',data:{logState:'{logState}'}},tpl:'\x3cdiv class\x3d"session-details-footer"\x3e;\x3ctpl for\x3d"."\x3e;\x3cdiv class\x3d"log-record" data-tip\x3d"event time: {eventTime:date}"\x3e;\x3cdiv class\x3d"icon {icon}"\x3e{message}\x3c/div\x3e;\x3c/div\x3e;\x3c/tpl\x3e;\x3cdiv\x3e;\x3cdiv class\x3d"icon {logState.icon}"\x3e{logState.text}\x3c/div\x3e;\x3c/div\x3e;\x3c/div\x3e'.split(';'),itemSelector:'.log-record',startMount:function(){this.clearLog();this.fireEvent('mount.start')},
startLogUpdate:function(){this.lookupController().startUpdate()},stopLogUpdate:function(isError){this.lookupController().stopUpdate(isError)},cancelMount:function(){this.fireEvent('mount.cancel')},clearLog:function(){var store=this.getStore();store&&!store.isEmptyStore&&store.removeAll()},clearView:function(){this.clearLog();this.stopLogUpdate()},collectData:function(){var logState=this.getViewModel().get('logState');var data=Ext.view.View.prototype.collectData.apply(this,arguments);data.logState=
logState;return data},setPreparing:function(flag){var vm=this.getViewModel();flag=flag?vm.get('preRunData'):vm.get('idleData');vm.set('logState',flag);this.update({logState:flag})}},0,0,['component','box','dataview'],{component:!0,box:!0,dataview:!0},0,0,[MainApp.view.main.files.browse,'MountView'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.ErrorView',Common.widget.Alert,{ui:'error'},0,0,['component','box','alert','widget.alert'],{component:!0,box:!0,alert:!0,'widget.alert':!0},0,0,[MainApp.view.main.files.browse,'ErrorView'],0);
Ext.cmd.derive('Veeam.model.Path',Ext.Base,{config:{fullPath:null,displayPath:null},constructor:function(config){Ext.isString(config)&&(config={fullPath:config});this.initConfig(config)},toString:function(){return this.getFullPath()}},3,0,0,0,0,0,[Veeam.model,'Path'],0);
Ext.cmd.derive('Veeam.manager.TreeBrowseOperation',Ext.Base,{isRunning:!1,isAborted:!1,isReady:!1,error:null,operationId:null,config:{operationId:null,isRootPath:!1,path:null,browserId:null,totalCount:0},constructor:function(config){this.initConfig(config);this.mixins.observable.constructor.call(this);this.start()},start:function(){this.isRunning=!0},finish:function(response){this.isRunning=!1;this.isReady=!0;this.setBrowserId(response.browserId);this.setTotalCount(response.itemsTotalCount);this.fireEvent('ready',
this)},finishWithError:function(error){this.isRunning=!1;this.isReady=!0;this.error=error&&error.message?error.message:error;this.fireEvent('ready',this)},hasError:function(){return null!=this.error},abort:function(){return this.isRunning?this.isAborted=!0:!1}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Veeam.manager,'TreeBrowseOperation'],0);
Ext.cmd.derive('Veeam.manager.BrowseOperationManager',Ext.Base,{config:{viewId:null,interval:1E3},operations:null,active:!1,constructor:function(config){this.initConfig(config);this.mixins.observable.constructor.call(this);this.operations=new Ext.util.HashMap;this.checkServer=this.checkServer.bind(this);this.checkUpdates=this.checkUpdates.bind(this);this.log=console.log.bind(console,'[BrowseOperationManager] ');this.checkUpdates()},startThread:function(){this.active=!0;this.log('Start autoupdate checking')},
registerOperation:function(operation){var operationId=operation.getOperationId();this.operations.add(operationId,operation);1===this.operations.getCount()&&this.startThread();return operationId},unregisterOperation:function(operationId){(operationId=this.operations.removeAtKey(operationId))&&operationId.isRunning&&operationId.abort();0===this.operations.getCount()&&this.stopThread();return operationId},stopThread:function(){this.log('Stop autoupdate checking');this.active=!1},checkUpdates:function(){var me=
this,check=me.checkServer,interval=me.getInterval();me.active?check().then(function(updates){me.updateState(updates);me.delay(interval)}).otherwise(function(error){error||me.delay(interval);throw Error(error);}):me.delay(interval)},delay:function(interval){this.timer&&clearTimeout(this.timer);this.timer=setTimeout(this.checkUpdates,interval)},checkServer:function(){var idsToCheck=this.operations.getKeys();this.log('Checking updates : ',idsToCheck);return Veeam.service.SearchService.getOibSubFoldersBrowsersStates(this.getViewId(),
idsToCheck)},updateState:function(states){var me=this;states.forEach(function(state){var operationId=state.operationId,operation=me.operations.get(operationId)||null;state&&operation?1===state.taskState?operation.finish(state):2===state.taskState&&operation.finishWithError(state.errorMessage):me.warn('Operation with id '+operationId+' is not found')},me)},destroy:function(){this.timer&&(clearTimeout(this.timer),this.timer=null);this.operations.each(function(operation){operation&&operation.isRunning&&
operation.abort()});this.operations=Ext.destroy(this.operations)}},1,0,0,0,['manager.browseoperations'],[[Ext.mixin.Observable.prototype.mixinId||Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Veeam.manager,'BrowseOperationManager'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.FsTreeViewController',Ext.app.ViewController,{listen:{global:{'files:openfolder':'onOpenFolder'}},UNAVALAILABLE_VOLUME_MSG:'Unable to mount the volume from backup to the mount server',init:function(){},onOpenFolder:function(nodePath){var view=this.getView(),selectedNode=view.getSelection()[0];selectedNode&&(selectedNode.isExpanded()?this._selectNode(selectedNode.childNodes,nodePath.getFullPath(),nodePath.getDisplayPath()):(view.expandNode(selectedNode),
selectedNode.needSelection=nodePath))},onAfterItemExpand:function(node,index,item){node.needSelection&&(index=node.needSelection,node.needSelection=!1,this._selectNode(node.childNodes,index.getFullPath(),index.getDisplayPath()))},beforeNodeExpand:function(store,operation){var me=this,manager=me.getView().manager,node=operation.node;store=node.isRoot();operation=me.getView().getViewId();var rawPath=node.get('path');rawPath=rawPath?new Veeam.model.Path(rawPath):null;if(null!=operation)return Veeam.service.SearchService.createOibSubFolderBrowser(operation,
store,rawPath).then(function(response){response=new Veeam.manager.TreeBrowseOperation({operationId:response.operationId});response.on('ready',me.loadNodeChildren.bind(me,node));manager.registerOperation(response)}).otherwise(function(error){throw Error(error);}),node.set('loading',!0),!1},loadNodeChildren:function(node,operation){var me=this,vm=me.getViewModel(),view=me.getView(),manager=view.manager;vm=vm.get('viewId');var browserId=operation.getBrowserId(),totalCount=operation.getTotalCount(),bufferedRender=
view.bufferedRenderer;if(operation.hasError())throw node.set('loading',!1),Error(operation.error);0===totalCount?(node.set('leaf',!0),node.set('iconCls','folder_open'),node.set('loading',!1),me._onNodeLoadCompleted(bufferedRender)):Veeam.service.SearchService.getOibSubFolders(vm,browserId,0,totalCount).then(function(items){node.set('loading',!1);node.isRoot()&&(items=me._filterAccessibleNodes(items));node.appendChild(items,!1,!0);node.expand();me._onNodeLoadCompleted(bufferedRender)}).otherwise(function(error){console.error(error)});
manager.unregisterOperation(operation.getOperationId())},getNodePath:function(node,attr){var vm=this.getViewModel(),currentNode=node,relativePathSegments=[],volumeNameSegments=[],mountPointFlag=!1;vm=vm.get('pathSeparator');attr=attr||'path';if(node.isRoot())return null;for(;currentNode&&!0!==currentNode.isRoot();)!0===currentNode.get('isMountPoint')&&(mountPointFlag=!0),!1===mountPointFlag?relativePathSegments.unshift(currentNode.get(attr)):volumeNameSegments.unshift(currentNode.get(attr)),currentNode=
currentNode.parentNode;node=relativePathSegments.join(vm);return[volumeNameSegments.join(vm),node].join('|')},nodeClickHandler:function(view,node){view=this.getViewModel().get('viewId');if(!node||!node.getOwnerTree()||!1===node.get('isAccessible'))return!1;var path=node.get('path');path=path.isInstance?path:new Veeam.model.Path(path);Ext.GlobalEvents.fireEvent('files:startbrowse');Veeam.service.SearchService.getOibFsItemsAsync(view,path).then(this.onFilesEnumCreated.bind(this,node,view,null)).otherwise(this.showMsg.bind(this,
this,node))},onFilesEnumCreated:function(node,viewId,loadCallback,response){if(!1===response.success)return this.showMsg(this,node,response);if(!node||!node.getOwnerTree())return Ext.GlobalEvents.fireEvent('files:endbrowse'),!1;loadCallback=(loadCallback=node.get('path'))?new Veeam.model.Path(loadCallback):null;var browserId=response.browserId,itemsTotalCount=response.itemsTotalCount;(response=response.totalSize)&&node.set('totalSize',response);Ext.GlobalEvents.fireEvent('files:selectpath',{browserId:browserId,
viewId:viewId,nodePath:loadCallback,totalCount:itemsTotalCount})},showMsg:function(controller,node,response){var me=this;controller=response.message||(response.success?'Success':'Fail');response=response.success?'INFO':'ERROR';Ext.GlobalEvents.fireEvent('files:endbrowse');Ext.MessageBox.show({title:'Status',msg:controller,width:400,buttons:Ext.MessageBox.OK,icon:Ext.MessageBox[response],fn:function(){me.fireViewEvent('refreshViewState')},scope:me});node&&node.rendered&&node.getUI().afterLoad()},privates:{_onNodeLoadCompleted:function(bufferedRender){if(bufferedRender)bufferedRender.onStoreLoad()},
_selectNode:function(childNodes,fullPath,displayPath){var view=this.getView();Ext.Array.each(childNodes,function(curNode){var path=curNode.get('path');path.fullPath==fullPath&&path.displayPath==displayPath&&view.setSelection(curNode)})},_filterAccessibleNodes:function(items){var me=this;return items.map(function(item){item=Ext.clone(item);!1===item.isAccessible&&(item.iconCls='folder-disabled',item.qtip=me.UNAVALAILABLE_VOLUME_MSG,item.leaf=!0);return item})}}},0,0,0,0,['controller.main.files.browse.fstreeview'],
0,[MainApp.view.main.files.browse,'FsTreeViewController'],0);
Ext.cmd.derive('MainApp.view.main.files.browse.FsTreeView',Ext.TreePanel,{rootVisible:!1,reserveScrollbar:!0,scrollable:!0,plugins:['bufferedrenderer','deferredmask'],bind:{store:'{fsTreeStore}'},viewConfig:{loadMask:!1},listeners:{beforeload:'beforeNodeExpand',itemclick:'nodeClickHandler',afteritemexpand:'onAfterItemExpand'},controller:'main.files.browse.fstreeview',viewModel:{data:{folder:null,pathSeparator:'\\'},formulas:{pathSeparator:{bind:'{osKind}',get:function(osKind){return osKind===Veeam.model.GuestOsKind.Linux?
'/':'\\'}}},stores:{fsTreeStore:{type:'tree',root:{text:'Computer',expanded:!0},proxy:{type:'memory'},lazyFill:!0,autoLoad:!1,model:'Veeam.model.FsItemNode'}}},config:{viewId:null,osKind:null},publishes:['viewId','osKind'],updateViewId:function(newViewId,oldViewId){this.getViewModel().set('viewId',newViewId);null==newViewId&&this.clearView();this.manager&&this.manager.destroy();null!=newViewId&&(this.manager=Ext.create('Veeam.manager.BrowseOperationManager',{viewId:newViewId}));return newViewId},
clearView:function(){var rootNode=this.getRootNode();rootNode&&rootNode.removeAll()},applyOsKind:function(v){this.getViewModel(v).set('osKind',v);return v},getDirectories:function(viewState){viewState&&(this.setViewId(viewState.id),this.getStore().reload())}},0,0,'component box container panel tablepanel treepanel'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,treepanel:!0},0,0,[MainApp.view.main.files.browse,'FsTreeView'],0);
Ext.cmd.derive('MainApp.view.main.files.BrowseViewport',Ext.Container,{plugins:['deferredmask'],controller:'main.files.browseviewport',viewModel:{type:'main.files.browseviewport'},config:{viewState:null},applyViewState:function(vs){this.getViewModel().set('viewState',vs)},layout:'card',activeItem:0,items:[{xclass:'MainApp.view.main.files.browse.FsTreeView',itemId:'fs',reference:'treeView',bind:{osKind:'{selectedRestorePoint.guestOsKind}'},listeners:{refreshViewState:'getViewState'}},{xclass:'MainApp.view.main.files.browse.MountView',
reference:'mountView',itemId:'mount',listeners:{'mount.end':'onMountEnd','mount.start':'onMountStart','mount.cancel':'onMountCancel'}},{xclass:'MainApp.view.main.files.browse.ErrorView',reference:'errorView',itemId:'error'}],getOrCreateView:function(vm,restorePoint){this.lookupController().getOrCreateView(vm,restorePoint)},clearView:function(){this.lookupController().clearView()},releaseView:function(){this.lookupController().releaseView()}},0,0,['component','box','container'],{component:!0,box:!0,
container:!0},0,0,[MainApp.view.main.files,'BrowseViewport'],0);
Ext.cmd.derive('MainApp.view.main.files.BrowsePanel',Ext.Panel,{controller:'main.files.browsepanel',viewModel:{type:'main.files.browsepanel'},plugins:['deferredmask'],reference:'browsepanel',cls:'browse-panel',dockedItems:[{dock:'top',items:[{xtype:'toolbar',padding:'8 0',cls:'no-lr-padding-toolbar',items:[{xtype:'form.field.datetimepicker',emptyText:'All restore points',reference:'datepicker',displayField:'backupDate',valueField:'oibId',fieldDateFormat:'defaultFullDateFormat',timeFormat:'defaultLongTimeFormat',
dateFormat:'defaultDateFormat',flex:1,bind:{selection:'{currentRestorePoint}'},listeners:{updateselection:'onRestorePointChange'},store:{type:'app-store',rpcMethod:'Api.files.browse.getRestorePoints',model:'Veeam.model.IndexedRestorePoint',autoLoad:!1}},{xtype:'button',iconCls:'info',tooltip:'Show backup info',handler:'onShowBackupInfo',ui:'text',bind:{hidden:'{!currentRestorePoint}'}},{xtype:'button',text:'Mount',iconCls:'mount-backup',handler:'onMountClick',hidden:!0,ui:'text',margin:'0 16',bind:{hidden:'{!mountButtonVisible}',
disabled:'{!mountButtonEnabled}'}}]}]}],layout:'fit',items:[{xclass:'MainApp.view.main.files.BrowseViewport',itemId:'browseViewport',reference:'browseViewport'}]},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},0,0,[MainApp.view.main.files,'BrowsePanel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.restore.RestoreListToolbarController',Ext.app.ViewController,{init:function(){},openList:function(){(this.dialog=Ext.create('files.widget.restorelistwindow',{viewModel:{parent:this.getViewModel()}})).show()},clearList:function(){Ext.GlobalEvents.fireEvent('files:listclear')},destroy:function(){this.dialog=Ext.destroy(this.dialog);Ext.app.ViewController.prototype.destroy.apply(this,arguments)}},0,0,0,0,['controller.main.files.widget.restore.listtoolbar'],
0,[MainApp.view.main.files.widget.restore,'RestoreListToolbarController'],0);Ext.cmd.derive('MainApp.view.main.files.widget.restore.RestoreListToolbarModel',Ext.app.ViewModel,{},0,0,0,0,['viewmodel.main.files.widget.restore.listtoolbar'],0,[MainApp.view.main.files.widget.restore,'RestoreListToolbarModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.restore.RestoreListWindowController',Veeam.base.view.BaseWindowController,{listen:{global:{'files:updatestate':'onRestoreStateUpdated'}},restorePointRenderer:function(value,td,model){value=model.getRestorePoint().get('backupDate');return Ext.isDate(value)?Ext.Date.format(value,Ext.Date.defaultFormat):value},vmRenderer:function(value,td,model){return model.getVm()?model.getVm().get('displayName'):value},downloadItem:function(){var files=this._getItems();
this._resetLastRestoreState(files);files&&Ext.GlobalEvents.fireEvent('files:download',files)},removeItem:function(){var files=this._getItems(),store=this.lookupReference('grid').getStore();files&&store&&store.remove(files)},restoreOverwriteItem:function(){this._restore(!0)},restoreKeepOriginalItem:function(){this._restore(!1)},restoreStatusRenderer:function(stateObj){stateObj=stateObj||{};var value=stateObj.state,text='',iconCls=null;0===value?(text='Restoring',iconCls='process'):1===value?(text=
'Success',iconCls='success'):2===value?(text=Ext.String.format('\x3ca href\x3d"#!files/history" class\x3d"view-history"\x3eError\x3c/a\x3e'),iconCls='error'):3===value?(html=Ext.String.format('\x3ca href\x3d"#!files/history" class\x3d"x-view-history"\x3eWarning\x3c/a\x3e'),iconCls='warning'):4===value&&(text='Preparing package',iconCls='process');stateObj.link&&(text='\x3ca href\x3d"'+stateObj.link+'"\x3eDownload\x3c/a\x3e');return'\x3cspan class\x3d"icon '+iconCls+'"\x3e'+text+'\x3c/span\x3e'},onRestoreStateUpdated:function(updated,
fileStates){this.getView().isVisible()&&this._getItems().forEach(function(record){var hashKey=record.getHash();hashKey=fileStates[hashKey];'undefined'!==typeof hashKey&&record.set('lastRestoreState',hashKey)},this)},sizeColumnRenderer:function(value,meta,record){return!0===record.get('isFolder')?null:Common.util.Format.fileSize(value)},privates:{_getItems:function(){return this.lookupReference('grid').getSelection()},_resetLastRestoreState:function(files){files.forEach(function(record){record.set('lastRestoreState',
null)})},_restore:function(isOverride){var files=this._getItems();this._resetLastRestoreState(files);files&&Ext.GlobalEvents.fireEvent('files:restore',files,isOverride)}}},0,0,0,0,['controller.main.files.widget.restore.restorelistwindow'],0,[MainApp.view.main.files.widget.restore,'RestoreListWindowController'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.restore.RestoreListWindowModel',Ext.app.ViewModel,{stores:{}},0,0,0,0,['viewmodel.main.files.widget.restore.restorelistwindow'],0,[MainApp.view.main.files.widget.restore,'RestoreListWindowModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.restore.RestoreListWindow',Veeam.base.view.BaseWindow,{title:'Pending Restore',controller:'main.files.widget.restore.restorelistwindow',viewModel:{type:'main.files.widget.restore.restorelistwindow'},width:'80%',height:'80%',minWidth:600,minHeight:400,monitorResize:!0,modal:!0,layout:'fit',items:{layout:'fit',xtype:'gridpanel',reference:'grid',bind:{store:'{restoreListStore}'},tbar:[{text:'Restore',iconCls:'restore',bind:{disabled:'{!grid.selection}'},
menu:{items:[{text:'Overwrite',iconCls:'restore--overwrite',handler:'restoreOverwriteItem'},{text:'Keep',iconCls:'restore--keep',handler:'restoreKeepOriginalItem'}]}},{text:'Download',iconCls:'download',handler:'downloadItem',bind:{disabled:'{!grid.selection}'}},{text:'Delete',iconCls:'remove',handler:'removeItem',bind:{disabled:'{!grid.selection}'}}],viewConfig:{stripeRows:!1},columns:{defaults:{menuDisabled:!0,emptyCellText:'\x3cspan class\x3d"empty"\x3eNot available\x3c/a\x3e'},items:[{xtype:'fsiconcolumn',
nameIndex:'objectName',flex:1,minWidth:212,header:'Name'},{header:'Size',align:'right',width:120,dataIndex:'size',renderer:'sizeColumnRenderer'},{header:'Owner',flex:1,minWidth:150,xtype:'descriptioncolumn',dataIndex:'owner'},{header:'Created',flex:1,minWidth:156,dataIndex:'modified',xtype:'datecolumn'},{header:'Restore Point',dataIndex:'restorePoint',minWidth:156,flex:1,xtype:'datecolumn',renderer:'restorePointRenderer'},{header:'Machine',flex:1,minWidth:150,dataIndex:'vmName',renderer:'vmRenderer'},
{header:'Path',flex:1,minWidth:150,dataIndex:'path',xtype:'descriptioncolumn'},{header:'Restore Status',flex:1,minWidth:128,dataIndex:'lastRestoreState',renderer:'restoreStatusRenderer'}]},selModel:{selType:'checkboxmodel',headerWidth:30}},buttons:[{text:'Close',ui:'primary',handler:function(btn){btn.up('mainapp-restorelistwindow').close()}}]},0,['mainapp-restorelistwindow'],'component box container panel window mainapp-restorelistwindow'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,
'mainapp-restorelistwindow':!0},['files.widget.restorelistwindow','widget.mainapp-restorelistwindow'],0,[MainApp.view.main.files.widget.restore,'RestoreListWindow'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.restore.RestoreListToolbar',Ext.toolbar.Toolbar,{controller:'main.files.widget.restore.listtoolbar',viewModel:{type:'main.files.widget.restore.listtoolbar'},height:48,ui:'notification',items:[{xtype:'button',ui:'text',iconCls:'restorelist',bind:{text:'Pending restore ({restoreItemsCount} items)'},handler:'openList'},{xtype:'button',ui:'text',iconCls:'remove',text:'Clear',handler:'clearList'}]},0,0,['component','box','container','toolbar'],{component:!0,
box:!0,container:!0,toolbar:!0},0,0,[MainApp.view.main.files.widget.restore,'RestoreListToolbar'],0);
Ext.cmd.derive('MainApp.view.main.files.HistoryController',Ext.app.ViewController,{init:function(){},onViewActivated:function(){this.lookupReference('sessionsGrid').getStore().reload()},navigateToIndex:function(){this.redirectTo('!files')},refreshHistory:function(){this.lookupReference('sessionsGrid').getStore().reload()},onBeforeReload:function(store,operation){var sm=this.lookupReference('sessionsGrid').getSelectionModel(),i,reselect=null;if(sm&&sm.hasSelection()){var selection=sm.getSelection();
for(i=0;i<selection.length;i++)selection[i]=store.indexOf(selection[i]);reselect=function(){for(i=0;i<selection.length;i++)sm.select(selection[i])}}else reselect=function(){sm&&sm.select(0)};operation.setCallback(reselect)}},0,0,0,0,['controller.main.files.history'],0,[MainApp.view.main.files,'HistoryController'],0);
Ext.cmd.derive('MainApp.view.main.files.HistoryModel',Ext.app.ViewModel,{stores:{filesHistoryStore:{type:'app-store',rpcMethod:'Api.restore.getSessionsAutoUpdate',fields:['uid','dateStart','status','dateEnd','total','progress','type','target_path','initiator',{name:'dateStartTs',type:'date',dateFormat:'c'},{name:'dateEndTs',type:'date',dateFormat:'c'}],idProperty:'uid',autoLoad:!0,sortOnLoad:!0,remoteSort:!0,sorters:{property:'dateStartTs',direction:'DESC'},listeners:{beforeload:'onBeforeReload'}}},
data:{}},0,0,0,0,['viewmodel.main.files.history'],0,[MainApp.view.main.files,'HistoryModel'],0);
Ext.cmd.derive('MainApp.view.main.files.history.LogController',Ext.app.ViewController,{initViewModel:function(vm){this.sessionBinding=vm.bind('{sessionId}',this._onSessionIdBindingChange,this)},onRefresh:function(){this.getView().getStore().reload()},onReset:function(){this.getView().getStore().removeAll()},destroy:function(){Ext.destroy(this.sessionBinding);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},privates:{_onSessionIdBindingChange:function(sessionId){if(null===sessionId)this.onReset();
else this.onRefresh()}}},0,0,0,0,['controller.main.files.history.log'],0,[MainApp.view.main.files.history,'LogController'],0);
Ext.cmd.derive('MainApp.view.main.files.history.Log',Ext.DataView,{plugins:['deferredmask'],controller:'main.files.history.log',viewModel:{stores:{flrSessionLogStore:{type:'app-store',rpcMethod:'Api.files.restore.getSessionLog',model:'Veeam.model.report.LogRecord',extraParams:{sessionId:'{sessionId}'},autoLoad:!0}}},config:{sessionId:null},publishes:['sessionId'],preserveScrollOnRefresh:!0,preserveScrollOnReload:!0,updateSessionId:function(value){this.getViewModel().set('sessionId',value);return value},
layout:'fit',border:1,scrollable:{y:!0,x:!1},bind:{store:'{flrSessionLogStore}'},tpl:'\x3cdiv class\x3d"session-details-footer"\x3e;\x3ctpl for\x3d"."\x3e;\x3cdiv class\x3d"log-record" data-tip\x3d"event time: {eventTime:date}"\x3e;\x3cdiv class\x3d"icon {icon}"\x3e{message}\x3c/div\x3e;\x3c/div\x3e;\x3c/tpl\x3e;\x3c/div\x3e'.split(';'),itemSelector:'.log-record',emptyText:'\x3cdiv class\x3d"session-details-footer"\x3eSelect session to view details\x3c/div\x3e'},0,0,['component','box','dataview'],
{component:!0,box:!0,dataview:!0},0,[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.files.history,'Log'],0);
Ext.cmd.derive('MainApp.view.main.files.history.FileLogController',Ext.app.ViewController,{initViewModel:function(vm){this.sessionBinding=vm.bind('{sessionId}',this._onSessionIdBindingChange,this)},onRefresh:function(){this.getView().getStore().reload()},onReset:function(){this.getView().getStore().removeAll()},sizeRenderer:function(value){return Common.util.Format.fileSize(value)},statusRenderer:function(value){value=!!value;return'\x3cspan class\x3d"icon '+(value?'success':'error')+'"\x3e'+(value?
'Yes':'No')+'\x3c/span\x3e'},destroy:function(){Ext.destroy(this.sessionBinding);Ext.app.ViewController.prototype.destroy.apply(this,arguments)},privates:{_onSessionIdBindingChange:function(sessionId){if(null===sessionId)this.onReset();else this.onRefresh()}}},0,0,0,0,['controller.main.files.history.filelog'],0,[MainApp.view.main.files.history,'FileLogController'],0);
Ext.cmd.derive('MainApp.view.main.files.history.FileLog',Veeam.DeferredMaskGrid,{controller:'main.files.history.filelog',viewModel:{stores:{flrSessionFileLogStore:{type:'app-store',rpcMethod:'Api.files.restore.getSessionFileLog',fields:['sourceItemName','sourceItemPath','targetItemName','targetItemPath','itemSize','host',{name:'pointDatetime',type:'date',dateFormat:'c'},'isRestored'],extraParams:{sessionId:'{sessionId}'},autoLoad:!0}}},config:{sessionId:null},viewConfig:{trackOver:!1,disableSelection:!0},
publishes:['sessionId'],updateSessionId:function(value){this.getViewModel().set('sessionId',value);return value},bind:{store:'{flrSessionFileLogStore}'},layout:'fit',columns:{defaults:{menuDisabled:!0},items:[{flex:1,header:'Source Item',dataIndex:'sourceItemName'},{flex:2,header:'Source Path',dataIndex:'sourceItemPath'},{flex:1,header:'Target Item',dataIndex:'targetItemName'},{flex:2,header:'Target Path',dataIndex:'targetItemPath'},{flex:1,header:'Restore Point',dataIndex:'pointDatetime',xtype:'datecolumn'},
{flex:1,header:'Machine',dataIndex:'host'},{flex:1,header:'Size',dataIndex:'itemSize',renderer:'sizeRenderer',align:'right'},{sortable:!1,header:'Is Restored',dataIndex:'isRestored',renderer:'statusRenderer',width:106}]},listeners:{refresh:'onRefresh'}},0,0,'component box container panel tablepanel gridpanel grid deferredmaskgrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0},0,[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,
Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.files.history,'FileLog'],0);
Ext.cmd.derive('MainApp.view.main.files.history.SessionsGridController',MainApp.base.controller.BaseController,{progressRenderer:function(value){return Ext.String.format('{0}%',parseInt(value,10))},statusRenderer:function(value,meta){meta=value;value=Ext.util.Format.lowercase(value);'inprogress'===value?(meta='Restore in progress',value=' progress'):'waitingforcredentials'===value?(meta='Waiting for credentials',value=' progress'):value=' '+value;return'\x3cspan class\x3d"icon'+value+'"\x3e'+meta+
'\x3c/span\x3e'}},0,0,0,0,['controller.main.files.history.sessions'],0,[MainApp.view.main.files.history,'SessionsGridController'],0);
Ext.cmd.derive('MainApp.view.main.files.history.SessionsGrid',Veeam.base.view.BaseGrid,{viewModel:{},controller:'main.files.history.sessions',hideRefreshBtn:!0,hideExportBtn:!0,viewConfig:{preserveScrollOnRefresh:!0,preserveScrollOnReload:!0},columns:{defaults:{sortable:!0,menuDisabled:!0,flex:1},items:[{header:'Initiated by',dataIndex:'initiator'},{header:'Started at',dataIndex:'dateStartTs',xtype:'datecolumn'},{header:'Status',dataIndex:'status',renderer:'statusRenderer'},{header:'Ended at',dataIndex:'dateEndTs',
xtype:'nullabledatecolumn'},{header:'Total Objects',dataIndex:'total',align:'right'},{header:'Progress',dataIndex:'progress',renderer:'progressRenderer',align:'right'},{header:'Target',dataIndex:'type',sortable:!1}]}},0,['main-files-history-sessions','main.files.history.sessions'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid main.files.history.sessions main-files-history-sessions'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,
grid:!0,deferredmaskgrid:!0,basegrid:!0,'main.files.history.sessions':!0,'main-files-history-sessions':!0},['widget.main-files-history-sessions','widget.main.files.history.sessions'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.files.history,'SessionsGrid'],0);
Ext.cmd.derive('MainApp.view.main.files.History',Ext.Panel,{plugins:['deferredmask'],controller:'main.files.history',viewModel:{type:'main.files.history'},cls:'history-panel',padding:'8 16 16 16',layout:{type:'vbox',align:'stretch'},dockedItems:[{dock:'top',xtype:'toolbar',cls:'no-lr-padding-toolbar toolbar-history',items:[{xtype:'button',scale:'large',ui:'text',iconCls:'exit__large',handler:'navigateToIndex'},{xtype:'tbseparator',cls:'big-separator'},{xtype:'tbtext',html:'\x3ch1\x3eFile Restore History\x3c/h1\x3e'},
'-\x3e',{text:'Refresh',iconCls:'refresh',handler:'refreshHistory'}]}],items:[{flex:2,xtype:'main.files.history.sessions',reference:'sessionsGrid',bind:{store:'{filesHistoryStore}',selection:'{selectedSession}'}},{xtype:'tabpanel',minHeight:300,cls:'details-footer',flex:1,items:[{xclass:'MainApp.view.main.files.history.Log',title:'Log',reference:'log',bind:{sessionId:'{selectedSession.uid}'}},{xclass:'MainApp.view.main.files.history.FileLog',title:'Details',reference:'fileLog',bind:{sessionId:'{selectedSession.uid}'}}]}],
listeners:{activate:'onViewActivated'},selectSession:function(sessionId){var grid=this.lookupReference('sessionsGrid');(sessionId=grid.getStore().findRecord('uid',sessionId))&&grid.setSelection(sessionId)}},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},0,[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.files,'History'],0);
Ext.cmd.derive('Veeam.service.FileRestoreService',Ext.Base,{singleton:!0,validateCredentials:function(request){return Common.Request.thenable(RPC.Api['files.restore.startValidateCredentials'],request)},validateCredentialsForFlr:function(request){return Common.Request.thenable(RPC.Api['files.restore.startValidateCredentialsForFlr'],request)},validateCredentialsForOib:function(request){return Common.Request.thenable(RPC.Api['files.restore.startValidateCredentialsForOib'],request)},getValidationStatus:function(taskId){return Common.Request.thenable(RPC.Api['restore.getValidateStatus'],
taskId)},cancelValidateCredentials:function(taskId){return Common.Request.thenable(RPC.Api['restore.cancelValidateCredentials'],taskId)},startRestore:function(request,taskId){return Common.Request.thenable(RPC.Api['restore.startRestore'],taskId)},setCredentials:function(taskId,credentialsResponse){return Common.Request.thenable(RPC.Api['restore.setCredentials'],taskId,credentialsResponse)},confirmRestore:function(isDownload,title){var deferred=new Ext.Deferred;Common.ui.Msg.confirm(!1===isDownload?
'Restore':'Download',!1===isDownload?'Restore this file(s) to original location?':'Download this file(s)?',function(btn){return'yes'===btn?deferred.resolve():deferred.reject()});return deferred}},0,0,0,0,0,0,[Veeam.service,'FileRestoreService'],0);
Ext.cmd.derive('Veeam.util.RestoreStartMediator',Ext.Base,{config:{validateCredsFunction:null,validateCredsParam:null,actionAfterValidationFunction:null,actionAfterValidationParam:null},constructor:function(config){this.mixins.observable.constructor.call(this,config);this.initConfig(config)},start:function(){!0!==this._isValidating&&this._onStartValidate()},privates:{_checkValidateTimeout:2E3,_isValidating:!1,_onStartValidate:function(){this._showValidateWindow();this.validateCredsFunction(this.validateCredsParam).then(this._onValidateStarted.bind(this)).otherwise(this._onValidateError.bind(this))},
_onValidateStarted:function(response){this._taskId=response.taskId;this._onValidateResume()},_onCheckValidate:function(){Veeam.service.FileRestoreService.getValidationStatus(this._taskId).then(this._onValidateChecked.bind(this)).otherwise(this._onValidateError.bind(this))},_onValidateChecked:function(response){response.isError?this._onValidateError(response):response.isComplete?this._onValidateAccepted(response):response.isCredentialsRequested?this._onCredentialsRequested(response):this._onValidateResume();
return!0},_onValidateResume:function(){setTimeout(this._onCheckValidate.bind(this),this._checkValidateTimeout)},_onValidateError:function(response){this._hideValidateWindow();this._taskId&&Veeam.service.FileRestoreService.cancelValidateCredentials(this._taskId);this.fireEvent('failed',response.message)},_onValidateAccepted:function(){this.actionAfterValidationFunction(this.actionAfterValidationParam,this._taskId).then(this._onActionStarted.bind(this)).otherwise(this._onActionStartError.bind(this))},
_onActionStarted:function(response){this._hideValidateWindow();this.fireEvent('started',this.validateCredsParam,response.sessionId)},_onActionStartError:function(response){this._hideValidateWindow();Veeam.service.FileRestoreService.cancelValidateCredentials(this._taskId);this.fireEvent('failed',response.message)},_onCredentialsRequested:function(response$jscomp$0){var me=this;me._hideValidateWindow();var guestCredentialsRequests=response$jscomp$0.credentialsRequest.guestCredentialsRequests;var guestCredentialsResponses=
guestCredentialsRequests.map(function(request){return{validationId:request.validationId,credentials:null}});response$jscomp$0=response$jscomp$0.credentialsRequest.shareCredentialsRequests;var shareCredentialsResponses=response$jscomp$0.map(function(request){return{validationId:request.validationId,credentials:null}});var activeWindowCount=guestCredentialsRequests.length+response$jscomp$0.length;for(var onCredentialsCancelled=me._onCredentialsCancelled.bind(me),onSetCredentials=me._onSetCredentials.bind(me),
noCredentialsPredicate=function(response){return!response.credentials},onCredentialsWindowClose=function(){activeWindowCount--;0<activeWindowCount||(guestCredentialsResponses.some(noCredentialsPredicate)||shareCredentialsResponses.some(noCredentialsPredicate)?onCredentialsCancelled():onSetCredentials({guestCredentialsResponces:guestCredentialsResponses,shareCredentialsResponces:shareCredentialsResponses}))},createGuestCredentialsWindow=function(credentialsRequest,credentialsResponse){credentialsRequest.guestKind===
Veeam.model.GuestOsKind.Linux&&!0===credentialsRequest.supportExtendedCredentials?(credentialsRequest=new Common.LinuxCredentials({title:Ext.util.Format.ellipsis(credentialsRequest.vmName+': provide guest OS credentials',100),errorMessage:credentialsRequest.errorMessageOrNull,hideDescriptionField:!0}),credentialsRequest.on('select',function(dialog,data,isPassword){credentialsResponse.credentials={username:data.username,password:data.password?Common.util.Format.btoa(data.password):null};credentialsResponse.sshOptions=
{authenticationType:isPassword?'password':'publicKey',privateKey:data.privateKey?data.privateKey:null,passphrase:data.passphrase?Common.util.Format.btoa(data.passphrase):null,sshPort:data.port,elevateRoot:data.elevateToRoot,addToSudoers:data.autoSudo,rootPassword:data.rootPassword?Common.util.Format.btoa(data.rootPassword):null,failoverToSu:data.failoverToSu};dialog.close()})):(credentialsRequest=new Common.WindowsCredentials({title:Ext.util.Format.ellipsis(credentialsRequest.vmName+': provide guest OS credentials',
100),errorMessage:credentialsRequest.errorMessageOrNull,hideDescriptionField:!0}),credentialsRequest.on('select',function(dialog,data){0<data.username.length&&(data.password=Common.util.Format.btoa(data.password),credentialsResponse.credentials=data);dialog.close()}));credentialsRequest.on('close',onCredentialsWindowClose.bind(me),me);credentialsRequest.show()},createShareCredentialsWindow=function(credentialsRequest,credentialsResponse){credentialsRequest=new Common.WindowsCredentials({title:Ext.util.Format.ellipsis(credentialsRequest.bsName+
': provide share credentials',45),errorMessage:credentialsRequest.errorMessageOrNull});credentialsRequest.on('select',function(dialog,data){0<data.username.length&&(data.password=Common.util.Format.btoa(data.password),credentialsResponse.credentials=data);dialog.close()});credentialsRequest.on('close',onCredentialsWindowClose.bind(me),me);credentialsRequest.show()},i=0;i<guestCredentialsRequests.length;++i)createGuestCredentialsWindow(guestCredentialsRequests[i],guestCredentialsResponses[i]);for(i=
0;i<response$jscomp$0.length;++i)createShareCredentialsWindow(response$jscomp$0[i],shareCredentialsResponses[i])},_onSetCredentials:function(credentialsResponse){this._showValidateWindow();Veeam.service.FileRestoreService.setCredentials(this._taskId,credentialsResponse).then(this._onValidateResume.bind(this)).otherwise(this._onValidateError.bind(this))},_onCredentialsCancelled:function(){Veeam.service.FileRestoreService.cancelValidateCredentials(this._taskId);this.fireEvent('cancelled')},_showValidateWindow:function(){!0!==
this._isValidating&&(this._isValidating=!0,this.fireEvent('showvalidate'))},_hideValidateWindow:function(){!1!==this._isValidating&&(this._isValidating=!1,this.fireEvent('hidevalidate'))}}},1,0,0,0,0,[[Ext.util.Observable.prototype.mixinId||Ext.util.Observable.$className,Ext.util.Observable]],[Veeam.util,'RestoreStartMediator'],0);
Ext.cmd.derive('Veeam.util.RestoreSessionUpdater',Ext.Base,{statics:{STATE:{RESTORING:0,SUCCESS:1,ERROR:2,WARNING:3,PROCESSING:4}},config:{sessionId:null,files:null,manager:null},applyFiles:function(files){for(var i=0,l=files.length;i<l;i++){var key=files[i].getHash();this._states[key]={state:this.self.STATE.RESTORING};this._keys.push(key)}return files},constructor:function(config){this.initConfig(config);this.mixins.observable.constructor.call(this,config);this.init()},init:function(){this.keys=
[];this.fireEvent('init')},handleUpdate:function(response){for(var me=this,items=response.items,i=0,l=items.length,item,states=me.self.STATE,state=states.PROCESSING,link=null;i<l;i++)item=items[i],key=me._keys[i],response.complete&&(item.isRestored?(state=states.SUCCESS,response.link&&(link=response.link)):state=states.ERROR),me._states[key]={state:state,link:link};1==response.complete&&0===items.length&&me._states.eachKey(function(k){me._states[k]={state:states.ERROR}},me);Ext.GlobalEvents.fireEvent('files:updatestate',
me,me._states);!0===response.complete&&me.destroy()},destroy:function(){this.getManager().removeUpdater(this.getSessionId());Ext.destroy(this._states,this._keys);this.fireEvent('destroy')},privates:{_task:null,_keys:[],_states:{}}},1,0,0,0,0,[[Ext.util.Observable.prototype.mixinId||Ext.util.Observable.$className,Ext.util.Observable]],[Veeam.util,'RestoreSessionUpdater'],0);
Ext.cmd.derive('Veeam.manager.RestoreSessionUpdaterManager',Ext.Base,{singleton:!0,constructor:function(config){this._sessions=new Ext.util.HashMap;this.mixins.observable.constructor.call(this,config);this.initConfig(config)},createUpdater:function(sessionId,files){var updater;if(this._sessions.containsKey(sessionId)&&(updater=this._sessions.get(sessionId)))return updater;updater=new Veeam.util.RestoreSessionUpdater({sessionId:sessionId,files:files,manager:this});this._sessions.add(sessionId,updater);
this._count++;1===this._count&&Ext.GlobalEvents.fireEvent('restoreupdater:activate',this);return updater},findUpdater:function(sessionId){return(sessionId=this._sessions.get(sessionId))?sessionId:null},removeUpdater:function(sessionId){this._sessions.removeByKey(sessionId)&&(this._count--,0===this._count&&Ext.GlobalEvents.fireEvent('restoreupdater:deactivate',this))},haveRunningSessions:function(){return 0<this._sessions.getCount()},privates:{_count:0,_sessions:null}},1,0,0,0,0,[[Ext.mixin.Observable.prototype.mixinId||
Ext.mixin.Observable.$className,Ext.mixin.Observable]],[Veeam.manager,'RestoreSessionUpdaterManager'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.BackupInfoWindowController',Veeam.base.view.BaseWindowController,{boxReady:function(){var view=this.getView(),vm=view.getVm(),restorePoint=view.getRestorePoint();view.setLoading();Veeam.service.SearchService.getRestorePointInfo(vm,restorePoint).then(this.onDataLoaded.bind(this)).otherwise(Common.ui.Msg.error).always(view.setLoading.bind(view,!1))},onDataLoaded:function(restoreInfo){var view=this.getView(),vm=this.getViewModel();vm.set('isAbsent',restoreInfo.isAbsent);
vm.set('errorMessage',restoreInfo.errorMessage);restoreInfo=this.createGrid(restoreInfo);Ext.suspendLayouts();view.add(restoreInfo);Ext.resumeLayouts();setTimeout(function(){view.center()},50)},onPrint:function(){var grid=this.lookupReference('activeGrid');grid&&Common.ux.grid.Printer.print(grid)},createGrid:function(gridConfig){var vm=this.getViewModel();if(!0===gridConfig.isRegistered){var grid=this.gridFactory('online');vm.set('onlineBackupDataSource',gridConfig.registeredServers)}else 0<gridConfig.tapes.length?
(grid=this.gridFactory('tapes'),vm.set('tapeBackupDataSource',gridConfig.tapes)):(grid=this.gridFactory('offline'),vm.set('offlineBackupDataSource',gridConfig.requiredFiles),this.getView().setWidth(750));return grid},onStoreDataLoaded:function(store){var groups=store.getGroups();groups&&1===groups.getCount()&&store.clearGrouping()},gridFactory:function(type){switch(type){case 'online':return Ext.widget({xtype:'backupinfo.onlinegrid',reference:'activeGrid',flex:1,bind:{store:'{onlineBackupStore}'}});
case 'offline':return Ext.widget({xtype:'backupinfo.offlinegrid',reference:'activeGrid',flex:1,bind:{store:'{offlineBackupStore}'}});case 'tapes':return Ext.widget({xtype:'backupinfo.tapegrid',reference:'activeGrid',flex:1,bind:{store:'{tapeBackupStore}'}});default:throw Error('Unknown grid type: '+type);}}},0,0,0,0,['controller.main.files.widget.backupinfowindow'],0,[MainApp.view.main.files.widget,'BackupInfoWindowController'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.BackupInfoWindowModel',Ext.app.ViewModel,{stores:{offlineBackupStore:{autoDestroy:!0,proxy:{type:'memory',reader:{type:'json'}},groupField:'setIndex',fields:['origin','server','fileName',{name:'backupDate',type:'date',dateFormat:'c'},{name:'setIndex',type:'int',defaultValue:1}],sorters:{property:'fileName',direction:'ASC'},listeners:{datachanged:'onStoreDataLoaded'},data:'{offlineBackupData}'},onlineBackupStore:{autoDestroy:!0,proxy:{type:'memory',reader:{type:'json'}},
fields:['backupServerName','backupName'],data:'{onlineBackupData}'},tapeBackupStore:{autoDestroy:!0,proxy:{type:'memory',reader:{type:'json'}},groupField:'setIndex',fields:['fileSet','backupFileName','mediaInfo',{name:'setIndex',type:'int',defaultValue:1}],data:'{tapeBackupData}',listeners:{datachanged:'onStoreDataLoaded'}}},formulas:{onlineBackupData:{bind:'{onlineBackupDataSource}',get:function(data){return data||[]}},offlineBackupData:{bind:'{offlineBackupDataSource}',get:function(data){return data||
[]}},tapeBackupData:{bind:'{tapeBackupDataSource}',get:function(data){return data||[]}}},data:{onlineBackupDataSource:null,offlineBackupDataSource:null,tapeBackupDataSource:null,isAbsent:!1,errorMessage:null}},0,0,0,0,['viewmodel.main.files.widget.backupinfowindow'],0,[MainApp.view.main.files.widget,'BackupInfoWindowModel'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.backupinfo.OnlineBackupGrid',Ext.grid.GridPanel,{border:!1,columns:{defaults:{menuDisabled:!0,sortable:!1},items:[{header:'Backup Server',dataIndex:'backupServerName',flex:1},{header:'Backup Name',flex:2,dataIndex:'backupName',renderer:Ext.util.Format.htmlEncode}]},tbar:{xtype:'tbtext',text:'File can be restored from the following backups:'}},0,['backupinfo.onlinegrid'],'component box container panel tablepanel gridpanel grid backupinfo.onlinegrid'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,'backupinfo.onlinegrid':!0},['widget.backupinfo.onlinegrid'],0,[MainApp.view.main.files.widget.backupinfo,'OnlineBackupGrid'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.backupinfo.OfflineBackupGrid',Ext.grid.GridPanel,{border:!1,columns:{defaults:{menuDisabled:!0,sortable:!1},items:[{header:'Server',dataIndex:'server',flex:1},{header:'File Name',dataIndex:'fileName',flex:1.4},{header:'Backup Date',dataIndex:'backupDate',width:156,xtype:'datecolumn'}]},features:[{ftype:'grouping',startCollapsed:!1,groupHeaderTpl:'Files set {name}'}],tbar:{xtype:'tbtext',text:'The following files are required to import backup:'}},0,['backupinfo.offlinegrid'],
'component box container panel tablepanel gridpanel grid backupinfo.offlinegrid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,'backupinfo.offlinegrid':!0},['widget.backupinfo.offlinegrid'],0,[MainApp.view.main.files.widget.backupinfo,'OfflineBackupGrid'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.backupinfo.TapeBackupGrid',Ext.grid.GridPanel,{border:!1,columns:{defaults:{menuDisabled:!0,sortable:!1},items:[{header:'File',dataIndex:'backupFileName',flex:1},{header:'Tapes',dataIndex:'mediaInfo',flex:2}]},features:[{ftype:'grouping',startCollapsed:!1,groupHeaderTpl:'Files set {name}'}],tbar:{xtype:'tbtext',text:'File can be restored from the following media:'}},0,['backupinfo.tapegrid'],'component box container panel tablepanel gridpanel grid backupinfo.tapegrid'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,'backupinfo.tapegrid':!0},['widget.backupinfo.tapegrid'],0,[MainApp.view.main.files.widget.backupinfo,'TapeBackupGrid'],0);
Ext.cmd.derive('MainApp.view.main.files.widget.BackupInfoWindow',Veeam.base.view.BaseWindow,{controller:'main.files.widget.backupinfowindow',viewModel:{type:'main.files.widget.backupinfowindow'},config:{vm:null,restorePoint:null},applyVm:function(vm){this.getViewModel().set('vm',vm);return vm},applyRestorePoint:function(restorePoint){this.getViewModel().set('restorePoint',restorePoint);return restorePoint},width:500,maxHeight:600,minHeight:240,resizable:!1,title:'Restore Information',layout:{type:'vbox',
align:'stretch'},items:[{xtype:'widget.alert',hidden:!0,bind:{hidden:'{!isAbsent}',html:'{errorMessage}'}}],buttons:[{text:'Print',ui:'alternate',handler:'onPrint',bind:{disabled:'{!activeGrid}'}},{text:'OK',ui:'primary',handler:'closeHandler'}]},0,['main.files.widget.backupinfowindow'],'component box container panel window main.files.widget.backupinfowindow'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.files.widget.backupinfowindow':!0},['widget.main.files.widget.backupinfowindow'],
0,[MainApp.view.main.files.widget,'BackupInfoWindow'],0);
Ext.cmd.derive('MainApp.view.main.files.Files',Ext.Panel,{controller:'main.files',viewModel:{type:'main.files'},cls:'main-files',bodyCls:'main-files-body',layout:{type:'card',deferredRender:!0},items:[{xtype:'panel',layout:'border',reference:'wrapper-panel',dockedItems:[{dock:'top',xclass:'MainApp.view.main.files.widget.restore.RestoreListToolbar',bind:{hidden:'{!restoreItemsCount}'},hidden:!0,listeners:{show:'onRestoreListToolbarShow',hide:'onRestoreListToolbarHide'}}],bodyPadding:'8 16 16 16',items:[{xclass:'MainApp.view.main.files.Header',
region:'north',cls:'files-header',reference:'header'},{region:'center',reference:'searchviewport',itemId:'viewport',xclass:'main.files.searchviewport',bind:{hidden:'{isMountMode}'}},{region:'west',bind:{hidden:'{!selectedVm}'},hidden:!0,width:360,reference:'browsepanel',itemId:'browsepanel',xclass:'MainApp.view.main.files.BrowsePanel'}]},{xclass:'MainApp.view.main.files.History'}],initComponent:function(){Ext.apply(this,{padding:0});Ext.panel.Panel.prototype.initComponent.apply(this,arguments)}},
0,['main-files','main.files'],'component box container panel main.files main-files'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.files':!0,'main-files':!0},['widget.main-files','widget.main.files'],0,[MainApp.view.main.files,'Files'],0);
Ext.cmd.derive('MainApp.view.main.items.ItemsController',MainApp.base.controller.BaseController,{defaultRoute:'!items/mailbox',routeSection:'items',onTabChange:function(panel,tab){this._redirect(tab.routeId)},onRouteChange:function(action){var view=this.getView();action=action||this.defaultRoute;MainApp.base.controller.BaseController.prototype.onRouteChange.apply(this,arguments);var tab=view.down('[routeId\x3d'+action+']');tab?view.setActiveTab(tab):view.setActiveTab(0);'history'!=action.toString().toLowerCase()&&
(this.lastRouteId=action)},onActivate:function(panel){var view=this.getView();panel.rendered&&!this.isOwnRoute()&&(panel=view.getActiveTab()||view.setActiveTab(0))&&('history'===panel.routeId.toString().toLowerCase()?this.redirectTo(this.defaultRoute):this._redirect(panel.routeId))},onHistoryActivate:function(){this.getView().getTabBar().hide()},onHistoryDeactivate:function(){this.getView().getTabBar().show()},navigateToBack:function(){this.lastRouteId?this._redirect(this.lastRouteId):this.redirectTo(this.defaultRoute)},
privates:{_redirect:function(routeId){this.redirectTo('!items/'+routeId)}}},0,0,0,0,['controller.main.items'],0,[MainApp.view.main.items,'ItemsController'],0);Ext.cmd.derive('MainApp.view.main.items.ItemsModel',Ext.app.ViewModel,{},0,0,0,0,['viewmodel.main.items'],0,[MainApp.view.main.items,'ItemsModel'],0);
Ext.cmd.derive('Veeam.helper.DateHelper',Ext.Base,{statics:{getFirstDateOfWeek:function(date,firstDayOnWeek){var day=date.getDay();firstDayOnWeek=date.getDate()-day+(0==day?-7:0)+firstDayOnWeek;return Ext.Date.clearTime(new Date(date.setDate(firstDayOnWeek)),!0)}}},0,0,0,0,0,0,[Veeam.helper,'DateHelper'],0);
Ext.cmd.derive('MainApp.view.main.items.mailbox.MailboxController',MainApp.base.controller.BaseController,{initViewModel:function(vm){var firstRecord=vm.get('dateFilterStore').getAt(0);vm.set('selectedDateFilter',firstRecord)},afterRender:function(){this.lookup('notificationtoolbar').setInfo('Available accounts will be shown after specifying a username')},loadData:function(){var vm=this.getViewModel();this.lookupReference('accountsGrid').getStore().load(function(records){vm.set('dataIsLoaded',Ext.isArray(records)&&
records.length)})},specialKeyHandler:function(field,e){e.getKey()==e.ENTER&&this.loadData()},onBeforeAccountsLoad:function(store){var vm=this.getViewModel();store=store.getProxy();var extraParams={query:vm.get('username')};store.setExtraParams(extraParams);vm.set('currentRestorePoint',null);return!0},onAccountSelect:function(selModel,record){selModel=this.lookup('datepicker').getStore();var proxy=selModel.getProxy();record={exchangeServers:record.get('exchangeServers'),exchangeDbPath:record.get('exchangeDbPath')};
proxy.abort();proxy.setExtraParams(record);selModel.load()},onRestorePointsStoreBeforeLoad:function(store,operation){this.getViewModel().set('currentRestorePoint',null);store.lastOperation&&store.lastOperation.isRunning()&&store.getProxy().abort(store.lastOperation);store.lastOperation=operation},restoreHandler:function(){var view=this.getView(),oibId=this.getViewModel().get('currentRestorePoint').get('oibId');view.setLoading('Validating...');Veeam.service.rpc.Items.validateOib(oibId).then(this.restoreHandlers.validateOib.resolve.bind(this),
this.restoreHandlers.validateOib.reject.bind(this)).then(this.restoreHandlers.discoverWarning.bind(this)).then(this.restoreHandlers.discoverExchangeServer.resolve.bind(this),this.restoreHandlers.discoverExchangeServer.reject.bind(this)).then(this.restoreHandlers.restorePromt.bind(this)).then(this.restoreHandlers.startVexRestore.resolve.bind(this),this.restoreHandlers.startVexRestore.reject.bind(this)).otherwise(this.restoreHandlers.otherwise.bind(this)).always(function(){view.setLoading(!1)})},restoreHandlers:{validateOib:{resolve:function(response){return Ext.Deferred.resolved(!0)},
reject:function(response){if(response&&response.prompt)return this._showValidateOibWarning(response.message);if(response instanceof Error)throw response;Ext.raise(response.message)}},discoverWarning:function(){var view=this.getView(),vm=this.getViewModel(),selectedAccount=vm.get('selectedAccount');vm={oibId:vm.get('currentRestorePoint').get('oibId'),primaryEmail:selectedAccount.get('primaryEmail'),detectedCas:selectedAccount.get('exchangeCAServer')};view.setLoading('Discovering Exchange CAS...');
return Veeam.service.rpc.Items.discoverExchangeServer(vm)},discoverExchangeServer:{resolve:function(response){return response.message},reject:function(response){if(response&&response.prompt)return this._showDiscoverExchangeServerPromt(response);if(response instanceof Error)throw response;Ext.raise(response.message)}},restorePromt:function(text){var view=this.getView(),vm=this.getViewModel(),selectedAccount=vm.get('selectedAccount'),oibId=vm.get('currentRestorePoint').get('oibId');vm={mailboxInfo:Ext.clone(selectedAccount.data),
restoreTypes:this._getItemsType(),dateFilterEnabled:!!vm.get('dateFilterEnabled'),dateFilter:this._calculateDateRange(),oibId:oibId};view.setLoading('Starting restore job...');text&&(vm.mailboxInfo.exchangeCAServer=text);this.lastExchangeCAServer=text;return Veeam.service.rpc.Items.startVexRestore(vm)},startVexRestore:{resolve:function(response){this.redirectTo('!items/history')},reject:function(response){var me=this,certificatePromise=new Ext.Deferred;if(response instanceof Error)throw response;
if(!response.prompt)throw Error(response.message);Ext.create('MainApp.view.main.items.mailbox.CertErrorDialog',{certificateData:response.message,listeners:{close:function(win){win.okBtnClicked?certificatePromise.resolve():certificatePromise.reject(Error())}}}).show();certificatePromise.then(function(){var vm=me.getViewModel(),view=me.getView();vm={oibId:vm.get('currentRestorePoint').get('oibId'),certificateHash:response.message.certificateHash};me.lastExchangeCAServer&&(vm.casServerName=me.lastExchangeCAServer);
return Veeam.service.rpc.Items.ignoreCertificate(vm).then(function(){return me.restoreHandlers.restorePromt.call(me,me.lastExchangeCAServer).then(me.restoreHandlers.startVexRestore.resolve.bind(me),me.restoreHandlers.startVexRestore.reject.bind(me)).otherwise(me.restoreHandlers.otherwise.bind(me)).always(function(){view.setLoading(!1)})})})}},otherwise:function(response){response&&response.message&&Common.ui.Msg.error(response.message)}},privates:{_showValidateOibWarning:function(errorMessage){var deferred=
new Ext.Deferred;Common.ui.Msg.warning(errorMessage,function(btn){return'ok'==btn?deferred.resolve(errorMessage):deferred.reject()});return deferred.promise},_showDiscoverExchangeServerPromt:function(response){var deferred=new Ext.Deferred,promtWindow=this._getPromtWindow();promtWindow.setDeferred(deferred);promtWindow.setMessage(response.message);promtWindow.show();return deferred.promise},_getPromtWindow:function(){return Ext.create('MainApp.view.main.items.mailbox.PromtWindow')},_getItemsType:function(){var restoreItems=
this.getViewModel().get('restoreItems'),result=[];restoreItems.mail&&result.push('0');restoreItems.calendar&&result.push('1');restoreItems.contacts&&result.push('2');return result},_calculateDateRange:function(){var selectedDateFilter=this.getViewModel().get('selectedDateFilter'),dateNow=new Date,firstDayOfWeek=MainApp.app.getUser().get('firstDayOfWeek');switch(selectedDateFilter.id){default:selectedDateFilter=Ext.Date.add(Ext.Date.clearTime(dateNow,!0),Ext.Date.DAY,-1);break;case 1:selectedDateFilter=
Veeam.helper.DateHelper.getFirstDateOfWeek(dateNow,firstDayOfWeek);break;case 2:selectedDateFilter=Veeam.helper.DateHelper.getFirstDateOfWeek(dateNow,firstDayOfWeek);selectedDateFilter=Ext.Date.add(selectedDateFilter,Ext.Date.DAY,-7);break;case 3:selectedDateFilter=Ext.Date.clearTime(Ext.Date.getFirstDateOfMonth(dateNow),!0);break;case 4:selectedDateFilter=Ext.Date.add(Ext.Date.getFirstDateOfMonth(dateNow),Ext.Date.MONTH,-1);selectedDateFilter=Ext.Date.clearTime(selectedDateFilter,!0);break;case 5:selectedDateFilter=
Ext.Date.clearTime(new Date(dateNow.getFullYear(),0,1),!0)}return selectedDateFilter}}},0,0,0,0,['controller.main.items.mailbox'],0,[MainApp.view.main.items.mailbox,'MailboxController'],0);
Ext.cmd.derive('MainApp.view.main.items.mailbox.MailboxModel',Ext.app.ViewModel,{data:{username:null,selectedAccount:null,selectedDateFilter:null,dateFilterEnabled:!1,currentRestorePoint:null,dataIsLoaded:!1,restoreItems:{mail:!1,calendar:!1,contacts:!1}},formulas:{restoreDisabled:function(get){return get('currentRestorePoint')&&(get('restoreItems.mail')||get('restoreItems.calendar')||get('restoreItems.contacts'))?!1:!0}},stores:{accountsStore:{type:'app-store',rpcMethod:'Api.itemrestore.findMailboxInfo',
fields:[{name:'account'},{name:'mailboxId'},{name:'primaryEmail'},{name:'exchangeServers'},{name:'exchangeDbPath'},{name:'exchangeCAServer'}],proxy:{type:'app-direct',startParam:!1,pageParam:!1,limitParam:!1},listeners:{beforeload:'onBeforeAccountsLoad'}},dateFilterStore:{fields:['id','name'],data:[{id:0,name:'Yesterday'},{id:1,name:'This week'},{id:2,name:'Since last week'},{id:3,name:'This month'},{id:4,name:'Since last month'},{id:5,name:'This year'}]},restorePointsStore:{type:'app-store',rpcMethod:'Api.itemrestore.findRestorePoints',
fields:[{name:'backupDate',type:'date',dateFormat:'U'},{name:'oibId',type:'string'},{name:'id',type:'string'}],proxy:{type:'app-direct',startParam:!1,pageParam:!1,limitParam:!1,reader:{transform:function(data){Ext.each(data.items,function(item){item.id=item.oibId});return data},type:'json',totalProperty:'totalCount',rootProperty:'items'}},listeners:{beforeload:'onRestorePointsStoreBeforeLoad'}}}},0,0,0,0,['viewmodel.main.items.mailbox'],0,[MainApp.view.main.items.mailbox,'MailboxModel'],0);
Ext.cmd.derive('MainApp.view.main.items.mailbox.PromtWindow',Veeam.base.view.BaseWindow,{config:{deferred:null,message:null},referenceHolder:!0,width:600,resizable:!1,title:'Specify CAS Server',layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{items:[{xtype:'label',ctype:'msgLabel',text:''},{xtype:'label',text:'Specify CAS server address manually:',margin:'10 0'},{xtype:'textfield',allowOnlyWhitespace:!1}],buttons:[{text:'OK',handler:this.handlers.okBtn,ui:'primary',scope:this},
{text:'Cancel',handler:this.handlers.cancelBtn,ui:'secondary',scope:this}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},handlers:{okBtn:function(){var deferred=this.getDeferred(),textfield=this.down('textfield');textfield.isValid()&&(deferred.resolve(textfield.getValue()),this.ok=!0,this.close())},cancelBtn:function(){this.close()}},listeners:{show:function(window){var message=window.getMessage();window.ok=!1;message&&window._updateMessageText(message)},close:function(window){var deferred=
window.getDeferred();window.ok||deferred.reject(Error())}},updateMessage:function(message){this._updateMessageText(message)},privates:{_updateMessageText:function(message){message=Ext.String.format('Failed to connect to auto-detected Exchange CAS server: {0}',message);this.rendered&&this.down('label[ctype\x3dmsgLabel]').setText(message)}}},0,['main.promtWindow'],'component box container panel window main.promtWindow'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.promtWindow':!0},
['widget.main.promtWindow'],0,[MainApp.view.main.items.mailbox,'PromtWindow'],0);
Ext.cmd.derive('MainApp.view.main.items.mailbox.CertErrorDialog',Veeam.base.view.BaseWindow,{config:{certificateData:null},statics:{errors:{NOT_AVAILABLE:1,NAME_MISMATCH:2,INVALID_CHAIN:4}},title:'Certificate Validation Failed',width:400,resizable:!1,cls:'cert-error-dialog',referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{items:[{xtype:'component',html:'\x3cdiv\x3eCertificate validation failed with following errors:\x3c/div\x3e'+this._getErrorsHtml()+
'\x3cdiv\x3eIgnore and continue the restore?\x3c/div\x3e',padding:'0 0 8 40',cls:'x-message-box-question',minHeight:32},{xtype:'container',scrollable:!0,border:!0,reference:'textContainer',cls:'job-settings',hidden:!0,height:100,html:this._getCertInfo()}],buttons:[{text:'Show certificate info',textHidden:!0,ui:'text',handler:'showInfoHandler',scope:this},'-\x3e',{text:'OK',ui:'primary',handler:'okHandler',scope:this},{text:'Cancel',ui:'alternate',action:'cancel'}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,
arguments)},showInfoHandler:function(btn){var textContainer=this.lookupReference('textContainer'),btnText=btn.textHidden?'Hide certificate info':'Show certificate info';textContainer.setVisible(btn.textHidden);btn.textHidden=!btn.textHidden;btn.setText(btnText)},okHandler:function(btn){this.okBtnClicked=!0;this.close()},privates:{_getErrorsHtml:function(){var errorMask=this.getCertificateData().validationErrors,errors=[],errorTypes=this.self.errors;errorMask&errorTypes.NOT_AVAILABLE&&errors.push('Remote certificate is not available');
errorMask&errorTypes.NAME_MISMATCH&&errors.push('Remote certificate name mismatch');errorMask&errorTypes.INVALID_CHAIN&&errors.push('Remote certificate has certificate chain issues');return errors.length?'\x3cul\x3e\x3cli\x3e'+errors.join('\x3c/li\x3e\x3cli\x3e')+'\x3c/li\x3e\x3c/ul\x3e':''},_getCertInfo:function(){var certificateData=this.getCertificateData();return Ext.util.Format.nl2br(certificateData.certificateSummary)}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,
container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.items.mailbox,'CertErrorDialog'],0);
Ext.cmd.derive('MainApp.view.main.items.mailbox.Mailbox',Ext.Panel,{controller:'main.items.mailbox',viewModel:{type:'main.items.mailbox'},layout:{type:'hbox',align:'stretch'},defaults:{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,maxWidth:500},items:[{items:[{xtype:'textfield',labelAlign:'top',fieldLabel:'Username',emptyText:'Enter username',inputAttrTpl:'required',cls:'textfield-search',triggers:{search:{cls:'x-form-search-trigger',handler:'loadData'}},bind:'{username}',listeners:{specialkey:'specialKeyHandler'}},
{xtype:'label',text:'Accounts:',margin:'4 0'},{xtype:'deferredmaskgrid',reference:'accountsGrid',cls:'accounts-grid',scrollable:'y',hideHeaders:!0,columns:[{dataIndex:'account',flex:1}],bind:{store:'{accountsStore}',selection:'{selectedAccount}'},tbar:{xtype:'notificationtoolbar',reference:'notificationtoolbar',autoClose:!1,hideCloseButton:!0,bind:{hidden:'{dataIsLoaded}'}},flex:1,maxHeight:450,listeners:{select:'onAccountSelect'}}]},{cls:'right-side-form',items:[{xtype:'button',text:'History',iconCls:'history',
ui:'text',href:'#!items/history',maxWidth:68,hrefTarget:'_self',margin:'24 0 8 0'},{xtype:'form.field.datetimepicker',fieldLabel:'Restore point',labelAlign:'top',emptyText:'No restore point selected',reference:'datepicker',displayField:'backupDate',valueField:'oibId',autoSelect:!0,hideClearButton:!0,fieldDateFormat:'defaultFullDateFormat',timeFormat:'defaultLongTimeFormat',dateFormat:'defaultDateFormat',bind:{store:'{restorePointsStore}',selection:'{currentRestorePoint}',disabled:'{!selectedAccount}'}},
{xtype:'checkboxgroup',fieldLabel:'Items',labelAlign:'top',vertical:!0,columns:1,items:[{boxLabel:'Mail',bind:'{restoreItems.mail}'},{boxLabel:'Calendar',bind:'{restoreItems.calendar}'},{boxLabel:'Contacts',bind:'{restoreItems.contacts}'}],bind:{disabled:'{!currentRestorePoint}'}},{xtype:'container',margin:'20 0',maskOnDisable:!1,cls:'restore-checkbox-container',layout:{type:'hbox',align:'stretch'},bind:{disabled:'{!currentRestorePoint}'},items:[{xtype:'checkbox',boxLabel:'Only restore missing items created or received',
flex:1,bind:{value:'{dateFilterEnabled}'}},{xtype:'combo',width:150,maxHeight:32,queryMode:'local',displayField:'name',valueField:'id',editable:!1,forceSelection:!0,disabled:!0,bind:{store:'{dateFilterStore}',selection:'{selectedDateFilter}',disabled:'{!dateFilterEnabled}'}}]},{xtype:'container',margin:'24 0 0 0',cls:'restore-btn-section',maskOnDisable:!1,layout:{type:'hbox',align:'stretch'},items:[{xtype:'button',text:'Restore',ui:'primary',handler:'restoreHandler',bind:{disabled:'{restoreDisabled}'}},
{xtype:'label',text:'Click to restore all missing items back to the production mailbox',flex:1,margin:'0 20',bind:{hidden:'{restoreDisabled}'}}],bind:{disabled:'{!dataIsLoaded}'}}],margin:'0 0 0 30'}]},0,['main-items-mailbox','main.items.mailbox'],'component box container panel main.items.mailbox main-items-mailbox'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.items.mailbox':!0,'main-items-mailbox':!0},['widget.main-items-mailbox','widget.main.items.mailbox'],0,[MainApp.view.main.items.mailbox,
'Mailbox'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.SqlController',MainApp.base.controller.BaseController,{afterRender:function(){this.lookup('notificationtoolbar').setInfo('Available databases will be shown after you specify a SQL Server instance name')},initViewModel:function(vm){var restoreToOriginalRadioButton=this.lookupReference('sqlRestoreToOriginalRadioButton');MainApp.app.getUser().canInplaceRestoreSql()||(vm.set('locationType.locationType',1),restoreToOriginalRadioButton.setDisabled(!0))},loadData:function(){var vm=
this.getViewModel();this.lookupReference('dbsGrid').getStore().load(function(records){vm.set('dataIsLoaded',Ext.isArray(records)&&records.length)})},specialKeyHandler:function(field,e){e.getKey()==e.ENTER&&this.loadData()},onAccountSelect:function(selModel,record){selModel=this.lookupReference('datepicker').getStore()||this.getViewModel().get('restorePointsStore');var proxy=selModel.getProxy();record={instanceName:record.get('instanceName'),vmName:record.get('vmName'),familyUid:record.get('familyUid'),
databaseName:record.get('databaseName')};proxy.setExtraParams(record);selModel.load()},onRestorePointsStoreBeforeLoad:function(store,operation){this.getViewModel().set('currentRestorePoint',null);store.lastOperation&&store.lastOperation.isRunning()&&store.getProxy().abort(store.lastOperation);store.lastOperation=operation},onRestorePointChange:function(field,restorePoint){if(restorePoint){field=this.getViewModel();var record=field.get('selectedDb');this._loadRestoreInterval(record,restorePoint);field.set('hiddenSimpleCredsForm',
restorePoint.get('canExtendedRestoreToAlternativeLocation'))}},restoreHandler:function(){var vm=this.getViewModel(),restorePoint=vm.get('currentRestorePoint');vm=0===vm.get('locationType.locationType');restorePoint=restorePoint.get('canExtendedRestoreToAlternativeLocation');vm?this._startRestore(!0):restorePoint?this._startRestoreToAlternateExtended():this._startRestore(!1)},onBeforeDbsLoad:function(store){var vm=this.getViewModel();store=store.getProxy();var extraParams={query:vm.get('server')||
''};store.setExtraParams(extraParams);vm.set('currentRestorePoint',null);return!0},showServerList:function(){var pickListButton=this.lookup('pickListButton');(this.serverSelectionDialog||this._createServerSelectionDialog()).showBy(pickListButton,'tl',[6,32])},sliderTipText:function(slider){return this.labelFormat(slider.value)},labelFormat:function(value){var available=this.getViewModel().get('restoreInterval.isAvailable'),dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');value=new Date(value);
return available?Ext.Date.format(value,dateFormat):''},restoreHandlers:{onOibValidated:{resolve:function(response){return Ext.Deferred.resolved(!0)},reject:function(response){return response&&response.prompt?this._showValidateOibWarning(response.message):response&&response.message?Error(response.message):null}}},rpcHandlers:{findSqlRestoreInterval:{success:function(response){var vm=this.getViewModel(),slider=this.lookupReference('restoreIntervalSlider');vm.set('restoreInterval',response);if(response.isAvailable){var newSliderValue=
Ext.Date.parse(response.databaseBackupTime||response.maxValue,'c').getTime();slider.setMinValue(Ext.Date.parse(response.minValue,'c').getTime());slider.setMaxValue(Ext.Date.parse(response.maxValue,'c').getTime());slider.setValue(newSliderValue,!1,!0);vm.set('restoreIntervalSliderValue',newSliderValue);vm.notify();slider.enable()}else slider.disable()},failure:function(response){this.getViewModel().set('restoreInterval',null);Common.ui.Msg.error(response)}}},privates:{_startRestore:function(restoreToOriginal){var me=
this,view=me.getView(),vm=me.getViewModel(),oibId=vm.get('currentRestorePoint').get('oibId');view.setLoading('Validating...');Veeam.service.rpc.Items.validateOib(oibId).then(me.restoreHandlers.onOibValidated.resolve.bind(me),me.restoreHandlers.onOibValidated.reject.bind(me)).then(me._createSqlValidationContext.bind(me,restoreToOriginal)).then(me._validateCredentials.bind(me,restoreToOriginal)).then(me._validateRestoreLocation.bind(me)).then(me._startSqlRestore.bind(me)).then(function(){me.redirectTo('!items/history')}).always(function(){var restoreContext=
vm.get('restoreContext');Veeam.service.rpc.Items.destroySqlValidationContext(restoreContext);view.setLoading(!1)})},_startRestoreToAlternateExtended:function(){var me=this,view=me.getView(),vm=me.getViewModel(),restorePoint=vm.get('currentRestorePoint'),selectedDb=vm.get('selectedDb'),oibId=restorePoint.get('oibId');view.setLoading('Validating...');Veeam.service.rpc.Items.validateOib(oibId).then(me.restoreHandlers.onOibValidated.resolve.bind(me),me.restoreHandlers.onOibValidated.reject.bind(me)).then(function(){Ext.create('MainApp.view.main.items.sql.wizard.Wizard',
{oibId:restorePoint.get('oibId'),backupDate:vm.get('restoreInterval.isAvailable')?new Date(vm.get('restoreIntervalSliderValue')):null,database:Ext.clone(selectedDb.data),listeners:{startrestore:function(){me.redirectTo('!items/history')}}}).show()}).always(function(){view.setLoading(!1)})},_createSqlValidationContext:function(isRestoreOriginal){var vm=this.getViewModel(),selectedDb=vm.get('selectedDb');selectedDb=Ext.clone(selectedDb.data);var restorePoint=vm.get('currentRestorePoint');isRestoreOriginal=
{isRestoreToOriginal:isRestoreOriginal,oibId:restorePoint.get('oibId'),restoreDate:vm.get('restoreInterval.isAvailable')?new Date(vm.get('restoreIntervalSliderValue')):null,serverName:selectedDb.serverName,instanceName:selectedDb.instanceName,databaseName:selectedDb.databaseName,familyUid:selectedDb.familyUid};return Veeam.service.rpc.Items.createSqlValidationContext(isRestoreOriginal).then(function(response){vm.set('restoreContext',response.message)})},_validateCredentials:function(restoreToOriginal){var vm=
this.getViewModel(),restoreContext=vm.get('restoreContext');vm=vm.get('selectedDb');vm=Ext.clone(vm.data);var targetServerSpec={useCredentialsFromJob:!0,serverName:vm.serverName,instanceName:vm.instanceName,databaseName:vm.databaseName},deferred=new Ext.Deferred,dialog=Ext.create('MainApp.view.main.items.sql.SqlCredentialsDialog',{deferred:deferred,database:vm,restoreToOriginal:restoreToOriginal,restoreContext:restoreContext});if(!restoreToOriginal)return dialog.show(),deferred.promise;Veeam.service.rpc.Items.validateSqlCredentials(restoreContext,
targetServerSpec).then(function(response){!response.sqlServerValidationResult.isCredentialsValid||response.hasMachineValidation&&!response.machineValidationResult.isCredentialsValid?dialog.show():deferred.resolve()}).otherwise(function(){deferred.reject()});return deferred.promise},_validateRestoreLocation:function(){var me=this,vm=me.getViewModel(),restoreContext=vm.get('restoreContext');vm=vm.get('selectedDb');vm=Ext.clone(vm.data);vm={useCredentialsFromJob:!0,serverName:vm.serverName,instanceName:vm.instanceName,
databaseName:vm.databaseName};var deferred=new Ext.Deferred;Veeam.service.rpc.Items.validateSqlRestoreLocation(restoreContext,vm).then(function(response){if(!response.restoreAllowed)return Common.ui.Msg.error(response.validationMessage),deferred.reject(response.validationMessage),deferred.promise;if(response.isTargetDatabaseExists)return me._showDbExistsPopup(deferred);deferred.resolve()}).otherwise(function(){deferred.reject()});return deferred.promise},_startSqlRestore:function(){var me=this,restoreContext=
me.getViewModel().get('restoreContext');setTimeout(function(){me.getView().setLoading('Starting restore...')});return Veeam.service.rpc.Items.startSqlRestore(restoreContext)},_showDbExistsPopup:function(deferred){Common.ui.Msg.confirm('Restore','Existing database files will be overwritten. Proceed?',function(button){'yes'===button?deferred.resolve():deferred.reject(null)},this);return deferred.promise},_showValidateOibWarning:function(errorMessage){var deferred=new Ext.Deferred;Common.ui.Msg.warning(errorMessage,
function(btn){return'ok'===btn?deferred.resolve():deferred.reject(null)});return deferred.promise},_loadRestoreInterval:function(record,point){var slider=this.lookupReference('restoreIntervalSlider');record={instanceName:record.get('instanceName'),familyUid:record.get('familyUid'),oibId:point.get('oibId'),databaseName:record.get('databaseName')};slider.disable();Veeam.service.rpc.Items.findSqlRestoreInterval(record).then(this.rpcHandlers.findSqlRestoreInterval.success.bind(this)).otherwise(this.rpcHandlers.findSqlRestoreInterval.failure.bind(this))},
_createServerSelectionDialog:function(){return this.serverSelectionDialog=Ext.create('MainApp.view.main.items.sql.SqlServerSelectionDialog',{listeners:{selectserver:'_onSelectServer',scope:this}})},_onSelectServer:function(record){this.getViewModel().set('server',record.get('text'));this.loadData()}}},0,0,0,0,['controller.main.items.sql'],0,[MainApp.view.main.items.sql,'SqlController'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.SqlModel',Ext.app.ViewModel,{data:{server:null,selectedDb:null,dataIsLoaded:!1,currentRestorePoint:null,restoreInterval:{isAvailable:!1,maxValue:null,minValue:null},restoreIntervalSliderValue:0,locationType:{locationType:0}},formulas:{sliderDisabled:function(get){return!get('currentRestorePoint')||!get('restoreInterval.isAvailable')},restoreDisabled:{bind:{currentRestorePoint:'{currentRestorePoint}',selectedDb:'{selectedDb}'},get:function(data){return!(data.currentRestorePoint&&
data.selectedDb)}},restoreIntervalMinValue:function(get){if(!get('restoreInterval.isAvailable'))return'\x26nbsp;';get=Ext.Date.parse(get('restoreInterval.minValue'),'c');var dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');return Ext.Date.format(get,dateFormat)},restoreIntervalMaxValue:function(get){if(!get('restoreInterval.isAvailable'))return'\x26nbsp;';get=Ext.Date.parse(get('restoreInterval.maxValue'),'c');var dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');return Ext.Date.format(get,
dateFormat)},restoreIntervalSelectedValue:function(get){if(!get('restoreInterval.isAvailable'))return'\x26nbsp;';var dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');get=new Date(get('restoreIntervalSliderValue'));return Ext.Date.format(get,dateFormat)},timeText:function(get){var currentRestorePointDate=get('currentRestorePoint.backupDate');return(currentRestorePointDate=((get=get('restoreInterval.isAvailable')?get('restoreIntervalSliderValue'):null)?new Date(get):null)||currentRestorePointDate)?
'state as of '+Ext.Date.format(new Date(currentRestorePointDate),MainApp.app.getUser().get('defaultFullDateFormat')):'latest available state'},destinationText:function(get){return get('locationType.locationType')?'alternative location':'original location'}},stores:{dbsStore:{type:'app-store',rpcMethod:'Api.itemrestore.sql.findSQLInstances',fields:[{name:'serverName'},{name:'instanceName'},{name:'databaseName'},{name:'fullInstanceName'},{name:'vmName'},{name:'familyUid'},{name:'vmDisplayName'},{name:'groupeName',
calculate:function(data){return Ext.String.format('{0}\\{1} ({2})',data.serverName,data.instanceName,data.vmDisplayName)}}],groupField:'groupeName',proxy:{type:'app-direct',startParam:!1,pageParam:!1,limitParam:!1},listeners:{beforeload:'onBeforeDbsLoad'}},restorePointsStore:{type:'app-store',rpcMethod:'Api.itemrestore.sql.findRestorePoints',fields:[{name:'backupDate',type:'date',dateFormat:'U'},{name:'oibId',type:'string'},{name:'canValidate',type:'boolean'},{name:'canExtendedRestoreToAlternativeLocation',
type:'boolean'},{name:'id',type:'string'}],proxy:{type:'app-direct',startParam:!1,pageParam:!1,limitParam:!1,reader:{transform:function(data){Ext.each(data.items,function(item){item.id=item.oibId});return data},type:'json',totalProperty:'totalCount',rootProperty:'items'}},listeners:{beforeload:'onRestorePointsStoreBeforeLoad'}}}},0,0,0,0,['viewmodel.main.items.sql'],0,[MainApp.view.main.items.sql,'SqlModel'],0);
Ext.cmd.derive('MainApp.view.main.items.ServerSelectionDialogBase',Veeam.base.view.BaseWindow,{width:600,height:500,minWidth:500,minHeight:400,closeAction:'hide',bodyPadding:16,padding:0,layout:{type:'vbox',align:'stretch'},viewModel:{data:{selectedRow:null}},initComponent:function(){Ext.apply(this,{items:[{xtype:'treepanel',padding:0,margin:0,flex:1,useArrows:!0,scrollable:!0,animate:!1,bind:{selection:'{selectedRow}'},listeners:{rowdblclick:'onSelect',scope:this}}],buttons:[{text:'OK',ui:'primary',
disabled:!0,bind:{disabled:'{!selectedRow.leaf}'},handler:'okHandler',scope:this},{text:'Cancel',ui:'alternate',action:'cancel'}]});Veeam.base.view.BaseWindow.prototype.initComponent.call(this)},onSelect:function(view,record){this._selectRow(record)},okHandler:function(){var record=this.getViewModel().get('selectedRow');record&&this._selectRow(record)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.items,'ServerSelectionDialogBase'],
0);
Ext.cmd.derive('MainApp.view.main.items.sql.SqlServerSelectionDialog',MainApp.view.main.items.ServerSelectionDialogBase,{title:'Select SQL server instance',afterRender:function(){var me=this;MainApp.view.main.items.ServerSelectionDialogBase.prototype.afterRender.call(this);me.setLoading();Veeam.service.rpc.Items.findAvailableSqlServers().then(me.rpcHandlers.findAvailableSqlServers.bind(me),Common.ui.Msg.error).always(function(){me.setLoading(!1)})},rpcHandlers:{findAvailableSqlServers:function(response){var treepanel=this.down('treepanel');
Ext.suspendLayouts();treepanel.suspendEvents();treepanel.setRootNode({id:'root',text:'SQL server instance',cls:'x-node-sql-server',expanded:!0,children:response.items});Ext.resumeLayouts();treepanel.resumeEvents()}},privates:{_selectRow:function(record){record.get('leaf')&&(this.fireEvent('selectserver',record),this.close())}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.items.sql,'SqlServerSelectionDialog'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.SqlCredentialsDialog',Veeam.base.view.BaseWindow,{title:'Credentials',width:400,resizable:!1,layout:'fit',deferred:null,database:null,restoreContext:null,restoreToOriginal:!1,viewModel:{data:{serverName:null,database:null,useSqlCreds:!0,osCreds:{username:null,password:null},sqlCreds:{username:null,password:null,useSqlAuth:!1},targetInvalidMsg:null,sqlInvalidMsg:null}},initComponent:function(){var me=this;Ext.apply(me,{items:[{xtype:'form',layout:{type:'vbox',
align:'stretch'},items:[{xtype:'component',html:'Credentials are needed:'},{xtype:'wizard-cardsection',title:'Guest OS credentials',items:[{xtype:'textfield',fieldLabel:'Server Name',ctype:'serverName',allowBlank:!1,regex:/^([A-Za-z0-9_\-\.]+?)\\?([^\s\\]*?)$/,bind:'{serverName}',hidden:me.restoreToOriginal,disabled:me.restoreToOriginal,listeners:{change:'onClearInvalid',scope:me}},{xtype:'textfield',fieldLabel:'User name',allowBlank:!1,ctype:'targetName',bind:'{osCreds.username}',listeners:{change:'onClearInvalid',
scope:me}},{xtype:'textfield',fieldLabel:'Password',inputType:'password',allowBlank:!1,ctype:'targetPass',bind:'{osCreds.password}',listeners:{change:'onClearInvalid',scope:me}},{xtype:'component',cls:'error-message',margin:'8 0 0 0',hidden:!0,bind:{html:'{targetInvalidMsg}',hidden:'{!targetInvalidMsg}'}}]},{xtype:'wizard-cardsection',title:'SQL server credentials',items:[{xtype:'textfield',fieldLabel:'Database',bind:'{database}',hidden:me.restoreToOriginal,disabled:me.restoreToOriginal,allowBlank:!1},
{xtype:'checkbox',boxLabel:'Use the following credentials to access the database:',bind:'{useSqlCreds}',listeners:{change:'onClearInvalid',scope:me}},{xtype:'textfield',fieldLabel:'User name',ctype:'sqlName',padding:'0 0 0 30',allowBlank:!1,bind:{value:'{sqlCreds.username}',disabled:'{!useSqlCreds}'},listeners:{change:'onClearInvalid',scope:me}},{xtype:'textfield',fieldLabel:'Password',inputType:'password',ctype:'sqlPass',padding:'0 0 0 30',allowBlank:!1,bind:{value:'{sqlCreds.password}',disabled:'{!useSqlCreds}'},
listeners:{change:'onClearInvalid',scope:me}},{xtype:'checkbox',boxLabel:'Use SQL Server authentication',margin:'0 0 0 137',bind:{value:'{sqlCreds.useSqlAuth}',disabled:'{!useSqlCreds}'},listeners:{change:'onClearInvalid',scope:me}},{xtype:'component',cls:'error-message',margin:'8 0 0 0',hidden:!0,bind:{html:'{sqlInvalidMsg}',hidden:'{!sqlInvalidMsg}'}}]}]}],buttons:[{text:'OK',ui:'primary',handler:function(){var form=me.down('form'),vm=me.getViewModel(),result={};form.isValid()&&(result.osCreds=
Ext.clone(vm.get('osCreds')),result.osCreds.password=Common.util.Format.btoa(result.osCreds.password),result.sqlCreds=Ext.clone(vm.get('sqlCreds')),result.sqlCreds.password=Common.util.Format.btoa(result.sqlCreds.password),me._validateCreds(result))}},{text:'Cancel',ui:'alternate',handler:function(){me.deferred.reject();me.close()}}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},listeners:{beforeclose:function(win){win.deferred.completed||win.deferred.reject()}},onClearInvalid:function(){var vm=
this.getViewModel();this.down('[ctype\x3dsqlName]').toggleInvalidCls(!1);this.down('[ctype\x3dsqlPass]').toggleInvalidCls(!1);this.down('[ctype\x3dtargetName]').toggleInvalidCls(!1);this.down('[ctype\x3dtargetPass]').toggleInvalidCls(!1);vm.set('targetInvalidMsg',null);vm.set('sqlInvalidMsg',null)},privates:{_validateCreds:function(creds){var me=this,vm=me.getViewModel(),useSqlCreds=vm.get('useSqlCreds');creds={useCredentialsFromJob:!1,serverName:me.database.serverName,instanceName:me.database.instanceName,
databaseName:me.database.databaseName,credentials:creds.osCreds,sqlCredentials:creds.sqlCreds};me.restoreToOriginal||(creds.serverName=vm.get('serverName'),creds.databaseName=vm.get('database'));useSqlCreds||(creds.sqlCredentials.username=creds.credentials.username,creds.sqlCredentials.password=creds.credentials.password,creds.sqlCredentials.useSqlAuth=!1);me.setLoading('Validating...');Veeam.service.rpc.Items.validateSqlCredentials(me.restoreContext,creds).then(function(response){response.sqlServerValidationResult.isCredentialsValid?
response.hasMachineValidation&&!response.machineValidationResult.isCredentialsValid?me._showTargetServerCredsError(response.machineValidationResult.validationMessage):(me.deferred.resolve(response),me.close()):me._showSqlCredsError(response.sqlServerValidationResult.validationMessage)}).always(function(){me.setLoading(!1)})},_showTargetServerCredsError:function(msg){var vm=this.getViewModel(),user=this.down('[ctype\x3dtargetName]'),pass=this.down('[ctype\x3dtargetPass]');user.toggleInvalidCls(!0);
pass.toggleInvalidCls(!0);vm.set('targetInvalidMsg',msg)},_showSqlCredsError:function(msg){var vm=this.getViewModel(),user=this.down('[ctype\x3dsqlName]'),pass=this.down('[ctype\x3dsqlPass]');vm.get('useSqlCreds')?(user.toggleInvalidCls(!0),pass.toggleInvalidCls(!0),vm.set('sqlInvalidMsg',msg)):this._showTargetServerCredsError(msg)}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.items.sql,'SqlCredentialsDialog'],
0);
Ext.cmd.derive('MainApp.view.main.items.sql.wizard.WizardController',ToolKit.wizard.WizardController,{afterRender:function(view){var database=view.getDatabase();database={isRestoreToOriginal:!1,oibId:view.getOibId(),restoreDate:view.getBackupDate(),serverName:database.serverName,instanceName:database.instanceName,databaseName:database.databaseName,familyUid:database.familyUid};Veeam.service.rpc.Items.createSqlValidationContext(database).then(function(response){view.getViewModel().set('restoreContext',response.message)}).otherwise(function(response){view.closeWithoutConfirm()});
this._setVisibleGroupsCard(!1)},initViewModel:function(vm){var view=this.getView(),db=view.getDatabase();vm.set({oibId:view.getOibId(),database:db,backupDate:view.getBackupDate()});vm.set('targetServer.databaseName',db.databaseName)},onBeforeDestroy:function(){var restoreContext=this.getViewModel().get('restoreContext');Veeam.service.rpc.Items.destroySqlValidationContext(restoreContext)},finishHandler:function(){this.getActiveCard().serverValidate(this.startRestore)},validateCredentials:function(){var me=
this,restoreContext=me.getViewModel().get('restoreContext'),targetServerSpec=me._getTargetServerSpecification(),deferred=new Ext.Deferred;Veeam.service.rpc.Items.validateSqlCredentials(restoreContext,targetServerSpec).then(function(response){response.sqlServerValidationResult.isCredentialsValid?response.hasMachineValidation&&!response.machineValidationResult.isCredentialsValid?(me._showTargetServerCredsError(response.machineValidationResult.validationMessage),deferred.reject(response.machineValidationResult.validationMessage)):
deferred.resolve(response):(me._showSqlCredsError(response.sqlServerValidationResult.validationMessage),deferred.reject(response.sqlServerValidationResult.validationMessage))}).otherwise(function(){deferred.reject()});return deferred.promise},validateRestoreLocation:function(){var me=this,restoreContext=me.getViewModel().get('restoreContext'),targetServerSpec=me._getTargetServerSpecification(),deferred=new Ext.Deferred;Veeam.service.rpc.Items.validateSqlRestoreLocation(restoreContext,targetServerSpec).then(function(response){if(!response.restoreAllowed)return Common.ui.Msg.error(response.validationMessage),
deferred.reject(response.validationMessage),deferred.promise;if(response.isTargetDatabaseExists)return me._showDbExistsPopup(deferred,'Existing database files will be overwritten. Proceed?');deferred.resolve()}).otherwise(function(){deferred.reject()});return deferred.promise},getAvailabilityGroups:function(){var me=this,vm=me.getViewModel(),restoreContext=vm.get('restoreContext'),store=vm.get('groupStore'),targetServerData=Ext.clone(vm.get('targetServer')),deferred=new Ext.Deferred;Veeam.service.rpc.Items.getSqlAvailabilityGroups(restoreContext).then(function(response){response=
response.message||[];var showGroupsCard=!!response.length;vm.set('groups',response);vm.set('successfullyValidatedData.targetServer',targetServerData);store.loadData(response);me._setVisibleGroupsCard(showGroupsCard);showGroupsCard||deferred.then(me.getDatabaseFiles.bind(me));deferred.resolve(showGroupsCard)}).otherwise(function(){deferred.reject()});return deferred.promise},getDatabaseFiles:function(){var vm=this.getViewModel(),store=vm.get('fileStore');vm=vm.get('restoreContext');return Veeam.service.rpc.Items.getSqlDatabaseFiles(vm).then(function(response){store.loadData(response.files||
[])})},validateAvailabilityGroups:function(){var vm=this.getViewModel(),restoreContext=vm.get('restoreContext'),selectedGroup=vm.get('selectedGroup');vm=vm.get('restoreToAlwaysOn');selectedGroup=Ext.clone(selectedGroup.data);var deferred=new Ext.Deferred;selectedGroup.isRestoreToAlwaysOn=vm;Veeam.service.rpc.Items.validateSqlAvailabilityGroups(restoreContext,selectedGroup).then(function(response){response.isValid?deferred.resolve():(Common.ui.Msg.error(response.validationMessage),deferred.reject(response.validationMessage))}).otherwise(function(){deferred.reject()});
return deferred.promise},validateAvailabilityGroupsRestoreLocation:function(){var me=this,vm=me.getViewModel(),restoreContext=vm.get('restoreContext');vm=vm.get('restoreToAlwaysOn');var deferred=new Ext.Deferred;if(!vm)return deferred.resolve(),deferred.promise;Veeam.service.rpc.Items.validateSqlAvailabilityGroupsRestoreLocation(restoreContext).then(function(response){if(!response.restoreAllowed)return Common.ui.Msg.error(response.validationMessage),deferred.reject(response.validationMessage),deferred.promise;
if(response.isTargetDatabaseExists)return me._showDbExistsPopup(deferred,me._createPopupDbExistsMessage(response.replicas));deferred.resolve()}).otherwise(function(){deferred.reject()});return deferred.promise},validateDatabaseFiles:function(){var vm=this.getViewModel(),restoreContext=vm.get('restoreContext');vm=vm.get('fileStore');return Veeam.service.rpc.Items.validateSqlDatabaseFiles(restoreContext,{files:vm.getFormattedData()})},startRestore:function(){var me=this,restoreContext=me.getViewModel().get('restoreContext');
setTimeout(function(){me.getView().setLoading('Starting restore...')});Veeam.service.rpc.Items.startSqlRestore(restoreContext).then(function(){me.fireViewEvent('startrestore');me.getView().closeWithoutConfirm()}).otherwise(function(error){me.getView().setLoading(!1)})},onTestSelect:function(combo,record){this.getViewModel().get('replicaStore').reloadData(record)},privates:{_setVisibleGroupsCard:function(visible){var alwaysOnCard=this.getView().down('main-sqlwizard-alwaysoncard'),filesCard=this.getView().down('main-sqlwizard-filescard'),
combo=alwaysOnCard.down('combo');this.setHiddenCard(alwaysOnCard,!visible);visible?(this.updateaAilabilityCards(),this.getView().updateCardsState(),this.setActiveCard(alwaysOnCard),combo.setSelection(combo.getStore().getAt(0))):this.setActiveCard(filesCard)},_getTargetServerSpecification:function(){var vm=this.getViewModel();vm=Ext.clone(vm.get('targetServer'));vm.useCredentialsFromJob=!1;vm.credentials.password=Common.util.Format.btoa(vm.credentials.password);vm.useSqlCredentials?vm.sqlCredentials.password=
Common.util.Format.btoa(vm.sqlCredentials.password):(vm.sqlCredentials.username=vm.credentials.username,vm.sqlCredentials.password=vm.credentials.password,vm.sqlCredentials.useSqlAuth=!1);return vm},_showDbExistsPopup:function(deferred,msg){Common.ui.Msg.confirm('Restore',msg,function(button){'yes'===button?deferred.resolve():deferred.reject(null)},this);return deferred.promise},_createPopupDbExistsMessage:function(replicas){var dbName=this.getViewModel().get('targetServer.databaseName');replicas=
replicas.map(function(replica){return replica.instanceName?replica.machineName+'\\'+replica.instanceName:replica.machineName});return Ext.String.format('Database "{0}" already exists on the following replica{2}: {1}. Do you want to delete the existing database?',dbName,replicas.join(', '),1<replicas?'s':'')},_showTargetServerCredsError:function(msg){this.getActiveCard().showTargetServerCredsError(msg)},_showSqlCredsError:function(msg){this.getActiveCard().showSqlCredsError(msg)}},setDataToCard:function(card,
callback){card&&ToolKit.wizard.WizardController.prototype.setDataToCard.apply(this,arguments)}},0,0,0,0,['controller.main.items.sql.wizard'],0,[MainApp.view.main.items.sql.wizard,'WizardController'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.wizard.WizardModel',Ext.app.ViewModel,{data:{oibId:null,database:null,backupDate:null,restoreContext:null,targetServer:{serverName:null,databaseName:null,credentials:{username:null,password:null},useSqlCredentials:!1,sqlCredentials:{username:null,password:null,useSqlAuth:!1}},successfullyValidatedData:{targetServer:null,group:null},targetInvalidMsg:null,sqlInvalidMsg:null,groups:null,selectedGroup:null,restoreToAlwaysOn:!0},formulas:{groupIsValid:{bind:{selectedGroup:'{selectedGroup}',
restoreToAlwaysOn:'{restoreToAlwaysOn}',lastValidData:'{group}'},get:function(data){return data.lastValidData.restoreToAlwaysOn===restoreToAlwaysOn&&Ext.Object.equals(data.selectedGroup,data.lastValidData.selectedGroup)}}},stores:{groupStore:{fields:['name'],data:[]},fileStore:{fields:[{name:'name',type:'string'},{name:'type',type:'string'},{name:'typeId',type:'integer'},{name:'error',type:'string'},{name:'isPrimary',type:'boolean',calculate:function(data){return'primary'===data.type.toLowerCase()}},
{name:'typeLabel',calculate:function(data){switch(data.type){case 'Primary':return'Primary database file';case 'Secondary':return'Secondary database and log files';case 'BlobFolder':return'BLOB stores';default:return''}}},{name:'isFile',calculate:function(data){return/[\/.](\w)+?$/.test(data.name)}}],data:[],groupField:'typeId',groupDir:'ASC',getFormattedData:function(){var result=[];this.each(function(record){result.push({name:record.get('name'),type:record.get('type')})});return result}},replicaStore:{fields:[{name:'name',
type:'string'},{name:'type',type:'string'}],data:[],groupField:'type',reloadData:function(selectedGroup){selectedGroup=selectedGroup?selectedGroup.get('replicas'):[];Ext.isArray(selectedGroup)&&selectedGroup.length||this.loadData([]);var result=[];Ext.each(selectedGroup,function(replica){result.push({name:replica.name,type:replica.isPrimary?'Primary':'Secondary'})});this.loadData(result)}}}},0,0,0,0,['viewmodel.main.items.sql.wizard'],0,[MainApp.view.main.items.sql.wizard,'WizardModel'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.wizard.ServerCard',ToolKit.wizard.FormCard,{viewModel:{},layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{defaults:{padding:'0 16'},items:[{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,scrollable:!0,items:[{xtype:'wizard-cardsection',title:'Target Server',marginHeader:'0 0 16 0',defaults:{labelWidth:84,allowBlank:!1},items:[{xtype:'textfield',fieldLabel:'Server Name',ctype:'serverNameField',regex:/^([A-Za-z0-9_\-\.]+?)\\?([^\s\\]*?)$/,
bind:'{targetServer.serverName}',listeners:{change:'onClearInvalid',scope:this}},{xtype:'textfield',ctype:'targetName',fieldLabel:'User Name',bind:'{targetServer.credentials.username}',listeners:{change:'onClearInvalid',scope:this}},{xtype:'textfield',inputType:'password',ctype:'targetPass',fieldLabel:'Password',bind:'{targetServer.credentials.password}',listeners:{change:'onClearInvalid',scope:this}},{xtype:'component',cls:'error-message',margin:'8 0 0 0',hidden:!0,bind:{html:'{targetInvalidMsg}',
hidden:'{!targetInvalidMsg}'}}]},{xtype:'wizard-cardsection',title:'Target Database',defaults:{labelWidth:100},items:[{xtype:'textfield',fieldLabel:'Database',bind:'{targetServer.databaseName}',allowBlank:!1},{xtype:'checkbox',boxLabel:'Use the following credentials to access the database:',bind:'{targetServer.useSqlCredentials}',listeners:{change:'onClearInvalid',scope:this}},{xtype:'container',padding:'0 0 0 30',maskOnDisable:!1,layout:{type:'vbox',align:'stretch'},defaults:{labelWidth:70},bind:{disabled:'{!targetServer.useSqlCredentials}'},
items:[{xtype:'textfield',fieldLabel:'Account',ctype:'sqlName',allowBlank:!1,bind:'{targetServer.sqlCredentials.username}',listeners:{change:'onClearInvalid',scope:this}},{xtype:'textfield',fieldLabel:'Password',ctype:'sqlPass',inputType:'password',allowBlank:!1,bind:'{targetServer.sqlCredentials.password}',listeners:{change:'onClearInvalid',scope:this}},{xtype:'checkbox',boxLabel:'Use SQL Server authentication',bind:'{targetServer.sqlCredentials.useSqlAuth}',margin:'0 0 0 78',listeners:{change:'onClearInvalid',
scope:this}},{xtype:'component',cls:'error-message',hidden:!0,margin:'8 0 0 0',bind:{html:'{sqlInvalidMsg}',hidden:'{!sqlInvalidMsg}'}}]}]}]}]});ToolKit.wizard.FormCard.prototype.initComponent.apply(this,arguments)},listeners:{show:function(card){card.isValidating=!1}},onClearInvalid:function(){var vm=this.getViewModel();this.down('[ctype\x3dsqlName]').toggleInvalidCls(!1);this.down('[ctype\x3dsqlPass]').toggleInvalidCls(!1);this.down('[ctype\x3dserverNameField]').toggleInvalidCls(!1);this.down('[ctype\x3dtargetName]').toggleInvalidCls(!1);
this.down('[ctype\x3dtargetPass]').toggleInvalidCls(!1);vm.set('targetInvalidMsg',null);vm.set('sqlInvalidMsg',null)},serverValidate:function(callbackFn){var me=this,wizard=me.wizard,ctrl=wizard.controller;me.isValidating||!me._needServerValidation()?callbackFn(!0):(me.isValidating=!0,wizard.setLoading('Validating...'),ctrl.validateCredentials().then(ctrl.validateRestoreLocation.bind(ctrl)).then(ctrl.getAvailabilityGroups.bind(ctrl)).always(function(){me.isValidating=!1;wizard.setLoading(!1)}))},
customValidate:function(){var vm=this.getViewModel();return!(vm.get('targetInvalidMsg')||vm.get('sqlInvalidMsg'))&&this.getForm().isValid()},showTargetServerCredsError:function(msg){var vm=this.getViewModel(),server=this.down('[ctype\x3dserverNameField]'),user=this.down('[ctype\x3dtargetName]'),pass=this.down('[ctype\x3dtargetPass]');server.toggleInvalidCls(!0);user.toggleInvalidCls(!0);pass.toggleInvalidCls(!0);vm.set('targetInvalidMsg',msg)},showSqlCredsError:function(msg){var vm=this.getViewModel(),
useSqlCredentials=vm.get('targetServer.useSqlCredentials'),user=this.down('[ctype\x3dsqlName]'),pass=this.down('[ctype\x3dsqlPass]');useSqlCredentials?(user.toggleInvalidCls(!0),pass.toggleInvalidCls(!0),vm.set('sqlInvalidMsg',msg)):this.showTargetServerCredsError(msg)},privates:{_needServerValidation:function(){var vm=this.getViewModel(),targetServer=Ext.clone(vm.get('targetServer'));vm=vm.get('successfullyValidatedData.targetServer');return Ext.encode(vm)!==Ext.encode(targetServer)}}},0,['main-sqlwizard-servercard',
'main.items.sql.wizard.servercard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.items.sql.wizard.servercard main-sqlwizard-servercard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.items.sql.wizard.servercard':!0,'main-sqlwizard-servercard':!0},['widget.main-sqlwizard-servercard','widget.main.items.sql.wizard.servercard'],[[Veeam.mixin.WizardCardTitle.prototype.mixinId||Veeam.mixin.WizardCardTitle.$className,
Veeam.mixin.WizardCardTitle]],[MainApp.view.main.items.sql.wizard,'ServerCard'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.wizard.FilesCard',ToolKit.wizard.FormCard,{viewModel:{},layout:{type:'vbox',align:'stretch'},cls:'sql-wizard-files',initComponent:function(){var me=this;me._sync=new Common.util.LocalPathSynchronizer({});Ext.apply(me,{items:[{xtype:'grid',cls:'bordered-grid',flex:1,padding:'8 16 16 16',hideHeaders:!0,columns:[{text:'File',dataIndex:'name',flex:1,editor:{xtype:'textfield',listeners:{change:me.handlers.change,delay:100,scope:me}},renderer:function(value,meta,
record){record=record.get('error');meta.tdAttr=record?'data-errorqtip\x3d"'+record+'"':'data-errorqtip\x3d""';meta.tdCls=record?'has-error x-form-invalid-field-default':null;return value}}],features:[{ftype:'grouping',groupHeaderTpl:['{[this.formatName(values)]}',{formatName:function(values){return(values=values.children[0])?values.get('typeLabel'):''}}],hideGroupedHeader:!0,collapsible:!1,expandTip:null,collapseTip:null}],selModel:'cellmodel',plugins:{ptype:'cellediting',clicksToEdit:1},bind:'{fileStore}',
listeners:{validateedit:function(editor,context){Ext.String.trim(context.value)||(context.cancel=!0)},edit:function(editor,context){editor=context.record;editor.dirty&&(editor.set('error',null),editor.get('isPrimary')&&me._clearErrors());editor.commit()},beforeEdit:function(editor,context){me.isPrimaryEditor=context.record.get('isPrimary')}}}]});ToolKit.wizard.FormCard.prototype.initComponent.call(this)},serverValidate:function(callbackFn){var me=this,wizard=me.wizard,ctrl=wizard.controller;me.isValidating?
callbackFn(!0):(me.isValidating=!0,wizard.setLoading('Validating...'),ctrl.validateDatabaseFiles().then(function(response){response.valid?callbackFn.call(ctrl,!0):me._showErrors(response.errors)}).always(function(){me.isValidating=!1;wizard.setLoading(!1)}))},handlers:{change:function(field,value,oldValue){var me=this;field=me.getViewModel();me.isPrimaryEditor&&(field=field.get('fileStore'),field.each(function(record){if(!record.get('isPrimary')){var target=record.get('name');target=record.get('isFile')?
me._sync.changeFilePath(oldValue,value,!0,target):me._sync.changeFolderPath(oldValue,value,!0,target);record.set('name',target);record.commit()}}))}},privates:{_showErrors:function(errors){this.getViewModel().get('fileStore').each(function(record){var path=record.get('name');errors[path]&&(record.set('error',errors[path]),record.commit())})},_clearErrors:function(){this.getViewModel().get('fileStore').each(function(record){record.get('isPrimary')||(record.set('error',null),record.commit())})},_getReplaceParams:function(value,
oldValue){var diff=value.length-oldValue.length,pos=value.length,pos2=pos-diff;for(pos-1;0<=pos;pos--){pos2=pos-diff;var valueChar=value.charAt(pos),oldValueChar=oldValue.charAt(pos2);if(0>pos2||0===pos||valueChar!==oldValueChar)break}oldValue=oldValue.slice(0,pos2+1);value=value.slice(0,pos+1);return[oldValue,value]}}},0,['main-sqlwizard-filescard','main.items.sql.wizard.filescard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.items.sql.wizard.filescard main-sqlwizard-filescard'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.items.sql.wizard.filescard':!0,'main-sqlwizard-filescard':!0},['widget.main-sqlwizard-filescard','widget.main.items.sql.wizard.filescard'],[[Veeam.mixin.WizardCardTitle.prototype.mixinId||Veeam.mixin.WizardCardTitle.$className,Veeam.mixin.WizardCardTitle]],[MainApp.view.main.items.sql.wizard,'FilesCard'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.wizard.AlwaysOnCard',ToolKit.wizard.FormCard,{viewModel:{},layout:{type:'vbox',align:'stretch'},disallowed:!0,defaults:{padding:'0 16'},items:[{xtype:'checkbox',boxLabel:'Add database to the following Availability Group:',bind:'{restoreToAlwaysOn}'},{xtype:'combo',queryMode:'local',displayField:'name',valueField:'name',editable:!1,bind:{store:'{groupStore}',selection:'{selectedGroup}',disabled:'{!restoreToAlwaysOn}'},listeners:{select:'onTestSelect'}},{xtype:'label',
margin:'8 0 4 0',text:'Database will be replicated to the following nodes:',bind:{disabled:'{!restoreToAlwaysOn}'}},{xtype:'grid',cls:'bordered-grid',flex:1,padding:'0 16 16 16',viewConfig:{disableSelection:!0},hideHeaders:!0,columns:[{text:'File',dataIndex:'name',flex:1,editor:'textfield'}],features:[{ftype:'grouping',groupHeaderTpl:'{name}',hideGroupedHeader:!0}],bind:'{replicaStore}'}],serverValidate:function(callbackFn){var me=this,vm=me.getViewModel(),wizard=me.wizard,ctrl=wizard.controller;
me.isValidating||!me._needServerValidation()?callbackFn(!0):(me.isValidating=!0,wizard.setLoading('Validating...'),ctrl.validateAvailabilityGroups().then(ctrl.validateAvailabilityGroupsRestoreLocation.bind(ctrl)).then(ctrl.getDatabaseFiles.bind(ctrl)).then(function(){vm.set('successfullyValidatedData.group.restoreToAlwaysOn',vm.get('restoreToAlwaysOn'));vm.set('successfullyValidatedData.group.selectedGroup',vm.get('selectedGroup'));callbackFn(!0)}).always(function(){me.isValidating=!1;wizard.setLoading(!1)}))},
privates:{_needServerValidation:function(){var vm=this.getViewModel(),selectedGroup=vm.get('selectedGroup'),restoreToAlwaysOn=vm.get('restoreToAlwaysOn');vm=vm.get('successfullyValidatedData.group');return!vm||!(restoreToAlwaysOn===vm.restoreToAlwaysOn&&selectedGroup===vm.selectedGroup)}}},0,['main-sqlwizard-alwaysoncard','main.items.sql.wizard.alwaysoncard'],'component box container panel form toolkit.wizard.Card toolkit.wizard.FormCard main.items.sql.wizard.alwaysoncard main-sqlwizard-alwaysoncard'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,form:!0,'toolkit.wizard.Card':!0,'toolkit.wizard.FormCard':!0,'main.items.sql.wizard.alwaysoncard':!0,'main-sqlwizard-alwaysoncard':!0},['widget.main-sqlwizard-alwaysoncard','widget.main.items.sql.wizard.alwaysoncard'],[[Veeam.mixin.WizardCardTitle.prototype.mixinId||Veeam.mixin.WizardCardTitle.$className,Veeam.mixin.WizardCardTitle]],[MainApp.view.main.items.sql.wizard,'AlwaysOnCard'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.wizard.Wizard',Veeam.view.VeeamWizard,{alternateClassName:'MainApp.SqlWizard',plugins:['deferredmask'],viewModel:{type:'main.items.sql.wizard'},controller:'main.items.sql.wizard',config:{oibId:null,database:null,backupDate:null},cls:'sql-wizard',defaultBodyPadding:0,height:660,width:640,title:'SQL Restore',autoClose:!1,tabWidth:152,prevButtonText:'Previous',items:[{xtype:'main-sqlwizard-servercard',title:'Target Server',cardTitle:'Specify credentials for the target server'},
{xtype:'main-sqlwizard-alwaysoncard',title:'SQL Server Always On',disallowed:!0,disabled:!0,cardTitle:'Specify Always On cluster restore parameters'},{xtype:'main-sqlwizard-filescard',title:'Files',cardTitle:'Specify the target location for database files'}],listeners:{finish:'finishHandler',beforedestroy:'onBeforeDestroy'}},0,['main.items.sql.wizard'],'component box container panel window main.items.sql.wizard'.split(' '),{component:!0,box:!0,container:!0,panel:!0,window:!0,'main.items.sql.wizard':!0},
['widget.main.items.sql.wizard'],0,[MainApp.view.main.items.sql.wizard,'Wizard',MainApp,'SqlWizard'],0);
Ext.cmd.derive('MainApp.view.main.items.sql.Sql',Ext.Panel,{controller:'main.items.sql',viewModel:{type:'main.items.sql'},layout:{type:'hbox',align:'stretch'},defaults:{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,maxWidth:500},items:[{items:[{xtype:'container',layout:{type:'hbox',align:'stretch'},margin:'0 0 8 0',items:[{xtype:'textfield',labelAlign:'top',fieldLabel:'SQL server',emptyText:'Type in SQLServer\\InstanceName',inputAttrTpl:'required',cls:'textfield-search',triggers:{search:{cls:'x-form-search-trigger',
handler:'loadData'}},bind:'{server}',flex:1,listeners:{specialkey:'specialKeyHandler'}},{xtype:'button',text:'Pick from List\x26hellip;',width:104,ui:'text',handler:'showServerList',reference:'pickListButton',margin:'24 0 0 8'}]},{xtype:'label',text:'Database to restore:',margin:'4 0'},{xtype:'deferredmaskgrid',bufferedRenderer:!1,reference:'dbsGrid',cls:'dbs-grid',scrollable:'y',hideHeaders:!0,flex:1,maxHeight:450,columns:[{dataIndex:'databaseName',flex:1}],features:[{ftype:'grouping',groupHeaderTpl:'{name}',
hideGroupedHeader:!0,id:'dbGrouping'}],bind:{store:'{dbsStore}',selection:'{selectedDb}'},tbar:{xtype:'notificationtoolbar',reference:'notificationtoolbar',autoClose:!1,hideCloseButton:!0,bind:{hidden:'{dataIsLoaded}'}},listeners:{select:'onAccountSelect'}}]},{cls:'right-side-form',items:[{xtype:'panel',scrollable:!1,layout:{type:'vbox',align:'stretch'},items:[{xtype:'button',text:'History',iconCls:'history',ui:'text',href:'#!items/history',maxWidth:68,hrefTarget:'_self',margin:'24 0 8 0'},{xtype:'form.field.datetimepicker',
disabled:!0,fieldLabel:'Restore point',labelAlign:'top',emptyText:'No restore point selected',reference:'datepicker',displayField:'backupDate',valueField:'oibId',margin:'0 0 8 0',autoSelect:!0,hideClearButton:!0,fieldDateFormat:'defaultFullDateFormat',timeFormat:'defaultLongTimeFormat',dateFormat:'defaultDateFormat',bind:{store:'{restorePointsStore}',selection:'{currentRestorePoint}',disabled:'{!selectedDb}'},listeners:{updateselection:'onRestorePointChange'}},{xtype:'slider',disabled:!0,reference:'restoreIntervalSlider',
cls:'force-disabled',fieldLabel:'Point in time',labelWidth:82,labelPad:5,value:0,increment:1E3,minValue:0,maxValue:0,tipText:'sliderTipText',labelFormat:'labelFormat',bind:{disabled:'{sliderDisabled}',value:'{restoreIntervalSliderValue}'}},{xtype:'radiogroup',disabled:!0,margin:'8 0 0 0',padding:0,maskOnDisable:!1,fieldLabel:'Restore to',labelAlign:'top',layout:{type:'vbox',align:'stretch'},items:[{boxLabel:'Original location',name:'locationType',inputValue:0,checked:!0,reference:'sqlRestoreToOriginalRadioButton'},
{boxLabel:'Alternative location',name:'locationType',inputValue:1}],bind:{value:'{locationType}',disabled:'{!currentRestorePoint}'}}]},{xtype:'container',cls:'restore-btn-section',layout:{type:'hbox',align:'stretch'},items:[{xtype:'button',text:'Restore',ui:'primary',handler:'restoreHandler',disabled:!0,bind:{disabled:'{restoreDisabled}'}},{xtype:'component',html:'\x3cdiv class\x3d"restore-label"\x3eRestore latest available state to original location\x3c/div\x3e',flex:1,margin:'0 20',padding:0,bind:{html:'\x3cdiv class\x3d"restore-label"\x3eRestore {timeText} to {destinationText}\x3c/div\x3e',
hidden:'{restoreDisabled}'}}]}],margin:'0 0 0 30'}]},0,['main-items-sql','main.items.sql'],'component box container panel main.items.sql main-items-sql'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.items.sql':!0,'main-items-sql':!0},['widget.main-items-sql','widget.main.items.sql'],0,[MainApp.view.main.items.sql,'Sql'],0);
Ext.cmd.derive('Veeam.service.rpc.Items',Ext.Base,{singleton:!0,validateOib:function(oibId){return Common.Request.thenable(RPC.Api['itemrestore.validateOib'],oibId)},discoverExchangeServer:function(discoverSpec){return Common.Request.thenable(RPC.Api['itemrestore.discoverExchangeServer'],discoverSpec)},startVexRestore:function(spec){return Common.Request.thenable(RPC.Api['itemrestore.startVexRestore'],spec)},ignoreCertificate:function(ignoreSpec){return Common.Request.thenable(RPC.Api['itemrestore.ignoreCertificate'],
ignoreSpec)},findSqlRestoreInterval:function(spec){return Common.Request.thenable(RPC.Api['itemrestore.sql.findRestoreInterval'],spec)},findAvailableSqlServers:function(){return Common.Request.thenable(RPC.Api['itemrestore.sql.findAvailableSqlServers'])},createSqlValidationContext:function(sourceInfo){return Common.Request.thenable(RPC.Api['itemrestore.sql.createValidationContext'],sourceInfo)},destroySqlValidationContext:function(context){return Common.Request.thenable(RPC.Api['itemrestore.sql.destroyContext'],
context)},validateSqlCredentials:function(restoreContext,targetServer){return Common.Request.thenable(RPC.Api['itemrestore.sql.validateCredentials'],restoreContext,targetServer)},validateSqlRestoreLocation:function(restoreContext,targetServer){return Common.Request.thenable(RPC.Api['itemrestore.sql.validateRestoreLocation'],restoreContext,targetServer)},getSqlAvailabilityGroups:function(restoreContext){return Common.Request.thenable(RPC.Api['itemrestore.sql.getAvailabilityGroups'],restoreContext)},
validateSqlAvailabilityGroupsRestoreLocation:function(restoreContext){return Common.Request.thenable(RPC.Api['itemrestore.sql.validateAvailabilityGroupsRestoreLocation'],restoreContext)},validateSqlAvailabilityGroups:function(restoreContext,groupInfo){return Common.Request.thenable(RPC.Api['itemrestore.sql.validateAvailabilityGroups'],restoreContext,groupInfo)},getSqlDatabaseFiles:function(restoreContext){return Common.Request.thenable(RPC.Api['itemrestore.sql.getDatabaseFiles'],restoreContext)},
validateSqlDatabaseFiles:function(restoreContext,targetPaths){return Common.Request.thenable(RPC.Api['itemrestore.sql.validateDatabaseFiles'],restoreContext,targetPaths)},startSqlRestore:function(restoreContext){return Common.Request.thenable(RPC.Api['itemrestore.sql.startRestore'],restoreContext)},findOracleDatabases:function(query){return Common.Request.thenable(RPC.Api['itemrestore.oracle.findDatabases'],{query:query})},findOracleRestoreInterval:function(spec){return Common.Request.thenable(RPC.Api['itemrestore.oracle.findRestoreInterval'],
spec)},findAvailableOracleServers:function(){return Common.Request.thenable(RPC.Api['itemrestore.oracle.findHomes'],{node:'root'})},startOracleRestore:function(spec){return Common.Request.thenable(RPC.Api['itemrestore.oracle.startRestore'],spec)},createOracleValidationContext:function(spec){return Common.Request.thenable(RPC.Api['itemrestore.oracle.createValidationContext'],spec)},destroyOracleValidationContext:function(context){return Common.Request.thenable(RPC.Api['itemrestore.oracle.destroyContext'],
context)},validateOracleWizardCard:function(fnName,validationContext,dataToValidate){return Common.Request.thenable(RPC.Api[fnName],validationContext,dataToValidate)},getOracleHome:function(spec){return Common.Request.thenable(RPC.Api['itemrestore.oracle.getOracleHome'],spec)}},0,0,0,0,0,0,[Veeam.service.rpc,'Items'],0);
Ext.cmd.derive('MainApp.view.main.items.oracle.OracleController',MainApp.base.controller.BaseController,{afterRender:function(){this.lookup('notificationtoolbar').setInfo('Available databases will be shown after specifying a server name')},initViewModel:function(vm){var restoreToOriginalRadioButton=this.lookupReference('restoreToOriginalRadioButton');MainApp.app.getUser().canInplaceRestoreSql()||(vm.set('oracleLocationType.oracleLocationType',1),restoreToOriginalRadioButton.setDisabled(!0))},loadData:function(){var query=
this.getViewModel().get('oracleServer')||'';Veeam.service.rpc.Items.findOracleDatabases(query).then(this.rpcHandlers.findOracleDatabases.bind(this))},specialKeyHandler:function(field,e){e.getKey()==e.ENTER&&this.loadData()},onDbSelect:function(selModel,record){var me=this,vm=me.getViewModel(),store=me.lookupReference('datepicker').getStore();selModel=store.getProxy();var serverNode;store.loadData([]);vm.set('oracleCurrentRestorePoint',null);vm.set('oracleRestoreInterval',null);if(record.data.leaf){if(vm=
record.parentNode)if(serverNode=vm.parentNode){selModel.setExtraParams({name:record.get('text'),homeName:vm.get('text'),serverName:serverNode.get('text')});var lastRestorePointsRequest=me.lastRestorePointsRequest=(new Date).getTime();store.load(function(){store.isCorrectRequest=lastRestorePointsRequest===me.lastRestorePointsRequest})}}else me._abortRequest(store)},onRestorePointsStoreBeforeLoad:function(store,operation){this.getViewModel().set('oracleCurrentRestorePoint',null);this._abortRequest(store);
store.lastOperation=operation},onRestorePointChange:function(field,restorePoint){if(restorePoint){var record=this.getViewModel().get('oracleSelectedDb');(field=field.getStore())&&field.isCorrectRequest&&this._loadRestoreInterval(record,restorePoint)}},restoreHandler:function(){this.getViewModel().get('isRestoreToOriginal')?this._startRestore(this._getRestoreSpec()):this._showWizard()},showServerList:function(){var pickListButton=this.lookup('pickListButton');(this.serverSelectionDialog||this._createServerSelectionDialog()).showBy(pickListButton,
'tl',[6,32])},sliderTipText:function(slider){return this.labelFormat(slider.value)},labelFormat:function(value){var available=this.getViewModel().get('oracleRestoreInterval.isAvailable'),dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');value=new Date(value);return available?Ext.Date.format(value,dateFormat):''},restoreHandlers:{validateOib:{resolve:function(response){return Ext.Deferred.resolved(!0)},reject:function(response){if(response&&response.prompt)return this._showValidateOibWarning(response.message);
if(response&&response.message)throw Common.ui.Msg.error(response.message),response.message;throw null;}},validateWarning:function(restoreSpec){this.getView().setLoading('Starting restore job...');return Veeam.service.rpc.Items.startOracleRestore(restoreSpec)},startRestore:{resolve:function(response){response.name&&'JSONRPCError'==response.name||this.redirectTo('!items/history')},reject:function(response){var me=this;return response?response.promt?me._showCredsDialog(response):(Common.ui.Msg.error(response.message||
'Unknown error',function(){me._showWizard()}),Ext.Deferred.rejected()):Ext.Deferred.rejected()}},otherwise:function(response){response&&response.message&&Common.ui.Msg.error(response.message)}},rpcHandlers:{findOracleDatabases:function(response){var vm=this.getViewModel(),rootNode=this.lookupReference('dbsTree').getRootNode();rootNode.removeAll();rootNode.appendChild(response);rootNode.expand(!0);vm.set('dataIsLoaded',Ext.isArray(response)&&response.length)},findOracleRestoreInterval:{success:function(requestId,
response){var vm=this.getViewModel(),slider=this.lookupReference('oracleRestoreIntervalSlider');response.isAvailable&&requestId===this.lastFindOracleRestoreIntervalRequestId?(vm.set('oracleRestoreInterval',response),requestId=Ext.Date.parse(response.databaseBackupTime||response.maxValue,'c').getTime(),slider.setMinValue(Ext.Date.parse(response.minValue,'c').getTime()),slider.setMaxValue(Ext.Date.parse(response.maxValue,'c').getTime()),slider.setValue(requestId)):slider.disable()},failure:function(response){this.getViewModel().set('oracleRestoreInterval',
null);Common.ui.Msg.error(response)}}},privates:{_abortRequest:function(store){store.lastOperation&&store.lastOperation.isRunning()&&store.getProxy().abort(store.lastOperation)},_getRestoreSpec:function(){var vm=this.getViewModel(),restorePoint=vm.get('oracleCurrentRestorePoint'),restoreToOriginal=vm.get('isRestoreToOriginal');vm=vm.get('oracleRestoreInterval.isAvailable')?new Date(vm.get('oracleRestoreIntervalSliderValue')):null;return{oibId:restorePoint.get('oibId'),databaseId:restorePoint.get('databaseId'),
restoreDate:vm?Ext.Date.format(vm,'c'):null,isRestoreToOriginal:restoreToOriginal,osKind:restorePoint.get('osKind')}},_showWizard:function(){var vm=this.getViewModel(),restorePoint=vm.get('oracleCurrentRestorePoint');this.wizard=Ext.create('MainApp.view.main.items.oracle.wizard.Wizard',{osKind:restorePoint.get('osKind'),srcInfo:{recoveryPoint:restorePoint.data,restoreDate:vm.get('oracleRestoreInterval.isAvailable')?new Date(vm.get('oracleRestoreIntervalSliderValue')):null},listeners:{savedata:this._startRestoreToAlternative,
scope:this}});this.wizard.show()},_startRestoreToAlternative:function(wizard,cardsData){var restorePoint=this.getViewModel().get('oracleCurrentRestorePoint');wizard=Ext.clone(this._getRestoreSpec());restorePoint='Windows'===restorePoint.get('osKind')?'windowsTargetInfo':'linuxTargetInfo';wizard.isRestoreToOriginal=!1;wizard[restorePoint]=cardsData.targetCard;wizard.targetDbInfo=cardsData.dbSettingsCard;wizard.targetPathInfo=cardsData.pathMapsCard;this._startRestore(wizard)},_startRestore:function(restoreSpec){var view=
this.getView(),oibId=this.getViewModel().get('oracleCurrentRestorePoint').get('oibId');view.setLoading('Validating...');Veeam.service.rpc.Items.validateOib(oibId).then(this.restoreHandlers.validateOib.resolve.bind(this),this.restoreHandlers.validateOib.reject.bind(this)).then(this.restoreHandlers.validateWarning.bind(this,restoreSpec)).then(this.restoreHandlers.startRestore.resolve.bind(this),this.restoreHandlers.startRestore.reject.bind(this)).otherwise(this.restoreHandlers.otherwise.bind(this)).always(function(){view.setLoading(!1)})},
_showValidateOibWarning:function(errorMessage){var deferred=new Ext.Deferred;Common.ui.Msg.warning(errorMessage,function(btn){return'ok'==btn?deferred.resolve(errorMessage):deferred.reject()});return deferred.promise},_loadRestoreInterval:function(record,point){record={originalOibId:point.get('oibId'),databaseId:point.get('databaseId')};this.lastFindOracleRestoreIntervalRequestId=(new Date).getTime();Veeam.service.rpc.Items.findOracleRestoreInterval(record).then(this.rpcHandlers.findOracleRestoreInterval.success.bind(this,
this.lastFindOracleRestoreIntervalRequestId)).otherwise(this.rpcHandlers.findOracleRestoreInterval.failure.bind(this))},_createServerSelectionDialog:function(){return this.serverSelectionDialog=Ext.create('MainApp.view.main.items.oracle.OracleServerSelectionDialog',{listeners:{selectserver:'_onSelectServer',scope:this}})},_onSelectServer:function(record){this.getViewModel().set('oracleServer',record.get('text'));this.loadData()},_showCredsDialog:function(response){var me=this,isLinux='Linux'===response.osKind,
credsPromise=new Ext.Deferred;response.homePasswordRequired?me._showHomeAccountCredentials(response,credsPromise):isLinux?me._showLinuxCredentials(response,credsPromise):me._showWindowsCredentials(response,credsPromise);return credsPromise.then(function(spec){return Veeam.service.rpc.Items.startOracleRestore(spec).then(me.restoreHandlers.startRestore.resolve.bind(me),me.restoreHandlers.startRestore.reject.bind(me))})},_showHomeAccountCredentials:function(response,credsPromise){var spec=response.spec;
Ext.create('Common.WindowsCredentials',{hideDescriptionField:!0,closeAfterClickOk:!0,passwordAllowBlank:!1,info:response.message,disableUsernameField:!0,usernameFieldLabel:'Account',username:response.homeAccount,title:'Oracle Home account credentials',listeners:{select:function(win,credsData){spec.oracleHomeCreds={username:credsData.username,password:Common.util.Format.btoa(credsData.password)};credsPromise.resolve(spec)},close:function(){credsPromise.reject()},afterRender:function(win){win.down('textfield[fieldLabel\x3dPassword]').focus()}}}).show()},
_showWindowsCredentials:function(response,credsPromise){var spec=response.spec;Ext.create('Common.WindowsCredentials',{hideDescriptionField:!0,closeAfterClickOk:!0,passwordAllowBlank:!1,info:response.message,listeners:{select:function(win,credsData){spec.guestOsCreds={username:credsData.username,password:Common.util.Format.btoa(credsData.password)};credsPromise.resolve(spec)},close:function(){credsPromise.reject()}}}).show()},_showLinuxCredentials:function(response,credsPromise){var spec=response.spec;
Ext.create('Common.LinuxCredentials',{hidePortField:!0,hideDescriptionField:!0,closeAfterClickOk:!0,info:response.message,listeners:{select:function(win,credsData,isPassword){spec.guestOsCreds={userName:credsData.username,isPrivateKeyAuth:!isPassword,password:credsData.password?Common.util.Format.btoa(credsData.password):null,privateKey:credsData.privateKey,elevateToRoot:credsData.elevateToRoot,autoSudo:credsData.autoSudo,rootPassword:credsData.rootPassword?Common.util.Format.btoa(credsData.rootPassword):
null,passphrase:credsData.passphrase?Common.util.Format.btoa(credsData.passphrase):null,failoverToSu:credsData.failoverToSu};credsPromise.resolve(spec)},close:function(){credsPromise.reject()}}}).show()}}},0,0,0,0,['controller.main.items.oracle'],0,[MainApp.view.main.items.oracle,'OracleController'],0);
Ext.cmd.derive('MainApp.view.main.items.oracle.OracleModel',Ext.app.ViewModel,{data:{oracleServer:null,oracleSelectedDb:null,dataIsLoaded:!1,oracleCurrentRestorePoint:null,oracleRestoreInterval:{isAvailable:!1,maxValue:null,minValue:null},oracleRestoreIntervalSliderValue:0,oracleLocationType:{oracleLocationType:0}},formulas:{oracleRestoreIntervalMinValue:function(get){if(!get('oracleRestoreInterval.isAvailable'))return null;var dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');get=Ext.Date.parse(get('oracleRestoreInterval.minValue'),
'c');return Ext.Date.format(get,dateFormat)},oracleRestoreIntervalMaxValue:function(get){if(!get('oracleRestoreInterval.isAvailable'))return null;get=Ext.Date.parse(get('oracleRestoreInterval.maxValue'),'c');var dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');return Ext.Date.format(get,dateFormat)},oracleRestoreIntervalSelectedValue:function(get){if(!get('oracleRestoreInterval.isAvailable'))return null;var dateFormat=MainApp.app.getUser().get('defaultFullDateFormat');get=new Date(get('oracleRestoreIntervalSliderValue'));
return Ext.Date.format(get,dateFormat)},oracleRestoreLabel:{bind:{locationType:'{oracleLocationType.oracleLocationType}',oracleCurrentRestorePointDate:'{oracleCurrentRestorePoint.backupDate}',isIntervalAvailable:'{oracleRestoreInterval.isAvailable}',oracleRestoreIntervalSliderValue:'{oracleRestoreIntervalSliderValue}'},get:function(b){var oracleCurrentRestorePointDate=b.oracleCurrentRestorePointDate,restoreInterval=b.isIntervalAvailable?b.oracleRestoreIntervalSliderValue:null;oracleCurrentRestorePointDate=
(restoreInterval?new Date(restoreInterval):null)||oracleCurrentRestorePointDate;b=b.locationType?'alternative location':'original location';oracleCurrentRestorePointDate=oracleCurrentRestorePointDate?'state as of '+Ext.Date.format(new Date(oracleCurrentRestorePointDate),MainApp.app.getUser().get('defaultFullDateFormat')):'latest available state';return Ext.String.format('\x3cdiv class\x3d"restore-label"\x3eRestore {0} to {1}\x3c/div\x3e',oracleCurrentRestorePointDate,b)}},oracleDisableRestoreBtn:{bind:'{oracleCurrentRestorePoint}',
get:function(point){return point?!MainApp.app.getUser().canInplaceRestoreSql()&&!point.get('canValidate'):!0}},isRestoreToOriginal:function(get){return 0===get('oracleLocationType.oracleLocationType')}},stores:{restorePointsStore:{type:'app-store',rpcMethod:'Api.itemrestore.oracle.findRestorePoints',fields:[{name:'backupDate',type:'date',dateFormat:'U'},{name:'oibId',type:'string'},{name:'canValidate',type:'boolean'},{name:'id',type:'string'},{name:'osKind'},{name:'isAsm',type:'bool'},{name:'oracleVersion'},
{name:'databaseId'},{name:'databaseGlobalName'},{name:'databaseSid'}],proxy:{type:'app-direct',startParam:!1,pageParam:!1,limitParam:!1,reader:{transform:function(data){Ext.each(data.items,function(item){item.id=item.oibId});return data},type:'json',totalProperty:'totalCount',rootProperty:'items'}},listeners:{beforeload:'onRestorePointsStoreBeforeLoad'}}}},0,0,0,0,['viewmodel.main.items.oracle'],0,[MainApp.view.main.items.oracle,'OracleModel'],0);
Ext.cmd.derive('MainApp.view.main.items.oracle.OracleServerSelectionDialog',MainApp.view.main.items.ServerSelectionDialogBase,{title:'Select Oracle Server',afterRender:function(){var me=this;MainApp.view.main.items.ServerSelectionDialogBase.prototype.afterRender.call(this);me.setLoading();Veeam.service.rpc.Items.findAvailableOracleServers().then(me.rpcHandlers.findAvailableOracleServers.bind(me),Common.ui.Msg.error).always(function(){me.setLoading(!1)})},rpcHandlers:{findAvailableOracleServers:function(response){var treepanel=
this.down('treepanel');treepanel.setRootNode({id:'root',text:'Oracle server',cls:'x-node-sql-server',expanded:!0,children:response});treepanel.expandAll()}},privates:{_selectRow:function(record){record.get('leaf')&&record.parentNode&&(this.fireEvent('selectserver',record.parentNode),this.close())}}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.items.oracle,'OracleServerSelectionDialog'],0);
Ext.cmd.derive('MainApp.view.main.items.oracle.wizard.WizardController',ToolKit.wizard.WizardController,{listen:{component:{'*':{showmask:'onShowMask',hidemask:'onHideMask',disablefinish:'onDisableFinishBtn'},'main-items-oraclewizard-basecard form field':{change:'cardStateChange'}}},init:function(){Veeam.service.rpc.Items.createOracleValidationContext(this.getView().getSourceInfo()).then(this.rpcHandlers.createOracleValidationContext.bind(this),Common.ui.Msg.error)},beforeCardChange:function(tabPanel,
newCard,oldCard){var callback=function(invalidCard){oldCard&&this.applyCardData(oldCard);invalidCard?this.activateInvalidCard(invalidCard):this.continueCardChange(newCard)};if(oldCard&&this.getCardIndex(newCard)>this.getCardIndex(oldCard))return this.checkCard(oldCard,function(card,success){success&&(this.allowedCard(newCard)?this.continueCardChange(newCard):(newCard=newCard.nextSibling(this.allowedQuery),this.checkCards(oldCard,newCard,callback)))}),!1;callback.call(this,null);return!0},cardStateChange:function(field){field.up('main-items-oraclewizard-basecard').setHasChanges(!0)},
onShowMask:function(msg){this.getView().setLoading(msg||!0)},onHideMask:function(){this.getView().setLoading(!1)},onDisableFinishBtn:function(disabled){var btn=this.lookupReference('saveBtn');setTimeout(function(){btn.setDisabled(disabled)},10)},finishHandler:function(){var card=this.getActiveCard();card.setHasChanges(!0);card.serverValidate(this._saveData.bind(this))},onBeforeDestroy:function(){var context=this.getViewModel().get('context');Veeam.service.rpc.Items.destroyOracleValidationContext(context)},
rpcHandlers:{createOracleValidationContext:function(response){this.getViewModel().set('context',{id:response.id,homesLoaded:!1,sourceInfo:this.getView().getSourceInfo()})}},privates:{_saveData:function(cardIsValid){var allCards=this.getAllCards(),data={};cardIsValid&&(data.targetCard=allCards.items[0].getData(),data.dbSettingsCard=allCards.items[1].getData(),data.pathMapsCard=allCards.items[2].getData(),this.fireViewEvent('savedata',data),this.getView().closeWithoutConfirm())}}},0,0,0,0,['controller.main.items.oracle.wizard'],
0,[MainApp.view.main.items.oracle.wizard,'WizardController'],0);
Ext.cmd.derive('MainApp.view.main.items.oracle.wizard.WizardModel',Ext.app.ViewModel,{data:{},formulas:{},stores:{oracleHomesStore:{fields:[{name:'homeName'},{name:'homePath'},{name:'version'},{name:'oracleHomeUserPasswordRequired'},{name:'oracleHomeUserAccount'}],data:[]},dbFilesStore:{type:'app-store',rpcMethod:'Api.itemrestore.oracle.getOraclePaths',fields:[{name:'sourcePath'},{name:'targetPath'},{name:'possiblePaths'},{name:'size',type:'int'},{name:'logGroupNum'},{name:'type',sortType:function(value){var sortInfo=
{CONTROLFILE:1,DATAFILE:2,ONLINELOG:3,TEMPFILE:4,FastRecoveryAreaFolder:5};return sortInfo[value]?sortInfo[value]:999}},{name:'typeName',calculate:function(data){return{CONTROLFILE:'Control files',DATAFILE:'Data files',ONLINELOG:'Log files',TEMPFILE:'Temp files',FastRecoveryAreaFolder:'Fast recovery area'}[data.type]||'Unknown'}}],groupField:'typeName'}}},0,0,0,0,['viewmodel.main.items.oracle.wizard'],0,[MainApp.view.main.items.oracle.wizard,'WizardModel'],0);
Ext.define('MainApp.view.main.items.oracle.wizard.BaseCard',{extend:ToolKit.wizard.Card,alternateClassName:'MainApp.OracleWizard.BaseCard',alias:'widget.main.items.oracle.wizard.basecard',xtype:'main-items-oraclewizard-basecard',mixins:[Veeam.mixin.WizardCardTitle],viewModel:{},config:{hasChanges:!1},defaults:{padding:'0 16'},rpcFn:null,sourceInfo:null,initComponent:function(){this.on('show',this.resetValidationContext,this);this.on('hide',this.resetValidationContext,this);ToolKit.wizard.Card.prototype.initComponent.apply(this,
arguments)},serverValidate:function(callbackFn){var me=this,validationContext=me.getViewModel().get('context'),dataToValidate=me.getData();if(me.getHasChanges()){if(!me.rpcFn||!Ext.isString(me.rpcFn))throw Error('Validation API method is not defined');me.fireEvent('showmask','Validating settings, please wait...');Veeam.service.rpc.Items.validateOracleWizardCard(me.rpcFn,validationContext,dataToValidate).then(me._serverValidateSuccessHandler.bind(me,callbackFn),me._serverValidateFailureHandler.bind(me,
callbackFn)).always(function(){me.fireEvent('hidemask')})}else callbackFn.call(me,!0)},getData:Ext.emptyFn,handleErrors:Ext.emptyFn,resetValidationContext:Ext.emptyFn,privates:{_serverValidateSuccessHandler:function(callbackFn,response){callbackFn.call(this,!0);this.setHasChanges(!1)},_serverValidateFailureHandler:function(callbackFn,response){Common.ui.Msg.hide();response.hasErrors&&response.errors?this.handleErrors(response.errors,callbackFn):Common.ui.Msg.error(response.message||'Unknown error')}}});
Ext.define('MainApp.view.main.items.oracle.wizard.TargetLinuxServerCard',{extend:MainApp.view.main.items.oracle.wizard.BaseCard,alternateClassName:'MainApp.OracleWizard.TargetLinuxServerCard',alias:'widget.main.items.oracle.wizard.targetlinuxservercard',xtype:'main-items-oraclewizard-targetlinuxservercard',viewModel:{data:{linuxServer:{serverName:null,username:null,password:null,privateKey:null,sshPort:22,elevateToRoot:!1,autoSudo:!1,rootPassword:null,passphrase:null,failoverToSu:!1}},formulas:{rootPasswordEnabled:{bind:{sudo:'{linuxServer.autoSudo}',
su:'{linuxServer.failoverToSu}',elevate:'{linuxServer.elevateToRoot}'},get:function(bind){return bind.elevate&&(bind.sudo||bind.su)}},rootUserName:{bind:{name:'{linuxServer.serverName}'},get:function(bind){return'root'===bind.name}}}},rpcFn:'itemrestore.oracle.validateLinuxTargetServer',initComponent:function(){Ext.apply(this,{cardTitle:'Specify credentials for the target Linux server',items:[{xtype:'form',flex:1,layout:{type:'vbox',align:'stretch'},items:[{xtype:'wizard-cardsection',title:'Target server',
style:{'margin-top':'-20px'},items:[{xtype:'fieldcontainer',layout:{type:'hbox',align:'stretch'},items:[{xtype:'textfield',fieldLabel:'DNS name or IP address',allowBlank:!1,flex:1,labelWidth:152,maskRe:/[a-z0-9_\-.]/i,bind:{value:'{linuxServer.serverName}'},listeners:{change:this.handlers.userNameField.onChange,scope:this}},{xtype:'numberfield',fieldLabel:'Port',allowOnlyWhitespace:!1,labelWidth:28,width:110,minValue:0,value:22,maxValue:65535,maxLength:5,enforceMaxLength:!0,hideTrigger:!0,allowExponential:!1,
allowDecimals:!1,margin:'0 16 0 8',bind:{value:'{linuxServer.sshPort}'}}]}]},{xtype:'wizard-cardsection',title:'Specify account to connect to the server with',items:[{xtype:'textfield',fieldLabel:'Account',allowBlank:!1,labelWidth:62,maxWidth:446,bind:{value:'{linuxServer.username}'}},{xtype:'textfield',fieldLabel:'Password',inputType:'password',ctype:'password',allowBlank:!1,maxWidth:446,labelWidth:62,bind:{value:'{linuxServer.password}'}},{xtype:'checkbox',boxLabel:'Private key is required for this connection',
value:!1,bind:{value:'{usePrivateKey}'},listeners:{change:this.handlers.usePrivateKey.change,scope:this}},{xtype:'fieldcontainer',margin:'0 0 0 28',layout:'anchor',fieldDefaults:{maxWidth:416,labelWidth:72,anchor:'100%'},items:[{xtype:'textfilefield',fieldLabel:'Private Key',cls:'private-key-upload-field',emptyText:'[Set private key from file]',emptyCls:'upload-field-empty',allowBlank:!1,disabled:!0,flex:1,buttonConfig:{ui:'text',margin:'0 0 0 6'},bind:{disabled:'{!usePrivateKey}'},listeners:{beforeload:this.handlers.privateKeyFileField.beforeLoad,
load:this.handlers.privateKeyFileField.load,scope:this}},{xtype:'textfield',inputType:'password',fieldLabel:'Passphrase',disabled:!0,bind:{disabled:'{!usePrivateKey}',value:'{linuxServer.passphrase}'}}]},{xtype:'container',layout:'hbox',items:[{xtype:'label',text:'Non-root account',width:124,style:{'font-weight':'bold'}}],margin:'10 0 15 0'},{xtype:'checkbox',boxLabel:'Elevate specified account to root',value:!1,bind:{value:'{linuxServer.elevateToRoot}',disabled:'{rootUserName}'},listeners:{change:this.handlers.elevateToRootField.change,
scope:this}},{xtype:'container',cls:'checkbox-group--nested',layout:{type:'vbox',align:'stretch'},items:[{xtype:'checkbox',boxLabel:'Add account to the sudoers file automatically',name:'autoSudo',value:!1,disabled:!0,bind:{value:'{linuxServer.autoSudo}',disabled:'{!linuxServer.elevateToRoot}'}},{xtype:'checkbox',boxLabel:'Use "su" if "sudo" fails',name:'failoverToSu',value:!1,disabled:!0,bind:{value:'{linuxServer.failoverToSu}',disabled:'{!linuxServer.elevateToRoot}'}},{xtype:'textfield',inputType:'password',
fieldLabel:'Root password',maxWidth:416,disabled:!0,bind:{value:'{linuxServer.rootPassword}',disabled:'{!rootPasswordEnabled}'}}]}]}]}]});MainApp.view.main.items.oracle.wizard.BaseCard.prototype.initComponent.apply(this,arguments)},getData:function(){var vm=this.getViewModel(),data=vm.get('linuxServer');vm=vm.get('usePrivateKey');return{serverName:Ext.String.trim(data.serverName),userName:Ext.String.trim(data.username),isPrivateKeyAuth:vm,password:data.password?Common.util.Format.btoa(data.password):
null,privateKey:data.privateKey,sshPort:data.sshPort,elevateToRoot:data.elevateToRoot,autoSudo:data.autoSudo,rootPassword:data.rootPassword?Common.util.Format.btoa(data.rootPassword):null,passphrase:data.passphrase?Common.util.Format.btoa(data.passphrase):null,failoverToSu:data.failoverToSu}},handlers:{userNameField:{onChange:function(field,value){field=this.getViewModel();'root'===value&&field.set('linuxServer.elevateToRoot',!1)}},usePrivateKey:{change:function(field,value){var fileField=this.down('textfilefield'),
passwordField=this.down('textfield[ctype\x3dpassword]');value&&!fileField.apiEnabled&&Common.ui.Msg.error('Your browser does not support dynamic file loading',function(){field.setValue(!1);field.setDisabled(!0)});passwordField.setConfig({allowBlank:!!value})}},privateKeyFileField:{load:function(field,privateKey,value){var vm=this.getViewModel();this.setLoading(!1);this._isPrivateKeyContentValid(privateKey)?vm.set('linuxServer.privateKey',privateKey):Common.ui.Msg.error('Unknown SSH private key format',
function(){field.setRawValue(null);vm.set('linuxServer.privateKey',null)})},beforeLoad:function(field,privateKey){this.setLoading()}},elevateToRootField:{change:function(field,value){value||(field=this.down('checkbox[name\x3dautoSudo]'),value=this.down('checkbox[name\x3dfailoverToSu]'),field&&field.setValue(!1),value&&value.setValue(!1))}}},privates:{_isPrivateKeyContentValid:function(privateKey){for(var prefixes='SSH PRIVATE KEY FILE FORMAT 1.1;PuTTY-User-Key-File-;---- BEGIN SSH2 ENCRYPTED PRIVATE;-----BEGIN RSA PRIVATE KEY;-----BEGIN DSA PRIVATE KEY;-----BEGIN EC PRIVATE KEY;-----BEGIN EC PARAMETERS;-----BEGIN PRIVATE KEY;-----BEGIN ENCRYPTED PRIVATE KEY'.split(';'),
i=0;i<prefixes.length;i++){var prefix=prefixes[i];if(privateKey.substr(0,prefix.length)===prefix)return!0}return!1}}});
Ext.define('MainApp.view.main.items.oracle.wizard.TargetWindowsServerCard',{extend:MainApp.view.main.items.oracle.wizard.BaseCard,alternateClassName:'MainApp.OracleWizard.TargetWindowsServerCard',alias:'widget.main.items.oracle.wizard.targetwindowsservercard',xtype:'main-items-oraclewizard-targetwindowsservercard',viewModel:{data:{windowsServer:{serverName:null,username:null,password:null}}},rpcFn:'itemrestore.oracle.validateWindowsTargetServer',initComponent:function(){Ext.apply(this,{cardTitle:'Specify credentials for the target Windows server',
items:[{xtype:'form',flex:1,layout:{type:'vbox',align:'stretch'},items:[{xtype:'wizard-cardsection',title:'Target server',style:{'margin-top':'-20px'},items:[{xtype:'fieldcontainer',layout:{type:'hbox',align:'stretch'},items:[{xtype:'textfield',fieldLabel:'DNS name or IP address',allowBlank:!1,flex:1,labelWidth:152,maskRe:/[a-z0-9_\-.]/i,bind:{value:'{windowsServer.serverName}'}}]}]},{xtype:'wizard-cardsection',title:'Specify account to connect to the server with',items:[{xtype:'textfield',fieldLabel:'Account',
allowBlank:!1,labelWidth:116,bind:{value:'{windowsServer.username}'}},{xtype:'textfield',inputType:'password',fieldLabel:'Password',labelWidth:116,allowBlank:!1,bind:{value:'{windowsServer.password}'}}]}]}]});MainApp.view.main.items.oracle.wizard.BaseCard.prototype.initComponent.apply(this,arguments)},getData:function(){var data=this.getViewModel().get('windowsServer');return{serverName:Ext.String.trim(data.serverName),userName:Ext.String.trim(data.username),password:Common.util.Format.btoa(data.password)}}});
Ext.define('MainApp.view.main.items.oracle.wizard.DbSettingsCard',{extend:MainApp.view.main.items.oracle.wizard.BaseCard,alternateClassName:'MainApp.OracleWizard.DbSettingsCard',alias:'widget.main.items.oracle.wizard.dbsettingscard',xtype:'main-items-oraclewizard-dbsettingscard',viewModel:{data:{dbSettings:{oracleHome:null,globalDbName:null,oracleSid:null,accountPassword:null},selectedOracleHome:null},formulas:{updateOracleSid:{bind:'{dbSettings.globalDbName}',get:function(globalDbName){if(!globalDbName)return null;
var dotIndex=globalDbName.indexOf('.');dotIndex=0<dotIndex?globalDbName.substr(0,dotIndex):globalDbName;this.set('dbSettings.oracleSid',dotIndex.substr(0,Math.min(dotIndex.length,12)));return globalDbName}}}},rpcFn:'itemrestore.oracle.validateOracleHome',cardTitle:'Specify Oracle home settings for the target server',isActivated:!1,referenceHolder:!0,initComponent:function(){Ext.apply(this,{items:[{xtype:'form',reference:'dbSettingsForm',flex:1,layout:{type:'vbox',align:'stretch'},defaults:{labelWidth:140},
items:[{xtype:'combo',valueField:'homePath',fieldLabel:'Oracle Home',allowBlank:!1,autoSelect:!0,displayField:'homeName',triggerAction:'all',forceSelection:!0,editable:!1,queryMode:'local',name:'oracleHome',bind:{value:'{dbSettings.oracleHome}',selection:'{selectedOracleHome}',store:'{oracleHomesStore}'}},{xtype:'textfield',fieldLabel:'Global database name',allowBlank:!1,name:'globalDbName',bind:{value:'{dbSettings.globalDbName}'}},{xtype:'textfield',fieldLabel:'Oracle SID',allowBlank:!1,regex:/^[a-zA-Z][a-zA-Z0-9]*$/,
maxLength:12,name:'oracleSid',bind:{value:'{dbSettings.oracleSid}'}},{xtype:'container',layout:{type:'vbox',align:'stretch'},padding:'15 0',hidden:!0,bind:{hidden:'{!selectedOracleHome.oracleHomeUserPasswordRequired}'},items:[{xtype:'menuseparator',margin:'15 0'},{xtype:'component',bind:{html:'Specify the password for the account that was used to install Oracle home: {selectedOracleHome.oracleHomeUserAccount}'},padding:'10 0'},{xtype:'textfield',fieldLabel:'Password',inputType:'password',allowBlank:!1,
name:'accountPassword',bind:{value:'{dbSettings.accountPassword}',disabled:'{!selectedOracleHome.oracleHomeUserPasswordRequired}'}}]}]}],listeners:{activate:'onCardActivate',scope:this}});MainApp.view.main.items.oracle.wizard.BaseCard.prototype.initComponent.apply(this,arguments)},onCardActivate:function(){this.isActivated||(this.isActivated=!0,this._loadOracleHome())},getData:function(){var vm=this.getViewModel(),selectedHome=vm.get('selectedOracleHome');vm=vm.get('dbSettings');var data={homePath:selectedHome.get('homePath'),
homeName:selectedHome.get('homeName'),oracleSid:vm.oracleSid,globalDbName:vm.globalDbName};selectedHome.get('oracleHomeUserPasswordRequired')&&Ext.apply(data,{isOracleHomeUserPasswordSet:!0,oracleHomeUserPassword:Common.util.Format.btoa(vm.accountPassword),oracleHomeUserAccount:selectedHome.get('oracleHomeUserAccount')});return data},handleErrors:function(errors,callbackFn){var me=this,form=me.lookupReference('dbSettingsForm'),error2FieldMap={oracleHomeUserPassword:{fieldName:'accountPassword',confirmFn:null},
homePath:{fieldName:'oracleHome',confirmFn:null},homeName:{fieldName:'oracleHome',confirmFn:null},oracleSid:{fieldName:'oracleSid',confirmFn:me._allowOverwriteDb.bind(me)},globalDbName:{fieldName:'globalDbName',confirmFn:me._skipGlobalNameCheck.bind(me)}};errors.forEach(function(error){var fieldParam=error2FieldMap[error.fieldId],field=fieldParam?form.getForm().findField(fieldParam.fieldName):null;field&&(!0===error.needConfirm?Ext.Msg.confirm('',error.msg+'\x3cbr /\x3eDo you want to continue?',function(btn){'yes'===
btn&&Ext.isFunction(fieldParam.confirmFn)?(fieldParam.confirmFn(),me.serverValidate(callbackFn)):field.markInvalid(error.msg)}):field.markInvalid(error.msg))})},resetValidationContext:function(){var context=this.getViewModel().get('context');delete context.skipGlobalNameCheck;delete context.overWriteDb},rpcHandlers:{getOracleHome:function(response){var vm=this.getViewModel(),store=vm.get('oracleHomesStore'),context=vm.get('context');store.loadData(response.knownHomes);vm.set('dbSettings.globalDbName',
this.sourceInfo.databaseGlobalName);vm.set('dbSettings.oracleSid',this.sourceInfo.databaseSid);response.knownHomes.length&&(response=store.getAt(0),vm.set('selectedOracleHome',response));context.homesLoaded=!0}},privates:{_loadOracleHome:function(){var context=this.getViewModel().get('context');context.homesLoaded||Veeam.service.rpc.Items.getOracleHome(context).then(this.rpcHandlers.getOracleHome.bind(this),Common.ui.Msg.error)},_allowOverwriteDb:function(){this.getViewModel().get('context').overWriteDb=
!0},_skipGlobalNameCheck:function(){this.getViewModel().get('context').skipGlobalNameCheck=!0}}});
Ext.define('MainApp.view.main.items.oracle.wizard.DbFilesCard',{extend:MainApp.view.main.items.oracle.wizard.BaseCard,alternateClassName:'MainApp.OracleWizard.DbFilesCard',alias:'widget.main.items.oracle.wizard.dbfilescard',xtype:'main-items-oraclewizard-dbfilescard',viewModel:{data:{}},rpcFn:'itemrestore.oracle.validateDatabasePaths',cardTitle:'Specify location for the database files on the target server',isActivated:!1,referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,
{items:[{xtype:'grid',hideHeaders:!0,flex:1,margin:0,padding:'0 16 16 16',viewConfig:{stripeRows:!1},selModel:'cellmodel',columns:[{text:'Name',dataIndex:'targetPath',flex:1,editor:{completeOnEnter:!0,xtype:'combo',queryMode:'local',displayField:'targetPath',valueField:'targetPath',forceSelection:!0,autoSelect:!1,editable:!1,queryCaching:!1,listeners:{select:function(c,r){r=0===r.get('targetPath').indexOf('+');c.setEditable(!r)}},store:{fields:['targetPath'],data:[]}}}],bind:{store:'{dbFilesStore}'},
features:[{ftype:'grouping',groupHeaderTpl:'{name}',collapsible:!1,expandTip:null,collapseTip:null}],plugins:{ptype:'cellediting',clicksToEdit:1},listeners:{beforeedit:'onBeforeEdit',edit:'onAfterEdit',scope:this}}],listeners:{activate:'onCardActivate',scope:this}});MainApp.view.main.items.oracle.wizard.BaseCard.prototype.initComponent.apply(this,arguments)},onCardActivate:function(){this.isActivated||(this.isActivated=!0,this._loadDbFiles())},getData:function(){return{items:this.down('grid').getStore().getRange().map(function(r){return r.data})}},
onBeforeEdit:function(editor,context){editor=context.column.getEditor();var store=editor.getStore(),currentTargetPath=context.record.get('targetPath');context=context.record.get('possiblePaths');currentTargetPath=0===(currentTargetPath||context[0]).indexOf('+');var data=[];if(!context||!Ext.isArray(context)||0===context.length)return!1;Ext.each(context,function(path){data.push({targetPath:path})});store.loadData(data);editor.forceSelection=currentTargetPath;editor.autoSelect=currentTargetPath;editor.setEditable(!currentTargetPath);
return!0},onAfterEdit:function(editor,context){context.record.get('targetPath')?context.record.commit():context.record.reject()},privates:{_loadDbFiles:function(){var me=this,vm=me.getViewModel(),context=vm.get('context');vm=vm.get('dbFilesStore');vm.getProxy().setExtraParams(context);me.fireEvent('disablefinish',!0);vm.load(function(){me.fireEvent('disablefinish',!1)})}}});
Ext.define('MainApp.view.main.items.oracle.wizard.Wizard',{extend:Veeam.view.VeeamWizard,alternateClassName:'MainApp.OracleWizard',alias:'widget.main.items.oracle.wizard',plugins:['deferredmask'],viewModel:{type:'main.items.oracle.wizard'},controller:'main.items.oracle.wizard',defaultBodyPadding:0,config:{osKind:null,srcInfo:{recoveryPoint:null,restoreDate:null}},cls:'oracle-wizard',height:720,width:800,title:'Oracle Restore',autoClose:!1,tabWidth:128,prevButtonText:'Previous',initComponent:function(){var isLinux=
'Linux'===this.getOsKind();Ext.apply(this,{items:[{title:'Target Server',xtype:isLinux?'main-items-oraclewizard-targetlinuxservercard':'main-items-oraclewizard-targetwindowsservercard',reference:'targetServerCard',cls:'target-server-card',sourceInfo:this.getSourceInfo()},{title:'Oracle',xtype:'main-items-oraclewizard-dbsettingscard',reference:'oracleCard',cls:'db-settings-card',sourceInfo:this.getSourceInfo()},{title:'Database Files',xtype:'main-items-oraclewizard-dbfilescard',reference:'dbFilesCard',
cls:'db-files-card',sourceInfo:this.getSourceInfo()}]});Veeam.view.VeeamWizard.prototype.initComponent.apply(this,arguments)},listeners:{finish:'finishHandler',beforedestroy:'onBeforeDestroy'},getSourceInfo:function(){var srcInfo=this.getSrcInfo(),recoveryPoint=srcInfo.recoveryPoint;srcInfo=srcInfo.restoreDate?Ext.Date.format(srcInfo.restoreDate,'c'):null;return{oibId:recoveryPoint.oibId,databaseId:recoveryPoint.databaseId,isAsm:recoveryPoint.isAsm,oracleVersion:recoveryPoint.oracleVersion,restoreDate:srcInfo,
databaseGlobalName:recoveryPoint.databaseGlobalName,databaseSid:recoveryPoint.databaseSid}}});
Ext.cmd.derive('MainApp.view.main.items.oracle.Oracle',Ext.Panel,{controller:'main.items.oracle',viewModel:{type:'main.items.oracle'},layout:{type:'hbox',align:'stretch'},defaults:{xtype:'container',layout:{type:'vbox',align:'stretch'},flex:1,maxWidth:500},items:[{items:[{xtype:'container',layout:{type:'hbox',align:'stretch'},margin:'0 0 8 0',items:[{xtype:'textfield',emptyText:'Type in the server name',labelAlign:'top',fieldLabel:'Server',inputAttrTpl:'required',cls:'textfield-search',triggers:{search:{cls:'x-form-search-trigger',
handler:'loadData'}},bind:'{oracleServer}',flex:1,listeners:{specialkey:'specialKeyHandler'}},{xtype:'button',text:'Pick from List\x26hellip;',reference:'pickListButton',width:104,ui:'text',handler:'showServerList',margin:'24 0 0 8'}]},{xtype:'label',text:'Database to restore:',margin:'4 0'},{xtype:'treepanel',reference:'dbsTree',rootVisible:!1,cls:'dbs-grid',scrollable:'y',flex:1,maxHeight:450,bind:{selection:'{oracleSelectedDb}'},tbar:{xtype:'notificationtoolbar',reference:'notificationtoolbar',
autoClose:!1,hideCloseButton:!0,bind:{hidden:'{dataIsLoaded}'}},listeners:{select:'onDbSelect'}}]},{cls:'right-side-form',items:[{xtype:'panel',scrollable:!1,layout:{type:'vbox',align:'stretch'},items:[{xtype:'button',text:'History',iconCls:'history',ui:'text',href:'#!items/history',maxWidth:68,hrefTarget:'_self',margin:'24 0 8 0'},{xtype:'form.field.datetimepicker',fieldLabel:'Restore point',emptyText:'No restore point selected',reference:'datepicker',displayField:'backupDate',valueField:'oibId',
margin:'0 0 8 0',labelAlign:'top',autoSelect:!0,hideClearButton:!0,disabled:!0,fieldDateFormat:'defaultFullDateFormat',timeFormat:'defaultLongTimeFormat',dateFormat:'defaultDateFormat',bind:{store:'{restorePointsStore}',selection:'{oracleCurrentRestorePoint}',disabled:'{!oracleSelectedDb.leaf}'},listeners:{updateselection:'onRestorePointChange'}},{xtype:'slider',disabled:!0,reference:'oracleRestoreIntervalSlider',cls:'force-disabled',fieldLabel:'Point in time',labelWidth:82,labelPad:5,value:0,increment:1E3,
minValue:0,maxValue:0,tipText:'sliderTipText',labelFormat:'labelFormat',bind:{disabled:'{!oracleRestoreInterval.isAvailable}',value:'{oracleRestoreIntervalSliderValue}'}},{xtype:'radiogroup',disabled:!0,margin:'8 0 0 0',padding:0,maskOnDisable:!1,fieldLabel:'Restore to',labelAlign:'top',layout:{type:'vbox',align:'stretch'},items:[{boxLabel:'Original location',name:'oracleLocationType',inputValue:0,checked:!0,reference:'restoreToOriginalRadioButton'},{boxLabel:'Alternative location',name:'oracleLocationType',
inputValue:1}],bind:{value:'{oracleLocationType}',disabled:'{!oracleCurrentRestorePoint}'}}]},{xtype:'container',cls:'restore-btn-section',layout:{type:'hbox',align:'stretch'},items:[{xtype:'button',text:'Restore',ui:'primary',handler:'restoreHandler',disabled:!0,bind:{disabled:'{oracleDisableRestoreBtn}'}},{xtype:'component',html:'\x3cdiv class\x3d"restore-label"\x3eRestore latest available state to original location\x3c/div\x3e',flex:1,margin:'0 20',padding:0,bind:{html:'{oracleRestoreLabel}',hidden:'{oracleDisableRestoreBtn}'}}]}],
margin:'0 0 0 30'}]},0,['main-items-oracle','main.items.oracle'],'component box container panel main.items.oracle main-items-oracle'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.items.oracle':!0,'main-items-oracle':!0},['widget.main-items-oracle','widget.main.items.oracle'],0,[MainApp.view.main.items.oracle,'Oracle'],0);
Ext.cmd.derive('MainApp.view.main.items.history.HistoryController',MainApp.base.controller.BaseController,{dateRenderer:function(value){return Ext.Date.format(value,'defaultFullDateFormat')},statusRenderer:function(status,meta){var cls=Ext.util.Format.lowercase(status);'inprogress'==cls?(status='In progress',cls='x-restoring'):cls=' x-'+cls;meta.css+=cls;return status},onSessionSelect:function(){this.lookupReference('sessionLog').getStore().load()},onSessionDeselect:function(){this.lookupReference('sessionLog').getStore().loadData([])},
onLogBeforeLoad:function(store){var selectedSession=this.getViewModel().get('selectedSession');store=store.getProxy();if(!selectedSession)return!1;store.setExtraParams({sessionId:selectedSession.data.uid,dbInstanceId:selectedSession.data.dbInstanceId});return!0},navigateToBack:function(){this.fireViewEvent('goback')},refreshHistory:function(){this.getViewModel().get('sessionsStore').reload()}},0,0,0,0,['controller.main.items.history'],0,[MainApp.view.main.items.history,'HistoryController'],0);
Ext.cmd.derive('Veeam.model.report.ExchangeRestoreSession',Ext.data.Model,{fields:['uid','initiator','status','progress','jobName','itemType',{name:'dateStartTs',type:'date',dateFormat:'c'},{name:'dateEndTs',type:'date',dateFormat:'c'},'dbInstanceId'],idProperty:'uid'},0,0,0,0,0,0,[Veeam.model.report,'ExchangeRestoreSession'],0);
Ext.cmd.derive('MainApp.view.main.items.history.HistoryModel',Ext.app.ViewModel,{data:{selectedSession:null},formulas:{},stores:{sessionsStore:{type:'app-store',rpcMethod:'Api.itemrestore.getSessionsAutoUpdate',model:'Veeam.model.report.ExchangeRestoreSession',remoteSort:!0,pageSize:15,autoLoad:!0,sorters:{property:'dateStartTs',direction:'DESC'}},logsStore:{type:'app-store',rpcMethod:'Api.itemrestore.getSessionLogAutoUpdate',fields:['message','severity',{name:'eventTime',type:'date',dateFormat:'c'},
{usn:'eventTime',type:'int'}],proxy:{type:'app-direct',pageParam:!1,limitParam:!1,startParam:!1},listeners:{beforeload:'onLogBeforeLoad'}}}},0,0,0,0,['viewmodel.main.items.history'],0,[MainApp.view.main.items.history,'HistoryModel'],0);
Ext.cmd.derive('MainApp.view.main.items.history.SessionsGridController',MainApp.base.controller.BaseController,{dateRenderer:function(value){return Ext.Date.format(value,'defaultFullDateFormat')},statusRenderer:function(status,meta){meta.tdCls=Veeam.model.JobSessionStatus.getIconCls(status);return Veeam.model.JobSessionStatus.getLabel(status)}},0,0,0,0,['controller.main.items.sessions'],0,[MainApp.view.main.items.history,'SessionsGridController'],0);
Ext.cmd.derive('MainApp.view.main.items.history.SessionsGrid',Veeam.base.view.DeferredMaskGrid,{viewModel:{},controller:'main.items.sessions',columns:{defaults:{flex:1,menuDisabled:!0},items:[{flex:2,text:'Job Name',dataIndex:'jobName'},{text:'Application Item Type',dataIndex:'itemType'},{text:'Initiated by',dataIndex:'initiator'},{text:'Started at',dataIndex:'dateStartTs',formatter:'date("defaultFullDateFormat")'},{text:'Ended at',dataIndex:'dateEndTs',formatter:'date("defaultFullDateFormat")'},
{text:'Status',dataIndex:'status',tdCls:'status-column',renderer:'statusRenderer'}]},bbar:{xtype:'pagingtoolbar',displayInfo:!0}},0,['main-items-sessions','main.items.sessions'],'component box container panel tablepanel gridpanel grid deferredmaskgrid main.items.sessions main-items-sessions'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,'main.items.sessions':!0,'main-items-sessions':!0},['widget.main-items-sessions','widget.main.items.sessions'],
[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.items.history,'SessionsGrid'],0);
Ext.cmd.derive('MainApp.view.main.items.history.Logs',Ext.view.View,{plugins:['deferredmask'],viewModel:{},tpl:new Ext.XTemplate('\x3ctpl for\x3d"."\x3e','\x3cdiv style\x3d"margin-bottom: 10px;" class\x3d"log-item-wrap x-unselectable {severity}"\x3e','\x3cspan data-qtip\x3d"Event time: {eventTime:date}"\x3e{message}\x3c/span\x3e','\x3c/div\x3e','\x3c/tpl\x3e'),itemSelector:'div.log-item-wrap',scrollable:'y'},0,['main-items-logs','main.items.logs'],['component','box','dataview','main.items.logs','main-items-logs'],
{component:!0,box:!0,dataview:!0,'main.items.logs':!0,'main-items-logs':!0},['widget.main-items-logs','widget.main.items.logs'],[[Veeam.mixin.ReportAutoUpdate.prototype.mixinId||Veeam.mixin.ReportAutoUpdate.$className,Veeam.mixin.ReportAutoUpdate]],[MainApp.view.main.items.history,'Logs'],0);
Ext.cmd.derive('MainApp.view.main.items.history.History',Ext.Panel,{viewModel:{type:'main.items.history'},controller:'main.items.history',layout:{type:'vbox',align:'stretch'},dockedItems:[{dock:'top',xtype:'toolbar',cls:'no-lr-padding-toolbar toolbar-history',items:[{xtype:'button',scale:'large',ui:'text',iconCls:'exit__large',handler:'navigateToBack'},{xtype:'tbseparator',cls:'big-separator'},{xtype:'tbtext',html:'\x3ch1\x3eItem Restore History\x3c/h1\x3e'},'-\x3e',{text:'Refresh',iconCls:'refresh',
handler:'refreshHistory'}]}],items:[{xtype:'main-items-sessions',cls:'main-items-sessions',flex:1,reference:'sessionsGrid',minHeight:300,bind:{store:'{sessionsStore}',selection:'{selectedSession}'},listeners:{select:'onSessionSelect',deselect:'onSessionDeselect'}},{xtype:'main-items-logs',cls:'main-items-logs details-footer',height:260,reference:'sessionLog',bind:{store:'{logsStore}'}}]},0,['main-items-history','main.items.history'],'component box container panel main.items.history main-items-history'.split(' '),
{component:!0,box:!0,container:!0,panel:!0,'main.items.history':!0,'main-items-history':!0},['widget.main-items-history','widget.main.items.history'],0,[MainApp.view.main.items.history,'History'],0);
Ext.cmd.derive('MainApp.view.main.items.Items',Ext.tab.Panel,{controller:'main.items',viewModel:{type:'main.items'},cls:'main-items',bodyCls:'main-items-body',tabBar:{margin:'0 0 8 0'},items:[],initComponent:function(){Ext.tab.Panel.prototype.initComponent.apply(this,arguments);this._createTabs()},listeners:{tabchange:'onTabChange',activate:'onActivate'},privates:{_createTabs:function(){var user=MainApp.app.getUser();user.canRestoreExchageItems()&&this.add({xtype:'main-items-mailbox',cls:'main-items-mailbox',
title:'Mailbox Items',routeId:'mailbox'});user.canRestoreSQL()&&this.add({xtype:'main-items-sql',cls:'main-items-sql',title:'SQL Database',routeId:'sql'});user.canRestoreOracle()&&this.add({xtype:'main-items-oracle',cls:'main-items-oracle',title:'Oracle Database',routeId:'oracle'});this.add({xtype:'main-items-history',cls:'main-items-history',title:'History',routeId:'history',listeners:{activate:'onHistoryActivate',deactivate:'onHistoryDeactivate',goback:'navigateToBack'}})}}},0,['main-items','main.items'],
'component box container panel tabpanel main.items main-items'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tabpanel:!0,'main.items':!0,'main-items':!0},['widget.main-items','widget.main.items'],0,[MainApp.view.main.items,'Items'],0);
Ext.cmd.derive('MainApp.view.main.requests.RequestsController',MainApp.base.controller.BaseController,{onLabRequestSelect:function(selModel,record){MainApp.service.rpc.Requests.getLabRequestDetails(record.id).then(this.rpcHandlers.getLabRequestDetails.bind(this))},onReloadData:function(panel,selectedRequest){var requestsDetails=this.lookupReference('requestsDetails'),requestsLogs=this.lookupReference('requestsLogs');panel=panel.lookupReference('requestList');requestsDetails.getStore().loadData([]);
requestsLogs.getStore().loadData([]);selectedRequest&&selectedRequest.isModel&&(panel.getSelectionModel().deselectAll(),(selectedRequest=panel.getStore().getById(selectedRequest.id))&&panel.setSelection(selectedRequest))},rpcHandlers:{getLabRequestDetails:function(response){var requestsDetails=this.lookupReference('requestsDetails'),requestsLogs=this.lookupReference('requestsLogs'),details=response.message.details;response=response.message.logs;requestsDetails.getStore().loadData(details);requestsLogs.getStore().loadData(response)}}},
0,0,0,0,['controller.main.requests'],0,[MainApp.view.main.requests,'RequestsController'],0);Ext.cmd.derive('MainApp.view.main.requests.RequestsModel',Ext.app.ViewModel,{data:{},formulas:{},stores:{}},0,0,0,0,['viewmodel.main.requests'],0,[MainApp.view.main.requests,'RequestsModel'],0);
Ext.cmd.derive('MainApp.view.main.requests.GridController',MainApp.base.controller.BaseController,{afterRender:function(){var me=this;setTimeout(function(){me.loadData()},1)},addHandler:function(){Ext.create('MainApp.RequestLabWizard',{listeners:{save:'onSaveRequest',scope:this}}).show()},onSaveRequest:function(){var me=this;setTimeout(function(){me.loadData()},300)},approveHandler:function(){var selectedRequest=this.getViewModel().get('selectedRequest');selectedRequest&&Ext.create('MainApp.RequestLabWizard',
{requestId:selectedRequest.id,listeners:{save:'onSaveRequest',scope:this}}).show()},rejectHandler:function(){var me=this,selectedRequest=me.getViewModel().get('selectedRequest'),decline=new Ext.Deferred;selectedRequest&&(Ext.create('MainApp.view.main.requests.RejectDialog',{listeners:{okclick:function(message){decline.resolve(message)},cancelclick:function(){decline.reject()}}}).show(),decline.then(MainApp.service.rpc.Requests.declineLabRequest.bind(me,selectedRequest.id)).then(function(){setTimeout(function(){me.loadData()},
300)}))},prolongHandler:function(){var me=this,selectedRequest=me.getViewModel().get('selectedRequest'),prolong=new Ext.Deferred;selectedRequest&&(Ext.create('MainApp.view.main.requests.ProlongDialog',{listeners:{okclick:function(duration){prolong.resolve(duration)},cancelclick:function(){prolong.reject()}}}).show(),prolong.then(me.prolongOkHandler.bind(me,selectedRequest)).then(function(response){Common.ui.Msg.success(response);setTimeout(function(){me.loadData()},300)}).always(function(){me.getView().setLoading(!1)}))},
prolongOkHandler:function(selectedRequest,duration){this.getView().setLoading();return MainApp.service.rpc.Requests.prolongLabRequest(selectedRequest.id,duration)},onExportToExcel:function(){var vm=this.getViewModel(),sortInfo=this.lookupReference('requestList').getSortInfo();vm={vmName:vm.get('vmName'),state:vm.get('selectedState.stateParam')};Ext.apply(vm,sortInfo);(new Veeam.util.ExcelExporter('report.export.labRequests',vm)).start()},clearNameField:function(field){field.setValue(null)},nameFieldChange:function(field){var value=
Common.util.Format.ltrim(field.getValue()),hasValue=!!value,triggers=field.getTriggers();field.setValue(value);triggers.clear.setVisible(hasValue);triggers.search.setVisible(!hasValue);this.loadData()},onSelectState:function(){var me=this;setTimeout(function(){me.loadData()},10)},durationSecColumnFormatter:function(value){value=Math.round(value/60);return value.toString()+(1===value?' minute':' minutes')},stateColumnFormatter:function(value){return(value=this.getViewModel().get('statesStore').getById(value))?
value.get('name'):'Undefined'},loadData:function(){var me=this;me.getView().lookup('requestList').getStore().load(function(){me.fireViewEvent('reloaddata',me.getViewModel().get('selectedRequest'))})}},0,0,0,0,['controller.main.requests.grid'],0,[MainApp.view.main.requests,'GridController'],0);
Ext.cmd.derive('MainApp.view.main.requests.GridModel',Ext.app.ViewModel,{data:{selectedState:null,vmName:'',selectedRequest:null},formulas:{disabledApproveBtn:function(get){get=get('selectedRequest.state');return!(3===get||7===get)},disabledRejectBtn:function(get){get=get('selectedRequest.state');return 1===get||6===get},disabledProlongBtn:function(get){return 4!==get('selectedRequest.state')},canUserApporveOrReject:function(){return MainApp.app.getUser().canConfigurate()}},stores:{requestsStore:{type:'app-store',
rpcMethod:'Api.report.labRequests',fields:['id','username','vmName','description',{name:'durationSec',type:'int'},{name:'requestDate',type:'date',dateFormat:'c'},{name:'state',type:'int'}],remoteSort:!0,sorters:[{property:'requestDate',direction:'DESC'}],extraParams:{vmName:'{vmName}',state:'{selectedState.stateParam}'}},statesStore:{fields:[{name:'id',type:'int'},{name:'name',type:'string'},{name:'stateParam',calculate:function(data){return 0>data.id?null:data.id}}],data:[{id:-1,name:'All States'},
{id:1,name:'Cancelled'},{id:2,name:'Approved'},{id:3,name:'Preparing'},{id:4,name:'Ready'},{id:6,name:'Stopped'},{id:7,name:'Failed'}]}}},0,0,0,0,['viewmodel.main.requests.grid'],0,[MainApp.view.main.requests,'GridModel'],0);
Ext.cmd.derive('MainApp.view.main.requests.labWizard.WizardController',ToolKit.wizard.WizardController,{listen:{component:{'*':{showmask:'onShowMask',hidemask:'onHideMask',disablefinish:'onDisableFinishBtn',disablenext:'onDisableNextBtn'},'main-requests-labwizard-labrequestcard field':{change:'cardStateChange'}}},init:function(){var view=this.getView();setTimeout(function(){view.setLoading()});MainApp.service.rpc.Requests.getLabsRequestData(view.requestId).then(this.rpcHandlers.loadDataHandler.bind(this),
Common.ui.Msg.error).always(function(){view.setLoading(!1)})},onSelectVm:function(record){this.getViewModel().set('selectedRecoveryVm',record.data)},onSelectPoint:function(record){this.getViewModel().set('selectedRecoveryPoint',record.data)},onSelectJob:function(record){this.getViewModel().set('selectedJob',record.data)},onShowMask:function(msg){this.getView().setLoading(msg||!0)},onHideMask:function(){this.getView().setLoading(!1)},onDisableFinishBtn:function(disabled){var btn=this.lookupReference('saveBtn');
setTimeout(function(){btn.setDisabled(disabled)},10)},onDisableNextBtn:function(disabled){this.lookupReference('nextBtn').setDisabled(disabled)},cardStateChange:function(field){this.getViewModel().set('lastUpdate',(new Date).getTime())},finishHandler:function(){this._saveData()},rpcHandlers:{loadDataHandler:function(response){this.getViewModel().set('labRequestData',response.formdata)},saveDataHandler:function(response){Common.ui.Msg.success(response);this.fireViewEvent('save');this.getView().closeWithoutConfirm()}},
privates:{_saveData:function(){var vm=this.getViewModel(),view=this.getView();view.setLoading('Please wait...');MainApp.service.rpc.Requests.prepareLab(vm.get('labRequestData'),vm.get('selectedRecoveryVm'),vm.get('selectedRecoveryPoint'),vm.get('selectedJob')).then(this.rpcHandlers.saveDataHandler.bind(this)).otherwise(Common.ui.Msg.error).always(function(){view.setLoading(!1)})}}},0,0,0,0,['controller.main.requests.labwizard'],0,[MainApp.view.main.requests.labWizard,'WizardController'],0);
Ext.cmd.derive('MainApp.view.main.requests.labWizard.WizardModel',Ext.app.ViewModel,{data:{labRequestData:{},selectedRecoveryVm:null,selectedRecoveryPoint:null,selectedJob:null,disabledForm:!1,showAllPoints:!1,showAllJobs:!1,lastUpdate:!0},formulas:{preferredDate:{bind:{bindTo:'{labRequestData.preferredDate}'},get:function(preferredDate){return preferredDate?new Date(1E3*preferredDate):null},set:function(value){var time=this.get('preferredTime');time=Ext.Date.format(value,'m/d/Y')+' '+Ext.Date.format(time,
'H:i:s');time=(new Date(time)).getTime()/1E3;this.set('labRequestData.preferredDate',time,value)}},preferredTime:{bind:{bindTo:'{labRequestData.preferredDate}'},get:function(preferredDate){return preferredDate?new Date(1E3*preferredDate):null},set:function(value){var date=this.get('preferredDate');date=Ext.Date.format(date,'m/d/Y')+' '+Ext.Date.format(value,'H:i:s');date=(new Date(date)).getTime()/1E3;this.set('labRequestData.preferredDate',date,value)}},preferredDateRound:{bind:{bindTo:'{labRequestData.preferredDate}'},
get:function(preferredDate){return preferredDate?Math.round(preferredDate):0}}},stores:{recoveryVmStore:{type:'app-store',rpcMethod:'Api.getRecoveryVmData',fields:['vmName','backupServerName','restorePointCount','isSelected','type',{name:'dnsName',mapping:'details'},{name:'ipAddress',mapping:'details'}],extraParams:{form:'{labRequestData}',request_id:'{labRequestData.id}'}},recoveryPointsStore:{type:'app-store',rpcMethod:'Api.getVmRecoveryPoints',fields:['oibId','isSelected','backupDateStr','backupDate',
{name:'backupDateTime',type:'date',calculate:function(data){return Ext.Date.parse(data.backupDate,'timestamp')}}],extraParams:{form:'{selectedRecoveryVm}',request_id:'{labRequestData.id}',showall:'{showAllPoints}',preferredDate:'{preferredDateRound}'}},jobsStore:{type:'app-store',rpcMethod:'Api.getVmRecoveryJobs',fields:'jobId jobName jobState isSelected jobStateStr startedDate'.split(' '),extraParams:{form:'{selectedRecoveryPoint}',request_id:'{labRequestData.id}',showall:'{showAllJobs}',preferredDate:'{preferredDateRound}'}}}},
0,0,0,0,['viewmodel.main.requests.labwizard'],0,[MainApp.view.main.requests.labWizard,'WizardModel'],0);
Ext.define('MainApp.view.main.requests.labWizard.BaseCard',{extend:ToolKit.wizard.Card,alternateClassName:'MainApp.RequestLabWizard.BaseCard',alias:'widget.main.requests.labWizard.basecard',xtype:'main-requests-labwizard-basecard',mixins:[Veeam.mixin.WizardCardTitle],viewModel:{},config:{lastUpdate:0},defaults:{padding:'0 16'},initComponent:function(){ToolKit.wizard.Card.prototype.initComponent.apply(this,arguments)},hideMask:function(){this.fireEvent('hidemask')},hasChanges:function(){var lastUpdate=
this.getViewModel().get('lastUpdate'),hasChanges=this.getLastUpdate()<lastUpdate;hasChanges&&this.setLastUpdate(lastUpdate);return hasChanges}});
Ext.define('MainApp.view.main.requests.labWizard.LabRequestCard',{extend:MainApp.view.main.requests.labWizard.BaseCard,alternateClassName:'MainApp.RequestLabWizard.LabRequestCard',alias:'widget.main.requests.labwizard.labrequestcard',xtype:'main-requests-labwizard-labrequestcard',cardTitle:'Select machine to put in the virtual lab',isActivated:!1,referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{items:[{xtype:'container',padding:'0 16',layout:{type:'vbox',
align:'stretch'},defaults:{labelWidth:120},items:[{xtype:'textfield',fieldLabel:'Machine',emptyText:'Type in machine name',bind:{value:'{labRequestData.reqVmName}',disabled:'{disabledForm}'}},{xtype:'textfield',emptyText:'Type in user name',fieldLabel:'Issued by',allowBlank:!1,firstChange:!0,bind:{value:'{labRequestData.user}',disabled:'{disabledForm}'},listeners:{change:{fn:this.handlers.changeUserName,buffer:500,scope:this}}},{xtype:'fieldcontainer',layout:'hbox',fieldLabel:'Date',bind:{disabled:'{disabledForm}'},
items:[{xtype:'timefield',format:'defaultTimeFormat',reference:'timeField',allowBlank:!1,width:120,margin:'0 8 0 0',bind:{value:'{preferredTime}'}},{xtype:'datefield',hideLabel:!0,allowBlank:!1,width:140,bind:{value:'{preferredDate}'}}]},{xtype:'fieldcontainer',margin:'8 0',layout:'hbox',bind:{disabled:'{disabledForm}'},fieldLabel:'Required Duration',items:[{xtype:'numberfield',allowBlank:!1,width:120,bind:'{labRequestData.preferredDuration}'},{xtype:'label',text:'min',margin:'7 0 0 4'}]},{xtype:'textarea',
fieldLabel:'Description',height:90,flex:1,name:'description',bind:{value:'{labRequestData.description}',disabled:'{disabledForm}'}},{xtype:'container',layout:'hbox',items:[{xtype:'button',text:'Edit request',ui:'text',reference:'editRequestBtn',handler:this.handlers.toggleEditButton,scope:this,bind:{hidden:'{!disabledForm}'}},{xtype:'button',text:'Cancel edits',ui:'text',reference:'cancelEditsBtn',hidden:!0,handler:this.handlers.toggleEditButton,scope:this,bind:{hidden:'{disabledForm}'}}]}]}],listeners:{activate:'onCardActivate',
scope:this}});MainApp.view.main.requests.labWizard.BaseCard.prototype.initComponent.apply(this,arguments)},onCardActivate:function(){this.isActivated||(this.isActivated=!0)},handlers:{toggleEditButton:function(){var vm=this.getViewModel();vm.set('disabledForm',!vm.get('disabledForm'))},changeUserName:function(field,value){var me=this;Ext.String.trim(value)?(me.fireEvent('disablenext',!0),MainApp.service.rpc.Requests.resolveLabUser(value).then(function(response){field.clearInvalid();me.fireEvent('disablenext',
!1)},function(response){field.markInvalid(response.message||'Incorrect value')})):field.setValue(null)}}});
Ext.define('MainApp.view.main.requests.labWizard.BackupCard',{extend:MainApp.view.main.requests.labWizard.BaseCard,alternateClassName:'MainApp.RequestLabWizard.BackupCard',alias:'widget.main.requests.labwizard.backupcard',xtype:'main-requests-labwizard-backupcard',cardTitle:'Select backup to use if machine is processed by more than one job',isActivated:!1,referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){var me=this;Ext.apply(me,{items:[{xtype:'deferredmaskgrid',padding:'0 16',
margin:'-16 0 0 0',flex:1,columns:{defaults:{flex:1,menuDisabled:!0},items:[{text:'Machine',dataIndex:'vmName'},{text:'Backup server',dataIndex:'backupServerName'},{text:'Type',dataIndex:'type',flex:.6},{text:'Restore points',dataIndex:'restorePointCount',flex:.85,align:'right'}]},bind:{store:'{recoveryVmStore}',selection:'{selectedRecoveryVm}'},listeners:{select:function(model,record){me.fireEvent('selectvm',record)}}}],listeners:{activate:'onCardActivate',scope:me}});MainApp.view.main.requests.labWizard.BaseCard.prototype.initComponent.apply(this,
arguments)},onCardActivate:function(){var vm=this.getViewModel();if(this.hasChanges()||!this.isActivated)vm.get('recoveryVmStore').load(function(records){if(records.length){var selectedRecord=null;Ext.each(records,function(record){record.get('isSelected')&&(selectedRecord=record)});vm.set('selectedRecoveryVm',selectedRecord||records[0])}}),this.isActivated=!0},customValidate:function(){return!!this.getViewModel().get('selectedRecoveryVm')&&MainApp.view.main.requests.labWizard.BaseCard.prototype.customValidate.apply(this,
arguments)}});
Ext.define('MainApp.view.main.requests.labWizard.RestorePointCard',{extend:MainApp.view.main.requests.labWizard.BaseCard,alternateClassName:'MainApp.RequestLabWizard.RestorePointCard',alias:'widget.main.requests.labwizard.restorepointcard',xtype:'main-requests-labwizard-restorepointcard',cardTitle:'Select date and time to restore machine to',isActivated:!1,referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){var me=this;Ext.apply(me,{items:[{xtype:'deferredmaskgrid',padding:'0 16 16 16',
cls:'restore-point-grid',margin:'-16 0 0 0',flex:1,columns:{defaults:{flex:1},items:[{text:'Backup date',dataIndex:'backupDateTime',formatter:'date("defaultFullDateFormat")'}]},bind:{store:'{recoveryPointsStore}',selection:'{selectedRecoveryPoint}'},listeners:{select:function(model,record){me.fireEvent('selectpoint',record)}}},{xtype:'checkbox',boxLabel:'Show all available restore points',margin:'8 16',bind:{value:'{showAllPoints}'},listeners:{change:function(field,value){me._loadData()}}}],listeners:{activate:'onCardActivate',
scope:me}});MainApp.view.main.requests.labWizard.BaseCard.prototype.initComponent.apply(this,arguments)},onCardActivate:function(){if(this.hasChanges()||!this.isActivated)this._loadData(),this.isActivated=!0},customValidate:function(){return!!this.getViewModel().get('selectedRecoveryPoint')&&MainApp.view.main.requests.labWizard.BaseCard.prototype.customValidate.apply(this,arguments)},privates:{_loadData:function(){var vm=this.getViewModel();setTimeout(function(){vm.get('recoveryPointsStore').load(function(records){if(records.length){var selectedRecord=
null;Ext.each(records,function(record){record.get('isSelected')&&(selectedRecord=record)});vm.set('selectedRecoveryPoint',selectedRecord||records[0])}})},30)}}});
Ext.define('MainApp.view.main.requests.labWizard.SureBackupJobCard',{extend:MainApp.view.main.requests.labWizard.BaseCard,alternateClassName:'MainApp.RequestLabWizard.SureBackupJobCard',alias:'widget.main.requests.labwizard.surebackupjobcard',xtype:'main-requests-labwizard-surebackupjobcard',cardTitle:'Select SureBackup job to use for provisioning the lab. The job must contain required machine',isActivated:!1,referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){var me=
this;Ext.apply(me,{items:[{xtype:'deferredmaskgrid',padding:'0 16 16 16',margin:'-16 0 0 0',flex:1,columns:{defaults:{flex:1,menuDisabled:!0},items:[{text:'Job name ',dataIndex:'jobName'},{text:'Job state',dataIndex:'jobStateStr'}]},bind:{store:'{jobsStore}',selection:'{selectedJob}'},listeners:{select:function(model,record){me.fireEvent('selectjob',record)}}},{xtype:'wizard-cardsection',title:'Selected Job details',cls:'selected-job-details',padding:'0 16 8 16',items:[{xtype:'component',html:'\x3cdiv class\x3d"job-details"\x3eApplication group:\x3cbr /\x3eVirtual Lab:\x3c/div\x3e',
bind:{html:'\x3cdiv class\x3d"job-details"\x3eApplication group: \x3cstrong\x3e{selectedJob.details.appGroup}\x3c/strong\x3e\x3cbr /\x3eVirtual Lab: \x3cstrong\x3e{selectedJob.details.vLab}\x3c/strong\x3e\x3c/div\x3e'}}]},{xtype:'checkbox',boxLabel:'Show all available SureBackup jobs',margin:'8 16 8 16',bind:{value:'{showAllJobs}'},listeners:{change:function(field,value){me._loadData()}}}],listeners:{activate:'onCardActivate',scope:me}});MainApp.view.main.requests.labWizard.BaseCard.prototype.initComponent.apply(this,
arguments)},onCardActivate:function(){if(this.hasChanges()||!this.isActivated)this._loadData(),this.isActivated=!0},customValidate:function(){return!!this.getViewModel().get('selectedJob')&&MainApp.view.main.requests.labWizard.BaseCard.prototype.customValidate.apply(this,arguments)},privates:{_loadData:function(){var vm=this.getViewModel();setTimeout(function(){vm.get('jobsStore').load(function(records){if(records.length){var selectedRecord=null;Ext.each(records,function(record){record.get('isSelected')&&
(selectedRecord=record)});vm.set('selectedJob',selectedRecord||records[0])}})},30)}}});
Ext.define('MainApp.view.main.requests.labWizard.SummaryCard',{extend:MainApp.view.main.requests.labWizard.BaseCard,alternateClassName:'MainApp.RequestLabWizard.SummaryCard',alias:'widget.main.requests.labwizard.summarycard',xtype:'main-requests-labwizard-summarycard',cardTitle:'Please review the lab request settings',isActivated:!1,referenceHolder:!0,layout:{type:'vbox',align:'stretch'},initComponent:function(){Ext.apply(this,{items:[{padding:'0 16',xtype:'component',cls:'summary-panel',reference:'summaryPanel'}],
listeners:{activate:'onCardActivate',scope:this}});MainApp.view.main.requests.labWizard.BaseCard.prototype.initComponent.apply(this,arguments)},onCardActivate:function(){var vm=this.getViewModel();if(this.hasChanges()||!this.isActivated)this.fireEvent('disablefinish',!0),MainApp.service.rpc.Requests.verifyLab(vm.get('selectedRecoveryVm'),vm.get('selectedRecoveryPoint'),vm.get('selectedJob')).then(this.rpcHandlers.loadDataHandler.bind(this),Common.ui.Msg.error),this.isActivated=!0},rpcHandlers:{loadDataHandler:function(response){this.lookupReference('summaryPanel').update(Ext.util.Format.nl2br(response.message));
this.fireEvent('disablefinish',!1)}}});
Ext.define('MainApp.view.main.requests.labWizard.Wizard',{extend:Veeam.view.VeeamWizard,alternateClassName:'MainApp.RequestLabWizard',alias:'widget.main.requests.labwizard',plugin:['deferredmask'],viewModel:{type:'main.requests.labwizard'},controller:'main.requests.labwizard',config:{isNewRequest:!0,requestId:null},cls:'requests-wizard',defaultBodyPadding:0,prevButtonText:'Previous',height:550,width:810,autoClose:!1,tabWidth:134,initComponent:function(){var requestId=this.getRequestId();Ext.apply(this,
{title:this.isNewRequest?'New Lab Request':'Edit Lab Request',items:[{title:'Lab Request',xtype:'main-requests-labwizard-labrequestcard',reference:'labRequestCard',cls:'lab-request-card',requestId:requestId},{title:'Backup',xtype:'main-requests-labwizard-backupcard',reference:'backupCard',cls:'backup-card',requestId:requestId,listeners:{selectvm:'onSelectVm'}},{title:'Restore Point',xtype:'main-requests-labwizard-restorepointcard',reference:'restorePointCard',cls:'restore-point-card',listeners:{selectpoint:'onSelectPoint'}},
{title:'SureBackup Job',xtype:'main-requests-labwizard-surebackupjobcard',reference:'surebackupJobCard',cls:'surebackup-job-card',listeners:{selectjob:'onSelectJob'}},{title:'Summary',xtype:'main-requests-labwizard-summarycard',reference:'summaryCard',cls:'summary-card'}]});Veeam.view.VeeamWizard.prototype.initComponent.apply(this,arguments)},listeners:{finish:'finishHandler'}});
Ext.cmd.derive('MainApp.view.main.requests.RejectDialog',Veeam.base.view.BaseWindow,{layout:'fit',title:'Decline Request',height:230,width:300,bodyPadding:15,modal:!0,resizable:!1,items:[{xtype:'textarea',flex:1,labelAlign:'top',fieldLabel:'Message'}],initComponent:function(){var me=this;Ext.apply(me,{buttons:[{text:'OK',ui:'primary',handler:function(){me.fireEvent('okclick',me.down('textarea').getValue());me.close()}},{text:'Cancel',ui:'alternate',handler:function(){me.close()}}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,
arguments)}},0,0,['component','box','container','panel','window'],{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.requests,'RejectDialog'],0);
Ext.cmd.derive('MainApp.view.main.requests.ProlongDialog',Veeam.base.view.BaseWindow,{layout:{type:'vbox',align:'stretch'},title:'Prolong Lab Request',height:250,width:240,bodyPadding:15,modal:!0,resizable:!1,initComponent:function(){var me=this;Ext.apply(me,{items:[{xtype:'form',layout:{type:'hbox',align:'stretch'},margin:'0 0 16 0',items:[{xtype:'numberfield',value:15,minValue:1,maxValue:9999,fieldLabel:'Duration',labelWidth:70,flex:1,margin:'0 15 0 0'},{xtype:'label',text:'min',margin:'7 0 0 0'}]},
{xtype:'container',layout:{type:'hbox',align:'stretch'},defaults:{xtype:'button',ui:'text',flex:1},items:[{text:'15 min',duration:15,handler:'buttonClickHandler',scope:me},{text:'30 min',duration:30,handler:'buttonClickHandler',scope:me},{text:'1 hour',duration:60,handler:'buttonClickHandler',scope:me}]},{xtype:'container',layout:{type:'hbox',align:'stretch'},defaults:{xtype:'button',ui:'text',flex:1},items:[{text:'2 hours',duration:120,handler:'buttonClickHandler',scope:me},{text:'4 hours',duration:240,
handler:'buttonClickHandler',scope:me},{text:'8 hours',duration:480,handler:'buttonClickHandler',scope:me}]}],buttons:[{text:'OK',ui:'primary',handler:function(){me.fireEvent('okclick',me.down('numberfield').getValue());me.close()}},{text:'Cancel',ui:'alternate',handler:function(){me.close()}}]});Veeam.base.view.BaseWindow.prototype.initComponent.apply(this,arguments)},buttonClickHandler:function(btn){this.down('numberfield').setValue(btn.duration)}},0,0,['component','box','container','panel','window'],
{component:!0,box:!0,container:!0,panel:!0,window:!0},0,0,[MainApp.view.main.requests,'ProlongDialog'],0);
Ext.cmd.derive('MainApp.view.main.requests.RequestList',Veeam.base.view.BaseGrid,{cls:'main-requests-grid',bodyCls:'main-requests-grid-body'},0,['main-requests-list'],'component box container panel tablepanel gridpanel grid deferredmaskgrid basegrid main-requests-list'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,basegrid:!0,'main-requests-list':!0},['widget.main-requests-list'],0,[MainApp.view.main.requests,'RequestList'],0);
Ext.cmd.derive('MainApp.view.main.requests.Grid',Ext.Panel,{controller:'main.requests.grid',viewModel:{type:'main.requests.grid'},layout:{type:'vbox',align:'stretch'},items:[{xtype:'toolbar',cls:'filter-toolbar',items:[{xtype:'combo',width:170,labelWidth:34,fieldLabel:'State',queryMode:'local',displayField:'name',valueField:'id',forceSelection:!0,editable:!1,value:-1,bind:{store:'{statesStore}',selection:'{selectedState}'},listeners:{select:'onSelectState'}},{xtype:'textfield',width:374,labelWidth:94,
fieldLabel:'Machine name',cls:'textfield-search',inputAttrTpl:'required',triggers:{clear:{cls:'x-form-clear-trigger',hidden:!0,handler:'clearNameField'},search:{cls:'x-form-search-trigger',handler:'loadData'}},bind:'{vmName}',listeners:{change:{buffer:500,fn:'nameFieldChange'}}}]},{xtype:'main-requests-list',reference:'requestList',leftButtons:[{text:'Create...',iconCls:'add',handler:'addHandler'},{text:'Approve...',iconCls:'start',disabled:!0,handler:'approveHandler',bind:{disabled:'{disabledApproveBtn}',
hidden:'{!canUserApporveOrReject}'}},{text:'Reject...',iconCls:'job-stop',disabled:!0,handler:'rejectHandler',bind:{disabled:'{disabledRejectBtn}',hidden:'{!canUserApporveOrReject}'}},{text:'Prolong...',iconCls:'job-retry',disabled:!0,handler:'prolongHandler',bind:{disabled:'{disabledProlongBtn}'}}],columns:{defaults:{flex:1,menuDisabled:!0},items:[{text:'User name',dataIndex:'username'},{text:'Machine',dataIndex:'vmName'},{text:'Description',dataIndex:'description',sortable:!1},{text:'Duration',
dataIndex:'durationSec',formatter:'this.durationSecColumnFormatter',sortable:!1},{text:'Date',dataIndex:'requestDate',xtype:'datecolumn'},{text:'State',dataIndex:'state',formatter:'this.stateColumnFormatter'}]},bind:{store:'{requestsStore}',selection:'{selectedRequest}'},listeners:{exporttoexcel:'onExportToExcel'}}]},0,['main-requests-grid','main.requests.grid'],'component box container panel main.requests.grid main-requests-grid'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.requests.grid':!0,
'main-requests-grid':!0},['widget.main-requests-grid','widget.main.requests.grid'],0,[MainApp.view.main.requests,'Grid'],0);
Ext.cmd.derive('MainApp.view.main.requests.Details',Veeam.base.view.DeferredMaskGrid,{cls:'main-requests-details',bodyCls:'main-requests-details-body',hideHeaders:!0,viewConfig:{trackOver:!1,disableSelection:!0},initComponent:function(){Ext.apply(this,{columns:[{name:'Label',dataIndex:'label',width:180},{name:'Value',dataIndex:'value',flex:1,formatter:'this.valueColumnFormatter',scope:this}]});Veeam.base.view.DeferredMaskGrid.prototype.initComponent.apply(this,arguments)},store:{fields:['label','value'],
data:[]},valueColumnFormatter:function(value){return MainApp.view.main.requests.Requests.tryParseDate(value)}},0,['main-requests-details','main.requests.details'],'component box container panel tablepanel gridpanel grid deferredmaskgrid main.requests.details main-requests-details'.split(' '),{component:!0,box:!0,container:!0,panel:!0,tablepanel:!0,gridpanel:!0,grid:!0,deferredmaskgrid:!0,'main.requests.details':!0,'main-requests-details':!0},['widget.main-requests-details','widget.main.requests.details'],
0,[MainApp.view.main.requests,'Details'],0);
Ext.cmd.derive('MainApp.view.main.requests.Log',Ext.view.View,{plugins:['deferredmask'],cls:'main-requests-log',tpl:new Ext.XTemplate('\x3ctpl for\x3d"."\x3e','\x3ctpl if\x3d"status"\x3e','\x3cdiv style\x3d"margin-bottom: 5px; margin-top: 5px;" class\x3d"log-item-wrap x-unselectable {statusCls}"\x3e','\x3cspan data-qtip\x3d"Event time: {formattedDate}"\x3e\x3cstrong\x3e{status}:\x3c/strong\x3e {info}\x3c/span\x3e','\x3c/div\x3e','\x3ctpl else\x3e','\x3cdiv style\x3d"margin-bottom: 5px;" class\x3d"log-item-wrap x-unselectable"\x3e','{info}',
'\x3c/div\x3e','\x3c/tpl\x3e','\x3c/tpl\x3e'),itemSelector:'div.log-item-wrap',scrollable:'y',store:{fields:['date','status','info',{name:'statusCls',calculate:function(data){return'Failed'===data.status?'error':'success'}},{name:'formattedDate',calculate:function(data){return data.date?MainApp.view.main.requests.Requests.tryParseDate(data.date):''}}]}},0,['main-requests-log','main.requests.log'],['component','box','dataview','main.requests.log','main-requests-log'],{component:!0,box:!0,dataview:!0,
'main.requests.log':!0,'main-requests-log':!0},['widget.main-requests-log','widget.main.requests.log'],0,[MainApp.view.main.requests,'Log'],0);
Ext.cmd.derive('MainApp.view.main.requests.Requests',Ext.Panel,{statics:{tryParseDate:function(str){str=str.replace('  ',' ');var date=Ext.Date.parse(str,'M d Y G:iA');return date?Ext.Date.format(date,'defaultFullDateFormat'):str}},controller:'main.requests',viewModel:{type:'main.requests'},cls:'main-requests',bodyCls:'main-requests-body',layout:{type:'vbox',align:'stretch'},items:[{xtype:'main-requests-grid',flex:1,reference:'RequestsGrid',margin:0,listeners:{select:'onLabRequestSelect',reloaddata:'onReloadData'}},
{xtype:'container',cls:'tab-panel-container',height:300,layout:'fit',items:[{xtype:'tabpanel',cls:'details-footer',items:[{xtype:'main-requests-details',reference:'requestsDetails',title:'Details'},{xtype:'main-requests-log',reference:'requestsLogs',title:'Log'}]}]}]},0,['main-requests','main.requests'],'component box container panel main.requests main-requests'.split(' '),{component:!0,box:!0,container:!0,panel:!0,'main.requests':!0,'main-requests':!0},['widget.main-requests','widget.main.requests'],
0,[MainApp.view.main.requests,'Requests'],0);Ext.cmd.derive('MainApp.view.main.Main',Ext.Panel,{layout:'border',border:!1,cls:'main-panel',bodyCls:'main-panel-body',controller:'main.main',items:[{xtype:'maintabpanel',reference:'containerPn',ctype:'centerPanel',layout:'fit',region:'center',scrollable:!0,items:[],listeners:{beforerender:'tabPanelBeforeRender'}}]},0,0,['component','box','container','panel'],{component:!0,box:!0,container:!0,panel:!0},0,0,[MainApp.view.main,'Main'],0);
Ext.cmd.derive('MainApp.view.common.SiteHeader',Ext.Component,{siteName:'Veeam Backup Enterprise Manager',renderTpl:new Ext.XTemplate('\x3cdiv class\x3d"site-header"\x3e','\x3cdiv class\x3d"site-header-icon product-icon-32"\x3e\x3cspan\x3e{siteName}\x3c/span\x3e\x3c/div\x3e','\x3c/div\x3e'),initRenderData:function(){var data=Ext.Component.prototype.initRenderData.call(this);return Ext.apply(data,{siteName:this.siteName})}},0,['siteHeader'],['component','box','siteHeader'],{component:!0,box:!0,siteHeader:!0},
['widget.siteHeader'],0,[MainApp.view.common,'SiteHeader'],0);
Ext.cmd.derive('Veeam.view.login.Login',Ext.form.Panel,{plugins:[{ptype:'deferredmask'}],width:384,ui:'login',title:'Welcome! Please log in.',titleAlign:'center',layout:{type:'vbox',align:'stretch'},defaults:{labelWidth:70},fieldDefaults:{labelSeparator:null},labelWidth:120,enableKeyEvents:!0,listeners:{keydown:{fn:'onFormKeydown',buffer:100},hide:'onHide'}},0,0,['component','box','container','panel','form'],{component:!0,box:!0,container:!0,panel:!0,form:!0},0,0,[Veeam.view.login,'Login'],0);
Ext.cmd.derive('MainApp.view.login.LoginController',Ext.app.ViewController,{initViewModel:function(vm){vm.set('showIENotice',!this._getIENotice());Ext.isDefined(LoginConfig)&&LoginConfig.persist&&(vm.set('username',LoginConfig.username),vm.set('password',LoginConfig.password),vm.set('persist',LoginConfig.persist))},hideErrorMsg:function(){this.getView().getForm().clearInvalid()},onHide:function(){this.getView().getForm().reset()},submitForm:function(){var me=this,view=me.getView(),form=view.getForm(),
msgField=me.lookupReference('msg'),viewModel=me.getViewModel(),queryParams=Ext.Object.fromQueryString(self.location.search),loadingCmp=me.lookupReference('loginLoader');if(form.isValid()){view.getForm().clearInvalid();loadingCmp.showBy(view,'tr',[-52,8]);queryParams=Object.prototype.hasOwnProperty.call(queryParams,'selfrestore');form=form.getValues(!1,!1,!1,!1);var passwd=Common.util.Format.btoa(form.password);delete form.password;form=Ext.apply({password:passwd,selfRestoreMode:queryParams},form);
viewModel.set('isLoading',!0);Ext.Ajax.request({method:'POST',timeout:9E5,params:form,url:'./Login.aspx',callback:function(options,success,response){options='';loadingCmp.hide();!1===success&&(options=response.statusText);-1===response.status&&(options='Logon attempt aborted. Please try again later');(response=Ext.decode(response.responseText))&&!1===response.success&&(options=response.errorMessage,success=!1);!1===success?(msgField&&msgField.removeCls('warn-msg').setHidden(!1).addCls('error-msg'),
viewModel.set('errorMsg',options),viewModel.set('isLoading',!1),success=view.down('textfield[name\x3dusername]'),response=view.down('textfield[name\x3dpassword]'),success.markInvalid(options),response.markInvalid(options)):(me._saveIENotice(),window.open(response.redirectUrl,'_self'))}})}},onPasswordKeypressOrClick:function(){var args=Array.prototype.slice.call(arguments),msg=this.lookupReference('msg');(args=args[1].browserEvent?args[1].browserEvent:args[0].browserEvent)&&args instanceof KeyboardEvent&&
(args.keyCode===Ext.event.Event.ENTER?this.submitForm():args.getModifierState('CapsLock')?msg.removeCls('error-msg').addCls('warn-msg').setHidden(!1).setValue('Caps Lock is on'):msg.removeCls('warn-msg').setHidden(!0).setValue(''))},privates:{_saveIENotice:function(){Ext.isIE&&Ext.supports.LocalStorage&&localStorage.setItem('ienotice',!0)},_getIENotice:function(){return Ext.isIE&&Ext.supports.LocalStorage?localStorage.getItem('ienotice')||!1:!0}}},0,0,0,0,['controller.loginform'],0,[MainApp.view.login,
'LoginController'],0);
Ext.cmd.derive('MainApp.view.login.Login',Veeam.view.login.Login,{controller:{type:'loginform'},viewModel:{data:{loginEmptyText:'Enter account in DOMAIN\\username format',ieNoticeText:'If you are using Internet Explorer, add this site to "Local intranet sites" to enable single sign-on',showIENotice:!1,errorMsg:null,isLoading:!1,username:null,password:null,persist:!1}},defaultFocus:'field[name\x3duser]',items:[{xtype:'component',floating:!0,width:148,height:48,reference:'loginLoader',cls:'login-loader',
shadow:!1},{xtype:'displayfield',hidden:!0,fieldLabel:' ',reference:'msg',bind:{value:'{errorMsg}'},value:'',anchor:'100%'},{xtype:'displayfield',hidden:!0,fieldLabel:' ',bind:{value:'{ieNoticeText}',hidden:'{!showIENotice}'},cls:'warn-msg',anchor:'100%'},{xtype:'textfield',allowBlank:!1,fieldLabel:'Username',nameGroupLabels:'loginGL',anchor:'100%',name:'username',bind:{emptyText:'{loginEmptyText}',disabled:'{isLoading}',value:'{username}'},listeners:{change:{fn:'hideErrorMsg',buffer:100}}},{xtype:'textfield',
allowBlank:!1,emptyText:'Enter password',enableKeyEvents:!0,fieldLabel:'Password',nameGroupLabels:'loginGL',anchor:'100%',inputType:'password',name:'password',bind:{disabled:'{isLoading}',value:'{password}'},listeners:{keyup:{fn:'onPasswordKeypressOrClick',buffer:100},click:{element:'el',fn:'onPasswordKeypressOrClick',buffer:100},change:{fn:'hideErrorMsg',buffer:100}}},{fieldLabel:'\x26nbsp;',xtype:'checkbox',boxLabel:'Remember me',name:'persist',bind:{value:'{persist}',disabled:'{isLoading}'}},{xtype:'fieldcontainer',
fieldLabel:'\x26nbsp;',items:[{xtype:'button',handler:'submitForm',ui:'primary',bind:{disabled:'{isLoading}'},text:'Login',formBind:!0}]}]},0,['loginform'],'component box container panel form loginform'.split(' '),{component:!0,box:!0,container:!0,panel:!0,form:!0,loginform:!0},['widget.loginform'],0,[MainApp.view.login,'Login'],0);
Ext.cmd.derive('MainApp.view.login.LoginViewport',Ext.container.Viewport,{layout:'border',items:[{xtype:'siteHeader',region:'north'},{xtype:'panel',layout:'center',region:'center',items:[{xtype:'loginform'}]}]},0,0,['component','box','container','viewport'],{component:!0,box:!0,container:!0,viewport:!0},0,0,[MainApp.view.login,'LoginViewport'],0);
Ext.cmd.derive('MainApp.service.rpc.Config',Ext.Base,{singleton:!0,getSelfserviceTabs:function(){return Common.Request.thenable(RPC.Api['config.selfservice.check'])},addOrEditVcdOrgConfiguration:function(id){return Common.Request.thenable(RPC.Api['configuration.vcloud.editRecord'],id)},vSphereGetPermissions:function(){return Common.Request.thenable(RPC.Api['config.selfservice.vsphere.getpermissions'])},getCurrentBrowseConstraint:function(){return Common.Request.thenable(RPC.Api['config.selfservice.vsphere.getdefaultsettings'])},
saveBrowseConstraint:function(type,value){type={type:type};type.permissionOrPrivilege=value;return Common.Request.thenable(RPC.Api['config.selfservice.vsphere.savebrowseconstraint'],type)},removeConfiguration:function(remodeConfigSpec){return Common.Request.thenable(RPC.Api['vsphere.config.removeWorkspaceConfiguration'],remodeConfigSpec)},saveDashboardSettings:function(data){return Common.Request.thenable(RPC.Api.updateInterfaceSettings,{backupEnd:data.backupEnd,backupStart:data.backupStart,isLog:data.isLog,
noDownloads:data.noDownloads,visible:data.visible})},saveRetentionSettings:function(data){return Common.Request.thenable(RPC.Api.updateSettings,{catalogRetentionPeriod:data.catalogRetentionPeriod,entRetentionPeriod:data.entRetentionPeriod,entRetentionEnabled:data.entRetentionEnabled,catalogKeepArchived:data.catalogKeepArchived,infoText:data.infoText})},saveExchangeSettings:function(data,paswordIsChanged){return Common.Request.thenable(RPC.Api['exchange.setSettings'],{username:data.username,password:paswordIsChanged?
data.password:null})}},0,0,0,0,0,0,[MainApp.service.rpc,'Config'],0);
Ext.cmd.derive('MainApp.service.rpc.Dashboard',Ext.Base,{singleton:!0,getActivityChartData:function(cachingMode,period){return Common.Request.thenable(RPC.Api['dashboard.getActivityChartData'],{cachingMode:cachingMode,period:period})},getSizeChartData:function(cachingMode){return Common.Request.thenable(RPC.Api['dashboard.getSizeChartData'],{cachingMode:cachingMode})},getBlocksData:function(cachingMode,period){return Common.Request.thenable(RPC.Api['dashboard.getBlocksData'],{cachingMode:cachingMode,
period:period})}},0,0,0,0,0,0,[MainApp.service.rpc,'Dashboard'],0);Ext.cmd.derive('MainApp.service.rpc.KeyManagement',Ext.Base,{singleton:!0,verify:function(text){return Common.Request.thenable(RPC.Api['keymanagement.verify'],text)},decrypt:function(text){return Common.Request.thenable(RPC.Api['keymanagement.decrypt'],text)}},0,0,0,0,0,0,[MainApp.service.rpc,'KeyManagement'],0);
Ext.cmd.derive('MainApp.service.rpc.Requests',Ext.Base,{singleton:!0,getLabsRequestData:function(requestId){return Common.Request.thenable(RPC.Api.getLabsRequestData,requestId||null)},verifyLab:function(selectedRecoveryVm,selectedRecoveryPoint,selectedJob){return Common.Request.thenable(RPC.Api.verifyLab,selectedRecoveryVm,selectedRecoveryPoint,selectedJob)},prepareLab:function(labRequestData,selectedRecoveryVm,selectedRecoveryPoint,selectedJob){return Common.Request.thenable(RPC.Api.prepareLab,labRequestData,
selectedRecoveryVm,selectedRecoveryPoint,selectedJob)},resolveLabUser:function(userName){return Common.Request.thenable(RPC.Api.resolveLabUser,userName)},getLabRequestDetails:function(reportId){return Common.Request.thenable(RPC.Api.getLabRequestDetailsNew,reportId)},declineLabRequest:function(reportId,message){return Common.Request.thenable(RPC.Api.declineLabRequest,reportId,message)},prolongLabRequest:function(reportId,duration){return Common.Request.thenable(RPC.Api.prolongRequest,reportId,duration)}},
0,0,0,0,0,0,[MainApp.service.rpc,'Requests'],0);
Ext.cmd.derive('Veeam.model.Permissions',Ext.Base,{singleton:!0},0,0,0,0,0,0,[Veeam.model,'Permissions'],function(){this[this.View=1]='View';this[this.Configure=2]='Configure';this[this.RestoreGuestFiles=8]='RestoreGuestFiles';this[this.DownloadRestoredFiles=16]='DownloadRestoredFiles';this[this.RestoreVMs=32]='RestoreVMs';this[this.RestoreExchangeItems=25]='RestoreExchangeItems';this[this.RestoreSQL=31]='RestoreSQL';this[this.RestoreSqlToOriginal=39]='RestoreSqlToOriginal';this[this.RestoreOracle=
41]='RestoreOracle';this[this.DeleteVm=42]='DeleteVm';this[this.StartQuickBackup=43]='StartQuickBackup'});
Ext.cmd.derive('Veeam.model.User',Ext.data.Model,{fields:[{name:'userName'},{name:'usrPermissions'},{name:'licType',type:'int'},{name:'selfRestoreMode',type:'bool'},{name:'hasWindowsAgentLicense',type:'bool'},{name:'hasLinuxAgentLicense',type:'bool'},{name:'defaultFullDateFormat',type:'string'},{name:'defaultDateFormat',type:'string'},{name:'defaultTimeFormat',type:'string'},{name:'appVersion',type:'string'},{name:'firstDayOfWeek',type:'int'},{name:'sessionLiveTime',type:'int'},{name:'logoutUrl',
type:'string'},{name:'keyManagementAvailable',type:'bool',defaultValue:!1},{name:'selfServiceAvailable',type:'bool',defaultValue:!1},{name:'hasLegacyLicense',type:'bool',defaultValue:!0},{name:'hasSocketsLicense',type:'bool',defaultValue:!0},{name:'showLicenseOverwriteWarning',type:'bool',defaultValue:!1}],privates:{containsPerm:function(permission){return-1!==this.get('usrPermissions').indexOf(permission)}},getUsername:function(){return this.get('userName')},getLicenseType:function(){return this.get('licType')},
getAppVersion:function(){return this.get('appVersion')},isSelfRestoreMode:function(){return this.get('selfRestoreMode')},canConfigurate:function(){return this.containsPerm(Veeam.model.Permissions.Configure)},canView:function(){return this.containsPerm(Veeam.model.Permissions.View)},canRestore:function(){return this.containsPerm(Veeam.model.Permissions.RestoreGuestFiles)},canDownload:function(){return this.containsPerm(Veeam.model.Permissions.DownloadRestoredFiles)},canRestoreVm:function(){return this.containsPerm(Veeam.model.Permissions.RestoreVMs)},
canRestoreExchageItems:function(){return this.containsPerm(Veeam.model.Permissions.RestoreExchangeItems)},canRestoreSQL:function(){return this.containsPerm(Veeam.model.Permissions.RestoreSQL)},canInplaceRestoreSql:function(){return this.containsPerm(Veeam.model.Permissions.RestoreSqlToOriginal)},canRestoreOracle:function(){return this.containsPerm(Veeam.model.Permissions.RestoreOracle)},hasWindowsAgentLicense:function(){return this.get('hasWindowsAgentLicense')},hasLinuxAgentLicense:function(){return this.get('hasLinuxAgentLicense')},
hasAgentLicense:function(){return this.hasWindowsAgentLicense()||this.hasLinuxAgentLicense()},canManageJobs:function(){return this.containsPerm(Veeam.model.Permissions.Configure)},canDeleteVm:function(){return this.containsPerm(Veeam.model.Permissions.DeleteVm)},canQuickBackup:function(){return this.containsPerm(Veeam.model.Permissions.StartQuickBackup)},canRestoreItems:function(){return this.canRestoreExchageItems()||this.canRestoreSQL()||this.canRestoreOracle()},isDashboardTabEnabled:function(){return!this.isSelfRestoreMode()&&
this.canView()},isReportsTabEnabled:function(){return!this.isSelfRestoreMode()&&this.canView()},isJobsTabEnabled:function(){return!this.isSelfRestoreMode()&&this.canView()},isVmsTabEnabled:function(){return!this.isSelfRestoreMode()&&this.canRestoreVm()},isFilesTabEnabled:function(){return this.canRestore()},isItemsTabEnabled:function(){return!this.isSelfRestoreMode()&&this.canRestoreItems()&&2<this.getLicenseType()},isRequestsTabEnabled:function(){return!this.isSelfRestoreMode()&&this.canConfigurate()&&
2<this.getLicenseType()},getSessionLiveTime:function(){return this.get('sessionLiveTime')},getLogoutUrl:function(){return this.get('logoutUrl')},isSelfServiceTabAvailable:function(){return this.get('selfServiceAvailable')},isKeyManagementTabAvailable:function(){return this.get('keyManagementAvailable')},hasLegacyLicense:function(){return this.get('hasLegacyLicense')},hasSocketsLicense:function(){return this.get('hasSocketsLicense')},showLicenseOverwriteWarning:function(){return this.get('showLicenseOverwriteWarning')}},
0,0,0,0,0,0,[Veeam.model,'User'],0);
Ext.cmd.derive('Veeam.service.InitService',Ext.Base,{constructor:function(){this._options=Ext.create('Common.Options')},getUserModel:function(userData){return Ext.create('Veeam.model.User',userData)},initLog:function(){Common.Log.init(this._options)},initDirect:function(){var timezoneOffset=(new Date).getTimezoneOffset();Ext.Direct.addProvider({type:'jsonrpc',url:Ext.app.REMOTING_API.url,actions:Ext.app.REMOTING_API.actions,format:'json',timeout:Ext.app.REMOTING_API.timeout||9E4,namespace:Ext.app.REMOTING_API.namespace,
headers:{'X-CSRF-Token':CSRFToken,'Timezone-Offset':timezoneOffset}})},initSignalR:function(options){Common.signalr.DispatcherHub.init(this._options);Common.signalr.EventManager.init()},initLocalStorage:function(){Ext.supports.LocalStorage||Ext.raise('Local storage is not supported, please update your browser');Ext.state.Manager.setProvider(new Ext.state.LocalStorageProvider)},initBrowserSupport:function(){this._checkBrowserVersion()||(alert('Browser version is not supported, please upgrade your browser'),
Ext.Error.raise('Browser version is not supported'))},initLiveTimeUpdate:function(user){Common.util.ActivityObserver.init({sessionLiveTime:user.getSessionLiveTime(),logoutUrl:user.getLogoutUrl()})},initDateFormats:function(user){Ext.Date.defaultFormat=user.get('defaultFullDateFormat');Ext.Date.defaultDateFormat=user.get('defaultDateFormat');Ext.Date.defaultTimeFormat=user.get('defaultTimeFormat');Ext.Date.defaultLongTimeFormat=user.get('defaultLongTimeFormat');Ext.Date.firstDayOfWeek=user.get('firstDayOfWeek')||
Ext.Date.firstDayOfWeek;Ext.form.field.Date.prototype.startDay=Ext.Date.firstDayOfWeek;Ext.Date.formatFunctions.defaultFullDateFormat=function(){return Ext.Date.format(this,Ext.Date.defaultFormat)};Ext.Date.formatFunctions.defaultDateFormat=function(){return Ext.Date.format(this,Ext.Date.defaultDateFormat)};Ext.Date.formatFunctions.defaultTimeFormat=function(){return Ext.Date.format(this,Ext.Date.defaultTimeFormat)};Ext.Date.formatFunctions.defaultLongTimeFormat=function(){return Ext.Date.format(this,
Ext.Date.defaultLongTimeFormat)};Ext.Date.parseFunctions.defaultFullDateFormat=function(input,strict){return Ext.Date.parse(input,Ext.Date.defaultFormat,strict)};Ext.Date.parseFunctions.defaultDateFormat=function(input,strict){return Ext.Date.parse(input,Ext.Date.defaultDateFormat,strict)};Ext.Date.parseFunctions.defaultTimeFormat=function(input,strict){return Ext.Date.parse(input,Ext.Date.defaultTimeFormat,strict)};Ext.Date.parseFunctions.defaultLongTimeFormat=function(input,strict){return Ext.Date.parse(input,
Ext.Date.defaultLongTimeFormat,strict)};Ext.JSON.encodeDate=function(o){return'"'+Ext.Date.format(o,'c')+'"'}},privates:{_options:null,_checkBrowserVersion:function(){return Ext.isIE&&!Ext.isIE11p?!1:!0}}},1,0,0,0,0,0,[Veeam.service,'InitService'],0);Ext.cmd.derive('MainApp.service.InitService',Veeam.service.InitService,{initDirect:function(){Veeam.service.InitService.prototype.initDirect.call(this)}},0,0,0,0,0,0,[MainApp.service,'InitService'],0);
Ext.cmd.derive('MainApp.service.UserService',Ext.Base,{singleton:!0,initUserContext:function(){return Common.Request.thenable(RPC.Api.initUserContext).then(function(user){user=new Veeam.model.User(user);return Ext.Promise.resolve(user)}).otherwise(function(error){return Ext.Promise.reject(error)})}},0,0,0,0,0,0,[MainApp.service,'UserService'],0);
Ext.cmd.derive('Veeam.base.data.BaseDirectProxy',Ext.data.proxy.Direct,{reader:{type:'json',totalProperty:'totalCount',rootProperty:'items'},simpleSortMode:!0},0,0,0,0,['proxy.app-direct'],0,[Veeam.base.data,'BaseDirectProxy'],0);
Ext.cmd.derive('Veeam.base.data.BaseDirectStore',Ext.data.Store,{proxy:'app-direct',constructor:function(){Ext.data.Store.prototype.constructor.apply(this,arguments);this.rpcMethod&&this.getProxy().setDirectFn(this.rpcMethod);this.extraParams&&this.getProxy().setExtraParams(this.extraParams)},setTotalCount:function(totalCount){Ext.isNumber(totalCount)&&totalCount!==this.totalCount&&(this.totalCount=totalCount,this.fireEvent('totalcountchange',this.totalCount))}},1,0,0,0,['store.app-store'],0,[Veeam.base.data,
'BaseDirectStore'],0);
Ext.cmd.derive('MainApp.Application',Ext.app.Application,{name:'MainApp',stores:[],listen:{global:{'confirmunload:on':'enableUnloadHandler','confirmunload:off':'disableUnloadHandler',logout:'logOut',help:'showHelp'}},appConfig:{},taskManager:null,splashscreen:{},defaultToken:null,user:null,helper:null,init:function(){var me=this,initService=me.initService=Ext.create('MainApp.service.InitService');initService.initLog();initService.initBrowserSupport();Ext.tip.QuickTipManager.init();Ext.util.History.useTopWindow=
!0;Ext.ariaWarn=Ext.emptyFn;0<=window.location.pathname.toLowerCase().indexOf('login')?me.setMainView('MainApp.view.login.LoginViewport'):(initService.initDirect(),initService.initSignalR(),initService.initLocalStorage(),me.appConfig=Ext.create('MainApp.model.AppConfig'),me.setMode(me.appConfig),me.splashscreen=Ext.getBody().mask('Loading, please stand by ...','splashscreen'),(initService=document.querySelector('.loading-mask-parent'))&&initService.parentNode&&(initService.parentNode.removeChild(initService),
initService=null),MainApp.service.UserService.initUserContext().then(this.launchApp.bind(this)).otherwise(function(error){console.error(error);Common.ui.Msg.error(error);me.splashscreen.destroy()}))},checkBrowserVersion:function(){return Ext.isIE&&!Ext.isIE11p?!1:!0},getAppConfig:function(){return this.appConfig||{}},getTaskManager:function(){null==this.taskManager&&(this.taskManager=Ext.create('MainApp.util.UserTaskManager'));return this.taskManager},launchApp:function(user){var me=this,history=
Ext.util.History;me.setupUserProfile(user);me.initService.initDateFormats(user);me.setupSessionStorage(user);var mainView=0<=window.location.pathname.indexOf('Configuration')?[Ext.create('MainApp.view.configuration.Main')]:[Ext.create('MainApp.view.main.Main')];Ext.create('Ext.container.Viewport',{items:mainView,layout:'fit'});(new Ext.util.DelayedTask(function(){me.splashscreen.fadeOut({duration:200,remove:!0})})).delay(200);if((mainView=history.getToken())||mainView===me.defaultToken)Ext.app.route.Router.onStateChange(mainView);
else me.defaultToken&&history.add(defaultToken);me.initService.initLiveTimeUpdate(user);return!0},setupUserProfile:function(user){console.debug('App launch. User: ',user.getData());this.user=user},setupSessionStorage:function(user){user=user.getUsername().toLowerCase();this.sessionStorage=new Ext.util.LocalStorage({id:user+'::appSession',session:!0})},onAppUpdate:function(){Ext.Msg.confirm('Application Update','This application has an update, reload?',function(choice){'yes'===choice&&window.location.reload()})},
enableUnloadHandler:function(){Ext.fly(window).addListener('beforeunload',this.onBeforeUnload,this,{normalized:!1})},disableUnloadHandler:function(){Ext.fly(window).removeListener('beforeunload',this.onBeforeUnload,this,{normalized:!1})},onBeforeUnload:function(e){if(this.needRedirect)return!1;if(!1===Ext.GlobalEvents.fireEvent('confirmunload:check'))return e&&(e.returnValue='Some settings were changed.'),window.event&&(window.event.returnValue='Some settings were changed.'),'Some settings were changed.'},
setMode:function(appConfig){appConfig.appMode&&(this.mode=appConfig.appMode,this.orgName=appConfig.orgName||'',this.orgUrl=appConfig.orgUrl||'',this.vSphereWorkspaceName=appConfig.vSphereWorkspaceName||'',this.vSphereUrl=appConfig.vSphereUrl||'')},getHelper:function(){null==this.helper&&(this.helper=new MainApp.helper.AppHelper({mode:this.mode}));return this.helper},getUser:function(){return this.user},getSession:function(){return this.sessionStorage},logOut:function(){window.location='./Login.aspx?act\x3dlogout\x26signout\x3d1\x26selfrestore\x3d'+
MainApp.app.getUser().isSelfRestoreMode()},showHelp:function(){var currentToken=Ext.util.History.getToken();currentToken=MainApp.app.getHelper().getLink(currentToken);(currentToken=window.open(currentToken,'_blank'))&&currentToken.focus()}},0,0,0,0,0,0,[MainApp,'Application'],0);
(function(){Ext.Loader.setPath('Veeam','/scripts/veeam/js');Ext.application({name:'MainApp',extend:MainApp.Application,mainView:'MainApp.view.login.LoginViewport',init:function(){this.checkBrowserVersion()||(alert('Browser version is not supported. Please upgrade your browser'),Ext.Error.raise('Browser version is not supported'))}})})();
Ext.cmd.derive('MainApp.view.configuration.tab.searchservers.SettingsController',Ext.app.ViewController,{control:{form:{validitychange:'onFormValidation'}},init:function(){this._isPasswordChanged=!1},onPasswordChange:function(){this._isPasswordChanged=!0},onServerTypeChanged:function(control,record,options){control=record.get('indexLimit');'custom'!==control&&this.lookupReference('indexLimitField').setValue(control)},onSubmit:function(){var dnsOrIpAddressField=this.lookupReference('dnsOrIpAddressField'),
descriptionField=this.lookupReference('descriptionField'),useTheseCredentialsCheckbox=this.lookupReference('useTheseCredentialsCheckbox'),usernameField=this.lookupReference('usernameField'),passwordField=this.lookupReference('passwordField'),portField=this.lookupReference('portField'),indexLimitField=this.lookupReference('indexLimitField');useTheseCredentialsCheckbox=useTheseCredentialsCheckbox.getValue();var isUsernameFieldValid=!useTheseCredentialsCheckbox||usernameField.isValid();dnsOrIpAddressField.isValid()&&
isUsernameFieldValid&&indexLimitField.isValid()&&(isUsernameFieldValid=this.getView(),dnsOrIpAddressField={servername:dnsOrIpAddressField.getValue(),description:descriptionField.getValue(),creds:useTheseCredentialsCheckbox,port:portField.getValue(),index_limit:indexLimitField.getValue()},useTheseCredentialsCheckbox&&(dnsOrIpAddressField.username=usernameField.getValue(),!isUsernameFieldValid.initialConfig.editMode||this._isPasswordChanged)&&(dnsOrIpAddressField.password=passwordField.getValue()),
isUsernameFieldValid.fireEvent('submit',isUsernameFieldValid,dnsOrIpAddressField))},onCancel:function(){this.getView().close()},onFormValidation:function(form,isValid){this.lookupReference('submitButton').setDisabled(!isValid)}},0,0,0,0,['controller.search-server-configuration'],0,[MainApp.view.configuration.tab.searchservers,'SettingsController'],0);
Ext.cmd.derive('MainApp.view.configuration.tab.searchservers.SettingsModel',Ext.app.ViewModel,{stores:{searchServerTypes:{fields:['indexLimit','name'],data:[{indexLimit:'300000',name:'Microsoft Search Server'},{indexLimit:'30000',name:'Microsoft Search Server Express (SQL)'},{indexLimit:'3000',name:'Microsoft Search Server Express (SQL Express)'},{indexLimit:'custom',name:'Custom'}]}}},0,0,0,0,['viewmodel.search-server-configuration'],0,[MainApp.view.configuration.tab.searchservers,'SettingsModel'],
0);