/*
 * Factonomy EXT Additions
 * Copyright(c) 2009, Factonomy Ltd.
 * 
 */


Ext.ns('Ext.ux.util');Ext.ux.util.MD5=function(s){var hexcase=0;var chrsz=8;function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}
function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_md5(x,len){x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return[a,b,c,d];}
function str2binl(str){var bin=[];var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);}
return bin;}
function binl2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
return binl2hex(core_md5(str2binl(s),s.length*chrsz));};Ext.ux.util.clone=function(o){if(!o||'object'!==typeof o){return o;}
if('function'===typeof o.clone){return o.clone();}
var c='[object Array]'===Object.prototype.toString.call(o)?[]:{};var p,v;for(p in o){if(o.hasOwnProperty(p)){v=o[p];if(v&&'object'===typeof v){c[p]=Ext.ux.util.clone(v);}
else{c[p]=v;}}}
return c;};Ext.ux.util.applyMatching=function(t,s){var s=s||this;for(var p in t){if(t.hasOwnProperty(p)&&undefined!==s[p]){t[p]=s[p];}}
return t;};Ext.overrideIf='function'===typeof Ext.overrideIf?Ext.overrideIf:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){if(!p[method]){p[method]=overrides[method];}}}};if('function'!==typeof RegExp.escape){RegExp.escape=function(s){if('string'!==typeof s){return s;}
return s.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,'\\$1');};}
Ext.overrideIf(RegExp,{clone:function(){return new RegExp(this);}});Ext.overrideIf(Array,{copy:function(){var a=[];for(var i=0,l=this.length;i<l;i++){a.push(this[i]);}
return a;},indexOf:function(v,b){for(var i=+b||0,l=this.length;i<l;i++){if(this[i]===v){return i;}}
return-1;},intersect:function(){if(!arguments.length){return[];}
var a1=this,a2,a;for(var k=0,ac=arguments.length;k<ac;k++){a=[];a2=arguments[k]||[];for(var i=0,l=a1.length;i<l;i++){if(-1<a2.indexOf(a1[i])){a.push(a1[i]);}}
a1=a;}
return a.unique();},lastIndexOf:function(v,b){b=+b||0;var i=this.length;while(i-->b){if(this[i]===v){return i;}}
return-1;},union:function(){var a=this.copy(),a1;for(var k=0,ac=arguments.length;k<ac;k++){a1=arguments[k]||[];for(var i=0,l=a1.length;i<l;i++){a.push(a1[i]);}}
return a.unique();},unique:function(){var a=[],i,l=this.length;for(i=0;i<l;i++){if(a.indexOf(this[i])<0){a.push(this[i]);}}
return a;}});function fxFormatUkMoney(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);v=String(v);var ps=v.split('.');var whole=ps[0];var sub=ps[1]?'.'+ps[1]:'.00';var r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,'$1'+','+'$2');}
v=whole+sub;if(v.charAt(0)=='-'){return'-$'+v.substr(1);}
return"&pound;"+v;}
Date.formatCodeToRegex=function(character,currentGroup){var p=Date.parseCodes[character];if(p){p=Ext.type(p)=='function'?p():p;Date.parseCodes[character]=p;}
return p?Ext.applyIf({c:p.c?String.format(p.c,currentGroup||"{0}"):p.c},p):{g:0,c:null,s:Ext.escapeRe(character)}};

Ext.namespace('Ext.ux.plugins');Ext.ux.plugins.HeaderButtons=function(config)
{Ext.apply(this,config);};Ext.extend(Ext.ux.plugins.HeaderButtons,Ext.util.Observable,{init:function(panel)
{if(panel.hbuttons)
{Ext.apply(panel,{onRender:panel.onRender.createSequence(function(ct,position)
{if(this.headerButtons&&this.headerButtons.length>0)
{var tb=this.header.createChild({cls:'ux-panel-header-btns-ct',cn:{cls:"ux-panel-header-btns",html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>'}},this.header.first('span',true),true);var tr=tb.getElementsByTagName('tr')[0];for(var i=0,len=this.headerButtons.length;i<len;i++)
{var b=this.headerButtons[i];var td=document.createElement('td');td.className='ux-panel-header-btn-td';b.render(tr.appendChild(td));}}}),addHeaderButton:function(config,handler,scope)
{var bc={handler:handler,scope:scope,hideParent:true};if(typeof config=="string")
bc.text=config;else
Ext.apply(bc,config);var btn=new Ext.Button(bc);btn.ownerCt=this;if(!this.headerButtons)
this.headerButtons=[];this.headerButtons.push(btn);return btn;}});var btns=panel.hbuttons;panel.headerButtons=[];for(var i=0,len=btns.length;i<len;i++){if(btns[i].render)
panel.headerButtons.push(btns[i]);else
panel.addHeaderButton(btns[i]);}
delete panel.hbuttons;}}});

Ext.namespace('Ext.fx');Ext.fx.DatabaseAdminPanel=Ext.extend(Ext.TabPanel,{dbAdminID:null,renderMode:null,url:null,keyValue:null,adminPanel:null,tabs:null,initComponent:function(){Ext.each(this.items,function(obj,idx){obj.dbAdmin=this;obj.renderMode=this.renderMode;obj.keyValue=this.keyValue;},this);Ext.each(this.tabs,function(obj,idx){obj.dbAdmin=this;obj.items[0].dbAdmin=this;},this);Ext.apply(this,{border:true,plain:true,activeTab:0,enableTabScroll:true});Ext.fx.DatabaseAdminPanel.superclass.initComponent.call(this);},onRender:function(ct,position){if(this.renderMode=='form'){Ext.each(this.tabs,function(obj,idx){this.add(obj);},this);}
Ext.fx.DatabaseAdminPanel.superclass.onRender.apply(this,arguments);if(this.renderMode=='lookup'){this.hideTabStripItem(this.items.itemAt(0));}
if(this.appTitle){if(this.findParentByType('apptab')){this.findParentByType('apptab').setTitle(this.appTitle);}}}});Ext.reg('databaseadminpanel',Ext.fx.DatabaseAdminPanel);Ext.fx.DatabaseGridPanel=Ext.extend(Ext.grid.GridPanel,{gridID:null,pageSize:50,gridPanel:null,dbAdmin:null,useFilters:true,allowInsert:true,allowDelete:true,allowRefresh:true,allowPagebar:true,groupField:null,sortField:null,sortDirection:'asc',recordConfig:[],gridConfig:{},search:{checkIndexes:null,disableIndexes:null},initComponent:function(){this.useFilters=true;this.initReader();this.initGridStore();if(this.useFilters){this.initFilters();}
this.initPagebar();this.initToolbar();this.initSearchPlugin();this.initView();this.addEvents('afterdelete');Ext.apply(this,{enableHdMenu:true,loadMask:true,layout:'fit',columns:this.gridColumns,store:this.gridStore,tbar:this.toolbar,bbar:(this.allowPagebar)?this.pagebar:null,view:this.gridView,selModel:this.selectionModel,plugins:[this.searchPlugin,this.filters]});Ext.apply(this,this.gridConfig);Ext.fx.DatabaseGridPanel.superclass.initComponent.call(this);},onReturnLookupValue:function(grid,rowIndex){grid.findParentByType('window').lookupcontrol.returnRecord(grid);},onRender:function(ct,position){if(this.dbAdmin&&this.renderMode=='lookup'){this.allowInsert=false;this.allowDelete=false;}
this.initButtons();Ext.fx.DatabaseGridPanel.superclass.onRender.apply(this,arguments);var params={start:0,limit:this.pageSize}
if(this.keyValue){params.FKey=this.keyValue;}
else if(this.dbAdmin.keyValue){params.FKey=this.dbAdmin.keyValue;}
this.gridStore.load({params:params});if(this.dbAdmin){switch(this.dbAdmin.renderMode){case'lookup':this.addListener('rowdblclick',this.onReturnLookupValue,this);break;default:this.addListener('rowdblclick',this.onRowDblClick,this);this.findParentByType('apptab').addListener('activate',function(){this.gridStore.reload();},this)}
new Ext.KeyMap(this.el,[{key:Ext.EventObject.DELETE,handler:this.deleteRow,scope:this},{key:Ext.EventObject.INSERT,handler:this.insertRow,scope:this}]);}
Ext.fx.DatabaseGridPanel.superclass.initEvents.call(this);},reloadGrid:function(){this.gridStore.reload();},onRowDblClick:function(grid,rowIndex){Ext.ComponentMgr.get('doc-body').loadClass({attributes:{fxrendermode:'form',dbadmin:this.dbadminId,text:this.findParentByType('apptab').title,iconCls:this.findParentByType('apptab').iconCls,href:this.url+'.json',keyValue:this.gridStore.getAt(rowIndex).id}});},onToolbarDelete:function(){if(this.getSelectionModel().getSelected()){Ext.MessageBox.show({title:'Confirm Delete',msg:'Are you sure you want to delete the selected record(s)?',scope:this,buttons:Ext.Msg.YESNO,icon:Ext.Msg.QUESTION,modal:true,scope:this,fn:this.confirmDelete});}
else{Ext.Msg.alert('Selection is required','You must select a record before performing this action.');}},confirmDelete:function(btn){if(btn=='yes'){this.body.mask('Deleting...');var params=Ext.apply({},this.gridStore.baseParams);params.data=this.getSelectionModel().getSelected().id;params.cmd='delete';params.dbadminid=this.dbadminId;params.fxprocessid=this.dbadminId;params.item='grid';params.fxcallbackid=null;Ext.Ajax.request({url:this.url,method:'post',params:params,scope:this,success:this.onDeleteSucess,failure:this.onDeleteFailure});}},onDeleteSucess:function(response,options){this.body.unmask();var obj=Ext.decode(response.responseText);if(obj.success==false){Ext.MessageBox.show({msg:obj.errors.message,title:'Delete error',icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK,width:500});}
else{this.gridStore.remove(this.getSelectionModel().getSelected());this.fireEvent('afterdelete');}},onDeleteFailure:function(response,options){this.body.unmask();switch(response.status){case 500:new Ext.Window({html:response.responseText,title:'Server Error 500',modal:true,width:600,height:500,autoScroll:true}).show();break;default:Ext.Msg.alert('Server Error',action.result.msg);}},onToolbarInsert:function(){Ext.ComponentMgr.get('doc-body').loadClass({attributes:{fxrendermode:'insert',dbadmin:this.dbadminId,text:this.findParentByType('apptab').title,iconCls:this.findParentByType('apptab').iconCls,href:this.url+'.json',keyValue:this.dbAdmin.keyValue}});},initSelectionModel:function(){this.selectionModel=new Ext.grid.RowSelectionModel({singleSelect:true})},initView:function(){switch(this.groupField){case null||'':this.gridView=new Ext.grid.GridView({loadMask:{msg:'Please wait...'}});break;default:this.gridView=new Ext.grid.GroupingView({loadMask:{msg:'Please wait...'},enableNoGroups:true,hideGroupedColumn:true});}},initGridStore:function(){var storeConfig={};Ext.apply(this.gridStore,{sort:{field:this.sortField,direction:this.sortDirection}});Ext.apply(storeConfig,{autoLoad:false,url:this.url,reader:this.dataReader,remoteSort:true,baseParams:{fxcallbackid:this.callbackId,dbadminid:this.dbadminId,item:'grid',mode:'data',fxrender:'json'}});switch(this.groupField){case null||'':this.gridStore=new Ext.data.Store(storeConfig);break;default:Ext.apply(storeConfig,{groupField:this.groupField,remoteGroup:true});this.gridStore=new Ext.data.GroupingStore(storeConfig);}},initReader:function(){this.dataReader=new Ext.data.JsonReader({id:this.primaryKey,root:this.root,totalProperty:'dbadmin.grid.data.dataset.recordcount'},this.recordConfig);},initPagebar:function(){if(this.allowPagebar){this.pagebar=new Ext.PagingToolbar({pageSize:this.pageSize,store:this.gridStore,displayInfo:true,displayMsg:'Displaying records {0} - {1} of {2}',emptyMsg:"No records to display"});}},initToolbar:function(){this.toolbar=new Ext.Toolbar();},initButtons:function(){if(this.allowRefresh){this.toolbar.add({text:'Refresh',tooltip:'Refresh the current records from the server',iconCls:'iconRefresh',scope:this,handler:function(){this.gridStore.reload();}})}
if(this.allowInsert){this.toolbar.add({text:'Insert',tooltip:'Create and edit new record',iconCls:'iconInsert',scope:this,handler:this.onToolbarInsert});}
if(this.allowDelete){this.toolbar.add({text:'Delete',tooltip:'Delete the selected row',iconCls:'iconDelete',scope:this,handler:this.onToolbarDelete});}
if(this.additionalTools){this.toolbar.add(this.additionalTools);}
this.toolbar.add(new Ext.Toolbar.Fill());},initSearchPlugin:function(){this.searchPlugin=new Ext.ux.grid.Search({width:150,minChars:1,dateFormat:'d/m/Y',position:'top',checkIndexes:this.search.checkIndexes,disableIndexes:this.search.disableIndexes,paramNames:{fields:'searchFields',query:'query'}})},initFilters:function(){this.filters=new Ext.ux.grid.GridFilters({stateId:'gfilter',filters:this.filtersConfig});}});Ext.reg('databasegridpanel',Ext.fx.DatabaseGridPanel);Ext.fx.DatabaseFormPanel=Ext.extend(Ext.form.FormPanel,{btnSaveClose:null,btnSaveNew:null,btnSaveContinue:null,btnClose:null,allowClose:true,allowSave:true,allowToolbar:true,autoLoadData:true,dbAdmin:null,tabsShown:false,primaryKeyName:null,initComponent:function(){this.addEvents('save');var config={monitorValid:true,monitorResize:true,trackResetOnLoad:true,frame:false,border:false,autoScroll:true,labelAlign:'right'};Ext.apply(this,Ext.apply(this.initialConfig,this.formConfig));Ext.apply(this,Ext.apply(this.initialConfig,config));if(this.allowToolbar)this.initToolbar();Ext.fx.DatabaseFormPanel.superclass.initComponent.apply(this,arguments);},onRender:function(ct,position){if(!(this.renderMode=='insert')&&this.autoLoadData){this.loadData();}
Ext.fx.DatabaseFormPanel.superclass.onRender.apply(this,arguments);new Ext.KeyMap(this.el,[{key:'s',ctrl:true,handler:function(){this.save('continue')},scope:this}]);},initToolbar:function(){if(this.tbar){this.elements+=',tbar';if(Ext.isObject(this.tbar)){this.topToolbar=new Ext.Toolbar(this.tbar);}
delete this.tbar;}
else{this.elements+=',tbar';this.topToolbar=new Ext.Toolbar();}
this.btnSaveClose=this.topToolbar.insertButton(0,{id:'saveclose',xtype:'button',text:'Save & Close',disabled:true,tooltip:'<b>Save</b><br/>Save any changes and close this tab',iconCls:'icsaveClose',scope:this,handler:function(){this.save('close');}});this.on('clientvalidation',function(form,isValid){var state=form.getForm().isDirty()?false:true;this.setDisabled(state);},this.btnSaveClose);this.btnSaveContinue=this.topToolbar.insertButton(1,{id:'save',xtype:'button',text:'Save',disabled:true,tooltip:'<b>Save - (Ctrl+s)</b><br/>Save any changes',iconCls:'icsave',scope:this,handler:function(){this.save('continue');}});this.on('clientvalidation',function(form,isValid){var state=form.getForm().isDirty()?false:true;this.setDisabled(state);},this.btnSaveContinue);this.btnSaveNew=this.topToolbar.insertButton(1,{id:'saveandnew',xtype:'button',text:'Save & New',disabled:true,tooltip:'<b>Save</b><br/>Save any changes to this record and clear to form to allow more records to be added',iconCls:'icsaveNew',scope:this,handler:function(){this.save('new');}});this.on('clientvalidation',function(form,isValid){var state=form.getForm().isDirty()?false:true;this.setDisabled(state);},this.btnSaveNew);this.topToolbar.insertButton(2,new Ext.Toolbar.Separator());this.topToolbar.addFill();if(this.allowClose){this.btnClose=this.topToolbar.add({id:'cancel',xtype:'button',text:'Close',tooltip:'<b>Cancel</b><br/>Cancel any changes and close this tab',iconCls:'iconCancel',scope:this,handler:function(){this.closeTab();}});}},resetValues:function(){this.getForm().items.each(function(f,idx){f.setRawValue(null);});},loadData:function(){if(this.el)this.el.mask('Retrieving details from server...');var params={item:'form',mode:'data',fxrender:'json',fxcallbackid:this.callbackID,dbadminid:this.dbadminid};if(this.keyValue){params[this.primaryKeyName]=this.keyValue;}
else if(this.dbAdmin.keyValue){params[this.primaryKeyName]=this.dbAdmin.keyValue;}
this.form.load({params:params,url:this.url,scope:this,success:this.onLoadSuccess});},onLoadSuccess:function(){if(this.el)this.el.unmask();},showTabs:function(key){if(this.renderMode=='insert'){this.keyValue=key;this.dbAdmin.keyValue=key;this.renderMode='form';if(this.dbAdmin&&!this.tabsShown){Ext.each(this.dbAdmin.tabs,function(obj,idx){this.dbAdmin.add(obj);},this);this.dbAdmin.doLayout();this.tabsShown=true;}}},save:function(saveType){this.saveType=saveType;this.body.mask('Saving...');var params={cmd:'save',fxprocessid:this.processid,fxrender:'json',dbadminid:this.dbadminid,item:'form'};if(this.dbAdmin&&this.dbAdmin.keyValue&&this.renderMode=='insert'){Ext.apply(params,{FKey:this.dbAdmin.keyValue})};var frm=this.getForm();var da=[];var recData=Ext.apply({},frm.getValues());var jsonData=Ext.encode(recData);da.push(jsonData);params.data='['+da.join(',')+']';frm.submit({params:params,scope:this,success:this.onSaveSuccess,failure:this.onSaveFailure})},onSaveSuccess:function(form,action){this.body.unmask();if(this.saveType!='close'){this.getForm().items.each(function(f,idx){if(idx==0){f.setValue(action.result.primaryKey);f.focus();}});}
if(this.saveType=='close'){this.getForm().items.each(function(f,idx){f.originalValue=f.getValue();});this.closeTab();}
if(this.saveType=='continue'){this.getForm().items.each(function(f,idx){f.originalValue=f.getValue();});this.showTabs(action.result.primaryKey);}
if(this.saveType=='new'){this.getForm().items.each(function(f,idx){f.setRawValue(null);});}},onSaveFailure:function(form,action){this.body.unmask();switch(action.failureType){case Ext.form.Action.CLIENT_INVALID:Ext.Msg.alert('Unable to submit data','Form fields may not be submitted with invalid or required values.\n\n\nPlease correct the marked errors and try again.');break;case Ext.form.Action.CONNECT_FAILURE:Ext.Msg.alert('Communications Error','Ajax communication with the server has either failed to connect or the server has delivered an unexpected response.');break;case Ext.form.Action.SERVER_INVALID:Ext.Msg.alert('Server Error',action.result.errors.message);}},closeTab:function(){this.findParentByType('apptab').closeApp();}});Ext.reg('databaseformpanel',Ext.fx.DatabaseFormPanel);

Ext.namespace('Ext.ux.grid.filter');Ext.ux.grid.filter.Filter=Ext.extend(Ext.util.Observable,{active:false,dataIndex:null,menu:null,updateBuffer:500,constructor:function(config){Ext.apply(this,config);this.addEvents('activate','deactivate','serialize','update');Ext.ux.grid.filter.Filter.superclass.constructor.call(this);this.menu=new Ext.menu.Menu();this.init(config);if(config&&config.value){this.setValue(config.value);this.setActive(config.active!==false,true);delete config.value;}},destroy:function(){if(this.menu){this.menu.destroy();}
this.purgeListeners();},init:Ext.emptyFn,getValue:Ext.emptyFn,setValue:Ext.emptyFn,isActivatable:function(){return true;},getSerialArgs:Ext.emptyFn,validateRecord:function(){return true;},serialize:function(){var args=this.getSerialArgs();this.fireEvent('serialize',args,this);return args;},fireUpdate:function(){if(this.active){this.fireEvent('update',this);}
this.setActive(this.isActivatable());},setActive:function(active,suppressEvent){if(this.active!=active){this.active=active;if(suppressEvent!==true){this.fireEvent(active?'activate':'deactivate',this);}}}});

Ext.ux.grid.filter.BooleanFilter=Ext.extend(Ext.ux.grid.filter.Filter,{defaultValue:false,yesText:'Yes',noText:'No',init:function(config){var gId=Ext.id();this.options=[new Ext.menu.CheckItem({text:this.yesText,group:gId,checked:this.defaultValue===true}),new Ext.menu.CheckItem({text:this.noText,group:gId,checked:this.defaultValue===false})];this.menu.add(this.options[0],this.options[1]);for(var i=0;i<this.options.length;i++){this.options[i].on('click',this.fireUpdate,this);this.options[i].on('checkchange',this.fireUpdate,this);}},getValue:function(){return this.options[0].checked;},setValue:function(value){this.options[value?0:1].setChecked(true);},getSerialArgs:function(){var args={type:'boolean',value:this.getValue()};return args;},validateRecord:function(record){return record.get(this.dataIndex)==this.getValue();}});

Ext.ux.grid.filter.DateFilter=Ext.extend(Ext.ux.grid.filter.Filter,{afterText:'After',beforeText:'Before',compareMap:{before:'lt',after:'gt',on:'eq'},dateFormat:'m/d/Y',menuItems:['before','after','-','on'],menuItemCfgs:{selectOnFocus:true,width:125},onText:'On',pickerOpts:{},init:function(config){var menuCfg,i,len,item,cfg,Cls;menuCfg=Ext.apply(this.pickerOpts,{minDate:this.minDate,maxDate:this.maxDate,format:this.dateFormat,listeners:{scope:this,select:this.onMenuSelect}});this.fields={};for(i=0,len=this.menuItems.length;i<len;i++){item=this.menuItems[i];if(item!=='-'){cfg={itemId:'range-'+item,text:this[item+'Text'],menu:new Ext.menu.DateMenu(Ext.apply(menuCfg,{itemId:item})),listeners:{scope:this,checkchange:this.onCheckChange}};Cls=Ext.menu.CheckItem;item=this.fields[item]=new Cls(cfg);}
this.menu.add(item);}},onCheckChange:function(){this.setActive(this.isActivatable());this.fireEvent('update',this);},onInputKeyUp:function(field,e){var k=e.getKey();if(k==e.RETURN&&field.isValid()){e.stopEvent();this.menu.hide(true);return;}},onMenuSelect:function(menuItem,value,picker){var fields=this.fields,field=this.fields[menuItem.itemId];field.setChecked(true);if(field==fields.on){fields.before.setChecked(false,true);fields.after.setChecked(false,true);}else{fields.on.setChecked(false,true);if(field==fields.after&&fields.before.menu.picker.value<value){fields.before.setChecked(false,true);}else if(field==fields.before&&fields.after.menu.picker.value>value){fields.after.setChecked(false,true);}}
this.fireEvent('update',this);},getValue:function(){var key,result={};for(key in this.fields){if(this.fields[key].checked){result[key]=this.fields[key].menu.picker.getValue();}}
return result;},setValue:function(value,preserve){var key;for(key in this.fields){if(value[key]){this.fields[key].menu.picker.setValue(value[key]);this.fields[key].setChecked(true);}else if(!preserve){this.fields[key].setChecked(false);}}
this.fireEvent('update',this);},isActivatable:function(){var key;for(key in this.fields){if(this.fields[key].checked){return true;}}
return false;},getSerialArgs:function(){var args=[];for(var key in this.fields){if(this.fields[key].checked){args.push({type:'date',comparison:this.compareMap[key],value:this.getFieldValue(key).format(this.dateFormat)});}}
return args;},getFieldValue:function(item){return this.fields[item].menu.picker.getValue();},getPicker:function(item){return this.fields[item].menu.picker;},validateRecord:function(record){var key,pickerValue,val=record.get(this.dataIndex).clearTime(true).getTime();for(key in this.fields){if(this.fields[key].checked){pickerValue=this.getFieldValue(key).clearTime(true).getTime();if(key=='before'&&pickerValue<=val){return false;}
if(key=='after'&&pickerValue>=val){return false;}
if(key=='on'&&pickerValue!=val){return false;}}}
return true;}});

Ext.ux.grid.filter.ListFilter=Ext.extend(Ext.ux.grid.filter.Filter,{phpMode:false,init:function(config){this.dt=new Ext.util.DelayedTask(this.fireUpdate,this);if(this.menu){this.menu.destroy();}
this.menu=new Ext.ux.menu.ListMenu(config);this.menu.on('checkchange',this.onCheckChange,this);},getValue:function(){return this.menu.getSelected();},setValue:function(value){this.menu.setSelected(value);this.fireEvent('update',this);},isActivatable:function(){return this.getValue().length>0;},getSerialArgs:function(){var args={type:'list',value:this.phpMode?this.getValue().join(','):this.getValue()};return args;},onCheckChange:function(){this.dt.delay(this.updateBuffer);},validateRecord:function(record){return this.getValue().indexOf(record.get(this.dataIndex))>-1;}});

Ext.namespace('Ext.ux.menu');Ext.ux.menu.ListMenu=Ext.extend(Ext.menu.Menu,{labelField:'text',loadingText:'Loading...',loadOnShow:true,single:false,constructor:function(cfg){this.selected=[];this.addEvents('checkchange');Ext.ux.menu.ListMenu.superclass.constructor.call(this,cfg=cfg||{});if(!cfg.store&&cfg.options){var options=[];for(var i=0,len=cfg.options.length;i<len;i++){var value=cfg.options[i];switch(Ext.type(value)){case'array':options.push(value);break;case'object':options.push([value.id,value[this.labelField]]);break;case'string':options.push([value,value]);break;}}
this.store=new Ext.data.Store({reader:new Ext.data.ArrayReader({id:0},['id',this.labelField]),data:options,listeners:{'load':this.onLoad,scope:this}});this.loaded=true;}else{this.add({text:this.loadingText,iconCls:'loading-indicator'});this.store.on('load',this.onLoad,this);}},destroy:function(){if(this.store){this.store.destroy();}
Ext.ux.menu.ListMenu.superclass.destroy.call(this);},show:function(){var lastArgs=null;return function(){if(arguments.length===0){Ext.ux.menu.ListMenu.superclass.show.apply(this,lastArgs);}else{lastArgs=arguments;if(this.loadOnShow&&!this.loaded){this.store.load();}
Ext.ux.menu.ListMenu.superclass.show.apply(this,arguments);}};}(),onLoad:function(store,records){var visible=this.isVisible();this.hide(false);this.removeAll(true);var gid=this.single?Ext.id():null;for(var i=0,len=records.length;i<len;i++){var item=new Ext.menu.CheckItem({text:records[i].get(this.labelField),group:gid,checked:this.selected.indexOf(records[i].id)>-1,hideOnClick:false});item.itemId=records[i].id;item.on('checkchange',this.checkChange,this);this.add(item);}
this.loaded=true;if(visible){this.show();}
this.fireEvent('load',this,records);},getSelected:function(){return this.selected;},setSelected:function(value){value=this.selected=[].concat(value);if(this.loaded){this.items.each(function(item){item.setChecked(false,true);for(var i=0,len=value.length;i<len;i++){if(item.itemId==value[i]){item.setChecked(true,true);}}},this);}},checkChange:function(item,checked){var value=[];this.items.each(function(item){if(item.checked){value.push(item.itemId);}},this);this.selected=value;this.fireEvent('checkchange',item,checked);}});

Ext.ux.grid.filter.NumericFilter=Ext.extend(Ext.ux.grid.filter.Filter,{fieldCls:Ext.form.NumberField,iconCls:{gt:'ux-rangemenu-gt',lt:'ux-rangemenu-lt',eq:'ux-rangemenu-eq'},menuItemCfgs:{emptyText:'Enter Filter Text...',selectOnFocus:true,width:125},menuItems:['lt','gt','-','eq'],init:function(config){if(this.menu){this.menu.destroy();}
this.menu=new Ext.ux.menu.RangeMenu(Ext.apply(config,{fieldCfg:this.fieldCfg||{},fieldCls:this.fieldCls,fields:this.fields||{},iconCls:this.iconCls,menuItemCfgs:this.menuItemCfgs,menuItems:this.menuItems,updateBuffer:this.updateBuffer}));this.menu.on('update',this.fireUpdate,this);},getValue:function(){return this.menu.getValue();},setValue:function(value){this.menu.setValue(value);},isActivatable:function(){var values=this.getValue();for(key in values){if(values[key]!==undefined){return true;}}
return false;},getSerialArgs:function(){var key,args=[],values=this.menu.getValue();for(key in values){args.push({type:'numeric',comparison:key,value:values[key]});}
return args;},validateRecord:function(record){var val=record.get(this.dataIndex),values=this.getValue();if(values.eq!==undefined&&val!=values.eq){return false;}
if(values.lt!==undefined&&val>=values.lt){return false;}
if(values.gt!==undefined&&val<=values.gt){return false;}
return true;}});

Ext.ns('Ext.ux.menu');Ext.ux.menu.RangeMenu=Ext.extend(Ext.menu.Menu,{constructor:function(config){Ext.ux.menu.RangeMenu.superclass.constructor.call(this,config);this.addEvents('update');this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);var i,len,item,cfg,Cls;for(i=0,len=this.menuItems.length;i<len;i++){item=this.menuItems[i];if(item!=='-'){cfg={itemId:'range-'+item,enableKeyEvents:true,iconCls:this.iconCls[item]||'no-icon',listeners:{scope:this,keyup:this.onInputKeyUp}};Ext.apply(cfg,Ext.applyIf(this.fields[item]||{},this.fieldCfg[item]),this.menuItemCfgs);Cls=cfg.fieldCls||this.fieldCls;item=this.fields[item]=new Cls(cfg);}
this.add(item);}},fireUpdate:function(){this.fireEvent('update',this);},getValue:function(){var result={},key,field;for(key in this.fields){field=this.fields[key];if(field.isValid()&&String(field.getValue()).length>0){result[key]=field.getValue();}}
return result;},setValue:function(data){var key;for(key in this.fields){this.fields[key].setValue(data[key]!==undefined?data[key]:'');}
this.fireEvent('update',this);},onInputKeyUp:function(field,e){var k=e.getKey();if(k==e.RETURN&&field.isValid()){e.stopEvent();this.hide(true);return;}
if(field==this.fields.eq){if(this.fields.gt){this.fields.gt.setValue(null);}
if(this.fields.lt){this.fields.lt.setValue(null);}}
else{this.fields.eq.setValue(null);}
this.updateTask.delay(this.updateBuffer);}});

Ext.ux.grid.filter.StringFilter=Ext.extend(Ext.ux.grid.filter.Filter,{iconCls:'ux-gridfilter-text-icon',emptyText:'Enter Filter Text...',selectOnFocus:true,width:125,init:function(config){Ext.applyIf(config,{enableKeyEvents:true,iconCls:this.iconCls,listeners:{scope:this,keyup:this.onInputKeyUp}});this.inputItem=new Ext.form.TextField(config);this.menu.add(this.inputItem);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);},getValue:function(){return this.inputItem.getValue();},setValue:function(value){this.inputItem.setValue(value);this.fireEvent('update',this);},isActivatable:function(){return this.inputItem.getValue().length>0;},getSerialArgs:function(){return{type:'string',value:this.getValue()};},validateRecord:function(record){var val=record.get(this.dataIndex);if(typeof val!='string'){return(this.getValue().length===0);}
return val.toLowerCase().indexOf(this.getValue().toLowerCase())>-1;},onInputKeyUp:function(field,e){var k=e.getKey();if(k==e.RETURN&&field.isValid()){e.stopEvent();this.menu.hide(true);return;}
this.updateTask.delay(this.updateBuffer);}});

Ext.namespace('Ext.ux.grid');Ext.ux.grid.GridFilters=Ext.extend(Ext.util.Observable,{autoReload:true,filterCls:'ux-filtered-column',local:false,menuFilterText:'Filters',paramPrefix:'filter',showMenu:true,stateId:undefined,updateBuffer:500,constructor:function(config){this.deferredUpdate=new Ext.util.DelayedTask(this.reload,this);this.filters=new Ext.util.MixedCollection();this.filters.getKey=function(o){return o?o.dataIndex:null;};this.addFilters(config.filters);delete config.filters;Ext.apply(this,config);},init:function(grid){if(grid instanceof Ext.grid.GridPanel){this.grid=grid;this.bindStore(this.grid.getStore(),true);this.grid.filters=this;this.grid.addEvents({'filterupdate':true});grid.on({scope:this,beforestaterestore:this.applyState,beforestatesave:this.saveState,beforedestroy:this.destroy,reconfigure:this.onReconfigure});if(grid.rendered){this.onRender();}else{grid.on({scope:this,single:true,render:this.onRender});}}else if(grid instanceof Ext.PagingToolbar){this.toolbar=grid;}},applyState:function(grid,state){var key,filter;this.applyingState=true;this.clearFilters();if(state.filters){for(key in state.filters){filter=this.filters.get(key);if(filter){filter.setValue(state.filters[key]);filter.setActive(true);}}}
this.deferredUpdate.cancel();if(this.local){this.reload();}
delete this.applyingState;},saveState:function(grid,state){var filters={};this.filters.each(function(filter){if(filter.active){filters[filter.dataIndex]=filter.getValue();}});return(state.filters=filters);},onRender:function(){this.grid.getView().on('refresh',this.onRefresh,this);this.createMenu();},destroy:function(){this.removeAll();this.purgeListeners();if(this.filterMenu){Ext.menu.MenuMgr.unregister(this.filterMenu);this.filterMenu.destroy();this.filterMenu=this.menu.menu=null;}},removeAll:function(){if(this.filters){Ext.destroy.apply(Ext,this.filters.items);this.filters.clear();}},bindStore:function(store,initial){if(!initial&&this.store){if(this.local){store.un('load',this.onLoad,this);}else{store.un('beforeload',this.onBeforeLoad,this);}}
if(store){if(this.local){store.on('load',this.onLoad,this);}else{store.on('beforeload',this.onBeforeLoad,this);}}
this.store=store;},onReconfigure:function(){this.bindStore(this.grid.getStore());this.store.clearFilter();this.removeAll();this.addFilters(this.grid.getColumnModel());this.updateColumnHeadings();},createMenu:function(){var view=this.grid.getView(),hmenu=view.hmenu;if(this.showMenu&&hmenu){this.sep=hmenu.addSeparator();this.filterMenu=new Ext.menu.Menu({id:this.grid.id+'-filters-menu'});this.menu=hmenu.add({checked:false,itemId:'filters',text:this.menuFilterText,menu:this.filterMenu});this.menu.on({scope:this,checkchange:this.onCheckChange,beforecheckchange:this.onBeforeCheck});hmenu.on('beforeshow',this.onMenu,this);}
this.updateColumnHeadings();},getMenuFilter:function(){var view=this.grid.getView();if(!view||view.hdCtxIndex===undefined){return null;}
return this.filters.get(view.cm.config[view.hdCtxIndex].dataIndex);},onMenu:function(filterMenu){var filter=this.getMenuFilter();if(filter){this.menu.menu=filter.menu;this.menu.setChecked(filter.active,false);this.menu.setDisabled(filter.disabled===true);}
this.menu.setVisible(filter!==undefined);this.sep.setVisible(filter!==undefined);},onCheckChange:function(item,value){this.getMenuFilter().setActive(value);},onBeforeCheck:function(check,value){return!value||this.getMenuFilter().isActivatable();},onStateChange:function(event,filter){if(event==='serialize'){return;}
if(filter==this.getMenuFilter()){this.menu.setChecked(filter.active,false);}
if((this.autoReload||this.local)&&!this.applyingState){this.deferredUpdate.delay(this.updateBuffer);}
this.updateColumnHeadings();if(!this.applyingState){this.grid.saveState();}
this.grid.fireEvent('filterupdate',this,filter);},onBeforeLoad:function(store,options){options.params=options.params||{};this.cleanParams(options.params);var params=this.buildQuery(this.getFilterData());Ext.apply(options.params,params);},onLoad:function(store,options){store.filterBy(this.getRecordFilter());},onRefresh:function(){this.updateColumnHeadings();},updateColumnHeadings:function(){var view=this.grid.getView(),hds,i,len,filter;if(view.mainHd){hds=view.mainHd.select('td').removeClass(this.filterCls);for(i=0,len=view.cm.config.length;i<len;i++){filter=this.getFilter(view.cm.config[i].dataIndex);if(filter&&filter.active){hds.item(i).addClass(this.filterCls);}}}},reload:function(){if(this.local){this.grid.store.clearFilter(true);this.grid.store.filterBy(this.getRecordFilter());}else{var start,store=this.grid.store;this.deferredUpdate.cancel();if(this.toolbar){start=store.paramNames.start;if(store.lastOptions&&store.lastOptions.params&&store.lastOptions.params[start]){store.lastOptions.params[start]=0;}}
store.reload();}},getRecordFilter:function(){var f=[],len,i;this.filters.each(function(filter){if(filter.active){f.push(filter);}});len=f.length;return function(record){for(i=0;i<len;i++){if(!f[i].validateRecord(record)){return false;}}
return true;};},addFilter:function(config){var Cls=this.getFilterClass(config.type),filter=config.menu?config:(new Cls(config));this.filters.add(filter);Ext.util.Observable.capture(filter,this.onStateChange,this);return filter;},addFilters:function(filters){if(filters){var i,len,filter,cm=false,dI;if(filters instanceof Ext.grid.ColumnModel){filters=filters.config;cm=true;}
for(i=0,len=filters.length;i<len;i++){filter=false;if(cm){dI=filters[i].dataIndex;filter=filters[i].filter||filters[i].filterable;if(filter){filter=(filter===true)?{}:filter;Ext.apply(filter,{dataIndex:dI});filter.type=filter.type||this.store.fields.get(dI).type;}}else{filter=filters[i];}
if(filter){this.addFilter(filter);}}}},getFilter:function(dataIndex){return this.filters.get(dataIndex);},clearFilters:function(){this.filters.each(function(filter){filter.setActive(false);});},getFilterData:function(){var filters=[],i,len;this.filters.each(function(f){if(f.active){var d=[].concat(f.serialize());for(i=0,len=d.length;i<len;i++){filters.push({field:f.dataIndex,data:d[i]});}}});return filters;},buildQuery:function(filters){var p={},i,f,root,dataPrefix,key,tmp,len=filters.length;if(!this.encode){for(i=0;i<len;i++){f=filters[i];root=[this.paramPrefix,'[',i,']'].join('');p[root+'[field]']=f.field;dataPrefix=root+'[data]';for(key in f.data){p[[dataPrefix,'[',key,']'].join('')]=f.data[key];}}}else{tmp=[];for(i=0;i<len;i++){f=filters[i];tmp.push(Ext.apply({},{field:f.field},f.data));}
if(tmp.length>0){p[this.paramPrefix]=Ext.util.JSON.encode(tmp);}}
return p;},cleanParams:function(p){if(this.encode){delete p[this.paramPrefix];}else{var regex,key;regex=new RegExp('^'+this.paramPrefix+'\[[0-9]+\]');for(key in p){if(regex.test(key)){delete p[key];}}}},getFilterClass:function(type){switch(type){case'auto':type='string';break;case'int':case'float':type='numeric';break;}
return Ext.ux.grid.filter[type.substr(0,1).toUpperCase()+type.substr(1)+'Filter'];}});Ext.preg('gridfilters',Ext.ux.grid.GridFilters);

Ext.ns('Ext.ux.grid');if('function'!==typeof RegExp.escape){throw('RegExp.escape function is missing. Include Ext.ux.util.js file.');}
Ext.ux.grid.Search=function(config){Ext.apply(this,config);Ext.ux.grid.Search.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.Search,Ext.util.Observable,{searchText:'Search',searchTipText:'Enter your search criteria',selectAllText:'Select All',position:'bottom',iconCls:'icon-magnifier',checkIndexes:'all',disableIndexes:[],showSelectAll:true,menuStyle:'checkbox',minCharsTipText:'Type at least {0} characters',mode:'remote',width:100,xtype:'gridsearch',paramNames:{fields:'fields',query:'query'},shortcutKey:'f',shortcutModifier:'alt',init:function(grid){this.grid=grid;if('string'===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer);}
grid.onRender=grid.onRender.createSequence(this.onRender,this);grid.reconfigure=grid.reconfigure.createSequence(this.reconfigure,this);},onRender:function(){var panel=this.toolbarContainer||this.grid;var tb='bottom'===this.position?panel.bottomToolbar:panel.topToolbar;this.menu=new Ext.menu.Menu();if('right'===this.align){tb.addFill();}
else{if(0<tb.items.getCount()){tb.addSeparator();}}
tb.add({text:this.searchText,menu:this.menu,iconCls:this.iconCls});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:'x-form-clear-trigger',trigger2Class:this.minChars?'x-hide-display':'x-form-search-trigger',onTrigger1Click:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.minChars?Ext.emptyFn:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on('render',function(){if(undefined===this.minChars||1<this.minChars){Ext.QuickTips.register({target:this.field.el,text:this.minChars?String.format(this.minCharsTipText,this.minChars):this.searchTipText});}
if(this.minChars){this.field.el.on({scope:this,buffer:300,keyup:this.onKeyUp});}
var map=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);map.stopEvent=true;},this,{single:true});tb.add(this.field);this.reconfigure();if(this.shortcutKey&&this.shortcutModifier){var shortcutEl=this.grid.getEl();var shortcutCfg=[{key:this.shortcutKey,scope:this,stopEvent:true,fn:function(){this.field.focus();}}];shortcutCfg[0][this.shortcutModifier]=true;this.keymap=new Ext.KeyMap(shortcutEl,shortcutCfg);}
if(true===this.autoFocus){this.grid.store.on({scope:this,load:function(){this.field.focus();}});}},onKeyUp:function(){var length=this.field.getValue().toString().length;if(0===length||this.minChars<=length){this.onTriggerSearch();}},onTriggerClear:function(){if(this.field.getValue()){this.field.setValue('');this.field.focus();this.onTriggerSearch();}},onTriggerSearch:function(){if(!this.field.isValid()){return;}
var val=this.field.getValue();var store=this.grid.store;if('local'===this.mode){store.clearFilter();if(val){store.filterBy(function(r){var retval=false;this.menu.items.each(function(item){if(!item.checked||retval){return;}
var rv=r.get(item.dataIndex);rv=rv instanceof Date?rv.format(this.dateFormat||r.fields.get(item.dataIndex).dateFormat):rv;var re=new RegExp(RegExp.escape(val),'gi');retval=re.test(rv);},this);if(retval){return true;}
return retval;},this);}
else{}}
else{if(store.lastOptions&&store.lastOptions.params){store.lastOptions.params[store.paramNames.start]=0;}
var fields=[];this.menu.items.each(function(item){if(item.checked){fields.push(item.dataIndex);}});delete(store.baseParams[this.paramNames.fields]);delete(store.baseParams[this.paramNames.query]);if(store.lastOptions&&store.lastOptions.params){delete(store.lastOptions.params[this.paramNames.fields]);delete(store.lastOptions.params[this.paramNames.query]);}
if(fields.length){store.baseParams[this.paramNames.fields]=Ext.encode(fields);store.baseParams[this.paramNames.query]=val;}
store.reload();}},setDisabled:function(){this.field.setDisabled.apply(this.field,arguments);},enable:function(){this.setDisabled(false);},disable:function(){this.setDisabled(true);},reconfigure:function(){var menu=this.menu;menu.removeAll();if(this.showSelectAll&&'radio'!==this.menuStyle){menu.add(new Ext.menu.CheckItem({text:this.selectAllText,checked:!(this.checkIndexes instanceof Array),hideOnClick:false,handler:function(item){var checked=!item.checked;item.parentMenu.items.each(function(i){if(item!==i&&i.setChecked&&!i.disabled){i.setChecked(checked);}});}}),'-');}
var cm=this.grid.colModel;var group=undefined;if('radio'===this.menuStyle){group='g'+(new Date).getTime();}
Ext.each(cm.config,function(config){var disable=false;if(config.header&&config.dataIndex){Ext.each(this.disableIndexes,function(item){disable=disable?disable:item===config.dataIndex;});if(!disable){menu.add(new Ext.menu.CheckItem({text:config.header,hideOnClick:false,group:group,checked:'all'===this.checkIndexes,dataIndex:config.dataIndex}));}}},this);if(this.checkIndexes instanceof Array){Ext.each(this.checkIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di;});if(item){item.setChecked(true,true);}},this);}
if(this.readonlyIndexes instanceof Array){Ext.each(this.readonlyIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di;});if(item){item.disable();}},this);}}});

