// #### SCRIPT DOOR KOEN FRERIKS - QHONA.NL ############################################################################
// #### Script voor het controleren van invoervelden van een formulier, voordat het verzonden kan worden. ##############
// #### Zo hoeven waarden alleen opgevraagd te worden na de POST, en dus niet meer gecontroleerd worden. ###############
// #####################################################################################################################
// Voorbeeldformulier:
// <script>
// checkCreatie('submitBotton', '7')
// < /script>
// <form action="" method="post" enctype="multipart/form-data" name="koens formulier">
// Naam: <input name="Naam" type="text" onBlur="checkVeld(this.value, 'divNaam', Array('lengteMIN'), Array('3'), Array('Je naam moet uit minimaal 3 karakters bestaan'), '0')"> <span id="divNaam"></span><BR>
// Leeftijd: <input name="leeftijd" type="text" size="20" onBlur="checkVeld(this.value, 'divLeeftijd', Array('lengteMIN','lengteMAX','cijfers'), Array('1','3',''), Array('minimaal 1','maximaal 3','alleen cijfers'), '1')"> <span id="divLeeftijd"></span><BR>
// Datum: <input name="datum" type="text" size="12" onBlur="checkVeld(this.value, 'divDatum', Array('lengteMAX','lengteMIN','datum'), Array('10','10',''), Array('maximaal 10','minimaal 10','let op datum-formaat (dd-mm-yyyy)'), '2')"> <span id="divDatum"></span><BR>
// E-mail: <input name="email" type="text" size="32" onBlur="checkVeld(this.value, 'divEmail', Array('email', 'vergelijk'), Array('', document.getElementsByName('email2')[0].value), Array('Geen geldig e-mail formaat', 'komt niet overeen'), '3', 'divEmail2')"> <span id="divEmail"></span><BR>
// E-mail controle: <input name="email2" type="text" size="32" onBlur="checkVeld(this.value, 'divEmail2', Array('email', 'vergelijk'), Array('', document.getElementsByName('email')[0].value), Array('Geen geldig e-mail formaat', 'komt niet overeen'), '6', 'divEmail')"> <span id="divEmail2"></span><BR>
// Wachtwoord: <input name="wachtwoord1" type="text" size="20" onBlur="checkVeld(this.value, 'divww1', Array('lengteMIN', 'vergelijk'), Array('4',document.getElementsByName('wachtwoord2')[0].value), Array('Minimaal 4','komt niet overeen'), '4', 'divww2')"> <span id="divww1"></span><BR>
// Wachtwoord controle: <input name="wachtwoord2" type="text" size="20" onBlur="checkVeld(this.value, 'divww2', Array('lengteMIN', 'vergelijk'), Array('4',document.getElementsByName('wachtwoord1')[0].value), Array('Minimaal 4', 'komt niet overeen'), '5', 'divww1')"> <span id="divww2"></span><BR>
// <input id="submitButton" value="Knopje" name="" type="submit">
// </form>
// <script>
// submitDisabling();
// < /script>

// teller blijft altijd op 0!
var aantalVeldenTeller = 0;
//plaatjes opgeven:
var plaatjeGoed = "<img src='images/accept.gif'>";
var plaatjeFout = "<img src='images/fout.gif'>";
// velden opgeven:
var velden = new Array();
for (i = 0; i < aantalVelden; i++) {
	velden[i] = 0;
}

