/**********************************************************************************************
 *	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_2("/postcode_check/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 "+formfieldClassName;
	//document.getElementById("plaatsnaam_"+item).className = "readonly "+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' "+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+"' 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 "+formfieldClassName;
		}
	}else{ /*document.getElementById("straatnaam_"+item).parentNode.innerHTML = "<input id='straatnaam_"+item+"' type='text' name='adres_"+item+"' class='"+formfieldClassName+"' "+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 "+formfieldClassName;
	}else{
		document.getElementById("plaatsnaam_"+item).value = "";
		document.getElementById("plaatsnaam_"+item).readOnly = false;
		document.getElementById("plaatsnaam_"+item).className = 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 "+formfieldClassName;
		}else{
			document.getElementById("gemeentenaam_"+item).value = "";
			document.getElementById("gemeentenaam_"+item).readOnly = false;
			document.getElementById("gemeentenaam_"+item).className = formfieldClassName;
		}
	}
	
	$("#straatnaam_"+item).removeAttr("disabled"); 
	$("#straatnaam_"+item).removeAttr("readonly"); 
	$("#plaatsnaam_"+item).removeAttr("disabled"); 
	$("#plaatsnaam_"+item).removeAttr("readonly"); 
}

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+"' 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; }