/*
 * gxui Library 1.1 beta (Build 958)
 * Copyright (c) 2009, Artech
 * All rights reserved.
 * 
 * gxui Library is freely distributable under the terms of the BSD license.
 * 
 */


Ext.form.ColorField=function(config){Ext.form.ColorField.superclass.constructor.call(this,config);};Ext.extend(Ext.form.ColorField,Ext.form.TriggerField,{invalidText:"{0} is not a valid color - it must be in a the hex format {1}",triggerClass:'x-form-color-trigger',defaultAutoCreate:{tag:"input",type:"text",size:"10",maxlength:"7",autocomplete:"off"},maskRe:/[a-f0-9]/i,regex:/[a-f0-9]/i,validateValue:function(value){if(!Ext.form.ColorField.superclass.validateValue.call(this,value)){return false;}
if(value.length<1){return true;}
var parseOK=this.parseColor(value);if(!value||(parseOK==false)){this.markInvalid(String.format(this.invalidText,value,'#AABBCC'));return false;}
return true;},validateBlur:function(){return!this.menu||!this.menu.isVisible();},getValue:function(){return Ext.form.ColorField.superclass.getValue.call(this)||"";},setValue:function(color){Ext.form.ColorField.superclass.setValue.call(this,this.formatColor(color));},parseColor:function(value){return(!value||(value.substring(0,1)!='#'))?false:true;},formatColor:function(value){if(value&&(this.parseColor(value)==false)){value='#'+value;}
return value;},menuListeners:{select:function(e,c){this.setValue(c);},show:function(){this.onFocus();},hide:function(){this.focus();var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;}
if(this.menu==null){this.menu=new Ext.menu.ColorMenu();}
this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.show(this.el,"tl-bl?");}});Ext.ComponentMgr.registerType('colorfield',Ext.form.ColorField);

Ext.ux.NestedViewport=Ext.extend(Ext.Container,{initComponent:function(){Ext.ux.NestedViewport.superclass.initComponent.call(this);document.getElementsByTagName('html')[0].className+=' x-viewport';this.renderTo=Ext.get(this.renderTo);this.renderTo.addClass("x-nested");this.el=this.renderTo;this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.dom.scroll='no';this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);},fireResize:function(w,h){this.fireEvent('resize',this,w,h,w,h);}});Ext.reg('xnestedviewport',Ext.ux.NestedViewport);

Ext.menu.EditableItem=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-item",hideOnClick:false,initComponent:function(){Ext.menu.EditableItem.superclass.initComponent.call(this);this.addEvents('keyup');this.editor=this.editor||new Ext.form.TextField();if(this.text){this.editor.setValue(this.text);}},onRender:function(container){var s=container.createChild({cls:this.itemCls,html:String.format('<img src="{0}" class="x-menu-item-icon x-menu-editable-icon {1}" />',this.icon||Ext.BLANK_IMAGE_URL,this.iconCls||'')});Ext.apply(this.config,{width:125});this.editor.render(s);this.el=s;this.relayEvents(this.editor.el,["keyup"]);if(Ext.isGecko){s.setStyle('overflow','auto');}
Ext.menu.EditableItem.superclass.onRender.call(this,container);},getValue:function(){return this.editor.getValue();},setValue:function(value){this.editor.setValue(value);},isValid:function(preventMark){return this.editor.isValid(preventMark);}});

Ext.menu.RangeMenu=function(config){Ext.menu.RangeMenu.superclass.constructor.call(this,config);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);var cfg=this.fieldCfg;var cls=this.fieldCls;var fields=this.fields=Ext.applyIf(this.fields||{},{'gt':new Ext.menu.EditableItem({iconCls:'x-filter-icon-gt',editor:new cls(typeof cfg=="object"?cfg.gt||'':cfg)}),'lt':new Ext.menu.EditableItem({iconCls:'x-filter-icon-lt',editor:new cls(typeof cfg=="object"?cfg.lt||'':cfg)}),'eq':new Ext.menu.EditableItem({iconCls:'x-filter-icon-eq',editor:new cls(typeof cfg=="object"?cfg.gt||'':cfg)})});this.add(fields.gt,fields.lt,'-',fields.eq);for(var key in fields){fields[key].on('keyup',this.onKeyUp.createDelegate(this,[fields[key]],true),this);}
this.addEvents('update');};Ext.extend(Ext.menu.RangeMenu,Ext.menu.Menu,{fieldCls:Ext.form.NumberField,fieldCfg:'',updateBuffer:500,fireUpdate:function(){this.fireEvent("update",this);},setValue:function(data){for(var key in this.fields){this.fields[key].setValue(data[key]!==undefined?data[key]:'');}
this.fireEvent("update",this);},getValue:function(){var result={};for(var key in this.fields){var field=this.fields[key];if(field.isValid()&&String(field.getValue()).length>0){result[key]=field.getValue();}}
return result;},onKeyUp:function(event,input,notSure,field){if(event.getKey()==event.ENTER&&field.isValid()){this.hide(true);return;}
if(field==this.fields.eq){this.fields.gt.setValue(null);this.fields.lt.setValue(null);}else{this.fields.eq.setValue(null);}
this.updateTask.delay(this.updateBuffer);}});

Ext.grid.GridFilters=function(config){this.filters=new Ext.util.MixedCollection();this.filters.getKey=function(o){return o?o.dataIndex:null};for(var i=0,len=config.filters.length;i<len;i++){this.addFilter(config.filters[i]);}
this.deferredUpdate=new Ext.util.DelayedTask(this.reload,this);delete config.filters;Ext.apply(this,config);};Ext.extend(Ext.grid.GridFilters,Ext.util.Observable,{updateBuffer:500,paramPrefix:'filter',filterCls:'ux-filtered-column',local:false,autoReload:true,stateId:undefined,showMenu:true,init:function(grid){if(grid instanceof Ext.grid.GridPanel){this.grid=grid;this.store=this.grid.getStore();if(this.local){this.store.on('load',function(store){store.filterBy(this.getRecordFilter());},this);}else{this.store.on('beforeload',this.onBeforeLoad,this);}
this.grid.filters=this;this.grid.addEvents('filterupdate');grid.on("render",this.onRender,this);grid.on("beforestaterestore",this.applyState,this);grid.on("beforestatesave",this.saveState,this);}else if(grid instanceof Ext.PagingToolbar){this.toolbar=grid;}},applyState:function(grid,state){this.applyingState=true;this.clearFilters();if(state.filters)
for(var key in state.filters){var filter=this.filters.get(key);if(filter){filter.setValue(state.filters[key]);filter.setActive(true);}}
this.deferredUpdate.cancel();if(this.local)
this.reload();delete this.applyingState;},saveState:function(grid,state){var filters={};this.filters.each(function(filter){if(filter.active){filters[filter.dataIndex]=filter.getValue();}});return state.filters=filters;},onRender:function(){var hmenu;if(this.showMenu){hmenu=this.grid.getView().hmenu;this.sep=hmenu.addSeparator();this.menu=hmenu.add(new Ext.menu.CheckItem({text:this.menuFilterText,menu:new Ext.menu.Menu()}));this.menu.on('checkchange',this.onCheckChange,this);this.menu.on('beforecheckchange',this.onBeforeCheck,this);hmenu.on('beforeshow',this.onMenu,this);}
this.grid.getView().on("refresh",this.onRefresh,this);this.updateColumnHeadings(this.grid.getView());},onMenu:function(filterMenu){var filter=this.getMenuFilter();if(filter){this.menu.menu=filter.menu;this.menu.setChecked(filter.active,false);}
this.menu.setVisible(filter!==undefined);this.sep.setVisible(filter!==undefined);},onCheckChange:function(item,value){this.getMenuFilter().setActive(value);},onBeforeCheck:function(check,value){return!value||this.getMenuFilter().isActivatable();},onStateChange:function(event,filter){if(event=="serialize")return;if(filter==this.getMenuFilter())
this.menu.setChecked(filter.active,false);if((this.autoReload||this.local)&&!this.applyingState)
this.deferredUpdate.delay(this.updateBuffer);var view=this.grid.getView();this.updateColumnHeadings(view);if(!this.applyingState)
this.grid.saveState();this.grid.fireEvent('filterupdate',this,filter);},onBeforeLoad:function(store,options){options.params=options.params||{};this.cleanParams(options.params);var params=this.buildQuery(this.getFilterData());Ext.apply(options.params,params);},onRefresh:function(view){this.updateColumnHeadings(view);},getMenuFilter:function(){var view=this.grid.getView();if(!view||view.hdCtxIndex===undefined){return null;}
return this.filters.get(view.cm.config[view.hdCtxIndex].dataIndex);},updateColumnHeadings:function(view){if(!view||!view.mainHd){return;}
var hds=view.mainHd.select('td').removeClass(this.filterCls);for(var i=0,len=view.cm.config.length;i<len;i++){var filter=this.getFilter(view.cm.config[i].dataIndex);if(filter&&filter.active){hds.item(i).addClass(this.filterCls);}}},reload:function(){if(this.local){this.grid.store.clearFilter(true);this.grid.store.filterBy(this.getRecordFilter());}else{this.deferredUpdate.cancel();var store=this.grid.store;if(this.toolbar){var start=this.toolbar.paramNames.start;if(store.lastOptions&&store.lastOptions.params&&store.lastOptions.params[start]){store.lastOptions.params[start]=0;}}
store.reload();}},getRecordFilter:function(){var f=[];this.filters.each(function(filter){if(filter.active){f.push(filter);}});var len=f.length;return function(record){for(var i=0;i<len;i++){if(!f[i].validateRecord(record)){return false;}}
return true;};},addFilter:function(config){var filter=config.menu?config:new(this.getFilterClass(config.type))(config);this.filters.add(filter);Ext.util.Observable.capture(filter,this.onStateChange,this);return filter;},getFilter:function(dataIndex){return this.filters.get(dataIndex);},clearFilters:function(){this.filters.each(function(filter){filter.setActive(false);});},getFilterData:function(){var filters=[];this.filters.each(function(f){if(f.active){var d=[].concat(f.serialize());for(var i=0,len=d.length;i<len;i++){filters.push({field:f.dataIndex,data:d[i]});}}});return filters;},buildQuery:function(filters){var p={};for(var i=0,len=filters.length;i<len;i++){var f=filters[i];var root=[this.paramPrefix,'[',i,']'].join('');p[root+'[field]']=f.field;var dataPrefix=root+'[data]';for(var key in f.data){p[[dataPrefix,'[',key,']'].join('')]=f.data[key];}}
return p;},cleanParams:function(p){var regex=new RegExp("^"+this.paramPrefix+"\[[0-9]+\]");for(var key in p){if(regex.test(key)){delete p[key];}}},getFilterClass:function(type){return Ext.grid.filter[type.substr(0,1).toUpperCase()+type.substr(1)+'Filter'];}});

Ext.apply(Ext.util.Format,{formatNumber:function(value,numberFormat){var format=Ext.apply(Ext.apply({},Ext.util.Format.numberFormat),numberFormat);if(typeof value!=='number'){value=String(value);if(format.currencySymbol){value=value.replace(format.currencySymbol,'');}
if(format.groupingSeparator){value=value.replace(new RegExp(format.groupingSeparator,'g'),'');}
if(format.decimalSeparator!=='.'){value=value.replace(format.decimalSeparator,'.');}
value=parseFloat(value);}
var neg=value<0;value=Math.abs(value).toFixed(format.decimalPrecision);var i=value.indexOf('.');if(i>=0){if(format.decimalSeparator!=='.'){value=value.slice(0,i)+format.decimalSeparator+value.slice(i+1);}}else{i=value.length;}
if(format.groupingSeparator){while(i>format.groupingSize){i-=format.groupingSize;value=value.slice(0,i)+format.groupingSeparator+value.slice(i);}}
if(format.currencySymbol){value=format.currencySymbol+value;}
if(neg){value='-'+value;}
return value;}});

Ext.ns("Ext.grid.filter");Ext.grid.filter.Filter=function(config){Ext.apply(this,config);this.events={'activate':true,'deactivate':true,'update':true,'serialize':true};Ext.grid.filter.Filter.superclass.constructor.call(this);this.menu=new Ext.menu.Menu();this.init();if(config&&config.value){this.setValue(config.value);this.setActive(config.active!==false,true);delete config.value;}};Ext.extend(Ext.grid.filter.Filter,Ext.util.Observable,{active:false,dataIndex:null,menu:null,init:Ext.emptyFn,fireUpdate:function(){this.value=this.item.getValue();if(this.active){this.fireEvent("update",this);}
this.setActive(this.value.length>0);},isActivatable:function(){return true;},setActive:function(active,suppressEvent){if(this.active!=active){this.active=active;if(suppressEvent!==true){this.fireEvent(active?'activate':'deactivate',this);}}},getValue:Ext.emptyFn,setValue:Ext.emptyFn,serialize:Ext.emptyFn,validateRecord:function(){return true;}});

Ext.grid.filter.StringFilter=Ext.extend(Ext.grid.filter.Filter,{updateBuffer:500,init:function(){var value=this.value=new Ext.menu.EditableItem({iconCls:'x-filter-icon-find'});value.on('keyup',this.onKeyUp,this);this.menu.add(value);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);},onKeyUp:function(event){if(event.getKey()==event.ENTER){this.menu.hide(true);return;}
this.updateTask.delay(this.updateBuffer);},isActivatable:function(){return this.value.getValue().length>0;},fireUpdate:function(){if(this.active){this.fireEvent("update",this);}
this.setActive(this.isActivatable());},setValue:function(value){this.value.setValue(value);this.fireEvent("update",this);},getValue:function(){return this.value.getValue();},serialize:function(){var args={type:'string',value:this.getValue()};this.fireEvent('serialize',args,this);return args;},validateRecord:function(record){var val=record.get(this.dataIndex);if(typeof val!="string"){return this.getValue().length==0;}
return val.toLowerCase().indexOf(this.getValue().toLowerCase())>-1;}});

Ext.grid.filter.DateFilter=Ext.extend(Ext.grid.filter.Filter,{dateFormat:'m/d/Y',pickerOpts:{},beforeText:"Before",afterText:"After",onText:"On",init:function(){var opts=Ext.apply(this.pickerOpts,{minDate:this.minDate,maxDate:this.maxDate,format:this.dateFormat});var dates=this.dates={'before':new Ext.menu.CheckItem({text:this.beforeText,menu:new Ext.menu.DateMenu(opts)}),'after':new Ext.menu.CheckItem({text:this.afterText,menu:new Ext.menu.DateMenu(opts)}),'on':new Ext.menu.CheckItem({text:this.onText,menu:new Ext.menu.DateMenu(opts)})};this.menu.add(dates.before,dates.after,"-",dates.on);for(var key in dates){var date=dates[key];date.menu.on('select',this.onSelect.createDelegate(this,[date]),this);date.on('checkchange',function(){this.setActive(this.isActivatable());},this);};},onSelect:function(date,menuItem,value,picker){date.setChecked(true);var dates=this.dates;if(date==dates.on){dates.before.setChecked(false,true);dates.after.setChecked(false,true);}else{dates.on.setChecked(false,true);if(date==dates.after&&dates.before.menu.picker.value<value){dates.before.setChecked(false,true);}else if(date==dates.before&&dates.after.menu.picker.value>value){dates.after.setChecked(false,true);}}
this.fireEvent("update",this);},getFieldValue:function(field){return this.dates[field].menu.picker.getValue();},getPicker:function(field){return this.dates[field].menu.picker;},isActivatable:function(){return this.dates.on.checked||this.dates.after.checked||this.dates.before.checked;},setValue:function(value){for(var key in this.dates){if(value[key]){this.dates[key].menu.picker.setValue(value[key]);this.dates[key].setChecked(true);}else{this.dates[key].setChecked(false);}}},getValue:function(){var result={};for(var key in this.dates){if(this.dates[key].checked){result[key]=this.dates[key].menu.picker.getValue();}}
return result;},serialize:function(){var args=[];if(this.dates.before.checked){args=[{type:'date',comparison:'lt',value:this.getFieldValue('before').format(this.dateFormat)}];}
if(this.dates.after.checked){args.push({type:'date',comparison:'gt',value:this.getFieldValue('after').format(this.dateFormat)});}
if(this.dates.on.checked){args={type:'date',comparison:'eq',value:this.getFieldValue('on').format(this.dateFormat)};}
this.fireEvent('serialize',args,this);return args;},validateRecord:function(record){var val=record.get(this.dataIndex).clearTime(true).getTime();if(this.dates.on.checked&&val!=this.getFieldValue('on').clearTime(true).getTime()){return false;}
if(this.dates.before.checked&&val>=this.getFieldValue('before').clearTime(true).getTime()){return false;}
if(this.dates.after.checked&&val<=this.getFieldValue('after').clearTime(true).getTime()){return false;}
return true;}});

Ext.grid.filter.ListFilter=Ext.extend(Ext.grid.filter.Filter,{labelField:'text',loadingText:'Loading...',loadOnShow:true,value:[],loaded:false,phpMode:false,init:function(){this.menu.add('<span class="loading-indicator">'+this.loadingText+'</span>');if(this.store&&this.loadOnShow){this.menu.on('show',this.onMenuLoad,this);}else if(this.options){var options=[];for(var i=0,len=this.options.length;i<len;i++){var value=this.options[i];switch(Ext.type(value)){case'array':options.push(value);break;case'object':options.push([value.id,value[this.labelField]]);break;case'string':options.push([value,value]);break;}}
this.store=new Ext.data.Store({reader:new Ext.data.ArrayReader({id:0},['id',this.labelField])});this.options=options;this.menu.on('show',this.onMenuLoad,this);}
this.store.on('load',this.onLoad,this);this.bindShowAdapter();},bindShowAdapter:function(){var oShow=this.menu.show;var lastArgs=null;this.menu.show=function(){if(arguments.length==0){oShow.apply(this,lastArgs);}else{lastArgs=arguments;oShow.apply(this,arguments);}};},onMenuLoad:function(){if(!this.loaded){if(this.options){this.store.loadData(this.options);}else{this.store.load();}}},onLoad:function(store,records){var visible=this.menu.isVisible();this.menu.hide(false);this.menu.removeAll();var gid=this.single?Ext.id():null;for(var i=0,len=records.length;i<len;i++){var item=new Ext.menu.CheckItem({text:records[i].get(this.labelField),group:gid,checked:this.value.indexOf(records[i].id)>-1,hideOnClick:false});item.itemId=records[i].id;item.on('checkchange',this.checkChange,this);this.menu.add(item);}
this.setActive(this.isActivatable());this.loaded=true;if(visible){this.menu.show();}},checkChange:function(item,checked){var value=[];this.menu.items.each(function(item){if(item.checked){value.push(item.itemId);}},this);this.value=value;this.setActive(this.isActivatable());this.fireEvent("update",this);},isActivatable:function(){return this.value.length>0;},setValue:function(value){var value=this.value=[].concat(value);if(this.loaded){this.menu.items.each(function(item){item.setChecked(false,true);for(var i=0,len=value.length;i<len;i++){if(item.itemId==value[i]){item.setChecked(true,true);}}},this);}
this.fireEvent("update",this);},getValue:function(){return this.value;},serialize:function(){var args={type:'list',value:this.phpMode?this.value.join(','):this.value};this.fireEvent('serialize',args,this);return args;},validateRecord:function(record){return this.getValue().indexOf(record.get(this.dataIndex))>-1;}});

Ext.grid.filter.NumericFilter=Ext.extend(Ext.grid.filter.Filter,{init:function(){this.menu=new Ext.menu.RangeMenu();this.menu.on("update",this.fireUpdate,this);},fireUpdate:function(){this.setActive(this.isActivatable());this.fireEvent("update",this);},isActivatable:function(){var value=this.menu.getValue();return value.eq!==undefined||value.gt!==undefined||value.lt!==undefined;},setValue:function(value){this.menu.setValue(value);},getValue:function(){return this.menu.getValue();},serialize:function(){var args=[];var values=this.menu.getValue();for(var key in values){args.push({type:'numeric',comparison:key,value:values[key]});}
this.fireEvent('serialize',args,this);return args;},validateRecord:function(record){var val=record.get(this.dataIndex),values=this.menu.getValue();if(values.eq!=undefined&&val!=values.eq){return false;}
if(values.lt!=undefined&&val>=values.lt){return false;}
if(values.gt!=undefined&&val<=values.gt){return false;}
return true;}});

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

Ext.app.SearchField=Ext.extend(Ext.form.TwinTriggerField,{initComponent:function(){Ext.app.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;}
this.el.parent().parent().parent().parent().parent().parent().removeClass('x-toolbar-search');},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();this.el.parent().parent().parent().parent().parent().parent().addClass('x-toolbar-search');}});Ext.reg('gxuiSearchField',Ext.app.SearchField);

