/*
functions.js
Wordt voornamelijk gebruikt bij controle van invoervelden op formulieren

Versie 2.1
5-9-2007
*/


//----------------------------------------------------------------------------------------------------
// Vertalingen
//----------------------------------------------------------------------------------------------------
var aantalTalen = 2;

var talen = new Array(aantalTalen);
var verzendenT = new Array(aantalTalen);
var wissenT = new Array(aantalTalen);
var validT = new Array(aantalTalen);
var verplichtT = new Array(aantalTalen);
var cijferT = new Array(aantalTalen);
var minMaxT = new Array(aantalTalen);
var mogelijkT = new Array(aantalTalen);

talen[0]="nl";
talen[1]="en";

verzendenT[0]="U heeft gekozen voor verzending.\nWeet u zeker dat u wilt verzenden ?";
verzendenT[1]="You have chosen to send this form.\nAre you sure you want to do this?";

wissenT[0]="Weet u zeker dat u het formulier wilt wissen ?"
wissenT[1]="Are you sure you want to clear this form?"

validT[0]="De volgende items zijn niet juist ingevuld:\n\n";
validT[1]="Please correct the following values:\n\n";

verplichtT[0]="De volgende verplichte items zijn niet ingevuld:\n\n";
verplichtT[1]="Please fill in the following required items:\n\n";

cijferT[0]="Foute invoer !\nAlleen cijfers gebruiken \nen eventueel een punt of komma\nals decimaal-teken!\nb.v. 8.5 of 5.5";
cijferT[1]="Wrong entry !\nOnly numbers are allowed to use\n Optionally you can use a period or comma for decimals!\ne.g. 5,5 or 6.0";

minMaxT[0]="De ingevoerde waarde moet liggen tussen #x# en #y#";
minMaxT[1]="The value must be between #x# and #y#";

mogelijkT[0]="U mag niet meer dan #x# mogelijkheden aanvinken.";
mogelijkT[1]="You're not allowed to check more than #x# possibilities";



//----------------------------------------------------------------------------------------------------
// Diverse document functies m.b.t layout
//----------------------------------------------------------------------------------------------------

function MM_swapImgRestore() { 
	// Restored het plaatje naar het origineel bij mouseOver
	var i;
	var x;
	var a = document.MM_sr;
	
	for(i=0; a && i<a.length && (x=a[i]) && x.oSrc; i++){
		x.src=x.oSrc;
	}
}

function MM_swapImage() { 
	// Wisselt het image met een andere bij mouseOn
	var i;
	var j = 0;
	var x;
	var a = MM_swapImage.arguments;
	
	document.MM_sr = new Array;
	
	for(i=0; i<(a.length-2); i+=3){
		if ((x=MM_findObj(a[i]))!=null){
			document.MM_sr[j++]=x; 
			
			if(!x.oSrc){
				x.oSrc=x.src;
			} 
			
			x.src=a[i+2];
		}
	}
}

function MM_preloadImages() {
	// Laadt plaatjes van te voren, zodat ze niet later meer geladen hoeven te worden
	var d = document;
	
	if(d.images){ 
		if(!d.MM_p) {
			d.MM_p=new Array();
		}
		
		var i;
		var j = d.MM_p.length;
		var a = MM_preloadImages.arguments;
		
		for(i = 0; i<a.length; i++){
			if (a[i].indexOf("#") != 0){
				d.MM_p[j] = new Image; 
				d.MM_p[j++].src = a[i];
			}
		}
	}
}

function MM_findObj(n, d) { 
	// Vind het ID van een object in gegeven document
	var p;
	var i;
	var x;
	
	if(!d){
		d=document;
	}
	
	if((p = n.indexOf("?")) >0 && parent.frames.length){
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
	
	if(!(x = d[n]) && d.all){
		x=d.all[n];
	}
	
	for (i=0; !x && i<d.forms.length; i++){
		x = d.forms[i][n];
	}
	
	for(i=0; !x && d.layers && i<d.layers.length; i++){
		x = MM_findObj(n,d.layers[i].document);
	}
	
	if(!x && d.getElementById){
		x = d.getElementById(n);
	}
	
	return x;
}

function MM_reloadPage(init) {
	// Herlaad de pagina wanneer Netscape Navigator 4 geresized wordt.
	if (init==true) with (navigator) {
		if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
			document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; 
		}
	} 
	else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH){
		location.reload();
	}
}
MM_reloadPage(true);


