
namespace('Widgets');

Widgets.Widget=function(opts){if(opts){if(opts.cssbase)
this.CSSBase=opts.cssbase;if(opts.cssclass)
this.CSSClass=opts.cssclass;this.enabled=true;this.hidden=false;this.classes={};}};Widgets.Widget.prototype.CSSBase='widgets';Widgets.Widget.prototype.CSSClass='';Widgets.Widget.prototype.destroy=function(){};Widgets.Widget.prototype.getHTMLRoot=function(){throw new Error('Abstract method Widget.getHTMLRoot called.');};Widgets.Widget.prototype.getHTMLContainer=function(){return null;};Widgets.Widget.prototype.addWidgetTo=function(element,widget){if(!element){throw new Error('Attempted to add a sub-widget to a non-container widget.');};HTML.add(element,widget.getHTMLRoot());};Widgets.Widget.prototype.addWidget=function(widget){this.addWidgetTo(this.getHTMLContainer(),widget);};Widgets.Widget.prototype.removeWidget=function(widget){var elt=this.getHTMLContainer();if(elt)
HTML.remove(elt,widget.getHTMLRoot());};Widgets.Widget.prototype.replaceWidget=function(oldwidget,newwidget){HTML.replace(this.getHTMLContainer(),oldwidget.getHTMLRoot(),newwidget.getHTMLRoot());};Widgets.Widget.prototype.show=function(){HTML.show(this.getHTMLRoot());this.hidden=false;};Widgets.Widget.prototype.hide=function(){HTML.hide(this.getHTMLRoot());this.hidden=true;};Widgets.Widget.prototype.enable=function(){this.enabled=true;this.onEnable();this.refreshCSSClasses();};Widgets.Widget.prototype.onEnable=function(){};Widgets.Widget.prototype.disable=function(){this.enabled=false;this.onDisable();this.refreshCSSClasses();};Widgets.Widget.prototype.onDisable=function(){};Widgets.Widget.prototype.refreshCSSClasses=function(){var cls=this.CSSBase+'-'+this.CSSClass;var result=cls+(this.enabled?'':'-disabled '+cls);for(var idx in this.classes){result+=' '+this.classes[idx];}
HTML.setClass(this.getHTMLRoot(),result);};Widgets.Widget.prototype.setCSSClass=function(classindex,value){this.classes[classindex]=value;this.refreshCSSClasses();};Widgets.Widget.prototype.setCSSClasses=function(classes){this.setCSSClass('css classes',(classes?classes:''));};Widgets.Widget.prototype.setLabel=function(label){};Widgets.Widget.prototype.setMandatory=function(mandatory){this.setCSSClass('mandatory',(mandatory?'mandatory':''));};Widgets.Widget.prototype.setTooltip=function(tooltip){};(function(){var maxwid=1;Widgets.Widget.prototype.wid=function(){if(!this._wid){this._wid='widget'+maxwid++;}
return this._wid;}})();createWidget=function(name,opts){var constructor=Widgets[name];return(constructor?new constructor(opts):null);};

Widgets.Dialog=function(opts){Widgets.Widget.call(this,opts);this.modal=opts.modal;this.frame=HTML.createForm('');HTML.setAttribute(this.frame,'action','javascript: ;');this.title=HTML.createDiv('title');this.title.onselectstart=function(){return false;};this.titlenode=HTML.createTextNode('');if(this.modal){this.pin=HTML.createIcon('pin');this.min=HTML.createIcon('min');}
this.container=HTML.createDiv('container');this.display=HTML.createDiv('display');this.buttonbox=HTML.createDiv('buttonbox');this.status=HTML.createDiv('status');this.statustext=HTML.createTextNode('');this.displayitems=[];HTML.add(this.frame,HTML.add(this.title,this.titlenode,this.pin,this.min),this.container,this.display,this.buttonbox,HTML.add(this.status,this.statustext));HTML.hide(this.display);this.base=this.container;if(this.pin)
HTML.addOnClickHandler(this.pin,this,'handleOnPinClick');if(this.min)
HTML.addOnClickHandler(this.min,this,'handleOnMinClick');if(this.modal)
HTML.addOnMouseDownHandler(this.title,this,'handleOnMouseDown');this.refreshCSSClasses();var vp=windowViewport();this.x=vp.x+10;this.y=vp.y+10;this.frame.style.left=(this.x>0?this.x:0)+'px';this.frame.style.top=(this.y>0?this.y:0)+'px';this.doPin(false,true);this.doMin(false,true);this.scrollcb=callback(this,this.handleOnScroll);Framework.onScrolls.add(this.scrollcb);this.viewpos=windowViewport();};Widgets.Dialog.prototype=new Widgets.Widget();Widgets.Dialog.prototype.CSSClass='dialog';Framework.addResource('EN','dialog.minimize','Minimise the dialog for a better view of underlying data.');Framework.addResource('NL','dialog.minimize','Minimaliseer de dialoog voor beter zicht op onderliggende informatie.');Framework.addResource('EN','dialog.maximize','Return the dialog to its former size.');Framework.addResource('NL','dialog.maximize','Maak de dialoog zijn standaard afmeting.');Framework.addResource('EN','dialog.pin','Pin the dialog to this position in the window even when scrolling.');Framework.addResource('NL','dialog.pin','Zet de dialoog vast op deze positie in het venster, zelfs als gescrolld wordt.');Framework.addResource('EN','dialog.unpin','Unpin the dialog, allowing it to move along as the page is scrolled.');Framework.addResource('NL','dialog.unpin','Laat de dialoog met de pagina meescrollen.');Widgets.Dialog.prototype.destroy=function(){this.title.onselectstart=null;Framework.onScrolls.remove(this.scrollcb);if(this.modal)
HTML.removeOnMouseDownHandler(this.title);if(this.min)
HTML.removeOnClickHandler(this.min);if(this.pin)
HTML.removeOnClickHandler(this.pin);if(this.moving){Framework.onMouseMoves.remove(this.mousemovecb);Framework.onMouseUps.remove(this.mouseupcb);this.moving=false;}};Widgets.Dialog.prototype.handleOnMouseDown=function(event){this.moving=true;this.lastx=event.screenX;this.lasty=event.screenY;this.mousemovecb=callback(this,this.handleOnMouseMove);this.mouseupcb=callback(this,this.handleOnMouseUp);Framework.onMouseMoves.add(this.mousemovecb);Framework.onMouseUps.add(this.mouseupcb);return false;};Widgets.Dialog.prototype.handleOnMouseMove=function(event){if(this.moving){this.x=this.x-this.lastx+event.screenX;this.y=this.y-this.lasty+event.screenY;this.lastx=event.screenX;this.lasty=event.screenY;this.frame.style.left=(this.x>0?this.x:0)+'px';this.frame.style.top=(this.y>0?this.y:0)+'px';}};Widgets.Dialog.prototype.handleOnMouseUp=function(event){if(this.x<0)this.x=0;if(this.y<0)this.y=0;Framework.onMouseMoves.remove(this.mousemovecb);Framework.onMouseUps.remove(this.mouseupcb);this.moving=false;};Widgets.Dialog.prototype.doPin=function(pin,force){if(this.pin){if(pin&&(force||!this.pinned)){HTML.setSource(this.pin,Framework.imageUrl('6EDB::801::6EDB::4178'));}
if(!pin&&(force||this.pinned)){HTML.setSource(this.pin,Framework.imageUrl('6EDB::801::6EDB::4177'));}
this.pinned=pin;HTML.setAttribute(this.pin,'title',Framework.getResource(this.pinned?'dialog.unpin':'dialog.pin'));}};Widgets.Dialog.prototype.doMin=function(min,force){if(this.min){if(min&&(force||!this.minimized))
{HTML.setSource(this.min,Framework.imageUrl('6EDB::801::6EDB::4180'));HTML.hide(this.container);HTML.hide(this.buttonbox);HTML.hide(this.display);}
if(!min&&(force||this.minimized)){HTML.setSource(this.min,Framework.imageUrl('6EDB::801::6EDB::4179'));HTML.show(this.container);HTML.show(this.buttonbox);if(!this.displayhidden)
HTML.show(this.display);}
this.minimized=min;HTML.setAttribute(this.min,'title',Framework.getResource(this.minimized?'dialog.maximize':'dialog.minimize'));}};Widgets.Dialog.prototype.handleOnPinClick=function(){this.doPin(!this.pinned);};Widgets.Dialog.prototype.handleOnScroll=function(){var newpos=windowViewport();if(this.pinned||this.moving){var dx=(newpos.x-this.viewpos.x);var dy=(newpos.y-this.viewpos.y);this.x=Math.max(this.x+dx,0);this.y=Math.max(this.y+dy,0);this.frame.style.left=this.x+'px';this.frame.style.top=this.y+'px';}
if(this.pinned&&(this.x>=newpos.x+newpos.width)||(this.y>=newpos.y+newpos.height)){this.doPin(false);}
this.viewpos=newpos;};Widgets.Dialog.prototype.handleOnMinClick=function(){this.doMin(!this.minimized);};Widgets.Dialog.prototype.getHTMLRoot=function(){return this.frame;};Widgets.Dialog.prototype.addWidgetToContainer=function(widget){this.addWidgetTo(this.container,widget);};Widgets.Dialog.prototype.addWidgetToButtonBox=function(widget){this.addWidgetTo(this.buttonbox,widget);};Widgets.Dialog.prototype.setStatusLine=function(text){HTML.setTextContent(this.statustext,text?text:'');};Widgets.Dialog.prototype.setTitle=function(text){HTML.setTextContent(this.titlenode,text);};Widgets.Dialog.prototype.clearDisplay=function(){for(var idx=0;idx<this.displayitems.length;idx++){HTML.remove(this.display,this.displayitems[idx]);}
this.displayitems=[];this.displayhidden=true;HTML.hide(this.display);};Widgets.Dialog.prototype.addDisplayBlock=function(messages,css,iconurl){var block=HTML.createDiv('displayblock '+css);var icon=HTML.createIcon('',iconurl,true);if(icon){var iconspan=HTML.createSpan('icon');HTML.add(iconspan,icon);}
var list=HTML.createUnorderedList();for(var idx=0;idx<messages.length;idx++){var line=HTML.createListItem();var linenode=HTML.createTextNode(messages[idx]);HTML.nest(list,line,linenode);}
HTML.add(this.display,HTML.add(block,iconspan,list));this.displayitems.push(block);if(this.displayhidden){this.displayhidden=false;if(!this.minimized)HTML.show(this.display);}};

namespace('Controls');