Ext.grid.SmartCheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:'<div id="x-grid3-hd-checker" class="x-grid3-hd-checker"> </div>',width:20,sortable:false,email:false,excel:true,alwaysSelectOnCheck:false,menuDisabled:true,fixed:true,id:'checker',dataIndex:'',initEvents:function(){Ext.grid.SmartCheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on('render',function(){var view=this.grid.getView();view.on('columnmove',this.onColumnMove,this);view.mainBody.on('mousedown',this.onMouseDown,this);Ext.fly(view.innerHd).on('mousedown',this.onHdMouseDown,this);},this);this.rowNav.disable();this.rowNav2=new Ext.KeyNav(this.grid.getGridEl(),{"up":function(e){if(!e.shiftKey){if(!this.email){this.selectPreviousChecked(e.shiftKey);}
if(this.email){this.selectPrevious(e.shiftKey);}}
else if(this.last!==false&&this.lastActive!==false){var last=this.last;if(!this.email){this.selectRangeChecked(this.last,this.lastActive-1);}
if(this.email){this.selectRange(this.last,this.lastActive-1);}
this.grid.getView().focusRow(this.lastActive);if(last!==false){this.last=last;}}
else{this.selectFirstRow();if(!this.email){this.toggleChecked(0,true);}}},"down":function(e){if(!e.shiftKey){if(!this.email){this.selectNextChecked(e.shiftKey);}
if(this.email){this.selectNext(e.shiftKey);}}
else if(this.last!==false&&this.lastActive!==false){var last=this.last;if(!this.email){this.selectRangeChecked(this.last,this.lastActive+1);}
if(this.email){this.selectRange(this.last,this.lastActive+1);}
this.grid.getView().focusRow(this.lastActive,true);if(last!==false){this.last=last;}}
else{this.selectFirstRow();if(!this.email){this.toggleChecked(0,true);}}},scope:this});this.grid.on('columnmove',function(p){var t=Ext.get('x-grid3-hd-checker');if(t!=null){if(t.dom.className!='x-grid3-hd-checker'){Ext.fly(t.dom.parentNode).removeClass('x-grid3-hd-checker');}}});if(this.grid.store){this.grid.store.on('load',function(p){var t=Ext.get('x-grid3-hd-checker');if(t!=null){if(t.dom.className=='x-grid3-hd-checker'&&Ext.state.Manager.loaded){var hd=Ext.fly(t.dom.parentNode);var isChecked=hd.hasClass('x-grid3-hd-checker-on');if(isChecked){hd.addClass('x-grid3-hd-checker-on');if(!this.email){this.selectAll();}
this.selectAllChecked(true);}}
else{Ext.fly(t.dom.parentNode).removeClass('x-grid3-hd-checker');}}
var dataIndex=this.grid.getSelectionModel().dataIndex;var count=this.grid.store.getCount();for(var i=0,len=count;i<len;i++){var dataIndexValue=p.data.items[i].data[dataIndex];var isSelected=this.isSelected(i);if((dataIndexValue==true||isSelected)&&!Ext.state.Manager.loaded){if(!this.email||this.alwaysSelectOnCheck){this.grid.getSelectionModel().selectRow(i,true);}}
else if(isSelected){if(!this.email){this.toggleChecked(i,true);}}
else{if(!this.email){this.toggleChecked(i,false);}}}},this);}},toggleChecked:function(rowIndex,c){if(this.locked)return;var record=this.grid.store.getAt(rowIndex);if(c===true){record.set(this.dataIndex,true);}
else if(c===false){record.set(this.dataIndex,false);}
else{record.set(this.dataIndex,!record.data[this.dataIndex]);}},selectAllChecked:function(c,e){if(this.locked)return;var count=this.grid.store.getCount();for(var i=0,len=count;i<len;i++){if(c){if(i!==e){this.toggleChecked(i,true);}}
else{if(i!==e){this.toggleChecked(i,false);}}}},clearChecked:function(fast){if(this.locked)return;if(fast!==true){var count=this.grid.store.getCount();for(var i=0,len=count;i<len;i++){var isSelected=this.isSelected(i);if(!isSelected){this.toggleChecked(i,false);}}}
else{this.selectAllChecked(false);}
this.last=false;},selectRangeChecked:function(startRow,endRow,keepExisting){if(this.locked)return;if(!keepExisting){if(!this.email||this.alwaysSelectOnCheck){this.clearSelections();}
this.clearChecked();}
if(startRow<=endRow){for(var i=startRow;i<=endRow;i++){if(this.grid.store.getAt(i)){this.toggleChecked(i,true);if(!this.email||this.alwaysSelectOnCheck){this.selectRow(i,true);}}}}
else{for(var i=startRow;i>=endRow;i--){if(this.grid.store.getAt(i)){this.toggleChecked(i,true);if(!this.email||this.alwaysSelectOnCheck){this.selectRow(i,true);}}}}},selectPreviousChecked:function(keepExisting){if(this.hasPrevious()){this.selectRow(this.last-1,keepExisting);this.grid.getView().focusRow(this.last);if(!this.email){this.toggleChecked(this.last,true);this.selectAllChecked(false,this.last);}
return true;}
return false;},selectNextChecked:function(keepExisting){if(this.hasNext()){if(!this.email){this.selectRow(this.last+1,keepExisting);}
this.grid.getView().focusRow(this.last);if(!this.email){this.toggleChecked(this.last,true);this.selectAllChecked(false,this.last);}
return true;}
return false;},handleMouseDown:function(g,rowIndex,e){var t=e.getTarget('.ux-row-action-item');if(!t){if(e.button!==0||this.isLocked()){return;};var view=this.grid.getView();var record=this.grid.store.getAt(rowIndex);if(e.shiftKey&&this.last!==false){var last=this.last;this.selectRange(last,rowIndex,e.ctrlKey);if(!this.email){this.selectRangeChecked(last,rowIndex,e.ctrlKey);}
this.last=last;view.focusRow(rowIndex);}else{var isChecked=record.data[this.dataIndex];var isSelected=this.isSelected(rowIndex);if(isSelected){this.deselectRow(rowIndex);if(!this.email){this.toggleChecked(rowIndex,false);}}else{if(!this.excel){this.selectRow(rowIndex,true);if(!this.email){this.toggleChecked(rowIndex,true);}}
else{this.selectRow(rowIndex,e.ctrlKey);if(!this.email){this.selectRangeChecked(rowIndex,rowIndex,e.ctrlKey);}}
view.focusRow(rowIndex);}}}},onMouseDown:function(e,t){if(t.className&&t.className.indexOf('x-grid3-cc-'+this.id)!=-1){e.stopEvent();var view=this.grid.getView();var rowIndex=view.findRowIndex(t);var record=this.grid.store.getAt(rowIndex);var isSelected=this.isSelected(rowIndex);var isChecked=record.data[this.dataIndex];if(!this.email||this.alwaysSelectOnCheck){if(isSelected){if(!isChecked&&this.alwaysSelectOnCheck){this.toggleChecked(rowIndex,true);}
else{this.deselectRow(rowIndex);this.toggleChecked(rowIndex,false);}}
else{this.selectRow(rowIndex,true);this.toggleChecked(rowIndex,true);view.focusRow(rowIndex);}}
else{if(isChecked){this.toggleChecked(rowIndex,false);}
else{this.toggleChecked(rowIndex,true);}}
view.focusRow(rowIndex);}
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());Ext.state.Manager.loaded=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){hd.removeClass('x-grid3-hd-checker-on');if(!this.email||this.alwaysSelectOnCheck){this.clearSelections();}
this.clearChecked(true);}else{hd.addClass('x-grid3-hd-checker-on');if(!this.email||this.alwaysSelectOnCheck){this.selectAll();}
this.selectAllChecked(true);}}
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());Ext.state.Manager.loaded=true;},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+'"> </div>';}});

Ext.grid.RadioSelectionModel=function(config){Ext.grid.RadioSelectionModel.superclass.constructor.call(this,config);this.renderer=function(v,p,record){var checked=record===this.selections.get(0);var retval='<div class="x-grid3-row-radio"><input type="radio" name="'+this.id+'"'
+(checked?'checked="checked"':'')
+'></div>';return retval;}.createDelegate(this);};Ext.extend(Ext.grid.RadioSelectionModel,Ext.grid.RowSelectionModel,{header:'<div> </div>',width:25,sortable:false,fixed:true,dataIndex:'',id:'radio',singleSelect:true,selectRow:function(index){Ext.grid.RadioSelectionModel.superclass.selectRow.apply(this,arguments);var row=Ext.fly(this.grid.view.getRow(index));if(row){row.child('input[type=radio]').dom.checked=true;}}});

Ext.grid.LockingGridPanel=Ext.extend(Ext.grid.GridPanel,{getView:function(){if(!this.view){this.view=new Ext.grid.LockingGridView(this.viewConfig);}
return this.view;},initComponent:function(){if(!this.cm){this.cm=new Ext.grid.LockingColumnModel(this.columns);delete this.columns;}
Ext.grid.LockingGridPanel.superclass.initComponent.call(this);}});Ext.grid.LockingEditorGridPanel=Ext.extend(Ext.grid.EditorGridPanel,{getView:function(){if(!this.view){this.view=new Ext.grid.LockingGridView(this.viewConfig);}
return this.view;},initComponent:function(){if(!this.cm){this.cm=new Ext.grid.LockingColumnModel(this.columns);delete this.columns;}
Ext.grid.LockingEditorGridPanel.superclass.initComponent.call(this);}});Ext.grid.LockingGridView=Ext.extend(Ext.grid.GridView,{lockText:"Lock",unlockText:"Unlock",initTemplates:function(){if(!this.templates){this.templates={};}
if(!this.templates.master){this.templates.master=new Ext.Template('<div class="x-grid3" hidefocus="true">','<div class="x-grid3-locked">','<div class="x-grid3-header"><div class="x-grid3-header-inner"><div class="x-grid3-header-offset">{lockedHeader}</div></div><div class="x-clear"></div></div>','<div class="x-grid3-scroller"><div class="x-grid3-body">{lockedBody}</div><div class="x-grid3-scroll-spacer"></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"><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>');}
Ext.grid.LockingGridView.superclass.initTemplates.call(this);},initElements:function(){var E=Ext.Element;var el=this.grid.getGridEl();el=el.dom.firstChild;var cs=el.childNodes;this.el=new E(el);this.lockedWrap=new E(cs[0]);this.lockedHd=new E(this.lockedWrap.dom.firstChild);this.lockedInnerHd=this.lockedHd.dom.firstChild;this.lockedScroller=new E(this.lockedWrap.dom.childNodes[1]);this.lockedBody=new E(this.lockedScroller.dom.firstChild);this.mainWrap=new E(cs[1]);this.mainHd=new E(this.mainWrap.dom.firstChild);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.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]);},getLockedRows:function(){return this.hasRows()?this.lockedBody.dom.childNodes:[];},getLockedRow:function(row){return this.getLockedRows()[row];},getCell:function(rowIndex,colIndex){var locked=this.cm.getLockedCount();var row;if(colIndex<locked){row=this.getLockedRow(rowIndex);}else{row=this.getRow(rowIndex);colIndex-=locked;}
return row.getElementsByTagName('td')[colIndex];},getHeaderCell:function(index){var locked=this.cm.getLockedCount();if(index<locked){return this.lockedHd.dom.getElementsByTagName('td')[index];}else{return this.mainHd.dom.getElementsByTagName('td')[(index-locked)];}},scrollToTop:function(){Ext.grid.LockingGridView.superclass.scrollToTop.call(this);this.syncScroll();},syncScroll:function(e){Ext.grid.LockingGridView.superclass.syncScroll.call(this,e);var mb=this.scroller.dom;this.lockedScroller.dom.scrollTop=mb.scrollTop;},processRows:function(startRow,skipStripe){if(this.ds.getCount()<1){return;}
skipStripe=skipStripe||!this.grid.stripeRows;startRow=startRow||0;var cls=' x-grid3-row-alt ';var rows=this.getRows();var lrows=this.getLockedRows();for(var i=startRow,len=rows.length;i<len;i++){var row=rows[i];var lrow=lrows[i];row.rowIndex=i;lrow.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-grid3-row-alt";lrow.className+=" x-grid3-row-alt";}else{row.className=row.className.replace("x-grid3-row-alt","");lrow.className=lrow.className.replace("x-grid3-row-alt","");}}}},updateSortIcon:function(col,dir){var sc=this.sortClasses;var clen=this.cm.getColumnCount();var lclen=this.cm.getLockedCount();var hds=this.mainHd.select('td').removeClass(sc);var lhds=this.lockedHd.select('td').removeClass(sc);if(lclen>0&&col<lclen){lhds.item(col).addClass(sc[dir=="DESC"?1:0]);}else{hds.item(col-lclen).addClass(sc[dir=="DESC"?1:0]);}},updateColumnHidden:function(col,hidden){var tw=this.cm.getTotalWidth();var lw=this.cm.getTotalLockedWidth();var lclen=this.cm.getLockedCount();this.innerHd.firstChild.firstChild.style.width=tw+'px';var display=hidden?'none':'';var hd=this.getHeaderCell(col);hd.style.display=display;var ns,gw;if(col<lclen){ns=this.getLockedRows();gw=lw;this.lockedHd.dom.firstChild.firstChild.style.width=gw+'px';this.mainWrap.dom.style.left=this.cm.getTotalLockedWidth()+'px';}else{ns=this.getRows();gw=tw-lw;col-=lclen;this.innerHd.firstChild.firstChild.style.width=gw+'px';}
for(var i=0,len=ns.length;i<len;i++){ns[i].style.width=gw+'px';ns[i].firstChild.style.width=gw+'px';ns[i].firstChild.rows[0].childNodes[col].style.display=display;}
this.onColumnHiddenUpdated(col,hidden,tw);delete this.lastViewWidth;this.layout();},syncHeaderHeight:function(){if(this.lockedInnerHd===undefined||this.innerHd===undefined){return;}
this.lockedInnerHd.firstChild.firstChild.style.height="auto";this.innerHd.firstChild.firstChild.style.height="auto";var height=(this.lockedInnerHd.firstChild.firstChild.offsetHeight>this.innerHd.firstChild.firstChild.offsetHeight)?this.lockedInnerHd.firstChild.firstChild.offsetHeight:this.innerHd.firstChild.firstChild.offsetHeight;this.lockedInnerHd.firstChild.firstChild.style.height=height+'px';this.innerHd.firstChild.firstChild.style.height=height+'px';},doRender:function(cs,rs,ds,startRow,colCount,stripe){var ts=this.templates,ct=ts.cell,rt=ts.row,last=colCount-1;var tw=this.cm.getTotalWidth();var lw=this.cm.getTotalLockedWidth();var clen=this.cm.getColumnCount();var lclen=this.cm.getLockedCount();var tstyle='width:'+this.getTotalWidth()+';';var buf=[],lbuf=[],cb,lcb,c,p={},rp={tstyle:tstyle},r;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb=[];lcb=[];var rowIndex=(j+startRow);for(var i=0;i<colCount;i++){c=cs[i];p.id=c.id;p.css=i===0?'x-grid3-cell-first ':(i==last?'x-grid3-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-grid3-dirty-cell';}
if(c.locked){lcb[lcb.length]=ct.apply(p);}else{cb[cb.length]=ct.apply(p);}}
var alt=[];if(stripe&&((rowIndex+1)%2===0)){alt[0]="x-grid3-row-alt";}
if(r.dirty){alt[1]=" x-grid3-dirty-row";}
rp.cols=colCount;if(this.getRowClass){alt[2]=this.getRowClass(r,rowIndex,rp,ds);}
rp.alt=alt.join(" ");rp.cells=lcb.join("");rp.tstyle='width:'+lw+'px;';lbuf[lbuf.length]=rt.apply(rp);rp.cells=cb.join("");rp.tstyle='width:'+(tw-lw)+'px;';buf[buf.length]=rt.apply(rp);}
return[buf.join(""),lbuf.join("")];},layout:function(){if(!this.mainBody){return;}
var g=this.grid;var c=g.getGridEl(),cm=this.cm,expandCol=g.autoExpandColumn,gv=this;var lw=cm.getTotalLockedWidth();var csize=c.getSize(true);var vw=csize.width;if(vw<20||csize.height<20){return;}
this.syncHeaderHeight();if(g.autoHeight){this.scroller.dom.style.overflow='visible';this.lockedScroller.dom.style.overflow='visible';}else{this.el.setSize(csize.width,csize.height);var vh=csize.height-this.mainHd.getHeight();this.lockedScroller.setSize(lw,vh);this.scroller.setSize(vw-lw,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();lw=cm.getTotalLockedWidth();}
this.mainWrap.dom.style.left=lw+'px';this.onLayout(vw,vh);},renderHeaders:function(){var cm=this.cm,ts=this.templates;var ct=ts.hcell;var tw=this.cm.getTotalWidth();var lw=this.cm.getTotalLockedWidth();var cb=[],lb=[],sb=[],lsb=[],p={};for(var i=0,len=cm.getColumnCount();i<len;i++){p.id=cm.getColumnId(i);p.value=cm.getColumnHeader(i)||"";p.style=this.getColumnStyle(i,true);p.tooltip=this.getColumnTooltip(i);if(cm.config[i].align=='right'){p.istyle='padding-right:16px';}
if(cm.isLocked(i)){lb[lb.length]=ct.apply(p);}else{cb[cb.length]=ct.apply(p);}}
return[ts.header.apply({cells:cb.join(""),tstyle:'width:'+(tw-lw)+';'}),ts.header.apply({cells:lb.join(""),tstyle:'width:'+(lw)+';'})];},getColumnTooltip:function(i){var tt=this.cm.getColumnTooltip(i);if(tt){if(Ext.QuickTips.isEnabled()){return'ext:qtip="'+tt+'"';}else{return'title="'+tt+'"';}}
return"";},updateHeaders:function(){var hd=this.renderHeaders();this.innerHd.firstChild.innerHTML=hd[0];this.lockedInnerHd.firstChild.innerHTML=hd[1];},insertRows:function(dm,firstRow,lastRow,isUpdate){if(firstRow===0&&lastRow==dm.getCount()-1){this.refresh();}else{if(!isUpdate){this.fireEvent("beforerowsinserted",this,firstRow,lastRow);}
var html=this.renderRows(firstRow,lastRow);var before=this.getRow(firstRow);if(before){Ext.DomHelper.insertHtml('beforeBegin',before,html[0]);}else{Ext.DomHelper.insertHtml('beforeEnd',this.mainBody.dom,html[0]);}
var beforeLocked=this.getLockedRow(firstRow);if(beforeLocked){Ext.DomHelper.insertHtml('beforeBegin',beforeLocked,html[1]);}else{Ext.DomHelper.insertHtml('beforeEnd',this.lockedBody.dom,html[1]);}
if(!isUpdate){this.fireEvent("rowsinserted",this,firstRow,lastRow);this.processRows(firstRow);}}},removeRow:function(row){Ext.removeNode(this.getRow(row));if(this.cm.getLockedCount()>0){Ext.removeNode(this.getLockedRow(row));}},getColumnData:function(){var cs=[],cm=this.cm,colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){var name=cm.getDataIndex(i);cs[i]={name:(typeof name=='undefined'?this.ds.fields.get(i).name:name),renderer:cm.getRenderer(i),id:cm.getColumnId(i),style:this.getColumnStyle(i),locked:cm.isLocked(i)};}
return cs;},renderBody:function(){var markup=this.renderRows();return[this.templates.body.apply({rows:markup[0]}),this.templates.body.apply({rows:markup[1]})];},refresh:function(headersToo){this.fireEvent("beforerefresh",this);this.grid.stopEditing();var result=this.renderBody();this.mainBody.update(result[0]);this.lockedBody.update(result[1]);if(headersToo===true){this.updateHeaders();this.updateHeaderSortState();}
this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this);},handleLockChange:function(){this.refresh(true);},onDenyColumnHide:function(){},onColumnLock:function(){this.handleLockChange.apply(this,arguments);},addRowClass:function(row,cls){var r=this.getRow(row);if(r){this.fly(r).addClass(cls);r=this.getLockedRow(row);this.fly(r).addClass(cls);}},removeRowClass:function(row,cls){var r=this.getRow(row);if(r){this.fly(r).removeClass(cls);r=this.getLockedRow(row);this.fly(r).removeClass(cls);}},handleHdMenuClick:function(item){var index=this.hdCtxIndex;var cm=this.cm,ds=this.ds,lc;switch(item.id){case"asc":ds.sort(cm.getDataIndex(index),"ASC");break;case"desc":ds.sort(cm.getDataIndex(index),"DESC");break;case"lock":lc=cm.getLockedCount();if(cm.getColumnCount(true)<=lc+1){this.onDenyColumnLock();return;}
if(lc!=index){cm.setLocked(index,true,true);cm.moveColumn(index,lc);this.grid.fireEvent("columnmove",index,lc);}else{cm.setLocked(index,true);}
break;case"unlock":lc=cm.getLockedCount();if((lc-1)!=index){cm.setLocked(index,false,true);cm.moveColumn(index,lc-1);this.grid.fireEvent("columnmove",index,lc-1);}else{cm.setLocked(index,false);}
break;default:index=cm.getIndexById(item.id.substr(4));if(index!=-1){if(item.checked&&cm.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return false;}
cm.setHidden(index,item.checked);}}
return true;},handleHdDown:function(e,t){if(Ext.fly(t).hasClass('x-grid3-hd-btn')){e.stopEvent();var hd=this.findHeaderCell(t);Ext.fly(hd).addClass('x-grid3-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));if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(index));ms.get("unlock").setDisabled(!cm.isLocked(index));}
this.hmenu.on("hide",function(){Ext.fly(hd).removeClass('x-grid3-hd-menu-open');},this,{single:true});this.hmenu.show(t,"tl-bl?");}},renderUI:function(){var header=this.renderHeaders();var body=this.templates.body.apply({rows:''});var html=this.templates.master.apply({body:body,header:header[0],lockedBody:body,lockedHeader:header[1]});var g=this.grid;g.getGridEl().dom.innerHTML=html;this.initElements();Ext.fly(this.innerHd).on("click",this.handleHdDown,this);Ext.fly(this.lockedInnerHd).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.lockedHd.on("mouseover",this.handleHdOver,this);this.lockedHd.on("mouseout",this.handleHdOut,this);this.lockedHd.on("mousemove",this.handleHdMove,this);this.mainWrap.dom.style.left=this.cm.getTotalLockedWidth()+'px';this.scroller.on('scroll',this.syncScroll,this);if(g.enableColumnResize!==false){this.splitone=new Ext.grid.GridView.SplitDragZone(g,this.lockedHd.dom);this.splitone.setOuterHandleElId(Ext.id(this.lockedHd.dom));this.splitone.setOuterHandleElId(Ext.id(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(this.grid.enableColLock!==false){this.hmenu.add('-',{id:"lock",text:this.lockText,cls:"xg-hmenu-lock"},{id:"unlock",text:this.unlockText,cls:"xg-hmenu-unlock"});}
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){var dd=new Ext.grid.GridDragZone(g,{ddGroup:g.ddGroup||'GridDD'});}
this.updateHeaderSortState();},afterRender:function(){var bd=this.renderRows();if(bd===''){bd=['',''];}
this.mainBody.dom.innerHTML=bd[0];this.lockedBody.dom.innerHTML=bd[1];this.processRows(0,true);if(this.deferEmptyText!==true){this.applyEmptyText();}},updateAllColumnWidths:function(){var tw=this.cm.getTotalWidth();var lw=this.cm.getTotalLockedWidth();var clen=this.cm.getColumnCount();var lclen=this.cm.getLockedCount();var ws=[];var i;for(i=0;i<clen;i++){ws[i]=this.getColumnWidth(i);}
this.innerHd.firstChild.firstChild.style.width=(tw-lw)+'px';this.mainWrap.dom.style.left=lw+'px';this.lockedInnerHd.firstChild.firstChild.style.width=lw+'px';for(i=0;i<clen;i++){var hd=this.getHeaderCell(i);hd.style.width=ws[i]+'px';}
var ns=this.getRows();var lns=this.getLockedRows();for(i=0,len=ns.length;i<len;i++){ns[i].style.width=(tw-lw)+'px';ns[i].firstChild.style.width=(tw-lw)+'px';lns[i].style.width=lw+'px';lns[i].firstChild.style.width=lw+'px';var j,row;for(j=0;j<lclen;j++){row=lns[i].firstChild.rows[0];row.childNodes[j].style.width=ws[j]+'px';}
for(j=lclen;j<clen;j++){row=ns[i].firstChild.rows[0];row.childNodes[j].style.width=ws[j]+'px';}}
this.onAllColumnWidthsUpdated(ws,tw);},updateColumnWidth:function(col,width){var w=this.getColumnWidth(col);var tw=this.cm.getTotalWidth();var lclen=this.cm.getLockedCount();var lw=this.cm.getTotalLockedWidth();var hd=this.getHeaderCell(col);hd.style.width=w;var ns,gw;var ncol=col;if(col<lclen){ns=this.getLockedRows();gw=lw;this.lockedInnerHd.firstChild.firstChild.style.width=gw+'px';this.mainWrap.dom.style.left=this.cm.getTotalLockedWidth()+'px';this.mainWrap.dom.style.display='none';this.mainWrap.dom.style.display='';}else{ns=this.getRows();gw=tw-lw;ncol-=lclen;this.innerHd.firstChild.firstChild.style.width=gw+'px';}
for(var i=0,len=ns.length;i<len;i++){ns[i].style.width=gw+'px';ns[i].firstChild.style.width=gw+'px';ns[i].firstChild.rows[0].childNodes[ncol].style.width=w;}
this.onColumnWidthUpdated(col,w,tw);this.layout();},getEditorParent:function(ed){return this.el.dom;},refreshRow:function(record){Ext.grid.LockingGridView.superclass.refreshRow.call(this,record);var index=this.ds.indexOf(record);this.getLockedRow(index).rowIndex=index;}});Ext.grid.LockingColumnModel=Ext.extend(Ext.grid.ColumnModel,{getTotalLockedWidth:function(){var totalWidth=0;for(var i=0;i<this.config.length;i++){if(this.isLocked(i)&&!this.isHidden(i)){totalWidth+=this.getColumnWidth(i);}}
return totalWidth;}});

Ext.ns('Ext.ux.form');Ext.ux.form.DateTime=Ext.extend(Ext.form.Field,{dateValidator:null,defaultAutoCreate:{tag:'input',type:'hidden'},dtSeparator:' ',hiddenFormat:'Y-m-d H:i:s',otherToNow:true,timePosition:'right',timeValidator:null,timeWidth:100,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,validator:this.dateValidator,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,validator:this.timeValidator,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'));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'});var o={errorIcon:this.errorIcon,msgTarget:'side',alignErrorIcon:this.alignErrorIcon.createDelegate(this)};Ext.apply(this.df,o);Ext.apply(this.tf,o);}
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();}},reset:function(){this.df.reset();this.tf.reset();},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(Ext.isIE?val.getTime():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.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,dragout: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(dd,e,data){delete this.grid;if(!this.lastPos){return;}
var c=this.lastPos.c,col=this.lastPos.col,pos=this.lastPos.p;var outEvent=this.createEvent(dd,e,data,col,c,pos!==false?pos:c.items.getCount());this.portal.fireEvent('dragout',outEvent);},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);}else{c.add(dd.panel);}
if(dd.panel.resetPositioning){dd.panel.resetPositioning();dd.panel.setWidth('auto');}
c.doLayout();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,collapsible:true,draggable:true,cls:'x-portlet'});Ext.reg('portlet',Ext.ux.Portlet);