Ext.ux.FileTreeMenu=function(config){config=config||{};var uploadPanelConfig={contextmenu:this,buttonsAt:config.buttonsAt||'tbar',singleUpload:config.singleUpload||false,maxFileSize:config.maxFileSize,enableProgress:config.enableProgress};if(config.baseParams){config.baseParams.cmd=config.baseParams.cmd||'upload';config.baseParams.dir=config.baseParams.dir||'.';uploadPanelConfig.baseParams=config.baseParams;}
Ext.apply(config,{items:[{text:'&#160',cls:'ux-ftm-nodename',disabledClass:'',disabled:true,cmd:'nodename'},{text:this.openText+' (Enter)',iconCls:this.openIconCls,cmd:'open',menu:{items:[{text:this.openSelfText,iconCls:this.openSelfIconCls,cmd:'open-self'},{text:this.openPopupText,iconCls:this.openPopupIconCls,cmd:'open-popup'},{text:this.openBlankText,iconCls:this.openBlankIconCls,cmd:'open-blank'},{text:this.openDwnldText,iconCls:this.openDwnldIconCls,cmd:'open-dwnld'}]}},new Ext.menu.Separator({cmd:'sep-open'}),{text:this.reloadText+' (Ctrl+E)',iconCls:this.reloadIconCls,cmd:'reload'},{text:this.expandText+' (Ctrl+&nbsp;&rarr;)',iconCls:this.expandIconCls,cmd:'expand'},{text:this.collapseText+' (Ctrl+&nbsp;&larr;)',iconCls:this.collapseIconCls,cmd:'collapse'},new Ext.menu.Separator({cmd:'sep-collapse'}),{text:this.renameText+' (F2)',iconCls:this.renameIconCls,cmd:'rename'},{text:this.deleteText+' ('+this.deleteKeyName+')',iconCls:this.deleteIconCls,cmd:'delete'},{text:this.newdirText+'... (Ctrl+N)',iconCls:this.newdirIconCls,cmd:'newdir'},new Ext.menu.Separator({cmd:'sep-upload'}),{text:this.uploadFileText+' (Ctrl+U)',iconCls:this.uploadIconCls,hideOnClick:false,cmd:'upload'},new Ext.menu.Adapter(new Ext.ux.UploadPanel(uploadPanelConfig),{hideOnClick:false,cmd:'upload-panel'})]});Ext.ux.FileTreeMenu.superclass.constructor.call(this,config);this.relayEvents(this.getItemByCmd('open').menu,['click','itemclick']);};Ext.extend(Ext.ux.FileTreeMenu,Ext.menu.Menu,{collapseIconCls:'icon-collapse-all',collapseText:'Collapse all',deleteIconCls:'icon-cross',deleteKeyName:'Delete Key',deleteText:'Delete',expandIconCls:'icon-expand-all',expandText:'Expand all',newdirIconCls:'icon-folder-add',newdirText:'New folder',openBlankIconCls:'icon-open-blank',openBlankText:'Open in new window',openDwnldIconCls:'icon-open-download',openDwnldText:'Download',openIconCls:'icon-open',openPopupIconCls:'icon-open-popup',openPopupText:'Open in popup',openSelfIconCls:'icon-open-self',openSelfText:'Open in this window',openText:'Open',reloadIconCls:'icon-refresh',reloadText:'R<span style="text-decoration:underline">e</span>load',renameIconCls:'icon-pencil',renameText:'Rename',uploadFileText:'<span style="text-decoration:underline">U</span>pload file',uploadIconCls:'icon-upload',uploadText:'Upload',width:190,getItemByCmd:function(cmd){var open;var item=this.items.find(function(i){return cmd===i.cmd;});if(!item){open=this.items.find(function(i){return'open'===i.cmd;});if(!open){return null;}
item=open.menu.items.find(function(i){return cmd===i.cmd;});}
return item;},setItemDisabled:function(cmd,disabled){var item=this.getItemByCmd(cmd);if(item){item.setDisabled(disabled);}},beforeDestroy:function(){var uploadPanel=this.getItemByCmd('upload-panel');if(uploadPanel&&uploadPanel.component){uploadPanel.component.purgeListeners();uploadPanel.component.destroy();uploadPanel.component=null;}}});Ext.reg('filetreemenu',Ext.ux.FileTreeMenu);

Ext.ux.FileTreePanel=Ext.extend(Ext.tree.TreePanel,{confirmText:'Confirm',containerScroll:true,deleteText:'Delete',enableDD:true,enableDelete:true,enableNewDir:true,enableOpen:true,enableProgress:true,enableRename:true,enableSort:true,enableUpload:true,errorText:'Error',existsText:'File <b>{0}</b> already exists',expandOnRender:true,fileCls:'file',fileText:'File',focusPopup:true,folderSort:true,hrefPrefix:'',hrefSuffix:'',layout:'fit',loadingText:'Loading',loadMask:false,maxFileSize:524288,maxMsgLen:2000,method:'post',newdirText:'New Folder',openMode:'popup',overwriteText:'Do you want to overwrite it?',popupFeatures:'width=800,height=600,dependent=1,scrollbars=1,resizable=1,toolbar=1',readOnly:false,reallyWantText:'Do you really want to',rootPath:'root',rootText:'Tree Root',rootVisible:true,selectOnEdit:true,singleUpload:false,topMenu:false,url:'filetree.php',initComponent:function(){Ext.apply(this,{root:new Ext.tree.AsyncTreeNode({text:this.rootText,path:this.rootPath,rootVisible:this.rootVisible,allowDrag:false}),treeEditor:!this.readOnly?new Ext.tree.TreeEditor(this,{allowBlank:false,cancelOnEsc:true,completeOnEnter:true,ignoreNoChange:true,selectOnFocus:this.selectOnEdit}):undefined,dropConfig:this.dropConfig?this.dropConfig:{ddGroup:this.ddGroup||'TreeDD',appendOnly:this.enableSort,expandDelay:3600000},treeSorter:this.enableSort?new Ext.tree.TreeSorter(this,{folderSort:this.folderSort}):undefined,keys:[{key:Ext.EventObject.ENTER,scope:this,fn:function(key,e){var sm=this.getSelectionModel();var node=sm.getSelectedNode();if(node&&0!==node.getDepth()&&node.isLeaf()){this.openNode(node);}}},{key:113,scope:this,fn:function(key,e){var sm=this.getSelectionModel();var node=sm.getSelectedNode();if(node&&0!==node.getDepth()&&this.enableRename&&this.readOnly!==true){this.treeEditor.triggerEdit(node);}}},{key:46,stopEvent:true,scope:this,fn:function(key,e){var sm=this.getSelectionModel();var node=sm.getSelectedNode();if(node&&0!==node.getDepth()&&this.enableDelete&&this.readOnly!==true){this.deleteNode(node);}}},{key:69,ctrl:true,stopEvent:true,scope:this,fn:function(key,e){var sm=this.getSelectionModel();var node=sm.getSelectedNode();if(node){node=node.isLeaf()?node.parentNode:node;sm.select(node);node.reload();}}},{key:39,ctrl:true,stopEvent:true,scope:this,fn:function(key,e){var sm=this.getSelectionModel();var node=sm.getSelectedNode();if(node&&!node.isLeaf()){sm.select(node);node.expand.defer(1,node,[true]);}}},{key:37,ctrl:true,scope:this,stopEvent:true,fn:function(key,e){var sm=this.getSelectionModel();var node=sm.getSelectedNode();if(node&&!node.isLeaf()){sm.select(node);node.collapse.defer(1,node,[true]);}}},{key:78,ctrl:true,scope:this,stopEvent:true,fn:function(key,e){var sm,node;sm=this.getSelectionModel();node=sm.getSelectedNode();if(node&&this.enableNewDir&&this.readOnly!==true){node=node.isLeaf()?node.parentNode:node;this.createNewDir(node);}}}]});if(!this.loader){this.loader=new Ext.tree.TreeLoader({url:this.url,baseParams:{cmd:'get'},listeners:{beforeload:{scope:this,fn:function(loader,node){loader.baseParams.path=this.getPath(node);}}}});}
if(true===this.topMenu){this.tbar=[{text:this.fileText,disabled:true,scope:this,menu:this.getContextMenu()}];}
Ext.ux.FileTreePanel.superclass.initComponent.apply(this,arguments);if(this.treeEditor){this.treeEditor.beforeNodeClick=function(node,e){return true;};this.treeEditor.on({complete:{scope:this,fn:this.onEditComplete},beforecomplete:{scope:this,fn:this.onBeforeEditComplete}});}
this.on({contextmenu:{scope:this,fn:this.onContextMenu,stopEvent:true},dblclick:{scope:this,fn:this.onDblClick},beforenodedrop:{scope:this,fn:this.onBeforeNodeDrop},nodedrop:{scope:this,fn:this.onNodeDrop},nodedragover:{scope:this,fn:this.onNodeDragOver}});this.addEvents('beforeopen','open','beforerename','rename','renamefailure','beforedelete','delete','deletefailure','beforenewdir','newdir','newdirfailure');},onRender:function(){Ext.ux.FileTreePanel.superclass.onRender.apply(this,arguments);if(true===this.topMenu){this.topMenu=Ext.getCmp(this.getTopToolbar().items.itemAt(0).id);this.getSelectionModel().on({scope:this,selectionchange:function(sm,node){var disable=node?false:true;disable=disable||this.readOnly;this.topMenu.setDisabled(disable);}});Ext.apply(this.topMenu,{showMenu:function(){this.showContextMenu(false);}.createDelegate(this)});}
if(this.expandOnRender){this.root.expand();}
this.el.on({contextmenu:{fn:function(){return false;},stopEvent:true}});if(true===this.loadMask){this.loader.on({scope:this.el,beforeload:this.el.mask.createDelegate(this.el,[this.loadingText+'...']),load:this.el.unmask,loadexception:this.el.unmask});}},cmdCallback:function(options,success,response){var i,o,node;var showMsg=true;if(true===success){try{o=Ext.decode(response.responseText);}
catch(ex){this.showError(response.responseText);}
if(true===o.success){switch(options.params.cmd){case'delete':if(true!==this.eventsSuspended){this.fireEvent('delete',this,this.getPath(options.node));}
options.node.parentNode.removeChild(options.node);break;case'newdir':if(true!==this.eventsSuspended){this.fireEvent('newdir',this,options.node);}
break;case'rename':this.updateCls(options.node,options.params.oldname);if(true!==this.eventsSuspended){this.fireEvent('rename',this,options.node,options.params.newname,options.params.oldname);}
break;}}
else{switch(options.params.cmd){case'rename':if(options.oldParent){options.oldParent.appendChild(options.node);}
else{options.node.setText(options.oldName);}
if(options.e){options.e.failure=true;}
if(true!==this.eventsSuspended){this.fireEvent('renamefailure',this,options.node,options.params.newname,options.params.oldname);}
break;case'newdir':if(false!==this.eventsSuspended){this.fireEvent('newdirfailure',this,options.params.dir);}
options.node.parentNode.removeChild(options.node);break;case'delete':if(true!==this.eventsSuspended){this.fireEvent('deletefailure',this,options.node);}
options.node.parentNode.reload.defer(1,options.node.parentNode);break;default:this.root.reload();break;}
this.showError(o.error||response.responseText);}}
else{this.showError(response.responseText);}},confirmOverwrite:function(filename,callback,scope){Ext.Msg.show({title:this.confirmText,msg:String.format(this.existsText,filename)+'. '+this.overwriteText,icon:Ext.Msg.QUESTION,buttons:Ext.Msg.YESNO,fn:callback.createDelegate(scope||this)});},createNewDir:function(node){if(true!==this.eventsSuspended&&false===this.fireEvent('beforenewdir',this,node)){return;}
var treeEditor=this.treeEditor;var newNode;var appendNode=node.isLeaf()?node.parentNode:node;appendNode.expand(false,false,function(n){newNode=n.appendChild(new Ext.tree.AsyncTreeNode({text:this.newdirText,iconCls:'folder'}));treeEditor.on({complete:{scope:this,single:true,fn:this.onNewDir}});treeEditor.creatingNewDir=true;(function(){treeEditor.triggerEdit(newNode);}.defer(10));}.createDelegate(this));},deleteNode:function(node){if(true!==this.eventsSuspended&&false===this.fireEvent('beforedelete',this,node)){return;}
Ext.Msg.show({title:this.deleteText,msg:this.reallyWantText+' '+this.deleteText.toLowerCase()+' <b>'+node.text+'</b>?',icon:Ext.Msg.WARNING,buttons:Ext.Msg.YESNO,scope:this,fn:function(response){if('yes'!==response){this.getEl().dom.focus();return;}
var options={url:this.deleteUrl||this.url,method:this.method,scope:this,callback:this.cmdCallback,node:node,params:{cmd:'delete',file:this.getPath(node)}};Ext.Ajax.request(options);}});},downloadFile:function(path){var id=Ext.id();var frame=document.createElement('iframe');frame.id=id;frame.name=id;frame.className='x-hidden';if(Ext.isIE){frame.src=Ext.SSL_SECURE_URL;}
document.body.appendChild(frame);if(Ext.isIE){document.frames[id].name=id;}
var form=Ext.DomHelper.append(document.body,{tag:'form',method:'post',action:this.downloadUrl||this.url,target:id});document.body.appendChild(form);var hidden;hidden=document.createElement('input');hidden.type='hidden';hidden.name='cmd';hidden.value='download';form.appendChild(hidden);hidden=document.createElement('input');hidden.type='hidden';hidden.name='path';hidden.value=path;form.appendChild(hidden);var callback=function(){Ext.EventManager.removeListener(frame,'load',callback,this);setTimeout(function(){document.body.removeChild(form);},100);setTimeout(function(){document.body.removeChild(frame);},110);};Ext.EventManager.on(frame,'load',callback,this);form.submit();},getContextMenu:function(){if(!this.contextmenu){var config={singleUpload:this.singleUpload,maxFileSize:this.maxFileSize,enableProgress:this.enableProgress};if(this.baseParams){config.baseParams=this.baseParams;}
this.contextmenu=new Ext.ux.FileTreeMenu(config);this.contextmenu.on({click:{scope:this,fn:this.onContextClick}});this.uploadPanel=this.contextmenu.getItemByCmd('upload-panel').component;this.uploadPanel.on({beforeupload:{scope:this,fn:this.onBeforeUpload},allfinished:{scope:this,fn:this.onAllFinished}});this.uploadPanel.setUrl(this.uploadUrl||this.url);}
return this.contextmenu;},getFileCls:function(name){var atmp=name.split('.');if(1===atmp.length){return this.fileCls;}
else{return this.fileCls+'-'+atmp.pop().toLowerCase();}},getPath:function(node){var path,p,a;if(node!==this.root){p=node.parentNode;a=[node.text];while(p&&p!==this.root){a.unshift(p.text);p=p.parentNode;}
a.unshift(this.root.attributes.path||'');path=a.join(this.pathSeparator);}
else{path=node.attributes.path||'';}
path=path.replace(/^[\/\.]*/,'');return path;},hasChild:function(node,childName){return(node.isLeaf()?node.parentNode:node).findChild('text',childName)!==null;},hideContextMenu:function(){if(this.contextmenu&&this.contextmenu.isVisible()){this.contextmenu.hide();}
return this;},onBeforeEditComplete:function(editor,newName,oldName){if(editor.cancellingEdit){editor.cancellingEdit=false;return;}
var oldPath=this.getPath(editor.editNode);var newPath=oldPath.replace(/\/[^\\]+$/,'/'+newName);if(false===this.fireEvent('beforerename',this,editor.editNode,newPath,oldPath)){editor.cancellingEdit=true;editor.cancelEdit();return false;}},onBeforeNodeDrop:function(e){var s=e.dropNode;var d=e.target.leaf?e.target.parentNode:e.target;if(s.parentNode===d){return false;}
if(this.hasChild(d,s.text)&&undefined===e.confirmed){this.confirmOverwrite(s.text,function(response){e.confirmed='yes'===response;this.onBeforeNodeDrop(e);});return false;}
if(false===e.confirmed){return false;}
e.confirmed=undefined;e.oldParent=s.parentNode;var oldName=this.getPath(s);var newName=this.getPath(d)+'/'+s.text;if(true!==this.eventsSuspended&&false===this.fireEvent('beforerename',this,s,newName,oldName)){return false;}
var options={url:this.renameUrl||this.url,method:this.method,scope:this,callback:this.cmdCallback,node:s,oldParent:s.parentNode,e:e,params:{cmd:'rename',oldname:oldName,newname:newName}};Ext.Ajax.request(options);return true;},onBeforeUpload:function(uploadPanel){var menu=this.getContextMenu();var path=this.getPath(menu.node);if(menu.node.isLeaf()){path=path.replace(/\/[^\/]+$/,'',path);}
uploadPanel.setPath(path);},onAllFinished:function(uploader){var menu=this.getContextMenu();(menu.node.isLeaf()?menu.node.parentNode:menu.node).reload();},onContextClick:function(menu,item,e){if(item.disabled){return;}
var node=menu.node;if(!node){node=menu.parentMenu.node;}
switch(item.cmd){case'reload':node.reload();break;case'expand':node.expand(true);break;case'collapse':node.collapse(true);break;case'open':this.openNode(node);break;case'open-self':this.openNode(node,'_self');break;case'open-popup':this.openNode(node,'popup');break;case'open-blank':this.openNode(node,'_blank');break;case'open-dwnld':this.openNode(node,'download');break;case'rename':this.treeEditor.triggerEdit(node);break;case'delete':this.deleteNode(node);break;case'newdir':this.createNewDir(node);break;default:break;}},onContextMenu:function(node,e){if(this.readOnly){return false;}
this.showContextMenu(node);return false;},onDblClick:function(node,e){this.openNode(node);},onDestroy:function(){if(this.contextmenu){this.contextmenu.purgeListeners();this.contextmenu.destroy();this.contextmenu=null;}
if(this.treeEditor){this.treeEditor.purgeListeners();this.treeEditor.destroy();this.treeEditor=null;}
if(this.treeSorter){this.treeSorter=null;}
Ext.ux.FileTreePanel.superclass.onDestroy.call(this);},onEditComplete:function(editor,newName,oldName){var node=editor.editNode;if(newName===oldName||editor.creatingNewDir){editor.creatingNewDir=false;return;}
var path=this.getPath(node.parentNode);var options={url:this.renameUrl||this.url,method:this.method,scope:this,callback:this.cmdCallback,node:node,oldName:oldName,params:{cmd:'rename',oldname:path+'/'+oldName,newname:path+'/'+newName}};Ext.Ajax.request(options);},onNewDir:function(editor){var path=this.getPath(editor.editNode);var options={url:this.newdirUrl||this.url,method:this.method,scope:this,node:editor.editNode,callback:this.cmdCallback,params:{cmd:'newdir',dir:path}};Ext.Ajax.request(options);},onNodeDragOver:function(e){e.cancel=e.target.disabled||e.dropNode.parentNode===e.target.parentNode&&e.target.isLeaf();},onNodeDrop:function(e){if(true===e.failure){e.oldParent.appendChild(e.dropNode);return;}
var sameNode=e.dropNode.parentNode.findChild('text',e.dropNode.text);if(sameNode&&sameNode!==e.dropNode){sameNode.parentNode.removeChild(sameNode);}},openNode:function(node,mode){if(!this.enableOpen){return;}
mode=mode||this.openMode;var url;var path;if(node.isLeaf()){path=this.getPath(node);url=this.hrefPrefix+path+this.hrefSuffix;if(true!==this.eventsSuspended&&false===this.fireEvent('beforeopen',this,node.text,url,mode)){return;}
switch(mode){case'popup':if(!this.popup||this.popup.closed){this.popup=window.open(url,this.hrefTarget,this.popupFeatures);}
this.popup.location=url;if(this.focusPopup){this.popup.focus();}
break;case'_self':window.location=url;break;case'_blank':window.open(url);break;case'download':this.downloadFile(path);break;}
if(true!==this.eventsSuspended){this.fireEvent('open',this,node.text,url,mode);}}},setDeleteDisabled:function(disabled){disabled=!(!disabled);if(!this.enableDelete===disabled){return this;}
this.hideContextMenu();this.enableDelete=!disabled;},setNewdirDisabled:function(disabled){disabled=!(!disabled);if(!this.enableNewDir===disabled){return this;}
this.hideContextMenu();this.enableNewDir=!disabled;},setOpenDisabled:function(disabled){disabled=!(!disabled);if(!this.enableOpen===disabled){return this;}
this.hideContextMenu();this.enableOpen=!disabled;return this;},setReadOnly:function(readOnly){readOnly=!(!readOnly);if(this.readOnly===readOnly){return this;}
this.hideContextMenu();if(this.dragZone){this.dragZone.locked=readOnly;}
this.readOnly=readOnly;return this;},setRenameDisabled:function(disabled){disabled=!(!disabled);if(!this.enableRename===disabled){return this;}
this.hideContextMenu();if(this.dragZone){this.dragZone.locked=disabled;}
this.enableRename=!disabled;return this;},setUploadDisabled:function(disabled){disabled=!(!disabled);if(!this.enableUpload===disabled){return this;}
this.hideContextMenu();this.enableUpload=!disabled;return this;},showContextMenu:function(node){var topAlign=false;var alignEl=this.topMenu?this.topMenu.getEl():this.body;if(!node){node=this.getSelectionModel().getSelectedNode();topAlign=true;}
else{alignEl=node.getUI().getEl();}
if(!node){return;}
var menu=this.getContextMenu();menu.node=node;menu.getItemByCmd('nodename').setText(Ext.util.Format.ellipsis(node.text,22));menu.setItemDisabled('open',!node.isLeaf());menu.setItemDisabled('reload',node.isLeaf());menu.setItemDisabled('expand',node.isLeaf());menu.setItemDisabled('collapse',node.isLeaf());menu.setItemDisabled('delete',node===this.root||node.disabled);menu.setItemDisabled('rename',this.readOnly||node===this.root||node.disabled);menu.setItemDisabled('newdir',this.readOnly||(node.isLeaf()?node.parentNode.disabled:node.disabled));menu.setItemDisabled('upload',node.isLeaf()?node.parentNode.disabled:node.disabled);menu.setItemDisabled('upload-panel',node.isLeaf()?node.parentNode.disabled:node.disabled);menu.getItemByCmd('open').setVisible(this.enableOpen);menu.getItemByCmd('delete').setVisible(this.enableDelete);menu.getItemByCmd('newdir').setVisible(this.enableNewDir);menu.getItemByCmd('rename').setVisible(this.enableRename);menu.getItemByCmd('upload').setVisible(this.enableUpload);menu.getItemByCmd('upload-panel').setVisible(this.enableUpload);menu.getItemByCmd('sep-upload').setVisible(this.enableUpload);menu.getItemByCmd('sep-collapse').setVisible(this.enableNewDir||this.enableDelete||this.enableRename);node.select();if(topAlign){menu.showAt(menu.getEl().getAlignToXY(alignEl,'tl-bl?'));}
else{menu.showAt(menu.getEl().getAlignToXY(alignEl,'tl-tl?',[0,18]));}},showError:function(msg,title){Ext.Msg.show({title:title||this.errorText,msg:Ext.util.Format.ellipsis(msg,this.maxMsgLen),fixCursor:true,icon:Ext.Msg.ERROR,buttons:Ext.Msg.OK,minWidth:1200>String(msg).length?360:600});},updateCls:function(node,oldName){if(node.isLeaf()){Ext.fly(node.getUI().iconNode).removeClass(this.getFileCls(oldName));Ext.fly(node.getUI().iconNode).addClass(this.getFileCls(node.text));}}});Ext.reg('filetreepanel',Ext.ux.FileTreePanel);

Ext.ux.FileUploader=function(config){Ext.apply(this,config);Ext.ux.FileUploader.superclass.constructor.apply(this,arguments);this.addEvents('beforeallstart','allfinished','beforefilestart','filefinished','progress');};Ext.extend(Ext.ux.FileUploader,Ext.util.Observable,{baseParams:{cmd:'upload',dir:'.'},concurrent:true,enableProgress:true,jsonErrorText:'Cannot decode JSON object',maxFileSize:524288,progressIdName:'UPLOAD_IDENTIFIER',progressInterval:2000,progressUrl:'progress.php',progressMap:{bytes_total:'bytesTotal',bytes_uploaded:'bytesUploaded',est_sec:'estSec',files_uploaded:'filesUploaded',speed_average:'speedAverage',speed_last:'speedLast',time_last:'timeLast',time_start:'timeStart'},singleUpload:false,unknownErrorText:'Unknown error',upCount:0,createForm:function(record){var progressId=parseInt(Math.random()*1e10,10);var form=Ext.getBody().createChild({tag:'form',action:this.url,method:'post',cls:'x-hidden',id:Ext.id(),cn:[{tag:'input',type:'hidden',name:'APC_UPLOAD_PROGRESS',value:progressId},{tag:'input',type:'hidden',name:this.progressIdName,value:progressId},{tag:'input',type:'hidden',name:'MAX_FILE_SIZE',value:this.maxFileSize}]});if(record){record.set('form',form);record.set('progressId',progressId);}
else{this.progressId=progressId;}
return form;},deleteForm:function(form,record){form.remove();if(record){record.set('form',null);}},fireFinishEvents:function(options){if(true!==this.eventsSuspended&&!this.singleUpload){this.fireEvent('filefinished',this,options&&options.record);}
if(true!==this.eventsSuspended&&0===this.upCount){this.stopProgress();this.fireEvent('allfinished',this);}},getIframe:function(record){var iframe=null;var form=record.get('form');if(form&&form.dom&&form.dom.target){iframe=Ext.get(form.dom.target);}
return iframe;},getOptions:function(record,params){var o={url:this.url,method:'post',isUpload:true,scope:this,callback:this.uploadCallback,record:record,params:this.getParams(record,params)};return o;},getParams:function(record,params){var p={path:this.path};Ext.apply(p,this.baseParams||{},params||{});return p;},processSuccess:function(options,response,o){var record=false;if(this.singleUpload){this.store.each(function(r){r.set('state','done');r.set('error','');r.commit();});}
else{record=options.record;record.set('state','done');record.set('error','');record.commit();}
this.deleteForm(options.form,record);},processFailure:function(options,response,error){var record=options.record;var records;if(this.singleUpload){records=this.store.queryBy(function(r){var state=r.get('state');return'done'!==state&&'uploading'!==state;});records.each(function(record){var e=error.errors?error.errors[record.id]:this.unknownErrorText;if(e){record.set('state','failed');record.set('error',e);Ext.getBody().appendChild(record.get('input'));}
else{record.set('state','done');record.set('error','');}
record.commit();},this);this.deleteForm(options.form);}
else{if(error&&'object'===Ext.type(error)){record.set('error',error.errors&&error.errors[record.id]?error.errors[record.id]:this.unknownErrorText);}
else if(error){record.set('error',error);}
else if(response&&response.responseText){record.set('error',response.responseText);}
else{record.set('error',this.unknownErrorText);}
record.set('state','failed');record.commit();}},requestProgress:function(){var records,p;var o={url:this.progressUrl,method:'post',params:{},scope:this,callback:function(options,success,response){var o;if(true!==success){return;}
try{o=Ext.decode(response.responseText);}
catch(e){return;}
if('object'!==Ext.type(o)||true!==o.success){return;}
if(this.singleUpload){this.progress={};for(p in o){if(this.progressMap[p]){this.progress[this.progressMap[p]]=parseInt(o[p],10);}}
if(true!==this.eventsSuspended){this.fireEvent('progress',this,this.progress);}}
else{for(p in o){if(this.progressMap[p]&&options.record){options.record.set(this.progressMap[p],parseInt(o[p],10));}}
if(options.record){options.record.commit();if(true!==this.eventsSuspended){this.fireEvent('progress',this,options.record.data,options.record);}}}
this.progressTask.delay(this.progressInterval);}};if(this.singleUpload){o.params[this.progressIdName]=this.progressId;o.params.APC_UPLOAD_PROGRESS=this.progressId;Ext.Ajax.request(o);}
else{records=this.store.query('state','uploading');records.each(function(r){o.params[this.progressIdName]=r.get('progressId');o.params.APC_UPLOAD_PROGRESS=o.params[this.progressIdName];o.record=r;(function(){Ext.Ajax.request(o);}).defer(250);},this);}},setPath:function(path){this.path=path;},setUrl:function(url){this.url=url;},startProgress:function(){if(!this.progressTask){this.progressTask=new Ext.util.DelayedTask(this.requestProgress,this);}
this.progressTask.delay.defer(this.progressInterval/2,this.progressTask,[this.progressInterval]);},stopProgress:function(){if(this.progressTask){this.progressTask.cancel();}},stopAll:function(){var records=this.store.query('state','uploading');records.each(this.stopUpload,this);},stopUpload:function(record){var iframe=false;if(record){iframe=this.getIframe(record);this.stopIframe(iframe);this.upCount--;this.upCount=0>this.upCount?0:this.upCount;record.set('state','stopped');this.fireFinishEvents({record:record});}
else if(this.form){iframe=Ext.fly(this.form.dom.target);this.stopIframe(iframe);this.upCount=0;this.fireFinishEvents();}},stopIframe:function(iframe){if(iframe){try{iframe.dom.contentWindow.stop();iframe.remove.defer(250,iframe);}
catch(e){}}},upload:function(){var records=this.store.queryBy(function(r){return'done'!==r.get('state');});if(!records.getCount()){return;}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforeallstart',this)){return;}
if(this.singleUpload){this.uploadSingle();}
else{records.each(this.uploadFile,this);}
if(true===this.enableProgress){this.startProgress();}},uploadCallback:function(options,success,response){var o;this.upCount--;this.form=false;if(true===success){try{o=Ext.decode(response.responseText);}
catch(e){this.processFailure(options,response,this.jsonErrorText);this.fireFinishEvents(options);return;}
if(true===o.success){this.processSuccess(options,response,o);}
else{this.processFailure(options,response,o);}}
else{this.processFailure(options,response);}
this.fireFinishEvents(options);},uploadFile:function(record,params){if(true!==this.eventsSuspended&&false===this.fireEvent('beforefilestart',this,record)){return;}
var form=this.createForm(record);var inp=record.get('input');inp.set({name:inp.id});form.appendChild(inp);var o=this.getOptions(record,params);o.form=form;record.set('state','uploading');record.set('pctComplete',0);this.upCount++;Ext.Ajax.request(o);this.getIframe.defer(100,this,[record]);},uploadSingle:function(){var records=this.store.queryBy(function(r){return'done'!==r.get('state');});if(!records.getCount()){return;}
var form=this.createForm();records.each(function(record){var inp=record.get('input');inp.set({name:inp.id});form.appendChild(inp);record.set('state','uploading');},this);var o=this.getOptions();o.form=form;this.form=form;this.upCount++;Ext.Ajax.request(o);}});Ext.reg('fileuploader',Ext.ux.FileUploader);