Controls.Control=function(){};Controls.Control.prototype.events=null;Controls.Control.prototype.init=function(base,parent,meta,opts){if(meta.nolabel=='true'){opts=merge(opts,{'nolabel':true});}
this.widget=createWidget(meta.widget,opts);this.tooltip=meta.tooltip;this.base=base;this.parent=parent;this.up=meta.up;this.label=meta.label;this.requestxml='';this.postponable=(meta.postponable=='true');};Controls.Control.prototype.refresh=function(data,editable){};Controls.Control.prototype.refreshWidget=function(data,enabled){this.widget.setTooltip(this.tooltip);this.widget.setLabel((data?data.namerepr:'')||this.label);this.widget.setCSSClasses(data?data.cssclasses||'':'');this.hidden=data&&(data.hidden=='true');this.hidden?this.hide():this.show();this.enabled=!this.hidden&&data&&(!data.enabled||(data.enabled=='true'))&&enabled;this.enabled?this.widget.enable():this.widget.disable();this.mandatory=data&&data.mandatory&&(data.mandatory=='true');this.widget.setMandatory(this.mandatory);};Controls.Control.prototype.destroy=function(unloading){if(this.widget){this.widget.destroy(unloading);}};Controls.Control.prototype.hide=function(){this.widget.hide();this.hidden=true;};Controls.Control.prototype.show=function(){this.widget.show();this.hidden=false;};Controls.Control.prototype.enable=function(){this.widget.enable();this.enabled=true;};Controls.Control.prototype.disable=function(){this.widget.disable();this.enabled=false;};Controls.Control.prototype.addControl=function(control){if(control.widget){this.widget.addWidget(control.widget);}};Controls.Control.prototype.removeControl=function(control){if(control.widget){this.widget.removeWidget(control.widget);}};Controls.Control.prototype.sendXml=function(xmldata,notify,jumpqueue){this.requestxml+=xmldata;this.postponed=!notify;if(notify){this.base.notifyChanged(this,jumpqueue);}};Controls.Control.prototype.sendUpdate=function(value,notify){this.sendXml(XML.element('update',null,value,true),notify);};Controls.Control.prototype.xmlControl=function(xmldata){return(xmldata?XML.element('control',{'up':this.up},xmldata,false):'');};Controls.Control.prototype.xmlData=function(notifiers,postponed){if(postponed==this.postponed){var xmldata='';if(this.requestxml){if(this.events){notifiers.onProcessing.add(callback(this.events,this.events.release));this.events.add();}
xmldata+=this.requestxml;this.requestxml='';}
return this.xmlControl(xmldata);}
return'';};Controls.createControl=function(base,parent,meta,opts){var ctrlconstructor=Controls[meta.type];var ctrl=(ctrlconstructor?new ctrlconstructor():new Controls.Dummy());ctrl.init(base,parent,meta,opts);return ctrl;};

Controls.Dialog=function(){};Controls.Dialog.prototype.init=function(base,meta,opts){this.base=base;this.title=meta.name;this.widget=createWidget('Dialog',{'modal':meta.modal});this.up=meta.up;this.topbox=Controls.createControl(base,this,meta.TopBox,opts);this.widget.addWidgetToContainer(this.topbox.widget);this.buttonbox=Controls.createControl(base,this,meta.ButtonBox,opts);this.widget.addWidgetToButtonBox(this.buttonbox.widget);};Controls.Dialog.prototype.refresh=function(data,editable){this.widget.clearDisplay();if(data){this.widget.setStatusLine(data.statusline||'');this.widget.setTitle(data.titlerepr||this.title);if(data.display){for(var idx=0;idx<data.display.length;idx++){var disp=data.display[idx];this.widget.addDisplayBlock(disp.messages,disp.css,Framework.imageUrl(disp.icon));}}}
this.topbox.refresh(data?data.topbox:null,editable);this.buttonbox.refresh(data?data.buttonbox:null,editable);};Controls.Dialog.prototype.destroy=function(unloading){this.widget.destroy();this.topbox.destroy(unloading);this.buttonbox.destroy(unloading);};Controls.Dialog.prototype.hide=function(){this.widget.hide();};Controls.Dialog.prototype.show=function(){this.widget.show();};Controls.Dialog.prototype.xmlData=function(notifiers,postponed){var xmldata='';xmldata+=this.topbox.xmlData(notifiers,postponed);xmldata+=this.buttonbox.xmlData(notifiers,postponed);return(!postponed||xmldata?XML.element('dialog',{up:this.up},xmldata,false):'');};

namespace('Shards');

Shards.Tooltip=function(cx,cy,message,html){this.div=HTML.createDiv('tooltip');if(html){this.div.innerHTML=message;}else{this.node=HTML.createTextNode(message);}
HTML.add(HTML.body(),HTML.add(this.div,this.node));this.moveTo(cx,cy);HTML.addOnClickHandler(this.div,this,'destroy');HTML.addOnMouseOverHandler(this.div,this,'handleOnMouseOver');HTML.addOnMouseOutHandler(this.div,this,'handleOnMouseOut');};Shards.Tooltip.prototype.destroy=function(){if(this.onDestroy)this.onDestroy(this);HTML.removeOnMouseOutHandler(this.div);HTML.removeOnMouseOverHandler(this.div);HTML.removeOnClickHandler(this.div);HTML.remove(HTML.body(),this.div);};Shards.Tooltip.prototype.close=function(force){if(force){this.destroy();}else{this.closing=true;if(!this.active)
this.timeout=window.setTimeout(callback(this,this.destroy),0);}};Shards.Tooltip.prototype.handleOnMouseOver=function(){this.active=true;if(this.timeout){window.clearTimeout(this.timeout);this.timeout=null;}};Shards.Tooltip.prototype.handleOnMouseOut=function(){this.active=false;if(this.closing)this.close(true);};Shards.Tooltip.prototype.lock=function(){HTML.setClass(this.div,'tooltip tooltip-locked');};Shards.Tooltip.prototype.moveTo=function(x,y){var vp=windowViewport(),d=this.div,ds=d.style;var w=d.offsetWidth;var h=d.offsetHeight;if(!this.fixed){ds.width=w+'px';ds.width=(w-(d.offsetWidth-w))+'px';this.fixed=true;}
x=Math.max(0,Math.min(x+2,vp.width-w));y=Math.max(0,Math.min(y+2,vp.height-h));ds.top=(y+vp.y)+'px';ds.left=(x+vp.x)+'px';};

Shards.IconTooltip=function(cssclass,iconup,icontext,tooltiptext){this.tooltiptext=tooltiptext;this.element=HTML.createIcon('icontooltip '+cssclass,Framework.imageUrl(iconup),!!icontext);if(!this.element){this.element=HTML.createSpan('icontooltip '+cssclass);HTML.add(this.element,HTML.createTextNode(icontext));}
HTML.addOnMouseOverHandler(this.element,this,'handleOnMouseOver');HTML.addOnMouseOutHandler(this.element,this,'handleOnMouseOut');HTML.addOnClickHandler(this.element,this,'handleOnClick');};Shards.IconTooltip.prototype.destroy=function(){if(this.tooltip)this.tooltip.destroy();HTML.removeOnMouseOverHandler(this.element);HTML.removeOnMouseOutHandler(this.element);HTML.removeOnClickHandler(this.element);};Shards.IconTooltip.prototype.getHTMLRoot=function(){return this.element;};Shards.IconTooltip.prototype.setText=function(text){this.tooltiptext=text;};Shards.IconTooltip.prototype.handleOnMouseOver=function(ev){if(this.tooltiptext){if(this.tooltip){if(!this.persistent){this.tooltip.moveTo(ev.clientX,ev.clientY);}}else{this.tooltip=new Shards.Tooltip(ev.clientX,ev.clientY,this.tooltiptext,true);this.tooltip.onDestroy=callback(this,function(){this.persistent=false;this.tooltip=null;});}}};Shards.IconTooltip.prototype.setVisible=function(vis){(vis?HTML.show(this.element):HTML.hide(this.element));};Shards.IconTooltip.prototype.handleOnMouseOut=function(){if(this.tooltip&&!this.persistent){this.tooltip.destroy();this.tooltip=null;}};Shards.IconTooltip.prototype.handleOnClick=function(ev){if(this.tooltip){this.persistent=true;this.tooltip.lock();}};

Shards.Popup=function(element,kind,anchor,directions){this.element=element;this.kind=kind;this.anchor=anchor;this.directions=directions;this.active=false;this.mousepos=null;this.anchordiv=HTML.createDiv('');HTML.setStyles(this.anchordiv,{'position':'absolute','width':'0px','height':'0px','display':'none','zIndex':'2000'});this.popup=HTML.createDiv('');HTML.setStyles(this.popup,{'position':'absolute'});HTML.nest(document.getElementsByTagName('body')[0],this.anchordiv,this.popup);switch(kind){case Shards.Popup.Kinds.Click:HTML.addOnClickHandler(this.element,this,'onElementAction');break;case Shards.Popup.Kinds.Hover:HTML.addOnMouseOverHandler(this.element,this,'onElementAction');break;}};Shards.Popup.Kinds={'None':0,'Hover':1,'Click':2,'ManualClick':3};Shards.Popup.Anchors={'TopLeft':0,'TopRight':1,'BottomLeft':2,'BottomRight':3,'Center':4,'Cursor':5};Shards.Popup.Directions={'Left':1,'Right':2,'Up':4,'Down':8};Shards.Popup.prototype.destroy=function(){if(this.active){this.close();}
switch(this.kind){case Shards.Popup.Kinds.Click:HTML.removeOnClickHandler(this.element);break;case Shards.Popup.Kinds.Hover:HTML.removeOnMouseOverHandler(this.element);break;}
HTML.remove(document.getElementsByTagName('body')[0],this.anchordiv);};Shards.Popup.prototype.onOpening=function(){return true;};Shards.Popup.prototype.onOpened=function(){};Shards.Popup.prototype.onClosed=function(){};Shards.Popup.prototype.onContent=function(){return null;};Shards.Popup.prototype.open=function(){if(!this.active&&this.onOpening()){this.content=this.onContent();HTML.add(this.popup,this.content);var elpos=HTML.getElementData(this.element);var x=elpos.x;var y=elpos.y;if((this.anchor==Shards.Popup.Anchors.TopRight)||(this.anchor==Shards.Popup.Anchors.BottomRight)){x=x+elpos.width;}
if((this.anchor==Shards.Popup.Anchors.BottomLeft)||(this.anchor==Shards.Popup.Anchors.BottomRight)){y=y+elpos.height;}
if((this.anchor==Shards.Popup.Anchors.Center)||((this.anchor==Shards.Popup.Anchors.Cursor)&&!this.mousepos)){x=x+(elpos.width/2);y=y+(elpos.height/2);}else if(this.anchor==Shards.Popup.Anchors.Cursor){x=this.mousepos.x;y=this.mousepos.y;}
this.anchordiv.style.top=y+'px';this.anchordiv.style.left=x+'px';if(this.directions&Shards.Popup.Directions.Left){this.popup.style.right='0px';}else{this.popup.style.left='0px';}
if(this.directions&Shards.Popup.Directions.Up){this.popup.style.bottom='0px';}else{this.popup.style.top='0px';}
this.anchordiv.style.display='block';switch(this.kind){case Shards.Popup.Kinds.None:this.active=true;break;case Shards.Popup.Kinds.Click:case Shards.Popup.Kinds.ManualClick:HTML.addOnClickHandler(this.popup,this,'onPopupAction');if(!this.windowhandler)this.windowhandler=callback(this,this.onWindowAction);Framework.onClicks.add(this.windowhandler);this.active=true;break;case Shards.Popup.Kinds.Hover:HTML.addOnMouseOverHandler(this.popup,this,'onPopupAction');if(!this.windowhandler)this.windowhandler=callback(this,this.onWindowAction);Framework.onMouseOvers.add(this.windowhandler);this.active=true;break;}
this.onOpened();}};Shards.Popup.prototype.close=function(){if(this.active){this.anchordiv.style.display='none';switch(this.kind){case Shards.Popup.Kinds.Click:case Shards.Popup.Kinds.ManualClick:HTML.removeOnClickHandler(this.popup);Framework.onClicks.remove(this.windowhandler);break;case Shards.Popup.Kinds.Hover:HTML.removeOnMouseOverHandler(this.popup);Framework.onMouseOvers.remove(this.windowhandler);break;}
this.active=false;HTML.remove(this.popup,this.content);this.onClosed();}}
Shards.Popup.prototype.onElementAction=function(ev){this.mousepos=HTML.getMousePositionFromEvent(ev);this.open();this.overelement=true;};Shards.Popup.prototype.onPopupAction=function(ev){if(ev.stopPropagation)ev.stopPropagation();ev.cancelBubble=true;};Shards.Popup.prototype.onWindowAction=function(ev){if(!this.overelement){this.close();}
this.overelement=false;};

