var url = _hostUrl + _appUrl + '/inschrijving.p'; // procedure waar requests naar toe gestuurd worden.

var tk; // taalcode
var intArbBed; // statuut (1 = arbeiders, 2 = bedienden)
var strPad; // absoluut pad

var intAantalStappen = 6; //belangrijk voor divStap1...n en divUitleg1...n waarbij n gelijk is aan intAantalStappen
var intStap = 0; //huidige stap.

var intDnr = 0;
var blnTest = false;

var strMapImages = 'images/layout/'; // imagesmap
var strMapRollover = 'rollOver/'; // rollovermap
var strImgPrevious = 'btnPrevious.gif';
var strImgNext = 'btnNext.gif';
var strImgAdd = 'btnAddToList.gif';	
var strImgDel = 'btnDeleteSelectedItems.jpg';
var strImgConfirm = 'btnConfirm.gif';
var strImgClear = 'btnCancel.gif';
var strImgPrint = 'btnPrintVacature.gif';

var strStandaardLand = "B";
var strDateError = "???"; // Als een datum foutief is vullen we dit in.
var intListMaxHeight = 100; // Maximum hoogte voor een div "postlijst"

var strSleutel;

var txtWoonSearch = "";
var arrTempNode = new Array(); // Dit is om tijdelijk een node op te slaan

var blnCookiesEnabled = false;
var intExpireDate = 1; //Aantal dagen dat cookies blijven bestaan

// ARRAYS
var arrSelected = new Array(); // array die bijhoudt welke postcodes geselecteerd (highlight) zijn. Belangrijk voor de pijltjesnavigatie

// arrCombos bevat de id's (zonder prefix "cmb") die geladen worden via de functie getCombo(strCombo)
var arrCombos = new Array("WoonLand", "Rijbewijs", "OplNiveau", "OplStatus", "OplType", "WerkType", 
							"WerkStatuut", "WerkUZK", "BS", "Taal", "Spreken", "Schrijven", "Programma", 
							"Kennis");

// arrays met velden die gevalideerd dienen te worden.
var arrValidateIntro = new Array("txtVoornaamStap0", "txtFamilienaamStap0", 
							"txtEmailStap0", "txtTelStap0");

var arrValidateAlgemeen = new Array("txtGebDat", "txtVoornaam", "txtFamilienaam", "txtAdres", 
							"txtHuisnr", "txtEmail", "txtTel", "txtGebPlaats", "txtWoonPlaats", 
							"cmbWoonLand", "cmbGebLand", "radGeslacht", "cmbBS");

var arrValidateOpleiding = new Array("cmbOplNiveau", "cmbOplType", "txtOplStudie", "txtOplSchool", 
							"cmbOplStatus", "txtOplJaar");

var arrValidateWerkervaring = new Array("txtWerkgever", "txtWerkFunctie", "txtWerkOmsch", "txtWerkVan", 
							"txtWerkTot", "cmbWerkType", "cmbWerkStatuut");
							
var arrValidateTaal = new Array("cmbTaal", "cmbSpreken", "cmbSchrijven");

var arrValidateProgramma = new Array("cmbProgramma", "cmbKennis");

var arrValidateFunctie = new Array("cmbFunctie1");

var arrValidateRijbewijs = new Array("cmbRijbewijs");

var arrMaanden = new Array("Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", 
							"Augustus", "September", "Oktober", "November", "December");
		
function init(){ // begin
	assignParameters(); // Taal en statuut instellen
	checkBrowser(); // opzoeken welke browser de user gebruikt
	cookiesEnabled();
	
	// testuser
	if (urlvars.user == "test"){
		blnTest = true;
	}
	
	preloadImages(); //rollovers van images arrangeren en voorladen
	checkUser();
	addFuncties(); // functionaliteit toevoegen aan knoppen, images,...
	getCombos();
	
	// Zijn er cookies vanuit een sollicitatie?
	getCookies(0);
	
	// De veldjes "referentie" willen we zien
	$("chkReferentie").checked = true;
	referentieClicked();
}

function getCookies(intStap){
	try{		
		if (blnCookiesEnabled){
			switch(intStap){
				case 0: // Basisgegevens vóór het effectieve inschrijven
					if (readCookie("vnaam") != null){
						$("txtVoornaamStap0").value = readCookie("vnaam");
					}					
					
					if (readCookie("fnaam") != null){
						$("txtFamilienaamStap0").value = readCookie("fnaam");
					}
					
					if (readCookie("tel") != null){
						$("txtTelStap0").value = readCookie("tel");
					}
					else {
						if (readCookie("gsm") != null){
							$("txtTelStap0").value = readCookie("gsm");
						}
					}
					
					if (readCookie("email") != null){
						$("txtEmailStap0").value = readCookie("email");
					}					
				break;
				case 5: // Persoonlijke gegevens
					// Naam, vnaam, tel en email zijn al ingevuld via de DB
					if (readCookie("straat") != null){
						$("txtAdres").value = readCookie("straat");
					}
					
					if (readCookie("huisnr") != null){
						$("txtHuisnr").value = readCookie("huisnr");
					}
					
					if (readCookie("busnr") != null){
						$("txtBusnr").value = readCookie("busnr");
					}
					
					if (readCookie("gsm") != null){
						$("txtGSM").value = readCookie("gsm");
					}
					
					if (readCookie("gebdat") != null){
						$("txtGebDat").value = readCookie("gebdat");
					}
					
					if (readCookie("post") != null){
						$("txtHiddenWoonPost").value = readCookie("post");
					}
					
					if (readCookie("lnr") != null){
						$("txtHiddenWoonLnr").value = readCookie("lnr");
					}
					
					if (readCookie("lok") != null){
						$("txtHiddenWoonPlaats").value = readCookie("lok");
					}
					
					if (readCookie("land") != null){
						$("cmbWoonLand").value = readCookie("land");
					}
					
					// Als postcode en locatie ingevuld zijn, dan vullen we het tekstveld ook in
					if ($("txtHiddenWoonPost").value != "" && $("txtHiddenWoonPlaats").value != ""){
						$("txtWoonPlaats").value = $("txtHiddenWoonPost").value + " " + $("txtHiddenWoonPlaats").value;
					}
				break;
			}
		}
	}catch(e){}
}

function setCookies(intStap){		
	try{		
		if (blnCookiesEnabled){
			switch(intStap){
				case 0:
					createCookie("vnaam", 	$("txtVoornaamStap0").value, 	intExpireDate);
					createCookie("fnaam", 	$("txtFamilienaamStap0").value, intExpireDate);
					createCookie("tel", 	$("txtTelStap0").value, 		intExpireDate);
					createCookie("email", 	$("txtEmailStap0").value, 		intExpireDate);
				break;
				case 5:
					// Deze gegevens kunnen gewijzigd zijn sedert stap 0
					createCookie("vnaam", 	$("txtVoornaam").value, 		intExpireDate);
					createCookie("fnaam", 	$("txtFamilienaam").value, 		intExpireDate);
					createCookie("tel", 	$("txtTel").value, 				intExpireDate);
					createCookie("email", 	$("txtEmail").value, 			intExpireDate);
					
					// Dit zijn nieuwe gegevens
					createCookie("straat", 	$("txtAdres").value, 			intExpireDate);
					createCookie("huisnr", 	$("txtHuisnr").value, 			intExpireDate);
					createCookie("busnr", 	$("txtBusnr").value, 			intExpireDate);
					createCookie("gsm", 	$("txtGSM").value, 				intExpireDate);
					createCookie("gebdat", 	$("txtGebDat").value, 			intExpireDate);
					createCookie("post", 	$("txtHiddenWoonPost").value, 	intExpireDate);
					createCookie("lnr", 	$("txtHiddenWoonLnr").value, 	intExpireDate);
					createCookie("lok", 	$("txtHiddenWoonPlaats").value, intExpireDate);
					createCookie("land", 	$("cmbWoonLand").value, 		intExpireDate);
				break;
			}
			
			// Cookie wegschrijven met de stap waar we geëindigd zijn
			createCookie("stap", intStap, intExpireDate);
		}
	}catch(e){}
}

function assignParameters(){
	try{
		tk = parseInt(trim(getInnerText($("hidTk"))), 10); // taalcode
		
		if (isNaN(tk)){
			tk = 1;
		}
	}catch(e){}
	
	try{
		intArbBed = parseInt(trim(getInnerText($("hidStatuut"))), 10); // 1 = arbeiders, 2 = bedienden

		if (isNaN(intArbBed)){
			intArbBed = 1;
		}
	}catch(e){}	
	
	try{
		strPad = $("hidDomein").getAttribute("src"); // vb "http://test.accent.jobs/website/BE/NL/"

		if (strPad == ""){
			strPad = "http://test.accent.jobs/website/BE/NL/";
		}
	}catch(e){}	
}

