/*
 * 
 * Copyright(c) 2007-2011, LiNetCo GmbH, CN-Consult GmbH.
 * 
 * This code is propietary, you have no rights to use it, besides using it in the product this is part of.
 */


Ext.namespace("gwf.util");Array.prototype.contains=function(obj){var i;for(i=0;i<this.length;i++){if(this[i]===obj){return true;}}
return false;};if(typeof console=="undefined")
{console={};console.log=function(_msg)
{};console.info=console.log;console.debug=console.log;console.warn=console.log;console.error=console.log;console.count=console.log;}
String.prototype.startsWith=function(_string)
{return this.indexOf(_string)===0;};String.prototype.endsWith=function(_string)
{var d=this.length-_string.length;return d>=0&&this.lastIndexOf(_string)===d;};String.prototype.stripTags=function()
{return this.replace(/<\/?[^>]+>/gi,'');};gwf.util.clone=function(o){if(!o||'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(v&&'object'===typeof v){c[p]=gwf.util.clone(v);}
else{c[p]=v;}}}
return c;};gwf.util.isEmptyObject=function(object)
{for(var i in object){return false;}
return true;};gwf.util.lowercaseHtmlTags=function(_html)
{if(_html===null)return _html;var newhtml=_html.replace(new RegExp("(<(\/)?([^<>]+)>)","g"),function(word){return word.toLowerCase();});return newhtml;};Math.absfloor=function(_value)
{if(_value>0)return Math.floor(_value);else return Math.ceil(_value);};

Ext.namespace("gwf","gwf.plugins");gwf.plugins.OOSubmit=function()
{this.init=function(_object)
{var form=null;if(typeof _object.form=="object")
{form=_object.form;}
else form=_object;form.oldSubmit=form.submit;form.submit=function(options)
{this.doAction('oosubmit',options);return this;};};};Ext.form.DateField.prototype.getSubmitValue=function()
{var v=this.getValue();if(v!=='')
{var date=new Date(v);return date.format("Y-m-d");}
return v;};gwf.plugins.OOSubmitAction=function(form,options){gwf.plugins.OOSubmitAction.superclass.constructor.call(this,form,options);};Ext.extend(gwf.plugins.OOSubmitAction,Ext.form.Action.Submit,{type:'oosubmit',run:function(){var o=this.options;var method=this.getMethod();var isPost=method=='POST';var params=this.options.params||{};if(isPost)Ext.applyIf(params,this.form.baseParams);var itemEach=function(field)
{if(!field.disabled&&field.xtype!=='displayfield')
{if(field.items&&typeof field.getSubmitValue!="function")
{field.items.each(itemEach);}
else
{if(typeof field.getSubmitValue=="function")
params[field.getName()]=field.getSubmitValue();else
params[field.getName()]=field.getValue();}}};this.form.items.each(itemEach);if(!isPost)params=Ext.urlEncode(params);if(o.clientValidation===false||this.form.isValid()){Ext.Ajax.request(Ext.apply(this.createCallback(o),{url:this.getUrl(!isPost),method:method,params:params,isUpload:this.form.fileUpload}));}else if(o.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false);}}});Ext.form.Action.ACTION_TYPES['oosubmit']=gwf.plugins.OOSubmitAction;

Ext.namespace("gwf","gwf.plugins");gwf.plugins.AnimatedWindowShow=function()
{this.init=function(_window)
{var w=_window;console.log("Shadow on plugin init: "+w.shadow);console.log(this.rendered);w.enhancedShadow=true;w.realignShadow=function()
{var el=this.getEl();if(this.myShadow)
this.myShadow.realign(el.getX(),el.getY(),el.getWidth(),el.getHeight());};w.on("bodyresize",w.realignShadow,w);w.oldShow=w.show;w.show=function(animateTarget,callback,scope)
{if(animateTarget)
{if(animateTarget===true)
{if(!this.rendered)
{if(!this.x)var windowNeedsCenter=true;else var origPosition=[this.x,this.y];this.setPosition(-10000,-10000);this.render(Ext.getBody());var el=this.getEl();el.hide();if(this.enhancedShadow)
{this.myShadow=new Ext.Shadow();this.myShadow.show(el);this.myShadowEl=Ext.get(this.myShadow.el);this.myShadowEl.hide();}
if(!windowNeedsCenter)this.setPosition(origPosition);else this.center();this.realignShadow();if(this.enhancedShadow)
{w.dd.origStartDrag=w.dd.startDrag;w.dd.startDrag=function()
{this.win.myShadowEl.hide();this.origStartDrag();};w.dd.origEndDrag=w.dd.endDrag;w.dd.endDrag=function()
{this.origEndDrag();this.win.realignShadow();this.win.myShadowEl.show(true);};}}
else
{var el=this.getEl();}
if(this.fireEvent("beforeshow",this)===false){return;}
this.hidden=false;this.beforeShow();el.show(true);this.myAfterShow();if(this.enhancedShadow)
{this.myShadowEl.show(true);this.myShadowEl.dom.style.zIndex=el.dom.style.zIndex-5;}}
else if(scope)
{this.oldShow(animateTarget,callback,scope);}
else if(callback)this.oldShow(animateTarget,callback);else this.oldShow(animateTarget);}
else this.oldShow();};w.oldHide=w.hide;w.hide=function(animateTarget,callback,scope)
{if(this.myShadowEl)this.myShadowEl.hide();if(scope)this.oldHide(animateTarget,callback,scope);else if(callback)this.oldHide(animateTarget,callback);else if(animateTarget)this.oldHide(animateTarget);else this.oldHide();};w.myAfterShow=function()
{this.proxy.hide();this.el.setStyle('display','block');if(this.maximized){this.fitContainer();}
if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this);}
this.doConstrain();if(this.layout){this.doLayout();}
if(this.keyMap){this.keyMap.enable();}
this.toFront();this.updateHandles();this.fireEvent("show",this);};};};

