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(var i in this.fields){
			//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{
				 if(this.fields[i].isPassed()==false){
					 var icon_class = document.getElementById("icon_"+this.fields[i].getID()).className;
					 if(icon_class=="icon_neutral"){
						
						document.getElementById("icon_"+this.fields[i].getID()).className ="icon_error";
						document.getElementById("fie_"+this.fields[i].getID()).className ="error";
					 }
					 goed = false;
				 }
			 }catch(e){ }
		}
		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,elm){
			document.getElementById(fi_id.replace("fie_","icon_")).className ="icon_error";
			elm.className ="error";
			this.passed = false;
	}
	//Deze functie wordt gebruikt als de validite NIET is goed gegegaan
	this.fieldCorrect = function(fi_id,elm){
			document.getElementById(fi_id.replace("fie_","icon_")).className ="icon_passed";
			elm.className ="";
			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,elm);
		}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,elm);
		}
	}
	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.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.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;
	}
	
}