function checkUser(){
	if (readCookie("kanbuf") != null){
		strSleutel = readCookie("kanbuf");
		
		getInschrijving();		
		
		if (readCookie("stap") != null){			
			gaNaarStap(1, parseInt(readCookie("stap"), 10), false);
		}
	}
}

function checkBrowser(){ // bepaalt of je IE gebruikt of een andere browser
	if (window.ActiveXObject){ // IE
	    intBrowser = 1;
		adjustCss();
	}
    else if (document.implementation && document.implementation.createDocument){ // Chrome, Firefox
        intBrowser = 2;
    }
    else{
        intBrowser = 0;
		alert("Uw browser wordt helaas niet ondersteund. Gelieve Internet Explorer, Mozilla Firefox, Safari of Google Chrome te downloaden.");
    }
	
	if (intBrowser != 0){
		removeBorders();
	}
}

function cookiesEnabled(){
	try{
		blnCookiesEnabled = (navigator.cookieEnabled)? true : false;
	}catch(e){}

	//if not IE4+ nor NS6+
	if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled){
		document.cookie = "testcookie";
		blnCookiesEnabled = (document.cookie.indexOf("testcookie")!= -1)? true : false;
	}
}

function adjustCss(){// pas de CSS aan voor Internet Explorererer
	if (intBrowser == 1){
		try{
			$("divWoonLijst").addClassName("postlistIE");
			$("divGebLijst").addClassName("postlistIE");
		}catch(e){}
	}
}

function getInschrijving(){ //reeds opgeslagen gegevens van de persoon ophalen
	getItems("Algemeen");
	getItems("Functie");
	getItems("Opleiding");
	getItems("Werkervaring");
	getItems("Taal");
	getItems("Programma");
	getItems("Rijbewijs");
}

function addFuncties(){	// functionaliteit toevoegen aan objecten
	try{
		// Stappen clickable maken
		for (var i=1;i <= intAantalStappen;i++){
			$("lblUitleg" + i).addClassName("clickable");
			$("lblUitleg" + i).stap = i;
			$("lblUitleg" + i).onclick = function(){gaNaarStap(0, this.stap, true);};
		}
	
		// We vangen de keypress op als we een postcode aan het typen zijn
		$("txtWoonPlaats").soort 		= "Woon";
		$("txtGebPlaats").soort 		= "Geb";
		$("txtWoonPlaats").onkeydown 	= showDown;
		$("txtGebPlaats").onkeydown 	= showDown;
		
		// nog geen postcode geselecteerd
		arrSelected["Woon"] 			= "leeg";
		arrSelected["Geb"] 				= "leeg";

		// combobox triggers
		$("cmbFunctie1").onkeyup 		= function(){getFuncties(2);};
		$("cmbFunctie1").onchange 		= function(){getFuncties(2);};
		$("cmbOplNiveau").onkeyup 		= function(){getCombo("OplType");};
		$("cmbOplNiveau").onchange 		= function(){getCombo("OplType");};
		$("cmbWoonLand").onkeyup		= function(){assignLand("Woon");};
		$("cmbWoonLand").onchange		= function(){emptyHiddenFields("Woon", true);};
		$("cmbGebLand").onkeyup			= function(){assignLand("Geb");};
		$("cmbGebLand").onchange		= function(){emptyHiddenFields("Geb", true);};
		$("cmbWerkStatuut").onkeyup		= function(){werkStatuutChanged();};
		$("cmbWerkStatuut").onchange	= function(){werkStatuutChanged();};
		
		// referentie toevoegen of verbergen
		$("chkReferentie").onclick		= function(){referentieClicked();};
		
		// knoppen om toe te voegen en te wissen
		makeAddDeleteFunctions("Opleiding");
		makeAddDeleteFunctions("Taal");
		makeAddDeleteFunctions("Programma");
		makeAddDeleteFunctions("Rijbewijs");
		makeAddDeleteFunctions("Werkervaring");
		makeAddDeleteFunctions("Functie");
		
		// knoppen om de formulieren te wissen;
		$("imgClearOpleiding").onclick 		= function(){clearForm("Opleiding")};
		$("imgClearWerkervaring").onclick 	= function(){clearForm("Werkervaring")};
		
		// Printknop
		$("imgPrint").onclick = function(){printBevestiging();};
		
		for (var i=0;i<arrValidateIntro.length;i++){
			$(arrValidateIntro[i]).onblur = function(){validate(this.id);};
		}
		
		// Inputcontrole automatiseren als je uit een veld gaat
		for (var i=0;i<arrValidateAlgemeen.length;i++){
			if ($(arrValidateAlgemeen[i]) != null && $(arrValidateAlgemeen[i]) != undefined){
				$(arrValidateAlgemeen[i]).onblur = function(){validate(this.id);};
			}
			else {
				var arrTemp = document.getElementsByName(arrValidateAlgemeen[i]);
			
				for (var j=0;j<arrTemp.length;j++){
					arrTemp[j].onblur	= function(){validate(this.id);};
				}
			}
		}
		
		for (var i=0;i<arrValidateWerkervaring.length;i++){
			$(arrValidateWerkervaring[i]).onblur = function(){validate(this.id);};
		}
		
		for (var i=0;i<arrValidateOpleiding.length;i++){
			$(arrValidateOpleiding[i]).onblur = function(){validate(this.id);};
		}
		
		// Deze controls zitten niet in de array omdat ze niet altijd zichtbaar zijn
		$("cmbWerkUZK").onblur			= function(){validate(this.id);};
		$("txtRefPersoon").onblur		= function(){validate(this.id);};
		$("txtRefFunctie").onblur		= function(){validate(this.id);};
		
		// datums correct invullen en verplicht in te vullen
		$("txtGebDat").onblur			= function(){this.value = controlDate(this.value, false);validate(this.id);};
		$("txtWerkVan").onblur			= function(){this.value = controlDate(this.value, false);validate(this.id);};
		$("txtWerkTot").onblur			= function(){this.value = controlDate(this.value, true);validate(this.id);};
		
		// GSM en Tel zijn gekoppeld. Een van de twee dient ingevuld te zijn
		$("txtGSM").onblur				= function(){validate("txtTel");};
		
		// Inputmask enkel cijfers
		$("txtOplJaar").onkeypress		= maskOnlyDigits;
		
		// Inputmask telefoonnummer
		$("txtTel").onkeypress			= maskPhone;
		$("txtGSM").onkeypress			= maskPhone;
		
		// vorige en volgende
		$("spanVorige").onclick 		= function(){gaNaarStap(-1, 1, true);};
		$("spanVolgende").onclick 		= function(){gaNaarStap(1, 1, true);};
		$("spanBevestigen").onclick		= function(){bevestigen();};		
	}catch(e){}	
}

function makeAddDeleteFunctions(strType){
	$("imgAdd" + strType).onclick 	= function(){addItem(strType);};
	$("imgDel" + strType).onclick 	= function(){delItem(strType);};
}

function preloadImages(){ //images en rollovers klaarzetten
	// laadt de rollovers al op zodat je geen rood kruisje ziet bij mouseover
	MM_preloadImages(	strPad + strMapImages + strMapRollover + strImgPrevious, 
						strPad + strMapImages + strMapRollover + strImgNext, 
						strPad + strMapImages + strMapRollover + strImgAdd, 
						strPad + strMapImages + strMapRollover + strImgDel, 
						strPad + strMapImages + strMapRollover + strImgConfirm,
						strPad + strMapImages + strMapRollover + strImgClear
	);

	// vult de image in, wordt gebruikt voor rollover én standaardimage (src)
	$("imgVorige").image 			= strImgPrevious;
	$("imgVolgende").image 			= strImgNext;
	$("imgBevestigen").image		= strImgConfirm;					
	
	$("imgAddTaal").image 			= strImgAdd;
	$("imgAddProgramma").image 		= strImgAdd;
	$("imgAddWerkervaring").image 	= strImgAdd;
	$("imgAddOpleiding").image 		= strImgAdd;
	$("imgAddFunctie").image 		= strImgAdd;
	$("imgAddRijbewijs").image 		= strImgAdd;	
	
	$("imgDelTaal").image 			= strImgDel;
	$("imgDelProgramma").image 		= strImgDel;
	$("imgDelWerkervaring").image 	= strImgDel;
	$("imgDelOpleiding").image	 	= strImgDel;
	$("imgDelFunctie").image 		= strImgDel;
	$("imgDelRijbewijs").image 		= strImgDel;
	
	$("imgClearWerkervaring").image	= strImgClear;
	$("imgClearOpleiding").image	= strImgClear;
	
	$("imgPrint").image				= strImgPrint;
	
	arrImages = document.getElementsByTagName("img");
	
	for (var i=0;i<arrImages.length;i++){
		if (arrImages[i].image != undefined){
			//afbeelding
			arrImages[i].src = strPad + strMapImages + arrImages[i].image;
						
			//rollover image
			arrImages[i].onmouseover = function(){
				MM_swapImage(this.id,'',strPad + strMapImages + strMapRollover + this.image,1);
			};
			
			arrImages[i].onmouseout = function(){MM_swapImgRestore();};
			
			// cursor = handje
			arrImages[i].addClassName("clickable");
		}
	}
}