Ext.namespace("gwf","gwf.plugins");gwf.plugins.FormClear=function()
{this.init=function(_object)
{if(typeof _object.form=="object")
{_object.form.clear=function()
{var data={};this.items.each(function(item)
{data[item.getName()]=null;});var emptyRecord=new Ext.data.Record(data);this.loadRecord(emptyRecord);};_object.clear=function()
{var data={};this.items.each(function(item)
{data[item.getName()]=null;});var emptyRecord=new Ext.data.Record(data);this.form.loadRecord(emptyRecord);};}
else
{_object.clear=function()
{var data={};this.items.each(function(item)
{data[item.getName()]=null;});var emptyRecord=new Ext.data.Record(data);this.loadRecord(emptyRecord);};}};};

Ext.namespace("gwf","gwf.plugins");gwf.plugins.StoreBackgroundJobs=function(_what)
{this.loadText="Lade";this.updateText="Aktualisiere";this.what=_what;this.firstLoadDone=false;this.jobId=0;this.init=function(_store)
{_store.on("beforeload",this.beforeLoad,this);_store.on("load",this.afterLoad,this);_store.on("loadexception",this.afterLoad,this);};this.beforeLoad=function()
{if(this.firstLoadDone==false)
{this.jobId=gwf.App.addBackgroundJob(this.loadText+' '+this.what+" ...");this.firstLoadDone=true;}
else this.jobId=gwf.App.addBackgroundJob(this.updateText+' '+this.what+" ...");};this.afterLoad=function()
{gwf.App.completeBackgroundJob(this.jobId);};};

Ext.namespace("gwf","gwf.Login");gwf.Login.required=true;gwf.Login.challenge="You have to set a proper challenge!";

Ext.namespace("gwf","gwf.modules");gwf.modules.TYPE={unknownModule:0,genericModule:1,toolbarModule:2,sidePanelModule:4};gwf.modules.Base=function(_type,_config)
{this.app=null;this._type=gwf.modules.TYPE.unknownModule;this.config={priority:1,name:'unnamed'};Ext.apply(this.config,_config);this.setType=function(_type)
{var typeValid=false;for(typeIndex in gwf.modules.TYPE)
{if(gwf.modules.TYPE[typeIndex]==_type)
{this._type=_type;typeValid=true;}}
if(!typeValid)alert("Unknown Type specified for module! Add needed types to gwf.modules.TYPE!");};this.type=function()
{return this._type;};this.name=function()
{return this.config.name;};this.priority=function()
{return this.config.priority;};this.setApplication=function(_application)
{this.app=_application;};this.setType(_type);this.initModule=function()
{};this.moduleDeactivated=function()
{};};Ext.extend(gwf.modules.Base,Ext.util.Observable,{});

Ext.namespace("gwf","gwf.modules");gwf.modules.Generic=function(_options)
{var genericOptions={};Ext.apply(genericOptions,_options);gwf.modules.Generic.superclass.constructor.call(this,gwf.modules.TYPE.genericModule,genericOptions);this.enhanceApplication=function()
{};};Ext.extend(gwf.modules.Generic,gwf.modules.Base,{});

Ext.namespace("gwf","gwf.modules");gwf.modules.Toolbar=function(_config)
{var toolbarConfig={};Ext.apply(toolbarConfig,_config);gwf.modules.Toolbar.superclass.constructor.call(this,gwf.modules.TYPE.toolbarModule,toolbarConfig);this.enhanceToolbar=function(_toolbar)
{};};Ext.extend(gwf.modules.Toolbar,gwf.modules.Base,{});

Ext.namespace("gwf","gwf.modules");gwf.modules.SidePanel=function(_config)
{var sidePanelConfig={preferredPosition:'left',title:'Unnamed Module',panelIsUpdatable:false,iconCls:undefined,panelHasTopToolbar:false};Ext.apply(sidePanelConfig,_config);this.alreadyRendered=false;this.panel=null;gwf.modules.SidePanel.superclass.constructor.call(this,gwf.modules.TYPE.sidePanelModule,sidePanelConfig);this.createInfoPanelContent=function(element)
{this.app.errorMsg("Module","createInfoPanelContent must be implemented!");};this.updateInfoPanelContent=function(element)
{};};Ext.extend(gwf.modules.SidePanel,gwf.modules.Base,{preferredPosition:function()
{return this.config.preferredPosition;},infoPanel:function()
{if(!this.panel)
{var panelConfig={title:this.config.title,html:'',collapsible:true,titleCollapse:true,collapsed:true,iconCls:this.config.iconCls,autoScroll:true};if(this.config.panelIsUpdatable==true)
panelConfig.tools=[{id:'refresh',handler:this.onPanelRefresh,scope:this}];if(this.config.panelHasTopToolbar==true)
panelConfig.tbar=new Ext.Toolbar({});this.panel=new Ext.Panel(panelConfig);this.panel.on("beforeexpand",this.infoPanelRender,this);}
return this.panel;},topToolbar:function()
{if(this.config.panelHasTopToolbar)return this.panel.getTopToolbar();else return null;},infoPanelRender:function(_panel)
{if(this.alreadyRendered==false)
{this.createInfoPanelContent(_panel.body);this.alreadyRendered=true;}},onPanelRefresh:function()
{this.updateInfoPanelContent(this.panel.body);}});