gxui=function(){return{initialize:function(){Ext.QuickTips.init();Ext.namespace('gxui.ext');Ext.namespace('gxui.Properties');Ext.namespace('gxui.GX');gx.fx.obs.addObserver('gx.onready',this,function(){if(gx){if(gx.staticDirectory!="")
this.StaticContent=gx.staticDirectory;else
this.StaticContent=this.getCookie('StaticContent');Ext.BLANK_IMAGE_URL=gx.util.resourceUrl(gx.basePath+this.StaticContent+"Shared/ext/resources/images/default/s.gif",true);}});Ext.state.Manager.setProvider(new Ext.state.CookieProvider({expires:new Date(new Date().getTime()+(1000*60*60*24*365))}));Ext.override(Ext.layout.FitLayout,{onLayout:function(ct,target){Ext.layout.FitLayout.superclass.onLayout.call(this,ct,target);if(!this.container.collapsed){var size=!Ext.isChrome&&target.dom!=Ext.getBody().dom?target.getStyleSize():target.getViewSize();this.setItemSize(this.activeItem||ct.items.itemAt(0),size);}}});Ext.override(Ext.dd.PanelProxy,{moveProxy:function(parentNode,before){if(this.proxy){if(Ext.isIE&&before==undefined){parentNode.insertBefore(this.proxy.dom);return;}
parentNode.insertBefore(this.proxy.dom,before);}}});Ext.WindowMgr.zseed=800;},CBoolean:function(str){if(str){if(typeof(str)=='string')
return(str.toLowerCase()=="true")
return str;}
else
return false;},clone:function(obj){if(obj instanceof Array)
return gxui.copyArray(obj);if(typeof(obj)!='object')
return obj;if(obj==null)
return obj;if(obj.clone)
return obj.clone();var cloneObj=new Object();for(var i in obj)
cloneObj[i]=gxui.clone(obj[i]);return cloneObj;},copyArray:function(arr){var res=[];for(var i=0;i<arr.length;i++)
res.push(gxui.clone(arr[i]));return res;},getCookie:function(c_name){if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+"=");if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1)c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));}}
return"";},setCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}
else expires="";document.cookie=name+"="+value+expires+"; path=/";},dateFormat:function(){var gxDF=gx.dateFormat;switch(gxDF){case"MDY":return"m/d/y";case"MDY4":return"m/d/Y";case"YMD":return"y/m/d";case"Y4MD":return"Y/m/d";case"DMY":return"d/m/y";case"DMY4":return"d/m/Y";}},date:function(string){return new Date.parseDate(string,this.dateFormat());},afterShow:function(fn,scope,options){gxui.UserControlManager.afterShow(fn,scope,options);}};}();gxui.initialize();

gxui.UserControl=function(options){this.setOptions(options)
this.initialize();};Ext.extend(gxui.UserControl,Ext.util.Observable,{setOptions:function(options){this.options={register:true};for(property in(options||{})){this.options[property]=options[property];}},initialize:function(){this.rendered=false;this.addEvents({"show":true,"destroy":true});if(this.options.register)
this.register();},show:function(){try{if(!this.rendered){this.rendered=true;this.onRender();}
else{if(this.onRefresh)
this.onRefresh();}}
catch(e){gx.dbg.logEx(e,'gxui.js','show');}
finally{this.fireEvent("show",this);}},forceRendering:function(){this.rendered=false;},destroy:function(){try{this.onDestroy();}
catch(e){gx.dbg.logEx(e,'gxui.js','destroy');}
this.fireEvent("destroy",this);},onRender:Ext.emptyFn,onRefresh:Ext.emptyFn,onDestroy:function(){var c=this.getUnderlyingControl();if(c){var ct=c.ownerCt;if(ct){if(ct.remove){ct.remove(c);}}
else{if(c.destroy){c.destroy();}}}},getUnderlyingControl:Ext.emptyFn,register:function(){gxui.UserControlManager.register(this);},unregister:function(){gxui.UserControlManager.unregister(this);},registerCt:function(el,addFn,doLayoutFn,scope){gxui.UserControlManager.registerContainer(this,el,addFn,doLayoutFn,scope);},unregisterCt:function(toRem){gxui.UserControlManager.unregisterContainer(toRem);},addToParentContainer:function(uc){gxui.afterShow(function(){try{var el=Ext.get(this.getContainerControl());this.checkIfInline(el);for(var el=Ext.get(this.getContainerControl());el;el=el.parent("div")){var ct=gxui.UserControlManager.isRegisteredContainer(el.dom)
this.checkIfInline(el);if(ct){if(ct.addFn){ct.addFn.createDelegate(ct.scope)(uc);if(ct.doLayoutFn)
ct.doLayoutFn.createDelegate(ct.scope);}
return;}}}
catch(e){gx.dbg.logEx(e,'gxui.js','afterShowHandler->'+this.getUniqueId());}},this);},checkIfInline:function(el){if(el.id.indexOf("gxHTMLWrp")>=0||el.hasClass("gx_usercontrol")||el.hasClass("gxui-uc-container"))
el.setStyle("display","inline");},getUniqueId:function(){return"gxui-"+(this.ParentObject?this.ParentObject.CmpContext||""+"-"+this.ParentObject.ServerClass||"":"")+"-"+this.ControlName;}});gxui.UserControlManager=function(){var ucList=[];var ctList=[];var afterShowEvent;var initAfterShow=function(){afterShowEvent=new Ext.util.Event();};var ucShowListener=function(uc){try{var ucListItem=this.isRegisteredUC(uc)
if(ucListItem){ucListItem.shown=true;}
var allShown=true;Ext.each(ucList,function(item){return allShown=item.shown&&allShown;},this);if(allShown&&afterShowEvent){afterShowEvent.fire();Ext.each(ucList,function(item){var extUC=item.uc.getUnderlyingControl();if(extUC&&!extUC.ownerCt&&extUC.doLayout){extUC.doLayout();}
item.shown=false;},this);}}
catch(e){gx.dbg.logEx(e,'gxui.js','ucShowListener');}};return{getUCList:function(){var l=[];Ext.each(ucList,function(item){l.push(item.uc);});return l;},getContainersList:function(){return ctList;},register:function(uc){ucList.push({uc:uc,shown:false});uc.on("show",ucShowListener,this);uc.on("destroy",function(uc){this.unregister(uc);this.unregisterContainer(uc);if(uc.afterShowHandler)
afterShowEvent.removeListener(uc.afterShowHandler,uc);},this);},unregister:function(uc){var toRem=this.isRegisteredUC(uc);if(toRem)
ucList.remove(toRem);},registerContainer:function(uc,el,addFn,doLayoutFn,scope){ctList.push({uc:uc,el:el,addFn:addFn,doLayoutFn:doLayoutFn,scope:scope});},unregisterContainer:function(obj){toRem=this.isRegisteredContainer(obj);if(toRem)
ctList.remove(toRem);},isRegisteredUC:function(uc){var obj=null;Ext.each(ucList,function(item){if(uc==item.uc){obj=item;return false;}},this);return obj;},isRegisteredContainer:function(el){var ct=null;if(el.layout){Ext.each(ctList,function(item){if(el==item.scope){ct=item;return false;}},this);}
else
if(el.tagName){Ext.each(ctList,function(item){if(el==item.el){ct=item;return false;}},this);}
else{uc=el;Ext.each(ctList,function(item){if(uc==item.uc){ct=item;return false;}},this);}
return ct;},afterShow:function(fn,scope,options){if(!afterShowEvent)
initAfterShow();scope.afterShowHandler=fn;afterShowEvent.addListener(fn,scope,options)}};}();

gxui.ext.Portal=Ext.extend(Ext.ux.Portal,{defaultType:'gxuiportalcolumn',initComponent:function(){gxui.ext.Portal.superclass.initComponent.apply(this);this.addEvents({dragout:true});},initEvents:function(){gxui.ext.Portal.superclass.initEvents.call(this);this.dd=new gxui.ext.Portal.DropZone(this,this.dropConfig);}});Ext.reg('gxuiportal',gxui.ext.Portal);gxui.ext.Portal.DropZone=function(portal,cfg){gxui.ext.Portal.DropZone.superclass.constructor.call(this,portal,cfg);};Ext.extend(gxui.ext.Portal.DropZone,Ext.ux.Portal.DropZone,{notifyOut: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 outEvent=this.createEvent(dd,e,data,col,c,pos!==false?pos:c.items.getCount());this.portal.fireEvent('dragout',outEvent);}});gxui.ext.PortalColumn=Ext.extend(Ext.ux.PortalColumn,{defaultType:'gxuiportlet'});Ext.reg('gxuiportalcolumn',gxui.ext.PortalColumn);

gxui.ext.Portlet=Ext.extend(Ext.ux.Portlet,{collapsible:true,resizable:true,resizeHandles:'all',autoScroll:true,stateEvents:['collapse','expand'],initComponent:function(){gxui.ext.Portlet.superclass.initComponent.apply(this);this.on('beforecollapse',function(){this.expandedHeight=this.getBox().height;},this);var ownerCtDoLayout=function(){gxui.ext.LayoutManager.forceDoLayout(this.ownerCt);if(this.ownerCt&&this.ownerCt.ownerCt)
gxui.ext.LayoutManager.forceDoLayout(this.ownerCt.ownerCt);};this.on('collapse',ownerCtDoLayout,this);this.on('expand',ownerCtDoLayout,this);this.on('resize',ownerCtDoLayout,this);},initEvents:function(){gxui.ext.Portlet.superclass.initEvents.call(this);this.el.on("mousedown",this.toFront,this);this.manager=gxui.ext.PortletManager;this.manager.register(this);},initDraggable:function(){this.dd=new gxui.ext.Portlet.DD(this,this.dropConfig);},render:function(){gxui.ext.Portlet.superclass.render.apply(this,arguments);if(this.st){if(this.st.column){if(this.st.elPositioning)
this.getEl().setPositioning(this.st.elPositioning);var col=Ext.getCmp(this.st.column);if(col){var xt=col.getXType();if(xt=="gxuiportalcolumn"){this.getEl().dom.parentNode.removeChild(this.getEl().dom);if(this.st.columnPos!=undefined)
col.insert(this.st.columnPos,this);else
col.add(this);col.doLayout();}
if(xt=="panel"){if(this.expandedHeight)
this.setHeight(this.expandedHeight);col.add(this);}}}}
this.createResizer();},doFloat:function(width,x,y){this.resetPositioning();this.getEl().setStyle('position','absolute');this.setWidth(width);var points=this.getEl().parent().translatePoints(x,y);this.getEl().setLeftTop(points.left,points.top);},undoFloat:function(){this.resetPositioning();this.setWidth('auto');},resetPositioning:function(){this.getEl().setPositioning({'position':"static",'left':"auto",'top':"auto",'bottom':"",'right':""});},getState:function(){return Ext.apply(Ext.apply(gxui.ext.Portlet.superclass.getState.call(this)||{},this.getBox()),{st:{column:(this.ownerCt)?this.ownerCt.id:null,columnPos:(this.ownerCt)?this.ownerCt.items.indexOf(this):null,elPositioning:this.getEl().getPositioning(),expandedHeight:this.expandedHeight},collapsed:this.collapsed,resizeHandles:this.resizeHandles});},createResizer:function(resizeHandles){this.destroyResizer();if(this.resizable&&!this.resizer){var overrideCreateProxy=(this.ownerCt&&this.ownerCt.getXType()=="gxuiportalcolumn");var createProxyProtoType=Ext.Element.prototype.createProxy;if(overrideCreateProxy){resizeHandles='s';Ext.Element.prototype.createProxy=function(config){return Ext.DomHelper.append(this.dom,config,true);};}
var resConfig={minWidth:this.minWidth||200,minHeight:this.minHeight||100,handles:resizeHandles||this.resizeHandles||"all",transparent:true,pinned:this.pinned,resizeElement:this.resizerAction};if(this.maxWidth)
resConfig.maxWidth=this.maxWidth;if(this.maxHeight)
resConfig.maxHeight=this.maxHeight;this.resizer=new Ext.Resizable(this.el,resConfig);this.resizer.window=this;this.resizer.on('resize',this.onResizer,this);this.resizer.on("beforeresize",this.beforeResize,this);if(overrideCreateProxy){resizeHandles='s';Ext.Element.prototype.createProxy=createProxyProtoType;}}},destroyResizer:function(){if(this.resizer){this.resizer.destroy()
delete this.resizer;this.un('beforeresize',this.beforeResize,this);this.un('resize',this.onResizer,this);}},onResizer:function(oResizable,iWidth,iHeight,e){this.setHeight(iHeight);},onCollapse:function(doAnim,animArg){this.el.setHeight('');Ext.ux.Portlet.superclass.onCollapse.call(this,doAnim,animArg);},toFront:function(){this.manager.bringToFront(this)
return this;},setZIndex:function(index){this.el.setStyle("z-index",++index);index+=5;if(this.resizer){this.resizer.proxy.setStyle("z-index",++index);}
this.saveState();this.lastZIndex=index;},resizerAction:Ext.Window.prototype.resizerAction,beforeResize:function(){this.resizeBox=this.el.getBox();},handleResize:Ext.Window.prototype.handleResize,updateHandles:Ext.Window.prototype.updateHandles,onDestroy:function(){if(this.manager){this.manager.unregister(this);}
gxui.ext.Portlet.superclass.onDestroy.call(this);}});Ext.reg('gxuiportlet',gxui.ext.Portlet);gxui.ext.Portlet.DD=function(portlet,cfg){this.portlet=portlet;gxui.ext.Portlet.DD.superclass.constructor.call(this,portlet,cfg);};Ext.extend(gxui.ext.Portlet.DD,Ext.Panel.DD,{startDrag:function(){this.proxy.getProxy().remove();},onDragOut:function(e){this.proxy.getProxy().remove();},endDrag:function(e){this.proxy.hide();this.panel.saveState();}});gxui.ext.PortletManager=function(){var list={};var accessList=[];var front=null;var sortPortlets=function(d1,d2){return(!d1._lastAccess||d1._lastAccess<d2._lastAccess)?-1:1;};var orderPortlets=function(){var a=accessList,len=a.length;if(len>0){a.sort(sortPortlets);var seed=a[0].manager.zseed;for(var i=0;i<len;i++){var portlet=a[i];if(portlet&&!portlet.hidden){portlet.setZIndex(seed+(i*10));}}}};return{zseed:9000,register:function(portlet){list[portlet.id]=portlet;accessList.push(portlet);},unregister:function(portlet){delete list[portlet.id];accessList.remove(portlet);},get:function(pid){return typeof pid=="object"?pid:list[pid];},bringToFront:function(portlet){portlet=this.get(portlet);if(portlet!=front){portlet._lastAccess=new Date().getTime();orderPortlets();}}};}();

gxui.ext.FloatingDropTarget=function(area,cfg){this.area=area;gxui.ext.FloatingDropTarget.superclass.constructor.call(this,area.bwrap.dom,cfg);};Ext.extend(gxui.ext.FloatingDropTarget,Ext.dd.DropTarget,{notifyDrop:function(s,e,d){var lel=s.panel.getEl();var del=s.proxy.getEl();if(del){if(s.proxy.getProxy())
s.proxy.getProxy().remove();s.panel.getEl().dom.parentNode.removeChild(s.panel.getEl().dom);this.area.add(s.panel);this.area.doLayout();s.panel.doFloat(del.getWidth(),del.getX(),del.getY());s.panel.createResizer();return true;}
return false;},notifyOver:function(s,e,d){s.proxy.getProxy().remove();}});

gxui.ext.LayoutManager=function(){var list=[];dropHandler=function(e){e.panel.createResizer("s");this.forceDoLayout();e.panel.ownerCt.items.each(function(p){p.saveState();});};beforeDropHandler=function(e){e.panel.undoFloat();};return{register:function(layout){list.push(layout);var xt=layout.getXType();if(xt=="gxuiportal"){layout.on('drop',dropHandler,this);layout.on('dragout',function(){this.forceDoLayout();},this);layout.on('beforedrop',beforeDropHandler,this);return true;}
if(xt=="panel"){layout.on('add',function(){this.forceDoLayout();},this);return true;}
return false;},unregister:function(layout){list.remove(layout);},forceDoLayout:function(l){setTimeout(function(){if(l)
l.doLayout();else{for(var i=0;i<list.length;i++){var layout=list[i];if(layout){layout.doLayout();}}}},100);}};}();

gxui.SimpleCache=function(options){Ext.apply(this,options);this.expireTime=-1;this.elements={};};gxui.SimpleCache.prototype={elementHasExpired:function(el){return(this.expireTime<0)?false:el.timeStamp+this.expireTime<(new Date()).getTime();},add:function(key,obj){this.elements[key]={obj:obj,timeStamp:(new Date()).getTime()};},get:function(key){var el=this.elements[key];if(el&&!this.elementHasExpired(el)){return el.obj;}
return null;},exists:function(key){return this.elements[key]?true:false;},existsObject:function(obj){for(key in this.elements){var el=this.get(key)
if(el===obj){return true;}}
return false;},remove:function(key){this.elements[key]=undefined;},restart:function(){this.elements={};}};

gxui.GX.WebComponent={create:function(options){var o=options;try{if(!gx.O){gx.O=o.parentObject;}
var srvResponse=gx.ajax.dynComponent(o.program,o.params,o.prefix,"");if(srvResponse.gxComponents){var first=true;gx.fn.setPostHiddens(srvResponse.gxHiddens);for(wc in srvResponse.gxComponents){var cmpPrefix=gx.fn.cmpContextFromCtrl(wc);var targetEl;if(first){targetEl=o.target;first=false;}
else{targetEl=Ext.getDom(wc);}
if(targetEl){gx.html.setInnerHtml(targetEl,srvResponse.gxComponents[wc],true);var cmp=gx.createComponent(srvResponse.gxHiddens[cmpPrefix+"_CMPPGM"].split(".")[0],cmpPrefix);if(cmp){cmp.onload();}}}}}
catch(e){gx.dbg.logEx(e,'gxui.GX.WebComponent.js','create');return false;}
return true;},update:function(options){var o=options;try{if(!gx.O){gx.O=o.parentObject;}
var prefix=o.cmpContext+o.wc;var srvResponse=gx.ajax.dynComponent(o.program,o.params,prefix,"");if(srvResponse.gxComponents){var first=true;gx.fn.setPostHiddens(srvResponse.gxHiddens);for(wc in srvResponse.gxComponents){var cmpPrefix=gx.fn.cmpContextFromCtrl(wc);var cmpPgm=(first?wc:cmpPrefix)+"_CMPPGM";var targetEl=Ext.getDom(wc);if(wc==prefix&&!targetEl){targetEl=Ext.getDom(o.cmpContext+"gxHTMLWrp"+o.wc);}
if(targetEl){gx.html.setInnerHtml(targetEl,srvResponse.gxComponents[wc],true);var cmp=gx.createComponent(srvResponse.gxHiddens[cmpPgm].split(".")[0],cmpPrefix);if(cmp){gx.pO.setWebComponent(cmp);gx.fn.setPostHiddens(srvResponse.gxHiddens);gx.fn.setPostValues(srvResponse.gxValues);cmp.onload();}}
if(first){first=false;}}}}
catch(e){gx.dbg.logEx(e,'gxui.GX.WebComponent.js','update');return false;}
return true;}};