function getCombos(){ // Haal de combo's op, zie array arrCombos bovenaan
	getFuncties(1);
	
	for (var i=0; i<arrCombos.length; i++){
		getCombo(arrCombos[i]);
	}
}

function getCombo(strCombo){ // haal een combobox op via een parameter. vb strCombo = WoonLand als de combo.id = cmbWoonLand
	var pars = 'actie=getCombo' + 
				'&tk=' + tk + 
				'&arbbed=' + intArbBed + 
				'&combo=' + strCombo;
	
	if (strCombo == "OplType"){
		pars += '&parent=' + $F("cmbOplNiveau");
	}	
	
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: pars,
			onSuccess: setCombo
		}
	);
}

function setCombo(req){ // vul de combo op op basis van een XML
	var xml = req.responseXML;
	
	if (xml !== false){
		var arrCombos = xml.getElementsByTagName("combo");
		var arrNodes = xml.getElementsByTagName("item");
		
		for (var i=0;i<arrCombos.length;i++){
			var strCombo = arrCombos[i].childNodes[0].nodeValue;
			
			clearCombo("cmb" + strCombo);			
			
			try {
				for (var j = 0; j < arrNodes.length; j++) {
					var intWaarde = (arrNodes[j].getElementsByTagName("id")[0].childNodes[0] != undefined ? arrNodes[j].getElementsByTagName("id")[0].childNodes[0].nodeValue : " ") ;
					var strTekst = (arrNodes[j].getElementsByTagName("naam")[0].childNodes[0] != undefined ? arrNodes[j].getElementsByTagName("naam")[0].childNodes[0].nodeValue : " ") ;
							
					addOption($("cmb" + strCombo), strTekst, intWaarde);
				}
			}
			catch (e){}
			
			switch(strCombo){
				case "OplNiveau": // Niveaus zijn opgehaald, we halen type op 
					getCombo("OplType");
				break;
				case "Functie1": // Sectoren zijn opgehaald, we halen functies op					
					getFuncties(2);
				break;
				case "Natio": // Is de laatste van de 3 landencombo's
					assignStandaardLand();
				break;
				case "WerkStatuut": // Als het uitzendarbeid is, dan tonen we de bijhorende combobox
					werkStatuutChanged();
				break;
				case "Spreken": case "Schrijven":
					$("cmb" + strCombo).value = 4;
				break;
				case "Taal": 
					$("cmb" + strCombo).value = tk;
				break;
			}			
		}
	}	
}

function assignStandaardLand(){ // wijs het standaardland toe aan enkele comboboxen
	try{
		$("cmbWoonLand").value 	= strStandaardLand;
		$("cmbGebLand").value 	= strStandaardLand;
		$("cmbNatio").value 	= strStandaardLand;
		
		// onkeyup event van de comboboxen in Firefox en Chrome opvangen.
		$("cmbWoonLand").land 	= strStandaardLand;
		$("cmbGebLand").land 	= strStandaardLand;
	}catch(e){}
}

function getFuncties(intNiveau){ // haalt de combo met functies op
	var intParent = 0;

	intNiveau = parseInt(intNiveau, 10);
	
	try{
		if (intNiveau > 1){		
			intParent = $F("cmbFunctie" + (intNiveau - 1));			
		}		
	}catch(e){intParent = 0;}
	
	if (intParent != null){
		var pars = 'actie=getFuncties' + 
					'&tk=' + tk + 					
					'&parent=' + intParent + 
					'&arbbed=' + intArbBed + 
					'&niveau=' + intNiveau;	
	
		var myAjax = new Ajax.Request(
			url,
			{
				method: 'post',
				postBody: pars,
				onSuccess: setCombo
			});
	}
}

function inputControleStap(intStapNr){	
	var blnOK = true;
	
	switch(intStapNr){
		case 0: //Intro
			blnOK = addItem("Intro");			
		break;
		case 5: // Algemeen
			blnOK = addItem("Algemeen");	
			//blnOK = true;			
		break;
	}	
	
	return blnOK;
}

function validate(strObject){ // valideer een object op basis van id
	var blnOK = true;
	var oObject = $(strObject);
	
	if (oObject == null){ // als we het niet vinden op basis van id dan is het allicht een radio object.
		oObject = document.getElementsByName(strObject)[0];
	}
	
	if (oObject != null){
		switch(strObject){
			case "txtGebDat": case "txtWerkVan":
				if (isEmpty(oObject) || oObject.value == strDateError){
					blnOK = false;
				}							
			break;
			case "txtWerkTot": // Dit mag leeg zijn als je er nog werkt
				if (oObject.value == strDateError){
					blnOK = false;
				}
			break;
			case "txtTel": // Telefoon of GSM dient ingevuld te zijn			
				if (isEmpty(oObject) && isEmpty($("txtGSM"))){
					blnOK = false;
					errorField($("txtGSM"), false);
				}
				else {
					errorField($("txtGSM"), true);
				}
			break;
			case "txtWoonPlaats":
				if (isEmpty($("txtHiddenWoonPost")) || isEmpty($("txtHiddenWoonLnr"))){
					blnOK = false;			
				}			
			break;
			case "txtGebPlaats":					
				if (isEmpty($("txtHiddenGebPost")) || isEmpty($("txtHiddenGebLnr"))){				
					blnOK = false;			
				}
			break;
			case "txtEmail": case "txtEmailStap0":
				if (isEmpty(oObject) || !isEmailAddress(oObject.value)){				
					blnOK = false;				
				}			
			break;		
			default: // als't leeg is			
				if (isEmpty(oObject)){
					blnOK = false;
				}
			break;
		}
		
		errorField(oObject, blnOK);
	}
	else {
		blnOK = false;
	}	
	
	return blnOK;
}

function errorField(oObject, blnValid){
	if (blnValid){
		oObject.removeClassName("invalid");
	}
	else {
		oObject.addClassName("invalid");		
	}
}

function gaNaarStap(intType, intStapNr, blnControle){ // ga naar een stap. intType: 0 = rechtstreeks, 1 = plus of min x aantal stappen.
	if (intStapNr <= intAantalStappen){ // Het is een gewone stap
		if ((blnControle == true && inputControleStap(intStap) == true) || blnControle == false){
			// We schrijven de cookies weg van de voorgaande stap.
			setCookies(intStap);
			
			// veranderen van stap
			if (intType == 0){ //rechtstreeks gaan naar deze stap
				intStap = intStapNr;
			}
			else{ // x aantal stappen vooruit of achteruit
				intStap += (intType * intStapNr);		
			}
			
			// controle of stap wel geldig is.
			if (intStap <= 0){
				intStap = 1;
			}
			else{
				if (intStap > intAantalStappen){
					intStap = intAantalStappen;
				}
			}
			
			// knoppen "vorige" en "volgende" tonen of verbergen indien nodig.
			if (intStap == 1){
				verbergen("spanVorige");
			}
			else{
				tonen("spanVorige")
			}
			
			if (intStap == intAantalStappen){
				verbergen("spanVolgende");
				tonen("spanBevestigen");
			}
			else{
				tonen("spanVolgende");
				verbergen("spanBevestigen");
			}
			
			// juiste stap tonen
			try{
				for (var i=0;i<=intAantalStappen;i++){
					verbergen("divStap" + i);
				}
			}catch(e){}

			try{
				tonen("divStap" + intStap);
			}catch(e){}
			
			// uitleg over stap tonen
			toonUitleg(intStap);
			
			if (intStap == intAantalStappen){
				 $("imgPrint").style.display = "";
			}
			else {
				$("imgPrint").style.display = "none";
			}
			
			getCookies(intStap);
		}
	}
	else { // Er is reeds bevestigd
		bevestigenGelukt();
	}
}