Ext.namespace('Ext.ux.form');Ext.ux.form.BrowseButton=Ext.extend(Ext.Button,{inputFileName:'file',debug:false,FLOAT_EL_WIDTH:60,FLOAT_EL_HEIGHT:18,buttonCt:null,clipEl:null,floatEl:null,inputFileEl:null,originalHandler:null,originalScope:null,initComponent:function(){Ext.ux.form.BrowseButton.superclass.initComponent.call(this);this.originalHandler=this.handler;this.originalScope=this.scope;this.handler=null;this.scope=null;},onRender:function(ct,position){Ext.ux.form.BrowseButton.superclass.onRender.call(this,ct,position);this.buttonCt=this.el.child('.x-btn-center em');this.buttonCt.position('relative');var styleCfg={position:'absolute',overflow:'hidden',top:'0px',left:'0px'};if(Ext.isIE){Ext.apply(styleCfg,{left:'-3px',top:'-3px'});}else if(Ext.isGecko){Ext.apply(styleCfg,{left:'-3px',top:'-3px'});}else if(Ext.isSafari){Ext.apply(styleCfg,{left:'-4px',top:'-2px'});}
this.clipEl=this.buttonCt.createChild({tag:'div',style:styleCfg});this.setClipSize();this.clipEl.on({'mousemove':this.onButtonMouseMove,'mouseover':this.onButtonMouseMove,scope:this});this.floatEl=this.clipEl.createChild({tag:'div',style:{position:'absolute',width:this.FLOAT_EL_WIDTH+'px',height:this.FLOAT_EL_HEIGHT+'px',overflow:'hidden'}});if(this.debug){this.clipEl.applyStyles({'background-color':'green'});this.floatEl.applyStyles({'background-color':'red'});}else{this.clipEl.setOpacity(0.0);}
var buttonEl=this.el.child(this.buttonSelector);buttonEl.on('focus',this.onButtonFocus,this);if(Ext.isIE){this.el.on('keydown',this.onButtonKeyDown,this);}
this.createInputFile();},setClipSize:function(){if(this.clipEl){var width=this.buttonCt.getWidth();var height=this.buttonCt.getHeight();if(width===0||height===0){this.setClipSize.defer(100,this);}else{if(Ext.isIE){width=width+5;height=height+5;}else if(Ext.isGecko){width=width+6;height=height+6;}else if(Ext.isSafari){width=width+6;height=height+6;}
this.clipEl.setSize(width,height);}}},createInputFile:function(){this.floatEl.select('em').each(function(el){el.remove();});this.inputFileEl=this.floatEl.createChild({tag:'input',type:'file',size:1,name:this.inputFileName||Ext.id(this.el),tabindex:this.tabIndex,style:{position:'absolute',cursor:'pointer',right:'0px',top:'0px'}});this.inputFileEl=this.inputFileEl.child('input')||this.inputFileEl;this.inputFileEl.on({'click':this.onInputFileClick,'change':this.onInputFileChange,'focus':this.onInputFileFocus,'select':this.onInputFileFocus,'blur':this.onInputFileBlur,scope:this});if(this.tooltip){if(typeof this.tooltip=='object'){Ext.QuickTips.register(Ext.apply({target:this.inputFileEl},this.tooltip));}else{this.inputFileEl.dom[this.tooltipType]=this.tooltip;}}},onButtonFocus:function(e){if(this.inputFileEl){this.inputFileEl.focus();e.stopEvent();}},onButtonKeyDown:function(e){if(this.inputFileEl&&e.getKey()==Ext.EventObject.SPACE){this.inputFileEl.dom.click();e.stopEvent();}},onButtonMouseMove:function(e){var xy=e.getXY();xy[0]-=this.FLOAT_EL_WIDTH/2;xy[1]-=this.FLOAT_EL_HEIGHT/2;this.floatEl.setXY(xy);},onInputFileFocus:function(e){if(!this.isDisabled){this.el.addClass("x-btn-over");}},onInputFileBlur:function(e){this.el.removeClass("x-btn-over");},onInputFileClick:function(e){e.stopPropagation();},onInputFileChange:function(){if(this.originalHandler){this.originalHandler.call(this.originalScope,this);}},detachInputFile:function(noCreate){var result=this.inputFileEl;if(typeof this.tooltip=='object'){Ext.QuickTips.unregister(this.inputFileEl);}else{this.inputFileEl.dom[this.tooltipType]=null;}
this.inputFileEl.removeAllListeners();this.inputFileEl=null;if(!noCreate){this.createInputFile();}
return result;},getInputFile:function(){return this.inputFileEl;},disable:function(){Ext.ux.form.BrowseButton.superclass.disable.call(this);this.inputFileEl.dom.disabled=true;},enable:function(){Ext.ux.form.BrowseButton.superclass.enable.call(this);this.inputFileEl.dom.disabled=false;}});Ext.reg('browsebutton',Ext.ux.form.BrowseButton);

Ext.ux.IconCombo=Ext.extend(Ext.form.ComboBox,{initComponent:function(){Ext.apply(this,{tpl:'<tpl for=".">'
+'<div class="x-combo-list-item ux-icon-combo-item '
+'{'+this.iconClsField+'}">'
+'{'+this.displayField+'}'
+'</div></tpl>'});Ext.ux.IconCombo.superclass.initComponent.apply(this,arguments);},onRender:function(ct,position){Ext.ux.IconCombo.superclass.onRender.apply(this,arguments);this.wrap.applyStyles({position:'relative'});this.el.addClass('ux-icon-combo-input');this.icon=Ext.DomHelper.append(this.el.up('div.x-form-field-wrap'),{tag:'div',style:'position:absolute'});},afterRender:function(){Ext.ux.IconCombo.superclass.afterRender.apply(this,arguments);if(undefined!==this.value){this.setValue(this.value);}},setIconCls:function(){var rec=this.store.query(this.valueField,this.getValue()).itemAt(0);if(rec&&this.icon){this.icon.className='ux-icon-combo-icon '+rec.get(this.iconClsField);}},setValue:function(value){Ext.ux.IconCombo.superclass.setValue.call(this,value);this.setIconCls();},clearValue:function(){Ext.ux.IconCombo.superclass.clearValue.call(this);if(this.icon){this.icon.className='';}}});Ext.reg('iconcombo',Ext.ux.IconCombo);

Ext.ns('Ext.ux.tree');Ext.ux.tree.ArrayTree=Ext.extend(Ext.tree.TreePanel,{collapseAllText:'Collapse All',defaultRootConfig:{loaded:true,expanded:true,leaf:false,id:Ext.id()},defaultTools:true,expandAllText:'Expand All',expandedNodes:{},stateEvents:['expandnode','collapsenode'],initComponent:function(){var cfg=Ext.apply(this.defaultRootConfig,this.rootConfig,{children:this.children});Ext.apply(this,{root:new Ext.tree.AsyncTreeNode(cfg),loader:new Ext.tree.TreeLoader({preloadChildren:true,clearOnLoad:false}),sorter:this.sort?new Ext.tree.TreeSorter(this):undefined});if(this.defaultTools){Ext.apply(this,{tools:[{id:'minus',qtip:this.collapseAllText,scope:this,handler:this.collapseAll},{id:'plus',qtip:this.expandAllText,scope:this,handler:this.expandAll}]});}
Ext.ux.tree.ArrayTree.superclass.initComponent.apply(this,arguments);if(false!==this.stateful){this.on({scope:this,beforeexpandnode:this.beforeExpandNode,beforecollapsenode:this.beforeCollapseNode});}},onRender:function(){Ext.ux.tree.ArrayTree.superclass.onRender.apply(this,arguments);this.loader.load(this.root);},afterRender:function(){Ext.ux.tree.ArrayTree.superclass.afterRender.apply(this,arguments);for(var id in this.expandedNodes){if(this.expandedNodes.hasOwnProperty(id)){this.expandPath(this.expandedNodes[id]);}}},beforeExpandNode:function(n){if(n.id){this.expandedNodes[n.id]=n.getPath();}},beforeCollapseNode:function(n){if(n.id){delete(this.expandedNodes[n.id]);n.cascade(function(child){if(child.id){delete(this.expandedNodes[child.id]);}},this);}},getState:function(){return{expandedNodes:this.expandedNodes};}});Ext.reg('arraytree',Ext.ux.tree.ArrayTree);

Ext.ux.UploadPanel=Ext.extend(Ext.Panel,{addIconCls:'icon-plus',addText:'Add',bodyStyle:'padding:2px',buttonsAt:'tbar',clickRemoveText:'Click to remove',clickStopText:'Click to stop',emptyText:'No files',enableProgress:true,errorText:'Error',fileCls:'file',fileQueuedText:'File <b>{0}</b> is queued for upload',fileDoneText:'File <b>{0}</b> has been successfully uploaded',fileFailedText:'File <b>{0}</b> failed to upload',fileStoppedText:'File <b>{0}</b> stopped by user',fileUploadingText:'Uploading file <b>{0}</b>',maxFileSize:524288,maxLength:18,removeAllIconCls:'icon-cross',removeAllText:'Remove All',removeIconCls:'icon-minus',removeText:'Remove',selectedClass:'ux-up-item-selected',singleUpload:false,stopAllText:'Stop All',stopIconCls:'icon-stop',uploadText:'Upload',uploadIconCls:'icon-upload',workingIconCls:'icon-working',initComponent:function(){var addCfg={xtype:'browsebutton',text:this.addText+'...',iconCls:this.addIconCls,scope:this,handler:this.onAddFile};var upCfg={xtype:'button',iconCls:this.uploadIconCls,text:this.uploadText,scope:this,handler:this.onUpload,disabled:true};var removeAllCfg={xtype:'button',iconCls:this.removeAllIconCls,tooltip:this.removeAllText,scope:this,handler:this.onRemoveAllClick,disabled:true};if('body'!==this.buttonsAt){this[this.buttonsAt]=[addCfg,upCfg,'->',removeAllCfg];}
var fields=[{name:'id',type:'text',system:true},{name:'shortName',type:'text',system:true},{name:'fileName',type:'text',system:true},{name:'filePath',type:'text',system:true},{name:'fileCls',type:'text',system:true},{name:'input',system:true},{name:'form',system:true},{name:'state',type:'text',system:true},{name:'error',type:'text',system:true},{name:'progressId',type:'int',system:true},{name:'bytesTotal',type:'int',system:true},{name:'bytesUploaded',type:'int',system:true},{name:'estSec',type:'int',system:true},{name:'filesUploaded',type:'int',system:true},{name:'speedAverage',type:'int',system:true},{name:'speedLast',type:'int',system:true},{name:'timeLast',type:'int',system:true},{name:'timeStart',type:'int',system:true},{name:'pctComplete',type:'int',system:true}];if(Ext.isArray(this.customFields)){fields.push(this.customFields);}
this.store=new Ext.data.SimpleStore({id:0,fields:fields,data:[]});Ext.apply(this,{items:[{xtype:'dataview',itemSelector:'div.ux-up-item',store:this.store,selectedClass:this.selectedClass,singleSelect:true,emptyText:this.emptyText,tpl:this.tpl||new Ext.XTemplate('<tpl for=".">'
+'<div class="ux-up-item">'
+'<div class="ux-up-icon-file {fileCls}">&#160;</div>'
+'<div class="ux-up-text x-unselectable" qtip="{fileName}">{shortName}</div>'
+'<div id="remove-{[values.input.id]}" class="ux-up-icon-state ux-up-icon-{state}"'
+'qtip="{[this.scope.getQtip(values)]}">&#160;</div>'
+'</div>'
+'</tpl>',{scope:this}),listeners:{click:{scope:this,fn:this.onViewClick}}}]});Ext.ux.UploadPanel.superclass.initComponent.apply(this,arguments);this.view=this.items.itemAt(0);this.addEvents('beforefileadd','fileadd','beforefileremove','fileremove','beforequeueclear','queueclear','beforeupload');this.relayEvents(this.view,['beforeclick','beforeselect','click','containerclick','contextmenu','dblclick','selectionchange']);var config={store:this.store,singleUpload:this.singleUpload,maxFileSize:this.maxFileSize,enableProgress:this.enableProgress,url:this.url,path:this.path};if(this.baseParams){config.baseParams=this.baseParams;}
this.uploader=new Ext.ux.FileUploader(config);this.relayEvents(this.uploader,['beforeallstart','allfinished','progress']);this.on({beforeallstart:{scope:this,fn:function(){this.uploading=true;this.updateButtons();}},allfinished:{scope:this,fn:function(){this.uploading=false;this.updateButtons();}},progress:{fn:this.onProgress.createDelegate(this)}});},onRender:function(){Ext.ux.UploadPanel.superclass.onRender.apply(this,arguments);var tb='tbar'===this.buttonsAt?this.getTopToolbar():this.getBottomToolbar();this.addBtn=Ext.getCmp(tb.items.first().id);this.uploadBtn=Ext.getCmp(tb.items.itemAt(1).id);this.removeAllBtn=Ext.getCmp(tb.items.last().id);},getQtip:function(values){var qtip='';switch(values.state){case'queued':qtip=String.format(this.fileQueuedText,values.fileName);qtip+='<br>'+this.clickRemoveText;break;case'uploading':qtip=String.format(this.fileUploadingText,values.fileName);qtip+='<br>'+values.pctComplete+'% done';qtip+='<br>'+this.clickStopText;break;case'done':qtip=String.format(this.fileDoneText,values.fileName);qtip+='<br>'+this.clickRemoveText;break;case'failed':qtip=String.format(this.fileFailedText,values.fileName);qtip+='<br>'+this.errorText+':'+values.error;qtip+='<br>'+this.clickRemoveText;break;case'stopped':qtip=String.format(this.fileStoppedText,values.fileName);qtip+='<br>'+this.clickRemoveText;break;}
return qtip;},getFileName:function(inp){return inp.getValue().split(/[\/\\]/).pop();},getFilePath:function(inp){return inp.getValue().replace(/[^\/\\]+$/,'');},getFileCls:function(name){var atmp=name.split('.');if(1===atmp.length){return this.fileCls;}
else{return this.fileCls+'-'+atmp.pop().toLowerCase();}},onAddFile:function(bb){if(true!==this.eventsSuspended&&false===this.fireEvent('beforefileadd',this,bb.getInputFile())){return;}
var inp=bb.detachInputFile();inp.addClass('x-hidden');var fileName=this.getFileName(inp);var rec=new this.store.recordType({input:inp,fileName:fileName,filePath:this.getFilePath(inp),shortName:Ext.util.Format.ellipsis(fileName,this.maxLength),fileCls:this.getFileCls(fileName),state:'queued'},inp.id);rec.commit();this.store.add(rec);this.syncShadow();this.uploadBtn.enable();this.removeAllBtn.enable();if(true!==this.eventsSuspended){this.fireEvent('fileadd',this,this.store,rec);}},onDestroy:function(){if(this.uploader){this.uploader.stopAll();this.uploader.purgeListeners();this.uploader=null;}
if(this.view){this.view.purgeListeners();this.view.destroy();this.view=null;}
if(this.store){this.store.purgeListeners();this.store.destroy();this.store=null;}},onProgress:function(uploader,data,record){var bytesTotal,bytesUploaded,pctComplete,state,idx,item,width,pgWidth;if(record){state=record.get('state');bytesTotal=record.get('bytesTotal')||1;bytesUploaded=record.get('bytesUploaded')||0;if('uploading'===state){pctComplete=Math.round(1000*bytesUploaded/bytesTotal)/10;}
else if('done'===state){pctComplete=100;}
else{pctComplete=0;}
record.set('pctComplete',pctComplete);idx=this.store.indexOf(record);item=Ext.get(this.view.getNode(idx));if(item){width=item.getWidth();item.applyStyles({'background-position':width*pctComplete/100+'px'});}}},onRemoveFile:function(record){if(true!==this.eventsSuspended&&false===this.fireEvent('beforefileremove',this,this.store,record)){return;}
var inp=record.get('input');var wrap=inp.up('em');inp.remove();if(wrap){wrap.remove();}
this.store.remove(record);var count=this.store.getCount();this.uploadBtn.setDisabled(!count);this.removeAllBtn.setDisabled(!count);if(true!==this.eventsSuspended){this.fireEvent('fileremove',this,this.store);this.syncShadow();}},onRemoveAllClick:function(btn){if(true===this.uploading){this.stopAll();}
else{this.removeAll();}},stopAll:function(){this.uploader.stopAll();},onViewClick:function(view,index,node,e){var t=e.getTarget('div:any(.ux-up-icon-queued|.ux-up-icon-failed|.ux-up-icon-done|.ux-up-icon-stopped)');if(t){this.onRemoveFile(this.store.getAt(index));}
t=e.getTarget('div.ux-up-icon-uploading');if(t){this.uploader.stopUpload(this.store.getAt(index));}},onUpload:function(){if(true!==this.eventsSuspended&&false===this.fireEvent('beforeupload',this)){return false;}
this.uploader.upload();},setUrl:function(url){this.url=url;this.uploader.setUrl(url);},setPath:function(path){this.uploader.setPath(path);},updateButtons:function(){if(true===this.uploading){this.addBtn.disable();this.uploadBtn.disable();this.removeAllBtn.setIconClass(this.stopIconCls);this.removeAllBtn.getEl().child(this.removeAllBtn.buttonSelector).dom[this.removeAllBtn.tooltipType]=this.stopAllText;}
else{this.addBtn.enable();this.uploadBtn.enable();this.removeAllBtn.setIconClass(this.removeAllIconCls);this.removeAllBtn.getEl().child(this.removeAllBtn.buttonSelector).dom[this.removeAllBtn.tooltipType]=this.removeAllText;}},removeAll:function(){var suspendState=this.eventsSuspended;if(false!==this.eventsSuspended&&false===this.fireEvent('beforequeueclear',this,this.store)){return false;}
this.suspendEvents();this.store.each(this.onRemoveFile,this);this.eventsSuspended=suspendState;if(true!==this.eventsSuspended){this.fireEvent('queueclear',this,this.store);}
this.syncShadow();},syncShadow:function(){if(this.contextmenu&&this.contextmenu.shadow){this.contextmenu.getEl().shadow.show(this.contextmenu.getEl());}}});Ext.reg('uploadpanel',Ext.ux.UploadPanel);

Array.prototype.contains=function(element){return this.indexOf(element)!==-1;};Ext.namespace("Ext.ux");Ext.ux.DDView=function(config){if(!config.itemSelector){var tpl=config.tpl;if(this.classRe.test(tpl)){config.tpl=tpl.replace(this.classRe,'class=$1x-combo-list-item $2$1');}else{config.tpl=tpl.replace(this.tagRe,'$1 class="x-combo-list-item" $2');}
config.itemSelector=".x-combo-list-item";}
Ext.ux.DDView.superclass.constructor.call(this,Ext.apply(config,{border:false}));};Ext.extend(Ext.ux.DDView,Ext.DataView,{sortDir:'ASC',isFormField:true,classRe:new RegExp(/class=(['"])(.*)\1/),tagRe:new RegExp(/(<\w*)(.*?>)/),reset:Ext.emptyFn,clearInvalid:Ext.form.Field.prototype.clearInvalid,msgTarget:'qtip',afterRender:function(){Ext.ux.DDView.superclass.afterRender.call(this);if(this.dragGroup){this.setDraggable(this.dragGroup.split(","));}
if(this.dropGroup){this.setDroppable(this.dropGroup.split(","));}
if(this.deletable){this.setDeletable();}
this.isDirtyFlag=false;this.addEvents("drop");},validate:function(){return true;},destroy:function(){this.purgeListeners();this.getEl().removeAllListeners();this.getEl().remove();if(this.dragZone){if(this.dragZone.destroy){this.dragZone.destroy();}}
if(this.dropZone){if(this.dropZone.destroy){this.dropZone.destroy();}}},getName:function(){return this.name;},setValue:function(v){if(!this.store){throw"DDView.setValue(). DDView must be constructed with a valid Store";}
var data={};data[this.store.reader.meta.root]=v?[].concat(v):[];this.store.proxy=new Ext.data.MemoryProxy(data);this.store.load();},getValue:function(){var result='(';this.store.each(function(rec){result+=rec.id+',';});return result.substr(0,result.length-1)+')';},getIds:function(){var i=0,result=new Array(this.store.getCount());this.store.each(function(rec){result[i++]=rec.id;});return result;},isDirty:function(){return this.isDirtyFlag;},getTargetFromEvent:function(e){var target=e.getTarget();while((target!==null)&&(target.parentNode!=this.el.dom)){target=target.parentNode;}
if(!target){target=this.el.dom.lastChild||this.el.dom;}
return target;},getDragData:function(e){var target=this.findItemFromChild(e.getTarget());if(target){if(!this.isSelected(target)){delete this.ignoreNextClick;this.onItemClick(target,this.indexOf(target),e);this.ignoreNextClick=true;}
var dragData={sourceView:this,viewNodes:[],records:[],copy:this.copy||(this.allowCopy&&e.ctrlKey)};if(this.getSelectionCount()==1){var i=this.getSelectedIndexes()[0];var n=this.getNode(i);dragData.viewNodes.push(dragData.ddel=n);dragData.records.push(this.store.getAt(i));dragData.repairXY=Ext.fly(n).getXY();}else{dragData.ddel=document.createElement('div');dragData.ddel.className='multi-proxy';this.collectSelection(dragData);}
return dragData;}
return false;},getRepairXY:function(e){return this.dragData.repairXY;},collectSelection:function(data){data.repairXY=Ext.fly(this.getSelectedNodes()[0]).getXY();if(this.preserveSelectionOrder===true){Ext.each(this.getSelectedIndexes(),function(i){var n=this.getNode(i);var dragNode=n.cloneNode(true);dragNode.id=Ext.id();data.ddel.appendChild(dragNode);data.records.push(this.store.getAt(i));data.viewNodes.push(n);},this);}else{var i=0;this.store.each(function(rec){if(this.isSelected(i)){var n=this.getNode(i);var dragNode=n.cloneNode(true);dragNode.id=Ext.id();data.ddel.appendChild(dragNode);data.records.push(this.store.getAt(i));data.viewNodes.push(n);}
i++;},this);}},setDraggable:function(ddGroup){if(ddGroup instanceof Array){Ext.each(ddGroup,this.setDraggable,this);return;}
if(this.dragZone){this.dragZone.addToGroup(ddGroup);}else{this.dragZone=new Ext.dd.DragZone(this.getEl(),{containerScroll:true,ddGroup:ddGroup});if(!this.multiSelect){this.singleSelect=true;}
this.dragZone.getDragData=this.getDragData.createDelegate(this);this.dragZone.getRepairXY=this.getRepairXY;this.dragZone.onEndDrag=this.onEndDrag;}},setDroppable:function(ddGroup){if(ddGroup instanceof Array){Ext.each(ddGroup,this.setDroppable,this);return;}
if(this.dropZone){this.dropZone.addToGroup(ddGroup);}else{this.dropZone=new Ext.dd.DropZone(this.getEl(),{owningView:this,containerScroll:true,ddGroup:ddGroup});this.dropZone.getTargetFromEvent=this.getTargetFromEvent.createDelegate(this);this.dropZone.onNodeEnter=this.onNodeEnter.createDelegate(this);this.dropZone.onNodeOver=this.onNodeOver.createDelegate(this);this.dropZone.onNodeOut=this.onNodeOut.createDelegate(this);this.dropZone.onNodeDrop=this.onNodeDrop.createDelegate(this);}},getDropPoint:function(e,n,dd){if(n==this.el.dom){return"above";}
var t=Ext.lib.Dom.getY(n),b=t+n.offsetHeight;var c=t+(b-t)/2;var y=Ext.lib.Event.getPageY(e);if(y<=c){return"above";}else{return"below";}},isValidDropPoint:function(pt,n,data){if(!data.viewNodes||(data.viewNodes.length!=1)){return true;}
var d=data.viewNodes[0];if(d==n){return false;}
if((pt=="below")&&(n.nextSibling==d)){return false;}
if((pt=="above")&&(n.previousSibling==d)){return false;}
return true;},onNodeEnter:function(n,dd,e,data){if(this.highlightColor&&(data.sourceView!=this)){this.el.highlight(this.highlightColor);}
return false;},onNodeOver:function(n,dd,e,data){var dragElClass=this.dropNotAllowed;var pt=this.getDropPoint(e,n,dd);if(this.isValidDropPoint(pt,n,data)){if(this.appendOnly||this.sortField){return"x-tree-drop-ok-below";}
if(pt){var targetElClass;if(pt=="above"){dragElClass=n.previousSibling?"x-tree-drop-ok-between":"x-tree-drop-ok-above";targetElClass="x-view-drag-insert-above";}else{dragElClass=n.nextSibling?"x-tree-drop-ok-between":"x-tree-drop-ok-below";targetElClass="x-view-drag-insert-below";}
if(this.lastInsertClass!=targetElClass){Ext.fly(n).replaceClass(this.lastInsertClass,targetElClass);this.lastInsertClass=targetElClass;}}}
return dragElClass;},onNodeOut:function(n,dd,e,data){this.removeDropIndicators(n);},onNodeDrop:function(n,dd,e,data){if(this.fireEvent("drop",this,n,dd,e,data)===false){return false;}
var pt=this.getDropPoint(e,n,dd);var insertAt=(this.appendOnly||(n==this.el.dom))?this.store.getCount():n.viewIndex;if(pt=="below"){insertAt++;}
if(data.sourceView==this){if(pt=="below"){if(data.viewNodes[0]==n){data.viewNodes.shift();}}else{if(data.viewNodes[data.viewNodes.length-1]==n){data.viewNodes.pop();}}
if(!data.viewNodes.length){return false;}
if(insertAt>this.store.indexOf(data.records[0])){insertAt--;}}
if(data.node instanceof Ext.tree.TreeNode){var r=data.node.getOwnerTree().recordFromNode(data.node);if(r){data.records=[r];}}
if(!data.records){alert("Programming problem. Drag data contained no Records");return false;}
for(var i=0;i<data.records.length;i++){var r=data.records[i];var dup=this.store.getById(r.id);if(dup&&(dd!=this.dragZone)){if(!this.allowDup&&!this.allowTrash){Ext.fly(this.getNode(this.store.indexOf(dup))).frame("red",1);return true}
var x=new Ext.data.Record();r.id=x.id;delete x;}
if(data.copy){this.store.insert(insertAt++,r.copy());}else{if(data.sourceView){data.sourceView.isDirtyFlag=true;data.sourceView.store.remove(r);}
if(!this.allowTrash)
this.store.insert(insertAt++,r);}
if(this.sortField){this.store.sort(this.sortField,this.sortDir);}
this.isDirtyFlag=true;}
this.dragZone.cachedTarget=null;return true;},onEndDrag:function(data,e){var d=Ext.get(this.dragData.ddel);if(d&&d.hasClass("multi-proxy")){d.remove();}},removeDropIndicators:function(n){if(n){Ext.fly(n).removeClass(["x-view-drag-insert-above","x-view-drag-insert-left","x-view-drag-insert-right","x-view-drag-insert-below"]);this.lastInsertClass="_noclass";}},setDeletable:function(imageUrl){if(!this.singleSelect&&!this.multiSelect){this.singleSelect=true;}
var c=this.getContextMenu();this.contextMenu.on("itemclick",function(item){switch(item.id){case"delete":this.remove(this.getSelectedIndexes());break;}},this);this.contextMenu.add({icon:imageUrl||AU.resolveUrl("/images/delete.gif"),id:"delete",text:AU.getMessage("deleteItem")});},getContextMenu:function(){if(!this.contextMenu){this.contextMenu=new Ext.menu.Menu({id:this.id+"-contextmenu"});this.el.on("contextmenu",this.showContextMenu,this);}
return this.contextMenu;},disableContextMenu:function(){if(this.contextMenu){this.el.un("contextmenu",this.showContextMenu,this);}},showContextMenu:function(e,item){item=this.findItemFromChild(e.getTarget());if(item){e.stopEvent();this.select(this.getNode(item),this.multiSelect&&e.ctrlKey,true);this.contextMenu.showAt(e.getXY());}},remove:function(selectedIndices){selectedIndices=[].concat(selectedIndices);for(var i=0;i<selectedIndices.length;i++){var rec=this.store.getAt(selectedIndices[i]);this.store.remove(rec);}},onDblClick:function(e){var item=this.findItemFromChild(e.getTarget());if(item){if(this.fireEvent("dblclick",this,this.indexOf(item),item,e)===false){return false;}
if(this.dragGroup){var targets=Ext.dd.DragDropMgr.getRelated(this.dragZone,true);while(targets.contains(this.dropZone)){targets.remove(this.dropZone);}
if((targets.length==1)&&(targets[0].owningView)){this.dragZone.cachedTarget=null;var el=Ext.get(targets[0].getEl());var box=el.getBox(true);targets[0].onNodeDrop(el.dom,{target:el.dom,xy:[box.x,box.y+box.height-1]},null,this.getDragData(e));}}}},onItemClick:function(item,index,e){if(this.ignoreNextClick){delete this.ignoreNextClick;return;}
if(this.fireEvent("beforeclick",this,index,item,e)===false){return false;}
if(this.multiSelect||this.singleSelect){if(this.multiSelect&&e.shiftKey&&this.lastSelection){this.select(this.getNodes(this.indexOf(this.lastSelection),index),false);}else if(this.isSelected(item)&&e.ctrlKey){this.deselect(item);}else{this.deselect(item);this.select(item,this.multiSelect&&e.ctrlKey);this.lastSelection=item;}
e.preventDefault();}
return true;}});

Ext.namespace('Ext.ux.plugins');Ext.ux.plugins.FieldCase=function(config){if(!config)config={};this.forceCase=config.forceCase;this.allowMask=config.allowMask||'[A-Z][a-z][0-9] ';this.messageShown=false;this.invalidKeyMessage='This field will only accept a limited range of characters.  Please enter only numbers';};Ext.ux.plugins.FieldCase.prototype={init:function(field){this.field=field;if(field.rendered){this.assignEl();}else{field.on('render',this.assignEl,this);}
field.on('blur',this.removeValueWhenInvalid,this);field.on('focus',this.processMaskFocus,this);},assignEl:function(){this.inputTextElement=this.field.getEl().dom;this.field.getEl().on('keypress',this.processKeyPress,this);this.field.getEl().on('keydown',this.processKeyDown,this);if(Ext.isGecko||Ext.isOpera){this.field.getEl().on('mousedown',this.setPreviousValue,this);}
if(Ext.isGecko){this.field.getEl().on('input',this.onInput,this);}
if(Ext.isOpera){this.field.getEl().on('input',this.onInputOpera,this);}},setPreviousValue:function(event){this.oldCursorPos=this.getCursorPosition();},getMask:function(cursorPos){if(cursorPos.start==0&&(this.forceCase=='upper'||this.forceCase=='initialcaps'||this.forceCase=='initialcap')){return'U';}
if(this.forceCase=='upper'){return'U';}
if(this.forceCase=='lower'){return'l';}
return null;},getValidatedKey:function(keycode,cursorPosition){var maskKey=this.getMask(cursorPosition);var x=keycode.pressedKey.match(new RegExp("[a-zA-Z0-9 ]","g"));if(maskKey=='U'){return x.toString().toUpperCase();}else if(maskKey=='l'){return x.toString.toLowerCase();}
return(x);},processKeyDown:function(e){this.processMaskFormatting(e,'keydown');},processKeyPress:function(e){this.processMaskFormatting(e,'keypress');},isManagedByKeyDown:function(keycode){if(keycode.isDelete||keycode.isBackspace){return(true);}
return(false);},processMaskFormatting:function(e,type){this.oldCursorPos=null;var cursorPos=this.getCursorPosition();var keycode=this.getKeyCode(e,type);if(keycode.unicode==0){return;}
if((keycode.unicode==67||keycode.unicode==99)&&e.ctrlKey){return;}
if((keycode.unicode==88||keycode.unicode==120)&&e.ctrlKey){return;}
if((keycode.unicode==86||keycode.unicode==118)&&e.ctrlKey){return;}
if((keycode.isBackspace||keycode.isDelete)&&Ext.isOpera){this.prevValueOpera={cursorPos:cursorPos,keycode:keycode};return;}
if(type=='keydown'&&!this.isManagedByKeyDown(keycode)){return true;}
if(type=='keypress'&&this.isManagedByKeyDown(keycode)){return true;}
if(this.handleEventBubble(e,keycode,type)){return true;}
return(this.manageTheText(keycode,cursorPos));},manageTheText:function(keycode,cursorPos){if(cursorPos===false){return false;}
if(this.injectValue(keycode,cursorPos)){this.moveCursorToPosition(keycode,cursorPos);}
return(false);},processMaskFocus:function(){if(this.inputTextElement.value.length==0){var cursorPos=this.getCursorPosition();this.moveCursorToPosition(null,cursorPos);}},isManagedByBrowser:function(keyEvent,keycode,type){if(((type=='keypress'&&keyEvent.charCode===0)||type=='keydown')&&(keycode.unicode==Ext.EventObject.TAB||keycode.unicode==Ext.EventObject.RETURN||keycode.unicode==Ext.EventObject.ENTER||keycode.unicode==Ext.EventObject.SHIFT||keycode.unicode==Ext.EventObject.CONTROL||keycode.unicode==Ext.EventObject.ESC||keycode.unicode==Ext.EventObject.PAGEUP||keycode.unicode==Ext.EventObject.PAGEDOWN||keycode.unicode==Ext.EventObject.END||keycode.unicode==Ext.EventObject.HOME||keycode.unicode==Ext.EventObject.LEFT||keycode.unicode==Ext.EventObject.UP||keycode.unicode==Ext.EventObject.RIGHT||keycode.unicode==Ext.EventObject.DOWN)){return(true);}
return(false);},handleEventBubble:function(keyEvent,keycode,type){try{if(keycode&&this.isManagedByBrowser(keyEvent,keycode,type)){return true;}
keyEvent.stopEvent();return false;}catch(e){alert(e.message);}},getCursorPosition:function(){var s,e,r;if(this.inputTextElement.createTextRange){r=document.selection.createRange().duplicate();r.moveEnd('character',this.inputTextElement.value.length);if(r.text===''){s=this.inputTextElement.value.length;}else{s=this.inputTextElement.value.lastIndexOf(r.text);}
r=document.selection.createRange().duplicate();r.moveStart('character',-this.inputTextElement.value.length);e=r.text.length;}else{s=this.inputTextElement.selectionStart;e=this.inputTextElement.selectionEnd;}
return this.CursorPosition(s,e,r,this.inputTextElement.value);},moveCursorToPosition:function(keycode,cursorPosition){var p=(!keycode||(keycode&&keycode.isBackspace))?cursorPosition.start:cursorPosition.start+1;if(this.inputTextElement.createTextRange){cursorPosition.range.move('character',p);cursorPosition.range.select();}else{this.inputTextElement.selectionStart=p;this.inputTextElement.selectionEnd=p;}},injectValue:function(keycode,cursorPosition){var key
if(!keycode.isDelete&&!keycode.isBackspace){key=this.getValidatedKey(keycode,cursorPosition);if(key){this.inputTextElement.value=cursorPosition.previousValue.substring(0,cursorPosition.start)
+key+
cursorPosition.previousValue.substring(cursorPosition.start+1,cursorPosition.previousValue.length);return true;}else{if(!this.messageShown){this.messageShown=true;this.field.invalidText+=this.invalidKeyMessage;Ext.Msg.alert('Limited input',this.invalidKeyMessage);}}}else{if(keycode.isBackspace){cursorPosition.dec();this.inputTextElement.value=cursorPosition.previousValue.substring(0,cursorPosition.start)
+cursorPosition.previousValue.substring(cursorPosition.start+1,cursorPosition.previousValue.length);return true;}else{this.inputTextElement.value=cursorPosition.previousValue.substring(0,cursorPosition.start)
+cursorPosition.previousValue.substring(cursorPosition.start+1,cursorPosition.previousValue.length);cursorPosition.dec();return true;}}
return false;},getKeyCode:function(onKeyDownEvent,type){var keycode={};keycode.unicode=onKeyDownEvent.getKey();keycode.isShiftPressed=onKeyDownEvent.shiftKey;keycode.isDelete=((onKeyDownEvent.getKey()==Ext.EventObject.DELETE&&type=='keydown')||(type=='keypress'&&onKeyDownEvent.charCode===0&&onKeyDownEvent.keyCode==Ext.EventObject.DELETE))?true:false;keycode.isTab=(onKeyDownEvent.getKey()==Ext.EventObject.TAB)?true:false;keycode.isBackspace=(onKeyDownEvent.getKey()==Ext.EventObject.BACKSPACE)?true:false;keycode.isLeftOrRightArrow=(onKeyDownEvent.getKey()==Ext.EventObject.LEFT||onKeyDownEvent.getKey()==Ext.EventObject.RIGHT)?true:false;keycode.pressedKey=String.fromCharCode(keycode.unicode);return(keycode);},CursorPosition:function(start,end,range,previousValue){var cursorPosition={};cursorPosition.start=isNaN(start)?0:start;cursorPosition.end=isNaN(end)?0:end;cursorPosition.range=range;cursorPosition.previousValue=previousValue;cursorPosition.inc=function(){cursorPosition.start++;cursorPosition.end++;};cursorPosition.dec=function(){cursorPosition.start--;cursorPosition.end--;};return(cursorPosition);}};Ext.applyIf(RegExp,{escape:function(str){return new String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');}});Ext.ux.FieldCase=Ext.ux.plugins.FieldCase;

Ext.ns('Ext.ux.plugins');Ext.ux.plugins.Dynamics=function(config){Ext.apply(this,config);};Ext.extend(Ext.ux.plugins.Dynamics,Ext.util.Observable,{field:null,init:function(field){this.field=field;Ext.apply(field,{setValue:field.setValue.createSequence(function(v){this.doDynamics();},this)});this.field.on('change',this.doDynamics,this);this.field.on('select',this.doDynamics,this);this.field.on('render',this.registerForm,this);},registerForm:function(){this.field.getForm().on('activate',this.doDynamics,this);},showContainer:function(field){field.enable();field.show();field.el.up('.x-form-item').setDisplayed(true);},hideContainer:function(field){field.disable();field.hide();field.el.up('.x-form-item').setDisplayed(false);},setContainerVisible:function(visible){if(visible){this.showContainer();}
else{this.hideContainer();}
return this;},checkFieldValue:function(operator,controlValue){switch(operator){case'isnull':return(this.field.getValue()==''||this.field.getValue()==null);break;case'eq':return(this.field.getValue()==controlValue||this.field.getValue().toString()==controlValue);break;case'neq':return(this.field.getValue()!=controlValue)
break;case'gt':return(this.field.getValue()>controlValue)
break;case'lt':return(this.field.getValue()<controlValue)
break;case'gte':return(this.field.getValue()>=controlValue)
break;case'lte':return(this.field.getValue()<=controlValue)
break;case'contains':var valueString=new String(this.field.getValue());if(valueString.indexOf(controlvalue)>=0){return true;}
default:return(this.field.getValue()==controlValue||this.field.getValue().toString()==controlValue);}
return false;},doResetControlEffect:function(effect,control,setValue){switch(effect){case'hide':this.showContainer(control);break;case'disable':control.enable();break;}},doControlEffect:function(effect,control,setValue){switch(effect){case'hide':this.hideContainer(control);break;case'disable':control.disable();break;case'setvalue':control.setValue(setValue);break;}},doResetElementEffect:function(effect,element,setValue){switch(effect){case'hide':element.show();break;}},doElementEffect:function(effect,element,setValue){switch(effect){case'hide':element.hide();break;case'sethtml':element.insertHtml('beforeBegin',setValue);break;}},doDynamics:function(){for(var i=0;i<this.dynamics.length;i++){var currentDynamic=this.dynamics[i];if(currentDynamic.debug==true)Ext.Msg.alert('Field Dynamics debug','Field value: '+this.field.getValue());if(!(this.checkFieldValue(currentDynamic.operator,currentDynamic.compare))){if(currentDynamic.targetControl!=undefined){var f=this.field.findParentBy(function(e){return e.isXType('form')}).getForm().findField(currentDynamic.targetControl);if(f!=null){this.doResetControlEffect(currentDynamic.effect,f,currentDynamic.setvalue);}}
if(currentDynamic.targetElement!=undefined){if(Ext.get(currentDynamic.targetElement)!=null){this.doResetElementEffect(currentDynamic.effect,Ext.get(currentDynamic.targetElement),currentDynamic.setvalue);}}}}
for(var i=0;i<this.dynamics.length;i++){var currentDynamic=this.dynamics[i];if(currentDynamic.value!=''){if(this.checkFieldValue(currentDynamic.operator,currentDynamic.compare)){if(currentDynamic.targetControl!=undefined){var f=this.field.findParentBy(function(e){return e.isXType('form')}).getForm().findField(currentDynamic.targetControl);if(f!=null){this.doControlEffect(currentDynamic.effect,f,currentDynamic.setvalue);}}
if(currentDynamic.targetElement!=undefined){if(Ext.get(currentDynamic.targetElement)!=null){this.doElementEffect(currentDynamic.effect,Ext.get(currentDynamic.targetElement),currentDynamic.setvalue);}}}}}}});

Ext.form.FileUploadField=Ext.extend(Ext.form.TextField,{buttonText:'...',buttonOnly:false,buttonOffset:3,readOnly:true,autoSize:Ext.emptyFn,initComponent:function(){Ext.form.FileUploadField.superclass.initComponent.call(this);this.addEvents('fileselected');},onRender:function(ct,position){Ext.form.FileUploadField.superclass.onRender.call(this,ct,position);this.wrap=this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});this.el.addClass('x-form-file-text');this.fileInput=this.wrap.createChild({id:this.getFileInputId(),name:this.name||this.getId(),cls:'x-form-file',tag:'input',type:'file',size:1});var btnCfg=Ext.applyIf(this.buttonCfg||{},{text:this.buttonText});this.button=new Ext.Button(Ext.apply(btnCfg,{renderTo:this.wrap,cls:'x-form-file-btn'+(btnCfg.iconCls?' x-btn-icon':''),iconCls:'upload-icon'}));if(this.buttonOnly){this.el.hide();this.wrap.setWidth(this.button.getEl().getWidth());}
this.filelink=this.wrap.createChild({id:'fileuploadlink',tag:'a',renderTo:this.wrap,href:this.url,html:'Blank Link'});this.fileInput.on('change',function(){var v=this.fileInput.dom.value;this.setValue(v,false);this.fireEvent('fileselected',this,v);},this);},setValue:function(v,g){Ext.form.FileUploadField.superclass.setValue.call(this,v);if(v!=""){if(g==undefined||g){this.el.hide();this.button.hide();this.fileInput.hide();var key=this.findParentBy(function(x){return x.isXType('form')}).getForm().findField(this.fileKeyField).getValue();this.filelink.dom.innerText=v;this.filelink.dom.href=this.url.replace("[key]",key);this.filelink.dom.className='';this.filelink.addClass('');}}else{this.el.show();this.button.show();this.fileInput.show();}},getFileInputId:function(){return this.id+'-file';},onResize:function(w,h){Ext.form.FileUploadField.superclass.onResize.call(this,w,h);this.wrap.setWidth(w);if(!this.buttonOnly){var w=this.wrap.getWidth()-this.button.getEl().getWidth()-this.buttonOffset;this.el.setWidth(w);}},preFocus:Ext.emptyFn,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);}});Ext.reg('fileuploadfield',Ext.form.FileUploadField);

Ext.namespace('Ext.fx');Ext.namespace('Ext.fx.form');Ext.fx.form.GridLookupField=Ext.extend(Ext.form.TwinTriggerField,{valueField:null,displayField:null,lookupValueField:null,lookupDisplayField:null,point:null,buttonText:'Select...',buttonOnly:false,buttonOffset:3,readOnly:true,url:null,window:null,initComponent:function(config){this.trigger1Class=this.allowBlank?'x-form-clear-trigger':'x-hide-display';this.trigger2Class='x-form-lookup-trigger';Ext.fx.form.GridLookupField.superclass.initComponent.apply(this,arguments);},onFormLoad:function(form,action){if(action.type=='load'){var data=Ext.decode(action.response.responseText);var df=data.dbadmin.form.data.dataset.q1[0][this.displayField];var vf=data.dbadmin.form.data.dataset.q1[0][this.valueField];this.textValue=df?df:'';this.setValue(vf?vf:'');}},onRender:function(ct,position){Ext.fx.form.GridLookupField.superclass.onRender.apply(this,arguments);this.el.addClass('x-form-file-text');this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.name},'before',true);this.el.dom.removeAttribute('name');this.findParentBy(function(x){return x.isXType('form')}).getForm().addListener('actioncomplete',this.onFormLoad,this,{control:this});if(this.allowBlank){new Ext.KeyMap(this.el,{key:Ext.EventObject.DELETE,fn:this.clearValue,scope:this});}},clearValue:function(){this.textValue='';this.setValue(null);},loadWindow:function(requestConfig){Ext.Ajax.request(Ext.apply(requestConfig,{success:this.populateWindow,scope:this}));},populateWindow:function(res){reply=(Ext.decode(res.responseText));this.window.add(reply);this.window.doLayout();},onTrigger1Click:function(){this.clearValue();},onTrigger2Click:function(){this.window=new Ext.Window({lookupcontrol:this,title:'Lookup for: '+(this.fieldLabel?this.fieldLabel:null),width:750,height:500,layout:'fit',modal:true,scripts:true}).show();this.loadWindow({scope:this,params:{fxrendermode:'lookup'},url:this.url+this.point,text:'Loading the lookup...',scripts:true,nocache:true});},returnRecord:function(grid){var id=grid.getSelectionModel().getSelected().get(this.lookupValueField);this.textValue=grid.getSelectionModel().getSelected().get(this.lookupDisplayField);this.setValue(id);this.window.destroy();},getValue:function(){if(this.hiddenField){return this.hiddenField.value;}
return Ext.isDefined(this.value)?this.value:'';},setValue:function(v){if(this.hiddenField){this.hiddenField.value=v;}
Ext.fx.form.GridLookupField.superclass.setValue.call(this,this.textValue);this.value=v;return this;}});Ext.reg('gridlookupfield',Ext.fx.form.GridLookupField);

