/*
<form action="contact_bedankt.php" method="post" enctype="multipart/form-data"  onsubmit="return validateForm.checkForSubmit();">

<td><input name="straat" type="text" size="30" id="fie_straat"/></td>
<td width="200"><div class="icon_neutral" id="icon_straat"></div></td>

<td><input name="email" id="fie_email" type="text" size="30"/></td>
<td width="200"><div class="icon_neutral" id="icon_email"></div></td>
	  
<script src="includes/validatie.js" type="text/javascript"></script>
<script language="javascript">
	var validateForm = new ValidateForm();
	
	validateForm.add_Validatie(new ValidateInput("textfield","straat",8));
	validateForm.add_Validatie(new ValidateInput("email","email",8));
</script>

De variable straat revereerd naar fie_straat en icon_straat dit moet dus altijd aanwezig zijn
*/
function ValidateForm(){
	this.status = false;
	this.fields = new Array();
	
	
	//Add validator to the form
	this.add_Validatie = function(validateInput){
		this.fields.push(validateInput);
	}
	//Check of alle vaildators true zijn. 
	//Dan mag hij verder.
	this.checkForSubmit = function(){
		var goed = true
/*		for (i=0; i < this.fields.length; i++) {
			
			//als meer terug gaat naar het form en alles is al ingevuld, dan worden nogmaals alle velden getest
			try {document.all("fie_"+this.fields[i].getID()).fireEvent("onblur"); }catch(e){}
			try {document.all("fie_"+this.fields[i].getID()).fireEvent("blur"); }catch(e){}	 
			try {document.all("fie_"+this.fields[i].getID()).fireEvent("onchange"); }catch(e){}
			try {document.all("fie_"+this.fields[i].getID()).fireEvent("change"); }catch(e){}
			

                     var evObj = document.createEvent('HTMLEvents');
                     evObj.initEvent( 'blur', true, true );
			try {document.getElementById("fie_"+this.fields[i].getID()).dispatchEvent(evObj); }catch(e){alert(e);}

	
			if(!this.fields[i].isPassed()){
			
				 var icon_class = document.getElementById("icon_"+this.fields[i].getID()).className;
				 
				 if(icon_class=="icon_neutral"){
					this.fields[i].fieldNotCorrect("fie_"+this.fields[i].getID())
				
				 }
			 	 goed = false;
			 }
		}	*/	
		for(var i in this.fields){
			
			 if(!this.fields[i].isPassed()){
				 var icon_class = document.getElementById("icon_"+this.fields[i].getID()).className;
				 if(icon_class=="icon_neutral"){
					this.fields[i].fieldNotCorrect("fie_"+this.fields[i].getID())
				 }
			 	 goed = false;
			 }
		}
		return goed;
	}
	
}
function ValidateInput(type,fieldid,min_size){
	this.field_id = fieldid;
	this.val_type = type;
	this.min_size = min_size;
	this.passed = false;
	
	var obj = this;
	
	//hiermee wordt teruggeven of het veld aan de eisen voldoet.
	this.isPassed = function(){
		return this.passed;
	}
	//Deze functie wordt gebruikt als de validite WEL is goed gegegaan
	this.fieldNotCorrect = function(fi_id){
		 	document.getElementById(fi_id).className ="error";
			document.getElementById(fi_id.replace("fie_","icon_")).className ="icon_error";
			
	}
	//Deze functie wordt gebruikt als de validite NIET is goed gegegaan
	this.fieldCorrect = function(fi_id){
			document.getElementById(fi_id).className ="";
			document.getElementById(fi_id.replace("fie_","icon_")).className ="icon_passed";
			
			this.passed = true;
	}
	//------------------------------------------------------------
	//	De verschillende validators
	//------------------------------------------------------------
	
	//Deze functie kan men grbuiken om een textfield te valideren
	this.validatie_textfield = function(e,elm){
		var fi_id = elm.id; 
		
		if(elm.value.length > obj.min_size){
			obj.fieldCorrect(fi_id);
		}else if(e.type=="blur" || (e.type=="keyup" && this.passed)){	//Hij kijkt alleen als de focus van het textfeld gaat en wanneer het veld ooit goed is geweest en dan aangepast wordt.
			obj.fieldNotCorrect(fi_id);
		}
	}
	this.validatie_email = function(e,elm){
		var fi_id = elm.id; 
		
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   		// search email text for regular exp matches
    	if (reg.test(elm.value) && elm.value.length > obj.min_size){
			obj.fieldCorrect(fi_id,elm);
		}else if(e.type=="blur" || (e.type=="keyup" && this.passed)){
			this.fieldNotCorrect(fi_id,elm);
		}
	}
	this.validatie_radio = function(e,elm){
		var fi_id = elm.id; 
		
		if(elm.checked){
			obj.fieldCorrect(fi_id);
		}else if(e.type=="blur" || (e.type=="keyup" && this.passed)){	//Hij kijkt alleen als de focus van het textfeld gaat en wanneer het veld ooit goed is geweest en dan aangepast wordt.
			obj.fieldNotCorrect(fi_id);
		}
	}
	this.getID = function(){
			return this.field_id;
	}
	//------------------------------------------------------------
	//	De verschillende listners
	//	addEventListener ->is voor alles behalfe IE
	//	attachEvent ->is voor IE
	//------------------------------------------------------------
	this.addValidateStringField = function(){
		var t = document.getElementById("fie_"+this.field_id);
		
		if (t.addEventListener){
			t.addEventListener('blur', function(event) { obj.validatie_textfield(event,t); },false);
			t.addEventListener('keyup', function(event) { obj.validatie_textfield(event,t); },false);
		} else if (t.attachEvent){
		  
		  t.attachEvent('onblur', function(event) { obj.validatie_textfield(event,t); });
		  t.attachEvent('onkeyup', function(event) { obj.validatie_textfield(event,t); });
		}
	}
	this.addValidateRadioField = function(){
		var t = document.getElementById("fie_"+this.field_id);
		
		if (t.addEventListener){
			t.addEventListener('mouseup', function(event) { obj.validatie_radio(event,t); },false);
			t.addEventListener('blur', function(event) { obj.validatie_radio(event,t); },false);
			t.addEventListener('keyup', function(event) { obj.validatie_radio(event,t); },false);
			t.addEventListener('change', function(event) { obj.validatie_radio(event,t); },false);
			
		} else if (t.attachEvent){
			t.attachEvent('onmouseup', function(event) { obj.validatie_radio(event,t); });
			t.attachEvent('onblur', function(event) { obj.validatie_radio(event,t); });
			t.attachEvent('onkeyup', function(event) { obj.validatie_radio(event,t); });
			t.attachEvent('onchange', function(event) { obj.validatie_radio(event,t); });
		}
	}
	this.addValidateEMailField = function(){
		var t = document.getElementById("fie_"+this.field_id);

		if (t.addEventListener){
			t.addEventListener('blur', function(event) { obj.validatie_email(event,t); },false);
			t.addEventListener('keyup', function(event) { obj.validatie_email(event,t); },false);
		} else if (t.attachEvent){
		  t.attachEvent('onblur', function(event) { obj.validatie_email(event,t); });
		  t.attachEvent('onkeyup', function(event) { obj.validatie_email(event,t); });
		}
	}
	
	//------------------------------------------------------------
	//	Switch om te bepalen welke validator er gebuikt moet worden.
	//------------------------------------------------------------
	switch(this.val_type){
	  case  "textfield":
	    this.addValidateStringField();
	  break;
	  case  "email":
	    this.addValidateEMailField();
	  break;
	  case  "radio":
	    this.addValidateRadioField();
	  break;
	}
	
}