gxui.Properties.Object=function(objId,options){this.objId=objId;Ext.apply(this,options);this.root=this.root||this.repository.root;this.fields=this.fields||this.repository.fields;this.url=this.url||this.repository.url;this.initialize();};gxui.Properties.Object.prototype={initialize:function(){this.store=new Ext.data.JsonStore({baseParams:{id:this.objId},root:this.root,fields:this.fields,url:this.url});},getProperties:function(options){this.store.load({params:options.params,callback:function(r,o,success){if(success){this.jsonData=this.store.reader.jsonData;this.Id=this.jsonData.Id;this.ObjectClass=this.jsonData.ObjectClass;this.Name=this.jsonData.Name;}
options.callback.call(options.scope,this,this.store,r,success);},scope:this});}};

gxui.Properties.ObjectsRepository=function(){var objects;return{root:"Properties",fields:["Name","Value","IsDefault","IsReadonly"],init:function(options){Ext.apply(this,options);objects=new gxui.SimpleCache();},getProperties:function(objId,category,callback,scope){var obj=objects.get(objId);if(!obj){obj=new gxui.Properties.Object(objId,{repository:this});objects.add(objId,obj);}
obj.getProperties({callback:callback,scope:scope,params:category?{category:category}:undefined});}};}();

gxui.Properties.ObjectDefsRepository=function(){var definitions;var store;return{root:"Properties",fields:["Name","DisplayName","Category","Type","Editor"],init:function(options){Ext.apply(this,options);definitions=new gxui.SimpleCache();store=new Ext.data.JsonStore({root:this.root,fields:this.fields,url:this.url});},getDefinition:function(objClass,callback,scope){var def=definitions.get(objClass);if(def){callback.defer(1,scope,[def,true]);}
else{store.load({params:{objClass:objClass},callback:function(r,options,success){if(success){def=store.reader.jsonData[this.root];definitions.add(objClass,def);}
callback.call(scope,def,success);}});}}};}();

gxui.Layout=Ext.extend(gxui.UserControl,{m_layout:null,initialize:function(){gxui.Layout.superclass.initialize.call(this);},onRender:function(){var regions=new Array();this.addRegion(regions,"North");this.addRegion(regions,"South");this.addRegion(regions,"West");this.addRegion(regions,"East");this.addRegion(regions,"Center");if(this.Width){this.Width=parseInt(this.Width);}
if(this.Height){this.Height=parseInt(this.Height);}
if(gxui.CBoolean(this.Nested)){this.m_layout=new Ext.Panel({id:this.getUniqueId(),renderTo:this.getContainerControl(),border:false,items:regions,layout:'border',cls:this.Cls||undefined,width:this.Width!=0?this.Width:'auto',height:this.Height!=0?this.Height:'auto',stateful:gxui.CBoolean(this.Stateful),stateid:(this.StateId!="")?this.StateId:undefined});}
else{this.m_layout=new Ext.ux.NestedViewport({id:this.getUniqueId(),items:regions,layout:'border',cls:this.Cls||undefined,renderTo:'MAINFORM',stateful:gxui.CBoolean(this.Stateful),stateid:(this.StateId!="")?this.StateId:undefined});}
this.registerAsContainer();if(gxui.CBoolean(this.Nested)){this.addToParentContainer(this.m_layout);}
this.displayRegions();},onRefresh:function(){this.refreshRegion("North");this.refreshRegion("South");this.refreshRegion("West");this.refreshRegion("East");this.refreshRegion("Center");},getUnderlyingControl:function(){return this.m_layout;},getMargins:function(regionKey,str){var margins=(this[regionKey+"Margins"])?this[regionKey+"Margins"].split(","):["0","0","0","0"];return{top:parseInt(margins[0]),left:parseInt(margins[3]),right:parseInt(margins[1]),bottom:parseInt(margins[2])};},getProperty:function(regionKey,propName){var prop=this[regionKey+propName];if(prop=="true"||prop=="false")
return gxui.CBoolean(prop);else
if(propName.indexOf("Margins")>=0){return this.getMargins(regionKey,prop);}
else if(propName=="CollapseMode"){return prop=="mini"?"mini":undefined;}
else if(propName=="Layout"){return prop=="default"?undefined:prop;}
else
return prop;},setRegionProperty:function(regionKey,propName,value){if(regionKey){var r=regionKey.toLowerCase();r=r.charAt(0).toUpperCase()+r.substr(1);if(this[r+propName]){this[r+propName]=value;}}},createConfig:function(regionKey){var lstnrs={'render':{fn:function(r){gxui.ext.LayoutManager.register(r);if(this.getProperty(regionKey,"DragDropMode")=="floating"){r.dt=new gxui.ext.FloatingDropTarget(r);if(r.region=='north')
r.getEl().setStyle({"z-index":1});}},scope:this}};return{id:this.getUniqueId()+"-"+regionKey,region:regionKey.toLowerCase(),contentEl:this.getChildContainer(regionKey),hidden:this.getProperty(regionKey,"Hidden"),split:this.getProperty(regionKey,"Split"),autoScroll:(this.getProperty(regionKey,"DragDropMode")=="portal"||this.getProperty(regionKey,"Layout")!="fit")?this.getProperty(regionKey,"AutoScroll"):false,header:this.getProperty(regionKey,"TitleBar"),title:this.getProperty(regionKey,"Title"),width:this.getProperty(regionKey,"Width"),height:this.getProperty(regionKey,"Height"),minWidth:this.getProperty(regionKey,"MinWidth")||0,minHeight:this.getProperty(regionKey,"MinHeight")||0,maxWidth:this.getProperty(regionKey,"MaxWidth")||0,maxHeight:this.getProperty(regionKey,"MaxHeight")||0,margins:this.getProperty(regionKey,"Margins"),collapsible:this.getProperty(regionKey,"Collapsible"),collapseMode:this.getProperty(regionKey,"CollapseMode"),collapsed:this.getProperty(regionKey,"Collapsed"),cmargins:this.getProperty(regionKey,"CollapsedMargins"),cls:"x-region-"+regionKey.toLowerCase(),floatable:this.getProperty(regionKey,"Floatable"),autoHide:this.getProperty(regionKey,"AutoHide"),animate:this.getProperty(regionKey,"Animate"),animFloat:this.getProperty(regionKey,"Animate"),duration:this.getProperty(regionKey,"Duration")/1000,xtype:(this.getProperty(regionKey,"DragDropMode")=="portal")?"gxuiportal":undefined,items:(this.getProperty(regionKey,"DragDropMode")=="portal")?[{columnWidth:1}]:undefined,layout:(this.getProperty(regionKey,"DragDropMode")=="portal")?"column":this.getProperty(regionKey,"Layout"),border:this.getProperty(regionKey,"Border"),listeners:lstnrs};},addRegion:function(items,regionKey){items.push(this.createConfig(regionKey));},displayRegions:function(){Ext.each(this.m_layout.items.items,function(region,index,allRegions){Ext.get(region.contentEl).setDisplayed(true);},this);},registerAsContainer:function(){Ext.each(this.m_layout.items.items,function(region,index,allRegions){if(region.getXType()=='gxuiportal')
Ext.each(region.items.items,function(col,colIdx,allCols){this.registerCt(region.contentEl,col.add,col.doLayout,col);},this);else
this.registerCt(region.contentEl,region.add,region.doLayout,region);},this);},getRegion:function(regionKey){if(regionKey){if(this.m_layout.layout[regionKey.toLowerCase()]){return this.m_layout.layout[regionKey.toLowerCase()].panel;}}
return undefined;},refreshRegion:function(regionKey){var region=this.getRegion(regionKey);if(region){region.setTitle(this.getProperty(regionKey,"Title"));}},collapseRegion:function(regionKey,animate){var region=this.getRegion(regionKey);if(region){region.collapse(animate);this.setRegionProperty(regionKey,"Collapsed","true");}},expandRegion:function(regionKey,animate){var region=this.getRegion(regionKey);if(region){region.expand(animate);this.setRegionProperty(regionKey,"Collapsed","false");}},hideRegion:function(regionKey){var region=this.getRegion(regionKey);if(region){region.hide();this.m_layout.doLayout();this.setRegionProperty(regionKey,"Hidden","true");}},showRegion:function(regionKey){var region=this.getRegion(regionKey);if(region){region.show();this.m_layout.doLayout();this.setRegionProperty(regionKey,"Hidden","false");}}});

gxui.TabPanel=Ext.extend(gxui.UserControl,{m_tabPanel:null,m_designTabs:[],m_activeTab:0,initialize:function(){gxui.TabPanel.superclass.initialize.call(this);this.HandleUniqueId=true;},SetRunTimeTabs:function(data){this.RunTimeTabs=data;},GetRunTimeTabs:function(){return this.RunTimeTabs;},onRender:function(){if(this.RunTimeTabs)
Ext.each(this.RunTimeTabs,function(tab,index,allTabs){tab.InternalName='';},this);this.m_designTabs=Ext.util.JSON.decode(this.DesignTimeTabs);var tabCount=0;if(this.m_designTabs!=undefined&&this.m_designTabs.length!=undefined)
tabCount+=this.m_designTabs.length;if(this.RunTimeTabs!=undefined&&this.RunTimeTabs.length!=undefined)
tabCount+=this.RunTimeTabs.length;if(tabCount>0){this.m_tabPanel=new Ext.TabPanel(this.getConfig());this.m_tabPanel.setActiveTab(this.m_activeTab);this.m_tabPanel.on('tabchange',this.handlers.tabChanged,this);this.m_tabPanel.strip.on('mousedown',this.handlers.tabStripClick,this);this.registerAsContainer();if(gxui.CBoolean(this.AddToParentGxUIControl)){this.addToParentContainer(this.m_tabPanel);}
this.displayTabPanels();}},onRefresh:function(){var setActiveTab=false;Ext.each(this.getTabPanelsList(),function(tab,index,allTabs){this.m_tabPanel.add(tab);this.registerAsContainer(tab);setActiveTab=true;},this);if(setActiveTab){this.m_tabPanel.setActiveTab(this.m_activeTab);}},onDestroy:function(){this.m_tabPanel.items.each(function(tab){this.unregisterCt(tab);},this);gxui.TabPanel.superclass.onDestroy.call(this);},getUnderlyingControl:function(){return this.m_tabPanel;},getConfig:function(){var config={id:this.getUniqueId(),renderTo:this.getContainerControl(),tabPosition:this.TabPosition||"top",deferredRender:false,border:gx.lang.gxBoolean(this.Border),autoWidth:gxui.CBoolean(this.AutoWidth),autoHeight:gxui.CBoolean(this.AutoHeight),enableTabScroll:(this.TabPosition=="top")?gxui.CBoolean(this.EnableTabScroll):false,minTabWidth:this.MinTabWidth,items:this.getTabPanelsList(),listeners:{activate:this.handlers.tabItemActivated,deactivate:this.handlers.tabItemDeactivated,remove:this.handlers.tabItemClosed,beforeRemove:this.handlers.tabItemBeforeClosed,scope:this}};if(gxui.CBoolean(this.AutoWidth)){if(!gxui.CBoolean(this.AddToParentGxUIControl)){config.cls="auto-width-tab-strip";}}
else{config.width=parseInt(this.Width);}
if(!gxui.CBoolean(this.AutoHeight)){config.height=parseInt(this.Height);}
if(this.Cls){config.cls+=" "+this.Cls;}
return config;},getTabPanelsList:function(){var rawTabs=(this.RunTimeTabs&&this.RunTimeTabs.length)?this.m_designTabs.concat(this.RunTimeTabs):this.m_designTabs;var tabPanels=[];Ext.each(rawTabs,function(tab,index,allTabs){var panel;if(index>=this.m_designTabs.length)
tab.isRuntimeTab=true;if(!tab.rendered){var webcomEl;if(!tab.isRuntimeTab){var titleEl=Ext.get(this.getChildContainer("Title"+tab.id));if(titleEl){tab.Name=titleEl.dom.innerHTML;titleEl.dom.parentNode.removeChild(titleEl.dom);}}
else
webcomEl=this.getWebComEl(index);if(tab.isRuntimeTab){if(!tab.HTML){tab.InternalName=(webcomEl)?webcomEl.id:null;}}
else{tab.InternalName=tab.id;}
if(tab.InternalName){var layout=tab.layout||this.Layout;var config={id:this.getTabUniqueId(tab.InternalName),layout:layout=="default"?undefined:layout,contentEl:!tab.HTML?(tab.isRuntimeTab?webcomEl:this.getChildContainer(tab.id)):undefined,html:tab.HTML,title:tab.Name,closable:(tab.isRuntimeTab)?true:gxui.CBoolean(tab.closable),autoScroll:tab.autoScroll||(layout=='fit'?false:true),listeners:{activate:this.handlers.tabItemActivated,deactivate:this.handlers.tabItemDeactivated,scope:this}};if(this.TabCls)
config.cls=this.TabCls;panel=new Ext.Panel(config);tab.rendered=true;tabPanels.push(panel);}
else
return;}
else{panel=this.m_tabPanel.items.items[index];if(tab.isRuntimeTab&&!tab.HTML){var webcomEl=this.getWebComEl(index);tab.InternalName=webcomEl.id;panel.contentEl=webcomEl.dom;var panelDom=panel.body.dom;if(panelDom.firstChild)
panelDom.removeChild(panelDom.firstChild);panelDom.appendChild(panel.contentEl);}}
if(gxui.CBoolean(tab.selected)||gxui.CBoolean(tab.Selected))
this.m_activeTab=panel;},this);return tabPanels;},getWebComEl:function(index){var Prefix=this.ParentObject.getComponentPrefix(this.RunTimeWebComponent);webcomEl=Ext.get(this.ParentObject.CmpContext+'gxHTMLWrp'+Prefix+String(index-this.m_designTabs.length+1+10000).substr(1));return webcomEl;},displayTabPanels:function(){Ext.each(this.m_designTabs,function(tab,index,allTabs){Ext.get(this.getChildContainer(tab.id)).setDisplayed(true)},this);},registerAsContainer:function(t){if(t){this.registerCt(Ext.get(t.contentEl||t.body).dom,t.add,t.doLayout,t);}
else{Ext.each(this.m_tabPanel.items.items,function(tab,index,allTabs){this.registerCt(Ext.get(tab.contentEl||tab.body).dom,tab.add,tab.doLayout,tab);},this);}},handlers:{tabChanged:function(tab,tabItem){if(this.TabChanged){this.TabChanged();}},tabItemActivated:function(tabItem){this.ActiveTabId=tabItem.id;if(this.RunTimeTabs)
Ext.each(this.RunTimeTabs,function(item,index,allItems){if(this.getTabUniqueId(item.InternalName)==tabItem.id){item.Selected=true;return false;}},this);},tabItemDeactivated:function(tabItem){if(this.RunTimeTabs)
Ext.each(this.RunTimeTabs,function(item,index,allItems){if(this.getTabUniqueId(item.InternalName)==tabItem.id){item.Selected=false;return false;}},this);},tabItemClosed:function(tabpanel,tabItem){if(this.RunTimeTabs){var rtt=new Array();Ext.each(this.RunTimeTabs,function(tab,index,allTabs){if(this.getTabUniqueId(tab.InternalName)!=tabItem.id){rtt.push(tab);}
else{if(!tab.HTML){this.deleteWebComponent(tabItem.contentEl.id);}}},this);this.RunTimeTabs=rtt;}
if(this.TabClosed){this.ClosedTabId=tabItem.id;this.TabClosed();}},tabItemBeforeClosed:function(tabPanel,tabItem){if(this.BeforeTabClosed){this.ClosedTabId=tabItem.id;this.CancelEvent=false;this.BeforeTabClosed();return!this.CancelEvent;}},tabStripClick:function(e){if(e.button!=0){return;}
var t=this.m_tabPanel.findTargets(e);if(t.close){return;}
if(t.item){if(this.TabClick){this.ActiveTabId=t.item.id;this.TabClick();}}}},getTabUniqueId:function(tabId){if(gxui.CBoolean(this.HandleUniqueId))
return this.getUniqueId()+"_tab_"+tabId;else
return tabId;},OpenTab:function(tabId,title,tabHTMLContent){if(this.IsTabOpen(tabId)){this.m_activeTab=this.getTabUniqueId(tabId);}
else{this.RunTimeTabs.push({Name:title,InternalName:tabId,HTML:tabHTMLContent,Selected:true});Ext.each(this.getTabPanelsList(),function(tab,index,allTabs){this.m_tabPanel.add(tab);this.m_tabPanel.doLayout();this.registerAsContainer(tab);},this);}
this.m_tabPanel.setActiveTab(this.m_activeTab);},CloseTab:function(tabId){if(this.IsTabOpen(tabId)){var tab=this.m_tabPanel.findById(this.getTabUniqueId(tabId));if(tab){this.m_tabPanel.remove(tab,true);}}},SelectTab:function(tabId){this.m_activeTab=this.getTabUniqueId(tabId);this.m_tabPanel.setActiveTab(this.m_activeTab);},IsTabOpen:function(tabId){var tab=this.m_tabPanel.findById(this.getTabUniqueId(tabId));return(tab)?true:false;},ShowTab:function(i){this.m_tabPanel.unhideTabStripItem(i);},HideTab:function(i){this.m_tabPanel.hideTabStripItem(i);},SetTabDirty:function(tabId,dirty){var tab=this.m_tabPanel.findById(this.getTabUniqueId(tabId));if(tab){tab.dirty=dirty;var tabEl=Ext.get(this.m_tabPanel.id+"__"+tab.id);var tabTextEl=tabEl.query(".x-tab-strip-text")[0];if(tabTextEl){if(Ext.isIE){if(dirty){tabTextEl.innerHTML+="*";}
else{if(tabTextEl.innerHTML.charAt(tabTextEl.innerHTML.length-1)=="*")
tabTextEl.innerHTML=tabTextEl.innerHTML.substring(0,tabTextEl.innerHTML.length-1);}}
else{tabTextEl=Ext.get(tabTextEl);if(dirty){tabTextEl.addClass("x-tab-strip-dirty");}
else{tabTextEl.removeClass("x-tab-strip-dirty");}}}}},IsTabDirty:function(tabId){var tab=this.m_tabPanel.findById(this.getTabUniqueId(tabId));return tab&&(tab.dirty==true);},SetTabTitle:function(tabId,title){var tab=this.m_tabPanel.findById(this.getTabUniqueId(tabId));if(tab){tab.setTitle(title);this.SetTabDirty(tabId,tab.dirty||false);}}});

