//
// TESTING THE POSTCODE...
//
function initPCS()
{
	var idPostcode = document.getElementById("Postcode");
	var idHuisnr = document.getElementById("Huisnr");
	var idVerdubbelaar = document.getElementById("Verdubbelaar");
	var idTelefoonnummer = document.getElementById("Telefoonnummer");
	var idStraatnaam = document.getElementById("Straatnaam");
	var idWoonplaats = document.getElementById("Woonplaats");
	var idAanhef = document.getElementById("Aanhef");

	if (idPostcode && idHuisnr)
	{
		if (document.addEventListener)
		{
			// REGISTERING THE EVENTS FOR DOM COMPLIANT BROWSERS
			idPostcode.addEventListener("change",postcodeChanged,false);
			idHuisnr.addEventListener("change",postcodeChanged,false);
			idPostcode.addEventListener("blur",postcodeChanged,false);
			idHuisnr.addEventListener("blur",postcodeChanged,false);

		}
		else
		{
			// REGISTERING THE EVENTS FOR IE
			idPostcode.attachEvent("onchange",postcodeChanged);
			idHuisnr.attachEvent("onchange",postcodeChanged);
			idPostcode.attachEvent("onblur",postcodeChanged);
			idHuisnr.attachEvent("onblur",postcodeChanged);
		}
		if(idStraatnaam.value == "" || idWoonplaats.value == "")
		{
			setTimeout("postcodeChanged()", 500);
		}
	}
	if (idVerdubbelaar)
	{
		if (document.addEventListener)
		{
			// REGISTERING THE EVENTS FOR DOM COMPLIANT BROWSERS
			idVerdubbelaar.addEventListener("click",VerdubbelaarChanged,false);
			var radios = document.getElementById ('Aantalloten');
			if (radios)
			{
				var inputs = radios.getElementsByTagName ('input');
				if (inputs)
				{
					for (var i = 0; i < inputs.length; ++i)
					{
						if (inputs[i].type == 'radio')
						{
							inputs[i].addEventListener("click",VerdubbelaarChanged,false);
						}
					}
				}
			}
		}
		else
		{
			// REGISTERING THE EVENTS FOR IE
			idVerdubbelaar.attachEvent("onclick",VerdubbelaarChanged);
			var radios = document.getElementById ('Aantalloten');
			if (radios)
			{
				var inputs = radios.getElementsByTagName ('input');
				if (inputs)
				{
					for (var i = 0; i < inputs.length; ++i)
					{
					if (inputs[i].type == 'radio')
					{
						inputs[i].attachEvent("onclick",VerdubbelaarChanged);
					}
					}
				}
			}
		}
		VerdubbelaarChanged();
	}
	if (idTelefoonnummer)
	{
		if (document.addEventListener)
		{
			// REGISTERING THE EVENTS FOR DOM COMPLIANT BROWSERS
			idTelefoonnummer.addEventListener("blur",telefoonnummerChanged,false);

		}
		else
		{
			// REGISTERING THE EVENTS FOR IE
			idTelefoonnummer.attachEvent("onblur",telefoonnummerChanged);
		}
	}
	
	if (idAanhef)
	{
		var inputs = idAanhef.getElementsByTagName ('input');
		if (inputs)
		{
			var qsAanhef = getQueryParamValue("ah");
			for (var i = 0; i < inputs.length; ++i)
			{
				if ((inputs[i].type == 'radio') && (inputs[i].value == qsAanhef))
				{
					inputs[i].checked = true;
				}
			}
		}
	}
}

var lastPcChecked = null;
var lastHuisnrChecked = null;

