//
// Class Validate
//
// valideer forms met verschillende form types
//
// Gebruik:
// 
// 	1. Laad het js bestand in in de head
// 		<script type="text/javascript" language="javascript" charset="utf-8" src="./javascript/validation.js"></script>
// 
// 	2. Maak een nieuwe copie van de class
// 		var val	=	new Validate("popup", "error");
// 
// 	3. Voeg de velden toe die gevalideerd moeten worden
// 		val.add_field("name", "Naam", "text");
// 
// 	4. Laat het formulier het script draaien als het ge-submit word
// 		<form action="" onsubmit="return val.validate()">
// 
// Uitleg functies:
// 
// 	Validate("type", "ID")
// 
// 		Maakt een nieuwe copie van de class Validate en geeft aan wat voor een soort error er moet komen
// 
// 		type:
// 			Het type error dat er moet komen
//
// 			*niets* of popup:
// 				Een standaard javascript popup
//
// 			div
// 				Als tekst in een div
// 
// 
// 		ID:
// 			Het id van de div waar de error in moet komen (als voor type div gekozen is)
// 
// 
// 	Validate.add_field("field_ID", "field_name", "field_type")
// 
// 		Voegd een veld toe dat gevalideerd moet worden
// 
// 		field_ID:
// 			Het id van het veld
// 
// 		field_name:
// 			De naam van het veld zoals het in de error moet komen te staan
// 
// 		field_type:
// 			Het soort veld 
// 				
// 				text / email / checkbox / select / textarea
// 
// 	Validate.validate()
// 
// 		Valideert het formulier
// 

function Validate(type, ID){
	
	this.error_type			=	type;
	this.error_div			=	ID;
	this.fields			=	new Array();
	this.fieldnames			=	new Array();
	this.fieldtypes			=	new Array();
	this.counter			=	0;
	this.errormsg			=	"";
	this.validated			=	"";
}

Validate.prototype.add_field		=	function(field_ID, field_name, field_type){
	
	this.fields[this.counter]	=	field_ID;
	this.fieldnames[this.counter]	=	field_name;
	this.fieldtypes[this.counter]	=	field_type;
	
	this.counter++;
	
}

Validate.prototype.is_valid_email	=	function(email){

	return(email.indexOf(".") > 2) && (email.indexOf("@") > 0);

}

Validate.prototype.validate		=	function(){

	this.errormsg	=	"De volgende velden zijn niet ingevuld: ";
	
	this.validated	=	true;
	
	this.counter	=	0;
	
	var field_valid	=	1;
	
	for(i = 0; i < this.fields.length; i++){
		
		field_valid	=	1;
		
		if(this.fieldtypes[i] == "text"){
		
			if(!document.getElementById(this.fields[i]).value){
			
				field_valid	=	0;
			
			}
			
		}else if(this.fieldtypes[i] == "email"){
		
			if(!this.is_valid_email(document.getElementById(this.fields[i]).value)){

				field_valid	=	0;
			
			}
			
		}else if(this.fieldtypes[i] == "checkbox"){
		
			if(!document.getElementById(this.fields[i]).checked){
			
				field_valid	=	0;
			
			}
		
		}else if(this.fieldtypes[i] == "select"){
		
			if(!document.getElementById(this.fields[i]).value){

				field_valid	=	0;
			
			}
		
		}else if(this.fieldtypes[i] == "textarea"){
		
			if(!document.getElementById(this.fields[i]).value){

				field_valid	=	0;
			
			}
		
		}
		
		if(field_valid == 0){

			if(this.counter == 0){
			
				this.counter++;
			
			}else{
			
				this.errormsg	+=	", ";
			
			}
			
			
			this.errormsg	+=	this.fieldnames[i];
			this.validated	=	false;
			
		}
	
	}
	
	if(!this.validated){
		
		if(this.error_type == "div"){
		
			document.getElementById(this.error_div).innerHTML	=	this.errormsg;
			
		}else{
			
			alert(this.errormsg);
		
		}
		
	}
	
	return(this.validated);

}