function toonUitleg(intStap){ // toon de div met info aan de linkerkant
	// uitleg over stap tonen	
	for (var i=1;i<=intAantalStappen;i++){
		verbergen("divUitleg" + i);
	}	
		
	tonen("divUitleg" + intStap);	
}

function getPostList(strType){ // haalt een lijst met postcodes en gemeentes op op basis van een zoekterm (postcode of gemeente)
	// leegmaken hidden fields	
	emptyHiddenFields(strType, false);	
	
	if (arrSelected[strType] == "leeg"){ // we mogen zoeken
		var strZoek = trim($F("txt" + strType + "Plaats")); // de spaties voor en achter de tekst hebben we niet nodig
		if (strZoek != "" && strZoek){ // is de zoekwaarde niet leeg en niet dezelfde als de vorige zoekopdracht, dan zoeken we de lijst
			var pars = 'actie=getPostlist' + 
					'&tk=' + tk + 
					'&zoek=' + strZoek + 
					'&land=' + $F("cmb" + strType + "Land") + 
					'&type=' + strType;
					
			var myAjax = new Ajax.Request(
				url,
				{
					method: 'post',
					postBody: pars,
					onSuccess: setPostList
				});
		}
		else{
			verbergen("div" + strType + "Lijst");
		}
	}
}

function setPostList(req){
	var xml = req.responseXML;
	
	if (xml !== false){
		var strType = xml.getElementsByTagName("type")[0].childNodes[0].nodeValue;
		var arrNodes = xml.getElementsByTagName("item");
		
		$("ul" + strType + "Lijst").innerHTML = "";
		
		if (arrNodes.length > 0){
			for (var i=0;i<arrNodes.length;i++){
				var strPost 	= arrNodes[i].getElementsByTagName("post")[0].childNodes[0].nodeValue;
				var strLocatie 	= arrNodes[i].getElementsByTagName("lok")[0].childNodes[0].nodeValue;
				var intLnr 		= arrNodes[i].getElementsByTagName("lnr")[0].childNodes[0].nodeValue;
								
				addPostItem(strType, strPost, strLocatie, intLnr, i);
			}
			
			checkHeight(strType);
			
			tonen("div" + strType + "Lijst");
		}
		else{
			verbergen("div" + strType + "Lijst");
		}
	}
}

function addPostItem(strType, strPost, strLocatie, intLnr, intVolgnr){
	var oLi 		= document.createElement("LI");
	oLi.nr			= intVolgnr;
	oLi.id			= "li" + strType + intVolgnr;
	oLi.post 		= strPost;
	oLi.lok			= strLocatie;
	oLi.soort		= strType;
	oLi.lnr			= intLnr;
	oLi				= setInnerText(oLi, strPost + " " + strLocatie);
	oLi.onclick		= function(){assignPost(this.soort, this.post, this.lok, this.lnr);};
	oLi.onmouseover = function(){selectRow(this.soort, 0, this.nr);};
	
	$("ul" + strType + "Lijst").appendChild(oLi);
}

function assignPost(strType, strPost, strLocatie, intLnr){ //postcode gekozen	
	// hidden fields invullen
	$("txtHidden" + strType + "Post").value 	= strPost;
	$("txtHidden" + strType + "Lnr").value 		= intLnr;
	$("txtHidden" + strType + "Plaats").value 	= strLocatie;
	
	// tekstveld invullen
	$("txt" + strType + "Plaats").value = strPost + " " + strLocatie;
	
	// we mogen opnieuw zoekopdrachten uitvoeren
	arrSelected[strType] = "leeg";
	
	// lijst verbergen
	verbergen("div" + strType + "Lijst");
		
	validate("txt" + strType + "Plaats");
}

function assignLand(strType){
	if ($F("cmb" + strType + "Land") != $("cmb" + strType + "Land").land){
		$("cmb" + strType + "Land").land = $F("cmb" + strType + "Land");
		emptyHiddenFields(strType, true);
	}
}

function emptyHiddenFields(strType, blnEraseTextField){
	if (blnEraseTextField){
		$("txt" + strType + "Plaats").value = "";
	}
	
	// als de inhoud van het tekstveld niet meerovereenkomt met de hidden values, dan smijten we de hidden values weg
	if ($F("txt" + strType + "Plaats") != $F("txtHidden" + strType + "Post") + " " + $F("txtHidden" + strType + "Plaats")){
		$("txtHidden" + strType + "Post").value 	= "";
		$("txtHidden" + strType + "Lnr").value 		= "";
		$("txtHidden" + strType + "Plaats").value 	= "";	
	}	
}

function checkHeight(strType){
	if ($("div" + strType + "Lijst").getHeight() > intListMaxHeight){
		$("div" + strType + "Lijst").style.height = intListMaxHeight + "px";
	}
}

function addItem(strType){ // voegt een item toe om naar de DB weg te schrijven.
	if (inputControle(strType)){		
		saveItem(strType);	
		
		return true;
	}
	else{
		return false;
	}
}

function delItem(strType){ // maakt de lijst op met te wissen items en stuurt die door naar wisItems();
	// strType is bijvoorbeeld "Opleiding", "Taal" of "Programma"
	
	var strItems = ""; // lijst met te wissen items
	var arrItems = document.getElementsByTagName("input"); //array met alle inputs
	
	for (var i=0;i<arrItems.length;i++){
		if (begins(arrItems[i].id, "chk" + strType)){
			// ID begint met 'chk[strType]'
			if (arrItems[i].checked){ // aangevinkt?
				strItems += arrItems[i].nr + ",";
			}
		}
	}
	
	wisItems(strType, strItems);
}

function wisItems(strType, strItems){ // wist één of meerdere items van een bepaald type (opleiding, werkervaring)
	var pars = 	'actie=wissen' + 
				'&tk=' + tk + 
				'&key=' + strSleutel + 
				'&type=' + strType + 
				'&itemlist=' + strItems;
						
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: pars,
			onSuccess: itemsRefresh
		});
}

function itemsRefresh(req){ // refresht de lijst na een aanpassing in de database, indien nodig.
	var xml = req.responseXML;
	
	if (xml !== false){
		var strType = xml.getElementsByTagName("type")[0].childNodes[0].nodeValue;
		var strGelukt = xml.getElementsByTagName("ok")[0].childNodes[0].nodeValue;
		var strKey;
		
		try{
			strKey = xml.getElementsByTagName("key")[0].childNodes[0].nodeValue;
			
			if (strKey != "" && strKey != "0"){
				if (readCookie("kanbuf") == null){
					createCookie("kanbuf", strKey, intExpireDate);
					strSleutel = strKey;
				}
				
				if (strSleutel != readCookie("kanbuf")){
					//goed
				}
				else {
					//mis
				}
			}
		}catch(e){}
		
		if (strGelukt.toLowerCase() == "yes"){
			try{
				getItems(strType);
			}catch(e){}
		}
	}
}

function getItems(strType){	// haalt de items van een bepaald type (opleiding, werkervaring,...) op	
	tonen("imgBevestiging" + strType + "Laden");
	tonen("img" + strType + "Laden");
	
	var pars = 	'actie=getItems' + 
				'&key=' + strSleutel + 
				'&tk=' + tk + 
				'&type=' + strType;		
	
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: pars,
			onSuccess: setItems
		});
}

function setItems(req){ // voegt de items uit de xml toe aan de lijst
	var xml = req.responseXML;
	
	if (xml !== false){
		var arrNodes = xml.getElementsByTagName("item");
		var strType = xml.getElementsByTagName("type")[0].childNodes[0].nodeValue;		
				
		var strDeel1, strDeel2;
		
		try{ // Bij "Algemeen" zou dit bokken
			// lijst leegmaken
			$("ul" + strType).innerHTML = "";
		}catch(e){}
		
		// tabel leegmaken (bevestiging)
		emptyTable("tbl" + strType);
		
		for (var i=0;i<arrNodes.length;i++){
			// toevoegen aan de lijst
			addListItem(strType, arrNodes[i]);
		}
		
		//inputgegevens wissen
		clearForm(strType);
		
		//om het form van Algemeen in te vullen
		try {
			var oFormNode = xml.getElementsByTagName("form")[0];
			if (oFormNode.childNodes.length >= 0){
				tonen("img" + strType + "Laden");
				arrTempNode[0] = oFormNode;
				setTimeout("fillForm(0, '" + strType + "');", 1200);
			}
		}catch(e){}
	}
}