function postcodeChanged(e)
{
	var idPostcode = document.getElementById("Postcode");
	var idHuisnr = document.getElementById("Huisnr");
	var idStraatnaam = document.getElementById("Straatnaam");
	var idWoonplaats = document.getElementById("Woonplaats");

	var postcode = idPostcode.value;
	var huisnummer = idHuisnr.value;

	if (postcode != null && postcode != "")
	{
		postcode = postcode.toUpperCase();
		postcode = postcode.replace(" ", "");
		postcode = postcode.substr(0,6);
		idPostcode.value = postcode;
	}

	if (idStraatnaam && idWoonplaats && (postcode != lastPcChecked || huisnummer != lastHuisnrChecked))
	{
		if (postcode != null && postcode != "" && huisnummer != null && huisnummer != "")
		{
			lastPcChecked = postcode;
			lastHuisnrChecked = huisnummer;
			testPostcode(postcode, huisnummer);
		}
		else
		{
			idStraatnaam.value= "";
			idWoonplaats.value= "";
			idStraatnaam.disabled = true;
			idWoonplaats.disabled = true;
			idStraatnaam.className = 'fieldDis';
			idWoonplaats.className = 'fieldDis';
			setLabel(idStraatnaam.parentNode,"txtGrey");
			setLabel(idWoonplaats.parentNode,"txtGrey");
		}
	}
}

function telefoonnummerChanged(e)
{
	var idTelefoonnummer = document.getElementById("Telefoonnummer");
	if (idTelefoonnummer.value == "06-")
	{
		idTelefoonnummer.value = "";
	}
}

function VerdubbelaarChanged(e)
{
	var idVerdubbelaar = document.getElementById("Verdubbelaar");
	var jpv = false;
	if (idVerdubbelaar) {
		jpv = idVerdubbelaar.checked;
	}

	var nrLots = 0;
	var radios = document.getElementById ('Aantalloten');
	if (radios)
	{
		var inputs = radios.getElementsByTagName ('input');
		if (inputs)
		{
			for (var i = 0; i < inputs.length; ++i)
			{
				if (inputs[i].type == 'radio' && inputs[i].checked)
				{
					nrLots = inputs[i].value;
					sendVarToFlash("kieslotenFlash", "nieuwAantal", inputs[i].value); // geef waarde van radiobutton door aan Flash
				}
			}
		}
	}
	else
	{
		nrLots = 1;
	}

	var jpvid = document.getElementById("jpv");
	if ((nrLots > 0) && jpvid)
	{
		if (nrLots > 1)
		{
			if (jpv)
			{
				jpvid.innerHTML =	"Ik ga meespelen met " + nrLots + " loten &agrave; 9,75 euro inclusief Verdubbelaar.";
			}
			else
			{
				jpvid.innerHTML =	"Ik ga meespelen met " + nrLots + " loten &agrave; 8 euro.";
			}
		}
		else
		{
			if (jpv)
			{
				jpvid.innerHTML =	"Ik ga meespelen met " + nrLots + " lot &agrave; 9,75 euro inclusief Verdubbelaar.";
			}
			else
			{
				jpvid.innerHTML =	"Ik ga meespelen met " + nrLots + " lot &agrave; 8 euro.";
			}
		}
	}
}

function setLabel(labelElement,classElement)
{
	var labelElements = labelElement.getElementsByTagName('label');

	for(var i = 0; i < labelElements.length; i++)
	{
		labelElements[i].className = classElement;
	}
}

function testPostcode(postcode, huisnummer)
{
	var errormessage = "Deze postcode kan niet gevonden worden. Voer aub uw straat en woonplaats in.";
	var myPostcodeScript = "/web/wcbservlet/nl.gx.ngdl.ngdlformcomponents.servlet.PostcodeXmlHttpRequestServlet?postcode=" + postcode + "&huisnummer=" + huisnummer;

	if (0 > postcode.search(/[0-9]{4}[A-Za-z]{2}/))
	{	return false; }

	var xmlHttp = null;
	// Mozilla, Opera, Safari en Internet Explorer 7
	if (typeof XMLHttpRequest != 'undefined')
	{
		xmlHttp = new XMLHttpRequest();
	}
	if (!xmlHttp)
	{
		// IE<7
		try
		{
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				xmlHttp = null;
			}
		}
	}
	if (xmlHttp)
	{
		xmlHttp.open('GET', myPostcodeScript, true);
		xmlHttp.onreadystatechange = function ()
		{
			var idStraatnaam = document.getElementById("Straatnaam");
			var idWoonplaats = document.getElementById("Woonplaats");
			if (idStraatnaam && idWoonplaats)
			{
				if (xmlHttp.readyState == 4)
				{
					var responseString = xmlHttp.responseText;
					if ((responseString != "") && (responseString.indexOf("|")>0))
					{
						var myPlaats = responseString.split("|");
						idStraatnaam.value = myPlaats[0];
						idWoonplaats.value = myPlaats[1];
						// In Safari disabling fields leads to not showing the input anymore,
						// however this is not a strict problem because the value is still present.
						// This is probably a bug (non-expected behaviour) in Safari and needs to be fixed (by Apple).
						idStraatnaam.disabled = true;
						idWoonplaats.disabled = true;
						idStraatnaam.className = 'fieldDis';
						idWoonplaats.className = 'fieldDis';
						setLabel(idStraatnaam.parentNode,"txtGrey");
						setLabel(idWoonplaats.parentNode,"txtGrey");
						setFormularError(document.getElementById("Postcode"), false, errormessage, true);
					}
					else
					{
						idStraatnaam.value = "";
						idWoonplaats.value = "";
						idStraatnaam.disabled = false;
						idWoonplaats.disabled = false;
						idStraatnaam.className = 'formular';
						idWoonplaats.className = 'formular';
						setLabel(idStraatnaam.parentNode,"");
						setLabel(idWoonplaats.parentNode,"");
						setFormularError(document.getElementById("Postcode"), true, errormessage, true);
					}
				}
			}
		};
		xmlHttp.send(null);
	}
	else
	{
		return false;
	}
}

