/**********************************************************************************************
 *	Filename: postcodecheck_ajax.js
 *	Written by Dennis Coorn
 *    
 *	Met de onderstaande functies worden er voor gezorgd dat:
 *	- Na het invullen van de postcode cijfers verspringt naar de postcode letters
 *	- Als men de postcode letters weghaald met backspace de cursor verspringt naar postcode cijfers
 *	- Als de gehele postcode is ingevuld wordt er via AJAX een zoekopdracht opgestart om de straat
 *	  en plaats op te zoeken
 *	- Als er een foutieve postcode wordt ingevuld wordt er een melding gegeven in het TD veld met ID 'melding'
 *	- De zoek resultaten die terug komen (XML) worden verwerkt met de showResults() functie.
 *	- Als er meerdere straatnamen bekend bij een postcode wordt er een drop-down menu weer gegeven. Mocht
 *	  de straatnaam er alsnog niet bij staat dan kan er een adres worden toegevoegd d.m.v. het toevoegen van een
 *	  extra adres veld.
 *
 *	Het formulier moet in ieder geval de volgende items bevatten:
 *	- Het invul veld van de postcode moet in 2e zijn gedeeld (4 cijfers & 2 letters)
 *	- De zoekopdracht wordt geactiveerd door onKeyup='checkPostcode()'
 *	- Het invul veld van de straatnaam moet als ID 'straatnaam'
 *	- Het invul veld van de plaatsnaam moet als ID 'plaatsnaam'
 *	- Er moet een lege td met als ID 'melding' in staan, zodat er een foutmelding voor een foutieve postcode weer
 *	  gegeven kan worden.
 *
 *	LET OP:
 *	Het volgende 5 waardes moet na het invoegen van deze javascript worden gedefinieerd.
 *	pcCijferVeldNaam 	> Veldnaam van de postcode cijfers
 *	pcLetterVeldNaam 	> Veldnaam van de postcode letters 
 *	formfieldClassName 	> Class van het invoerveld (indien van toepassing)
 *	formfieldExtraAttribute 	> Extra attributen voor het invoerveld (bv: size)
 *	afterFormfield 		> Extra html code voor na het invoerveld (bv: &nbsp;)
 *		
 **********************************************************************************************/

/*if (document.getElementsByTagName && document.createElement) {
	var head = document.getElementsByTagName('head')[0];
	var script = document.createElement('script');
	script.setAttribute('type', 'text/javascript');
	script.setAttribute('src', 'http://www.younitymedia.nl/~algemeen/functies/javascript/ajax.js');
	head.appendChild(script);
}*/

function returnKey(e){
	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	
	return code;
}

var lockAutotab = false;
function checkKey(e){
	if(returnKey(e)==9){ 
		lockAutotab=true; 
		window.setTimeout("lockAutotab=false;", 400); 
	}
}

function autotab(original,destination){
	if(!lockAutotab){
		if (original.getAttribute&&original.value.length==original.getAttribute("maxlength"))
		destination.focus()
	}
}

function returntab(original,destination, e){
	if(returnKey(e)==8)
	if (original.getAttribute&&original.value.length==0)
	destination.focus()
}

var check = 0;
var item = 0;
function checkPostcode(formulier, id){
	item = id;
	var postcodeCijfer = pcCijferVeldNaam[id];
	var postcodeLetter = pcLetterVeldNaam[id];
	var postcodeCijfer = formulier[postcodeCijfer];
	var postcodeLetter = formulier[postcodeLetter];
	
	if(document.getElementById("melding_"+id)){ var melding = document.getElementById("melding_"+id); }

	if(postcodeCijfer.value.length==4 && (postcodeLetter.value.length==2 || postcodeLetter.value=="-")){
		postcodeLetter.value = postcodeLetter.value.toUpperCase();
		if(postcodeCijfer.value.match(/^\d{4}$/) && (postcodeLetter.value.match(/^[A-Z]{2}$/) || postcodeLetter.value=="-")){
			if(document.getElementById("melding_"+id)){ melding.innerHTML = "&nbsp;"; }
			document.body.style.cursor = "progress";
			loadXMLDoc("/functions/postcodecheck_local.php?" + encodeURI('http://www.younitymedia.nl/~algemeen/functies/php/postcodecheck.php?wijkcode='+postcodeCijfer.value+'&lettercombinatie='+postcodeLetter.value));
		}else{ if(document.getElementById("melding_"+id)){ melding.innerHTML = "Uw postcode is niet correct"; } }
	}else{ if(document.getElementById("melding_"+id)){ melding.innerHTML = "&nbsp;"; } }
}