Ext.namespace("gwf");gwf.Application=function(_options)
{this.executingBackgroundJobsText='Führe {0} Hintergrundaufträge aus...';this.options={headerHeight:52,footerHeight:20,leftWidth:100,rightWidth:0,splashHtml:'',backendUrl:'',headerIncludesToolbar:false,loginUrl:'',loginWindowConfig:{},loginFormConfig:{},loginUseChallenge:false,loginHashPassword:false,loginPasswordFieldName:'password',loginFocusFieldName:'',trackActiveModules:false,autoCollapseModulePanels:false,plugins:new Array()};gwf.Application.superclass.constructor.call(this);this.addEvents('afterLayoutRender','beforeModuleAdd','afterModuleAdd','afterModulesLoaded','loginSucceeded','centerResize');gwf.App=this;this.msgContainer=null;this.messageDisplayTime=1;this.dialogContainerNum=0;this.backgroundJobs=[];this.numUnfinishedBackgroundJobs=0;this.defaultPanel=null;this.iframe=null;this._headerToolbar=null;this.headerContent="";this.footerContent="";this.sealedForModules=false;this.currentModule="";Ext.apply(this.options,_options);this.modules=[];if(_options.stateProvider)Ext.state.Manager.setProvider(_options.stateProvider);else Ext.state.Manager.setProvider(new Ext.state.CookieProvider());Ext.QuickTips.init();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('');};this.splashContainer=Ext.DomHelper.insertFirst(document.body,{id:'app_splash'},true);this.splashContainer.update(this.options.splashHtml);this.showContextMenu=function(e)
{e.stopEvent();};this.onLoginWindowShow=function()
{console.log("Shadoooooowww!");};this.doLogin=function()
{this.loginFormPanel.getForm().submit();this.loginFormPanel.getEl().mask("Anmeldung...");};this.loginActionComplete=function(_form,_action)
{if(_action.type=='submit'||_action.type=='oosubmit')
{this.loginWindow.close();this.fireEvent("loginSucceeded",_action.result);delete this.loginWindow;delete this.loginFormPanel;}};this.loginActionFailed=function(_form,_action)
{this.loginFormPanel.getEl().unmask();var passwordField=this.loginFormPanel.getForm().findField(this.options.loginPasswordFieldName);if(passwordField)passwordField.focus(true);};this.sortModule=function(_moduleA,_moduleB)
{return _moduleB.priority()-_moduleA.priority();};this.initializeModule=function(_module)
{if(_module.type()==gwf.modules.TYPE.sidePanelModule)
{this.initializeSidePanelModule(_module);}
if(_module.type()==gwf.modules.TYPE.toolbarModule)
{if(this.options.headerIncludesToolbar==true)
{_module.enhanceToolbar(this.headerToolbar());}
else alert("Application misimplementation: Tried to add a toolbar module, but the application has no toolbar! (Set config option headerIncludesToolbar to true)");}
if(_module.type()==gwf.modules.TYPE.genericModule)
{_module.enhanceApplication();}};this.initializeSidePanelModule=function(_module)
{var container=null;container=Ext.getCmp("app-"+_module.preferredPosition());if(!container)
{if(this.left)container=Ext.getCmp("app-left");else if(this.right)container=Ext.getCmp("app-right");}
if(container)
{var panel=_module.infoPanel();if(panel)container.add(panel);container.doLayout();if(!this.defaultPanel){this.defaultPanel=panel;}}};this.onCenterResize=function(_component,_newWidth,_newHeight)
{this.fireEvent("centerResize",_newWidth,_newHeight);};this.initPlugins=function()
{if(Ext.isArray(this.options.plugins))
{for(var i=0,len=this.options.plugins.length;i<len;i++)
{this.options.plugins[i].init(this);}}
else
{this.plugins.init(this);}};this.trackActiveModule=function(_module)
{if(this.options.trackActiveModules==true)
{if(typeof _module=="undefined")
{alert("A module has to pass this to prepareContentElement()!");return false;}
else if(typeof _module=="object")
{if(_module!=this.currentModule)
{if(this.currentModule)
{this.currentModule.moduleDeactivated();if(this.options.autoCollapseModulePanels&&this.defaultPanel&&!this.defaultPanelInitialCollapseDone&&this.defaultPanel.collapsed==false&&(_module===null||(typeof _module.infoPanel!="function"||(typeof _module.infoPanel=="function"&&_module.infoPanel()!=this.defaultPanel))))
{this.defaultPanel.collapse();this.defaultPanelInitialCollapseDone=true;}
if(this.options.autoCollapseModulePanels==true&&typeof this.currentModule.infoPanel=="function")
{this.currentModule.infoPanel().collapse();}}
this.currentModule=_module;}}
else
{alert("An object has to be passed to prepareContentElement()!");return false;}}
return true;};this.setStatusTextImpl=function(_msg)
{};this.createLoginFormFieldItems=function()
{};this.initPlugins();};Ext.extend(gwf.Application,Ext.util.Observable,{createLayout:function()
{var layoutItems=new Array();if(this.options.headerHeight>0)
{var height=this.options.headerHeight;if(this.options.headerIncludesToolbar)height+=25;layoutItems.push({region:'north',id:'app-header',height:height,collapsible:false,html:this.headerContent,border:false});}
if(this.options.footerHeight>0)
{layoutItems.push({region:'south',id:'app-footer',height:this.options.footerHeight,collapsible:false,html:this.footerContent});}
if(this.options.leftWidth>0)
{layoutItems.push({region:'west',id:'app-left',width:this.options.leftWidth,layout:'accordion',layoutConfig:{animate:true},collapsible:true,collapseMode:'mini',hideCollapseTool:true,split:true,border:false});}
if(this.options.rightWidth>0)
{layoutItems.push({region:'east',id:'app-right',width:this.options.rightWidth,layout:'accordion',collapsible:true,split:true});}
layoutItems.push({region:'center',id:'app-center',layout:'fit'});this.splashContainer.remove();this.viewport=new Ext.Viewport({layout:'border',items:layoutItems,stateId:'viewport',borders:false});this.center=Ext.getCmp("app-center");this.center.on("resize",this.onCenterResize,this);this.centerElement=this.center.getEl().first().first();if(this.options.headerHeight>0)
{this.header=Ext.getCmp("app-header");this.headerElement=Ext.getCmp("app-header").getEl().first().first();this.headerElement.on("contextmenu",this.showContextMenu,this);}
if(this.options.footerHeight>0)
{this.footer=Ext.getCmp("app-footer");this.footerElement=Ext.getCmp("app-footer").getEl().first().first();this.footerElement.on("contextmenu",this.showContextMenu,this);}
if(this.options.leftWidth>0)
{this.left=Ext.getCmp("app-left");this.leftElement=Ext.getCmp("app-left").getEl().first().first();this.leftElement.on("contextmenu",this.showContextMenu,this);}
if(this.options.rightWidth>0)
{this.left=Ext.getCmp("app-right");this.rightElement=Ext.getCmp("app-right").getEl().first().first();this.rightElement.on("contextmenu",this.showContextMenu,this);}
if(this.options.headerIncludesToolbar)
{this._headerToolbar=new Ext.Toolbar({renderTo:this.headerElement,autoWidth:true});this._headerToolbar.render();}
this.fireEvent("afterLayoutRender");},headerToolbar:function()
{return this._headerToolbar;},setHeader:function(_content)
{if(this.headerElement)this.headerElement.update(_content);else this.headerContent=_content;},setFooter:function(_content)
{if(this.footerElement)this.footerElement.update(_content);else this.footerContent=_content;},expandDefaultPanel:function()
{this.moduleAddingFinished();if(this.defaultPanel){this.defaultPanel.expand();}
var left=Ext.getCmp("app-left");if(left&&left.items.getCount()==null)
{left.collapse();}},addModule:function(_module)
{if(this.sealedForModules==true)
{alert("Application misimplementation: Tried to add a module after all modules where added.");}
else
{if(this.fireEvent("beforeModuleAdd",_module)===false)
{return;}
else
{if(typeof _module.type=="function"&&typeof _module.setApplication=="function"&&typeof _module.initModule=="function")
{_module.setApplication(this);this.modules.push(_module);_module.initModule();if(_module.priority()==0)
{this.initializeModule(_module);}
this.fireEvent("afterModuleAdd",_module);}
else
{alert("The to be added module does not seem to be a correctly implemented module! (missing type(), setApplication() or initModule() functions)");}}}},findModuleByName:function(_name)
{var i=0;for(i=0;i<this.modules.length;i++)
{if(this.modules[i].name()==_name)
{return this.modules[i];}}
return null;},moduleAddingFinished:function()
{this.sealedForModules=true;var genericModules=new Array();var toolbarModules=new Array();var sidePanelModules=new Array();var module=null;console.log(this.modules);var moduleNumber=this.modules.length;for(var moduleIndex=0;moduleIndex<moduleNumber;moduleIndex++)
{module=this.modules[moduleIndex];if(module.type()==gwf.modules.TYPE.sidePanelModule)sidePanelModules.push(module);if(module.type()==gwf.modules.TYPE.toolbarModule)toolbarModules.push(module);if(module.type()==gwf.modules.TYPE.genericModule)genericModules.push(module);}
genericModules.sort(this.sortModule);toolbarModules.sort(this.sortModule);sidePanelModules.sort(this.sortModule);this.modules.sort(this.sortModule);var moduleArrays=[genericModules,toolbarModules,sidePanelModules];for(var moduleArrayIndex=0;moduleArrayIndex<moduleArrays.length;moduleArrayIndex++)
{var moduleArray=moduleArrays[moduleArrayIndex];var moduleArrayLength=moduleArray.length;for(moduleIndex=0;moduleIndex<moduleArrayLength;moduleIndex++)
{module=moduleArray[moduleIndex];if(module.priority()!==0)
{this.initializeModule(module);}}}
this.fireEvent("afterModulesLoaded");},addInfoPanel:function(_panel,_position)
{if(_position=="left"&&this.left)
{this.left.add(_panel);}
else if(_position=="right"&&this.right)
{this.right.add(_panel);}},msg:function(title,format,messageDisplayTime)
{if(!this.msgContainer){this.msgContainer=Ext.DomHelper.insertFirst(document.body,{id:'app_msg-div'},true);}
this.msgContainer.alignTo(Ext.getBody(),'t-t');var m=null;if(format)
{var s=String.format.apply(String,Array.prototype.slice.call(arguments,1));m=Ext.DomHelper.append(this.msgContainer,{html:this.createBox(title,s)},true);}
else
{m=Ext.DomHelper.append(this.msgContainer,{html:this.createBox("Debug",title)},true);}
if(messageDisplayTime)m.slideIn('t').pause(messageDisplayTime).ghost("t",{remove:true});else m.slideIn('t').pause(this.messageDisplayTime).ghost("t",{remove:true});},errorMsg:function(title,message)
{this.msg("<span style=\"color:red\">"+title+"</span>",message,5);},aquireDefaultIFrame:function()
{if(this.iframe==null){this.iframe=Ext.DomHelper.insertFirst(Ext.getBody(),{tag:'iframe',style:'width:0px; height:0px;'});}
return(this.iframe);},downloadFile:function(url)
{var iframe=this.aquireDefaultIFrame();iframe.src='';iframe.src=url;},aquireDialogContainer:function()
{var id="gwf-d-"+this.dialogContainerNum;this.dialogContainerNum++;return Ext.DomHelper.insertFirst(document.body,{id:id,cls:'app_dialog'},true);},releaseDialogContainer:function(element)
{element.remove();},prepareContentElement:function(_module)
{if(!this.trackActiveModule(_module))return;if(this.lastContentWasElement==true)
{this.centerElement.update('');return this.centerElement;}
else
{this.lastContentWasElement=true;var f=this.center.items.first();while(f)
{this.center.remove(f,true);f=this.center.items.first();}
this.tmpContentPanel=this.center.add(new Ext.Panel({autoScroll:true,frame:false,border:false}));this.center.doLayout();this.centerElement=this.tmpContentPanel.getEl().first().first();return this.centerElement;}},prepareContentPanel:function(_module)
{if(!this.trackActiveModule(_module))return;if(this.lastContentWasElement==true)
{this.centerElement.update('');this.tmpContentPanel.destroy();this.center.remove(this.tmpContentPanel);}
this.lastContentWasElement=false;var f=this.center.items.first();while(f)
{this.center.remove(f,true);f=this.center.items.first();}
return this.center;},backendUrl:function(_class,_action,_params)
{if(_class&&_action)
{return this.options.backendUrl+"?class="+_class+"&action="+_action;}
else return this.options.backendUrl;},setStatusText:function(_msg)
{this.setStatusTextImpl(_msg);},addBackgroundJob:function(_msg)
{var jobId=this.backgroundJobs.length;this.numUnfinishedBackgroundJobs++;this.backgroundJobs[jobId]={msg:_msg,finished:false};if(this.numUnfinishedBackgroundJobs>1)
{this.setStatusTextImpl(String.format(this.executingBackgroundJobsText,this.numUnfinishedBackgroundJobs));}
else
{this.setStatusTextImpl(_msg);}
return jobId;},completeBackgroundJob:function(_id)
{if(this.backgroundJobs[_id].finished==false)
{this.numUnfinishedBackgroundJobs--;this.backgroundJobs[_id].finished=true;if(this.numUnfinishedBackgroundJobs==0)
{this.setStatusTextImpl("");}
else if(this.numUnfinishedBackgroundJobs==1)
{for(var i=0;i<this.backgroundJobs.length;i++)
{if(this.backgroundJobs[i].finished==false)
{this.setStatusTextImpl(this.backgroundJobs[i].msg);}}}
else
{this.setStatusTextImpl(String.format(this.executingBackgroundJobsText,this.numUnfinishedBackgroundJobs));}}},login:function()
{if(gwf.Login.required==true)
{var windowConfig={layout:'fit',width:400,closeAction:'hide',title:'Anmeldung',height:300,stateId:'login-window',hideMode:'visibility',keys:{key:Ext.EventObject.ENTER,fn:this.doLogin,scope:this},shadow:false,plugins:[new gwf.plugins.AnimatedWindowShow()]};Ext.apply(windowConfig,this.options.loginWindowConfig);if(!windowConfig.items)windowConfig.items=new Array();var formConfig={labelWidth:75,url:this.options.loginUrl,frame:true,defaultType:'textfield',items:this.createLoginFormFieldItems(),border:false,hideMode:'visibility',baseParams:{_method:'cool',test:'two'},plugins:[new gwf.plugins.OOSubmit()],buttons:[{text:'Anmelden',handler:this.doLogin,scope:this}],buttonAlign:'center'};Ext.apply(formConfig,this.options.loginFormConfig);this.loginFormPanel=new Ext.FormPanel(formConfig);this.loginFormPanel.getForm().on("actioncomplete",this.loginActionComplete,this);this.loginFormPanel.getForm().on("actionfailed",this.loginActionFailed,this);windowConfig.items.push(this.loginFormPanel);this.loginWindow=new Ext.Window(windowConfig);this.loginWindow.show(true);if(this.options.loginUseChallenge)
{var loginField=this.loginFormPanel.getForm().findField(this.options.loginPasswordFieldName);if(loginField)
{if(this.options.loginHashPassword)
{loginField.getSubmitValue=function()
{var pwd=this.getValue();return gwf.helpers.md5(gwf.helpers.md5(pwd)+gwf.Login.challenge);};}
else
{loginField.getSubmitValue=function()
{var pwd=this.getValue();return gwf.helpers.md5(pwd+gwf.Login.challenge);};}}}
else if(this.options.loginHashPassword)
{var loginField=this.loginFormPanel.getForm().findField(this.options.loginPasswordFieldName);if(loginField)
{loginField.getSubmitValue=function()
{var pwd=this.getValue();return gwf.helpers.md5(pwd);};}}
if(this.options.loginFocusFieldName!=='')
{this.loginFormPanel.getForm().findField(this.options.loginFocusFieldName).focus(false,100);}}
else this.fireEvent("loginSucceeded");}});