function getItem(strType, intLijnNr){	// haalt één specifiek item van een bepaald type (opleiding, werkervaring,...) op.
	var pars = 	'actie=getItem' + 
				'&key=' 	+ strSleutel + 
				'&tk=' 		+ tk + 
				'&type=' 	+ strType + 
				'&lijnnr=' 	+ intLijnNr;
	
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: pars,
			onSuccess: setItem
		});
}

function setItem(req){ //Plaatst de data van één item in het form
	var xml = req.responseXML;
	
	if (xml !== false){
		var oNode = xml.getElementsByTagName("item")[0];
		var strType = xml.getElementsByTagName("type")[0].childNodes[0].nodeValue;
		
		// invullen in de form zodat het gewijzigd kan worden.
		fillForm(oNode, strType);
	}
}

function fillForm(oNode, strType){
	if (oNode == 0){
		oNode = arrTempNode[0];
	}
	for (var i=0;i<oNode.childNodes.length;i++){
		var strId = oNode.childNodes[i].tagName, strWaarde;
		
		try{ // Als het leeg is bokt IE hierop
			strWaarde = oNode.childNodes[i].firstChild.nodeValue;
		}
		catch(e){
			strWaarde = "";
		}
		
		// Uitzonderingen. De combobox dient eerst opnieuw opgehaald te worden op basis van de parentcombobox
		if (strId == "cmbOplType" || strId == "cmbFunctie2"){ //parents zijn cmbOplNiveau en cmbFunctie1
			setTimeout("fillField('" + strId + "','" +  strWaarde + "','" + strType + "');", 150);
		}
		else {
			fillField(strId, strWaarde, strType);
		}		
	}
	
	verbergen("img" + strType + "Laden");
}

function fillField(strId, strWaarde, strType){
	strWaarde = ifEmptyMakeEmpty(strWaarde);
	
	try{			
		if ($(strId) != null){
			var oObject = $(strId);		
			
			switch (oObject.tagName.toLowerCase()) {
				case "input":
					switch (oObject.type.toLowerCase()) {
						case "radio":
							setRadioValue(oObject.name, strWaarde);
							break;
						case "checkbox":
							if (strWaarde.toLowerCase == "true" || ("" + strWaarde) == "1") {
								oObject.checked = true;
							}
							else {
								oObject.checked = false;
							}
							break;
						default:
							oObject.value = strWaarde;
							break;
					}
					break;
				case "select":
					// we gaan ons eigen niet in't zak zetten.
					if (strWaarde != "" && strWaarde != "0"){
						oObject.value = strWaarde;
					}
					
					try{// eventueel event triggeren
						fireEvent(oObject, "keyup");
					}catch(e){}
				break;
				case "textarea":
					setInnerText(oObject, strWaarde);
				break;
				default:
					oObject.value = strWaarde;
				break;
			}
		}
		else {
			try{
				if (strId == "lijnnr"){
					try {
						$("txtHidden" + strType + "Lijn").value	= strWaarde;						
					}catch(e){}
				}
			}catch(e){}			
		}
	}catch(e){}
}

function bevestigen(){
	var pars = 	'actie=registreer' + 
				'&key=' + strSleutel;
	
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: pars,
			onSuccess: naBevestigen
		});	
}

function naBevestigen(req){
	var xml = req.responseXML;
	
	if (xml !== false){		
		var strGelukt = xml.getElementsByTagName("ok")[0].childNodes[0].nodeValue;
				
		if (strGelukt.toLowerCase() == "yes"){
			createCookie("stap", intAantalStappen + 1, intExpireDate);
			
			bevestigenGelukt();			
		}		
	}	
}

function bevestigenGelukt(){
	verbergen("divStap0"); // Intro verbergen in het geval we herladen via de cookie
	verbergen("divStap" + intAantalStappen); // Overzicht bevestiging verbergen indien we net bevestigd hebben.
		
	tonen("divBevestigd");
	$("divNavigatie").innerHTML = "";
	$("divStappen").innerHTML = "";	
}

function printBevestiging(){
	this.print();
}

function clearForm(strType){ //wist het formulier
	// ajaxloader verbergen
	verbergen("imgBevestiging" + strType + "Laden");
	verbergen("img" + strType + "Laden");
	
	// tekstvelden wissen
	try{
		switch(strType){
			case "Opleiding":
				$("txtOplStudie").value 	= "";
				$("txtOplSchool").value		= "";
				$("txtOplJaar").value 		= "";
				$("txtHiddenOpleidingLijn").value	= "";
			break;
			case "Werkervaring":
				$("txtWerkgever").value 				= "";
				$("txtWerkFunctie").value 				= "";
				$("txtWerkOmsch").innerHTML 			= "";
				$("txtWerkVan").value 					= "";
				$("txtWerkTot").value 					= "";
				$("txtWerkOmsch").value 				= "";
				$("txtWerkOntslag").innerHTML 			= "";
				$("txtRefPersoon").value 				= "";
				$("txtRefFunctie").value 				= "";
				$("txtHiddenWerkervaringLijn").value	= "";
			break;
		}	
	}
	catch(e){}	
}

function saveItem(strType){	// opslaan van een opleiding, rijbewijs, talenkennis,...
	var pars = 'actie=save' + strType + 
				'&key=' 	+ strSleutel + 
				'&tk=' 		+ tk + 
				'&dnr=' 	+ intDnr;
	
	switch(strType){
		case "Intro":		
			pars += '&vnaam=' 	+ escape($F("txtVoornaamStap0")) + 
					'&fnaam=' 	+ escape($F("txtFamilienaamStap0")) + 
					'&tel=' 	+ escape($F("txtTelStap0")) + 
					'&email=' 	+ escape($F("txtEmailStap0"));
		break;					
		case "Algemeen":
			pars += '&mode=1' 		+ 					
					'&vnaam=' 		+ escape($F("txtVoornaam")) + 
					'&initiaal=' 	+ escape($F("txtInitiaal")) + 
					'&fnaam=' 		+ escape($F("txtFamilienaam")) + 
					'&adres=' 		+ escape($F("txtAdres")) + 
					'&huisnr=' 		+ escape($F("txtHuisnr")) + 
					'&busnr=' 		+ escape($F("txtBusnr")) + 
					'&woonpost=' 	+ $F("txtHiddenWoonPost") + 
					'&woonlnr=' 	+ $F("txtHiddenWoonLnr") + 
					'&woonland=' 	+ $F("cmbWoonLand") + 
					'&tel=' 		+ escape($F("txtTel")) + 
					'&gsm=' 		+ escape($F("txtGSM")) + 
					'&email=' 		+ escape($F("txtEmail")) + 
					'&gebdat=' 		+ $F("txtGebDat") + 
					'&gebpost=' 	+ $F("txtHiddenGebPost") + 
					'&geblnr=' 		+ $F("txtHiddenGebLnr") + 
					'&gebland=' 	+ $F("cmbGebLand") + 
					'&bs=' 			+ $F("cmbBS") + 
					'&natio=' 		+ $F("cmbNatio") + 
					'&mv=' 			+ getRadioValue("radGeslacht") + 
					'&junk=' 		+ $("chkJunk").checked + 
					'&sms=' 		+ $("chkSMS").checked;						
		break;
		case "Opleiding":
			var strLijn = "", intModus = 1; // Nieuw
			
			try{
				if ($F("txtHiddenOpleidingLijn") != ""){ // Wijzigen
					intModus 	= 2;
					strLijn 	= $F("txtHiddenOpleidingLijn");
				}				
			}catch(e){}
			pars += '&mode=' 		+ intModus +
					'&lijn=' 		+ strLijn +					
					'&oplniveau=' 	+ $F("cmbOplNiveau") + 
					'&opltype=' 	+ $F("cmbOplType") + 
					'&status=' 		+ $F("cmbOplStatus") + 
					'&jaar=' 		+ $F("txtOplJaar") + 
					'&studie=' 		+ escape($F("txtOplStudie")) + 
					'&school=' 		+ escape($F("txtOplSchool"));
		break;
		case "Taal":
			pars += '&mode=1' 		+ 				
					'&taal=' 		+ $F("cmbTaal") + 
					'&spreken=' 	+ $F("cmbSpreken") + 
					'&schrijven=' 	+ $F("cmbSchrijven");
		break;
		case "Programma":
			pars += '&mode=1' 	+ 					
					'&prog=' 	+ $F("cmbProgramma") + 
					'&kennis=' 	+ $F("cmbKennis");
		break;
		case "Werkervaring":
			var strLijn = "", intModus = 1; // Nieuw
			
			try{
				if ($F("txtHiddenWerkervaringLijn") != ""){ // Wijzigen
					intModus 	= 2;
					strLijn 	= $F("txtHiddenWerkervaringLijn");
				}				
			}catch(e){}
			
			pars += '&mode=' 		+ intModus +
					'&lijn=' 		+ strLijn +					
					'&werkgever=' 	+ escape($F("txtWerkgever")) + 
					'&functie=' 	+ escape($F("txtWerkFunctie")) + 
					'&taak=' 		+ escape(getInnerText($("txtWerkOmsch")))   + 
					'&van=' 		+ $F("txtWerkVan") + 
					'&tot=' 		+ $F("txtWerkTot") + 
					'&werktype=' 	+ $F("cmbWerkType") + 
					'&statuut=' 	+ $F("cmbWerkStatuut") + 					
					'&ontslag=' 	+ escape(getInnerText($("txtWerkOntslag"))) + 
					'&referentie=' 	+ $("chkReferentie").checked + 
					'&refpersoon=' 	+ escape($F("txtRefPersoon")) + 
					'&reffunctie=' 	+ escape($F("txtRefFunctie"));
					
			// We slaan het uitzendkantoor enkel op als het nodig is
			if ($F("cmbWerkStatuut") == "3"){
				pars += '&interim=' + $F("cmbWerkUZK");
			}
			else {
				pars += '&interim=';
			}					
		break;
		case "Functie":
			pars += '&functie1=' + $F("cmbFunctie1") + 
					'&functie2=' + comboToString($("cmbFunctie2"));
		break;
		case "Rijbewijs":
			pars += '&mode=1' +						
					'&rijbewijs=' + $F("cmbRijbewijs");
		break;
	}
	
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: pars,
			onSuccess: itemsRefresh
		});	
}