//----------------------------------------------------------------------------------------------------
// Formulier knop functies
//----------------------------------------------------------------------------------------------------


function toggleBox(szDivID, iState) {
	if(document.layers){	   //NN4+
	   document.layers[szDivID].visibility = iState ? "show" : "hide";
	   document.layers[szDivID].height = iState ? "100%" : "0";
	   document.layers[szDivID].height = iState ? "relative" : "absolute";
	}
	else if(document.getElementById){	  //gecko(NN6) + IE 5+
		var obj = document.getElementById(szDivID);
		obj.style.visibility = iState ? "visible" : "hidden";
		obj.style.height = iState ? "100%" : "0";		
		obj.style.position = iState ? "relative" : "absolute";
	}
	else if(document.all){	// IE 4
		document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
		document.all[szDivID].style.height = iState ? "100%" : "0";		
		document.all[szDivID].style.height = iState ? "relative" : "absolute";		
	}
}



function checkboxes(formulier){
	// Selecteer alle checkboxes in opgegeven formulier aan/uit
	var box= false;
	for (i = 0; i<formulier.elements.length; i++) {
		if(i==0){
			if(formulier.elements[i].checked==false){
				box=true;
			}
			else{
				box=false;
			}
		}
		formulier.elements[i].checked=box;
	}
}



function verzenden(formulier){
	// Wordt aangeroepen bij submitten van een formulier
	
	var vraag;

	// Controleer eerst of de verplichte velden zijn ingevoerd

	if ((!test_valid(formulier))||(!test_mandatory(formulier))){
		return false;
	}
	else{
		
		if(formulier.name=="scanform"){
			// Als het een scanformulier is (ofterwijl het veld mailfrom bestaat op het formulier)  Eigenlijk de naam van de form ophalen
			// nog een keer veranderen , de naam moet altijd scanform zijn dan
			vraag = confirm(translate(verzendenT));
			
			if (vraag == true){
			
				for (i = 0; i<formulier.elements.length; i++) {
					// Zet alle elementen weer aan zodat deze geschikt blijven voor post data
					formulier.elements[i].disabled = false;
				}
				
				// Het formulier kan verzonden worden
				formulier.submit();
			}
			else{
				// Er wordt gekozen om nog niet te verzenden
				return false;
			}
		}
		else{
			// Als het geen scanformulier is en de velden zijn goedgekeurd
			formulier.submit();
		}
	}
}

function wis_form(formulier){
	
	// Wist het formulier met opgegeven paramter
	var vraag;

	// Vraag om bevestiging
	vraag = confirm(translate(wissenT));
	
	// Reset of niet
	if (vraag == true){
		for (i = 0; i<formulier.elements.length; i++) {
			if(formulier.elements[i].disabled!=true){
				formulier.elements[i].value=formulier.elements[i].defaultValue;
			}
		}
		return true;
	}
	else{
		return false;
    }
}


//----------------------------------------------------------------------------------------------------
// Controle functies op velden
//----------------------------------------------------------------------------------------------------

function test_valid(formulier){
	
	// Deze functie controleert alle velden op geldigheid van invoer bij POST en geeft een melding als er een parse error is
	// Voorwaarden: bij de tag moet id="<type veld>" vermeld staan om het type veld aan te geven, zodat er op dit type gecontroleerd kan worden.
	// Hieronder een overzicht van de type velden die in de id tag opgenomen kunnen worden.
	/* 
	Type velden
	
	email
	postcode
	integer
	float
	*/
	var check = true;
	var message = translate(validT);
	var veldWaarde = "";
	var error = 0;
	var firstError=-1;
	
	for (i = 0; i<formulier.elements.length; i++) {
		if (formulier.elements[i].id != "") {
			
			veldWaarde = formulier.elements[i].value;
			
			switch(formulier.elements[i].id){
				
				case "email":
					if((!checkEmail(formulier.elements[i]))&&(veldWaarde!="")){
						error=1;
					}
					break;	
				case "postcode":
					if((!checkPostcode(formulier.elements[i]))&&(veldWaarde!="")){
						error=1;					
					}				
					break;	
				case "integer":
					if((!checkInteger(formulier.elements[i]))&&(veldWaarde!="")){
						error=1;					
					}									
					break;	
				case "float":
					if((!checkFloat(formulier.elements[i]))&&(veldWaarde!="")){
						error=1;					
					}
					break;
				case "pass":
					if((!checkPass(formulier.elements[i], formulier.elements[i+1]))&&(veldWaarde!="")){
						error=1;					
					}
					i++;
					break;	
			}
			
			if(error==1){
				//Als er een fout is opgetreden bij de checks

				check=false;
				
				if(firstError==-1){
					//Onthoud de eerste error voor focus field later
					firstError = i;	
				}
				
				if(formulier.elements[i].title==""){
				// Als de title omschrijving niet is ingevuld neem dan de naam van het element
					message = message + "[ "+formulier.elements[i].name+" ]\n";
				}
				else{
				// Als deze wel is ingevuld neem dan de title boodschap
					message = message + "[ "+formulier.elements[i].title+" ]\n";
				}					
			}
			// Reset error
			error=0;
		}
	}
	
	if (check == false){
		// Als de tests niet geslaagd zijn focus dan op het eerste foutieve veld en geef dan het opgebouwde bericht weer
		//formulier.elements[firstError].select();
		alert(message);
		
		formulier.elements[firstError].focus();
	}
	
	//Retourneer de uitkomst van de check
	return check;	
	
}