(function(){var MenuItem=function(label,onclick){this.element=HTML.createDiv('menuitem');this.anchor=HTML.createAnchor('','#');this.label=HTML.createTextNode(label);HTML.nest(this.element,this.anchor,this.label);this.onClick=onclick;HTML.addOnClickHandler(this.anchor,this,'onClick');};MenuItem.prototype={destroy:function(){HTML.removeOnClickHandler(this.anchor);},onClick:function(){if(this.onClick)this.onClick();return false;}};Shards.Menu=function(){this.items=[];this.element=HTML.createDiv('menu');};Shards.Menu.prototype={destroy:function(){for(var idx=0;idx<this.items.length;idx++){HTML.remove(this.element,this.items[idx].element);this.items[idx].destroy();}
this.items=[];},addItem:function(label,onclick){var item=new MenuItem(label,onclick);this.items.push(item);HTML.add(this.element,item.element);return this;}};})();

Controls.Events=function(){this.count=0;};Controls.Events.prototype.add=function(){this.count++;};Controls.Events.prototype.release=function(){this.count--;};Controls.Events.prototype.done=function(){return(this.count==0);};

Controls.Textual=function(){this.events=new Controls.Events();};Controls.Textual.prototype=new Controls.Control();Controls.Textual.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label,'secret':meta.password=='true','autosize':meta.autosize=='true'});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.onChange=callback(this,this.onChange);if(meta.datalength&&this.widget.setMaxLength){this.widget.setMaxLength(meta.datalength);}
this.disable();this.hide();};Controls.Textual.prototype.refresh=function(data,editable){this.value=(data&&data.value?data.value:'');this.valuerepr=(data&&data.repr?data.repr:'');if(this.events.done()){this.widget.setValue(this.value,this.valuerepr);}
this.refreshWidget(data,editable);};Controls.Textual.prototype.onChange=function(value){this.sendUpdate(value,!this.postponable);};Controls['6EDB::6']=Controls.Textual;Controls['6EDB::7']=Controls.Textual;Controls['6EDB::18']=Controls.Textual;Controls['6EDB::11']=Controls.Textual;Controls['6EDB::44']=Controls.Textual;

Shards.Label=function(id,label){this.element=HTML.createLabel('widgets-label');this._labelspan=HTML.createSpan('labelspan');this._labelnode=HTML.createTextNode(label);HTML.setAttribute(this.element,'for',id);HTML.nest(this.element,this._labelspan,this._labelnode);};Shards.Label.prototype.destroy=function(){if(this._labeltooltip){this._labeltooltip.destroy();}};Shards.Label.prototype.setLabel=function(label){HTML.setTextContent(this._labelnode,label);};Shards.Label.prototype.setTooltip=function(tooltip){if(tooltip){if(!this._labeltooltip){this._labeltooltip=new Shards.IconTooltip('labeltooltipicon','6EDB::801::6EDB::2785','(?)',tooltip);HTML.add(this._labelspan,this._labeltooltip.element);}
HTML.show(this._labeltooltip.element);}else{if(this._labeltooltip)HTML.hide(this._labeltooltip.element);}};

Shards.Input=function(id,secret){this.element=HTML.createSpan('');this.input=(secret?HTML.createPasswordInput('input'):HTML.createTextInput('input'));HTML.add(this.element,this.input);HTML.setAttribute(this.input,'id',id);HTML.addOnChangeHandler(this.input,this,'handleOnChange');HTML.addOnFocusHandler(this.input,this,'handleOnFocus');HTML.addOnBlurHandler(this.input,this,'handleOnBlur');this.onChange=null;this.enabled=true;};Shards.Input.prototype.destroy=function(){HTML.removeOnBlurHandler(this.input);HTML.removeOnFocusHandler(this.input);HTML.removeOnChangeHandler(this.input);};Shards.Input.prototype.setValue=function(value,valuerepr){this.value=value;if(!this.focused||!this.enabled){HTML.setAttribute(this.input,'value',valuerepr?valuerepr:value);}};Shards.Input.prototype.getValue=function(){return HTML.getAttribute(this.input,'value');};Shards.Input.prototype.enable=function(){this.enabled=true;HTML.readonly(this.input,false);};Shards.Input.prototype.disable=function(){this.enabled=false;HTML.readonly(this.input,true);};Shards.Input.prototype.hide=function(){HTML.hide(this.element);};Shards.Input.prototype.show=function(){HTML.show(this.element);};Shards.Input.prototype.setMaxLength=function(maxlength){HTML.setAttribute(this.input,'maxLength',maxlength);};Shards.Input.prototype.handleOnChange=function(event){if(this.getValue()!=this.value){this.value=this.getValue();if(this.onChange){this.onChange(this.getValue());}}};Shards.Input.prototype.handleOnFocus=function(event){if(this.enabled){HTML.setAttribute(this.input,'value',this.value);HTML.setCursorAtEnd(this.input);}
this.focused=true;};Shards.Input.prototype.handleOnBlur=function(event){this.focused=false;this.handleOnChange(event);};

Shards.InputBox=function(){this.element=HTML.createSpan('inputbox');for(var idx=1;idx<arguments.length;idx++){this.addShard(arguments[idx]);};};Shards.InputBox.prototype.destroy=function(){};Shards.InputBox.prototype.addShard=function(shard){HTML.add(this.element,shard.element);};Shards.InputBox.prototype.replaceShard=function(oldshard,shard){HTML.replace(this.element,oldshard.element,shard.element);};

Widgets.Text=function(opts){Widgets.Widget.call(this,opts);if(opts){this._base=HTML.createSpan();if(!opts.nolabel){this.label=new Shards.Label(this.wid(),opts.label);HTML.add(this._base,this.label.element);}
this.text=new Shards.Input(this.wid(),opts.secret);this.box=new Shards.InputBox();HTML.add(this._base,this.text.element);HTML.add(this._base,this.box.element);this.box.addShard(this.text);this.text.onChange=callback(this,this.handleOnChange);if(opts.postfix){this._pfspan=HTML.createSpan('widgets-postfix');this._postfix=HTML.createTextNode('');HTML.nest(this._base,this._pfspan,this._postfix);HTML.hide(this._pfspan);}
this.refreshCSSClasses();this.onChange=null;this.setValue=callback(this.text,this.text.setValue);this.getValue=callback(this.text,this.text.getValue);this.setMaxLength=callback(this.text,this.text.setMaxLength);if(this.label){this.setLabel=callback(this.label,this.label.setLabel);this.setTooltip=callback(this.label,this.label.setTooltip);}}};Widgets.Text.prototype=new Widgets.Widget();Widgets.Text.prototype.CSSClass='text';Widgets.Text.prototype.destroy=function(){if(this.label)
this.label.destroy();this.text.destroy();};Widgets.Text.prototype.handleOnChange=function(value){if(this.onChange&&this.enabled){this.onChange(this.getValue());}};Widgets.Text.prototype.onEnable=function(){this.text.enable();};Widgets.Text.prototype.onDisable=function(){this.text.disable();};Widgets.Text.prototype.getHTMLRoot=function(){return this._base;};Widgets.Text.prototype.setPostfix=function(postfix){HTML[postfix?'show':'hide'](this._pfspan);HTML.setTextContent(this._postfix,postfix);};Widgets['6EDB::11']=Widgets.Text;

Controls.Box=function(){};Controls.Box.prototype=new Controls.Control();Controls.Box.prototype.init=function(base,parent,meta,opts){var iconsize=meta.iconsize||16;var boxopts=merge(opts,{'label':meta.label,'horizontal':meta.horizontal=='true','collapsable':meta.collapsable=='true','icon':Framework.imageUrl(meta.icon,iconsize),'iconsize':iconsize});Controls.Control.prototype.init.call(this,base,parent,meta,boxopts);if((meta.collapsable=='true')&&(meta.initiallyclosed=='true')&&this.widget.hideContent){this.widget.hideContent();}
this.controls=[];for(var i=0;i<meta.controls.length;i++){this.controls[i]=Controls.createControl(base,this,meta.controls[i],opts);this.addControl(this.controls[i]);}
this.hide();};Controls.Box.prototype.refresh=function(data,editable){this.refreshWidget(data,true);for(var i=0;i<this.controls.length;i++){this.controls[i].refresh(data?data[this.controls[i].up]:null,editable);}};Controls.Box.prototype.destroy=function(unloading){this.widget.destroy();for(var i=0;i<this.controls.length;i++){this.controls[i].destroy(unloading);}};Controls.Box.prototype.xmlData=function(notifiers,postponed){var xmldata='';for(var idx=0;idx<this.controls.length;idx++){xmldata+=this.controls[idx].xmlData(notifiers,postponed);}
return this.xmlControl(xmldata);};Controls['6EDB::3']=Controls.Box;

Shards.HBox=function(){this.element=HTML.createTable('hbox');this.tbody=HTML.createTableBody();this.row=HTML.createTableRow('hbox-row');HTML.nest(this.element,this.tbody,this.row);this.count=1;};Shards.HBox.prototype.add=function(elt){var cell=HTML.createTableCell('hbox-cell column'+(this.count++));HTML.nest(this.row,cell,elt);};

Shards.VBox=function(){this.element=HTML.createDiv();};Shards.VBox.prototype.add=function(elt){HTML.nest(this.element,elt);};

Widgets.Box=function(opts){Widgets.Widget.call(this,opts);if(opts.horizontal){this.CSSClass='hcontainer';this.box=new Shards.HBox();}else{this.CSSClass='vcontainer';this.box=new Shards.VBox();}
this.refreshCSSClasses();};Widgets.Box.prototype=new Widgets.Widget();Widgets.Box.prototype.CSSClass='box';Widgets.Box.prototype.addWidget=function(widget){this.box.add(widget.getHTMLRoot());};Widgets.Box.prototype.getHTMLRoot=function(){return this.box.element;}
Widgets['6EDB::26']=Widgets.Box;

Controls.Button=function(){};Controls.Button.prototype=new Controls.Control();Controls.Button.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label,'defaultbutton':meta.defaultbutton=='true','icon':Framework.imageUrl(meta.icon)});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.disable();this.widget.onClick=callback(this,this.onClick);this.disable();this.hide();};Controls.Button.prototype.refresh=function(data,editable){label=(data?data.repr:'');if(data&&data.confirmation&&confirm(data.confirmation))
this.sendXml(XML.element('click',{'confirmed':'true'},null,true),true,true);this.label=(label?label:this.label);this.refreshWidget(data,true);};Controls.Button.prototype.onClick=function(){this.sendXml(XML.element('click',null,null,true),true);};Controls.Button.prototype.destroy=function(){this.widget.destroy();};Controls['6EDB::5']=Controls.Button;Controls['6EDB::58']=Controls.Button;Controls['6EDB::60']=Controls.Button;

