/*
 * CrystalFramework 4.0
 * Copyright(c) 2009, Archimed SA.
 */


Ext.ns('Ext.ux');Ext.ns('Ext.ux.form');Ext.ux.AclField=Ext.extend(Ext.form.TextField,{cls:'x-hidden',applicationPath:'.',directoryBrowser:null,applicationGroup:null,onRender:function(ct,position){Ext.ux.AclField.superclass.onRender.call(this,ct,position);this.aclContainer=this.el.insertSibling({tag:'div'},'after');this.grid.render(this.aclContainer);},onDisable:function(){Ext.ux.AclField.superclass.onDisable.call(this);this.grid.disable();this.grid.selModel.lock();this.toolbar.disable();},onEnable:function(){Ext.ux.AclField.superclass.onEnable.call(this);this.grid.enable();this.grid.selModel.unlock();this.toolbar.enable();},onResize:function(w,h){Ext.ux.AclField.superclass.onResize.apply(this,arguments);this.grid.setWidth(w);},renderIcon:function(data,cell,record,rowIndex,columnIndex,store){switch(data){case 0:cell.css="x-icon-users";break;case 1:cell.css="x-icon-groups";break;case 2:cell.css="x-icon-computers";break;case 3:cell.css="x-icon-networks";break;case 5:cell.css="x-icon-advanced-application-group";break;case 6:cell.css="x-icon-builtin-application-group";break;case 7:cell.css="x-icon-role-application-group";break;}},objectClassToSecurityObjectType:function(value){switch(value){case 2:return 0;case 4:return 1;case 8:return 2;case 16:return 3;}},groupTypeToSecurityObjectType:function(value){switch(value){case 1:return 5;case 2:case 4:case 8:return 6;case 16:return 7;}},windowApplicationGroupConfig:{},windowDirectoryBrowserConfig:{},menuConfig:{},toolbarConfig:{},initComponent:function(){Ext.ux.AclField.superclass.initComponent.call(this);this.addEvents('viewready','gridrender');this.applicationGroupWindow=new Ext.Window(Ext.applyIf({id:this.id+'-application-group',layout:'fit',cls:'x-window-acl',closeAction:'hide',height:500,width:500,modal:true,buttons:[{text:this.windowApplicationGroupConfig.submitButtonText,handler:function(){if(this.applicationGroup){this.setResults(1,this.applicationGroup.getSelectedGroups());this.applicationGroupWindow.hide();}},scope:this},{text:this.windowApplicationGroupConfig.eraseButtonText,handler:function(){if(this.applicationGroup){this.applicationGroup.resultsStore.removeAll();}},scope:this},{text:this.windowApplicationGroupConfig.cancelButtonText,handler:function(){this.applicationGroupWindow.hide();},scope:this}],items:[{xtype:'iframepanel',loadMask:{msg:this.windowApplicationGroupConfig.loadMsg},frameConfig:{id:this.id+'application-group-iframe'},defaultSrc:'applicationgroup.aspx?'+Ext.urlEncode(this.windowApplicationGroupConfig.baseParams),fitToParent:true,border:false}]},this.windowApplicationGroupConfig));var directoryBrowserButton=[];directoryBrowserButton.push({text:this.windowDirectoryBrowserConfig.submitButtonText,handler:function(){if(this.directoryBrowser){this.setResults(0,this.directoryBrowser.getSelectedObjects());this.directoryBrowserWindow.hide();}},scope:this});if(!this.windowDirectoryBrowserConfig.singleSelect)
directoryBrowserButton.push({text:this.windowDirectoryBrowserConfig.eraseButtonText,handler:function(){if(this.directoryBrowser){if(this.directoryBrowser.singleSelect)
this.currentSelect=null;else
this.directoryBrowser.resultsStore.removeAll();}},scope:this});directoryBrowserButton.push({text:this.windowDirectoryBrowserConfig.cancelButtonText,handler:function(){this.directoryBrowserWindow.hide();},scope:this});this.directoryBrowserWindow=new Ext.Window(Ext.applyIf({id:this.id+'-directory-browser',layout:'fit',cls:'x-window-acl',modal:true,height:500,width:500,closeAction:'hide',buttons:directoryBrowserButton,items:[{xtype:'iframepanel',loadMask:{msg:this.windowDirectoryBrowserConfig.loadMsg},frameConfig:{id:this.id+'-directory-browser-iframe'},defaultSrc:'directorybrowser.aspx?'+Ext.urlEncode(this.windowDirectoryBrowserConfig.baseParams),fitToParent:true,border:false}]},this.windowDirectoryBrowserConfig));this.menu=new Ext.menu.Menu({id:this.id+'-menu',allowOtherMenus:true,items:[{id:this.id+'menu-directory-browser',text:this.menuConfig.directoryBrowserText,iconCls:'x-icon-users',handler:this.launchDirectoryBrowser,scope:this},{id:this.id+'menu-application-group',text:this.menuConfig.applicationGroupText,iconCls:'x-icon-application-group',handler:this.launchApplicationGroup,scope:this}]});this.toolbar=this.readOnly?null:new Ext.Toolbar({id:this.id+'-toolbar',items:['->',{id:this.id+'toolbar-add',iconCls:'x-toolbar-btn-icon-add',text:this.toolbarConfig.addButtonText,menu:this.menu},{id:this.id+'toolbar-remove',disabled:true,iconCls:'x-toolbar-btn-icon-remove',text:this.toolbarConfig.removeButtonText,handler:this.removeSelectedObject,scope:this}]});this.store=new Ext.data.Store({storeId:this.id+'-store',sortInfo:{field:'Name',dir:'ASC'},reader:new Ext.data.JsonReader({id:'UID',root:'list'},Ext.data.Record.create([{name:'SecurityObjectType',type:'int'},{name:'Name',type:'string'},{name:'DisplayName',type:'string'},{name:'UID',type:'string'},{name:'Value',type:'string'}])),listeners:{load:function(){this.updateValue();this.grid.hideMask();},scope:this}});this.grid=new Ext.grid.GridPanel({cls:'x-form-acl',store:this.store,autoExpandColumn:'name',id:this.id+'-grid',maskDisabled:false,height:this.height||200,hideHeaders:true,loadMask:{msg:this.loadingMessage},cm:new Ext.grid.ColumnModel([{dataIndex:'SecurityObjectType',fixed:true,hideable:false,id:'objectClass',menuDisabled:true,renderer:this.renderIcon,sortable:false,width:30},{dataIndex:'Name',id:'name',sortable:true}]),sm:new Ext.grid.RowSelectionModel({singleSelect:true,listeners:{rowselect:function(selModel,index){if(this.toolbar){this.toolbar.items.get(2).enable();}
this.selectedRowIndex=index;},scope:this}}),viewConfig:{afterRender:Ext.grid.GridView.prototype.afterRender.createSequence(function(){this.fireEvent('viewready',this);},this)},bbar:this.toolbar,plugins:[new Ext.plugins.ContainerMask({msg:this.loadingText,masked:false,msgClass:'x-mask-loading'})],listeners:{render:function(){this.fireEvent('gridrender',this);},scope:this}});this.directoryBrowserWindow.addListener({show:function(){if(this.directoryBrowser){this.directoryBrowser.grid.selModel.clearSelections();this.directoryBrowser.searchCombo.reset();if(this.directoryBrowser.singleSelect)
this.currentSelect=null;else
this.directoryBrowser.resultsStore.removeAll();this.directoryBrowser.objectClassCombo.selectAll();var objectClass=this.directoryBrowser.getObjectClass()
if(this.directoryBrowser.store.baseParams.objectClass!=objectClass||this.directoryBrowser.store.baseParams.filter!=''){this.directoryBrowser.store.baseParams.objectClass=objectClass;this.directoryBrowser.store.baseParams.filter='';this.directoryBrowser.store.reload();}
this.directoryBrowser.searchCombo.focus.defer(this.directoryBrowser.searchCombo,100);}},scope:this});this.directoryBrowserWindow.items.get(0).on({documentloaded:function(){this.directoryBrowser=this.directoryBrowserWindow.items.get(0).getFrameWindow().directoryBrowser;if(this.directoryBrowser.singleSelect&&this.windowDirectoryBrowserConfig.callbackOnDblClick){if(this.directoryBrowser.grid){this.directoryBrowser.grid.on({rowdblclick:this.windowDirectoryBrowserConfig.callbackOnDblClick,scope:this});}
else{this.directoryBrowser.on('init',function(){this.directoryBrowser.grid.on({rowdblclick:this.windowDirectoryBrowserConfig.callbackOnDblClick,scope:this});},this);}}},scope:this});this.applicationGroupWindow.addListener({show:function(){if(this.applicationGroup){this.applicationGroup.grid.selModel.clearSelections();this.applicationGroup.searchCombo.reset();this.applicationGroup.resultsStore.removeAll();if(this.applicationGroup.store.baseParams.filter!=''){this.applicationGroup.store.baseParams.filter='';this.applicationGroup.store.reload();}}},scope:this});this.applicationGroupWindow.items.get(0).on({documentloaded:function(){this.applicationGroup=this.applicationGroupWindow.items.get(0).getFrameWindow().applicationGroup;},scope:this});},removeSelectedObject:function(){var record=this.grid.getSelectionModel().getSelected();if(this.grid.getSelectionModel().hasNext()){this.grid.getSelectionModel().selectNext();this.store.remove(record);}
else{this.store.remove(record);this.grid.getSelectionModel().selectLastRow();}
this.updateValue();if(!this.grid.getSelectionModel().hasSelection()){if(this.toolbar){this.toolbar.items.get(2).disable();}}},getValue:function(){return this.value;},getJsonData:function(){var json={list:[]};this.store.each(function(record){json.list.push(record.json);});return json;},updateValue:function(){var objects=this.getJsonData().list;var newValue="";for(var i=0;i<objects.length;i++){if(newValue.length>0){newValue+='|';}
newValue+=objects[i].Value;}
this.fireEvent('change',this,newValue,this.value);this.value=newValue;if(this.rendered){this.el.dom.value=newValue;}},setResults:function(objectType,results){var json=this.getJsonData();for(var i=0;i<results.length;i++){if(objectType==0){index=this.store.findBy(function(record,id){return(id==results[i].UID);});if(index==-1){json.list.push({DisplayName:results[i].DisplayName,Name:results[i].Name,SecurityObjectType:this.objectClassToSecurityObjectType(results[i].Class),UID:results[i].UID,Value:results[i].CrystalPath});}}
else if(objectType==1){index=this.store.findBy(function(record,id){return(id==results[i].UID);});if(index==-1){json.list.push({DisplayName:results[i].Description,Name:results[i].Name,SecurityObjectType:this.groupTypeToSecurityObjectType(results[i].GroupType),UID:results[i].UID,Value:results[i].CrystalPath});}}}
this.store.loadData(json);},launchDirectoryBrowser:function(){this.directoryBrowserWindow.show();},launchApplicationGroup:function(){this.applicationGroupWindow.show();},loadData:function(data){this.store.loadData(Ext.decode(data));},initValue:function(){if(this.value&&this.value.length>0){this.setValue(this.value);}},setValue:function(v){if(v===''){this.value=v;if(this.rendered){this.el.dom.value=v;}
this.store.loadData({list:[]});return;}
if(typeof(v)=='string'){this.grid.showMask();Ext.Ajax.request({url:'aclloaderservice.svc/load',method:'GET',params:{value:v},scope:this,success:function(response,options){var result=Ext.decode(response.responseText);if(result.success){this.store.loadData(result.d);}
else{Ext.MessageBox.show({title:this.loadErrorTitle,msg:result.errors[0].msg,modal:true,icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK});}}});}}});Ext.reg('aclfield',Ext.ux.AclField);Ext.ux.AclItem=function(config){Ext.ux.AclItem.superclass.constructor.call(this,new Ext.ux.AclField(config),config);this.aclField=this.component;this.aclField.on('render',function(acl){acl.container.addClass("x-menu-acl-item");});this.relayEvents(this.aclField,['change','gridrender']);};Ext.extend(Ext.ux.AclItem,Ext.menu.Adapter,{hideOnClick:false,getValue:function(){if(this.aclField){return this.aclField.getValue();}},setValue:function(v){if(this.aclField){this.aclField.setValue(v);}},loadData:function(json){if(this.aclField){this.aclField.loadData(json);}}});Ext.ux.AclMenu=function(config){Ext.ux.AclMenu.superclass.constructor.call(this,config);this.aclItem=new Ext.ux.AclItem(config);this.add(this.aclItem);this.relayEvents(this.aclItem,['change','gridrender']);};Ext.extend(Ext.ux.AclMenu,Ext.menu.Menu,{cls:'x-acl-menu',allowOtherMenus:true,createEl:function(){return new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl||document.body,zindex:8000});},getValue:function(){if(this.aclItem){return this.aclItem.getValue();}
return'';},setValue:function(v){if(this.aclItem){this.aclItem.setValue(v);}},loadData:function(json){if(this.aclItem){this.aclItem.loadData(json);}}});Ext.ux.ExtendedAclField=Ext.extend(Ext.ux.AclField,{advancedMode:false,allowAdvancedMode:true,displayDeniedColumn:true,crystalSecurityIdentifierRights:[],onDisable:function(){Ext.ux.ExtendedAclField.superclass.onDisable.call(this);this.rightsGrid.disable();},onEnable:function(){Ext.ux.ExtendedAclField.superclass.onEnable.call(this);},initComponent:function(){Ext.ux.ExtendedAclField.superclass.initComponent.call(this);this.addEvents('rightsload','rightsviewready');this.store.reader=new Ext.data.JsonReader({id:'UID',root:'rights'},Ext.data.Record.create([{name:'SecurityObjectType',type:'int',mapping:'crystalIdentifier.SecurityObjectType'},{name:'Name',type:'string',mapping:'crystalIdentifier.Name'},{name:'DisplayName',type:'string',mapping:'crystalIdentifier.DisplayName'},{name:'UID',type:'string',mapping:'crystalIdentifier.UID'},{name:'Value',type:'string',mapping:'crystalIdentifier.Value'},{name:'Right',type:'int',mapping:'value'}]));this.store.on({update:function(store,record,operation){this.updateValue();},load:function(){if(this.grid.viewReady===true){this.grid.selModel.selectFirstRow();}
else{this.on('viewready',function(){this.grid.selModel.selectFirstRow();},this);}},scope:this});this.rightsStore=new Ext.data.Store({storeId:this.id+'-rights-store',reader:new Ext.data.JsonReader({root:'d.rights'},Ext.data.Record.create([{name:'name',type:'string'},{name:'value',type:'int'},{name:'granted',type:'bool'},{name:'denied',type:'bool'}])),proxy:new Ext.data.HttpProxy({url:'aclloaderservice.svc/getrights',method:'GET'}),autoLoad:true,listeners:{load:function(store,records,options){if(this.advancedMode){this.advancedRights=store.reader.jsonData;}
else{this.rights=store.reader.jsonData;}
this.rightsLoaded=true;this.fireEvent('rightsload',this,store);},beforeload:function(store,options){var rightsChanged=(store.baseParams.rights!=this.enabledRights.join('|')||store.baseParams.advancedMode!=this.advancedMode);if(rightsChanged){store.baseParams.advancedMode=this.advancedMode;store.baseParams.rights=this.enabledRights.join('|');}
else{if(this.advancedMode){store.loadData(this.advancedRights);}
else{store.loadData(this.rights);}
return false;}},scope:this}});var grantedColumn=new Ext.plugins.grid.CheckColumn({dataIndex:'granted',id:'granted',header:this.grantedColumnHeader,menuDisabled:true,sortable:false,width:60});var deniedColumn=new Ext.plugins.grid.CheckColumn({dataIndex:'denied',id:'denied',header:this.deniedColumnHeader,menuDisabled:true,sortable:false,hidden:!this.displayDeniedColumn,width:60});this.rightsGrid=new Ext.grid.EditorGridPanel({cls:'x-form-acl-rights',store:this.rightsStore,autoExpandColumn:'name',id:this.id+'-rights-grid',height:this.rightsGridHeight||200,hideHeaders:false,enableColumnMove:false,enableColumnResize:false,disabled:true,maskDisabled:false,plugins:[grantedColumn,deniedColumn],viewConfig:{afterRender:Ext.grid.GridView.prototype.afterRender.createSequence(function(){this.rightsViewReady=true;this.fireEvent('rightsviewready',this);},this)},cm:new Ext.grid.ColumnModel([{dataIndex:'name',id:'name',header:this.rightsColumnHeader,menuDisabled:true,sortable:false,renderer:this.renderRight.createDelegate(this),editable:false},grantedColumn,deniedColumn]),disableSelection:true,listeners:{afteredit:function(o){o.record.set(o.field=='granted'?'denied':'granted',!o.value);var rightValue=o.record.get('value');o.grid.store.each(function(record){var recordValue=record.get('value');if(!o.value&&(recordValue&rightValue)==rightValue){record.set(o.field,o.value);record.set(o.field=='granted'?'denied':'granted',!o.value);}
else if((recordValue&rightValue)==recordValue){record.set(o.field,o.value);record.set(o.field=='granted'?'denied':'granted',!o.value);}});if(this.selectedObject){var rightValue=0;o.grid.store.each(function(record){if(record.get('granted')){rightValue|=record.get('value');}});this.selectedObject.set('Right',rightValue);o.grid.store.each(function(record){var v=record.get('value');var granted=((v&rightValue)==v);record.set('granted',granted);},this);}},scope:this}});this.advancedModeCheckBox=new Ext.form.Checkbox({id:this.id+'-rights-chk',hidden:!this.allowAdvancedMode,boxLabel:this.advancedModeLabel,listeners:{check:function(chk,checked){this.advancedMode=checked;this.reloadRights();},scope:this}});this.grid.selModel.on('rowselect',function(sm,index,rec){if(this.rightsViewReady===true){this.onRowSelect(sm,index,rec);}
else{this.on('rightsviewready',function(){this.onRowSelect(sm,index,rec);},this);}},this);this.grid.selModel.on('selectionchange',function(){if(this.rightsViewReady===true){this.onSelectionChange.apply(this,arguments);}
else{this.on('rightsviewready',function(){this.onSelectionChange.apply(this,arguments);},this);}},this);},onRowSelect:function(sm,index,rec){this.rightsGrid.enable();this.selectedObject=rec;var rightValue=rec.get('Right');var newRightValue=0;this.rightsStore.each(function(record){var v=record.get('value');var granted=((v&rightValue)==v);record.set('granted',granted);if(granted){newRightValue|=v;}},this);if(!rec.get('InitialRight')){this.selectedObject.set('InitialRight',newRightValue);}
this.selectedObject.set('Right',newRightValue);},onSelectionChange:function(sm){if(!sm.hasSelection()){this.clearRights();this.rightsGrid.disable();}},getJsonData:function(){var json={rights:[]};this.store.each(function(record){json.rights.push({initialValue:record.get('InitialRight'),value:record.get('Right'),crystalIdentifier:record.json.crystalIdentifier});});return json;},updateValue:function(){var newValue=this.getJsonData().rights;this.fireEvent('change',this,newValue,this.value);this.value=newValue;if(this.rendered){this.el.dom.value=newValue;}},setResults:function(objectType,results){var json=this.getJsonData();for(var i=0;i<results.length;i++){if(objectType==0){index=this.store.findBy(function(record,id){return(id==results[i].UID);});if(index==-1){json.rights.push({value:0,crystalIdentifier:{DisplayName:results[i].DisplayName,Name:results[i].Name,SecurityObjectType:this.objectClassToSecurityObjectType(results[i].Class),UID:results[i].UID,Value:results[i].CrystalPath}});}}
else if(objectType==1){index=this.store.findBy(function(record,id){return(id==results[i].UID);});if(index==-1){json.rights.push({value:0,crystalIdentifier:{DisplayName:results[i].Description,Name:results[i].Name,SecurityObjectType:this.groupTypeToSecurityObjectType(results[i].GroupType),UID:results[i].UID,Value:results[i].CrystalPath}});}}}
this.store.loadData(json);},setRightLabel:function(right,label){for(var i=0;i<this.rightsLabel.length;i++){var r=this.rightsLabel[i];if(r.value==right){r.label=label;break;}}},setRightDescription:function(right,description){for(var i=0;i<this.rightsLabel.length;i++){var r=this.rightsLabel[i];if(r.value==right){r.tooltip=description;break;}}},renderRight:function(data,cell,record,rowIndex,columnIndex,store){for(var i=0;i<this.rightsLabel.length;i++){var r=this.rightsLabel[i];if(r.value==record.get('name')){var s=(r.label!=''?r.label:data);if(Ext.isString(r.tooltip)&&r.tooltip!='')
cell.attr='ext:qtip="'+r.tooltip.replace(/"/gi,'\'\'')+'"';return s;}}
return data;},clearRights:function(){this.rightsStore.each(function(record){record.set('granted',false);record.set('denied',false);},this);},reloadRights:function(rights){var rightsChanged=false;if(Ext.isArray(rights)&&(rights.length==this.enabledRights.length)){for(var r=0;r<rights.length;r++){if(this.enabledRights.indexOf(rights[r])==-1){rightsChanged=true;break;}}}
else{rightsChanged=true;}
if(rightsChanged)this.enabledRights=rights;this.rightsStore.reload();},getRightRecord:function(rightValue){var r;var index=this.rightsStore.findBy(function(rec,id){return(rec.get('value')==rightValue);});if(index>-1){r=this.rightsStore.getAt(index);}
return r;},onRender:function(ct,position){Ext.ux.ExtendedAclField.superclass.onRender.call(this,ct,position);this.rightsGrid.render(this.aclContainer);this.advancedModeCheckBox.render(this.aclContainer);},onResize:function(w,h){Ext.ux.ExtendedAclField.superclass.onResize.apply(this,arguments);this.rightsGrid.setWidth(w);}});Ext.reg('aclfieldex',Ext.ux.ExtendedAclField);Ext.ux.form.AclEditorField=Ext.extend(Ext.form.TriggerField,{triggerClass:'x-form-acl-trigger',readOnly:true,initComponent:function(){Ext.ux.form.AclEditorField.superclass.initComponent.call(this);this.addEvents('aclchange');},onTriggerClick:function(e){if(this.aclMenu==null){this.aclMenu=new Ext.ux.AclMenu(this.aclConfig);this.aclMenu.on({change:function(acl,newValue,oldValue){this.value=newValue;this.fireEvent('aclchange',acl.getJsonData(),newValue);},hide:function(acl){if(acl.aclItem.aclField.directoryBrowserWindow.isVisible()||acl.aclItem.aclField.applicationGroupWindow.isVisible()){acl.show(this.el,"tl-bl?");}},show:function(menu){if(this.securityAccessJsonData){menu.aclItem.aclField.loadData(this.securityAccessJsonData);this.securityAccessJsonData=null;}},scope:this});}
if(this.value!==undefined){this.aclMenu.setValue(this.value);}
this.aclMenu.show(this.el,"tl-bl?");},setValue:function(v){},validateBlur:function(){return!this.aclMenu||!this.aclMenu.isVisible();},getValue:function(){},loadData:function(json){if(this.aclMenu){this.aclMenu.loadData(json);}}});Ext.ns('Ext.ux.grid');Ext.ux.grid.AclGrid=Ext.extend(Ext.grid.GridPanel,{renderIcon:Ext.ux.AclField.prototype.renderIcon,objectClassToSecurityObjectType:Ext.ux.AclField.prototype.objectClassToSecurityObjectType,groupTypeToSecurityObjectType:Ext.ux.AclField.prototype.groupTypeToSecurityObjectType,cls:'x-form-acl-grid',windowApplicationGroupConfig:{},windowDirectoryBrowserConfig:{},menuConfig:{},toolbarConfig:{},removeSelectedObject:function(){var record=this.getSelectionModel().getSelected();if(this.getSelectionModel().hasNext()){this.getSelectionModel().selectNext();this.store.remove(record);}
else{this.store.remove(record);this.getSelectionModel().selectLastRow();}
this.updateValue();if(!this.getSelectionModel().hasSelection()){if(this.toolbar){this.toolbar.items.get(2).disable();}}},getJsonData:Ext.ux.AclField.prototype.getJsonData,updateValue:function(){var objects=this.getJsonData().list;var newValue="";for(var i=0;i<objects.length;i++){if(newValue.length>0){newValue+='|';}
newValue+=objects[i].Value;}
this.value=newValue;},setResults:Ext.ux.AclField.prototype.setResults,launchDirectoryBrowser:Ext.ux.AclField.prototype.launchDirectoryBrowser,launchApplicationGroup:Ext.ux.AclField.prototype.launchApplicationGroup,loadData:Ext.ux.AclField.prototype.loadData,onRender:function(ct,position){Ext.ux.grid.AclGrid.superclass.onRender.call(this,ct,position);this.initValue();},initValue:function(){if(this.value&&this.value.length>0){this.setValue(this.value);}},getValue:function(){return this.value;},setValue:function(v){if(v===''){this.value=v;this.store.loadData({list:[]});return;}
if(typeof(v)=='string'){this.el.mask(this.loadingMessage,'x-mask-loading');Ext.Ajax.request({url:'aclloaderservice.svc/load',method:'GET',params:{value:v},scope:this,success:function(response,options){var result=Ext.decode(response.responseText);if(result.success){this.store.loadData(result.d);}
else{Ext.MessageBox.show({title:this.loadErrorTitle,msg:result.errors[0].msg,modal:true,icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK});}}});}},initComponent:function(){this.store=new Ext.data.Store({sortInfo:{field:'Name',dir:'ASC'},reader:new Ext.data.JsonReader({id:'UID',root:'list'},Ext.data.Record.create([{name:'SecurityObjectType',type:'int'},{name:'Name',type:'string'},{name:'DisplayName',type:'string'},{name:'UID',type:'string'},{name:'Value',type:'string'}])),listeners:{load:this.onLoad,scope:this}});this.cm=new Ext.grid.ColumnModel([{dataIndex:'SecurityObjectType',fixed:true,hideable:false,id:'objectClass',menuDisabled:true,renderer:this.renderIcon,sortable:false,width:30},{dataIndex:'Name',id:'name',sortable:true}]);this.sm=new Ext.grid.RowSelectionModel({singleSelect:true,listeners:{rowselect:this.onRowSelect,scope:this}});this.menu=new Ext.menu.Menu({id:this.id+'-menu',allowOtherMenus:true,items:[{id:this.id+'menu-directory-browser',text:this.menuConfig.directoryBrowserText,iconCls:'x-icon-users',handler:this.launchDirectoryBrowser,scope:this},{id:this.id+'menu-application-group',text:this.menuConfig.applicationGroupText,iconCls:'x-icon-application-group',handler:this.launchApplicationGroup,scope:this}]});this.bbar=this.toolbar=this.readOnly?null:new Ext.Toolbar({id:this.id+'-toolbar',items:['->',{id:this.id+'toolbar-add',iconCls:'x-toolbar-btn-icon-add',text:this.toolbarConfig.addButtonText,menu:this.menu},{id:this.id+'toolbar-remove',disabled:true,iconCls:'x-toolbar-btn-icon-remove',text:this.toolbarConfig.removeButtonText,handler:this.removeSelectedObject,scope:this}]});Ext.ux.grid.AclGrid.superclass.initComponent.call(this);this.applicationGroupWindow=new Ext.Window(Ext.applyIf({id:this.id+'-application-group',layout:'fit',cls:'x-window-acl',closeAction:'hide',height:500,width:500,modal:true,buttons:[{text:this.windowApplicationGroupConfig.submitButtonText,handler:function(){if(this.applicationGroup){this.setResults(1,this.applicationGroup.getSelectedGroups());this.applicationGroupWindow.hide();}},scope:this},{text:this.windowApplicationGroupConfig.eraseButtonText,handler:function(){if(this.applicationGroup){this.applicationGroup.resultsStore.removeAll();}},scope:this},{text:this.windowApplicationGroupConfig.cancelButtonText,handler:function(){this.applicationGroupWindow.hide();},scope:this}],items:[{xtype:'iframepanel',loadMask:{msg:this.windowApplicationGroupConfig.loadMsg},frameConfig:{id:this.id+'application-group-iframe'},defaultSrc:'applicationgroup.aspx?'+Ext.urlEncode(this.windowApplicationGroupConfig.baseParams),fitToParent:true,border:false}]},this.windowApplicationGroupConfig));this.directoryBrowserWindow=new Ext.Window(Ext.applyIf({id:this.id+'-directory-browser',layout:'fit',cls:'x-window-acl',modal:true,height:500,width:500,closeAction:'hide',buttons:[{text:this.windowDirectoryBrowserConfig.submitButtonText,handler:function(){if(this.directoryBrowser){this.setResults(0,this.directoryBrowser.getSelectedObjects());this.directoryBrowserWindow.hide();}},scope:this},{text:this.windowDirectoryBrowserConfig.eraseButtonText,handler:function(){if(this.directoryBrowser){if(this.directoryBrowser.singleSelect)
this.currentSelect=null;else
this.directoryBrowser.resultsStore.removeAll();}},scope:this},{text:this.windowDirectoryBrowserConfig.cancelButtonText,handler:function(){this.directoryBrowserWindow.hide();},scope:this}],items:[{xtype:'iframepanel',loadMask:{msg:this.windowDirectoryBrowserConfig.loadMsg},frameConfig:{id:this.id+'-directory-browser-iframe'},defaultSrc:'directorybrowser.aspx?'+Ext.urlEncode(this.windowDirectoryBrowserConfig.baseParams),fitToParent:true,border:false}]},this.windowDirectoryBrowserConfig));this.directoryBrowserWindow.addListener({show:function(){if(this.directoryBrowser){this.directoryBrowser.searchCombo.reset();if(this.directoryBrowser.singleSelect)
this.currentSelect=null;else
this.directoryBrowser.resultsStore.removeAll();this.directoryBrowser.store.reload();}},scope:this});this.directoryBrowserWindow.items.get(0).on({documentloaded:function(){this.directoryBrowser=this.directoryBrowserWindow.items.get(0).getFrameWindow().directoryBrowser;},scope:this});this.applicationGroupWindow.addListener({show:function(){if(this.applicationGroup){this.applicationGroup.searchCombo.reset();this.applicationGroup.resultsStore.removeAll();this.applicationGroup.store.reload();}},scope:this});this.applicationGroupWindow.items.get(0).on({documentloaded:function(){this.applicationGroup=this.applicationGroupWindow.items.get(0).getFrameWindow().applicationGroup;},scope:this});},onLoad:function(){this.updateValue();this.el.unmask();},onRowSelect:function(selModel,index){if(this.toolbar){this.toolbar.items.get(2).enable();}
this.selectedRowIndex=index;}});Ext.reg('aclgrid',Ext.ux.grid.AclGrid);Ext.ux.grid.AclEditor=function(config){var field=Ext.ux.form.AclEditorField(config);Ext.ux.grid.AclEditor.superclass.constructor.call(this,field,config);}
Ext.extend(Ext.ux.grid.AclEditor,Ext.grid.GridEditor,{triggerClass:'x-form-acl-trigger',readOnly:true,initComponent:function(){Ext.ux.AclEditor.superclass.initComponent.call(this);this.addEvents('aclchange');},onTriggerClick:function(e){if(this.aclMenu==null){this.aclMenu=new Ext.ux.AclMenu(this.aclConfig);this.aclMenu.on({change:function(acl,newValue,oldValue){this.value=newValue;this.fireEvent('aclchange',acl.getJsonData(),newValue);},hide:function(acl){if(acl.aclItem.aclField.directoryBrowserWindow.isVisible()||acl.aclItem.aclField.applicationGroupWindow.isVisible()){acl.show(this.el,"tl-bl?");}},show:function(menu){if(this.securityAccessJsonData){menu.aclItem.aclField.loadData(this.securityAccessJsonData);this.securityAccessJsonData=null;}},scope:this});}
if(this.value!==undefined){this.aclMenu.setValue(this.value);}
this.aclMenu.show(this.el,"tl-bl?");},setValue:function(v){},validateBlur:function(){return!this.aclMenu||!this.aclMenu.isVisible();},getValue:function(){},loadData:function(json){if(this.aclMenu){this.aclMenu.loadData(json);}}});Ext.ux.grid.AclColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id();}
this.renderer=this.renderer.createDelegate(this);this.aclConfig=config.aclConfig;};Ext.ux.grid.AclColumn.prototype={init:function(grid){this.grid=grid;this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);},this);},onMouseDown:function(e,t){if(this.grid.disabled)return;if(t.className&&t.className.indexOf('x-grid3-acl-'+this.id)!=-1){e.stopEvent();var rowIndex=this.grid.getView().findRowIndex(t);var colIndex=this.grid.colModel.getIndexById(this.id);var record=this.grid.store.getAt(rowIndex);var startValue=record.data[this.dataIndex];var o={grid:this.grid,record:record,field:this.dataIndex,value:startValue,row:rowIndex,column:colIndex,cancel:false};if(this.grid.fireEvent("beforeedit",o)!==false&&!o.cancel){this.aclMenu=new Ext.ux.AclMenu(this.aclConfig);this.aclMenu.setValue(startValue);this.aclMenu.on('hide',function(aclMenu){if(aclMenu.aclItem.aclField.directoryBrowserWindow.isVisible()||aclMenu.aclItem.aclField.applicationGroupWindow.isVisible()){aclMenu.show(this.grid.view.getCell(rowIndex,colIndex).firstChild,"br-tr?");}
else{var e={grid:this.grid,record:record,field:this.dataIndex,originalValue:startValue,value:aclMenu.getValue(),row:rowIndex,column:colIndex,cancel:false};if(this.grid.fireEvent("validateedit",e)!==false&&!e.cancel){e.record.set(e.field,e.value);delete e.cancel;this.grid.fireEvent("afteredit",e);}}},this);this.aclMenu.show(this.grid.view.getCell(rowIndex,colIndex).firstChild,"br-tr?");}}},renderer:function(v,p,record){p.css+=' x-grid3-acl-col-td';return'<div class="x-grid3-acl-col x-grid3-acl-'+this.id+'">&#160;</div>';}};

Ext.namespace('Ext.ux.form');if(typeof Ext.isIE8!='boolean'){Ext.isIE8=Ext.isIE&&navigator.userAgent.toLowerCase().indexOf("msie 8")>-1;}
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,BROWSERS_OFFSETS:{Ext2:{IE8:{left:-8,top:-16,width:16,height:22},IE:{left:-8,top:-3,width:16,height:6},Opera:{left:-8,top:-3,width:-18,height:-1},Gecko:{left:-8,top:-6,width:16,height:10},Safari:{left:-4,top:-2,width:6,height:6}},Ext3:{IE8:{left:-7,width:10},IE:{left:-3,width:6},Gecko:{width:11}}},isExt2x:Ext.version.match(/^2\./),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);if(this.isExt2x){this.buttonCt=this.el.child('.x-btn-center em');}else{this.buttonCt=this.el.child('.x-btn-mc em');}
this.buttonCt.position('relative');var styleCfg={position:'absolute',overflow:'hidden',top:'0px',left:'0px'};for(var browser in this.BROWSERS_OFFSETS.Ext2){if(Ext['is'+browser]){Ext.apply(styleCfg,{left:this.getBrowserOffset(browser,'left')+'px',top:this.getBrowserOffset(browser,'top')+'px'});break;}}
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.floatEl.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();},getBrowserOffset:function(browser,which){if(!this.isExt2x&&this.BROWSERS_OFFSETS.Ext3[browser]&&this.BROWSERS_OFFSETS.Ext3[browser][which]){return this.BROWSERS_OFFSETS.Ext3[browser][which];}else{return this.BROWSERS_OFFSETS.Ext2[browser][which];}},setClipSize:function(){if(this.clipEl){var width=this.buttonCt.getWidth();var height=this.buttonCt.getHeight();if(width===0||(height===0&&!Ext.isIE8)){this.setClipSize.defer(100,this);}else{for(var browser in this.BROWSERS_OFFSETS.Ext2){if(Ext['is'+browser]){width=width+this.getBrowserOffset(browser,'width');height=height+this.getBrowserOffset(browser,'height');break;}}
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;if(Ext.isIE8){this.inputFileEl.setOpacity(0.0);}
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.ns('Ext.ux.form');Ext.ux.form.BrowseField=Ext.extend(Ext.form.TriggerField,{triggerClass:'x-form-browse-trigger',onRender:function(ct,position){Ext.ux.form.BrowseField.superclass.onRender.call(this,ct,position);this.keyMap=new Ext.KeyMap(this.el,{key:Ext.EventObject.ENTER,stopEvent:true,fn:this.onTriggerClick,scope:this});},initComponent:function(){Ext.ux.form.BrowseField.superclass.initComponent.call(this);this.addEvents({'beforebrowse':true,'beforevalidate':true});this.windowConfig=Ext.apply(this.windowConfig||{},{id:this.id+'-window',closeAction:'hide',layout:'fit',items:[{xtype:'iframepanel',id:this.id+'-iframe',defaultSrc:this.windowConfig.url,loadMask:{msg:this.windowConfig.loadMsg},fitToParent:true,border:false}]});if(!this.windowConfig.hideButtons){this.windowConfig.buttons=[{id:'ok',text:this.windowConfig.validateButtonText||Ext.Msg.buttonText.ok,handler:function(){if(this.fireEvent('beforevalidate',this,this.window)!==false){var oldValue=this.getValue();this.onBrowseValidate.createDelegate(this.scope||this,[this])();var newValue=this.getValue();if(newValue!=oldValue){this.fireEvent('change',this,newValue,oldValue);}}},scope:this},{id:'cancel',text:this.windowConfig.cancelButtonText||Ext.Msg.buttonText.cancel,handler:function(){this.window.hide();},scope:this}];}
this.window=new Ext.Window(this.windowConfig);this.window.iframe=this.window.items.get(0);},onTriggerClick:function(){if(this.fireEvent('beforebrowse',this,this)!==false&&!this.disabled){this.window.show();}},onBrowseValidate:Ext.emptyFn});Ext.reg('browsefield',Ext.ux.form.BrowseField);

Ext.ux.clone=function(obj){if(obj==null||typeof(obj)!='object')
return obj;if(Ext.isDate(obj))
return obj.clone();var cloneArray=function(arr){var len=arr.length;var out=[];if(len>0){for(var i=0;i<len;++i)
out[i]=Ext.ux.clone(arr[i]);}
return out;};var c=new obj.constructor();for(var prop in obj){var p=obj[prop];if(Ext.isArray(p))
c[prop]=cloneArray(p);else if(typeof p=='object')
c[prop]=Ext.ux.clone(p);else
c[prop]=p;}
return c;};

Ext.ns('Ext.ux.tree');Ext.ux.tree.CheckTreePanel=Ext.extend(Ext.tree.TreePanel,{bubbleCheck:'checked',cascadeCheck:'unchecked',deepestOnly:false,expandOnCheck:true,filter:true,separator:',',cls:'ux-checktree',baseAttrs:{},initComponent:function(){this.eventModel=new Ext.ux.tree.CheckTreeEventModel(this);Ext.ux.tree.CheckTreePanel.superclass.initComponent.apply(this,arguments);var baseAttrs=Ext.apply({uiProvider:Ext.ux.tree.CheckTreeNodeUI},this.baseAttrs);Ext.applyIf(this.loader,{baseAttrs:baseAttrs,preloadChildren:true});if(true===this.loader.preloadChildren){this.loader.on('load',function(loader,node){node.cascade(function(n){loader.doPreload(n);n.loaded=true;});});}
if(true===this.filter){var Filter=Ext.ux.tree.TreeFilterX?Ext.ux.tree.TreeFilterX:Ext.tree.TreeFilter;this.filter=new Filter(this,{autoClear:true});}},getValue:function(){var a=[];this.root.cascade(function(n){if(true===n.attributes.checked){if(false===this.deepestOnly||!this.isChildChecked(n)){a.push(n.id);}}},this);return a;},isChildChecked:function(node){var checked=false;Ext.each(node.childNodes,function(child){if(child.attributes.checked){checked=true;}});return checked;},clearValue:function(){this.root.cascade(function(n){var ui=n.getUI();if(ui&&ui.setChecked){ui.setChecked(false);}});this.value=[];return this;},convertValue:function(val){var a=[];if(1<arguments.length){for(var i=0;i<arguments.length;i++){a.push(this.convertValue(arguments[i]));}}
else if(Ext.isArray(val)){a=val;}
else if('number'===typeof val){a.push(val);}
else if('string'===typeof val){a=val.split(this.separator);}
return a;},setValue:function(val){this.clearValue();this.value=this.convertValue.apply(this,arguments);Ext.each(this.value,function(id){var n=this.getNodeById(id);if(n){var ui=n.getUI();if(ui&&ui.setChecked){ui.setChecked(true);if(true===this.expandOnCheck){n.bubbleExpand();}}}},this);return this.value;},serialize:function(attr){attr=attr||'text';var a=[];this.root.cascade(function(n){if(true===n.attributes.checked){if(false===this.deepestOnly||!this.isChildChecked(n)){a.push(n[attr]);}}},this);return a.join(this.separator+' ');},getText:function(attr){return this.serialize(attr);},onRender:function(){Ext.ux.tree.CheckTreePanel.superclass.onRender.apply(this,arguments);if(true===this.isFormField){this.hiddenField=this.body.createChild({tag:'input',type:'hidden',name:this.name||this.id},undefined,true);}},updateHidden:function(){if(this.hiddenField){this.hiddenField.value=this.getValue().join(this.separator);}},clearInvalid:Ext.emptyFn,markInvalid:Ext.emptyFn,validate:function(){return true;},isValid:function(){return true;},getName:function(){return this.name||this.id||'';}})
Ext.reg('checktreepanel',Ext.ux.tree.CheckTreePanel);Ext.override(Ext.tree.TreeNode,{bubbleExpand:function(){var root=this.getOwnerTree().root;var branch=[];var p=this;while(p!==root){p=p.parentNode;branch.push(p);}
branch.reverse();Ext.each(branch,function(n){n.expand(false,false);});}});Ext.ux.tree.CheckTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{renderElements:function(n,a,targetNode,bulkRender){this.indentMarkup=n.parentNode?n.parentNode.ui.getChildIndent():'';var checked=n.attributes.checked;var href=a.href?a.href:Ext.isGecko?"":"#";var buf=['<li class="x-tree-node"><div ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',a.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img src="',a.icon||this.emptyIcon,'" class="x-tree-node-icon',(a.icon?" x-tree-node-inline-icon":""),(a.iconCls?" "+a.iconCls:""),'" unselectable="on" />','<img src="'+this.emptyIcon+'" class="x-tree-checkbox'+(true===checked?' x-tree-node-checked':'')+'" />','<a hidefocus="on" class="x-tree-node-anchor" href="',href,'" tabIndex="1" ',a.hrefTarget?' target="'+a.hrefTarget+'"':"",'><span unselectable="on">',n.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join('');var nel;if(bulkRender!==true&&n.nextSibling&&(nel=n.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",nel,buf);}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",targetNode,buf);}
this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var cs=this.elNode.childNodes;this.indentNode=cs[0];this.ecNode=cs[1];this.iconNode=cs[2];this.checkbox=cs[3];this.cbEl=Ext.get(this.checkbox);this.anchor=cs[4];this.textNode=cs[4].firstChild;},setIconCls:function(iconCls){Ext.fly(this.iconNode).set({cls:'x-tree-node-icon '+iconCls});},isChecked:function(){return this.node.attributes.checked===true;},onCheckChange:function(){var checked=this.isChecked();var tree=this.node.getOwnerTree();var bubble=tree.bubbleCheck;var cascade=tree.cascadeCheck;if('all'===bubble||(checked&&'checked'===bubble)||(!checked&&'unchecked'===bubble)){this.updateParent(checked);}
if('all'===cascade||(checked&&'checked'===cascade)||(!checked&&'unchecked'===cascade)){this.updateChildren(checked);}
tree.updateHidden();this.fireEvent('checkchange',this.node,checked);},setChecked:function(checked){checked=true===checked?checked:false;var cb=this.cbEl||false;if(cb){true===checked?cb.addClass('x-tree-node-checked'):cb.removeClass('x-tree-node-checked');}
this.node.attributes.checked=checked;this.onCheckChange();return checked;},toggleCheck:function(){var checked=!this.isChecked();this.setChecked(checked);return checked;},updateParent:function(checked){var p=this.node.parentNode;var ui=p?p.getUI():false;if(ui&&ui.setChecked){ui.setChecked(checked);}},updateChildren:function(checked){this.node.eachChild(function(n){var ui=n.getUI();if(ui&&ui.setChecked){ui.setChecked(checked);}});},onCheckboxClick:function(){if(!this.disabled){this.toggleCheck();}},onCheckboxOver:function(){this.addClass('x-tree-checkbox-over');},onCheckboxOut:function(){this.removeClass('x-tree-checkbox-over');},onCheckboxDown:function(){this.addClass('x-tree-checkbox-down');},onCheckboxUp:function(){this.removeClass('x-tree-checkbox-down');}});Ext.ux.tree.CheckTreeEventModel=Ext.extend(Ext.tree.TreeEventModel,{initEvents:function(){var el=this.tree.getTreeEl();el.on('click',this.delegateClick,this);if(this.tree.trackMouseOver!==false){el.on('mouseover',this.delegateOver,this);el.on('mouseout',this.delegateOut,this);}
el.on('mousedown',this.delegateDown,this);el.on('mouseup',this.delegateUp,this);el.on('dblclick',this.delegateDblClick,this);el.on('contextmenu',this.delegateContextMenu,this);},delegateOver:function(e,t){if(!this.beforeEvent(e)){return;}
if(this.lastEcOver){this.onIconOut(e,this.lastEcOver);delete this.lastEcOver;}
if(this.lastCbOver){this.onCheckboxOut(e,this.lastCbOver);delete this.lastCbOver;}
if(e.getTarget('.x-tree-ec-icon',1)){this.lastEcOver=this.getNode(e);this.onIconOver(e,this.lastEcOver);}
else if(e.getTarget('.x-tree-checkbox',1)){this.lastCbOver=this.getNode(e);this.onCheckboxOver(e,this.lastCbOver);}
if(t=this.getNodeTarget(e)){this.onNodeOver(e,this.getNode(e));}},delegateOut:function(e,t){if(!this.beforeEvent(e)){return;}
if(e.getTarget('.x-tree-ec-icon',1)){var n=this.getNode(e);this.onIconOut(e,n);if(n==this.lastEcOver){delete this.lastEcOver;}}
else if(e.getTarget('.x-tree-checkbox',1)){var n=this.getNode(e);this.onCheckboxOut(e,n);if(n==this.lastCbOver){delete this.lastCbOver;}}
if((t=this.getNodeTarget(e))&&!e.within(t,true)){this.onNodeOut(e,this.getNode(e));}},delegateDown:function(e,t){if(!this.beforeEvent(e)){return;}
if(e.getTarget('.x-tree-checkbox',1)){this.onCheckboxDown(e,this.getNode(e));}},delegateUp:function(e,t){if(!this.beforeEvent(e)){return;}
if(e.getTarget('.x-tree-checkbox',1)){this.onCheckboxUp(e,this.getNode(e));}},delegateOut:function(e,t){if(!this.beforeEvent(e)){return;}
if(e.getTarget('.x-tree-ec-icon',1)){var n=this.getNode(e);this.onIconOut(e,n);if(n==this.lastEcOver){delete this.lastEcOver;}}
else if(e.getTarget('.x-tree-checkbox',1)){var n=this.getNode(e);this.onCheckboxOut(e,n);if(n==this.lastCbOver){delete this.lastCbOver;}}
if((t=this.getNodeTarget(e))&&!e.within(t,true)){this.onNodeOut(e,this.getNode(e));}},delegateClick:function(e,t){if(!this.beforeEvent(e)){return;}
if(e.getTarget('.x-tree-checkbox',1)){this.onCheckboxClick(e,this.getNode(e));}
else if(e.getTarget('.x-tree-ec-icon',1)){this.onIconClick(e,this.getNode(e));}
else if(this.getNodeTarget(e)){this.onNodeClick(e,this.getNode(e));}},onCheckboxClick:function(e,node){node.ui.onCheckboxClick();},onCheckboxOver:function(e,node){node.ui.onCheckboxOver();},onCheckboxOut:function(e,node){node.ui.onCheckboxOut();},onCheckboxDown:function(e,node){node.ui.onCheckboxDown();},onCheckboxUp:function(e,node){node.ui.onCheckboxUp();}});

Ext.ns('Ext.ux.form');Ext.ux.form.DateTime=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:'input',type:'hidden'},timeWidth:100,dtSeparator:' ',hiddenFormat:'Y-m-d H:i:s',otherToNow:true,timePosition:'right',dateFormat:'m/d/y',timeFormat:'g:i A',initComponent:function(){Ext.ux.form.DateTime.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+'-date',format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete(this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+'-time',format:this.timeFormat||Ext.form.TimeField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete(this.timeFormat);this.relayEvents(this.df,['focus','specialkey','invalid','valid']);this.relayEvents(this.tf,['focus','specialkey','invalid','valid']);},onRender:function(ct,position){if(this.isRendered){return;}
Ext.ux.form.DateTime.superclass.onRender.call(this,ct,position);var t;if('below'===this.timePosition||'bellow'===this.timePosition){t=Ext.DomHelper.append(ct,{tag:'table',style:'border-collapse:collapse',children:[{tag:'tr',children:[{tag:'td',style:'padding-bottom:1px',cls:'ux-datetime-date'}]},{tag:'tr',children:[{tag:'td',cls:'ux-datetime-time'}]}]},true);}
else{t=Ext.DomHelper.append(ct,{tag:'table',style:'border-collapse:collapse',children:[{tag:'tr',children:[{tag:'td',style:'padding-right:4px',cls:'ux-datetime-date'},{tag:'td',cls:'ux-datetime-time'}]}]},true);}
this.tableEl=t;this.wrap=t.wrap({cls:'x-form-field-wrap'});this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child('td.ux-datetime-date'));this.tf.render(t.child('td.ux-datetime-time'));if(Ext.isIE&&Ext.isStrict){t.select('input').applyStyles({top:0});}
this.on('specialkey',this.onSpecialKey,this);this.df.el.swallowEvent(['keydown','keypress']);this.tf.el.swallowEvent(['keydown','keypress']);if('side'===this.msgTarget){var elp=this.el.findParent('.x-form-element',10,true);this.errorIcon=elp.createChild({cls:'x-form-invalid-icon'});this.df.errorIcon=this.errorIcon;this.tf.errorIcon=this.errorIcon;}
this.el.dom.name=this.hiddenName||this.name||this.id;this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;this.updateHidden();},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,'tl-tr',[2,0]);},initDateValue:function(){this.dateValue=this.otherToNow?new Date():new Date(1970,0,1,0,0,0);},clearInvalid:function(){this.df.clearInvalid();this.tf.clearInvalid();},markInvalid:function(msg){this.df.markInvalid(msg);this.tf.markInvalid(msg);},beforeDestroy:function(){if(this.isRendered){this.wrap.removeAllListeners();this.wrap.remove();this.tableEl.remove();this.df.destroy();this.tf.destroy();}},disable:function(){if(this.isRendered){this.df.disabled=this.disabled;this.df.onDisable();this.tf.onDisable();}
this.disabled=true;this.df.disabled=true;this.tf.disabled=true;this.fireEvent("disable",this);return this;},enable:function(){if(this.rendered){this.df.onEnable();this.tf.onEnable();}
this.disabled=false;this.df.disabled=false;this.tf.disabled=false;this.fireEvent("enable",this);return this;},focus:function(){this.df.focus();},getPositionEl:function(){return this.wrap;},getResizeEl:function(){return this.wrap;},getValue:function(){return this.dateValue?new Date(this.dateValue):'';},isValid:function(){return this.df.isValid()&&this.tf.isValid();},isVisible:function(){return this.df.rendered&&this.df.getActionEl().isVisible();},onBlur:function(f){if(this.wrapClick){f.focus();this.wrapClick=false;}
if(f===this.df){this.updateDate();}
else{this.updateTime();}
this.updateHidden();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue);}
this.hasFocus=false;this.fireEvent('blur',this);}}).defer(100,this);},onFocus:function(){if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this);}},onMouseDown:function(e){if(!this.disabled){this.wrapClick='td'===e.target.nodeName.toLowerCase();}},onSpecialKey:function(t,e){var key=e.getKey();if(key===e.TAB){if(t===this.df&&!e.shiftKey){e.stopEvent();this.tf.focus();}
if(t===this.tf&&e.shiftKey){e.stopEvent();this.df.focus();}}
if(key===e.ENTER){this.updateValue();}},setDate:function(date){this.df.setValue(date);},setTime:function(date){this.tf.setValue(date);},setSize:function(w,h){if(!w){return;}
if('below'===this.timePosition){this.df.setSize(w,h);this.tf.setSize(w,h);if(Ext.isIE){this.df.el.up('td').setWidth(w);this.tf.el.up('td').setWidth(w);}}
else{this.df.setSize(w-this.timeWidth-4,h);this.tf.setSize(this.timeWidth,h);if(Ext.isIE){this.df.el.up('td').setWidth(w-this.timeWidth-4);this.tf.el.up('td').setWidth(this.timeWidth);}}},setValue:function(val){if(!val&&true===this.emptyToNow){this.setValue(new Date());return;}
else if(!val){this.setDate('');this.setTime('');this.updateValue();return;}
if('number'===typeof val){val=new Date(val);}
else if('string'===typeof val&&this.hiddenFormat){val=Date.parseDate(val,this.hiddenFormat)}
val=val?val:new Date(1970,0,1,0,0,0);var da,time;if(val instanceof Date){this.setDate(val);this.setTime(val);this.dateValue=new Date(val);}
else{da=val.split(this.dtSeparator);this.setDate(da[0]);if(da[1]){if(da[2]){da[1]+=da[2];}
this.setTime(da[1]);}}
this.updateValue();},setVisible:function(visible){if(visible){this.df.show();this.tf.show();}else{this.df.hide();this.tf.hide();}
return this;},show:function(){return this.setVisible(true);},hide:function(){return this.setVisible(false);},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue);}}
this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth(),d.getDate());}
else{this.dateValue='';this.setTime('');}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format);}
if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue);}
if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds());}
else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0);}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):'';this.el.dom.value=value;}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return;},validate:function(){return this.df.validate()&&this.tf.validate();},renderer:function(field){var format=field.editor.dateFormat||Ext.ux.form.DateTime.prototype.dateFormat;format+=' '+(field.editor.timeFormat||Ext.ux.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval;};return renderer;}});Ext.reg('xdatetime',Ext.ux.form.DateTime);

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',state:'state'},singleUpload:false,unknownErrorText:'Unknown error',cancelUrl:'stoppable.php',upCount:0,generateProgressId:function(record){var progressId=parseInt(Math.random()*1e10,10);if(record){record.set('progressId',progressId);}
else{this.progressId=progressId;}},createForm:function(record){var form=Ext.getBody().createChild({tag:'form',action:this.url,method:'GET',cls:'x-hidden',id:Ext.id()});if(record){if(Ext.isIE)
record.set('form',undefined);else
record.set('form',form);}
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+(record?('?'+this.progressIdName+'='+record.get('progressId')):''),method:'GET',isUpload:true,timeout:-1,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.set('response',o);r.commit();});}
else{record=options.record;record.set('state','done');record.set('error','');record.set('response',o);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.length>0?error.errors[0].msg: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;if(this.singleUpload){var o={url:this.progressUrl,method:'GET',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.d)||true!==o.success){return;}
o=o.d;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);}};o.params[this.progressIdName]=this.progressId;Ext.Ajax.request(o);}
else{records=this.store.query('state',/^(uploading|processing)$/);records.each(function(r){var o={url:this.progressUrl,method:'GET',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.d)||true!==o.success){return;}
o=o.d;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);}};o.params[this.progressIdName]=r.get('progressId');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|processing)$/);records.each(this.stopUpload,this);},stopUpload:function(record){var iframe=false;if(record){this.requestCancel(record);}
else if(this.form){iframe=Ext.fly(this.form.dom.target);this.stopIframe(iframe);this.upCount=0;this.fireFinishEvents();}},requestCancel:function(record){record.set('state','stopping');var o={url:this.cancelUrl,method:'GET',params:{},scope:this,callback:this.cancelCallback};o.params[this.progressIdName]=record.get('progressId');o.record=record;Ext.Ajax.request(o);},cancelCallback:function(options,success,response){if(true===success){var result=Ext.decode(response.responseText);if(result&&result.d&&result.d.stoppable){var iframe=this.getIframe(options.record);this.stopIframe(iframe);this.upCount--;this.upCount=0>this.upCount?0:this.upCount;options.record.set('state','stopped');options.record.set('pctComplete',0);this.fireFinishEvents({record:options.record});}
else{options.record.set('state','stopfailed');}}},stopIframe:function(iframe){if(iframe){try{var win;if(Ext.isIE){win=window.frames[iframe.dom.name];win.document.execCommand('Stop');}
else{win=iframe.dom.contentWindow;win.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){this.generateProgressId(record);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;}
this.generateProgressId();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.ns('Ext.ux.form');Ext.ux.form.FileUploadField=Ext.extend(Ext.form.TextField,{buttonText:'Browse...',buttonOnly:false,buttonOffset:3,readOnly:true,autoSize:Ext.emptyFn,initComponent:function(){Ext.ux.form.FileUploadField.superclass.initComponent.call(this);this.addEvents('fileselected');},onRender:function(ct,position){Ext.ux.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.el.dom.removeAttribute('name');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':'')}));if(this.buttonOnly){this.el.hide();this.wrap.setWidth(this.button.getEl().getWidth());}
this.fileInput.on('change',function(){var v=this.fileInput.dom.value;this.setValue(v);this.fireEvent('fileselected',this,v);},this);},getFileInputId:function(){return this.id+'-file';},onResize:function(w,h){Ext.ux.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);}},onDestroy:function(){Ext.ux.form.FileUploadField.superclass.onDestroy.call(this);Ext.destroy(this.fileInput,this.button,this.wrap);},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.ux.form.FileUploadField);Ext.form.FileUploadField=Ext.ux.form.FileUploadField;

Ext.ns('Ext.plugins.grid');Ext.plugins.grid.HighLightWord=function(config){Ext.apply(this,config);};Ext.plugins.grid.HighLightWord.prototype={gridId:null,grid:null,exact:'exact',style_name:'cf-highlight',style_name_suffix:true,highlight:null,nohighlight:null,keys:null,hlWordProperty:'d.HighLightWords',init:function(grid){if(!grid)return;this.grid=grid;this.gridId=grid.id;if(this.gridId){this.highlight='div#'.concat(this.gridId).concat(' div[class="x-grid3-body"]');this.nohighlight='div[class="x-grid-empty"]';}
if(this.grid.store)
this.grid.store.on('load',function(store,records){if(store.reader.jsonData.d.HighLightWords)
(function(){this.grid.hlword.highLight(store.reader.jsonData.d.HighLightWords);}).defer(100,this);},this);},highLight:function(keys){this.keys=keys.replace(/[^\w\x91\x92\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xFF\u0100-\u010D\u015A-\u0167\u2018\u2019]/gi,' ').replace(/[ ]{1,}/g,' ');$(document).SearchHighlight({exact:this.exact,keys:this.keys,highlight:this.highlight,nohighlight:this.nohighlight,style_name:this.style_name,style_name_suffix:this.style_name_suffix});}}

Ext.namespace('Ext.ux.dd');Ext.ux.dd.GridDragDropRowOrder=Ext.extend(Ext.util.Observable,{copy:false,scrollable:false,constructor:function(config){if(config)
Ext.apply(this,config);this.addEvents({beforerowmove:true,afterrowmove:true,beforerowcopy:true,afterrowcopy:true});Ext.ux.dd.GridDragDropRowOrder.superclass.constructor.call(this);},init:function(grid){this.grid=grid;grid.enableDragDrop=true;grid.on({render:{fn:this.onGridRender,scope:this,single:true}});},onGridRender:function(grid){var self=this;this.target=new Ext.dd.DropTarget(grid.getEl(),{ddGroup:grid.ddGroup||'GridDD',grid:grid,gridDropTarget:this,notifyDrop:function(dd,e,data){if(this.currentRowEl){this.currentRowEl.removeClass('grid-row-insert-below');this.currentRowEl.removeClass('grid-row-insert-above');}
var t=Ext.lib.Event.getTarget(e);var rindex=this.grid.getView().findRowIndex(t);if(rindex===false||rindex==data.rowIndex){return false;}
if(this.gridDropTarget.fireEvent(self.copy?'beforerowcopy':'beforerowmove',this.gridDropTarget,data.rowIndex,rindex,data.selections,123)===false){return false;}
var ds=this.grid.getStore();var selections=new Array();var keys=ds.data.keys;for(var key in keys){for(var i=0;i<data.selections.length;i++){if(keys[key]==data.selections[i].id){if(rindex==key){return false;}
selections.push(data.selections[i]);}}}
if(rindex>data.rowIndex&&this.rowPosition<0){rindex--;}
if(rindex<data.rowIndex&&this.rowPosition>0){rindex++;}
if(rindex>data.rowIndex&&data.selections.length>1){rindex=rindex-(data.selections.length-1);}
if(rindex==data.rowIndex){return false;}
if(!self.copy){for(var i=0;i<data.selections.length;i++){ds.remove(ds.getById(data.selections[i].id));}}
for(var i=selections.length-1;i>=0;i--){var insertIndex=rindex;ds.insert(insertIndex,selections[i]);}
var sm=this.grid.getSelectionModel();if(sm){sm.selectRecords(data.selections);}
this.gridDropTarget.fireEvent(self.copy?'afterrowcopy':'afterrowmove',this.gridDropTarget,data.rowIndex,rindex,data.selections);return true;},notifyOver:function(dd,e,data){var t=Ext.lib.Event.getTarget(e);var rindex=this.grid.getView().findRowIndex(t);var ds=this.grid.getStore();var keys=ds.data.keys;for(var key in keys){for(var i=0;i<data.selections.length;i++){if(keys[key]==data.selections[i].id){if(rindex==key){if(this.currentRowEl){this.currentRowEl.removeClass('grid-row-insert-below');this.currentRowEl.removeClass('grid-row-insert-above');}
return this.dropNotAllowed;}}}}
if(rindex<0||rindex===false){this.currentRowEl.removeClass('grid-row-insert-above');return this.dropNotAllowed;}
try{var currentRow=this.grid.getView().getRow(rindex);var resolvedRow=new Ext.Element(currentRow).getY()-this.grid.getView().scroller.dom.scrollTop;var rowHeight=currentRow.offsetHeight;this.rowPosition=e.getPageY()-resolvedRow-(rowHeight/2);if(this.currentRowEl){this.currentRowEl.removeClass('grid-row-insert-below');this.currentRowEl.removeClass('grid-row-insert-above');}
if(this.rowPosition>0){this.currentRowEl=new Ext.Element(currentRow);this.currentRowEl.addClass('grid-row-insert-below');}
else{if(rindex-1>=0){var previousRow=this.grid.getView().getRow(rindex-1);this.currentRowEl=new Ext.Element(previousRow);this.currentRowEl.addClass('grid-row-insert-below');}
else{this.currentRowEl.addClass('grid-row-insert-above');}}}
catch(err){rindex=false;}
return(rindex===false)?this.dropNotAllowed:this.dropAllowed;},notifyOut:function(dd,e,data){if(this.currentRowEl){this.currentRowEl.removeClass('grid-row-insert-above');this.currentRowEl.removeClass('grid-row-insert-below');}}});if(this.targetCfg){Ext.apply(this.target,this.targetCfg);}
grid.dropTarget=this;if(this.scrollable){Ext.dd.ScrollManager.register(grid.getView().getEditorParent());grid.on({beforedestroy:this.onBeforeDestroy,scope:this,single:true});}},getTarget:function(){return this.target;},getGrid:function(){return this.grid;},getCopy:function(){return this.copy?true:false;},setCopy:function(b){this.copy=b?true:false;},onBeforeDestroy:function(grid){Ext.dd.ScrollManager.unregister(grid.getView().getEditorParent());}});

Ext.namespace('Ext.ux.grid');Ext.ux.grid.InternalGridView=Ext.extend(Ext.grid.GridView,{borderWidth:2,tdClass:'x-internalgrid-cell',hdCls:'x-internalgrid-hd',cellSelector:'td.x-internalgrid-cell',rowSelector:'div.x-internalgrid-row',initTemplates:function(){var ts=this.templates||{};if(!ts.master){ts.master=new Ext.Template('<div class="x-internalgrid" hidefocus="true">','<div class="x-internalgrid-viewport">','<div class="x-internalgrid-header"><div class="x-internalgrid-header-inner"><div class="x-internalgrid-header-offset">{header}</div></div><div class="x-clear"></div></div>','<div class="x-internalgrid-scroller"><div class="x-internalgrid-body">{body}</div><a href="#" class="x-internalgrid-focus" tabIndex="-1"></a></div>',"</div>",'<div class="x-internalgrid-resize-marker">&#160;</div>','<div class="x-internalgrid-resize-proxy">&#160;</div>',"</div>");}
if(!ts.header){ts.header=new Ext.Template('<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">','<thead><tr class="x-internalgrid-hd-row">{cells}</tr></thead>',"</table>");}
if(!ts.hcell){ts.hcell=new Ext.Template('<td class="x-internalgrid-hd x-internalgrid-cell x-internalgrid-td-{id}" style="{style}"><div {tooltip} {attr} class="x-internalgrid-hd-inner x-internalgrid-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-internalgrid-hd-btn" href="#"></a>':'','{value}<img class="x-internalgrid-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />',"</div></td>");}
if(!ts.body){ts.body=new Ext.Template('{rows}');}
if(!ts.row){ts.row=new Ext.Template('<div class="x-internalgrid-row {alt}" style="{tstyle}"><table class="x-internalgrid-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">','<tbody><tr>{cells}</tr>',(this.enableRowBody?'<tr class="x-internalgrid-row-body-tr" style="{bodyStyle}"><td colspan="{cols}" class="x-internalgrid-body-cell" tabIndex="0" hidefocus="on"><div class="x-internalgrid-row-body">{body}</div></td></tr>':''),'</tbody></table></div>');}
if(!ts.cell){ts.cell=new Ext.Template('<td class="x-internalgrid-col x-internalgrid-cell x-internalgrid-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-internalgrid-cell-inner x-internalgrid-col-{id}" unselectable="on" {attr}>{value}</div>',"</td>");}
for(var k in ts){var t=ts[k];if(t&&typeof t.compile=='function'&&!t.compiled){t.disableFormats=true;t.compile();}}
this.templates=ts;this.colRe=new RegExp("x-internalgrid-td-([^\\s]+)","");},syncHeaderScroll:function(){var mb=this.scroller.dom;this.innerHd.scrollLeft=mb.scrollLeft;this.innerHd.scrollLeft=mb.scrollLeft;},updateSortIcon:function(col,dir){var sc=this.sortClasses;var hds=this.mainHd.select('td').removeClass(sc);hds.item(col).addClass(sc[dir=="DESC"?1:0]);},doRender:function(cs,rs,ds,startRow,colCount,stripe){var ts=this.templates,ct=ts.cell,rt=ts.row,last=colCount-1;var tstyle='width:'+this.getTotalWidth()+';';var buf=[],cb,c,p={},rp={tstyle:tstyle},r;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb=[];var rowIndex=(j+startRow);for(var i=0;i<colCount;i++){c=cs[i];p.id=c.id;p.css=i==0?'x-internalgrid-cell-first ':(i==last?'x-internalgrid-cell-last ':'');p.attr=p.cellAttr="";p.value=c.renderer(r.data[c.name],p,r,rowIndex,i,ds);p.style=c.style;if(p.value==undefined||p.value==="")p.value="&#160;";if(r.dirty&&typeof r.modified[c.name]!=='undefined'){p.css+=' x-internalgrid-dirty-cell';}
cb[cb.length]=ct.apply(p);}
var alt=[];if(stripe&&((rowIndex+1)%2==0)){alt[0]="x-internalgrid-row-alt";}
if(r.dirty){alt[1]=" x-internalgrid-dirty-row";}
rp.cols=colCount;if(this.getRowClass){alt[2]=this.getRowClass(r,rowIndex,rp,ds);}
rp.alt=alt.join(" ");rp.cells=cb.join("");buf[buf.length]=rt.apply(rp);}
return buf.join("");},processRows:function(startRow,skipStripe){if(this.ds.getCount()<1){return;}
skipStripe=skipStripe||!this.grid.stripeRows;startRow=startRow||0;var rows=this.getRows();var cls=' x-internalgrid-row-alt ';for(var i=startRow,len=rows.length;i<len;i++){var row=rows[i];row.rowIndex=i;if(!skipStripe){var isAlt=((i+1)%2==0);var hasAlt=(' '+row.className+' ').indexOf(cls)!=-1;if(isAlt==hasAlt){continue;}
if(isAlt){row.className+=" x-internalgrid-row-alt";}else{row.className=row.className.replace("x-internalgrid-row-alt","");}}}},renderUI:function(){var header=this.renderHeaders();var body=this.templates.body.apply({rows:''});var html=this.templates.master.apply({body:body,header:header});var g=this.grid;g.getGridEl().dom.innerHTML=html;this.initElements();Ext.fly(this.innerHd).on("click",this.handleHdDown,this);this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("mousemove",this.handleHdMove,this);this.scroller.on('scroll',this.syncScroll,this);if(g.enableColumnResize!==false){this.splitone=new Ext.grid.GridView.SplitDragZone(g,this.mainHd.dom);}
if(g.enableColumnMove){this.columnDrag=new Ext.grid.GridView.ColumnDragZone(g,this.innerHd);this.columnDrop=new Ext.grid.HeaderDropZone(g,this.mainHd.dom);}
if(g.enableHdMenu!==false){if(g.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:g.id+"-hcols-menu"});this.colMenu.on("beforeshow",this.beforeColMenuShow,this);this.colMenu.on("itemclick",this.handleHdMenuClick,this);}
this.hmenu=new Ext.menu.Menu({id:g.id+"-hctx"});this.hmenu.add({id:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{id:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(g.enableColumnHide!==false){this.hmenu.add('-',{id:"columns",text:this.columnsText,menu:this.colMenu,iconCls:'x-cols-icon'});}
this.hmenu.on("itemclick",this.handleHdMenuClick,this);}
if(g.enableDragDrop||g.enableDrag){this.dragZone=new Ext.grid.GridDragZone(g,{ddGroup:g.ddGroup||'GridDD'});}
this.updateHeaderSortState();},autoExpand:function(preventUpdate){var g=this.grid,cm=this.cm;if(!this.userResized&&g.autoExpandColumn){var tw=cm.getTotalWidth(false);var aw=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(tw!=aw){var ci=cm.getIndexById(g.autoExpandColumn);var currentWidth=cm.getColumnWidth(ci);var cw=Math.min(Math.max(((aw-tw)+currentWidth),g.autoExpandMin),g.autoExpandMax);if(cw!=currentWidth){cm.setColumnWidth(ci,cw-8,true);if(preventUpdate!==true){this.updateColumnWidth(ci,cw);}}}}},applyEmptyText:function(){if(this.emptyText&&!this.hasRows()){this.mainBody.update('<div class="x-grid-empty">'+this.emptyText+'</div>');}},onRowOver:function(e,t){var row;if((row=this.findRowIndex(t))!==false){this.addRowClass(row,"x-internalgrid-row-over");}},onRowOut:function(e,t){var row;if((row=this.findRowIndex(t))!==false&&row!==this.findRowIndex(e.getRelatedTarget())){this.removeRowClass(row,"x-internalgrid-row-over");}},onRowSelect:function(row){this.addRowClass(row,"x-internalgrid-row-selected");},onRowDeselect:function(row){this.removeRowClass(row,"x-internalgrid-row-selected");},onCellSelect:function(row,col){var cell=this.getCell(row,col);if(cell){this.fly(cell).addClass("x-internalgrid-cell-selected");}},onCellDeselect:function(row,col){var cell=this.getCell(row,col);if(cell){this.fly(cell).removeClass("x-internalgrid-cell-selected");}},handleHdDown:function(e,t){if(Ext.fly(t).hasClass('x-internalgrid-hd-btn')){e.stopEvent();var hd=this.findHeaderCell(t);Ext.fly(hd).addClass('x-internalgrid-hd-menu-open');var index=this.getCellIndex(hd);this.hdCtxIndex=index;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(index));ms.get("desc").setDisabled(!cm.isSortable(index));this.hmenu.on("hide",function(){Ext.fly(hd).removeClass('x-internalgrid-hd-menu-open');},this,{single:true});this.hmenu.show(t,"tl-bl?");}},handleHdOver:function(e,t){var hd=this.findHeaderCell(t);if(hd&&!this.headersDisabled){this.activeHd=hd;this.activeHdIndex=this.getCellIndex(hd);var fly=this.fly(hd);this.activeHdRegion=fly.getRegion();if(!this.cm.isMenuDisabled(this.activeHdIndex)){fly.addClass("x-internalgrid-hd-over");this.activeHdBtn=fly.child('.x-internalgrid-hd-btn');if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(hd.firstChild.offsetHeight-1)+'px';}}}},handleHdOut:function(e,t){var hd=this.findHeaderCell(t);if(hd&&(!Ext.isIE||!e.within(hd,true))){this.activeHd=null;this.fly(hd).removeClass("x-internalgrid-hd-over");hd.style.cursor='';}},layout:function(){if(!this.mainBody){return;}
var g=this.grid;var c=g.getGridEl();var csize=c.getSize(true);var vw=csize.width;if(vw<20||csize.height<20){return;}
var ltMax=true;if(this.maxHeight){ltMax=csize.height<this.maxHeight;}
if(g.autoHeight&&ltMax){this.scroller.dom.style.overflow='visible';}else{var height=csize.height;if(this.maxHeight){if(height>this.maxHeight){height=this.maxHeight;this.scroller.dom.style.overflow='';}}
this.el.setSize(csize.width,height);var hdHeight=this.mainHd.getHeight();var vh=height-(hdHeight);this.scroller.setSize(vw,vh);if(this.innerHd){this.innerHd.style.width=(vw)+'px';}}
if(this.forceFit){if(this.lastViewWidth!=vw){this.fitColumns(false,false);this.lastViewWidth=vw;}}else{this.autoExpand();this.syncHeaderScroll();}
this.onLayout(vw,vh);}});

Ext.ns('Ext.ux.form');Ext.ux.form.HrefField=function(config){Ext.apply(this,config);Ext.ux.form.HrefField.superclass.constructor.call(this,config);}
Ext.extend(Ext.ux.form.HrefField,Ext.form.TriggerField,{vtype:'url',target:'_blank',linkClass:'x-form-href-link',triggerClass:'x-form-href-trigger',triggerTip:'Visit the web site',initTrigger:function(){this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},initComponent:function(){Ext.ux.form.HrefField.superclass.initComponent.call(this);this.triggerConfig={tag:'a',cls:'x-item-disabled '+this.linkClass,target:this.target,cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.triggerClass}]};this.on({valid:function(){var v=this.getValue();if(v.length>0){this.setHrefAttribute(v);}
else{this.removeHrefAttribute();}},invalid:function(){this.removeHrefAttribute();},scope:this});},setHrefAttribute:function(href){this.trigger.removeClass('x-item-disabled');this.trigger.dom.setAttribute('href',href);Ext.QuickTips.register({target:this.trigger.first(),text:this.triggerTip});},removeHrefAttribute:function(){this.trigger.addClass('x-item-disabled');this.trigger.dom.removeAttribute('href');Ext.QuickTips.unregister(this.trigger.first());}});Ext.reg('hreffield',Ext.ux.form.HrefField);

Ext.ns('Ext.ux.form');Ext.ux.form.HtmlField=Ext.extend(Ext.form.TriggerField,{value:'',data:[],closeText:'Close',validateText:'OK',htmlText:'',triggerTip:'Edit',windowTitle:'Html editor',triggerClass:'x-form-html-trigger',onDisable:function(){Ext.ux.form.HtmlField.superclass.onDisable.call(this);this.trigger.setVisible(false);},onEnable:function(){Ext.ux.form.HtmlField.superclass.onEnable.call(this);this.trigger.setVisible(!this.readOnly);},initComponent:function(){Ext.ux.form.HtmlField.superclass.initComponent.call(this);this.addEvents('select');this.initWindow();},initWindow:function(){var win=Ext.getCmp('HtmlFieldWindow');if(win!==undefined){this.window=win;if(this.htmlEditor===undefined)
this.htmlEditor=Ext.getCmp('HtmlFieldEditor');return;}
this.htmlEditor=new Ext.form.HtmlEditor({id:'HtmlFieldEditor'});this.panel=new Ext.FormPanel({layout:'fit',region:'center',border:false,hideLabels:true,margins:'3 3 3 3',items:[this.htmlEditor]});var b1={text:this.closeText,handler:this.closeWindow.createDelegate(this)};var b2={text:this.validateText,handler:this.closeWindow.createDelegate(this)};this.window=new Ext.Window({id:'HtmlFieldWindow',title:this.windowTitle,closeAction:'hide',closable:true,width:525,height:300,plain:true,layout:'border',items:[this.panel],listeners:{beforehide:function(){if(this.htmlEditor.sourceEditMode){this.applyValue(this.htmlEditor.el.dom.value);this.htmlEditor.toggleSourceEdit(false);}else{this.applyValue();this.htmlEditor.toggleSourceEdit(true);}},scope:this},buttons:[b2,b1]});},applyValue:function(html){var v=html||this.htmlEditor.getValue();if(v.startWith('&nbsp'))
v=v.substr(6,v.length-6)
this.setValue(v);this.htmlEditor.setValue('');},validateBlur:function(){return!this.window||!this.window.isVisible();},closeWindow:function(){this.window.hide();},onTriggerClick:function(){this.window.show();var v=this.getValue();this.htmlEditor.setValue(v);},afterRender:function(){Ext.ux.form.HtmlField.superclass.afterRender.call(this);this.trigger.dom.qtip=this.triggerTip;}});Ext.reg('htmlfield',Ext.ux.form.HtmlField);

Ext.ns('Ext.ux.form');Ext.ux.form.MailField=function(config){Ext.apply(this,config);Ext.ux.form.MailField.superclass.constructor.call(this,config);}
Ext.extend(Ext.ux.form.MailField,Ext.ux.form.HrefField,{vtype:'email',target:'',linkClass:'x-form-mail-link',triggerClass:'x-form-mail-trigger',triggerTip:'Send an email',initTrigger:function(){this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},setHrefAttribute:function(email){this.trigger.removeClass('x-item-disabled');this.trigger.dom.setAttribute('href','mailto:'+email);Ext.QuickTips.register({target:this.trigger.first(),text:this.triggerTip});}});Ext.reg('mailfield',Ext.ux.form.MailField);

Ext.ns('Ext.ux.form');Ext.ux.form.PhoneField=function(config){Ext.apply(this,config);Ext.ux.form.PhoneField.superclass.constructor.call(this,config);}
Ext.extend(Ext.ux.form.PhoneField,Ext.ux.form.HrefField,{phonePrefix:'callto:tel:',vtype:undefined,validator:function(){return true},target:'',linkClass:'x-form-phone-link',triggerClass:'x-form-phone-trigger',triggerTip:'Call',initTrigger:function(){this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},setHrefAttribute:function(phoneNumber){this.trigger.removeClass('x-item-disabled');this.trigger.dom.setAttribute('href',this.phonePrefix+phoneNumber);Ext.QuickTips.register({target:this.trigger.first(),text:this.triggerTip});}});Ext.reg('phonefield',Ext.ux.form.PhoneField);

Ext.LinkButton=Ext.extend(Ext.Button,{buttonSelector:'a:first',template:new Ext.Template('<div><table border="0" cellpadding="0" cellspacing="0" class="x-btn-wrap" style="width:75px;"><tbody><tr>','<td class="x-btn-left"><i></i></td><td class="x-btn-center"><a class="x-btn-text x-btn-link" href="{1}" target="{2}">{0}</a></td><td class="x-btn-right"><i></i></td>',"</tr></tbody></table></div>"),onRender:function(ct,position){var btn,targs=[this.text||' ',this.href,this.target||"_self"];if(position){btn=this.template.insertBefore(position,targs,true);}else{btn=this.template.append(ct,targs,true);}
var btnEl=btn.child(this.buttonSelector);btnEl.on('focus',this.onFocus,this);btnEl.on('blur',this.onBlur,this);this.initButtonEl(btn,btnEl);Ext.ButtonToggleMgr.register(this);},onClick:function(e){if(e){}
if(e.button!=0){return;}
if(!this.disabled){if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle();}
if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu();}
this.fireEvent("click",this,e);if(this.handler){this.handler.call(this.scope||this,this,e);}}},setText:function(text){this.text=text;if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).update(text);}
this.autoWidth();},setHref:function(href){this.href=href;if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).dom.href=this.href;}},setTarget:function(target){this.target=target;if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).dom.target=this.target;}},onDisable:function(){Ext.LinkButton.superclass.onDisable.call(this);if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).dom.removeAttribute('href');}},onEnable:function(){Ext.LinkButton.superclass.onEnable.call(this);if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).dom.href=this.href;}}});Ext.reg('linkbutton',Ext.LinkButton);

Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.GridPanel=Ext.extend(Ext.grid.GridPanel,{initComponent:function()
{if(this.cls){this.cls+=' ext-ux-livegrid';}else{this.cls='ext-ux-livegrid';}
Ext.ux.grid.livegrid.GridPanel.superclass.initComponent.call(this);},onRender:function(ct,position)
{Ext.ux.grid.livegrid.GridPanel.superclass.onRender.call(this,ct,position);var ds=this.getStore();if(ds._autoLoad===true){delete ds._autoLoad;ds.load();}},walkCells:function(row,col,step,fn,scope)
{var ds=this.store;var _oF=ds.getCount;ds.getCount=ds.getTotalCount;var ret=Ext.ux.grid.livegrid.GridPanel.superclass.walkCells.call(this,row,col,step,fn,scope);ds.getCount=_oF;return ret;}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.GridView=function(config){this.addEvents({'beforebuffer':true,'buffer':true,'bufferfailure':true,'cursormove':true});this.horizontalScrollOffset=17;this.loadMask=false;Ext.apply(this,config);this.templates={};this.templates.master=new Ext.Template('<div class="x-grid3" hidefocus="true"><div class="liveScroller"><div></div></div>','<div class="x-grid3-viewport"">','<div class="x-grid3-header"><div class="x-grid3-header-inner"><div class="x-grid3-header-offset">{header}</div></div><div class="x-clear"></div></div>','<div class="x-grid3-scroller" style="overflow-y:hidden !important;"><div class="x-grid3-body">{body}</div><a href="#" class="x-grid3-focus" tabIndex="-1"></a></div>',"</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>");this._gridViewSuperclass=Ext.ux.grid.livegrid.GridView.superclass;this._gridViewSuperclass.constructor.call(this);};Ext.extend(Ext.ux.grid.livegrid.GridView,Ext.grid.GridView,{_maskIndex:20001,hdHeight:0,rowClipped:0,liveScroller:null,liveScrollerInset:null,rowHeight:-1,visibleRows:1,lastIndex:-1,lastRowIndex:0,lastScrollPos:0,rowIndex:0,isBuffering:false,requestQueue:-1,loadMask:null,isPrebuffering:false,reset:function(forceReload)
{if(forceReload===false){this.ds.modified=[];this.rowIndex=0;this.lastScrollPos=0;this.lastRowIndex=0;this.lastIndex=0;this.adjustVisibleRows();this.adjustScrollerPos(-this.liveScroller.dom.scrollTop,true);this.showLoadMask(false);this.refresh(true);this.fireEvent('cursormove',this,0,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength);return false;}else{var params={};var sInfo=this.ds.sortInfo;if(sInfo){params={dir:sInfo.direction,sort:sInfo.field};}
return this.ds.load({params:params});}},renderUI:function()
{var g=this.grid;var dEnabled=g.enableDragDrop||g.enableDrag;g.enableDragDrop=false;g.enableDrag=false;this._gridViewSuperclass.renderUI.call(this);var g=this.grid;g.enableDragDrop=dEnabled;g.enableDrag=dEnabled;if(dEnabled){this.dragZone=new Ext.ux.grid.livegrid.DragZone(g,{ddGroup:g.ddGroup||'GridDD'});}
if(this.loadMask){this.loadMask=new Ext.LoadMask(this.mainBody.dom.parentNode.parentNode,this.loadMask);}},init:function(grid)
{this._gridViewSuperclass.init.call(this,grid);grid.on('expand',this._onExpand,this);},initData:function(ds,cm)
{if(this.ds){this.ds.un('bulkremove',this.onBulkRemove,this);this.ds.un('beforeload',this.onBeforeLoad,this);}
if(ds){ds.on('bulkremove',this.onBulkRemove,this);ds.on('beforeload',this.onBeforeLoad,this);}
this._gridViewSuperclass.initData.call(this,ds,cm);},renderBody:function()
{var markup=this.renderRows(0,this.visibleRows-1);return this.templates.body.apply({rows:markup});},doRender:function(cs,rs,ds,startRow,colCount,stripe)
{return this._gridViewSuperclass.doRender.call(this,cs,rs,ds,startRow+this.ds.bufferRange[0],colCount,stripe);},initElements:function()
{var E=Ext.Element;var el=this.grid.getGridEl().dom.firstChild;var cs=el.childNodes;this.el=new E(el);this.mainWrap=new E(cs[1]);this.liveScroller=new E(cs[0]);this.liveScrollerInset=this.liveScroller.dom.firstChild;this.liveScroller.on('scroll',this.onLiveScroll,this,{buffer:this.scrollDelay});var thd=this.mainWrap.dom.firstChild;this.mainHd=new E(thd);this.hdHeight=thd.offsetHeight;this.innerHd=this.mainHd.dom.firstChild;this.scroller=new E(this.mainWrap.dom.childNodes[1]);if(this.forceFit){this.scroller.setStyle('overflow-x','hidden');}
this.mainBody=new E(this.scroller.dom.firstChild);this.mainBody.on('mousewheel',this.handleWheel,this);this.focusEl=new E(this.scroller.dom.childNodes[1]);this.focusEl.swallowEvent("click",true);this.resizeMarker=new E(cs[2]);this.resizeProxy=new E(cs[3]);},layout:function()
{if(!this.mainBody){return;}
var g=this.grid;var c=g.getGridEl(),cm=this.cm,expandCol=g.autoExpandColumn,gv=this;var csize=c.getSize(true);var vw=csize.width;if(vw<20||csize.height<20){return;}
if(g.autoHeight){this.scroller.dom.style.overflow='visible';}else{this.el.setSize(csize.width,csize.height);var hdHeight=this.mainHd.getHeight();var vh=csize.height-(hdHeight);this.scroller.setSize(vw,vh);if(this.innerHd){this.innerHd.style.width=(vw)+'px';}}
this.liveScroller.dom.style.top=this.hdHeight+"px";if(this.forceFit){if(this.lastViewWidth!=vw){this.fitColumns(false,false);this.lastViewWidth=vw;}}else{this.autoExpand();}
this.adjustVisibleRows();this.adjustBufferInset();this.onLayout(vw,vh);},removeRow:function(row)
{Ext.removeNode(this.getRow(row));},removeRows:function(firstRow,lastRow)
{var bd=this.mainBody.dom;for(var rowIndex=firstRow;rowIndex<=lastRow;rowIndex++){Ext.removeNode(bd.childNodes[firstRow]);}},_onExpand:function(panel)
{this.adjustVisibleRows();this.adjustBufferInset();this.adjustScrollerPos(this.rowHeight*this.rowIndex,true);},onColumnMove:function(cm,oldIndex,newIndex)
{this.indexMap=null;this.replaceLiveRows(this.rowIndex,true);this.updateHeaders();this.updateHeaderSortState();this.afterMove(newIndex);},onColumnWidthUpdated:function(col,w,tw)
{this.adjustVisibleRows();this.adjustBufferInset();},onAllColumnWidthsUpdated:function(ws,tw)
{this.adjustVisibleRows();this.adjustBufferInset();},onRowSelect:function(row)
{if(row<this.rowIndex||row>this.rowIndex+this.visibleRows){return;}
this.addRowClass(row,"x-grid3-row-selected");},onRowDeselect:function(row)
{if(row<this.rowIndex||row>this.rowIndex+this.visibleRows){return;}
this.removeRowClass(row,"x-grid3-row-selected");},onClear:function()
{this.reset(false);},onBulkRemove:function(store,removedData)
{var record=null;var index=0;var viewIndex=0;var len=removedData.length;var removedInView=false;var removedAfterView=false;var scrollerAdjust=0;if(len==0){return;}
var tmpRowIndex=this.rowIndex;var removedBefore=0;var removedAfter=0;var removedIn=0;for(var i=0;i<len;i++){record=removedData[i][0];index=removedData[i][1];viewIndex=(index!=Number.MIN_VALUE&&index!=Number.MAX_VALUE)?index+this.ds.bufferRange[0]:index;if(viewIndex<this.rowIndex){removedBefore++;}else if(viewIndex>=this.rowIndex&&viewIndex<=this.rowIndex+(this.visibleRows-1)){removedIn++;}else if(viewIndex>=this.rowIndex+this.visibleRows){removedAfter++;}
this.fireEvent("beforerowremoved",this,viewIndex,record);this.fireEvent("rowremoved",this,viewIndex,record);}
var totalLength=this.ds.totalLength;this.rowIndex=Math.max(0,Math.min(this.rowIndex-removedBefore,totalLength-(this.visibleRows-1)));this.lastRowIndex=this.rowIndex;this.adjustScrollerPos(-(removedBefore*this.rowHeight),true);this.updateLiveRows(this.rowIndex,true);this.adjustBufferInset();this.processRows(0,undefined,false);},onRemove:function(ds,record,index)
{this.onBulkRemove(ds,[[record,index]]);},onAdd:function(ds,records,index)
{var recordLen=records.length;if(index==Number.MAX_VALUE||index==Number.MIN_VALUE){this.fireEvent("beforerowsinserted",this,index,index);if(index==Number.MIN_VALUE){this.rowIndex=this.rowIndex+recordLen;this.lastRowIndex=this.rowIndex;this.adjustBufferInset();this.adjustScrollerPos(this.rowHeight*recordLen,true);this.fireEvent("rowsinserted",this,index,index,recordLen);this.processRows(0,undefined,false);this.fireEvent('cursormove',this,this.rowIndex,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength);return;}
this.adjustBufferInset();this.fireEvent("rowsinserted",this,index,index,recordLen);return;}
var start=index+this.ds.bufferRange[0];var end=start+(recordLen-1);var len=this.getRows().length;var firstRow=0;var lastRow=0;if(start>this.rowIndex+(this.visibleRows-1)){this.fireEvent("beforerowsinserted",this,start,end);this.fireEvent("rowsinserted",this,start,end,recordLen);this.adjustVisibleRows();this.adjustBufferInset();}
else if(start>=this.rowIndex&&start<=this.rowIndex+(this.visibleRows-1)){firstRow=index;lastRow=index+(recordLen-1);this.lastRowIndex=this.rowIndex;this.rowIndex=(start>this.rowIndex)?this.rowIndex:start;this.insertRows(ds,firstRow,lastRow);if(this.lastRowIndex!=this.rowIndex){this.fireEvent('cursormove',this,this.rowIndex,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength);}
this.adjustVisibleRows();this.adjustBufferInset();}
else if(start<this.rowIndex){this.fireEvent("beforerowsinserted",this,start,end);this.rowIndex=this.rowIndex+recordLen;this.lastRowIndex=this.rowIndex;this.adjustVisibleRows();this.adjustBufferInset();this.adjustScrollerPos(this.rowHeight*recordLen,true);this.fireEvent("rowsinserted",this,start,end,recordLen);this.processRows(0,undefined,true);this.fireEvent('cursormove',this,this.rowIndex,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength);}},onBeforeLoad:function(store,options)
{options.params=options.params||{};var apply=Ext.apply;apply(options,{scope:this,callback:function(){this.reset(false);}});apply(options.params,{start:0,limit:this.ds.bufferSize});return true;},onLoad:function(o1,o2,options)
{this.adjustBufferInset();},onDataChange:function(store)
{this.updateHeaderSortState();},liveBufferUpdate:function(records,options,success)
{if(success===true){this.fireEvent('buffer',this,this.ds,this.rowIndex,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength,options);this.isBuffering=false;this.isPrebuffering=false;this.showLoadMask(false);this.grid.selModel.replaceSelections(records);if(this.isInRange(this.rowIndex)){this.replaceLiveRows(this.rowIndex,options.forceRepaint);}else{this.updateLiveRows(this.rowIndex);}
if(this.requestQueue>=0){var offset=this.requestQueue;this.requestQueue=-1;this.updateLiveRows(offset);}
return;}else{this.fireEvent('bufferfailure',this,this.ds,options);}
this.requestQueue=-1;this.isBuffering=false;this.isPrebuffering=false;this.showLoadMask(false);},handleWheel:function(e)
{if(this.rowHeight==-1){e.stopEvent();return;}
var d=e.getWheelDelta();this.adjustScrollerPos(-(d*this.rowHeight));e.stopEvent();},onLiveScroll:function()
{var scrollTop=this.liveScroller.dom.scrollTop;var cursor=Math.floor((scrollTop)/this.rowHeight);this.rowIndex=cursor;if(cursor==this.lastRowIndex){return;}
this.updateLiveRows(cursor);this.lastScrollPos=this.liveScroller.dom.scrollTop;},refreshRow:function(record)
{var ds=this.ds,index;if(typeof record=='number'){index=record;record=ds.getAt(index);}else{index=ds.indexOf(record);}
var viewIndex=index+this.ds.bufferRange[0];if(viewIndex<this.rowIndex||viewIndex>=this.rowIndex+this.visibleRows){this.fireEvent("rowupdated",this,viewIndex,record);return;}
this.insertRows(ds,index,index,true);this.fireEvent("rowupdated",this,viewIndex,record);},processRows:function(startRow,skipStripe,paintSelections)
{skipStripe=skipStripe||!this.grid.stripeRows;startRow=0;var rows=this.getRows();var cls=' x-grid3-row-alt ';var cursor=this.rowIndex;var index=0;var selections=this.grid.selModel.selections;var ds=this.ds;var row=null;for(var i=startRow,len=rows.length;i<len;i++){index=i+cursor;row=rows[i];row.rowIndex=index;if(paintSelections!==false){if(this.grid.selModel.isSelected(this.ds.getAt(index))===true){this.addRowClass(index,"x-grid3-row-selected");}else{this.removeRowClass(index,"x-grid3-row-selected");}
this.fly(row).removeClass("x-grid3-row-over");}
if(!skipStripe){var isAlt=((index+1)%2==0);var hasAlt=(' '+row.className+' ').indexOf(cls)!=-1;if(isAlt==hasAlt){continue;}
if(isAlt){row.className+=" x-grid3-row-alt";}else{row.className=row.className.replace("x-grid3-row-alt","");}}}},insertRows:function(dm,firstRow,lastRow,isUpdate)
{var viewIndexFirst=firstRow+this.ds.bufferRange[0];var viewIndexLast=lastRow+this.ds.bufferRange[0];if(!isUpdate){this.fireEvent("beforerowsinserted",this,viewIndexFirst,viewIndexLast);}
if(isUpdate!==true&&(this.getRows().length+(lastRow-firstRow))>=this.visibleRows){this.removeRows((this.visibleRows-1)-(lastRow-firstRow),this.visibleRows-1);}else if(isUpdate){this.removeRows(viewIndexFirst-this.rowIndex,viewIndexLast-this.rowIndex);}
var lastRenderRow=(firstRow==lastRow)?lastRow:Math.min(lastRow,(this.rowIndex-this.ds.bufferRange[0])+(this.visibleRows-1));var html=this.renderRows(firstRow,lastRenderRow);var before=this.getRow(viewIndexFirst);if(before){Ext.DomHelper.insertHtml('beforeBegin',before,html);}else{Ext.DomHelper.insertHtml('beforeEnd',this.mainBody.dom,html);}
if(isUpdate===true){var rows=this.getRows();var cursor=this.rowIndex;for(var i=0,max_i=rows.length;i<max_i;i++){rows[i].rowIndex=cursor+i;}}
if(!isUpdate){this.fireEvent("rowsinserted",this,viewIndexFirst,viewIndexLast,(viewIndexLast-viewIndexFirst)+1);this.processRows(0,undefined,true);}},getRow:function(row)
{if(row-this.rowIndex<0){return null;}
return this.getRows()[row-this.rowIndex];},getCell:function(row,col)
{var row=this.getRow(row);return row?row.getElementsByTagName('td')[col]:null;},focusCell:function(row,col,hscroll)
{var xy=this.ensureVisible(row,col,hscroll);if(!xy){return;}
this.focusEl.setXY(xy);if(Ext.isGecko){this.focusEl.focus();}else{this.focusEl.focus.defer(1,this.focusEl);}},ensureVisible:function(row,col,hscroll)
{if(typeof row!="number"){row=row.rowIndex;}
if(row<0||row>=this.ds.totalLength){return;}
col=(col!==undefined?col:0);var rowInd=row-this.rowIndex;if(this.rowClipped&&row==this.rowIndex+this.visibleRows-1){this.adjustScrollerPos(this.rowHeight);}else if(row>=this.rowIndex+this.visibleRows){this.adjustScrollerPos(((row-(this.rowIndex+this.visibleRows))+1)*this.rowHeight);}else if(row<=this.rowIndex){this.adjustScrollerPos((rowInd)*this.rowHeight);}
var rowEl=this.getRow(row),cellEl;if(!rowEl){return;}
if(!(hscroll===false&&col===0)){while(this.cm.isHidden(col)){col++;}
cellEl=this.getCell(row,col);}
var c=this.scroller.dom;if(hscroll!==false){var cleft=parseInt(cellEl.offsetLeft,10);var cright=cleft+cellEl.offsetWidth;var sleft=parseInt(c.scrollLeft,10);var sright=sleft+c.clientWidth;if(cleft<sleft){c.scrollLeft=cleft;}else if(cright>sright){c.scrollLeft=cright-c.clientWidth;}}
return cellEl?Ext.fly(cellEl).getXY():[c.scrollLeft+this.el.getX(),Ext.fly(rowEl).getY()];},isRecordRendered:function(record)
{var ind=this.ds.indexOf(record);if(ind>=this.rowIndex&&ind<this.rowIndex+this.visibleRows){return true;}
return false;},isInRange:function(rowIndex)
{var lastRowIndex=Math.min(this.ds.totalLength-1,rowIndex+(this.visibleRows-1));return(rowIndex>=this.ds.bufferRange[0])&&(lastRowIndex<=this.ds.bufferRange[1]);},getPredictedBufferIndex:function(index,inRange,down)
{if(!inRange){if(index+this.ds.bufferSize>=this.ds.totalLength){return this.ds.totalLength-this.ds.bufferSize;}
return Math.max(0,(index+this.visibleRows)-Math.round(this.ds.bufferSize/2));}
if(!down){return Math.max(0,(index-this.ds.bufferSize)+this.visibleRows);}
if(down){return Math.max(0,Math.min(index,this.ds.totalLength-this.ds.bufferSize));}},updateLiveRows:function(index,forceRepaint,forceReload)
{var inRange=this.isInRange(index);if(this.isBuffering){if(this.isPrebuffering){if(inRange){this.replaceLiveRows(index);}else{this.showLoadMask(true);}}
this.fireEvent('cursormove',this,index,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength);this.requestQueue=index;return;}
var lastIndex=this.lastIndex;this.lastIndex=index;var inRange=this.isInRange(index);var down=false;if(inRange&&forceReload!==true){this.replaceLiveRows(index,forceRepaint);this.fireEvent('cursormove',this,index,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength);if(index>lastIndex){down=true;var totalCount=this.ds.totalLength;if(index+this.visibleRows+this.nearLimit<=this.ds.bufferRange[1]){return;}
if(this.ds.bufferRange[1]+1>=totalCount){return;}}else if(index<lastIndex){down=false;if(this.ds.bufferRange[0]<=0){return;}
if(index-this.nearLimit>this.ds.bufferRange[0]){return;}}else{return;}
this.isPrebuffering=true;}
this.isBuffering=true;var bufferOffset=this.getPredictedBufferIndex(index,inRange,down);if(!inRange){this.showLoadMask(true);}
this.ds.suspendEvents();var sInfo=this.ds.sortInfo;var params={};if(this.ds.lastOptions){Ext.apply(params,this.ds.lastOptions.params);}
params.start=bufferOffset;params.limit=this.ds.bufferSize;if(sInfo){params.dir=sInfo.direction;params.sort=sInfo.field;}
var opts={forceRepaint:forceRepaint,callback:this.liveBufferUpdate,scope:this,params:params};this.fireEvent('beforebuffer',this,this.ds,index,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength,opts);this.ds.load(opts);this.ds.resumeEvents();},showLoadMask:function(show)
{if(this.loadMask==null){if(show){this.loadMask=new Ext.LoadMask(this.mainBody.dom.parentNode.parentNode,this.loadMaskConfig);}else{return;}}
if(show){this.loadMask.show();this.liveScroller.setStyle('zIndex',this._maskIndex);}else{this.loadMask.hide();this.liveScroller.setStyle('zIndex',1);}},replaceLiveRows:function(cursor,forceReplace,processRows)
{var spill=cursor-this.lastRowIndex;if(spill==0&&forceReplace!==true){return;}
var append=spill>0;spill=Math.abs(spill);var bufferRange=this.ds.bufferRange;var cursorBuffer=cursor-bufferRange[0];var lpIndex=Math.min(cursorBuffer+this.visibleRows-1,bufferRange[1]-bufferRange[0]);if(spill>=this.visibleRows||spill==0){this.mainBody.update(this.renderRows(cursorBuffer,lpIndex));}else{if(append){this.removeRows(0,spill-1);if(cursorBuffer+this.visibleRows-spill<=bufferRange[1]-bufferRange[0]){var html=this.renderRows(cursorBuffer+this.visibleRows-spill,lpIndex);Ext.DomHelper.insertHtml('beforeEnd',this.mainBody.dom,html);}}else{this.removeRows(this.visibleRows-spill,this.visibleRows-1);var html=this.renderRows(cursorBuffer,cursorBuffer+spill-1);Ext.DomHelper.insertHtml('beforeBegin',this.mainBody.dom.firstChild,html);}}
if(processRows!==false){this.processRows(0,undefined,true);}
this.lastRowIndex=cursor;},adjustBufferInset:function()
{var liveScrollerDom=this.liveScroller.dom;var g=this.grid,ds=g.store;var c=g.getGridEl();var elWidth=c.getSize().width;var hiddenRows=(ds.totalLength==this.visibleRows-this.rowClipped)?0:Math.max(0,ds.totalLength-(this.visibleRows-this.rowClipped));if(hiddenRows==0){this.scroller.setWidth(elWidth);liveScrollerDom.style.display='none';return;}else{this.scroller.setWidth(elWidth-this.scrollOffset);liveScrollerDom.style.display='';}
var scrollbar=this.cm.getTotalWidth()+this.scrollOffset>elWidth;var contHeight=liveScrollerDom.parentNode.offsetHeight+
((ds.totalLength>0&&scrollbar)?-this.horizontalScrollOffset:0)
-this.hdHeight;liveScrollerDom.style.height=Math.max(contHeight,this.horizontalScrollOffset*2)+"px";if(this.rowHeight==-1){return;}
this.liveScrollerInset.style.height=(hiddenRows==0?0:contHeight+(hiddenRows*this.rowHeight))+"px";},adjustVisibleRows:function()
{if(this.rowHeight==-1){if(this.getRows()[0]){this.rowHeight=this.getRows()[0].offsetHeight;if(this.rowHeight<=0){this.rowHeight=-1;return;}}else{return;}}
var g=this.grid,ds=g.store;var c=g.getGridEl();var cm=this.cm;var size=c.getSize();var width=size.width;var vh=size.height;var vw=width-this.scrollOffset;if(cm.getTotalWidth()>vw){vh-=this.horizontalScrollOffset;}
vh-=this.mainHd.getHeight();var totalLength=ds.totalLength||0;vh=vh*3;var visibleRows=Math.max(1,Math.floor(vh/this.rowHeight));this.rowClipped=0;if(totalLength>visibleRows&&this.rowHeight/3<(vh-(visibleRows*this.rowHeight))){visibleRows=Math.min(visibleRows+1,totalLength);this.rowClipped=1;}
if(this.visibleRows==visibleRows){return;}
this.visibleRows=visibleRows;if(this.isBuffering){return;}
if(this.rowIndex+(visibleRows-this.rowClipped)>totalLength){this.rowIndex=Math.max(0,totalLength-(visibleRows-this.rowClipped));this.lastRowIndex=this.rowIndex;}
this.updateLiveRows(this.rowIndex,true);},adjustScrollerPos:function(pixels,suspendEvent)
{if(pixels==0){return;}
var liveScroller=this.liveScroller;var scrollDom=liveScroller.dom;if(suspendEvent===true){liveScroller.un('scroll',this.onLiveScroll,this);}
this.lastScrollPos=scrollDom.scrollTop;scrollDom.scrollTop+=pixels;if(suspendEvent===true){scrollDom.scrollTop=scrollDom.scrollTop;liveScroller.on('scroll',this.onLiveScroll,this,{buffer:this.scrollDelay});}}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.JsonReader=function(meta,recordType){Ext.ux.grid.livegrid.JsonReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.ux.grid.livegrid.JsonReader,Ext.data.JsonReader,{readRecords:function(o)
{var s=this.meta;if(!this.ef&&s.versionProperty){this.getVersion=this.getJsonAccessor(s.versionProperty);}
if(!this.__readRecords){this.__readRecords=Ext.ux.grid.livegrid.JsonReader.superclass.readRecords;}
var intercept=this.__readRecords.call(this,o);if(s.versionProperty){var v=this.getVersion(o);intercept.version=(v===undefined||v==="")?null:v;}
return intercept;}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.RowSelectionModel=function(config){this.addEvents({'selectiondirty':true});Ext.apply(this,config);this.pendingSelections={};Ext.ux.grid.livegrid.RowSelectionModel.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.livegrid.RowSelectionModel,Ext.grid.RowSelectionModel,{initEvents:function(){Ext.ux.grid.livegrid.RowSelectionModel.superclass.initEvents.call(this);this.grid.view.on('rowsinserted',this.onAdd,this);this.grid.store.on('selectionsload',this.onSelectionsLoad,this);},onRemove:function(v,index,r){var ranges=this.getPendingSelections();var rangesLength=ranges.length;var selectionChanged=false;if(index==Number.MIN_VALUE||index==Number.MAX_VALUE){if(r){if(this.isIdSelected(r.id)&&index==Number.MIN_VALUE){this.shiftSelections(this.grid.store.bufferRange[1],-1);}
this.selections.remove(r);selectionChanged=true;}
if(index==Number.MIN_VALUE){this.clearPendingSelections(0,this.grid.store.bufferRange[0]);}else{this.clearPendingSelections(this.grid.store.bufferRange[1]);}
if(rangesLength!=0){this.fireEvent('selectiondirty',this,index,1);}}else{selectionChanged=this.isIdSelected(r.id);if(!selectionChanged){return;}
this.selections.remove(r);if(rangesLength!=0){var startRange=ranges[0];var endRange=ranges[rangesLength-1];if(index<=endRange||index<=startRange){this.shiftSelections(index,-1);this.fireEvent('selectiondirty',this,index,1);}}}
if(selectionChanged){this.fireEvent('selectionchange',this);}},onAdd:function(store,index,endIndex,recordLength){var ranges=this.getPendingSelections();var rangesLength=ranges.length;if((index==Number.MIN_VALUE||index==Number.MAX_VALUE)){if(index==Number.MIN_VALUE){this.clearPendingSelections(0,this.grid.store.bufferRange[0]);this.shiftSelections(this.grid.store.bufferRange[1],recordLength);}else{this.clearPendingSelections(this.grid.store.bufferRange[1]);}
if(rangesLength!=0){this.fireEvent('selectiondirty',this,index,r);}
return;}
var startRange=ranges[0];var endRange=ranges[rangesLength-1];var viewIndex=index;if(viewIndex<=endRange||viewIndex<=startRange){this.fireEvent('selectiondirty',this,viewIndex,recordLength);this.shiftSelections(viewIndex,recordLength);}},shiftSelections:function(startRow,length){var index=0;var newIndex=0;var newRequests={};var ds=this.grid.store;var storeIndex=startRow-ds.bufferRange[0];var newStoreIndex=0;var totalLength=this.grid.store.totalLength;var rec=null;var ranges=this.getPendingSelections();var rangesLength=ranges.length;if(rangesLength==0){return;}
for(var i=0;i<rangesLength;i++){index=ranges[i];if(index<startRow){continue;}
newIndex=index+length;newStoreIndex=storeIndex+length;if(newIndex>=totalLength){break;}
rec=ds.getAt(newStoreIndex);if(rec){this.selections.add(rec);}else{newRequests[newIndex]=true;}}
this.pendingSelections=newRequests;},onSelectionsLoad:function(store,records,ranges){this.replaceSelections(records);},hasNext:function(){return this.last!==false&&(this.last+1)<this.grid.store.getTotalCount();},getCount:function(){return this.selections.length+this.getPendingSelections().length;},isSelected:function(index){if(typeof index=="number"){var orgInd=index;index=this.grid.store.getAt(orgInd);if(!index){var ind=this.getPendingSelections().indexOf(orgInd);if(ind!=-1){return true;}
return false;}}
var r=index;return(r&&this.selections.key(r.id)?true:false);},deselectRecord:function(record,preventViewNotify){if(this.locked){return;}
var isSelected=this.selections.key(record.id);if(!isSelected){return;}
var store=this.grid.store;var index=store.indexOfId(record.id);if(index==-1){index=store.findInsertIndex(record);if(index!=Number.MIN_VALUE&&index!=Number.MAX_VALUE){index+=store.bufferRange[0];}}else{delete this.pendingSelections[index];}
if(this.last==index){this.last=false;}
if(this.lastActive==index){this.lastActive=false;}
this.selections.remove(record);if(!preventViewNotify){this.grid.getView().onRowDeselect(index);}
this.fireEvent("rowdeselect",this,index,record);this.fireEvent("selectionchange",this);},deselectRow:function(index,preventViewNotify){if(this.locked)return;if(this.last==index){this.last=false;}
if(this.lastActive==index){this.lastActive=false;}
var r=this.grid.store.getAt(index);delete this.pendingSelections[index];if(r){this.selections.remove(r);}
if(!preventViewNotify){this.grid.getView().onRowDeselect(index);}
this.fireEvent("rowdeselect",this,index,r);this.fireEvent("selectionchange",this);},selectRow:function(index,keepExisting,preventViewNotify){if(this.locked||index<0||index>=this.grid.store.getTotalCount()){return;}
var r=this.grid.store.getAt(index);if(this.fireEvent("beforerowselect",this,index,keepExisting,r)!==false){if(!keepExisting||this.singleSelect){this.clearSelections();}
if(r){this.selections.add(r);delete this.pendingSelections[index];}else{this.pendingSelections[index]=true;}
this.last=this.lastActive=index;if(!preventViewNotify){this.grid.getView().onRowSelect(index);}
this.fireEvent("rowselect",this,index,r);this.fireEvent("selectionchange",this);}},clearPendingSelections:function(startIndex,endIndex){if(endIndex==undefined){endIndex=Number.MAX_VALUE;}
var newSelections={};var ranges=this.getPendingSelections();var rangesLength=ranges.length;var index=0;for(var i=0;i<rangesLength;i++){index=ranges[i];if(index<=endIndex&&index>=startIndex){continue;}
newSelections[index]=true;}
this.pendingSelections=newSelections;},replaceSelections:function(records){if(!records||records.length==0){return;}
var ds=this.grid.store;var rec=null;var assigned=[];var ranges=this.getPendingSelections();var rangesLength=ranges.length
var selections=this.selections;var index=0;for(var i=0;i<rangesLength;i++){index=ranges[i];rec=ds.getAt(index);if(rec){selections.add(rec);assigned.push(rec.id);delete this.pendingSelections[index];}}
var id=null;for(i=0,len=records.length;i<len;i++){rec=records[i];id=rec.id;if(assigned.indexOf(id)==-1&&selections.containsKey(id)){selections.add(rec);}}},getPendingSelections:function(asRange){var index=1;var ranges=[];var currentRange=0;var tmpArray=[];for(var i in this.pendingSelections){tmpArray.push(parseInt(i));}
tmpArray.sort(function(o1,o2){if(o1>o2){return 1;}else if(o1<o2){return-1;}else{return 0;}});if(!asRange){return tmpArray;}
var max_i=tmpArray.length;if(max_i==0){return[];}
ranges[currentRange]=[tmpArray[0],tmpArray[0]];for(var i=0,max_i=max_i-1;i<max_i;i++){if(tmpArray[i+1]-tmpArray[i]==1){ranges[currentRange][1]=tmpArray[i+1];}else{currentRange++;ranges[currentRange]=[tmpArray[i+1],tmpArray[i+1]];}}
return ranges;},clearSelections:function(fast){if(this.locked)return;if(fast!==true){var ds=this.grid.store;var s=this.selections;var ind=-1;s.each(function(r){ind=ds.indexOfId(r.id);if(ind!=-1){this.deselectRow(ind+ds.bufferRange[0]);}},this);s.clear();this.pendingSelections={};}else{this.selections.clear();this.pendingSelections={};}
this.last=false;},selectRange:function(startRow,endRow,keepExisting){if(this.locked){return;}
if(!keepExisting){this.clearSelections();}
if(startRow<=endRow){for(var i=startRow;i<=endRow;i++){this.selectRow(i,true);}}else{for(var i=startRow;i>=endRow;i--){this.selectRow(i,true);}}}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.Store=function(config){config=config||{};config.remoteSort=true;this._autoLoad=config.autoLoad?true:false;config.autoLoad=false;this.addEvents('bulkremove','versionchange','beforeselectionsload','selectionsload');Ext.ux.grid.livegrid.Store.superclass.constructor.call(this,config);this.totalLength=0;this.bufferRange=[-1,-1];this.on('clear',function(){this.bufferRange=[-1,-1];},this);if(this.url&&!this.selectionsProxy){this.selectionsProxy=new Ext.data.HttpProxy({url:this.url});}};Ext.extend(Ext.ux.grid.livegrid.Store,Ext.data.Store,{version:null,insert:function(index,records)
{records=[].concat(records);index=index>=this.bufferSize?Number.MAX_VALUE:index;if(index==Number.MIN_VALUE||index==Number.MAX_VALUE){var l=records.length;if(index==Number.MIN_VALUE){this.bufferRange[0]+=l;this.bufferRange[1]+=l;}
this.totalLength+=l;this.fireEvent("add",this,records,index);return;}
var split=false;var insertRecords=records;if(records.length+index>=this.bufferSize){split=true;insertRecords=records.splice(0,this.bufferSize-index)}
this.totalLength+=insertRecords.length;if(this.bufferRange[0]<=-1){this.bufferRange[0]=0;}
if(this.bufferRange[1]<(this.bufferSize-1)){this.bufferRange[1]=Math.min(this.bufferRange[1]+insertRecords.length,this.bufferSize-1);}
for(var i=0,len=insertRecords.length;i<len;i++){this.data.insert(index,insertRecords[i]);insertRecords[i].join(this);}
while(this.getCount()>this.bufferSize){this.data.remove(this.data.last());}
this.fireEvent("add",this,insertRecords,index);if(split==true){this.fireEvent("add",this,records,Number.MAX_VALUE);}},remove:function(record,suspendEvent)
{var index=this._getIndex(record);if(index<0){this.totalLength-=1;if(this.pruneModifiedRecords){this.modified.remove(record);}
this.bufferRange[0]=Math.max(-1,this.bufferRange[0]-1);this.bufferRange[1]=Math.max(-1,this.bufferRange[1]-1);if(suspendEvent!==true){this.fireEvent("remove",this,record,index);}
return index;}
this.bufferRange[1]=Math.max(-1,this.bufferRange[1]-1);this.data.removeAt(index);if(this.pruneModifiedRecords){this.modified.remove(record);}
this.totalLength-=1;if(suspendEvent!==true){this.fireEvent("remove",this,record,index);}
return index;},_getIndex:function(record)
{var index=this.indexOfId(record.id);if(index<0){index=this.findInsertIndex(record);}
return index;},bulkRemove:function(records)
{var rec=null;var recs=[];var ind=0;var len=records.length;var orgIndexes=[];for(var i=0;i<len;i++){rec=records[i];orgIndexes[rec.id]=this._getIndex(rec);}
for(var i=0;i<len;i++){rec=records[i];this.remove(rec,true);recs.push([rec,orgIndexes[rec.id]]);}
this.fireEvent("bulkremove",this,recs);},removeAll:function()
{this.totalLength=0;this.bufferRange=[-1,-1];this.data.clear();if(this.pruneModifiedRecords){this.modified=[];}
this.fireEvent("clear",this);},loadRanges:function(ranges)
{var max_i=ranges.length;if(max_i>0&&!this.selectionsProxy.activeRequest&&this.fireEvent("beforeselectionsload",this,ranges)!==false){var lParams=this.lastOptions.params;var params={};params.ranges=Ext.encode(ranges);if(lParams){if(lParams.sort){params.sort=lParams.sort;}
if(lParams.dir){params.dir=lParams.dir;}}
var options={};for(var i in this.lastOptions){options.i=this.lastOptions.i;}
options.ranges=params.ranges;this.selectionsProxy.load(params,this.reader,this.selectionsLoaded,this,options);}},loadSelections:function(ranges)
{if(ranges.length==0){return;}
this.loadRanges(ranges);},selectionsLoaded:function(o,options,success)
{if(this.checkVersionChange(o,options,success)!==false){var r=o.records;for(var i=0,len=r.length;i<len;i++){r[i].join(this);}
this.fireEvent("selectionsload",this,o.records,Ext.decode(options.ranges));}else{this.fireEvent("selectionsload",this,[],Ext.decode(options.ranges));}},checkVersionChange:function(o,options,success)
{if(o&&success!==false){if(o.version!==undefined){var old=this.version;this.version=o.version;if(this.version!==old){return this.fireEvent('versionchange',this,old,this.version);}}}},findInsertIndex:function(record)
{this.remoteSort=false;var index=Ext.ux.grid.livegrid.Store.superclass.findInsertIndex.call(this,record);this.remoteSort=true;if(this.bufferRange[0]<=0&&index==0){return index;}else if(this.bufferRange[0]>0&&index==0){return Number.MIN_VALUE;}else if(index>=this.bufferSize){return Number.MAX_VALUE;}
return index;},sortData:function(f,direction)
{direction=direction||'ASC';var st=this.fields.get(f).sortType;var fn=function(r1,r2){var v1=st(r1.data[f]),v2=st(r2.data[f]);return v1>v2?1:(v1<v2?-1:0);};this.data.sort(direction,fn);},onMetaChange:function(meta,rtype,o)
{this.version=null;Ext.ux.grid.livegrid.Store.superclass.onMetaChange.call(this,meta,rtype,o);},loadRecords:function(o,options,success)
{this.checkVersionChange(o,options,success);if(!o){this.bufferRange=[-1,-1];}else{this.bufferRange=[options.params.start,Math.max(0,Math.min((options.params.start+options.params.limit)-1,o.totalRecords-1))];}
Ext.ux.grid.livegrid.Store.superclass.loadRecords.call(this,o,options,success);},getAt:function(index)
{if(this.bufferRange[0]==-1){return undefined;}
var modelIndex=index-this.bufferRange[0];return this.data.itemAt(modelIndex);},clearFilter:function(){},isFiltered:function(){},collect:function(){},createFilterFn:function(){},sum:function(){},filter:function(){},filterBy:function(){},query:function(){},queryBy:function(){},find:function(){},findBy:function(){}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.Toolbar=Ext.extend(Ext.Toolbar,{displayMsg:'Displaying {0} - {1} of {2}',emptyMsg:'No data to display',refreshText:"Refresh",initComponent:function()
{Ext.ux.grid.livegrid.Toolbar.superclass.initComponent.call(this);if(this.grid){this.view=this.grid.getView();}
var me=this;this.view.init=this.view.init.createSequence(function(){me.bind(this);},this.view);},updateInfo:function(rowIndex,visibleRows,totalCount)
{if(this.displayEl){var msg=totalCount==0?this.emptyMsg:String.format(this.displayMsg,rowIndex+1,rowIndex+visibleRows,totalCount);this.displayEl.update(msg);}},unbind:function(view)
{var st;var vw;if(view instanceof Ext.grid.GridView){vw=view;}else{vw=view.getView();}
st=view.ds;st.un('loadexception',this.enableLoading,this);st.un('beforeload',this.disableLoading,this);st.un('load',this.enableLoading,this);vw.un('rowremoved',this.onRowRemoved,this);vw.un('rowsinserted',this.onRowsInserted,this);vw.un('beforebuffer',this.beforeBuffer,this);vw.un('cursormove',this.onCursorMove,this);vw.un('buffer',this.onBuffer,this);vw.un('bufferfailure',this.enableLoading,this);this.view=undefined;},bind:function(view)
{this.view=view;var st=view.ds;st.on('loadexception',this.enableLoading,this);st.on('beforeload',this.disableLoading,this);st.on('load',this.enableLoading,this);view.on('rowremoved',this.onRowRemoved,this);view.on('rowsinserted',this.onRowsInserted,this);view.on('beforebuffer',this.beforeBuffer,this);view.on('cursormove',this.onCursorMove,this);view.on('buffer',this.onBuffer,this);view.on('bufferfailure',this.enableLoading,this);},enableLoading:function()
{this.loading.setDisabled(false);},disableLoading:function()
{this.loading.setDisabled(true);},onCursorMove:function(view,rowIndex,visibleRows,totalCount)
{this.updateInfo(rowIndex,visibleRows,totalCount);},onRowsInserted:function(view,start,end)
{this.updateInfo(view.rowIndex,Math.min(view.ds.totalLength,view.visibleRows-view.rowClipped),view.ds.totalLength);},onRowRemoved:function(view,index,record)
{this.updateInfo(view.rowIndex,Math.min(view.ds.totalLength,view.visibleRows-view.rowClipped),view.ds.totalLength);},beforeBuffer:function(view,store,rowIndex,visibleRows,totalCount,options)
{this.loading.disable();this.updateInfo(rowIndex,visibleRows,totalCount);},onBuffer:function(view,store,rowIndex,visibleRows,totalCount)
{this.loading.enable();this.updateInfo(rowIndex,visibleRows,totalCount);},onClick:function(type)
{switch(type){case'refresh':if(this.view.reset(true)){this.loading.disable();}else{this.loading.enable();}
break;}},onRender:function(ct,position)
{Ext.PagingToolbar.superclass.onRender.call(this,ct,position);this.loading=this.addButton({tooltip:this.refreshText,iconCls:"x-tbar-loading",handler:this.onClick.createDelegate(this,["refresh"])});this.addSeparator();if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom).createChild({cls:'x-paging-info'});}}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.DragZone=function(grid,config){Ext.ux.grid.livegrid.DragZone.superclass.constructor.call(this,grid,config);this.view.ds.on('beforeselectionsload',this._onBeforeSelectionsLoad,this);this.view.ds.on('selectionsload',this._onSelectionsLoad,this);};Ext.extend(Ext.ux.grid.livegrid.DragZone,Ext.grid.GridDragZone,{isDropValid:true,onInitDrag:function(e)
{this.view.ds.loadSelections(this.grid.selModel.getPendingSelections(true));Ext.ux.grid.livegrid.DragZone.superclass.onInitDrag.call(this,e);},_onBeforeSelectionsLoad:function()
{this.isDropValid=false;Ext.fly(this.proxy.el.dom.firstChild).addClass('ext-ux-livegrid-drop-waiting');},_onSelectionsLoad:function()
{this.isDropValid=true;this.ddel.innerHTML=this.grid.getDragDropText();Ext.fly(this.proxy.el.dom.firstChild).removeClass('ext-ux-livegrid-drop-waiting');}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.EditorGridPanel=Ext.extend(Ext.grid.EditorGridPanel,{initEvents:function()
{Ext.ux.grid.livegrid.EditorGridPanel.superclass.initEvents.call(this);this.view.on("cursormove",this.stopEditing,this,[true]);},startEditing:function(row,col)
{this.stopEditing();if(this.colModel.isCellEditable(col,row)){this.view.ensureVisible(row,col,true);if(!this.store.getAt(row)){return;}}
return Ext.ux.grid.livegrid.EditorGridPanel.superclass.startEditing.call(this,row,col);},walkCells:function(row,col,step,fn,scope)
{return Ext.ux.grid.livegrid.GridPanel.prototype.walkCells.call(this,row,col,step,fn,scope);},onRender:function(ct,position)
{return Ext.ux.grid.livegrid.GridPanel.prototype.onRender.call(this,ct,position);}});

Ext.ux.grid.livegrid.CheckboxSelectionModel=Ext.extend(Ext.ux.grid.livegrid.RowSelectionModel,{header:'<div class="x-grid3-hd-checker">&#160;</div>',width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:'',id:'checker',initEvents:function(){Ext.ux.grid.livegrid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);Ext.fly(view.innerHd).on('mousedown',this.onHdMouseDown,this);},this);},onMouseDown:function(e,t){if(e.button===0&&t.className=='x-grid3-row-checker'){e.stopEvent();var row=e.getTarget('.x-grid3-row');if(row){var index=row.rowIndex;if(this.isSelected(index)){this.deselectRow(index);}else{this.selectRow(index,true);}}}},onHdMouseDown:function(e,t){if(t.className=='x-grid3-hd-checker'){e.stopEvent();var hd=Ext.fly(t.parentNode);var isChecked=hd.hasClass('x-grid3-hd-checker-on');if(isChecked){this.clearSelections();}else{this.selectAll();}}},clearSelections:function(){this.grid.view.mainHd.child('.x-grid3-hd-checker').removeClass('x-grid3-hd-checker-on');Ext.ux.grid.livegrid.CheckboxSelectionModel.superclass.clearSelections.call(this);},selectAll:function(){this.selectRange(0,this.grid.store.getTotalCount());this.grid.view.mainHd.child('.x-grid3-hd-checker').addClass('x-grid3-hd-checker-on');},renderer:function(v,p,record){return'<div class="x-grid3-row-checker">&#160;</div>';},hideCheckboxes:function(){var cm=this.grid.getColumnModel();var idx=cm.getIndexById(this.id);cm.setHidden(idx,true);},showCheckboxes:function(){var cm=this.grid.getColumnModel();var idx=cm.getIndexById(this.id);cm.setHidden(idx,false);},setCheckboxesVisible:function(visible){this[(visible===true)?'showCheckboxes':'hideCheckboxes']();}});

Ext.ux.grid.livegrid.RadioSelectionModel=Ext.extend(Ext.ux.grid.livegrid.RowSelectionModel,{header:'<div class="x-grid3-hd-radio">&#160;</div>',width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:'',id:'radio',initEvents:function(){Ext.ux.grid.livegrid.RadioSelectionModel.superclass.initEvents.call(this);this.singleSelect=true;this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);Ext.fly(view.innerHd).on('mousedown',this.onHdMouseDown,this);},this);},onMouseDown:function(e,t){if(e.button===0&&t.className=='x-grid3-row-radio'){e.stopEvent();var row=e.getTarget('.x-grid3-row');if(row){var index=row.rowIndex;if(this.isSelected(index)){this.deselectRow(index);}else{this.selectRow(index,true);}}}},onHdMouseDown:function(e,t){if(t.className=='x-grid3-hd-radio'){e.stopEvent();var hd=Ext.fly(t.parentNode);var isChecked=hd.hasClass('x-grid3-hd-radio-on');if(isChecked){hd.removeClass('x-grid3-hd-radio-on');this.clearSelections();}else{hd.addClass('x-grid3-hd-radio-on');this.selectAll();}}},selectAll:function(){},renderer:function(v,p,record){return'<div class="x-grid3-row-radio">&#160;</div>';},hideCheckboxes:function(){var cm=this.grid.getColumnModel();var idx=cm.getIndexById(this.id);cm.setHidden(idx,true);},showCheckboxes:function(){var cm=this.grid.getColumnModel();var idx=cm.getIndexById(this.id);cm.setHidden(idx,false);},setCheckboxesVisible:function(visible){this[(visible===true)?'showCheckboxes':'hideCheckboxes']();}});

Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.ExpandableGridView=function(config){this.addEvents({'beforebuffer':true,'buffer':true,'bufferfailure':true,'cursormove':true});this.loadMask=false;Ext.apply(this,config);this._gridViewSuperclass=Ext.ux.grid.livegrid.ExpandableGridView.superclass;this._gridViewSuperclass.constructor.call(this);};Ext.extend(Ext.ux.grid.livegrid.ExpandableGridView,Ext.grid.GridView,{browserWarningTitle:'Warning',browserWarningMessage:'Your browser can not display more than {0} results.',maxIE8DivHeight:10000000,emptyInnerRowHeight:100000,rowHeight:-1,totalRowsHeight:-1,lastScrollPos:0,isBuffering:false,loadMask:null,lastPaddingTop:0,lastPaddingBottom:0,renderUI:function(){var g=this.grid;var dEnabled=g.enableDragDrop||g.enableDrag;g.enableDragDrop=false;g.enableDrag=false;this._gridViewSuperclass.renderUI.call(this);var g=this.grid;g.enableDragDrop=dEnabled;g.enableDrag=dEnabled;if(dEnabled){this.dragZone=new Ext.ux.grid.livegrid.DragZone(g,{ddGroup:g.ddGroup||'GridDD'});}
if(this.loadMask){this.loadMask=new Ext.LoadMask(this.grid.bwrap,this.loadMask);}},layout:function(){if(!this.mainBody){return;}
var g=this.grid;var c=g.getGridEl();var csize=c.getSize(true);var vw=csize.width;if(vw<20||csize.height<20){return;}
if(g.autoHeight){this.scroller.dom.style.overflow='visible';if(Ext.isSafari){this.scroller.dom.style.position='static';}}else{this.el.setSize(csize.width,csize.height);var hdHeight=this.mainHd.getHeight();var vh=csize.height-(hdHeight);this.scroller.setSize(vw,vh);if(this.innerHd){this.innerHd.style.width=(vw)+'px';}}
if(this.forceFit){if(this.lastViewWidth!=vw){this.fitColumns(false,false);this.lastViewWidth=vw;}}else{this.autoExpand();this.syncHeaderScroll();}
this.initRowHeight();this.onLayout(vw,vh);},initData:function(ds,cm){if(this.ds){this.ds.un('beforeload',this.onBeforeLoad,this);}
if(ds){ds.on('beforeload',this.onBeforeLoad,this);}
this._gridViewSuperclass.initData.call(this,ds,cm);},onBeforeLoad:function(store,options){options.params=options.params||{};Ext.apply(options,{scope:this});Ext.apply(options.params,{start:0,limit:this.ds.bufferSize});this.ds.un('beforeload',this.onBeforeLoad,this);return true;},onRowExpand:function(exp,rec,body,index){(function(){var heightDiff=body.offsetHeight-this.rowHeight;if(heightDiff>0){this.expandedRows[index]=heightDiff;this.adjustTotalRowsHeight(heightDiff);}}).defer(100,this);},onRowBeforeCollapse:function(exp,rec,body,index){var heightDiff=body.offsetHeight-this.rowHeight;this.adjustTotalRowsHeight(-(heightDiff));delete this.expandedRows[index];},refresh:function(headersToo){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var result=this.renderBody();this.mainBody.update(result);this.rows=[];for(var i=0;i<this.mainBody.dom.childNodes.length;i++){if(i>0||!Ext.fly(this.mainBody.dom.childNodes[i]).hasClass('x-grid3-row-empty')){this.rows.push(this.mainBody.dom.childNodes[i]);}}
if(headersToo===true){this.updateHeaders();this.updateHeaderSortState();}
this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this);},init:Ext.grid.GridView.prototype.init.createSequence(function(){this.expander=this.grid.colModel.getColumnById('expander');if(this.expander){this.expandedRows={};this.expander.on({expand:this.onRowExpand,beforecollapse:this.onRowBeforeCollapse,scope:this});}
this.ds.on('load',this.liveBufferUpdate,this);this.grid.on('sortchange',function(g,sortInfo){this.lastPaddingBottom=undefined;this.lastPaddingTop=undefined;this.sortChanged=true;},this);}),initElements:Ext.grid.GridView.prototype.initElements.createSequence(function(){this.scroller.on('scroll',this.onLiveScroll,this,{buffer:this.scrollDelay});}),adjustTotalRowsHeight:function(pixels){if(pixels==0){return;}
this.totalRowsHeight+=pixels;},showLoadMask:function(show){if(this.loadMask===false)return;if(this.loadMask==null&&show){this.loadMask=new Ext.LoadMask(this.grid.bwrap,this.loadMaskConfig);}
else{return;}
if(show){this.loadMask.show();}else{this.loadMask.hide();}},resolveCell:function(row,col,hscroll){return this._gridViewSuperclass.resolveCell(row-this.ds.bufferRange[0],col,hscroll);},reset:function(forceReload)
{this.expandedRows={};this.grid.selModel.clearSelections();if(forceReload===false){this.ds.modified=[];this.lastScrollPos=0;this.lastPaddingTop=0;this.lastPaddingBottom=0;this.setScrollerPos(0);this.showLoadMask(false);this.refresh(true);this.fireEvent('cursormove',this,0,this.ds.bufferSize,this.ds.totalLength);return false;}else{var params={start:0,limit:this.ds.bufferSize};var sInfo=this.ds.sortInfo;if(sInfo){Ext.apply(params,{dir:sInfo.direction,sort:sInfo.field});}
this.lastScrollPos=0;this.lastPaddingTop=undefined;this.lastPaddingBottom=undefined;this.setScrollerPos(0);return this.ds.load({params:params});}},onLoad:function(store,records,options){if(!options.isScrolling&&!this.sortChanged){this.lastScrollPos=0;this.lastPaddingTop=undefined;this.lastPaddingBottom=undefined;}},onLiveScroll:function(e){var scrollTop=this.scroller.dom.scrollTop;if(scrollTop==this.lastScrollPos){return;}
if(this.updateTimeout){clearTimeout(this.updateTimeout);}
this.updateTimeout=this.updateLiveRows.defer(200,this,[scrollTop]);},liveBufferUpdate:function(store,records,options){this.fireEvent('buffer',this,this.ds,this.ds.bufferRange[0],Math.min(this.ds.totalLength,this.ds.bufferSize),this.ds.totalLength,options);var firstIndex=Math.max(0,this.ds.bufferRange[0]);this.paddingTop=firstIndex*this.rowHeight;var lastIndex=Math.max(0,this.ds.bufferRange[1]);this.paddingBottom=(this.ds.totalLength-1-lastIndex)*this.rowHeight;this.rowsHeight=(lastIndex-firstIndex+1)*this.rowHeight;if(this.expander){var rows=this.getRows();for(var i=0;i<rows.length;i++){var row=rows[i];if(this.expandedRows[row.rowIndex]){this.expander.expandRow(row);}}
for(var rowIndex in this.expandedRows){if(parseInt(rowIndex)<firstIndex){this.paddingTop+=this.expandedRows[rowIndex];}
else if(parseInt(rowIndex)>lastIndex){this.paddingBottom+=this.expandedRows[rowIndex];}
else{this.rowsHeight+=this.expandedRows[rowIndex];}}}
if(Ext.isIE8&&this.paddingTop>this.maxIE8DivHeight){this.paddingTop=this.maxIE8DivHeight;}
if(this.paddingTop!=this.lastPaddingTop){this.emptyTopRow=this.mainBody.createChild({cls:'x-grid3-row-empty'},this.getRow(firstIndex));if(this.paddingTop<=this.emptyInnerRowHeight){this.emptyTopRow.setHeight(this.paddingTop);}
else{var p=this.paddingTop,c;while(p>this.emptyInnerRowHeight){c=this.emptyTopRow.createChild({cls:'x-grid3-row-empty-inner'});c.setHeight(this.emptyInnerRowHeight);p-=this.emptyInnerRowHeight;}
c=this.emptyTopRow.createChild({cls:'x-grid3-row-empty-inner'});c.setHeight(p);}
this.lastPaddingTop=this.paddingTop;}
if(Ext.isIE8&&this.paddingBottom+this.paddingTop+this.rowsHeight>this.maxIE8DivHeight){this.paddingBottom=this.maxIE8DivHeight-(this.paddingTop+this.rowsHeight);}
if(this.paddingBottom!=this.lastPaddingBottom){this.emptyBottomRow=this.mainBody.createChild({cls:'x-grid3-row-empty'});if(this.paddingBottom<=this.emptyInnerRowHeight){this.emptyBottomRow.setHeight(this.paddingBottom);}
else{var p=this.paddingBottom,c;while(p>this.emptyInnerRowHeight){c=this.emptyBottomRow.createChild({cls:'x-grid3-row-empty-inner'});c.setHeight(this.emptyInnerRowHeight);p-=this.emptyInnerRowHeight;}
c=this.emptyBottomRow.createChild({cls:'x-grid3-row-empty-inner'});c.setHeight(p);}
this.lastPaddingBottom=this.paddingBottom;}
this.isBuffering=false;this.showLoadMask(false);if(options.isScrolling||this.sortChanged){this.setScrollerPos(this.lastScrollPos);delete store.lastOptions.isScrolling;delete this.sortChanged;}},onDataChange:function(store)
{this.refresh();this.updateHeaderSortState();},refreshRow:function(record)
{var ds=this.ds,index;if(typeof record=='number'){index=record;record=ds.getAt(index);}else{index=ds.indexOf(record);}
var viewIndex=index+this.ds.bufferRange[0];this.insertRows(ds,index,index,true);this.getRow(viewIndex).rowIndex=viewIndex;this.fireEvent("rowupdated",this,viewIndex,record);},insertRows:function(dm,firstRow,lastRow,isUpdate)
{var viewIndexFirst=firstRow+this.ds.bufferRange[0];var viewIndexLast=lastRow+this.ds.bufferRange[0];if(!isUpdate){this.fireEvent("beforerowsinserted",this,viewIndexFirst,viewIndexLast);}
if(isUpdate){this.removeRows(firstRow+1,lastRow+1);}
var html=this.renderRows(firstRow,lastRow);var before=this.getRow(viewIndexFirst);if(before){Ext.DomHelper.insertHtml('beforeBegin',before,html);}else{Ext.DomHelper.insertHtml('beforeEnd',this.mainBody.dom,html);}
if(!isUpdate){this.fireEvent("rowsinserted",this,viewIndexFirst,viewIndexLast,(viewIndexLast-viewIndexFirst)+1);this.processRows(0,undefined,true);}},processRows:function(startRow,skipStripe,paintSelections){if(this.ds.getCount()<1){return;}
skipStripe=skipStripe||!this.grid.stripeRows;startRow=startRow||0;var rows=this.getRows();var cls=' x-grid3-row-alt ';rows[0].className+=' x-grid3-row-first';rows[rows.length-1].className+=' x-grid3-row-last';var firstIndex=Math.max(0,this.ds.bufferRange[0]);var index=0;for(var i=startRow,len=rows.length;i<len;i++){index=i+firstIndex;var row=rows[i];row.rowIndex=index;if(paintSelections!==false){if(this.grid.selModel.isSelected(this.ds.getAt(index))===true){this.addRowClass(index,"x-grid3-row-selected");}else{this.removeRowClass(index,"x-grid3-row-selected");}
this.fly(row).removeClass("x-grid3-row-over");}
if(!skipStripe){var isAlt=((i+1)%2==0);var hasAlt=(' '+row.className+' ').indexOf(cls)!=-1;if(isAlt==hasAlt){continue;}
if(isAlt){row.className+=" x-grid3-row-alt";}else{row.className=row.className.replace("x-grid3-row-alt","");}}}},isOutOfRange:function(scrollTop){var firstIndexPos=this.ds.bufferRange[0]*this.rowHeight;var lastIndexPos=this.ds.bufferRange[1]*this.rowHeight;if(scrollTop>this.lastScrollPos){return(scrollTop+this.scroller.dom.clientHeight>lastIndexPos-this.nearLimit&&this.ds.bufferRange[1]<this.ds.totalLength-1);}
else{return(scrollTop<firstIndexPos+this.nearLimit&&this.ds.bufferRange[0]>0);}},updateLiveRows:function(scrollTop){if(!this.isBuffering&&this.isOutOfRange(scrollTop)){this.isBuffering=true;this.showLoadMask(true);if(Ext.isOpera){this.setScrollerPos(scrollTop);}
var params={};if(this.ds.lastOptions){Ext.apply(params,this.ds.lastOptions.params);}
var sInfo=this.ds.sortInfo;if(sInfo){params.dir=sInfo.direction;params.sort=sInfo.field;}
if(scrollTop>this.lastScrollPos){params.start=Math.max(0,Math.floor((scrollTop-this.nearLimit)/this.rowHeight));if(params.start+this.ds.bufferSize>this.ds.totalLength){params.start=this.ds.totalLength-this.ds.bufferSize;}}
else{params.start=Math.max(0,Math.floor((scrollTop+this.scroller.dom.clientHeight+this.nearLimit-this.ds.bufferSize*this.rowHeight)/this.rowHeight));}
params.limit=this.ds.bufferSize;var opts={isScrolling:true,scope:this,params:params};this.ds.load(opts);}
this.lastScrollPos=scrollTop;},initRowHeight:function(){if(this.rowHeight==-1){if(this.getRows().length>0){this.rowHeight=this.getRows()[0].offsetHeight;if(this.rowHeight<=0){this.rowHeight=-1;return;}
this.nearLimit=this.ds.bufferSize*0.15*this.rowHeight;this.totalRowsHeight=this.getRows().length*this.rowHeight;}else{return;}}
var totalLength=this.grid.store.totalLength;var height=this.rowHeight*totalLength;},setScrollerPos:function(pixels){if(Ext.isIE8&&pixels>this.maxIE8DivHeight*0.9){pixels=1.1*this.maxIE8DivHeight;Ext.Msg.show({title:this.browserWarningTitle,msg:String.format(this.browserWarningMessage,this.ds.bufferRange[1]+1),icon:Ext.Msg.WARNING,buttons:Ext.Msg.OK});}
if(this.scroller.dom.scrollTop!=pixels){this.scroller.dom.scrollTop=pixels;this.lastScrollPos=this.scroller.dom.scrollTop;}},onRowSelect:function(row)
{if(row<this.ds.bufferRange[0]||row>this.ds.bufferRange[1]){return;}
this.addRowClass(row,"x-grid3-row-selected");},getRows:function(){if(!this.hasRows())return[];this.rows=[];for(var i=0;i<this.mainBody.dom.childNodes.length;i++){if(i>0||!Ext.fly(this.mainBody.dom.childNodes[i]).hasClass('x-grid3-row-empty')){this.rows.push(this.mainBody.dom.childNodes[i]);}}
return this.rows;},getRow:function(row){if(row-this.ds.bufferRange[0]<0){return null;}
return this.getRows()[row-this.ds.bufferRange[0]];}});

Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.InternalExpandableGridView=function(config){this.addEvents({'beforebuffer':true,'buffer':true,'bufferfailure':true,'cursormove':true});this.loadMask=false;Ext.apply(this,config);this._gridViewSuperclass=Ext.ux.grid.livegrid.InternalExpandableGridView.superclass;this._gridViewSuperclass.constructor.call(this);};Ext.extend(Ext.ux.grid.livegrid.InternalExpandableGridView,Ext.ux.grid.InternalGridView,{rowHeight:-1,totalRowsHeight:-1,lastScrollPos:0,isBuffering:false,loadMask:null,expandedRows:{},lastPaddingTop:0,lastPaddingBottom:0,renderUI:function(){var g=this.grid;var dEnabled=g.enableDragDrop||g.enableDrag;g.enableDragDrop=false;g.enableDrag=false;this._gridViewSuperclass.renderUI.call(this);var g=this.grid;g.enableDragDrop=dEnabled;g.enableDrag=dEnabled;if(dEnabled){this.dragZone=new Ext.ux.grid.livegrid.DragZone(g,{ddGroup:g.ddGroup||'GridDD'});}
if(this.loadMask){this.loadMask=new Ext.LoadMask(this.grid.bwrap,this.loadMask);}},layout:function(){if(!this.mainBody){return;}
var g=this.grid;var c=g.getGridEl();var csize=c.getSize(true);var vw=csize.width;if(vw<20||csize.height<20){return;}
if(this.scroller)this.scroller.dom.style.overflowX='hidden';if(g.autoHeight){this.scroller.dom.style.overflow='visible';if(Ext.isSafari){this.scroller.dom.style.position='static';}}else{this.el.setSize(csize.width,csize.height);var hdHeight=this.mainHd.getHeight();var vh=csize.height-(hdHeight);this.scroller.setSize(vw,vh);if(this.innerHd){this.innerHd.style.width=(vw)+'px';}}
if(this.forceFit){if(this.lastViewWidth!=vw){this.fitColumns(false,false);this.lastViewWidth=vw;}}else{this.autoExpand();this.syncHeaderScroll();}
this.initRowHeight();this.onLayout(vw,vh);},initData:function(ds,cm){if(this.ds){this.ds.un('beforeload',this.onBeforeLoad,this);}
if(ds){ds.on('beforeload',this.onBeforeLoad,this);}
this._gridViewSuperclass.initData.call(this,ds,cm);},onBeforeLoad:function(store,options){options.params=options.params||{};Ext.apply(options,{scope:this});Ext.apply(options.params,{start:0,limit:this.ds.bufferSize});this.ds.un('beforeload',this.onBeforeLoad,this);return true;},onRowExpand:function(exp,rec,body,index){(function(){var heightDiff=body.offsetHeight-this.rowHeight;if(heightDiff>0){this.expandedRows[index]=heightDiff;this.adjustTotalRowsHeight(heightDiff);}}).defer(100,this);},onRowBeforeCollapse:function(exp,rec,body,index){var heightDiff=body.offsetHeight-this.rowHeight;this.adjustTotalRowsHeight(-(heightDiff));delete this.expandedRows[index];},refresh:function(headersToo){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var result=this.renderBody();this.mainBody.update(result);this.rows=[];for(var i=0;i<this.mainBody.dom.childNodes.length;i++){if(i>0||!Ext.fly(this.mainBody.dom.childNodes[i]).hasClass('x-internal-row-empty')){this.rows.push(this.mainBody.dom.childNodes[i]);}}
if(headersToo===true){this.updateHeaders();this.updateHeaderSortState();}
this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this);},init:Ext.ux.grid.InternalGridView.prototype.init.createSequence(function(){this.expander=this.grid.colModel.getColumnById('expander');if(this.expander){this.expander.on({expand:this.onRowExpand,beforecollapse:this.onRowBeforeCollapse,scope:this});}
this.ds.on('load',this.liveBufferUpdate,this);}),initElements:Ext.ux.grid.InternalGridView.prototype.initElements.createSequence(function(){this.scroller.on('scroll',this.onLiveScroll,this,{buffer:this.scrollDelay});}),adjustTotalRowsHeight:function(pixels){if(pixels==0){return;}
this.totalRowsHeight+=pixels;},showLoadMask:function(show){if(this.loadMask===false)return;if(this.loadMask==null&&show){this.loadMask=new Ext.LoadMask(this.grid.bwrap,this.loadMaskConfig);}
else{return;}
if(show){this.loadMask.show();}else{this.loadMask.hide();}},resolveCell:function(row,col,hscroll){return this._gridViewSuperclass.resolveCell(row-this.ds.bufferRange[0],col,hscroll);},reset:function(forceReload)
{this.expandedRows={};this.grid.selModel.clearSelections();if(forceReload===false){this.ds.modified=[];this.lastScrollPos=0;this.lastPaddingTop=0;this.lastPaddingBottom=0;this.setScrollerPos(0,true);this.showLoadMask(false);this.refresh(true);this.fireEvent('cursormove',this,0,this.ds.bufferSize,this.ds.totalLength);return false;}else{var params={start:0,limit:this.ds.bufferSize};var sInfo=this.ds.sortInfo;if(sInfo){Ext.apply(params,{dir:sInfo.direction,sort:sInfo.field});}
return this.ds.load({params:params});}},onLoad:function(store,records,options){if(!options.isScrolling){this.scrollToTop();}},onLiveScroll:function(e){var scrollTop=this.scroller.dom.scrollTop;if(scrollTop==this.lastScrollPos){return;}
if(this.updateTimeout){clearTimeout(this.updateTimeout);}
this.updateTimeout=this.updateLiveRows.defer(200,this,[scrollTop]);},liveBufferUpdate:function(store,records,options){this.fireEvent('buffer',this,this.ds,this.ds.bufferRange[0],Math.min(this.ds.totalLength,this.ds.bufferSize),this.ds.totalLength,options);var firstIndex=Math.max(0,this.ds.bufferRange[0]);this.paddingTop=firstIndex*this.rowHeight;var lastIndex=Math.max(0,this.ds.bufferRange[1]);this.paddingBottom=(this.ds.totalLength-1-lastIndex)*this.rowHeight;var expandedTopRowsHeight=0;var expandedBottomRowsHeight=0;if(options.isScrolling){var rows=this.getRows();for(var i=0;i<rows.length;i++){var row=rows[i];if(this.expandedRows[row.rowIndex]){this.expander.expandRow(row);}}
for(var rowIndex in this.expandedRows){if(parseInt(rowIndex)<firstIndex){expandedTopRowsHeight+=this.expandedRows[rowIndex];}
else if(parseInt(rowIndex)>lastIndex){expandedBottomRowsHeight+=this.expandedRows[rowIndex];}}}
this.paddingTop+=expandedTopRowsHeight;this.paddingBottom+=expandedBottomRowsHeight;if(this.paddingTop!=this.lastPaddingTop){this.emptyTopRow=this.mainBody.createChild({cls:'x-internal-row-empty'},this.getRow(firstIndex));if(!Ext.isIE8||this.paddingTop<=1000000){this.emptyTopRow.setHeight(this.paddingTop);}
else{var p=this.paddingTop,n=this.paddingTop%1000000,c;while(p>1000000){c=this.emptyTopRow.createChild({cls:'x-internal-rom-empty-inner'});c.setHeight(1000000);p-=1000000;}
c=this.emptyTopRow.createChild({cls:'x-internal-rom-empty-inner'});c.setHeight(p);}
this.lastPaddingTop=this.paddingTop;}
if(this.paddingBottom!=this.lastPaddingBottom){this.emptyBottomRow=this.mainBody.createChild({cls:'x-internal-row-empty'});if(!Ext.isIE8||this.paddingBottom<=1000000){this.emptyBottomRow.setHeight(this.paddingBottom);}
else{var p=this.paddingBottom,n=this.paddingBottom%1000000,c;while(p>1000000){c=this.emptyBottomRow.createChild({cls:'x-internal-rom-empty-inner'});c.setHeight(1000000);p-=1000000;}
c=this.emptyBottomRow.createChild({cls:'x-internal-rom-empty-inner'});c.setHeight(p);}
this.lastPaddingBottom=this.paddingBottom;}
this.isBuffering=false;this.showLoadMask(false);if(options.isScrolling){this.setScrollerPos(this.lastScrollPos,true);delete store.lastOptions.isScrolling;}},onDataChange:function(store)
{this.refresh();this.updateHeaderSortState();},processRows:function(startRow,skipStripe,paintSelections){if(this.ds.getCount()<1){return;}
skipStripe=skipStripe||!this.grid.stripeRows;startRow=startRow||0;var rows=this.getRows();var cls=' x-internal-row-alt ';rows[0].className+=' x-internal-row-first';rows[rows.length-1].className+=' x-internal-row-last';var firstIndex=Math.max(0,this.ds.bufferRange[0]);var index=0;for(var i=startRow,len=rows.length;i<len;i++){index=i+firstIndex;var row=rows[i];row.rowIndex=index;if(paintSelections!==false){if(this.grid.selModel.isSelected(this.ds.getAt(index))===true){this.addRowClass(index,"x-internal-row-selected");}else{this.removeRowClass(index,"x-internal-row-selected");}
this.fly(row).removeClass("x-internal-row-over");}
if(!skipStripe){var isAlt=((i+1)%2==0);var hasAlt=(' '+row.className+' ').indexOf(cls)!=-1;if(isAlt==hasAlt){continue;}
if(isAlt){row.className+=" x-internal-row-alt";}else{row.className=row.className.replace("x-internal-row-alt","");}}}},isOutOfRange:function(scrollTop){var firstIndexPos=this.ds.bufferRange[0]*this.rowHeight;var lastIndexPos=this.ds.bufferRange[1]*this.rowHeight;if(scrollTop>this.lastScrollPos){return(scrollTop+this.scroller.dom.clientHeight>lastIndexPos-this.nearLimit&&this.ds.bufferRange[1]<this.ds.totalLength-1);}
else{return(scrollTop<firstIndexPos+this.nearLimit&&this.ds.bufferRange[0]>0);}},updateLiveRows:function(scrollTop){if(!this.isBuffering&&this.isOutOfRange(scrollTop)){this.isBuffering=true;this.showLoadMask(true);if(Ext.isOpera){this.setScrollerPos(scrollTop,true);}
var params={};if(this.ds.lastOptions){Ext.apply(params,this.ds.lastOptions.params);}
var sInfo=this.ds.sortInfo;if(sInfo){params.dir=sInfo.direction;params.sort=sInfo.field;}
if(scrollTop>this.lastScrollPos){params.start=Math.max(0,Math.floor((scrollTop-this.nearLimit)/this.rowHeight));if(params.start+this.ds.bufferSize>this.ds.totalLength){params.start=this.ds.totalLength-this.ds.bufferSize;}}
else{params.start=Math.max(0,Math.floor((scrollTop+this.scroller.dom.clientHeight+this.nearLimit-this.ds.bufferSize*this.rowHeight)/this.rowHeight));}
params.limit=this.ds.bufferSize;var opts={isScrolling:true,scope:this,params:params};this.ds.load(opts);}
this.lastScrollPos=scrollTop;},initRowHeight:function(){if(this.rowHeight==-1){if(this.getRows().length>0){this.rowHeight=this.getRows()[0].offsetHeight;if(this.rowHeight<=0){this.rowHeight=-1;return;}
this.nearLimit=this.ds.bufferSize*0.15*this.rowHeight;this.totalRowsHeight=this.getRows().length*this.rowHeight;}else{return;}}
var totalLength=this.grid.store.totalLength;var height=this.rowHeight*totalLength;if(height!=this.mainBodyHeight){this.mainBodyHeight=height;this.mainBody.setHeight(this.mainBodyHeight);}},adjustScrollerPos:function(pixels,suspendEvent){if(pixels==0){return;}
if(suspendEvent===true){this.scroller.un('scroll',this.onLiveScroll,this);}
this.scroller.dom.scrollTop+=pixels;if(suspendEvent===true){this.scroller.on('scroll',this.onLiveScroll,this,{buffer:this.scrollDelay});}},setScrollerPos:function(pixels,suspendEvent){if(suspendEvent===true){this.scroller.un('scroll',this.onLiveScroll,this);}
if(this.scroller.dom.scrollTop!=pixels){this.scroller.dom.scrollTop=pixels;}
if(suspendEvent===true){this.scroller.on('scroll',this.onLiveScroll,this,{buffer:this.scrollDelay});}},onRowSelect:function(row)
{if(row<this.ds.bufferRange[0]||row>this.ds.bufferRange[1]){return;}
this.addRowClass(row,"x-internal-row-selected");},getRows:function(){if(!this.hasRows())return[];this.rows=[];for(var i=0;i<this.mainBody.dom.childNodes.length;i++){if(i>0||!Ext.fly(this.mainBody.dom.childNodes[i]).hasClass('x-internal-row-empty')){this.rows.push(this.mainBody.dom.childNodes[i]);}}
return this.rows;},getRow:function(row){if(row-this.ds.bufferRange[0]<0){return null;}
return this.getRows()[row-this.ds.bufferRange[0]];}});Ext.namespace('Ext.ux.grid.livegrid');Ext.ux.grid.livegrid.InternalToolbar=Ext.extend(Ext.Toolbar,{displayMsg:'Displaying {0} - {1} of {2}',emptyMsg:'No data to display',refreshText:"Refresh",autoCreate:{cls:' x-toolbar x-small-editor x-internalgrid-row-tbar',html:'<table cellspacing="0"><tr ></tr></table>'},initComponent:function()
{Ext.ux.grid.livegrid.Toolbar.superclass.initComponent.call(this);if(this.grid){this.view=this.grid.getView();}
var me=this;this.view.init=this.view.init.createSequence(function(){me.bind(this);},this.view);},updateInfo:function(rowIndex,visibleRows,totalCount)
{if(this.displayEl){var msg=totalCount==0?this.emptyMsg:String.format(this.displayMsg,rowIndex+1,rowIndex+visibleRows,totalCount);this.displayEl.update(msg);}},unbind:function(view)
{var st;var vw;if(view instanceof Ext.grid.GridView){vw=view;}else{vw=view.getView();}
st=view.ds;st.un('loadexception',this.enableLoading,this);st.un('beforeload',this.disableLoading,this);st.un('load',this.enableLoading,this);vw.un('rowremoved',this.onRowRemoved,this);vw.un('rowsinserted',this.onRowsInserted,this);vw.un('beforebuffer',this.beforeBuffer,this);vw.un('cursormove',this.onCursorMove,this);vw.un('buffer',this.onBuffer,this);vw.un('bufferfailure',this.enableLoading,this);this.view=undefined;},bind:function(view)
{this.view=view;var st=view.ds;st.on('loadexception',this.enableLoading,this);st.on('beforeload',this.disableLoading,this);st.on('load',this.enableLoading,this);view.on('rowremoved',this.onRowRemoved,this);view.on('rowsinserted',this.onRowsInserted,this);view.on('beforebuffer',this.beforeBuffer,this);view.on('cursormove',this.onCursorMove,this);view.on('buffer',this.onBuffer,this);view.on('bufferfailure',this.enableLoading,this);},enableLoading:function()
{this.loading.setDisabled(false);},disableLoading:function()
{this.loading.setDisabled(true);},onCursorMove:function(view,rowIndex,visibleRows,totalCount)
{this.updateInfo(rowIndex,visibleRows,totalCount);},onRowsInserted:function(view,start,end)
{this.updateInfo(view.rowIndex,Math.min(view.ds.totalLength,view.visibleRows-view.rowClipped),view.ds.totalLength);},onRowRemoved:function(view,index,record)
{this.updateInfo(view.rowIndex,Math.min(view.ds.totalLength,view.visibleRows-view.rowClipped),view.ds.totalLength);},beforeBuffer:function(view,store,rowIndex,visibleRows,totalCount,options)
{this.loading.disable();this.updateInfo(rowIndex,visibleRows,totalCount);},onBuffer:function(view,store,rowIndex,visibleRows,totalCount)
{this.loading.enable();this.updateInfo(rowIndex,visibleRows,totalCount);},onClick:function(type)
{switch(type){case'refresh':if(this.view.reset(true)){this.loading.disable();}else{this.loading.enable();}
break;}},onRender:function(ct,position)
{Ext.PagingToolbar.superclass.onRender.call(this,ct,position);this.loading=this.addButton({tooltip:this.refreshText,iconCls:"x-tbar-loading",handler:this.onClick.createDelegate(this,["refresh"])});this.addSeparator();if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom).createChild({cls:'x-paging-info'});}}});

Ext.ns('Ext.ux');Ext.ux.LiveDataView=Ext.extend(Ext.DataView,{cls:'live-view',tpl:'<tpl for="."><div class="live-thumb-wrap" id="{name}"><div class="live-thumb"><img src="{url}" title="{name}"></div></div></tpl>',overClass:'live-view-over',selectedClass:'live-view-selected',itemSelector:'div.live-thumb-wrap',bufferSize:100,refresh:Ext.DataView.prototype.refresh.createSequence(function(){if(this.all.getCount()>0){this.itemSize=this.all.first().getSize();this.itemSize.width+=this.all.first().getMargins('lr');this.itemSize.height+=this.all.first().getMargins('tb');console.log(Math.floor(this.el.dom.clientWidth/this.itemSize.width));}}),afterRender:Ext.DataView.prototype.afterRender.createSequence(function(){this.el.on({"scroll":this.onScroll,scope:this});}),onScroll:function(){var scrollTop=this.el.dom.scrollTop;if(scrollTop==this.lastScrollPos){return;}
if(this.updateTimeout){clearTimeout(this.updateTimeout);}
this.updateTimeout=this.updateLiveRows.defer(200,this,[scrollTop]);},setScrollerPos:function(pixels){if(Ext.isIE8&&pixels>this.maxIE8DivHeight*0.9){pixels=1.1*this.maxIE8DivHeight;Ext.Msg.show({title:this.browserWarningTitle,msg:String.format(this.browserWarningMessage,this.ds.bufferRange[1]+1),icon:Ext.Msg.WARNING,buttons:Ext.Msg.OK});}
if(this.el.dom.scrollTop!=pixels){this.el.dom.scrollTop=pixels;this.lastScrollPos=this.el.dom.scrollTop;}},isOutOfRange:function(scrollTop){var firstIndexPos=this.ds.bufferRange[0]*this.rowHeight;var lastIndexPos=this.ds.bufferRange[1]*this.rowHeight;if(scrollTop>this.lastScrollPos){return(scrollTop+this.scroller.dom.clientHeight>lastIndexPos-this.nearLimit&&this.ds.bufferRange[1]<this.ds.totalLength-1);}
else{return(scrollTop<firstIndexPos+this.nearLimit&&this.ds.bufferRange[0]>0);}},updateLiveRows:function(scrollTop){if(!this.isBuffering&&this.isOutOfRange(scrollTop)){this.isBuffering=true;if(Ext.isOpera){this.setScrollerPos(scrollTop);}
var params={};if(this.store.lastOptions){Ext.apply(params,this.store.lastOptions.params);}
if(scrollTop>this.lastScrollPos){params.start=Math.max(0,Math.floor((scrollTop-this.nearLimit)/this.itemSize.height));if(params.start+this.store.bufferSize>this.store.totalLength){params.start=this.store.totalLength-this.store.bufferSize;}}
else{params.start=Math.max(0,Math.floor((scrollTop+this.el.dom.clientHeight+this.nearLimit-this.store.bufferSize*this.itemSize.height)/this.itemSize.height));}
params.limit=this.store.bufferSize;var opts={isScrolling:true,scope:this,params:params};this.store.load(opts);}
this.lastScrollPos=scrollTop;},onResize:function(adjWidth,adjHeight,rawWidth,rawHeight){}});Ext.reg('livedataview',Ext.ux.LiveDataView);

if('function'!==typeof RegExp.escape){RegExp.escape=function(s){if('string'!==typeof s){return s;}
return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};}
Ext.ns('Ext.ux.form');Ext.ux.form.LovCombo=Ext.extend(Ext.form.ComboBox,{checkField:'checked',separator:',',initComponent:function(){if(!this.tpl){this.tpl='<tpl for=".">'
+'<div class="x-combo-list-item">'
+'<img src="'+Ext.BLANK_IMAGE_URL+'" '
+'class="ux-lovcombo-icon ux-lovcombo-icon-'
+'{[values.'+this.checkField+'?"checked":"unchecked"'+']}">'
+'<div class="ux-lovcombo-item-text">{'+(this.displayField||'text')+'}</div>'
+'</div>'
+'</tpl>';}
Ext.ux.form.LovCombo.superclass.initComponent.apply(this,arguments);this.on({scope:this,beforequery:this.onBeforeQuery,blur:this.onRealBlur});this.onLoad=this.onLoad.createSequence(function(){if(this.el){var v=this.el.dom.value;this.el.dom.value='';this.el.dom.value=v;}});},initEvents:function(){Ext.ux.form.LovCombo.superclass.initEvents.apply(this,arguments);this.keyNav.tab=false;},clearValue:function(){this.value='';this.setRawValue(this.value);this.store.clearFilter();this.store.each(function(r){r.set(this.checkField,false);},this);if(this.hiddenField){this.hiddenField.value='';}
this.applyEmptyText();},getCheckedDisplay:function(){var re=new RegExp(this.separator,"g");return this.getCheckedValue(this.displayField).replace(re,this.separator+' ');},getCheckedValue:function(field){field=field||this.valueField;var c=[];var snapshot=this.store.snapshot||this.store.data;snapshot.each(function(r){if(r.get(this.checkField)){c.push(r.get(field));}},this);return c.join(this.separator);},onBeforeQuery:function(qe){qe.query=qe.query.replace(new RegExp(this.getCheckedDisplay()+'[ '+this.separator+']*'),'');},onRealBlur:function(){this.list.hide();var rv=this.getRawValue();var rva=rv.split(new RegExp(RegExp.escape(this.separator)+' *'));var va=[];var snapshot=this.store.snapshot||this.store.data;Ext.each(rva,function(v){snapshot.each(function(r){if(v===r.get(this.displayField)){va.push(r.get(this.valueField));}},this);},this);this.setValue(va.join(this.separator));this.store.clearFilter();},onSelect:function(record,index){if(this.fireEvent('beforeselect',this,record,index)!==false){record.set(this.checkField,!record.get(this.checkField));if(this.store.isFiltered()){this.doQuery(this.allQuery);}
this.setValue(this.getCheckedValue());this.fireEvent('select',this,record,index);}},setValue:function(v){if(v){v=''+v;if(this.valueField){this.store.clearFilter();this.store.each(function(r){var checked=!(!v.match('(^|'+this.separator+')'+RegExp.escape(r.get(this.valueField))
+'('+this.separator+'|$)'));r.set(this.checkField,checked);},this);this.value=this.getCheckedValue();this.setRawValue(this.getCheckedDisplay());if(this.hiddenField){this.hiddenField.value=this.value;}}
else{this.value=v;this.setRawValue(v);if(this.hiddenField){this.hiddenField.value=v;}}
if(this.el){this.el.removeClass(this.emptyClass);}}
else{this.clearValue();}},selectAll:function(){this.store.each(function(record){record.set(this.checkField,true);},this);this.doQuery(this.allQuery);this.setValue(this.getCheckedValue());},deselectAll:function(){this.clearValue();},beforeBlur:Ext.emptyFn});Ext.reg('lovcombo',Ext.ux.form.LovCombo);

(function(){var EV=Ext.lib.Event;var MIM;Ext.ux.ManagedIFrame=function(){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,src:(Ext.isIE&&Ext.isSecure)?Ext.SSL_SECURE_URL:'about:blank'},config.autoCreate))):null;if(el&&this.unsupportedText){Ext.DomHelper.append(el.dom.parentNode,{tag:'noframes',html:this.unsupportedText});}}
if(!el||el.dom.tagName!='IFRAME'){return el;}
el.dom.name||(el.dom.name=el.dom.id);el.dom.ownerEl=el;this.addEvents({"focus":true,"blur":true,"unload":true,"domready":true,"documentloaded":true,"exception":true,"message":true});if(config.listeners){this.listeners=config.listeners;Ext.ux.ManagedIFrame.superclass.constructor.call(this);}
Ext.apply(el,this);el.addClass('x-managed-iframe');if(config.style){el.applyStyles(config.style);}
Ext.apply(el,{disableMessaging: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:typeof config.eventsFollowFrameLinks=='undefined'?true:config.eventsFollowFrameLinks});if(el.loadMask){el.loadMask.maskEl||(el.loadMask.maskEl=el.parent('.x-managed-iframe-mask')||el.parent().addClass('x-managed-iframe-mask'));}
var um=el.updateManager=new Ext.UpdateManager(el,true);um.showLoadIndicator=config.showLoadIndicator||false;Ext.ux.ManagedIFrame.Manager.register(el);if(config.src){el.setSrc(config.src);}else{var content=config.html||config.content||false;if(content){el.reset(null,function(frame){frame.update.apply(el,[].concat(content));});}}
return el;};Ext.extend(Ext.ux.ManagedIFrame,Ext.util.Observable,{src:null,CSS:null,manager:null,disableMessaging:true,resetUrl:(function(){if(Ext.isIE&&Ext.isSecure){return Ext.SSL_SECURE_URL;}else{return'about:blank';}})(),unsupportedText:'Inline frames are NOT enabled\/supported by your browser.',setSrc:function(url,discardUrl,callback,scope){var src=url||this.src||this.resetUrl;this._windowContext=null;this._unHook();this._frameAction=this.frameInit=this._domReady=false;this.showMask();(function(){var s=this._targetURI=typeof src=='function'?src()||'':src;try{this._frameAction=true;this._callBack=typeof callback=='function'?callback.createDelegate(scope):null;this.dom.src=s;this.frameInit=true;this.checkDOM();}catch(ex){this.fireEvent('exception',this,ex);}}).defer(10,this);if(discardUrl!==true){this.src=src;}
return this;},setLocation:function(url,discardUrl,callback,scope){var src=url||this.src||this.resetUrl;this._windowContext=null;this._unHook();this._frameAction=this.frameInit=this._domReady=false;this.showMask();(function(){var s=this._targetURI=typeof src=='function'?src()||'':src;try{this._frameAction=true;this._callBack=typeof callback=='function'?callback.createDelegate(scope):null;this.getWindow().location.replace(s);this.frameInit=true;this.checkDOM();}catch(ex){this.fireEvent('exception',this,ex);}}).defer(10,this);if(discardUrl!==true){this.src=src;}
return this;},reset:function(src,callback,scope){this._unHook();var loadMaskOff=false;if(this.loadMask){loadMaskOff=this.loadMask.disabled;this.loadMask.disabled=false;}
this._callBack=function(frame){if(frame.loadMask){frame.loadMask.disabled=loadMaskOff;};frame._frameAction=false;frame.frameInit=true;this._isReset=false;if(callback){callback.call(scope||window,frame);}};this.hideMask(true);this._frameAction=false;this.frameInit=true
this._isReset=true;var s=src;if(typeof src=='function'){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.getUpdateManager().loadScripts||false;content=Ext.DomHelper.markup(content||'');content=loadScripts===true?content:content.replace(this.scriptRE,"");var doc;if((doc=this.getDocument())&&!!content.length){this._unHook();this._windowContext=this.src=null;this._targetURI=location.href;this.frameInit=true;this.showMask();(function(){this._callBack=typeof callback=='function'?callback.createDelegate(scope):null;doc.open();this._frameAction=true;doc.write(content);doc.close();this.checkDOM();}).defer(10,this);}else{this.hideMask(true);if(callback){callback.call(scope,this);}}
return this;},disableMessaging:true,_XFrameMessaging:function(){var tagStack={'$':[]};var isEmpty=function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==='':false);};window.sendMessage=function(message,tag,origin){var MIF;if(MIF=arguments.callee.manager){if(message._fromHost){var fn,result;var compTag=message.tag||tag||null;var mstack=!isEmpty(compTag)?tagStack[compTag.toLowerCase()]||[]:tagStack["$"];for(var i=0,l=mstack.length;i<l;i++){if(fn=mstack[i]){result=fn.apply(fn.__scope,arguments)===false?false:result;if(fn.__single){mstack[i]=null;}
if(result===false){break;}}}
return result;}else{message={type:isEmpty(tag)?'message':'message:'
+tag.toLowerCase().replace(/^\s+|\s+$/g,''),data:message,domain:origin||document.domain,uri:document.documentURI,source:window,tag:isEmpty(tag)?null:tag.toLowerCase()};try{return MIF.disableMessaging!==true?MIF.fireEvent.call(MIF,message.type,MIF,message):null;}catch(ex){}
return null;}}};window.onhostmessage=function(fn,scope,single,tag){if(typeof fn=='function'){if(!isEmpty(fn.__index)){throw"onhostmessage: duplicate handler definition"
+(tag?" for tag:"+tag:'');}
var k=isEmpty(tag)?"$":tag.toLowerCase();tagStack[k]||(tagStack[k]=[]);Ext.apply(fn,{__tag:k,__single:single||false,__scope:scope||window,__index:tagStack[k].length});tagStack[k].push(fn);}else{throw"onhostmessage: function required";}};window.unhostmessage=function(fn){if(typeof fn=='function'&&typeof fn.__index!='undefined'){var k=fn.__tag||"$";tagStack[k][fn.__index]=null;}};},getHistory:function(){var h=null;try{h=this.getWindow().history;}catch(eh){}
return h;},get:function(el){return MIM.El.get(this,el);},fly:function(el,named){named=named||'_global';el=this.getDom(el);if(!el){return null;}
if(!MIM._flyweights[named]){MIM._flyweights[named]=new Ext.Element.Flyweight();}
MIM._flyweights[named].dom=el;return MIM._flyweights[named];},getDom:function(el){var d;if(!el||!(d=this.getDocument())){return null;}
return el.dom?el.dom:(typeof el=='string'?d.getElementById(el):el);},select:function(selector,unique){var d;return(d=this.getDocument())?Ext.Element.select(selector,unique,d):null;},query:function(selector){var d;return(d=this.getDocument())?Ext.DomQuery.select(selector,d):null;},getDoc:function(){return this.get(this.getDocument());},removeNode:function(node){MIM.removeNode(this,this.getDom(node));},_unHook:function(){var elcache,h=MIM.getFrameHash(this)||{};if(this._hooked&&h&&(elcache=h.elCache)){for(var id in elcache){var el=elcache[id];if(el.removeAllListeners){el.removeAllListeners();}
delete elcache[id];}
if(h.docEl){h.docEl.removeAllListeners();h.docEl=null;delete h.docEl;}}
this.CSS=this.CSS?this.CSS.destroy():null;this._hooked=this._domReady=this._domFired=false;},_renderHook:function(){this._windowContext=null;this.CSS=this.CSS?this.CSS.destroy():null;this._hooked=false;try{if(this.writeScript('(function(){(window.hostMIF = parent.Ext.get("'
+this.dom.id
+'"))._windowContext='
+(Ext.isIE?'window':'{eval:function(s){return eval(s);}}')
+';})();')){this._frameProxy||(this._frameProxy=MIM.eventProxy.createDelegate(this));var w;if(w=this.getWindow()){EV.doAdd(w,'focus',this._frameProxy);EV.doAdd(w,'blur',this._frameProxy);EV.doAdd(w,'unload',this._frameProxy);}
if(this.disableMessaging!==true){this.loadFunction({name:'XMessage',fn:this._XFrameMessaging},false,true);var sm;if(sm=w.sendMessage){sm.manager=this;}}
this.CSS=new CSSInterface(this.getDocument());}}catch(ex){}
return this.domWritable();},sendMessage:function(message,tag,origin){var win;if(this.disableMessaging!==true&&(win=this.getWindow())){tag||(tag=message.tag||'');tag=tag.toLowerCase();message=Ext.applyIf(message.data?message:{data:message},{type:Ext.isEmpty(tag)?'message':'message:'
+tag,domain:origin||document.domain,uri:document.documentURI,source:window,tag:tag||null,_fromHost:this});return win.sendMessage?win.sendMessage.call(null,message,tag,origin):null;}
return null;},_windowContext:null,getDocument: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){return false;}
return doc;},getBody:function(){var d;return(d=this.getDocument())?d.body:null;},getDocumentURI:function(){var URI,d;try{URI=this.src&&(d=this.getDocument())?d.location.href:null;}catch(ex){}
return URI||(typeof this.src=='function'?this.src():this.src);},getWindowURI:function(){var URI,w;try{URI=(w=this.getWindow())?w.location.href:null;}catch(ex){}
return URI||(typeof this.src=='function'?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;},print:function(){var win;try{if(win=this.getWindow()){if(Ext.isIE){win.focus();}
win.print();}}catch(ex){throw'print exception: '+(ex.description||ex.message||ex);}},destroy:function(){this.removeAllListeners();if(this.loadMask){this.hideMask(true);Ext.apply(this.loadMask,{masker:null,maskEl:null});}
if(this.dom){Ext.ux.ManagedIFrame.Manager.deRegister(this);this.dom.ownerEl=this._windowContext=null;if(Ext.isIE&&this.dom.src){this.dom.src='javascript:false';}
this._maskEl=null;this.remove();}},domWritable:function(){return!!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.fireEvent('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.getDocument();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.fireEvent('exception',this,ex);}
return false;},loadFunction:function(fn,useDOM,invokeIt){var name=fn.name||fn;var fn=fn.fn||window[fn];this.execScript(name+'='+fn,useDOM);if(invokeIt){this.execScript(name+'()');}},showMask:function(msg,msgCls,forced){var lmask=this.loadMask;if(lmask&&!lmask.disabled){lmask.masker||(lmask.masker=Ext.get(lmask.maskEl||this.dom.parentNode||this.wrap({tag:'div',style:{position:'static'}})));(function(){this._vis=!!this.masker.mask(msg||this.msg,msgCls||this.msgCls);}).defer(lmask.delay||10,lmask)}},hideMask:function(forced){var tlm=this.loadMask;if(tlm&&!tlm.disabled&&tlm.masker){if(forced||(tlm.hideOnReady&&this._domReady)){tlm.masker.unmask();tlm._vis=false;}}},loadHandler:function(e,target){if(!this.frameInit||(!this._frameAction&&!this.eventsFollowFrameLinks)){return;}
target||(target={});var rstatus=(e&&typeof e.type!=='undefined'?e.type:this.dom.readyState);switch(rstatus){case'domready':if(this._domReady){return;}
this._domReady=true;if(this._frameAction&&this.getDocumentURI()!='about:blank'&&(this._hooked=this._renderHook())){this._domFired=true;this.fireEvent("domready",this);}
case'domfail':this._domReady=true;this.hideMask();break;case'load':case'complete':if(!this._domReady){this.loadHandler({type:'domready',id:this.id},this.dom);}
this.hideMask(true);if(this._frameAction||this.eventsFollowFrameLinks){this.fireEvent.defer(1,this,["documentloaded",this]);if(this._callBack){this._callBack.defer(1,null,[this]);}}
this._frameAction=this._frameInit=false;if(this.eventsFollowFrameLinks){this._domFired=this._domReady=false;}
break;default:}
this.frameState=rstatus;},checkDOM:function(win){if(Ext.isOpera||Ext.isGecko||!this._frameAction){return;}
var n=0,manager=this,domReady=false,b,l,d,max=300,polling=false,startLocation=(this.getDocument()||{location:{}}).location.href;(function(){d=manager.getDocument()||{location:{}};polling=(d.location.href!==startLocation||d.location.href===manager._targetURI);if(!manager._frameAction||manager._domReady){return;}
domReady=polling&&((b=manager.getBody())&&!!(b.innerHTML||'').length)||false;if(d.location.href&&!domReady&&(++n<max)){setTimeout(arguments.callee,2);return;}
manager.loadHandler({type:domReady?'domready':'domfail'});})();}});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){if(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.ManagedIframePanel=Ext.extend(Ext.Panel,{defaultSrc:null,bodyStyle:{position:'relative'},frameStyle:{overflow:'auto'},frameConfig:null,hideMode:!Ext.isIE?'nosize':'display',shimCls:'x-frame-shim',shimUrl:null,loadMask:false,stateful:false,animCollapse:Ext.isIE&&Ext.enableFx,autoScroll:false,closable:true,ctype:"Ext.ux.ManagedIframePanel",showLoadIndicator:false,unsupportedText:'Inline frames are NOT enabled\/supported by your browser.',initComponent:function(){var f=this.frameConfig?this.frameConfig.autoCreate||this.frameConfig:{};var frCfg={id:f.id||Ext.id()};frCfg.name=f.name||frCfg.id;if(Ext.isIE&&Ext.isSecure){frCfg.src=Ext.SSL_SECURE_URL;}
var frameTag=Ext.apply({tag:'iframe',frameborder:0,cls:'x-managed-iframe',style:this.frameStyle||f.style||{}},frCfg);var unsup=this.unsupportedText?{tag:'noframes',html:this.unsupportedText}:[];this.bodyCfg||(this.bodyCfg={cls:this.baseCls+'-body',children:this.contentEl?[]:[frameTag].concat(unsup)});this.autoScroll=false;this.items=null;if(this.stateful!==false){this.stateEvents||(this.stateEvents=['documentloaded']);}
Ext.ux.ManagedIframePanel.superclass.initComponent.call(this);this.monitorResize||(this.monitorResize=!!this.fitToParent);this.addEvents({documentloaded:true,domready:true,message:true,exception:true,blur:true,focus:true});this.addListener=this.on;},doLayout:function(){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]);}
Ext.ux.ManagedIframePanel.superclass.doLayout.apply(this,arguments);},beforeDestroy:function(){if(this.rendered){if(this.tools){for(var k in this.tools){Ext.destroy(this.tools[k]);}}
if(this.header&&this.headerAsText){var s;if(s=this.header.child('span'))s.remove(true,true);this.header.update('');}
Ext.each(['iframe','shim','header','topToolbar','bottomToolbar','footer','loadMask','body','bwrap'],function(elName){if(this[elName]){if(typeof this[elName].destroy=='function'){this[elName].destroy();}else{Ext.destroy(this[elName]);}
this[elName]=null;delete this[elName];}},this);}
Ext.ux.ManagedIframePanel.superclass.beforeDestroy.call(this);},onDestroy:function(){Ext.Panel.superclass.onDestroy.call(this);},afterRender:function(container){var html=this.html;delete this.html;Ext.ux.ManagedIframePanel.superclass.afterRender.apply(this,arguments);if(this.iframe=this.body.child('iframe')){this.iframe.ownerCt=this;if(this.loadMask){var mEl;if(mEl=this.loadMask.maskEl){this.loadMask.maskEl=this[mEl]||mEl||this.body;this.loadMask.maskEl.addClass('x-managed-iframe-mask');}
this.loadMask=Ext.apply({disabled:false,hideOnReady:false},this.loadMask);}
this.getUpdater().showLoadIndicator=this.showLoadIndicator||false;var ownerCt=this.ownerCt;while(ownerCt){ownerCt.on('afterlayout',function(container,layout){var MIM=Ext.ux.ManagedIFrame.Manager,st=false;Ext.each(['north','south','east','west'],function(region){var reg;if((reg=layout[region])&&reg.splitEl){st=true;if(!reg.split._splitTrapped){reg.split.on('beforeresize',MIM.showShims,MIM);reg.split._splitTrapped=true;}}},this);if(st&&!this._splitTrapped){this.on('resize',MIM.hideShims,MIM);this._splitTrapped=true;}},this,{single:true});ownerCt=ownerCt.ownerCt;}
this.shim=Ext.get(this.body.child('.'+this.shimCls))||Ext.DomHelper.append(this.body,{tag:'img',src:this.shimUrl||Ext.BLANK_IMAGE_URL,cls:this.shimCls,galleryimg:"no"},true);var El=Ext.Element;var mode=El[this.hideMode.toUpperCase()]||'x-hide-nosize';Ext.each([this[this.collapseEl],this.floating?null:this.getActionEl(),this.iframe],function(el){if(el)
el.setVisibilityMode(mode);},this);if(this.iframe=new Ext.ux.ManagedIFrame(this.iframe,{loadMask:this.loadMask,showLoadIndicator:this.showLoadIndicator,disableMessaging:this.disableMessaging,style:this.frameStyle,src:this.defaultSrc,html:html}))
{this.loadMask=this.iframe.loadMask;this.iframe.ownerCt=this;this.relayEvents(this.iframe,["blur","focus","unload","documentloaded","domready","exception","message"].concat(this._msgTagHandlers||[]));delete this._msgTagHandlers;}}},sendMessage:function(){if(this.iframe){this.iframe.sendMessage.apply(this.iframe,arguments);}},on:function(name){var tagRE=/^message\:/i,n=null;if(typeof name=='object'){for(var na in name){if(!this.filterOptRe.test(na)&&tagRE.test(na)){n||(n=[]);n.push(na.toLowerCase());}}}else if(tagRE.test(name)){n=[name.toLowerCase()];}
if(this.getFrame()&&n){this.relayEvents(this.iframe,n);}else{this._msgTagHandlers||(this._msgTagHandlers=[]);if(n)
this._msgTagHandlers=this._msgTagHandlers.concat(n);}
Ext.ux.ManagedIframePanel.superclass.on.apply(this,arguments);},setSrc:function(url,discardUrl,callback,scope){url=url||this.defaultSrc||false;if(!url)
return this;if(url.url){callback=url.callback||false;discardUrl=url.discardUrl||false;url=url.url||false;scope=url.scope||null;}
if(this.rendered&&this.iframe){var u=url||this.iframe.resetUrl;this.iframe.setSrc(u,discardUrl,callback,scope);}
return this;},setLocation:function(url,discardUrl,callback,scope){url=url||this.defaultSrc||false;if(!url)
return this;if(url.url){callback=url.callback||false;discardUrl=url.discardUrl||false;url=url.url||false;scope=url.scope||null;}
if(this.rendered&&this.iframe){var u=url||this.iframe.resetUrl;this.iframe.setLocation(u,discardUrl,callback,scope);}
return this;},getState:function(){var URI=this.iframe?this.iframe.getDocumentURI()||null:null;return Ext.apply(Ext.ux.ManagedIframePanel.superclass.getState.call(this)||{},URI?{defaultSrc:typeof URI=='function'?URI():URI}:null);},getUpdater:function(){return this.rendered?(this.iframe||this.body).getUpdater():null;},getFrame:function(){return this.rendered?this.iframe:null},getFrameWindow:function(){return this.rendered&&this.iframe?this.iframe.getWindow():null;},getFrameDocument:function(){return this.rendered&&this.iframe?this.iframe.getDocument():null;},getFrameDoc:function(){return this.rendered&&this.iframe?this.iframe.getDoc():null;},getFrameBody:function(){return this.rendered&&this.iframe?this.iframe.getBody():null;},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;},doAutoLoad:function(){this.load(typeof this.autoLoad=='object'?this.autoLoad:{url:this.autoLoad});}});Ext.ux.ManagedIFrame.Manager=MIM=function(){var frames={};var implementation={readyHandler:function(e){try{var $frame=e.target.ownerEl;if($frame&&$frame._frameAction){$frame.loadHandler.call($frame,{type:'domready'});}}catch(rhEx){return}},shimCls:'x-frame-shim',register:function(frame){frame.manager=this;frames[frame.id]=frames[frame.dom.name]={ref:frame,elCache:{}};frame.dom[Ext.isIE?'onreadystatechange':'onload']=frame.loadHandler.createDelegate(frame);return frame;},deRegister:function(frame){frame._unHook();frame.dom.onload=frame.dom.onreadystatechange=null;delete frames[frame.id];delete frames[frame.dom.name];},hideShims:function(){if(!this.shimApplied)
return;Ext.select('.'+this.shimCls,true).removeClass(this.shimCls
+'-on');this.shimApplied=false;},showShims:function(){if(!this.shimApplied){this.shimApplied=true;Ext.select('.'+this.shimCls,true).addClass(this.shimCls
+'-on');}},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 frame.id?frames[frame.id]:null;},eventProxy:function(e){if(!e)
return;e=Ext.EventObject.setEvent(e);var be=e.browserEvent||e;if(e.type=='unload'){this._unHook();}
if(!be['eventPhase']||(be['eventPhase']==(be['AT_TARGET']||2))){return this.fireEvent(e.type,e);}},_flyweights:{},destroy:function(){if(document.addEventListener){window.removeEventListener("DOMFrameContentLoaded",this.readyHandler,true);}},removeNode:Ext.isIE?function(frame,n){frame=MIM.getFrameHash(frame);if(frame&&n&&n.tagName!='BODY'){d=frame.scratchDiv||(frame.scratchDiv=frame.getDocument().createElement('div'));d.appendChild(n);d.innerHTML='';}}:function(frame,n){if(n&&n.parentNode&&n.tagName!='BODY'){n.parentNode.removeChild(n);}}};if(document.addEventListener){window.addEventListener("DOMFrameContentLoaded",implementation.readyHandler,true);}
Ext.EventManager.on(window,'beforeunload',implementation.destroy,implementation);return implementation;}();MIM.showDragMask=MIM.showShims;MIM.hideDragMask=MIM.hideShims;MIM.El=function(frame,el,forceNew){var frameObj;frame=(frameObj=MIM.getFrameHash(frame))?frameObj.ref:null;if(!frame){return null;}
var elCache=frameObj.elCache||(frameObj.elCache={});var dom=frame.getDom(el);if(!dom){return null;}
var id=dom.id;if(forceNew!==true&&id&&elCache[id]){return elCache[id];}
this.dom=dom;this.id=id||Ext.id(dom);};MIM.El.get=function(frame,el){var ex,elm,id,doc;if(!frame||!el){return null;}
var frameObj;frame=(frameObj=MIM.getFrameHash(frame))?frameObj.ref:null;if(!frame){return null;}
var elCache=frameObj.elCache||(frameObj.elCache={});if(!(doc=frame.getDocument())){return null;}
if(typeof el=="string"){if(!(elm=frame.getDom(el))){return null;}
if(ex=elCache[el]){ex.dom=elm;}else{ex=elCache[el]=new MIM.El(frame,elm);}
return ex;}else if(el.tagName){if(!(id=el.id)){id=Ext.id(el);}
if(ex=elCache[id]){ex.dom=el;}else{ex=elCache[id]=new MIM.El(frame,el);}
return ex;}else if(el instanceof MIM.El){if(el!=frameObj.docEl){el.dom=frame.getDom(el.id)||el.dom;elCache[el.id]=el;}
return el;}else if(el.isComposite){return el;}else if(Ext.isArray(el)){return frame.select(el);}else if(el==doc){if(!frameObj.docEl){var f=function(){};f.prototype=MIM.El.prototype;frameObj.docEl=new f();frameObj.docEl.dom=doc;}
return frameObj.docEl;}
return null;};Ext.apply(MIM.El.prototype,Ext.Element.prototype);Ext.ns('Ext.ux.panel','Ext.ux.portlet');Ext.reg('iframepanel',Ext.ux.panel.ManagedIframe=Ext.ux.ManagedIframePanel);Ext.ux.ManagedIframePortlet=Ext.extend(Ext.ux.ManagedIframePanel,{anchor:'100%',frame:true,collapseEl:'bwrap',collapsible:true,draggable:true,cls:'x-portlet'});Ext.reg('iframeportlet',Ext.ux.portlet.ManagedIframe=Ext.ux.ManagedIframePortlet);Ext.apply(Ext.Element.prototype,{setVisible:function(visible,animate){if(!animate||!Ext.lib.Anim){if(this.visibilityMode==Ext.Element.DISPLAY){this.setDisplayed(visible);}else if(this.visibilityMode==Ext.Element.VISIBILITY){this.fixDisplay();this.dom.style.visibility=visible?"visible":"hidden";}else{this[visible?'removeClass':'addClass'](String(this.visibilityMode));}}else{var dom=this.dom;var visMode=this.visibilityMode;if(visible){this.setOpacity(.01);this.setVisible(true);}
this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,.35,'easeIn',function(){if(!visible){if(visMode==Ext.Element.DISPLAY){dom.style.display="none";}else if(visMode==Ext.Element.VISIBILITY){dom.style.visibility="hidden";}else{Ext.get(dom).addClass(String(visMode));}
Ext.get(dom).setOpacity(1);}});}
return this;},isVisible:function(deep){var vis=!(this.hasClass(this.visibilityMode)||this.getStyle("visibility")=="hidden"||this.getStyle("display")=="none");if(deep!==true||!vis){return vis;}
var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!="body"){if(!Ext.fly(p,'_isVisible').isVisible()){return false;}
p=p.parentNode;}
return true;}});Ext.onReady(function(){var CSS=Ext.util.CSS,rules=[];CSS.getRule('.x-managed-iframe')||(rules.push('.x-managed-iframe {height:100%;width:100%;overflow:auto;position:relative;}'));CSS.getRule('.x-managed-iframe-mask')||(rules.push('.x-managed-iframe-mask{position:relative;zoom:1;}'));if(!CSS.getRule('.x-frame-shim')){rules.push('.x-frame-shim {z-index:8500;position:absolute;top:0px;left:0px;background:transparent!important;overflow:hidden;display:none;}');rules.push('.x-frame-shim-on{width:100%;height:100%;display:block;zoom:1;}');rules.push('.ext-ie6 .x-frame-shim{margin-left:5px;margin-top:3px;}');}
CSS.getRule('.x-hide-nosize')||(rules.push('.x-hide-nosize,.x-hide-nosize *{height:0px!important;width:0px!important;border:none;}'));if(!!rules.length){CSS.createStyleSheet(rules.join(' '));}});})();if(Ext.provide){Ext.provide('miframe');}

Ext.namespace("Ext.ux");Ext.ux.PagingDataViewPanel=Ext.extend(Ext.Panel,{constructor:function(config){config=Ext.apply({layout:'fit',autoScroll:false,title:config.title,items:this.view=new Ext.DataView(Ext.apply({cls:'paging-data-view',tpl:new Ext.XTemplate('<tpl for=".">','<div class="div.paging-data-view-item">','<div class="paging-data-view-thumb">','<img src="{url}">','</div>','</div>','</tpl>'),itemSelector:'div.paging-data-view-item',overClass:'paging-data-view-over',selectedClass:'paging-data-view-selected',store:config.store,onBeforeLoad:Ext.emptyFn,listeners:{render:{fn:this.loadStore,scope:this,delay:1},resize:{fn:this.viewResized,scope:this}}},config.viewConfig))},config);Ext.ux.PagingDataViewPanel.superclass.constructor.call(this,config);this.initPageSizer();this.pagingToolbar=this.getBottomToolbar();},initPageSizer:function(){var s=Ext.getBody().createChild({cls:this.viewConfig.cls+' x-hide-offsets',html:this.view.tpl.apply({})});this.pageSizer=s.child(this.viewConfig.itemSelector);},fadeIn:function(){this.body.stopFx();this.body.fadeIn({endOpacity:1,easing:'easeOut',duration:1});},fadeOut:function(){this.body.stopFx();this.body.fadeOut({endOpacity:0,easing:'easeOut',duration:.5,remove:false,useDisplay:false});},onDestroy:function(){this.store.purgeListeners();this.store.removeAll();Ext.ux.PagingDataViewPanel.superclass.onDestroy.call(this);},loadStore:function(){if(this.store._autoLoad==true){var p={start:0};p[this.store.paramNames.limit]=this.pagingToolbar.pageSize=this.getPageSize();this.store.load({params:p});}},getPageSize:function(){if(Ext.isNumber(this.store._pageSize))return this.store._pageSize;var itemSize=this.pageSizer.getSize();if(itemSize.width==0)return 1;if(itemSize.height==0)return 1;itemSize.height+=this.pageSizer.getMargins("tb");itemSize.width+=this.pageSizer.getMargins("lr");var viewSize=this.body.getSize(true);var cols=Math.floor(viewSize.width/itemSize.width);var rows=Math.floor(viewSize.height/itemSize.height);return cols*rows;},getPageRowCount:function(){var itemSize=this.pageSizer.getSize();if(itemSize.width==0)return 1;if(itemSize.height==0)return 1;itemSize.height+=this.pageSizer.getMargins("tb");itemSize.width+=this.pageSizer.getMargins("lr");var viewSize=this.body.getSize(true);return Math.floor(viewSize.height/itemSize.height);},getPageColumnCount:function(){var itemSize=this.pageSizer.getSize();if(itemSize.width==0)return 1;if(itemSize.height==0)return 1;itemSize.height+=this.pageSizer.getMargins("tb");itemSize.width+=this.pageSizer.getMargins("lr");var viewSize=this.body.getSize(true);return Math.floor(viewSize.width/itemSize.width);},viewResized:function(){var o=this.pagingToolbar.pageSize;this.pagingToolbar.pageSize=this.getPageSize();if(this.store.getCount()){if(this.pagingToolbar.pageSize>o){var p={start:this.store.lastOptions.params.start};p[this.store.paramNames.limit]=this.pagingToolbar.pageSize;this.store.load({params:p});}else if(this.pagingToolbar.pageSize<o){var toRemove=this.store.getRange(this.pagingToolbar.pageSize,o-1);this.store.suspendEvents();for(var i=0;i<toRemove.length;i++){this.store.remove(toRemove[i]);}
this.store.resumeEvents();this.store.fireEvent("datachanged",this.store);var total=this.store.getTotalCount();var p=this.pagingToolbar.pageSize;this.pagingToolbar.afterTextEl.el.innerHTML=String.format(this.pagingToolbar.afterPageText,total<p?1:Math.ceil(total/p));this.pagingToolbar.updateInfo();}}}});Ext.reg('pagingdataview',Ext.ux.PagingDataViewPanel);

Ext.ux.Portal=Ext.extend(Ext.Panel,{layout:'column',autoScroll:true,cls:'x-portal',defaultType:'portalcolumn',initComponent:function(){Ext.ux.Portal.superclass.initComponent.call(this);this.addEvents({validatedrop:true,beforedragover:true,dragover:true,beforedrop:true,drop:true,portletselect:true,portletcontextmenu:true,portlethide:true,portletshow:true,portletexpand:true,portletcollapse:true});},initEvents:function(){Ext.ux.Portal.superclass.initEvents.call(this);this.dd=new Ext.ux.Portal.DropZone(this,this.dropConfig);}});Ext.reg('portal',Ext.ux.Portal);Ext.ux.Portal.DropZone=function(portal,cfg){this.portal=portal;Ext.dd.ScrollManager.register(portal.body);Ext.ux.Portal.DropZone.superclass.constructor.call(this,portal.bwrap.dom,cfg);portal.body.ddScrollConfig=this.ddScrollConfig;};Ext.extend(Ext.ux.Portal.DropZone,Ext.dd.DropTarget,{ddScrollConfig:{vthresh:50,hthresh:-1,animate:true,increment:200},createEvent:function(dd,e,data,col,c,pos){return{portal:this.portal,panel:data.panel,columnIndex:col,column:c,position:pos,data:data,source:dd,rawEvent:e,status:this.dropAllowed};},notifyOver:function(dd,e,data){var xy=e.getXY(),portal=this.portal,px=dd.proxy;if(!this.grid){this.grid=this.getGrid();}
var cw=portal.body.dom.clientWidth;if(!this.lastCW){this.lastCW=cw;}else if(this.lastCW!=cw){this.lastCW=cw;portal.doLayout();this.grid=this.getGrid();}
var col=0,xs=this.grid.columnX,cmatch=false;for(var len=xs.length;col<len;col++){if(xy[0]<(xs[col].x+xs[col].w)){cmatch=true;break;}}
if(!cmatch){col--;}
var p,match=false,pos=0,c=portal.items.itemAt(col),items=c.items.items;for(var len=items.length;pos<len;pos++){p=items[pos];var h=p.el.getHeight();if(h!==0&&(p.el.getY()+(h/2))>xy[1]){match=true;break;}}
var overEvent=this.createEvent(dd,e,data,col,c,match&&p?pos:c.items.getCount());if(portal.fireEvent('validatedrop',overEvent)!==false&&portal.fireEvent('beforedragover',overEvent)!==false){px.getProxy().setWidth('auto');if(p){px.moveProxy(p.el.dom.parentNode,match?p.el.dom:null);}else{px.moveProxy(c.el.dom,null);}
this.lastPos={c:c,col:col,p:match&&p?pos:false};this.scrollPos=portal.body.getScroll();portal.fireEvent('dragover',overEvent);return overEvent.status;;}else{return overEvent.status;}},notifyOut:function(){delete this.grid;},notifyDrop:function(dd,e,data){delete this.grid;if(!this.lastPos){return;}
var c=this.lastPos.c,col=this.lastPos.col,pos=this.lastPos.p;var dropEvent=this.createEvent(dd,e,data,col,c,pos!==false?pos:c.items.getCount());if(this.portal.fireEvent('validatedrop',dropEvent)!==false&&this.portal.fireEvent('beforedrop',dropEvent)!==false){dd.proxy.getProxy().remove();dd.panel.el.dom.parentNode.removeChild(dd.panel.el.dom);if(pos!==false){c.insert(pos,dd.panel);c.doLayout();}else{c.add(dd.panel);setTimeout(function(){c.doLayout();},1);}
this.portal.fireEvent('drop',dropEvent);var st=this.scrollPos.top;if(st){var d=this.portal.body.dom;setTimeout(function(){d.scrollTop=st;},10);}}
delete this.lastPos;},getGrid:function(){var box=this.portal.bwrap.getBox();box.columnX=[];this.portal.items.each(function(c){box.columnX.push({x:c.el.getX(),w:c.el.getWidth()});});return box;}});Ext.ux.PortalColumn=Ext.extend(Ext.Container,{layout:'anchor',autoEl:'div',defaultType:'portlet',cls:'x-portal-column'});Ext.reg('portalcolumn',Ext.ux.PortalColumn);Ext.ux.Portlet=Ext.extend(Ext.Panel,{anchor:'100%',frame:true,draggable:true,tools:[{id:'close',handler:function(e,tool,panel){panel.hide();}}],cls:'x-portlet',initComponent:function(){Ext.ux.Portlet.superclass.initComponent.call(this);this.on({render:function(cmp){cmp.getEl().on({mousedown:function(){this.ownerCt.ownerCt.fireEvent('portletselect',this);},contextmenu:function(e){e.stopEvent();this.ownerCt.ownerCt.fireEvent('portletcontextmenu',this,e);},scope:this});},hide:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portlethide',cmp);},show:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portletshow',cmp);},collapse:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portletcollapse',cmp);},expand:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portletexpand',cmp);},scope:this});}});Ext.reg('portlet',Ext.ux.Portlet);

Ext.ns('Ext.ux.form');Ext.ux.form.ComboRadio=Ext.extend(Ext.form.Radio,{height:28,onRender:function(ct,position){Ext.ux.form.ComboRadio.superclass.onRender.call(this,ct,position);this.wrap.addClass('x-form-radio-combo');var table=this.wrap.createChild({tag:'table',cellspacing:5,children:[{tag:'tr',children:[{tag:'td',id:this.id+'-radio-td'},{tag:'td',id:this.id+'-combo-td'}]}]})
table.on('click',this.onClick,this);this.el.appendTo(this.id+'-radio-td');this.comboConfig=Ext.apply(this.comboConfig||{},{radio:this});this.combo=new Ext.form.ComboBox(this.comboConfig);this.combo.on('focus',this.onClick,this);this.combo.on('render',function(c){c.hiddenField.removeAttribute('name');},this);this.combo.render(this.id+'-combo-td');},setRadioValue:function(v){this.el.dom.value=v;},initValue:function(){if(this.value!==undefined){this.el.dom.value=this.value;}},onClick:function(e){if(!this.disabled&&!this.readOnly){this.toggleValue();}
if(typeof(e.stopEvent)=='function'){e.stopEvent();}}});Ext.reg('comboradio',Ext.ux.form.ComboRadio);Ext.ux.form.CustomRadio=Ext.extend(Ext.form.Radio,{height:110,onRender:function(ct,position){Ext.ux.form.CustomRadio.superclass.onRender.call(this,ct,position);this.wrap.addClass('x-form-radio-custom');var table=this.wrap.createChild({tag:'table',cellspacing:5,children:[{tag:'tr',children:[{tag:'td'}]}]})
this.el.appendTo(table.child('td'));this.boxInfos=table.child('tr').createChild({tag:'td',cls:'x-form-radio-infos x-unselectable',children:[{tag:'img',src:this.infosImage||''},{tag:'div',children:[{tag:'h4',html:this.infosTitle||''},{tag:'p',html:this.infosDescription||''}]}]});table.on('click',this.onClick,this);},initValue:function(){if(this.value!==undefined){this.el.dom.value=this.value;}},onClick:function(e){if(!this.disabled&&!this.readOnly){this.toggleValue();}
if(typeof(e.stopEvent)=='function'){e.stopEvent();}}});Ext.reg('customradio',Ext.ux.form.CustomRadio);

Ext.ns('Ext.ux.form');Ext.ux.form.ReadOnlyField=Ext.extend(Ext.form.Field,{readOnly:true,itemCls:'x-form-item-readonly',defaultAutoCreate:{tag:'input',type:'hidden'},valueType:'text',dateFormat:'YmdHis',dateDisplayFormat:'d/m/Y H:i:s',trueText:'True',falseText:'False',hideWhenEmpty:false,icon:null,iconCls:null,iconPosition:'right',getActionEl:function(){return this.displayEl;},initViewWindow:function(){if(this.valueType=='thesaurus'){this.initViewLexiconPathsWindow();return;}
this.viewWindowConfig=Ext.apply(this.viewWindowConfig||{},{id:this.id+'-view-window',closeAction:'hide',layout:'fit',buttons:[{id:'close',text:this.viewWindowConfig.closeButtonText||'Close',handler:function(){this.viewWindow.hide();},scope:this}],items:[{xtype:'iframepanel',id:this.id+'-view-iframe',defaultSrc:this.viewWindowConfig.url,loadMask:{msg:this.viewWindowConfig.loadMsg},fitToParent:true,border:false}]});this.viewUrl=this.viewWindowConfig.url;this.viewTitle=this.viewWindowConfig.title;this.viewWindow=new Ext.Window(this.viewWindowConfig);this.viewWindow.on('hide',function(){this.viewWindow.iframe.getFrame().reset();},this);this.viewWindow.iframe=this.viewWindow.items.first();},initViewLexiconPathsWindow:function(){this.viewWindowConfig=Ext.apply(this.viewWindowConfig||{},{id:this.id+'-view-window',closeAction:'hide',layout:'fit',buttons:[{id:'close',text:this.viewWindowConfig.closeButtonText||'Close',handler:function(){this.viewWindow.hide();},scope:this}],items:[{xtype:'panel',id:this.id+'-view-panel',cls:'ux-form-thes-paths',border:false,autoScroll:true}],listeners:{show:this.onViewLexiconPathsWindowShow,scope:this}});this.viewTitle=this.viewWindowConfig.title;this.viewWindow=new Ext.Window(this.viewWindowConfig);this.viewPanel=this.viewWindow.items.first();},initComponent:function(){Ext.ux.form.ReadOnlyField.superclass.initComponent.call(this);if(this.valueType=='stored'&&this.store){this.store.on('load',function(){this.store.isLoaded=true;if(this.value){this.initValue();}},this,{single:true});}
if(!this.viewWindowConfig)return;this.initViewWindow();},onRender:function(ct,position){Ext.ux.form.ReadOnlyField.superclass.onRender.apply(this,arguments);this.wrap=this.el.wrap({cls:'x-form-field-wrap x-form-field-readonly-wrap'});this.innerWrap=this.wrap.createChild({cls:'x-form-field x-form-field-readonly'});this.innerWrap.addClass(this.cls);if(this.iconPosition=='left'){this.icon=this.innerWrap.createChild({id:this.id.concat('-icon'),cls:this.iconCls||''});this.icon.show();}
this.displayEl=this.innerWrap.createChild({tag:'span',style:'overflow:auto'});if(this.iconPosition=='right'){this.icon=this.innerWrap.createChild({id:this.id.concat('-icon'),cls:this.iconCls||''});this.icon.show();}
if(this.viewWindow&&!this.hideViewTrigger){this.viewIcon=this.innerWrap.createChild({cls:'x-form-view-icon'});this.viewIcon.dom.qtip=this.viewTip;this.viewIcon.on('click',this.view,this);}
if(this.valueType=='phone'){this.phoneIcon=this.innerWrap.createChild({cls:'x-form-phone-icon'});this.phoneIcon.dom.qtip=this.phoneTip;this.phoneIcon.on('click',this.phone,this);this.phoneIcon.hide();}
if(this.hidden){this.setVisible(false);}},addClass:function(cls){if(this.innerWrap){this.innerWrap.addClass(cls);}else{this.cls=this.cls?this.cls+' '+cls:cls;}},removeClass:function(cls){if(this.innerWrap){this.innerWrap.removeClass(cls);}else if(this.cls){this.cls=this.cls.split(' ').remove(cls).join(' ');}},getHelpCt:function(){return this.innerWrap;},alignHelpIcon:Ext.emptyFn,alignWarningIcon:Ext.emptyFn,phone:function(){(function(){var value=this.getValue();if(value!='')
location.href=Ext.ux.form.PhoneField.prototype.phonePrefix+value;}).defer(1,this);},view:function(){if(this.valueType=='thesaurus'){this.viewLexiconPaths();return;}
if(!this.viewWindow)return;if(this.externalId.length==0)return;if(this.viewUrl.length==0)return;var baseUrl=ui.getUrlBase(this.viewUrl);var params=Ext.apply({eid:this.externalId},ui.getUrlParams(this.viewUrl));var url=ui.joinUrl(baseUrl,params);this.viewWindow.setTitle(String.format(this.viewTitle,this.externalId));this.viewWindow.iframe.setSrc(url);this.viewWindow.show();},viewLexiconPaths:function(){if(!this.externalId||this.externalId.length==0)return;this.viewWindow.setTitle(String.format(this.viewTitle,this.externalId));this.viewWindow.show();},onViewLexiconPathsWindowShow:function(win){var value=this.getValue();if(value.length==0)return;if(value==this.lastValue)return;win.body.mask(this.viewLoadingText,'x-mask-loading');Ext.Ajax.request({url:this.viewUrl,method:'GET',params:{linkId:value},success:this.onGetLexiconPathsSuccess,failure:this.onGetLexiconPathsFailure,scope:this})},onGetLexiconPathsSuccess:function(response,options){this.viewWindow.body.unmask();var result=Ext.decode(response.responseText);if(result){if(result.success&&Ext.isArray(result.d)){this.setLexiconPaths(result.d);this.lastValue=options.params.linkId;}
else{ui.error({msg:this.viewErrorMessage,errors:result.errors});}}
else{ui.error(this.viewErrorMessage);}},onGetLexiconPathsFailure:function(response,options){ui.error(this.viewErrorMessage);},setLexiconPaths:function(paths){this.viewPanel.body.update('');this.viewList=this.viewPanel.body.createChild({tag:'ul'});for(var p=0;p<paths.length;p++){this.viewList.createChild({tag:'li',html:paths[p]})}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},onEnable:function(){(this.formItem||this.displayEl).removeClass(this.disabledClass);},onDisable:function(){(this.formItem||this.displayEl).addClass(this.disabledClass);},setIconCls:function(iconCls){if(!iconCls||iconCls==''){if(this.icon)
this.icon.hide();}else{this.icon.show();if(this.iconPosition=='left'){this.innerWrap.first().removeClass(this.iconCls);this.innerWrap.first().addClass(iconCls);}else{this.innerWrap.last().removeClass(this.iconCls);this.innerWrap.last().addClass(iconCls);}
this.iconCls=iconCls;}},setDisplayValue:function(v){if(!this.rendered)return;if(v===null)v='';var value='';if(Ext.isFunction(this.renderer)){value=this.renderer(v);}
else if(this.valueType=='xml'&&typeof(viewerXml)!='undefined'&&v!=''){this.innerWrap.update();this.innerWrap.dom.removeAttribute('class');viewerXml.loadXmlString(this.innerWrap.id,v);return;}
else{switch(this.valueType){case'text':case'number':value=v;break;case'imageurl':if(v.length>0){if('./'.indexOf(v[0])==-1&&v.indexOf('http://')==-1){v='http://'+v;}
var imageSrc=v;var imageStyle='';if(Ext.isNumber(this.imageHeight)){imageStyle+='max-height:'+this.imageHeight+'px;';}
if(Ext.isNumber(this.imageWidth)){imageStyle+='max-width:'+this.imageWidth+'px;';}
value='<a id="'+this.id+'_fancy"';if(Ext.isString(this.imageRel)&&this.imageRel.length>0){value+=' rel="'+this.imageRel+'"';}
else{value+=' rel="'+this.id+'"';}
value+=' href="'+imageSrc+'"><img src="'+imageSrc+'"';if(imageStyle.length>0){value+=' style="'+imageStyle+'"';}
value+='/></a>';}
break;case'texturl':if(v.length>0){if('./'.indexOf(v[0])==-1&&(v.indexOf('http://')==-1&&v.indexOf('https://')==-1)){v='http://'+v;}
value='<a href="'+v+'" target="_blank">'+v+'</a>';}
break;case'textmailto':if(v.length>0){value='<a href="mailto:'+v+'">'+v+'</a>';}
break;case'boolean':value=(v?this.trueText:this.falseText);break;case'date':var d=Date.parseDate(v,this.dateFormat);if(Ext.isDate(d)){value=d.format(this.dateDisplayFormat);}
break;case'stored':if(this.valueField){var r=this.findRecord(this.valueField,v);if(r){value=r.data[this.displayField];}
else if(this.store.isLoaded){if(this.valueNotFoundText!==undefined){value=this.valueNotFoundText;}
else{value=v;}}}
break;case'phone':if(v!='')this.phoneIcon.show();else this.phoneIcon.hide();value=v;break;case'link':case'thesaurus':if(this.viewWindow){this.externalId=v.substring(v.lastIndexOf('#')+1);if(this.externalId.length>0&&this.viewIcon){this.viewIcon.show();}}
if(v!=''&&this.resolveLinkUrl){if(this.static){value=v.substring(v.lastIndexOf('#')+1);}
else{var index=-1;if(this.store){index=this.store.find(this.valueField,v,0,false,false);}
if(index>-1){value=this.store.getAt(index).get(this.displayField);}
else{Ext.Ajax.request({url:this.resolveLinkUrl,params:{linkId:v},method:'GET',success:function(response,options){var result=Ext.decode(response.responseText);value=v;if(result.success&&result.d.Name){value=result.d[this.displayField];if(this.store){var LinkRecord=Ext.data.Record.create(this.store.reader.meta.fields);this.store.add(new LinkRecord(result.d,result.d[this.valueField]));}}
if(this.hideWhenEmpty===true){this.setVisible(value.length>0);}
this.displayEl.update(value);if(this.helpIcon)this.alignHelpIcon.defer(100,this);},failure:function(response,options){value=v;this.displayEl.update(value);if(this.helpIcon)this.alignHelpIcon.defer(100,this);},scope:this});}}}
break;default:value=v;}}
if(Ext.isNumber(value))value=value.toString();if(this.hideWhenEmpty===true){this.setVisible(value.length>0);}
this.displayEl.update(value);if(this.valueType=='imageurl'){this.displayEl.setStyle('overflow','hidden');if(Ext.isString(this.imageRel)&&this.imageRel.length>0){jQuery('a[rel='+this.imageRel+']').fancybox({type:'image',titleShow:false});}
else{jQuery('a[rel='+this.id+']').fancybox({type:'image',titleShow:false,transitionIn:'none',transitionOut:'none'});}}
if(this.helpIcon)this.alignHelpIcon.defer(100,this);},onShow:function(){Ext.ux.form.ReadOnlyField.superclass.onShow.apply(this,arguments);if(this.helpIcon)this.alignHelpIcon.defer(100,this);},getSerializedValue:function(){var value=this.getValue();if(this.valueType=='number'&&Ext.isEmpty(value))return null;if(value===undefined||value===null)return'';return value.toString();},setValue:function(v){if(this.valueType=='boolean'&&typeof v=='string'){v=eval(v);}
Ext.ux.form.ReadOnlyField.superclass.setValue.apply(this,arguments);this.setDisplayValue(v);},clearValue:function(){this.setValue('');},findRecord:function(prop,value){var record;if(this.store&&this.store.getCount()>0){this.store.each(function(r){if(r.data[prop]==value){record=r;return false;}});}
return record;},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg('readonly',Ext.ux.form.ReadOnlyField);Ext.override(Ext.ux.form.ReadOnlyField,{reset:Ext.ux.form.ReadOnlyField.prototype.reset.createSequence(function(){if(this.iconCls){if(this.iconPosition=='left'){this.innerWrap.first().removeClass(this.iconCls);}else{this.innerWrap.last().removeClass(this.iconCls);}
this.iconCls=null;}
if(this.icon)
this.icon.hide();this.setIconCls();})});

Ext.ns('Ext.ux.grid');if('function'!==typeof RegExp.escape){RegExp.escape=function(s){if('string'!==typeof s){return s;}
return s.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,'\\$1');};}
Ext.ux.grid.RowActions=function(config){Ext.apply(this,config);this.addEvents('beforeaction','action','beforegroupaction','groupaction');Ext.ux.grid.RowActions.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.RowActions,Ext.util.Observable,{actionEvent:'click',autoWidth:true,dataIndex:'',header:'',isColumn:true,keepSelection:false,menuDisabled:true,sortable:false,tplGroup:'<tpl for="actions">'
+'<div class="ux-grow-action-item<tpl if="\'right\'===align"> ux-action-right</tpl> '
+'{cls}" style="{style}" qtip="{qtip}">{text}</div>'
+'</tpl>',tplRow:'<div class="ux-row-action">'
+'<tpl for="actions">'
+'<div class="ux-row-action-item {cls} <tpl if="text">'
+'ux-row-action-text</tpl>" style="{hide}{style}" qtip="{qtip}">'
+'<tpl if="text"><span qtip="{qtip}">{text}</span></tpl></div>'
+'</tpl>'
+'</div>',hideMode:'visiblity',widthIntercept:4,widthSlope:21,init:function(grid){this.grid=grid;this.id=this.id||Ext.id();var lookup=grid.getColumnModel().lookup;delete(lookup[undefined]);lookup[this.id]=this;if(!this.tpl){this.tpl=this.processActions(this.actions);}
if(this.autoWidth){this.width=this.widthSlope*this.actions.length+this.widthIntercept;this.fixed=true;}
var view=grid.getView();var cfg={scope:this};cfg[this.actionEvent]=this.onClick;grid.afterRender=grid.afterRender.createSequence(function(){view.mainBody.on(cfg);grid.on('destroy',this.purgeListeners,this);},this);if(!this.renderer){this.renderer=function(value,cell,record,row,col,store){cell.css+=(cell.css?' ':'')+'ux-row-action-cell';return this.tpl.apply(this.getData(value,cell,record,row,col,store));}.createDelegate(this);}
if(view.groupTextTpl&&this.groupActions){view.interceptMouse=view.interceptMouse.createInterceptor(function(e){if(e.getTarget('.ux-grow-action-item')){return false;}});view.groupTextTpl='<div class="ux-grow-action-text">'+view.groupTextTpl+'</div>'
+this.processActions(this.groupActions,this.tplGroup).apply();}
if(true===this.keepSelection){grid.processEvent=grid.processEvent.createInterceptor(function(name,e){if('mousedown'===name){return!this.getAction(e);}},this);}},getData:function(value,cell,record,row,col,store){return record.data||{};},processActions:function(actions,template){var acts=[];Ext.each(actions,function(a,i){if(a.iconCls&&'function'===typeof(a.callback||a.cb)){this.callbacks=this.callbacks||{};this.callbacks[a.iconCls]=a.callback||a.cb;}
var o={cls:a.iconIndex?'{'+a.iconIndex+'}':(a.iconCls?a.iconCls:''),qtip:a.qtipIndex?'{'+a.qtipIndex+'}':(a.tooltip||a.qtip?a.tooltip||a.qtip:''),text:a.textIndex?'{'+a.textIndex+'}':(a.text?a.text:''),hide:a.hideIndex?'<tpl if="'+a.hideIndex+'">'
+('display'===this.hideMode?'display:none':'visibility:hidden')+';</tpl>':(a.hide?('display'===this.hideMode?'display:none':'visibility:hidden;'):''),align:a.align||'right',style:a.style?a.style:''};acts.push(o);},this);var xt=new Ext.XTemplate(template||this.tplRow);return new Ext.XTemplate(xt.apply({actions:acts}));},getAction:function(e){var action=false;var t=e.getTarget('.ux-row-action-item');if(t){action=t.className.replace(/ux-row-action-item /,'');if(action){action=action.replace(/ ux-row-action-text/,'');action=action.trim();}}
return action;},onClick:function(e,target){var view=this.grid.getView();var row=e.getTarget('.x-grid3-row');var col=view.findCellIndex(target.parentNode.parentNode);var action=this.getAction(e);if(false!==row&&false!==col&&false!==action){var record=this.grid.store.getAt(row.rowIndex);if(this.callbacks&&'function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,record,action,row.rowIndex,col);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforeaction',this.grid,record,action,row.rowIndex,col)){return;}
else if(true!==this.eventsSuspended){this.fireEvent('action',this.grid,record,action,row.rowIndex,col);}}
t=e.getTarget('.ux-grow-action-item');if(t){var group=view.findGroup(target);var groupId=group?group.id.replace(/ext-gen[0-9]+-gp-/,''):null;var records;if(groupId){var re=new RegExp(RegExp.escape(groupId));records=this.grid.store.queryBy(function(r){return r._groupId.match(re);});records=records?records.items:[];}
action=t.className.replace(/ux-grow-action-item (ux-action-right )*/,'');if('function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,records,action,groupId);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforegroupaction',this.grid,records,action,groupId)){return false;}
this.fireEvent('groupaction',this.grid,records,action,groupId);}}});Ext.reg('rowactions',Ext.ux.grid.RowActions);

Ext.ns('Ext.ux.form');Ext.ux.form.SearchField=Ext.extend(Ext.form.TwinTriggerField,{initComponent:function(){Ext.ux.form.SearchField.superclass.initComponent.call(this);this.on('specialkey',function(f,e){if(e.getKey()==e.ENTER){this.onTrigger2Click();}},this);},validationEvent:false,validateOnBlur:false,trigger1Class:'x-form-clear-trigger',trigger2Class:'x-form-search-trigger',hideTrigger1:true,width:180,hasSearch:false,paramName:'query',onTrigger1Click:function(){if(this.hasSearch){this.el.dom.value='';var o={start:0};this.store.baseParams=this.store.baseParams||{};this.store.baseParams[this.paramName]='';this.store.reload({params:o});this.triggers[0].hide();this.hasSearch=false;}},onTrigger2Click:function(){var v=this.getRawValue();if(v.length<1){this.onTrigger1Click();return;}
var o={start:0};this.store.baseParams=this.store.baseParams||{};this.store.baseParams[this.paramName]=v;this.store.reload({params:o});this.hasSearch=true;this.triggers[0].show();}});

Ext.ux.Spinner=Ext.extend(Ext.util.Observable,{incrementValue:1,alternateIncrementValue:5,triggerClass:'x-form-spinner-trigger',splitterClass:'x-form-spinner-splitter',alternateKey:Ext.EventObject.shiftKey,defaultValue:0,accelerate:false,constructor:function(config){Ext.ux.Spinner.superclass.constructor.call(this,config);Ext.apply(this,config);this.mimicing=false;},init:function(field){this.field=field;field.afterMethod('onRender',this.doRender,this);field.afterMethod('onEnable',this.doEnable,this);field.afterMethod('onDisable',this.doDisable,this);field.afterMethod('afterRender',this.doAfterRender,this);field.afterMethod('onResize',this.doResize,this);field.afterMethod('onFocus',this.doFocus,this);field.beforeMethod('onDestroy',this.doDestroy,this);},doRender:function(ct,position){var el=this.el=this.field.getEl();var f=this.field;if(!f.wrap){f.wrap=this.wrap=el.wrap({cls:"x-form-field-wrap"});}
else{this.wrap=f.wrap.addClass('x-form-field-wrap');}
this.trigger=this.wrap.createChild({tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(!f.width){this.wrap.setWidth(el.getWidth()+this.trigger.getWidth());}
this.splitter=this.wrap.createChild({tag:'div',cls:this.splitterClass,style:'width:13px; height:2px;'});this.splitter.setRight((Ext.isIE)?1:2).setTop(10).show();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.initTrigger();this.initSpinner();},doAfterRender:function(){var y;if(Ext.isIE&&this.el.getY()!=(y=this.trigger.getY())){this.el.position();this.el.setY(y);}},doEnable:function(){if(this.wrap){this.wrap.removeClass(this.field.disabledClass);}},doDisable:function(){if(this.wrap){this.wrap.addClass(this.field.disabledClass);this.el.removeClass(this.field.disabledClass);}},doResize:function(w,h){if(typeof w=='number'){this.el.setWidth(this.field.adjustWidth('input',w-this.trigger.getWidth()));}
this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());},doFocus:function(){if(!this.mimicing){this.wrap.addClass('x-trigger-wrap-focus');this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this,{delay:10});this.el.on('keydown',this.checkTab,this);}},checkTab:function(e){if(e.getKey()==e.TAB){this.triggerBlur();}},mimicBlur:function(e){if(!this.wrap.contains(e.target)&&this.field.validateBlur(e)){this.triggerBlur();}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur,this);this.el.un("keydown",this.checkTab,this);this.field.beforeBlur();this.wrap.removeClass('x-trigger-wrap-focus');this.field.onBlur.call(this.field);},initTrigger:function(){this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},initSpinner:function(){this.field.addEvents({'spin':true,'spinup':true,'spindown':true});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,{accelerate:this.accelerate});this.field.mon(this.repeater,"click",this.onTriggerClick,this,{preventDefault:true});this.field.mon(this.trigger,{mouseover:this.onMouseOver,mouseout:this.onMouseOut,mousemove:this.onMouseMove,mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,preventDefault:true});this.field.mon(this.wrap,"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);},onMouseOver:function(){if(this.disabled){return;}
var middle=this.getMiddle();this.tmpHoverClass=(Ext.EventObject.getPageY()<middle)?'x-form-spinner-overup':'x-form-spinner-overdown';this.trigger.addClass(this.tmpHoverClass);},onMouseOut:function(){this.trigger.removeClass(this.tmpHoverClass);},onMouseMove:function(){if(this.disabled){return;}
var middle=this.getMiddle();if(((Ext.EventObject.getPageY()>middle)&&this.tmpHoverClass=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<middle)&&this.tmpHoverClass=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled){return;}
var middle=this.getMiddle();this.tmpClickClass=(Ext.EventObject.getPageY()<middle)?'x-form-spinner-clickup':'x-form-spinner-clickdown';this.trigger.addClass(this.tmpClickClass);},onMouseUp:function(){this.trigger.removeClass(this.tmpClickClass);},onTriggerClick:function(){if(this.disabled||this.el.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.el.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.spin(false,false);}
this.field.fireEvent("spin",this);this.field.fireEvent("spinup",this);},onSpinDown:function(){if(this.isSpinnable()==false){return;}
if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return;}
else{this.spin(true,false);}
this.field.fireEvent("spin",this);this.field.fireEvent("spindown",this);},onSpinUpAlternate:function(){if(this.isSpinnable()==false){return;}
this.spin(false,true);this.field.fireEvent("spin",this);this.field.fireEvent("spinup",this);},onSpinDownAlternate:function(){if(this.isSpinnable()==false){return;}
this.spin(true,true);this.field.fireEvent("spin",this);this.field.fireEvent("spindown",this);},spin:function(down,alternate){var v=parseFloat(this.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);this.field.setRawValue(v);},fixBoundries:function(value){var v=value;if(this.field.minValue!=undefined&&v<this.field.minValue){v=this.field.minValue;}
if(this.field.maxValue!=undefined&&v>this.field.maxValue){v=this.field.maxValue;}
return this.fixPrecision(v);},fixPrecision:function(value){var nan=isNaN(value);if(!this.field.allowDecimals||this.field.decimalPrecision==-1||nan||!value){return nan?'':value;}
return parseFloat(parseFloat(value).toFixed(this.field.decimalPrecision));},doDestroy:function(){if(this.trigger){this.trigger.remove();}
if(this.wrap){this.wrap.remove();delete this.field.wrap;}
if(this.splitter){this.splitter.remove();}
if(this.dd){this.dd.unreg();this.dd=null;}
if(this.proxy){this.proxy.remove();}
if(this.repeater){this.repeater.purgeListeners();}}});Ext.form.Spinner=Ext.ux.Spinner;

Ext.ns('Ext.ux.form');Ext.ux.form.SpinnerField=Ext.extend(Ext.form.NumberField,{deferHeight:true,autoSize:Ext.emptyFn,onBlur:Ext.emptyFn,adjustSize:Ext.BoxComponent.prototype.adjustSize,constructor:function(config){var spinnerConfig=Ext.copyTo({},config,'incrementValue,alternateIncrementValue,accelerate,defaultValue,triggerClass,splitterClass');var spl=this.spinner=new Ext.ux.Spinner(spinnerConfig);var plugins=config.plugins?(Ext.isArray(config.plugins)?config.plugins.push(spl):[config.plugins,spl]):spl;Ext.ux.form.SpinnerField.superclass.constructor.call(this,Ext.apply(config,{plugins:plugins}));},onShow:function(){if(this.wrap){this.wrap.dom.style.display='';this.wrap.dom.style.visibility='visible';}},onHide:function(){this.wrap.dom.style.display='none';},getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);}},validateBlur:function(){return true;}});Ext.reg('spinnerfield',Ext.ux.form.SpinnerField);Ext.form.SpinnerField=Ext.ux.form.SpinnerField;

Ext.ux.UploadPanel=Ext.extend(Ext.grid.GridPanel,{addIconCls:'ux-uploadpanel-add',addText:'Add',buttonsAt:'bbar',enableProgress:true,stoppableUrl:'',progressUrl:'',progressIdName:'_progressId',progressInterval:2000,errorText:'Error',fileCls:'file',fileQueuedText:'File queued for upload.',fileDoneText:'File successfully uploaded.',fileFailedText:'File failed to upload.',fileStoppedText:'File stopped by user.',fileUploadingText:'File being uploaded...',fileProcessingText:'File being processed...',fileStoppingText:'File stopping...',fileStopFailedText:'File cannot be stopped.',maxFileSize:524288,maxLength:18,resetIconCls:'ux-uploadpanel-reset',resetText:'Reset',removeIconCls:'ux-uploadpanel-remove',removeText:'Remove',singleUpload:false,stopAllText:'Stop All',stopIconCls:'ux-uploadpanel-uploadstop',uploadText:'Upload',uploadIconCls:'ux-uploadpanel-uploadstart',fileNameHeader:'File name',stateHeader:'State',progressHeader:'Progress',forbiddenExtensionTitle:'Forbidden extension',forbiddenExtensionMessage:'Files with {0} extension cannot be uploaded.',maxUploads:Number.MAX_VALUE,uploadedCount:0,stateRenderer:function(data,metadata,record,rowIndex,colIndex,store){if(typeof data!='string')return data;switch(data){case'queued':data=this.fileQueuedText;break;case'uploading':data=this.fileUploadingText;break;case'processing':data=this.fileProcessingText;break;case'done':data=this.fileDoneText;break;case'stopped':data=this.fileStoppedText;break;case'stopping':data=this.fileStoppingText;break;case'stopfailed':data=this.fileStopFailedText;break;case'failed':data=String.format(this.fileFailedText,record.get('error'));break;}
metadata.attr='ext:qtip="'+data+'"';return data;},initComponent:function(){this.cls='ux-uploadpanel';this.addButton=new Ext.ux.form.BrowseButton({text:this.addText,tooltip:this.addTip,iconCls:this.addIconCls,scope:this,handler:this.onAddFile});this.removeButton=new Ext.Button({text:this.removeText,tooltip:this.removeTip,iconCls:this.removeIconCls,scope:this,handler:this.onRemoveFile,disabled:true});this.resetButton=new Ext.Button({text:this.resetText,iconCls:this.resetIconCls,scope:this,handler:this.onResetClick,disabled:true});this.uploadButton=new Ext.Button({text:this.uploadText,tooltip:this.uploadTip,iconCls:this.uploadIconCls,scope:this,handler:this.onUpload,disabled:true});this[this.buttonsAt]=[this.addButton,this.removeButton,'-',this.uploadButton];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},{name:'response',system:true}];if(Ext.isArray(this.customFields)){fields.push(this.customFields);}
this.store=new Ext.data.SimpleStore({id:0,fields:fields,data:[]});if(this.forbiddenExtensions)this.forbiddenExtensions=this.forbiddenExtensions.split(';');var progressColumn=new Ext.ux.grid.ProgressColumn({header:this.progressHeader,dataIndex:'pctComplete',sortable:true,width:150});this.plugins=[progressColumn];this.cm=new Ext.grid.ColumnModel([{id:'fileName',header:this.fileNameHeader,dataIndex:'fileName',sortable:true},progressColumn,{header:this.stateHeader,dataIndex:'state',sortable:true,renderer:this.stateRenderer.createDelegate(this),width:350}]);this.autoExpandColumn='fileName';this.sm=new Ext.grid.RowSelectionModel({listeners:{selectionchange:function(sm){this.removeButton[sm.getCount()>0?'enable':'disable']();},scope:this}});Ext.ux.UploadPanel.superclass.initComponent.apply(this,arguments);this.addEvents('beforefileadd','fileadd','beforefileremove','fileremove','beforequeueclear','queueclear','beforeupload');var config={store:this.store,singleUpload:this.singleUpload,maxFileSize:this.maxFileSize,enableProgress:this.progressUrl.length>0,url:this.url,progressUrl:this.progressUrl,cancelUrl:this.cancelUrl,progressInterval:this.progressInterval,progressIdName:this.progressIdName};if(this.baseParams){config.baseParams=this.baseParams;}
this.uploader=new Ext.ux.FileUploader(config);this.relayEvents(this.uploader,['beforeallstart','beforefilestart','filefinished','allfinished','progress']);this.on({beforeallstart:{scope:this,fn:function(){this.uploading=true;this.updateButtons();}},allfinished:{scope:this,fn:function(){this.uploading=false;this.updateButtons();}},filefinished:{scope:this,fn:function(uploader,record){if(record.get('state')=='done'){this.uploadedCount++;record.set('pctComplete',100);}
else{record.set('pctComplete',0);}}},progress:{fn:this.onProgress.createDelegate(this)}});},getQueuedFiles:function(){return this.store.queryBy(function(r){return'done'!==r.get('state');});},getFileName:function(inp){return inp.getValue().split(/[\/\\]/).pop();},getFilePath:function(inp){return inp.getValue().replace(/[^\/\\]+$/,'');},getFileExtension:function(name){var atmp=name.split('.');if(1===atmp.length){return'';}
else{return atmp.pop().toLowerCase();}},getFileCls:function(name){var extension=this.getFileExtension(name);if(extension.length>0){return this.fileCls+'-'+extension;}
else{return this.fileCls;}},onAddForbiddenExtension:function(extension){Ext.Msg.show({title:this.forbiddenExtensionTitle,msg:String.format(this.forbiddenExtensionMessage,extension),icon:Ext.Msg.ERROR,buttons:Ext.Msg.OK});},maxUploadsReached:function(){return(this.store.getCount()+this.uploadedCount>=this.maxUploads);},onAddFile:function(bb){if(true!==this.eventsSuspended&&false===this.fireEvent('beforefileadd',this,bb.getInputFile())){return;}
var inp=bb.detachInputFile();if(Ext.isEmpty(inp.getValue()))return;inp.addClass('x-hidden');var fileName=this.getFileName(inp);var fileExtension=this.getFileExtension(fileName);if(Ext.isArray(this.forbiddenExtensions)&&(this.forbiddenExtensions.indexOf(fileExtension)>-1)){this.onAddForbiddenExtension(fileExtension);return;}
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',pctComplete:0},inp.id);rec.commit();this.store.add(rec);if(this.maxUploadsReached()){this.addButton.disable();}
this.uploadButton.enable();this.resetButton.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.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');switch(state){case 0:state='queued';break;case 1:state='uploading';break;case 2:state='processing';break;case 3:state='done';break;}
record.set('state',state);bytesTotal=record.get('bytesTotal')||1;bytesUploaded=record.get('bytesUploaded')||0;if('uploading'===state||'processing'===state){pctComplete=Math.round(1000*bytesUploaded/bytesTotal)/10;}
else if('done'===state){pctComplete=100;}
else{pctComplete=0;}
record.set('pctComplete',pctComplete);}},onRemoveFile:function(){var selectedRecords=this.getSelectionModel().getSelections();if(true!==this.eventsSuspended&&false===this.fireEvent('beforefileremove',this,this.store,selectedRecords)){return;}
for(var i=0;i<selectedRecords.length;i++){var record=selectedRecords[i];var inp=record.get('input');inp.remove();this.store.remove(record);}
var count=this.store.getCount();this.uploadButton.setDisabled(!count);this.resetButton.setDisabled(!count);if(!this.maxUploadsReached()){this.addButton.enable();}
if(true!==this.eventsSuspended){this.fireEvent('fileremove',this,this.store);}},onResetClick:function(btn){if(true===this.uploading){this.stopAll();}
else{this.reset();}},stopAll:function(){this.uploader.stopAll();},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.addButton.disable();this.removeButton.disable();this.uploadButton.setHandler(this.stopAll,this);this.uploadButton.setIconClass(this.stopIconCls);this.uploadButton.setText(this.stopAllText);this.uploadButton.getEl().child(this.uploadButton.buttonSelector).dom[this.uploadButton.tooltipType]=this.stopAllTip;}
else{if(!this.maxUploadsReached()){this.addButton.enable();}
if(this.getSelectionModel().getCount()>0)this.removeButton.enable();this.uploadButton.setHandler(this.onUpload,this);this.uploadButton.setIconClass(this.uploadIconCls);this.uploadButton.setText(this.uploadText);this.uploadButton.getEl().child(this.uploadButton.buttonSelector).dom[this.uploadButton.tooltipType]=this.uploadTip;}},reset: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);}}});Ext.reg('uploadpanel',Ext.ux.UploadPanel);

Ext.data.WCFHttpProxy=Ext.extend(Ext.data.HttpProxy,{load:function(params,reader,callback,scope,arg){if(this.fireEvent("beforeload",this,params)!==false){params=Ext.util.JSON.encode(params);var o={jsonData:params||{},request:{callback:callback,scope:scope,arg:arg},reader:reader,callback:this.loadResponse,scope:this};if(this.useAjax){Ext.applyIf(o,this.conn);if(this.activeRequest){Ext.Ajax.abort(this.activeRequest);}
this.activeRequest=Ext.Ajax.request(o);}else{this.conn.request(o);}}else{callback.call(scope||this,null,arg,false);}}});

Ext.ns('Ext.ux.form');Ext.ux.form.RegExpField=Ext.extend(Ext.form.TriggerField,{data:[],valueText:'Value',descriptionText:'Description',sampleText:'Sample',closeText:'Close',htmlText:'',triggerTip:'Help',windowTitle:'Help for regular expression',triggerClass:'x-form-regexp-trigger',onDisable:function(){Ext.ux.form.RegExpField.superclass.onDisable.call(this);this.trigger.setVisible(false);},onEnable:function(){Ext.ux.form.RegExpField.superclass.onEnable.call(this);this.trigger.setVisible(!this.readOnly);},initComponent:function(){Ext.ux.form.RegExpField.superclass.initComponent.call(this);this.addEvents('select');this.initWindow();},initWindow:function(){this.store=new Ext.data.SimpleStore({fields:[{name:'value'},{name:'description'},{name:'sample'}]});this.store.loadData(this.data);var win=Ext.getCmp('regExpFieldHelpWindow');if(win!==undefined){this.window=win;return;}
this.panel=new Ext.Panel({height:50,region:'north',bodyStyle:'padding:3px;',margins:'3 3 0 3',html:this.htmlText});this.grid=new Ext.grid.GridPanel({region:'center',store:this.store,columns:[{id:'value',header:this.valueText,width:160,sortable:true,dataIndex:'value'},{id:'description',header:this.descriptionText,sortable:true,dataIndex:'description'},{id:'sample',header:this.sampleText,width:250,sortable:true,dataIndex:'sample'}],stripeRows:true,autoExpandColumn:'description',height:350,width:600,stateful:true,stateId:'grid',margins:'3 3 3 3',cmargins:'3 3 3 3'});var button={text:this.closeText,handler:this.closeWindow.createDelegate(this)};this.window=new Ext.Window({id:'regExpFieldHelpWindow',title:this.windowTitle,closeAction:'hide',closable:true,width:700,height:400,plain:true,layout:'border',items:[this.panel,this.grid],buttons:[button]});},closeWindow:function(){this.window.hide();},onTriggerClick:function(){this.window.show();},afterRender:function(){Ext.ux.form.RegExpField.superclass.afterRender.call(this);this.trigger.dom.qtip=this.triggerTip;}});Ext.reg('regexpfield',Ext.ux.form.RegExpField);

Ext.ns('Ext.ux.form');Ext.ux.form.XCheckbox=Ext.extend(Ext.form.Checkbox,{submitOffValue:'false',submitOnValue:'true',onRender:function(){this.inputValue=this.submitOnValue;Ext.ux.form.XCheckbox.superclass.onRender.apply(this,arguments);this.originalValue=this.originalValue?this.submitOnValue:this.submitOffValue;this.hiddenField=this.wrap.insertFirst({tag:'input',type:'hidden'});if(this.tooltip){this.imageEl.set({qtip:this.tooltip});}
this.updateHidden();},getValue:function(){var v=Ext.ux.form.XCheckbox.superclass.getValue.apply(this,arguments);return(v?this.submitOnValue:this.submitOffValue);},setValue:function(v){v=this.convertValue(v);this.updateHidden(v);Ext.ux.form.XCheckbox.superclass.setValue.apply(this,arguments);},updateHidden:function(v){v=undefined!==v?v:this.checked;v=this.convertValue(v);if(this.hiddenField){this.hiddenField.dom.value=v?this.submitOnValue:this.submitOffValue;this.hiddenField.dom.name=v?'':this.el.dom.name;}},convertValue:function(v){return(v===true||v==='true'||v===this.submitOnValue||String(v).toLowerCase()==='on');}});Ext.reg('xcheckbox',Ext.ux.form.XCheckbox);

Ext.ns('Ext.ux.form');Ext.ux.form.XDateField=Ext.extend(Ext.form.DateField,{onRender:function(ct,position){Ext.ux.form.XDateField.superclass.onRender.call(this,ct,position);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.hiddenName,id:(this.hiddenId||this.hiddenName)},'after',true);this.el.dom.removeAttribute('name');}},isDirty:function(){return(this.formatHiddenDate(this.originalValue)!==this.formatHiddenDate(this.getValue()))},getSerializedValue:function(){var d=this.getValue();return this.formatHiddenDate(d)||'';},getValue:function(){this.beforeBlur();if(this.hiddenField){return this.parseDate(this.hiddenField.value)||'';}
else{return Ext.ux.form.XDateField.superclass.getValue.call(this);}},formatDate:function(date){return Ext.isDate(date)?date.dateFormat(this.format):date;},formatHiddenDate:function(date){return Ext.isDate(date)?date.dateFormat(this.hiddenFormat||this.format):date;},setValue:function(v){Ext.ux.form.XDateField.superclass.setValue.call(this,this.formatDate(this.parseDate(v)));if(this.hiddenField){var date=this.formatHiddenDate(this.parseDate(v));this.hiddenField.value=date||'';}},parseDate:function(value){var v=Ext.ux.form.XDateField.superclass.parseDate.call(this,value);if(!v&&this.hiddenFormat){v=Date.parseDate(value,this.hiddenFormat);}
return v;},beforeBlur:function(){var v=this.parseDate(this.getRawValue());if(v){this.setValue(v);}
else if(this.hiddenField){this.hiddenField.value='';}}});Ext.reg('xdatefield',Ext.ux.form.XDateField);

Ext.ns('Ext.ux.form');Ext.ux.form.MenuXDateField=Ext.extend(Ext.ux.form.XDateField,{menu2Tip:null,menu2:null,initComponent:function(){Ext.ux.form.MenuXDateField.superclass.initComponent.call(this);this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.menu2Tip||''}]};},onRender:function(ct,position){Ext.ux.form.MenuXDateField.superclass.onRender.call(this,ct,position);this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}},setReadOnly:function(readOnly){Ext.ux.form.MenuXDateField.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.MenuXDateField.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.MenuXDateField.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},onResize:function(w,h){w=w-this.getTrigger(1).getWidth();Ext.ux.form.MenuXDateField.superclass.onResize.call(this,w,h);},onTrigger2Click:function(e){if(!this.menu2)return;if(Ext.isString(this.menu2))
this.menu2=Ext.menu.MenuMgr.get(this.menu2);this.menu2.showAt(e.xy);},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.ux.form.XDateField.prototype.onTriggerClick,trigger1Class:Ext.ux.form.XDateField.prototype.triggerClass,trigger2Class:'x-form-trigger'});Ext.reg('menuxdatefield',Ext.ux.form.MenuXDateField);

Ext.ns('Ext.ux.form');Ext.ux.form.XPathField=Ext.extend(Ext.form.TriggerField,{invalidXPathMsg:'Current xpath is invalid',triggerTip:'get xpath',getXPathDelegate:Ext.emptyFn,triggerClass:'x-form-xpath-trigger',onDisable:function(){Ext.ux.form.XPathField.superclass.onDisable.call(this);this.trigger.setVisible(false);},onEnable:function(){Ext.ux.form.XPathField.superclass.onEnable.call(this);this.trigger.setVisible(!this.readOnly);},initComponent:function(){Ext.ux.form.XPathField.superclass.initComponent.call(this);this.addEvents('select');},clearValue:function(){this.setValue('');this.fireEvent('select',this);},onTriggerClick:function(){var v=this.getXPathDelegate();if(v!==undefined){if(v==null){ui.error({msg:this.invalidXPathMsg});return;}
this.setValue(v);}
else this.setValue('');},afterRender:function(){Ext.ux.form.XPathField.superclass.afterRender.call(this);this.trigger.dom.qtip=this.triggerTip;}});Ext.reg('xpathfield',Ext.ux.form.XPathField);

Ext.ns('Ext.ux.form');Ext.ux.form.XRadio=Ext.extend(Ext.form.Radio,{getGroupValue:function(){if(this.ownerGroup){return this.ownerGroup.getValue();}
var c=this.getParent().child('input.x-form-radio[name="'+this.el.dom.name+'"]:checked',true);return c?Ext.getCmp(c.id).getValue():'';},toggleValue:function(){if(!this.checked){if(this.ownerGroup){this.ownerGroup.items.each(function(radio){radio.setValue(this===radio);},this);}
else{var els=this.getParent().select('input.x-form-radio[name="'+this.el.dom.name+'"]');els.each(function(el){if(el.dom.id==this.id){this.setValue(true);}else{Ext.getCmp(el.dom.id).setValue(false);}},this);}}},getValue:function(){return this.checked?this.inputValue:'';},onRender:function(ct,position){Ext.ux.form.XRadio.superclass.onRender.call(this,ct,position);this.originalValue=this.getValue();}});Ext.reg('xradio',Ext.ux.form.XRadio);

Ext.ns('Ext.ux.form.clearable');Ext.ux.form.clearable.clearTip='Clear';Ext.ux.form.clearable.TextField=Ext.extend(Ext.form.TriggerField,{triggerClass:'x-form-reset-trigger',onDisable:function(){Ext.ux.form.clearable.TextField.superclass.onDisable.call(this);this.trigger.setVisible(false);},onEnable:function(){Ext.ux.form.clearable.TextField.superclass.onEnable.call(this);this.trigger.setVisible(!this.readOnly);},initComponent:function(){Ext.ux.form.clearable.TextField.superclass.initComponent.call(this);this.addEvents('clear');},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},onTriggerClick:function(){this.clearValue();},afterRender:function(){Ext.ux.form.clearable.TextField.superclass.afterRender.call(this);this.trigger.dom.qtip=this.clearTip||Ext.ux.form.clearable.clearTip;}});Ext.reg('clearabletextfield',Ext.ux.form.clearable.TextField);Ext.ux.form.clearable.TextArea=Ext.extend(Ext.ux.form.clearable.TextField,{growMin:Ext.form.TextArea.prototype.growMin,growMax:Ext.form.TextArea.prototype.growMax,growAppend:Ext.form.TextArea.prototype.growAppend,growPad:Ext.form.TextArea.prototype.growPad,enterIsSpecial:Ext.form.TextArea.prototype.enterIsSpecial,preventScrollbars:Ext.form.TextArea.prototype.preventScrollbars,onDestroy:Ext.form.TextArea.prototype.onDestroy,fireKey:Ext.form.TextArea.prototype.fireKey,onKeyUp:Ext.form.TextArea.prototype.onKeyUp,autoSize:Ext.form.TextArea.prototype.autoSize,onRender:function(ct,position){if(!this.el){this.defaultAutoCreate={tag:'textarea',style:'width:100px;height:'+(Math.max(this.height||60,40))+'px;',autocomplete:'off'};}
Ext.ux.form.clearable.TextArea.superclass.onRender.call(this,ct,position);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:'pre',cls:'x-form-grow-sizer'});if(this.preventScrollbars){this.el.setStyle('overflow','hidden');}
this.el.setHeight(this.growMin);}}});Ext.reg('clearabletextarea',Ext.ux.form.clearable.TextArea);Ext.ux.form.clearable.NumberField=Ext.extend(Ext.ux.form.clearable.TextField,{fieldClass:Ext.form.NumberField.prototype.fieldClass,allowDecimals:Ext.form.NumberField.prototype.allowDecimals,decimalSeparator:Ext.form.NumberField.prototype.decimalSeparator,decimalPrecision:Ext.form.NumberField.prototype.decimalPrecision,allowNegative:Ext.form.NumberField.prototype.allowNegative,minValue:Ext.form.NumberField.prototype.minValue,maxValue:Ext.form.NumberField.prototype.maxValue,minText:Ext.form.NumberField.prototype.minText,maxText:Ext.form.NumberField.prototype.maxText,nanText:Ext.form.NumberField.prototype.nanText,baseChars:Ext.form.NumberField.prototype.baseChars,initEvents:Ext.form.NumberField.prototype.initEvents,validateValue:Ext.form.NumberField.prototype.validateValue,getValue:Ext.form.NumberField.prototype.getValue,setValue:Ext.form.NumberField.prototype.setValue,parseValue:Ext.form.NumberField.prototype.parseValue,fixPrecision:Ext.form.NumberField.prototype.fixPrecision,beforeBlur:Ext.form.NumberField.prototype.beforeBlur});Ext.reg('clearablenumberfield',Ext.ux.form.clearable.NumberField);Ext.ux.form.clearable.SpinnerField=Ext.extend(Ext.ux.form.SpinnerField,{initComponent:function(){Ext.ux.form.clearable.SpinnerField.superclass.initComponent.call(this);this.addEvents('clear');},onRender:function(ct,position){Ext.ux.form.clearable.SpinnerField.superclass.onRender.call(this,ct,position);if(!this.wrap)this.wrap=this.el.wrap({cls:'x-form-field-wrap'});this.clearWrap=this.wrap.wrap({cls:'x-form-field-wrap'});this.clearIcon=this.clearWrap.createChild({tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger x-form-reset-trigger','ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip});this.mon(this.clearIcon,'click',this.clearValue,this);this.afterMethod('onResize',this.doResize,this);},onDisable:function(){Ext.ux.form.clearable.SpinnerField.superclass.onDisable.call(this);this.clearIcon.setVisible(false);},onEnable:function(){Ext.ux.form.clearable.SpinnerField.superclass.onEnable.call(this);this.clearIcon.setVisible(!this.readOnly);},getResizeEl:function(){return this.clearWrap;},getPositionEl:function(){return this.clearWrap;},doResize:function(w,h){this.el.setWidth(this.adjustWidth('input',w-this.spinner.trigger.getWidth()-this.clearIcon.getWidth()));this.wrap.setWidth(this.el.getWidth()+this.spinner.trigger.getWidth());this.clearIcon.alignTo(this.wrap,'tl-tr',[0,0]);this.clearWrap.setWidth(w);},afterRender:function(){Ext.ux.form.clearable.SpinnerField.superclass.afterRender.apply(this,arguments);this.clearIcon.alignTo(this.wrap,'tl-tr',[0,0]);},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},setReadOnly:function(readOnly){Ext.ux.form.clearable.SpinnerField.superclass.setReadOnly.call(this,readOnly);this.clearIcon.setVisible(!readOnly&&!this.disabled);}});Ext.reg('clearablespinnerfield',Ext.ux.form.clearable.SpinnerField);Ext.ux.form.clearable.TriggerField=Ext.extend(Ext.form.TwinTriggerField,{initComponent:function(){Ext.ux.form.clearable.TriggerField.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.triggerClass},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},onRender:function(ct,position){Ext.ux.form.clearable.TriggerField.superclass.onRender.call(this,ct,position);this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}},setReadOnly:function(readOnly){Ext.ux.form.clearable.TriggerField.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.clearable.TriggerField.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.TriggerField.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},onTrigger1Click:function(){this.onTriggerClick();},onTrigger2Click:function(){this.clearValue();},trigger2Class:'x-form-reset-trigger'});Ext.reg('clearabletrigger',Ext.ux.form.clearable.TriggerField);Ext.ux.form.clearable.BrowseField=Ext.extend(Ext.ux.form.BrowseField,{initComponent:function(){Ext.ux.form.clearable.BrowseField.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},onRender:function(ct,position){Ext.ux.form.clearable.BrowseField.superclass.onRender.call(this,ct,position);this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}},setReadOnly:function(readOnly){Ext.ux.form.clearable.BrowseField.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.clearable.BrowseField.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.BrowseField.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},onTrigger2Click:function(){this.clearValue();},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.ux.form.BrowseField.prototype.onTriggerClick,trigger1Class:Ext.ux.form.BrowseField.prototype.triggerClass,trigger2Class:'x-form-reset-trigger'});Ext.reg('clearablebrowsefield',Ext.ux.form.clearable.BrowseField);Ext.ux.form.clearable.DateField=Ext.extend(Ext.form.DateField,{initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},onRender:function(ct,position){Ext.ux.form.clearable.DateField.superclass.onRender.call(this,ct,position);this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}},setReadOnly:function(readOnly){Ext.ux.form.clearable.DateField.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.clearable.DateField.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.DateField.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},onTrigger2Click:function(){this.clearValue();},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.form.DateField.prototype.onTriggerClick,trigger1Class:Ext.form.DateField.prototype.triggerClass,trigger2Class:'x-form-reset-trigger'});Ext.reg('clearabledatefield',Ext.ux.form.clearable.DateField);Ext.ux.form.clearable.XDateField=Ext.extend(Ext.ux.form.XDateField,{initComponent:function(){Ext.ux.form.clearable.XDateField.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},onRender:function(ct,position){Ext.ux.form.clearable.XDateField.superclass.onRender.call(this,ct,position);this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},setReadOnly:function(readOnly){Ext.ux.form.clearable.XDateField.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.clearable.XDateField.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.XDateField.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},onTrigger2Click:function(){this.clearValue();},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.ux.form.XDateField.prototype.onTriggerClick,trigger1Class:Ext.ux.form.XDateField.prototype.triggerClass,trigger2Class:'x-form-reset-trigger'});Ext.reg('clearablexdatefield',Ext.ux.form.clearable.XDateField);Ext.ux.form.clearable.ComboBox=Ext.extend(Ext.form.ComboBox,{initComponent:function(){Ext.ux.form.clearable.ComboBox.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},setReadOnly:function(readOnly){Ext.ux.form.clearable.ComboBox.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.clearable.ComboBox.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.ComboBox.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},onTrigger2Click:function(){this.clearValue();},onRender:function(ct,position){Ext.form.ComboBox.superclass.onRender.call(this,ct,position);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.hiddenName,id:(this.hiddenId||this.hiddenName)},'after',true);this.el.dom.removeAttribute('name');}
if(Ext.isGecko){this.el.dom.setAttribute('autocomplete','off');}
if(!this.tpl&&this.useQtip){this.tpl='<tpl for="."><div ext:qtip="{'+this.displayField+'}" class="x-combo-list-item">{'+this.displayField+'}</div></tpl>';}
if(!this.lazyInit){this.initList();}else{this.on('focus',this.initList,this,{single:true});}
this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}
if(this.grow){this.syncGrowSize();this.store.on('update',function(){this.syncGrowSize();},this);}
if(!this.listWidth&&this.width){this.listWidth=this.width;}
if(!this.editable){this.editable=true;this.setEditable(false);}},syncGrowSize:function(){if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el);}
var v='';this.store.each(function(record){if(v.length<record.get(this.displayField).length)
{v=record.get(this.displayField);}},this);v+=' ';this.width=Math.min(this.growMax,Math.max(this.metrics.getWidth(v)+17,this.growMin));this.el.setWidth(this.width);this.width+=this.trigger.getWidth();this.setSize(this.width);},onResize:function(w,h){Ext.ux.form.clearable.ComboBox.superclass.onResize.apply(this,arguments);if(this.list){var lw=this.el.getWidth()+this.getTrigger(0).getWidth();this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'));}
else if(!this.listWidth){this.listWidth=w;}},initList:function(){Ext.ux.form.clearable.ComboBox.superclass.initList.apply(this,arguments);var lw=Math.max(this.el.getWidth()+this.getTrigger(0).getWidth(),this.minListWidth);this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'));},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.form.ComboBox.prototype.onTriggerClick,trigger1Class:Ext.form.ComboBox.prototype.triggerClass,trigger2Class:'x-form-reset-trigger'});Ext.reg('clearablecombo',Ext.ux.form.clearable.ComboBox);Ext.ux.form.clearable.LovComboBox=Ext.extend(Ext.ux.form.LovCombo,{initComponent:function(){Ext.ux.form.clearable.LovComboBox.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},clearValue:function(){Ext.ux.form.clearable.LovComboBox.superclass.clearValue.call(this);this.fireEvent('clear',this);},setReadOnly:function(readOnly){Ext.ux.form.clearable.LovComboBox.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onDisable:function(){Ext.ux.form.clearable.LovComboBox.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.LovComboBox.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},onTrigger2Click:function(){this.clearValue();},onRender:function(ct,position){Ext.ux.form.LovCombo.superclass.onRender.call(this,ct,position);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.hiddenName,id:(this.hiddenId||this.hiddenName)},'after',true);this.el.dom.removeAttribute('name');}
if(Ext.isGecko){this.el.dom.setAttribute('autocomplete','off');}
if(!this.lazyInit){this.initList();}else{this.on('focus',this.initList,this,{single:true});}
this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}
if(this.grow){if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el);}
var v='';this.store.each(function(record){if(v.length<record.get(this.displayField).length)
{v=record.get(this.displayField);}},this);v+=' ';this.width=Math.min(this.growMax,Math.max(this.metrics.getWidth(v)+17,this.growMin));this.el.setWidth(this.width);this.width+=this.trigger.getWidth();this.setSize(this.width);}
if(!this.listWidth&&this.width){this.listWidth=this.width;}},onResize:function(w,h){Ext.ux.form.clearable.LovComboBox.superclass.onResize.apply(this,arguments);if(this.list&&!this.listWidth){var lw=Math.max(w-this.getTrigger(1).getWidth(),this.minListWidth);this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'));}},initList:function(){Ext.ux.form.clearable.LovComboBox.superclass.initList.apply(this,arguments);var lw=Math.max(this.list.getWidth()-this.getTrigger(1).getWidth(),this.minListWidth);this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'));},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.ux.form.LovCombo.prototype.onTriggerClick,trigger1Class:Ext.ux.form.LovCombo.prototype.triggerClass,trigger2Class:'x-form-reset-trigger'});Ext.reg('clearablelovcombo',Ext.ux.form.clearable.LovComboBox);Ext.ux.form.clearable.CheckboxGroup=Ext.extend(Ext.form.CheckboxGroup,{separator:'|',getName:function(){return this.name;},getSerializedValue:function(){var v=[];var values=(this.getValue()||'').split(this.separator);for(var i=0;i<this.items.length;i++){v.push(values[i]||'');}
return(v.length>1?v:v[0]);},getValue:function(){if(!this.rendered){return this.value;}
var v=[];this.items.each(function(i){var val=i.getValue();if(!Ext.isEmpty(val,false))v.push(val);});return v.join(this.separator);},setValue:function(v){if(this.rendered){var values=v.split(this.separator);this.items.each(function(i){i.setValue(values.indexOf(i.inputValue)>=0);},this);this.validate();}
this.fireEvent('change',this,v,this.value);this.value=v;},initValue:function(){if(this.value){this.setValue(this.value);}
this.originalValue=this.getValue();},initComponent:function(){Ext.ux.form.clearable.CheckboxGroup.superclass.initComponent.apply(this,arguments);this.addEvents('clear');},afterRender:function(){this.boxLabelMaxWidth=0;this.items.each(function(item){var labelWidth=Ext.util.TextMetrics.measure(item.labelEl,item.labelEl.dom.innerHTML).width+item.imageEl.getWidth()+10;this.boxLabelMaxWidth=Math.max(labelWidth,this.boxLabelMaxWidth);},this);Ext.ux.form.clearable.CheckboxGroup.superclass.afterRender.apply(this,arguments);this.clearIcon=this.panel.body.createChild({cls:'x-form-clear-icon','ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip});this.clearIcon.alignTo(this.panel.body,'tl-tl',[this.boxLabelMaxWidth,0]);this.mon(this.clearIcon,'click',this.clearValue,this);this.items.each(function(chk){chk.on('check',function(){this.setValue(this.getValue());},this);},this);},onDisable:function(){Ext.ux.form.clearable.CheckboxGroup.superclass.onDisable.call(this);this.clearIcon.setVisible(false);},onEnable:function(){Ext.ux.form.clearable.CheckboxGroup.superclass.onEnable.call(this);this.clearIcon.setVisible(!this.readOnly);},clearValue:function(){this.items.each(function(item){item.setValue(false);});this.fireEvent('clear',this);},alignErrorIcon:function(){this.errorIcon.alignTo(this.panel.body,'tl-tl',[this.boxLabelMaxWidth+20,0]);},alignHelpIcon:function(){this.helpIcon.alignTo(this.panel.body,'tl-tl',[this.boxLabelMaxWidth+20,0]);}});Ext.reg('clearablecheckboxgroup',Ext.ux.form.clearable.CheckboxGroup);Ext.ux.form.clearable.RadioGroup=Ext.extend(Ext.form.RadioGroup,{getName:function(){return this.name;},getSerializedValue:function(){var value=this.getValue();if(value===undefined||value===null)return'';return value.toString();},getValue:function(){if(!this.rendered){return this.value;}
return this.hiddenField.value;},initValue:function(){if(this.value){this.setValue(this.value);}
this.originalValue=this.getValue();},setValue:function(v){if(this.rendered){this.hiddenField.value=v;this.items.each(function(item){item.setValue(item.getRawValue()==v);});this.validate();}
this.fireEvent('change',this,v,this.value);this.value=v;},initComponent:function(){Ext.ux.form.clearable.RadioGroup.superclass.initComponent.apply(this,arguments);this.addEvents('clear');},onRadioClick:function(e,radio){if(radio.checked){this.setValue(radio.value);}},onRender:function(){Ext.ux.form.clearable.RadioGroup.superclass.onRender.apply(this,arguments);this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.name,id:this.id+'-hidden'},'after',true);},afterRender:function(){this.boxLabelMaxWidth=0;this.items.each(function(item){var labelWidth=Ext.util.TextMetrics.measure(item.labelEl,item.labelEl.dom.innerHTML).width+item.imageEl.getWidth()+10;this.boxLabelMaxWidth=Math.max(labelWidth,this.boxLabelMaxWidth);},this);Ext.ux.form.clearable.RadioGroup.superclass.afterRender.apply(this,arguments);this.clearIcon=this.panel.body.createChild({cls:'x-form-clear-icon','ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip});this.clearIcon.alignTo(this.panel.body,'tl-tl',[this.boxLabelMaxWidth,0]);this.mon(this.clearIcon,'click',this.clearValue,this);this.items.each(function(radio){radio.ownerGroup=this;radio.el.dom.removeAttribute('name');radio.on('check',function(){this.setValue(this.getValue());},this);},this);},onDisable:function(){Ext.ux.form.clearable.RadioGroup.superclass.onDisable.call(this);this.clearIcon.setVisible(false);},onEnable:function(){Ext.ux.form.clearable.RadioGroup.superclass.onEnable.call(this);this.clearIcon.setVisible(!this.readOnly);},clearValue:function(){this.items.each(function(item){item.setValue(false);});this.hiddenField.value='';this.fireEvent('clear',this);},alignErrorIcon:function(){this.errorIcon.alignTo(this.panel.body,'tl-tl',[this.boxLabelMaxWidth+20,0]);},alignHelpIcon:function(){this.helpIcon.alignTo(this.panel.body,'tl-tl',[this.boxLabelMaxWidth+20,0]);}});Ext.reg('clearableradiogroup',Ext.ux.form.clearable.RadioGroup);Ext.ux.form.clearable.HrefField=Ext.extend(Ext.ux.form.HrefField,{getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,trigger1Class:Ext.ux.form.HrefField.prototype.triggerClass,trigger2Class:'x-form-reset-trigger',initComponent:function(){Ext.ux.form.clearable.HrefField.superclass.initComponent.call(this);this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'a',cls:'x-item-disabled '+this.linkClass,target:this.target,cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class}]},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};this.addEvents('clear');},initTrigger:function(){var ts=this.trigger.dom.childNodes;this.hrefTrigger=Ext.get(ts[0]);this.clearTrigger=Ext.get(ts[1]);if(this.hideTrigger){this.hrefTrigger.dom.style.display='none';}
this.clearTrigger.on('click',this.onTrigger2Click,this,{preventDefault:true});},setReadOnly:function(readOnly){Ext.ux.form.clearable.HrefField.superclass.setReadOnly.call(this,readOnly);this.getTrigger(1).setVisible(!readOnly&&!this.disabled);},onTrigger1Click:Ext.emptyFn,onDisable:function(){Ext.ux.form.clearable.HrefField.superclass.onDisable.call(this);this.getTrigger(1).setVisible(false);},onEnable:function(){Ext.ux.form.clearable.HrefField.superclass.onEnable.call(this);this.getTrigger(1).setVisible(!this.readOnly);},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},onTrigger2Click:function(){this.clearValue();},setHrefAttribute:function(href){this.hrefTrigger.removeClass('x-item-disabled');this.hrefTrigger.dom.setAttribute('href',href);Ext.QuickTips.register({target:this.hrefTrigger.first(),text:this.triggerTip});},removeHrefAttribute:function(){this.hrefTrigger.addClass('x-item-disabled');this.hrefTrigger.dom.removeAttribute('href');Ext.QuickTips.unregister(this.hrefTrigger.first());}});Ext.reg('clearablehreffield',Ext.ux.form.clearable.HrefField);Ext.ux.form.clearable.PhoneField=Ext.extend(Ext.ux.form.clearable.HrefField,{phonePrefix:Ext.ux.form.PhoneField.prototype.phonePrefix,vtype:Ext.ux.form.PhoneField.prototype.vtype,validator:Ext.ux.form.PhoneField.prototype.validator,target:Ext.ux.form.PhoneField.prototype.target,triggerTip:Ext.ux.form.PhoneField.prototype.triggerTip,trigger1Class:Ext.ux.form.PhoneField.prototype.triggerClass,setHrefAttribute:function(phoneNumber){this.hrefTrigger.removeClass('x-item-disabled');this.hrefTrigger.dom.setAttribute('href',this.phonePrefix+phoneNumber);Ext.QuickTips.register({target:this.hrefTrigger.first(),text:this.triggerTip});}});Ext.reg('clearablephonefield',Ext.ux.form.clearable.PhoneField);Ext.ux.form.clearable.MailField=Ext.extend(Ext.ux.form.clearable.HrefField,{vtype:Ext.ux.form.MailField.prototype.vtype,target:Ext.ux.form.MailField.prototype.target,triggerTip:Ext.ux.form.MailField.prototype.triggerTip,trigger1Class:Ext.ux.form.MailField.prototype.triggerClass,setHrefAttribute:function(email){this.hrefTrigger.removeClass('x-item-disabled');this.hrefTrigger.dom.setAttribute('href','mailto:'+email);Ext.QuickTips.register({target:this.hrefTrigger.first(),text:this.triggerTip});}});Ext.reg('clearablemailfield',Ext.ux.form.clearable.MailField);Ext.ux.form.clearable.MenuXDateField=Ext.extend(Ext.ux.form.MenuXDateField,{initComponent:function(){Ext.ux.form.clearable.MenuXDateField.superclass.initComponent.call(this);this.addEvents('clear');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.menu2Tip||''},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger3Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};},clearValue:function(){this.setValue('');this.fireEvent('clear',this);},onResize:function(w,h){w=w+this.getTrigger(2).getWidth();Ext.ux.form.clearable.MenuXDateField.superclass.onResize.call(this,w,h);},onTrigger3Click:function(){this.clearValue();},trigger3Class:'x-form-reset-trigger'});Ext.reg('clearablemenuxdatefield',Ext.ux.form.clearable.MenuXDateField);

Ext.ns('Ext.ux.form');Ext.ux.form.LinkCombo=Ext.extend(Ext.ux.form.clearable.ComboBox,{forceSelection:true,pageSize:15,minChars:0,onRender:function(ct,position){Ext.ux.form.LinkCombo.superclass.onRender.call(this,ct,position);this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.el.dom.name,id:this.id+'-hidden'},'before',true);this.el.dom.removeAttribute('name');if(this.hideViewTrigger){this.getTrigger(1).setDisplayed(false);}},getName:function(){return this.name;},getValue:function(){if(!this.rendered){return this.value;}
return this.hiddenField.value;},setValue:function(v){if(this.linkRe.test(v)){if(this.hiddenField){this.hiddenField.value=v;}
if(this.static){Ext.ux.form.LinkCombo.superclass.setValue.call(this,v.substring(v.lastIndexOf('#')+1));}
else{Ext.Ajax.request({url:this.resolveLinkUrl,params:{linkId:v},method:'GET',success:function(response,options){var result=Ext.decode(response.responseText);var text=v;if(result.success&&result.d.Name){text=result.d[this.displayField];}
this.lastSelectionText=text;Ext.form.ComboBox.superclass.setValue.call(this,text);this.value=v;},failure:function(response,options){Ext.form.ComboBox.superclass.setValue.call(this,v);},scope:this});}
this.fireEvent('change',this,v,this.value);this.value=v;}
else{var text=v;if(this.valueField){var r=this.findRecord(this.valueField,v);if(r){text=r.data[this.displayField];}else if(this.valueNotFoundText!==undefined){text=this.valueNotFoundText;}}
this.lastSelectionText=text;if(v.length>0){v=String.format(this.linkFormat,v);}
if(this.hiddenField){this.hiddenField.value=v;}
Ext.form.ComboBox.superclass.setValue.call(this,text);this.value=v;}},onChange:function(f,newVal,oldVal){this.externalId=newVal.substring(newVal.lastIndexOf('#')+1);},viewLinkedDocument:function(){if(!this.externalId||this.externalId.length==0)return;if(!this.viewUrl||this.viewUrl.length==0)return;var baseUrl=ui.getUrlBase(this.viewUrl);var params=Ext.apply({eid:this.externalId},ui.getUrlParams(this.viewUrl));var url=ui.joinUrl(baseUrl,params);this.viewWindow.setTitle(String.format(this.viewTitle,this.externalId));this.viewWindow.iframe.setSrc(url);this.viewWindow.show();},onTrigger2Click:function(){this.viewLinkedDocument();},onTrigger3Click:function(){this.clearValue();},initComponent:function(){this.linkRe=new RegExp('^SIMTable://'+this.store.baseParams.setName+'#');this.linkFormat='SIMTable://'+this.store.baseParams.setName+'#{0}';Ext.ux.form.LinkCombo.superclass.initComponent.call(this);this.on('change',this.onChange,this);this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.viewTip||'View'},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger3Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};if(this.hideViewTrigger)return;this.viewWindowConfig=Ext.apply(this.viewWindowConfig||{},{id:this.id+'-view-window',closeAction:'hide',layout:'fit',buttons:[{id:'close',text:this.viewWindowConfig.closeButtonText||'Close',handler:function(){this.viewWindow.hide();},scope:this}],items:[{xtype:'iframepanel',id:this.id+'-view-iframe',defaultSrc:this.viewWindowConfig.url,loadMask:{msg:this.viewWindowConfig.loadMsg},fitToParent:true,border:false}]});this.viewUrl=this.viewWindowConfig.url;this.viewTitle=this.viewWindowConfig.title;this.viewWindow=new Ext.Window(this.viewWindowConfig);this.viewWindow.on('hide',function(){this.viewWindow.iframe.getFrame().reset();},this)
this.viewWindow.iframe=this.viewWindow.items.first();},onResize:function(w,h){Ext.ux.form.clearable.ComboBox.superclass.onResize.call(this,w,h);if(this.list&&!this.listWidth){var lw=Math.max(w-this.getTrigger(2).getWidth(),this.minListWidth);if(!this.hideViewTrigger){lw-=this.getTrigger(1).getWidth();}
this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'));}},initList:function(){Ext.ux.form.clearable.ComboBox.superclass.initList.call(this);var lw=Math.max(this.list.getWidth()-this.getTrigger(2).getWidth(),this.minListWidth);if(!this.hideViewTrigger){lw-=this.getTrigger(1).getWidth();}
this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'));},initEvents:function(){Ext.ux.form.LinkCombo.superclass.initEvents.call(this);this.on('beforequery',function(q){q.combo.lastQuery=undefined;q.forceAll=true;});},trigger2Class:'x-form-view-trigger',trigger3Class:'x-form-reset-trigger'});Ext.reg('linkcombo',Ext.ux.form.LinkCombo);

Ext.ns('Ext.ux.form');Ext.ux.form.LinkField=Ext.extend(Ext.ux.form.clearable.BrowseField,{noTrigger:false,readOnly:true,onRender:function(ct,position){Ext.ux.form.LinkField.superclass.onRender.call(this,ct,position);if(this.readOnly)
this.el.dom.setAttribute('readOnly',true);this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.el.dom.name,id:this.id+'-hidden'},'before',true);this.el.dom.removeAttribute('name');if(this.hideViewTrigger&&!this.noTrigger){this.getTrigger(1).setDisplayed(false);}},getName:function(){return this.name;},getValue:function(){if(!this.rendered){return this.value;}
return this.hiddenField.value;},setValue:function(v){if(v&&typeof v=='object'){if(this.valueField&&this.displayField){var value=v[this.valueField]||'';var text=v[this.displayField]||'';if(this.hiddenField){this.hiddenField.value=value;}
this.setDisplayValue(this.static?value.substring(value.lastIndexOf('#')+1):text);if(value!=''&&this.store){var LinkRecord=Ext.data.Record.create(this.store.reader.meta.fields);this.store.add(new LinkRecord(v,value));}
this.fireEvent('change',this,value,this.value);this.value=v;}}
else if(v&&v!=''){if(this.hiddenField){this.hiddenField.value=v;}
if(this.static){this.setDisplayValue(v.substring(v.lastIndexOf('#')+1));}
else{var index=-1;if(this.store){index=this.store.find(this.valueField,v,0,false,false);}
if(this.store&&index>-1){this.setDisplayValue(this.store.getAt(index).get(this.displayField));}
else{Ext.Ajax.request({url:this.resolveLinkUrl,params:{linkId:v},method:'GET',success:function(response,options){var result=Ext.decode(response.responseText);var text=v;if(result.success&&result.d.Name){text=result.d[this.displayField];if(this.store){var LinkRecord=Ext.data.Record.create(this.store.reader.meta.fields);this.store.add(new LinkRecord(result.d,result.d[this.valueField]));}}
this.setDisplayValue(text);},failure:function(response,options){this.setDisplayValue(v);},scope:this});}}
this.fireEvent('change',this,v,this.value);this.value=v;}
else{v=v||'';if(this.hiddenField){this.hiddenField.value=v;}
this.setDisplayValue(v);this.fireEvent('change',this,v,this.value);this.value=v;}},setDisplayValue:function(value){if(this.rendered){this.setRawValue(value);}},onChange:function(f,newVal,oldVal){this.externalId=newVal.substring(newVal.lastIndexOf('#')+1);},view:function(){if(!this.externalId||this.externalId.length==0)return;if(!this.viewUrl||this.viewUrl.length==0)return;var baseUrl=ui.getUrlBase(this.viewUrl);var params=Ext.apply({eid:this.externalId},ui.getUrlParams(this.viewUrl));var url=ui.joinUrl(baseUrl,params);this.viewWindow.setTitle(String.format(this.viewTitle,this.externalId));this.viewWindow.iframe.setSrc(url);this.viewWindow.show();},onTriggerClick:function(){this.onTrigger1Click();},onTrigger2Click:function(){this.view();},onTrigger3Click:function(){this.clearValue();},initComponent:function(){Ext.ux.form.LinkField.superclass.initComponent.call(this);this.on('change',this.onChange,this);if(!this.noTrigger){this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.viewTip||'View'},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger3Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};}else{this.triggerConfig={tag:'span',cls:'x-form-trigger',cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger1Class}]}}
if(this.hideViewTrigger)return;this.viewWindowConfig=Ext.apply(this.viewWindowConfig||{},{id:this.id+'-view-window',closeAction:'hide',layout:'fit',buttons:[{id:'close',text:this.viewWindowConfig.closeButtonText||'Close',handler:function(){this.viewWindow.hide();},scope:this}],items:[{xtype:'iframepanel',id:this.id+'-view-iframe',defaultSrc:this.viewWindowConfig.url,loadMask:{msg:this.viewWindowConfig.loadMsg},fitToParent:true,border:false}]});this.viewUrl=this.viewWindowConfig.url;this.viewTitle=this.viewWindowConfig.title;this.viewWindow=new Ext.Window(this.viewWindowConfig);this.viewWindow.on('hide',function(){this.viewWindow.iframe.getFrame().reset();},this)
this.viewWindow.iframe=this.viewWindow.items.first();},trigger2Class:'x-form-view-trigger',trigger3Class:'x-form-reset-trigger'});Ext.reg('linkfield',Ext.ux.form.LinkField);Ext.ux.form.LinkEditorField=Ext.extend(Ext.ux.form.LinkField,{validateBlur:function(){return!this.window.isVisible();}});

Ext.ns('Ext.ux.form');Ext.ux.form.ThesaurusField=Ext.extend(Ext.ux.form.LinkField,{view:function(){if(!this.externalId||this.externalId.length==0)return;this.viewWindow.setTitle(String.format(this.viewTitle,this.externalId));this.viewWindow.show();},onViewWindowShow:function(win){var value=this.getValue();if(value.length==0)return;if(value==this.lastValue)return;win.body.mask(this.viewLoadingText,'x-mask-loading');Ext.Ajax.request({url:this.viewUrl,method:'GET',params:{linkId:value},success:this.onGetPathsSuccess,failure:this.onGetPathsFailure,scope:this})},onGetPathsSuccess:function(response,options){this.viewWindow.body.unmask();var result=Ext.decode(response.responseText);if(result){if(result.success&&Ext.isArray(result.d)){this.setPaths(result.d);this.lastValue=options.params.linkId;}
else{ui.error({msg:this.viewErrorMessage,errors:result.errors});}}
else{ui.error(this.viewErrorMessage);}},onGetPathsFailure:function(response,options){this.viewWindow.body.unmask();ui.error(this.viewErrorMessage);},setPaths:function(paths){this.viewPanel.body.update('');this.viewList=this.viewPanel.body.createChild({tag:'ul'});for(var p=0;p<paths.length;p++){this.viewList.createChild({tag:'li',html:paths[p]})}},initComponent:function(){Ext.ux.form.clearable.BrowseField.prototype.initComponent.call(this);this.on('change',this.onChange,this);this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.viewTip||'View'},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger3Class,'ext:qtip':this.clearTip||Ext.ux.form.clearable.clearTip}]};if(this.hideViewTrigger)return;this.viewWindowConfig=Ext.apply(this.viewWindowConfig||{},{id:this.id+'-view-window',closeAction:'hide',layout:'fit',buttons:[{id:'close',text:this.viewWindowConfig.closeButtonText||'Close',handler:function(){this.viewWindow.hide();},scope:this}],items:[{xtype:'panel',id:this.id+'-view-panel',cls:'ux-form-thes-paths',border:false,autoScroll:true}],listeners:{show:this.onViewWindowShow,scope:this}});this.viewTitle=this.viewWindowConfig.title;this.viewUrl=this.viewWindowConfig.url;this.viewWindow=new Ext.Window(this.viewWindowConfig);this.viewPanel=this.viewWindow.items.first();}});Ext.reg('thesaurusfield',Ext.ux.form.ThesaurusField);

Ext.ux.form.UpdatableDateField=Ext.extend(Ext.ux.form.XDateField,{updateTip:'',incrementValue:5,initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);this.addEvents('updated');this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger1Class},{tag:'img',src:Ext.BLANK_IMAGE_URL,cls:'x-form-trigger '+this.trigger2Class,'ext:qtip':this.updateTip}]};},onRender:function(ct,position){Ext.ux.form.UpdatableDateField.superclass.onRender.call(this,ct,position);this.trigger.setDisplayed(true);if(this.hideTrigger){this.getTrigger(0).setDisplayed(false);}},onDisable:function(){Ext.ux.form.UpdatableDateField.superclass.onDisable.call(this);this.getTrigger(1).hide();},onEnable:function(){Ext.ux.form.UpdatableDateField.superclass.onEnable.call(this);this.getTrigger(1).show();},updateValue:function(){if(this.getValue()!='')
this.setValue(this.getValue().add(Date.DAY,this.incrementValue))
else
this.setValue((new Date).add(Date.DAY,this.incrementValue))
this.fireEvent('updated',this);},onTrigger2Click:function(){this.updateValue();},getTrigger:Ext.form.TwinTriggerField.prototype.getTrigger,initTrigger:Ext.form.TwinTriggerField.prototype.initTrigger,onTrigger1Click:Ext.form.DateField.prototype.onTriggerClick,trigger1Class:Ext.form.DateField.prototype.triggerClass,trigger2Class:'x-form-update-trigger'});Ext.reg('updatablexdatefield',Ext.ux.form.UpdatableDateField);

Ext.reg('livegrid',Ext.ux.grid.livegrid.GridPanel);Ext.reg('editorlivegrid',Ext.ux.grid.livegrid.EditorGridPanel);if(Ext.isChrome||Ext.isSafari){Ext.override(Ext.ux.grid.livegrid.ExpandableGridView,{scrollDelay:50});}
Ext.override(Ext.ux.grid.livegrid.GridView,{autoExpand:function(preventUpdate){var g=this.grid,cm=this.cm;if(!this.userResized&&g.autoExpandColumn){var tw=cm.getTotalWidth(false);var aw=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(tw!=aw){var ci=cm.getIndexById(g.autoExpandColumn);var currentWidth=cm.getColumnWidth(ci);var cw=Math.min(Math.max(((aw-tw)+currentWidth),g.autoExpandMin),g.autoExpandMax);if(cw!=currentWidth){cm.setColumnWidth(ci,cw-2,true);if(preventUpdate!==true){this.updateColumnWidth(ci,cw);}}}}},liveBufferUpdate:function(records,options,success)
{if(success===true){this.adjustBufferInset();this.fireEvent('buffer',this,this.ds,this.rowIndex,Math.min(this.ds.totalLength,this.visibleRows-this.rowClipped),this.ds.totalLength,options);if(Ext.isFunction(this.grid.selModel.replaceSelections)){this.grid.selModel.replaceSelections(records);}
this.isBuffering=false;this.isPrebuffering=false;this.showLoadMask(false);if(this.requestQueue>=0){var offset=this.requestQueue;this.requestQueue=-1;this.updateLiveRows(offset);return;}
if(this.isInRange(this.rowIndex)){this.replaceLiveRows(this.rowIndex,options.forceRepaint);}else{this.updateLiveRows(this.rowIndex);}
return;}else{this.fireEvent('bufferfailure',this,this.ds,options);}
this.requestQueue=-1;this.isBuffering=false;this.isPrebuffering=false;this.showLoadMask(false);}});Ext.override(Ext.ux.grid.livegrid.RowSelectionModel,{deselectRecord:function(record,preventViewNotify){if(this.locked){return;}
var isSelected=this.selections.key(record.id);if(!isSelected){return;}
var store=this.grid.store;var index=store.indexOfId(record.id);if(index==-1){index=store.findInsertIndex(record);if(index!=Number.MIN_VALUE&&index!=Number.MAX_VALUE){index+=store.bufferRange[0];}}else{}
if(this.last==index){this.last=false;}
if(this.lastActive==index){this.lastActive=false;}
this.selections.remove(record);if(!preventViewNotify){this.grid.getView().onRowDeselect(index);}
this.fireEvent("rowdeselect",this,index,record);this.fireEvent("selectionchange",this);},selectRow:function(index,keepExisting,preventViewNotify){if(this.locked||index<0||index>=this.grid.store.getTotalCount()){return;}
var r=this.grid.store.getAt(index);if(this.fireEvent("beforerowselect",this,index,keepExisting,r)!==false){if(!keepExisting||this.singleSelect){this.clearSelections();}
if(r){this.selections.add(r);this.pendingSelections[index]=r.id;}else if(!this.pendingSelections[index]){this.pendingSelections[index]=true;}
this.last=this.lastActive=index;if(!preventViewNotify){this.grid.getView().onRowSelect(index);}
this.fireEvent("rowselect",this,index,r);this.fireEvent("selectionchange",this);}},replaceSelections:function(records){if(!records||records.length==0){return;}
var ds=this.grid.store;var rec=null;var assigned=[];var ranges=this.getPendingSelections();var rangesLength=ranges.length
var selections=this.selections;var index=0;for(var i=0;i<rangesLength;i++){index=ranges[i];rec=ds.getAt(index);if(rec){selections.add(rec);assigned.push(rec.id);}}
var id=null;for(i=0,len=records.length;i<len;i++){rec=records[i];id=rec.id;if(assigned.indexOf(id)==-1&&selections.containsKey(id)){selections.add(rec);}}},onRefresh:function(){var ds=this.grid.store,index;var s=this.getPendingSelections();for(var i=0,len=s.length;i<len;i++){var r=s[i];this.selectRow(r,true);}},getSelectedRange:function(){var index=1;var ranges=[];var rangeDocument=[];var currentRange=0;var tmpArray=[];var ds=this.grid.store;for(var i in this.pendingSelections){tmpArray.push(parseInt(i));}
tmpArray.sort(function(o1,o2){if(o1>o2){return 1;}else if(o1<o2){return-1;}else{return 0;}});var max_i=tmpArray.length;if(max_i==0){return[];}
ranges[currentRange]=[tmpArray[0],tmpArray[0]];for(var i=0,max_i=max_i-1;i<max_i;i++){if(tmpArray[i+1]-tmpArray[i]==1){ranges[currentRange][1]=tmpArray[i+1];}else{currentRange++;ranges[currentRange]=[tmpArray[i+1],tmpArray[i+1]];}}
for(var i=0;i<ranges.length;i++){rangeDocument.push({Start:ranges[i][0],End:ranges[i][1]});}
return rangeDocument;},getSelectedIds:function(){var pendingSelectionsIndex=[],ranges=[],currentRange=0;for(var i in this.pendingSelections){pendingSelectionsIndex.push(parseInt(i));}
if(pendingSelectionsIndex.length==0)return[];pendingSelectionsIndex.sort(function(i1,i2){return(i1>i2?1:(i1<i2?-1:0));});ranges[currentRange]=[this.pendingSelections[pendingSelectionsIndex[0]],this.pendingSelections[pendingSelectionsIndex[0]]];for(var i=0;i<pendingSelectionsIndex.length-1;i++){if(pendingSelectionsIndex[i+1]-pendingSelectionsIndex[i]==1){ranges[currentRange][1]=this.pendingSelections[pendingSelectionsIndex[i+1]];}else{currentRange++;ranges[currentRange]=[this.pendingSelections[pendingSelectionsIndex[i+1]],this.pendingSelections[pendingSelectionsIndex[i+1]]];}}
var idRanges=[];for(var i=0;i<ranges.length;i++){idRanges.push({Start:Ext.isNumber(ranges[i][0])?ranges[i][0]:-1,End:Ext.isNumber(ranges[i][1])?ranges[i][1]:-1});}
return idRanges;}});Ext.override(Ext.ux.grid.RowActions,{onClick:function(e,target){var view=this.grid.getView();var row=e.getTarget(view.rowSelector);var col=target.parentNode?view.findCellIndex(target.parentNode.parentNode):false;var action=this.getAction(e);if(false!==row&&false!==col&&false!==action){var record=this.grid.store.getAt(row.rowIndex);if(this.callbacks&&'function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,record,action,row.rowIndex,col);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforeaction',this.grid,record,action,row.rowIndex,col)){return;}
else if(true!==this.eventsSuspended){this.fireEvent('action',this.grid,record,action,row.rowIndex,col);}}
t=e.getTarget('.ux-grow-action-item');if(t){var group=view.findGroup(target);var groupId=group?group.id.replace(/ext-gen[0-9]+-gp-/,''):null;var records;if(groupId){var re=new RegExp(RegExp.escape(groupId));records=this.grid.store.queryBy(function(r){return r._groupId.match(re);});records=records?records.items:[];}
action=t.className.replace(/ux-grow-action-item (ux-action-right )*/,'');if('function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,records,action,groupId);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforegroupaction',this.grid,records,action,groupId)){return false;}
this.fireEvent('groupaction',this.grid,records,action,groupId);}}});Ext.override(Ext.ux.form.SearchField,{paramTemplate:'{0}',initComponent:function(){Ext.ux.form.SearchField.superclass.initComponent.call(this);this.on('specialkey',function(f,e){if(e.getKey()==e.ENTER){this.onTrigger2Click();}},this);this.addEvents('search','beforesearch','beforereset','reset');},onTrigger1Click:function(){if(this.hasSearch&&this.fireEvent('beforereset',this)!==false){this.fireEvent('reset',this);this.el.dom.value='';if(this.store){var o={start:0};if(this.store.bufferSize)o.limit=this.store.bufferSize;this.store.baseParams=this.store.baseParams||{};this.store.baseParams[this.paramName]='';this.store.reload({params:o});}
this.triggers[0].hide();this.hasSearch=false;}},onTrigger2Click:function(){if(this.disabled)return;var v=this.getRawValue();if(v.length<1){this.hasSearch=true;this.onTrigger1Click();return;}
if(this.isValid()&&this.fireEvent('beforesearch',this,v)!==false){this.fireEvent('search',this,v);if(this.store){var o={start:0};if(this.store.bufferSize)o.limit=this.store.bufferSize;this.store.baseParams=this.store.baseParams||{};this.store.baseParams[this.paramName]=String.format(this.paramTemplate,v);this.store.reload({params:o});}
else if(this.ownerCt&&this.ownerCt instanceof Ext.form.FormPanel){this.ownerCt.form.submit();}
this.hasSearch=true;if(!this.hideResetTrigger)this.triggers[0].show();}},setValue:function(v){Ext.ux.form.SearchField.superclass.setValue.call(this,v);this.hasSearch=(v.length>0);if(this.hasSearch&&!this.hideResetTrigger){this.triggers[0].show();}
else{this.triggers[0].hide();}}});Ext.reg('searchfield',Ext.ux.form.SearchField);Ext.override(Ext.ux.Portal,{initComponent:function(){Ext.ux.Portal.superclass.initComponent.call(this);this.addEvents({validatedrop:true,beforedragover:true,dragover:true,beforedrop:true,drop:true,portletselect:true,portletcontextmenu:true,portlethide:true,portletshow:true,portletexpand:true,portletcollapse:true});}});Ext.override(Ext.ux.Portlet,{collapsible:false,tools:[{id:'close',handler:function(e,tool,panel){panel.hide();}}],initComponent:function(){Ext.ux.Portlet.superclass.initComponent.call(this);this.on({render:function(cmp){cmp.getEl().on({mousedown:function(){this.ownerCt.ownerCt.fireEvent('portletselect',this);},contextmenu:function(e){e.stopEvent();this.ownerCt.ownerCt.fireEvent('portletcontextmenu',this,e);},scope:this});},hide:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portlethide',cmp);},show:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portletshow',cmp);},collapse:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portletcollapse',cmp);},expand:function(cmp){cmp.ownerCt.ownerCt.fireEvent('portletexpand',cmp);},scope:this});}});Ext.override(Ext.ux.ManagedIframePanel,{setSrc:Ext.ux.ManagedIframePanel.prototype.setSrc.createInterceptor(function(src){if(!this.rendered){this.defaultSrc=src;return false;}})});Ext.ux.form.SpinnerField.override({getSerializedValue:function(){return this.getValue().toString();},onShow:function(){if(this.hideParent){this.container.removeClass('x-hide-'+this.hideMode);}else{var container=this.formItem||this.wrap||this.getActionEl();container.removeClass('x-hide-'+this.hideMode);}},onHide:function(){if(this.hideParent){this.container.addClass('x-hide-'+this.hideMode);}else{var container=this.formItem||this.wrap||this.getActionEl();container.addClass('x-hide-'+this.hideMode);}},onBlur:function(){this.beforeBlur();if(this.focusClass){this.el.removeClass(this.focusClass);}
this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate();}
var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent('change',this,v,this.startValue);}
this.fireEvent("blur",this);},setReadOnly:function(readOnly){Ext.ux.form.SpinnerField.superclass.setReadOnly.call(this,readOnly);this.spinner.trigger.setVisible(!readOnly);this.spinner.splitter.setVisible(!readOnly);}});Ext.ux.Spinner.override({onTriggerClick:function(){if(this.disabled||this.el.dom.readOnly){return;}
var middle=this.getMiddle();var ud=(Ext.EventObject.getPageY()<middle)?'Up':'Down';this['onSpin'+ud]();this.el.focus();},doEnable:function(){if(this.wrap){this.wrap.removeClass(this.field.disabledClass);}
this.field.mon(this.repeater,"click",this.onTriggerClick,this,{preventDefault:true});this.field.mon(this.trigger,{mouseover:this.onMouseOver,mouseout:this.onMouseOut,mousemove:this.onMouseMove,mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,preventDefault:true});this.field.mon(this.wrap,"mousewheel",this.handleMouseWheel,this);},doDisable:function(){if(this.wrap){this.wrap.addClass(this.field.disabledClass);this.el.removeClass(this.field.disabledClass);}
this.repeater.un("click",this.onTriggerClick,this);this.trigger.un({mouseover:this.onMouseOver,mouseout:this.onMouseOut,mousemove:this.onMouseMove,mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,preventDefault:true});this.wrap.un("mousewheel",this.handleMouseWheel,this);}});Ext.override(Ext.ux.form.LovCombo,{useQtip:false,addSelectAllItem:false,selectAllValueField:'_all',selectAllTextField:'All',allSelected:false,setRawValue:function(v){if(!this.rendered)return"";return this.el.dom.value=v===null||v===undefined?"":v},onViewClick:function(doFocus){var index=this.view.getSelectedIndexes()[0];if(this.addSelectAllItem&&index==0){this.toggleAll();}else{var r=this.store.getAt(index);if(r){this.onSelect(r,index);}
if(doFocus!==false){this.el.focus();}}},initComponent:function(){if(!this.tpl){var qtipValue=this.useQtip?('ext:qtip="{'+this.displayField+'}"'):'';this.tpl='<tpl for=".">'
+'<tpl if="'+this.valueField+'==\''+this.selectAllValueField+'\'">'
+'<div class="x-combo-list-item ux-lovcombo-list-item-all">'
+'<img src="'+Ext.BLANK_IMAGE_URL+'" '
+'class="ux-lovcombo-icon ux-lovcombo-icon-'
+'{[values.'+this.checkField+'?"checked":"unchecked"'+']}">'
+'<div class="ux-lovcombo-item-text">{'+(this.displayField||'text')+'}</div>'
+'</div>'
+'</tpl>'
+'<tpl if="'+this.valueField+'!=\''+this.selectAllValueField+'\'">'
+'<div class="x-combo-list-item">'
+'<img src="'+Ext.BLANK_IMAGE_URL+'" '
+'class="ux-lovcombo-icon ux-lovcombo-icon-'
+'{[values.'+this.checkField+'?"checked":"unchecked"'+']}">'
+'<div '+qtipValue+' class="ux-lovcombo-item-text">{'+(this.displayField||'text')+'}</div>'
+'</div>'
+'</tpl>'
+'</tpl>';}
Ext.ux.form.LovCombo.superclass.initComponent.apply(this,arguments);this.addEvents('selectall','deselectall');this.on({scope:this,beforequery:this.onBeforeQuery,blur:this.onRealBlur});if(this.addSelectAllItem){this.insertSelectAllRecord();this.onLoad=this.onLoad.createInterceptor(this.insertSelectAllRecord);}
this.onLoad=this.onLoad.createSequence(function(){if(this.el){var v=this.el.dom.value;this.el.dom.value='';this.el.dom.value=v;}});},onSelect:function(record,index){if(this.fireEvent('beforeselect',this,record,index)!==false){record.set(this.checkField,!record.get(this.checkField));if(this.store.isFiltered()){this.doQuery(this.allQuery);}
this.setValue(this.getCheckedValue());this.fireEvent('select',this,record,index);}
if(this.allowBlank==false){var value=this.getValue();if(value==''){this.setValue(record.get(this.valueField));}}},insertSelectAllRecord:function(){if(this.store.getCount()>0&&this.store.getAt(0).get(this.valueField)!=this.selectAllValueField){var RecordType=Ext.data.Record.create([this.valueField,this.displayField]);var data={};data[this.valueField]=this.selectAllValueField;data[this.displayField]=this.selectAllTextField;this.store.insert(0,[new RecordType(data)]);}},getCheckedValue:function(field){field=field||this.valueField;var c=[];var snapshot=this.store.snapshot||this.store.data;snapshot.each(function(r,index){if(((this.addSelectAllItem&&index>0)||!this.addSelectAllItem)&&r.get(this.checkField)){c.push(r.get(field));}},this);return c.join(this.separator);},setValue:function(v){if(v){v=''+v;if(this.valueField){this.store.clearFilter();this.allSelected=true;this.store.each(function(r,index){var checked=!(!v.match('(^|'+this.separator+')'+RegExp.escape(r.get(this.valueField))
+'('+this.separator+'|$)'));r.set(this.checkField,checked);if(this.addSelectAllItem&&index>0||!this.addSelectAllItem){this.allSelected=this.allSelected&&checked;}},this);if(this.addSelectAllItem){this.store.getAt(0).set(this.checkField,this.allSelected);}
this.value=this.getCheckedValue();this.setRawValue(this.allSelected?this.selectAllTextField:this.getCheckedDisplay());if(this.hiddenField){this.hiddenField.value=this.value;}}
else{this.value=v;this.setRawValue(v);if(this.hiddenField){this.hiddenField.value=v;}}
if(this.el){this.el.removeClass(this.emptyClass);}}
else{this.clearValue();}
this.fireEvent('newValue',this,null,v||null);this.validate();},onRealBlur:function(){this.list.hide();var rv=this.getRawValue();var rva=rv.split(new RegExp(RegExp.escape(this.separator)+' *'));var va=[];var snapshot=this.store.snapshot||this.store.data;Ext.each(rva,function(v){snapshot.each(function(r){if(v===r.get(this.displayField)){va.push(r.get(this.valueField));}},this);},this);this.store.clearFilter();},toggleAll:function(){if(this.allSelected){this.allSelected=false;this.deselectAll();}else{this.allSelected=true;this.selectAll();}},selectAll:function(){this.store.each(function(record){record.set(this.checkField,true);},this);this.doQuery(this.allQuery);this.setValue(this.getCheckedValue());this.fireEvent('selectall',this);},deselectAll:function(){this.clearValue();this.fireEvent('deselectall',this);},clearValue:function(){this.value='';this.allSelected=false;this.setRawValue(this.value);this.store.clearFilter();this.store.each(function(r){r.set(this.checkField,false);},this);if(this.hiddenField){this.hiddenField.value='';}
this.applyEmptyText();if(this.allowBlank==false&&!Ext.isEmpty(this.originalValue)){this.setValue(this.originalValue);}}});Ext.override(Ext.ux.form.DateTime,{initComponent:function(){Ext.ux.form.DateTime.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+'-date',format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus},select:{scope:this,fn:this.onSelect}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete(this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+'-time',format:this.timeFormat||Ext.form.TimeField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus},select:{scope:this,fn:this.onSelect}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete(this.timeFormat);this.relayEvents(this.df,['focus','specialkey','invalid','valid']);this.relayEvents(this.tf,['focus','specialkey','invalid','valid']);},onSelect:function(f){if(this.wrapClick){f.focus();this.wrapClick=false;}
if(f===this.df)this.updateDate();else this.updateTime();this.updateHidden();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue);}
this.hasFocus=false;}}).defer(100,this);},validate:function(){if(!(this.df.validate()&&this.tf.validate()))return false;if(this.getValue()<=(new Date))return false;return true;}});Ext.override(Ext.ux.tree.CheckTreeNodeUI,{isEditable:true,toggleCheck:function(){if(!this.isEditable)return;var checked=!this.isChecked();this.setChecked(checked);return checked;},setChecked:function(checked){checked=true===checked?checked:false;if(!this.fireEvent('beforecheckchange',this.node,checked))
return;var cb=this.cbEl||false;if(cb){true===checked?cb.addClass('x-tree-node-checked'):cb.removeClass('x-tree-node-checked');}
this.node.attributes.checked=checked;this.onCheckChange();return checked;}});Ext.override(Ext.ux.form.ReadOnlyField,{dateDisplayFormat:Ext.ux.form.XDateField.prototype.format});Ext.override(Ext.ux.FileUploader,{createForm:function(record){var form=Ext.getBody().createChild({tag:'form',action:this.url,method:'GET',cls:'x-hidden',id:Ext.id()});if(record){record.set('form',form.id);}
return form;},getIframe:function(record){var iframe=null;var formId=record.get('form');if(Ext.isString(formId)&&formId.length>0){var form=Ext.get(formId);if(form&&form.dom&&form.dom.target){iframe=Ext.get(form.dom.target);}}
return iframe;}});

Ext.ns('Ext.plugins');Ext.plugins.AccordionLayoutRenderer=function(){return{init:function(accordion){if(!accordion.items)return;accordion.items.each(function(item){item.on('render',function(cmp){var collapsed=cmp.collapsed;cmp.expand();cmp.doLayout();if(collapsed){cmp.collapse.defer(10,cmp);}});});}}};

Ext.ns('Ext.plugins.grid');Ext.plugins.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id();}
this.renderer=this.renderer.createDelegate(this);};Ext.plugins.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);},this);},onMouseDown:function(e,t){if(this.editable===false)return;if(this.grid.disabled)return;if(t.className&&t.className.indexOf('x-grid3-cc-'+this.id)!=-1){e.stopEvent();var rowIndex=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(rowIndex);var startValue=record.data[this.dataIndex];var o={grid:this.grid,record:record,field:this.dataIndex,originalValue:startValue,value:!startValue,row:rowIndex,column:this.grid.colModel.getIndexById(this.id),cancel:false};if(this.grid.fireEvent("beforeedit",o)!==false&&!o.cancel){if(this.grid.fireEvent("validateedit",o)!==false&&!o.cancel){record.set(this.dataIndex,!startValue);delete o.cancel;this.grid.fireEvent("afteredit",o);}}}},renderer:function(v,p,record){p.css+=' x-grid3-check-col-td';return'<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'">&#160;</div>';}};

Ext.namespace('Ext.ux.grid');Ext.ux.grid.ProgressColumn=function(config){Ext.apply(this,config);this.renderer=this.renderer.createDelegate(this);this.addEvents('action');Ext.ux.grid.ProgressColumn.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.ProgressColumn,Ext.util.Observable,{textPst:'%',colored:false,actionEvent:'dblclick',init:function(grid){this.grid=grid;this.view=grid.getView();if(this.editor&&grid.isEditor){var cfg={scope:this};cfg[this.actionEvent]=this.onClick;grid.afterRender=grid.afterRender.createSequence(function(){this.view.mainBody.on(cfg);},this);}},onClick:function(e,target){var rowIndex=e.getTarget('.x-grid3-row').rowIndex;var colIndex=this.view.findCellIndex(target.parentNode.parentNode);var t=e.getTarget('.x-progress-text');if(t){this.grid.startEditing(rowIndex,colIndex);}},renderer:function(v,p,record){var style='';var textClass=(v<55)?'x-progress-text-back':'x-progress-text-front'+(Ext.isIE6?'-ie6':'');var text=String.format('</div><div class="x-progress-text {0}" style="width:100%;" id="{1}">{2}</div></div>',textClass,Ext.id(),v+this.textPst);text=(v<96)?text.substring(0,text.length-6):text.substr(6);if(this.colored==true){if(v<=100&&v>66)
style='-green';if(v<67&&v>33)
style='-orange';if(v<34)
style='-red';}
p.css+=' x-grid3-progresscol';return String.format('<div class="x-progress-wrap"><div class="x-progress-inner"><div class="x-progress-bar{0}" style="width:{1}%;">{2}</div>'+'</div>',style,v,text);}});

Ext.ns('Ext.plugins.grid');Ext.plugins.grid.GridCellCopy=function(config){Ext.apply(this,config);};Ext.plugins.grid.GridCellCopy.prototype={menuCls:'x-grid-cell-copy-menu',menuItemText:'Copy cell content',menuItemIconCls:'x-grid-cell-copy-menu-icon',dialogTitle:'Copy',dialogMessage:'Press Ctrl+C to copy.',init:function(grid){this.menu=new Ext.menu.Menu({cls:this.menuCls,items:[{text:this.menuItemText,iconCls:this.menuItemIconCls,handler:this.copy,scope:this}]});this.grid=grid;this.grid.on('cellcontextmenu',function(g,rowIndex,colIndex,e){if(g.colModel.config[colIndex].enableCopy!==true)return;var rec=g.store.getAt(rowIndex);var dataIndex=g.colModel.getDataIndex(colIndex);var renderer=g.colModel.getRenderer(colIndex);var metadata={};var data=renderer(rec.get(dataIndex),metadata,rec,rowIndex,colIndex,g.store);if(!data||data=='')data=rec.get(dataIndex);if(data){this.data=data;if(this.data.length>0){e.stopEvent();this.menu.showAt(e.xy);}}},this);},copy:function(){Ext.Msg.show({title:this.dialogTitle,msg:this.dialogMessage,width:300,cls:'x-grid-cell-copy-dialog',buttons:Ext.MessageBox.OK,prompt:true,value:this.data});var dialog=Ext.Msg.getDialog();dialog.focusEl.set({readOnly:true});(function(){var d=dialog.focusEl.dom;var v=d.value;var doFocus=false;if(v.length>0){var start=0;var end=v.length;if(d.setSelectionRange){d.setSelectionRange(start,end);}else if(d.createTextRange){var range=d.createTextRange();range.moveStart('character',start);range.moveEnd('character',end-v.length);range.select();}
doFocus=Ext.isGecko||Ext.isOpera;}else{doFocus=true;}
if(doFocus){dialog.focusEl.focus();}}).defer(100);}}

Ext.ns('Ext.ux.grid');Ext.ux.grid.GridSummary=function(config){Ext.apply(this,config);};Ext.extend(Ext.ux.grid.GridSummary,Ext.util.Observable,{init:function(grid){this.grid=grid;this.cm=grid.getColumnModel();this.view=grid.getView();var v=this.view;v.onLayout=this.onLayout;v.afterMethod('render',this.refreshSummary,this);v.afterMethod('refresh',this.refreshSummary,this);v.afterMethod('syncScroll',this.syncSummaryScroll,this);v.afterMethod('onColumnWidthUpdated',this.doWidth,this);v.afterMethod('onAllColumnWidthsUpdated',this.doAllWidths,this);v.afterMethod('onColumnHiddenUpdated',this.doHidden,this);grid.store.on({add:this.refreshSummary,remove:this.refreshSummary,clear:this.refreshSummary,update:this.refreshSummary,scope:this});if(!this.rowTpl){this.rowTpl=new Ext.Template('<div class="x-grid3-summary-row x-grid3-gridsummary-row-offset">','<table class="x-grid3-summary-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">','<tbody><tr>{cells}</tr></tbody>','</table>','</div>');this.rowTpl.disableFormats=true;}
this.rowTpl.compile();if(!this.cellTpl){this.cellTpl=new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>',"</td>");this.cellTpl.disableFormats=true;}
this.cellTpl.compile();},calculate:function(rs,cm){var data={},cfg=cm.config;for(var i=0,len=cfg.length;i<len;i++){var cf=cfg[i],cname=cf.dataIndex;data[cname]=0;if(cf.summaryType){for(var j=0,jlen=rs.length;j<jlen;j++){var r=rs[j];data[cname]=Ext.ux.grid.GridSummary.Calculations[cf.summaryType](r.get(cname),r,cname,data,j);}}}
return data;},onLayout:function(vw,vh){if(Ext.type(vh)!='number'){return;}
if(!this.grid.getGridEl().hasClass('x-grid-hide-gridsummary')){this.scroller.setHeight(vh-this.summary.getHeight());}},syncSummaryScroll:function(){var mb=this.view.scroller.dom;this.view.summaryWrap.dom.scrollLeft=mb.scrollLeft;this.view.summaryWrap.dom.scrollLeft=mb.scrollLeft;},doWidth:function(col,w,tw){var s=this.view.summary.dom;s.firstChild.style.width=tw;s.firstChild.rows[0].childNodes[col].style.width=w;},doAllWidths:function(ws,tw){var s=this.view.summary.dom,wlen=ws.length;s.firstChild.style.width=tw;var cells=s.firstChild.rows[0].childNodes;for(var j=0;j<wlen;j++){cells[j].style.width=ws[j];}},doHidden:function(col,hidden,tw){var s=this.view.summary.dom,display=hidden?'none':'';s.firstChild.style.width=tw;s.firstChild.rows[0].childNodes[col].style.display=display;},renderSummary:function(o,cs,cm){cs=cs||this.view.getColumnData();var cfg=cm.config,buf=[],last=cs.length-1;for(var i=0,len=cs.length;i<len;i++){var c=cs[i],cf=cfg[i],p={};p.id=c.id;p.style=c.style;p.css=i==0?'x-grid3-cell-first ':(i==last?'x-grid3-cell-last ':'');if(cf.summaryType||cf.summaryRenderer){p.value=(cf.summaryRenderer||c.renderer)(o.data[c.name],p,o);}else{p.value='';}
if(p.value==undefined||p.value==="")p.value="&#160;";buf[buf.length]=this.cellTpl.apply(p);}
return this.rowTpl.apply({tstyle:'width:'+this.view.getTotalWidth()+';',cells:buf.join('')});},refreshSummary:function(){var g=this.grid,ds=g.store,cs=this.view.getColumnData(),cm=this.cm,rs=ds.getRange(),data=this.calculate(rs,cm),buf=this.renderSummary({data:data},cs,cm);if(!this.view.summaryWrap){this.view.summaryWrap=Ext.DomHelper.insertAfter(this.view.scroller,{tag:'div',cls:'x-grid3-gridsummary-row-inner'},true);}
this.view.summary=this.view.summaryWrap.update(buf).first();},toggleSummary:function(visible){var el=this.grid.getGridEl();if(el){if(visible===undefined){visible=el.hasClass('x-grid-hide-gridsummary');}
el[visible?'removeClass':'addClass']('x-grid-hide-gridsummary');this.view.layout();}},getSummaryNode:function(){return this.view.summary}});Ext.reg('gridsummary',Ext.ux.grid.GridSummary);Ext.ux.grid.GridSummary.Calculations={sum:function(v,record,colName,data,rowIdx){return data[colName]+Ext.num(v,0);},count:function(v,record,colName,data,rowIdx){return rowIdx+1;},max:function(v,record,colName,data,rowIdx){return Math.max(Ext.num(v,0),data[colName]);},min:function(v,record,colName,data,rowIdx){return Math.min(Ext.num(v,0),data[colName]);},average:function(v,record,colName,data,rowIdx){var t=data[colName]+Ext.num(v,0),count=record.store.getCount();return rowIdx==count-1?(t/count):t;}}

Ext.grid.GroupSummary=function(config){Ext.apply(this,config);};Ext.extend(Ext.grid.GroupSummary,Ext.util.Observable,{init:function(grid){this.grid=grid;this.cm=grid.getColumnModel();this.view=grid.getView();var v=this.view;v.doGroupEnd=this.doGroupEnd.createDelegate(this);v.afterMethod('onColumnWidthUpdated',this.doWidth,this);v.afterMethod('onAllColumnWidthsUpdated',this.doAllWidths,this);v.afterMethod('onColumnHiddenUpdated',this.doHidden,this);v.afterMethod('onUpdate',this.doUpdate,this);v.afterMethod('onRemove',this.doRemove,this);if(!this.rowTpl){this.rowTpl=new Ext.Template('<div class="x-grid3-summary-row" style="{tstyle}">','<table class="x-grid3-summary-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">','<tbody><tr>{cells}</tr></tbody>','</table></div>');this.rowTpl.disableFormats=true;}
this.rowTpl.compile();if(!this.cellTpl){this.cellTpl=new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on">{value}</div>',"</td>");this.cellTpl.disableFormats=true;}
this.cellTpl.compile();},toggleSummaries:function(visible){var el=this.grid.getGridEl();if(el){if(visible===undefined){visible=el.hasClass('x-grid-hide-summary');}
el[visible?'removeClass':'addClass']('x-grid-hide-summary');}},renderSummary:function(o,cs){cs=cs||this.view.getColumnData();var cfg=this.cm.config;var buf=[],c,p={},cf,last=cs.length-1;for(var i=0,len=cs.length;i<len;i++){c=cs[i];cf=cfg[i];p.id=c.id;p.style=c.style;p.css=i==0?'x-grid3-cell-first ':(i==last?'x-grid3-cell-last ':'');if(cf.summaryType||cf.summaryRenderer){p.value=(cf.summaryRenderer||c.renderer)(o.data[c.name],p,o);}else{p.value='';}
if(p.value==undefined||p.value==="")p.value="&#160;";buf[buf.length]=this.cellTpl.apply(p);}
return this.rowTpl.apply({tstyle:'width:'+this.view.getTotalWidth()+';',cells:buf.join('')});},calculate:function(rs,cs){var data={},r,c,cfg=this.cm.config,cf;for(var j=0,jlen=rs.length;j<jlen;j++){r=rs[j];for(var i=0,len=cs.length;i<len;i++){c=cs[i];cf=cfg[i];if(cf.summaryType){data[c.name]=Ext.grid.GroupSummary.Calculations[cf.summaryType](data[c.name]||0,r,c.name,data);}}}
return data;},doGroupEnd:function(buf,g,cs,ds,colCount){var data=this.calculate(g.rs,cs);buf.push('</div>',this.renderSummary({data:data},cs),'</div>');},doWidth:function(col,w,tw){var gs=this.view.getGroups(),s;for(var i=0,len=gs.length;i<len;i++){s=gs[i].childNodes[2];s.style.width=tw;s.firstChild.style.width=tw;s.firstChild.rows[0].childNodes[col].style.width=w;}},doAllWidths:function(ws,tw){var gs=this.view.getGroups(),s,cells,wlen=ws.length;for(var i=0,len=gs.length;i<len;i++){s=gs[i].childNodes[2];s.style.width=tw;s.firstChild.style.width=tw;cells=s.firstChild.rows[0].childNodes;for(var j=0;j<wlen;j++){cells[j].style.width=ws[j];}}},doHidden:function(col,hidden,tw){var gs=this.view.getGroups(),s,display=hidden?'none':'';for(var i=0,len=gs.length;i<len;i++){s=gs[i].childNodes[2];s.style.width=tw;s.firstChild.style.width=tw;s.firstChild.rows[0].childNodes[col].style.display=display;}},refreshSummary:function(groupValue){return this.refreshSummaryById(this.view.getGroupId(groupValue));},getSummaryNode:function(gid){var g=Ext.fly(gid,'_gsummary');if(g){return g.down('.x-grid3-summary-row',true);}
return null;},refreshSummaryById:function(gid){var g=document.getElementById(gid);if(!g){return false;}
var rs=[];this.grid.store.each(function(r){if(r._groupId==gid){rs[rs.length]=r;}});var cs=this.view.getColumnData();var data=this.calculate(rs,cs);var markup=this.renderSummary({data:data},cs);var existing=this.getSummaryNode(gid);if(existing){g.removeChild(existing);}
Ext.DomHelper.append(g,markup);return true;},doUpdate:function(ds,record){this.refreshSummaryById(record._groupId);},doRemove:function(ds,record,index,isUpdate){if(!isUpdate){this.refreshSummaryById(record._groupId);}},showSummaryMsg:function(groupValue,msg){var gid=this.view.getGroupId(groupValue);var node=this.getSummaryNode(gid);if(node){node.innerHTML='<div class="x-grid3-summary-msg">'+msg+'</div>';}}});Ext.grid.GroupSummary.Calculations={'sum':function(v,record,field){return v+(record.data[field]||0);},'count':function(v,record,field,data){return data[field+'count']?++data[field+'count']:(data[field+'count']=1);},'max':function(v,record,field,data){var v=record.data[field];var max=data[field+'max']===undefined?(data[field+'max']=v):data[field+'max'];return v>max?(data[field+'max']=v):max;},'min':function(v,record,field,data){var v=record.data[field];var min=data[field+'min']===undefined?(data[field+'min']=v):data[field+'min'];return v<min?(data[field+'min']=v):min;},'average':function(v,record,field,data){var c=data[field+'count']?++data[field+'count']:(data[field+'count']=1);var t=(data[field+'total']=((data[field+'total']||0)+(record.data[field]||0)));return t===0?0:t/c;}}
Ext.grid.HybridSummary=Ext.extend(Ext.grid.GroupSummary,{calculate:function(rs,cs){var gcol=this.view.getGroupField();var gvalue=rs[0].data[gcol];var gdata=this.getSummaryData(gvalue);return gdata||Ext.grid.HybridSummary.superclass.calculate.call(this,rs,cs);},updateSummaryData:function(groupValue,data,skipRefresh){var json=this.grid.store.reader.jsonData;if(!json.summaryData){json.summaryData={};}
json.summaryData[groupValue]=data;if(!skipRefresh){this.refreshSummary(groupValue);}},getSummaryData:function(groupValue){var json=this.grid.store.reader.jsonData;if(json&&json.summaryData){return json.summaryData[groupValue];}
return null;}});

Ext.ns('Ext.plugins');Ext.plugins.ContainerMask=function(opt){var options=opt||{};return{init:function(c){Ext.applyIf(c,{showMask:function(msg,msgClass,maskClass){var el;if(this.rendered&&(el=this[options.el]||Ext.get(options.el)||this.getEl?this.getEl():null)){el.mask.call(el,msg||options.msg,msgClass||options.msgClass,maskClass||options.maskClass);}},hideMask:function(){var el;if(this.rendered&&(el=this[options.el]||Ext.get(options.el)||this.getEl?this.getEl():null)){el.unmask.call(el);}}});if(options.masked){c.on('render',c.showMask.createDelegate(c,[null]),c,{delay:10,single:true});}}};};

Ext.grid.RadioSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:'<div class="x-grid3-hd-radio">&#160;</div>',width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:'',id:'radio',initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.singleSelect=true;this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);Ext.fly(view.innerHd).on('mousedown',this.onHdMouseDown,this);},this);},onMouseDown:function(e,t){if(e.button===0&&t.className=='x-grid3-row-radio'){e.stopEvent();var row=e.getTarget('.x-grid3-row');if(row){var index=row.rowIndex;if(this.isSelected(index)){this.deselectRow(index);}else{this.selectRow(index,true);}}}},onHdMouseDown:function(e,t){if(t.className=='x-grid3-hd-radio'){e.stopEvent();var hd=Ext.fly(t.parentNode);var isChecked=hd.hasClass('x-grid3-hd-radio-on');if(isChecked){hd.removeClass('x-grid3-hd-radio-on');this.clearSelections();}else{hd.addClass('x-grid3-hd-radio-on');this.selectAll();}}},renderer:function(v,p,record){return'<div class="x-grid3-row-radio">&#160;</div>';}});

Ext.plugins.RemoveTool=function(config){return{tooltip:'Remove',confirmTitle:'Remove',confirmMessage:'Are you sure you want to remove this panel ?',init:function(ct){var removeTool={id:'close',handler:this.removeMe,scope:this,hidden:config.hidden===true,qtip:config.tooltip||this.tooltip};ct.tools=ct.tools||[];ct.tools.push(removeTool);ct.removable=true;},removeMe:function(event,tool,panel,force){if(!force&&config.confirmRemove){Ext.Msg.confirm(config.confirmTitle||this.confirmTitle,config.confirmMessage||this.confirmMessage,function(btn){if(btn=='yes'){this.removeMe(event,tool,panel,true);}},this);return;}
panel.ownerCt.remove(panel,true);}}};

Ext.grid.RowExpander=function(config){Ext.apply(this,config);this.addEvents({beforeexpand:true,expand:true,beforecollapse:true,collapse:true});Ext.grid.RowExpander.superclass.constructor.call(this);if(this.tpl){if(typeof this.tpl=='string'){this.tpl=new Ext.Template(this.tpl);}
this.tpl.compile();}
this.state={};this.bodyContent={};};Ext.extend(Ext.grid.RowExpander,Ext.util.Observable,{header:"",width:20,sortable:false,fixed:true,menuDisabled:true,dataIndex:'',id:'expander',lazyRender:true,enableCaching:true,getRowClass:function(record,rowIndex,p,ds){p.cols=p.cols-1;var content=this.bodyContent[record.id];if(!content&&!this.lazyRender){content=this.getBodyContent(record,rowIndex);}
if(content){p.body=content;}
return this.state[record.id]?'x-grid3-row-expanded':'x-grid3-row-collapsed';},init:function(grid){this.grid=grid;var view=grid.getView();view.getRowClass=this.getRowClass.createDelegate(this);view.enableRowBody=true;grid.on('render',function(){view.mainBody.on('mousedown',this.onMouseDown,this);},this);},getBodyContent:function(record,index){if(!this.enableCaching){return this.tpl.apply(record.data);}
var content=this.bodyContent[record.id];if(!content){content=this.tpl.apply(record.data);this.bodyContent[record.id]=content;}
return content;},onMouseDown:function(e,t){if(t.className=='x-grid3-row-expander'){e.stopEvent();var row=e.getTarget('.x-grid3-row');this.toggleRow(row);}},renderer:function(v,p,record){p.cellAttr='rowspan="2"';return'<div class="x-grid3-row-expander">&#160;</div>';},beforeExpand:function(record,body,rowIndex){if(this.fireEvent('beforeexpand',this,record,body,rowIndex)!==false){if(this.tpl&&this.lazyRender){body.innerHTML=this.getBodyContent(record,rowIndex);}
return true;}else{return false;}},toggleRow:function(row){if(typeof row=='number'){row=this.grid.view.getRow(row);}
this[Ext.fly(row).hasClass('x-grid3-row-collapsed')?'expandRow':'collapseRow'](row);},expandRow:function(row){if(typeof row=='number'){row=this.grid.view.getRow(row);}
var record=this.grid.store.getAt(row.rowIndex);var body=Ext.DomQuery.selectNode('tr:nth(2) div.x-grid3-row-body',row);if(this.beforeExpand(record,body,row.rowIndex)){this.state[record.id]=true;Ext.fly(row).replaceClass('x-grid3-row-collapsed','x-grid3-row-expanded');this.fireEvent('expand',this,record,body,row.rowIndex);}},collapseRow:function(row){if(typeof row=='number'){row=this.grid.view.getRow(row);}
var record=this.grid.store.getAt(row.rowIndex);var body=Ext.fly(row).child('tr:nth(2) div.x-grid3-row-body',true);if(this.fireEvent('beforecollapse',this,record,body,row.rowIndex)!==false){this.state[record.id]=false;Ext.fly(row).replaceClass('x-grid3-row-expanded','x-grid3-row-collapsed');this.fireEvent('collapse',this,record,body,row.rowIndex);}}});

var CodeMirrorConfig=window.CodeMirrorConfig||{};var CodeMirror=(function(){function setDefaults(object,defaults){for(var option in defaults){if(!object.hasOwnProperty(option))
object[option]=defaults[option];}}
function forEach(array,action){for(var i=0;i<array.length;i++)
action(array[i]);}
setDefaults(CodeMirrorConfig,{stylesheet:"",path:"",parserfile:[],basefiles:["util.js","stringstream.js","select.js","undo.js","editor.js","tokenize.js"],iframeClass:null,passDelay:200,passTime:50,continuousScanning:false,saveFunction:null,onChange:null,undoDepth:50,undoDelay:800,disableSpellcheck:true,textWrapping:true,readOnly:false,width:"100%",height:"300px",autoMatchParens:false,parserConfig:null,tabMode:"indent",reindentOnLoad:false,activeTokens:null,cursorActivity:null,lineNumbers:false,indentUnit:2});function wrapLineNumberDiv(place){return function(node){var container=document.createElement("DIV"),nums=document.createElement("DIV"),scroller=document.createElement("DIV");container.style.position="relative";nums.style.position="absolute";nums.style.height="100%";if(nums.style.setExpression){try{nums.style.setExpression("height","this.previousSibling.offsetHeight + 'px'");}
catch(e){}}
nums.style.top="0px";nums.style.overflow="hidden";place(container);container.appendChild(node);container.appendChild(nums);scroller.className="CodeMirror-line-numbers";nums.appendChild(scroller);}}
function applyLineNumbers(frame){var win=frame.contentWindow,doc=win.document,nums=frame.nextSibling,scroller=nums.firstChild;var nextNum=1,barWidth=null;function sizeBar(){if(!frame.offsetWidth||!win.Editor){for(var cur=frame;cur.parentNode;cur=cur.parentNode){if(cur!=document){clearInterval(sizeInterval);return;}}}
if(nums.offsetWidth!=barWidth){barWidth=nums.offsetWidth;nums.style.left="-"+(frame.parentNode.style.marginLeft=barWidth+"px");}}
function update(){var diff=20+Math.max(doc.body.offsetHeight,frame.offsetHeight)-scroller.offsetHeight;for(var n=Math.ceil(diff/10);n>0;n--){var div=document.createElement("DIV");div.appendChild(document.createTextNode(nextNum++));scroller.appendChild(div);}
nums.scrollTop=doc.body.scrollTop||doc.documentElement.scrollTop||0;}
sizeBar();update();win.addEventHandler(win,"scroll",update);win.addEventHandler(win,"resize",update);var sizeInterval=setInterval(sizeBar,500);}
function CodeMirror(place,options){if(options.dumbTabs)options.tabMode="spaces";else if(options.normalTab)options.tabMode="default";this.options=options=options||{};setDefaults(options,CodeMirrorConfig);var frame=this.frame=document.createElement("IFRAME");if(options.iframeClass)frame.className=options.iframeClass;frame.frameBorder=0;frame.src="javascript:false;";frame.style.border="0";frame.style.width=options.width;frame.style.height=options.height;frame.style.display="block";if(place.appendChild){var node=place;place=function(n){node.appendChild(n);};}
if(options.lineNumbers)place=wrapLineNumberDiv(place);place(frame);frame.CodeMirror=this;this.win=frame.contentWindow;if(typeof options.parserfile=="string")
options.parserfile=[options.parserfile];if(typeof options.stylesheet=="string")
options.stylesheet=[options.stylesheet];var html=["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head>"];html.push("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\"/>");forEach(options.stylesheet,function(file){html.push("<link rel=\"stylesheet\" type=\"text/css\" href=\""+file+"\"/>");});forEach(options.basefiles.concat(options.parserfile),function(file){html.push("<script type=\"text/javascript\" src=\""+options.path+file+"\"></script>");});html.push("</head><body style=\"border-width: 0;\" class=\"editbox\" spellcheck=\""+
(options.disableSpellcheck?"false":"true")+"\"></body></html>");var doc=this.win.document;doc.open();doc.write(html.join(""));doc.close();}
CodeMirror.prototype={init:function(){if(this.options.initCallback)this.options.initCallback(this);if(this.options.lineNumbers)applyLineNumbers(this.frame);if(this.options.reindentOnLoad)this.reindent();},getCode:function(){return this.editor.getCode();},setCode:function(code){this.editor.importCode(code);},selection:function(){return this.editor.selectedText();},reindent:function(){this.editor.reindent();},reindentSelection:function(){this.editor.reindentSelection(null);},focus:function(){this.win.focus();if(this.editor.selectionSnapshot)
this.win.select.selectCoords(this.win,this.editor.selectionSnapshot);},replaceSelection:function(text){this.focus();this.editor.replaceSelection(text);return true;},replaceChars:function(text,start,end){this.editor.replaceChars(text,start,end);},getSearchCursor:function(string,fromCursor){return this.editor.getSearchCursor(string,fromCursor);},undo:function(){this.editor.history.undo();},redo:function(){this.editor.history.redo();},historySize:function(){return this.editor.history.historySize();},clearHistory:function(){this.editor.history.clear();},grabKeys:function(callback,filter){this.editor.grabKeys(callback,filter);},ungrabKeys:function(){this.editor.ungrabKeys();},setParser:function(name){this.editor.setParser(name);},cursorPosition:function(start){if(this.win.select.ie_selection)this.focus();return this.editor.cursorPosition(start);},firstLine:function(){return this.editor.firstLine();},lastLine:function(){return this.editor.lastLine();},nextLine:function(line){return this.editor.nextLine(line);},prevLine:function(line){return this.editor.prevLine(line);},lineContent:function(line){return this.editor.lineContent(line);},setLineContent:function(line,content){this.editor.setLineContent(line,content);},insertIntoLine:function(line,position,content){this.editor.insertIntoLine(line,position,content);},selectLines:function(startLine,startOffset,endLine,endOffset){this.win.focus();this.editor.selectLines(startLine,startOffset,endLine,endOffset);},nthLine:function(n){var line=this.firstLine();for(;n>1&&line!==false;n--)
line=this.nextLine(line);return line;},lineNumber:function(line){var num=0;while(line!==false){num++;line=this.prevLine(line);}
return num;},jumpToLine:function(n){this.selectLines(this.nthLine(n),0);this.win.focus();},currentLine:function(){return this.lineNumber(this.cursorPosition().line);}};CodeMirror.InvalidLineHandle={toString:function(){return"CodeMirror.InvalidLineHandle";}};CodeMirror.replace=function(element){if(typeof element=="string")
element=document.getElementById(element);return function(newElement){element.parentNode.replaceChild(newElement,element);};};CodeMirror.fromTextArea=function(area,options){if(typeof area=="string")
area=document.getElementById(area);options=options||{};if(area.style.width&&options.width==null)
options.width=area.style.width;if(area.style.height&&options.height==null)
options.height=area.style.height;if(options.content==null)options.content=area.value;if(area.form){function updateField(){area.value=mirror.getCode();}
if(typeof area.form.addEventListener=="function")
area.form.addEventListener("submit",updateField,false);else
area.form.attachEvent("onsubmit",updateField);}
function insert(frame){if(area.nextSibling)
area.parentNode.insertBefore(frame,area.nextSibling);else
area.parentNode.appendChild(frame);}
area.style.display="none";var mirror=new CodeMirror(insert,options);return mirror;};CodeMirror.isProbablySupported=function(){var match;if(window.opera)
return Number(window.opera.version())>=9.52;else if(/Apple Computers, Inc/.test(navigator.vendor)&&(match=navigator.userAgent.match(/Version\/(\d+(?:\.\d+)?)\./)))
return Number(match[1])>=3;else if(document.selection&&window.ActiveXObject&&(match=navigator.userAgent.match(/MSIE (\d+(?:\.\d*)?)\b/)))
return Number(match[1])>=6;else if(match=navigator.userAgent.match(/gecko\/(\d{8})/i))
return Number(match[1])>=20050901;else if(match=navigator.userAgent.match(/AppleWebKit\/(\d+)/))
return Number(match[1])>=525;else
return null;};return CodeMirror;})();

Ext.ns('Ext.plugins');Ext.plugins.TextFieldAutoCase=function(config){return{init:function(textfield){if(config.autoCase){textfield.on('change',function(f,newValue,oldValue){switch(config.autoCase){case'upper':f.setRawValue(newValue.toUpperCase());break;case'lower':f.setRawValue(newValue.toLowerCase());break;case'capitalize':f.setRawValue(newValue.charAt(0).toUpperCase()+newValue.substr(1));break;}});}}}};

Ext.ns('Ext.plugins.form');Ext.plugins.form.TriggerFieldTooltip=function(config){Ext.apply(this,config);}
Ext.plugins.form.TriggerFieldTooltip.prototype={init:function(field){field.on('render',function(f){if(f.trigger&&this.tooltip.length>0){Ext.QuickTips.register({target:f.trigger,text:this.tooltip});}},this);}};

Ext.grid.RowExpander.override({expandOnDblClick:true,hideIndex:'',init:function(grid){this.grid=grid;var view=grid.getView();view.getRowClass=this.getRowClass.createDelegate(this);view.enableRowBody=true;grid.on('render',this.onRender,this);grid.on('destroy',this.onDestroy,this);this.renderer=(function(v,p,record){p.cellAttr='rowspan="2"';if(this.hideIndex.length>0){if(record.get(this.hideIndex)==this.hideValue){record.expandable=false;return'';}}
return'<div class="x-grid3-row-expander">&#160;</div>';}).createDelegate(this);},onRender:function(){var grid=this.grid;var mainBody=grid.getView().mainBody;mainBody.on('mousedown',this.onMouseDown,this,{delegate:'.x-grid3-row-expander'});if(this.expandOnDblClick){grid.on('rowdblclick',this.onRowDblClick,this);}},onDestroy:function(){this.keyNav.disable();delete this.keyNav;var mainBody=this.grid.getView().mainBody;mainBody.un('mousedown',this.onMouseDown,this);},onRowDblClick:function(grid,rowIdx,e){if(grid.store.getAt(rowIdx).expandable===false)return;this.toggleRow(rowIdx);},getBody:function(row){if(typeof row=='number'){row=this.grid.view.getRow(row);}
return Ext.DomQuery.selectNode('tr:nth(2) div.x-grid3-row-body',row);}});Ext.ux.grid.GridSummary.override({init:Ext.ux.grid.GridSummary.prototype.init.createSequence(function(){this.view.addEvents('refreshsummary');}),refreshSummary:Ext.ux.grid.GridSummary.prototype.refreshSummary.createSequence(function(){this.view.fireEvent('refreshsummary',this.view);})});

