/** SVN COMMENT ****************************************************************
 *
 * - $Id$
 *
 * Copyright Rovecom ICT BV
 *
 ******************************************************************************/
 
var Validate={elements:[],submit_error_message:"Het formulier is nog niet juist ingevuld!",hasClass:function(ele,cls){return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));},addClass:function(ele,cls){if(!this.hasClass(ele,cls))ele.className+=" "+cls;},removeClass:function(ele,cls){if(this.hasClass(ele,cls)){var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)');ele.className=ele.className.replace(reg,' ');}},stopEvent:function(e){e.cancelBubble=true;e.returnValue=false;if(e.stopPropagation){e.stopPropagation();e.preventDefault();}},success:function(ele){this.removeClass(ele,"validation_error");this.addClass(ele,"validation_success");var msgspan=document.getElementById("validation_error_message-"+ele.id)
this.removeClass(msgspan,"validation_error_message");this.addClass(msgspan,"validation_success_message");var msg=ele.getAttribute("successmessage");if(msg)
msgspan.innerHTML=msg;else
msgspan.innerHTML='Ok';},failure:function(ele){this.removeClass(ele,"validation_success");this.addClass(ele,"validation_error");var msgspan=document.getElementById("validation_error_message-"+ele.id)
this.addClass(msgspan,"validation_error_message");this.removeClass(msgspan,"validation_success_message");var msg=ele.getAttribute("errormessage");if(msg)
msgspan.innerHTML=msg;else
msgspan.innerHTML='Ongeldige invoer!';},validateKeys:function(e,ele){if(e.keyCode)code=e.keyCode;else if(e.which)code=e.which;var character=String.fromCharCode(code);if(e.ctrlKey||code==46)return;if(e.shiftKey){if(!(code>=37&&code<=40))return;}else{if(!(code>=41&&code<=126))return;}
if(ele.getAttribute("allowedkeys")){var allowed_chars=new RegExp(ele.getAttribute("allowedkeys"));if(!allowed_chars.test(character)){this.stopEvent(e);}}},testMatch:function(ele){if(ele.getAttribute("match")){var match_reg=new RegExp(ele.getAttribute("match"));if(match_reg.test(ele.value))this.success(ele);else{this.failure(ele);return false;}}
if(ele.getAttribute("equals")){if(ele.value==eval(ele.getAttribute("equals")))this.success(ele);else{this.failure(ele);return false;}}
if(ele.getAttribute("istrue")){if(eval(ele.getAttribute("istrue")))this.success(ele);else{this.failure(ele);return false;}}
return true;},attachForm:function(form_id,msg){var ths=this;if(msg!="")ths.submit_error_message=msg;$(form_id).onsubmit=function(e){if(!e)var e=window.event;var ele=this;var err=0;for(var i=0,len=ths.elements.length;i<len;i++){var ele=ths.elements[i];if(!ths.testMatch(ele))
err++;}
if(err){alert(ths.submit_error_message);ths.stopEvent(e);}}},init:function(){var all_elements=document.getElementsByTagName("*");var ths=this;for(var i=0;ele=all_elements[i],i<all_elements.length;i++){if(!ele.className.match(new RegExp('(\\s|^)live_validate(\\s|$)')))continue;this.elements.push(ele);var error_message;if(!document.getElementById("validation_error_message-"+ele.id)){error_message=document.createElement("span");error_message.className="validation_error_message";error_message.setAttribute("id","validation_error_message-"+ele.id);ele.parentNode.insertBefore(error_message,ele.nextSibling);}
var msg;if(!ths.testMatch(ele)){msg=ele.getAttribute('errormessage');if(!msg)msg="Error!!";}else{msg=ele.getAttribute('successmessage');if(!msg)msg="";}
error_message.innerHTML=msg;if(ele.getAttribute("allowedkeys"))ele.onkeypress=function(e){if(!e)var e=window.event;ths.validateKeys(e,this);}
if(ele.getAttribute("match")||ele.getAttribute("equals")||ele.getAttribute("istrue")){this.testMatch(ele);ele.onkeyup=function(){ths.testMatch(this);}}}},
validate_all:function(elems){var err=0;for(var i=0,len=elems.length;i<len;i++){if(!this.testMatch(elems[i]))err++;}if(err){alert(this.submit_error_message);return false;}return true;}}