Widgets.Button=function(opts){Widgets.Widget.call(this,opts);if(opts.defaultbutton){this.button=HTML.createSubmitInput('',opts.label);}else if(opts.icon){this.button=HTML.createButton('');this.icon=HTML.createIcon('',opts.icon,true,16);this.node=HTML.createTextNode(opts.label);HTML.add(this.button,this.icon,this.node);}else{this.button=HTML.createButtonInput('',opts.label);}
this.refreshCSSClasses();HTML.addOnClickHandler(this.button,this,'handleOnClick');this.onClick=null;};Widgets.Button.prototype=new Widgets.Widget();Widgets.Button.prototype.CSSClass='button';Widgets.Button.prototype.destroy=function(){HTML.removeOnClickHandler(this.button);};Widgets.Button.prototype.getHTMLRoot=function(){return this.button;};Widgets.Button.prototype.onEnable=function(){HTML.enable(this.button);};Widgets.Button.prototype.onDisable=function(){HTML.disable(this.button);};Widgets.Button.prototype.setLabel=function(label){if(this.node){HTML.setTextContent(this.node,label);}else{HTML.setAttribute(this.button,'value',label);}};Widgets.Button.prototype.handleOnClick=function(event){if(this.onClick&&this.enabled){this.onClick();}};Widgets['6EDB::10']=Widgets.Button;

Controls.Checkbox=function(){this.events=new Controls.Events();};Controls.Checkbox.prototype=new Controls.Control();Controls.Checkbox.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.onChange=callback(this,this.onChange);this.modified=false;this.disable();this.hide();};Controls.Checkbox.prototype.refresh=function(data,editable){var label='';this.value=false;if(data){this.value=(data.value=='true')?true:false;}
if(this.events.done()){this.widget.setValue(this.value);}
this.refreshWidget(data,editable);};Controls.Checkbox.prototype.onChange=function(value){this.value=value;this.sendUpdate((value?'true':'false'),!this.postponable);};Controls['6EDB::17']=Controls.Checkbox;

Widgets.Checkbox=function(opts){Widgets.Widget.call(this,opts);this.div=HTML.createDiv('');this.checkbox=HTML.createCheckboxInput('checkbox');this.nolabel=opts.nolabel;if(!this.nolabel){this.label=HTML.createLabel('');this.labelspan=HTML.createSpan('labelspan');this.labelnode=HTML.createTextNode(opts.label);HTML.add(this.div,HTML.add(this.label,this.checkbox,HTML.add(this.labelspan,this.labelnode)));}
this.refreshCSSClasses();HTML.addOnClickHandler(this.checkbox,this,'handleOnChange');this.onChange=null;};Widgets.Checkbox.prototype=new Widgets.Widget();Widgets.Checkbox.prototype.CSSClass='checkbox';Widgets.Checkbox.prototype.destroy=function(){HTML.removeOnClickHandler(this.checkbox);};Widgets.Checkbox.prototype.onEnable=function(){HTML.enable(this.checkbox);};Widgets.Checkbox.prototype.onDisable=function(){HTML.disable(this.checkbox);};Widgets.Checkbox.prototype.getValue=function(value){return this.checkbox.checked;};Widgets.Checkbox.prototype.setValue=function(value){this.checkbox.checked=value;};Widgets.Checkbox.prototype.setLabel=function(label){if(!this.nolabel){HTML.setTextContent(this.labelnode,label);}};Widgets.Checkbox.prototype.getHTMLRoot=function(){if(this.nolabel){return this.checkbox;}else{return this.div;}};Widgets.Checkbox.prototype.handleOnChange=function(event){if(this.onChange&&this.enabled){this.onChange(this.getValue());}};Widgets.Checkbox.prototype.setTooltip=function(tooltip){if(!this.nolabel){if(tooltip){if(!this.labeltooltip){this.labeltooltip=new Shards.IconTooltip('labeltooltipicon','6EDB::801::6EDB::2785','?',tooltip);HTML.add(this.labelspan,this.labeltooltip.element);}
HTML.show(this.labeltooltip.element);}else{if(this.labeltooltip)HTML.hide(this.labeltooltip.element);}}};Widgets['6EDB::14']=Widgets.Checkbox;

Controls.ComboBox=function(){this.events=new Controls.Events();};Controls.ComboBox.prototype=new Controls.Control();Controls.ComboBox.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.value='';this.repr='';this.added=false;this.reprs={};this.values=[];this.widget.onChange=callback(this,this.onChange);this.disable();this.hide();};Controls.ComboBox.prototype.refresh=function(data,editable){var refresh=false;if(data){if(this.events.done()){var dv=(data.value?data.value:{value:'null',repr:''});if(dv.value!=this.value){this.value=dv.value;this.repr=dv.repr;refresh=true;}else{refresh=this.added;}}
var dc=data.choosefrom;var val=false;if(dc){this.reprs={};this.values=[];for(var idx=0;idx<dc.length;idx++){this.reprs[dc[idx].value]=dc[idx].repr;this.values.push(dc[idx].value);val=val||(dc[idx].value==this.value);}
if(!val){this.reprs[this.value]=this.repr;this.values.unshift(this.value)
this.added=true;}
refresh=true;}else{if(refresh){if(this.added){this.values.shift()
this.added=false;}
for(var idx=0;idx<this.values.length;idx++){if(this.values[idx]==this.value)
break;}
if(idx==this.values.length){this.reprs[this.value]=(this.repr?'('+this.repr+')':'');this.values.unshift(this.value)
this.added=true;}}}}
if(refresh){this.widget.startUpdate();for(var idx=0;idx<this.values.length;idx++){this.widget.updateOption(this.values[idx],this.reprs[this.values[idx]],(this.values[idx]==this.value));}
this.widget.endUpdate();}
this.refreshWidget(data,editable&&(this.values.length>0));};Controls.ComboBox.prototype.onChange=function(value){this.value=value;this.repr=this.reprs[value];this.sendUpdate(value,!this.postponable);};Controls['6EDB::14']=Controls.ComboBox;

(function(){var SelectOption=function(){this.element=HTML.createSelectOption('');this.node=HTML.createTextNode('');HTML.add(this.element,this.node);this.label='';this.value='';this.selected=false;};SelectOption.prototype={destroy:function(){},update:function(label,value){if(label!=this.label){HTML.setTextContent(this.node,label);this.label=label;};if(value!=this.value){HTML.setAttribute(this.element,'value',value);this.value=value;};},select:function(){if(!this.selected){HTML.setAttribute(this.element,'selected','true');this.selected=true;}},deselect:function(){if(this.selected){HTML.removeAttribute(this.element,'selected');this.selected=false;}}};var Select=function(id){this.element=HTML.createSelectInput('select');HTML.setAttribute(this.element,'id',id);HTML.addOnChangeHandler(this.element,this,'handleOnChange');this.onChange=null;};Select.prototype={destroy:function(){HTML.removeOnChangeHandler(this.element);},getValue:function(){return HTML.getAttribute(this.element,'value');},setValue:function(value){HTML.setAttribute(this.element,'value',value);},enable:function(){HTML.enable(this.element);},disable:function(){HTML.disable(this.element);},addOption:function(option){HTML.add(this.element,option.element);},removeOption:function(option){HTML.remove(this.element,option.element);},handleOnChange:function(event){if(this.onChange){this.onChange(this.getValue());}}};var ComboBox=function(opts){Widgets.Widget.call(this,opts);this.options={};this.selection=null;this.updating=false;this._base=HTML.createSpan();if(!opts.nolabel){this.label=new Shards.Label(this.wid(),opts.label);HTML.add(this._base,this.label.element);}
this.select=new Select(this.wid());HTML.add(this._base,this.select.element);this.select.onChange=callback(this,this.handleOnChange);this.refreshCSSClasses();this.onChange=null;this.onEnable=callback(this.select,this.select.enable);this.onDisable=callback(this.select,this.select.disable);if(this.label)
this.setLabel=callback(this.label,this.label.setLabel);};ComboBox.prototype=new Widgets.Widget();ComboBox.prototype.CSSClass='combobox';ComboBox.prototype.destroy=function(){this.startUpdate();this.endUpdate();if(this.label)
this.label.destroy();this.select.destroy();};ComboBox.prototype.getHTMLRoot=function(){return this._base;};ComboBox.prototype.setSelection=function(option,key){if(this.selection){this.selection.deselect();}
this.selection=option;if(this.selection){this.selection.select();this.select.setValue(key);}};ComboBox.prototype.startUpdate=function(){if(this.updating)
this.endUpdate();this.updating=true;this.remainder=this.options;this.options={};};ComboBox.prototype.updateOption=function(key,label,selected){var option=this.remainder[key];delete this.remainder[key];if(!option){option=new SelectOption();}
this.select.addOption(option);option.update(label,key);if(selected){this.setSelection(option,key);}
this.options[key]=option;};ComboBox.prototype.endUpdate=function(){for(var idx in this.remainder){var opt=this.remainder[idx];if(this.selection==opt)
this.setSelection(null,'');this.select.removeOption(opt);opt.destroy();}
this.remainder={};this.updating=false;};ComboBox.prototype.handleOnChange=function(value){if(this.onChange&&this.enabled){this.onChange(value);}};ComboBox.prototype.setTooltip=function(tooltip){if(this.label)
this.label.setTooltip(tooltip);};Widgets.ComboBox=ComboBox;Widgets['6EDB::15']=ComboBox;})();