function test_mandatory(formulier, meldingUIT){
	
	// Deze functie controleert alle verplichte velden op een formulier
	// ook checkboxes en radiogroepen kunnen gecontroleerd worden
	// Voorwaarden: bij de tag moet lang="true" staan voor verplichte velden
	// bij alle type invoer wordt de "title" in de tag gebruikt om uitgebreide omschrijvingen te gebruiken,
	// zoniet dan wordt de "name" van de tag gebruikt.
	
	
	// Variabelen die gebruikt worden tijdens de functie
	var check = true;
	var error = 0;
	var firstError=-1;
	var message = translate(verplichtT);
	
	var radioNaam = new Array;
	var radioCheck = new Array;
	var radioTitel = new Array;	
	var radioElementID = new Array;
	
	var radioID = 0;
	var radioKnown = false;
	
	var i = 0;
	var j = 0;
	var k = 0;
	

    for (i = 0; i<formulier.elements.length; i++) {
	// Ga ieder formulier element langs
			
        if((formulier.elements[i].lang == "true") || (formulier.elements[i].className.indexOf("verplicht")!=-1)) {
		// Als het formulier element verplicht is
		
			// Haal dan het type element op
			typeInput = formulier.elements[i].type;
			
			switch(typeInput){
			
				case 'radio':
					// Als het een radioitem is
					
					for (j = 0; j < radioNaam.length; j++){
					// Ga dan de reeds gevonden radiogroepen langs om te kijken of hier al checks geweest zijn
						
						if(radioNaam[j]==formulier.elements[i].name){
						// Als deze groep al bekend is
						
							// sla dan de array positie op en geef aan dat hij bekend is
							radioID = j;
							radioKnown = true;
						}
					}
					
					if(!radioKnown){
					// Als de groep nog niet voorkomt in de array
						
						// Sla de groepsnaam op in de array, en onthoud de array positie
						radioID = radioNaam.length;
						
						radioNaam[radioID] = formulier.elements[i].name;
						radioTitel[radioID] = formulier.elements[i].title;					
						radioCheck[radioID] = false;
						radioElementID[radioID] = i;
					}
					
					if(formulier.elements[i].checked){
					// Als de radiobutton geselecteerd is, is de groep OK en wordt dit opgeslagen in de array
						radioCheck[radioID] = true;
					}
					
					// Variabele terugzetten naar origineel (gereed voor volgende check)
					radioKnown = false;
					break;
				
				case 'checkbox':
					// Als het een checkbox is
				
					if (formulier.elements[i].checked==false) {
					// Controleer dan of deze ingevuld is
						error = 1;
					}
					break;
				
				case 'hidden':
	            	if (formulier.elements[i].value == formulier.elements[i].defaultValue){
					// Als de defaultwaarde is ingevuld, dat kan dus ook leeg zijn!!
						error = 1;				 
					}				
					break;
					
				case 'password':
	            	if (formulier.elements[i].value == formulier.elements[i].defaultValue){
					// Als de defaultwaarde is ingevuld, dat kan dus ook leeg zijn!!
						error = 1;				 
					}				
					break;
					
				case 'text':
	            	if (formulier.elements[i].value == formulier.elements[i].defaultValue){
					// Als de defaultwaarde is ingevuld, dat kan dus ook leeg zijn!!
						error = 1;				 
					}				
					break;
					
				case 'textarea':
	            	if (formulier.elements[i].value == formulier.elements[i].defaultValue){
					// Als de defaultwaarde is ingevuld, dat kan dus ook leeg zijn!!
						error = 1;				 
					}				
					break;
					
				case 'select-one':
					if (formulier.elements[i].selectedIndex == 0){
					// Als het eerste item is geselecteerd
						error = 1;						
					}				
					break;
					
				case 'select-multiple':				
					if (formulier.elements[i].selectedIndex == 0){
					// Als het eerste item is geselecteerd
						error = 1;						
					}
					break;
			}
			
			if(error==1){
			
				check = false;
				
				if(firstError==-1){
					//Onthoud de eerste error voor focus field later
					firstError = i;	
				}
								
				if(formulier.elements[i].title==""){
				// Als de title omschrijving niet is ingevuld neem dan de naam van het element
					message = message + "[ "+formulier.elements[i].name+" ]\n";
				}
				else{
				// Als deze wel is ingevuld neem dan de title boodschap
					message = message + "[ "+formulier.elements[i].title+" ]\n";
				}
			}
			// Reset error
			error =0;
		}
    }
	
	for (k = 0; k < radioCheck.length; k++){
	// Ga de radio check array langs, om de groepen te controleren of deze zijn ingevuld
	
		if(!radioCheck[k]){
		// als er een groep gevonden is die niet is ingevuld
			check = false;
			
			// Werk het bericht bij
			if(radioTitel[k]!=""){
				message = message + "[ "+radioTitel[k]+" ]\n";
			}
			else{
				message = message + "[ "+radioNaam[k]+" ]\n";
			}
			
			if(firstError==-1){
				//Onthoud de eerste error voor focus field later
				firstError = radioElementID[k];	
			}
			
		}
	}
	
	if (check == false){
		// Als de tests niet geslaagd zijn focus dan op het eerste foutieve veld en geef dan het opgebouwde bericht weer
		if(meldingUIT){
			return false;
		}
		else{
			alert(message);
		}
		
		//formulier.elements[firstError].select();
		formulier.elements[firstError].focus();	
	}
	
	// Als de functie wordt gebruikt met return onSubmit, retourneer dan de uitkomst van de check
	return check;
}


