//#############################################################################
//##	FORM VALIDATIE														 ##
//##																		 ##
//## © 1998-2006 COPYRIGHT Scheepens Reclame Adviseurs Tilburg, Netherlands  ##
//##																		 ##
//#############################################################################
// 29.06.04 Versie 1.0
// 14.07.04 Versie 1.1 
// 	 Aanpassingen: 	* toevoeging validatie tussenvoegsels
//					* aanpassing validatie achternaam
//					* aanpassing validatie adres
//					* aanpassing validatie postcode
//					* aanpassing validatie telefoonnummer
// 28.10.05 Versie 2.0
//	Aanpassingen:	* Script DOM compatible gemaakt
//
// 18.05.2006 Versie 2.0.1
//	Aanpassingen:	* Verbetering  van de telefoonvalidatie
//
// 29.05.2006 Versie 2.1.0
//	Aanpassingen:	* Toevoeging van addEvent functie
//					* Zorgt voor automatische koppeling met alle gevonden formulieren
//					* Controle op js_enabled, bestaat deze niet wordt deze toegevoegd aan het formulier
//
// 29.06.2006 Versie 2.1.1
//	Aanpassingen:	* alleen formulieren in de classe "validationform" worden gekoppeld.
//#############################################################################

function checkInput() {

// Elementen zoeken in de pagina
	var voorletters 	= document.getElementById( "voorletters" );
	var tussenvoegsels 	= document.getElementById( "tussenvoegsel" );
	var achternaam 		= document.getElementById( "naam" );
	var straat 			= document.getElementById( "straat" );
	var huisnummer 		= document.getElementById( "huisnummer" );
	var huisnummer_t 	= document.getElementById( "huisnummer_toevoeging" );
	var postcode_nr 	= document.getElementById( "postcode_cijfers" );
	var postcode_lt 	= document.getElementById( "postcode_letters" );
	var postcode		= document.getElementById( "postcode" );
	var woonplaats 		= document.getElementById( "woonplaats" );
	var telefoon 		= document.getElementById( "telefoon_1" );
	var emailadres 		= document.getElementById( "email" );
	
// VOORLETTERS
	if( voorletters ){
		if( voorletters.value == "") {
		  	showMessage( voorletters );
		  	return false;
	  	}
		else{ 
			// Voorletters in Format zetten : abc > A.B.C. // ABC > A.B.C.
			var letters = new Array();
			var i = 0;
			var j = 0;
			var voorlettersAangepast = "";
			var voorletter = voorletters.value;
			voorletter = voorletter.toUpperCase();
			while ( i <= voorletter.length)	{
				voorletter = voorletter.replace( ".", "");
				voorletter = voorletter.replace( " ", "");
				i++;
			}
			letters = voorletter.split("");
			while ( j < letters.length)	{
				voorlettersAangepast += letters[j] + ".";
				j ++;
			}
			voorletters.value = voorlettersAangepast;
		}
	}

// TUSSENVOEGSELS
	if( tussenvoegsels ){
		if ( tussenvoegsels.value != "" ) {
		  	// tussenvoegsel in format zetten : Van Der > van der
			tussenvoegsels.value = tussenvoegsels.value.toLowerCase();
		}
	}

// ACHTERNAAM
	if( achternaam ){
		if ( achternaam && achternaam.value == "") {
		  	showMessage( achternaam );
		  	return false;
		}
		else { 
			// Eerste letter van de achternaam in Format zetten : abc def > Abc Def
			var i = 0;
			var j = 0;
			var k = 0;
			var m = 0;
			var achtern = achternaam.value;
			var srcIndex;
			var achternaamPart = new Array();
			var achternaamPartLos = new Array();
			var achternaamPartAangepast = new Array();
			var achternaamLastLos = new Array();
			var achternaamAangepast = "";
			var achternaamLast = "";
			achtern = achtern.toLowerCase();
			while ( srcIndex != -1) {
				srcIndex = achtern.search(" ")
				if ( srcIndex != -1) {
					achternaamPart[i] = achtern.substr(0 , srcIndex);
					achternaamPartLos = achternaamPart[i].split("");
					achternaamPartLos[0] = achternaamPartLos[0].toUpperCase();
					achternaamPartAangepast[i] = "";
					j = 0;
					while ( j < achternaamPartLos.length ) {
						achternaamPartAangepast[i] = achternaamPartAangepast[i] + achternaamPartLos[j];
						j ++;
					}
					srcIndex++;
					achtern = achtern.slice(srcIndex , achtern.length);
					i++;
				}
			}
			while ( k < achternaamPartAangepast.length)	{
				achternaamAangepast += achternaamPartAangepast[k];
				achternaamAangepast += " ";
				k++;
			}
			achternaamLastLos = achtern.split("");
			achternaamLastLos[0] = achternaamLastLos[0].toUpperCase();
			while ( m < achternaamLastLos.length ) {
				achternaamLast += achternaamLastLos[m];
				m++;
			}
			achternaamAangepast = achternaamAangepast + achternaamLast;
			achternaam.value = achternaamAangepast;
		}
	}
	
// STRAAT
	if( straat ){
		if ( straat.value == "" ) {
		  	showMessage( straat );
		  	return false;
		}
		else { 
			// Eerste letters van het Adres in Format zetten : abc def > Abc Def
			var straat_parts = straat.value.split( " " );
			var straat_partsLos;
			var straat_partsTmp = "";
			var straat_new = "";
			
			for( var i = 0; i < straat_parts.length; i++ ){
				straat_partsLos = straat_parts[i].split("");
				if( straat_partsLos.length > 0 ){
					straat_partsLos[0] = straat_partsLos[0].toUpperCase();
					straat_partsTmp = "";
					for( var j = 0; j < straat_partsLos.length; j++ ){
						straat_partsTmp += straat_partsLos[j];
					}
					straat_parts[i] = straat_partsTmp;
					if( i < ( straat_parts.length - 1 ) )
						straat_new += straat_parts[i] + " ";
					else
						straat_new += straat_parts[i];
				}
			}
			straat.value = straat_new;
		}
	}

// HUISNUMMER
	if( huisnummer ){
		if( huisnummer.value == "" ){
			showMessage( huisnummer );
			return false;
		}
		else{
			var re1 = /[0-9]+/;
			if( !re1.test( huisnummer.value ) ){
				showMessage( huisnummer );
				return false;
			}
		}
	}

// HUISNUMMER_TOEVOEGING
	if( huisnummer_t ){
		if( huisnummer_t != "" ){
			huisnummer_t.value = huisnummer_t.value.toLowerCase();
		}
	}

// POSTCODE_NUMMERS
 	if( postcode_nr ){
		var re2 = /[0-9]{4}/;
		if( !re2.test( postcode_nr.value ) ){
			showMessage( postcode_nr );
			return false;
		}
	}

//POSTCODE LETTERS
	if( postcode_lt ){
		var re3 = /[A-Z]{2}/;
		var p = postcode_lt.value.toUpperCase();
		if( !re3.test( p ) ){
			showMessage( postcode_lt );
			return false;
		}
		else{
			postcode_lt.value = p;
		}
	}
	
// POSTCODE LETTERS + CIJFERS
	if( postcode ){
		var re_cijfers = /[0-9]{4}/;
		var re_letters = /[A-Z]{2}/;
		
		var sPostcode = postcode.value;
		var sPostcode = sPostcode.replace( /[^a-z0-9]/gi, "" );
		
		var cijfers = sPostcode.substr( 0, 4 );
		var letters = sPostcode.substr( 4, 2 );
		
		letters = letters.toUpperCase();
		
		if( !re_cijfers.test( cijfers ) ){
			showMessage( postcode );
			return false;
		}
		
		if( !re_letters.test( letters ) ){
			showMessage( postcode );
			return false;
		}
		
		postcode.value = cijfers + " " + letters;
	}

// WOONPLAATS
	if( woonplaats ){
	  	if ( woonplaats.value == "" ) 
			{
		  	showMessage( woonplaats );
		  	return false;
			}
		else { 
			// Woonplaats in Format zetten : AbCdeF > ABCDEF
			woonplaats.value = woonplaats.value.toUpperCase();
		}
	}

// TELEFOON
	if( telefoon ){
		var re4 = /^0([0-9]{9})/;
		var replace_re = /[^0-9]/;
		
		// telefoonnummers in de Format zetten : 012-3456789 > 0123456789
		var tel = telefoon.value;
		tel = tel.replace( replace_re , "");
		
		//alert( tel );
		
		if( !re4.test( tel ) ){
			showMessage( telefoon );
			return false;
		}
	}

// EMAILADRES
	if( emailadres ){
		if (! ( /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test( emailadres.value ) ) ){
			showMessage( emailadres );
		  	return false;
		}
	}
return true;
}