Controls.Date=function(){this.events=new Controls.Events();};Controls.Date.prototype=new Controls.Control();Controls.Date.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.onChange=callback(this,this.onChange);this.disable();this.hide();};Controls.Date.prototype.refresh=function(data,editable){this.day='';this.month='';this.year='';this.value='';this.repr='';if(data){if(data.value){this.day=data.value.day;this.month=data.value.month;this.year=data.value.year;this.value=this.day+'-'+this.month+'-'+this.year;}
this.repr=data.repr;}
if(this.events.done()){this.widget.setValue(this.value,this.repr);this.widget.setDate(this.day,this.month,this.year);}
this.refreshWidget(data,editable);};Controls.Date.prototype.onChange=function(newvalue){this.value=newvalue.replace(/\\|\.|\//g,'-');this.sendUpdate(this.value,!this.postponable);};Controls['6EDB::9']=Controls.Date;

Shards.ImageButton=function(url){this.element=HTML.createIcon('button',url);HTML.addOnClickHandler(this.element,this,'handleOnClick');this.onClick=null;};Shards.ImageButton.prototype.destroy=function(){HTML.removeOnClickHandler(this.element);};Shards.ImageButton.prototype.enable=function(){HTML.enable(this.element);};Shards.ImageButton.prototype.disable=function(){HTML.disable(this.element);};Shards.ImageButton.prototype.setSource=function(url){HTML.setSource(this.element,url);};Shards.ImageButton.prototype.handleOnClick=function(event){if(this.onClick){this.onClick();}};

(function(){Framework.addResource('EN','datepicker.today','Today');Framework.addResource('NL','datepicker.today','Vandaag');Framework.addResource('EN','datepicker.daysrepr',['mo','tu','we','th','fr','sa','su']);Framework.addResource('NL','datepicker.daysrepr',['ma','di','wo','do','vr','za','zo']);Framework.addResource('EN','datepicker.monthsrepr',['January','February','March','April','May','June','July','August','September','October','November','December']);Framework.addResource('NL','datepicker.monthsrepr',['Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December']);var DatePickerCell=function(datepicker,content,classes){this.datepicker=datepicker;this.cell=HTML.createTableCell('');this.cellnode=HTML.createTextNode('');this.classes=classes?classes:'';HTML.setTextContent(this.cellnode,content);HTML.add(this.cell,this.cellnode);HTML.addOnClickHandler(this.cell,this,'onClick');};DatePickerCell.prototype={destroy:function(){HTML.removeOnClickHandler(this.cell);},setCSSClasses:function(){HTML.setClass(this.cell,this.classes+(this.clickable?' clickable':'')+(this.today?' today':''));},setColSpan:function(colspan){HTML.setAttribute(this.cell,'colSpan',colspan);},setContent:function(content){HTML.setTextContent(this.cellnode,content);},setToday:function(today){this.today=today;this.setCSSClasses();},setClickable:function(object,handlername,value){this.value=value;this.clickable=object?{'object':object,'handlername':handlername}:null;this.setCSSClasses();},getHTMLRoot:function(){return this.cell;},onClick:function(){if(this.clickable){this.clickable.object[this.clickable.handlername](this.value);}}};var DatePickerRow=function(datepicker,classes){this.datepicker=datepicker;this.row=HTML.createTableRow(classes?classes:'');};DatePickerRow.prototype={destroy:function(){},addCell:function(cell){HTML.add(this.row,cell.getHTMLRoot());return this;},getHTMLRoot:function(){return this.row;}};Shards.DatePicker=function(control,day,month,year){this.daysrepr=Framework.getResource('datepicker.daysrepr');this.monthsrepr=Framework.getResource('datepicker.monthsrepr');this.todayrepr=Framework.getResource('datepicker.today');this.control=control;this.datepicker=HTML.createDiv('datepicker');this.table=HTML.createTable('picker');this.tbody=HTML.createTableBody('');HTML.nest(this.datepicker,this.table,this.tbody);this.titlebar=new DatePickerRow(this,'titlebar');this.month=new DatePickerCell(this);this.month.setColSpan(6);this.close=new DatePickerCell(this,'x','close');this.close.setClickable(this,'onCloseClick','');this.titlebar.addCell(this.month).addCell(this.close);HTML.add(this.tbody,this.titlebar.getHTMLRoot());this.header=new DatePickerRow(this,'header');for(var ii=0;ii<7;ii++){cell=new DatePickerCell(this,this.daysrepr[ii]);this.header.addCell(cell);}
HTML.add(this.tbody,this.header.getHTMLRoot());this.cells=[];this.rows=[];var row,cell;for(var ii=0;ii<42;ii++){if((ii%7)==0){row=new DatePickerRow(this);this.rows.push(row);HTML.add(this.tbody,row.getHTMLRoot());}
cell=new DatePickerCell(this,'',((ii%7)>4)?'weekend':'');this.cells[ii]=cell;row.addCell(cell);};this.buttons=new DatePickerRow(this,'buttons');this.prevyear=new DatePickerCell(this,'<<');this.prevyear.setClickable(this,'onPreviousYearClick','');this.previous=new DatePickerCell(this,'<');this.previous.setClickable(this,'onPreviousClick','');this.today=new DatePickerCell(this,this.todayrepr);this.today.setColSpan(3);this.today.setClickable(this,'onTodayClick','');this.next=new DatePickerCell(this,'>');this.next.setClickable(this,'onNextClick','');this.nextyear=new DatePickerCell(this,'>>');this.nextyear.setClickable(this,'onNextYearClick','');this.buttons.addCell(this.prevyear).addCell(this.previous).addCell(this.today).addCell(this.next).addCell(this.nextyear);HTML.add(this.tbody,this.buttons.getHTMLRoot());this.body=document.getElementsByTagName("body")[0];HTML.add(this.body,this.datepicker);var parent=control.box.element;var x=parent.offsetLeft+parent.offsetWidth+this.datepicker.offsetLeft-this.datepicker.offsetWidth;var y=parent.offsetTop+parent.offsetHeight+this.datepicker.offsetTop;while(parent.offsetParent){parent=parent.offsetParent;x+=parent.offsetLeft;y+=parent.offsetTop;}
var view=windowViewport();var overx=(x+this.datepicker.offsetWidth)-(view.x+view.width);var overy=(y+this.datepicker.offsetHeight)-(view.y+view.height);x=Math.max(view.x,x-Math.max(0,overx));y=Math.max(view.y,y-Math.max(0,overy));this.datepicker.style.left=x+'px';this.datepicker.style.top=y+'px';if(year&&month&&day){this.activedate=new Date();this.activedate.setFullYear(year);this.activedate.setMonth(month-1);this.activedate.setDate(day);}else{this.activedate=new Date();}
this.curdate=new Date(this.activedate);this.refresh();};Shards.DatePicker.prototype={destroy:function(){HTML.remove(this.body,this.datepicker);for(var idx=0;idx<this.rows.length;idx++){this.rows[idx].destroy();}
for(var idx=0;idx<this.cells.length;idx++){this.cells[idx].destroy();}},refresh:function(){var cell;var cur=new Date(this.curdate);cur.setDate(1);var index=0;while(index<(cur.getDay()+6)%7){cell=this.cells[index];cell.setContent('');cell.setClickable(null,'',null);cell.setToday(false);index++;}
do{cell=this.cells[index];cell.setContent(cur.getDate());cell.setClickable(this,'onDayClick',cur.getDate());cell.setToday(this.activedate?(cur.getYear()==this.activedate.getYear()&&(cur.getMonth()==this.activedate.getMonth())&&(cur.getDate()==this.activedate.getDate())):false);cur.setDate(cur.getDate()+1);index++;}while(cur.getDate()!=1);while(index<42){cell=this.cells[index];cell.setContent('');cell.setClickable(null,'',null);cell.setToday(false);index++;}
this.month.setContent(this.monthsrepr[this.curdate.getMonth()]+' '+this.curdate.getFullYear());},onDayClick:function(day){this.control.valueFromDatepicker(day+'-'+(this.curdate.getMonth()+1)+'-'+this.curdate.getFullYear());},onPreviousClick:function(){this.curdate.setDate(1);this.curdate.setMonth(this.curdate.getMonth()-1);this.refresh();},onNextClick:function(){this.curdate.setDate(1);this.curdate.setMonth(this.curdate.getMonth()+1);this.refresh();},onPreviousYearClick:function(){this.curdate.setFullYear(this.curdate.getFullYear()-1);this.refresh();},onNextYearClick:function(){this.curdate.setFullYear(this.curdate.getFullYear()+1);this.refresh();},onTodayClick:function(){var date=new Date();this.curdate=new Date();this.activedate=new Date(this.curdate);this.refresh();},onCloseClick:function(){this.control.valueFromDatepicker(null);}};})();

Widgets.Date=function(opts){Widgets.Text.call(this,opts);this.button=new Shards.ImageButton(Framework.imageUrl('6EDB::801::6EDB::578'));this.box.addShard(this.button);this.refreshCSSClasses();this.button.onClick=callback(this,this.handleOnButtonClick);};Widgets.Date.prototype=new Widgets.Text();Widgets.Date.prototype.CSSClass='date';Widgets.Date.prototype.destroy=function(){Widgets.Text.prototype.destroy.call(this);this.closeDatepicker();this.button.destroy();};Widgets.Date.prototype.onEnable=function(){this.text.enable();this.button.enable();};Widgets.Date.prototype.onDisable=function(){this.text.disable();this.button.disable();this.closeDatepicker();};Widgets.Date.prototype.closeDatepicker=function(){if(this.datepicker){this.datepicker.destroy();this.datepicker=null;}};Widgets.Date.prototype.handleOnButtonClick=function(){if(this.datepicker){this.closeDatepicker();}else{if(this.enabled){this.datepicker=new Shards.DatePicker(this,this.day,this.month,this.year);}}};Widgets.Date.prototype.valueFromDatepicker=function(value){this.closeDatepicker();if(value){this.setValue(value);if(this.onChange&&this.enabled){this.onChange(value);}}};Widgets.Date.prototype.setDate=function(day,month,year){this.day=day;this.month=month;this.year=year;};Widgets['6EDB::23']=Widgets.Date;

Controls.DisplayContent=function(){};Controls.DisplayContent.prototype=new Controls.Control();Controls.DisplayContent.prototype.init=function(base,parent,meta,opts){Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.hide();};Controls.DisplayContent.prototype.refresh=function(data,editable){this.widget.setContent(data?data.content||'':'');this.refreshWidget(data,editable);};Controls['6EDB::4']=Controls.DisplayContent;

Widgets.RawContent=function(opts){Widgets.Widget.call(this,opts);this.div=HTML.createDiv('');this.content=HTML.createSpan('');HTML.add(this.div,this.content);this.refreshCSSClasses();};Widgets.RawContent.prototype=new Widgets.Widget();Widgets.RawContent.prototype.CSSClass='rawcontent';Widgets.RawContent.prototype.getHTMLRoot=function(){return this.div;};Widgets.RawContent.prototype.setContent=function(content){if(this.contenthtml!=content){this.content.innerHTML=content;this.contenthtml=content;}};Widgets['6EDB::8']=Widgets.RawContent;

Controls.GroupControl=function(){};Controls.GroupControl.prototype=new Controls.Control();Controls.GroupControl.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.onChange=callback(this,this.onChange);this.widget.onButtonClick=callback(this,this.onButtonClick);this.modified=false;this.clicked=false;this.disable();this.hide();};Controls.GroupControl.prototype.refresh=function(data,editable){this.repr='';if(data){this.repr=(data.repr?data.repr:(data.value?data.value:''));}
this.widget.setValue(this.repr?this.repr:'');this.refreshWidget(data,editable);};Controls.GroupControl.prototype.onChange=function(){this.widget.setValue(this.repr?this.repr:'');};Controls.GroupControl.prototype.onButtonClick=function(){this.clicked=true;this.base.notifyChanged(this);};Controls.GroupControl.prototype.modalResult=function(values){this.modifiedvalue=values?values.join(';'):'';this.modified=true;this.base.notifyChanged(this);};Controls.GroupControl.prototype.xmlData=function(notifiers,postponed){var xmldata='';if(!postponed){if(this.modified){xmldata+=XML.element('update',null,this.modifiedvalue,true);this.modified=false;}
if(this.clicked){notifiers.onProcessing.add(callback(this,this.setMetaControl));xmldata+=XML.element('click',null,null,true);this.clicked=false;}}
return this.xmlControl(xmldata);};Controls.GroupControl.prototype.setMetaControl=function(){this.base.setMetaControl(this);};Controls['6EDB::22']=Controls.GroupControl;

Widgets.GroupControl=function(opts){Widgets.Text.call(this,opts);this.button=new Shards.ImageButton(Framework.imageUrl('6EDB::801::6EDB::726'));this.text.disable();this.box.addShard(this.button);this.button.onClick=callback(this,this.handleOnButtonClick);this.refreshCSSClasses();this.onButtonClick=null;};Widgets.GroupControl.prototype=new Widgets.Text();Widgets.GroupControl.prototype.CSSClass='groupcontrol';Widgets.GroupControl.prototype.destroy=function(){Widgets.Text.prototype.destroy.call(this);this.button.destroy();};Widgets.GroupControl.prototype.onEnable=function(){};Widgets.GroupControl.prototype.onDisable=function(){};Widgets.GroupControl.prototype.handleOnButtonClick=function(){if(this.onButtonClick){this.onButtonClick();}};Widgets['6EDB::20']=Widgets.GroupControl;

Framework.addResource('EN','listbox.print','Print list');Framework.addResource('NL','listbox.print','Lijst afdrukken');Framework.addResource('EN','listbox.of','of');Framework.addResource('NL','listbox.of','van');Controls.Listbox=function(){};Controls.Listbox.prototype=new Controls.Control();Controls.Listbox.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'advanced':this.markColumn()});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.onFirst=callback(this,this.onFirst);this.widget.onPrevious=callback(this,this.onPrevious);this.widget.onNext=callback(this,this.onNext);this.widget.onLast=callback(this,this.onLast);this.widget.onColumnSort=callback(this,this.onColumnSort);this.widget.onSearch=callback(this,this.onSearch);this.alwaysnav=(meta.alwaysnav=='true');this.linelayout=null;this.sortcolumn=null;this.groupsize=0;this.items=[];if(meta.searchable=='true')
this.widget.showSearch();else
this.widget.hideSearch();this.widget.setTitleVisibility(meta.hastitle=='true');this.disable();this.hide();};Controls.Listbox.prototype.initPrintListButton=function(parent,meta){if(meta&&meta.printable=='true'){this.printbutton=this.widget.createListboxButton(Framework.getResource('listbox.print'),null,true);this.printbutton.onClick=callback(this,this.onPrint);this.printbutton.enableButton(true);this.printbutton.show();}};Controls.Listbox.prototype.destroy=function(){if(this.printbutton){this.widget.destroyListboxButton(this.printbutton);}
this.widget.destroy();};Controls.Listbox.prototype.setLineLayout=function(linelayout){if((!linelayout)||(!linelayout.up))return;if((!this.linelayout)||(this.linelayout.up!=linelayout.up)){this.widget.reinit();this.linelayout=linelayout;columns=linelayout.columns;for(var index in columns){var alignment=columns[index].alignment;this.widget.addColumn(columns[index].label,columns[index].up,alignment);}}};Controls.Listbox.prototype.refreshSelection=function(){for(var idx=0;idx<this.items.length;idx++){this.widget.markRow(idx,this.valueMarked(this.items[idx]));this.widget.selectRow(idx,this.valueSelected(this.items[idx]));};};Controls.Listbox.prototype.refresh=function(data,editable){if(data){if(data.webcursor){this.refreshFromWebCursor(data.webcursor);if(data.webcursor.lazy=='true')
this.sendXml(XML.element('load',{},null,true),true);}
if(data.nameicon){this.widget.setLabelIcon(Framework.imageUrl(data.nameicon));}}
this.refreshSelection();this.refreshWidget(data,editable);};Controls.Listbox.prototype.onDirectAnswer=function(data){this.refreshFromWebCursor(data);this.refreshSelection();};Controls.Listbox.prototype.refreshFromWebCursor=function(data){this.setLineLayout(data["linelayout"]);this.widget.clearSortColumn(this.sortcolumn);this.sortcolumn=data.sortcolumn.value;this.sortdescending=((data.sortdescending!='true')?false:true);this.widget.setSortColumn(this.sortcolumn,this.sortdescending);this.position=parseInt(data.position);this.stepsize=parseInt(data.stepsize);this.groupsize=parseInt(data.groupsize);if(this.printbutton){(this.groupsize==0)?this.printbutton.hide():this.printbutton.show();}
if((this.groupsize>this.stepsize)||(this.alwaysnav)){this.widget.showNavigation();}else{this.widget.hideNavigation();}
this.items=[];var choosefrom=data['choosefrom'];var rowcount=Math.min(this.stepsize,choosefrom.length);this.widget.setRowCount(rowcount,data.lazy=='true');this.widget.setTotalCount(this.groupsize);for(var index=0;index<choosefrom.length;index++){var value=choosefrom[index].value.value;this.items.push(value);this.widget.setRow(index,choosefrom[index],value);}
var endpos=this.position+rowcount-1;if(this.groupsize>0){this.widget.setPosition(this.position+'-'+endpos+' '+Framework.getResource('listbox.of')+' '+this.groupsize);}else{this.widget.setPosition('no entries');}};Controls.Listbox.prototype.markColumn=function(){return false;};Controls.Listbox.prototype.valueMarked=function(){return false;};Controls.Listbox.prototype.valueSelected=function(){return false;};Controls.Listbox.prototype.sendMove=function(position){this.sendXml(XML.element('move',{'position':position},null,true),true);};Controls.Listbox.prototype.onFirst=function(){this.sendMove(1);};Controls.Listbox.prototype.onPrevious=function(){this.sendMove(this.position-this.stepsize);};Controls.Listbox.prototype.onNext=function(){this.sendMove(this.position+this.stepsize);};Controls.Listbox.prototype.onLast=function(){this.sendMove(this.groupsize);};Controls.Listbox.prototype.onColumnSort=function(column){this.sendXml(XML.element('sort',{'column':column},null,true),true);};Controls.Listbox.prototype.onPrint=function(){this.sendXml(XML.element('print',null,null,true),true);};Controls.Listbox.prototype.onSearch=function(text){this.sendXml(XML.element('search',null,text,true),true);};