Ext.namespace("gwf","gwf.Canvas");gwf.Canvas=function(_element,_config)
{this.element=Ext.get(_element);this.config={};Ext.apply(this.config,_config);this.color="black";this.writeCache="";this.pixelTemplate=Ext.DomHelper.createTemplate({tag:'div',style:{width:"1px",height:"1px","background-color":"{color}",position:"absolute",left:"{x}px",top:"{y}px"}});this.pixelTemplate.compile();this.divTemplate=Ext.DomHelper.createTemplate({tag:'div',style:{width:"{w}px",height:"{h}px","background-color":"{color}",position:"absolute",left:"{x}px",top:"{y}px"}});this.divTemplate.compile();this.clear=function()
{this.element.update("");};this.flush=function()
{this.element.insertHtml("beforeEnd",this.writeCache,false);this.writeCache="";};this.setPenColor=function(color)
{this.penColor=color;};this.setPixel=function(x,y)
{this.pixelTemplate.append(this.element,{x:x,y:y,color:this.penColor});};this.drawHLine=function(x0,y,x1)
{var width=x1-x0+1;this.writeCache+=this.divTemplate.apply({x:x0,y:y,w:width,h:1,color:this.penColor});};this.drawVLine=function(x,y0,y1)
{var height=y1-y0+1;this.writeCache+=this.divTemplate.apply({x:x,y:y0,w:1,h:height,color:this.penColor});};this.drawXLine=function(x0,y0,x1,y1)
{var t;if(x1<x0){t=x0;x0=x1;x1=t;t=y0;y0=y1;y1=t;}
var dx=x1-x0;var dy=Math.abs(y1-y0);var ystep=1;if(y1<y0)ystep=-1;var error=dy/2;var x=x0;var y=y0;var xbstart=x;while(x<=x1){error+=dy;if(error>dx){if(xbstart!=x){this.drawHLine(xbstart,y,x-1);}
y+=ystep;error-=dx;xbstart=x;}
x++;}
if(xbstart!=x){this.drawHLine(xbstart,y,x-1);}};this.drawYLine=function(x0,y0,x1,y1)
{var t;if(y1<y0){t=x0;x0=x1;x1=t;t=y0;y0=y1;y1=t;}
var dx=Math.abs(x1-x0);var dy=y1-y0;var xstep=1;if(x1<x0)xstep=-1;var error=dx/2;var x=x0;var y=y0;var ybstart=y;while(y<y1){error+=dx;if(error>dy){if(ybstart!=y){this.drawVLine(x,ybstart,y-1);}
ybstart=y;x+=xstep;error-=dy;}
y++;}
if(ybstart!=y){this.drawVLine(x,ybstart,y-1);}};this.drawLine=function(x0,y0,x1,y1)
{var dx=Math.abs(x1-x0);var dy=Math.abs(y1-y0);if(dx>=dy){this.drawXLine(x0,y0,x1,y1);}else{this.drawYLine(x0,y0,x1,y1);}};};