//
//	This function finds the parent div 'formular' and encapsulates it in a div class="formularError".
//	This will result in a red box around formular.
//	input:
//		- formElement -> the element which contains (or doesn't contain) a error
//		- isFout -> boolean tests is the formelement is fout
//		- message -> the message to show when it's isFout (else the old message is cleared and the red box is removed)
//		- toonMessage -> als deze op true staat dan tonen we de error message in het form...anders in een alertbox
//

function setFormularError(formElement, isFout, message, toonMessage)
{

	var parent;			// the parent
	var depth = 1;			// current depth
	var maxDepth = 4;		// max search depth
	var divClass = "formular";	// the class we re searching for
	var errorHTMLTag = "<p class='txtRed'>"+message+"</p>"; // the message set within a html tag for making red (see css)
	// search the formular div
	if (!formElement) {
		if(isFout && toonMessage && message != "@errormessage@") { alert(message); }
		return false;
	}
	// if there is no parentnode, the element is a radiobutton,
	// so we have to get the first arrayelement to continue
	if (!formElement.parentNode) formElement = formElement[0];
	parent = formElement;
	
	var isFound = false;
	// loop through the parents until we find formular or until we went too deep
	while(parent.parentNode && !isFound && depth < maxDepth)
	{
		parent = parent.parentNode;
		isFound = (parent.className == divClass);
		depth++;
	}
	// if we didn t find the formular, the element was not in a subform...
	// to make the element red we select the parent instead
	if(!isFound)
	{
		parent = formElement.parentNode;
	}

	// we set the parent div class to 'formularError'.
	// This will make the formelement red (see css) and the tekst errormessage red
	if(isFout)
	{
		parent.parentNode.className = 'formularError';

		if(toonMessage && message != "@errormessage@")
		{
				// now we set the errormessage
			var divs = parent.parentNode.getElementsByTagName("div");
			var isFound = false;
			for (var i = 0; i < divs.length; i++)
			{
				if(!isFound)
				{
					classtype = divs[i].className;
					if ( classtype == "errorMessage")
					{
						// set the message
						divs[i].innerHTML = errorHTMLTag;
						isFound = true;
					}
				}
			}
			// als we niet de formularError div kunnen vinden tonen we de error in een alertbox
			if(!isFound)
			{
				alert(message);
			}
		}
	}
	else
	{
		if (parent.parentNode.className == 'formularError') {
			parent.parentNode.className = parent.parentNode.parentNode.className;
		}

		if(toonMessage)
		{
			// now we set the errormessage
			var divs = parent.parentNode.getElementsByTagName("div");
			var isFound = false;
			for (var i = 0; i < divs.length; i++)
			{
				if(!isFound)
				{
					classtype = divs[i].className;
					if ( classtype == "errorMessage")
					{
						// set the message
						divs[i].innerHTML = "";
						isFound = true;
					}
				}
			}
		}
	}
}