Framework.addResource('EN','objectlist.zoom','Zoom');Framework.addResource('NL','objectlist.zoom','Bekijk');Framework.addResource('EN','objectlist.new','New');Framework.addResource('NL','objectlist.new','Nieuw');Framework.addResource('EN','objectlist.delete','Delete');Framework.addResource('NL','objectlist.delete','Verwijder');Controls.ObjectList=function(){this.marked={};this.markedcount=0;};Controls.ObjectList.prototype=new Controls.Listbox();Controls.ObjectList.prototype.init=function(base,parent,meta,opts){this.oneclickzoom=(meta['oneclickzoom']=='true');Controls.Listbox.prototype.init.call(this,base,parent,meta,opts);this.widget.onMark=callback(this,this.onMark);this.widget.onClick=callback(this,this.onClick);if(!this.oneclickzoom){this.zoombutton=this.widget.createListboxButton(Framework.getResource('objectlist.zoom'));this.zoombutton.onClick=callback(this,this.onZoom);}
this.newbutton=this.widget.createListboxButton(Framework.getResource('objectlist.new'));this.newbutton.onClick=callback(this,this.onNew);this.newbutton.enableButton(true);this.deletebutton=this.widget.createListboxButton(Framework.getResource('objectlist.delete'));this.deletebutton.onClick=callback(this,this.onDelete);this.deletebutton.enableButton(false);this.taskbuttons=[];if(meta.tasks){for(var idx=0;idx<meta.tasks.length;idx++){var task=meta.tasks[idx];var button=this.widget.createListboxButton(task.name,task.up,true);button.onClick=callback(this,this.onTask);button.show();this.taskbuttons.push(button);}}
this.initPrintListButton(parent,meta);};Controls.ObjectList.prototype.destroy=function(){Controls.Listbox.prototype.destroy.call(this);for(var idx=0;idx<this.taskbuttons.length;idx++){this.widget.destroyListboxButton(this.taskbuttons[idx]);}
if(!this.oneclickzoom){this.widget.destroyListboxButton(this.zoombutton);}
this.widget.destroyListboxButton(this.newbutton);this.widget.destroyListboxButton(this.deletebutton);};Controls.ObjectList.prototype.refresh=function(data,editable){this.value='';if(data){if(data.value){this.value=data.value.value;}}
this.newable=(data?(data['newable']=='true'):null);this.deleteable=(data?(data['deleteable']=='true'):null);this.zoomable=(data?(data['zoomable']=='true'):null);if(!this.oneclickzoom){this.zoomable?this.zoombutton.show():this.zoombutton.hide();}
this.newable?this.newbutton.show():this.newbutton.hide();this.deleteable?this.deletebutton.show():this.deletebutton.hide();this.widget.showMarkColumn(this.deleteable||(this.taskbuttons.length>0));Controls.Listbox.prototype.refresh.call(this,data,editable);this.refreshButtons();};Controls.ObjectList.prototype.onDirectAnswer=function(data){Controls.Listbox.prototype.onDirectAnswer.call(this,data);this.refreshButtons();};Controls.ObjectList.prototype.refreshButtons=function(){var button;if(this.oneclickzoom){this.deletebutton.enableButton(this.markedcount!=0);for(var idx=0;idx<this.taskbuttons.length;idx++){button=this.taskbuttons[idx];button.enableButton(this.markedcount!=0);this.hidden?button.hide():button.show();}}else{this.deletebutton.enableButton(this.value);this.zoombutton.enableButton(this.value);for(var idx=0;idx<this.taskbuttons.length;idx++){button=this.taskbuttons[idx];button.enableButton(this.value);this.hidden?button.hide():button.show();}}};Controls.ObjectList.prototype.markColumn=function(){return(this.oneclickzoom);};Controls.ObjectList.prototype.valueMarked=function(value){return this.marked[value]==value;};Controls.ObjectList.prototype.valueSelected=function(value){return(value==this.value);};Controls.ObjectList.prototype.modalResult=function(){};Controls.ObjectList.prototype.onMark=function(value,marked){if(marked){delete this.marked[value];this.markedcount--;}else{this.marked[value]=value;this.markedcount++;}
this.refreshButtons();this.refreshSelection();};Controls.ObjectList.prototype.onClick=function(value,marked){this.value=value;if(this.oneclickzoom&&this.zoomable){this.sendUpdate(value,false);this.sendXml(XML.element('zoom',null,null,true),true);}else{this.sendUpdate(value,true);}
this.refreshButtons();};Controls.ObjectList.prototype.onNew=function(){if(this.newable){this.sendXml(XML.element('new',null,null,true),true);}};Controls.ObjectList.prototype.onZoom=function(){if(this.zoomable){this.sendXml(XML.element('zoom',null,null,true),true);}};Controls.ObjectList.prototype.groupValueMarked=function(){var val='',sep='';for(var idx in this.marked){val+=sep+idx;sep=';';}
return val;};Controls.ObjectList.prototype.onDelete=function(){if(this.deleteable){this.sendXml(XML.element('delete',null,(this.oneclickzoom?this.groupValueMarked():this.value),true),true);}};Controls.ObjectList.prototype.onTask=function(taskup){this.sendXml(XML.element('task',{'task':taskup},(this.oneclickzoom?this.groupValueMarked():this.value),true),true);};Controls['6EDB::21']=Controls.ObjectList;