Ext.namespace("gwf","gwf.helpers");gwf.helpers.ActionExecutor=function(_config)
{this.httpProxy=null;this.jsonReader=null;this.actionRunning=false;this.jobId=0;this.useScriptTagProxy=false;if(_config)
{if(_config.successSilent||_config.silent)this.beSuccessSilent=true;else this.beSuccessSilent=false;if(_config.failureSilent||_config.silent)this.beFailureSilent=true;else this.beFailureSilent=false;if(_config.useScriptTagProxy&&_config.useScriptTagProxy==true)
{this.useScriptTagProxy=true;}}
this.messageText="Lade daten";this.messageTitleText="Aktion";this.successMessageText="Die Aktion wurde erfolgreich ausgeführt!";this.failureMessageText="Es ist ein Fehler aufgetreten:";this.noDataReceivedMessageText="Keine Daten empfangen";this.unknownErrorText="Unbekannter Fehler.";this.addEvents("success","failure");this.executeUrl=function(_url,_params,_message,_eventId)
{if(!this.actionRunning)
{var message;if(!_message)message=this.messageText;else message=_message;this.jobId=gwf.App.addBackgroundJob(message);this.actionRunning=true;this.eventId=_eventId;this.params=_params;if(this.rootName==null)this.rootName="data";this.jsonReader=new Ext.data.JsonReader({root:this.rootName,totalProperty:'totalCount',successProperty:'success'});if(this.useScriptTagProxy)
{this.proxy=new Ext.data.ScriptTagProxy({url:_url});}
else
{this.proxy=new Ext.data.HttpProxy({url:_url});this.proxy.setUrl(_url);}
this.proxy.doRequest("read",null,_params||{},this.jsonReader,this.onActionFinished,this);}};this.execute=function(_classname,_action,_params,_message,_eventId)
{this.rootName=_classname+"s";this.executeUrl(gwf.App.backendUrl(_classname,_action,_params),_params,_message,_eventId);};this.actionFailed=function(message)
{if(!this.beFailureSilent)gwf.App.errorMsg(this.messageTitleText,this.failureMessageText+"<br/>"+message);gwf.App.completeBackgroundJob(this.jobId);this.fireEvent("failure",message,this.eventId);};this.onActionFinished=function(record,arg,success)
{this.actionRunning=false;this.rootName=null;var jsonData=this.jsonReader.jsonData;if(jsonData)
{if(jsonData.success==true)
{gwf.App.completeBackgroundJob(this.jobId);if(!this.beSuccessSilent)
gwf.App.msg(this.messageTitleText,this.successMessageText);this.fireEvent("success",jsonData,this.eventId);}
else
{if(jsonData.errors)
{this.actionFailed(jsonData.errors);}
else
{this.actionFailed(this.unknownErrorText);}}}
else
{this.actionFailed(this.noDataReceivedMessageText);}};};Ext.extend(gwf.helpers.ActionExecutor,Ext.util.Observable);