Ext.ns('Ext.ux.plugins');Ext.ux.plugins.FieldHelp=function(config){Ext.apply(this,config);};Ext.extend(Ext.ux.plugins.FieldHelp,Ext.util.Observable,{init:function(field){field.helpConfig=this;Ext.apply(field,{onRender:field.onRender.createSequence(function(ct,position){if(this.fieldLabel&&(this.helpConfig.helpText)){var fieldCt=this.el.findParent('.x-form-field-wrap',5,true)||this.el.findParent('.x-form-element',5,true);var wrapper=fieldCt.wrap({cls:'ux-fieldhelp-wrap'})
this.helpIcon=wrapper.createChild({cls:(this.helpIconCls||'ux-fieldhelp-icon'),style:'position:absolute; left:0; top:0; display:inline; background:transparent no-repeat scroll 0 2px; width:16px; height:18px;'});this.helpIcon.on('click',function(){try
{if(field.helpHtml!=''&&field.helpHtml!=undefined){var helpWindow=new Ext.Window({xtype:'window',layout:'fit',constrain:true,modal:false,height:300,width:200,title:field.fieldLabel,html:field.helpHtml});helpWindow.show();}
if(field.callbackId!=''&&field.callbackId!=undefined){var helpWindow=new Ext.Window({xtype:'window',layout:'fit',constrain:true,modal:false,height:300,width:200,title:field.fieldLabel,autoLoad:{url:field.callbackUrl+field.callbackPointId,params:{fxcallbackid:field.callbackId}}});helpWindow.show();}}catch(e)
{}});this.alignHelp=function(){var el=this.wrap?this.wrap:this.el;this.helpIcon.alignTo(el,'tl-tr',[2,0]);}
if(this.alignErrorIcon){this.alignErrorIcon=function(){this.errorIcon.alignTo(this.helpIcon,'tl-tr',[0,0]);}}
this.alignHelp();this.on('resize',this.alignHelp,this);Ext.QuickTips.register({target:this.helpIcon,title:(this.helpConfig.helpTitle||this.fieldLabel)+':',text:(this.helpConfig.helpText||'No help defined yet!'),enabled:true,width:180});}})});}});

Ext.ns('Ext.ux.plugins');Ext.ux.plugins.Validation=function(config){Ext.apply(this,config);};Ext.extend(Ext.ux.plugins.Validation,Ext.util.Observable,{init:function(field){field.validations=this.validations;Ext.apply(field,{TestExpression:function(expr,currentVType){return expr.test(field.getValue());},CheckValues:function(currentVType,operator){var controlString=null;if(currentVType.controlid==''&&currentVType.value==''){return true;}
else{if(currentVType.controlid!=''){if(field.ownerCt.getForm().findField(currentVType.controlid)!=null){controlString=field.ownerCt.getForm().findField(currentVType.controlid).getValue();}}
else{if(currentVType.value){controlString=currentVType.value;}}
var fieldString=field.getValue();var fieldNumber=0+new Number(fieldString);var controlNumber=0+new Number(controlString);var testAsNumber=!(isNaN(controlNumber)||isNaN(fieldNumber));switch(operator){case'eq':return(fieldString==controlString);break;case'neq':return(fieldString!=controlString)
break;case'gt':return(testAsNumber?(fieldNumber>controlNumber):(fieldString>controlString))
break;case'lt':return(testAsNumber?(fieldNumber<controlNumber):(fieldString<controlString))
break;case'gte':return(testAsNumber?(fieldNumber>=controlNumber):(fieldString>=controlString))
break;case'lte':return(testAsNumber?(fieldNumber<=controlNumber):(fieldString<=controlString))
break;}}
return false;},validate:function(){this.returnValue=true;this.returnMessage='';Ext.each(this.validations,this.doValidations,this);if(!this.returnValue){field.markInvalid(this.returnMessage);}
else{field.clearInvalid();}
return this.returnValue},doValidations:function(obj,idx,all){if(Ext.form.VTypes[obj.type]){if(!Ext.form.VTypes[obj.type](field.getValue(),field,obj)){this.returnValue=false;this.returnMessage+=obj.message?obj.message:'';this.returnMessage+=Ext.form.VTypes[obj.type+'Text'];}}}});}});Ext.apply(Ext.form.VTypes,{IPAddress:function(v,field){return/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);},IPAddressText:'Must be a numeric IP address',IPAddressMask:/[\d\.]/i,postcode:function(v,field){return/^([A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\[0-9][ABD-HJLNP-UW-Z]{2}|(GIR\ 0AA)|(SAN\ TA1)|(BFPO\(C\/O\)?[0-9]{1,4})|((ASCN|BBND|[BFS]IQQ|PCRN|STHL|TDCU|TKCA)\ 1ZZ))$/.test(v);},postcodeText:'Must be a valid UK postcode. Postcodes must be uppercase and contain a space to separate the two parts',url:function(v,field){return/(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i.test(v)},urlText:'Must be a valid URL'});

Ext.ns("JSORM","JSORM.ext","Ext.ux","Ext.ux.grid");JSORM.ext.DynaGrid=function(parent,config){if(typeof(parent)!=="function"){config=parent;parent=Ext.grid.GridPanel;}
var superclass=parent;config=config||{};var w=Ext.extend(parent,{getView:function(){if(!this.view){this.view=new Ext.grid.GridView(this.viewConfig);}
if(!this.view._DynaGridView){this.view=new JSORM.ext.DynaGridView(this.view);this.view.setMarginFactor(config.marginFactor);}
return this.view;}});superclass=w.superclass;return(new w(config));};Ext.ux.grid.DynaGrid=JSORM.ext.DynaGrid;JSORM.ext.DynaGridView=function(parent,config){var superclass=parent.constructor.prototype,that=parent,store;var rowHeight=-1,visibleRows=0,margin=0,marginFactor=0.5,limit=0,maxScrollTop=-1,sb=null,firstRow=-1;var minChange,oldStart=-1,oldFinish=-1,tmpStart=-1,tmpFinish=-1;var scrollHandler,calcFirstRow,calcDimensions,setPadding,reorderStore,load;calcDimensions=function(){var r1=this.getRow(0);if(r1&&r1.offsetHeight>0){sb=this.scroller.dom;store=this.grid.getStore();rowHeight=r1.offsetHeight;this.mainBody.setHeight(rowHeight*store.getTotalCount());maxScrollTop=sb.scrollHeight-sb.offsetHeight;visibleRows=Math.ceil(sb.offsetHeight/rowHeight);margin=Math.floor(visibleRows*marginFactor);minChange=0.5*margin;limit=visibleRows+2*margin;}};setPadding=function(force){var r=this.getRow(0),pad;if(rowHeight<=0||force){calcDimensions.call(this);}
if(rowHeight>0&&firstRow>=0&&r){Ext.get(r).setStyle("padding-top",firstRow*rowHeight);}};calcFirstRow=function(){var top,pct,totalCount,middleRow;if(rowHeight<=0){calcDimensions.call(this);}
totalCount=store.getTotalCount();top=sb.scrollTop;pct=top/maxScrollTop;middleRow=Math.floor(pct*(totalCount-visibleRows)+0.5*visibleRows);firstRow=Math.max(Math.floor(middleRow-limit/2),0);firstRow=Math.min(totalCount-limit,firstRow);};load=function(){var newStart,newLimit,i,len,optadd=true,start=firstRow,finish=start+limit,optadd=true,options={},rec;if(oldStart===-1){oldStart=start!==null&&start>-1?start:0;optadd=false;}else if(oldFinish===-1){oldFinish=store.getCount();}
if(start<oldStart||start>=oldFinish){newStart=start;}else{newStart=oldFinish;}
if(finish>oldFinish||finish<=oldStart){newLimit=finish-newStart;}else{newLimit=oldStart-start;}
if((newLimit<minChange&&newStart+newLimit<store.getTotalCount()&&newStart!==0)||newLimit<1){return(true);}else{if(oldStart>-1){for(i=oldStart;i<start;i++){rec=store.getAt(0);store.remove(rec);}}
for(i=finish;i<oldFinish;i++){rec=store.getAt(store.getCount()-1);store.remove(rec);}
tmpStart=start;tmpFinish=start+limit;options[store.paramNames.start]=newStart;options[store.paramNames.limit]=newLimit;options.add=optadd;store.load(options);}};scrollHandler=function(){calcFirstRow.call(this);load.call(this);};reorderStore=function(store,records,options){var i,len,rec,incr;if(tmpStart<oldStart){incr=store.getCount()-records.length;for(i=0,len=records.length;i<len;i++){rec=store.data.removeAt(i+incr);store.data.insert(i,rec);}}else{}
oldStart=tmpStart;oldFinish=tmpFinish;store.fireEvent('datachanged',store);return(true);};Ext.apply(this,{_DynaGridView:true,init:function(grid){superclass.init.call(this,grid);this.grid.on('bodyscroll',scrollHandler,this);this.grid.on('afterlayout',setPadding.createDelegate(this,[true]));this.grid.on('resize',setPadding.createDelegate(this,[true]));this.grid.on('bodyresize',setPadding.createDelegate(this,[true]));},onLoad:function(store,records,options){reorderStore(store,records,options);setPadding.call(this);},afterRender:function(){var ret=parent.constructor.prototype.afterRender.apply(parent,arguments);setPadding.call(this);return(ret);},setMarginFactor:function(factor){if(typeof(factor)==="number"&&factor>-1){marginFactor=factor;}}});Ext.apply(parent,this);return(parent);};JSORM.ext.PagingMemoryProxy=Ext.extend(Ext.data.MemoryProxy,{constructor:function(config){var data=config;if(typeof(config)==="object"&&config.url){this.url=config.url;}
JSORM.ext.PagingMemoryProxy.superclass.constructor.call(this,config);},load:function(params,reader,callback,scope,arg){params=params||{};arg=arg||{};var result,start=arg.start,end,url=this.url;try{if(url&&!this.urlLoaded){this.urlLoaded=true;Ext.Ajax.request({url:url,scope:this,callback:function(options,success,response){if(success){this.urlLoaded=true;this.data=Ext.decode(response.responseText);this.load(params,reader,callback,scope,arg);}else{callback.call(scope,null,arg,false);}}});}
result=reader.readRecords(this.data);if(arg.hasOwnProperty("start")){result.records=result.records.slice(arg.start,arg.hasOwnProperty("limit")?arg.start+arg.limit:null);}}catch(e){this.fireEvent("loadexception",this,arg,null,e);callback.call(scope,null,arg,false);return;}
callback.call(scope,result,arg,true);}});Ext.reg('autopaginggrid',Ext.ux.grid.DynaGrid);

Ext.ns('Ext.ux.grid');Ext.ux.grid.RowEditor=Ext.extend(Ext.Panel,{floating:true,shadow:false,layout:'hbox',cls:'x-small-editor',buttonAlign:'center',baseCls:'x-row-editor',elements:'header,footer,body',frameWidth:5,buttonPad:3,clicksToEdit:'auto',monitorValid:true,focusDelay:250,errorSummary:true,defaults:{normalWidth:true},initComponent:function(){Ext.ux.grid.RowEditor.superclass.initComponent.call(this);this.addEvents('beforeedit','validateedit','afteredit');},init:function(grid){this.grid=grid;this.ownerCt=grid;if(this.clicksToEdit===2){grid.on('rowdblclick',this.onRowDblClick,this);}else{grid.on('rowclick',this.onRowClick,this);if(Ext.isIE){grid.on('rowdblclick',this.onRowDblClick,this);}}
grid.getStore().on('remove',function(){this.stopEditing(false);},this);grid.on({scope:this,keydown:this.onGridKey,columnresize:this.verifyLayout,columnmove:this.refreshFields,reconfigure:this.refreshFields,destroy:this.destroy,bodyscroll:{buffer:250,fn:this.positionButtons}});grid.getColumnModel().on('hiddenchange',this.verifyLayout,this,{delay:1});grid.getView().on('refresh',this.stopEditing.createDelegate(this,[]));},refreshFields:function(){this.initFields();this.verifyLayout();},isDirty:function(){var dirty;this.items.each(function(f){if(String(this.values[f.id])!==String(f.getValue())){dirty=true;return false;}},this);return dirty;},startEditing:function(rowIndex,doFocus){if(this.editing&&this.isDirty()){this.showTooltip('You need to commit or cancel your changes');return;}
this.editing=true;if(typeof rowIndex=='object'){rowIndex=this.grid.getStore().indexOf(rowIndex);}
if(this.fireEvent('beforeedit',this,rowIndex)!==false){var g=this.grid,view=g.getView();var row=view.getRow(rowIndex);var record=g.store.getAt(rowIndex);this.record=record;this.rowIndex=rowIndex;this.values={};if(!this.rendered){this.render(view.getEditorParent());}
var w=Ext.fly(row).getWidth();this.setSize(w);if(!this.initialized){this.initFields();}
var cm=g.getColumnModel(),fields=this.items.items,f,val;for(var i=0,len=cm.getColumnCount();i<len;i++){val=this.preEditValue(record,cm.getDataIndex(i));f=fields[i];f.setValue(val);this.values[f.id]=val||'';}
this.verifyLayout(true);if(!this.isVisible()){this.setPagePosition(Ext.fly(row).getXY());}else{this.el.setXY(Ext.fly(row).getXY(),{duration:0.15});}
if(!this.isVisible()){this.show().doLayout();}
if(doFocus!==false){this.doFocus.defer(this.focusDelay,this);}}},stopEditing:function(saveChanges){this.editing=false;if(!this.isVisible()){return;}
if(saveChanges===false||!this.isValid()){this.hide();return;}
var changes={},r=this.record,hasChange=false;var cm=this.grid.colModel,fields=this.items.items;for(var i=0,len=cm.getColumnCount();i<len;i++){if(!cm.isHidden(i)){var dindex=cm.getDataIndex(i);if(!Ext.isEmpty(dindex)){var oldValue=r.data[dindex];var value=this.postEditValue(fields[i].getValue(),oldValue,r,dindex);if(String(oldValue)!==String(value)){changes[dindex]=value;hasChange=true;}}}}
if(hasChange&&this.fireEvent('validateedit',this,changes,r,this.rowIndex)!==false){r.beginEdit();for(var k in changes){if(changes.hasOwnProperty(k)){r.set(k,changes[k]);}}
r.endEdit();this.fireEvent('afteredit',this,changes,r,this.rowIndex);}
this.hide();},verifyLayout:function(force){if(this.el&&(this.isVisible()||force===true)){var row=this.grid.getView().getRow(this.rowIndex);this.setSize(Ext.fly(row).getWidth(),Ext.isIE?Ext.fly(row).getHeight()+(Ext.isBorderBox?9:0):undefined);var cm=this.grid.colModel,fields=this.items.items;for(var i=0,len=cm.getColumnCount();i<len;i++){if(!cm.isHidden(i)){var adjust=0;if(i===0){adjust+=0;}
if(i===(len-1)){adjust+=3;}else{adjust+=1;}
fields[i].show();fields[i].setWidth(cm.getColumnWidth(i)-adjust);}else{fields[i].hide();}}
this.doLayout();this.positionButtons();}},slideHide:function(){this.hide();},initFields:function(){var cm=this.grid.getColumnModel(),pm=Ext.layout.ContainerLayout.prototype.parseMargins;this.removeAll(false);for(var i=0,len=cm.getColumnCount();i<len;i++){var c=cm.getColumnAt(i);var ed=c.getEditor();if(!ed){ed=c.displayEditor||new Ext.form.DisplayField();}
if(i==0){ed.margins=pm('0 1 2 1');}else if(i==len-1){ed.margins=pm('0 0 2 1');}else{ed.margins=pm('0 1 2');}
ed.setWidth(cm.getColumnWidth(i));ed.column=c;if(ed.ownerCt!==this){ed.on('focus',this.ensureVisible,this);ed.on('specialkey',this.onKey,this);}
this.insert(i,ed);}
this.initialized=true;},onKey:function(f,e){if(e.getKey()===e.ENTER){this.stopEditing(true);e.stopPropagation();}},onGridKey:function(e){if(e.getKey()===e.ENTER&&!this.isVisible()){var r=this.grid.getSelectionModel().getSelected();if(r){var index=this.grid.store.indexOf(r);this.startEditing(index);e.stopPropagation();}}},ensureVisible:function(editor){if(this.isVisible()){this.grid.getView().ensureVisible(this.rowIndex,this.grid.colModel.getIndexById(editor.column.id),true);}},onRowClick:function(g,rowIndex,e){if(this.clicksToEdit=='auto'){var li=this.lastClickIndex;this.lastClickIndex=rowIndex;if(li!=rowIndex&&!this.isVisible()){return;}}
this.startEditing(rowIndex,false);this.doFocus.defer(this.focusDelay,this,[e.getPoint()]);},onRowDblClick:function(g,rowIndex,e){this.startEditing(rowIndex,false);this.doFocus.defer(this.focusDelay,this,[e.getPoint()]);},onRender:function(){Ext.ux.grid.RowEditor.superclass.onRender.apply(this,arguments);this.el.swallowEvent(['keydown','keyup','keypress']);this.btns=new Ext.Panel({baseCls:'x-plain',cls:'x-btns',elements:'body',layout:'table',width:(this.minButtonWidth*2)+(this.frameWidth*2)+(this.buttonPad*4),items:[{ref:'saveBtn',itemId:'saveBtn',xtype:'button',text:this.saveText||'Save',width:this.minButtonWidth,handler:this.stopEditing.createDelegate(this,[true])},{xtype:'button',text:this.cancelText||'Cancel',width:this.minButtonWidth,handler:this.stopEditing.createDelegate(this,[false])}]});this.btns.render(this.bwrap);},afterRender:function(){Ext.ux.grid.RowEditor.superclass.afterRender.apply(this,arguments);this.positionButtons();if(this.monitorValid){this.startMonitoring();}},onShow:function(){if(this.monitorValid){this.startMonitoring();}
Ext.ux.grid.RowEditor.superclass.onShow.apply(this,arguments);},onHide:function(){Ext.ux.grid.RowEditor.superclass.onHide.apply(this,arguments);this.stopMonitoring();this.grid.getView().focusRow(this.rowIndex);},positionButtons:function(){if(this.btns){var h=this.el.dom.clientHeight;var view=this.grid.getView();var scroll=view.scroller.dom.scrollLeft;var width=view.mainBody.getWidth();var bw=this.btns.getWidth();this.btns.el.shift({left:(width/2)-(bw/2)+scroll,top:h-2,stopFx:true,duration:0.2});}},preEditValue:function(r,field){var value=r.data[field];return this.autoEncode&&typeof value==='string'?Ext.util.Format.htmlDecode(value):value;},postEditValue:function(value,originalValue,r,field){return this.autoEncode&&typeof value=='string'?Ext.util.Format.htmlEncode(value):value;},doFocus:function(pt){if(this.isVisible()){var index=0;if(pt){index=this.getTargetColumnIndex(pt);}
var cm=this.grid.getColumnModel();for(var i=index||0,len=cm.getColumnCount();i<len;i++){var c=cm.getColumnAt(i);if(!c.hidden&&c.getEditor()){c.getEditor().focus();break;}}}},getTargetColumnIndex:function(pt){var grid=this.grid,v=grid.view;var x=pt.left;var cms=grid.colModel.config;var i=0,match=false;for(var len=cms.length,c;c=cms[i];i++){if(!c.hidden){if(Ext.fly(v.getHeaderCell(i)).getRegion().right>=x){match=i;break;}}}
return match;},startMonitoring:function(){if(!this.bound&&this.monitorValid){this.bound=true;Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this});}},stopMonitoring:function(){this.bound=false;if(this.tooltip){this.tooltip.hide();}},isValid:function(){var valid=true;this.items.each(function(f){if(!f.isValid(true)){valid=false;return false;}});return valid;},bindHandler:function(){if(!this.bound){return false;}
var valid=this.isValid();if(!valid&&this.errorSummary){this.showTooltip(this.getErrorText().join(''));}
this.btns.saveBtn.setDisabled(!valid);this.fireEvent('validation',this,valid);},showTooltip:function(msg){var t=this.tooltip;if(!t){t=this.tooltip=new Ext.ToolTip({maxWidth:600,cls:'errorTip',width:300,title:'Errors',autoHide:false,anchor:'left',anchorToTarget:true,mouseOffset:[40,0]});}
t.initTarget(this.items.last().getEl());if(!t.rendered){t.show();t.hide();}
t.body.update(msg);t.doAutoWidth();t.show();},getErrorText:function(){var data=['<ul>'];this.items.each(function(f){if(!f.isValid(true)){data.push('<li>',f.activeError,'</li>');}});data.push('</ul>');return data;}});Ext.preg('roweditor',Ext.ux.grid.RowEditor);Ext.override(Ext.form.Field,{markInvalid:function(msg){if(!this.rendered||this.preventMark){return;}
msg=msg||this.invalidText;var mt=this.getMessageHandler();if(mt){mt.mark(this,msg);}else if(this.msgTarget){this.el.addClass(this.invalidClass);var t=Ext.getDom(this.msgTarget);if(t){t.innerHTML=msg;t.style.display=this.msgDisplay;}}
this.activeError=msg;this.fireEvent('invalid',this,msg);}});Ext.override(Ext.ToolTip,{doAutoWidth:function(){var bw=this.body.getTextWidth();if(this.title){bw=Math.max(bw,this.header.child('span').getTextWidth(this.title));}
bw+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr")+20;this.setWidth(bw.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true;}}});

Ext.ux.ImageSelect=Ext.extend(Ext.form.TriggerField,{url:'',folderid:'',triggerClass:'x-form-image-trigger',win:null,onTriggerClick:function(){if(!this.win){this.win=new Ext.Window({autoLoad:{disableCaching:true,scripts:true,url:this.url+'imageselect.fxsys?folderid='+this.folderid+'&id='+this.id+'&clientType=ext'},layout:'absolute',modal:true,width:500,height:300,closeAction:'hide',plain:false,animate:true,animateTarget:this.id,constrain:true,autoScroll:true,title:'Select an image',iconCls:'iconImages',buttons:[{text:'Upload Image',iconCls:'btnInsert',handler:function(){OpenUploader();},scope:this},{text:'Close  ',iconCls:'iconCancel',handler:function(){this.win.hide();},scope:this}]});}
this.win.show();},changeValue:function(image,folder){this.setValue(image);this.win.hide();}});Ext.reg('imageselect',Ext.ux.ImageSelect);function SelectImage(obj){x=Ext.getCmp(obj.id);x.setValue(obj.source);}

Ext.namespace('Ext.ux.form');Ext.ux.form.LoginDialog=function(config){Ext.apply(this,config);this.addEvents({'show':true,'cancel':true,'success':true,'failure':true,'submit':true});Ext.ux.form.LoginDialog.superclass.constructor.call(this,config);this._headPanel=new Ext.Panel({baseCls:'x-plain',html:this.message,cls:'ux-auth-header',region:'north',height:60});this._usernameId=Ext.id();this._passwordId=Ext.id();this._loginButtonId=Ext.id();this._cancelButtonId=Ext.id();this._rememberMeId=Ext.id();this._formPanel=new Ext.form.FormPanel({region:'center',border:false,bodyStyle:"padding: 10px;",waitMsgTarget:true,labelWidth:75,defaults:{width:300},items:[{xtype:'textfield',id:this._usernameId,name:this.usernameField,fieldLabel:this.usernameLabel,vtype:this.usernameVtype,validateOnBlur:false,allowBlank:false},{xtype:'textfield',inputType:'password',id:this._passwordId,name:this.passwordField,fieldLabel:this.passwordLabel,vtype:this.passwordVtype,validateOnBlur:false,allowBlank:false,enableKeyEvents:true,listeners:{render:function(){this.capsWarningTooltip=new Ext.ToolTip({target:this.id,anchor:'top',width:305,html:'<div class="ux-auth-warning">Caps Lock is On</div><br />'+'<div>Having Caps Lock on may cause you to enter your password incorrectly.</div><br />'+'<div>You should press Caps Lock to turn it off before entering your password.</div>'});this.capsWarningTooltip.disable();this.capsWarningTooltip.on('enable',function(){this.disable();});},keypress:function(field,e){var charCode=e.getCharCode();if((e.shiftKey&&charCode>=97&&charCode<=122)||(!e.shiftKey&&charCode>=65&&charCode<=90)){this.capsWarningTooltip.show();}
else{if(this.capsWarningTooltip.hidden==false){this.capsWarningTooltip.hide();}}},blur:function(field){if(this.capsWarningTooltip.hidden==false){this.capsWarningTooltip.hide();}}}}]});var buttons=[{id:this._loginButtonId,text:this.loginButton,iconCls:'ux-auth-login',width:90,handler:this.submit,scale:'medium',scope:this}];var keys=[{key:[10,13],handler:this.submit,scope:this}];this._window=new Ext.Window({width:420,height:230,closable:false,resizable:false,draggable:true,modal:this.modal,iconCls:'ux-auth-header-icon',title:this.title,layout:'border',bodyStyle:'padding:5px;',buttons:buttons,keys:keys,items:[this._headPanel,this._formPanel]});this._window.on('show',function(){Ext.getCmp(this._usernameId).focus(true,500);Ext.getCmp(this._passwordId).setRawValue('');this.fireEvent('show',this);},this);};Ext.extend(Ext.ux.form.LoginDialog,Ext.util.Observable,{title:'Login',message:'Access to this location is restricted to authorized users only.'+'<br />Please type your username and password.',failMessage:'Unable to log in',waitMessage:'Please wait...',loginButton:'Login',cancelButton:null,usernameLabel:'Username',usernameField:'username',usernameVtype:'alphanum',passwordLabel:'Password',passwordField:'userpass',passwordVtype:'alphanum',languageLabel:'Language',languageField:'lang',rememberMeLabel:'Remember me',rememberMeField:'rememberme',forgotPasswordLabel:'Forgot Password?',forgotPasswordLink:'about:blank',url:'',method:'post',modal:false,_cssId:'ux-LoginDialog-css',_headPanel:null,_formPanel:null,_window:null,setMessage:function(msg){this._headPanel.body.update(msg);},show:function(el){this._window.show(el);},hide:function(){this._window.hide()},destroy:function(){this._window.hide();this.purgeListeners();Ext.util.CSS.removeStyleSheet(this._cssId);var self=this;delete self;},cancel:function(){if(this.fireEvent('cancel',this))
{this.hide();}},submit:function(){var form=this._formPanel.getForm();if(form.isValid())
{Ext.getCmp(this._loginButtonId).disable();if(Ext.getCmp(this._cancelButtonId)){Ext.getCmp(this._cancelButtonId).disable();}
if(this.fireEvent('submit',this,form.getValues()))
{this.setMessage(this.message);form.submit({url:this.url,method:this.method,waitMsg:this.waitMessage,success:this.onSuccess,failure:this.onFailure,scope:this});}}},onSuccess:function(form,action){if(this.fireEvent('success',this,action)){Ext.getCmp(this._loginButtonId).enable();if(Ext.getCmp(this._cancelButtonId)){Ext.getCmp(this._cancelButtonId).enable();}
this.destroy();window.location=window.location;}},onFailure:function(form,action){Ext.getCmp(this._loginButtonId).enable();if(Ext.getCmp(this._cancelButtonId)){Ext.getCmp(this._cancelButtonId).enable();}
var msg='';if(action.result&&action.result.message)msg=action.result.message||this.failMessage;else msg=this.failMessage;this.setMessage(this.message+'<br /><span class="error">'+msg+'</span>');this.fireEvent('failure',this,action,msg);}});

var zzz=null;Ext.ux.PasswordField=function(config){if(!config)config={};Ext.ux.PasswordField.superclass.constructor.call(this,config);this.showCapsWarning=config.showCapsWarning||true;this.showStrengthMeter=config.showStrengthMeter||false;this.pwStrengthTest=config.pwStrengthTest||this.calcStrength;this.pwStrengthMeterCls=config.pwStrengthMeterCls||'x-form-password-strengthMeter';this.pwStrengthMeterFocusCls=config.pwStrengthMeterFocusCls||'x-form-password-strengthMeter-focus';this.pwStrengthScoreBarCls=config.pwStrengthScoreBarCls||'x-form-password-scoreBar';};Ext.extend(Ext.ux.PasswordField,Ext.form.TextField,{inputType:'password',onRender:function(ct,position){Ext.ux.PasswordField.superclass.onRender.call(this,ct,position);if(this.showCapsWarning){var id=Ext.id();this.alertBox=Ext.DomHelper.append(document.body,{tag:'div',style:'width: 10em',children:[{tag:'div',style:'text-align: center; color: red;',html:'Caps Lock is on.',id:id}]},true);Ext.fly(id).boxWrap();this.alertBox.hide();}
if(this.showStrengthMeter){this.objMeter=ct.createChild({tag:"div",'class':this.pwStrengthMeterCls});this.objMeter.setWidth(ct.first('INPUT').getWidth());this.scoreBar=this.objMeter.createChild({tag:"div",'class':this.pwStrengthScoreBarCls});if(Ext.isIE&&!Ext.isIE7){this.objMeter.setStyle('margin-left','3px');}}},afterRender:function(){Ext.ux.PasswordField.superclass.afterRender.call(this);this.objMeter.setWidth(this.el.getWidth(false));},initEvents:function(){Ext.ux.PasswordField.superclass.initEvents.call(this);this.el.on('keypress',this.handleKeypress,this);this.el.on('blur',this.handleBlur,this);this.el.on('focus',this.handleFocus,this);this.el.on('keyup',this.handleKeyUp,this);},handleFocus:function(e){if(!Ext.isOpera){this.objMeter.addClass(this.pwStrengthMeterFocusCls);}},handleBlur:function(e){if(!Ext.isOpera){this.objMeter.removeClass(this.pwStrengthMeterFocusCls);}
if(this.showCapsWarning){this.hideCapsMessage();}},handleKeypress:function(e){var charCode=e.getCharCode();if(charCode==e.ESC){this.setRawValue('');}
if(this.showCapsWarning){if((e.shiftKey&&charCode>=97&&charCode<=122)||(!e.shiftKey&&charCode>=65&&charCode<=90)){this.showCapsMessage(e.target);}else{this.hideCapsMessage();}}},handleKeyUp:function(e){if(this.showStrengthMeter){this.updateMeter(e);}},showCapsMessage:function(el){var position=this.showStrengthMeter?'tl-tr':'l-r';this.alertBox.alignTo(el,position,[5,0]);this.alertBox.show();},hideCapsMessage:function(){this.alertBox.hide();},updateMeter:function(e){var score=0
var p=e.target.value;var maxWidth=this.objMeter.getWidth()-2;var nScore=this.pwStrengthTest(p);if(nScore>100){nScore=100;}
var scoreWidth=(maxWidth/100)*nScore;this.scoreBar.setWidth(scoreWidth,true);},calcStrength:function(p){var intScore=0;if(p.length==0)return(intScore);intScore+=p.length;if(p.length>0&&p.length<=4){intScore+=p.length;}
else if(p.length>=5&&p.length<=7){intScore+=6;}
else if(p.length>=8&&p.length<=15){intScore+=12;}
else if(p.length>=16){intScore+=18;}
if(p.match(/[a-z]/)){intScore+=1;}
if(p.match(/[A-Z]/)){intScore+=5;}
if(p.match(/\d/)){intScore+=5;}
if(p.match(/.*\d.*\d.*\d/)){intScore+=5;}
if(p.match(/[!,@,#,$,%,^,&,*,?,_,~]/)){intScore+=5;}
if(p.match(/.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~]/)){intScore+=5;}
if(p.match(/(?=.*[a-z])(?=.*[A-Z])/)){intScore+=2;}
if(p.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/)){intScore+=2;}
if(p.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!,@,#,$,%,^,&,*,?,_,~])/)){intScore+=2;}
return Math.round(intScore*2);}});Ext.reg("uxpasswordfield",Ext.ux.PasswordField);

Ext.ux.PropertyGridField=Ext.extend(Ext.form.Field,{views:[],width:200,height:200,validationEvent:false,deferHeight:true,initialized:false,activated:false,onFocus:Ext.emptyFn,onClick:Ext.emptyFn,iframePad:3,hideMode:'offsets',defaultAutoCreate:{tag:"textarea",style:"width:300px;height:600px;",autocomplete:"off"},onBlur:function(){alert('blur');},initComponent:function(){this.addEvents('activate','beforesync','beforepush','sync','push','editmodechange')},getEditorBody:function(){return this.doc.body||this.doc.documentElement;},onRender:function(ct,position){Ext.ux.PropertyGridField.superclass.onRender.call(this,ct,position);this.el.dom.style.border='0 none';this.el.dom.setAttribute('tabIndex',-1);this.el.addClass('x-hidden');if(Ext.isIE){this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')}
this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});var x=new Ext.grid.PropertyGrid({title:this.fieldLabel,collapsible:true,autoHeight:true,tbar:[{text:'Add',tooltip:'Remove the selected rows',iconCls:'btnInsert'},'-',{text:'Delete',tooltip:'Delete the selected row(s)',iconCls:'btnDelete'},'-',new Ext.Toolbar.Fill(),'Search: ',new Ext.app.SearchField({width:220})],width:400,source:this.source});x.render(this.wrap.dom);},onResize:function(w,h){Ext.ux.XopusEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(typeof w=='number'){var aw=w-this.wrap.getFrameWidth('lr');this.el.setWidth(this.adjustWidth('textarea',aw));this.iframe.style.width=aw+'px';}
if(typeof h=='number'){var ah=h-this.wrap.getFrameWidth('tb');this.el.setHeight(this.adjustWidth('textarea',ah));this.iframe.style.height=ah+'px';}}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},initEvents:function(){},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(v){this.xml=v;this.pushValue();},getValue:function(){return this.xml;},syncValue:Ext.emptyFn,pushValue:function(){if(this.initialized){var v=this.el.dom.value;if(!this.activated&&v.length<1){v='&nbsp;';}
if(this.fireEvent('beforepush',this,v)!==false){this.getEditorBody().innerHTML=v;this.fireEvent('push',this,v);}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){alert('focus');if(this.win&&!this.sourceEditMode){this.win.focus();}else{this.el.focus();}},initEditor:Ext.emptyFn,onDestroy:function(){if(this.rendered){this.tb.items.each(function(item){if(item.menu){item.menu.removeAll();if(item.menu.el){item.menu.el.destroy();}}
item.destroy();});this.wrap.dom.innerHTML='';this.wrap.remove();}},onFirstFocus:function(){this.activated=true;this.tb.items.each(function(item){item.enable();});if(Ext.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);r.selectNodeContents(this.getEditorBody());r.collapse(true);this.deferFocus();}
try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}
this.fireEvent('activate',this);},onEditorEvent:Ext.emptyFn,relayBtnCmd:function(btn){this.relayCmd(btn.itemId);},relayCmd:function(cmd,value){this.win.focus();this.execCmd(cmd,value);this.updateToolbar();this.deferFocus();},execCmd:function(cmd,value){this.doc.execCommand(cmd,false,value===undefined?null:value);this.syncValue();},getToolbar:function(){return this.tb;}});Ext.reg('propertygridfield',Ext.ux.PropertyGridField);

Ext.ux.ResourceSelect=Ext.extend(Ext.form.TriggerField,{url:'',folderid:'',triggerClass:'x-form-resource-trigger',onTriggerClick:function(){window.open(this.url+'resourceselect.fxsys?folderid='+this.folderid+'&id='+this.id,'asd','');}});Ext.reg('resourceselect',Ext.ux.ResourceSelect);function SelectResource(obj){x=Ext.getCmp(obj.id);x.setValue(obj.target);}

Ext.namespace('Ext.ux');Ext.ux.TreeSelector=Ext.extend(Ext.form.Field,{msWidth:250,msHeight:300,ctxMenu:null,hideNavIcons:false,imagePath:"",iconUp:"up2.gif",iconDown:"down2.gif",iconLeft:"left2.gif",iconRight:"right2.gif",iconTop:"top2.gif",iconBottom:"bottom2.gif",drawUpIcon:true,drawDownIcon:true,drawLeftIcon:true,drawRightIcon:true,drawTopIcon:true,drawBotIcon:true,fromStore:null,toStore:null,fromData:null,toData:null,displayField:0,valueField:1,iconField:0,switchToFrom:false,allowDup:false,focusClass:undefined,delimiter:',',readOnly:false,toLegend:null,fromLegend:null,toSortField:null,fromSortField:null,toSortDir:'ASC',fromSortDir:'ASC',toTBar:null,fromTBar:null,bodyStyle:null,border:false,ddGroup:null,defaultAutoCreate:{tag:"div"},fxcallbackid:null,dbadminid:null,controlid:null,url:null,id:null,initComponent:function(){Ext.ux.TreeSelector.superclass.initComponent.call(this);this.addEvents({'rowdblclick':true,'change':true});},getValue:function(valueField){},setValue:function(values){frm=this.el.up('form');},onRender:function(ct,position){Ext.ux.TreeSelector.superclass.onRender.call(this,ct,position);this.fromTree=new Ext.tree.TreePanel({id:this.id+'_t1',rootVisible:true,border:false,singleExpand:true,animate:true,autoScroll:true,height:290,enableDD:true,ddGroup:this.ddGroup,containerScroll:true,dropConfig:{appendOnly:true},loader:new Ext.tree.TreeLoader({dataUrl:this.url,baseParams:{fxcallbackid:this.fxcallbackid,dbadminid:this.dbadminid,item:this.controlid,control:'source',mode:'treeselect',fxrenderpath:'//fx:dataset/child::node()',fxrender:'array',level:'root'}}),root:new Ext.tree.AsyncTreeNode({text:'Components',height:270,expanded:false,draggable:false,id:'source',level:'root'}),recordFromNode:function(n){var DropRecordDef=Ext.data.Record.create([{name:'id'},{name:'text'},{name:'icon'}]);var DropRecord=new DropRecordDef({id:n.attributes.key,text:n.attributes.text,icon:n.attributes.iconCls});return DropRecord;}});this.fromTree.on("beforeload",function(node){if(node){this.baseParams.level=node.attributes.level;this.baseParams.key=node.attributes.key;}},this.fromTree.getLoader());new Ext.tree.TreeSorter(this.fromTree,{folderSort:true});this.fromMultiselect=new Ext.ux.MultiSelectField({legend:this.fromLegend,delimiter:this.delimiter,allowDup:this.allowDup,copy:this.allowDup,allowTrash:this.allowDup,dragGroup:this.ddGroup,dropGroup:this.ddGroup,width:this.msWidth,height:this.msHeight,dataFields:this.dataFields,data:this.fromData,displayField:this.displayField,valueField:this.valueField,iconField:this.iconField,store:this.fromStore,isFormField:false,tbar:this.fromTBar,appendOnly:true,sortField:this.fromSortField,sortDir:this.fromSortDir});this.fromMultiselect.on('dblclick',this.onRowDblClick,this);if(!this.toStore){this.toStore=new Ext.data.SimpleStore({fields:this.dataFields,data:this.toData});}
this.toStore.on('add',this.valueChanged,this);this.toStore.on('remove',this.valueChanged,this);this.toStore.on('datachanged',this.valueChanged,this);this.toMultiselect=new Ext.ux.MultiSelectField({legend:'Selected',delimiter:this.delimiter,allowDup:this.allowDup,dragGroup:this.ddGroup,dropGroup:this.ddGroup,width:this.msWidth,height:this.msHeight,displayField:this.displayField,valueField:this.valueField,iconField:this.iconField,store:this.toStore,isFormField:false,tbar:this.toTBar,sortField:this.toSortField,sortDir:this.toSortDir});this.toMultiselect.on('dblclick',this.onRowDblClick,this);var container=new Ext.Panel({layout:'column',border:false,items:[{xtype:'fieldset',title:'Available',width:this.msWidth,autoHeight:true,items:this.fromTree},{width:10,border:false},{xtype:'panel',border:false,width:27,height:175,bodyStyle:'padding-top:10px',items:[{xtype:'panel',border:true,baseCls:'x-toolbar',items:[{xtype:'button',iconCls:'iconSelectToTop',tooltip:'Move to top',handler:this.toTop.createDelegate(this)},{xtype:'button',iconCls:'iconSelectUp',tooltip:'Move up',handler:this.up.createDelegate(this)},{xtype:'button',iconCls:'iconDelete',tooltip:'Remove from list',handler:this.deleteTo.createDelegate(this)},{xtype:'button',iconCls:'iconSelectDown',tooltip:'Move down',handler:this.down.createDelegate(this)},{xtype:'button',iconCls:'iconSelectToBottom',tooltip:'Move to bottom',handler:this.toBottom.createDelegate(this)},{xtype:'button',iconCls:'iconHelp',tooltip:'Help',handler:function(){Ext.Msg.show({title:'Tree Selector Help',msg:'<p>Items may be dragged from the tree on the left of this control into the selections on the right.</p><p>Items in the selected list may be re-ordered either by dragging or by use of the buttons above.</p><p>Items may be rmoved from the list by using the delete button above or by right-clicking the item and selecting the remove option.</p>',buttons:Ext.Msg.OK,animEl:this,icon:Ext.MessageBox.INFO});}}]}]},{width:10,border:false},this.toMultiselect]});var icons=new Ext.Panel({header:false});container.add(icons);container.render(this.el);icons.hide();this.fromTree.expandPath('/source');var el=icons.getEl();this.removeIcon=el.createChild({tag:'div',cls:'btnDelete',style:{cursor:'pointer',margin:'2px',width:16,height:16}});el.createChild({tag:'br'});this.removeIcon.on('click',this.deleteTo,this);this.hiddenName=this.name;var hiddenTag={tag:"input",type:"hidden",value:"",name:this.name};this.hiddenField=this.el.createChild(hiddenTag);this.valueChanged(this.toStore);},initValue:Ext.emptyFn,toTop:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){selectionsArray.sort();for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
selectionsArray=[];for(var i=records.length-1;i>-1;i--){record=records[i];this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.insert(0,record);selectionsArray.push(((records.length-1)-i));}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(selectionsArray);},toBottom:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){selectionsArray.sort();for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
selectionsArray=[];for(var i=0;i<records.length;i++){record=records[i];this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.add(record);selectionsArray.push((this.toMultiselect.view.store.getCount())-(records.length-i));}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(selectionsArray);},up:function(){var record=null;var selectionsArray=this.toMultiselect.view.getSelectedIndexes();selectionsArray.sort();var newSelectionsArray=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);if((selectionsArray[i]-1)>=0){this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.insert(selectionsArray[i]-1,record);newSelectionsArray.push(selectionsArray[i]-1);}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(newSelectionsArray);}},down:function(){var record=null;var selectionsArray=this.toMultiselect.view.getSelectedIndexes();selectionsArray.sort();selectionsArray.reverse();var newSelectionsArray=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);if((selectionsArray[i]+1)<this.toMultiselect.view.store.getCount()){this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.insert(selectionsArray[i]+1,record);newSelectionsArray.push(selectionsArray[i]+1);}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(newSelectionsArray);}},fromTo:function(){var selectionsArray=this.fromMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.fromMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
if(!this.allowDup)selectionsArray=[];for(var i=0;i<records.length;i++){record=records[i];if(this.allowDup){var x=new Ext.data.Record();record.id=x.id;delete x;this.toMultiselect.view.store.add(record);}else{this.fromMultiselect.view.store.remove(record);this.toMultiselect.view.store.add(record);selectionsArray.push((this.toMultiselect.view.store.getCount()-1));}}}
this.toMultiselect.view.refresh();this.fromMultiselect.view.refresh();if(this.toSortField)this.toMultiselect.store.sort(this.toSortField,this.toSortDir);if(this.allowDup)this.fromMultiselect.view.select(selectionsArray);else this.toMultiselect.view.select(selectionsArray);},toFrom:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
selectionsArray=[];for(var i=0;i<records.length;i++){record=records[i];this.toMultiselect.view.store.remove(record);if(!this.allowDup){this.fromMultiselect.view.store.add(record);selectionsArray.push((this.fromMultiselect.view.store.getCount()-1));}}}
this.fromMultiselect.view.refresh();this.toMultiselect.view.refresh();if(this.fromSortField)this.fromMultiselect.store.sort(this.fromSortField,this.fromSortDir);this.fromMultiselect.view.select(selectionsArray);},deleteTo:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
for(var i=0;i<records.length;i++){record=records[i];this.toMultiselect.view.store.remove(record);}}
this.toMultiselect.view.refresh();},valueChanged:function(store){var record=null;var values=[];for(var i=0;i<store.getCount();i++){record=store.getAt(i);values.push(record.get(this.valueField));}
this.hiddenField.dom.value=values.join(this.delimiter);this.fireEvent('change',this,this.getValue(),this.hiddenField.dom.value);},getValue:function(){return this.hiddenField.dom.value;},onRowDblClick:function(vw,index,node,e){return this.fireEvent('rowdblclick',vw,index,node,e);},reset:function(){if(this.toMultiselect){range=this.toMultiselect.store.getRange();this.toMultiselect.store.removeAll();if(!this.allowDup&&this.fromMultiselect&&this.fromMultiselect.store){this.fromMultiselect.store.add(range);this.fromMultiselect.store.sort(this.displayField,'ASC');}
this.valueChanged(this.toMultiselect.store);}}});Ext.reg("treeselector",Ext.ux.TreeSelector);