(function(){Framework.addResource('EN','listbox.search','Search');Framework.addResource('NL','listbox.search','Zoek');Framework.addResource('EN','listbox.noitems','(No items)');Framework.addResource('NL','listbox.noitems','(Geen items)');Framework.addResource('EN','listbox.loading','(loading items)');Framework.addResource('NL','listbox.loading','(items worden geladen)');var Button=function(name,value,task){this.value=value;this.task=task;this.button=HTML.createButtonInput('button',name);HTML.addOnClickHandler(this.button,this,'handleOnClick');this.enableButton(false);this.hide();this.onClick=null;};Button.prototype={destroy:function(){HTML.removeOnClickHandler(this.button);},show:function(){HTML.show(this.button);},hide:function(){HTML.hide(this.button);},enableButton:function(enabled){this.enabled=enabled;enabled?HTML.enable(this.button):HTML.disable(this.button);HTML.setClass(this.button,(enabled?'button':'button-disabled'));},getHTMLRoot:function(){return this.button;},handleOnClick:function(event){if(this.onClick&&this.enabled){this.onClick(this.value);}}};var Cell=function(row,column){this.row=row;this.column=column;this.tooltip='';this.cell=HTML.createTableCell('cell '+column.alignment);this.cellanchor=HTML.createAnchor('anchor','#');HTML.nest(this.cell,this.cellanchor);HTML.addOnMouseOverHandler(this.cell,this,'onMouseOver');HTML.addOnMouseOutHandler(this.cell,this,'onMouseOut');HTML.addOnClickHandler(this.cellanchor,this,'onClick');};Cell.prototype={destroy:function(){this.hideTooltip(true);HTML.removeOnClickHandler(this.cellanchor);HTML.removeOnMouseOverHandler(this.cell);HTML.removeOnMouseOutHandler(this.cell);},refresh:function(data){var dat=data[this.column.key];var content='';if(dat){content=dat.repr;this.tooltip=dat.tooltip;}
this.cellanchor.innerHTML='';if(dat.html=='true'){var span=document.createElement('span');span.innerHTML=content;this.cellanchor.appendChild(span);}else{var node=HTML.createTextNode(content);HTML.add(this.cellanchor,node);}},mark:function(marked){},hideTooltip:function(force){if(this.tooltipshard){this.tooltipshard.close(force);this.tooltipshard=null;}},onMouseOver:function(ev){if(this.tooltip){var vp=windowViewport();if(this.tooltipshard){this.tooltipshard.moveTo(ev.clientX,ev.clientY);}else{this.tooltipshard=new Shards.Tooltip(ev.clientX,ev.clientY,this.tooltip);this.tooltipshard.onDestroy=callback(this,function(shard){if(this.tooltipshard===shard)this.tooltipshard=null;});}}},onMouseOut:function(ev){this.hideTooltip(false);},onClick:function(ev){if(ev.target==this.cellanchor){return false;}}};var Mark=function(row,column){this.row=row;this.column=column;this.cell=HTML.createTableCell('cell '+column.alignment);this.checkbox=HTML.createCheckboxInput('');HTML.nest(this.cell,this.checkbox);HTML.addOnClickHandler(this.cell,this,'onClick');HTML.addOnClickHandler(this.checkbox,this,'onMark');};Mark.prototype={destroy:function(){HTML.removeOnClickHandler(this.cell);HTML.removeOnClickHandler(this.checkbox);this.column.cellDeleted(this);},refresh:function(data){},mark:function(marked){this.checkbox.checked=marked;},hide:function(){HTML.hide(this.cell);},show:function(){HTML.show(this.cell);},onClick:function(event){event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();},onMark:function(event){this.row.onMark();}};var MarkHeader=function(listbox){this.listbox=listbox;this.cell=HTML.createTableHeaderCell('cell');this.cells=[];};MarkHeader.prototype={destroy:function(){},clearSortOrder:function(){},setSortOrder:function(descending){},createCell:function(row){var cell=new Mark(row,this);if(this.hidden){cell.hide();}
this.cells[cell]=cell;return cell;},cellDeleted:function(cell){delete(this.cells[cell]);},hide:function(){HTML.hide(this.cell);this.hidden=true;for(var idx in this.cells){this.cells[idx].hide();}},show:function(){HTML.show(this.cell);this.hidden=false;for(var idx in this.cells){this.cells[idx].show();}},getHTMLRoot:function(){return this.cell;}};var Header=function(listbox,name,key,alignment){this.listbox=listbox;this.cell=HTML.createTableHeaderCell('cell');this.cellnode=HTML.createTextNode(name);this.cellsizer=HTML.createDiv('sizer');this.key=key;this.alignment=alignment;HTML.add(this.cell,this.cellnode);HTML.addOnClickHandler(this.cell,this,'onClick');};Header.prototype={destroy:function(){HTML.removeOnClickHandler(this.cell);},createCell:function(row){return new Cell(row,this);},getHTMLRoot:function(){return this.cell;},onClick:function(event){this.listbox.handleOnColumnSort(event,this.key);},clearSortOrder:function(){if(this.cellsort){HTML.remove(this.cell,this.cellsort);this.cellsort=null;}},setSortOrder:function(descending){if(!this.cellsort){this.cellsort=this.cellsort||HTML.createImage('sort','');HTML.add(this.cell,this.cellsort);}
HTML.setSource(this.cellsort,Framework.imageUrl(descending?'6EDB::686::6EDB::957':'6EDB::686::6EDB::956'));}};var Row=function(listbox,odd){this.listbox=listbox;this.odd=odd;this.cssclasses={'odd':odd,'even':!odd};this.cellnodes=[];this.row=HTML.createTableRow('');this.refreshCSSClasses();for(index in listbox.columns){var cell=listbox.columns[index].createCell(this);this.cellnodes[index]=cell;HTML.nest(this.row,cell.cell);}
HTML.addOnClickHandler(this.row,this,'onClick');HTML.addOnMouseOverHandler(this.row,this,'onMouseOver');HTML.addOnMouseOutHandler(this.row,this,'onMouseOut');};Row.prototype={refresh:function(value,data){this.value=value;for(index in this.cellnodes){this.cellnodes[index].refresh(data);}},destroy:function(){for(index in this.cellnodes){this.cellnodes[index].destroy();}
HTML.removeOnClickHandler(this.row);HTML.removeOnMouseOverHandler(this.row);HTML.removeOnMouseOutHandler(this.row);},getHTMLRoot:function(){return this.row;},onClick:function(event){this.listbox.handleOnClick(this.value,this.marked,this.selected);},onMouseOver:function(event){this.cssclasses['hover']=true;this.refreshCSSClasses();},onMouseOut:function(event){this.cssclasses['hover']=false;this.refreshCSSClasses();},mark:function(marked){this.marked=marked;this.cssclasses['marked']=marked;this.refreshCSSClasses();for(index in this.cellnodes){this.cellnodes[index].mark(marked);}},select:function(selected){this.selected=selected;this.cssclasses['selected']=selected;this.refreshCSSClasses();},onMark:function(marked){this.listbox.handleOnMark(this.value,this.marked,this.selected);},refreshCSSClasses:function(){var classes='row';for(var idx in this.cssclasses){if(this.cssclasses[idx]){classes+=' '+idx;}}
HTML.setClass(this.row,classes);}};var EmptyRow=function(tbody){this.row=HTML.createTableRow('odd emptyrow');this.cell=HTML.createTableCell('emptycell');this.node=HTML.createTextNode(Framework.getResource('listbox.noitems'));this.parent=null;HTML.nest(this.row,this.cell,this.node);};EmptyRow.prototype={destroy:function(){this.detach();this.row=this.cell=this.node=null;},setLoading:function(loading){HTML.setTextContent(this.node,Framework.getResource(loading?'listbox.loading':'listbox.noitems'));},attach:function(parent){if(parent!=this.parent){this.detach();if(parent){this.parent=parent;HTML.add(parent,this.row);}}
return this;},detach:function(){if(this.parent){HTML.remove(this.parent,this.row);this.parent=null;}
return this;},setColCount:function(colcount){try{HTML.setAttribute(this.cell,'colSpan',colcount);}catch(e){}
return this;}};var Listbox=function(opts){var t=this;Widgets.Widget.call(t,opts);t.advanced=opts.advanced;t.root=HTML.createDiv('widgets-listbox');t.title=HTML.createDiv('listbox-header');t.titlediv=HTML.createDiv('listbox-title');t.titleicon=HTML.createIcon('','',true);t.titlenode=HTML.createTextNode('');t.data=HTML.createDiv('listbox-data');t.table=HTML.createTable('listbox');t.thead=HTML.createTableHead('head');t.tbody=HTML.createTableBody('body');t.header=HTML.createTableRow('header');t.rowcount=0;t.colcount=0;t.actionbar=HTML.createDiv('actionbar');t.buttonbar=HTML.createDiv('buttonbar');t.buttons=HTML.createDiv('buttons');t.tasks=HTML.createDiv('tasks');t.search=HTML.createDiv('search');t.searchbox=HTML.createTextInput('searchtext');t.searchbutton=HTML.createButtonInput('searchbutton',Framework.getResource('listbox.search'));t.navigation=HTML.createDiv('navigation');t.first=HTML.createButtonInput('first','|<');t.previous=HTML.createButtonInput('previous','<');t.position=HTML.createTextInput('position');t.next=HTML.createButtonInput('next','>');t.last=HTML.createButtonInput('last','>|');HTML.add(t.root,HTML.add(t.title,HTML.add(t.titlediv,t.titleicon,t.titlenode)),HTML.add(t.data,HTML.add(t.table,HTML.add(t.thead,t.header),t.tbody)),t.actionbar,t.buttonbar);t.refreshCSSClasses();HTML.add(t.actionbar,HTML.add(t.search,t.searchbox,t.searchbutton),HTML.add(t.navigation,t.first,t.previous,t.position,t.next,t.last));HTML.add(t.buttonbar,t.buttons,t.tasks);HTML.addOnClickHandler(t.searchbutton,t,'handleOnSearch');HTML.addOnClickHandler(t.first,t,'handleOnFirst');HTML.addOnClickHandler(t.previous,t,'handleOnPrevious');HTML.addOnClickHandler(t.next,t,'handleOnNext');HTML.addOnClickHandler(t.last,t,'handleOnLast');HTML.readonly(t.position,true);HTML.hide(t.titleicon);t.hideNavigation();t.hideSearch();t.initContent();t.onClick=null;t.onMark=null;t.onFirst=null;t.onPrevious=null;t.onNext=null;t.onLast=null;t.onColumnSort=null;t.onSearch=null;};Listbox.prototype=new Widgets.Widget();Listbox.prototype.CSSClass='listbox';Listbox.prototype.initContent=function(){this.columns={};this.rows=[];if(this.advanced){var hidden=(this.markcol?this.markcol.hidden:false);this.markcol=new MarkHeader(this);HTML.add(this.header,this.markcol.getHTMLRoot());this.columns['mark']=this.markcol;if(hidden){this.markcol.hide()};}};Listbox.prototype.destroy=function(){this.clear();if(this.emptyrow){this.emptyrow.destroy();}
HTML.removeOnClickHandler(this.searchbutton);HTML.removeOnClickHandler(this.first);HTML.removeOnClickHandler(this.previous);HTML.removeOnClickHandler(this.next);HTML.removeOnClickHandler(this.last);};Listbox.prototype.clear=function(){this.setRowCount(0);for(var index in this.columns){HTML.remove(this.header,this.columns[index].getHTMLRoot());this.columns[index].destroy();}};Listbox.prototype.reinit=function(){this.clear();this.initContent();};Listbox.prototype.createListboxButton=function(label,value,task){var button=new Button(label,value,task);HTML.add((task?this.tasks:this.buttons),button.getHTMLRoot());return button;};Listbox.prototype.destroyListboxButton=function(button){HTML.remove((button.task?this.tasks:this.buttons),button.getHTMLRoot());button.destroy();};Listbox.prototype.getHTMLRoot=function(){return this.root;};Listbox.prototype.hideNavigation=function(){HTML.hide(this.navigation);};Listbox.prototype.showNavigation=function(){HTML.show(this.navigation);};Listbox.prototype.hideSearch=function(){HTML.hide(this.search);};Listbox.prototype.showSearch=function(){HTML.show(this.search);};Listbox.prototype.setTitleVisibility=function(visible){HTML[visible?'add':'remove'](this.title,this.titlediv);};Listbox.prototype.addColumn=function(name,key,alignment){var headercell=new Header(this,name,key,alignment);HTML.add(this.header,headercell.getHTMLRoot());this.columns[key]=headercell;this.colcount++;if(this.emptyrow){this.emptyrow.setColCount(this.colcount+(this.markcol?1:0));}};Listbox.prototype.setRowCount=function(rowcount,loading){var index;var row;if((this.rowcount==0)&&(rowcount!=0)&&(this.emptyrow)){this.emptyrow.detach(this.tbody);}
for(index=this.rowcount;index>rowcount;index--){row=this.rows[index-1];if(row){HTML.remove(this.tbody,row.getHTMLRoot());row.destroy();this.rows[index-1]=null;}}
for(index=this.rowcount;index<rowcount;index++){row=new Row(this,(index%2==0));HTML.add(this.tbody,row.getHTMLRoot());this.rows[index]=row;}
if((rowcount==0)&&(!this.emptyrow)){this.emptyrow=(new EmptyRow()).setColCount(this.colcount+(this.markcol?1:0));}
if(rowcount==0){this.emptyrow.attach(this.tbody);this.emptyrow.setLoading(loading);}
this.rowcount=rowcount;};Listbox.prototype.setRow=function(index,data,value){var row=this.rows[index];if(row){row.refresh(value,data);}};Listbox.prototype.markRow=function(index,marked){var row=this.rows[index];if(row){row.mark(marked);}};Listbox.prototype.showMarkColumn=function(shown){if(this.advanced){if(shown){this.columns['mark'].show();}else{this.columns['mark'].hide();}}};Listbox.prototype.selectRow=function(index,selected){var row=this.rows[index];if(row){row.select(selected);}};Listbox.prototype.clearSortColumn=function(column){if(column&&this.columns[column]){this.columns[column].clearSortOrder();}};Listbox.prototype.setSortColumn=function(column,descending){if(column&&this.columns[column]){this.columns[column].setSortOrder(descending);}};Listbox.prototype.setPosition=function(value){HTML.setAttribute(this.position,'value',value);};Listbox.prototype.handleOnClick=function(value,marked,selected){if(this.onClick&&this.enabled){this.onClick(value,marked,selected);}};Listbox.prototype.handleOnMark=function(value,marked,selected){if(this.onMark&&this.enabled){this.onMark(value,marked,selected);}};Listbox.prototype.handleOnFirst=function(event){if(this.onFirst){this.onFirst();}};Listbox.prototype.handleOnPrevious=function(event){if(this.onPrevious){this.onPrevious();}};Listbox.prototype.handleOnNext=function(event){if(this.onNext){this.onNext();}};Listbox.prototype.handleOnLast=function(event){if(this.onLast){this.onLast();}};Listbox.prototype.handleOnColumnSort=function(event,column){if(this.onColumnSort){this.onColumnSort(column);}};Listbox.prototype.handleOnSearch=function(event){if(this.onSearch){this.onSearch(HTML.getAttribute(this.searchbox,'value'));}};Listbox.prototype.setTotalCount=function(count){this.totalcount=count||0;};Listbox.prototype.setLabelIcon=function(iconurl){if(iconurl){if(iconurl!=HTML.getAttribute(this.titleicon,'src')){HTML.setAttribute(this.titleicon,'src',iconurl);}
HTML.show(this.titleicon);}else{HTML.hide(this.titleicon);}};Listbox.prototype.setLabel=function(label){if(label){HTML.setTextContent(this.titlenode,label+' ('+this.totalcount+')');HTML.show(this.titlediv);}else{HTML.hide(this.titlediv);}};Widgets.Listbox=Listbox;Widgets['6EDB::21']=Listbox;})();

