var validationFalseIcon;
var validationTrueIcon;

function controlField(element){
	if (element.tagName.toLowerCase() == "input"){
		if (element.getAttribute("require") == 'true'){
			if (element.value == ''){
				//false	
				setValidationIcon(element.name, false);
			} else {
				if (!controleerVeld(element, false)){
					//false	
					setValidationIcon(element.name, false);
				} else {
					//true	
					setValidationIcon(element.name, true);
				}
			}
		} else {
			if (element.value != '' && element.type == 'text'){
				if (!controleerVeld(element, false)){
					//false		.
					setValidationIcon(element.name, false);
				} else {
					//true
					setValidationIcon(element.name, true);
				}
			}
		}
	} else if (element.tagName.toLowerCase() == "select"){
		if (element.getAttribute("require") == 'true'){
			if (element.value == ''){
				//false
				setValidationIcon(element.name, false);
			} else {
				//true
				setValidationIcon(element.name, true);	
			}
		} else {
			setValidationIcon(element.name, true);	
		}
	} else if (element.tagName.toLowerCase() == "textarea"){
		if (element.getAttribute("require") == 'true'){
			if (element.value == ''){
				//false	
				setValidationIcon(element.name, false);
			} else {
				//true
				setValidationIcon(element.name, true);
			}
		} else {
			setValidationIcon(element.name, true);	
		}
	}
}

function setValidationIcon(fieldName, validationResult){
	if (document.getElementById("validationicon_" + fieldName)){
		var icon = document.getElementById("validationicon_" + fieldName);

		if (validationResult){
			icon.src = validationTrueIcon;
		} else {
			icon.src = validationFalseIcon;
		}
	}
}

function ValidationLoad(){
	var inputtags = document.getElementsByTagName("input");
	var selecttags = document.getElementsByTagName("select");
	var textareatags = document.getElementsByTagName("textarea");
	
	for (var i = 0; i < inputtags.length; i++){
		if (inputtags[i].getAttribute("require") == 'true'){
			controlField(inputtags[i]);	
		}
	}
	
	for (var i = 0; i < selecttags.length; i++){
		if (selecttags[i].getAttribute("require") == 'true'){
			controlField(selecttags[i]);	
		}
	}
	
	for (var i = 0; i < textareatags.length; i++){
		if (textareatags[i].getAttribute("require") == 'true'){
			controlField(textareatags[i]);	
		}
	}
}

function inputControl(form){
	inputtags = document.getElementsByTagName('input');
	selecttags = document.getElementsByTagName('select');
	textareatags = document.getElementsByTagName('textarea');

	//----------INPUT CONTROLE-------------------------------------------------------------------------
	for( i=0; i<inputtags.length; i++ ){	
		if( inputtags[i].getAttribute("require") == 'true'){
			if( inputtags[i].value == '' ){
				alert('Niet alle verplicht velden zijn ingevuld!');
				inputtags[i].focus();
				return false;
			} else {
				if( !controleerVeld( inputtags[i], true ) ) return false;
			}
		} else {

			if( inputtags[i].value != '' && inputtags[i].type == 'text') {
				if( !controleerVeld( inputtags[i], true ) ) return false;
			}
		}
	}

	//----------SELECT CONTROLE------------------------------------------------------------------------
	for( i=0; i<selecttags.length; i++ ){
		if( selecttags[i].getAttribute("require") == 'true'){
			if( selecttags[i].value == '' ){
				alert('Niet alle verplicht velden zijn ingevuld!');
				selecttags[i].focus();
				return false;
			} 
		} 
	}

	//----------TEXTAREA CONTROLE----------------------------------------------------------------------
	for( i=0; i<textareatags.length; i++ ){
		if( textareatags[i].getAttribute("require") == 'true'){
			if( textareatags[i].value == '' ){
				alert('Niet alle verplicht velden zijn ingevuld!');
				textareatags[i].focus();
				return false;
			} 
		} 
	}
	
	return true;
}