function showResults(xmlData){
	document.body.style.cursor = "default";
	document.getElementById("straatnaam_"+item).className = "readonly disabled "+formfieldClassName; 
	document.getElementById("plaatsnaam_"+item).className = "readonly disabled "+formfieldClassName;
	
	if(document.getElementById("straatnaam_"+item).type=="select-one"){
		document.getElementById("straatnaam_"+item).parentNode.innerHTML = "<input id='straatnaam_"+item+"' type='text' name='adres_"+item+"' readonly='readonly' class='readonly disabled' "+formfieldExtraAttribute+" onkeyUp='saveStraatnaam(this.value);'>"+afterFormfield;
	}
	
	if(xmlData.getElementsByTagName("straatnaam").length>0){
		straatnamen = xmlData.getElementsByTagName("straatnaam");
		
		if(xmlData.getElementsByTagName("straatnaam").length>1){
			document.getElementById("straatnaam_"+item).parentNode.innerHTML = "<select id='straatnaam_"+item+"' class='"+formfieldClassName+" disabled' name='adres_"+item+"' onchange='adresToevoegen(this.value, "+item+"); saveStraatnaam(this.value, "+item+");'></select>"+afterFormfield;
			
			select = document.getElementById("straatnaam_"+item);
			for(var x=0; x<straatnamen.length; x++){
				select.options[x] = new Option(straatnamen[x].firstChild.data, straatnamen[x].firstChild.data, false, false);
			}
			select.options[x] = new Option("Anders", "Anders", false, false);
		}else{
			document.getElementById("straatnaam_"+item).value = straatnamen[0].firstChild.data; 
			document.getElementById("straatnaam_"+item).readOnly = true; 
			document.getElementById("straatnaam_"+item).className = "readonly disabled "+formfieldClassName;
		}
	}else{ document.getElementById("straatnaam_"+item).parentNode.innerHTML = "<input id='straatnaam_"+item+"' type='text' name='adres_"+item+"' class='"+formfieldClassName+" disabled' "+formfieldExtraAttribute+" onkeyUp='saveStraatnaam(this.value, "+item+");'>"+afterFormfield; }
	
	document.getElementById("straatnaam_hidden_"+item).value = document.getElementById("straatnaam_"+item).value;

	if(xmlData.getElementsByTagName("plaatsnaam").length>0){
		document.getElementById("plaatsnaam_"+item).value = xmlData.getElementsByTagName("plaatsnaam")[0].firstChild.data;
		document.getElementById("plaatsnaam_"+item).readOnly = true
		document.getElementById("plaatsnaam_"+item).className = "readonly disabled "+formfieldClassName;
	}else{ 
		document.getElementById("plaatsnaam_"+item).value = "";
		document.getElementById("plaatsnaam_"+item).readOnly = false; 
		document.getElementById("plaatsnaam_"+item).className = "disabled "+formfieldClassName;
	}
	
	if(document.getElementById("gemeentenaam_"+item)){
		if(xmlData.getElementsByTagName("gemeentenaam").length>0){
			document.getElementById("gemeentenaam_"+item).value = xmlData.getElementsByTagName("gemeentenaam")[0].firstChild.data;
			document.getElementById("gemeentenaam_"+item).readOnly = true
			document.getElementById("gemeentenaam_"+item).className = "readonly disabled "+formfieldClassName;
		}else{
			document.getElementById("gemeentenaam_"+item).value = "";
			document.getElementById("gemeentenaam_"+item).readOnly = false; 
			document.getElementById("gemeentenaam_"+item).className = "disabled "+formfieldClassName;
		}
	}
}

var adres_toegevoegd = false;
function adresToevoegen(adresValue, id){
	var straatnaam = document.getElementById("straatnaam_"+id);
	
	if(adresValue=="Anders"){
		if(!(adres_toegevoegd) && id==item){
			adres_toegevoegd = true;
			straatnaam.name = "adres_2";
			straatnaam.parentNode.innerHTML += "<br><input type='text' class='"+formfieldClassName+" disabled' name='adres' style='margin: 4px 0 0 0;' "+formfieldExtraAttribute+" onkeyUp='saveStraatnaam(this.value, "+id+");'>"+afterFormfield;
			if(navigator.appName=="Netscape") window.setTimeout("setDropdown(("+(straatnaam.options.length-1)+"), "+id+");", 100);
		}
	}else{
		if(adres_toegevoegd && id==item){
			adres_toegevoegd = false;
			straatnaam.name = "adres_1";
			straatnaam.options[(straatnaam.options.length-1)].selected=false;
			if(navigator.appName=="Netscape") window.setTimeout("setDropdown("+straatnaam.selectedIndex+", "+id+");", 100);
			
			var html_straatnaam = straatnaam.parentNode.innerHTML;
			straatnaam.parentNode.innerHTML = html_straatnaam.substring(0, html_straatnaam.toLowerCase().indexOf("<br>"));
		}
	}
}

function setDropdown(index, id){
	var straatnaam = document.getElementById("straatnaam_"+id);
	straatnaam.options[index].selected=true;
}

function saveStraatnaam(value, id){ document.getElementById("straatnaam_hidden_"+id).value = value; }
