/* VELD-CONTROLES */
/* nummerieke velden */
	// niet-nummers controleren
		function checkNumberInput(inputString) {
			var searchForNonNumbers = /[^0-9]/
			return (!searchForNonNumbers.test(inputString))
		}
		function isNumberFloat(inputString) { return (!isNaN(parseInt(inputString))) ? true : false; }
	// vervang alle karakter die geen nummers zijn
		function stripChars(inputString) { return inputString.replace(/[^0-9]/g,""); }	
	// controleer tijdens intikken telnr
		function checkNrInput(inputveld) {
			if(!checkNumberInput(inputveld.value))inputveld.value = stripChars(inputveld.value);
		}
	// controleer bij verlaten veld dat rekeningnummer 9 cijfers bevat
		function validateRekNr(inputveld) {
			var dummy_reknr = stripChars(inputveld.value);
			if(dummy_reknr.length!=9) {
				alert('Het rekeningnummer moet 9 cijfers bevatten!\nVoor Postbank-rekeningen vul op met nullen (0) voor het rekeningnummer!');
				inputveld.focus();
			}
		}
/* telefoonnummer */
	// te gebruiken karakters (0-9, spatie en een streepje)
		function checkTelNumberInput(inputString) {
			var validCharacters = /[^0-9 -]/
			return (!validCharacters.test(inputString));
		}
	// vervang alles wat niet een toegestaane karakter is
		function stripTelNrChars(inputString) { return inputString.replace(/[^0-9 -]/g,""); }
	// controleer tijdens intikken telnr
		function checkTelNrInput(inputveld) {
			if(!checkTelNumberInput(inputveld.value))inputveld.value=stripTelNrChars(inputveld.value);
		}
	// controleer bij verlaten veld dat telnr 10 cijfers bevat
		function validateTelNr(inputveld) {
			var dummy_telnr = stripChars(inputveld.value);
			if(dummy_telnr.length!=10) {
				alert('Het telefoonnummer moet 10 cijfers bevatten!');
				inputveld.focus();
			}
		}
/* postcode*/
	// te gebruiken formaat (1234AB)
		function checkPostCode(inputString) {
			validPattern = /\d{4}[ ]{1}[a-zA-Z]{2}/;
			return (validPattern.test(inputString));
		}
	// controlleer bij verlaten veld dat postcode correct formaat heeft
		function validatePostCode(veldje) {
			if(!checkPostCode(veldje.value)) {
				alert("De postcode heeft niet het correcte formaat!\n\nVoorbeeld: '1234 AB'");
				veldje.focus();
			}
		}
// simple e-mailcheck
	function isValidEmail(email) { 
		if (email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
			return true; 
		}
		else {
			alert ("This does not appear to be a valid e-mail address.\nPlease enter your e-mail address in the form: you@you.com");
			return false; 
		} 
	}
// advanced e-mailcheck
	function emailCheck (emailStr,field) {
		var alertmsg = true;
		if (emailCheck.arguments.length == 2 ) alertmsg = emailCheck.arguments[1];
		if(emailStr.length > 0){
			var emailPat = /^(.+)@(.+)$/;
			var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
			var validChars = "\[^\\W" + specialChars + "\]";
			var quotedUser = "(\"[^\"]*\")";
			var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
			var atom = validChars + '+';
			var word = "(" + atom + "|" + quotedUser + ")";
			var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
			var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
			var matchArray = emailStr.match(emailPat);
			if (matchArray == null) {
				if (alertmsg) {
					alert("The current e-mail address seems to be incorrect. Please check the @ and the '.'");
					document.getElementById(field).focus();
					return false;
				}
			}
			var user = matchArray[1];
			var domain = matchArray[2];
			if (user.match(userPat) == null) {
			    if (alertmsg) {
					alert("The current e-mail address seems to be incorrect. Please check the username.");
					document.getElementById(field).focus();
				    return false;
				}
			}
			var IPArray = domain.match(ipDomainPat);
			if (IPArray != null) {
			    // this is an IP address
				  for (var i = 1; i <= 4; i++) {
				    if (IPArray[i] > 255) {
				        if (alertmsg) {
							alert("The current e-mail address seems to be incorrect. Please check the IP-adres.");
							document.getElementById(field).focus();
							return false;
						}
				    }
			    }
			    return true;
			}
			var domainArray = domain.match(domainPat)
			if (domainArray == null) {
				if (alertmsg) {
					alert("The current e-mail address seems to be incorrect. Please check the domain.");
					document.getElementById(field).focus();
				    return false;
				}
			}
			var atomPat = new RegExp(atom,"g");
			var domArr = domain.match(atomPat);
			var len = domArr.length;
			if (domArr[domArr.length-1].length < 2 || domArr[domArr.length-1].length > 3) {
				// the address must end in a two letter or three letter word.
				if (alertmsg) {
					alert("The current e-mail address seems to be incorrect. An e-mail address usually ends on with two or three letters.");
					document.getElementById(field).focus();
					return false;
				}
			}
			if (len < 2) {
				var errStr = "The current e-mail address seems to be incorrect. Please check the domain.";
				if (alertmsg) {
					alert(errStr);
					document.getElementById(field).focus();
					return false;
				}
			}
		}
		return true;
	}