function checkVeld(waarde, div, eisen, waarden, reqMelding, uid, extraWaarden, extraWaardeId) {
// waarde = de waarde van het veld
// div = de naam van de div waar de melding in moet komen te staan
// eisen = eisen waaraan moet voldaan worden
// waarden = i.c.m. eisen; bijv: lengteMIN = 3
// uid = id-nummer van het veld. beginnen met 0 en dan oplopend
// tekst = er kan een tekst worden meegegeven... de foutmelding dus
// extraWaarden = bijv. van toepassing bij vergelijk, om de naam van de te vergelijken div mee te sturen
// extraWaardeId = ook bij vergelijking, id dat hoort bij het te vergelijken veld
var stoppen = 0;

	for (i = 0; i < eisen.length; i++) {
		// Optioneel: lengteMIN - minimale waarde waaraan het veld aan moet voldoen
		if (eisen[i] == "lengteMIN" && stoppen == 0 && waarde.length > 0) {
			if (waarde.length >= waarden[i]) {
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			}
		}
		if (eisen[i] == "lengteMIN" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}
		
		//Groter dan 0
		if (eisen[i] == "groterNul" && stoppen == 0 && waarde.length > 0) {
			if (waarde > 0) {
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			}
		}
		if (eisen[i] == "groterNul" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}
		
		//live Ajax-controle/ bijvoorbeeld om te kijken of een e-mail adres al voorkomt in het systeem
		if (eisen[i] == "liveAjax" && stoppen == 0 && waarde.length > 0) {
			if (waarde == '') {
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			}
		}
		if (eisen[i] == "liveAjax" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}		
		
		// Optioneel: lengteMAX - maximale waarde waaraan het veld aan moet voldoen
		if (eisen[i] == "lengteMAX" && stoppen == 0 && waarde.length > 0) {
			if (waarde.length <= waarden[i]) {
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			}
		}
		if (eisen[i] == "lengteMAX" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}
		
		// Optioneel: cijfers (deze eis bevat verder geen waarde), ingevoerde moet alleen uit cijfers bestaan
		if (eisen[i] == "cijfers" && stoppen == 0 && waarde.length > 0) {
			if (IsNumeric(waarde) == true) {
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			} 
			 
		}
		if (eisen[i] == "cijfers" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}
		
		// Optioneel: datum (deze eis bevat verder geen waarde), het gaat hier om een geboortedatum dd-mm-yyyy
		if (eisen[i] == "datum" && stoppen == 0 && waarde.length > 0) {
			var sets = waarde.split('.'); 
			var currentTime = new Date();
			var huidigJaar = currentTime.getFullYear();
			//alert(huidigJaar);
			if (sets[0].length == 2 && IsNumeric(sets[0]) == true && sets[0] < 32 && sets[0] > 0 && sets[1].length == 2 && IsNumeric(sets[1]) == true && sets[1] < 13 && sets[1] > 0 && sets[2].length == 4 && IsNumeric(sets[2]) == true && sets[2] < (huidigJaar+1) && sets[2] > (huidigJaar-110)) {
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			} 
			 
		}
		if (eisen[i] == "datum" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}

		// Optioneel: datum (deze eis bevat verder geen waarde), het gaat hier om een geboortedatum dd-mm-yyyy
		if (eisen[i] == "email" && stoppen == 0 && waarde.length > 0) {
			//alert(checkMail(waarde));
			if (checkMail(waarde) == true) {
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			} 
			 
		}
		if (eisen[i] == "email" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}
		
		// Optioneel: controleren op cijfers en tekens
		if (eisen[i] == "cijfersKarakters" && stoppen == 0 && waarde.length > 0) {
			//alert(checkMail(waarde));
			if (checkLettersCijfers(waarde) == true) {
			//alert("controle goed!");
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
			} else {
			//alert("controle fout!");
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			} 
			 
		}
		if (eisen[i] == "cijfersKarakters" && stoppen == 0 && waarde.length == 0) {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,"");		
		}
//	alert(waarden[i]);
		// Optioneel: vergelijk. Deze is speciaal bedoeld om 2 velden met elkaar te vergelijken, zoals bij wachtwoord-controle.
		// waarden[i] moet de waarde van het te vergelijken veld bevatten
		// mee te sturen door: document.getElementsByName('wachtwoord2')[0].value
		if (eisen[i] == "vergelijk" && stoppen == 0 && waarde.length > 0 && waarden[i].length > 0) {
			if (waarde == waarden[i]) {
				divVullenMeldingGoed(div,plaatjeGoed);
				divVullenMeldingGoed(extraWaarden,plaatjeGoed);
				velden[uid] = 1;
				velden[extraWaardeId] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			} 
			 
		}
		// samen mogen ze maar een bepaald aantal karakters bevatten. 2 velden dus!
		if (eisen[i] == "gezamenlijk" && stoppen == 0 && waarde.length > 0) {
			//tempWaarde = CInt(reqMelding[i]);
			//alert(reqMelding[i]);
			if ((waarde.length + waarden[i].length) <= reqMelding[i]) { //reqMelding[i]
				divVullenMeldingGoed(div,plaatjeGoed);
				divVullenMeldingGoed(extraWaarden,plaatjeGoed);
				velden[uid] = 1;
				velden[extraWaardeId] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " De velden Naam en Omschrijving mogen samen " + reqMelding[i] + " karakters bevatten. Het bestaat nu uit " + (waarde.length + waarden[i].length) + " karakters.");
			} 
			 
		}
		// URL checken
		if (eisen[i] == "urlCheck" && stoppen == 0 && waarde.length > 0) {
		tempWaarde = waarde.substring(0,7);
		//alert(tempWaarde);
			if (tempWaarde == "http://" && waarde.length > 10) { 
				divVullenMeldingGoed(div,plaatjeGoed);
				//alert(extraWaarden);
				divVullenMeldingGoed(div,plaatjeGoed);
				velden[uid] = 1;
				velden[extraWaardeId] = 1;
			} else {
				velden[uid] = 0;
				stoppen = 1;
				divVullenMelding(div,plaatjeFout + " " + reqMelding[i]);
			} 
			 
		}


	}
	
	aantalVeldenTeller = 0;
	for (i = 0; i < aantalVelden; i++) {
		aantalVeldenTeller = aantalVeldenTeller + velden[i];
	}
	//alert(aantalVeldenTeller + " - " + aantalVelden);
	if (aantalVeldenTeller == aantalVelden) {
		document.getElementById(submitButton).disabled = false;
	} else {
		document.getElementById(submitButton).disabled = true;
	}
	
}

// submit disable bij het begin, als de waarden nog niet voldoen aan de eisen
function submitDisabling() {
	document.getElementById(submitButton).disabled = true;
}


function divVullenMelding(div,tekst) {
	document.getElementById(div).innerHTML = "<span id=controleMelding>" + tekst + "</span>";
}
function divVullenMeldingGoed(div,tekst) {
	document.getElementById(div).innerHTML = tekst;
}



function IsNumeric(val){
	if (Number(val) != val) {
		return false;
	} else {
		return true;
	}
}

function checkMail(x){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) {
		return true;
	} else { 
		return false;
	}
}

function checkLettersCijfers(x){
	var filter  = /^[a-zA-Z0-9]+$/;
	if (filter.test(x)) {
		//alert("goed");
		return true;
	} else { 
		return false;
	}
}