//----------------------------------------------------------------------------------------------------
// Check functies op geldigheid van de velden bij POST
//----------------------------------------------------------------------------------------------------

function checkEmail(veld) {
	// Controleert de geldigheid van een email adres op basis van opgegeven string
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	// Test het emailadres
	if (filter.test(veld.value)){
		return true;
	}
	else{
		// Als het niet goed is
		return false;
	}
}


function checkPostcode(veld) {	
	// Functie om postcode te controleren, input argument is de postcode string

	var postcode;
	var	postcode1;
	var postcode2;
	
	
	// Bepaal de letters en cijfers dmv substring
	postcode = veld.value;

	if((postcode.length>7) || (postcode.length<6)){
		return false;
	}
	else{
		if(postcode.length==6){
			postcode1= postcode.substring(0,4);
			postcode2= postcode.substring(4,6);		
		}
		else{
			postcode1= postcode.substring(0,4);
			postcode2= postcode.substring(5,7);				
		}
	
		if (postcode1.match(/\d{4}/) == null){
		// Als het geen 4 cijfers zijn
			return false;
		}
		else{
			// maak er hoofdletters van
			postcode2 = postcode2.toUpperCase();
			
			// zet de postcode met hoofdletters terug in het veld
			veld.value = postcode1+" "+postcode2;
			
			if (postcode2.match(/[A-Z]{2}/) == null) {
			// Als de letters niet kloppen
				return false;
			}
			else{
				return true;	
			}
		}
	}
}

function checkInteger(veld){
	
	// Controleert of opgegeven string een integer is
	
	var integer;
	
	integer = parseInt(veld.value).toString();
	
	if((integer == veld.value) && (integer!="NaN")){
		return true;
	}
	else{
		return false;
	}
}