function addListItem(strType, oNode){ // voegt een item toe aan de lijst (UL)
	if (strType != "Algemeen"){
		var intLijnNr 	= oNode.getElementsByTagName("lijnnr")[0].childNodes[0].nodeValue;
		var strDeel1 	= oNode.getElementsByTagName("deeleen")[0].childNodes[0].nodeValue;
		var strDeel2, strTekst;
		var oLi, oCheckbox, oSpan;
		
		// Toevoegen aan overzicht "reeds geselecteerd".
		try {
			strDeel2 = trim(oNode.getElementsByTagName("deeltwee")[0].childNodes[0].nodeValue);
		}
		catch (e){		
			strDeel2 = "";
		}
		
		oLi 				= document.createElement("li");
		oLi.id				= "li" + strType + intLijnNr;
		oLi.style.textAlign	= "left";
		
		oCheckbox 						= document.createElement("input");
		oCheckbox.type 					= "checkbox";
		oCheckbox.className 			= "noborder";
		oCheckbox.id					= "chk" + strType + intLijnNr;
		oCheckbox.nr					= intLijnNr;
		oCheckbox.style.verticalAlign 	= "middle";
		
		oSpan 			= document.createElement("span");
		oSpan.id		= "span" + strType + intLijnNr;
		oSpan.className	= "clickable";
		oSpan.type		= strType;
		oSpan.lijnnr	= intLijnNr;
		oSpan.onclick	= function(){getItem(this.type, this.lijnnr);};	
			
		if (strDeel2 != "") {
			strTekst = shortString(strDeel1, 25);
			strTekst += " - " + strDeel2;
		}
		else{
			strTekst = strDeel1;
		}
		
		strTekst = " " + shortString(strTekst, 45);
		
		oSpan = setInnerText(oSpan, strTekst);
			
		oLi.appendChild(oCheckbox);
		oLi.appendChild(oSpan);
		
		$("ul" + strType).appendChild(oLi);
	}	
	
	// toevoegen aan overzicht "bevestiging"
	var oRow = $("tbl" + strType).insertRow(-1);
	
	try{
		var intInit = 3;
		var intAantal = oNode.childNodes.length - intInit;
		var strWidth = "" + (100 / intAantal) + "%";
		
		for (var i=intInit;i<oNode.childNodes.length;i++){
			var strAttribute = oNode.childNodes[i].getAttribute("bevestiging");			
			
			if (strAttribute != undefined && strAttribute != null){
				var oCell = oRow.insertCell(-1);
				oCell.style.width = strWidth;
				try {
					oCell.innerHTML = oNode.childNodes[i].firstChild.nodeValue;
				}catch(e){
					oCell.innerHTML = "&nbsp;";
				}				
			}			
		}
	}catch(e){}
}

function werkStatuutChanged(){
	if ($F("cmbWerkStatuut") == "3"){
		tonen("trWerkUZK");		
	}
	else{
		verbergen("trWerkUZK");
	}
}

function referentieClicked(){
	if ($("chkReferentie").checked){
		tonen("trRefPersoon");
		tonen("trRefFunctie");
	}
	else{
		verbergen("trRefPersoon");
		verbergen("trRefFunctie");
	}
}

function inputControle(strPar){ // eigen inputcontrole
	var arrControle, blnOK = true;	

	// we kopiëren de gepaste array naar arrControle
	eval("arrControle = arrValidate" + strPar + ".slice();");
	
	// we valideren elk element
	for (var i=0;i<arrControle.length;i++){	
		if (validate(arrControle[i]) == false){
			blnOK = false;
		}		
	}
	
	// uitzonderingen
	switch(strPar){		
		case "Werkervaring":		
			// Als we op uitzendbasis gewerkt hebben, dienen we een uitzendbureau te kiezen
			if ($F("cmbWerkStatuut") == "3"){
				if (validate("cmbWerkUZK") == false){
					blnOK = false;
				}				
			}		
			
			// Als we referentie aanvinken dient die ook ingevuld te zijn.
			if ($("chkReferentie").checked){
				if (validate("txtRefPersoon") == false){
					blnOK = false;
				}
				
				if (validate("txtRefFunctie") == false){
					blnOK = false;
				}				
			}		
		break;	
	}
	
	return blnOK;
}

function removeBorders(){// doet de randen weg die we in de css aan tagname input gekoppeld hebben.
	// radiobuttons en checkboxes
	arrTemp = document.getElementsByTagName("input");
	
	for (var i=0;i<arrTemp.length;i++){
		if (arrTemp[i].id != undefined && arrTemp[i].id != "" && (arrTemp[i].type == "radio" || arrTemp[i].type == "checkbox")){
			try{
				$(arrTemp[i].id).addClassName("noborder");
			}catch(e){}
		}
	}
	// comboboxen
	arrTemp = document.getElementsByTagName("select");
	
	for (var i=0;i<arrTemp.length;i++){
		if (arrTemp[i].multiple == true){
			arrTemp[i].style.height = "100px";
		}
	}
}

// Algemene functies
// Koekjesfuncties komen van hier: http://www.quirksmode.org/js/cookies.html
function createCookie(name, value, days) {
	try{
		var expires = "";
	
		if (days){
			var date = new Date();
			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
			expires = "; expires=" + date.toGMTString();
		}
		
		document.cookie = name + "=" + value + expires + "; path=/";
	}catch(e){}	
}

function readCookie(name) {
	try{
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		
		for(var i=0;i<ca.length;i++) {
			var c = ca[i];
			
			while (c.charAt(0) == ' '){
				c = c.substring(1,c.length);	
			}
			
			if (c.indexOf(nameEQ) == 0){
				return c.substring(nameEQ.length, c.length);	
			}
		}
		
		return null;
		
	}
	catch(e){
		return null
	}	
}

function eraseCookie(name) {
	createCookie(name, "", -1);
}

function emptyTable(strTabelNaam){
	var tblTable = $(strTabelNaam);
	var i;
	try{
		// alle rijen uit de tabel verwijderen
		for(i = tblTable.rows.length - 1;i>-1;i--){
			tblTable.deleteRow(i);
		}
	}
	catch(e){	
	}
}

