/*
  -------------------------------------------------------------------------
	                    JavaScript Form Validator 
                                Version 2.0.2
	Copyright 2003 JavaScript-coder.com. All rights reserved.
	You use this script in your Web pages, provided these opening credit
    lines are kept intact.
	The Form validation script is distributed free from JavaScript-Coder.com

	You may please add a link to JavaScript-Coder.com, 
	making it easy for others to find this script.
	Checkout the Give a link and Get a link page:
	http://www.javascript-coder.com/links/how-to-link.php

    You may not reprint or redistribute this code without permission from 
    JavaScript-Coder.com.
	
	JavaScript Coder
	It precisely codes what you imagine!
	Grab your copy here:
		http://www.javascript-coder.com/
    -------------------------------------------------------------------------  
*/
function Validator(frmname){
	this.formobj=document.forms[frmname];
	if(!this.formobj)
	{
	  	alert("BUG: couldnot get Form object "+frmname);
		return;
	}
	
	if(this.formobj.onsubmit){
		this.formobj.old_onsubmit = this.formobj.onsubmit;
		this.formobj.onsubmit=null;
	}
	else{
		this.formobj.old_onsubmit = null;
	}
	
	this.formobj.onsubmit		= form_submit_handler;
	this.addValidation 		= add_validation;
	this.setAddnlValidationFunction	= set_addnl_vfunction;
	this.clearAllValidations 	= clear_all_validations;
}

function set_addnl_vfunction(functionname){
	this.formobj.addnlvalidation = functionname;
}

function clear_all_validations(){
	for(var itr=0;itr < this.formobj.elements.length;itr++){
		this.formobj.elements[itr].validationset = null;
	}
}

function form_submit_handler(){
	for(var itr=0;itr < this.elements.length;itr++){
		if(this.elements[itr].validationset && !this.elements[itr].validationset.validate()){
		 	return false;
		}
	}
	
	if(this.addnlvalidation){
		str =" var ret = "+this.addnlvalidation+"()";
	 	eval(str);
    	
    		if(!ret) return ret;
	}
	
	if(this.old_onsubmit)
	{
		return this.old_onsubmit();
	}
	
	return true;
}

function add_validation(itemname,descriptor,errstr){
	if(!this.formobj){
		alert("Probleem: het formulier object is niet gevonden");
		return;
	}//if
	
	var itemobj = this.formobj[itemname];
  
  	if(!itemobj){
		alert("Probleem: Object is niet gevonden: "+itemname);
		return;
	}
	
	if(!itemobj.validationset){
		itemobj.validationset = new ValidationSet(itemobj);
	}
  	
  	itemobj.validationset.add(descriptor,errstr);
}

function ValidationDesc(inputitem,desc,error){
	this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.validate=vdesc_validate;
}

function vdesc_validate(){
	if(!V2validateData(this.desc,this.itemobj,this.error)){
    		this.itemobj.focus();
		return false;
 	}
 	return true;
}

function ValidationSet(inputitem){
	this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
}

function add_validationdesc(desc,error){
	this.vSet[this.vSet.length]= 
	new ValidationDesc(this.itemobj,desc,error);
}

function vset_validate(){
	for(var itr=0;itr<this.vSet.length;itr++){
		if(!this.vSet[itr].validate()){
			return false;
		}
	 }
	 return true;
}

function validateEmailv2(email){
	// A very simple email validation checking. 
	// You can add more complex email checking if it helps 
    	if(email.length <= 0){
		return true;
	}
    
    	var splitted = email.match("^(.+)@(.+)$");
    	if(splitted == null) return false;
    	if(splitted[1] != null ){
      		var regexp_user=/^\"?[\w-_\.]*\"?$/;
      		if(splitted[1].match(regexp_user) == null) return false;
    	}
    
    	if(splitted[2] != null){
      		var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      		if(splitted[2].match(regexp_domain) == null){
	    		var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    		if(splitted[2].match(regexp_ip) == null) return false;
      		}// if
      		return true;
    	}
	return false;
}

