window.addEvent('domready', formcheck_init);
	
	// Validatiecheck: niet leeg.
	var nietleeg = new InputValidator ('nietleeg', {
		errorMsg: function(element, props){
			return (foutmelding[element.id] != undefined ) ? foutmelding[element.id] : foutmelding['default'];
		},
		test: function(element, props) {
			//if the value is > 0, element passes test
			return (element.value.length > 0);
		}
	});
	
	// Validatiecheck: valide adres.
	var valideadres = new InputValidator ('valideadres', {
		errorMsg: function(element, props){
			return (foutmelding[element.id] != undefined ) ? foutmelding[element.id] : foutmelding['default'];
		},
		test: function(element, props) {
			// test value against rough regexp for address: street {space} number {space?} extension.
			var validAddress = /^([a-zA-Z0-9- ]+)(\s+)(\d+)(\s*)([a-zA-Z0-9-]*)/;
			return (validAddress.test(element.getValue()));
		}
	});
	
	// Validatiecheck: valide postcode.
	var validepostcode = new InputValidator ('validepostcode', {
		errorMsg: function(element, props){
			return (foutmelding[element.id] != undefined ) ? foutmelding[element.id] : foutmelding['default'];
		},
		test: function(element, props) {
			// test value against regexp for Dutch postal code.
			var validPostalCode = /^(\d{4})(\s?)([a-zA-Z]{2})$/;
			return (validPostalCode.test(element.getValue()));
		}
	});
	
	// Validatiecheck: alleen cijfers in telefoonnummer.
	var validetelno = new InputValidator ('validetelno', {
		errorMsg: function(element, props){
			return (foutmelding[element.id] != undefined ) ? foutmelding[element.id] : foutmelding['default'];
		},
		test: function(element, props) {
			// test value against rough regexp for phone number.
			var validPhoneNumber = /^[\+]?(\d{10,})$/;
			return (validPhoneNumber.test(element.getValue()));
		}
	});
	
	// Validatiecheck: valide e-mail adres (thanks to CNet library).
	var valideemail = new InputValidator ('valideemail', {
		errorMsg: function(element, props){
			return (foutmelding[element.id] != undefined ) ? foutmelding[element.id] : foutmelding['default'];
		},
		test: function(element, props) {
			// test value against regexp for email address.
			var validEmail = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
			return (validEmail.test(element.getValue()));
		}
	});

function formcheck_init(){
	
	$('bedrijf').addEvent('blur', function(){
			if (!nietleeg.test($('bedrijf'))&& !$('bedrijf-fout'))
			{
				nietleeg.showError($('bedrijf'));
				$('bedrijf-fout').verdwijn = setTimeout(function()
				{
					$('bedrijf-fout').effect('opacity').custom(1,0);
					setTimeout(function(){$('bedrijf-fout').remove();},500);
				},2500);
			}
			else if (nietleeg.test($('bedrijf')) && $('bedrijf-fout') && !$('bedrijf-fout').verdwijn)
			{
				$('bedrijf-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('bedrijf-fout').remove();},500);
				hideSubmitError(); // Verberg global melding indien aanwezig.
			}
		});
	
	$('contactpersoon').addEvent('blur', function(){
			if (!nietleeg.test($('contactpersoon'))&& !$('contactpersoon-fout'))
			{
				nietleeg.showError($('contactpersoon'));
				$('contactpersoon-fout').verdwijn = setTimeout(function()
				{
					$('contactpersoon-fout').effect('opacity').custom(1,0);
					setTimeout(function(){$('contactpersoon-fout').remove();},500);
				},2500);
			}
			else if (nietleeg.test($('contactpersoon')) && $('contactpersoon-fout') && !$('contactpersoon-fout').verdwijn)
			{
				$('contactpersoon-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('contactpersoon-fout').remove();},500);
				hideSubmitError(); // Verberg global melding indien aanwezig.
			}
		});
			
	$('email').addEvent('blur', function(){
			if (!valideemail.test($('email'))&& !$('email-fout'))
			{
				valideemail.showError($('email'));
				$('email-fout').verdwijn = setTimeout(function()
				{
					$('email-fout').effect('opacity').custom(1,0);
					setTimeout(function(){$('email-fout').remove();},500);
				},2500);
			}
			else if (valideemail.test($('email')) && $('email-fout') && !$('email-fout').verdwijn)
			{
				$('email-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('email-fout').remove();},500);
				hideSubmitError(); // Verberg global melding indien aanwezig.
			}
		});
	
	/*$('opmerking').addEvent('blur', function(){
			if (!nietleeg.test($('opmerking'))&& !$('opmerking-fout'))
			{
				nietleeg.showError($('opmerking'));
				$('opmerking-fout').verdwijn = setTimeout(function()
				{
					$('opmerking-fout').effect('opacity').custom(1,0);
					setTimeout(function(){$('opmerking-fout').remove();},500);
				},2500);
			}
			else if (nietleeg.test($('opmerking')) && $('opmerking-fout') && !$('opmerking-fout').verdwijn)
			{
				$('opmerking-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('opmerking-fout').remove();},500);
				hideSubmitError(); // Verberg global melding indien aanwezig.
			}
		});
	*/
		
		
	$('contactform').addEvent('submit', function(evt){
		// Definieer vlaggen voor submit.
		var bedrijfOk = false, contactpersoonOk = false, emailOk = false;
		evt = (evt) ? evt : (window.event) ? window.event : null;

		// Naam.
		if (!nietleeg.test($('bedrijf'))){
			if (!$('bedrijf-fout')) nietleeg.showError($('bedrijf'));
		}else{
			if ($('bedrijf-fout') && !$('bedrijf-fout').verdwijn){
				$('bedrijf-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('bedrijf-fout').remove();},500);
			}
			bedrijfOk = true;
		}

		// Contactpersoon.
		if (!nietleeg.test($('contactpersoon'))){
			if (!$('contactpersoon-fout')) nietleeg.showError($('contactpersoon'));
		}else{
			if ($('contactpersoon-fout') && !$('contactpersoon-fout').verdwijn){
				$('contactpersoon-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('contactpersoon-fout').remove();},500);
			}
			contactpersoonOk = true;
		}
		
		// Emailadres.
		if (!valideemail.test($('email'))){
			if (!$('email-fout')) valideemail.showError($('email'));
		}else{
			if ($('email-fout') && !$('email-fout').verdwijn){
				$('email-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('email-fout').remove();},500);
			}
			emailOk = true;
		}
		
		// Opmerking.
		/*
		if (!nietleeg.test($('opmerking'))){
			if (!$('opmerking-fout')) nietleeg.showError($('opmerking'));
		}else{
			if ($('opmerking-fout') && !$('opmerking-fout').verdwijn){
				$('opmerking-fout').effect('opacity').custom(1,0);
				setTimeout(function(){$('opmerking-fout').remove();},500);
			}
			opmerkingOk = true;
		}
		*/

		// Retourneer true of false voor wel/geen submit.
		if (!(bedrijfOk && contactpersoonOk && emailOk && opmerkingOk)){
			// Toon de foutmelding voor een niet-geslaagde submit.
			
			showSubmitError();
			if (evt && evt.preventDefault) {
				evt.preventDefault();
			} else {
				evt.returnValue = false;
			} if (this.blur) this.blur();
		}
	});		
}

function hideSubmitError(){
	if ((document.getElementsByClassName('fout').length < 2) && $('verzenden_fout')){
		$('verzenden_fout').effect('opacity').custom(1,0);
		setTimeout(function(){$('verzenden_fout').remove();},500);
	}
}