function controlDate(strDate, blnCanBeEmpty){
	strDate = trim(strDate); // whitespace weg
	var strTemp = "";
	var intDag, intMaand = 0, intJaar;
	var intAantalDagen;
	var arrSeparators = new Array(" ", "-");
	var blnError = false;
	var strMaand = "";
	
	for(var i=0;i<arrSeparators.length;i++){	
		eval("strDate = strDate.replace(/" + arrSeparators[i] + "/g, '/')");		
	}
	
	if (strDate == "" && blnCanBeEmpty){
		strTemp = "";
	}
	else {
		if (strDate.indexOf("/") != -1) {// er is een separator
			try {
				intDag = parseInt(getCijfers(strDate.split("/")[0]),10);
				strMaand = strDate.split("/")[1].toLowerCase();
				
				if (isNaN(strMaand)){
					// we kijken of de naam van een maand meegegeven is
					for (var i=0; i<arrMaanden.length; i++){
						if (strMaand.indexOf(arrMaanden[i].toLowerCase()) != -1){
							intMaand = i + 1;
							i = arrMaanden.length;
						}
					}
					
					// we hebben nog geen maand gevonden
					if (intMaand == 0){
						// we kijken of de eerste letters van de naam van een maand meegegeven zijn
						for (var i=0; i<arrMaanden.length; i++){
							if (strMaand.length >= 1){ // we hebben toch iets meegegeven
								if (strMaand.length < arrMaanden[i].length){
									if (strMaand == arrMaanden[i].substring(0,strMaand.length).toLowerCase()){
										intMaand = i + 1;
										i = arrMaanden.length;
									}
								}
							}
						}
						
						// we hebben nog altijd geen maand gevonden
						if (intMaand == 0){
							// we kijken of de eerste 3 letters overeenkomen met een maand
							for (var i=0; i<arrMaanden.length; i++){
								if (strMaand.length >= 3){ // we hebben minstens 3 letters meegegeven
									if (arrMaanden[i].length >= 3){
										if (strMaand.substring(0,3) == arrMaanden[i].substring(0,3).toLowerCase()){
											intMaand = i + 1;
											i = arrMaanden.length;
										}
									}
								}
							}
							
							// We hebben nog ossan geen maande gevonden
							if (intMaand == 0){
								// we maken er een getal van
								intMaand = parseInt(strMaand,10);
							}
						}
					}
				}
				else {
					intMaand = parseInt(strMaand,10);
				}		
				
				intJaar = parseInt(getCijfers(strDate.split("/")[2]),10);
			}
			catch (e) {
				blnError = true
			}
		}
		else {
			// we houden enkel de cijfers over
			strTemp = getCijfers(strDate);		
			
			if (strTemp.length < 4 || strTemp.length > 8) {
				blnError = true;
			}
			else{
				switch(strTemp.length){
					case 4:
						intDag 		= parseInt(strTemp.substring(0,1),10);
						intMaand 	= parseInt(strTemp.substring(1,2),10);
						intJaar 	= parseInt(strTemp.substring(2),10);
					break;
					case 5:
						intDag 		= parseInt(strTemp.substring(0,2),10);
						intMaand 	= parseInt(strTemp.substring(2,3),10);
						intJaar 	= parseInt(strTemp.substring(3),10);
						
						if (intDag > 31 || intMaand == 0){
							intDag 		= parseInt(strTemp.substring(0,1),10);
							intMaand 	= parseInt(strTemp.substring(1,3),10);
						}
					break;
					case 6:
						intDag 		= parseInt(strTemp.substring(0,2),10);
						intMaand 	= parseInt(strTemp.substring(2,4),10);
						intJaar 	= parseInt(strTemp.substring(4),10);
					break;
					case 7:
						intDag 		= parseInt(strTemp.substring(0,2),10);
						intMaand 	= parseInt(strTemp.substring(2,3),10);
						intJaar 	= parseInt(strTemp.substring(3),10);
						
						if (intDag > 31 || intMaand == 0){
							intDag 		= parseInt(strTemp.substring(0,1),10);
							intMaand 	= parseInt(strTemp.substring(1,3),10);
						}
					break;
					case 8:
						intDag 		= parseInt(strTemp.substring(0,2),10);
						intMaand 	= parseInt(strTemp.substring(2,4),10);
						intJaar 	= parseInt(strTemp.substring(4),10);
					break;
				}
			}
		}
		
		if (blnError == false){	
			if (isNaN(intJaar) || intJaar > new Date().getFullYear()){
				intJaar = new Date().getFullYear() - 1;
			}		
			
			if (isNaN(intMaand) || intMaand > 12){
				intMaand = 12;
			}
			
			if (intMaand == 0){
				intMaand = 1;
			}
			
			intAantalDagen = getAantalDagen(intMaand, intJaar);
			
			if (isNaN(intDag) || intDag > intAantalDagen){
				intDag = intAantalDagen;
			}
			
			strTemp = datify(intDag, intMaand, intJaar);
		}
		else{
			strTemp = strDateError;
		}
	}	
	
	return strTemp;
}

function getCijfers(strString){ // geeft een string terug met enkel de cijfers uit de originele string
	var strReturn = "";
	
	// we voegen een tekentje toe om de deerlijke substringfunctie te omzeilen
	strString += "*";
	
	// we overlopen alle tekens behalve de laatst toegevoegde.
	for (var i=0; i<strString.length-1; i++) {
		// Is het een cijfer, dan houden we het bij
		if (strString.substring(i, i + 1).charCodeAt(0) >= 48 && strString.substring(i, i + 1).charCodeAt(0) <= 57) {
			strReturn += strString.substring(i, i + 1);
		}
	}
	
	return strReturn;
}

function datify(intDag, intMaand, intJaar){
	if (intDag < 10){
		strDag = "0" + intDag;
	}
	else {
		strDag = "" + intDag;
	}
	
	if (intMaand < 10){
		strMaand = "0" + intMaand;
	}
	else {
		strMaand = "" + intMaand;
	}
	
	if (intJaar < 10){
		strJaar = "190" + intJaar;
	}
	else {
		if (intJaar < 100){
			strJaar = "19" + intJaar;
		}
		else{
			if (intJaar < 1000){
				strJaar = "1" + intJaar;
			}
			else {
				strJaar = "" + intJaar;
			}
		}
	}
	
	return strDag + "/" + strMaand + "/" + strJaar;	
}

function getAantalDagen(intMaand, intJaar){ // hoeveel dagen zitten er in een maand, rekening houdend met het jaar (februari -> schrikkeljaar)
	var intAantalDagen = 0;
	
	switch(intMaand){
		case 1:
			intAantalDagen = 31;
		break;
		case 2:
			if (schrikkeljaar(intJaar) == true){
				intAantalDagen = 29;
			}
			else{
				intAantalDagen = 28;
			}
		break;
		case 3:
			intAantalDagen = 31;
		break;
		case 4:
			intAantalDagen = 30;
		break;
		case 5:	
			intAantalDagen = 31;
		break;
		case 6:
			intAantalDagen = 30;
		break;
		case 7:
			intAantalDagen = 31;
		break;
		case 8:
			intAantalDagen = 31;
		break;
		case 9:
			intAantalDagen = 30;
		break;
		case 10:
			intAantalDagen = 31;
		break;
		case 11:
			intAantalDagen = 30;
		break;
		case 12:
			intAantalDagen = 31;
		break;
	}
	
	return intAantalDagen;
}

function schrikkeljaar(intJaar){ // is het jaar een schrikkeljaar
	var blnSchrikkeljaar = false;
	
	if (intJaar < 100){ // we veronderstellen dat je de 20e eeuw bedoelt
		intJaar += 1900;
	}
	
	if (intJaar % 4 == 0){ // misschien een schrikkeljaar
		if (intJaar % 100 == 0){ // misschien een schrikkeljaar
			if (intJaar % 400 == 0){ // een schrikkeljaar
				blnSchrikkeljaar = true;
			}
			else{ // geen schrikkeljaar
				blnSchrikkeljaar = false;
			}
		}
		else{ // schrikkeljaar
			blnSchrikkeljaar = true;
		}
	}
	else{
		blnSchrikkeljaar = false;
	}
	
	return blnSchrikkeljaar;
}

function comboToString(deCombo){// zet de geselecteerd waarden van een multiple combobox in een string.
	var strString = "";
	
	for (i=0;i<deCombo.options.length;i++) {
		if (deCombo.options[i].selected){
			strString += deCombo.options[i].value + ",";
		}	
	}
	
	if (strString.length > 1){
		strString = strString.substring(0, strString.length - 1);
	}
	
	return strString;	
}

function clearCombo(strCombo){ //Maakt een combobox leeg
    $(strCombo).options.length = 0;	
}

function shortString(strString, intMaxLength){ // knipt een string indien langer dan maximum lengte
	if (strString.length > intMaxLength){
		strString = strString.substring(0, intMaxLength) + "...";
	}
	
	return strString;
}

function tonen(strId){
	try{
		document.getElementById(strId).style.display = "";	
	}
	catch(e){}
}

function verbergen(strId){
	try{
		document.getElementById(strId).style.display = "none";	
	}
	catch(e){}
}