Ext.namespace('Ext.fx');xopusResourceLoader={instances:[],set:function(key,control,doc){uri='factonomy://xopus/'+key+'.xml';if(!this.instances[uri])this.instances[uri]={};this.instances[uri].control=control;this.instances[uri].xmlDoc=doc;},getXML:function(uri){return xopusResourceLoader.instances[uri].xmlDoc;}};Ext.fx.XopusEditor=Ext.extend(Ext.form.Field,{hideLabel:true,doc:null,win:null,iframe:null,validationEvent:false,deferHeight:true,initialized:false,activated:false,hideMode:'offsets',defaultXml:null,debug:false,loader:'SimpleDoc.html',task:null,initialized:false,xopusLoaded:false,xopusInputOutputInitialised:false,xopusDocumentLoaded:false,defaultAutoCreate:{tag:"textarea",autocomplete:"off"},onRender:function(ct,position){Ext.fx.XopusEditor.superclass.onRender.apply(this,arguments);this.el.dom.style.border='0 none';this.el.dom.setAttribute('tabIndex',-1);if(!this.debug){this.el.addClass('x-hidden')}
this.wrap=this.el.wrap({cls:'x-html-editor-wrap'});xopus=this.wrap.createChild({tag:'div',id:this.id+'xopusholder',style:'border-right:1px solid silver; width:100%; height:100%'});this.iframe=document.createElement('iframe');this.iframe.name=this.id+'xopusframe';this.iframe.frameBorder='yes';this.iframe.width='100%';this.iframe.height='100%';this.iframe.src=fxContentUrl+'xopus/'+this.loader;xopus.appendChild(this.iframe);if(Ext.isIE){this.doc=this.iframe.contentWindow.document;this.win=this.iframe.contentWindow;}
else{this.doc=(this.iframe.contentDocument||window.frames[this.iframe.name].document);this.win=window.frames[this.iframe.name];}
this.wrap.setSize(this.width,this.height);this.findParentBy(function(p){return p.isXType('form')}).getForm().addListener('beforeaction',this.flushXopus,this);this.loadXml('');},flushXopus:function(form,action){if(action.type=='submit'&&this.xopusDocumentLoaded){this.win.Editor.Selection.unselect();this.win.IO.setSaveXMLFunction(function(xmlURI,xmlDocument){xopusResourceLoader.instances[xmlURI].control.pushValue(xmlDocument.documentElement.xml);return true;});if(this.win.Editor.Canvas.getActiveCanvas().getDocument().hasUnsavedChanges()){this.win.Editor.Canvas.getActiveCanvas().getDocument().save()}}},onDestroy:function(container){xopusResourceLoader.instances["factonomy://xopus/"+this.id+".xml"]=null
Ext.fx.XopusEditor.superclass.onDestroy.apply(this,arguments);},setValue:function(v){this.pushValue(v);this.loadXml(v);},getValue:function(){return this.el.dom.value;},isDirty:function(){if(this.disabled||!this.xopusDocumentLoaded){return false;}
return this.win.Editor.Canvas.getActiveCanvas().getDocument().hasUnsavedChanges();},loadXml:function(xml){this.xml=xml;if(this.task!=null){Ext.TaskMgr.stop(this.task);}
this.task={run:function(){if(this.win.Editor&&this.win.Editor.Canvas&&this.win.Editor.Canvas.getActiveCanvas()&&this.win.Editor.Canvas.getActiveCanvas().getDocument()){Ext.TaskMgr.stop(this.task);if(!this.defaultXml){this.defaultXml=this.win.Editor.Canvas.getActiveCanvas().getDocument().getDocumentElement().getXML();}
if(this.xml.length<1){this.xml=this.defaultXml;}
xopusResourceLoader.set(this.id,this,this.win.Editor.XML.createNativeXMLDocument(this.xml));this.win.IO.setLoadXMLFunction(xopusResourceLoader.getXML);this.win.Editor.Canvas.getActiveCanvas().loadDocument("factonomy://xopus/"+this.id+".xml");this.xopusDocumentLoaded=true;}},interval:100,scope:this};Ext.TaskMgr.start(this.task);},pushValue:function(v){this.el.dom.value=v;},isValid:function(){return true;},validate:function(){return true;},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg('xopuseditor',Ext.fx.XopusEditor);

Ext.namespace("Ext.ux.form");Ext.ux.form.Spinner=function(config){Ext.ux.form.Spinner.superclass.constructor.call(this,config);this.addEvents({'spin':true,'spinup':true,'spindown':true});}
Ext.extend(Ext.ux.form.Spinner,Ext.form.TriggerField,{triggerClass:'x-form-spinner-trigger',splitterClass:'x-form-spinner-splitter',alternateKey:Ext.EventObject.shiftKey,strategy:undefined,onRender:function(ct,position){Ext.ux.form.Spinner.superclass.onRender.call(this,ct,position);this.splitter=this.wrap.createChild({tag:'div',cls:this.splitterClass,style:'width:13px; height:2px;'});this.splitter.show().setRight((Ext.isIE)?1:2);this.splitter.show().setTop(10);this.proxy=this.trigger.createProxy('',this.splitter,true);this.proxy.addClass("x-form-spinner-proxy");this.proxy.setStyle('left','0px');this.proxy.setSize(14,1);this.proxy.hide();this.dd=new Ext.dd.DDProxy(this.splitter.dom.id,"SpinnerDrag",{dragElId:this.proxy.id});this.initSpinner();},initTrigger:function(){this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},initSpinner:function(){this.keyNav=new Ext.KeyNav(this.el,{"up":function(e){e.preventDefault();this.onSpinUp();},"down":function(e){e.preventDefault();this.onSpinDown();},"pageUp":function(e){e.preventDefault();this.onSpinUpAlternate();},"pageDown":function(e){e.preventDefault();this.onSpinDownAlternate();},scope:this});this.repeater=new Ext.util.ClickRepeater(this.trigger);this.repeater.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.on("mouseover",this.onMouseOver,this,{preventDefault:true});this.trigger.on("mouseout",this.onMouseOut,this,{preventDefault:true});this.trigger.on("mousemove",this.onMouseMove,this,{preventDefault:true});this.trigger.on("mousedown",this.onMouseDown,this,{preventDefault:true});this.trigger.on("mouseup",this.onMouseUp,this,{preventDefault:true});this.wrap.on("mousewheel",this.handleMouseWheel,this);this.dd.setXConstraint(0,0,10)
this.dd.setYConstraint(1500,1500,10);this.dd.endDrag=this.endDrag.createDelegate(this);this.dd.startDrag=this.startDrag.createDelegate(this);this.dd.onDrag=this.onDrag.createDelegate(this);if('object'==typeof this.strategy&&this.strategy.xtype){switch(this.strategy.xtype){case'number':this.strategy=new Ext.ux.form.Spinner.NumberStrategy(this.strategy);break;case'date':this.strategy=new Ext.ux.form.Spinner.DateStrategy(this.strategy);break;case'time':this.strategy=new Ext.ux.form.Spinner.TimeStrategy(this.strategy);break;default:delete(this.strategy);break;}
delete(this.strategy.xtype);}
if(this.strategy==undefined){this.strategy=new Ext.ux.form.Spinner.NumberStrategy();}},onMouseOver:function(){if(this.disabled){return;}
var middle=this.getMiddle();this.__tmphcls=(Ext.EventObject.getPageY()<middle)?'x-form-spinner-overup':'x-form-spinner-overdown';this.trigger.addClass(this.__tmphcls);},onMouseOut:function(){this.trigger.removeClass(this.__tmphcls);},onMouseMove:function(){if(this.disabled){return;}
var middle=this.getMiddle();if(((Ext.EventObject.getPageY()>middle)&&this.__tmphcls=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<middle)&&this.__tmphcls=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled){return;}
var middle=this.getMiddle();this.__tmpccls=(Ext.EventObject.getPageY()<middle)?'x-form-spinner-clickup':'x-form-spinner-clickdown';this.trigger.addClass(this.__tmpccls);},onMouseUp:function(){this.trigger.removeClass(this.__tmpccls);},onTriggerClick:function(){if(this.disabled||this.getEl().dom.readOnly){return;}
var middle=this.getMiddle();var ud=(Ext.EventObject.getPageY()<middle)?'Up':'Down';this['onSpin'+ud]();},getMiddle:function(){var t=this.trigger.getTop();var h=this.trigger.getHeight();var middle=t+(h/2);return middle;},isSpinnable:function(){if(this.disabled||this.getEl().dom.readOnly){Ext.EventObject.preventDefault();return false;}
return true;},handleMouseWheel:function(e){if(this.wrap.hasClass('x-trigger-wrap-focus')==false){return;}
var delta=e.getWheelDelta();if(delta>0){this.onSpinUp();e.stopEvent();}else if(delta<0){this.onSpinDown();e.stopEvent();}},startDrag:function(){this.proxy.show();this._previousY=Ext.fly(this.dd.getDragEl()).getTop();},endDrag:function(){this.proxy.hide();},onDrag:function(){if(this.disabled){return;}
var y=Ext.fly(this.dd.getDragEl()).getTop();var ud='';if(this._previousY>y){ud='Up';}
if(this._previousY<y){ud='Down';}
if(ud!=''){this['onSpin'+ud]();}
this._previousY=y;},onSpinUp:function(){if(this.isSpinnable()==false){return;}
if(Ext.EventObject.shiftKey==true){this.onSpinUpAlternate();return;}else{this.strategy.onSpinUp(this);}
this.fireEvent("spin",this);this.fireEvent("spinup",this);},onSpinDown:function(){if(this.isSpinnable()==false){return;}
if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return;}else{this.strategy.onSpinDown(this);}
this.fireEvent("spin",this);this.fireEvent("spindown",this);},onSpinUpAlternate:function(){if(this.isSpinnable()==false){return;}
this.strategy.onSpinUpAlternate(this);this.fireEvent("spin",this);this.fireEvent("spinup",this);},onSpinDownAlternate:function(){if(this.isSpinnable()==false){return;}
this.strategy.onSpinDownAlternate(this);this.fireEvent("spin",this);this.fireEvent("spindown",this);}});Ext.reg('uxspinner',Ext.ux.form.Spinner);

Ext.ux.form.Spinner.Strategy=function(config){Ext.apply(this,config);};Ext.extend(Ext.ux.form.Spinner.Strategy,Ext.util.Observable,{defaultValue:0,minValue:undefined,maxValue:undefined,incrementValue:1,alternateIncrementValue:5,validationTask:new Ext.util.DelayedTask(),onSpinUp:function(field){this.spin(field,false,false);},onSpinDown:function(field){this.spin(field,true,false);},onSpinUpAlternate:function(field){this.spin(field,false,true);},onSpinDownAlternate:function(field){this.spin(field,true,true);},spin:function(field,down,alternate){this.validationTask.delay(500,function(){field.validate()});},fixBoundries:function(value){return value;}});Ext.ux.form.Spinner.NumberStrategy=function(config){Ext.ux.form.Spinner.NumberStrategy.superclass.constructor.call(this,config);};Ext.extend(Ext.ux.form.Spinner.NumberStrategy,Ext.ux.form.Spinner.Strategy,{allowDecimals:true,decimalPrecision:2,spin:function(field,down,alternate){Ext.ux.form.Spinner.NumberStrategy.superclass.spin.call(this,field,down,alternate);var v=parseFloat(field.getValue());var incr=(alternate==true)?this.alternateIncrementValue:this.incrementValue;(down==true)?v-=incr:v+=incr;v=(isNaN(v))?this.defaultValue:v;v=this.fixBoundries(v);field.setRawValue(v);},fixBoundries:function(value){var v=value;if(this.minValue!=undefined&&v<this.minValue){v=this.minValue;}
if(this.maxValue!=undefined&&v>this.maxValue){v=this.maxValue;}
return this.fixPrecision(v);},fixPrecision:function(value){var nan=isNaN(value);if(!this.allowDecimals||this.decimalPrecision==-1||nan||!value){return nan?'':value;}
return parseFloat(parseFloat(value).toFixed(this.decimalPrecision));}});Ext.ux.form.Spinner.DateStrategy=function(config){Ext.ux.form.Spinner.DateStrategy.superclass.constructor.call(this,config);};Ext.extend(Ext.ux.form.Spinner.DateStrategy,Ext.ux.form.Spinner.Strategy,{defaultValue:new Date(),format:"Y-m-d",incrementValue:1,incrementConstant:Date.DAY,alternateIncrementValue:1,alternateIncrementConstant:Date.MONTH,spin:function(field,down,alternate){Ext.ux.form.Spinner.DateStrategy.superclass.spin.call(this);var v=field.getRawValue();v=Date.parseDate(v,this.format);var dir=(down==true)?-1:1;var incr=(alternate==true)?this.alternateIncrementValue:this.incrementValue;var dtconst=(alternate==true)?this.alternateIncrementConstant:this.incrementConstant;if(typeof this.defaultValue=='string'){this.defaultValue=Date.parseDate(this.defaultValue,this.format);}
v=(v)?v.add(dtconst,dir*incr):this.defaultValue;v=this.fixBoundries(v);field.setRawValue(Ext.util.Format.date(v,this.format));},fixBoundries:function(date){var dt=date;var min=(typeof this.minValue=='string')?Date.parseDate(this.minValue,this.format):this.minValue;var max=(typeof this.maxValue=='string')?Date.parseDate(this.maxValue,this.format):this.maxValue;if(this.minValue!=undefined&&dt<min){dt=min;}
if(this.maxValue!=undefined&&dt>max){dt=max;}
return dt;}});Ext.ux.form.Spinner.TimeStrategy=function(config){Ext.ux.form.Spinner.TimeStrategy.superclass.constructor.call(this,config);};Ext.extend(Ext.ux.form.Spinner.TimeStrategy,Ext.ux.form.Spinner.DateStrategy,{format:"H:i",incrementValue:1,incrementConstant:Date.MINUTE,alternateIncrementValue:1,alternateIncrementConstant:Date.HOUR});

(function(){var El=Ext.Element,ElFrame,ELD=Ext.lib.Dom,A=Ext.lib.Anim;var emptyFn=function(){},OP=Object.prototype;var _documents={$_top:{_elCache:El.cache,_dataCache:El.dataCache}};var resolveCache=ELD.resolveCache=function(doc,cacheId){doc=ELD.getDocument(doc);var c=(doc==document?'$_top':cacheId);var cache=_documents[c]||null,d,win;if(!cache&&doc&&(win=doc.parentWindow||doc.defaultView)){if(d=win.frameElement){c=d.id||d.name;}}
return cache||_documents[c]||(c?_documents[c]={_elCache:{},_dataCache:{}}:null);};var clearCache=ELD.clearCache=function(cacheId){delete _documents[cacheId];};El.addMethods||(El.addMethods=function(ov){Ext.apply(El.prototype,ov||{});});Ext.removeNode=function(n){var dom=n?n.dom||n:null;if(dom&&dom.parentNode&&dom.tagName!='BODY'){var el,docCache=resolveCache(ELD.getDocument(dom));if(el=docCache._elCache[dom.id]){el.dom&&el.removeAllListeners();delete docCache._elCache[dom.id];delete docCache._dataCache[dom.id];el.dom&&(el.dom=null);el=null;}
if(Ext.isIE&&!Ext.isIE8){var d=ELD.getDocument(dom).createElement('div');d.appendChild(dom);d.removeChild(dom);d=null;}else{var p=dom.parentNode;p.removeChild(dom);p=null;}}
dom=null;};var overload=function(pfn,fn){var f=typeof pfn==='function'?pfn:function t(){};var ov=f._ovl;if(!ov){ov={base:f};ov[f.length||0]=f;f=function t(){var o=arguments.callee._ovl;var fn=o[arguments.length]||o.base;return fn&&fn!=arguments.callee?fn.apply(this,arguments):undefined;};}
var fnA=[].concat(fn);for(var i=0,l=fnA.length;i<l;i++){ov[fnA[i].length]=fnA[i];}
f._ovl=ov;var t=null;return f;};Ext.applyIf(Ext,{overload:overload(overload,[function(fn){return overload(null,fn);},function(obj,mname,fn){return obj[mname]=overload(obj[mname],fn);}]),isArray:function(v){return OP.toString.apply(v)=='[object Array]';},isObject:function(obj){return(obj!==null)&&typeof obj=='object';},isDocument:function(el,testOrigin){var test=OP.toString.apply(el)=='[object HTMLDocument]'||(el&&el.nodeType==9);if(test&&!!testOrigin){try{test=!!el.location;}
catch(e){return false;}}
return test;},isIterable:function(obj){if(obj===null||obj===undefined)return false;if(Ext.isArray(obj)||!!obj.callee||Ext.isNumber(obj.length))return true;return!!((/NodeList|HTMLCollection/i).test(OP.toString.call(obj))||obj.nextNode||obj.item||false);},isElement:function(obj){return obj&&Ext.type(obj)=='element';},isEvent:function(obj){return OP.toString.apply(obj)=='[object Event]'||(Ext.isObject(obj)&&!Ext.type(o.constructor)&&(window.event&&obj.clientX&&obj.clientX==window.event.clientX));},isFunction:function(obj){return!!obj&&typeof obj=='function';},isEventSupported:(function(){var TAGNAMES={'select':'input','change':'input','submit':'form','reset':'form','error':'img','load':'img','abort':'img'};var cache={};var getKey=function(type,el){return(el?(Ext.isElement(el)||Ext.isDocument(el,true)?el.nodeName.toLowerCase():el.id||Ext.type(el)):'div')+':'+type;};return function(evName,testEl){var key=getKey(evName,testEl);if(key in cache){return cache[key];}
var el,isSupported=false;var eventName='on'+evName;var tag=Ext.isString(testEl)?testEl:TAGNAMES[eventName]||'div';el=Ext.isString(tag)?document.createElement(tag):testEl;isSupported=(!!el&&(eventName in el));isSupported||(isSupported=window.Event&&!!(String(evName).toUpperCase()in window.Event));if(!isSupported&&el){el.setAttribute&&el.setAttribute(eventName,'return;');isSupported=Ext.isFunction(el[eventName]);}
cache[getKey(evName,el)]=isSupported;el=null;return isSupported;};})()});var assertClass=function(el){return El[(el.tagName||'-').toUpperCase()]||El;};var libFlyweight;function fly(el,doc){if(!libFlyweight){libFlyweight=new Ext.Element.Flyweight();}
libFlyweight.dom=doc?Ext.getDom(el,doc):Ext.getDom(el);return libFlyweight;}
Ext.apply(Ext,{get:Ext.overload([Ext.get,function(el,doc,elcache){try{doc=doc?doc.dom||doc:null;}catch(docErr){doc=null;}
return el&&doc?resolveCache(doc,elcache)._elCache[el.id]||this.get(el,doc):null;},function(el,doc){if(!el||!doc){return null;}
if(!Ext.isDocument(doc)){return this.get(el);}
var ex,elm,id,cache=resolveCache(doc);if(Ext.isDocument(el)){if(!Ext.isDocument(el,true)){return false;}
if(el==self.document){return this.get(el);}
if(cache._elCache['$_doc']){return cache._elCache['$_doc'];}
var f=function(){};f.prototype=El.prototype;var docEl=new f();docEl.dom=el;return cache._elCache['$_doc']=docEl;}
cache=cache._elCache;if(typeof el=="string"){elm=Ext.getDom(el,doc);if(!elm)return null;if(ex=cache[el]){ex.dom=elm;}else{ex=cache[el]=new(assertClass(elm))(elm,null,doc);}
return ex;}else if(el.tagName){if(!(id=el.id)){id=Ext.id(el);}
if(ex=cache[id]){ex.dom=el;}else{ex=cache[id]=new(assertClass(el))(el,null,doc);}
return ex;}else if(el instanceof El||el instanceof El['IFRAME']){el.dom=doc.getElementById(el.id)||el.dom;el.dom&&(cache[el.id]=el);return el.dom?el:null;}else if(el.isComposite){return el;}else if(Ext.isArray(el)){return Ext.get(doc,doc).select(el);}
return null;}]),getDom:function(el,doc){if(!el){return null;}
return el.dom?el.dom:(typeof el==='string'?(doc||document).getElementById(el):el);},getBody:Ext.overload([Ext.getBody,function(doc){var D=ELD.getDocument(doc)||{};return Ext.get(D.body||D.documentElement);}]),getDoc:Ext.overload([Ext.getDoc,function(doc){return Ext.get(doc,doc);}])});var propCache={},camelRe=/(-[a-z])/gi,camelFn=function(m,a){return a.charAt(1).toUpperCase();},opacityRe=/alpha\(opacity=(.*)\)/i,trimRe=/^\s+|\s+$/g,propFloat=Ext.isIE?'styleFloat':'cssFloat',view=document.defaultView,VISMODE='visibilityMode',ELDISPLAY=El.DISPLAY,data=El.data,CSS=Ext.util.CSS;function chkCache(prop){return propCache[prop]||(propCache[prop]=prop=='float'?propFloat:prop.replace(camelRe,camelFn));};El.NOSIZE=3;El.ASCLASS=3;if(CSS){Ext.onReady(function(){CSS.getRule('.x-hide-nosize')||CSS.createStyleSheet('.x-hide-nosize{height:0px!important;width:0px!important;border:none!important;zoom:1;}.x-hide-nosize * {height:0px!important;width:0px!important;border:none!important;zoom:1;}');CSS.refreshCache();});}
El.visibilityCls='x-hide-nosize';El.addMethods({getDocument:function(){return ELD.getDocument(this);},getVisibilityMode:function(){var dom=this.dom,mode=Ext.isFunction(data)?data(dom,VISMODE):this[VISMODE];if(mode===undefined){mode=1;Ext.isFunction(data)?data(dom,VISMODE,mode):(this[VISMODE]=mode);}
return mode;},setVisible:function(visible,animate){var me=this,dom=me.dom,visMode=me.getVisibilityMode();if(!animate||!A){if(visMode===El.DISPLAY){me.setDisplayed(visible);}else if(visMode===El.VISIBILITY){me.fixDisplay();dom.style.visibility=visible?"visible":"hidden";}else if(visMode===El.ASCLASS){me[visible?'removeClass':'addClass'](me.visibilityCls||El.visibilityCls);}}else{if(visible){me.setOpacity(.01);me.setVisible(true);}
me.anim({opacity:{to:(visible?1:0)}},me.preanim(arguments,1),null,.35,'easeIn',function(){if(!visible){if(visMode===El.DISPLAY){dom.style.display="none";}else if(visMode===El.VISIBILITY){dom.style.visibility="hidden";}else if(visMode===El.ASCLASS){me.addClass(me.visibilityCls||El.visibilityCls);}
me.setOpacity(1);}});}
return me;},isVisible:function(deep){var vis=!(this.getStyle("visibility")==="hidden"||this.getStyle("display")==="none"||this.hasClass(this.visibilityCls||El.visibilityCls));if(deep&&vis){var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!=="body"){if(!Ext.fly(p,'_isVisible').isVisible()){vis=false;break;}
p=p.parentNode;}
delete El._flyweights['_isVisible'];}
return vis;},remove:function(cleanse,deep){if(this.dom){this._mask&&this.unmask(true);this._mask=null;cleanse&&this.cleanse(true,deep);Ext.removeNode(this);this.dom=null;delete this.dom;}},cleanse:function(forceReclean,deep){if(this.isCleansed&&forceReclean!==true){return this;}
var d=this.dom,n=d.firstChild,nx;while(d&&n){nx=n.nextSibling;deep&&Ext.fly(n,'_cleanser').cleanse(forceReclean,deep);Ext.removeNode(n);n=nx;}
delete El._flyweights['_cleanser'];this.isCleansed=true;return this;},scrollIntoView:function(container,hscroll){var d=this.getDocument();var c=Ext.getDom(container,d)||Ext.getBody(d).dom;var el=this.dom;var o=this.getOffsetsTo(c),s=this.getScroll(),l=o[0]+s.left,t=o[1]+s.top,b=t+el.offsetHeight,r=l+el.offsetWidth;var ch=c.clientHeight;var ct=parseInt(c.scrollTop,10);var cl=parseInt(c.scrollLeft,10);var cb=ct+ch;var cr=cl+c.clientWidth;if(el.offsetHeight>ch||t<ct){c.scrollTop=t;}else if(b>cb){c.scrollTop=b-ch;}
c.scrollTop=c.scrollTop;if(hscroll!==false){if(el.offsetWidth>c.clientWidth||l<cl){c.scrollLeft=l;}else if(r>cr){c.scrollLeft=r-c.clientWidth;}
c.scrollLeft=c.scrollLeft;}
return this;},getScroll:function(){var d=this.dom,doc=this.getDocument(),body=doc.body,docElement=doc.documentElement,l,t,ret;if(Ext.isDocument(d)||d==body){if(Ext.isIE&&ELD.docIsStrict(doc)){l=docElement.scrollLeft;t=docElement.scrollTop;}else{l=window.pageXOffset;t=window.pageYOffset;}
ret={left:l||(body?body.scrollLeft:0),top:t||(body?body.scrollTop:0)};}else{ret={left:d.scrollLeft,top:d.scrollTop};}
return ret;},getStyle:function(){var getStyle=view&&view.getComputedStyle?function GS(prop){if(Ext.isDocument(this.dom))return null;var el=this.dom,v,cs;prop=chkCache(prop);return(v=el.style[prop])?v:(cs=view.getComputedStyle(el,""))?cs[prop]:null;}:function GS(prop){if(Ext.isDocument(this.dom))return null;var el=this.dom,m,cs;if(prop=='opacity'){if(el.style.filter.match){if(m=el.style.filter.match(opacityRe)){var fv=parseFloat(m[1]);if(!isNaN(fv)){return fv?fv/100:0;}}}
return 1;}
prop=chkCache(prop);return el.style[prop]||((cs=el.currentStyle)?cs[prop]:null);};var GS=null;return getStyle;}(),setStyle:function(prop,value){if(Ext.isDocument(this.dom))return this;var tmp,style,camel;if(!Ext.isObject(prop)){tmp={};tmp[prop]=value;prop=tmp;}
for(style in prop){value=prop[style];style=='opacity'?this.setOpacity(value):this.dom.style[chkCache(style)]=value;}
return this;},center:function(centerIn){return this.alignTo(centerIn||this.getDocument(),'c-c');},getCenterXY:function(){return this.getAlignToXY(this.getDocument(),'c-c');},getAnchorXY:function(anchor,local,s){anchor=(anchor||"tl").toLowerCase();s=s||{};var me=this,doc=this.getDocument(),vp=me.dom==doc.body||me.dom==doc,w=s.width||vp?Ext.lib.Dom.getViewWidth(false,doc):me.getWidth(),h=s.height||vp?Ext.lib.Dom.getViewHeight(false,doc):me.getHeight(),xy,r=Math.round,o=me.getXY(),scroll=me.getScroll(),extraX=vp?scroll.left:!local?o[0]:0,extraY=vp?scroll.top:!local?o[1]:0,hash={c:[r(w*.5),r(h*.5)],t:[r(w*.5),0],l:[0,r(h*.5)],r:[w,r(h*.5)],b:[r(w*.5),h],tl:[0,0],bl:[0,h],br:[w,h],tr:[w,0]};xy=hash[anchor];return[xy[0]+extraX,xy[1]+extraY];},anchorTo:function(el,alignment,offsets,animate,monitorScroll,callback){var me=this,dom=me.dom;function action(){fly(dom).alignTo(el,alignment,offsets,animate);Ext.callback(callback,fly(dom));};Ext.EventManager.onWindowResize(action,me);if(!Ext.isEmpty(monitorScroll)){Ext.EventManager.on(window,'scroll',action,me,{buffer:!isNaN(monitorScroll)?monitorScroll:50});}
action.call(me);return me;},getScroll:function(){var d=this.dom,doc=this.getDocument(),body=doc.body,docElement=doc.documentElement,l,t,ret;if(d==doc||d==body){if(Ext.isIE&&ELD.docIsStrict(doc)){l=docElement.scrollLeft;t=docElement.scrollTop;}else{l=window.pageXOffset;t=window.pageYOffset;}
ret={left:l||(body?body.scrollLeft:0),top:t||(body?body.scrollTop:0)};}else{ret={left:d.scrollLeft,top:d.scrollTop};}
return ret;},getAlignToXY:function(el,p,o){var doc;el=Ext.get(el,doc=this.getDocument());if(!el||!el.dom){throw"Element.getAlignToXY with an element that doesn't exist";}
o=o||[0,0];p=(p=="?"?"tl-bl?":(!/-/.test(p)&&p!=""?"tl-"+p:p||"tl-bl")).toLowerCase();var me=this,d=me.dom,a1,a2,x,y,w,h,r,dw=Ext.lib.Dom.getViewWidth(false,doc)-10,dh=Ext.lib.Dom.getViewHeight(false,doc)-10,p1y,p1x,p2y,p2x,swapY,swapX,docElement=doc.documentElement,docBody=doc.body,scrollX=(docElement.scrollLeft||docBody.scrollLeft||0)+5,scrollY=(docElement.scrollTop||docBody.scrollTop||0)+5,c=false,p1="",p2="",m=p.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!m){throw"Element.getAlignToXY with an invalid alignment "+p;}
p1=m[1];p2=m[2];c=!!m[3];a1=me.getAnchorXY(p1,true);a2=el.getAnchorXY(p2,false);x=a2[0]-a1[0]+o[0];y=a2[1]-a1[1]+o[1];if(c){w=me.getWidth();h=me.getHeight();r=el.getRegion();p1y=p1.charAt(0);p1x=p1.charAt(p1.length-1);p2y=p2.charAt(0);p2x=p2.charAt(p2.length-1);swapY=((p1y=="t"&&p2y=="b")||(p1y=="b"&&p2y=="t"));swapX=((p1x=="r"&&p2x=="l")||(p1x=="l"&&p2x=="r"));if(x+w>dw+scrollX){x=swapX?r.left-w:dw+scrollX-w;}
if(x<scrollX){x=swapX?r.right:scrollX;}
if(y+h>dh+scrollY){y=swapY?r.top-h:dh+scrollY-h;}
if(y<scrollY){y=swapY?r.bottom:scrollY;}}
return[x,y];},adjustForConstraints:function(xy,parent,offsets){return this.getConstrainToXY(parent||this.getDocument(),false,offsets,xy)||xy;},getConstrainToXY:function(el,local,offsets,proposedXY){var os={top:0,left:0,bottom:0,right:0};return function(el,local,offsets,proposedXY){var doc=this.getDocument();el=Ext.get(el,doc);offsets=offsets?Ext.applyIf(offsets,os):os;var vw,vh,vx=0,vy=0;if(el.dom==doc.body||el.dom==doc){vw=Ext.lib.Dom.getViewWidth(false,doc);vh=Ext.lib.Dom.getViewHeight(false,doc);}else{vw=el.dom.clientWidth;vh=el.dom.clientHeight;if(!local){var vxy=el.getXY();vx=vxy[0];vy=vxy[1];}}
var s=el.getScroll();vx+=offsets.left+s.left;vy+=offsets.top+s.top;vw-=offsets.right;vh-=offsets.bottom;var vr=vx+vw;var vb=vy+vh;var xy=proposedXY||(!local?this.getXY():[this.getLeft(true),this.getTop(true)]);var x=xy[0],y=xy[1];var w=this.dom.offsetWidth,h=this.dom.offsetHeight;var moved=false;if((x+w)>vr){x=vr-w;moved=true;}
if((y+h)>vb){y=vb-h;moved=true;}
if(x<vx){x=vx;moved=true;}
if(y<vy){y=vy;moved=true;}
return moved?[x,y]:false;};}(),getCenterXY:function(){return this.getAlignToXY(Ext.getBody(this.getDocument()),'c-c');},getHeight:function(contentHeight){var h=Math.max(this.dom.offsetHeight,this.dom.clientHeight)||0;h=!contentHeight?h:h-this.getBorderWidth("tb")-this.getPadding("tb");return h<0?0:h;},getWidth:function(contentWidth){var w=Math.max(this.dom.offsetWidth,this.dom.clientWidth)||0;w=!contentWidth?w:w-this.getBorderWidth("lr")-this.getPadding("lr");return w<0?0:w;},center:function(centerIn){return this.alignTo(centerIn||Ext.getBody(this.getDocument()),'c-c');},findParent:function(simpleSelector,maxDepth,returnEl){var p=this.dom,D=this.getDocument(),b=D.body,depth=0,stopEl;if(Ext.isGecko&&OP.toString.call(p)=='[object XULElement]'){return null;}
maxDepth=maxDepth||50;if(isNaN(maxDepth)){stopEl=Ext.getDom(maxDepth,D);maxDepth=Number.MAX_VALUE;}
while(p&&p.nodeType==1&&depth<maxDepth&&p!=b&&p!=stopEl){if(Ext.DomQuery.is(p,simpleSelector)){return returnEl?Ext.get(p,D):p;}
depth++;p=p.parentNode;}
return null;}});Ext.apply(ELD,{getDocument:function(el,accessTest){var dom=null;try{dom=Ext.getDom(el,null);}catch(ex){}
var isDoc=Ext.isDocument(dom);if(isDoc){if(accessTest){return Ext.isDocument(dom,accessTest)?dom:null;}
return dom;}
return dom?dom.ownerDocument||dom.document:null;},docIsStrict:function(doc){return(Ext.isDocument(doc)?doc:this.getDocument(doc)).compatMode=="CSS1Compat";},getViewWidth:Ext.overload([ELD.getViewWidth||function(full){},function(){return this.getViewWidth(false);},function(full,doc){return full?this.getDocumentWidth(doc):this.getViewportWidth(doc);}]),getViewHeight:Ext.overload([ELD.getViewHeight||function(full){},function(){return this.getViewHeight(false);},function(full,doc){return full?this.getDocumentHeight(doc):this.getViewportHeight(doc);}]),getDocumentHeight:Ext.overload([ELD.getDocumentHeight||emptyFn,function(doc){if(doc=this.getDocument(doc)){return Math.max(!this.docIsStrict(doc)?doc.body.scrollHeight:doc.documentElement.scrollHeight,this.getViewportHeight(doc));}
return undefined;}]),getDocumentWidth:Ext.overload([ELD.getDocumentWidth||emptyFn,function(doc){if(doc=this.getDocument(doc)){return Math.max(!this.docIsStrict(doc)?doc.body.scrollWidth:doc.documentElement.scrollWidth,this.getViewportWidth(doc));}
return undefined;}]),getViewportHeight:Ext.overload([ELD.getViewportHeight||emptyFn,function(doc){if(doc=this.getDocument(doc)){if(Ext.isIE){return this.docIsStrict(doc)?doc.documentElement.clientHeight:doc.body.clientHeight;}else{return doc.defaultView.innerHeight;}}
return undefined;}]),getViewportWidth:Ext.overload([ELD.getViewportWidth||emptyFn,function(doc){if(doc=this.getDocument(doc)){return!this.docIsStrict(doc)&&!Ext.isOpera?doc.body.clientWidth:Ext.isIE?doc.documentElement.clientWidth:doc.defaultView.innerWidth;}
return undefined;}]),getXY:Ext.overload([ELD.getXY||function(el){},function(el,doc){el=Ext.getDom(el,doc);var D=this.getDocument(el);var p,pe,b,scroll;var bd=D?(D.body||D.documentElement):null;if(!el||!bd||el==bd){return[0,0];}
if(el.getBoundingClientRect){b=el.getBoundingClientRect();scroll=fly(D).getScroll();return[b.left+scroll.left,b.top+scroll.top];}
var x=0,y=0;p=el;var hasAbsolute=fly(el).getStyle("position")=="absolute";while(p){x+=p.offsetLeft;y+=p.offsetTop;if(!hasAbsolute&&fly(p).getStyle("position")=="absolute"){hasAbsolute=true;}
if(Ext.isGecko){pe=fly(p);var bt=parseInt(pe.getStyle("borderTopWidth"),10)||0;var bl=parseInt(pe.getStyle("borderLeftWidth"),10)||0;x+=bl;y+=bt;if(p!=el&&pe.getStyle('overflow')!='visible'){x+=bl;y+=bt;}}
p=p.offsetParent;}
if(Ext.isSafari&&hasAbsolute){x-=bd.offsetLeft;y-=bd.offsetTop;}
if(Ext.isGecko&&!hasAbsolute){var dbd=fly(bd);x+=parseInt(dbd.getStyle("borderLeftWidth"),10)||0;y+=parseInt(dbd.getStyle("borderTopWidth"),10)||0;}
p=el.parentNode;while(p&&p!=bd){if(!Ext.isOpera||(p.tagName!='TR'&&fly(p).getStyle("display")!="inline")){x-=p.scrollLeft;y-=p.scrollTop;}
p=p.parentNode;}
return[x,y];}])});Ext.fly=El.fly=Ext.overload([El.fly,function(el){return El.fly(el,null);},function(el,named,doc){return El.fly(Ext.getDom(el,doc),named);}]);Ext.provide&&Ext.provide('multidom');})();

