(function(){var m=window.DL||{};m.Component={version:'$Revision: 1.18 $',validation:[],registerValidation:function(a){m.Component.validation.push(a)},validateComponents:function(a){a=a||window.event;if(!m.Component.validation.length)return;var b=true;for(var i=0;io.maxLength-1)if(f>46&&f<112)m.Event.stop(c);var h=String.fromCharCode(f)[c.shiftKey?'toUpperCase':'toLowerCase']();var b=e.input.value;var d=e.input.value;var a;if(document.selection){var g=document.selection.createRange();if(i){g.moveStart('character',-1);g.text=''}else g.text=h;b=e.input.value;m.Event.stop(c)}else{b=e.input.value;if(i){b=b.substr(0,this.selectionStart-1)}else{b=b.substr(0,this.selectionStart)+h+b.substr(this.selectionStart)}}if(!k.isValid(b)){switch(k.error){default:if(o.allowUnmatchedChars){a=k.errorMessage}else{a=m.String.fill(o.errorMessages.invalidKey,h);(document.selection)?(e.input.value=d):m.Event.stop(c)}break;case'minLength':case'minValue':case'empty':a=k.errorMessage;break;case'maxLength':case'maxValue':a=k.errorMessage;(document.selection)?e.input.value=d:m.Event.stop(c);break}if(k.options.showErrors)e.error.innerHTML=a;m.Element.switchClass(e.label,'valid','invalid')}else{m.Element.switchClass(e.label,'invalid','valid');if(k.options.showErrors)e.error.innerHTML=''}k.changed=true}});this.execGetter();if(o.validate)m.Component.registerValidation(this)},getValue:function(){return this.elements.input.value},setValue:function(a){var o=this.options,input=this.elements.input,label=this.elements.label;a=a||'';if(this.validate(a)){if(a!=input.value){input.value=a}this.onvalid(a,this);return true}else{input.value=a;this.oninvalid(a,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 a=o.getter();this.setValue(a);this.ongetter(a,this)}},validate:function(a){var b;this.toggleValid(b=this.isValid(a));return(this.valid=b)},toggleValid:function(a){var e=this.elements;if(a){this.error=false;if(this.options.showErrors)e.error.innerHTML='';m.Element.switchClass(e.label,'invalid','valid');this.onvalid(this.getValue())}else{this.error=true;if(this.options.showErrors)e.error.innerHTML=this.errorMessage;m.Element.switchClass(e.label,'valid','invalid');this.oninvalid(this.getValue())}},isValid:function(a){var o=this.options,e=this.elements,value=a||'',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=m.String.fill(o.errorMessages['maxLength'],o.maxLength);return false}if(result&&o.minValue&&valueo.maxValue){this.error='maxValue';this.errorMessage=m.String.fill(o.errorMessages['maxValue'],o.maxValue);return false}if(result&&o.match&&m.type(o.match)=='regexp'&&!o.match.test(value)){this.error='invalidFormat';this.errorMessage=o.errorMessages['invalidFormat'];return false}return result},togglePreAndSuffix:function(a){a=!!a;var o=this.options;if(o.prefix||o.suffix||!this.valid)return false;this.elements.input.value=this.replacePreAndSuffix(a);return true},replacePreAndSuffix:function(a,b){var o=this.options,rp=new RegExp('^'+o.prefix),rs=new RegExp(o.suffix+'$');b=b||this.getValue();if(!(o.prefix||o.suffix))return b;if(o.prefix)b=(a)?(!rp.test(b))?o.prefix+b:value:b.replace(rp,'');if(o.suffix)b=(a)?(!rs.test(b))?b+o.suffix:b:b.replace(rs,'');return b},focus:function(){this.elements.input.focus()},blur:function(){this.elements.input.blur()},blink:function(){var e=this.elements;m.Element.switchClass(e.label,'valid','invalid');m.Function.delay(function(){m.Element.switchClass(e.label,'invalid','valid')},1000)},destroy:function(){m.Element.removeNode(this.elements.body)},onfocus:function(a){},onblur:function(a){},onvalid:function(a,b){},oninvalid:function(a,b){},onchange:function(a,b){},ongetter:function(a,b){},onsetter:function(a,b){},onenterkey:function(a,b){}});m.Component.TextInput.implement(new m.Class.Options);m.Component.MaskInput=new m.Class({initialize:function(a){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(a);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=m.$C('div',{className:classes.join(' ')},e.label=m.$C('label',{className:'Label'},m.$C('span',{},(o.label?m.Element.newText(o.label):null)),e.input=o.element||m.$C('input',{name:o.name||'',type:'text',className:'Input'})));if(o.appendTo&&m.type(o.appendTo)=='element')m.Element.addNode(o.appendTo,e.body)}else{e.input=o.element;m.Element.addClass(e.input,classes.join(' '))}self.setValue(o.value||(m.defined(e.input.value)?e.input.value:''));m.Event.addHandlers(e.input,{focus:function(a){a=a||window.event;if(self.options.disablemask){self.elements.input.select();return}var p=self.position;(p[0]==0)?m.Function.delay(self.selectFirst,10,self):m.Function.delay(m.bind(self.select,self,p[0],1),10);if(self.isEmpty()){self.setValue(self.maskValue())}self.onfocus(self)},blur:function(a){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(a){a=a||window.event;if(self.options.disablemask)return;var b=a.which||a.keyCode,p=self.position;if(b==86&&(a.ctrlKey||a.metaKey)){self.pasted=this.value||true;self.setValue('');return}switch(b){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 c=self.code2char(a);if(self.isValidInput(p[0],c)){self.toggleValid(1,p[0],c);self.updateSelection(p[0],c)}else self.toggleValid(0,p[0],c);break}m.Event.stop(a)},keypress:function(a){a=a||window.event;if(self.options.disablemask)return;var b=a.which||a.keyCode;var c=a.metaKey||a.ctrlKey;switch(true){case(b==9):case(a.shiftKey&&b==9):case(c&&b==97):case(c&&a.keyCode==67):case(c&&a.keyCode==88):return;case(b==13):self.onenterkey(self.getValue(),self);this.blur();return;case(!self.pasted):return;default:m.Event.stop(a);return}},keyup:function(){if(self.options.disablemask)return;if(self.pasted){self.pasted='';self.setValue(self.getValue());self.selectFirst()}},click:function(a){self.onclick(a)}})},select:function(b,c){var a=(c==-1)?0:this.options.mask.length;for(var i=b;(c==-1)?a=0){return true}return false},isValidInput:function(b,a){var o=this.options,e=this.elements,chrMask=o.mask.charAt(b),result=false;switch(chrMask){case'#':if(o.numeric.test(a))result=true;break;case'?':if(o.alpha.test(a))result=true;break;case'*':if(o.alphaNumeric.test(a))result=true;break}return result},isValidValue:function(a){var b=this.options.mask;if(a&&a.length==b.length){for(var i=0;i0)this.selectNext();else this.selectPrev();this.changed=value;this.onupdate(output,c,a,this)},code2char:function(a){var b='';switch(a.keyCode){case 48:case 96:b='0';break;case 49:case 97:b='1';break;case 50:case 98:b='2';break;case 51:case 99:b='3';break;case 52:case 100:b='4';break;case 53:case 101:b='5';break;case 54:case 102:b='6';break;case 55:case 103:b='7';break;case 56:case 104:b='8';break;case 57:case 105:b='9';break;default:b=String.fromCharCode(a.which||a.keyCode)[(a.shiftKey)?'toUpperCase':'toLowerCase']();break}return b},onclick:function(a,b){},oninvalid:function(a,b){},onvalid:function(a,b){},onupdate:function(b,c,a){},onchange:function(a,b){},onfocus:function(a){},onblur:function(a){},ongetter:function(a,b){},onsetter:function(a,b){},onenterkey:function(a,b){}});m.Component.MaskInput.implement(new m.Class.Options);})();