ValidatorOptions=Object.extend({fileLoadingImage:'/validator/Images/loading.gif',fileRequiredImage:'/validator/Images/Icons/required.png',fileOkImage:'/validator/Images/Icons/ok.png',fileNotOkImage:'/validator/Images/Icons/nok.png',fileBalloonBackground:'/validator/Images/balloon.png',alertRequired_nl:'Niet alle benodigde velden zijn ingevoerd!',alertRequired_be:'Niet alle benodigde velden zijn ingevoerd!',alertRequired_uk:'Not all required fields are filled!',alertRequired_com:'Not all required fields are filled!'},window.ValidatorOptions||{});var Validator=Class.create();Validator.prototype={initTime:null,lang:'nl',initialize:function(){var m_start=new Date().getTime()/1000;this.lang=Element.select(document,'meta[name="language"]').first().content;Element.select(document,'form').each(this.presetForms.bind(this));var m_end=new Date().getTime()/1000;this.initTime=(m_end-m_start);},getIcon:function(node){try{var val_parent=node.parentNode;var val_img=node.next();if(!val_img||val_img==null||val_img.tagName!='IMG'){val_img=new Element('IMG');if(val_parent&&(val_parent.tagName=='TD'||val_parent.tagName=='TH')){$(val_parent).writeAttribute('nowrap','nowrap');}
$(node).insert({after:val_img});}
return val_img;}catch(e){throw('Validator::getIcon: '+e);}},updateIcon:function(node,src){this.getIcon(node).src=src;},presetInputs:function(node){try{if(r=$(node).readAttribute('required')){this.inputnode_setRequiredSettings(node,r);}
if(r=$(node).readAttribute('validate')){this.inputnode_setValidateSettings(node,r);}
if(r=$(node).readAttribute('lookup')){this.inputnode_setLookupSettings(node,r);}
if(r=$(node).readAttribute('identical')){this.inputnode_setIdenticalSettings(node,r);}
if(r=$(node).readAttribute('default')){this.inputnode_setDefaultSettings(node,r);}}catch(e){throw('Validator::presetInputs: '+e);}},handle_nodeEvents:function(node){try{if($(node).onchange){eval($(node).onchange());}
if($(node).onblur){eval($(node).onblur());}}catch(e){throw('Validator::handle_nodeEvents: '+e);}},presetForms:function(node){try{$(node).getElements().each(this.presetInputs.bind(this));if(r=$(node).readAttribute('validate')){this.formnode_setValidateSettings(node,r);}else{this.formnode_setSubmitSettings(node);}}catch(e){throw('Validator::presetForms: '+e);}},inputnode_updateValidate:function(transport,node){try{var xmldoc=transport.responseXML;if(xmldoc){var xmlroot=xmldoc.getElementsByTagName('data').item(0);if(xmlroot){for(var iNode=0;iNode<xmlroot.childNodes.length;iNode++){var xmlnode=xmlroot.childNodes.item(iNode);var xmlsibl=xmlnode.childNodes.item(0);if(xmlsibl){if(xmlnode.nodeName=='valid'){this.updateIcon(node,xmlsibl.nodeValue.match('true')?(ValidatorOptions.fileOkImage):(ValidatorOptions.fileNotOkImage));}else if(xmlnode.nodeName=='value'){$(node).setValue(xmlsibl.nodeValue);}else if(xmlnode.nodeName=='level'){$(node).setStyle({'borderColor':'rgb('+Math.floor((255*parseInt(xmlsibl.nodeValue))/100)+', '+Math.floor((255*(100-parseInt(xmlsibl.nodeValue)))/100)+', '+Math.floor(0)+')'});}else if(xmlnode.nodeName=='alert'){alert(xmlsibl.nodeValue);}
this.handle_nodeEvents(node);}}}}}catch(e){throw('Validator::inputnode_updateValidate: '+e);}},inputnode_updateLookup:function(transport,node,tofill){try{var arrfill=tofill.split(';');var xmldoc=transport.responseXML;if(xmldoc){var xmlroot=xmldoc.getElementsByTagName('data').item(0);if(xmlroot){var nodeLength=xmlroot.childNodes.length;for(var iNode=0;iNode<nodeLength;iNode++){var xmlnode=xmlroot.childNodes.item(iNode);var xmlsibl=xmlnode.childNodes.item(0);var xnode=$(arrfill[iNode]);if(xmlsibl&&xnode){$(xnode).setValue(xmlsibl.nodeValue);$(xnode).focus();this.handle_nodeEvents(xnode);$(xnode).readOnly=true;this.updateIcon(xnode,ValidatorOptions.fileOkImage);}}}}}catch(e){throw('Validator::inputnode_updateLookup: '+e);}},formnode_setSubmitSettings:function(node){$(node).observe('submit',(function(event){var element=event.element();if(element.readOnly)return;try{element.select('INPUT[type="submit"]','BUTTON[type="submit"]').each(function(snode){if(r=$(snode).readAttribute('block')){$(snode).writeAttribute('disabled','disabled');}});}catch(e){throw('Validator::formnode_setSubmitSettings: '+e);}}).bind(this));},formnode_setValidateSettings:function(node,type){$(node).observe('submit',(function(event){var element=event.element();if(element.readOnly)return;element.focus();try{var inputs=$(element).getElements();var all_required=true;if($(node).onsubmit){all_required=eval($(node).onsubmit());}
var _msg='';$A(inputs).each((function(inputnode){try{if(snode=$(inputnode).readAttribute('required')){var disabledElement=$(inputnode).readAttribute('disabled');var skip=$(inputnode).readAttribute('skiprequired');var image=$(inputnode).readAttribute('image');if(disabledElement){if(image){$(image).setStyle({color:''});}else{$(inputnode).setStyle({borderColor:''});}}else if(skip!='yes'&&this.inputnode_checkRequiredData(inputnode,false)){all_required=false;if(image){$(image).setStyle({color:'#FF0000'});_msg+='-'+$(image).innerHTML+'\r\n';}else{$(inputnode).setStyle({border:'#FF0000 1px solid'});}}else if(skip!='yes'){if(image){$(image).setStyle({color:''});}else{$(inputnode).setStyle({borderColor:''});}}}}catch(e){throw('Validator::formnode_setValidateSettings::inputs:: '+e);}}).bind(this));if(!all_required){Event.stop(event);if(ValidatorOptions['alertRequired_'+this.lang]){alert(ValidatorOptions['alertRequired_'+this.lang]+'\r\n\r\n'+_msg);}}else{element.select('INPUT[type="submit"]','BUTTON[type="submit"]').each(function(snode){$(snode).writeAttribute('disabled','disabled');});}}catch(e){throw('Validator::formnode_setValidateSettings: '+e);}}).bind(this));},inputnode_checkRequiredData:function(node,prev){var state=(false||prev);try{if($(node)){var snode=$(node).readAttribute('required');if((($(node).getValue()=='')||($(node).getValue()==0)||($(node).getValue()==$(node).readAttribute('default')))){if(snode&&snode!='required'&&snode!='noimages'){if($(snode)&&!$(snode).readAttribute('skiprequired')){$(snode).writeAttribute('skiprequired','yes');}
state=this.inputnode_checkRequiredData(snode,state);}else{state=true;}}else{if(snode){if($(snode)&&!$(snode).readAttribute('skiprequired')){$(snode).writeAttribute('skiprequired','yes');}
this.inputnode_checkRequiredData(snode,state);}}}}catch(e){throw('Validator::inputnode_checkRequiredData: '+e);}
return state;},inputnode_setRequiredSettings:function(node,type){try{var noimages=$(node.form).readAttribute('validate')
if(type&&type!='noimages'&&noimages!='noimages'){var image=$(node).readAttribute('image');if(image){this.getIcon($(image)).src=ValidatorOptions.fileRequiredImage;}else{this.getIcon(node).src=ValidatorOptions.fileRequiredImage;}}}catch(e){throw('Validator::inputnode_setRequiredSettings: '+e);}},inputnode_setLookupSettings:function(node,type){try{$(node).observe('blur',(function(event){var element=event.element();if(element.readOnly)return;try{var ajaxOptions={method:'get',encoding:this.encoding,parameters:'',evalJSON:false,evalJS:false};var depending=element.readAttribute('depend');var tofill=element.readAttribute('fill');if(depending){ajaxOptions.parameters={data:$F($(depending)),value:$F(element)};}else{ajaxOptions.parameters={value:$F(element)};}
ajaxOptions.onSuccess=(function(transport){this.inputnode_updateLookup(transport,node,tofill)}).bind(this);if(ajaxOptions.parameters.value!=''){var myAjax=new Ajax.Request('validator/lookupInput/'+type,ajaxOptions);}}catch(e){throw('Validator::inputnode_setLookupSettings2: '+e);}}).bind(this));}catch(e){throw('Validator::inputnode_setLookupSettings: '+e);}},inputnode_setValidateSettings:function(node,type){$(node).observe('blur',(function(event){var element=event.element();if(element.readOnly)return;try{var ajaxOptions={method:'get',encoding:this.encoding,parameters:'',evalJSON:false,evalJS:false};ajaxOptions.parameters={value:$F(element)};ajaxOptions.onSuccess=(function(transport){this.inputnode_updateValidate(transport,node)}).bind(this);if(ajaxOptions.parameters.value!=''){var myAjax=new Ajax.Request('validator/validateInput/'+type,ajaxOptions);}}catch(e){throw('Validator::inputnode_setValidateSettings: '+e);}}).bind(this));},inputnode_setIdenticalSettings:function(node,value){$(node).observe('blur',(function(event){var element=event.element();try{if($F(value)===$F(element)){this.updateIcon(element,ValidatorOptions.fileOkImage);}else{this.updateIcon(element,ValidatorOptions.fileNotOkImage);}}catch(e){throw('Validator::inputnode_setIdenticalSettings: '+e);}}).bind(this));},inputnode_setDefaultSettings:function(node,value){if($(node).getValue()==''){$(node).setValue(value);}
$(node).observe('focus',(function(event){var element=event.element();try{if((element.nodeName=="INPUT")&&($(element).readAttribute('type')=="text")&&($(element).readAttribute('changetype')=="password")){if(Prototype.Browser.IE){var newobj=new Element("INPUT");var nameobj=$(element).readAttribute('name');var classobj=$(element).readAttribute('class');var requiredobj=$(element).readAttribute('required');$(newobj).writeAttribute({'type':'password'});if(requiredobj)$(newobj).writeAttribute({'required':'required'});if(nameobj)$(newobj).writeAttribute({'name':nameobj});if(classobj)$(newobj).writeAttribute({'class':classobj});$(element.parentNode).insert({top:newobj});$(element).remove();newobj.focus();element=newobj;}else{$(element).writeAttribute({'type':'password'});}}
$(element).setValue('');}catch(e){throw('Validator::inputnode_setDefaultSettings::observe_focus: '+e);}}).bind(this));}};document.observe('dom:loaded',function(){Validator=new Validator();});