gxui.Toolbar=Ext.extend(gxui.UserControl,{m_toolbar:null,initialize:function(){gxui.Toolbar.superclass.initialize.call(this);this.Width;this.Height;this.Data;this.ButtonPressedId="";this.EditFieldValue="";this.addEvents({"beforebuttonpressed":true,"buttonpressed":true,"editfieldkeypress":true,"editfieldblur":true});},SetData:function(data){this.Data=data;},GetData:function(data){return this.Data;},GetToolbar:function(add){return this.m_toolbar;},onRender:function(){this.CreateToolbar().render(this.getContainerControl());},onRefresh:function(){this.refreshButtons(this.Data.Buttons,this.m_toolbar.items);},getUnderlyingControl:function(){return this.m_toolbar;},CreateToolbar:function(options){if(options){if(options.id){this.getUniqueId=function(){return options.id;};}
if(options.data){this.SetData(options.data);}
if(options.container){options.container.ButtonActionHandler=this.ButtonActionHandler;options.container.EditActionHandler=this.EditActionHandler;this.ButtonActionHandler=this.ButtonActionHandler.createDelegate(options.container);this.EditActionHandler=this.EditActionHandler.createDelegate(options.container);}
if(options.on){this.on(options.on);}}
this.m_toolbar=new Ext.Toolbar({id:this.getUniqueId(),stateful:false,buttons:this.CreateButtons()});return this.m_toolbar;},CreateButtons:function(){var toolbarItems=new Array();if(this.Data&&this.Data.Buttons){Ext.each(this.Data.Buttons,function(item,index,allItems){if(!item.Type){item.Type=gxui.Toolbar.ItemType.Button;}
toolbarItems.push(this.GetConfig(item));if(this.SeparateAll&&allItems[index+1])
toolbarItems.push('-');},this);}
return toolbarItems;},ButtonClickHandler:function(btn,e){if(this.fireEvent("beforebuttonpressed",this,btn,e)!==false){if(btn.gxConfirmation){var processResult=function(option,text){if(option=='ok')
this.ButtonActionHandler(btn,e);};Ext.Msg.getDialog().defaultButton=3;var msgBox=Ext.Msg.show({title:btn.gxConfirmation.Title,msg:btn.gxConfirmation.Message,buttons:{ok:btn.gxConfirmation.OKButtonText,cancel:btn.gxConfirmation.CancelButtonText},fn:processResult,scope:this,animEl:btn.getEl(),icon:Ext.MessageBox.QUESTION});setTimeout(function(){Ext.Msg.getDialog().defaultButton=0;},500);}
else{this.ButtonActionHandler(btn,e);}
this.fireEvent("buttonpressed",this,btn,e);}},ButtonActionHandler:function(btn,e){if(this.ButtonPressed){this.ButtonPressedId=btn.gxid;this.ButtonPressed(btn);}},EditActionHandler:function(field){this.EditFieldValue=field.getValue();this.ButtonActionHandler(field);},GetConfig:function(button){var getBtnCls=function(btn){if(!btn.Cls){if(btn.Icon){return(btn.Text)?"x-btn-text-icon":"x-btn-icon";}
else{return"x-btn-text";}}
return btn.Cls;};var config;if(button.id&&button.id.indexOf("ext")==0)
return button;if(!button.Type||button.Type==gxui.Toolbar.ItemType.Button){config={id:this.getUniqueButtonId(button.Id),gxid:button.Id,gxConfirmation:gxui.CBoolean(button.AskConfirmation)?button.Confirmation:false,text:button.Text,tooltip:button.Tooltip,icon:button.Icon,iconCls:button.IconCls,cls:getBtnCls(button),enableToggle:gxui.CBoolean(button.EnableToggle),pressed:gxui.CBoolean(button.Pressed),disabled:gxui.CBoolean(button.Disabled),hidden:gxui.CBoolean(button.Hidden),handler:this.ButtonClickHandler,isDropTarget:gxui.CBoolean(button.IsDropTarget),scope:this,RefreshData:gxui.CBoolean(button.RefreshData)};}
else{if(button.Type==gxui.Toolbar.ItemType.Text){config=button.Text;}
else{if(button.Type==gxui.Toolbar.ItemType.Edit){config=new Ext.form.TextField({id:this.getUniqueButtonId(button.Id),cls:button.Cls,width:180,disabled:gxui.CBoolean(button.Disabled),hidden:gxui.CBoolean(button.Hidden),enableKeyEvents:true});if(button.Text!='')
config.emptyText=button.Text;config.on({"keypress":{fn:function(field,e){this.fireEvent("editfieldkeypress",this,field,e);if(e.getKey()==Ext.EventObject.ENTER){e.stopEvent();this.EditActionHandler(field);}},scope:this},"blur":{fn:function(field){this.fireEvent("editfieldblur",this,field);this.EditActionHandler(field);},scope:this}});config.gxid=button.Id;}
else{if(button.Type==gxui.Toolbar.ItemType.Fill){config=new Ext.Toolbar.Fill();}
else{if(button.Type==gxui.Toolbar.ItemType.Separator){config="-";}
else{if(button.Type==gxui.Toolbar.ItemType.Menu||button.Type==gxui.Toolbar.ItemType.SplitButton){var menuItems=new Array();Ext.each(button.Items,function(item,index,allItems){menuItems.push(this.GetConfig(item));},this);config={text:button.Text,tooltip:button.Tooltip,disabled:gxui.CBoolean(button.Disabled),hidden:gxui.CBoolean(button.Hidden),tooltip:button.Tooltip,icon:button.Icon,iconCls:button.IconCls,menu:menuItems,cls:getBtnCls(button),disabled:gxui.CBoolean(button.Disabled)};if(button.Type==gxui.Toolbar.ItemType.SplitButton){config.gxid=button.Id;config.gxConfirmation=gxui.CBoolean(button.AskConfirmation)?button.Confirmation:false;config.xtype='tbsplit';config.enableToggle=gxui.CBoolean(button.EnableToggle);config.pressed=gxui.CBoolean(button.Pressed);if(gxui.CBoolean(button.EnableToggle)){config.toggleHandler=this.ButtonClickHandler;}
else{config.handler=this.ButtonClickHandler;}
config.scope=this;}}
else{if(button.Type=="Search"){config=new Ext.app.SearchField({store:button.Store,width:button.Width,enableKeyEvents:gxui.CBoolean(button.AutoRefresh),listeners:{'keydown':{fn:function(field,e){if(e.getKey()!=e.TAB){this.onTrigger2Click();}},buffer:button.AutoRefreshTimeout||350}}});config.on('resize',function(field){field.getEl().setWidth(button.Width-17);field.getEl().parent().setWidth(button.Width);});button.Store='undefined';}}}}}}}
return config;},defineBtnsDropTarget:function(){this.m_toolbar.items.each(function(item,pos){if(item.type=="button"&&item.isDropTarget){var dt=new Ext.dd.DropTarget(item.getEl(),{ddGroup:'GridDD'});dt._btn=item;dt._scope=this;dt.notifyOver=function(source,e,data){if(data.grid){return'x-dd-drop-ok';}
return'x-dd-drop-nodrop';};dt.notifyDrop=function(source,e,data){if(data.grid){this._scope.ButtonActionHandler(this._btn);return true;}
return false;};dt.notifyEnter=function(source,e,data){if(data.grid){return'x-dd-drop-ok';}
return'x-dd-drop-nodrop';};}},this);},refreshButtons:function(buttons,renderedButtons){var i=0;var ItemType=gxui.Toolbar.ItemType;renderedButtons.each(function(renderedBtn){var button=buttons[i];if(button){if(button.Type==ItemType.Button||button.Type==ItemType.Edit||button.Type==ItemType.Menu||button.Type==ItemType.SplitButton){if(!gxui.CBoolean(button.Disabled)&&renderedBtn.disabled){renderedBtn.enable();}
else{if(gxui.CBoolean(button.Disabled)&&!renderedBtn.disabled){renderedBtn.disable();}}
if(gxui.CBoolean(button.Hidden)&&!renderedBtn.hidden){renderedBtn.hide();}
else{if(!gxui.CBoolean(button.Hidden)&&renderedBtn.hidden){renderedBtn.show();}}}
if((button.Type==ItemType.Menu||button.type==ItemType.SplitButton)&&button.Items){this.refreshButtons(button.Items,renderedBtn.menu.items);}}
i+=1;},this)},getUniqueButtonId:function(btnId){return this.getUniqueId()+"_btn_"+btnId;},findItem:function(id,items){var ItemType=gxui.Toolbar.ItemType;var searchedItem;Ext.each(items,function(item){if(item.Id==id){searchedItem=item;}
else{if((item.Type==ItemType.Menu||item.type==ItemType.SplitButton)&&item.Items){searchedItem=this.findItem(id,item.Items);}}
if(searchedItem){return false;}},this);return searchedItem;},changeItemPropertyValue:function(itemId,propertyId,propertyValue){var item=this.findItem(itemId,this.Data.Buttons);if(item){item[propertyId]=propertyValue;}
return item;},ChangeToolbar:function(toolbarData,id,container){var ownerCt=this.m_toolbar.ownerCt;this.m_toolbar.destroy();this.CreateToolbar({data:toolbarData,id:id,container:container});var ct;if(ownerCt){ownerCt.topToolbar=this.m_toolbar;this.m_toolbar.ownerCt=ownerCt;ct=ownerCt.tbar;}
else{ct=this.getContainerControl();}
this.m_toolbar.render(ct);return this.m_toolbar;},DisableItem:function(itemId){this.changeItemPropertyValue(itemId,"Disabled",true);this.refreshButtons(this.Data.Buttons,this.m_toolbar.items);},EnableItem:function(itemId){this.changeItemPropertyValue(itemId,"Disabled",false);this.refreshButtons(this.Data.Buttons,this.m_toolbar.items);},HideItem:function(itemId){this.changeItemPropertyValue(itemId,"Hidden",true);this.refreshButtons(this.Data.Buttons,this.m_toolbar.items);},ShowItem:function(itemId){this.changeItemPropertyValue(itemId,"Hidden",false);this.refreshButtons(this.Data.Buttons,this.m_toolbar.items);}});gxui.Toolbar.ItemType={Button:"Button",Text:"Text",Edit:"Edit",Fill:"Fill",Separator:"Separator",Menu:"Menu",SplitButton:"SplitButton"};

gxui.Grid=Ext.extend(gxui.UserControl,{m_colModel:null,m_record:null,m_dataStore:null,m_grid:null,m_view:null,m_selModel:null,m_pagingTb:null,m_toolbar:null,m_gxTbar:null,m_filters:null,initialize:function(){gxui.Grid.superclass.initialize.call(this);if(!gxui.Grid.Overrided){Ext.override(Ext.grid.GridView,{fitColumns:this.fitColumns});Ext.override(Ext.grid.GridPanel,{applyState:this.applyState,getState:this.getState});gxui.Grid.Overrided=true;}
if(!gxui.Grid.HttpProxyOverrided){Ext.override(Ext.data.HttpProxy,{loadResponse:this.httpProxyLoadResponse});gxui.Grid.HttpProxyOverrided=true;}
this.Width;this.Height;this.DataStoreURL;this.DataStoreParms;this.Data;this.ColumnModelData;this.Identifier;this.Record;this.Total;this.Paging;this.PageSize;this.DisplayInfo;this.DisplayMsg;this.EmptyMsg;this.EnableDragDrop;this.EnableColumnHide;this.EnableColumnMove;this.LoadingIndicator;this.LoadingMsg;this.DefaultSortable;this.DefaultResizable;this.TrackMouseOver;this.SelectionModel;this.SingleSelect;this.StripeRows;this.AutoWidth;this.AutoSizeColumns;this.MinColumnWidth;this.DefaultWidth;this.AutoHeight;this.Resizable;this.MinWidth;this.MaxWidth;this.MinHeight;this.MaxHeight;this.Wrap;this.Handles;this.Pinned;this.RemoteSort;this.DefaultSortField;this.DefaultSortDirection;this.SelectedRowData;this.UseToolbar;this.ToolbarData;this.ButtonPressedId;this.UserFilters;this.FiltersMode;this.AddSearchField;this.SearchFieldWidth;this.Cls;this.IconCls;this.Title;this.Collapsible;this.AnimateCollapse;this.Frame;this.ForceFit;this.Grouping;this.GroupField;this.GroupTemplate;this.HideGroupedField;this.Stateful;this.StateId;},SetColumnModel:function(columnModel){if(this.ColumnModelData&&(Ext.util.JSON.encode(this.ColumnModelData)!=Ext.util.JSON.encode(columnModel))){this.destroy();this.forceRendering();}
this.ColumnModelData=columnModel;},GetColumnModel:function(columnModel){return this.ColumnModelData;},SetData:function(data){this.Data=data;},GetData:function(data){return this.Data;},SetDataStoreParms:function(data){this.DataStoreParms=data;},GetDataStoreParams:function(){return this.DataStoreParms;},SetSelectedRowData:function(data){this.SelectedRowData=data;},GetSelectedRowData:function(data){return this.SelectedRowData;},SetToolbarData:function(data){this.ToolbarData=data;},GetToolbarData:function(data){return this.ToolbarData;},onRender:function(){this.initializeSelectionModel();this.initializeColumnModel();this.initializeFilters();this.initializeDataStore();this.initializeGrid();this.addListeners();this.refreshGrid();if(this.m_gxTbar)
this.m_gxTbar.defineBtnsDropTarget();this.addToParentContainer(this.m_grid);},onRefresh:function(){if(this.forceRefresh){this.forceRefresh=false;this.Refresh();}
if(gxui.CBoolean(this.UseToolbar)){this.m_gxTbar.onRefresh();}},getUnderlyingControl:function(){return this.m_grid;},initializeSelectionModel:function(){if(this.SelectionModel=="CheckBoxSelectionModel")
this.m_selModel=new Ext.grid.CheckboxSelectionModel({singleSelect:gxui.CBoolean(this.SingleSelect)});else if(this.SelectionModel=="SmartCheckBoxSelectionModel")
this.m_selModel=new Ext.grid.SmartCheckboxSelectionModel({singleSelect:gxui.CBoolean(this.SingleSelect),dataIndex:'checked'});else if(this.SelectionModel=="RadioSelectionModel")
this.m_selModel=new Ext.grid.RadioSelectionModel({dataIndex:'checked'});else
this.m_selModel=new Ext.grid.RowSelectionModel({singleSelect:gxui.CBoolean(this.SingleSelect)});this.m_selModel.on("selectionchange",this.updateSelection,this);if(gxui.CBoolean(this.LockSelections))
this.m_selModel.lock();},initializeColumnModel:function(){var cmData=this.ColumnModelData;if(cmData&&cmData.Columns){var cmDataCols=cmData.Columns;var cmconf;if(this.SelectionModel=="RowSelectionModel")
cmconf=this.GetColumnModelConfig(cmDataCols);else
cmconf=[this.m_selModel].concat(this.GetColumnModelConfig(cmDataCols));this.colModel=new Ext.grid.ColumnModel(cmconf);this.colModel.defaultWidth=((cmData.DefaultWidth>0)?cmData.DefaultWidth:100);var mdata=new Array();for(var i=0;i<cmDataCols.length;i++){var c=cmDataCols[i];mdata.push({name:c.dataIndex,type:c.dataType,dateFormat:c.format});}
this.m_record=Ext.data.Record.create(mdata);}},initializeFilters:function(){if(gxui.CBoolean(this.UseFilters)&&this.ColumnModelData&&this.ColumnModelData.Columns){var filters=new Array();var cmDataCols=this.ColumnModelData.Columns;for(var i=0;i<cmDataCols.length;i++){var c=cmDataCols[i];if(gxui.CBoolean(c.filter)){f=c.filterData;var cfg={dataIndex:c.dataIndex,type:f.type,active:gxui.CBoolean(f.active),single:gxui.CBoolean(f.single),value:{}};switch(f.type){case"date":cfg.dateFormat=gxui.dateFormat();if(f.values&&(f.values.length>0)){for(var v=0;v<f.values.length;v++){var fv=f.values[v];var date=gxui.date(fv.value);if(fv.comparison=="after")
cfg.value.after=date;else if(fv.comparison=="before")
cfg.value.before=date;else
cfg.value.on=date;}}
break;case"numeric":if(f.values&&(f.values.length>0)){for(var v=0;v<f.values.length;v++){var fv=f.values[v];if(fv.comparison=="gt")
cfg.value.gt=fv.value;else if(fv.comparison=="lt")
cfg.value.lt=fv.value;else
cfg.value.eq=fv.value;}}
break;case"boolean":cfg.defaultValue=f.value;break;case"list":cfg.options=f.options;cfg.value=f.value;default:cfg.value=f.value;}
filters.push(cfg);}}
this.m_filters=new Ext.grid.GridFilters({filters:filters});Ext.grid.GridFilters.prototype.menuFilterText=this.FiltersText;Ext.grid.filter.BooleanFilter.prototype.yesText=this.YesText;Ext.grid.filter.BooleanFilter.prototype.noText=this.NoText;Ext.grid.filter.DateFilter.prototype.beforeText=this.BeforeText;Ext.grid.filter.DateFilter.prototype.afterText=this.AfterText;Ext.grid.filter.DateFilter.prototype.onText=this.OnText;}},initializeDataStore:function(){var storeConfig;if(this.DataStoreURL!=""){storeConfig={proxy:new Ext.data.HttpProxy({url:this.DataStoreURL}),reader:new Ext.data.XmlReader({id:this.Identifier,record:this.Record,totalRecords:this.Total,success:'@success'},this.m_record),remoteSort:gxui.CBoolean(this.RemoteSort),baseParams:{limit:parseInt(this.PageSize)},listeners:{'loadexception':{fn:function(proxy,options,response){var error=Ext.DomQuery.selectValue('error',this.m_dataStore.reader.xmlData);this.LoadExceptionError=error;if(this.LoadException)
this.LoadException();},scope:this}}};}
else{if(this.Data){storeConfig={proxy:new Ext.data.MemoryProxy(this.Data),reader:new Ext.data.JsonReader({id:this.Identifier,root:this.Root,totalProperty:this.Total},this.m_record)};}}
if(gxui.CBoolean(this.Grouping)){storeConfig.groupField=this.GroupField;this.m_dataStore=new Ext.data.GroupingStore(storeConfig);}
else
this.m_dataStore=new Ext.data.Store(storeConfig);if(this.DefaultSortField)
this.m_dataStore.setDefaultSort(this.DefaultSortField,this.DefaultSortDir||'ASC');},initializeGrid:function(){if(gxui.CBoolean(this.Paging)){this.m_pagingTb=new Ext.PagingToolbar({store:this.m_dataStore,pageSize:parseInt(this.PageSize),plugins:this.m_filters,displayInfo:this.DisplayInfo,displayMsg:this.DisplayMsg,emptyMsg:this.EmptyMsg});this.m_pagingTb.firstText=this.FirstText;this.m_pagingTb.lastText=this.LastText;this.m_pagingTb.nextText=this.NextText;this.m_pagingTb.prevText=this.PreviousText;this.m_pagingTb.refreshText=this.RefreshText;this.m_pagingTb.afterPageText=this.AfterPageText;this.m_pagingTb.beforePageText=this.BeforePageText;}
if(gxui.CBoolean(this.UseToolbar)){if(gxui.CBoolean(this.AddSearchField)){if(!this.ToolbarData.Buttons){this.ToolbarData.Buttons=[];}
this.ToolbarData.Buttons.push({Type:'Fill'});this.ToolbarData.Buttons.push({Type:'Search',Store:this.m_dataStore,Width:this.SearchFieldWidth,AutoRefresh:this.SearchFieldAutoRefresh,AutoRefreshTimeout:this.SearchFieldAutoRefreshTimeout});}
this.m_gxTbar=new gxui.Toolbar({register:false});this.m_toolbar=this.m_gxTbar.CreateToolbar({id:this.getUniqueId()+"_Toolbar",data:this.ToolbarData,container:this,on:{'beforebuttonpressed':{fn:function(uc,btn,e){this.updateSelection();if(btn.RefreshData)
this.forceRefresh=true;},scope:this}}});}
var loadMask=(gxui.CBoolean(this.LoadingIndicator)&&this.LoadingMsg)?{msg:this.LoadingMsg}:gxui.CBoolean(this.LoadingIndicator);if(gxui.CBoolean(this.Grouping))
this.m_view=new Ext.grid.GroupingView({autoFill:gxui.CBoolean(this.AutoSizeColumns),forceFit:gxui.CBoolean(this.ForceFit),hideGroupedColumn:gxui.CBoolean(this.HideGroupedField),groupTextTpl:(this.GroupTemplate!="")?this.GroupTemplate:"{text}"});else
this.m_view=new Ext.grid.GridView({autoFill:gxui.CBoolean(this.AutoSizeColumns),forceFit:gxui.CBoolean(this.ForceFit)});this.Width=parseInt(this.Width);this.Height=parseInt(this.Height);this.m_grid=new Ext.grid.GridPanel({id:this.getUniqueId(),renderTo:this.getContainerControl(),store:this.m_dataStore,cm:this.colModel,sm:this.m_selModel,trackMouseOver:gxui.CBoolean(this.TrackMouseOver),loadMask:loadMask,view:this.m_view,enableColumnHide:gxui.CBoolean(this.EnableColumnHide),enableColumnMove:gxui.CBoolean(this.EnableColumnMove),minColumnWidth:this.MinColumnWidth,autoHeight:gxui.CBoolean(this.AutoHeight),autoWidth:gxui.CBoolean(this.AutoWidth),width:(this.Width!=100)?this.Width:undefined,height:(this.Height!=100)?this.Height:undefined,collapsible:gxui.CBoolean(this.Collapsible),animCollapse:gxui.CBoolean(this.AnimateCollapse),title:this.Title,cls:this.Cls,iconCls:this.IconCls,frame:gxui.CBoolean(this.Frame),enableDragDrop:gxui.CBoolean(this.EnableDragDrop),stripeRows:gxui.CBoolean(this.StripeRows),stateful:gxui.CBoolean(this.Stateful),stateId:(this.StateId!="")?this.StateId:undefined,bbar:this.m_pagingTb,tbar:this.m_toolbar,plugins:this.m_filters});this.m_dataStore=this.m_grid.store;if(gxui.CBoolean(this.Resizable)){var rz=new Ext.Resizable(this.m_grid.getEl(),{wrap:this.Wrap,minWidth:this.MinWidth,maxWidth:this.MaxWidth,minHeight:this.MinHeight,maxHeight:this.MaxHeight,pinned:this.Pinned,handles:this.Handles});rz.on('resize',this.m_grid.doLayout,this.m_grid);}},refreshGrid:function(){if(this.DataStoreURL!=""){if(gxui.CBoolean(this.Paging))
this.m_grid.store.load({params:Ext.apply({start:0,limit:parseInt(this.PageSize)},this.DataStoreParms)});else
this.m_grid.store.load({params:this.DataStoreParms});}
else{if(this.Data){this.m_grid.store.loadData(this.Data);}}},updateSelection:function(){this.SelectedRowData=new Array();var selRows=this.m_grid.getSelectionModel().getSelections();if(selRows)
Ext.each(selRows,function(item,index,allItems){this.SelectedRowData.push(item.data);},this);},addListeners:function(){this.m_grid.addListener('rowclick',function(grid,rowIndex,e){this.updateSelection();if(this.RowClick)
this.RowClick();},this);this.m_grid.addListener('rowdblclick',function(grid,rowIndex,e){this.updateSelection();if(this.RowDoubleClick)
this.RowDoubleClick();},this);this.m_grid.addListener('cellclick',function(grid,rowIndex,columnIndex,e){this.updateSelection();this.SelectedColumn=columnIndex;if(this.CellClick)
this.CellClick();},this);this.m_grid.addListener('celldblclick',function(grid,rowIndex,columnIndex,e){this.updateSelection();this.SelectedColumn=columnIndex;if(this.CellDoubleClick)
this.CellDoubleClick();},this);},GetColumnModelConfig:function(cols){var config=new Array();for(var i=0;i<cols.length;i++){var col=cols[i];config.push({id:(col.id!="")?col.id:undefined,header:col.header,dataIndex:col.dataIndex,width:(col.width!=0)?col.width:undefined,hidden:gxui.CBoolean(col.hidden),hideable:(col.hideable!="")?gxui.CBoolean(col.hideable):undefined,sortable:(col.sortable!="")?gxui.CBoolean(col.sortable):gxui.CBoolean(this.DefaultSortable),resizable:(col.resizable!="")?gxui.CBoolean(col.resizable):gxui.CBoolean(this.DefaultResizable),fixed:(col.fixed!="")?gxui.CBoolean(col.fixed):undefined,menuDisabled:gxui.CBoolean(col.menuDisabled),align:(col.align!="")?col.align:undefined,renderer:(col.renderer!="")?col.renderer:undefined,css:(col.css!="")?col.css:undefined});}
return config;},fitColumns:function(preventRefresh,onlyExpand,omitColumn){var cm=this.cm,leftOver,dist,i;var tw=cm.getTotalWidth(false);var aw=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(aw<20){return;}
var extra=aw-tw;if(extra===0){return false;}
var vc=cm.getColumnCount(true);var ac=vc-(typeof omitColumn=='number'?1:0);if(ac===0){ac=1;omitColumn=undefined;}
var colCount=cm.getColumnCount();var cols=[];var extraCol=0;var width=0;var w;for(i=0;i<colCount;i++){if(!cm.isHidden(i)&&!cm.isFixed(i)&&i!==omitColumn){w=cm.getColumnWidth(i);cols.push(i);extraCol=i;cols.push(w);width+=w;}}
var frac=(aw-cm.getTotalWidth())/width;while(cols.length){w=cols.pop();i=cols.pop();cm.setColumnWidth(i,Math.max(this.grid.minColumnWidth,Math.floor(w+w*frac)),true);}
if((tw=cm.getTotalWidth(false))>aw){for(i=0;i<colCount;i++){if(!cm.isHidden(i)&&!cm.isFixed(i)&&i!==omitColumn){w=cm.getColumnWidth(i);cols.push(i);cols.push(w);width+=w;}}
var delta=(tw-aw)/cols.length;while(cols.length){w=cols.pop();i=cols.pop();cm.setColumnWidth(i,Math.max(0,Math.floor(w-delta)),true);}}
if(preventRefresh!==true){this.updateAllColumnWidths();}
return true;},applyState:function(state){var cm=this.colModel;var cs=state.columns;if(cs){for(var i=0,len=cs.length;i<len;i++){var s=cs[i];var c=cm.getColumnById(s.id);if(c){c.hidden=s.hidden;c.width=s.width;var oldIndex=cm.getIndexById(s.id);if(oldIndex!=i){cm.moveColumn(oldIndex,i);}}}}
if(state.sort){this.store[this.store.remoteSort?'setDefaultSort':'sort'](state.sort.field,state.sort.direction);}
if(state.group&&this.store.groupBy){this.store.groupBy(state.group);}},getState:function(){var o={columns:[]};for(var i=0,c;c=this.colModel.config[i];i++){o.columns[i]={id:c.id,width:c.width};if(c.hidden){o.columns[i].hidden=true;}}
var ss=this.store.getSortState();if(ss){o.sort=ss;}
if(this.store.getGroupState){var gs=this.store.getGroupState();if(gs){o.group=gs;}}
return o;},httpProxyLoadResponse:function(o,success,response){delete this.activeRequest;if(!success){this.fireEvent("loadexception",this,o,response);o.request.callback.call(o.request.scope,null,o.request.arg,false);return;}
var result;try{result=o.reader.read(response);if(result.success===false){this.fireEvent("loadexception",this,o,response);}}catch(e){this.fireEvent("loadexception",this,o,response,e);o.request.callback.call(o.request.scope,null,o.request.arg,false);return;}
this.fireEvent("load",this,o,o.request.arg);o.request.callback.call(o.request.scope,result,o.request.arg,true);},Refresh:function(){this.refreshGrid();},SelectRow:function(row,keepExisting){index=this.m_grid.getStore().indexOfId(row);this.SelectRowByIndex(index,keepExisting);},SelectRowByIndex:function(rowIndex,keepExisting){this.m_grid.getSelectionModel().selectRow(rowIndex,keepExisting);},DeselectRow:function(row){index=this.m_grid.getStore().indexOfId(row);this.DeselectRowByIndex(index);},DeselectRowByIndex:function(rowIndex){this.m_grid.getSelectionModel().deselectRow(rowIndex);},ClearSelections:function(){this.m_grid.getSelectionModel().clearSelections();}});

