<!--hide this script from non-javascript-enabled browsers

function isGeldigEmailAdres(E)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(E)) { return true; } else { return false; }
}
function isPostcode(postcode) {
	var reg = new RegExp(/([0-9]){4}\s{0,1}([A-Z]){2}/);
	if (reg.exec(postcode) == null) {
		return false;
		} else { 
	return true;
	}
}
function isHuisnummer(nummer) {
	var reg = new RegExp(/^([0-9]){1,}([A-Z]){0,3}/);
	if (reg.exec(nummer) == null) {
		return false;
	} else {
		return true;
	}
}
function isTelefoonnummer(nummer) {
	var reg = new RegExp(/^(\d{2}-?\d{8}|\d{3}-?\d{7}|\d{4}-?\d{6})$/);
	if(reg.exec(nummer)==null) { return false; } else { return true; }
}
function isValideGebruikersnaam(naam) {
	if(naam.length<5) {
		return "De gebruikersnaam moet minimaal 5 tekens bevatten.";
	} else {
		return "";
	}
	
}
function isValideWachtwoord(pass1) {
	var hasErrors = false;
	var errstr = '';
	var errors = new Array;
	
	if (pass1.length < 8) {
		errors.push('Een wachtwoord moet uit minimaal 8 tekens bestaan\n');
		hasErrors = true;
	}
	
	var illegalChars = /[\W_]/;
	if (illegalChars.test(pass1)) {
		errors.push('Een wachtwoord kan alleen uit cijfers en letters bestaan\n');
		hasErrors = true;
	}
	
	if (!(pass1.match(/\d/))) {
		errors.push('Een wachtwoord moet tenminste één nummer bevatten\n');
		hasErrors = true;
	}
	
	if (!(pass1.match(/[a-z]/))) {
		errors.push('Een wachtwoord moet tenmimnste één kleine letter bevatten\n');
		hasErrors = true;
	}
	
	if (!(pass1.match(/[A-Z]/))) {
		errors.push('Een wachtwoord moet tenminste één hoofdletter bevatten\n');
		hasErrors = true;
	}
	
	if (hasErrors) {
		for (i in errors) {
			errstr += errors[i];
		}
		return errstr;
	} else {
		return "";
	}
}
/****************************** 
** Extra Javascript routines tbv terugkeerpatroon etc.
** JvD aug/sept 2007
*******************************/