function V2validateData(strValidateStr,objValue,strError){ 
	var epos = strValidateStr.search("="); 
    	var  command  = ""; 
    	var  cmdvalue = ""; 
    	if(epos >= 0){ 
     		command  = strValidateStr.substring(0,epos); 
     		cmdvalue = strValidateStr.substr(epos+1); 
    	} 
    	else{ 
     		command = strValidateStr; 
    	} 
    	
    	switch(command){ 
        	case "req": 
        	case "required": 
       		{ 
           		if(eval(objValue.value.length) == 0){ 
              			if(!strError || strError.length ==0){ 
                			strError = objValue.name + " : Veld is vereist"; 
              			} //if 
              			
              			alert(strError); 
              			return false; 
           		} //if 
           		break;             
         	} //case required 
        
        	case "maxlength": 
        	case "maxlen": 
          	{ 
             		if(eval(objValue.value.length) >  eval(cmdvalue)){ 
               			if(!strError || strError.length ==0){ 
                 			strError = objValue.name + " : "+cmdvalue+" maximaal aantal karakters "; 
               			} //if 
               			alert(strError + "\n[Huidige aantal karakters = " + objValue.value.length + " ]"); 
               			return false; 
             		} //if 
             		break; 
          	} //case maxlen 
        
        	case "minlength": 
        	case "minlen": 
           	{ 
             		if(eval(objValue.value.length) <  eval(cmdvalue)){ 
               			if(!strError || strError.length ==0){ 
                 			strError = objValue.name + " : " + cmdvalue + " minimaal aantal karakters  "; 
               			}//if               
               			alert(strError + "\n[Huidige aantal karakters = " + objValue.value.length + " ]"); 
               			return false;                 
             		}//if 
             		break; 
            	} //case minlen 
            	
		case "alnum": 
		case "alphanumeric": 
		{ 
		      	var charpos = objValue.value.search("[^A-Za-z0-9]"); 
		      	if(objValue.value.length > 0 &&  charpos >= 0){ 
		      		if(!strError || strError.length ==0){ 
			  		strError = objValue.name+": Alleen alphanumerieke karakters zijn toegestaan "; 
				}//if 
				alert(strError + "\n [Probleem is gevonden op positie " + eval(charpos+1)+"]"); 
				return false; 
		      	}//if 
		      	break; 
		   } //case alphanumeric
		   
		case "num": 
		case "numeric": 
		{ 
		   	var charpos = objValue.value.search("[^0-9]"); 
		      	if(objValue.value.length > 0 &&  charpos >= 0){ 
				if(!strError || strError.length ==0){ 
			  		strError = objValue.name+": Alleen numerieke karakters zijn toegestaan "; 
				} //if               
				alert(strError + "\n [Probleem is gevonden op positie " + eval(charpos+1)+"]"); 
				return false; 
		      	}//if 
		      	break;               
		   }//numeric 
           
		case "alphabetic": 
		case "alpha": 
		{ 
		   	var charpos = objValue.value.search("[^A-Za-z]"); 
		      	if(objValue.value.length > 0 &&  charpos >= 0){ 
				if(!strError || strError.length ==0){ 
			  		strError = objValue.name+": Alleen alfabetische karakters zijn toegestaan "; 
				} //if                             
				alert(strError + "\n [Probleem is gevonden op positie " + eval(charpos+1)+"]"); 
				return false; 
		      	}//if 
			break; 
		   }// alpha 
           
		case "alnumhyphen":
		{
              		var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 
              		if(objValue.value.length > 0 &&  charpos >= 0){ 
                  		if(!strError || strError.length ==0){ 
                  			strError = objValue.name+": Toegestane karakters zijn A-Z,a-z,0-9,- en _"; 
                		} //if                             
                		alert(strError + "\n [Probleem is gevonden op positie " + eval(charpos+1)+"]"); 
                		return false; 
              		} //if 			
			break;
		}
			
		case "email": 
		{ 
			if(!validateEmailv2(objValue.value)){ 
			 	if(!strError || strError.length ==0){ 
			    		strError = objValue.name+": Vul a.u.b. een geldig email adres in "; 
			 	} //if                                               
			 	alert(strError); 
			 	return false; 
		       	}//if 
		   	break; 
		} // case email 
          
		case "lt": 
		case "lessthan": 
		{ 
			if(isNaN(objValue.value)){ 
		      		alert(objValue.name+": Moet een nummer zijn "); 
		      		return false; 
		    	} //if 
		    	if(eval(objValue.value) >=  eval(cmdvalue)){ 
		      		if(!strError || strError.length ==0){ 
					strError = objValue.name + " : inhoud van het veld moet kleiner zijn dan "+ cmdvalue; 
		      		} //if               
		      		alert(strError); 
		      		return false;                 
		     	} //if             
		    	break; 
		} //case lessthan 
         
		case "gt": 
		case "greaterthan": 
		{ 
		 	if(isNaN(objValue.value)){ 
		      		alert(objValue.name+": Moet een nummer zijn "); 
		      		return false; 
		    	} //if 
		     	if(eval(objValue.value) <=  eval(cmdvalue)){ 
		       		if(!strError || strError.length ==0){ 
			 		strError = objValue.name + " : inhoud van het veld moet groter zijn dan "+ cmdvalue; 
		       		} //if               
		       		alert(strError); 
		       		return false;                 
		     	} //if             
		    	break; 
		} //case greaterthan 
         
		case "regexp": 
		{ 
			if(objValue.value.length > 0){
				if(!objValue.value.match(cmdvalue)){ 
			      		if(!strError || strError.length ==0){ 
						strError = objValue.name+": inhoud van het veld voldoet niet aan de eisen "; 
			      		} //if                                                               
			      		alert(strError); 
			      		return false;                   
			    	} //if 
			}
		   	break; 
		} //case regexp
         
		case "dontselect": 
		{ 
			if(objValue.selectedIndex == null){ 
		      		alert("BUG: dontselect command for non-select Item"); 
		      		return false; 
		    	} 
		    	if(objValue.selectedIndex == eval(cmdvalue)){ 
		     		if(!strError || strError.length ==0){ 
		      			strError = objValue.name+": Selecteer 1 optie "; 
		      		} //if                                                               
		      		alert(strError); 
		      		return false;                                   
		     	} 
		     	break; 
		} //case dontselect 
         
    }//switch 
    return true; 
}
/*
	Copyright 2003 JavaScript-coder.com. All rights reserved.
*/