Controls.PointerListbox=function(){};Controls.PointerListbox.prototype=new Controls.Listbox();Controls.PointerListbox.prototype.init=function(base,parent,meta,opts){Controls.Listbox.prototype.init.call(this,base,parent,meta,opts);this.widget.onMark=callback(this,this.onClick);this.widget.onClick=callback(this,this.onClick);this.initPrintListButton(parent,meta);};Controls.PointerListbox.prototype.refresh=function(data,editable){this.value='';if(data){if(data.value){this.value=data.value.value;}}
Controls.Listbox.prototype.refresh.call(this,data,editable);};Controls.PointerListbox.prototype.valueSelected=function(value){return(value==this.value);};Controls.PointerListbox.prototype.onClick=function(value,marked,selected){this.value=value;this.sendUpdate(value,true);};Controls['6EDB::19']=Controls.PointerListbox;

Controls.Pointer=function(){this.events=new Controls.Events();};Controls.Pointer.prototype=new Controls.Control();Controls.Pointer.prototype.init=function(base,parent,meta,opts){opts=merge(opts,{'label':meta.label});Controls.Control.prototype.init.call(this,base,parent,meta,opts);this.widget.onButtonClick=callback(this,this.onButtonClick);this.widget.onItemClick=callback(this,function(){if(this.zoomable){this.zoomed=true;this.base.notifyChanged(this);}});this.modified=false;this.clicked=false;this.disable();this.hide();};Controls.Pointer.prototype.refresh=function(data,editable){this.value='';this.repr='';this.zoomable=false;if(data){if(data.value){this.value=data.value.value;this.repr=data.value.repr;}
if(data.repr){this.repr=data.repr;}
if(data.zoomable){this.zoomable=(data.zoomable=='true');}}
if(this.events.done()){this.widget.setValue(this.repr?this.repr:(this.value?this.value:''),'');}
this.widget.setItemClickable(this.zoomable);this.refreshWidget(data,editable);};Controls.Pointer.prototype.onButtonClick=function(){this.clicked=true;this.base.notifyChanged(this);};Controls.Pointer.prototype.modalResult=function(value){this.modified=true;this.value=value;this.base.notifyChanged(this);};Controls.Pointer.prototype.xmlData=function(notifiers,postponed){var xmldata='';if(!postponed){if(this.modified||this.clicked){this.events.add();notifiers.onProcessing.add(callback(this.events,this.events.release));}
if(this.modified){xmldata+=XML.element('update',null,this.value,true);this.modified=false;}
if(this.clicked){notifiers.onProcessing.add(callback(this,this.setMetaControl));xmldata+=XML.element('click',null,null,true);this.clicked=false;}
if(this.zoomed){xmldata+=XML.element('zoom',null,null,true);this.zoomed=false;}}
return this.xmlControl(xmldata);};Controls.Pointer.prototype.setMetaControl=function(){this.base.setMetaControl(this);};Controls['6EDB::13']=Controls.Pointer;

Shards.Link=function(){this.element=HTML.createSpan('input');this.anchor=HTML.createAnchor('','#');this.text=HTML.createTextNode('');HTML.nest(this.element,this.anchor,this.text);HTML.addOnClickHandler(this.anchor,this,'handleOnClick');this.onClick=null;};Shards.Link.prototype.destroy=function(){HTML.removeOnClickHandler(this.anchor);};Shards.Link.prototype.setRepr=function(repr){HTML.setTextContent(this.text,repr);};Shards.Link.prototype.handleOnClick=function(event){if(this.onClick){this.onClick();}
return false;};Shards.Link.prototype.hide=function(){HTML.hide(this.element);};Shards.Link.prototype.show=function(){HTML.show(this.element);};

Widgets.Pointer=function(opts){Widgets.Text.call(this,opts);this.button=new Shards.ImageButton(Framework.imageUrl('6EDB::801::6EDB::725'));this.link=new Shards.Link();this.link.onClick=callback(this,function(){if(this.onItemClick){this.onItemClick();}});this.link.hide();this.text.disable();this.box.addShard(this.link);this.box.addShard(this.button);this.button.onClick=callback(this,this.handleOnButtonClick);this.refreshCSSClasses();this.setValue=callback(this,function(value){this.text.setValue(value);this.link.setRepr(value);});this.onItemClick=null;this.onButtonClick=null;};Widgets.Pointer.prototype=new Widgets.Text();Widgets.Pointer.prototype.CSSClass='pointer';Widgets.Pointer.prototype.destroy=function(){Widgets.Text.prototype.destroy.call(this);this.button.destroy();};Widgets.Pointer.prototype.onEnable=function(){this.button.enable();};Widgets.Pointer.prototype.onDisable=function(){this.button.disable();};Widgets.Pointer.prototype.setItemClickable=function(clickable){if(clickable){this.text.hide();this.link.show();}else{this.text.show();this.link.hide();}};Widgets.Pointer.prototype.handleOnButtonClick=function(event){if(this.onButtonClick&&this.enabled){this.onButtonClick();}};Widgets['6EDB::12']=Widgets.Pointer;

(function(){var autoFit=(function(){var tasize=null;var size=function(textarea){tasize.style.width=textarea.scrollWidth+'px';tasize.innerHTML=textarea['value'].replace(/(<|>)/g,'x').replace(/\n/g,'<BR>')+'<BR>a<BR>a';textarea.style.height=Math.min(300,tasize.scrollHeight)+'px';};var init=function(textarea){tasize=HTML.createDiv('textareasize');var body=document.getElementsByTagName('body')[0];HTML.add(body,tasize);tasize.style.left='-10000px';tasize.style.top='0px';tasize.style.backgroundColor='green';var f=function(){Framework.onFatalError.remove(f);HTML.remove(body,tasize);act=init;};Framework.performOnUnload(f);Framework.onFatalError.add(f);act=size;size(textarea);};var act=init;return function(textarea){act(textarea);};})();var TextArea=function(opts){Widgets.Widget.call(this,opts);this.enabled=true;this.rootdiv=HTML.createDiv('');if(!opts.nolabel){this.label=new Shards.Label(this.wid(),opts.label);HTML.add(this.rootdiv,this.label.element);}
this.autosize=(opts.autosize?autoFit:function(){});this.textarea=HTML.createTextArea('textarea');HTML.setAttribute(this.textarea,'id',this.wid());HTML.add(this.rootdiv,this.textarea);this.refreshCSSClasses();HTML.addOnChangeHandler(this.textarea,this,'handleOnChange');HTML.addOnFocusHandler(this.textarea,this,'onFocus');HTML.addOnBlurHandler(this.textarea,this,'onBlur');if(opts.autosize){HTML.addOnKeyUpHandler(this.textarea,this,'handleOnKeyUp');this.keyup=true;}
if(this.label){this.setLabel=callback(this.label,this.label.setLabel);this.setTooltip=callback(this.label,this.label.setTooltip);}
this.onChange=null;};TextArea.prototype=new Widgets.Widget();TextArea.prototype.CSSClass='textarea';TextArea.prototype.destroy=function(){if(this.keyup)
HTML.removeOnKeyUpHandler(this.textarea);HTML.removeOnBlurHandler(this.textarea);HTML.removeOnFocusHandler(this.textarea);HTML.removeOnChangeHandler(this.textarea);};TextArea.prototype.getHTMLRoot=function(){return this.rootdiv;};TextArea.prototype.show=function(){Widgets.Widget.prototype.show.call(this);this.autosize(this.textarea);};TextArea.prototype.onEnable=function(){HTML.readonly(this.textarea,false);};TextArea.prototype.onDisable=function(){HTML.readonly(this.textarea,true);};TextArea.prototype.setValue=function(value,valuerepr){this.value=value.replace(/\r/g,'');if(!this.focused){HTML.setAttribute(this.textarea,'value',valuerepr?valuerepr:value);this.autosize(this.textarea);}};TextArea.prototype.getValue=function(){return HTML.getAttribute(this.textarea,'value');};TextArea.prototype.handleOnChange=function(event){var newval=this.getValue().replace(/\r/g,'');if(newval!=this.value){this.value=newval;if(this.onChange&&this.enabled){this.onChange(newval);}}};TextArea.prototype.handleOnKeyUp=function(){this.autosize(this.textarea);};TextArea.prototype.onFocus=function(event){HTML.setAttribute(this.textarea,'value',this.value);this.autosize(this.textarea);HTML.setCursorAtEnd(this.textarea);this.focused=true;this.autosave=window.setInterval(callback(this,function(){this.handleOnChange();}),30000);};TextArea.prototype.onBlur=function(event){this.handleOnChange(event);this.focused=false;if(this.autosave){window.clearInterval(this.autosave);this.autosave=null;}};Widgets['6EDB::19']=TextArea;})();
