 /**
  *  JavaScript om invul-formulieren te controleren.
  *  (c) ISAAC, 2002, written by Harm van Beek
  *
  *  Voor ieder te controleren veld in het formulier wordt
  *  een veld met dezelfde naam, uitgebreid met _check, opgenomen in het formulier.
  *
  *  De waarde van het controle-veld = "regexp||true/false||error".
  *  - regexp: JavaScript reguliere expressie waaraan de
  *    ingevulde waarde moet voldoen;
  *  - true/false: Deze boolean waarde geeft aan of het veld
  *    leeg mag zijn;
  *  - error: De foutmelding die als JavaScript Alert getoond wordt
  *    indien de ingevulde waarde verkeerd is.
  *
  */

var splitter = "||";
var checkextension = "_check";
var setextension = "_set";
var radioextension = "_radio";

function check(inputform) {
    var inputelements = inputform.elements;
	// doorloop alle niet-hidden elementen van het inputform
	// zodra er iets fout gaat, stoppen. Er wordt dus maar 1 melding gegeven.
	var errorFound = false;
	var i=0;
	while (!errorFound && i<inputelements.length) {
		// element is het huidige element
		var element = inputelements[i];

		// kijk of het element gecontroleerd moet worden door een check
		if (inputelements[element.name+checkextension]!=null) {
			// bepaal de waarde van het veld in check en splits het bij de ||'s
			var checkvalue = inputelements[element.name+checkextension].defaultValue.split(splitter);
			if (checkvalue.length==3) {
				// regexp wordt alles voor de eerste ||
				var regexp = new RegExp(checkvalue[0]);
				// empty wordt de boolean waarde tussen de ||'s
				var empty = eval(checkvalue[1]);
				// error alles na de laatste ||
				var error = checkvalue[2];
				if ((!empty && element.value=="") || 
					(element.value!="" && !regexp.test(element.value))
					) {
					alert(error);
					errorFound = true;
				}
			} else {
				alert("Er zit een fout in de controle van het formulier.");
			}
		}

		// kijk of het element gecontroleerd moet worden door een check
		if (inputelements[element.name+radioextension]!=null) {
			// bepaal de waarde van het veld in check en splits het bij de ||'s
			var checkvalue = inputelements[element.name+radioextension].defaultValue.split(splitter);
			if (checkvalue.length==2) {
				var empty = eval(checkvalue[0]);
				var error = checkvalue[1];
				if (!empty) {
					var checked = false;
					var j = 0;
					var N = inputelements[element.name].length;
					while (!checked && j<N) {
						checked = inputelements[element.name][j++].checked;
					}
					if (!checked) {
						alert(error);
						errorFound = true;
					}
				}
			} else {
				alert("Er zit een fout in de controle van het formulier.");
			}
		}

		// kijk of er een element gezet moet worden (dit element is dan een checkbox)
		// te zetten veld wordt alles voor de eerste ||
		// als afgevinkt dan de waarde tussen de ||'s
		// niet afgevinkt, dan alles na de laatste ||
		if (inputelements[element.name+setextension]!=null) {
			// bepaal de waarde van het veld in set en splits het bij de ||'s
			var setvalue = inputelements[element.name+setextension].defaultValue.split(splitter);
			if (setvalue.length==3) {
				inputelements[setvalue[0]].value = setvalue[element.checked?1:2];
			} else {
				alert("Er zit een fout in de controle van het formulier.");
			}
		}
		i += 1;
	}
	
	// als er geen foutmelding gevonden is, verwijder dan alle controle-velden
	// uit de te versturen waarden.
	if (!errorFound) {
		// bepaal de lengte van de checkextension
		var l = checkextension.length;
		for (var i=0; i<inputelements.length; i++) {
			var name = inputelements[i].name;
			// bepaal waar de substring checkextion voorkomt in de naam;
			var location = name.lastIndexOf(checkextension)
			if (location>-1 && location==name.length-l) {
				inputelements[i].name="";
				inputelements[i].value="";
			}
		}
	}
	return !errorFound;
}

function check_stat(inputform, sitestat, scheme) {
	if (check(inputform)) {
		if (sitestat!='null') {
		  	sitestatForm(inputform, scheme+'://nl.sitestat.com/primeline/primeline/s?'+sitestat,'');
		}
	}
	return false;
}

window.onload = function() {
	if (document.forms[0]) {
		var elems = document.forms[0].elements;
		var done = false;
		var i=0;
		while (!done && i<elems.length) {
			if (elems[i].type=='text') {
				elems[i].focus();								
				done=true;
			}
			i++;	
		} 
		setTimeout("window.scrollTo(0,0)", 100); // Zonder de setTimeout doet ie t niet. Niemand weet waarom. Zelfs god niet.
	}
}