gxui.GridExtension=Ext.extend(gxui.UserControl,{initialize:function(){gxui.GridExtension.superclass.initialize.call(this);},onRender:function(){this.ColumnsToResize=new Array();this.ImagesForResizing=[];var selModel=this.createSelectionModel();var cmConf=this.getColumnsConfig(selModel);var cm=this.createColumnModel(cmConf.columns);var store=this.createStore(cmConf.fields);var pagingTb=this.createPagingToolbar();var view=this.createGridView();this.m_grid=this.createGridPanel(selModel,cmConf,cm,store,pagingTb,view);if(gx.lang.gxBoolean(this.ownerGrid.defaultDragable)){this.m_DD=new gxui.GridExtension.DragDrop(this,{DragDropText:this.DragDropText,PrimaryButtonOnly:this.PrimaryButtonOnly});}
this.fixInheritedCentering();if(!this.gxWidth){this.m_grid.setWidth(this.m_grid.getColumnModel().getTotalWidth()+21);}
if(gx.lang.gxBoolean(this.AddToParentGxUIControl)){this.addToParentContainer(this.m_grid);}
this.resizeImageColumns();},onRefresh:function(){var grid=this.m_grid;var selModel=this.createSelectionModel();var cmConf=this.getColumnsConfig(selModel);var store=this.createStore(cmConf.fields);grid.reconfigure(store,this.createColumnModel(cmConf.columns));this.updatePagingToolbar(grid.getBottomToolbar());this.keepSelection(grid);if(gx.lang.gxBoolean(this.gxAllowCollapsing)){if(gx.lang.gxBoolean(this.gxCollapsed)){grid.collapse();}
else{grid.expand();}}
if(this.Visible!=undefined){if(gx.lang.gxBoolean(this.gxVisible)&&!grid.isVisible()){grid.show();}
else{if(!gx.lang.gxBoolean(this.gxVisible)&&grid.isVisible()){grid.hide();}}}
if(!grid.ownerCt){if(this.GridHeight&&grid.getBox().height!=this.GridHeight){grid.setHeight(this.GridHeight);}
if(this.gxWidth&&grid.getBox().width!=this.gxWidth){grid.setWidth(this.gxWidth);}}
grid.setTitle(this.Title);this.resizeImageColumns();},onDestroy:function(){if(this.m_DD){this.m_DD.destroy();}
gxui.GridExtension.superclass.onDestroy.call(this);},getUnderlyingControl:function(){return this.m_grid;},createGridPanel:function(selModel,cmConf,cm,store,pagingTb,view){var GridClass;if(this.isEditable()){GridClass=gx.lang.gxBoolean(this.EnableColumnLocking)?Ext.grid.LockingEditorGridPanel:Ext.grid.EditorGridPanel;}
else{GridClass=gx.lang.gxBoolean(this.EnableColumnLocking)?Ext.grid.LockingGridPanel:Ext.grid.GridPanel;}
this.gxWidth=parseInt(this.gxWidth);var config={id:this.getUniqueId(),store:store,cm:cm,sm:selModel,view:view,cls:"",autoExpandColumn:cmConf.autoExpandColumn?cmConf.autoExpandColumn:undefined,enableColumnHide:gx.lang.gxBoolean(this.EnableColumnHide),enableColumnMove:gx.lang.gxBoolean(this.EnableColumnMove),enableDragDrop:gx.lang.gxBoolean(this.ownerGrid.defaultDragable)&&gx.lang.gxBoolean(this.gxAllowSelection),ddGroup:this.DragDropGroup||"",stripeRows:(this.gxTitleBackstyle==gx.grid.styles.report),disableSelection:!gx.lang.gxBoolean(this.gxAllowSelection),trackMouseOver:gx.lang.gxBoolean(this.gxAllowHovering),collapsible:gx.lang.gxBoolean(this.gxAllowCollapsing),collapsed:gx.lang.gxBoolean(this.gxCollapsed),header:gx.lang.gxBoolean(this.gxAllowCollapsing),height:!gx.lang.gxBoolean(this.AutoHeight)&&this.GridHeight?this.GridHeight:undefined,width:this.gxWidth?this.gxWidth:undefined,autoHeight:gx.lang.gxBoolean(this.AutoHeight),title:this.Title?this.Title:undefined,minColumnWidth:parseInt(this.MinColumnWidth),renderTo:this.getContainerControl(),bbar:pagingTb,listeners:this.gridListeners(),stateful:gx.lang.gxBoolean(this.Stateful),stateId:this.StateId||undefined,clicksToEdit:1,plugins:cmConf.plugins,reconfigure:function(store,colModel){var state=this.getState();if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({store:store},this.initialConfig.loadMask));}
this.view.bind(store,colModel);this.store=store;this.colModel=colModel;if(this.stateful){this.applyState(state);}
if(this.rendered){this.view.refresh(true);}}};if(gx.lang.gxBoolean(this.EnableColumnLocking)){config.cls+=" x-grid-locked";}
if(gx.lang.gxBoolean(this.UseThemeClasses)){config.cls+=' '+this.gxCssClass;}
var grid=new GridClass(config);return grid;},createSelectionModel:function(){if(gx.lang.gxBoolean(this.gxAllowSelection)){if(this.SelectionModel=="CheckBoxSelectionModel")
return new Ext.grid.CheckboxSelectionModel({singleSelect:true});if(this.SelectionModel=="SmartCheckBoxSelectionModel")
return new Ext.grid.SmartCheckboxSelectionModel({singleSelect:true,dataIndex:'checked'});if(this.SelectionModel=="RadioSelectionModel")
return new Ext.grid.RadioSelectionModel({dataIndex:'checked'});return new Ext.grid.RowSelectionModel({singleSelect:true});}},getColumnsConfig:function(selModel){var columns=this.columns;var getColumnType=function(col){switch(col.type){case gx.types.numeric:return"float";case gx.types.bool:return"boolean";case gx.types.date:return"date";case gx.types.dateTime:return"date";default:return"string";};};var dateConverter=function(v){var gxdate=new gx.date.gxdate(v);gxdate.Value.gxdate=gxdate;return gxdate.Value;};var conf={columns:[],fields:[],autoExpandColumn:0,plugins:[]};if(this.SelectionModel!="RowSelectionModel"&&selModel){conf.columns.push(selModel);}
var GE=gxui.GridExtension,controlTypes=gx.html.controls.types;Ext.each(this.columns,function(col,i){if(gx.lang.gxBoolean(col.visible)){if(gx.lang.gxBoolean(col.AutoExpand)){conf.autoExpandColumn=col.gxAttId;}
var colType=getColumnType(col);conf.fields.push({name:col.gxAttName||col.gxAttId,mapping:i,type:colType,convert:colType=='date'?dateConverter:undefined});var colWidth;if(col.gxControl.type!=controlTypes.checkBox&&col.gxControl.type!=controlTypes.comboBox){colWidth=!gx.lang.gxBoolean(col.AutoExpand)&&col.gxWidthUnit=="px"?col.width||0:undefined;}
if(colWidth==""||col.htmlName.indexOf("PROMPT_")>-1){var titleWidth=this.calculateControlWidth(col.title);colWidth=this.getColumnWidth(col,i,titleWidth);if(col.gxControl.type==controlTypes.image)
this.ColumnsToResize.push({id:col.gxAttId});}
var ColRendererClass=GE.ColumnRenderers.get(col.gxControl.type);var colRenderer=new ColRendererClass(this,col,i,{id:col.gxAttId,dataIndex:col.gxAttName||col.gxAttId,header:col.title,width:colWidth,hidden:gx.lang.gxBoolean(col.Hidden||false),align:col.align,hideable:gx.lang.gxBoolean(col.Hideable),menuDisabled:gx.lang.gxBoolean(col.MenuDisabled),resizable:gx.lang.gxBoolean(col.Resizable),sortable:gx.lang.gxBoolean(col.Sortable),locked:gx.lang.gxBoolean(col.Lock)||undefined,grid:this.m_grid,checkedValue:col.gxChecked,uncheckedValue:col.gxUnChecked});conf.columns.push(colRenderer);conf.plugins.push(colRenderer);}},this);return conf;},resizeImageColumns:function(){for(var j=0;this.ColumnsToResize[j]!=undefined;j++){var columnIndex=this.m_grid.getColumnModel().getIndexById(this.ColumnsToResize[j].id);this.ImagesForResizing[columnIndex]=new Array();var actualColumnIndex=this.getActualColumnIndex(this.m_grid.getColumnModel(),columnIndex);for(var i=0;this.properties[i]!=undefined;i++){var field=this.properties[i][actualColumnIndex];if(field.type==gx.html.controls.types.image){image=new Image();this.ImagesForResizing[columnIndex].push(image);image.onload=this.setImageColumnWidth.createDelegate(this,[columnIndex]);image.src=field.value;}}}},setImageColumnWidth:function(columnIndex){if(this.ImagesForResizing[columnIndex].length==this.properties.length){var maxWidth=this.calculateControlWidth(this.m_grid.view.cm.config[columnIndex].gxColumn.title);var width;for(var j=0;this.ImagesForResizing[columnIndex][j]!=undefined;j++){width=this.ImagesForResizing[columnIndex][j].width;if(width>maxWidth)
maxWidth=width;if(this.isPromptColumn(columnIndex))
break;;}
this.m_grid.getView().cm.setColumnWidth(columnIndex,maxWidth+27,false);if(!this.gxWidth){this.m_grid.setWidth(this.m_grid.getColumnModel().getTotalWidth()+21);}
this.ImagesForResizing[columnIndex]=new Array();}},isPromptColumn:function(columnIndex){return this.m_grid.view.cm.config[columnIndex].gxColumn.htmlName.indexOf("PROMPT_")>-1;},getColumnWidth:function(col,j,maxWidth){var width=0;var newDiv=document.createElement('div');var added=false;var image;for(var i=0;this.properties[i]!=undefined;i++){var field=this.properties[i][j];if(field.type!=gx.html.controls.types.image){added=true;width=this.calculateControlWidth(field,newDiv);if(parseInt(width)>maxWidth)
maxWidth=width;}}
if(added)
document.body.removeChild(newDiv);return maxWidth+25;},calculateControlWidth:function(field,newDiv){if(newDiv==undefined){newDiv=document.createElement('div');var remove=true;}
if(field.getHtml)
newDiv.innerHTML=field.getHtml();else
newDiv.innerHTML="<span>"+field+"</span>";newDiv.style.visibility="hidden";document.body.appendChild(newDiv);var width=newDiv.children[0].offsetWidth;if(remove)
document.body.removeChild(newDiv);return width;},createColumnModel:function(columns){var ColModelClass=gx.lang.gxBoolean(this.EnableColumnLocking)?Ext.grid.LockingColumnModel:Ext.grid.ColumnModel;var cm=new ColModelClass(columns);cm.defaultWidth=this.DefaultColumnWidth;cm.on('hiddenchange',function(colModel,columnIndex,hidden){var actualColIndex=this.getActualColumnIndex(colModel,columnIndex);this.columns[actualColIndex].Hidden=hidden;},this);cm.isCellEditable=function(colIndex,rowIndex){var col=cm.config[colIndex];var cell=this.getPropertiesCell(this.m_grid,rowIndex,colIndex,false);return gx.lang.gxBoolean(cell.enabled)&&gx.lang.gxBoolean(cell.visible)&&(cm.getCellEditor(colIndex,rowIndex)||col.checkColumn);}.createDelegate(this);return cm;},createStore:function(fields){var reader=new Ext.data.JsonReader({},fields);reader.getJsonAccessor=function(i){return function(obj){var hasReturn=obj[i].grid.instanciateRow(obj[i].gridRow);var value;if(hasReturn&&obj[i].column.gxControl.type!=gx.html.controls.types.checkBox)
value=gx.text.trim(obj[i].grid.parentObject.GXValidFnc[obj[i].column.gxId].val());else
value=obj[i].value;if(value=="string")
value=gx.text.trim(value);return value;};};var storeConfig={autoDestroy:true,sortInfo:{field:this.SortField,direction:this.SortOrder||"ASC"},remoteSort:true,reader:reader,data:this.properties,listeners:{'beforeload':function(store){this.SortField=store.sortInfo.field;this.SortOrder=store.sortInfo.direction;this.goToPage("FIRST");return false;},'datachanged':function(store){if(gx.lang.gxBoolean(this.Grouping)){this.GroupField=store.groupField;}},scope:this}};if(gx.lang.gxBoolean(this.Grouping)){storeConfig.groupField=this.GroupField;return new Ext.data.GroupingStore(storeConfig);}
return new Ext.data.Store(storeConfig);},createPagingToolbar:function(){var pagingTb=[];var cp=this.currentPage;var tp=100000;if(this.usePaging||this.OnFirstPage){pagingTb.push({tooltip:this.FirstText,iconCls:"x-tbar-page-first",disabled:cp==1,handler:this.OnFirstPage||this.goToPage.createDelegate(this,["first"]),scope:this});}
if(this.usePaging||this.OnPreviousPage){pagingTb.push({tooltip:this.PreviousText,iconCls:"x-tbar-page-prev",disabled:cp==1,handler:this.OnPreviousPage||this.goToPage.createDelegate(this,["prev"]),scope:this});}
if(this.usePaging||((this.OnFirstPage||this.OnPreviousPage)&&(this.OnNextPage||this.OnLastPage))){pagingTb.push("-");}
if(this.usePaging||this.OnNextPage){pagingTb.push({tooltip:this.NextText,iconCls:"x-tbar-page-next",disabled:cp==tp,handler:this.OnNextPage||this.goToPage.createDelegate(this,["next"]),scope:this});}
if(this.usePaging||this.OnLastPage){pagingTb.push({tooltip:this.LastText,iconCls:"x-tbar-page-last",disabled:cp==tp,handler:this.OnLastPage||this.goToPage.createDelegate(this,["last"]),scope:this});}
if(this.usePaging||this.OnFirstPage||this.OnPreviousPage||this.OnNextPage||this.OnLastPage){pagingTb.push("-");}
pagingTb.push({tooltip:this.RefreshText,iconCls:"x-tbar-loading",handler:this.refreshGrid,scope:this});return pagingTb;},updatePagingToolbar:function(tb){if(tb){var cp=10000;var tp=100000;if(tb.items.itemAt(0)){tb.items.itemAt(0).setDisabled(cp==1);}
if(tb.items.itemAt(1)){tb.items.itemAt(1).setDisabled(cp==1);}
if(tb.items.itemAt(3)){tb.items.itemAt(3).setDisabled(cp==tp);}
if(tb.items.itemAt(4)){tb.items.itemAt(4).setDisabled(cp==tp);}}},createGridView:function(){if(gx.lang.gxBoolean(this.EnableColumnLocking)){return new Ext.grid.LockingGridView({forceFit:gx.lang.gxBoolean(this.ForceFit)});}
if(gx.lang.gxBoolean(this.Grouping)){return new Ext.grid.GroupingView({forceFit:gx.lang.gxBoolean(this.ForceFit),hideGroupedColumn:gx.lang.gxBoolean(this.HideGroupedField),groupTextTpl:this.GroupTemplate||"{text}"});}
return new Ext.grid.GridView({forceFit:gx.lang.gxBoolean(this.ForceFit)});},setSelectedRow:function(rowIndex){this.SelectedRow=rowIndex+1;var actualRowIndex=this.getActualRowIndex(this.m_grid,rowIndex);this.selectRow(actualRowIndex);},keepSelection:function(grid){if(this.SelectedRow>=1){this.setSelectedRow(this.SelectedRow-1);grid.getSelectionModel().selectRow(this.SelectedRow-1);return false;}},gridListeners:function(){return{'rowclick':function(grid,rowIndex,e){var actualRowIndex=this.getActualRowIndex(grid,rowIndex);var row=this.rows[actualRowIndex];if(row){this.setSelectedRow(rowIndex);if(this.ownerGrid.defaultSetsContext){var setter=this.getGxRowContextSetter(row);if(setter){this.notifyContext(setter.types,setter.obj);}}}},'cellclick':function(grid,rowIndex,columnIndex,e){var cell=this.getPropertiesCell(grid,rowIndex,columnIndex,false);if(cell.type==gx.html.controls.types.image||!cell.enabled)
this.fireCellClickEvent(rowIndex,columnIndex);},'cellcontextmenu':function(grid,rowIndex,cellIndex,e){if(this.ContextMenu){this.setSelectedRow(rowIndex);grid.getSelectionModel().selectRow(rowIndex);this.ContextMenu();e.preventDefault();}},'beforeedit':function(e){var col=e.grid.getColumnModel().config[e.column];col.col=e.column;col.row=e.row;if(col.checkColumn){return false;}},'afteredit':function(e){var cell=this.getPropertiesCell(e.grid,e.row,e.column,false);cell.value=e.value;if(e.value instanceof Date){var gxdate=e.value.gxdate;cell.value=gxdate.getString();if(gxdate.HasTimePart){cell.value+=' '+gxdate.getTimeString(true,true);}}
if(typeof(e.value)=="number"){var colData=this.ParentObject.GXValidFnc[this.columns[e.column].gxId];var numberFormat={decimalSeparator:gx.decimalPoint,decimalPrecision:colData.dec,groupingSeparator:'',groupingSize:0,currencySymbol:''};v=Ext.util.Format.formatNumber(e.value,numberFormat);cell.value=v+"";}
var colControl=cell.column.gxControl,controlTypes=gx.html.controls.types;if(colControl.type==controlTypes.checkBox||colControl.type==controlTypes.comboBox){this.fireCellClickEvent(e.row,e.column)}},scope:this};},isEditable:function(){var isEditable=false;for(var i=0,cols=this.columns.length;i<cols;i++){isEditable=isEditable||gx.lang.gxBoolean(this.columns[i].enabled);if(isEditable){return isEditable;}}
for(var i=0,rows=this.properties.length;i<rows;i++){for(var j=0,cols=this.properties[i].length;j<cols;j++){isEditable=isEditable||gx.lang.gxBoolean(this.properties[i][j].enabled);if(isEditable){return isEditable;}}}},getActualColumnIndex:function(cm,colIndex){var colId=cm.getColumnId(colIndex);var length=this.columns.length;for(var i=0;i<length;i++){if(this.columns[i].gxAttId==colId){return i;}}
return-1;},getActualRowIndex:function(grid,rowIndex){return grid.getStore().getAt(rowIndex).json[0].row.id;},getPropertiesCell:function(grid,rowIndex,columnIndex,isActualColIndex){var actualColIndex=columnIndex;if(!isActualColIndex){actualColIndex=this.getActualColumnIndex(grid.getColumnModel(),columnIndex);}
var record=grid.getStore().getAt(rowIndex);if(record){return record.json[actualColIndex];}
return null;},goToPage:function(page){if(typeof page=="string"){gx.fn.setHidden(this.gxGridName.toUpperCase()+"PAGING",page.toUpperCase());gx.evt.execEvt("E"+this.gxGridName.toUpperCase()+"PAGING.",gx.evt.dummyCtrl);return;}},refreshGrid:function(){var og=this.ownerGrid,po=this.ParentObject;if(og.parentObject.autoRefresh&&og.refreshVars.length>0){og.filterVarChanged();}
else{po.executeServerEvent('RFR',true);}},fixInheritedCentering:function(){var textAlign=this.m_grid.el?this.m_grid.el.getStyle('text-align'):"";if(textAlign==""){return;}
if(textAlign.indexOf("center")>=0||textAlign.indexOf("right")>=0){this.m_grid.el.setStyle('text-align','left');Ext.select("table",false,this.m_grid.el.dom).setStyle('text-align','left');if(Ext.isIE&&gx.lang.gxBoolean(this.EnableColumnLocking)){var fn=function(){Ext.select(".x-grid3-locked",false,this.m_grid.el.dom).setStyle('position','fixed').setStyle('position','absolute');};fn.defer(100,this);}}
if(Ext.isIE){var view=this.m_grid.getView();view.refresh.defer(200,view,[true]);}},getRowGxInternalId:function(row){return this.ownerGrid.containerName+'Row_'+row.gxId;},getGxRowContextSetter:function(row){var trId=this.getRowGxInternalId(row);var setter;Ext.each(gx.fx.ctx.setters,function(s){if(s.id==trId){setter=s;return false;}},this);return setter;},fireCellClickEvent:function(rowIndex,columnIndex){var grid=this.m_grid;var actualColIndex=this.getActualColumnIndex(grid.getColumnModel(),columnIndex);var actualRowIndex=this.getActualRowIndex(grid,rowIndex);var cell=this.getPropertiesCell(grid,actualRowIndex,actualColIndex,true);if(this.executeEvent){this.executeEvent(actualColIndex,actualRowIndex);}},SelectRow:function(rowIndex){if(rowIndex){this.setSelectedRow(rowIndex-1);this.m_grid.getSelectionModel().selectRow(rowIndex-1);}},getSelectedRow:function(){return this.SelectedRow;},getCellValue:function(ctrlId){var grid=this.m_grid;for(var i=0;this.properties[this.SelectedRow-1][i]!=undefined;i++){if(this.properties[this.SelectedRow-1][i].id==ctrlId)
break;}
var columnIndex=i;var actualRowIndex=this.getActualRowIndex(grid,this.SelectedRow-1);var cell=this.getPropertiesCell(grid,actualRowIndex,columnIndex,true);return cell.value;},setCellValue:function(cell,value){value=value+"";var grid=this.m_grid;var columnName;for(var i=0;this.properties[this.SelectedRow-1][i]!=undefined;i++){if(this.properties[this.SelectedRow-1][i].id==cell.id){columnName=this.properties[this.SelectedRow-1][i].column.gxAttName;break;}}
var columnIndex=i;var actualRowIndex=this.getActualRowIndex(grid,this.SelectedRow-1);var gxdate=null;if(this.columns[i].type==gx.types.date||this.columns[i].type==gx.types.dateTime){var gxdate=new gx.date.gxdate(value);gxdate.Value.gxdate=gxdate;value=gxdate.getString();if(gxdate.HasTimePart){value+=' '+gxdate.getTimeString(true,true);}}
this.properties[actualRowIndex][columnIndex].value=value;this.m_grid.getStore().getAt(actualRowIndex).set(columnName,(gxdate!=null)?gxdate.Value:value);}});

