(function(){var DL=window.DL||{};DL.Component={version:'$Revision: 1.19 $',validation:[],registerValidation:function(component){DL.Component.validation.push(component)},validateComponents:function(evt){evt=evt||window.event;if(!DL.Component.validation.length)return;var result=true;for(var i=0;i
o.maxLength-1)if(key>46&&key<112)DL.Event.stop(event);var sign=String.fromCharCode(key)[event.shiftKey?'toUpperCase':'toLowerCase']();var value=e.input.value;var reset=e.input.value;var msg;if(document.selection){var range=document.selection.createRange();if(remove){range.moveStart('character',-1);range.text=''}else range.text=sign;value=e.input.value;DL.Event.stop(event)}else{value=e.input.value;if(remove){value=value.substr(0,this.selectionStart-1)}else{value=value.substr(0,this.selectionStart)+sign+value.substr(this.selectionStart)}}if(!self.isValid(value)){switch(self.error){default:if(o.allowUnmatchedChars){msg=self.errorMessage}else{msg=DL.String.fill(o.errorMessages.invalidKey,sign);(document.selection)?(e.input.value=reset):DL.Event.stop(event)}break;case'minLength':case'minValue':case'empty':msg=self.errorMessage;break;case'maxLength':case'maxValue':msg=self.errorMessage;(document.selection)?e.input.value=reset:DL.Event.stop(event);break}if(self.options.showErrors)e.error.innerHTML=msg;DL.Element.switchClass(e.label,'valid','invalid')}else{DL.Element.switchClass(e.label,'invalid','valid');if(self.options.showErrors)e.error.innerHTML=''}self.changed=true}});this.execGetter();if(o.validate)DL.Component.registerValidation(this)},getValue:function(){return this.elements.input.value},setValue:function(value){var o=this.options,input=this.elements.input,label=this.elements.label;value=value||'';if(this.validate(value)){if(value!=input.value){input.value=value}this.onvalid(value,this);return true}else{input.value=value;this.oninvalid(value,this);return false}return false},execSetter:function(){var o=this.options,v=this.getValue();if(o.setter){o.setter(v);this.onsetter(v,this)}},execGetter:function(){var o=this.options;if(o.getter){var value=o.getter();this.setValue(value);this.ongetter(value,this)}},validate:function(value){var valid;this.toggleValid(valid=this.isValid(value));return(this.valid=valid)},toggleValid:function(flag){var e=this.elements;if(flag){this.error=false;if(this.options.showErrors)e.error.innerHTML='';DL.Element.switchClass(e.label,'invalid','valid');this.onvalid(this.getValue())}else{this.error=true;if(this.options.showErrors)e.error.innerHTML=this.errorMessage;DL.Element.switchClass(e.label,'valid','invalid');this.oninvalid(this.getValue())}},isValid:function(origin){var o=this.options,e=this.elements,value=origin||'',result=true;if(!o.validate||(!o.required&&!value))return true;value=this.replacePreAndSuffix(0,value);if(o.required&&(/^\s*$/.test(value))){this.error='empty';this.errorMessage=o.errorMessages['empty'];return false}if(result&&o.minLength!=-1&&value.lengtho.maxLength){this.error='maxLength';this.errorMessage=DL.String.fill(o.errorMessages['maxLength'],o.maxLength);return false}if(result&&o.minValue&&valueo.maxValue){this.error='maxValue';this.errorMessage=DL.String.fill(o.errorMessages['maxValue'],o.maxValue);return false}if(result&&o.match&&DL.type(o.match)=='regexp'&&!o.match.test(value)){this.error='invalidFormat';this.errorMessage=o.errorMessages['invalidFormat'];return false}return result},togglePreAndSuffix:function(flag){flag=!!flag;var o=this.options;if(o.prefix||o.suffix||!this.valid)return false;this.elements.input.value=this.replacePreAndSuffix(flag);return true},replacePreAndSuffix:function(flag,value){var o=this.options,rp=new RegExp('^'+o.prefix),rs=new RegExp(o.suffix+'$');value=value||this.getValue();if(!(o.prefix||o.suffix))return value;if(o.prefix)value=(flag)?(!rp.test(value))?o.prefix+value:value:value.replace(rp,'');if(o.suffix)value=(flag)?(!rs.test(value))?value+o.suffix:value:value.replace(rs,'');return value},focus:function(){this.elements.input.focus()},blur:function(){this.elements.input.blur()},blink:function(){var e=this.elements;DL.Element.switchClass(e.label,'valid','invalid');DL.Function.delay(function(){DL.Element.switchClass(e.label,'invalid','valid')},1000)},destroy:function(){DL.Element.removeNode(this.elements.body)},onfocus:function(self){},onblur:function(self){},onvalid:function(value,self){},oninvalid:function(value,self){},onchange:function(value,self){},ongetter:function(value,self){},onsetter:function(value,self){},onenterkey:function(value,self){}});DL.Component.TextInput.implement(new DL.Class.Options);DL.Component.MaskInput=new DL.Class({initialize:function(options){this.options={name:false,value:false,label:false,element:false,appendTo:false,className:false,emptyCharacter:'_',mask:'',alpha:/[a-z]+/i,numeric:/[0-9]+/,alphaNumeric:/[0-9a-z]/i,transform:true,disablemask:false};this.changed=false;this.position=[0,0];this.elements={};this.setOptions(options);this.create()},create:function(){var o=this.options,e=this.elements,self=this,cn='',classes=['Component','MaskInput'];if(o.className)classes.push(o.className);if((o.transform&&o.element)||!o.element){if(!o.appendTo&&o.element)o.appendTo=o.element.parentNode||null;e.body=DL.$C('div',{className:classes.join(' ')},e.label=DL.$C('label',{className:'Label'},DL.$C('span',{},(o.label?DL.Element.newText(o.label):null)),e.input=o.element||DL.$C('input',{name:o.name||'',id:o.name||'',type:'text',className:'Input'})));if(o.appendTo&&DL.type(o.appendTo)=='element')DL.Element.addNode(o.appendTo,e.body)}else{e.input=o.element;DL.Element.addClass(e.input,classes.join(' '))}self.setValue(o.value||(DL.defined(e.input.value)?e.input.value:''));DL.Event.addHandlers(e.input,{focus:function(evt){evt=evt||window.event;if(self.options.disablemask){self.elements.input.select();return}var p=self.position;(p[0]==0)?DL.Function.delay(self.selectFirst,10,self):DL.Function.delay(DL.bind(self.select,self,p[0],1),10);if(self.isEmpty()){self.setValue(self.maskValue())}self.onfocus(self)},blur:function(evt){if(self.isEmpty()){self.setValue('')}else self.toggleValid(self.isValidValue(this.value));if(self.changed){self.onchange(this.value,self.changed);self.changed=false}self.onblur(self)},keydown:function(evt){evt=evt||window.event;if(self.options.disablemask)return;var code=evt.which||evt.keyCode,p=self.position;if(code==86&&(evt.ctrlKey||evt.metaKey)){self.pasted=this.value||true;self.setValue('');return}switch(code){case 9:case 16:case 13:return;case 8:self.updateSelection(p[0],self.options.emptyCharacter,-1);break;case 37:case 38:self.selectPrev();break;case 39:case 40:self.selectNext();break;case 46:self.updateSelection(p[0],self.options.emptyCharacter);break;default:var value=self.code2char(evt);if(self.isValidInput(p[0],value)){self.toggleValid(1,p[0],value);self.updateSelection(p[0],value)}else self.toggleValid(0,p[0],value);break}DL.Event.stop(evt)},keypress:function(evt){evt=evt||window.event;if(self.options.disablemask)return;var code=evt.which||evt.keyCode;var meta=evt.metaKey||evt.ctrlKey;switch(true){case(code==9):case(evt.shiftKey&&code==9):case(meta&&code==97):case(meta&&evt.keyCode==67):case(meta&&evt.keyCode==88):return;case(code==13):self.onenterkey(self.getValue(),self);this.blur();return;case(!self.pasted):return;default:DL.Event.stop(evt);return}},keyup:function(){if(self.options.disablemask)return;if(self.pasted){self.pasted='';self.setValue(self.getValue());self.selectFirst()}},click:function(evt){self.onclick(evt)}})},select:function(from,direction){var to=(direction==-1)?0:this.options.mask.length;for(var i=from;(direction==-1)?to=0){return true}return false},isValidInput:function(pos,chr){var o=this.options,e=this.elements,chrMask=o.mask.charAt(pos),result=false;switch(chrMask){case'#':if(o.numeric.test(chr))result=true;break;case'?':if(o.alpha.test(chr))result=true;break;case'*':if(o.alphaNumeric.test(chr))result=true;break}return result},isValidValue:function(value){var mask=this.options.mask;if(value&&value.length==mask.length){for(var i=0;i0)this.selectNext();else this.selectPrev();this.changed=value;this.onupdate(output,chr,pos,this)},code2char:function(evt){var chr='';switch(evt.keyCode){case 48:case 96:chr='0';break;case 49:case 97:chr='1';break;case 50:case 98:chr='2';break;case 51:case 99:chr='3';break;case 52:case 100:chr='4';break;case 53:case 101:chr='5';break;case 54:case 102:chr='6';break;case 55:case 103:chr='7';break;case 56:case 104:chr='8';break;case 57:case 105:chr='9';break;default:chr=String.fromCharCode(evt.which||evt.keyCode)[(evt.shiftKey)?'toUpperCase':'toLowerCase']();break}return chr},onclick:function(chr,pos){},oninvalid:function(chr,pos){},onvalid:function(chr,pos){},onupdate:function(value,chr,pos){},onchange:function(newValue,oldValue){},onfocus:function(self){},onblur:function(self){},ongetter:function(value,self){},onsetter:function(value,self){},onenterkey:function(value,self){}});DL.Component.MaskInput.implement(new DL.Class.Options);DL.Component.SelectInput=new DL.Class({initialize:function(options){this.options={name:false,element:false,appendTo:false,defaultValue:false,options:{},label:false,getter:null,setter:null};var self=this,e=this.elements={},o=this.setOptions(options);e.body=DL.$C('div',{className:'Component SelectInput'},e.label=DL.$C('label',{className:'Label'},DL.$C('span',{},(o.label?DL.Element.newText(o.label):null)),e.input=o.element||DL.$C('select',{name:o.name||'',className:'Input'})));if(o.options&&DL.type(o.options)=='object')this.addOptions(o.options);if(o.element){var options=DL.$TN('option',o.element);DL.Array.each(options,function(v,i,a){o.options[v.value]=v.nodeValue})}if(o.appendTo&&DL.type(o.appendTo)=='element')DL.Element.addNode(o.appendTo,e.body);if(o.value)this.setValue(o.value);DL.Event.addHandlers(e.input,{focus:function(){self.execGetter();self.onfocus(self)},change:function(){self.execSetter();self.onblur(self)},click:function(event){event=event||window.event;var element=event.srcElement||event.target;self.onselect(self)},keydown:function(event){event=event||window.event;var key=event.keyCode;if(key==DL.Event.kRETURN){this.blur();return false}}});this.execGetter()},setValue:function(value){var input=this.elements.input;if(!DL.defined(value)){this.value=input.value;return input.selectedIndex}for(var i=0;iself.dElement.width-self.dDragger.width){value=self.dElement.width-self.dDragger.width}self.setValue({left:value});self.setPosition();self.onclick(self.percent)}});DL.Element.setStyle(e.indicator,'position','absolute');this.min={};this.max={};this.min.x=0;this.max.x=(this.dElement.width-this.dDragger.width);this.setPosition()},setValue:function(pos){var x=pos.left||0,y=pos.top||0;switch(this.options.type){case'left':this.percent=(Math.round(((x)/(this.max.x))*100));break;case'right':this.percent=(100-Math.round(((x)/(this.max.x))*100));break;case'center':this.percent=((50-Math.round((x)/this.max.x*100))*-1);break}this.elements.input.value=this.percent;this.elements.indicator.innerHTML=this.percent;this.onupdate(this.percent)},setPosition:function(percent){percent=DL.check(percent)?percent:this.percent;if(percent<0||percent>100)return;var value=(this.max.x*percent/100);if(this.type=='center')percent-=50;this.setValue({left:value});DL.Element.setStyle(this.elements.dragger,{left:value+'px'})},onstart:function(percent){},onchange:function(percent){},onupdate:function(percent){},onclick:function(percent){}});DL.Component.Slider.implement(new DL.Class.Options);DL.Component.RecordSet=new DL.Class({initialize:function(options){this.options={primary:'id',data:[]};var o=this.setOptions(options);this.data={UPDATE:[],DELETE:[]};this.removed=[];return this},include:function(dataSet){for(var i=0;i0)this.data.DELETE.push(data.id);return true}}return false},refreshIDs:function(values){for(var n in values){var record;if((record=this.select(values[n])))record.id=n}},toJSON:function(){return DL.JSON.toString(this.data)},onselect:function(data){},onupdate:function(data,records){},onremove:function(data){}});DL.Component.RecordSet.implement(new DL.Class.Options);DL.Component.DataAdapter=new DL.Class({initialize:function(definition,reference){this.data=reference||{};this.definition=definition;this.functions={};this.dataKeys=[];this.values={};this.setDefinition(definition)},addDefinition:function(property,definition){if(!definition&&DL.type(definition)=='object'){return}var self=this;for(var fn in definition){if(!(fn=='getter'||fn=='setter')){continue}if(!(definition.params&&DL.type(definition.params)=='array')){definition.params=[]}this.functions[property]=this.functions[property]||{};(function(d,fn){d.params.unshift(d.source[d.fn],d.source);self.functions[property][fn]=DL.bind(function(){var method=DL.bind.apply(null,d.params||[]),result=method.apply(null,arguments);self.data[property]=result;if(fn=='getter'){self.ongetter(property,result)}else if(fn=='setter'){self.onsetter(property,result)}return result},null,property)})(definition[fn],fn);DL.Array.include(this.dataKeys,property)}},setDefinition:function(definition){if(!definition&&DL.type(definition)=='object'){console.error("Can't set Definition wihout parameter `definition` {Object}! [layouter2|1823]");return false}for(var property in definition){if(definition[property]||definition[property].fn){this.addDefinition(property,definition[property])}}},getById:function(id){for(var i=0;i=o.frames){if(o.endless){this.i=0;this.x=0}else if(o.yoyo){this.direction=-1}else return this.stop()}else if(this.i<=0){if(o.yoyo){this.direction=1}}this.i+=this.direction;this.x=this.x+o.size*this.direction;this.element.style.backgroundPosition=-this.x+'px 0';this.onframe(this.i,this.x)},stop:function(){if(this.isPlaying){clearInterval(this.interval);this.isPlaying=false;this.onstop(this)}},onstop:function(e){},onstart:function(e){},onframe:function(i,x){}});DL.Component.Sprite.implement(new DL.Class.Options);DL.Component.ActionList=new DL.Class({initialize:function(){this.actions=[];this.length=0;this.index=null;this.add.apply(this,arguments)},add:function(){var length=this.length;for(var i=0,options;options=arguments[i];i++){if(!(this.get(options.name))){var action=new DL.Component.Action(options),self=this;DL.Event.addHandler(action,'execute',function(){self.onexecute(this)});DL.Event.addHandler(action,'enable',function(){self.onenable(this)});DL.Event.addHandler(action,'disable',function(){self.ondisable(this)});this.actions.push(action);this.length++}}return(this.length-length)},get:function(name){for(var i=0,action;action=this.actions[i];i++){if(action.options.name==name){return action}}return null},remove:function(name){for(var i=0,action;action=actions[i];i++){if(action.options.name==name){DL.Array.remove(this.actions,i);return true}}return false},execute:function(name){var action;if((action=this.get(name))){return action.execute(Array.prototype.slice.call(arguments,1))}return null},iterate:function(reverse){if(this.index==null){this.index=reverse?this.length-1:0}var result,index=reverse?this.index--:this.index++;if((result=this.actions[index])){return result}return this.index=null},onexecute:function(){},onenable:function(){},ondisable:function(){}});DL.Component.Action=new DL.Class({initialize:function(options){if(typeof options=='object'&&typeof options.func=='function'&&options.name){this.options={func:null,name:null,label:null,image:null,description:null,enabled:true};this.setOptions(options)}},setOptions:function(options){return this.options=DL.Object.extend(this.options,options)},execute:function(){if(this.options.enabled){this.onexecute();return this.options.func.apply(this,arguments)}return null},enable:function(){this.onenable();this.options.enabled=true},disable:function(){this.ondisable();this.options.enabled=false},getName:function(){return this.options.name},onexecute:function(){},onenable:function(){},ondisable:function(){}});DL.Component.Toolbar=new DL.Class({initialize:function(options){var o=this.setOptions(options);if(o.element){this.create()}else{var error=Error('Toolbar.constructor() [layouter.js|213]: Element not found or option-error');throw error;return error}DL.Component.Toolbar.instances.push(this);return this},setOptions:function(options){this.options=DL.Object.extend({id:null,element:null,actionList:null,showLabels:false,showImages:false,imagePath:'/se_data/global/gfx/gui/components/toolbar/simple/buttons/',imageSize:16,imageExtension:'png',label:false,reverse:false,disabled:false},options);return this.options},create:function(){this.elements=this.elements||{};var a=null,o=this.options,e=this.elements,label=null;if(!e.body){DL.Element.addNode(o.element,e.body=DL.$C('div',{className:'Component Toolbar'}))}else{if(e.label)label=DL.Element.removeNode(e.label);DL.Element.removeChildNodes(e.body)}DL.Element.addNodes(e.body,e.buttons=DL.$C('ul',{className:'Buttons'},e.label=(o.label)?label||DL.$C('li',{className:'Label '+o.label},o.label):null));if(!o.actionList){return}while((a=o.actionList.iterate(o.reverse)))this.createButton(a.options);DL.Element.addNode(e.buttons,DL.$C('div',{style:{clear:'both',visibility:'hidden'}}));this.oncreate(this)},createButton:function(ao){var e=this.elements,o=this.options,self=this,el;DL.Element.addNode(e.buttons,DL.$C('li',{className:'Button '+ao.name},el=DL.$C('a',{title:ao.description,href:DL.Browser.isIE?'#'+(o.element.id||''):'JavaScript:void(0);',style:DL.Object.suffix({width:o.imageSize,height:o.imageSize},'px')})));DL.Event.addHandlers(el,{mouseover:function(){if(self.disabled)return},mouseout:function(){if(self.disabled)return},mousedown:function(evt){DL.Event.stop(evt);if(self.disabled)return;self.onaction(evt);o.actionList.get(ao.name).execute(e)}});var filename=(o.imagePath+o.imageSize+'_'+ao.name.toLowerCase()+'.'+o.imageExtension);DL.Element.setStyle(el,{backgroundImage:DL.String.fill('url(%url%)',{url:filename})});if(o.showLabels){DL.Element.addNode(el,DL.Element.newText(ao.label))}return(e[ao.name]=el)},update:function(label,actionList){var o=this.options,e=this.elements;if(actionList instanceof DL.Component.ActionList){o.actionList=actionList;o.label=label;this.create()}},disable:function(){DL.Element.addClass(this.elements.body,'disabled');this.disabled=true},enable:function(){DL.Element.removeClass(this.elements.body,'disabled');this.disabled=false},oncreate:function(){},onaction:function(){}});DL.Component.Toolbar.instances=[];DL.Component.Toolbar.get=function(id){for(var i=0;i1){this.onpaste(this.newValue,this.oldValue,o.input)}else if(diff<-1&&!this.keyValue){this.oncut(this.newValue,this.oldValue,o.input)}}this.oldValue=this.newValue;this.keyValue=false},setKeyValue:function(e){e=e||window.event;var code=e.which||e.keyCode,ctrl=(e.ctrlKey||e.metaKey);switch(true){case(code==17||code==0):return;case(ctrl&&code==67):case(ctrl&&code==88):case(ctrl&&code==86):case(ctrl&&code==224):this.keyValue=false;DL.Function.delay(this.detect,10,this);return;default:break}this.keyValue=code},oncut:function(value,newValue,oldValue,input){},onpaste:function(value,newValue,oldValue,input){}});DL.Component.ClipboardObserver.implement(new DL.Class.Options)})();DL.Component.Selection=new DL.Class({initialize:function(options){this.options={win:window,doc:document};this.current=null;this.setOptions(options)},getElementByTagName:function(tagName){var element=this.getParent(),result=null;if(!element||!(element||element.tagName)||element.tagName=='BODY')return;tagName=tagName.toLowerCase();while(tagName!=element.tagName.toLowerCase()&&element.tagName.toLowerCase()!='body'){element=element.parentNode}if(element.tagName&&element.tagName.toLowerCase()!='body')result=element;return result},getNodes:function(){var doc=this.options.doc,win=this.options.win,result=null,selection;if(DL.Browser.isIE){win.focus();selection=this.current=doc.selection.createRange();if(selection.htmlText){result=doc.createElement('span');result.innerHTML=selection.htmlText}}else{selection=this.current=win.getSelection();if(selection&&selection.rangeCount>0){var range=selection.getRangeAt(0),nodes=range.cloneContents();if(nodes.childNodes.length){if(DL.Browser.isSafari&&nodes.childNodes.length==1&&nodes.childNodes[0].nodeType==3){var parent=this.getParent();if(parent.textContent.length==nodes.childNodes[0].nodeValue.length)return DL.$C('span',{},DL.Element.cloneNode(parent))}result=doc.createElement('span');result.appendChild(nodes)}}}return result},getNodes2:function(){var win=this.options.win,doc=this.options.doc,range;if(DL.Browser.isIE){win.focus();range=this.current=doc.selection.createRange();range.collapse();range.moveToElementText(element=range.parentElement());if(range.parentElement().outerHTML==range.htmlText){range.select()}else return;var element=range.parentElement(),result=[element];for(var i=0,l=element.all.length;i0){var result=[],i=0;while(i0){var range=selection.getRangeAt(0),container=range.commonAncestorContainer,result=container;if(container.nodeType==3){result=range.startContainer.parentNode}else if(range.startContainer.nextSibling===range.endContainer.previousSibling){result=range.startContainer.nextSibling}else if(range.startContainer.nodeType==1&&range.startContainer===range.endContainer&&(range.endOffset-range.startOffset)<=1){result=range.startContainer.childNodes[range.startOffset]}return result}else return doc.body},insertNode:function(node){var selection,doc=this.options.doc,win=this.options.win;if(DL.Browser.isIE){win.focus();selection=doc.selection.createRange();var value=(node.nodeType==11)?node.innerHTML:(node.outerHTML||node.nodeValue);if(doc.selection.type=="Control")selection(0).outerHTML=value;else selection.pasteHTML(value);return}selection=this.options.win.getSelection();var range=selection.getRangeAt(0),offset=range.startOffset,container=range.startContainer;if(DL.Browser.isOpera&&container&&container.nodeType==1&&container.tagName.toLowerCase()=='html'){container=doc.body;offset=container.childNodes.length}else range.deleteContents();range=doc.createRange();if(container.nodeType==3){var text=container.nodeValue,textAfter=text.substring(offset);container.nodeValue=text.substring(0,offset);if(container.nextSibling==null){container.parentNode.appendChild(node);container.parentNode.appendChild(doc.createTextNode(textAfter))}else{var nodeAfter=doc.createTextNode(textAfter);container.parentNode.insertBefore(nodeAfter,container.nextSibling);container.parentNode.insertBefore(node,nodeAfter)}range.setStart(container.parentNode.childNodes[1],0);range.setEnd(container.parentNode.childNodes[2],0)}else{container.insertBefore(node,container.childNodes[offset]);range.setEnd(container.childNodes[offset],0);range.setStart(container.childNodes[offset],0)}selection.removeAllRanges()}});DL.Component.Selection.implement(new DL.Class.Options);