Ext.namespace("gwf","gwf.helpers");gwf.helpers.MultiActionExecutor=function(_actionExecutorConfigOptions)
{this.addEvents("success","failure","actionSuccess");this.initText="Initialisiere...";this.actionExecutorConfigOptions={successSilent:true,continueOnFailure:false};Ext.apply(this.actionExecutorConfigOptions,_actionExecutorConfigOptions);this.numActions=0;this.actionData=null;this.execute=function(_title,_class,_action,_actions)
{this.actionData=_actions;this.numActions=_actions.length;this.actionsClass=_class;this.actionsAction=_action;this.currentAction=0;Ext.MessageBox.show({title:_title,progressText:this.initText,width:240,progress:true,closable:false});this.nextAction();};this.nextAction=function()
{if(this.currentAction>=this.numActions)
{Ext.MessageBox.hide();this.fireEvent("success");}
else
{var actionText=this.actionData[this.currentAction].text;var params=this.actionData[this.currentAction].params;Ext.MessageBox.updateProgress(this.currentAction/this.numActions,actionText);var executor=new gwf.helpers.ActionExecutor(this.actionExecutorConfigOptions);executor.on("success",this.excutorSuccess,this);executor.on("failure",this.actionFailure,this);executor.execute(this.actionsClass,this.actionsAction,params);}};this.excutorSuccess=function(_jsonData)
{this.fireEvent("actionSuccess",this.actionData[this.currentAction],_jsonData);this.currentAction++;this.nextAction();};this.actionFailure=function(_jsonData)
{this.fireEvent("failure",this.actionData[this.currentAction],_jsonData);if(this.actionExecutorConfigOptions.continueOnFailure==true)
{this.currentAction++;this.nextAction();}
else
{Ext.MessageBox.hide();}};};Ext.extend(gwf.helpers.MultiActionExecutor,Ext.util.Observable);