gxui.GridExtension.Column=function(gxGrid,gxColumn,actualColIndex,config){Ext.apply(this,config);if(!this.id){this.id=Ext.id();}
this.gxGrid=gxGrid;this.gxColumn=gxColumn;this.actualColIndex=actualColIndex;this.renderer=this.renderer.createDelegate(this);this.editor=this.defineEditor(gxColumn,actualColIndex);};gxui.GridExtension.Column.prototype={init:function(grid){this.grid=grid;var view=this.grid.getView();},defineEditor:function(gxColumn,actualColIndex){var types=gx.types;switch(gxColumn.type){case types.numeric:var colData=this.gxGrid.ParentObject.GXValidFnc[gxColumn.gxId];return new Ext.form.NumberField({allowDecimals:colData.dec>0?true:false,allowNegative:colData.sign,decimalPrecision:colData.dec,decimalSeparator:gx.decimalPoint,maxLength:colData.len});case types.date:return new Ext.form.DateField({getValue:function(){var date=Ext.form.DateField.prototype.getValue.call(this);if(date){this.gxdate.assign_date(date);date.gxdate=this.gxdate;}
return date;},setValue:function(date){if(date.gxdate){this.gxdate=date.gxdate;}
Ext.form.DateField.prototype.setValue.call(this,date);}});case types.dateTime:return new Ext.ux.form.DateTime({getValue:function(){var date=Ext.ux.form.DateTime.prototype.getValue.call(this);if(date){this.gxdate.assign_date(date);date.gxdate=this.gxdate;}
return date;},setValue:function(date){if(date.gxdate){this.gxdate=date.gxdate;}
Ext.ux.form.DateTime.prototype.setValue.call(this,date);}});default:return new Ext.form.TextField();}},renderer:function(value,metadata,record,rowIndex,colIndex,store){var cell=record.json[this.actualColIndex];var col=this.gxColumn;var v=value;if(col.type==gx.types.date||col.type==gx.types.dateTime){v=value.gxdate.getString();if(value.gxdate.HasTimePart){v+=' '+value.gxdate.getTimeString(true,true);}}
if(col.type==gx.types.numeric&&typeof(value)=="number"){var colData=this.gxGrid.ParentObject.GXValidFnc[this.gxColumn.gxId];var numberFormat={decimalSeparator:gx.decimalPoint,decimalPrecision:colData.dec,groupingSeparator:'',groupingSize:0,currencySymbol:''};v=Ext.util.Format.formatNumber(value,numberFormat);}
if(gx.lang.gxBoolean(cell.visible)){if(gx.lang.gxBoolean(this.gxGrid.UseThemeClasses)&&cell.cssClass){metadata.css+=' '+cell.cssClass}
if(cell.link){return String.format('<a href="{0}" alt="{2}" target="{3}">{1}</a>',cell.link||"",v||"",cell.alt||"",cell.linkTarget||"");}
var style="";if(cell.style){var color=cell.style.match(/color:(.+);?/);if(color){style+=String.format("color:{0};",color[1]);}
var bgColor=cell.style.match(/background-color:(.+);?/);if(bgColor){style+=String.format("background-color:{0};",bgColor[1]);}}
if((col.gxControl.eventName||col.gxControl.jsDynCode)){style+='cursor:pointer;';}
if(style){metadata.attr+=String.format(' style="{0}"',style);}
if(cell.title){v=String.format("<span qtip='{0}'>{1}</span>",cell.title,v);}
return v;}
return"";}};gxui.GridExtension.ImageColumn=Ext.extend(gxui.GridExtension.Column,{defineEditor:Ext.emptyFn,renderer:function(value,metadata,record,rowIndex,colIndex,store){var cell=record.json[this.actualColIndex];if(gx.lang.gxBoolean(cell.visible)){value=String.format('<img src="{0}" class="{1}" title="{2}" />',cell.value,cell.cssClass,cell.title);}
return gxui.GridExtension.ImageColumn.superclass.renderer.apply(this,[value,metadata,record,rowIndex,colIndex,store]);}});gxui.GridExtension.CheckColumn=Ext.extend(gxui.GridExtension.Column,{init:function(grid){gxui.GridExtension.CheckColumn.superclass.init.apply(this,arguments);this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);this.grid.on('keypress',this.onKeyPress);},this);},checkColumn:true,defineEditor:Ext.emptyFn,createEvent:function(rowIndex){var record=this.grid.store.getAt(rowIndex);var originalValue=record.data[this.dataIndex];var value=originalValue==this.checkedValue?this.uncheckedValue:this.checkedValue;return{grid:this.grid,record:record,field:this.dataIndex,value:value,originalValue:originalValue,row:rowIndex,column:this.grid.getColumnModel().findColumnIndex(this.dataIndex)}},onMouseDown:function(e,t){if(t.className&&t.className.indexOf('x-grid3-cc-'+this.id)!=-1){var cm=this.grid.getColumnModel();var colIndex=cm.findColumnIndex(this.dataIndex);var rowIndex=this.grid.getView().findRowIndex(t);if(cm.isCellEditable(colIndex,rowIndex)){var record=this.grid.store.getAt(rowIndex);var editEvent=this.createEvent(rowIndex);record.set(this.dataIndex,editEvent.value);this.grid.fireEvent('afteredit',editEvent);}}},onKeyPress:function(e,t){var sm=this.getSelectionModel();if(!sm.getSelectedCell){return;}
var cm=this.getColumnModel();var cell=sm.getSelectedCell();var col=cm.config[cell[1]];if(col.checkColumn){e.preventDefault();var colIndex=cm.findColumnIndex(col.dataIndex);if(cm.isCellEditable(colIndex,cell[0])){var key=e.getKey();if(key==e.SPACE||key==e.ENTER){var record=this.store.getAt(cell[0]);var editEvent=col.createEvent(cell[0]);record.set(col.dataIndex,editEvent.value);this.fireEvent('afteredit',editEvent);}}}},renderer:function(value,metadata,record,rowIndex,colIndex,store){var cell=record.json[this.actualColIndex];if(gx.lang.gxBoolean(cell.visible)){var value=value.toString()==cell.checkedValue;metadata.css+=' x-grid3-check-col-td';value='<div class="x-grid3-check-col'+(value?'-on':'')+' x-grid3-cc-'+this.id+'">&#160;</div>';}
return gxui.GridExtension.CheckColumn.superclass.renderer.apply(this,[value,metadata,record,rowIndex,colIndex,store]);}});gxui.GridExtension.RadioColumn=Ext.extend(gxui.GridExtension.Column,{defineEditor:function(){return new Ext.form.Radio();},renderer:function(value,metadata,record,rowIndex,colIndex,store){var cell=record.json[this.actualColIndex];if(gx.lang.gxBoolean(cell.visible)){if(typeof value=="string"){value=value.trim();}
value=gx.fn.selectedDescription({s:value,v:cell.possibleValues});}
return gxui.GridExtension.RadioColumn.superclass.renderer.apply(this,[value,metadata,record,rowIndex,colIndex,store]);}});gxui.GridExtension.ComboColumn=Ext.extend(gxui.GridExtension.Column,{defineEditor:function(gxColumn,actualColIndex){var combo=new Ext.form.ComboBox({lazyRender:true,typeAhead:true,triggerAction:'all',selectOnFocus:true,disableKeyFilter:false,editable:true,forceSelection:true,store:[["",""]],listeners:{'beforeshow':function(){var record=this.grid.store.getAt(this.row);var cell=record.json[this.actualColIndex];combo.getStore().loadData(cell.possibleValues);},scope:this}});return combo;},renderer:function(value,metadata,record,rowIndex,colIndex,store){var cell=record.json[this.actualColIndex];if(gx.lang.gxBoolean(cell.visible)){if(typeof cell.value=="string"){value=value+"";}
value=gx.fn.selectedDescription({s:value,v:cell.possibleValues});}
return gxui.GridExtension.ComboColumn.superclass.renderer.apply(this,[value,metadata,record,rowIndex,colIndex,store]);}});gxui.GridExtension.ColumnRenderers=function(){var GE=gxui.GridExtension;var types=gx.html.controls.types;var renderers={};renderers[types.image]=GE.ImageColumn;renderers[types.checkBox]=GE.CheckColumn;renderers[types.radio]=GE.RadioColumn;renderers[types.comboBox]=GE.ComboColumn;renderers.get=function(t){if(this[t]){return this[t];}
return GE.Column;};return renderers;}();

gxui.GridExtension.DragDrop=function(gridUC,cfg){Ext.apply(this,cfg||{});this.gridUC=gridUC;this.m_grid=gridUC.getUnderlyingControl()
this.configGridDragZone();};gxui.GridExtension.DragDrop.prototype={configGridDragZone:function(){var grid=this.m_grid;var dragZone=grid.getView().dragZone;if(dragZone){dragZone.onInitDrag=this.initializeDrag.createDelegate(this);dragZone.onBeforeDrag=this.onBeforeDrag.createDelegate(this);gxui.afterShow(this.defineDropTargets,this);dragZone.primaryButtonOnly=gx.lang.gxBoolean(this.PrimaryButtonOnly);}},initializeDrag:function(e){if(this.gridUC.OnInitDrag){this.gridUC.OnInitDrag();}
var dragZone=this.m_grid.getView().dragZone;var data=dragZone.dragData;dragZone.ddel.innerHTML=this.DragDropText||dragZone.grid.getDragDropText();dragZone.proxy.update(dragZone.ddel);},onBeforeDrag:function(data,e){var row=this.gridUC.rows[data.rowIndex],dnd=gx.fx.dnd;var dragSource=this.getGxRowDragSource(row);if(dragSource){dnd.dragCtrl=data.ddel;dnd.dragCtrl.gxId=row.gxId;dnd.dragCtrl.gxGrid=this.gridUC.ownerGrid.containerName;dnd.dragCtrl.gxGridName=this.gridUC.ownerGrid.gridName;dnd.dragCtrl.gxDndClassName=dragSource.cssClass;dnd.drag(dragSource.obj,dragSource.types,dragSource.hdl);}
data.gxRow=row;data.gxColumns=this.gridUC.columns;return true;},defineDropTargets:function(){if(!this.m_dropTargetsCreated){this.m_dropTargets={};var dnd=gx.fx.dnd;if(dnd.sources.length>0){var types=dnd.sources[0].types;Ext.each(dnd.targets,function(t){if(gx.fx.matchingTypes(types,t.types)){this.m_dropTargets[t.id]=new Ext.dd.DropTarget(Ext.get(t.id),{ddGroup:this.m_grid.getView().dragZone.ddGroup,notifyOver:function(){return this.dropAllowed;}});}},this);this.m_dropTargetsCreated=true;}}},getGxRowDragSource:function(row){var trId=this.gridUC.getRowGxInternalId(row);var dragSource;Ext.each(gx.fx.dnd.sources,function(s){if(s.id==trId){dragSource=s;return false;}});return dragSource;},destroy:function(){delete this.gridUC;delete this.m_grid;if(this.m_dropTargets){for(dropTarget in this.m_dropTargets){dropTarget.unreg();}}
delete this.m_dropTargets;}};

gxui.Panel=Ext.extend(gxui.UserControl,{m_panel:null,m_toolbar:null,m_gxtb:null,initialize:function(){gxui.Panel.superclass.initialize.call(this);},SetToolbarData:function(data){this.ToolbarData=data;},GetToolbarData:function(data){return this.ToolbarData;},onRender:function(){if(gxui.CBoolean(this.UseToolbar)){this.m_gxTbar=new gxui.Toolbar({register:false});this.m_toolbar=this.m_gxTbar.CreateToolbar({id:this.getUniqueId()+"_Toolbar",data:this.ToolbarData,container:this});}
var config=this.getConfig();if(gxui.CBoolean(this.ShowAsWindow)){config.closeAction="hide";config.renderTo='MAINFORM';config.modal=gxui.CBoolean(this.Modal);config.constrainHeader=true;this.m_panel=new Ext.Window(config);}
else{if(gxui.CBoolean(this.Draggable))
this.m_panel=new gxui.ext.Portlet(config);else{this.m_panel=new Ext.Panel(config);if(gxui.CBoolean(this.Resizable)){this.m_panel.on('render',function(){var rz=new Ext.Resizable(this.m_panel.getEl(),{minWidth:this.MinWidth,maxWidth:this.MaxWidth,minHeight:this.MinHeight,maxHeight:this.MaxHeight,pinned:this.Pinned,handles:this.Handles});rz.on('resize',this.m_panel.doLayout,this.m_panel);},this)}}}
if(!gxui.CBoolean(this.ShowAsWindow)){if(this.AddToParentGxUIControl==undefined||gxui.CBoolean(this.AddToParentGxUIControl)){this.addToParentContainer(this.m_panel);}
this.m_panel.render(this.getContainerControl());}
else{if(gx.lang.gxBoolean(this.Visible)){this.m_panel.show();}}
this.m_panel.body.first().setVisible(true);this.registerCt(this.m_panel.body.first().dom,this.m_panel.add,this.m_panel.doLayout,this.m_panel);},onRefresh:function(){var panel=this.m_panel;panel.setTitle(this.Title);if(!panel.ownerCt){panel.setWidth(gxui.CBoolean(this.AutoWidth)?undefined:this.Width);panel.setHeight(gxui.CBoolean(this.AutoHeight)?undefined:this.Height);}
if(gx.lang.gxBoolean(this.Visible)&&!this.m_panel.isVisible()){panel.show();}
else{if(!gx.lang.gxBoolean(this.Visible)&&panel.isVisible()){panel.hide();}}
if(gxui.CBoolean(this.UseToolbar)){this.m_gxTbar.SetData(this.ToolbarData);this.m_gxTbar.onRefresh();}},getUnderlyingControl:function(){return this.m_panel;},getConfig:function(){var config={anchor:'100%',contentEl:this.getChildContainer("Body"),id:this.getUniqueId(),title:this.Title,width:gxui.CBoolean(this.AutoWidth)?undefined:parseInt(this.Width),height:gxui.CBoolean(this.AutoHeight)?undefined:parseInt(this.Height),autoWidth:gxui.CBoolean(this.AutoWidth),autoHeight:gxui.CBoolean(this.AutoHeight),autoScroll:this.Layout=='default'?true:false,frame:gxui.CBoolean(this.Frame),border:gxui.CBoolean(this.Border),resizable:gxui.CBoolean(this.Resizable),minWidth:this.MinWidth,minHeight:this.MinHeight,maxWidth:this.MaxWidth,maxHeight:this.MaxHeight,pinned:gxui.CBoolean(this.Pinned),resizeHandles:this.Handles,collapsible:gxui.CBoolean(this.Collapsible),collapsed:gxui.CBoolean(this.Collapsed),animateCollapse:gxui.CBoolean(this.AnimateCollapse),header:this.Title?true:false||gxui.CBoolean(this.Collapsible),tbar:this.m_toolbar,listeners:this.getListeners(),stateful:gxui.CBoolean(this.Stateful),stateId:(this.StateId!="")?this.StateId:undefined,saveState:function(){if(this.stateful===true)
this.constructor.superclass.saveState.call(this);},layout:this.Layout=='default'?undefined:this.Layout};if(this.IconCls)
config.iconCls=this.IconCls;if(this.Cls)
config.cls=this.Cls;if(!gx.lang.gxBoolean(this.Visible))
config.hidden=true;return config;},getListeners:function(){return{'collapse':function(){this.Collapsed="true";},'expand':function(){this.Collapsed="false";},'hide':function(){this.Visible=false;if(this.OnClose){this.OnClose();}},scope:this};},ChangeToolbar:function(toolbarData){this.m_toolbar=this.m_gxTbar.ChangeToolbar(toolbarData,this.getUniqueId()+"_Toolbar",this);},Collapse:function(animate){this.m_panel.collapse(animate);},Expand:function(animate){this.m_panel.expand(animate);},DisableToolbarItem:function(itemId){this.m_gxTbar.DisableItem(itemId);},EnableToolbarItem:function(itemId){this.m_gxTbar.EnableItem(itemId);},HideToolbarItem:function(itemId){this.m_gxTbar.HideItem(itemId);},ShowToolbarItem:function(itemId){this.m_gxTbar.ShowItem(itemId);}});