function geefElement(id) {
	// geef ref terug naar een object met ID:
	if( document.getElementById )
    elem = document.getElementById(id);
  else if(document.all)
      elem = document.all[id];
  else if(document.layers)
    elem = document.layers[id];
    return elem;
}
function toonDiv(id) {
	elm = geefElement(id);
	elem.style.display = 'block';
}
function verbergDiv(id) {
	elm = geefElement(id);
	elem.style.display = 'none';
}
function instellenBegineindtijd(element) {
	if(element.checked) { verbergDiv('begineindtijd'); } else { toonDiv('begineindtijd'); }
}
function instellenTerugkeerPatroon(index) {
	// stelt de te tonen elementen in bij het aanmaken van een terugkerende afspraak:
	if(index==0) {
		verbergDiv('terugkeercontainer');
		} else {
		updatePatroonTekstueel();
		toonDiv('terugkeercontainer');
		if(index==1) { updateInhoud('terugkeereenheidtekst','dag'); }
		if(index==2) { updateInhoud('terugkeereenheidtekst','week'); toonDiv('terugkeerwekelijks'); } else { verbergDiv('terugkeerwekelijks'); }
		if(index==3) { updateInhoud('terugkeereenheidtekst','maand'); toonDiv('terugkeermaandelijks'); } else { verbergDiv('terugkeermaandelijks'); }
		if(index==4) { updateInhoud('terugkeereenheidtekst','jaar'); }
		}
}
function updateInhoud(id,tekst) {
	element = geefElement(id);
	element.innerHTML = tekst;
}
function updatePatroonTekstueel() {
	// updaten van de tekst van het terugkeerpatroon:
	// type patroon:
	var tekst = 'Elk';
	elmP = geefElement('patroon');
	elmE = geefElement('terugkeereenheid');
	elmD = geefElement('dp-normal-2');
	patroon = elmP.selectedIndex;
	// 1 = dagelijks, 2= wekelijks, 3= mnaandelijks, 4 = jaarlijks
	if(patroon==1) {
		if(elmE.value>1) { 
			tekst = tekst + 'e ' + elmE.value + ' dagen'; 
			} else {
			tekst = 'Dagelijks';
			}
		}
	if(patroon==2) {
		if(elmE.value>1) { 
			tekst = tekst + 'e ' + elmE.value + ' weken'; 	
			} else {
			tekst = 'Wekelijks';
			}
			// specifieke dagen samenpakken
			var dagen = new Array();
			elmMa = geefElement('op_ma');
			elmDi = geefElement('op_di');
			elmWo = geefElement('op_wo');
			elmDo = geefElement('op_do');
			elmVr = geefElement('op_vr');
			if(elmMa.checked) { dagen.push('maandag'); }
			if(elmDi.checked) { dagen.push('dinsdag'); }
			if(elmWo.checked) { dagen.push('woensdag'); }
			if(elmDo.checked) { dagen.push('donderdag'); }
			if(elmVr.checked) { dagen.push('vrijdag'); }
			if(dagen.length>0) {
				if(dagen.length==1) { tekst = tekst + ', op ' + dagen[0]; }
				if(dagen.length>1&&dagen.length<5) {
					dagtekst = dagen.join(', ');
					tekst = tekst + ', op ' + dagtekst;
				}
				if(dagen.length==5) {
					tekst = tekst + ', iedere dag';
				}
			}
		}
	if(patroon==3) {
		if(elmE.value>1) { 
			tekst = tekst + 'e ' + elmE.value + ' maanden'; 
			} else {
			tekst = 'Maandelijks';
			}
			// n-de dag van de maand, of dezelfde dag in de n-de week
			// komt te vervallen, omdat we altijd in de week plannen
			//dW = geefElement('dvdweek');
			//dM = geefElement('dvdmaand');
			elmdagnr = geefElement('dagnr');
			dagweek = geefElement('dagweek');
			dw = dagweek.value.split("|");
			dedag = dw[0];
			var dg = new Array('zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag');
			var uitg = 'de';
			if(dw[1]==1) { uitg = 'ste'; }
			tekst = tekst + ', op de ' + dw[1] + uitg + ' ' + dg[dedag];
			//if(dW.value=='w'&&dW.checked) { tekst = tekst + ', op de ' + dw[1] + 'de ' + dg[dedag]; }
			//if(dM.value=='m'&&dM.checked) { tekst = tekst + ', op dag ' + elmdagnr.value; }
		}
	if(patroon==4) {
		if(elmE.value>1) { 
			tekst = tekst + 'e ' + elmE.value + ' jaar'; 
			} else {
			tekst = 'Jaarlijks';
			}
		}
	if(elmD.value!='') { tekst = tekst + ', tot ' + elmD.value; }
	toonDiv('patroontekstueel');
	updateInhoud('patroontekstueel',tekst);
}
function toonPatroonBewerken(ptr) {
	// lijst updaten en vervolgens de juiste items tonen
	lijst = geefElement('patroon');
	lijst.selectedIndex = ptr;
	toonDiv('bewerkterugkeerpatroon');
	updatePatroonTekstueel();
	verbergDiv('vraag');
}
function verbergPatroonBewerken() {
	verbergDiv('bewerkterugkeerpatroon');
	toonDiv('vraag');
	// zet terugkeerpatroon op 0 (nee)
	lijst = geefElement('patroon');
	lijst.selectedIndex = 0;
}
function toggleSoortlijst() {
	cb = geefElement('allesoorten');
	if(cb.checked) {
		verbergDiv('soortenlijst');
	} else {
		toonDiv('soortenlijst');
	}
}
function bevestigVerwijderen(terugnaar,tsd,aid) {
	var URL = 'index.php?c=verwijderafspraak&aid=' + aid + '&terug=' + terugnaar + '&ts=' + tsd;
	terugkerend = geefElement('patroon');
	if(terugkerend.selectedIndex==0) {
		wat = 'dit blok';
		URL = URL + '&wat=blok';
	} else {
		wat = 'deze reeks';
		rid = geefElement('reeksid');
		URL = URL + '&wat=reeks&rid='+ rid.value;
	}
	if(window.confirm('Weet u zeker dat u ' + wat +  ' wilt verwijderen?')) {
		document.location = URL;
	} else {
		return false;
	}
}
// deze scripts komen oorspronkelijk uit de sjabloon
// en werden inline geladen, nu doen we het in een externe JS:
 function maakLeesbaar(uur,minuut) {
	  if(uur.length==1) { uur = "0" + uur; }
	  if(minuut.length==1) { minuut = "0" + minuut; }
	  tijd = uur + ":" + minuut;
	  return tijd;
  }
  function checkVrijBezet(form) {
	  // fout array
  	fouten = new Array();
  	// als het de hele dag is, dan skippen we de tijden/periode check
  	if(!form.heledag.checked) {
	  	// tijden checken
	  	// 1. mogen niet even groot zijn
	  	startuur = new Number(form.startuur.value);
	  	startminuut = new Number(form.startminuut.value);
	  	einduur = new Number(form.einduur.value);
	  	eindminuut = new Number(form.eindminuut.value);
	  	starttijd = new Date();
	  	starttijd.setHours(startuur);
	  	starttijd.setMinutes(startminuut);
	  	eindtijd = new Date();
	  	eindtijd.setHours(einduur);
	  	eindtijd.setMinutes(eindminuut);
	  	var stt = starttijd.getTime();
	  	var ett = eindtijd.getTime();
	  	if(stt===ett) { fouten.push("De start- en eindtijd mogen niet gelijk zijn."); }
	  	// 2. starttijd mag niet later zijn dan eindtijd: nog te doen
	  	if(eindtijd<starttijd) {
	  		fouten.push("De eindtijd kan niet eerder zijn dan de starttijd.");
	  	}
	  	// 3. periode mag niet eerder/later liggen dan eerdere/latere afspraken
	  	var max = form.max.value;
	  	maxlimiet = max.split("|");
	  	var min = form.min.value;
	  	minlimiet = min.split("|");
	  	minleesbaar = maakLeesbaar(minlimiet[0],minlimiet[1]);
	  	maxleesbaar = maakLeesbaar(maxlimiet[0],maxlimiet[1]);
	  	if(startuur==minlimiet[0]&&startminuut<minlimiet[1]) { 
	  		if(minlimiet[2]=="1") {
	  			fouten.push("De starttijd valt buiten het bereik van de agenda (van " + minleesbaar + " tot " + maxleesbaar + "). Pas dit s.v.p. aan.");
	  		} else {
		  		fouten.push("De starttijd overlapt met een andere tijd in uw agenda (" + minleesbaar + "). Pas dit s.v.p. aan.");
		  		}
	  		}
	  	if(einduur==maxlimiet[0]&&eindminuut>maxlimiet[1]) { 
	  		if(maxlimiet[2]=="1") {
	  			fouten.push("De eindtijd valt buiten het bereik van de agenda (van " + minleesbaar + " tot " + maxleesbaar + "). Pas dit s.v.p. aan.");
	  		} else {
		  		fouten.push("De eindtijd overlapt met een andere tijd in uw agenda (" + maxleesbaar + "). Pas dit s.v.p. aan.");
		  		}
	  		}
  	}
  	// nu terugkeerpatroon checken:
  	if(form.terugkeerpatroon.selectedIndex!=0) {
  		// valideren invoer terugkeerpatroon
  		// eindigt op datum altijd invullen:
  		var einddat = form.einddatumterugkeerpatroon;
  		if(einddat.value=="") { fouten.push("U moet een einddatum van het terugkeerpatroon invoeren."); }
  		// bij weekpatroon moet er minimaal 1 dag gekozen zijn:
  		if(form.terugkeerpatroon.selectedIndex==2) { 
  			if(!form.op_ma.checked&&!form.op_di.checked&&!form.op_wo.checked&&!form.op_do.checked&&!form.op_vr.checked) {
  				fouten.push("U moet minimaal 1 dag van de week kiezen waarop u wilt inplannen.");
  			}
  		}
  	}
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  		}
  }
  function checkAfspraakSoort(form) {
  	// fout array
  	fouten = new Array();
  	if(form.naam.value=="") { fouten.push("U moet een naam voor het soort afspraak invoeren."); }
  	if(form.tijdsindicatie.value=="") { fouten.push("U moet een tijdsindicatie voor de afspraak invoeren."); }
  	if(!isValideNummer(form.tijdsindicatie.value)) { fouten.push("U moet een geldige tijd (in minuten, van 1 tot 60) invoeren."); }
  	var maxomschrijving = 512;
  	if(form.beschrijving.value.length>maxomschrijving) { fouten.push("U heeft meer dan " + maxomschrijving + " tekens ingevoerd als omschrijving. Pas dit s.v.p. aan."); }
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  		}
  }
  function checkGebruiker(form) {
  	// fout array
  	fouten = new Array();
  	// verplichte velden:
  	if(form.id.value=="") {
  	// nieuwe
  		if(form.gebruikersnaam.value=="") { 
  			fouten.push("U moet een gebruikersnaam invoeren.");
  			} else {
	  			foutegebruikersnaam = isValideGebruikersnaam(form.gebruikersnaam.value);
	  			if(foutegebruikersnaam!="") {
	  				fouten.push(foutegebruikersnaam);
	  			}
  			}
  		if(form.wachtwoord.value=="") {
  			fouten.push("U moet een wachtwoord invoeren.");
  			} else {
	  			foutwachtwoord = isValideWachtwoord(form.wachtwoord.value);
	  			if(foutwachtwoord!="") {
	  				fouten.push(foutwachtwoord);
	  			}
  			}
  	}
  	// velden die altijd verplicht zijn
  	if(form.soort.value=="") {
  		fouten.push("U moet het soort gebruiker kiezen.");
  		}
  	if(form.achternaam.value=="") { 
  		fouten.push("U moet een achternaam invoeren."); 
  		}
  	if(form.voorletters.value=="") { 
  		fouten.push("U moet een voorletter invoeren."); 
  		}
  	if(!isHuisnummer(form.huisnummer.value)&&form.huisnummer.value!="") { fouten.push("Voer a.u.b. een geldig huisnummer in."); }
  	if(!isPostcode(form.postcode.value)&&form.postcode.value!="") { fouten.push("Voer a.u.b. een geldige postcode in."); }
  	if(!isTelefoonnummer(form.telefoon.value)&&form.telefoon.value!="") { fouten.push("Voer a.u.b. een geldig telefoonnummer in."); }
  	if(!isTelefoonnummer(form.telefoonmobiel.value)&&form.telefoonmobiel.value!="") { fouten.push("Voer a.u.b. een geldig mobiel telefoonnummer in."); }
  	if(!isGeldigEmailAdres(form.email.value)) { fouten.push("U moet een geldig e-mail adres invoeren."); }
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  	}
  }
  function checkWachtwoordWijziging(form) {
  	// fout array
  	fouten = new Array();
  	// verplicht
  	if(form.ww1.value==""||form.ww2.value=="") {
  		fouten.push("Voer a.u.b. beide wachtwoord velden in.");
  	} else {
  		if(form.ww1.value!=form.ww2.value) {
  		fouten.push("Voer a.u.b. in beide wachtwoord velden hetzelfde wachtwoord in.");
  		} else {
  			foutwachtwoord = isValideWachtwoord(form.ww1.value);
  			if(foutwachtwoord!="") {
  				fouten.push(foutwachtwoord);
  			}
  		}
  	}
	  if(fouten.length>0) {
	  		fouttekst = fouten.join("\n");
	  		alert(fouttekst);
	  		return false;
	  	} else {
	  		return true;
	  }
  }
  function checkPatient(form) {
  	// fout array
  	fouten = new Array();
  	// verplicht in te vullen:
  	// if(form.gebruikersnaam.value=="") { fouten.push("U moet een gebruikersnaam invoeren."); }
  	if(form.gebruikersnaam.value!="") {
  		foutegebruikersnaam = isValideGebruikersnaam(form.gebruikersnaam.value);
  		if(foutegebruikersnaam!="") {
  			fouten.push(foutegebruikersnaam);
  			}
  		}
  	if(form.wachtwoord.value!="") { 
  		foutwachtwoord = isValideWachtwoord(form.wachtwoord.value);
  		if(foutwachtwoord!="") {
  			fouten.push(foutwachtwoord);
  			}
  		}
  	if(form.achternaam.value=="") { 
  		fouten.push("U moet een achternaam invoeren."); 
  		}
  	if(form.voorletters.value=="") { 
  		fouten.push("U moet een voorletter invoeren."); 
  		}
  	if(!isHuisnummer(form.huisnummer.value)&&form.huisnummer.value!="") { fouten.push("Voer a.u.b. een geldig huisnummer in."); }
  	if(!isPostcode(form.postcode.value)&&form.postcode.value!="") { fouten.push("Voer a.u.b. een geldige postcode in."); }
  	if(!isTelefoonnummer(form.telefoon.value)&&form.telefoon.value!="") { fouten.push("Voer a.u.b. een geldig telefoonnummer in."); }
  	if(!isTelefoonnummer(form.telefoonmobiel.value)&&form.telefoonmobiel.value!="") { fouten.push("Voer a.u.b. een geldig mobiel telefoonnummer in."); }
  	if(!isGeldigEmailAdres(form.email.value)) { fouten.push("U moet een geldig e-mail adres invoeren."); }
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  		}
  }
  function checkInstellingen(form) {
  	// fout array
  	fouten = new Array();
  	agendastart = new Number(form.agendastart.value);
  	agendaeind = new Number(form.agendaeind.value);
  	if(!(agendastart>agendaeind)&&!(agendastart<agendaeind)) { fouten.push("De begin- en eindtijd van de agenda kunnen niet gelijk zijn."); }
  	if(agendastart>agendaeind) { fouten.push("De begintijd van de agenda kan niet groter zijn dan de eindtijd."); }
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  		}
  }
  function checkWeigeren(form) {
  	// fout array
  	fouten = new Array();
  	var maxweigerreden = 1024;
  	if(form.weigerreden.value.length==0) { fouten.push("U moet een reden opgeven voor het annuleren van deze afspraak.");  }
  	if(form.weigerreden.value.length>maxweigerreden) { fouten.push("U heeft meer dan " + maxweigerreden + " tekens ingevoerd als reden. Pas dit s.v.p. aan.");  }
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  		}
  }
  function checkVergetenWachtwoord(form) {
  	// fout array
  	fouten = new Array();
  	if(form.gebruikersnaam.value=="") {
	  	fouten.push("U moet een gebruikersnaam invullen.");
	  	}
	  if(form.email.value=="") {
	  	fouten.push("U moet een e-mail adres invullen.");
	  	} else {
	  		if(!isGeldigEmailAdres(form.email.value)) { fouten.push("U moet een geldig e-mail adres invoeren."); }
	  	}  
	  if(fouten.length>0) {
	  		fouttekst = fouten.join("\n");
	  		alert(fouttekst);
	  		return false;
	  	} else {
	  		return true;
	  		}
  }
  function checkAfspraakAanvraag(form) {
  	// fout array
  	fouten = new Array();
  	// afspraaksoort radio waarde bepalen
  	var afspraaksoort = "";
  	for(i=0;i<form.afspraaksoort.length;i++) {
  	if(form.afspraaksoort[i].checked) {
  		afspraaksoort = form.afspraaksoort[i].value;
  	}
  	}
  	// 1. check verplichte velden
  	if(form.startuur.value==""||form.startminuut.value=="") { fouten.push("U moet een starttijd kiezen."); }
  	if(afspraaksoort=="") { fouten.push("U moet het soort afspraak kiezen."); }
  	if(form.reden.value=="") { fouten.push("U moet een reden voor uw afspraak invoeren."); }
  	var maxopmerkingen=1024;
  	if(form.opmerkingen.value.length>maxopmerkingen) { fouten.push("U heeft meer dan " + maxopmerkingen + " tekens in het opmerkingenveld ingevoerd. Pas dit s.v.p. aan."); }
  	// 2. checken of starttijd van deze afspraak + afspraaktijd (afh van veldsoort) niet over eindtijd van dit blok heengaat
  	// - bepalen maximale eindtijd:
  	et = form.et.value.split("|");
  	m_eindtijd = new Date();
  	m_eindtijd.setHours(et[0]);
  	m_eindtijd.setMinutes(et[1]);
  	// - bepalen minimale starttijd
  	st = form.st.value.split("|");
  	m_starttijd = new Date();
  	m_starttijd.setHours(st[0]);
  	m_starttijd.setMinutes(st[1]);
  	// bepalen feitelijk aangevraagde tijd:
  	startminuut = new Number(form.startminuut.value);
  	if(afspraaksoort!="") {
  		var as = afspraaksoort.split("|");
  		afspraakduur = new Number(as[1]);
  	} else {
			afspraakduur = new Number(0);
  		}
  	eindtijd = new Number();
  	eindtijd = startminuut + afspraakduur;
  	e_eindtijd = new Date();
  	e_eindtijd.setHours(form.startuur.value);
  	e_eindtijd.setMinutes(eindtijd);
  	e_starttijd = new Date();
  	e_starttijd.setHours(form.startuur.value);
  	e_starttijd.setMinutes(form.startminuut.value);
  	// alert("Gekozen eindtijd: " + e_eindtijd + ",\nMaximale eindtijd: " + m_eindtijd);
		if(e_eindtijd>m_eindtijd) { 
			tijdLeesbaar = maakLeesbaar(et[0],et[1]);
			fouten.push("Uw afspraak aanvraag duurt langer dan de beschikbare tijd (tot " + tijdLeesbaar + "). Pas dit s.v.p. aan.");
			}
		if(e_starttijd<m_starttijd) {
			tijdLeesbaar = maakLeesbaar(st[0],st[1]);
			fouten.push("Uw afspraak aanvraag begint eerder dan de beschikbare tijd (vanaf " + tijdLeesbaar + "). Pas dit s.v.p. aan.");
		}
  	if(fouten.length>0) {
  		fouttekst = fouten.join("\n");
  		alert(fouttekst);
  		return false;
  	} else {
  		return true;
  		}
  }
  function pasSorteerFilterToe(formulier) {
  	// toepassen filter en/of sortering
  	if(formulier.sorteer.value==""&&formulier.filterstatus.value=="") {
  		window.location = "index.php?c=start";
  		} else {
  		var loc = "index.php?c=start";
  		if(formulier.sorteer.value!="") {
  			loc = loc + "&sort=" + formulier.sorteer.value;
  		}
  		if(formulier.filterstatus.value!="") {
  			loc = loc + "&filter=" + formulier.filterstatus.value;
  		}
  		window.location = loc;
  		}
  }
  function OpenPrint(url) {
	  window.open(url,"","width=650,height=500,scrollbars=yes,status=yes,menubar=no,resizable=no");  
  }
  function isValideNummer(nummer) {
	if (nummer==""){return false;}
	if (nummer<1||nummer>60) {return false;}
	var myRegExp = new RegExp("^[/+|/-]?[0-9]*[/.]?[0-9]*$");
	return myRegExp.test(nummer);
  }
// stop hiding -->