Ext.namespace("gwf","gwf.helpers","gwf.helpers.JsonStore");gwf.helpers.JsonStore.Create=function(classname,action,readerDef,_params)
{var params={totalProperty:"totalCount",idField:"id",root:classname+"s"};Ext.apply(params,_params);var jsonStore=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:gwf.App.backendUrl(classname,action)}),baseParams:params.requestParams,reader:new Ext.data.JsonReader({root:params.root,totalProperty:params.totalProperty,id:params.idField},readerDef)});return jsonStore;};

Ext.namespace("gwf","gwf.helpers");gwf.helpers.Template=function(element,html){this.tags={};this.formats={};this.element=element;this.html=html;this.rendered=false;this.addTag=function(tag)
{tag=tag.replace("}","");tag=tag.replace("{","");var elements=tag.split(":");var tagname=elements[0];if(elements.size!=1){gwf.helpers.Template.currentTarget.formats[tagname]=elements[1];}else{gwf.helpers.Template.currentTarget.formats[tagname]=null;}
var id=Ext.id();gwf.helpers.Template.currentTarget.tags[tagname]=id;return("<span id='"+id+"' class='gwf-template-replace'></span>");};this.render=function()
{if(!this.rendered){if(gwf.helpers.Template.currentTarget!=null){gwf.App.errorMsg("Template.render is not reentrant!");}
gwf.helpers.Template.currentTarget=this;this.tpl=this.html.replace(/\{[^\}]+\}/g,this.addTag);gwf.helpers.Template.currentTarget=null;this.rendered=1;}
this.element.update(this.tpl);};this.update=function(newvars){if(!this.rendered)this.render();var value=null;var format=null;var formatted=null;for(name in newvars)
{if(typeof newvars[name]=="object"&&newvars[name]!=null)
{var subObject=newvars[name];for(subname in subObject)
{if(this.tags[name+"."+subname]!=null)
{value=subObject[subname]+"";format=this.formats[name+"."+subname];formatted=value;if(format!=null)
{value.replace("'","\\'");eval("formatted="+format+"('"+value+"');");}
Ext.get(this.tags[name+"."+subname]).update(formatted);}}}
else if(this.tags[name]!=null)
{value=newvars[name]+"";format=this.formats[name];formatted=value;if(format!=null)
{value.replace("'","\\'");eval("formatted="+format+"('"+value+"');");}
Ext.get(this.tags[name]).update(formatted);}}};};

Ext.namespace("gwf","gwf.helpers");gwf.helpers.Resizer=function(_element,_options)
{var options={handles:"all",pinned:true,draggable:true,resizechild:false,wrap:true,dynamic:true};Ext.apply(options,_options);var origRect={left:_element.getLeft(true),top:_element.getTop(true),width:_element.getWidth(),height:_element.getHeight()};gwf.helpers.Resizer.superclass.constructor.call(this,_element,options);this.hideHandles=function()
{this.east.el.setDisplayed(false);this.north.el.setDisplayed(false);this.south.el.setDisplayed(false);this.west.el.setDisplayed(false);this.northwest.el.setDisplayed(false);this.northeast.el.setDisplayed(false);this.southeast.el.setDisplayed(false);this.southwest.el.setDisplayed(false);};this.showHandles=function()
{this.east.el.setDisplayed(true);this.north.el.setDisplayed(true);this.south.el.setDisplayed(true);this.west.el.setDisplayed(true);this.northwest.el.setDisplayed(true);this.northeast.el.setDisplayed(true);this.southeast.el.setDisplayed(true);this.southwest.el.setDisplayed(true);};this.getWidth=function()
{return(this.el.getWidth()-this.widthOff);};this.getHeight=function()
{return(this.el.getHeight()-this.heightOff);};this.resizeInner=function(_width,_height)
{this.resizeTo((_width*1)+this.widthOff,(_height*1)+this.heightOff);};this.getTop=function()
{return(this.el.getTop(true)+this.topOff);};this.getLeft=function()
{return(this.el.getLeft(true)+this.leftOff);};this.setTop=function(_top)
{var top=_top*1;this.el.setTop(top-this.topOff);if(this.getTop()!=top){gwf.App.errorMsg("Top is "+this.getTop()+", but should be "+top);}};this.setLeft=function(_left)
{var left=_left*1;this.el.setLeft(left-this.leftOff);if(this.getLeft()!=left){gwf.App.errorMsg("Left is "+this.getLeft()+", but should be "+left);}};this.setPadding=function(_width)
{this.el.dom.style.padding=_width+"px";};this.setZIndex=function(_zIndex)
{this.getEl().dom.style.zIndex=_zIndex;};this.calculateOffsets=function()
{this.topOff=this.resizeChild.getTop()-this.el.getTop();this.leftOff=this.resizeChild.getLeft()-this.el.getLeft();this.widthOff=this.el.getWidth()-this.resizeChild.getWidth();this.heightOff=this.el.getHeight()-this.resizeChild.getHeight();};this.setPadding(1);this.calculateOffsets();this.setTop(origRect.top);this.setLeft(origRect.left);this.resizeInner(origRect.width,origRect.height);};Ext.extend(gwf.helpers.Resizer,Ext.Resizable);