Ext.namespace('Ext.ux.plugin');Ext.onReady(function(){var CSS=Ext.util.CSS;if(CSS){CSS.getRule('.x-hide-nosize')||CSS.createStyleSheet('.x-hide-nosize{height:0px!important;width:0px!important;border:none!important;zoom:1;}.x-hide-nosize * {height:0px!important;width:0px!important;border:none!important;zoom:1;}');CSS.refreshCache();}});(function(){var El=Ext.Element,A=Ext.lib.Anim,VISMODE='visibilityMode',ELDISPLAY=El.DISPLAY,data=El.data;if(!El.ASCLASS){El.NOSIZE=3;El.ASCLASS=3;El.visibilityCls='x-hide-nosize';Ext.override(El,{getVisibilityMode:function(){var dom=this.dom,mode=Ext.type(data)=='function'?data(dom,VISMODE):this[VISMODE];if(mode===undefined){mode=1;mode=Ext.type(data)=='function'?data(dom,VISMODE,mode):(this[VISMODE]=mode);}
return mode;},setVisible:function(visible,animate){var me=this,dom=me.dom,visMode=me.getVisibilityMode();if(!animate||!A){if(visMode===El.DISPLAY){me.setDisplayed(visible);}else if(visMode===El.VISIBILITY){me.fixDisplay();dom.style.visibility=visible?"visible":"hidden";}else{me[visible?'removeClass':'addClass'](me.visibilityCls||El.visibilityCls);}}else{if(visible){me.setOpacity(.01);me.setVisible(true);}
me.anim({opacity:{to:(visible?1:0)}},me.preanim(arguments,1),null,.35,'easeIn',function(){if(!visible){if(visMode===El.DISPLAY){dom.style.display="none";}else if(visMode===El.VISIBILITY){dom.style.visibility="hidden";}else{me.addClass(me.visibilityCls||El.visibilityCls);}
me.setOpacity(1);}});}
return me;},isVisible:function(deep){var vis=!(this.getStyle("visibility")==="hidden"||this.getStyle("display")==="none"||this.hasClass(this.visibilityCls||El.visibilityCls));if(deep&&vis){var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!=="body"){if(!Ext.fly(p,'_isVisible').isVisible()){vis=false;break;}
p=p.parentNode;}
delete El._flyweights['_isVisible'];}
return vis;}});}})();Ext.ux.plugin.VisibilityMode=function(opt){Ext.apply(this,opt||{});var CSS=Ext.util.CSS;if(CSS&&!Ext.isIE&&this.fixMaximizedWindow!==false&&!Ext.ux.plugin.VisibilityMode.MaxWinFixed){CSS.updateRule('.x-window-maximized-ct','overflow','');Ext.ux.plugin.VisibilityMode.MaxWinFixed=true;}};Ext.extend(Ext.ux.plugin.VisibilityMode,Object,{bubble:true,fixMaximizedWindow:true,elements:null,visibilityCls:'x-hide-nosize',hideMode:'nosize',init:function(c){var El=Ext.Element;var hideMode=this.hideMode||c.hideMode;var visMode=El[hideMode.toUpperCase()]||El.VISIBILITY;var plugin=this;var changeVis=function(){var els=[this.collapseEl,this.floating?null:this.actionMode].concat(plugin.elements||[]);Ext.each(els,function(el){var e=el?this[el]:el;if(e){e.setVisibilityMode(visMode);e.visibilityCls=plugin.visibilityCls;}},this);var cfg={animCollapse:false,hideMode:hideMode,animFloat:false,defaults:this.defaults||{}};cfg.defaults.hideMode=hideMode;Ext.apply(this,cfg);Ext.apply(this.initialConfig||{},cfg);};var bubble=Ext.Container.prototype.bubble;c.on('render',function(){if(plugin.bubble!==false&&this.ownerCt){bubble.call(this.ownerCt,function(){if(this.hideMode!==hideMode){this.hideMode=hideMode;this.on('afterlayout',changeVis,this,{single:true});}});}
changeVis.call(this);},c,{single:true});}});

