
if("undefined"===typeof brodos){brodos={}}
brodos.tbrowser={};
Ext.ns('Ext.ux.grid');Ext.ux.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id();}
this.renderer=this.renderer.createDelegate(this);};Ext.ux.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);},this);},onMouseDown:function(e,t){if(Ext.fly(t).hasClass(this.createId())){e.stopEvent();var index=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(index);var col=this.grid.getView().findCellIndex(t);var field=this.grid.colModel.getDataIndex(col);var obj={grid:this.grid,record:record,field:field,value:record.data[field],row:index,column:col,cancel:false};this.grid.fireEvent('beforeedit',obj);record.set(this.dataIndex,!record.data[this.dataIndex]);delete obj.cancel;this.grid.fireEvent('afteredit',obj);}},renderer:function(v,p,record){p.css+=' x-grid3-check-col-td';return String.format('<div class="x-grid3-check-col{0} {1}">&#160;</div>',v?'-on':'',this.createId());},createId:function(){return'x-grid3-cc-'+this.id;}};Ext.preg('checkcolumn',Ext.ux.grid.CheckColumn);Ext.grid.CheckColumn=Ext.ux.grid.CheckColumn;Ext.namespace('Ext.ux.grid.filter');Ext.ux.grid.filter.Filter=Ext.extend(Ext.util.Observable,{active:false,dataIndex:null,menu:null,updateBuffer:500,constructor:function(config){Ext.apply(this,config);this.addEvents('activate','deactivate','serialize','update');Ext.ux.grid.filter.Filter.superclass.constructor.call(this);this.menu=new Ext.menu.Menu();this.init(config);if(config&&config.value){this.setValue(config.value);this.setActive(config.active!==false,true);delete config.value;}},destroy:function(){if(this.menu){this.menu.destroy();}
this.purgeListeners();},init:Ext.emptyFn,getValue:Ext.emptyFn,setValue:Ext.emptyFn,isActivatable:function(){return true;},getSerialArgs:Ext.emptyFn,validateRecord:function(){return true;},serialize:function(){var args=this.getSerialArgs();this.fireEvent('serialize',args,this);return args;},fireUpdate:function(){if(this.active){this.fireEvent('update',this);}
this.setActive(this.isActivatable());},setActive:function(active,suppressEvent){if(this.active!=active){this.active=active;if(suppressEvent!==true){this.fireEvent(active?'activate':'deactivate',this);}}}});Ext.ux.grid.filter.BooleanFilter=Ext.extend(Ext.ux.grid.filter.Filter,{defaultValue:false,yesText:'Yes',noText:'No',init:function(config){var gId=Ext.id();this.options=[new Ext.menu.CheckItem({text:this.yesText,group:gId,checked:this.defaultValue===true}),new Ext.menu.CheckItem({text:this.noText,group:gId,checked:this.defaultValue===false})];this.menu.add(this.options[0],this.options[1]);for(var i=0;i<this.options.length;i++){this.options[i].on('click',this.fireUpdate,this);this.options[i].on('checkchange',this.fireUpdate,this);}},getValue:function(){return this.options[0].checked;},setValue:function(value){this.options[value?0:1].setChecked(true);},getSerialArgs:function(){var args={type:'boolean',value:this.getValue()};return args;},validateRecord:function(record){return record.get(this.dataIndex)==this.getValue();}});Ext.ux.grid.filter.DateFilter=Ext.extend(Ext.ux.grid.filter.Filter,{afterText:'After',beforeText:'Before',compareMap:{before:'lt',after:'gt',on:'eq'},dateFormat:'d.m.Y',menuItems:['before','after','-','on'],menuItemCfgs:{selectOnFocus:true,width:125},onText:'On',pickerOpts:{},init:function(config){var menuCfg,i,len,item,cfg,Cls;menuCfg=Ext.apply(this.pickerOpts,{minDate:this.minDate,maxDate:this.maxDate,format:this.dateFormat,listeners:{scope:this,select:this.onMenuSelect}});this.fields={};for(i=0,len=this.menuItems.length;i<len;i++){item=this.menuItems[i];if(item!=='-'){cfg={itemId:'range-'+item,text:this[item+'Text'],menu:new Ext.menu.DateMenu(Ext.apply(menuCfg,{itemId:item})),listeners:{scope:this,checkchange:this.onCheckChange}};Cls=Ext.menu.CheckItem;item=this.fields[item]=new Cls(cfg);}
this.menu.add(item);}},onCheckChange:function(){this.setActive(this.isActivatable());this.fireEvent('update',this);},onInputKeyUp:function(field,e){var k=e.getKey();if(k==e.RETURN&&field.isValid()){e.stopEvent();this.menu.hide(true);return;}},onMenuSelect:function(menuItem,value,picker){var fields=this.fields,field=this.fields[menuItem.itemId];field.setChecked(true);if(field==fields.on){fields.before.setChecked(false,true);fields.after.setChecked(false,true);}else{fields.on.setChecked(false,true);if(field==fields.after&&fields.before.menu.picker.value<value){fields.before.setChecked(false,true);}else if(field==fields.before&&fields.after.menu.picker.value>value){fields.after.setChecked(false,true);}}
this.fireEvent('update',this);},getValue:function(){var key,result={};for(key in this.fields){if(this.fields[key].checked){result[key]=this.fields[key].menu.picker.getValue();}}
return result;},setValue:function(value,preserve){var key;for(key in this.fields){if(value[key]){this.fields[key].menu.picker.setValue(value[key]);this.fields[key].setChecked(true);}else if(!preserve){this.fields[key].setChecked(false);}}
this.fireEvent('update',this);},isActivatable:function(){var key;for(key in this.fields){if(this.fields[key].checked){return true;}}
return false;},getSerialArgs:function(){var args=[];for(var key in this.fields){if(this.fields[key].checked){args.push({type:'date',comparison:this.compareMap[key],value:this.getFieldValue(key).format(this.dateFormat)});}}
return args;},getFieldValue:function(item){return this.fields[item].menu.picker.getValue();},getPicker:function(item){return this.fields[item].menu.picker;},validateRecord:function(record){var key,pickerValue,val=record.get(this.dataIndex);if(!Ext.isDate(val)){return false;}
val=val.clearTime(true).getTime();for(key in this.fields){if(this.fields[key].checked){pickerValue=this.getFieldValue(key).clearTime(true).getTime();if(key=='before'&&pickerValue<=val){return false;}
if(key=='after'&&pickerValue>=val){return false;}
if(key=='on'&&pickerValue!=val){return false;}}}
return true;}});Ext.ux.grid.filter.ListFilter=Ext.extend(Ext.ux.grid.filter.Filter,{phpMode:false,init:function(config){this.dt=new Ext.util.DelayedTask(this.fireUpdate,this);if(this.menu){this.menu.destroy();}
this.menu=new Ext.ux.menu.ListMenu(config);this.menu.on('checkchange',this.onCheckChange,this);},getValue:function(){return this.menu.getSelected();},setValue:function(value){this.menu.setSelected(value);this.fireEvent('update',this);},isActivatable:function(){return this.getValue().length>0;},getSerialArgs:function(){var args={type:'list',value:this.phpMode?this.getValue().join(','):this.getValue()};return args;},onCheckChange:function(){this.dt.delay(this.updateBuffer);},validateRecord:function(record){return this.getValue().indexOf(record.get(this.dataIndex))>-1;}});Ext.ux.grid.filter.NumericFilter=Ext.extend(Ext.ux.grid.filter.Filter,{fieldCls:Ext.form.NumberField,iconCls:{gt:'ux-rangemenu-gt',lt:'ux-rangemenu-lt',eq:'ux-rangemenu-eq'},menuItemCfgs:{emptyText:'Enter Filter Text...',selectOnFocus:true,width:125},menuItems:['lt','gt','-','eq'],init:function(config){if(this.menu){this.menu.destroy();}
this.menu=new Ext.ux.menu.RangeMenu(Ext.apply(config,{fieldCfg:this.fieldCfg||{},fieldCls:this.fieldCls,fields:this.fields||{},iconCls:this.iconCls,menuItemCfgs:this.menuItemCfgs,menuItems:this.menuItems,updateBuffer:this.updateBuffer}));this.menu.on('update',this.fireUpdate,this);},getValue:function(){return this.menu.getValue();},setValue:function(value){this.menu.setValue(value);},isActivatable:function(){var values=this.getValue();for(key in values){if(values[key]!==undefined){return true;}}
return false;},getSerialArgs:function(){var key,args=[],values=this.menu.getValue();for(key in values){args.push({type:'numeric',comparison:key,value:values[key]});}
return args;},validateRecord:function(record){var val=record.get(this.dataIndex),values=this.getValue();if(values.eq!==undefined&&val!=values.eq){return false;}
if(values.lt!==undefined&&val>=values.lt){return false;}
if(values.gt!==undefined&&val<=values.gt){return false;}
return true;}});Ext.ux.grid.filter.StringFilter=Ext.extend(Ext.ux.grid.filter.Filter,{iconCls:'ux-gridfilter-text-icon',emptyText:'Enter Filter Text...',selectOnFocus:true,width:125,init:function(config){Ext.applyIf(config,{enableKeyEvents:true,iconCls:this.iconCls,listeners:{scope:this,keyup:this.onInputKeyUp}});this.inputItem=new Ext.form.TextField(config);this.menu.add(this.inputItem);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);},getValue:function(){return this.inputItem.getValue();},setValue:function(value){this.inputItem.setValue(value);this.fireEvent('update',this);},isActivatable:function(){return this.inputItem.getValue().length>0;},getSerialArgs:function(){return{type:'string',value:this.getValue()};},validateRecord:function(record){var val=record.get(this.dataIndex);if(typeof val!='string'){return(this.getValue().length===0);}
return val.toLowerCase().indexOf(this.getValue().toLowerCase())>-1;},onInputKeyUp:function(field,e){var k=e.getKey();if(k==e.RETURN&&field.isValid()){e.stopEvent();this.menu.hide(true);return;}
this.updateTask.delay(this.updateBuffer);}});Ext.namespace('Ext.ux.grid');Ext.ux.grid.GridFilters=Ext.extend(Ext.util.Observable,{autoReload:true,filterCls:'ux-filtered-column',local:false,menuFilterText:'Filters',paramPrefix:'filter',showMenu:true,stateId:undefined,updateBuffer:500,constructor:function(config){config=config||{};this.deferredUpdate=new Ext.util.DelayedTask(this.reload,this);this.filters=new Ext.util.MixedCollection();this.filters.getKey=function(o){return o?o.dataIndex:null;};this.addFilters(config.filters);delete config.filters;Ext.apply(this,config);},init:function(grid){if(grid instanceof Ext.grid.GridPanel){this.grid=grid;this.bindStore(this.grid.getStore(),true);if(this.filters.getCount()==0){this.addFilters(this.grid.getColumnModel());}
this.grid.filters=this;this.grid.addEvents({'filterupdate':true});grid.on({scope:this,beforestaterestore:this.applyState,beforestatesave:this.saveState,beforedestroy:this.destroy,reconfigure:this.onReconfigure});if(grid.rendered){this.onRender();}else{grid.on({scope:this,single:true,render:this.onRender});}}else if(grid instanceof Ext.PagingToolbar){this.toolbar=grid;}},applyState:function(grid,state){var key,filter;this.applyingState=true;this.clearFilters();if(state.filters){for(key in state.filters){filter=this.filters.get(key);if(filter){filter.setValue(state.filters[key]);filter.setActive(true);}}}
this.deferredUpdate.cancel();if(this.local){this.reload();}
delete this.applyingState;},saveState:function(grid,state){var filters={};this.filters.each(function(filter){if(filter.active){filters[filter.dataIndex]=filter.getValue();}});return(state.filters=filters);},onRender:function(){this.grid.getView().on('refresh',this.onRefresh,this);this.createMenu();},destroy:function(){this.removeAll();this.purgeListeners();if(this.filterMenu){Ext.menu.MenuMgr.unregister(this.filterMenu);this.filterMenu.destroy();this.filterMenu=this.menu.menu=null;}},removeAll:function(){if(this.filters){Ext.destroy.apply(Ext,this.filters.items);this.filters.clear();}},bindStore:function(store,initial){if(!initial&&this.store){if(this.local){store.un('load',this.onLoad,this);}else{store.un('beforeload',this.onBeforeLoad,this);}}
if(store){if(this.local){store.on('load',this.onLoad,this);}else{store.on('beforeload',this.onBeforeLoad,this);}}
this.store=store;},onReconfigure:function(){this.bindStore(this.grid.getStore());this.store.clearFilter();this.removeAll();this.addFilters(this.grid.getColumnModel());this.updateColumnHeadings();},createMenu:function(){var view=this.grid.getView(),hmenu=view.hmenu;if(this.showMenu&&hmenu){this.sep=hmenu.addSeparator();this.filterMenu=new Ext.menu.Menu({id:this.grid.id+'-filters-menu'});this.menu=hmenu.add({checked:false,itemId:'filters',text:this.menuFilterText,menu:this.filterMenu});this.menu.on({scope:this,checkchange:this.onCheckChange,beforecheckchange:this.onBeforeCheck});hmenu.on('beforeshow',this.onMenu,this);}
this.updateColumnHeadings();},getMenuFilter:function(){var view=this.grid.getView();if(!view||view.hdCtxIndex===undefined){return null;}
return this.filters.get(view.cm.config[view.hdCtxIndex].dataIndex);},onMenu:function(filterMenu){var filter=this.getMenuFilter();if(filter){this.menu.menu=filter.menu;this.menu.setChecked(filter.active,false);this.menu.setDisabled(filter.disabled===true);}
this.menu.setVisible(filter!==undefined);this.sep.setVisible(filter!==undefined);},onCheckChange:function(item,value){this.getMenuFilter().setActive(value);},onBeforeCheck:function(check,value){return!value||this.getMenuFilter().isActivatable();},onStateChange:function(event,filter){if(event==='serialize'){return;}
if(filter==this.getMenuFilter()){this.menu.setChecked(filter.active,false);}
if((this.autoReload||this.local)&&!this.applyingState){this.deferredUpdate.delay(this.updateBuffer);}
this.updateColumnHeadings();if(!this.applyingState){this.grid.saveState();}
this.grid.fireEvent('filterupdate',this,filter);},onBeforeLoad:function(store,options){options.params=options.params||{};this.cleanParams(options.params);var params=this.buildQuery(this.getFilterData());Ext.apply(options.params,params);},onLoad:function(store,options){store.filterBy(this.getRecordFilter());},onRefresh:function(){this.updateColumnHeadings();},updateColumnHeadings:function(){var view=this.grid.getView(),i,len,filter;if(view.mainHd){for(i=0,len=view.cm.config.length;i<len;i++){filter=this.getFilter(view.cm.config[i].dataIndex);Ext.fly(view.getHeaderCell(i))[filter&&filter.active?'addClass':'removeClass'](this.filterCls);}}},reload:function(){if(this.local){this.grid.store.clearFilter(true);this.grid.store.filterBy(this.getRecordFilter());}else{var start,store=this.grid.store;this.deferredUpdate.cancel();if(this.toolbar){start=store.paramNames.start;if(store.lastOptions&&store.lastOptions.params&&store.lastOptions.params[start]){store.lastOptions.params[start]=0;}}
store.reload();}},getRecordFilter:function(){var f=[],len,i;this.filters.each(function(filter){if(filter.active){f.push(filter);}});len=f.length;return function(record){for(i=0;i<len;i++){if(!f[i].validateRecord(record)){return false;}}
return true;};},addFilter:function(config){var Cls=this.getFilterClass(config.type.type),filter=config.menu?config:(new Cls(config));this.filters.add(filter);Ext.util.Observable.capture(filter,this.onStateChange,this);return filter;},addFilters:function(filters){if(filters){var i,len,filter,cm=false,dI;if(filters instanceof Ext.grid.ColumnModel){filters=filters.config;cm=true;}
for(i=0,len=filters.length;i<len;i++){filter=false;if(cm){dI=filters[i].dataIndex;filter=filters[i].filter||filters[i].filterable;if(filter){filter=(filter===true)?{}:filter;Ext.apply(filter,{dataIndex:dI});filter.type=filter.type||this.store.fields.get(dI).type;}}else{filter=filters[i];}
if(filter){this.addFilter(filter);}}}},getFilter:function(dataIndex){return this.filters.get(dataIndex);},clearFilters:function(){this.filters.each(function(filter){filter.setActive(false);});},getFilterData:function(){var filters=[],i,len;this.filters.each(function(f){if(f.active){var d=[].concat(f.serialize());for(i=0,len=d.length;i<len;i++){filters.push({field:f.dataIndex,data:d[i]});}}});return filters;},buildQuery:function(filters){var p={},i,f,root,dataPrefix,key,tmp,len=filters.length;if(!this.encode){for(i=0;i<len;i++){f=filters[i];root=[this.paramPrefix,'[',i,']'].join('');p[root+'[field]']=f.field;dataPrefix=root+'[data]';for(key in f.data){p[[dataPrefix,'[',key,']'].join('')]=f.data[key];}}}else{tmp=[];for(i=0;i<len;i++){f=filters[i];tmp.push(Ext.apply({},{field:f.field},f.data));}
if(tmp.length>0){p[this.paramPrefix]=Ext.util.JSON.encode(tmp);}}
return p;},cleanParams:function(p){if(this.encode){delete p[this.paramPrefix];}else{var regex,key;regex=new RegExp('^'+this.paramPrefix+'\[[0-9]+\]');for(key in p){if(regex.test(key)){delete p[key];}}}},getFilterClass:function(type){switch(type){case'auto':type='string';break;case'int':case'float':type='numeric';break;case'bool':type='boolean';break;}
return Ext.ux.grid.filter[type.substr(0,1).toUpperCase()+type.substr(1)+'Filter'];}});Ext.preg('gridfilters',Ext.ux.grid.GridFilters);Ext.grid.GridFilters=Ext.ux.grid.GridFilters;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:'<img src="'+this.icon+'" class="x-menu-item-icon" style="margin: 3px 3px 2px 2px;" />'});Ext.apply(this.config,{width:125});this.editor.render(s);s.dom.lastChild.value=this.text?this.text:"";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.ns('Ext.ux.menu');Ext.ux.menu.RangeMenu=Ext.extend(Ext.menu.Menu,{constructor:function(config){Ext.ux.menu.RangeMenu.superclass.constructor.call(this,config);this.addEvents('update');this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);var i,len,item,cfg,Cls;for(i=0,len=this.menuItems.length;i<len;i++){item=this.menuItems[i];if(item!=='-'){cfg={itemId:'range-'+item,enableKeyEvents:true,iconCls:this.iconCls[item]||'no-icon',listeners:{scope:this,keyup:this.onInputKeyUp}};Ext.apply(cfg,Ext.applyIf(this.fields[item]||{},this.fieldCfg[item]),this.menuItemCfgs);Cls=cfg.fieldCls||this.fieldCls;item=this.fields[item]=new Cls(cfg);}
this.add(item);}},fireUpdate:function(){this.fireEvent('update',this);},getValue:function(){var result={},key,field;for(key in this.fields){field=this.fields[key];if(field.isValid()&&String(field.getValue()).length>0){result[key]=field.getValue();}}
return result;},setValue:function(data){var key;for(key in this.fields){this.fields[key].setValue(data[key]!==undefined?data[key]:'');}
this.fireEvent('update',this);},onInputKeyUp:function(field,e){var k=e.getKey();if(k==e.RETURN&&field.isValid()){e.stopEvent();this.hide(true);return;}
if(field==this.fields.eq){if(this.fields.gt){this.fields.gt.setValue(null);}
if(this.fields.lt){this.fields.lt.setValue(null);}}
else{this.fields.eq.setValue(null);}
this.updateTask.delay(this.updateBuffer);}});Ext.namespace('Ext.ux.menu');Ext.ux.menu.ListMenu=Ext.extend(Ext.menu.Menu,{labelField:'text',loadingText:'Loading...',loadOnShow:true,single:false,constructor:function(cfg){this.selected=[];this.addEvents('checkchange');Ext.ux.menu.ListMenu.superclass.constructor.call(this,cfg=cfg||{});if(!cfg.store&&cfg.options){var options=[];for(var i=0,len=cfg.options.length;i<len;i++){var value=cfg.options[i];switch(Ext.type(value)){case'array':options.push(value);break;case'object':options.push([value.id,value[this.labelField]]);break;case'string':options.push([value,value]);break;}}
this.store=new Ext.data.Store({reader:new Ext.data.ArrayReader({id:0},['id',this.labelField]),data:options,listeners:{'load':this.onLoad,scope:this}});this.loaded=true;}else{this.add({text:this.loadingText,iconCls:'loading-indicator'});this.store.on('load',this.onLoad,this);}},destroy:function(){if(this.store){this.store.destroy();}
Ext.ux.menu.ListMenu.superclass.destroy.call(this);},show:function(){var lastArgs=null;return function(){if(arguments.length===0){Ext.ux.menu.ListMenu.superclass.show.apply(this,lastArgs);}else{lastArgs=arguments;if(this.loadOnShow&&!this.loaded){this.store.load();}
Ext.ux.menu.ListMenu.superclass.show.apply(this,arguments);}};}(),onLoad:function(store,records){var visible=this.isVisible();this.hide(false);this.removeAll(true);var gid=this.single?Ext.id():null;for(var i=0,len=records.length;i<len;i++){var item=new Ext.menu.CheckItem({text:records[i].get(this.labelField),group:gid,checked:this.selected.indexOf(records[i].id)>-1,hideOnClick:false});item.itemId=records[i].id;item.on('checkchange',this.checkChange,this);this.add(item);}
this.loaded=true;if(visible){this.show();}
this.fireEvent('load',this,records);},getSelected:function(){return this.selected;},setSelected:function(value){value=this.selected=[].concat(value);if(this.loaded){this.items.each(function(item){item.setChecked(false,true);for(var i=0,len=value.length;i<len;i++){if(item.itemId==value[i]){item.setChecked(true,true);}}},this);}},checkChange:function(item,checked){var value=[];this.items.each(function(item){if(item.checked){value.push(item.itemId);}},this);this.selected=value;this.fireEvent('checkchange',item,checked);}});Ext.apply(Ext.util.Format,{numberFormat:{decimalSeparator:',',decimalPrecision:5,groupingSeparator:'.',groupingSize:3,currencySymbol:''},formatNumber:function(value,numberFormat){var format=Ext.apply(Ext.apply({},this.numberFormat),numberFormat);if(typeof value!=='number'){value=String(value);if(format.currencySymbol){value=value.replace(format.currencySymbol,'');}
if(format.groupingSeparator){value=value.replace(format.groupingSeparator,'');}
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;}
if(value=="NaN")return"";else if(value==0)return"0.0";else return value;}});Ext.ns('Ext.ux.form');Ext.ux.form.DateTime=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:'input',type:'hidden'},timeWidth:100,dtSeparator:' ',hiddenFormat:'Y-m-d H:i:s',otherToNow:true,timePosition:'right',dateFormat:'d.m.Y',timeFormat:'H:i',initComponent:function(){Ext.ux.form.DateTime.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+'-date',format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete(this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+'-time',format:this.timeFormat||Ext.form.TimeField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete(this.timeFormat);this.relayEvents(this.df,['focus','specialkey','invalid','valid']);this.relayEvents(this.tf,['focus','specialkey','invalid','valid']);},onRender:function(ct,position){if(this.isRendered){return;}
Ext.ux.form.DateTime.superclass.onRender.call(this,ct,position);var t;if('below'===this.timePosition||'bellow'===this.timePosition){t=Ext.DomHelper.append(ct,{tag:'table',style:'border-collapse:collapse',children:[{tag:'tr',children:[{tag:'td',style:'padding-bottom:1px',cls:'ux-datetime-date'}]},{tag:'tr',children:[{tag:'td',cls:'ux-datetime-time'}]}]},true);}
else{t=Ext.DomHelper.append(ct,{tag:'table',style:'border-collapse:collapse',children:[{tag:'tr',children:[{tag:'td',style:'padding-right:4px',cls:'ux-datetime-date'},{tag:'td',cls:'ux-datetime-time'}]}]},true);}
this.tableEl=t;this.wrap=t.wrap({cls:'x-form-field-wrap'});this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child('td.ux-datetime-date'));this.tf.render(t.child('td.ux-datetime-time'));if(Ext.isIE&&Ext.isStrict){t.select('input').applyStyles({top:0});}
this.on('specialkey',this.onSpecialKey,this);this.df.el.swallowEvent(['keydown','keypress']);this.tf.el.swallowEvent(['keydown','keypress']);if('side'===this.msgTarget){var elp=this.el.findParent('.x-form-element',10,true);this.errorIcon=elp.createChild({cls:'x-form-invalid-icon'});this.df.errorIcon=this.errorIcon;this.tf.errorIcon=this.errorIcon;}
this.el.dom.name=this.hiddenName||this.name||this.id;this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;this.updateHidden();},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,'tl-tr',[2,0]);},initDateValue:function(){this.dateValue=this.otherToNow?new Date():new Date(1970,0,1,0,0,0);},clearInvalid:function(){this.df.clearInvalid();this.tf.clearInvalid();},markInvalid:function(msg){this.df.markInvalid(msg);this.tf.markInvalid(msg);},beforeDestroy:function(){if(this.isRendered){this.wrap.removeAllListeners();this.wrap.remove();this.tableEl.remove();this.df.destroy();this.tf.destroy();}},disable:function(){if(this.isRendered){this.df.disabled=this.disabled;this.df.onDisable();this.tf.onDisable();}
this.disabled=true;this.df.disabled=true;this.tf.disabled=true;this.fireEvent("disable",this);return this;},enable:function(){if(this.rendered){this.df.onEnable();this.tf.onEnable();}
this.disabled=false;this.df.disabled=false;this.tf.disabled=false;this.fireEvent("enable",this);return this;},focus:function(){this.df.focus();},getPositionEl:function(){return this.wrap;},getResizeEl:function(){return this.wrap;},getValue:function(){return this.dateValue?new Date(this.dateValue):'';},isValid:function(){return this.df.isValid()&&this.tf.isValid();},isVisible:function(){return this.df.rendered&&this.df.getActionEl().isVisible();},onBlur:function(f){if(this.wrapClick){f.focus();this.wrapClick=false;}
if(f===this.df){this.updateDate();}
else{this.updateTime();}
this.updateHidden();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue);}
this.hasFocus=false;this.fireEvent('blur',this);}}).defer(100,this);},onFocus:function(){if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this);}},onMouseDown:function(e){if(!this.disabled){this.wrapClick='td'===e.target.nodeName.toLowerCase();}},onSpecialKey:function(t,e){var key=e.getKey();if(key===e.TAB){if(t===this.df&&!e.shiftKey){e.stopEvent();this.tf.focus();}
if(t===this.tf&&e.shiftKey){e.stopEvent();this.df.focus();}}
if(key===e.ENTER){this.updateValue();}},setDate:function(date){this.df.setValue(date);},setTime:function(date){this.tf.setValue(date);},setSize:function(w,h){if(!w){return;}
if('below'===this.timePosition){this.df.setSize(w,h);this.tf.setSize(w,h);if(Ext.isIE){this.df.el.up('td').setWidth(w);this.tf.el.up('td').setWidth(w);}}
else{this.df.setSize(w-this.timeWidth-4,h);this.tf.setSize(this.timeWidth,h);if(Ext.isIE){this.df.el.up('td').setWidth(w-this.timeWidth-4);this.tf.el.up('td').setWidth(this.timeWidth);}}},setValue:function(val){if(!val&&true===this.emptyToNow){this.setValue(new Date());return;}
else if(!val){this.setDate('');this.setTime('');this.updateValue();return;}
if('number'===typeof val){val=new Date(val);}
else if('string'===typeof val&&this.hiddenFormat){val=Date.parseDate(val,this.hiddenFormat)}
val=val?val:new Date(1970,0,1,0,0,0);var da,time;if(val instanceof Date){this.setDate(val);this.setTime(val);this.dateValue=new Date(val);}
else{da=val.split(this.dtSeparator);this.setDate(da[0]);if(da[1]){if(da[2]){da[1]+=da[2];}
this.setTime(da[1]);}}
this.updateValue();},setVisible:function(visible){if(visible){this.df.show();this.tf.show();}else{this.df.hide();this.tf.hide();}
return this;},show:function(){return this.setVisible(true);},hide:function(){return this.setVisible(false);},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue);}}
this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth(),d.getDate());}
else{this.dateValue='';this.setTime('');}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format);}
if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue);}
if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds());}
else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0);}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):'';this.el.dom.value=value;}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return;},validate:function(){return this.df.validate()&&this.tf.validate();},renderer:function(field){var format=field.editor.dateFormat||Ext.ux.form.DateTime.prototype.dateFormat;format+=' '+(field.editor.timeFormat||Ext.ux.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval;};return renderer;}});Ext.reg('xdatetime',Ext.ux.form.DateTime);Ext.ns('Ext.ux.grid');if('function'!==typeof RegExp.escape){RegExp.escape=function(s){if('string'!==typeof s){return s;}
return s.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,'\\$1');};}
Ext.ux.grid.RowActions=function(config){Ext.apply(this,config);this.addEvents('beforeaction','action','beforegroupaction','groupaction');Ext.ux.grid.RowActions.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.RowActions,Ext.util.Observable,{actionEvent:'click',autoWidth:true,dataIndex:'',editable:false,header:'',isColumn:true,keepSelection:false,menuDisabled:true,sortable:false,tplGroup:'<tpl for="actions">'
+'<div class="ux-grow-action-item<tpl if="\'right\'===align"> ux-action-right</tpl> '
+'{cls}" style="{style}" qtip="{qtip}">{text}</div>'
+'</tpl>',tplRow:'<div class="ux-row-action">'
+'<tpl for="actions">'
+'<div class="ux-row-action-item {cls} <tpl if="text">'
+'ux-row-action-text</tpl>" style="{hide}{style}" qtip="{qtip}">'
+'<tpl if="text"><span qtip="{qtip}">{text}</span></tpl></div>'
+'</tpl>'
+'</div>',hideMode:'visibility',widthIntercept:4,widthSlope:21,init:function(grid){this.grid=grid;this.id=this.id||Ext.id();var lookup=grid.getColumnModel().lookup;delete(lookup[undefined]);lookup[this.id]=this;if(!this.tpl){this.tpl=this.processActions(this.actions);}
if(this.autoWidth){this.width=this.widthSlope*this.actions.length+this.widthIntercept;this.fixed=true;}
var view=grid.getView();var cfg={scope:this};cfg[this.actionEvent]=this.onClick;grid.afterRender=grid.afterRender.createSequence(function(){view.mainBody.on(cfg);grid.on('destroy',this.purgeListeners,this);},this);if(!this.renderer){this.renderer=function(value,cell,record,row,col,store){cell.css+=(cell.css?' ':'')+'ux-row-action-cell';return this.tpl.apply(this.getData(value,cell,record,row,col,store));}.createDelegate(this);}
if(view.groupTextTpl&&this.groupActions){view.interceptMouse=view.interceptMouse.createInterceptor(function(e){if(e.getTarget('.ux-grow-action-item')){return false;}});view.groupTextTpl='<div class="ux-grow-action-text">'+view.groupTextTpl+'</div>'
+this.processActions(this.groupActions,this.tplGroup).apply();}
if(true===this.keepSelection){grid.processEvent=grid.processEvent.createInterceptor(function(name,e){if('mousedown'===name){return!this.getAction(e);}},this);}},getData:function(value,cell,record,row,col,store){return record.data||{};},processActions:function(actions,template){var acts=[];Ext.each(actions,function(a,i){if(a.iconCls&&'function'===typeof(a.callback||a.cb)){this.callbacks=this.callbacks||{};this.callbacks[a.iconCls]=a.callback||a.cb;}
var o={cls:a.iconIndex?'{'+a.iconIndex+'}':(a.iconCls?a.iconCls:''),qtip:a.qtipIndex?'{'+a.qtipIndex+'}':(a.tooltip||a.qtip?a.tooltip||a.qtip:''),text:a.textIndex?'{'+a.textIndex+'}':(a.text?a.text:''),hide:a.hideIndex?'<tpl if="'+a.hideIndex+'">'
+('display'===this.hideMode?'display:none':'visibility:hidden')+';</tpl>':(a.hide?('display'===this.hideMode?'display:none':'visibility:hidden;'):''),align:a.align||'right',style:a.style?a.style:''};acts.push(o);},this);var xt=new Ext.XTemplate(template||this.tplRow);return new Ext.XTemplate(xt.apply({actions:acts}));},getAction:function(e){var action=false;var t=e.getTarget('.ux-row-action-item');if(t){action=t.className.replace(/ux-row-action-item /,'');if(action){action=action.replace(/ ux-row-action-text/,'');action=action.trim();}}
return action;},onClick:function(e,target){var view=this.grid.getView();var row=e.getTarget('.x-grid3-row');var col=view.findCellIndex(target.parentNode.parentNode);var action=this.getAction(e);if(false!==row&&false!==col&&false!==action){var record=this.grid.store.getAt(row.rowIndex);if(this.callbacks&&'function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,record,action,row.rowIndex,col);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforeaction',this.grid,record,action,row.rowIndex,col)){return;}
else if(true!==this.eventsSuspended){this.fireEvent('action',this.grid,record,action,row.rowIndex,col);}}
t=e.getTarget('.ux-grow-action-item');if(t){var group=view.findGroup(target);var groupId=group?group.id.replace(/ext-gen[0-9]+-gp-/,''):null;var records;if(groupId){var re=new RegExp(RegExp.escape(groupId));records=this.grid.store.queryBy(function(r){return r._groupId.match(re);});records=records?records.items:[];}
action=t.className.replace(/ux-grow-action-item (ux-action-right )*/,'');if('function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,records,action,groupId);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforegroupaction',this.grid,records,action,groupId)){return false;}
this.fireEvent('groupaction',this.grid,records,action,groupId);}}});Ext.reg('rowactions',Ext.ux.grid.RowActions);Ext.namespace('Ext.ux.data');Ext.ux.data.CalcRecord=function(data,id){Ext.ux.data.CalcRecord.superclass.constructor.call(this,data,id);this.calcFields();}
Ext.ux.data.CalcRecord.create=function(o){var f=Ext.extend(Ext.ux.data.CalcRecord,{});var p=f.prototype;p.fields=new Ext.util.MixedCollection(false,function(field){return field.name;});for(var i=0,len=o.length;i<len;i++){p.fields.add(new Ext.data.Field(o[i]));}
f.getField=function(name){return p.fields.get(name);};return f;};Ext.extend(Ext.ux.data.CalcRecord,Ext.data.Record,{set:function(name,value){if(String(this.data[name])==String(value)){return;}
this.dirty=true;if(!this.modified){this.modified={};}
if(typeof this.modified[name]=='undefined'){this.modified[name]=this.data[name];}
this.data[name]=value;this.calcFields(name);if(!this.editing&&this.store){this.store.afterEdit(this);}},calcFields:function(name){this.fields.each(function(field){if((field.name!=name)&&(typeof field.calc=='function')&&(!name||(!field.dependencies||field.dependencies.indexOf(name)!=-1))){var value=field.calc(this);if(!name||field.notDirty){this.data[field.name]=value;}else{this.set(field.name,value);}}},this);}});Ext.ux.DecimalField=Ext.extend(Ext.form.NumberField,{initComponent:function(){Ext.ux.DecimalField.superclass.initComponent.call(this);},setValue:function(v){v=typeof v=='number'?v:parseFloat(String(v).replace(this.decimalSeparator,"."));v=isNaN(v)?'':String(parseFloat(v).toFixed(this.decimalPrecision)).replace(".",this.decimalSeparator);Ext.form.NumberField.superclass.setValue.call(this,v);}});Ext.reg('decimalfield',Ext.ux.DecimalField);
Ext.namespace("brodos.tbrowser");brodos.tbrowser.PagingToolbar=function(config){Ext.apply(this,config);this.dataQuery=new brodos.dsi.elements.DataQuery();brodos.tbrowser.PagingToolbar.superclass.constructor.call(this);};Ext.extend(brodos.tbrowser.PagingToolbar,Ext.Toolbar,{localization:false,subject:null,dataQuery:null,queryDefinition:null,pageSize:20,buttonAlign:'center',defaults:{minWidth:20},maxLeft:5,maxRight:5,currentPage:1,initComponent:function(){brodos.tbrowser.PagingToolbar.superclass.initComponent.call(this);if(!this.localization){throw({name:"PagingToolbar Exception",message:"No Localization defined!"});}
this.bind(this.store);this.dataQuery.queryDefinitions.add(this.queryDefinition);if(this.hidden==false){this.queryDefinition.paging.limit=this.pageSize;}},updateInfo:function(){this.reloadPagingInfoBar();},onLoad:function(){this.updateInfo();},beforeLoad:function(){var sortState=this.store.getSortState();if(sortState&&sortState.field){this.updateSorting(sortState);}
var oParams=new Object();oParams.action="getData";oParams.subject=this.subject;oParams.language=this.localization.language;oParams.queryXml=this.dataQuery.createXml(true);this.store.baseParams=oParams;},doLoad:function(){if(this.hidden==false){if(this.currentPage==-1){this.queryDefinition.paging.fromBehind=true;this.queryDefinition.paging.skip=false;this.queryDefinition.paging.maxcount=false;}
else{this.queryDefinition.paging.fromBehind=false;this.queryDefinition.paging.skip=(this.currentPage-1)*this.pageSize;this.queryDefinition.paging.maxcount=(this.currentPage+this.maxRight+1)*this.pageSize;}}
this.store.load();},gotoPage:function(pageNumber){this.onClick(pageNumber);},onClick:function(pageNumber){this.currentPage=pageNumber;this.doLoad();},unbind:function(store){store=Ext.StoreMgr.lookup(store);store.un("beforeload",this.beforeLoad,this);store.un("load",this.onLoad,this);this.store=undefined;},bind:function(store){store=Ext.StoreMgr.lookup(store);store.on("beforeload",this.beforeLoad,this);store.on("load",this.onLoad,this);store.on("loadexception",this.onLoadError,this);this.store=store;},reloadPagingInfoBar:function(){if(this.items){Ext.destroy.apply(Ext,this.items.items);}
this.storeTotalCount=this.store.getTotalCount();var pages=Math.ceil(this.storeTotalCount/this.pageSize);if(this.currentPage==-1){this.currentPage=pages;}
if(!pages){pages=1;}
if(pages==1){this.addButton({text:"1",disabled:true});}
else{for(var pageNumber=1;pageNumber<=pages;pageNumber++){if(pageNumber<(this.currentPage-this.maxLeft)){if(pageNumber==(this.currentPage-this.maxLeft)-1){this.addButton({tooltip:this.localization.getStringForKey("TBrowser_PagingToolbar_FirstPageText"),text:this.localization.getStringForKey("TBrowser_PagingToolbar_FirstPageSymbol"),handler:this.onClick.createDelegate(this,[1])});this.addButton({tooltip:this.localization.getStringForKey("TBrowser_PagingToolbar_PreviousPageText"),text:this.localization.getStringForKey("TBrowser_PagingToolbar_PreviousPageSymbol"),handler:this.onClick.createDelegate(this,[this.currentPage-1])});}
continue;}
else if(pageNumber==(this.currentPage+this.maxRight)+1){this.addButton({tooltip:this.localization.getStringForKey("TBrowser_PagingToolbar_NextPageText"),text:this.localization.getStringForKey("TBrowser_PagingToolbar_NextPageSymbol"),handler:this.onClick.createDelegate(this,[this.currentPage+1])});this.addButton({tooltip:this.localization.getStringForKey("TBrowser_PagingToolbar_LastPageText"),text:this.localization.getStringForKey("TBrowser_PagingToolbar_LastPageSymbol"),handler:this.onClick.createDelegate(this,[-1])});continue;}
else if(pageNumber>(this.currentPage+this.maxRight)){break;}
this.addButton({tooltip:this.localization.getStringForKey("TBrowser_PagingToolbar_GotoPageText")+" "+pageNumber,text:pageNumber,pressed:(this.currentPage==pageNumber)?true:false,handler:(this.currentPage==pageNumber)?this.doLoad.createDelegate(this):this.onClick.createDelegate(this,[pageNumber])});}}
this.doLayout();},updateSorting:function(sortObject){this.queryDefinition.orderList.columns.clear();var column=new brodos.dsi.elements.Column({name:sortObject.field,direction:sortObject.direction});this.queryDefinition.orderList.columns.add(column);}});
Ext.namespace("brodos.tbrowser");brodos.tbrowser.ExceptionHandler=function(){return{getException:function(a,b,c,d){if("object"==typeof console){console.log(a,b,c,d);}
if("undefined"!=typeof Ext&&(("undefined"!=typeof a&&a.message)||("undefined"!=typeof d&&d.message))){this.fireEvent('tbrowsererror',this);Ext.Msg.show({title:'Error: '+(a.name?a.name:d.name),msg:(a.message?a.message:d.message),buttons:Ext.Msg.OK,fn:Ext.emptyFn,icon:Ext.MessageBox.ERROR});}}}};
Ext.namespace("brodos.tbrowser");Ext.Ajax.timeout=60000;brodos.tbrowser.Browser=function(config){this.width=500;this.height=350;this.autoHeight=true;this.dataFormat='xml';this.cssAdditions="";this.localization={};this.providerUrl="";this.imageUrl=(typeof(brodos.config)!='undefined')?brodos.config.get('WDIR'):'';this.staticMetaData="";this.disablePaging=false;this.autoLoadStore=true;this.pagingPageSize=20;this.hardFilters=[];this.refHardFilters=[];this.initFilters=[];this.emptyRefStoreEntry=null;this.subject="";this.queryDefinitionKey="";this.disableTopToolbar=false;this.isEditable=true;this.hideNewButton=false;this.hideSaveButton=false;this.hideDeleteButton=false;this.hideRevertButton=false;this.disableNewButton=false;this.disableSaveButton=false;this.disableRevertButton=false;this.disableDeleteButton=false;this.enableCheckboxSelection=true;this.enableCalcRecords=false;this.calcRecords=[];this.customButtons=[];this.enableGrouping=true;this.groupTextTpl='{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})';this.groupRenderer=null;this.enableSorting=true;this.enableSearching=true;this.enableFilters=true;this.filterRelationType='AND';this.enableTabs=false;this.enableAllTab=false;this.enableUntabbedTab=false;this.enableDragDrop=true;this.enableRowActions=false;this.rowActions=null;this.rowActionsFn=null;this.rowActionsFnOptions=null;this.hiddenColumns=[];this.columnEditors=[];this.newColumnDefaultValues=[];this.columnRenderer=[];this.columnModelDefinitions=[];this.columnAdditions=[];this.additionalGridConfig={};this.additionalGridViewConfig={};this.additionalGridStoreConfig={};this.additionalKeyMappings={};this.selectionModel=new Ext.grid.RowSelectionModel({moveEditorOnEnter:false});this.alternativeKeyHandling=false;this.saveOnChanges=false;this.enableHotKeys=false;this.onCellClickFn=null;this.onRowClickFn=null;this.newEntryFn=null;this.saveEntryChangesFn=null;this.revertEntryChangesFn=null;this.deleteSelectedEntriesFn=null;this.exceptionHandler=null;this.events={'tbrowserloaded':true,'tbrowsererror':false};this.gridPlugins=[];this.storeFields=[];brodos.tbrowser.Browser.superclass.constructor.call(this,config);};Ext.extend(brodos.tbrowser.Browser,Ext.Panel,{initComponent:function(){if(this.cssAdditions!=""){Ext.util.CSS.createStyleSheet(this.cssAdditions,"cssAdditions");}
Ext.util.CSS.createStyleSheet(".x-selectable, .x-selectable * { -moz-user-select: text!important; -khtml-user-select: text!important; }","cssAdditions");brodos.tbrowser.Browser.superclass.initComponent.apply(this,arguments);this.onLanguageLoad();},onLanguageLoad:function(){if(this.exceptionHandler==null){this.exceptionHandler=new brodos.tbrowser.ExceptionHandler();}
if(!this.localization){this.exceptionHandler.getException({name:"TBrowser Exception",message:"No localization given"});return;}
if(this.providerUrl.length==0){this.exceptionHandler.getException({name:"TBrowser Exception",message:this.localization.getStringForKey("TBrowser_Init_NoProviderDefined")});return;}
if(this.subject.length==0){this.exceptionHandler.getException({name:"TBrowser Exception",message:this.localization.getStringForKey("TBrowser_Init_NoSubjectDefined")});return;}
if(this.queryDefinitionKey.length==0){this.exceptionHandler.getException({name:"TBrowser Exception",message:this.localization.getStringForKey("TBrowser_Init_NoQueryDefinitionDefined")});return;}
this.gridStore=null;this.grid=null;this.metadataStore=null;this.queryDefinition=null;this.searchFieldColumns=[];Ext.QuickTips.init();if(!Ext.state.Manager.getProvider()){Ext.state.Manager.setProvider(new Ext.state.CookieProvider());}
this.initializeMetadataStore();},initializeMetadataStore:function(){this.queryDefinition=null;if(this.staticMetaData!="")
{if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(this.staticMetaData);}else{doc=new DOMParser().parseFromString(this.staticMetaData,"text/xml");}
this.metadataStore=new Ext.data.Store({proxy:new Ext.data.MemoryProxy(doc),reader:new brodos.dsi.reader.XmlResultReader()});this.metadataStore.load({callback:this.initializeMetadata.createDelegate(this),scope:this});this.metadataStore.on('loadexception',this.exceptionHandler.getException,this);}
else
{this.metadataStore=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:this.providerUrl,method:"POST"}),reader:new brodos.dsi.reader.XmlResultReader()});var oParams=new Object();oParams.action="getMetaData";oParams.subject=this.subject;oParams.language=this.localization.language;oParams.key=this.queryDefinitionKey;this.metadataStore.load({params:oParams,callback:this.initializeMetadata.createDelegate(this),scope:this});this.metadataStore.on('loadexception',this.exceptionHandler.getException,this);}},initializeMetadata:function(records,options,success){if(!success){return;}
if(!this.metadataStore){return;}
var searchArray=function(needle,haystack){for(var i=0;i<haystack.length;i++){if(needle==haystack[i])
return true;}
return false;}
this.metadata=this.metadataStore.getAt(0).get('metadata');this.queryDefinition=this.metadataStore.getAt(0).get('metadata').queryDefinitions.get(0);this.columnsForModel=[];this.fieldsForStore=[];this.filterColumns=[];if(!this.disableDeleteButton&&this.enableCheckboxSelection){this.selectionModel=new Ext.grid.CheckboxSelectionModel({moveEditorOnEnter:false});this.columnsForModel.push(this.selectionModel);this.fieldsForStore.push({});this.fieldsForStore[0].name="tB_checkboxField";}
this.queryDefinition.columns.each(function(columnItem){var column={};var columnHeaderLocalized=this.localization.getStringForKey('_'+columnItem.name);column.header=columnHeaderLocalized?columnHeaderLocalized:columnItem.name;column.dataIndex=columnItem.name;var recordType={};switch(columnItem.type){case"CHAR":recordType.type=Ext.data.Types.STRING;if(!this.columnEditors[column.dataIndex]&&this.isEditable){if(columnItem.readonly=="true"){this.columnEditors[column.dataIndex]=new Ext.form.Hidden();}else{this.columnEditors[column.dataIndex]=new Ext.form.TextField();}}
break;case"DATE":recordType.type=Ext.data.Types.DATE;recordType.type.dateFormat="d.m.Y";column.dateFormat="d.m.Y";column.renderer=function(value){return Ext.util.Format.date(value,column.dateFormat);};if(!this.columnEditors[column.dataIndex]&&this.isEditable){if(columnItem.readonly=="true"){this.columnEditors[column.dataIndex]=new Ext.form.Hidden();}else{this.columnEditors[column.dataIndex]=new Ext.form.DateField({format:column.dateFormat});}}
break;case"DATETIME":recordType.type=Ext.data.Types.DATE;recordType.type.dateFormat="d.m.Y H:i";column.dateTimeFormat="d.m.Y H:i";column.renderer=function(value){return Ext.util.Format.date(value,column.dateTimeFormat);};if(!this.columnEditors[column.dataIndex]&&this.isEditable){if(columnItem.readonly=="true"){this.columnEditors[column.dataIndex]=new Ext.form.Hidden();}else{this.columnEditors[column.dataIndex]=new Ext.ux.form.DateTime({format:column.dateTimeFormat});}}
break;case"NUMBER":recordType.type=Ext.data.Types.FLOAT;column.renderer=function(value){return Ext.util.Format.formatNumber(value,{decimalSeparator:',',decimalPrecision:columnItem.precision,groupingSeparator:'.',groupingSize:3,currencySymbol:''});};if(!this.columnEditors[column.dataIndex]&&this.isEditable){if(columnItem.readonly=="true"){this.columnEditors[column.dataIndex]=new Ext.form.Hidden();}else{if(columnItem.precision===undefined){this.columnEditors[column.dataIndex]=new Ext.form.NumberField({decimalSeparator:',',decimalPrecision:2});}else{this.columnEditors[column.dataIndex]=new Ext.ux.DecimalField({decimalSeparator:',',decimalPrecision:columnItem.precision});}}}
break;case"BOOL":case"BOOLEAN":recordType.type=Ext.data.Types.BOOLEAN;if(!this.columnEditors[column.dataIndex]&&this.isEditable){if(columnItem.readonly=="true"){column=new Ext.grid.CheckColumn({onMouseDown:function(){}});this.gridPlugins.push(column);}else{column=new Ext.grid.CheckColumn();this.gridPlugins.push(column);}}
else if(!this.isEditable)
{column=new Ext.grid.CheckColumn({onMouseDown:function(){}});this.gridPlugins.push(column);}
column.header=columnHeaderLocalized?columnHeaderLocalized:columnItem.name;column.dataIndex=columnItem.name;break;case"REFERENCE":recordType.type=Ext.data.Types.STRING;if(!this.columnEditors[column.dataIndex]&&this.isEditable){var refColumn=new brodos.dsi.elements.Column({name:columnItem.foreignfield});var refColumns=new Ext.util.MixedCollection();refColumns.add(refColumn);var refQueryDefinition=new brodos.dsi.elements.QueryDefinition({columns:refColumns});var refFilters=new Ext.util.MixedCollection();for(var i=0;i<this.refHardFilters.length;i++)
{if(this.refHardFilters[i]["value"]!=""){refFilters.add(new brodos.dsi.elements.Filter({operation:this.refHardFilters[i]["operation"]?this.refHardFilters[i]["operation"]:"EQ",op1:this.refHardFilters[i]["key"],op2:this.refHardFilters[i]["value"]}));}}
refQueryDefinition.filterSettings=refFilters;var refDataQuery=new brodos.dsi.elements.DataQuery();refDataQuery.queryDefinitions.add(refQueryDefinition);var oParams=new Object();oParams.action="getData";oParams.subject=columnItem.subject;oParams.language=this.localization.language;oParams.queryXml=refDataQuery.createXml(true);var oParamsProxy=new Object();oParamsProxy.action="getData";oParamsProxy.subject=this.subject;oParamsProxy.language=this.localization.language;var refStore=new Ext.data.Store({baseParams:oParams,proxy:new Ext.data.HttpProxy({url:this.providerUrl,method:"POST",baseParams:oParamsProxy}),reader:new brodos.dsi.reader.XmlResultReader({type:"rowData"},[columnItem.foreignfield])});refStore.load({});if(this.emptyRefStoreEntry!=null){refStore.addListener('load',function(stor,recs,opts){var scheme=new Ext.data.Record.create([columnItem.foreignfield]);var rec=new scheme(this.emptyRefStoreEntry,'0');stor.insert(0,[rec]);},this);}
this.columnEditors[column.dataIndex]=new Ext.form.ComboBox({editable:false,disableKeyFilter:true,forceSelection:true,triggerAction:'all',typeAhead:true,displayField:columnItem.foreignfield,mode:'local',store:refStore,lazyRender:true,listClass:'x-combo-list-small'});columnItem.refStore=refStore;}
break;}
if(this.newColumnDefaultValues[column.dataIndex]){recordType.defaultValue=this.newColumnDefaultValues[column.dataIndex];}
if(this.columnEditors[column.dataIndex]){column.editor=this.columnEditors[column.dataIndex];}
if(this.columnModelDefinitions[column.dataIndex]){column=this.columnModelDefinitions[column.dataIndex];}
column.sortable=this.enableSorting;if(this.columnRenderer[column.dataIndex]){column.renderer=this.columnRenderer[column.dataIndex];}
column.hidden=searchArray(column.dataIndex,this.hiddenColumns);column.hideable=!column.hidden;if(this.columnAdditions[column.dataIndex]){Ext.apply(column,this.columnAdditions[column.dataIndex]);}
this.columnsForModel.push(column);recordType.name=column.dataIndex;this.fieldsForStore.push(recordType);if(!column.hidden&&recordType.type!="bool"){this.searchFieldColumns.push([column.header,column.dataIndex]);}
if(this.enableFilters){if(columnItem.distinctive){var distinctColumns=new Ext.util.MixedCollection();distinctColumns.add(new brodos.dsi.elements.Column({name:columnItem.type=='REFERENCE'?columnItem.foreignfield:column.dataIndex,distinctive:true}));var distinctQueryDefinition=new brodos.dsi.elements.QueryDefinition({subject:columnItem.type=='REFERENCE'?columnItem.subject:this.subject,columns:distinctColumns});var distinctQuery=new brodos.dsi.elements.DataQuery();distinctQuery.queryDefinitions.add(distinctQueryDefinition);var oParams=new Object();oParams.action="getData";oParams.subject=distinctQueryDefinition.subject;oParams.language=this.localization.language;oParams.queryXml=distinctQuery.createXml(true);var distinctStore=new Ext.data.Store({baseParams:oParams,proxy:new Ext.data.HttpProxy({url:this.providerUrl,method:"POST"}),reader:new brodos.dsi.reader.XmlResultReader({type:"rowData"},[distinctQueryDefinition.columns.get(0).name])});this.filterColumns.push({type:'list',phpMode:true,store:distinctStore,dataIndex:column.dataIndex,labelField:distinctQueryDefinition.columns.get(0).name});}
else{var type=recordType.type;var filterValues=new Ext.util.MixedCollection();this.queryDefinition.filterSettings.type=this.filterRelationType;this.queryDefinition.filterSettings.each(function(filterItem){if(!filterItem.type&&filterItem.op1==column.dataIndex&&filterItem.operation){var filterOperation=filterItem.operation.toLowerCase();if(type==Ext.data.Types.DATE){switch(filterOperation){case"eq":filterOperation="on";break;case"gt":filterOperation="after";break;case"lt":filterOperation="before";break;default:filterOperation="eq";}}
filterValues.add(filterOperation,(type==Ext.data.Types.DATE)?new Date(filterItem.op2):filterItem.op2);}},this);if(filterValues.getCount()>0){this.filterColumns.push({type:type,dataIndex:column.dataIndex,value:(type==Ext.data.Types.FLOAT||type==Ext.data.Types.DATE)?filterValues:filterValues.get('eq'),active:true});}
else{this.filterColumns.push({type:type,dataIndex:column.dataIndex});}}}
if(column.editor!=undefined){if(this.saveOnChanges==true)
{column.editor.on('specialkey',function(field,e){if(e.getKey()==Ext.EventObject.ENTER){Ext.EventObject.stopEvent();this.grid.stopEditing();var records=this.gridStore.getModifiedRecords();if(records.length>0){var queryXml=this.createDataInputFromRecords(records);var oParams=new Object();oParams.action="store";oParams.subject=this.subject;oParams.language=this.localization.language;oParams.queryXml=queryXml;this.grid.loadMask.msg=this.localization.getStringForKey("TBrowser_LoadMask_Saving");this.grid.loadMask.show();Ext.Ajax.request({url:this.providerUrl,success:this.onSaveChangesSuccess.createDelegate(this),failure:this.onSaveChangesFailure.createDelegate(this),params:oParams});}}
if(e.getKey()==Ext.EventObject.ESC){Ext.EventObject.stopEvent();this.gridStore.rejectChanges();}},this);if(columnItem.readonly!="true")this.lastEditor=column.dataIndex;}
else
{column.editor.on('specialkey',function(field,e){if(e.getKey()==Ext.EventObject.ENTER){Ext.EventObject.stopEvent();var ed=this.grid.activeEditor;var row=ed.row;var rows=this.gridStore.getCount();this.grid.stopEditing();if(row<(rows-1)){this.grid.getSelectionModel().selectRow(row+1);this.grid.getView().focusRow(row+1);}}},this);}}},this);for(var i=0;i<this.initFilters.length;i++)
{if(typeof this.initFilters[i]["value"]!='undefined'){this.queryDefinition.filterSettings.add(new brodos.dsi.elements.Filter({operation:this.initFilters[i]["operation"]?this.initFilters[i]["operation"]:"EQ",op1:this.initFilters[i]["key"],op2:this.initFilters[i]["value"]}));}
if(Ext.isArray(this.initFilters[i]["filter-relation"])){var filterRelation=new brodos.dsi.elements.Relation({type:this.initFilters[i]["relation-type"]});for(var k=0;k<this.initFilters[i]["filter-relation"].length;k++){filterRelation.relations.add(new brodos.dsi.elements.Filter({operation:this.initFilters[i]["filter-relation"][k]["operation"]?this.initFilters[i]["filter-relation"][k]["operation"]:"EQ",op1:this.initFilters[i]["filter-relation"][k]["key"],op2:this.initFilters[i]["filter-relation"][k]["value"]}));}
this.queryDefinition.filterSettings.add(filterRelation);}}
if(this.enableCalcRecords==true&&this.calcRecords.length>0){this.calcRecords.each(function(objitem,numindex,allitems){this.fieldsForStore.push(this.calcRecords[numindex]);this.columnsForModel.push(this.calcRecordsColumns[numindex]);},this);this.storeFields=Ext.ux.data.CalcRecord.create(this.fieldsForStore);}
else{this.storeFields=Ext.data.Record.create(this.fieldsForStore);}
if(this.enableRowActions==true&&this.rowActions!=null&&this.rowActionsFn!=null){this.rowActions.on(this.rowActionsFn,this,this.rowActionsFnOptions);this.columnsForModel.push(this.rowActions);}
this.columnModel=new Ext.grid.ColumnModel(this.columnsForModel);this.initializeGridStore();},initializeGridStore:function(){this.gridStore=new Ext.data.GroupingStore({proxy:new Ext.data.HttpProxy({url:this.providerUrl,method:"POST"}),remoteSort:true,reader:new brodos.dsi.reader.XmlResultReader(null,this.storeFields)});this.gridStore.on("loadexception",this.exceptionHandler.getException,this);this.gridStore.on("update",this.onRecordChange,this);this.gridStore.on("beforeload",this.onGridStoreLoad,this);this.gridStore.on("load",this.fireTBrowserLoaded.createDelegate(this));Ext.apply(this.gridStore,this.additionalGridStoreConfig);this.initializeGrid();},initializeGrid:function(){var bbar=this.initializeBottomToolbar();if(this.selectionModel&&!this.disableDeleteButton){this.selectionModel.on('selectionchange',this.switchDeleteButton.createDelegate(this));}
if(this.enableFilters){this.filters=new Ext.grid.GridFilters({filters:this.filterColumns,updateBuffer:0});this.gridPlugins.push(this.filters);}
if(this.enableGrouping){this.gridViewConfig={forceFit:true,autoFill:true,enableGrouping:this.enableGrouping,groupTextTpl:this.groupTextTpl,groupRenderer:this.groupRenderer,templates:{cell:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} x-selectable {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-grid3-cell-inner x-grid3-col-{id}" {attr}>{value}</div>','</td>')}};}
else{this.gridViewConfig={forceFit:true,autoFill:true,templates:{cell:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} x-selectable {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-grid3-cell-inner x-grid3-col-{id}" {attr}>{value}</div>','</td>')}};}
Ext.apply(this.gridViewConfig,this.additionalGridViewConfig);this.gridView=new Ext.grid.GridView(this.gridViewConfig);this.gridKeyMap=[{key:Ext.EventObject.PAGE_UP,stopEvent:true,fn:function(e){console.log("PAGE_UP! "+this.grid.bottomToolbar.currentPage);if(this.grid.bottomToolbar.currentPage>1)this.grid.bottomToolbar.currentPage=this.grid.bottomToolbar.currentPage-1;},scope:this},{key:Ext.EventObject.PAGE_DOWN,stopEvent:true,fn:function(e){var pages=Math.ceil(this.grid.bottomToolbar.storeTotalCount/this.grid.bottomToolbar.pageSize);console.log("PAGE_DOWN! "+pages);if(pages>this.grid.bottomToolbar.currentPage)this.grid.bottomToolbar.currentPage=this.grid.bottomToolbar.currentPage+1;},scope:this},{key:Ext.EventObject.HOME,stopEvent:true,fn:function(e){console.log("POS1!");this.grid.bottomToolbar.currentPage=1;},scope:this},{key:Ext.EventObject.END,stopEvent:true,fn:function(e){var pages=Math.ceil(this.grid.bottomToolbar.storeTotalCount/this.grid.bottomToolbar.pageSize);console.log("END!");this.grid.bottomToolbar.currentPage=pages;},scope:this}];if(this.enableHotKeys==true){this.gridKeyMap.push({key:'s',ctrl:true,stopEvent:true,fn:function(e){this.saveRecordChanges();},scope:this},{key:'r',ctrl:true,stopEvent:true,fn:function(e){this.revertRecordChanges();},scope:this},{key:'n',ctrl:true,stopEvent:true,fn:function(e){this.addNewRecord();},scope:this},{key:'d',ctrl:true,stopEvent:true,fn:function(e){this.deleteRecords();},scope:this});}
this.gridKeyMap.push(this.additionalKeyMappings);this.gridConfig={store:this.gridStore,cm:this.columnModel,sm:this.selectionModel,width:this.width,height:this.height,frame:false,border:false,loadMask:{msg:this.localization.getStringForKey("TBrowser_LoadMask_Loading")},plugins:this.gridPlugins,clicksToEdit:2,bbar:bbar,view:this.gridView,enableDragDrop:this.enableDragDrop,keys:this.gridKeyMap};if(this.disableTopToolbar==false)
{Ext.apply(this.gridConfig,{tbar:this.initializeTopToolbar()});}
if(this.enableRowActions==true)
{Ext.apply(this.gridConfig,{plugins:this.rowActions});}
Ext.apply(this.gridConfig,this.additionalGridConfig);this.grid=new Ext.grid.EditorGridPanel(this.gridConfig);this.grid.on('filterupdate',this.refreshFilters.createDelegate(this));if(this.onRowClickFn!=null)
{this.grid.on('rowclick',this.onRowClickFn);}
if(this.onCellClickFn!=null)
{this.grid.on('cellclick',this.onCellClickFn);}
if(this.enableTabs&&this.metadata.tabs.getCount()>0){this.initializeTabs();}
else if(this.autoLoadStore==true){bbar.doLoad();}
this.add(this.grid);this.doLayout();},initializeTopToolbar:function(){var toolbar=[];var triggerField=new Ext.form.TwinTriggerField({width:200,selectOnFocus:true,hideTrigger1:true,emptyText:this.localization.getStringForKey("TBrowser_Search_EmptyText"),trigger1Class:'x-form-clear-trigger',trigger2Class:'x-form-search-trigger',onTrigger1Click:this.topToolbarOnTriggerClear.createDelegate(this,[true]),onTrigger2Click:this.topToolbarOnTriggerSearch.createDelegate(this,[false])});triggerField.on('render',function(){triggerField.el.dom.qtip=this.searchTipText;var map=new Ext.KeyMap(triggerField.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.topToolbarOnTriggerSearch.createDelegate(this,[false])},{key:Ext.EventObject.ESC,scope:this,fn:this.topToolbarOnTriggerClear.createDelegate(this,[true])}]);map.stopEvent=true;},this,{single:true});var triggerColumnSelect=new Ext.form.ComboBox({emptyText:this.localization.getStringForKey("TBrowser_Search_SelectColumn"),width:100,editable:false,disableKeyFilter:true,triggerAction:'all',forceSelection:true,store:new Ext.data.SimpleStore({fields:['header','dataIndex'],data:this.searchFieldColumns}),displayField:'header',valueField:'dataIndex',mode:'local'});var newButton=new Ext.Toolbar.Button({tooltip:this.localization.getStringForKey("TBrowser_TopToolbar_NewButton"),icon:this.imageUrl+'/images/new.gif',cls:'x-btn-icon',disabled:!this.disableNewButton&&this.isEditable?false:true,handler:!this.disableNewButton?this.addNewRecord.createDelegate(this):Ext.emptyFn});this.toolbarDeleteButton=new Ext.Toolbar.Button({tooltip:this.localization.getStringForKey("TBrowser_TopToolbar_DeleteButton"),icon:this.imageUrl+'/images/del.gif',cls:'x-btn-icon',disabled:true,handler:!this.disableDeleteButton&&this.isEditable?this.deleteRecords.createDelegate(this):Ext.emptyFn});this.toolbarSaveButton=new Ext.Toolbar.Button({tooltip:this.localization.getStringForKey("TBrowser_TopToolbar_SaveButton"),icon:this.imageUrl+'/images/save.gif',cls:'x-btn-icon',disabled:true,handler:(this.isEditable&&!this.disableSaveButton)?this.saveRecordChanges.createDelegate(this):Ext.emptyFn});this.toolbarRevertButton=new Ext.Toolbar.Button({tooltip:this.localization.getStringForKey("TBrowser_TopToolbar_RevertButton"),icon:this.imageUrl+'/images/abort.gif',cls:'x-btn-icon',disabled:true,handler:(this.isEditable&&!this.disableSaveButton)?this.revertRecordChanges.createDelegate(this):Ext.emptyFn});if(!this.hideNewButton)toolbar.push(newButton);if(!this.hideDeleteButton)toolbar.push(this.toolbarDeleteButton);if(toolbar.length>0)toolbar.push({xtype:'tbseparator'});if(!this.hideSaveButton)toolbar.push(this.toolbarSaveButton);if(!this.hideRevertButton)toolbar.push(this.toolbarRevertButton);if(this.customButtons.length>0){if(!this.hideSaveButton||!this.hideRevertButton)toolbar.push({xtype:'tbseparator'});toolbar.push(this.customButtons);}
toolbar.push("->");if(this.enableSearching)toolbar.push(triggerColumnSelect);if(this.enableSearching)toolbar.push(triggerField);this.triggerField=triggerField;this.triggerColumnSelect=triggerColumnSelect;return toolbar;},topToolbarOnTriggerClear:function(reloadStore){this.triggerColumnSelect.reset();this.triggerField.reset();this.triggerField.triggers[0].hide();if(reloadStore){this.topToolbarOnTriggerSearch(true);}},topToolbarOnTriggerSearch:function(reset){var field=this.triggerColumnSelect.getValue();var value=this.triggerField.getValue();if((!reset&&field.length==0)||!this.triggerField.isValid()||(!reset&&value.length==0)){return;}
var filterSettings=this.queryDefinition.filterSettings;this.filters.clearFilters(true);filterSettings.clear();for(var i=0;i<this.hardFilters.length;i++)
{if(this.hardFilters[i]["value"]!=""){filterSettings.add(new brodos.dsi.elements.Filter({operation:this.hardFilters[i]["operation"]?this.hardFilters[i]["operation"]:"EQ",op1:this.hardFilters[i]["key"],op2:this.hardFilters[i]["value"]}));}}
this.queryDefinition.paging.fromBehind=false;this.queryDefinition.paging.maxcount=140;this.queryDefinition.paging.skip=0;this.grid.bottomToolbar.currentPage=1;if(!reset){filterSettings.add(new brodos.dsi.elements.Filter({operation:"LIKE",op1:field,op2:value,searchField:true}));this.triggerField.triggers[0].show();}
this.gridStore.load();},initializeBottomToolbar:function(){for(var i=0;i<this.hardFilters.length;i++)
{if(this.hardFilters[i]["value"]!=""){this.queryDefinition.filterSettings.add(new brodos.dsi.elements.Filter({operation:this.hardFilters[i]["operation"]?this.hardFilters[i]["operation"]:"EQ",op1:this.hardFilters[i]["key"],op2:this.hardFilters[i]["value"]}));}}
var bbar=new brodos.tbrowser.PagingToolbar({localization:this.localization,store:this.gridStore,subject:this.subject,pageSize:this.pagingPageSize,queryDefinition:this.queryDefinition,hidden:this.disablePaging,hideParent:this.disablePaging});return bbar;},initializeTabs:function(){if(!this.enableTabs){return;}
var tabs=this.metadata.tabs;var tabPanel=this.add({xtype:'tabpanel',cls:'tbrowser_tabpanel',border:false,bodyBorder:false,activeTab:0});tabs.each(function(tabItem){var tab=tabPanel.add({title:tabItem.name,dsiTab:tabItem});tab.on('activate',this.switchTab.createDelegate(this));},this);if(this.enableAllTab){var allTab=tabPanel.add({title:this.localization.getStringForKey('TBrowser_Tabs_AllTab')});allTab.on('activate',this.switchTab.createDelegate(this));}
if(this.enableUntabbedTab){var untabbedTab=tabPanel.add({title:this.localization.getStringForKey('TBrowser_Tabs_UntabbedTab'),dsiTab:new brodos.dsi.elements.Tab({untabbed:true})});untabbedTab.on('activate',this.switchTab.createDelegate(this));}},switchTab:function(tab){if(!this.enableTabs){return;}
this.queryDefinition.tab=tab.dsiTab;this.grid.getBottomToolbar().gotoPage(1);},onRecordChange:function(store,record,action){if(action=="edit"){this.enableSaveMenu();}},onGridStoreLoad:function(store,options){this.disableSaveMenu();},saveRecordChanges:function(){if(this.validateRecordChanges()){if(this.saveEntryChangesFn){this.saveEntryChangesFn.call(this);}
else{Ext.Msg.confirm(this.localization.getStringForKey("TBrowser_SaveChangesTitle"),this.localization.getStringForKey("TBrowser_SaveChangesText"),this.onSaveChanges.createDelegate(this));}}
else{Ext.Msg.alert(this.localization.getStringForKey("TBrowser_ValidateRecChangesTitle"),this.localization.getStringForKey("TBrowser_ValidateRecChangesText"));}},validateRecordChanges:function(){return true;},revertRecordChanges:function(){if(this.revertEntryChanges){this.revertEntryChanges.call(this);}
else{var onRevertChanges=function(btn,records){if(btn=="yes"){this.gridStore.rejectChanges();this.gridStore.load();this.disableSaveMenu();}}
Ext.Msg.confirm(this.localization.getStringForKey("TBrowser_RevertChangesTitle"),this.localization.getStringForKey("TBrowser_RevertChangesText"),onRevertChanges.createDelegate(this));}},onSaveChanges:function(btn){if(btn=="yes"){var records=this.gridStore.getModifiedRecords();if(records.length>0){var queryXml=this.createDataInputFromRecords(records);var oParams=new Object();oParams.action="store";oParams.subject=this.subject;oParams.language=this.localization.language;oParams.queryXml=queryXml;this.grid.loadMask.msg=this.localization.getStringForKey("TBrowser_LoadMask_Saving");this.grid.loadMask.show();Ext.Ajax.request({url:this.providerUrl,success:this.onSaveChangesSuccess.createDelegate(this),failure:this.onSaveChangesFailure.createDelegate(this),params:oParams});}}},onSaveChangesSuccess:function(response,options){this.fireTBrowserCommited(response);this.grid.loadMask.msg=this.localization.getStringForKey("TBrowser_LoadMask_Loading");this.reload();},onSaveChangesFailure:function(response,options){Ext.Msg.alert("Error","Changes couldn't be saved");},deleteRecords:function(){if(this.deleteSelectedEntriesFn){this.deleteSelectedEntriesFn.call(this);}
else{Ext.Msg.confirm(this.localization.getStringForKey("TBrowser_DeleteRecordsTitle"),this.localization.getStringForKey("TBrowser_DeleteRecordsText"),this.onDeleteRecords.createDelegate(this));}},onDeleteRecords:function(btn){if(btn=="yes"){var records=this.selectionModel.getSelections();if(records.length>0){var queryXml=this.createDataInputFromRecords(records,true);var oParams=new Object();oParams.action="store";oParams.subject=this.subject;oParams.language=this.localization.language;oParams.queryXml=queryXml;Ext.Ajax.request({url:this.providerUrl,success:this.onDeleteRecordsSuccess.createDelegate(this),failure:this.onDeleteRecordsFailure.createDelegate(this),params:oParams});}}},onDeleteRecordsSuccess:function(response,options){this.fireTBrowserDeleted(response);this.fireTBrowserCommited(response);this.reload();},onDeleteRecordsFailure:function(response,options){Ext.Msg.alert("Error","Changes couldn't be deleted");},enableSaveMenu:function(){if(!this.toolbarSaveButton){return;}
if(this.isEditable||this.enableSaveButton){this.toolbarSaveButton.enable();this.toolbarRevertButton.enable();}},disableSaveMenu:function(){if(!this.toolbarSaveButton){return;}
this.toolbarSaveButton.disable();this.toolbarRevertButton.disable();},switchDeleteButton:function(){if(!this.toolbarDeleteButton){return;}
if(this.selectionModel.getSelected()){this.toolbarDeleteButton.enable();}
else{this.toolbarDeleteButton.disable();}},addNewRecord:function(){if(this.disableNewButton){return;}
if(this.newEntryFn){this.newEntryFn.call(this);}
else{this.grid.stopEditing();this.gridStore.insert(0,this.gridStore.reader.createNewRecord());for(var i=0;i<this.columnModel.config.length;i++){if(!this.columnModel.config[i].hidden&&this.columnModel.config[i].editor){this.grid.startEditing(0,i);break;}}}
this.enableSaveMenu();},refreshFilters:function(gridFilter,changedFilter){this.topToolbarOnTriggerClear(false);var filters=this.queryDefinition.filterSettings;if(!filters){filters=new Ext.util.MixedCollection();}
var tmpFilters=new Ext.util.MixedCollection();filters.each(function(filterItem){if(!filterItem.type){if(filterItem.op1!=changedFilter.dataIndex&&("undefined"==typeof filterItem.searchField)&&changedFilter.active){tmpFilters.add(filterItem);}}},this);filters=tmpFilters;if(changedFilter.active){var filterValue=changedFilter.getValue();if(filterValue instanceof Array){for(var i=0;i<filterValue.length;i++){var filter=new brodos.dsi.elements.Filter({op1:changedFilter.dataIndex,op2:filterValue[i],operation:"LIKE"});filters.add(filter);}}
else if(typeof filterValue=="object"){if(filterValue.eq||filterValue.on){var filter=new brodos.dsi.elements.Filter({op1:changedFilter.dataIndex,op2:filterValue.on?filterValue.on.format('Y/m/d'):filterValue.eq,operation:'LIKE'});filters.add(filter);}
if(filterValue.gt||filterValue.after){var filter=new brodos.dsi.elements.Filter({op1:changedFilter.dataIndex,op2:filterValue.after?filterValue.after.format('Y/m/d'):filterValue.gt,operation:'GT'});filters.add(filter);}
if(filterValue.lt||filterValue.before){var filter=new brodos.dsi.elements.Filter({op1:changedFilter.dataIndex,op2:filterValue.before?filterValue.before.format('Y/m/d'):filterValue.lt,operation:'LT'});filters.add(filter);}}
else{var filter=new brodos.dsi.elements.Filter({op1:changedFilter.dataIndex,op2:changedFilter.getValue(),operation:'LIKE'});filters.add(filter);}}
for(var i=0;i<this.hardFilters.length;i++)
{if(this.hardFilters[i]["value"]!=""){filters.add(new brodos.dsi.elements.Filter({operation:this.hardFilters[i]["operation"]?this.hardFilters[i]["operation"]:"EQ",op1:this.hardFilters[i]["key"],op2:this.hardFilters[i]["value"]}));}}
this.queryDefinition.filterSettings=filters;this.queryDefinition.paging.fromBehind=false;this.queryDefinition.paging.maxcount=140;this.queryDefinition.paging.skip=0;this.grid.getBottomToolbar().gotoPage(1);},createDataInputFromRecords:function(records,removeRecords){var dataInput=new brodos.dsi.elements.DataInput();for(var i=0;i<records.length;i++){var record=records[i];var dataSet=new brodos.dsi.elements.Dataset({toDelete:removeRecords?true:false});if(!record.isNew){dataSet.key=record.id;}
else{if(!removeRecords){var refid=Math.floor(((Math.random()+Math.PI)*Math.E)*100000);if(!this.refids){this.refids=new Ext.util.MixedCollection();}
this.refids.add(refid,record);dataSet.refid=refid;}else{continue;}}
var changedFields=record.getChanges();for(var o=0,columnCounter=0;o<record.fields.items.length;o++,columnCounter++){var item=record.fields.items[o];if(item.name=='tB_checkboxField'||item.calc!=undefined){columnCounter--;}
if(!item.name||typeof changedFields[item.name]=="undefined"||item.name=="tB_checkboxField"||item.calc!=undefined){continue;}
var column=new brodos.dsi.elements.Column({name:item.name});var value=record.data[item.name];if(value instanceof Date){value=value.format("d.m.Y");}
else if(typeof value=="boolean"){if(value){value='1';}
else{value='0';}}
else if(typeof value=="number"){if(!value){value='0';}}
column.value=value;var currentColumn=this.queryDefinition.columns.get(columnCounter);if(currentColumn.type=='REFERENCE'&&currentColumn.refStore){var refRecordIndex=currentColumn.refStore.findExact(currentColumn.foreignfield,value);column.foreignkey=currentColumn.refStore.getAt(refRecordIndex).id;}
dataSet.columns.add(column);}
for(var k=0;k<this.hardFilters.length;k++)
{if(this.hardFilters[k]["value"]!=""){var column=new brodos.dsi.elements.Column({name:this.hardFilters[k]["key"],value:this.hardFilters[k]["value"]});dataSet.columns.add(column);}}
dataInput.elements.add(dataSet);}
return dataInput.createXml(true);},fireTBrowserLoaded:function(){this.fireEvent('tbrowserloaded',this);},fireTBrowserCommited:function(response){this.fireEvent('tbrowsercommited',response);},fireTBrowserDeleted:function(response){this.fireEvent('tbrowserdeleted',response);},reload:function(){var filterSettings=this.queryDefinition.filterSettings;filterSettings.clear();for(var i=0;i<this.hardFilters.length;i++)
{if(this.hardFilters[i]["value"]!=""){filterSettings.add(new brodos.dsi.elements.Filter({operation:this.hardFilters[i]["operation"]?this.hardFilters[i]["operation"]:"EQ",op1:this.hardFilters[i]["key"],op2:this.hardFilters[i]["value"]}));}}
this.queryDefinition.paging.fromBehind=false;this.queryDefinition.paging.maxcount=140;this.queryDefinition.paging.skip=0;this.grid.bottomToolbar.currentPage=1;this.gridStore.commitChanges();this.gridStore.reload();if(!this.disableDeleteButton&&this.enableCheckboxSelection){this.grid.getSelectionModel().clearSelections();}},resetSorting:function(){var cind=this.grid.getColumnModel().findColumnIndex(this.grid.store.sortInfo.field);if(cind>-1){this.grid.view.fly(this.grid.view.getHeaderCell(cind)).removeClass(["sort-asc","sort-desc"]);}
this.queryDefinition.orderList.columns.items.clear();delete this.gridStore.sortInfo;this.reload();}});Ext.reg('tbrowser',brodos.tbrowser.Browser);