Ext.namespace("gwf","gwf.helpers");gwf.helpers.md5=function(s)
{var hexcase=0;var chrsz=8;function core_md5(x,len){x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
return binl2hex(core_md5(str2binl(s),s.length*chrsz));};

Ext.namespace("gwf","gwf.helpers");gwf.helpers.TreeStoreConnector=function(_store,_treeNode,_options)
{this.store=_store;this.treeNode=_treeNode;this.options=_options;this.lastSortInfo={field:'',direction:''};this.addEvents("click");this.onStoreLoad=function()
{var expandTreeNodeOnFinish=false;if(this.treeNode.isExpanded())expandTreeNodeOnFinish=true;var nodesToRemove=[];this.treeNode.eachChild(function(_childNode)
{if(_childNode)
{var treeId=_childNode.id+"";var recordId=treeId.substring(this.options.idPrefix.length);if(!this.store.getById(recordId))
{nodesToRemove.push(_childNode);}}},this);for(var i=0;i<nodesToRemove.length;i++)
{this.treeNode.removeChild(nodesToRemove[i]);}
var selectedNodeId=null;var childIndex=0;this.store.each(function(_record)
{var recordText="No record text found!";if(this.options.textValue)
{recordText=_record.get(this.options.textValue);}
else if(typeof this.options.textFunction=="function")
{recordText=this.options.textFunction(_record);}
var iconCls="";if(this.options.iconCls)iconCls=this.options.iconCls;else if(typeof this.options.iconClsFunction=="function")
{iconCls=this.options.iconClsFunction(_record);}
if(!this.treeNode.item(childIndex)||this.treeNode.item(childIndex).id!=(this.options.idPrefix+_record.data.id))
{var searchedNode=this.treeNode.findChild('id',this.options.idPrefix+_record.data.id);if(searchedNode)
{var currentNode=this.treeNode.item(childIndex);if(searchedNode.isSelected())selectedNodeId=searchedNode.id;searchedNode.getUI().getIconEl().className="x-tree-node-icon "+iconCls;searchedNode.attributes.iconCls=iconCls;searchedNode.setText(recordText);this.treeNode.insertBefore(searchedNode,currentNode);childIndex++;}
else
{var newNode=new Ext.tree.TreeNode({iconCls:iconCls,text:recordText,id:this.options.idPrefix+_record.id,leaf:true});if(this.options.contextMenu)newNode.on("contextmenu",this.showContextMenu,this);if(this.treeNode.item(childIndex))this.treeNode.insertBefore(newNode,this.treeNode.item(childIndex));else this.treeNode.appendChild(newNode);childIndex++;}}
else
{var currentNode=this.treeNode.item(childIndex);if(currentNode.isSelected())selectedNodeId=currentNode.id;if(currentNode.attributes.iconCls!=iconCls)
{currentNode.getUI().getIconEl().className="x-tree-node-icon "+iconCls;currentNode.attributes.iconCls=iconCls;}
if(currentNode.text!=recordText)
{currentNode.setText(recordText);}
childIndex++;}},this);if(expandTreeNodeOnFinish)this.treeNode.expand(false,false);if(selectedNodeId!==null)
{var toSelectNode=this.treeNode.findChild("id",selectedNodeId);if(toSelectNode)toSelectNode.select();}};this.showContextMenu=function(_node,_event)
{this.currentContextMenuNode=_node;var treeId=_node.id+"";var recordId=treeId.substring(this.options.idPrefix.length);if(this.store.getById(recordId))
{this.currentContextMenuRecord=this.store.getById(recordId);}
else this.currentContextMenuRecord=null;this.options.contextMenu.showAt([_event.getPageX(),_event.getPageY()]);};this.onContextMenuItemClick=function(_baseItem,_event)
{this.fireEvent("click",_baseItem,_event,this.currentContextMenuRecord,this.currentContextMenuNode);};this.contextMenuItemCapture=function(_eventName,_p1,_p2,_p3,_p4)
{if(_eventName=="click")
{if(_p3&&_p4)return true;else return false;}
else return true;};this.store.on("datachanged",this.onStoreLoad,this);if(this.options.contextMenu)
{this.options.contextMenu.on("itemclick",this.onContextMenuItemClick,this);this.options.contextMenu.items.each(function(_item){_item.relayEvents(this,["click"]);Ext.util.Observable.capture(_item,this.contextMenuItemCapture,this);},this);}
if(this.store.getCount()>0)this.onStoreLoad();};Ext.extend(gwf.helpers.TreeStoreConnector,Ext.util.Observable);

Ext.namespace("gwf","gwf.format");gwf.format.dateFormat='D j.n.Y H:i:s';gwf.format.simpleDate=function(dateAsEpoch)
{var now=new Date(dateAsEpoch*1000);return now.format(gwf.format.dateFormat);};

Ext.namespace("gwf","gwf.format");gwf.format.shortDateFormat='D j.n.Y';gwf.format.shortDate=function(dateAsEpoch)
{var jetzt=new Date(dateAsEpoch*1000);return(jetzt.format(gwf.format.shortDateFormat));};

Ext.namespace("gwf","gwf.format");gwf.format.thousandsSeperator='.';gwf.format.decimalPoint=',';gwf.format.unknownText='unbekannt';gwf.format.floatformat=function(value,roundDigits)
{if(value==null||isNaN(value))return(gwf.format.unknownText);if(roundDigits==null)roundDigits=10;var roundVal=1;for(var i=0;i<roundDigits;i++){roundVal*=10;}
var rounded=Math.round(value*roundVal)/roundVal;var text=''+rounded;text=text.replace(/\./g,gwf.format.decimalPoint);var leftMostMin=3;if(value<0)leftMostMin=4;do{var found=false;var decPos=text.indexOf(gwf.format.decimalPoint);var tSepPos=text.indexOf(gwf.format.thousandsSeperator);var leftMost=decPos;if((tSepPos!=-1&&tSepPos<leftMost)||leftMost==-1)leftMost=tSepPos;if(leftMost==-1)leftMost=text.length;if(leftMost>leftMostMin){var firstPart=text.substr(0,leftMost-3);var secondPart=text.substr(leftMost-3);text=firstPart+gwf.format.thousandsSeperator+secondPart;found=true;}}while(found==true);return(text);};