(function(){var El=Ext.Element,ElFrame,ELD=Ext.lib.Dom,EMPTYFN=function(){},OP=Object.prototype,addListener=function(){var handler;if(window.addEventListener){handler=function F(el,eventName,fn,capture){el.addEventListener(eventName,fn,!!capture);};}else if(window.attachEvent){handler=function F(el,eventName,fn,capture){el.attachEvent("on"+eventName,fn);};}else{handler=function F(){};}
var F=null;return handler;}(),removeListener=function(){var handler;if(window.removeEventListener){handler=function F(el,eventName,fn,capture){el.removeEventListener(eventName,fn,(capture));};}else if(window.detachEvent){handler=function F(el,eventName,fn){el.detachEvent("on"+eventName,fn);};}else{handler=function F(){};}
var F=null;return handler;}();if(typeof ELD.getDocument!='function'){throw"MIF 2.0 requires multidom support";}
if(Ext.version<3||typeof Ext.Element.data!='function'){throw"MIF 2.0 requires Ext 3.0 SVN/RC2.1 or higher.";}
Ext.isDocument=function(obj,testOrigin){var test=OP.toString.apply(obj)=='[object HTMLDocument]'||(obj&&obj.nodeType==9);if(test&&!!testOrigin){try{test=test&&!!obj.location;}
catch(e){return false;}}
return test;};Ext.ns('Ext.ux.ManagedIFrame','Ext.ux.plugin');var MIM,MIF=Ext.ux.ManagedIFrame,MIFC;var frameEvents=['documentloaded','domready','focus','blur','resize','unload','exception','message'];var reSynthEvents=new RegExp('^('+frameEvents.join('|')+')','i');Ext.ux.ManagedIFrame.Element=Ext.extend(Ext.Element,{cls:'ux-mif',visibilityMode:Ext.isIE?El.DISPLAY:3,constructor:function(element,forceNew,doc){var d=doc||document;var elCache=ELD.resolveCache?ELD.resolveCache(d)._elCache:El.cache;var dom=typeof element=="string"?d.getElementById(element):element.dom||element;if(!dom||!(/^(iframe|frame)/i).test(dom.tagName)){return null;}
var id=dom.id;if(forceNew!==true&&id&&elCache[id]){return elCache[id];}else{if(id){elCache[id]=this;}}
this.dom=dom;this.cls&&this.addClass(this.cls);this.id=id||Ext.id(dom);this.dom.name||(this.dom.name=this.id);this.dom.ownerCt=this;MIM.register(this);(this._observable=new Ext.util.Observable()).addEvents('documentloaded','domready','exception','resize','message','blur','focus','unload');this._observable.addEvents('_docready','_docload');this.dom[Ext.isIE?'onreadystatechange':'onload']=this.dom['onerror']=this.loadHandler.createDelegate(this);},destructor:function(){this.dom[Ext.isIE?'onreadystatechange':'onload']=this.dom['onerror']=EMPTYFN;MIM.deRegister(this);this.removeAllListeners();Ext.destroy(this.shim,this.DDM);this.hideMask(true);delete this.loadMask;this.reset();this.manager=null;this.dom.ownerCt=null;},cleanse:function(forceReclean,deep){if(this.isCleansed&&forceReclean!==true){return this;}
var d=this.dom,n=d.firstChild,nx;while(d&&n){nx=n.nextSibling;deep&&Ext.fly(n).cleanse(forceReclean,deep);Ext.removeNode(n);n=nx;}
this.isCleansed=true;return this;},src:null,CSS:null,manager:null,disableMessaging:true,domReadyRetries:7500,eventsFollowFrameLinks:true,_domCache:null,remove:function(){this.destructor.apply(this,arguments);ElFrame.superclass.remove.apply(this,arguments);},getDocument:function(){return this.dom?this.dom.ownerDocument:document;},submitAsTarget:function(submitCfg){var opt=submitCfg||{},D=this.getDocument();var form=opt.form||Ext.DomHelper.append(D.body,{tag:'form',cls:'x-hidden'});form=Ext.getDom(form.form||form,D);form.target=this.dom.name;form.method=opt.method||'POST';opt.encoding&&(form.enctype=form.encoding=String(opt.encoding));opt.url&&(form.action=opt.url);var hiddens,hd;if(opt.params){hiddens=[];var ps=typeof opt.params=='string'?Ext.urlDecode(params,false):opt.params;for(var k in ps){if(ps.hasOwnProperty(k)){hd=D.createElement('input');hd.type='hidden';hd.name=k;hd.value=ps[k];form.appendChild(hd);hiddens.push(hd);}}}
opt.callback&&this._observable.addListener('_docload',opt.callback,opt.scope,{single:true,delay:200});this._frameAction=true;this._targetURI=location.href;this.showMask();(function(){form.submit();hiddens&&Ext.each(hiddens,Ext.removeNode,Ext);Ext.fly(form,'_dynaForm').hasClass('x-hidden')&&Ext.removeNode(form);this.hideMask(true);}).defer(100,this);},resetUrl:(function(){return Ext.isIE&&Ext.isSecure?Ext.SSL_SECURE_URL:'about:blank';})(),setSrc:function(url,discardUrl,callback,scope){var src=url||this.src||this.resetUrl;var O=this._observable;this._unHook();Ext.isFunction(callback)&&O.addListener('_docload',callback,scope||this,{single:true});this.showMask();(discardUrl!==true)&&(this.src=src);var s=this._targetURI=(Ext.isFunction(src)?src()||'':src);try{this._frameAction=true;this.dom.src=s;this.checkDOM();}catch(ex){O.fireEvent.call(O,'exception',this,ex);}
return this;},setLocation:function(url,discardUrl,callback,scope){var src=url||this.src||this.resetUrl;var O=this._observable;this._unHook();Ext.isFunction(callback)&&O.addListener('_docload',callback,scope||this,{single:true});this.showMask();var s=this._targetURI=(Ext.isFunction(src)?src()||'':src);if(discardUrl!==true){this.src=src;}
try{this._frameAction=true;this.getWindow().location.replace(s);this.checkDOM();}catch(ex){O.fireEvent.call(O,'exception',this,ex);}
return this;},reset:function(src,callback,scope){this._unHook();var loadMaskOff=false;if(this.loadMask){loadMaskOff=this.loadMask.disabled;this.loadMask.disabled=false;}
this._observable.addListener('_docload',function(frame){if(frame.loadMask){frame.loadMask.disabled=loadMaskOff;};frame._isReset=false;Ext.isFunction(callback)&&callback.call(scope||this,frame);},this,{single:true});this.hideMask(true);this._isReset=true;var s=src;Ext.isFunction(src)&&(s=src());s=this._targetURI=Ext.isEmpty(s,true)?this.resetUrl:s;this.getWindow().location.href=s;return this;},scriptRE:/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/gi,update:function(content,loadScripts,callback,scope){loadScripts=loadScripts||this.getUpdater().loadScripts||false;content=Ext.DomHelper.markup(content||'');content=loadScripts===true?content:content.replace(this.scriptRE,"");var doc;if((doc=this.getFrameDocument())&&!!content.length){this._unHook();this.src=null;this.showMask();Ext.isFunction(callback)&&this._observable.addListener('_docload',callback,scope||this,{single:true});this._targetURI=location.href;doc.open();this._frameAction=true;doc.write(content);doc.close();this.checkDOM();}else{this.hideMask(true);Ext.isFunction(callback)&&callback.call(scope,this);}
return this;},execCommand:function(command,userInterface,value,validate){var doc,assert;if((doc=this.getFrameDocument())&&!!command){try{Ext.isIE&&this.getWindow().focus();assert=validate&&Ext.isFunction(doc.queryCommandEnabled)?doc.queryCommandEnabled(command):true;return assert&&doc.execCommand(command,!!userInterface,value);}catch(eex){return false;}}
return false;},setDesignMode:function(active){var doc;(doc=this.getFrameDocument())&&(doc.designMode=(/on|true/i).test(String(active))?'on':'off');},getUpdater:function(){return this.updateManager||(this.updateManager=new MIF.Updater(this));},getHistory:function(){var h=null;try{h=this.getWindow().history;}catch(eh){}
return h;},get:function(el){var doc=this.getFrameDocument();return doc?Ext.get(el,doc):doc=null;},fly:function(el,named){var doc=this.getFrameDocument();return doc?Ext.fly(el,named,doc):null;},getDom:function(el){var d;if(!el||!(d=this.getFrameDocument())){return(d=null);}
return Ext.getDom(el,d);},select:function(selector,unique){var d;return(d=this.getFrameDocument())?Ext.Element.select(selector,unique,d):d=null;},query:function(selector){var d;return(d=this.getFrameDocument())?Ext.DomQuery.select(selector,d):null;},removeNode:function(node){var dom=n?n.dom||n:null;if(dom&&dom.parentNode&&dom.tagName!='BODY'){if(!dom.ownerDocument||dom.ownerDocument!=this.getFrameDocument()){throw'Invalid document context exception';}
var el,docCache=this._domCache;if(docCache&&(el=docCache._elCache[dom.id])){el.dom&&el.removeAllListeners();delete docCache._elCache[dom.id];delete docCache._dataCache[dom.id];el.dom&&(el.dom=null);el=null;}
var D;if(this.domWritable()){if(Ext.isIE&&!Ext.isIE8){var d=D.createElement('div');d.appendChild(dom);d.removeChild(dom);d=null;}else{var p=dom.parentNode;p.removeChild(dom);p=null;}}}
dom=null;},_renderHook:function(){this._windowContext=null;this.CSS=this.CSS?this.CSS.destroy():null;this._hooked=false;try{if(this.writeScript('(function(){(window.hostMIF = parent.document.getElementById("'
+this.id
+'").ownerCt)._windowContext='
+(Ext.isIE?'window':'{eval:function(s){return eval(s);}}')
+';})()')){var w;if(w=this.getWindow()){this._frameProxy||(this._frameProxy=this._eventProxy.createDelegate(this));addListener(w,'focus',this._frameProxy);addListener(w,'blur',this._frameProxy);addListener(w,'resize',this._frameProxy);addListener(w,'unload',this._frameProxy);}
var D=this.getFrameDocument();D&&(this.CSS=new CSSInterface(D));}}catch(ex){}
return this.domWritable();},_unHook:function(){if(this._hooked){var id,el,c=this._domCache;for(id in c){el=c[id];el&&el.removeAllListeners&&el.removeAllListeners();el&&(c[id]=el=null);delete c[id];}
this._windowContext&&(this._windowContext.hostMIF=null);this._windowContext=null;var w;if(this._frameProxy&&(w=this.getWindow())){removeListener(w,'focus',this._frameProxy);removeListener(w,'blur',this._frameProxy);removeListener(w,'resize',this._frameProxy);removeListener(w,'unload',this._frameProxy);}}
MIM._flyweights={};this._domCache=null;ELD.clearCache&&ELD.clearCache(this.id);this.CSS=this.CSS?this.CSS.destroy():null;this._hooked=this._domReady=this._domFired=false;},_windowContext:null,getFrameDocument:function(){var win=this.getWindow(),doc=null;try{doc=(Ext.isIE&&win?win.document:null)||this.dom.contentDocument||window.frames[this.id].document||null;}catch(gdEx){this._domCache=null;ELD.clearCache&&ELD.clearCache(this.id);return false;}
doc=(doc&&Ext.isFunction(ELD.getDocument))?ELD.getDocument(doc,true):doc;if(doc){this._domCache||(this._domCache=ELD.resolveCache?ELD.resolveCache(doc,this.id):{_elCache:{},_dataCache:{},'$_doc':Ext.get(doc,doc)});}
return doc;},getDoc:function(){var D=this.getFrameDocument();return Ext.get(D,D);},getBody:function(){var d;return(d=this.getFrameDocument())?this.get(d.body||d.documentElement):null;},getDocumentURI:function(){var URI,d;try{URI=this.src&&(d=this.getFrameDocument())?d.location.href:null;}catch(ex){}
return URI||(Ext.isFunction(this.src)?this.src():this.src);},getWindowURI:function(){var URI,w;try{URI=(w=this.getWindow())?w.location.href:null;}catch(ex){}
return URI||(Ext.isFunction(this.src)?this.src():this.src);},getWindow:function(){var dom=this.dom,win=null;try{win=dom.contentWindow||window.frames[dom.name]||null;}catch(gwEx){}
return win;},scrollChildIntoView:function(child,container,hscroll){this.fly(child,'_scrollChildIntoView').scrollIntoView(this.getDom(container)||this.getBody().dom,hscroll);return this;},print:function(){try{var win;if(win=this.getWindow()){Ext.isIE&&win.focus();win.print();}}catch(ex){throw'print exception: '+(ex.description||ex.message||ex);}
return this;},domWritable:function(){return!!Ext.isDocument(this.getFrameDocument(),true)&&!!this._windowContext;},execScript:function(block,useDOM){try{if(this.domWritable()){if(useDOM){this.writeScript(block);}else{return this._windowContext.eval(block);}}else{throw'execScript:non-secure context'}}catch(ex){this._observable.fireEvent.call(this._observable,'exception',this,ex);return false;}
return true;},writeScript:function(block,attributes){attributes=Ext.apply({},attributes||{},{type:"text/javascript",text:block});try{var head,script,doc=this.getFrameDocument();if(doc&&typeof doc.getElementsByTagName!='undefined'){if(!(head=doc.getElementsByTagName("head")[0])){head=doc.createElement("head");doc.getElementsByTagName("html")[0].appendChild(head);}
if(head&&(script=doc.createElement("script"))){for(var attrib in attributes){if(attributes.hasOwnProperty(attrib)&&attrib in script){script[attrib]=attributes[attrib];}}
return!!head.appendChild(script);}}}catch(ex){this._observable.fireEvent.call(this._observable,'exception',this,ex);}finally{script=head=null;}
return false;},loadFunction:function(fn,useDOM,invokeIt){var name=fn.name||fn;var fnSrc=fn.fn||window[fn];name&&fnSrc&&this.execScript(name+'='+fnSrc,useDOM);invokeIt&&this.execScript(name+'()');},loadHandler:function(e,target){if(!this.eventsFollowFrameLinks&&!this._frameAction){return;}
target||(target={});var rstatus=(e&&typeof e.type!=='undefined'?e.type:this.dom.readyState);switch(rstatus){case'domready':case'domfail':this._onDocReady(rstatus);break;case'load':case'complete':this._onDocLoaded(rstatus);break;case'error':this._observable.fireEvent.apply(this._observable,['exception',this].concat(arguments));break;default:}
rstatus=='error'||(this.frameState=rstatus);},_onDocReady:function(eventName){var w,obv=this._observable,D;obv.fireEvent.call(obv,"_docready",eventName,this._domReady,this._domFired);this._domReady=true;(D=this.getDoc())&&(D.isReady=true);if(!this._domFired&&!this._isReset&&(this._hooked=this._renderHook())){this._domFired=true;obv.fireEvent.call(obv,eventName,this);}
this.hideMask();},_onDocLoaded:function(eventName){var obv=this._observable,w;obv.fireEvent.defer(1,obv,["_docload",this]);if(!this._isReset&&(this._frameAction||this.eventsFollowFrameLinks)){!this._domFired&&this._frameAction&&this._onDocReady('domready');Ext.isIE&&(w=this.getWindow())&&w.focus();obv.fireEvent.defer(1,obv,["documentloaded",this]);this._frameAction=false;}
this.hideMask(true);},checkDOM:function(win){if(Ext.isOpera||Ext.isGecko){return;}
var n=0,manager=this,domReady=false,b,l,d,max=this.domReadyRetries||2500,polling=false,startLocation=(this.getFrameDocument()||{location:{}}).location.href;(function(){d=manager.getFrameDocument()||{location:{}};polling=(d.location.href!==startLocation||d.location.href===manager._targetURI);if(manager._domReady){return;}
domReady=polling&&((b=manager.getBody())&&!!(b.dom.innerHTML||'').length)||false;if(d.location.href&&!domReady&&(++n<max)){setTimeout(arguments.callee,2);return;}
manager.loadHandler({type:domReady?'domready':'domfail'});})();},filterEventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,addListener:function(eventName,fn,scope,options){if(typeof eventName=="object"){var o=eventName;for(var e in o){if(this.filterEventOptionsRe.test(e)){continue;}
if(typeof o[e]=="function"){this.addListener(e,o[e],o.scope,o);}else{this.addListener(e,o[e].fn,o[e].scope,o[e]);}}
return;}
if(reSynthEvents.test(eventName)){var O=this._observable;if(O){O.events[eventName]||(O.addEvents(eventName));O.addListener.call(O,eventName,fn,scope||this,options);}}else{ElFrame.superclass.addListener.call(this,eventName,fn,scope||this,options);}
return this;},removeListener:function(eventName,fn,scope){var O=this._observable;if(reSynthEvents.test(eventName)){O&&O.removeListener.call(O,eventName,fn,scope||this,options);}else{ElFrame.superclass.removeListener.call(this,eventName,fn,scope||this);}
return this;},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);var O=this._observable;O&&O.purgeListeners.call(this._observable);return this;},showMask:function(msg,msgCls,maskCls){var lmask=this.loadMask;if(lmask&&!lmask.disabled&&!this._mask){this.mask(msg||lmask.msg,msgCls||lmask.msgCls,maskCls||lmask.maskCls);}},hideMask:function(forced){var tlm=this.loadMask;if(tlm&&!!this._mask){if(forced||(tlm.hideOnReady&&this._domReady)){this.unmask();}}},mask:function(msg,msgCls,maskCls){this._mask&&this.unmask();var p=this.parent('.'+this.cls+'-mask-target')||this.parent();if(p.getStyle("position")=="static"&&!p.select('iframe,frame,object,embed').elements.length){p.addClass("x-masked-relative");}
p.addClass("x-masked");this._mask=Ext.DomHelper.append(p,{cls:maskCls||this.cls+"-el-mask"},true);this._mask.setDisplayed(true);this._mask._agent=p;if(typeof msg=='string'){var delay=(this.loadMask?this.loadMask.delay:0)||10;this._maskMsg=Ext.DomHelper.append(p,{cls:msgCls||this.cls+"-el-mask-msg",style:{visibility:'hidden'},cn:{tag:'div',html:msg}},true);this._maskMsg.setVisibilityMode(Ext.Element.VISIBILITY);(function(){this._mask&&this._maskMsg&&this._maskMsg.center(p).setVisible(true);}).defer(delay,this);}
if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&this.getStyle('height')=='auto'){this._mask.setSize(undefined,this._mask.getHeight());}
return this._mask;},unmask:function(){var a;if(this._mask){(a=this._mask._agent)&&a.removeClass(["x-masked-relative","x-masked"]);if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg;}
this._mask.remove();delete this._mask;}},createShim:function(imgUrl,shimCls){this.shimCls=shimCls||this.shimCls||'ux-mif-shim';this.shim||(this.shim=this.next('.'+this.shimCls)||Ext.DomHelper.append(this.dom.parentNode,{tag:'img',src:imgUrl||Ext.BLANK_IMAGE_URL,cls:this.shimCls,galleryimg:"no"},true));this.shim&&(this.shim.autoBoxAdjust=false);return this.shim;},toggleShim:function(show){var shim=this.shim||this.createShim();var cls=this.shimCls+'-on';!show&&shim.removeClass(cls);show&&!shim.hasClass(cls)&&shim.addClass(cls);},load:function(loadCfg){var um;if(um=this.getUpdater()){if(loadCfg&&loadCfg.renderer){um.setRenderer(loadCfg.renderer);delete loadCfg.renderer;}
um.update.apply(um,arguments);}
return this;},_eventProxy:function(e){if(!e)return;e=Ext.EventObject.setEvent(e);var be=e.browserEvent||e,er,args=[e.type,this];if(!be['eventPhase']||(be['eventPhase']==(be['AT_TARGET']||2))){if(e.type=='resize'){var doc=this.getFrameDocument();doc&&(args.push({height:ELD.getDocumentHeight(doc),width:ELD.getDocumentWidth(doc)},{height:ELD.getViewportHeight(doc),width:ELD.getViewportWidth(doc)},{height:ELD.getViewHeight(false,doc),width:ELD.getViewWidth(false,doc)}));}
er=this._observable?this._observable.fireEvent.apply(this._observable,args.concat(Array.prototype.slice.call(arguments,0))):null;}
else if(e.type=='unload'){this._unHook();}
return er;},sendMessage:function(message,tag,origin){},postMessage:function(message,ports,origin){}});ElFrame=Ext.Element.IFRAME=Ext.Element.FRAME=Ext.ux.ManagedIFrame.Element;ElFrame.NOSIZE=3;var fp=ElFrame.prototype;Ext.override(ElFrame,{visibilityCls:'x-hide-nosize',on:fp.addListener,un:fp.removeListener,getUpdateManager:fp.getUpdater});Ext.ux.ManagedIFrame.ComponentAdapter=function(){};Ext.ux.ManagedIFrame.ComponentAdapter.prototype={version:2.0,defaultSrc:null,unsupportedText:'Inline frames are NOT enabled\/supported by your browser.',hideMode:!Ext.isIE?'nosize':'display',animCollapse:Ext.isIE,animFloat:Ext.isIE,frameConfig:null,frameEl:null,useShim:false,autoScroll:true,getId:function(){return this.id||(this.id="mif-comp-"+(++Ext.Component.AUTO_ID));},stateEvents:['documentloaded'],stateful:false,setAutoScroll:function(auto){var scroll=Ext.value(auto,this.autoScroll===true);this.rendered&&this.getFrame()&&this.frameEl.setOverflow(scroll?'auto':'hidden');},getFrame:function(){if(this.rendered){if(this.frameEl){return this.frameEl;}
var f=this.items&&this.items.first?this.items.first():null;f&&(this.frameEl=f.frameEl);return this.frameEl;}
return null;},getFrameWindow:function(){return this.getFrame()?this.frameEl.getWindow():null;},getFrameDocument:function(){return this.getFrame()?this.frameEl.getFrameDocument():null;},getFrameDoc:function(){return this.getFrame()?this.frameEl.getDoc():null;},getFrameBody:function(){return this.getFrame()?this.frameEl.getBody():null;},resetFrame:function(){this.getFrame()&&this.frameEl.reset.apply(this.frameEl,arguments);return this;},submitAsTarget:function(submitCfg){this.getFrame()&&this.frameEl.submitAsTarget.apply(this.frameEl,arguments);return this;},load:function(loadCfg){this.getFrame()&&this.resetFrame(null,this.frameEl.load.createDelegate(this.frameEl,arguments));return this;},doAutoLoad:function(){this.autoLoad&&this.load(typeof this.autoLoad=='object'?this.autoLoad:{url:this.autoLoad});},getUpdater:function(){return this.getFrame()?this.frameEl.getUpdater():null;},setSrc:function(url,discardUrl,callback,scope){this.getFrame()&&this.frameEl.setSrc.apply(this.frameEl,arguments);return this;},setLocation:function(url,discardUrl,callback,scope){this.getFrame()&&this.frameEl.setLocation.apply(this.frameEl,arguments);return this;},getState:function(){var URI=this.getFrame()?this.frameEl.getDocumentURI()||null:null;var state=Ext.BoxComponent.superclass.getState.call(this);URI&&(state=Ext.apply(state||{},{defaultSrc:Ext.isFunction(URI)?URI():URI}));return state;},setMIFEvents:function(){this.addEvents('documentloaded','domready','exception','message','blur','focus','resize','unload');},sendMessage:function(message,tag,origin){}};Ext.ux.ManagedIFrame.Component=Ext.extend(Ext.BoxComponent,{ctype:"Ext.ux.ManagedIFrame.Component",initComponent:function(){var C={monitorResize:this.monitorResize||(this.monitorResize=!!this.fitToParent),plugins:(this.plugins||[]).concat(this.hideMode==='nosize'&&Ext.ux.plugin.VisibilityMode?[new Ext.ux.plugin.VisibilityMode({hideMode:'nosize',elements:['bwrap']})]:[])};MIF.Component.superclass.initComponent.call(Ext.apply(this,Ext.apply(this.initialConfig,C)));this.setMIFEvents();},onRender:function(){this.el||(this.autoEl={});MIF.Component.superclass.onRender.apply(this,arguments);var frCfg=this.frameCfg||this.frameConfig||{};var frDOM=frCfg.autoCreate||frCfg;frDOM=Ext.apply({tag:'iframe',id:Ext.id()},frDOM,Ext.isIE&&Ext.isSecure?{src:Ext.SSL_SECURE_URL}:false);var frame=this.el.child('iframe',true)||this.el.child('frame',true);frame||this.el.createChild([Ext.apply({name:frDOM.id,frameborder:0},frDOM),{tag:'noframes',html:this.unsupportedText||null}]);frame||(frame=this.el.child('iframe',true)||this.el.child('frame',true));var F;if(F=this.frameEl=(!!frame?new MIF.Element(frame,true):null)){F.ownerCt=(this.relayTarget||this);if(this.loadMask){var mEl=this.loadMask.maskEl||'x-panel-bwrap';F.loadMask=Ext.apply({disabled:false,hideOnReady:false,msgCls:'ext-el-mask-msg x-mask-loading',maskCls:'ext-el-mask'},{maskEl:Ext.get(this[mEl]||F.parent('.'+mEl)||mEl||this.el)},this.loadMask);F.cls&&F.loadMask.maskEl&&F.loadMask.maskEl.addClass(F.cls+'-mask-target');}
F.disableMessaging=Ext.value(frCfg.disableMessaging,true);F._observable&&(this.relayTarget||this).relayEvents(F._observable,frameEvents.concat(this._msgTagHandlers||[]));F.setVisibilityMode((this.hideMode?El[this.hideMode.toUpperCase()]:null)||ElFrame.NOSIZE);if(this.defaultSrc){F.setSrc(this.defaultSrc);}else if(this.html){var me=this;F.reset(null,function(frame){this.update(me.html);delete me.html;},F);}else{F.reset();}}},afterRender:function(container){MIF.Component.superclass.afterRender.apply(this,arguments);if(this.fitToParent&&!this.ownerCt){var pos=this.getPosition(),size=(Ext.get(this.fitToParent)||this.getEl().parent()).getViewSize();this.setSize(size.width-pos[0],size.height-pos[1]);}
this.setAutoScroll();if(this.frameEl){var ownerCt=this.ownerCt;while(ownerCt){ownerCt.on('afterlayout',function(container,layout){Ext.each(['north','south','east','west'],function(region){var reg;if((reg=layout[region])&&reg.split&&!reg._splitTrapped){reg.split.on('beforeresize',MIM.showShims,MIM);reg.panel.on('resize',MIM.hideShims,MIM,{delay:1});reg._splitTrapped=MIM._splitTrapped=true;}},this);},this,{single:true});ownerCt=ownerCt.ownerCt;}
if(!!this.ownerCt||this.useShim){this.shim=this.frameEl.createShim();}
this.getUpdater().showLoadIndicator=this.showLoadIndicator||false;this.doAutoLoad();}},beforeDestroy:function(){this.rendered&&Ext.each(['frameEl','shim'],function(elName){if(this[elName]){Ext.destroy(this[elName]);El.uncache(this[elName]);this[elName]=null;delete this[elName];}},this);MIF.Component.superclass.beforeDestroy.call(this);}});Ext.override(MIF.Component,MIF.ComponentAdapter.prototype);Ext.reg('mif',MIF.Component);Ext.ux.ManagedIFrame.Panel=Ext.extend(Ext.Panel,{ctype:"Ext.ux.ManagedIFrame.Panel",constructor:function(config){config||(config={});config.layout='fit';config.items={xtype:'mif',useShim:true,autoScroll:config.autoScroll||this.autoScroll,defaultSrc:config.defaultSrc||this.defaultSrc,html:config.html||this.html,loadMask:config.loadMask||this.loadMask,frameConfig:config.frameConfig||config.frameCfg||this.frameConfig,relayTarget:this};delete config.html;MIF.Panel.superclass.constructor.call(this,config);},initComponent:function(){MIF.Panel.superclass.initComponent.call(this);this.setMIFEvents();}});Ext.override(MIF.Panel,MIF.ComponentAdapter.prototype);Ext.reg('iframepanel',MIF.Panel);Ext.ux.ManagedIFrame.Portlet=Ext.extend(Ext.ux.ManagedIFrame.Panel,{ctype:"Ext.ux.ManagedIFrame.Portlet",anchor:'100%',frame:true,collapseEl:'bwrap',collapsible:true,draggable:true,cls:'x-portlet'});Ext.reg('iframeportlet',MIF.Portlet);Ext.ux.ManagedIFrame.Window=Ext.extend(Ext.Window,{ctype:"Ext.ux.ManagedIFrame.Window",constructor:function(config){config||(config={});config.layout='fit';config.items={xtype:'mif',useShim:true,autoScroll:config.autoScroll||this.autoScroll,defaultSrc:config.defaultSrc||this.defaultSrc,html:config.html||this.html,loadMask:config.loadMask||this.loadMask,frameConfig:config.frameConfig||config.frameCfg||this.frameConfig,relayTarget:this};delete config.html;MIF.Window.superclass.constructor.call(this,config);},initComponent:function(){Ext.ux.ManagedIFrame.Window.superclass.initComponent.call(this);this.setMIFEvents();}});Ext.override(MIF.Window,MIF.ComponentAdapter.prototype);Ext.reg('iframewindow',MIF.Window);Ext.ux.ManagedIFrame.Updater=Ext.extend(Ext.Updater,{showLoading:function(){this.showLoadIndicator&&this.el&&this.el.mask(this.indicatorText);},hideLoading:function(){this.showLoadIndicator&&this.el&&this.el.unmask();},updateComplete:function(response){MIF.Updater.superclass.updateComplete.apply(this,arguments);this.hideLoading();},processFailure:function(response){MIF.Updater.superclass.processFailure.apply(this,arguments);this.hideLoading();}});var styleCamelRe=/(-[a-z])/gi;var styleCamelFn=function(m,a){return a.charAt(1).toUpperCase();};var CSSInterface=function(hostDocument){var doc;if(hostDocument){doc=hostDocument;return{rules:null,destroy:function(){return doc=null;},createStyleSheet:function(cssText,id){var ss;if(!doc)return;var head=doc.getElementsByTagName("head")[0];var rules=doc.createElement("style");rules.setAttribute("type","text/css");if(id){rules.setAttribute("id",id);}
if(Ext.isIE){head.appendChild(rules);ss=rules.styleSheet;ss.cssText=cssText;}else{try{rules.appendChild(doc.createTextNode(cssText));}catch(e){rules.cssText=cssText;}
head.appendChild(rules);ss=rules.styleSheet?rules.styleSheet:(rules.sheet||doc.styleSheets[doc.styleSheets.length
-1]);}
this.cacheStyleSheet(ss);return ss;},removeStyleSheet:function(id){if(!doc)
return;var existing=doc.getElementById(id);if(existing){existing.parentNode.removeChild(existing);}},swapStyleSheet:function(id,url){this.removeStyleSheet(id);if(!doc)
return;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);},refreshCache:function(){return this.getRules(true);},cacheStyleSheet:function(ss){this.rules||(this.rules={});try{var ssRules=ss.cssRules||ss.rules;for(var j=ssRules.length-1;j>=0;--j){this.rules[ssRules[j].selectorText]=ssRules[j];}}catch(e){}},getRules:function(refreshCache){if(this.rules==null||refreshCache){this.rules={};if(doc){var ds=doc.styleSheets;for(var i=0,len=ds.length;i<len;i++){try{this.cacheStyleSheet(ds[i]);}catch(e){}}}}
return this.rules;},getRule:function(selector,refreshCache){var rs=this.getRules(refreshCache);if(!Ext.isArray(selector)){return rs[selector];}
for(var i=0;i<selector.length;i++){if(rs[selector[i]]){return rs[selector[i]];}}
return null;},updateRule:function(selector,property,value){if(!Ext.isArray(selector)){var rule=this.getRule(selector);if(rule){rule.style[property.replace(styleCamelRe,styleCamelFn)]=value;return true;}}else{for(var i=0;i<selector.length;i++){if(this.updateRule(selector[i],property,value)){return true;}}}
return false;}};}};Ext.ux.ManagedIFrame.Manager=function(){var frames={};var implementation={_GeckoFrameReadyHandler:function(e){try{var $frame;if($frame=e.target.ownerCt){$frame.loadHandler.call($frame,{type:'domready'});}}catch(rhEx){}},shimCls:'ux-mif-shim',register:function(frame){frame.manager=this;frames[frame.id]=frames[frame.name]={ref:frame};return frame;},deRegister:function(frame){delete frames[frame.id];delete frames[frame.name];},hideShims:function(){this.shimsApplied&&Ext.select('.'+this.shimCls,true).removeClass(this.shimCls+'-on');this.shimsApplied=false;},showShims:function(){!this.shimsApplied&&Ext.select('.'+this.shimCls,true).addClass(this.shimCls+'-on');this.shimsApplied=true;},getFrameById:function(id){return typeof id=='string'?(frames[id]?frames[id].ref||null:null):null;},getFrameByName:function(name){return this.getFrameById(name);},getFrameHash:function(frame){return frames[frame.id]||frames[frame.id]||null;},_flyweights:{},destroy:function(){if(document.addEventListener){window.removeEventListener("DOMFrameContentLoaded",this._GeckoFrameReadyHandler,true);}
delete this._flyweights;}};document.addEventListener&&window.addEventListener("DOMFrameContentLoaded",implementation._GeckoFrameReadyHandler,true);Ext.EventManager.on(window,'beforeunload',implementation.destroy,implementation);return implementation;}();MIM=MIF.Manager;MIM.showDragMask=MIM.showShims;MIM.hideDragMask=MIM.hideShims;Ext.ux.ManagedIFramePanel=MIF.Panel;Ext.ux.ManagedIFramePortlet=MIF.Portlet;Ext.ux.ManagedIframe=function(el,opt){var args=Array.prototype.slice.call(arguments,0),el=Ext.get(args[0]),config=args[0];if(el&&el.dom&&el.dom.tagName=='IFRAME'){config=args[1]||{};}else{config=args[0]||args[1]||{};el=config.autoCreate?Ext.get(Ext.DomHelper.append(config.autoCreate.parent||Ext.getBody(),Ext.apply({tag:'iframe',frameborder:0,cls:MIF.Element.prototype.cls,src:(Ext.isIE&&Ext.isSecure)?Ext.SSL_SECURE_URL:'about:blank'},config.autoCreate))):null;if(el&&config.unsupportedText){Ext.DomHelper.append(el.dom.parentNode,{tag:'noframes',html:config.unsupportedText});}}
var mif=new MIF.Element(el,true);if(mif){Ext.apply(mif,{disableMessaging:Ext.value(config.disableMessaging,true),loadMask:!!config.loadMask?Ext.apply({msg:'Loading..',msgCls:'x-mask-loading',maskEl:null,hideOnReady:false,disabled:false},config.loadMask):false,_windowContext:null,eventsFollowFrameLinks:Ext.value(config.eventsFollowFrameLinks,true)});config.listeners&&mif.on(config.listeners);if(!!config.html){mif.update(config.html);}else{!!config.src&&mif.setSrc(config.src);}}
return mif;};Ext.onReady(function(){var CSS=new CSSInterface(document),rules=[];CSS.getRule('.ux-mif')||(rules.push('.ux-mif{height:100%;width:100%;}'));CSS.getRule('.ux-mif-mask-target')||(rules.push('.ux-mif-mask-target{position:relative;zoom:1;}'));CSS.getRule('.ux-mif-el-mask')||(rules.push('.ux-mif-el-mask {z-index: 100;position: absolute;top:0;left:0;-moz-opacity: 0.5;opacity: .50;*filter: alpha(opacity=50);width: 100%;height: 100%;zoom: 1;} ','.ux-mif-el-mask-msg {z-index: 1;position: absolute;top: 0;left: 0;border:1px solid;background:repeat-x 0 -16px;padding:2px;} ','.ux-mif-el-mask-msg div {padding:5px 10px 5px 10px;border:1px solid;cursor:wait;} '));if(!CSS.getRule('.ux-mif-shim')){rules.push('.ux-mif-shim {z-index:8500;position:absolute;top:0px;left:0px;background:transparent!important;overflow:hidden;display:none;}');rules.push('.ux-mif-shim-on{width:100%;height:100%;display:block;zoom:1;}');rules.push('.ext-ie6 .ux-mif-shim{margin-left:5px;margin-top:3px;}');}
if(!!rules.length){CSS.createStyleSheet(rules.join(' '));}});Ext.provide&&Ext.provide('mif');})()