function checkFloat(veld){
	
	// Controleert of opgegeven string een float is
	
	var floatnumber;
	var lengte;
	var i;
	
	lengte = veld.value.length;
	
	if(lengte!=0){
		// Als het veld leeg is, hoeft het niet gecontroleerd te worden
		
		for(i=0;i<lengte;i++){
			// Vervang evt. komma's door punten, door ieder karakter in de string na te gaan en ev.t te vervangen
			if(veld.value.substring(i,i+1)==","){
				veld.value = veld.value.substring(0,i)+"."+veld.value.substring(i+1,lengte);
			}
		}
		
		// Zet de string om naar een float door te parsen
		floatnumber = parseFloat(veld.value).toString();
		
		if((floatnumber == veld.value) && (floatnumber!="NaN")){
			// Als de waarde hetzelfde is als de waarde in het veld, is het een float (NaN (not a number))
			return true;
		}
		else{
			return false;
		}
	}
	else{
		// Als het veld leeg is, is het ook goed
		return true;
	}
}

function checkPass(veld1, veld2){
	// Controleert of de gebruikerscode uit 8 karakters bestaat en of er een tweede veld is waarmee hij overeen moet komen
	var lengte;
	var naam1;
	
	lengte1 = veld1.value.length;
	
	if(lengte1>7){

		if(veld1.value==veld2.value){
			return true;
		}
		else{
			return false;
		}
	}
	else{
		return false;
	}
}

//----------------------------------------------------------------------------------------------------
// OnBlur functies
//----------------------------------------------------------------------------------------------------


function concatenator(fields, returnField){

	// Plakt de array van waarden aan elkaar en plaatst deze in het returnveld
	// Wordt o.a. gebruikt bij postcode, en voorletters, naam, achternaam etc.
	//VB: Gebruik -->     concatenator(new Array(document.scanform.datum4.value, '-', document.scanform.datum5.value, '-', document.scanform.datum6.value), document.scanform.V000399)
	
	var lengte;
	var i=0;
	var result="";
	
	// Bepaal de lengte van de array
	lengte = fields.length;
	
	// Doorloop de hele array en plak aan elkaar
	for(i=0;i<lengte;i++){
		if(fields[i]!=""){
			result = result+fields[i];
		}
	}

	// Plaats resultaat in het returnveld
	returnField.value = result;
}


function checkMinMax(veld,mn,mx){
	
	// Controleert de minimale en maximale waarde van een veld
	// Deze functie kan alleen met de onBlur methode worden aangeroepen!!
	var message = translate(minMaxT);
	
	if(veld.value!=""){
		// Als het veld leeg is hoeft het niet gecontroleerd te worden
		
		if(!checkFloat(veld)){
			// Controleert eerst of het wel een getal is
			veld.value="";
			veld.focus();
			
			
			alert(translate(cijferT));
			return false;
		}
		else{
			if((veld.value < mn)||(veld.value > mx)){
				// Controleer daarna of het binnen de gestelde grenzen valt
				veld.value="";
				veld.focus();
				
				message = message.replace("#x#", mn);
				message = message.replace("#y#", mx);
				
				
				alert(message);
				return false;
			}
		}
	}
	else{
		return true;
	}
}


function translate(item){
	
	var value;
	
	switch(readCookie("language")){
		case talen[0]:
			value=item[0];
			break;
		case talen[1]:
			value=item[1];
			break;
		default:
			value=item[0];
	}
	
	return value;
}

function readCookie(name){
	var cname = name + "=";
	var array = document.cookie.split(';');
	
	for(var i=0;i<array.length;i++){
		var value = array[i];
		
		while (value.charAt(0)==' '){
			value = value.substring(1,value.length);
		}
		
		if (value.indexOf(cname) == 0){
			return value.substring(cname.length,value.length);
		}
	}
	return null;
}



function maxVinkjes(formulier, id, max){
	var aantal = 0;
	var message = translate(mogelijkT);
	
	for (i = 0; i<formulier.elements.length; i++) {
		if (formulier.elements[i].id == id) {
			aantal++;
			if(aantal>max){
				message = message.replace("#x#", max);
				alert(message);
				element.checked = false;
			}
		}
	}
}

