/* 	
	el = naam formfield 
	regex = regulair expresion variable uit regex.js
	mini = minimaal aantal karakters invoer
	maxi = maximaal aantal karakters invoer
	
	returns  #errorcode, geen fout => 0; 
*/

verplichtVeldMelding = "Verplicht veld";

function errorCode (el, regex, mini, maxi) {

	 result = 0;

	if (el === undefined) {
		alert("Error ! De parameter [el] undefined!");
	}
	
	/* De parameter "el" kan zowel letterlijk ingevuld (= el)of als referentie door this (= el.name)aangeroepen */
	if (typeof(el.name) != "undefined") {
		el = el.name;		
	}
	
	/**Default parameter values */
	if (regex === undefined) {
		var regex =  /^[A-Za-z\s\.\-]+$/;
	}

	if (mini === undefined) {
		var mini =  0;
	}

	if (maxi === undefined) {
		var maxi =  26000;
	}

	if ( document.getElementById(el).value.length>0 && document.getElementById(el).value.length < mini ) {	
		result = result + 1;
	}
	
	if ( document.getElementById(el).value.length > maxi ) {	
		result = result + 2;
	}

	if ( !  document.getElementById(el).value.match(regex)  &&   document.getElementById(el).value.length > 0 ) {
		result = result + 4;
	}
	return result;
}

/*
	el = naam formfield 
	fout = foutcode die gegenereerd is met: function errorCode
	melding = foutmelding die nabij het formfield verschijnt. Kan array zijn of string.
	
	returns  #errorcode, geen fout => 0;
*/
function showMelding ( el, fout, melding ) {

	if (melding === undefined) {
		alert("Error ! 'De parameter [melding] is undefined!");
	}
	
	/* De parameter "el" kan zowel letterlijk ingevuld (= el)of als referentie door this (= el.name)aangeroepen */	
	if (typeof(el.name) == "undefined") {
		errid = 'error_' + el;
	} else {
		errid = 'error_' + el.name;
	}

	if (  fout > 0 ) {	
		alleMeldingen = "";
		
		/* Basic versie -> 1 foutmelding voor alles */	
		if ( typeof melding  == 'string' ) {
			alleMeldingen =  "<li>" + melding + "</li>";
		
		/* Luxe versie -> 1 foutmelding gespecificeerd */	
		} else {
			errorCodeHoogste = 4;
			while ( errorCodeHoogste  >  0) {
				if ( fout >= errorCodeHoogste ) {
					alleMeldingen =  "<li>" + melding[errorCodeHoogste] + "</li>" + alleMeldingen;	
					fout = fout -  errorCodeHoogste;	
				}
				errorCodeHoogste = errorCodeHoogste / 2;
			}
		}
	
		alleMeldingen = "<ul>" + alleMeldingen + "</ul>";
		document.getElementById(errid).style.display = "inline";
		document.getElementById(errid).innerHTML = alleMeldingen;
	} else {
		document.getElementById(errid).style.display = "none";
	}
	return fout;
}


/* 	
	el = naam formfield 
	melding = foutmelding die nabij het formfield verschijnt. Kan array zijn of string.
	regex = regulair expresion variable uit regex.php
	mini = minimaal aantal karakters invoer
	maxi = maximaal aantal karakters invoer
	
	returns  #errorcode, geen fout => 0;
*/
function validate ( el, melding, regex, mini, maxi) {

	fout = errorCode (el, regex, mini, maxi);
	showMelding (el, fout, melding );
	return fout;
}


/* 	
	el = naam formfield 
	returns  #errorcode, geen fout => 0;
*/

function verplicht (el) {
	dezeMelding = "";

	if (document.getElementById(el).value.length == 0 ) {

		dezeMelding = "<ul><li>"+verplichtVeldMelding +"</li></ul>";
		errid = 'error_' + el;

		document.getElementById(errid).style.display = "inline";
		document.getElementById(errid).innerHTML = dezeMelding;
	}

	return dezeMelding;
}