function controleerVeld( veld, showmessage ){
	switch (veld.getAttribute("controltype")){
		case 'text':
			return true;
			break;
		case 'numeric':
			if( isNaN( veld.value ) == true ){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is niet numeriek!');
				}
				return false;
			} else {
				return true;
			}
			break;
		case 'decimal1':
			if( isNaN( veld.value ) == true ){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is geen getal!');
				}
				return false;
			} else {
				veld.value = round( veld.value, 1 );
				return true;
			}
			break;
		case 'decimal2':
			if( isNaN( veld.value ) == true ){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is geen getal!');
				}
				return false;
			} else {
				veld.value = round( veld.value, 2 );
				return true;
			}
			break;
		case 'decimal3':
			if( isNaN( veld.value ) == true ){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is geen getal!');
				}
				return false;
			} else {
				veld.value = round( veld.value, 3 );
				return true;
			}
			break;
		case 'phonenumber':
			if( isTelefoon(veld.value) == false ){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is geen geldig telefoonnummer / faxnummer!');
				}
				return false;
			} else {
				return true;
			}
			break;
		case 'email':
			if(isEmail(veld.value) == false){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is geen geldig emailadres!');
				}
				return false;
			} else {
				return true;
			}
			break;
		case 'zipcode':
			if(isPostcode(veld.value) == false){
				if (showmessage){
					veld.focus();
					veld.select();
					alert('De invoer is geen geldige postcode');
				}
				return false;
			} else {
				return true;
			}
			break;
		case 'uppercase':
			veld.value = veld.value.toUpperCase();
			return true;
			break;
		case 'lowercase':
			veld.value = veld.value.toLowerCase();
			return true;
			break;
	}
}

function isEmail( email ) {
	var at="@"
	var dot="."
	var lat=email.indexOf(at)
	var lemail=email.length
	var ldot=email.indexOf(dot)

	if( email.indexOf( at ) == -1 )	{
	    return false;
	}

	if( email.indexOf( at ) == -1 || email.indexOf( at ) == 0 || email.indexOf( at ) == lemail ) {
		return false;
	}

	if( email.indexOf( dot ) == -1 || email.indexOf( dot ) == 0 || email.indexOf( dot ) == lemail )	{
		return false;
	}

	if( email.indexOf( at, ( lat + 1 ) ) != -1 ) {
		return false;
	}

 	if( email.substring( lat - 1, lat ) == dot || email.substring( lat + 1, lat + 2 ) == dot ) {
	    return false;
	}

	if( email.indexOf( dot, ( lat + 2 ) ) == -1 ) {
	   	return false;
	}

 	if( email.indexOf( " " ) != -1 ) {
 	  	return false;
 	}

 	return true;
}

function isPostcode( postcode ) {	
	if( postcode != '' && postcode.length == 6 ) {
		valid = "01234567890";
		if( valid.indexOf( postcode.charAt( 0 ) ) == -1 ||  valid.indexOf( postcode.charAt( 1 ) ) == -1 || valid.indexOf( postcode.charAt( 2 ) ) == -1 || valid.indexOf( postcode.charAt( 3 ) ) == -1 ) {
			return false;
		}

		valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		if( valid.indexOf( postcode.charAt( 4 ) ) == -1 ||  valid.indexOf( postcode.charAt( 5 ) ) == -1 ) {
			return false;
		}
	
		return true;
	}
	
	return false;
}

function isTelefoon( telefoon ){
	/*var oldTelefoon = telefoon;*/
	telefoon = telefoon.replace(/-/g, "");
	telefoon = telefoon.replace(/ /g, "");
	
	if( telefoon.length == 10 || telefoon.length == 12 ){
		var plus = telefoon.charAt(0);
		var cijfers = telefoon.substring(1, telefoon.length);

		if(isNaN(plus) == false) {
			// Gewoon telefoonnummer....
			if( isNaN(cijfers) == true || telefoon.length != 10 ) {
				return false;
			} else {
				return true;
			}
		} else {
			// Buitenlands nummer
			if( plus != "+" || isNaN(cijfers) == true || telefoon.length != 12 ){
				return false;
			} else {
				return true;
			}
		}
	}
	
	return false;
}

function round( value, decimal ) {
	var f = Math.pow(10, decimal);
	value = Math.round(value * f) / f;
	value += Math.pow(10, - (decimal + 1));
	value += '';
	return decimal == 0 ? value.substring(0, value.indexOf('.')) :
	value.substring(0, value.indexOf('.') + decimal + 1);
}