function max_vinkjes(src, dest, pos, max, meth){
	
	// Parameters ( bronveld, bestemmingsveld, mogelijkheidnr, max aantal vinkjes, methodekeuze (true voor 01, 001, false voor 2, 4, 8)
	var cur = '';
	var fin ='';
	var cnt = 0;
	var waarden = new Array(50);
	var message = translate(mogelijkT);
	var sub = 0;
	
	for(var i=0;i<waarden.length;i++){
		// Alle waarden in de array initialiseren op 0
		waarden[i] = '0';
	}
	
	if(meth){
		// huidige selectie ophalen
		fin = dest.value;
		
		for(var i=1;i<fin.length;i++){
			// tel aantal selecties en sla de waarde op in de array
			cur = fin.substring(i,i+1);
			
			if(cur=='1'){
				cnt++;
			}
			waarden[i] = cur;	
		}
	}
	else{	
		// huidige selectie ophalen en naar int parsen
		fin = parseInt(dest.value);
		
		while(Math.pow(2,sub)<fin){
			// zoek grootste macht van 2 die aftrekbaar is zonder negatieve waarde te krijgen
			sub++;
		}
		
		for(var i=sub;i>0;i--){
			if(Math.pow(2,i)>fin){
				// Als huidige aftrekwaarde groter is als de restwaarde
				// sla een 0 op in de array
				waarden[i]='0';
			}
			else{
				// Als de aftrekwaarde kleiner is als de restwaarde
				// trek dan af en sla een 1 op in de array
				fin = fin - Math.pow(2,i);
				waarden[i]='1';
				cnt++;
			}
		}
	}

	// huidige gekozen selectie die deze functie aanroept
	cur = waarden[pos-1];
	
	if(cur=='1'){
		// als huidige selectie al geselecteerd was in de array, zet hem dan op 0
		waarden[pos-1]='0';
	}
	else{
		if(cnt>=max){
			// als maximale aantal selecties al bereikt is
			src.checked = false;
			message = message.replace("#x#", max);
			alert(message);				
		}
		else{
			// als de huidige selectie nog niet geselecteerd was in de array
			waarden[pos-1]='1';
		}
	}	
	
	
	if(meth){
		// nieuwe methode met 01, 001, etc
		fin = '';
		
		for(var i=0;i<waarden.length;i++){
			// zet de gehele array weer in een string
			fin = fin + waarden[i];
		}
		// split de string (overbodige 0-en verdwijnen)
		fin = fin.substring(0,fin.lastIndexOf("1")+1);
		
		if(fin==''){
			// Als de string op 0 uitkomt, zet hem dan weer op 1 (geen selectie)
			fin='1';
		}
	}
	else{
		// oude methode met 2, 4, 8, 16, 32, etc
		fin = 0;
		 
		for(var i=0;i<waarden.length;i++){
			// pak iedere arraywaarde , en kijk of die aangevinkt is
			if(waarden[i]=='1'){
				// voor iedere vinkje pak dan 2 tot de macht van de positie en tel bij elkaar op
				fin = fin + Math.pow(2, i);
			}
		}	
	}
	// zet resultaat terug in de bestemming
	dest.value = fin;	
}

function saveUser2Cookie(formulier, velden, ctime ,pad){

	var ename;
	var integer;
	var today = new Date();
	var expire = new Date();

	expire.setTime(today.getTime() + (ctime*1000));		

	for (i = 0; i<formulier.elements.length; i++) {
		ename = formulier.elements[i].name;

		for(j=0; j<velden.length;j++){
			if(velden[j]==ename){
				// het is een mognr die opgeslagen moet worden
				switch(formulier.elements[i].type){
					case 'text':
						document.cookie = ename + "=" + escape(formulier.elements[i].value) + "; expires=" + expire.toGMTString() + "; path="+pad; 
						break;
					case 'radio':
						if(formulier.elements[i].checked){
							document.cookie = ename + "=" + escape(formulier.elements[i].value) + "; expires=" + expire.toGMTString() + "; path="+pad; 
						}
						break;
					case 'select-one':
						document.cookie = ename + "=" + escape(formulier.elements[i].value) + "; expires=" + expire.toGMTString() + "; path="+pad; 
						break;
				}
			
			}
		}
	}	
}


function prakEmail(src, dest){

	var old = src.value
	var nw = "";
 
	for (var i = 0; i < old.length; i++){
		var l = old.substring(i, i + 1);
		
		if ((l < "a" || "z" < l) && (l < "A" || "Z" < l) && (l < "0" || "9" < l) && (l != "_")){ 
			l = "";
		}
		else{
			nw = nw + l;
		}
	}
	dest.value = nw;
}