function isEmpty(oObject){ // is een textbox, comboboxwaarde, textarea leeg
	var blnIngevuld = true;
	
	switch(oObject.tagName.toLowerCase()){
		case "input":
			switch(oObject.type.toLowerCase()){
				case "text": case "hidden": case "textarea":
					if(trim(oObject.value) == ""){
						blnIngevuld = false;
					}
				break;				
				case "radio":
					if(getRadioValue(oObject.name) == undefined){
						blnIngevuld = false;
					}
				break;
			}
		break;
		case "select":
			if(oObject.value == undefined || oObject.value == 0){
				blnIngevuld = false;
			}
		break;	
	}
	
	if (blnIngevuld == true){
		return false;
	}
	else{
		return true;
	}
}

function begins(strString, strBegin){ // Begint strString met strBegin ?
	var blnBegins = false;
	
	if (strString != undefined && strBegin != undefined){		
		if (strString.length >= strBegin.length){			
			if (strString.substring(0, strBegin.length) == strBegin){
				blnBegins = true;
			}
		}
	}
		
	return blnBegins;
}

function trim(strString){ // trimt 'whitespace' voor en na de tekst
	return strString.replace(/^\s+|\s+$/g, '');
}

function ifEmptyMakeEmpty(strString){ // Soms geven we een spatie terug omdat een childnode niet "leeg" zou zijn.
	if (trim(strString) == "&nbsp;"){
		strString = " ";
	}
	
	return strString;
}

function isEmailAddress(strEmail){
	var blnOK = true, strLocalPart, strDomain;
	
	strEmail = trim(strEmail);
	
	if (strEmail.indexOf("@") > -1 && strEmail.indexOf(" ") == -1){ // Er is een @-teken en er is geen spatie te bespeuren
		// Is er een stuk voor en een stuk na het @-teken?
		if (strEmail.split("@").length == 2){ // Yep
			strLocalPart = strEmail.split("@")[0];
			strDomain = strEmail.split("@")[1];			
			
			if (strLocalPart.length >= 1 && strDomain.length >= 4 && strDomain.length <= 255){
				if (strLocalPart.substring(0,1) != "." && 
					strLocalPart.substring(strLocalPart.length - 1) != "." &&
					strDomain.substring(0,1) != "." && 
					strDomain.substring(strDomain.length - 1) != "."){
						if (strDomain.indexOf(".") > -1){
							if (strDomain.split(".")[strDomain.split(".").length - 1].length >= 2){
								for (var i=0;i<strDomain.split(".").length;i++){
									if (strDomain.split(".")[i].length < 1 || strDomain.split(".")[i].length > 63){
										// verkeerde lengte van een onderdeel van het domain
										blnOK = false;
									}
								}
								// laat ons zeggen dat een min of meer correct emailadres is.
							}
							else { // geen correct TDL
								blnOK = false;
							}
						}
						else { // geen correct domain
							blnOK = false;
						}										
				}
				else { // er is een deel dat begint en/of eindigt met een punt "."
					blnOK = false;					
				}
			}
			else { // verkeerde lengte
				blnOK = false;
			}			
		}
		else { // Nope
			blnOK = false;
		}
	}
	else { // geen @-teken
		blnOK = false;
	}
	
	return blnOK;
}

function getKeyCode(objEvent){
	var intKeyCode;
	
	// object ophalen, browseronafhankelijk
	objEvent = (objEvent)?objEvent : ((event)? event : null);
		
	if (objEvent.keyCode){
  		intKeyCode = objEvent.keyCode;
 	}
 	else {  // Firefox ondersteunt keyCode niet
  		intKeyCode = objEvent.which;
 	}
	
	return intKeyCode;
}

function maskOnlyDigits(objEvent){// inputmask enkel cijfers
	// Zijn toegelaten: - speciale tekens zoals backspace, spatie,...
	// 					- cijfers 0 - 9
	// Pijltje naar links en rechts werkt niet in Firefox: code 37 en 39 kan je toelaten, maar dan kan je ook ' en % ingeven.
	
	var intKeyCode = getKeyCode(objEvent);
	
	//    backspace, enz...				 0					9
	if (intKeyCode > 32 && (intKeyCode < 48 || intKeyCode > 57)){
		if (intKeyCode == 37 || intKeyCode == 39){
			return true;
		}
		else{
			return false;
		}	
	}
	else {
		return true;
	}
}

function maskPhone(objEvent){ // inputmask telefoonnummer
	// Zijn toegelaten: - speciale tekens zoals backspace, spatie,...
	// 					- cijfers 0 - 9
	//					- ()+-./
	// Pijltje naar links en rechts werkt niet in Firefox: code 37 en 39 kan je toelaten, maar dan kan je ook ' en % ingeven.
	
	var intKeyCode = getKeyCode(objEvent);
	
	//    backspace, enz...				 (					9					 ,					 *
	if (intKeyCode > 32 && (intKeyCode < 40 || intKeyCode > 57) || intKeyCode == 44 || intKeyCode == 42){
		return false;			
	}
	else {
		return true;
	}
}

// Pijltoetsnavigatie
function selectRow(strType, intType, intNr){ // selecteer een rij in de lijst met postcodes
	// strType = "Woon" of "Geb"
	// intType = 0 -> intNr = het rijnr
	// intType = 1 -> intNr = richting (0 = naar boven, 1 = naar onder)	
	
	this.focus(); // document krijgt focus, anders heeft selectie geen zin
		
	var oUl = $("ul" + strType + "Lijst");	
	
	switch (intType){
		case 0:			
			try{
				// de voorheen geselecteerde worden gedeselecteerd				
				var arrTemp = oUl.getElementsByClassName("selected");			
				
				for (var i=0;i<arrTemp.length;i++){
					if (arrTemp[i].id != "" && arrTemp[i].id != undefined){
						$(arrTemp[i].id).removeClassName("selected");
					}
				}
				
				// de juiste wordt nu geselecteerd
				$("li" + strType + intNr).addClassName("selected");				
				
				// en bijgehouden
				arrSelected[strType] = intNr;					
				
				$("txt" + strType + "Plaats").focus();
			} catch(e){}
		break;
		case 1:
			if (intNr == 0){ // naar boven
				if (arrSelected[strType] != "leeg"){// er is al een rij geselecteerd
					if (arrSelected[strType] != 0){// de geselecteerde rij is niet de eerste
						selectRow(strType, 0, arrSelected[strType] - 1);
					}
					else {
						selectRow(strType, 0, oUl.childNodes.length - 1);
					}
				}
				else { // er is nog geen rij geselecteerd
					selectRow(strType, 0,  oUl.childNodes.length - 1);
				}
			}
			else {// naar onder				
				if (arrSelected[strType] !== "leeg"){// er is al een rij geselecteerd				
					if (arrSelected[strType]  != oUl.childNodes.length - 1){// de geselecteerde rij is niet de laatste
						selectRow(strType, 0, arrSelected[strType] + 1);
					}
					else {					
						selectRow(strType, 0, 0);
					}
				}
				else {// er is nog geen rij geselecteerd					
					selectRow(strType, 0, 0);
				}
			}
		break;
	}
}

function showDown(objEvent){ 	// Gekopieerd van AccentSearch	
	try{
		intKeyCode = getKeyCode(objEvent);
		
		var oUl = $("ul" + this.soort + "Lijst");
		
		switch(intKeyCode){
			case 38: // pijltje naar boven
				if(oUl.childNodes.length > 0){// de lijst is niet leeg
					selectRow(this.soort, 1,0);
				}
			break;
			case 40: // pijltje naar beneden
				if(oUl.childNodes.length > 0){// de lijst is niet leeg
					selectRow(this.soort, 1,1);
				}
			break;
			case 13: case 9: // 13 = Enter, 9 = TAB
				if (arrSelected[this.soort] != "leeg"){// er is één geselecteerd
					// we gebaren dat we erop klikken
					fireEvent($("li" + this.soort + arrSelected[this.soort]), "click");
				}
				else {
					verbergen("div" + this.soort + "Lijst");
				}
			break;			
			case 16: // 16 = SHIFT
				// negeren die handel!
				
			break;	
			default:		
				//postcode opzoeken. Dit doen we niet als we in de selectie bezig zijn.
				arrSelected[this.soort] = "leeg";
				setTimeout("getPostList('" + this.soort + "')", 0); // Timeout: De functie showdown wordt uitgevoerd bij het onkeydown event. De getypte letter zit dus nog niet in het tekstveld.
			break;
		}		
	}catch(e){}
}

// Functies uit dreamweaver om mouseover op tekeningsjes te doen.
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,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_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,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_swapImage() { //v3.0
  var i,j=0,x,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];}
}