function showMessage( dom_id ){
	alert( "U heeft uw " + dom_id.name.replace( "_", " " ) + " niet of niet correct ingevuld." );
	dom_id.focus();
}

if( typeof( addEvent ) != undefined ){
	function addEvent(elm, evType, fn, useCapture){
	// cross-browser event handling for IE5+, NS6+ and Mozilla 
	// By Scott Andrew 
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture); 
			return true; 
		} 
		else if (elm.attachEvent) { 
			var r = elm.attachEvent('on' + evType, fn); 
			return r; 
		} 
		else {
			elm['on' + evType] = fn;
		}
	}
}

function ConnectForms(){
	var aForms = document.getElementsByTagName( "form" );
	for( var i = 0; i < aForms.length; i++ ){
		if( aForms[i].className == "validationform" ){
			
			var aInputs = aForms[i].getElementsByTagName( "input" );
			var found = false;
			for( var j = 0; j < aInputs.length; j++  ){
				if( aInputs[j].name == "js_enabled" ){
					aInputs[j].value = "true";
					found = true;
				}
			}
			if( !found ){
				var oJS = document.createElement( "input" );
				oJS.type = "hidden";
				oJS.name = "js_enabled";
				oJS.value = "true";
				oJS.id = "js_enabled";
				
				aForms[i].appendChild( oJS );
			}
	
			addEvent( aForms[i], "submit", checkInput, false );
		}
	}
	
}

addEvent( window, "load", ConnectForms, false );