Ext.namespace('Ext.ux.form');Ext.ux.form.SuperBoxSelect=function(config){Ext.ux.form.SuperBoxSelect.superclass.constructor.call(this,config);this.addEvents('beforeadditem','additem','newitem','beforeremoveitem','removeitem','clear');};Ext.ux.form.SuperBoxSelect=Ext.extend(Ext.ux.form.SuperBoxSelect,Ext.form.ComboBox,{allowAddNewData:false,backspaceDeletesLastItem:true,classField:null,clearBtnCls:'',displayFieldTpl:null,extraItemCls:'',extraItemStyle:'',expandBtnCls:'',fixFocusOnTabSelect:true,navigateItemsWithTab:true,pinList:true,preventDuplicates:true,queryValuesDelimiter:'|',queryValuesInidicator:'valuesqry',removeValuesFromStore:true,renderFieldBtns:true,stackItems:false,styleField:null,supressClearValueRemoveEvents:false,validationEvent:'blur',valueDelimiter:',',initComponent:function(){Ext.apply(this,{items:new Ext.util.MixedCollection(false),usedRecords:new Ext.util.MixedCollection(false),addedRecords:[],remoteLookup:[],hideTrigger:true,grow:false,resizable:false,multiSelectMode:false,preRenderValue:null});if(this.transform){this.doTransform();}
Ext.ux.form.SuperBoxSelect.superclass.initComponent.call(this);if(this.mode==='remote'&&this.store){this.store.on('load',this.onStoreLoad,this);}},onRender:function(ct,position){Ext.ux.form.SuperBoxSelect.superclass.onRender.call(this,ct,position);this.el.dom.removeAttribute('name');var extraClass=(this.stackItems===true)?'x-superboxselect-stacked':'';if(this.renderFieldBtns){extraClass+=' x-superboxselect-display-btns';}
this.el.removeClass('x-form-text').addClass('x-superboxselect-input-field');this.wrapEl=this.el.wrap({tag:'ul'});this.outerWrapEl=this.wrapEl.wrap({tag:'div',cls:'x-form-text x-superboxselect '+extraClass});this.inputEl=this.el.wrap({tag:'li',cls:'x-superboxselect-input'});if(this.renderFieldBtns){this.setupFieldButtons().manageClearBtn();}
this.setupFormInterception();if(this.preRenderValue){this.setValue(this.preRenderValue);this.preRenderValue=null;}},onStoreLoad:function(store,records,options){var q=options.params[this.queryParam]||store.baseParams[this.queryParam]||"",isValuesQuery=options.params[this.queryValuesInidicator]||store.baseParams[this.queryValuesInidicator];if(this.removeValuesFromStore){this.store.each(function(record){if(this.usedRecords.containsKey(record.get(this.valueField))){this.store.remove(record);}},this);}
if(isValuesQuery){var params=q.split(this.queryValuesDelimiter);var rec;Ext.each(params,function(p){this.remoteLookup.remove(p);Ext.each(records,function(r){if(r.data[this.valueField]==p){rec=r;return false;}},this);if(rec){this.addRecord(rec);}},this);if(this.setOriginal){this.setOriginal=false;this.originalValue=this.getValue();}}
if(q!==''&&this.allowAddNewData){Ext.each(this.remoteLookup,function(r){if(typeof r=="object"&&r[this.displayField]==q){this.remoteLookup.remove(r);if(records.length&&records[0].get(this.displayField)===q){this.addRecord(records[0]);return;}
var rec=this.createRecord(r);this.store.add(rec);this.addRecord(rec);this.addedRecords.push(rec);(function(){if(this.isExpanded()){this.collapse();}}).defer(10,this);return;}},this);}
var toAdd=[];if(q===''){Ext.each(this.addedRecords,function(rec){if(this.preventDuplicates&&this.usedRecords.containsKey(rec.get(this.valueField))){return;}
toAdd.push(rec);},this);}else{var re=new RegExp(Ext.escapeRe(q)+'.*','i');Ext.each(this.addedRecords,function(rec){if(this.preventDuplicates&&this.usedRecords.containsKey(rec.get(this.valueField))){return;}
if(re.test(rec.get(this.displayField))){toAdd.push(rec);}},this);}
this.store.add(toAdd);this.store.sort(this.displayField,'ASC');if(this.store.getCount()===0&&this.isExpanded()){this.collapse();}},doTransform:function(){var s=Ext.getDom(this.transform),transformValues=[];if(!this.store){this.mode='local';var d=[],opts=s.options;for(var i=0,len=opts.length;i<len;i++){var o=opts[i],value=(Ext.isIE&&!Ext.isIE8?o.getAttributeNode('value').specified:o.hasAttribute('value'))?o.value:o.text,cls=(Ext.isIE&&!Ext.isIE8?o.getAttributeNode('class').specified:o.hasAttribute('class'))?o.className:'',style=(Ext.isIE&&!Ext.isIE8?o.getAttributeNode('style').specified:o.hasAttribute('style'))?o.style:'';if(o.selected){transformValues.push(value);}
d.push([value,o.text,cls,style.cssText]);}
this.store=new Ext.data.SimpleStore({'id':0,fields:['value','text','cls','style'],data:d});Ext.apply(this,{valueField:'value',displayField:'text',classField:'cls',styleField:'style'});}
if(transformValues.length){this.value=transformValues.join(',');}},setupFieldButtons:function(){this.buttonWrap=this.outerWrapEl.createChild({cls:'x-superboxselect-btns'});this.buttonClear=this.buttonWrap.createChild({tag:'div',cls:'x-superboxselect-btn-clear '+this.clearBtnCls});this.buttonExpand=this.buttonWrap.createChild({tag:'div',cls:'x-superboxselect-btn-expand '+this.expandBtnCls});this.initButtonEvents();return this;},initButtonEvents:function(){this.buttonClear.addClassOnOver('x-superboxselect-btn-over').on('click',function(e){e.stopEvent();if(this.disabled){return;}
this.clearValue();this.el.focus();},this);this.buttonExpand.addClassOnOver('x-superboxselect-btn-over').on('click',function(e){e.stopEvent();if(this.disabled){return;}
if(this.isExpanded()){this.multiSelectMode=false;}else if(this.pinList){this.multiSelectMode=true;}
this.onTriggerClick();},this);},removeButtonEvents:function(){this.buttonClear.removeAllListeners();this.buttonExpand.removeAllListeners();return this;},clearCurrentFocus:function(){if(this.currentFocus){this.currentFocus.onLnkBlur();this.currentFocus=null;}
return this;},initEvents:function(){var el=this.el;el.on({click:this.onClick,focus:this.clearCurrentFocus,blur:this.onBlur,keydown:this.onKeyDownHandler,keyup:this.onKeyUpBuffered,scope:this});this.on({collapse:this.onCollapse,expand:this.clearCurrentFocus,scope:this});this.wrapEl.on('click',this.onWrapClick,this);this.outerWrapEl.on('click',this.onWrapClick,this);this.inputEl.focus=function(){el.focus();};Ext.ux.form.SuperBoxSelect.superclass.initEvents.call(this);Ext.apply(this.keyNav,{tab:function(e){if(this.fixFocusOnTabSelect&&this.isExpanded()){e.stopEvent();el.blur();this.onViewClick(false);this.focus(false,10);return true;}
this.onViewClick(false);if(el.dom.value!==''){this.setRawValue('');}
return true;},down:function(e){if(!this.isExpanded()&&!this.currentFocus){this.onTriggerClick();}else{this.inKeyMode=true;this.selectNext();}},enter:function(){}});},onClick:function(){this.clearCurrentFocus();this.collapse();this.autoSize();},beforeBlur:Ext.form.ComboBox.superclass.beforeBlur,onFocus:function(){this.outerWrapEl.addClass(this.focusClass);Ext.ux.form.SuperBoxSelect.superclass.onFocus.call(this);},onBlur:function(){this.outerWrapEl.removeClass(this.focusClass);this.clearCurrentFocus();if(this.el.dom.value!==''){this.applyEmptyText();this.autoSize();}
Ext.ux.form.SuperBoxSelect.superclass.onBlur.call(this);},onCollapse:function(){this.view.clearSelections();this.multiSelectMode=false;},onWrapClick:function(e){e.stopEvent();this.collapse();this.el.focus();this.clearCurrentFocus();},markInvalid:function(msg){var elp,t;if(!this.rendered||this.preventMark){return;}
this.outerWrapEl.addClass(this.invalidClass);msg=msg||this.invalidText;switch(this.msgTarget){case'qtip':Ext.apply(this.el.dom,{qtip:msg,qclass:'x-form-invalid-tip'});Ext.apply(this.wrapEl.dom,{qtip:msg,qclass:'x-form-invalid-tip'});if(Ext.QuickTips){Ext.QuickTips.enable();}
break;case'title':this.el.dom.title=msg;this.wrapEl.dom.title=msg;this.outerWrapEl.dom.title=msg;break;case'under':if(!this.errorEl){elp=this.getErrorCt();if(!elp){this.el.dom.title=msg;break;}
this.errorEl=elp.createChild({cls:'x-form-invalid-msg'});this.errorEl.setWidth(elp.getWidth(true)-20);}
this.errorEl.update(msg);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this);break;case'side':if(!this.errorIcon){elp=this.getErrorCt();if(!elp){this.el.dom.title=msg;break;}
this.errorIcon=elp.createChild({cls:'x-form-invalid-icon'});}
this.alignErrorIcon();Ext.apply(this.errorIcon.dom,{qtip:msg,qclass:'x-form-invalid-tip'});this.errorIcon.show();this.on('resize',this.alignErrorIcon,this);break;default:t=Ext.getDom(this.msgTarget);t.innerHTML=msg;t.style.display=this.msgDisplay;break;}
this.fireEvent('invalid',this,msg);},clearInvalid:function(){if(!this.rendered||this.preventMark){return;}
this.outerWrapEl.removeClass(this.invalidClass);switch(this.msgTarget){case'qtip':this.el.dom.qtip='';this.wrapEl.dom.qtip='';break;case'title':this.el.dom.title='';this.wrapEl.dom.title='';this.outerWrapEl.dom.title='';break;case'under':if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this);}
break;case'side':if(this.errorIcon){this.errorIcon.dom.qtip='';this.errorIcon.hide();this.un('resize',this.alignErrorIcon,this);}
break;default:var t=Ext.getDom(this.msgTarget);t.innerHTML='';t.style.display='none';break;}
this.fireEvent('valid',this);},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,'tl-tr',[Ext.isIE?5:2,3]);}},expand:function(){if(this.isExpanded()||!this.hasFocus){return;}
this.list.alignTo(this.outerWrapEl,this.listAlign).show();this.innerList.setOverflow('auto');Ext.getDoc().on({mousewheel:this.collapseIf,mousedown:this.collapseIf,scope:this});this.fireEvent('expand',this);},restrictHeight:function(){var inner=this.innerList.dom,st=inner.scrollTop,list=this.list;inner.style.height='';var pad=list.getFrameWidth('tb')+(this.resizable?this.handleHeight:0)+this.assetHeight,h=Math.max(inner.clientHeight,inner.offsetHeight,inner.scrollHeight),ha=this.getPosition()[1]-Ext.getBody().getScroll().top,hb=Ext.lib.Dom.getViewHeight()-ha-this.getSize().height,space=Math.max(ha,hb,this.minHeight||0)-list.shadowOffset-pad-5;h=Math.min(h,space,this.maxHeight);this.innerList.setHeight(h);list.beginUpdate();list.setHeight(h+pad);list.alignTo(this.outerWrapEl,this.listAlign);list.endUpdate();if(this.multiSelectMode){inner.scrollTop=st;}},validateValue:function(val){if(this.items.getCount()===0){if(this.allowBlank){this.clearInvalid();return true;}else{this.markInvalid(this.blankText);return false;}}else{this.clearInvalid();return true;}},setupFormInterception:function(){var form;this.findParentBy(function(p){if(p.getForm){form=p.getForm();}});if(form){var formGet=form.getValues;form.getValues=function(asString){if(this.items.getCount()>0){this.el.dom.disabled=true;}
var oldVal=this.el.dom.value;this.setRawValue('');var vals=formGet.call(form,asString);this.el.dom.disabled=false;this.setRawValue(oldVal);return vals;}.createDelegate(this);}},onResize:function(w,h,rw,rh){var reduce=Ext.isIE6?4:Ext.isIE7?1:Ext.isIE8?1:0;this._width=w;this.outerWrapEl.setWidth(w-reduce);if(this.renderFieldBtns){reduce+=(this.buttonWrap.getWidth()+20);this.wrapEl.setWidth(w-reduce);}
Ext.ux.form.SuperBoxSelect.superclass.onResize.call(this,w,h,rw,rh);this.autoSize();},onEnable:function(){Ext.ux.form.SuperBoxSelect.superclass.onEnable.call(this);this.items.each(function(item){item.enable();});if(this.renderFieldBtns){this.initButtonEvents();}},onDisable:function(){Ext.ux.form.SuperBoxSelect.superclass.onDisable.call(this);this.items.each(function(item){item.disable();});if(this.renderFieldBtns){this.removeButtonEvents();}},clearValue:function(supressRemoveEvent){Ext.ux.form.SuperBoxSelect.superclass.clearValue.call(this);this.preventMultipleRemoveEvents=supressRemoveEvent||this.supressClearValueRemoveEvents||false;this.removeAllItems();this.fireEvent('clear',this);return this;},onKeyUp:function(e){if(this.editable!==false&&!e.isSpecialKey()&&(!e.hasModifier()||e.shiftKey)){this.lastKey=e.getKey();this.dqTask.delay(this.queryDelay);}},onKeyDownHandler:function(e,t){var toDestroy,nextFocus,idx;if((e.getKey()===e.DELETE||e.getKey()===e.SPACE)&&this.currentFocus){e.stopEvent();toDestroy=this.currentFocus;this.on('expand',function(){this.collapse();},this,{single:true});idx=this.items.indexOfKey(this.currentFocus.key);this.clearCurrentFocus();if(idx<(this.items.getCount()-1)){nextFocus=this.items.itemAt(idx+1);}
toDestroy.preDestroy(true);if(nextFocus){(function(){nextFocus.onLnkFocus();this.currentFocus=nextFocus;}).defer(200,this);}
return true;}
var val=this.el.dom.value,it,ctrl=e.ctrlKey;if(e.getKey()===e.ENTER){e.stopEvent();if(val!==""){if(ctrl||!this.isExpanded()){this.view.clearSelections();this.collapse();this.setRawValue('');this.fireEvent('newitem',this,val);}
else{this.onViewClick();if(this.unsetDelayCheck){this.delayedCheck=true;this.unsetDelayCheck.defer(10,this);}}}else{if(!this.isExpanded()){return;}
this.onViewClick();if(this.unsetDelayCheck){this.delayedCheck=true;this.unsetDelayCheck.defer(10,this);}}
return true;}
if(val!==''){this.autoSize();return;}
if(e.getKey()===e.HOME){e.stopEvent();if(this.items.getCount()>0){this.collapse();it=this.items.get(0);it.el.focus();}
return true;}
if(e.getKey()===e.BACKSPACE){e.stopEvent();if(this.currentFocus){toDestroy=this.currentFocus;this.on('expand',function(){this.collapse();},this,{single:true});idx=this.items.indexOfKey(toDestroy.key);this.clearCurrentFocus();if(idx<(this.items.getCount()-1)){nextFocus=this.items.itemAt(idx+1);}
toDestroy.preDestroy(true);if(nextFocus){(function(){nextFocus.onLnkFocus();this.currentFocus=nextFocus;}).defer(200,this);}
return;}else{it=this.items.get(this.items.getCount()-1);if(it){if(this.backspaceDeletesLastItem){this.on('expand',function(){this.collapse();},this,{single:true});it.preDestroy(true);}else{if(this.navigateItemsWithTab){it.onElClick();}else{this.on('expand',function(){this.collapse();this.currentFocus=it;this.currentFocus.onLnkFocus.defer(20,this.currentFocus);},this,{single:true});}}}
return true;}}
if(!e.isNavKeyPress()){this.multiSelectMode=false;this.clearCurrentFocus();return;}
if(e.getKey()===e.LEFT||(e.getKey()===e.UP&&!this.isExpanded())){e.stopEvent();this.collapse();it=this.items.get(this.items.getCount()-1);if(this.navigateItemsWithTab){if(it){it.focus();}}else{if(this.currentFocus){idx=this.items.indexOfKey(this.currentFocus.key);this.clearCurrentFocus();if(idx!==0){this.currentFocus=this.items.itemAt(idx-1);this.currentFocus.onLnkFocus();}}else{this.currentFocus=it;if(it){it.onLnkFocus();}}}
return true;}
if(e.getKey()===e.DOWN){if(this.currentFocus){this.collapse();e.stopEvent();idx=this.items.indexOfKey(this.currentFocus.key);if(idx==(this.items.getCount()-1)){this.clearCurrentFocus.defer(10,this);}else{this.clearCurrentFocus();this.currentFocus=this.items.itemAt(idx+1);if(this.currentFocus){this.currentFocus.onLnkFocus();}}
return true;}}
if(e.getKey()===e.RIGHT){this.collapse();it=this.items.itemAt(0);if(this.navigateItemsWithTab){if(it){it.focus();}}else{if(this.currentFocus){idx=this.items.indexOfKey(this.currentFocus.key);this.clearCurrentFocus();if(idx<(this.items.getCount()-1)){this.currentFocus=this.items.itemAt(idx+1);if(this.currentFocus){this.currentFocus.onLnkFocus();}}}else{this.currentFocus=it;if(it){it.onLnkFocus();}}}}},onKeyUpBuffered:function(e){if(!e.isNavKeyPress()){this.autoSize();}},reset:function(){Ext.ux.form.SuperBoxSelect.superclass.reset.call(this);this.addedRecords=[];this.autoSize().setRawValue('');this.el.focus();},applyEmptyText:function(){if(this.items.getCount()>0){this.el.removeClass(this.emptyClass);this.setRawValue('');return this;}
if(this.rendered&&this.emptyText&&this.getRawValue().length<1){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass);}
return this;},removeAllItems:function(){this.items.each(function(item){item.preDestroy(true);},this);this.manageClearBtn();return this;},resetStore:function(){this.store.clearFilter();if(!this.removeValuesFromStore){return this;}
this.usedRecords.each(function(rec){this.store.add(rec);},this);this.sortStore();return this;},sortStore:function(){var ss=this.store.getSortState();if(ss&&ss.field){this.store.sort(ss.field,ss.direction);}
return this;},getCaption:function(dataObject){if(typeof this.displayFieldTpl==='string'){this.displayFieldTpl=new Ext.XTemplate(this.displayFieldTpl);}
var caption,recordData=dataObject instanceof Ext.data.Record?dataObject.data:dataObject;if(this.displayFieldTpl){caption=this.displayFieldTpl.apply(recordData);}else if(this.displayField){caption=recordData[this.displayField];}
return caption;},addRecord:function(record){var display=record.data[this.displayField],caption=this.getCaption(record),val=record.data[this.valueField],cls=this.classField?record.data[this.classField]:'',style=this.styleField?record.data[this.styleField]:'';if(this.removeValuesFromStore){this.usedRecords.add(val,record);this.store.remove(record);}
this.addItemBox(val,display,caption,cls,style);this.fireEvent('additem',this,val,record);},createRecord:function(recordData){if(!this.recordConstructor){var recordFields=[{name:this.valueField},{name:this.displayField}];if(this.classField){recordFields.push({name:this.classField});}
if(this.styleField){recordFields.push({name:this.styleField});}
this.recordConstructor=Ext.data.Record.create(recordFields);}
return new this.recordConstructor(recordData);},addItems:function(newItemObjects){if(Ext.isArray(newItemObjects)){Ext.each(newItemObjects,function(item){this.addItem(item);},this);}else{this.addItem(newItemObjects);}},addItem:function(newItemObject){var val=newItemObject[this.valueField];if(this.disabled){return false;}
if(this.preventDuplicates&&this.hasValue(val)){return;}
var record=this.findRecord(this.valueField,val);if(record){this.addRecord(record);return;}else if(!this.allowAddNewData){return;}
if(this.mode==='remote'){this.remoteLookup.push(newItemObject);this.doQuery(val,false,false);return;}
var rec=this.createRecord(newItemObject);this.store.add(rec);this.addRecord(rec);return true;},addItemBox:function(itemVal,itemDisplay,itemCaption,itemClass,itemStyle){var parseStyle=function(s){var ret='';if(typeof s=='function'){ret=s.call();}else if(typeof s=='object'){for(var p in s){ret+=p+':'+s[p]+';';}}else if(typeof s=='string'){ret=s+';';}
return ret;};var itemKey=Ext.id(null,'sbx-item');var box=new Ext.ux.form.SuperBoxSelectItem({owner:this,disabled:this.disabled,renderTo:this.wrapEl,cls:this.extraItemCls+' '+itemClass,style:parseStyle(this.extraItemStyle)+' '+itemStyle,caption:itemCaption,display:itemDisplay,value:itemVal,key:itemKey,listeners:{'remove':function(item){if(this.fireEvent('beforeremoveitem',this,item.value)===false){return;}
this.items.removeKey(item.key);if(this.removeValuesFromStore){if(this.usedRecords.containsKey(item.value)){this.store.add(this.usedRecords.get(item.value));this.usedRecords.removeKey(item.value);this.sortStore();if(this.view){this.view.render();}}}
if(!this.preventMultipleRemoveEvents){this.fireEvent.defer(250,this,['removeitem',this,item.value,this.findInStore(item.value)]);}
this.preventMultipleRemoveEvents=false;},destroy:function(){this.collapse();this.autoSize().manageClearBtn().validateValue();},scope:this}});box.render();box.hidden=this.el.insertSibling({tag:'input',type:'hidden',value:itemVal,name:(this.hiddenName||this.name)},'before');this.items.add(itemKey,box);this.applyEmptyText().autoSize().manageClearBtn().validateValue();},manageClearBtn:function(){if(!this.renderFieldBtns||!this.rendered){return this;}
var cls='x-superboxselect-btn-hide';if(this.items.getCount()===0){this.buttonClear.addClass(cls);}else{this.buttonClear.removeClass(cls);}
return this;},findInStore:function(val){var index=this.store.find(this.valueField,val.trim());if(index>-1){return this.store.getAt(index);}
return false;},getValue:function(){var ret=[];this.items.each(function(item){ret.push(item.value);});var x=(ret.length>0)?ret.join(this.valueDelimiter):'';return x;},getValueEx:function(){var ret=[];this.items.each(function(item){var newItem={};newItem[this.valueField]=item.value;newItem[this.displayField]=item.display;newItem[this.classField]=item.cls;ret.push(newItem);},this);return ret;},initValue:function(){Ext.ux.form.SuperBoxSelect.superclass.initValue.call(this);if(this.mode==='remote'){this.setOriginal=true;}},setValue:function(value){if(!this.rendered){this.preRenderValue=value;return;}
var values=Ext.isArray(value)?value:value.split(this.valueDelimiter);this.removeAllItems().resetStore();this.remoteLookup=[];Ext.each(values,function(val){var record=this.findRecord(this.valueField,val);if(record){this.addRecord(record);}else if(this.mode==='remote'){this.remoteLookup.push(val);}},this);if(this.mode==='remote'){var q=this.remoteLookup.join(this.queryValuesDelimiter);this.doQuery(q,false,true);}},setValueEx:function(data){this.removeAllItems().resetStore();if(!Ext.isArray(data)){data=[data];}
Ext.each(data,function(item){this.addItem(item);},this);},hasValue:function(val){var has=false;this.items.each(function(item){if(item.value==val){has=true;return false;}},this);return has;},onSelect:function(record,index){var val=record.data[this.valueField];if(this.preventDuplicates&&this.hasValue(val)){return;}
this.setRawValue('');this.lastSelectionText='';if(this.fireEvent('beforeadditem',this,val)!==false){this.addRecord(record);}
if(this.store.getCount()===0||!this.multiSelectMode){this.collapse();}else{this.restrictHeight();}},onDestroy:function(){this.items.each(function(item){item.preDestroy(true);},this);if(this.renderFieldBtns){Ext.destroy(this.buttonClear,this.buttonExpand,this.buttonWrap);}
Ext.destroy(this.inputEl,this.wrapEl,this.outerWrapEl);Ext.ux.form.SuperBoxSelect.superclass.onDestroy.call(this);},autoSize:function(){if(!this.rendered){return this;}
if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el);}
var el=this.el,v=el.dom.value,d=document.createElement('div');if(v===""&&this.emptyText&&this.items.getCount()<1){v=this.emptyText;}
d.appendChild(document.createTextNode(v));v=d.innerHTML;d=null;v+="&#160;";var w=Math.max(this.metrics.getWidth(v)+24,24);if(typeof this._width!='undefined'){w=Math.min(this._width,w);}
this.el.setWidth(w);if(Ext.isIE){this.el.dom.style.top='0';}
return this;},doQuery:function(q,forceAll,valuesQuery){q=Ext.isEmpty(q)?'':q;var qe={query:q,forceAll:forceAll,combo:this,cancel:false};if(this.fireEvent('beforequery',qe)===false||qe.cancel){return false;}
q=qe.query;forceAll=qe.forceAll;if(forceAll===true||(q.length>=this.minChars)){if(this.lastQuery!==q){this.lastQuery=q;if(this.mode=='local'){this.selectedIndex=-1;if(forceAll){this.store.clearFilter();}else{this.store.filter(this.displayField,q);}
this.onLoad();}else{this.store.baseParams[this.queryParam]=q;this.store.baseParams[this.queryValuesInidicator]=valuesQuery;this.store.load({params:this.getParams(q)});this.expand();}}else{this.selectedIndex=-1;this.onLoad();}}}});Ext.reg('superboxselect',Ext.ux.form.SuperBoxSelect);Ext.ux.form.SuperBoxSelectItem=function(config){Ext.apply(this,config);Ext.ux.form.SuperBoxSelectItem.superclass.constructor.call(this);};Ext.ux.form.SuperBoxSelectItem=Ext.extend(Ext.ux.form.SuperBoxSelectItem,Ext.Component,{initComponent:function(){Ext.ux.form.SuperBoxSelectItem.superclass.initComponent.call(this);},onElClick:function(e){var o=this.owner;o.clearCurrentFocus().collapse();if(o.navigateItemsWithTab){this.focus();}else{o.el.dom.focus();var that=this;(function(){this.onLnkFocus();o.currentFocus=this;}).defer(10,this);}},onLnkClick:function(e){if(e){e.stopEvent();}
this.preDestroy();if(!this.owner.navigateItemsWithTab){this.owner.el.focus();}},onLnkFocus:function(){this.el.addClass("x-superboxselect-item-focus");this.owner.outerWrapEl.addClass("x-form-focus");},onLnkBlur:function(){this.el.removeClass("x-superboxselect-item-focus");this.owner.outerWrapEl.removeClass("x-form-focus");},enableElListeners:function(){this.el.on('click',this.onElClick,this,{stopEvent:true});this.el.addClassOnOver('x-superboxselect-item x-superboxselect-item-hover');},enableLnkListeners:function(){this.lnk.on({click:this.onLnkClick,focus:this.onLnkFocus,blur:this.onLnkBlur,scope:this});},enableAllListeners:function(){this.enableElListeners();this.enableLnkListeners();},disableAllListeners:function(){this.el.removeAllListeners();this.lnk.un('click',this.onLnkClick,this);this.lnk.un('focus',this.onLnkFocus,this);this.lnk.un('blur',this.onLnkBlur,this);},onRender:function(ct,position){Ext.ux.form.SuperBoxSelectItem.superclass.onRender.call(this,ct,position);var el=this.el;if(el){el.remove();}
this.el=el=ct.createChild({tag:'li'},ct.last());el.addClass('x-superboxselect-item');var btnEl=this.owner.navigateItemsWithTab?(Ext.isSafari?'button':'a'):'span';var itemKey=this.key;Ext.apply(el,{focus:function(){var c=this.down(btnEl+'.x-superboxselect-item-close');if(c){c.focus();}},preDestroy:function(){this.preDestroy();}.createDelegate(this)});this.enableElListeners();el.update(this.caption);var cfg={tag:btnEl,'class':'x-superboxselect-item-close',tabIndex:this.owner.navigateItemsWithTab?'0':'-1'};if(btnEl==='a'){cfg.href='#';}
this.lnk=el.createChild(cfg);if(!this.disabled){this.enableLnkListeners();}else{this.disableAllListeners();}
this.on({disable:this.disableAllListeners,enable:this.enableAllListeners,scope:this});this.setupKeyMap();},setupKeyMap:function(){new Ext.KeyMap(this.lnk,[{key:[Ext.EventObject.BACKSPACE,Ext.EventObject.DELETE,Ext.EventObject.SPACE],fn:this.preDestroy,scope:this},{key:[Ext.EventObject.RIGHT,Ext.EventObject.DOWN],fn:function(){this.moveFocus('right');},scope:this},{key:[Ext.EventObject.LEFT,Ext.EventObject.UP],fn:function(){this.moveFocus('left');},scope:this},{key:[Ext.EventObject.HOME],fn:function(){var l=this.owner.items.get(0).el.focus();if(l){l.el.focus();}},scope:this},{key:[Ext.EventObject.END],fn:function(){this.owner.el.focus();},scope:this},{key:Ext.EventObject.ENTER,fn:function(){}}]).stopEvent=true;},moveFocus:function(dir){var el=this.el[dir=='left'?'prev':'next']()||this.owner.el;el.focus.defer(100,el);},preDestroy:function(supressEffect){if(this.fireEvent('remove',this)===false){return;}
var actionDestroy=function(){if(this.owner.navigateItemsWithTab){this.moveFocus('right');}
this.hidden.remove();this.hidden=null;this.destroy();};if(supressEffect){actionDestroy.call(this);}else{this.el.hide({duration:0.2,callback:actionDestroy,scope:this});}
return this;},onDestroy:function(){Ext.destroy(this.lnk,this.el);Ext.ux.form.SuperBoxSelectItem.superclass.onDestroy.call(this);}});

Ext.ns('Ext.ux.form');Ext.ux.form.MultiSelect=Ext.extend(Ext.form.Field,{ddReorder:false,appendOnly:false,width:100,height:100,displayField:0,valueField:1,allowBlank:true,minSelections:0,maxSelections:Number.MAX_VALUE,blankText:Ext.form.TextField.prototype.blankText,minSelectionsText:'Minimum {0} item(s) required',maxSelectionsText:'Maximum {0} item(s) allowed',delimiter:',',defaultAutoCreate:{tag:"div"},initComponent:function(){Ext.ux.form.MultiSelect.superclass.initComponent.call(this);if(Ext.isArray(this.store)){if(Ext.isArray(this.store[0])){this.store=new Ext.data.ArrayStore({fields:['value','text'],data:this.store});this.valueField='value';}else{this.store=new Ext.data.ArrayStore({fields:['text'],data:this.store,expandData:true});this.valueField='text';}
this.displayField='text';}else{this.store=Ext.StoreMgr.lookup(this.store);}
this.addEvents({'dblclick':true,'click':true,'change':true,'drop':true});},onRender:function(ct,position){Ext.ux.form.MultiSelect.superclass.onRender.call(this,ct,position);var fs=this.fs=new Ext.form.FieldSet({renderTo:this.el,title:this.legend,height:this.height,width:this.width,style:"padding:0;",cls:"ux-mselect",tbar:this.tbar,bodyStyle:'overflow: auto;'});this.view=new Ext.ListView({multiSelect:true,store:this.store,columns:[{header:'Value',width:1,dataIndex:this.displayField}],hideHeaders:true});fs.add(this.view);this.view.on('click',this.onViewClick,this);this.view.on('beforeclick',this.onViewBeforeClick,this);this.view.on('dblclick',this.onViewDblClick,this);this.hiddenName=this.name||Ext.id();var hiddenTag={tag:"input",type:"hidden",value:"",name:this.hiddenName};this.hiddenField=this.el.createChild(hiddenTag);this.hiddenField.dom.disabled=this.hiddenName!=this.name;fs.doLayout();},afterRender:function(){Ext.ux.form.MultiSelect.superclass.afterRender.call(this);if(this.ddReorder&&!this.dragGroup&&!this.dropGroup){this.dragGroup=this.dropGroup='MultiselectDD-'+Ext.id();}
if(this.draggable||this.dragGroup){this.dragZone=new Ext.ux.form.MultiSelect.DragZone(this,{ddGroup:this.dragGroup});}
if(this.droppable||this.dropGroup){this.dropZone=new Ext.ux.form.MultiSelect.DropZone(this,{ddGroup:this.dropGroup});}},onViewClick:function(vw,index,node,e){this.fireEvent('change',this,this.getValue(),this.hiddenField.dom.value);this.hiddenField.dom.value=this.getValue();this.fireEvent('click',this,e);this.validate();},onViewBeforeClick:function(vw,index,node,e){if(this.disabled){return false;}},onViewDblClick:function(vw,index,node,e){return this.fireEvent('dblclick',vw,index,node,e);},getValue:function(valueField){var returnArray=[];var selectionsArray=this.view.getSelectedIndexes();if(selectionsArray.length==0){return'';}
for(var i=0;i<selectionsArray.length;i++){returnArray.push(this.store.getAt(selectionsArray[i]).get((valueField!=null)?valueField:this.valueField));}
return returnArray.join(this.delimiter);},setValue:function(values){var index;var selections=[];this.view.clearSelections();this.hiddenField.dom.value='';if(!values||(values=='')){return;}
if(!Ext.isArray(values)){values=values.split(this.delimiter);}
for(var i=0;i<values.length;i++){index=this.view.store.indexOf(this.view.store.query(this.valueField,new RegExp('^'+values[i]+'$',"i")).itemAt(0));selections.push(index);}
this.view.select(selections);this.hiddenField.dom.value=this.getValue();this.validate();},reset:function(){this.setValue('');},getRawValue:function(valueField){var tmp=this.getValue(valueField);if(tmp.length){tmp=tmp.split(this.delimiter);}
else{tmp=[];}
return tmp;},setRawValue:function(values){setValue(values);},validateValue:function(value){if(value.length<1){if(this.allowBlank){this.clearInvalid();return true;}else{this.markInvalid(this.blankText);return false;}}
if(value.length<this.minSelections){this.markInvalid(String.format(this.minSelectionsText,this.minSelections));return false;}
if(value.length>this.maxSelections){this.markInvalid(String.format(this.maxSelectionsText,this.maxSelections));return false;}
return true;},disable:function(){this.disabled=true;this.hiddenField.dom.disabled=true;this.fs.disable();},enable:function(){this.disabled=false;this.hiddenField.dom.disabled=false;this.fs.enable();},destroy:function(){Ext.destroy(this.fs,this.dragZone,this.dropZone);Ext.ux.form.MultiSelect.superclass.destroy.call(this);}});Ext.reg('multiselect',Ext.ux.form.MultiSelect);Ext.ux.Multiselect=Ext.ux.form.MultiSelect;Ext.ux.form.MultiSelect.DragZone=function(ms,config){this.ms=ms;this.view=ms.view;var ddGroup=config.ddGroup||'MultiselectDD';var dd;if(Ext.isArray(ddGroup)){dd=ddGroup.shift();}else{dd=ddGroup;ddGroup=null;}
Ext.ux.form.MultiSelect.DragZone.superclass.constructor.call(this,this.ms.fs.body,{containerScroll:true,ddGroup:dd});this.setDraggable(ddGroup);};Ext.extend(Ext.ux.form.MultiSelect.DragZone,Ext.dd.DragZone,{onInitDrag:function(x,y){var el=Ext.get(this.dragData.ddel.cloneNode(true));this.proxy.update(el.dom);el.setWidth(el.child('em').getWidth());this.onStartDrag(x,y);return true;},collectSelection:function(data){data.repairXY=Ext.fly(this.view.getSelectedNodes()[0]).getXY();var i=0;this.view.store.each(function(rec){if(this.view.isSelected(i)){var n=this.view.getNode(i);var dragNode=n.cloneNode(true);dragNode.id=Ext.id();data.ddel.appendChild(dragNode);data.records.push(this.view.store.getAt(i));data.viewNodes.push(n);}
i++;},this);},onEndDrag:function(data,e){var d=Ext.get(this.dragData.ddel);if(d&&d.hasClass("multi-proxy")){d.remove();}},getDragData:function(e){var target=this.view.findItemFromChild(e.getTarget());if(target){if(!this.view.isSelected(target)&&!e.ctrlKey&&!e.shiftKey){this.view.select(target);this.ms.setValue(this.ms.getValue());}
if(this.view.getSelectionCount()==0||e.ctrlKey||e.shiftKey)return false;var dragData={sourceView:this.view,viewNodes:[],records:[]};if(this.view.getSelectionCount()==1){var i=this.view.getSelectedIndexes()[0];var n=this.view.getNode(i);dragData.viewNodes.push(dragData.ddel=n);dragData.records.push(this.view.store.getAt(i));dragData.repairXY=Ext.fly(n).getXY();}else{dragData.ddel=document.createElement('div');dragData.ddel.className='multi-proxy';this.collectSelection(dragData);}
return dragData;}
return false;},getRepairXY:function(e){return this.dragData.repairXY;},setDraggable:function(ddGroup){if(!ddGroup)return;if(Ext.isArray(ddGroup)){Ext.each(ddGroup,this.setDraggable,this);return;}
this.addToGroup(ddGroup);}});Ext.ux.form.MultiSelect.DropZone=function(ms,config){this.ms=ms;this.view=ms.view;var ddGroup=config.ddGroup||'MultiselectDD';var dd;if(Ext.isArray(ddGroup)){dd=ddGroup.shift();}else{dd=ddGroup;ddGroup=null;}
Ext.ux.form.MultiSelect.DropZone.superclass.constructor.call(this,this.ms.fs.body,{containerScroll:true,ddGroup:dd});this.setDroppable(ddGroup);};Ext.extend(Ext.ux.form.MultiSelect.DropZone,Ext.dd.DropZone,{getTargetFromEvent:function(e){var target=e.getTarget();return target;},getDropPoint:function(e,n,dd){if(n==this.ms.fs.body.dom){return"below";}
var t=Ext.lib.Dom.getY(n),b=t+n.offsetHeight;var c=t+(b-t)/2;var y=Ext.lib.Event.getPageY(e);if(y<=c){return"above";}else{return"below";}},isValidDropPoint:function(pt,n,data){if(!data.viewNodes||(data.viewNodes.length!=1)){return true;}
var d=data.viewNodes[0];if(d==n){return false;}
if((pt=="below")&&(n.nextSibling==d)){return false;}
if((pt=="above")&&(n.previousSibling==d)){return false;}
return true;},onNodeEnter:function(n,dd,e,data){return false;},onNodeOver:function(n,dd,e,data){var dragElClass=this.dropNotAllowed;var pt=this.getDropPoint(e,n,dd);if(this.isValidDropPoint(pt,n,data)){if(this.ms.appendOnly){return"x-tree-drop-ok-below";}
if(pt){var targetElClass;if(pt=="above"){dragElClass=n.previousSibling?"x-tree-drop-ok-between":"x-tree-drop-ok-above";targetElClass="x-view-drag-insert-above";}else{dragElClass=n.nextSibling?"x-tree-drop-ok-between":"x-tree-drop-ok-below";targetElClass="x-view-drag-insert-below";}
if(this.lastInsertClass!=targetElClass){Ext.fly(n).replaceClass(this.lastInsertClass,targetElClass);this.lastInsertClass=targetElClass;}}}
return dragElClass;},onNodeOut:function(n,dd,e,data){this.removeDropIndicators(n);},onNodeDrop:function(n,dd,e,data){if(this.ms.fireEvent("drop",this,n,dd,e,data)===false){return false;}
var pt=this.getDropPoint(e,n,dd);if(n!=this.ms.fs.body.dom)
n=this.view.findItemFromChild(n);var insertAt=(this.ms.appendOnly||(n==this.ms.fs.body.dom))?this.view.store.getCount():this.view.indexOf(n);if(pt=="below"){insertAt++;}
var dir=false;if(data.sourceView==this.view){if(pt=="below"){if(data.viewNodes[0]==n){data.viewNodes.shift();}}else{if(data.viewNodes[data.viewNodes.length-1]==n){data.viewNodes.pop();}}
if(!data.viewNodes.length){return false;}
if(insertAt>this.view.store.indexOf(data.records[0])){dir='down';insertAt--;}}
for(var i=0;i<data.records.length;i++){var r=data.records[i];if(data.sourceView){data.sourceView.store.remove(r);}
this.view.store.insert(dir=='down'?insertAt:insertAt++,r);var si=this.view.store.sortInfo;if(si){this.view.store.sort(si.field,si.direction);}}
return true;},removeDropIndicators:function(n){if(n){Ext.fly(n).removeClass(["x-view-drag-insert-above","x-view-drag-insert-left","x-view-drag-insert-right","x-view-drag-insert-below"]);this.lastInsertClass="_noclass";}},setDroppable:function(ddGroup){if(!ddGroup)return;if(Ext.isArray(ddGroup)){Ext.each(ddGroup,this.setDroppable,this);return;}
this.addToGroup(ddGroup);}});

Ext.ux.form.ItemSelector=Ext.extend(Ext.form.Field,{hideNavIcons:false,imagePath:"",iconUp:"up2.gif",iconDown:"down2.gif",iconLeft:"left2.gif",iconRight:"right2.gif",iconTop:"top2.gif",iconBottom:"bottom2.gif",drawUpIcon:true,drawDownIcon:true,drawLeftIcon:true,drawRightIcon:true,drawTopIcon:true,drawBotIcon:true,delimiter:',',bodyStyle:null,border:false,defaultAutoCreate:{tag:"div"},multiselects:null,initComponent:function(){Ext.ux.form.ItemSelector.superclass.initComponent.call(this);this.addEvents({'rowdblclick':true,'change':true});},onRender:function(ct,position){Ext.ux.form.ItemSelector.superclass.onRender.call(this,ct,position);var msConfig=[{legend:'Available',draggable:true,droppable:true,width:100,height:100},{legend:'Selected',droppable:true,draggable:true,width:100,height:100}];this.fromMultiselect=new Ext.ux.form.MultiSelect(Ext.applyIf(this.multiselects[0],msConfig[0]));this.fromMultiselect.on('dblclick',this.onRowDblClick,this);this.toMultiselect=new Ext.ux.form.MultiSelect(Ext.applyIf(this.multiselects[1],msConfig[1]));this.toMultiselect.on('dblclick',this.onRowDblClick,this);var p=new Ext.Panel({bodyStyle:this.bodyStyle,border:this.border,layout:"table",layoutConfig:{columns:3}});p.add(this.fromMultiselect);var icons=new Ext.Panel({header:false});p.add(icons);p.add(this.toMultiselect);p.render(this.el);icons.el.down('.'+icons.bwrapCls).remove();if(this.imagePath!=""&&this.imagePath.charAt(this.imagePath.length-1)!="/")
this.imagePath+="/";this.iconUp=this.imagePath+(this.iconUp||'up2.gif');this.iconDown=this.imagePath+(this.iconDown||'down2.gif');this.iconLeft=this.imagePath+(this.iconLeft||'left2.gif');this.iconRight=this.imagePath+(this.iconRight||'right2.gif');this.iconTop=this.imagePath+(this.iconTop||'top2.gif');this.iconBottom=this.imagePath+(this.iconBottom||'bottom2.gif');var el=icons.getEl();this.toTopIcon=el.createChild({tag:'img',src:this.iconTop,style:{cursor:'pointer',margin:'2px'}});el.createChild({tag:'br'});this.upIcon=el.createChild({tag:'img',src:this.iconUp,style:{cursor:'pointer',margin:'2px'}});el.createChild({tag:'br'});this.addIcon=el.createChild({tag:'img',src:this.iconRight,style:{cursor:'pointer',margin:'2px'}});el.createChild({tag:'br'});this.removeIcon=el.createChild({tag:'img',src:this.iconLeft,style:{cursor:'pointer',margin:'2px'}});el.createChild({tag:'br'});this.downIcon=el.createChild({tag:'img',src:this.iconDown,style:{cursor:'pointer',margin:'2px'}});el.createChild({tag:'br'});this.toBottomIcon=el.createChild({tag:'img',src:this.iconBottom,style:{cursor:'pointer',margin:'2px'}});this.toTopIcon.on('click',this.toTop,this);this.upIcon.on('click',this.up,this);this.downIcon.on('click',this.down,this);this.toBottomIcon.on('click',this.toBottom,this);this.addIcon.on('click',this.fromTo,this);this.removeIcon.on('click',this.toFrom,this);if(!this.drawUpIcon||this.hideNavIcons){this.upIcon.dom.style.display='none';}
if(!this.drawDownIcon||this.hideNavIcons){this.downIcon.dom.style.display='none';}
if(!this.drawLeftIcon||this.hideNavIcons){this.addIcon.dom.style.display='none';}
if(!this.drawRightIcon||this.hideNavIcons){this.removeIcon.dom.style.display='none';}
if(!this.drawTopIcon||this.hideNavIcons){this.toTopIcon.dom.style.display='none';}
if(!this.drawBotIcon||this.hideNavIcons){this.toBottomIcon.dom.style.display='none';}
var tb=p.body.first();this.el.setWidth(p.body.first().getWidth());p.body.removeClass();this.hiddenName=this.name;var hiddenTag={tag:"input",type:"hidden",value:"",name:this.name};this.hiddenField=this.el.createChild(hiddenTag);},doLayout:function(){if(this.rendered){this.fromMultiselect.fs.doLayout();this.toMultiselect.fs.doLayout();}},afterRender:function(){Ext.ux.form.ItemSelector.superclass.afterRender.call(this);this.toStore=this.toMultiselect.store;this.toStore.on('add',this.valueChanged,this);this.toStore.on('remove',this.valueChanged,this);this.toStore.on('load',this.valueChanged,this);this.valueChanged(this.toStore);},toTop:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){selectionsArray.sort();for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
selectionsArray=[];for(var i=records.length-1;i>-1;i--){record=records[i];this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.insert(0,record);selectionsArray.push(((records.length-1)-i));}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(selectionsArray);},toBottom:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){selectionsArray.sort();for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
selectionsArray=[];for(var i=0;i<records.length;i++){record=records[i];this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.add(record);selectionsArray.push((this.toMultiselect.view.store.getCount())-(records.length-i));}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(selectionsArray);},up:function(){var record=null;var selectionsArray=this.toMultiselect.view.getSelectedIndexes();selectionsArray.sort();var newSelectionsArray=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);if((selectionsArray[i]-1)>=0){this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.insert(selectionsArray[i]-1,record);newSelectionsArray.push(selectionsArray[i]-1);}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(newSelectionsArray);}},down:function(){var record=null;var selectionsArray=this.toMultiselect.view.getSelectedIndexes();selectionsArray.sort();selectionsArray.reverse();var newSelectionsArray=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);if((selectionsArray[i]+1)<this.toMultiselect.view.store.getCount()){this.toMultiselect.view.store.remove(record);this.toMultiselect.view.store.insert(selectionsArray[i]+1,record);newSelectionsArray.push(selectionsArray[i]+1);}}
this.toMultiselect.view.refresh();this.toMultiselect.view.select(newSelectionsArray);}},fromTo:function(){var selectionsArray=this.fromMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.fromMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
if(!this.allowDup)selectionsArray=[];for(var i=0;i<records.length;i++){record=records[i];if(this.allowDup){var x=new Ext.data.Record();record.id=x.id;delete x;this.toMultiselect.view.store.add(record);}else{this.fromMultiselect.view.store.remove(record);this.toMultiselect.view.store.add(record);selectionsArray.push((this.toMultiselect.view.store.getCount()-1));}}}
this.toMultiselect.view.refresh();this.fromMultiselect.view.refresh();var si=this.toMultiselect.store.sortInfo;if(si){this.toMultiselect.store.sort(si.field,si.direction);}
this.toMultiselect.view.select(selectionsArray);},toFrom:function(){var selectionsArray=this.toMultiselect.view.getSelectedIndexes();var records=[];if(selectionsArray.length>0){for(var i=0;i<selectionsArray.length;i++){record=this.toMultiselect.view.store.getAt(selectionsArray[i]);records.push(record);}
selectionsArray=[];for(var i=0;i<records.length;i++){record=records[i];this.toMultiselect.view.store.remove(record);if(!this.allowDup){this.fromMultiselect.view.store.add(record);selectionsArray.push((this.fromMultiselect.view.store.getCount()-1));}}}
this.fromMultiselect.view.refresh();this.toMultiselect.view.refresh();var si=this.fromMultiselect.store.sortInfo;if(si){this.fromMultiselect.store.sort(si.field,si.direction);}
this.fromMultiselect.view.select(selectionsArray);},valueChanged:function(store){var record=null;var values=[];for(var i=0;i<store.getCount();i++){record=store.getAt(i);values.push(record.get(this.toMultiselect.valueField));}
this.hiddenField.dom.value=values.join(this.delimiter);this.fireEvent('change',this,this.getValue(),this.hiddenField.dom.value);},getValue:function(){return this.hiddenField.dom.value;},onRowDblClick:function(vw,index,node,e){if(vw==this.toMultiselect.view){this.toFrom();}else if(vw==this.fromMultiselect.view){this.fromTo();}
return this.fireEvent('rowdblclick',vw,index,node,e);},reset:function(){range=this.toMultiselect.store.getRange();this.toMultiselect.store.removeAll();this.fromMultiselect.store.add(range);var si=this.fromMultiselect.store.sortInfo;if(si){this.fromMultiselect.store.sort(si.field,si.direction);}
this.valueChanged(this.toMultiselect.store);}});Ext.reg('itemselector',Ext.ux.form.ItemSelector);Ext.ux.ItemSelector=Ext.ux.form.ItemSelector;

Ext.namespace("Ext.ux");Ext.ux.NotificationMgr={positions:[]};Ext.ux.Notification=Ext.extend(Ext.Window,{initComponent:function(){Ext.apply(this,{iconCls:this.iconCls||'x-icon-information',cls:'x-notification',width:200,autoHeight:true,plain:false,draggable:false,bodyStyle:'text-align:center'});if(this.autoDestroy){this.task=new Ext.util.DelayedTask(this.hide,this);}else{this.closable=true;}
Ext.ux.Notification.superclass.initComponent.call(this);},setMessage:function(msg){this.body.update(msg);},setTitle:function(title,iconCls){Ext.ux.Notification.superclass.setTitle.call(this,title,iconCls||this.iconCls);},onRender:function(ct,position){Ext.ux.Notification.superclass.onRender.call(this,ct,position);},onDestroy:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);Ext.ux.Notification.superclass.onDestroy.call(this);},cancelHiding:function(){this.addClass('fixed');if(this.autoDestroy){this.task.cancel();}},afterShow:function(){Ext.ux.Notification.superclass.afterShow.call(this);Ext.fly(this.body.dom).on('click',this.cancelHiding,this);if(this.autoDestroy){this.task.delay(this.hideDelay||2000);}},animShow:function(){this.pos=0;while(Ext.ux.NotificationMgr.positions.indexOf(this.pos)>-1)
this.pos++;Ext.ux.NotificationMgr.positions.push(this.pos);this.setSize(200,100);this.el.alignTo(document,"br-br",[-20,-20-((this.getSize().height+10)*this.pos)]);this.el.slideIn('b',{duration:1,callback:this.afterShow,scope:this});},animHide:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);this.el.ghost("b",{duration:1,remove:true});},focus:Ext.emptyFn});