function zoekPostcode(postcode, straatVeld, plaatsVeld){

	if(checkPostcode(postcode)){
	    pcStr = "pc="+encodeURI(postcode.value);
		
	    if (window.XMLHttpRequest) {
			// Mozilla/Safari
	        self.xmlHttpReq = new XMLHttpRequest();
	    }
	    else if (window.ActiveXObject) {
		    // IE
	        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	    
	    self.xmlHttpReq.open("POST", "/searchpc.php", true);
	    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	    self.xmlHttpReq.setRequestHeader("Content-length", pcStr.length);
	    self.xmlHttpReq.setRequestHeader("Connection", "close");
	    self.xmlHttpReq.send(pcStr);	
		
	    self.xmlHttpReq.onreadystatechange = function() {
		
	        if (self.xmlHttpReq.readyState == 4) {
				
	        	myXML =  self.xmlHttpReq.responseText;
				//alert(myXML);
				
				if (window.ActiveXObject){
					// IE
					var xml=new ActiveXObject('Microsoft.XMLDOM');
					xml.async='false';
					xml.loadXML(myXML);
				} 
				else {				
					// FireFox
					var xml = (new DOMParser()).parseFromString(myXML, "text/xml");
				}
				
				var straat = xml.getElementsByTagName("straat")[0].firstChild.nodeValue;
				var plaats = xml.getElementsByTagName("plaats")[0].firstChild.nodeValue;
				
				straatVeld.value = straat;
				plaatsVeld.value = plaats;
			}
		}
	}
}

function verzendAjax(formulier, kleurFout, callback){

	var validationStr;
	var xmlHttpReq = false;
    var self = this;
	var type;
	var value;

	// Verwijder eerst alle mogelijke vorige fout elementen
	var childs = document.getElementsByTagName("*");
	var bfound=true;
	
	while(bfound){
	
		bfound = false;
		
		for(var i=0;i<childs.length;i++){
			
			if((childs[i].id!="") || (childs[i].id!="undefined")){
				if(childs[i].id.indexOf("fout")==0){
					childs[i].parentNode.removeChild(childs[i]);
					bfound = true;
				}
			}
		}
	}

	validationStr="<elements>";
	
	for (i = 0; i<formulier.elements.length; i++) {
				
		validationStr+="<element>";
		validationStr+="<name>"+formulier.elements[i].name+"</name>";
		
		type = formulier.elements[i].type;
		
		validationStr+="<type>"+type+"</type>";
		
		// Checkbox en radio???
		if(type=="select-one" || type=="text" || type=="select-multiple" || type=="textarea" || type=="password"){
			formulier.elements[i].style.backgroundColor="#ffffff";
			formulier.elements[i].style.color="#000000";
		}
		if(type=='checkbox' || type=='radio'){
			if(formulier.elements[i].checked){
				value=formulier.elements[i].value;
			}
			else{
				value="";
			}
		}
		else{
			value=formulier.elements[i].value;
		}
		
		validationStr+="<value>"+value+"</value>";
		validationStr+="<class>"+formulier.elements[i].className+"</class>";
		validationStr+="</element>";
	}
	
	validationStr+="</elements>";
    validationStr = "xml="+encodeURI(validationStr);
	
    if (window.XMLHttpRequest) {
		// Mozilla/Safari
        self.xmlHttpReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
	    // IE
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    self.xmlHttpReq.open("POST", "/validate.php", true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.setRequestHeader("Content-length", validationStr.length);
    self.xmlHttpReq.setRequestHeader("Connection", "close");
    self.xmlHttpReq.send(validationStr);	
	
    self.xmlHttpReq.onreadystatechange = function() {
	
        if (self.xmlHttpReq.readyState == 4) {
			
        	myXML =  self.xmlHttpReq.responseText;
			
			if (window.ActiveXObject){
				// IE
				var xml=new ActiveXObject('Microsoft.XMLDOM');
				xml.async='false';
				xml.loadXML(myXML);
			} 
			else {				
				// FireFox
				var xml = (new DOMParser()).parseFromString(myXML, "text/xml");
			}
			
			var elementen = xml.getElementsByTagName("element");
			var element;
			var check;
			var name;
			var type;
			var className;
			var melding;
			
			var foutGevonden = false;
			
			for(var j=0;j<elementen.length;j++){
			
				foutGevonden = true;
				
				element = elementen[j];
				check = element.getElementsByTagName("check")[0].firstChild.nodeValue;
				name = element.getElementsByTagName("name")[0].firstChild.nodeValue;
				type = element.getElementsByTagName("type")[0].firstChild.nodeValue;
				className = element.getElementsByTagName("class")[0].firstChild.nodeValue;
				melding = element.getElementsByTagName("melding")[0].firstChild.nodeValue;
				
				for (k = 0; k <formulier.elements.length; k++) {
					if(formulier.elements[k].name==name){
					
						var inputType = formulier.elements[k].type;
						
						if((!kleurFout) || (inputType=="radio" || inputType=="checkbox")){
						
							var fout = document.createElement("font");
							var br = document.createElement("br");
							fout.setAttribute('color', '#ff0000');
							fout.setAttribute('id', 'fout'+k);
							fout.appendChild(document.createTextNode(melding));
							fout.appendChild(br);
							
							formulier.elements[k].parentNode.insertBefore(fout, formulier.elements[k]);				
						}
						else{							
							formulier.elements[k].style.backgroundColor="#ff6666";
							formulier.elements[k].style.color="#ffffff";
						}
						break;
					}
				}
			}
			
			if(foutGevonden){

				
				var foutElement = document.createElement("input");
				foutElement.setAttribute('type', 'text');
				foutElement.setAttribute('hidefocus','hidefocus');
				foutElement.setAttribute('readonly','readonly');
				
				if(kleurFout){
					var melding = "De rode velden zijn niet (juist) ingevuld";
					foutElement.setAttribute('id', 'foutMeldingSmall');
					foutElement.setAttribute('size', '38');
				}
				else{
					var melding = "De ingevoerde gegevens zijn niet/niet juist ingevuld, controleer de velden met de rode foutmelding.";
					foutElement.setAttribute('id', 'foutMeldingLarge');
					foutElement.setAttribute('size', '90');
				}				
				
				foutElement.setAttribute('value', melding);
				
				var formElement = document.getElementsByName(formulier.name);
				formElement[0].parentNode.insertBefore(foutElement, formElement[0]);
				
				if(kleurFout){
					document.getElementById("foutMeldingSmall").focus();
				}
				else{
					document.getElementById("foutMeldingLarge").focus();
				}
			}
			
			if(elementen.length==0){
				if(callback){
					callback.callback();
				}
				else{
					formulier.submit();
				}
			}
			else{
				return false;
			}
        }
    }
}


function fillAjax(formulier, zoek){

	var validationStr;
	var xmlHttpReq = false;
    var self = this;
	var type;
	var value;

	fillStr ="<zoekinfo>";
	fillStr+="<tabeltype>"+zoek[0]+"</tabeltype>";
	
	for(i=1;i<zoek.length;i++){
		fillStr+="<zoek"+i+">"+zoek[i]+"</zoek"+i+">";
	}
	
	fillStr+="</zoekinfo>";
    fillStr = "xml="+encodeURI(fillStr);
	
    if (window.XMLHttpRequest) {
		// Mozilla/Safari
        self.xmlHttpReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
	    // IE
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    self.xmlHttpReq.open("POST", "/fill.php", true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.setRequestHeader("Content-length", fillStr.length);
    self.xmlHttpReq.setRequestHeader("Connection", "close");
    self.xmlHttpReq.send(fillStr);	
	
    self.xmlHttpReq.onreadystatechange = function() {
	
        if (self.xmlHttpReq.readyState == 4) {
			
        	myXML =  self.xmlHttpReq.responseText;
			//alert(myXML);

			if (window.ActiveXObject){
				// IE
				var xml=new ActiveXObject('Microsoft.XMLDOM');
				xml.async='false';
				xml.loadXML(myXML);
			} 
			else {				
				// FireFox
				var xml = (new DOMParser()).parseFromString(myXML, "text/xml");
			}
			
			var waarden = xml.getElementsByTagName("waarde");
			var waarde;
			var name;
			var value;
			
			for(var j=0;j<waarden.length;j++){
			
				waarde = waarden[j];
				name = waarde.getElementsByTagName("sleutel")[0].firstChild.nodeValue;
				value = waarde.getElementsByTagName("value")[0].firstChild.nodeValue;

				for (k = 0; k <formulier.elements.length; k++) {
					if(formulier.elements[k].name==name){
						
						var element = formulier.elements[k];
						
						if((element.type=="text") || (element.type=="textarea") || (element.type=="hidden") || (element.type=="select-one")){
							element.value=value;
						}
						
						if((element.type=="radio" && element.value==value) || (element.type=="checkbox" && element.value==value)){
							element.checked = true;
						}
					}
				}
			}
        }
    }
}