gxui.Treeview=Ext.extend(gxui.UserControl,{m_tree:null,initialize:function(){gxui.Treeview.superclass.initialize.call(this);this.NotifyContext="false";this.NotifyDataType='gxuiTreeNode';this.CheckedNodes=[];},SetChildren:function(data){this.Children=data;},GetChildren:function(data){return this.Children;},SetCheckedNodes:function(data){this.CheckedNodes=data;},GetCheckedNodes:function(data){if(this.m_tree){this.CheckedNodes=this.m_tree.getChecked("id");}
return this.CheckedNodes;},SetUncheckedNodes:function(data){this.UncheckedNodes=data;},GetUncheckedNodes:function(data){if(this.m_tree){var root=this.m_tree.getRootNode();if(root){var nodes=[];root.cascade(function(){if(this.attributes.checked===false){nodes.push(this.id);}});this.UncheckedNodes=nodes;}}
return this.UncheckedNodes;},SetDropData:function(data){this.DropData=data;},GetDropData:function(data){return this.DropData;},SetSelectedNodeData:function(data){this.SelectedNodeData=data;},GetSelectedNodeData:function(data){return this.SelectedNodeData;},onRender:function(){var Tree=Ext.tree;var enableCheckbox=gxui.CBoolean(this.EnableCheckbox);var ddGroup=this.DragDropGroup||undefined;this.Width=parseInt(this.Width);this.Height=parseInt(this.Height);this.m_tree=new Tree.TreePanel({id:this.getUniqueId(),renderTo:this.getContainerControl(),width:(this.Width!=100)?this.Width:undefined,height:(this.Height!=100)?this.Height:undefined,title:this.Title,frame:gxui.CBoolean(this.Frame),border:gxui.CBoolean(this.Border),cls:this.Cls,animate:gxui.CBoolean(this.Animate),rootVisible:gxui.CBoolean(this.RootVisible),lines:gxui.CBoolean(this.ShowLines),loader:new Tree.TreeLoader({dataUrl:(gxui.CBoolean(this.LazyLoading))?this.LoaderURL:undefined,preloadChildren:!gxui.CBoolean(this.LazyLoading),createNode:function(attr){if(!enableCheckbox){delete attr.checked;}
return Ext.tree.TreeLoader.prototype.createNode.call(this,attr);},listeners:{'beforeload':function(){this.loading=true;},'load':function(){this.loading=false;},scope:this}}),enableDD:gxui.CBoolean(this.EnableDragDrop),ddAppendOnly:gxui.CBoolean(this.AppendOnly),dragConfig:{primaryButtonOnly:false,ddGroup:ddGroup},dropConfig:{ddGroup:ddGroup},autoScroll:gxui.CBoolean(this.AutoScroll),containerScroll:gxui.CBoolean(this.Scroll),stateful:gxui.CBoolean(this.Stateful),stateid:(this.StateId&&this.StateId!="")?this.StateId:this.getUniqueId(),stateEvents:gxui.CBoolean(this.Stateful)?['collapsenode','expandnode']:undefined,getState:gxui.CBoolean(this.Stateful)?gxui.Treeview.getState:undefined,applyState:gxui.CBoolean(this.Stateful)?gxui.Treeview.applyState(gxui.CBoolean(this.LazyLoading)):undefined,root:new Tree.AsyncTreeNode({id:(this.RootId?this.RootId:'ROOT'),text:this.RootText,icon:(this.RootIcon?this.RootIcon:undefined),cls:(this.RootCls?this.RootCls:undefined),iconCls:(this.RootIconCls?this.RootIconCls:undefined),draggable:false,children:!gxui.CBoolean(this.LazyLoading)?gxui.clone(this.Children.length&&this.Children.length>0?this.Children:[this.Children]):undefined}),selModel:gxui.CBoolean(this.Multiselection)?new Ext.tree.MultiSelectionModel():undefined});this.m_tree.addListener(this.getListeners());if(gxui.CBoolean(this.Multiselection)){this.m_tree.getSelectionModel().addListener('selectionchange',function(selModel,nodes){this.SelectedNodes=[];Ext.each(nodes,function(node){this.SelectedNodes.push(node.id);},this);},this);}
if(gxui.CBoolean(this.Editable)){this.m_treeEditor=new Ext.tree.TreeEditor(this.m_tree,{},{allowBlank:false,selectOnFocus:true,cancelOnEsc:true,completeOnEnter:true,ignoreNoChange:true,listeners:{'complete':function(editor,value){this.NodeEditText=value;if(this.NodeEdit){this.NodeEdit();}},scope:this},triggerEdit:function(node,defer){this.completeEdit();if(node.attributes.editable!==false){this.editNode=node;if(this.tree.autoScroll&&!Ext.isIE){node.ui.getEl().scrollIntoView(this.tree.body);}
this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[node.ui.textNode,node.text]);return false;}}});}
if(gxui.CBoolean(this.Sort))
new Tree.TreeSorter(this.m_tree,{folderSort:true});if(gxui.CBoolean(this.AddToParentGxUIControl)){this.addToParentContainer(this.m_tree);}
this.m_tree.render();if(gxui.CBoolean(this.ExpandRoot))
this.m_tree.getRootNode().expand(gxui.CBoolean(this.ExpandAll),gxui.CBoolean(this.Animate));},onRefresh:function(){var selNode=this.m_tree.getSelectionModel().getSelectedNode();if(selNode){this.setSelectedNode(selNode);}},getUnderlyingControl:function(){return this.m_tree;},loadTreeNodes:function(){var children=gxui.clone(this.Children.length&&this.Children.length>0?this.Children:[this.Children]);this.m_tree.root.attributes.children=children;},getRowDropData:function(dropEvent){if(dropEvent.data&&dropEvent.data.gxRow){var gxRow=dropEvent.data.gxRow;var gxCols=dropEvent.data.gxColumns;var dropData={};Ext.each(gxCols,function(col,i){var colName=col.gxAttName||(col.gxAttId.charAt(0)=="&"?col.gxAttId.substring(1):col.gxAttId);dropData[colName]=gxRow.values[i];},this);return dropData;}
return null;},getNodeById:function(node){return this.m_tree.getNodeById(node);},getListeners:function(){return{'click':function(node,e){this.endEdit();this.setSelectedNode(node);if(this.NotifyContext=="true"){var types=new Array();types[0]=this.NotifyDataType;this.notifyContext(types,{id:node.id,text:node.text,leaf:node.leaf,icon:node.attributes.icon});}
if(this.Click&&(!node.hasChildNodes()||!gxui.CBoolean(this.DisableBranchEvents))){this.Click();}},'dblclick':function(node,e){this.endEdit();this.setSelectedNode(node);if(this.DoubleClick&&(!node.hasChildNodes()||!gxui.CBoolean(this.DisableBranchEvents))){this.DoubleClick();}},'nodedragover':function(dragOverEvent){if(this.NodeOver){this.DropTarget=dragOverEvent.target.id;this.DropPoint=dragOverEvent.point;if(dragOverEvent.source.grid){this.DropData=this.getRowDropData(dragOverEvent);}
else{this.DropNode=dragOverEvent.dropNode.id;}
this.DropAllowed=true;this.NodeOver();return this.DropAllowed;}
return true;},'beforenodedrop':function(dropEvent){dropEvent.rawEvent.preventDefault();if(dropEvent.source.grid){this.DropTarget=dropEvent.target.id;this.DropPoint=dropEvent.point;this.DropData=this.getRowDropData(dropEvent);dropEvent.target.ui.endDrop();if(this.RowDrop){this.RowDrop();}}
Ext.getBody().on('contextmenu',Ext.emptyFn,this,{single:true,stopEvent:true,preventDefault:true});},'nodedrop':function(dropEvent){this.DropTarget=dropEvent.target.id;this.DropPoint=dropEvent.point;if(dropEvent.dropNode){this.DropNode=dropEvent.dropNode.id;if(this.NodeDrop){this.NodeDrop();}}},'checkchange':function(node){if(this.CheckChange){this.setSelectedNode(node);node.select();this.CheckChange();}},'contextmenu':function(node){this.endEdit();if(this.ContextMenu){this.setSelectedNode(node);node.select();this.ContextMenu();}},scope:this};},setSelectedNode:function(node){this.SelectedNode=node.id;this.SelectedText=node.text;this.SelectedIcon=node.attributes.icon;this.SelectedNodeData=node.attributes.data;this.SelectedNodeChecked=node.attributes.checked||false;},endEdit:function(){if(this.m_treeEditor){this.m_treeEditor.completeEdit();}},doAfterLoad:function(fn,scope){if(this.loading){this.m_tree.getLoader().on('load',fn,scope,{single:true});}
else{fn.call(scope);}},SelectNode:function(nodeId){this.doAfterLoad(function(){var node=this.getNodeById(nodeId);if(node){this.setSelectedNode(node)
node.select();this.m_tree.expandPath(node.getPath());}},this);},ExpandNode:function(nodeId){this.doAfterLoad(function(){var node=this.getNodeById(nodeId);if(node){node.expand();}},this);},ExpandAllNodes:function(){this.doAfterLoad(function(){this.m_tree.expandAll();},this);},CollapseNode:function(nodeId){this.doAfterLoad(function(){var node=this.getNodeById(nodeId);if(node){node.collapse();}},this);},CollapseAllNodes:function(){this.doAfterLoad(function(){this.m_tree.collapseAll();},this);},Reload:function(node,expand){var n=node?((typeof node=='object')?node:this.getNodeById(node)):this.m_tree.getRootNode();if(n){var loadCallback=function(){if(expand||expand===undefined){n.expand();}};if(gxui.CBoolean(this.LazyLoading)){this.m_tree.getLoader().dataUrl=this.LoaderURL;this.m_tree.getLoader().load(n,loadCallback);}
else{this.loadTreeNodes();this.m_tree.getLoader().load(n,function(){this.fireEvent("load",this);loadCallback();}.createDelegate(n));}
if(this.SelectedNode!=undefined){this.SelectNode(this.SelectedNode);}}},Refresh:function(){this.m_tree.setHeight((this.Width!=100)?this.Width:undefined);this.m_tree.setWidth((this.Height!=100)?this.Height:undefined);this.m_tree.setTitle(this.Title);this.Reload(this.m_tree.getRootNode(),gxui.CBoolean(this.ExpandRoot));},Show:function(){this.m_tree.setVisible(true);},Hide:function(){this.m_tree.setVisible(false);},GetNodeParentId:function(nodeId){var node=this.getNodeById(nodeId);if(node&&node.parentNode){return node.parentNode.id;}
return"";},SetNodeData:function(nodeId,nodeData){var node=this.getNodeById(nodeId);if(node){node.attributes.data=nodeData;}},StartEdit:function(nodeId,value){var node=this.getNodeById(nodeId);if(node){this.m_treeEditor.editNode=node;this.m_treeEditor.startEdit(value||node.ui.textNode);}},CancelEdit:function(){this.m_treeEditor.cancelEdit();}});gxui.Treeview.getState=function(){var nodes=[];this.getRootNode().eachChild(function(child){var storeTreeState=function(node,expandedNodes){if(node.isExpanded()&&node.childNodes.length>0){expandedNodes.push(node.getPath());node.eachChild(function(child){storeTreeState(child,expandedNodes);});}};storeTreeState(child,nodes);});return{expandedNodes:nodes}};gxui.Treeview.applyState=function(lazyLoading){return function(state){var that=this;var subject=lazyLoading?this.getLoader():this.root;subject.on('load',function(){var cookie=Ext.state.Manager.get(that.stateid);var nodes=cookie.expandedNodes;for(var i=0;i<nodes.length;i++){if(typeof nodes[i]!='undefined'){that.expandPath(nodes[i]);}}});}};

gxui.Splash=Ext.extend(gxui.UserControl,{m_cookieId:null,initialize:function(){gxui.Splash.superclass.initialize.call(this);this.Width;this.Height;this.Duration;this.Image;this.Message;this.Cls;},onRender:function(){if(gxui.getCookie(this.m_cookieId)==""){try{this.mask=Ext.get(document.body).mask(this.Message+" ",this.Cls);window.setTimeout("Ext.get(document.body).unmask();",this.Duration*1000);}
catch(err){};gxui.setCookie(this.m_cookieId,'1',0);}}});

gxui.Message=Ext.extend(gxui.UserControl,function(){var msgCt;return{initialize:function(){gxui.Message.superclass.initialize.call(this);this.Width;this.Height;this.Duration;this.Message;this.Title;this.Icon;this.Cls;this.Show;},onRender:function(){if(gxui.CBoolean(this.Show)){this.ShowMessage(this.Type,this.Title,this.Message);}},onRefresh:function(){if(gxui.CBoolean(this.Show)){this.ShowMessage(this.Type,this.Title,this.Message);}},ShowMessage:function(title,message,type){if(!type){type=this.Type;}
if(type=="alert"){Ext.MessageBox.show({title:title,msg:message,buttons:Ext.MessageBox.OK,icon:this.Icon=="info"?Ext.MessageBox.INFO:(this.Icon=="question"?Ext.MessageBox.QUESTION:(this.Icon=="warning"?Ext.MessageBox.WARNING:Ext.MessageBox.ERROR))});}
else{var titleMsgs=(title||"").split("|");Ext.each((message||"").split("|"),function(msg,i){if(!msgCt){msgCt=Ext.DomHelper.insertFirst(document.body,{id:'msg-div'},true);if(this.Cls!="")
msgCt.addClass(this.Cls);}
msgCt.alignTo(document,this.Position+'-'+this.Position);var m=Ext.DomHelper.append(msgCt,{html:this.createBox(titleMsgs[i],msg)},true);var timeoutId;var hideMessage=function(){timeoutId=setTimeout(function(){m.ghost(this.Position,{remove:true});}.createDelegate(this),this.Duration*1000);};m.slideIn(this.Position,{callback:hideMessage,scope:this});m.on('mouseover',function(e){if(timeoutId){clearTimeout(timeoutId);timeoutId=null;}},this);m.on('mouseout',function(e){var box=m.getBox();var x=e.getPageX();var y=e.getPageY();if(x&&y){if(x>box.x&&x<box.x+box.width&&y>box.y&&y<box.y+box.height){return}}
hideMessage.createDelegate(this)();},this)},this);}},createBox:function(t,s){return['<div class="msg">','<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>','<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><h3>',t,'</h3>',s,'</div></div></div>','<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>','</div>'].join('');}};}());

if('function'!==Ext.type(Ext.ux.clone)){Ext.ux.clone=function(o){if('object'!==typeof o){return o;}
var c='function'===typeof o.pop?[]:{};var p,v;for(p in o){if(o.hasOwnProperty(p)){v=o[p];if('object'===typeof v){c[p]=Ext.ux.clone(v);}
else{c[p]=v;}}}
return c;};}
Ext.ux.HttpProvider=function(config){this.addEvents('readsuccess','readfailure','savesuccess','savefailure');Ext.ux.HttpProvider.superclass.constructor.call(this);Ext.apply(this,config,{delay:750,dirty:false,started:false,autoStart:true,autoRead:true,user:'user',id:1,session:'session',logFailure:false,logSuccess:false,queue:[],url:'.',readUrl:undefined,saveUrl:undefined,method:'post',saveBaseParams:{},readBaseParams:{},paramNames:{id:'id',name:'name',value:'value',user:'user',session:'session',data:'data'}});if(this.autoRead){this.readState();}
this.dt=new Ext.util.DelayedTask(this.submitState,this);if(this.autoStart){this.start();}};Ext.extend(Ext.ux.HttpProvider,Ext.state.Provider,{saveSuccessText:'Save Success',saveFailureText:'Save Failure',readSuccessText:'Read Success',readFailureText:'Read Failure',dataErrorText:'Data Error',initState:function(state){if(state instanceof Array){Ext.each(state,function(item){this.state[item.name]=this.decodeValue(item.value);},this);}
else{this.state=state?state:{};}},set:function(name,value){if(!name){return;}
this.queueChange(name,value);},start:function(){this.dt.delay(this.delay);this.started=true;},stop:function(){this.dt.cancel();this.started=false;},queueChange:function(name,value){var changed=undefined===this.state[name]||this.state[name]!==value;var o={};var i;var found=false;if(changed){o[this.paramNames.name]=name;o[this.paramNames.value]=this.encodeValue(value);for(i=0;i<this.queue.length;i++){if(this.queue[i]&&this.queue[i].name===o.name){this.queue[i]=o;found=true;}}
if(false===found){this.queue.push(o);}
this.dirty=true;}
return changed;},submitState:function(){if(!this.dirty){this.dt.delay(this.delay);return;}
this.dt.cancel();var o={url:this.saveUrl||this.url,method:this.method,scope:this,success:this.onSaveSuccess,failure:this.onSaveFailure,queue:Ext.ux.clone(this.queue),params:{}};var params=Ext.apply({},this.saveBaseParams);params[this.paramNames.id]=this.id;params[this.paramNames.user]=this.user;params[this.paramNames.session]=this.session;params[this.paramNames.data]=Ext.encode(o.queue);Ext.apply(o.params,params);this.dirty=false;Ext.Ajax.request(o);},clear:function(name){this.set(name,undefined);},onSaveSuccess:function(response,options){if(this.started){this.start();}
var o={};try{o=Ext.decode(response.responseText);}
catch(e){if(true===this.logFailure){this.log(this.saveFailureText,e,response);}
this.dirty=true;return;}
if(true!==o.success){if(true===this.logFailure){this.log(this.saveFailureText,o,response);}
this.dirty=true;}
else{Ext.each(options.queue,function(item){var name=item[this.paramNames.name];var value=this.decodeValue(item[this.paramNames.value]);if(undefined===value||null===value){Ext.ux.HttpProvider.superclass.clear.call(this,name);}
else{Ext.ux.HttpProvider.superclass.set.call(this,name,value);}},this);if(false===this.dirty){this.queue=[];}
else{var i,j,found;for(i=0;i<options.queue.length;i++){found=false;for(j=0;j<this.queue.length;j++){if(options.queue[i].name===this.queue[j].name){found=true;break;}}
if(true===found&&this.encodeValue(options.queue[i].value)===this.encodeValue(this.queue[j].value)){delete(this.queue[j]);}}}
if(true===this.logSuccess){this.log(this.saveSuccessText,o,response);}
this.fireEvent('savesuccess',this);}},onSaveFailure:function(response,options){if(true===this.logFailure){this.log(this.saveFailureText,response);}
if(this.started){this.start();}
this.dirty=true;this.fireEvent('savefailure',this);},onReadFailure:function(response,options){if(true===this.logFailure){this.log(this.readFailureText,response);}
this.fireEvent('readfailure',this);},onReadSuccess:function(response,options){var o={},data;try{o=Ext.decode(response.responseText);}
catch(e){if(true===this.logFailure){this.log(this.readFailureText,e,response);}
return;}
if(true!==o.success){if(true===this.logFailure){this.log(this.readFailureText,o,response);}}
else{try{data=Ext.decode(o[this.paramNames.data]);}
catch(ex){if(true===this.logFailure){this.log(this.dataErrorText,o,response);}
return;}
if(!(data instanceof Array)&&true===this.logFailure){this.log(this.dataErrorText,data,response);return;}
Ext.each(data,function(item){this.state[item[this.paramNames.name]]=this.decodeValue(item[this.paramNames.value]);},this);this.queue=[];this.dirty=false;if(true===this.logSuccess){this.log(this.readSuccessText,data,response);}
this.fireEvent('readsuccess',this);}},readState:function(){var o={url:this.readUrl||this.url,method:this.method,scope:this,success:this.onReadSuccess,failure:this.onReadFailure,params:{}};var params=Ext.apply({},this.readBaseParams);params[this.paramNames.id]=this.id;params[this.paramNames.user]=this.user;params[this.paramNames.session]=this.session;Ext.apply(o.params,params);Ext.Ajax.request(o);},log:function(){if(console){console.log.apply(console,arguments);}}});

gxui.Settings=Ext.extend(gxui.UserControl,{initialize:function(){gxui.Settings.superclass.initialize.call(this);this.Enable;this.Provider;this.SaveURL;this.State;},SetState:function(data){this.State=data;},GetState:function(data){return this.State;},onRender:function(){var provider=null;if(gxui.CBoolean(this.Enable)){if(this.Provider==gxui.Settings.StateProvider.HTTP){if(this.SaveURL!=""){provider=new Ext.ux.HttpProvider({saveUrl:this.SaveURL,autoRead:false});}}
else{if(this.Provider==gxui.Settings.StateProvider.Cookie){provider=new Ext.state.CookieProvider({expires:new Date(new Date().getTime()+(1000*60*60*24*365))})}}}
else{provider=new Ext.state.Provider();}
if(provider){Ext.state.Manager.setProvider(provider);if(this.Provider==gxui.Settings.StateProvider.HTTP){Ext.state.Manager.getProvider().initState(this.State);}
this.State=[];}},onDestroy:Ext.emptyFn,LOCALE_SCRIPT_ID:"ext-lang",SetLanguage:function(lang,charset){var s=Ext.getDom(this.LOCALE_SCRIPT_ID);var src=gx.util.resourceUrl(gx.basePath+gx.staticDirectory+"Shared/ext/build/locale/ext-lang-"+lang+"-min.js",true);if(!s){s=document.createElement("script");s.id=this.LOCALE_SCRIPT_ID;s.type='text/javascript';document.getElementsByTagName("head")[0].appendChild(s);}
s.src=src;if(charset){s.charset=charset;}},RemoveLanguage:function(){var s=Ext.getDom(this.LOCALE_SCRIPT_ID);if(s){document.getElementsByTagName("head")[0].removeChild(s);}}});gxui.Settings.StateProvider={Cookie:"Cookie",HTTP:"HTTP"};

gxui.Viewport=Ext.extend(gxui.UserControl,{initialize:function(){gxui.Viewport.superclass.initialize.call(this);},onRender:function(){this.m_panel=new Ext.ux.NestedViewport({id:this.getUniqueId(),contentEl:this.getChildContainer("Body"),layout:'fit',renderTo:'MAINFORM'});this.registerCt(this.getChildContainer("Body"),this.m_panel.add,this.m_panel.doLayout,this.m_panel);},getUnderlyingControl:function(){return this.m_panel;}});

gxui.Menu=Ext.extend(gxui.UserControl,{initialize:function(){gxui.Menu.superclass.initialize.call(this);},SetMenu:function(data){this.Menu=data;},GetMenu:function(data){return this.Menu;},onRender:function(){this.m_menu=this.createMenu(this.Menu);},onRefresh:function(){},getUnderlyingControl:function(){return this.m_menu;},createMenu:function(menu){if(menu){return new Ext.menu.Menu({items:this.getContextMenuItems(menu)});}},getContextMenuItems:function(contextMenu){var cmItems=[];Ext.each(contextMenu,function(item){var config;switch(item.Type){case'Text':config=item.Text;break;case'Separator':config='-';break;case'Menu':config=this.getBasicItemConfig(item);config.menu=this.getContextMenuItems(item.Items);delete config.handler;break;default:config=this.getBasicItemConfig(item);break;}
cmItems.push(config);},this);return cmItems;},getBasicItemConfig:function(item){return{gxid:item.Id,text:item.Text,tooltip:item.Tooltip,icon:item.Icon,iconCls:item.IconCls,cls:(item.Cls!="")?item.Cls:(item.Text!="")?"x-btn-text-icon":"x-btn-icon",disabled:item.Disabled,hidden:item.Hidden,handler:this.itemClickHandler,scope:this};},itemClickHandler:function(btn){if(this.ItemClick){this.ItemClickedId=btn.gxid;this.ItemClick();}},ShowMenu:function(m,x,y){var menu=this.m_menu;if(m){menu=this.createMenu(m);}
var xy=(x&&y)?[x,y]:Ext.EventObject.getXY();if(menu){menu.showAt(xy);}},ShowMenuXY:function(x,y){this.ShowMenu(this.m_menu,x,y);}});gxui.Menu.ItemType={Button:"Button",Text:"Text",Separator:"Separator",Menu:"Menu"};

gxui.EventObject=Ext.extend(gxui.UserControl,{initialize:function(){gxui.EventObject.superclass.initialize.call(this);},onRender:function(){gx.fx.obs.addObserver('gx.onbeforeevent',this,function(){var e=Ext.EventObject;this.Key=e.getKey();var xy=e.getXY();this.X=xy[0];this.Y=xy[1];this.MouseButton=e.button;this.AltKey=e.altKey;this.CtrlKey=e.ctrlKey;this.ShiftKey=e.shiftKey;});},onRefresh:function(){},getUnderlyingControl:function(){return null;},PrevenDefault:function(){Ext.EventObject.preventDefault();},StopEvent:function(){Ext.EventObject.stopEvent();},StopPropagation:function(){Ext.EventObject.stopPropagation();}});