/*	removes leading and trailing spaces and replaces double spaces with a single space;
	if not a string is given, the input is returned unchanged
	zie ook: http://blog.stevenlevithan.com/archives/faster-trim-javascript */
	function trim(stringToTrim) { return stringToTrim.replace(/^\s+|\s+$/g,""); }
/*  removes ALL spaces from a string */
	function removeSpaces(string) { return string.split(" ").join(""); }
/* dynamisch openen/sluiten van infoblokken */
	function expandCollapse() {
		for (var i=0; i<expandCollapse.arguments.length; i++) {
			var element = document.getElementById(expandCollapse.arguments[i]);
			element.style.display = (element.style.display == "none") ? "block" : "none";
		}
	}
/* UTILITIES */
function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader("User-Agent","XMLHTTP/1.0");
	if (postData) {
		req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		req.onreadystatechange = function () {
			if (req.readyState != 4) return;
			if (req.status != 200 && req.status != 304) { return; }
			callback(req);
		}
		if (req.readyState == 4) return;
		req.send(postData);
	}
}
var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("MSXML2.XMLHTTP.6.0")},
	function () {return new ActiveXObject("MSXML2.XMLHTTP.3.0")},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")},
];
function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0; i<XMLHttpFactories.length; i++) {
		try { xmlhttp = XMLHttpFactories[i](); }
		catch (e) { continue; }
		break;
	}
	return xmlhttp;
}
// land-afhankelijke aanroep van functie checkField
// checkField(formName,fieldName,true,true,true) ==> validatieNLPostcode,validatiegeboortedatum,validatieNLTelefoon
function checkNLCall(formName,fieldName) {
	if(document.getElementById("land").value=="151~Nederland") {
		if(formName=="dspJeuglidForm") { checkField(formName,fieldName,true,true,true); }
		else { checkField(formName,fieldName,true,false,true); }
	}
	else {
		if(formName=="dspJeuglidForm") { checkField(formName,fieldName,false,true,false); }
		else { checkField(formName,fieldName,false,false,false); }
	}
}
// voor AJAX-validatie van formulierveld
function checkField(formName,fieldName,validatieNLPostcode,validatiegeboortedatum,validatieNLTelefoon) {
	if (validatieNLPostcode === undefined) { validatieNLPostcode = true; }
	if (validatiegeboortedatum === undefined) { validatiegeboortedatum = false; }
	if (validatieNLTelefoon === undefined) { validatieNLTelefoon = true; }
	var postdata = new Object();
	if(document.getElementById(fieldName).type == "checkbox") { var postdata = "formname="+encodeURI(formName)+"&fieldname="+encodeURI(fieldName)+"&fieldvalue="+encodeURI(document.getElementById(fieldName).checked); }
	else { var postdata = "formname="+encodeURI(formName)+"&fieldname="+encodeURI(fieldName)+"&fieldvalue="+encodeURI(document.getElementById(fieldName).value)+"&validatiegeboortedatum="+validatiegeboortedatum+"&validatieNLPostcode="+validatieNLPostcode+"&validatieNLTelefoon="+validatieNLTelefoon; }
	sendRequest("index.cfm?fuseAction=dspValidateField",validationResponse,postdata);
}
// idem
function validationResponse(req) {
	var hasError = req.responseXML.getElementsByTagName("validationerror")[0].firstChild.nodeValue;
	var fieldName = req.responseXML.getElementsByTagName("fieldname")[0].firstChild.nodeValue;
	var errorMessage = req.responseXML.getElementsByTagName("errormessage")[0].firstChild.nodeValue;
	if(hasError == "true") {
		document.getElementById("error_"+fieldName).className = "required";
		document.getElementById("error_"+fieldName).innerHTML = errorMessage;
		//document.getElementById("label_"+fieldName).className = "textLabel";
		if(document.getElementById(fieldName).type != "checkbox") {
			var currentClassName = document.getElementById(fieldName).className;
			document.getElementById(fieldName).className = currentClassName + " requiredBorder";
		}
	}
	else {
		document.getElementById("error_"+fieldName).className = "required hideText";
		//document.getElementById("label_"+fieldName).className = "textLabel";
		if(document.getElementById(fieldName).type != "checkbox") {
			var currentClassName = document.getElementById(fieldName).className;
			currentClassName = currentClassName.replace("requiredBorder","");
			document.getElementById(fieldName).className = currentClassName;
		}
	}
}