
	var BELGIUM = 'BE';
	var NETHERLANDS = 'NL';

	var iMessageNumber = 2;
	var bIgnoreSubscribeCheck = false;

	var ERROR_PRICE_SELECT				=	'msg_selected_price';

	var ERROR_FIRSTNAME					=	'firstname';
	var ERROR_SURNAME_PREFIX			=	'surname_prefix';
	var ERROR_SURNAME					=	'surname';
	var ERROR_GENDER					=	'gender';
	var ERROR_BIRTHDAY					=	'birthday';
	var ERROR_EMAIL						=	'email';
	var ERROR_COUNTRY					=	'country';

	var ERROR_NL_ZIPCODE_HOUSENUMBER	=	'dutch_address';
	var ERROR_NL_HOUSENUMBER			=	'housenumber_nl';
	var ERROR_NL_ZIPCODE				=	'zipcode_nl';
	var ERROR_NL_ADDITIVE				=	'additive_nl';
	var ERROR_NL_TELEPHONE				=	'telephone';

	var ERROR_BE_STREET					=	'street_be';
	var ERROR_BE_HOUSENUMBER			=	'housenumber_be';
	var ERROR_BE_ADDITIVE				=	'additive_be';
	var ERROR_BE_ZIPCODE				=	'zipcode_be';
	var ERROR_BE_CITY					=	'city_be';
	var ERROR_BE_TELEPHONE				=	'telephone';
	var ERROR_CONDITIONS				=	'conditions';

	var aMessages 						=	Array();
	aMessages['msg_selected_price']		=	'U heeft geen prijs geselecteerd';

	var oXmlHttp 		= false;
	if (window.XMLHttpRequest) { // IE/ Mozilla, Safari,...
	   oXmlHttp = new XMLHttpRequest();
	   if (oXmlHttp.overrideMimeType) {
	       oXmlHttp.overrideMimeType('text/xml');
	   }
	} else if (window.ActiveXObject) { // IE
	   try {

	       oXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	   } catch (e) {
	       try {
	           oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	       } catch (e) {}
	   }
	}

	function checkErrors(bAlert)
	{
		var pCount = 0;
		var sMessage = "\r\n";
		var bOnlySubscribeError = true;
		if (typeof(bAlert) === "undefined")
		{
			bAlert = false;
		}
		for (sFieldName in aErrors)
		{
			if (sFieldName !== 'conditions_text')
			{
				bOnlySubscribeError = false;
			}
			sFieldName = sFieldName.replace('template', 'question');
			if (false !== strpos(sFieldName, 'additive'))
			{
				sFieldName = sFieldName.replace('additive', 'housenumber');
			}
			if (null !== getElement(sFieldName.replace('_text', '_error_text')))
			{
				sFieldName = sFieldName.replace('_text', '_error_text');
			}
			var oObject = getElement(sFieldName);
			if (null !== oObject)
			{
				oObject.style.color = 'red';
			}
			if (sFieldName.substr(0,4) == 'msg_')
			{
				sMessage += "\r\n"+aMessages[sFieldName];
			}
			if (sFieldName.indexOf('error_text') !== -1)
			{
				oObject.style.display = '';
			}
			pCount++;
		}
		if (0 === pCount)
		{
			return true;
		}
		if (false === bOnlySubscribeError && null !== getElement('signup_form_holder_quick'))
		{
			showHideQuickEditForm(true);
		}

		if (bAlert === true)
		{
			switch(iMessageNumber)
			{
				case 1:
				{
					alert("Niet alle velden zijn juist ingevuld, controleer uw invoer en probeer het opnieuw"+sMessage);
				}
				break;

				case 2:
				default:
				{
					alert("Niet alle vragen zijn juist ingevuld, controleer uw invoer en probeer het opnieuw"+sMessage);
				}
				break;
			}
		}
		return false;
	}

	function clearErrors(bAlert)
	{
		for (sFieldName in aErrors)
		{
			var sFieldName = sFieldName.replace('template', 'question');
			if (null !== getElement(sFieldName.replace('_text', '_error_text')))
			{
				sFieldName = sFieldName.replace('_text', '_error_text');
			}
			var oObject = getElement(sFieldName);
			if (null !== oObject)
			{
				oObject.style.color = '';
			}
			if (sFieldName.indexOf('error_text') !== -1)
			{
				oObject.style.display = 'none';
			}
		}
		aErrors = Array();
	}

	function validate()
	{
		var pValidationPointer;
		clearErrors();
		bIgnoreSubscribeCheck = false;
		for (pValidationPointer in aValidateItems)
		{
			eval(aValidateItems[pValidationPointer]);
		}
		return checkErrors(true);
	}

	function validateWithoutErrorCheck()
	{
		var pValidationPointer;
		bIgnoreSubscribeCheck = true;
		clearErrors();
		for (pValidationPointer in aValidateItems)
		{
			eval(aValidateItems[pValidationPointer]);
		}
		bIgnoreSubscribeCheck = false;
	}

	function isValidEmailAddress(sEmailAddress)
	{
		var aInvalidEmailAdresses		= Array();
			aInvalidEmailAdresses[0] 	= '10minutemail.com';
			aInvalidEmailAdresses[1] 	= 'jetable.org';
			aInvalidEmailAdresses[2] 	= 'kasmail.com';
			aInvalidEmailAdresses[3] 	= 'yopmail.com';
			aInvalidEmailAdresses[4] 	= 'haltospam.com';
			aInvalidEmailAdresses[5]	= 'kleemail.com';
			aInvalidEmailAdresses[6]	= 'spamgourmet.com';
			aInvalidEmailAdresses[7] 	= 'mailinator.com';
			aInvalidEmailAdresses[8] 	= 'tempinbox.com';
			aInvalidEmailAdresses[9] 	= 'operamail.com';
			aInvalidEmailAdresses[10]	= 'owlpic.com';
			aInvalidEmailAdresses[11]	= 'bofthew.com';
			aInvalidEmailAdresses[12]	= 'wegwerpemail.nl';
			aInvalidEmailAdresses[13]	= 'ikbenspamvrij.nl';
			aInvalidEmailAdresses[14]	= 'lhsdv.com';
			aInvalidEmailAdresses[15]	= 'prtnx.com';
			aInvalidEmailAdresses[15]	= 'guerrillamailblock.com';
			aInvalidEmailAdresses[15]	= 'fakeinbox.com';
			aInvalidEmailAdresses[15]	= 'pjjkp.com';
			aInvalidEmailAdresses[15]	= 'spamavert.com';
			aInvalidEmailAdresses[15]	= 'tyldd.com';
			aInvalidEmailAdresses[15]	= 'mailmetrash.com';
			aInvalidEmailAdresses[15]	= 'jnxjn.com';
			aInvalidEmailAdresses[15]	= 'spamdecoy.net';
			aInvalidEmailAdresses[15]	= 'trash-mail.com';
			aInvalidEmailAdresses[15]	= 'dispostable.com';
			aInvalidEmailAdresses[16]	= 'ma_che_ri@msn.com';
			aInvalidEmailAdresses[17]	= 'klzlk.com';
			aInvalidEmailAdresses[17]	= 'bobmail.info';
			
		if (false === sEmailAddress.indexOf('@') || false === sEmailAddress.indexOf('.'))
		{
			return false;
		}
		var aEmailArray 	= sEmailAddress.split('@');

		for (iDomainPointer in aInvalidEmailAdresses)
		{
			if ('indexOf' !== iDomainPointer)
			{
				if (-1 !== sEmailAddress.indexOf(aInvalidEmailAdresses[iDomainPointer]))
				{
					alert('This email address is not alowed');
					return false;
				}
			}
		}

		if (false === isset(aEmailArray[1]))
		{
			return false;
		}

		if (false === isNumeric(aEmailArray[1].replace('.','')))
		{
			aDomainArray = aEmailArray[1].split('.');
			iDomainArraySize = aDomainArray.length;
			if (iDomainArraySize < 2)
			{
				return false;
			}
		}
		return true;
	}

	function cleanTelephoneNumber(sTelephoneNumber, eCountry)
	{
		if (typeof(eCountry) === "undefined")
		{
			eCountry = NETHERLANDS;
		}

		sTelephoneNumber = sTelephoneNumber.replace('-','').replace(' ', '');
		switch(eCountry)
		{
			case BELGIUM:
			{
				sTelephoneNumber = sTelephoneNumber.replace('+320', '0').replace('+32', '0');
			}
			break;

			default:
			case NETHERLANDS:
			{
				sTelephoneNumber = sTelephoneNumber.replace('+310', '0').replace('+31', '0');
			}
			break;
		}
		return sTelephoneNumber;
	}

	function isValidTelephoneNumber(sTelephoneNumber, eCountry)
	{
		if (typeof(eCountry) === "undefined")
		{
			eCountry = NETHERLANDS;
		}
		sTelephoneNumber = cleanTelephoneNumber(sTelephoneNumber, eCountry);
		switch(eCountry)
		{
			default:
			case NETHERLANDS:
			{
				if (strlen(sTelephoneNumber) !== 10 || false === isNumeric(sTelephoneNumber))
				{
					return false;
				}
			}
			break;

			case BELGIUM:
			{
				if ((strlen(sTelephoneNumber) !== 10 && strlen(sTelephoneNumber) !== 9) || false === isNumeric(sTelephoneNumber))
				{
					return false;
				}
			}
			break;
		}
		return true;
	}

	function isValidAddress(aAddress, eCountry)
	{
		if (typeof(eCountry) === "undefined")
		{
			eCountry = NETHERLANDS;
		}

		switch(eCountry)
		{
			case BELGIUM:
			{
				if (false === isset(aAddress['housenumber']) || true === empty(aAddress['housenumber'])
				||  10 < strlen(aAddress['housenumber']))
				{
					return ERROR_BE_HOUSENUMBER;
				}

				if (8 <= strlen(aAddress['additive']) && false !== strpos(aAddress['street'], aAddress['additive']))
				{
					return ERROR_BE_ADDITIVE;
				}

				if (false === isset(aAddress['zipcode_numbers']) || true === empty(aAddress['zipcode_numbers'])
				||  false === isNumeric(aAddress['zipcode_numbers']) || 4 !== strlen(trim(aAddress['zipcode_numbers'])))
				{
					return ERROR_BE_ZIPCODE;
				}

				if (false === isset(aAddress['street']) || true === empty(aAddress['street'])
				||  true === isNumeric(aAddress['street']))
				{
					return ERROR_BE_STREET;
				}

				if (false === isset(aAddress['city']) || true === empty(aAddress['city'])
				||  true === isNumeric(aAddress['city']))
				{
					return ERROR_BE_CITY;
				}
				aAddress['city'] = strtoupper(aAddress['city']);
			}
			break;

			default:
			case NETHERLANDS:
			{
				if (false === isset(aAddress['housenumber']) || true === empty(aAddress['housenumber'])
				||  10 < strlen(aAddress['housenumber']))
				{
					return ERROR_NL_HOUSENUMBER;
				}

				if (2 !== strlen(trim(aAddress['zipcode_letters'])) || true === isNumeric(trim(aAddress['zipcode_letters'])))
				{
					return ERROR_NL_ZIPCODE;
				}
				aAddress['zipcode_letters'] = strtoupper(trim(aAddress['zipcode_letters']));

				if (4 !== strlen(trim(aAddress['zipcode_numbers'])) || false === isNumeric(trim(aAddress['zipcode_numbers'])))
				{
					return ERROR_NL_ZIPCODE;
				}

				bZipCodeReturn = 	zipCodeCheck
									(
										trim(aAddress['zipcode_numbers'])+trim(aAddress['zipcode_letters']),
										trim(aAddress['housenumber']),
										(true === isset(aAddress['additive']) ? trim(aAddress['additive']) : ''),
										'NL'
									);
				if (false === bZipCodeReturn)
				{
					return ERROR_NL_ZIPCODE_HOUSENUMBER;
				}
				else
				{
					if (8 <= strlen(aAddress['additive']) && false !== strpos(aAddress['street'], aAddress['additive']))
					{
						return ERROR_NL_ADDITIVE;
					}
				}
			}
			break;
		}
		return true;
	}

	function zipCodeCheck(sZipCode, sHouseNumber, sAdditive, sCountry)
	{
		return true;
	}

	function isValidBirthDay(sDay, sMonth, sYear)
	{
		if (false === checkdate(sMonth, sDay, sYear))
		{
			return false;
		}
		return true;
	}

	function isValidBankAccountNumber(sAccountNumber, eCountry)
	{
		if (typeof(eCountry) === "undefined")
		{
			eCountry = NETHERLANDS;
		}

		switch (eCountry)
		{
			case BELGIUM:
			{
				sAccountNumber 	= sAccountNumber = sAccountNumber.replace('-', '').replace('.', '').replace(' ', '');
				sFirstTenChars 	= sAccountNumber.substr(0, 10);
				sLastTwoChars	= sAccountNumber.substr(-2);

				if (parseInt(sLastTwoChars) === parseInt((sFirstTenChars - (floor(sFirstTenChars / 97) * 97))))
				{
					return true;
				}

			}
			break;

			default:
			case NETHERLANDS:
			{
				sAccountNumber = strtoupper(sAccountNumber);
				sAccountNumber = sAccountNumber.replace('.', '').replace(',', '').replace(' ', '');


				if (strlen(sAccountNumber) == 9)
				{
					// Account number is not Postbank
					iTotal = 0;
					sAccountNumber = ReverseString(sAccountNumber);
					for (i = 0; i < 9; i++)
					{
						iTotal += parseInt(sAccountNumber.substr(i, 1) * (i+1));
					}

					if ((iTotal % 11) == 0)
					{
						return true;
					}
				}
				else
				{
					if (strlen(sAccountNumber) >= 2 && strlen(sAccountNumber) <= 8)
					{
						return true;
					}
				}
			}
			break;
		}
		return false;
	}

	function validateStep1()
	{
		var aInputElements 	= getAllElements('input');
		var aSelectElements	= getAllElements('select');
		var aData 			= Array();
		iMessageNumber		= 1;

		var iInputElementCount = aInputElements.length;
		var pCount = 0;
		for (pCount = 0; pCount < iInputElementCount; pCount++)
		{
			if (aInputElements[pCount].name.indexOf('country') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['country'] = aInputElements[pCount].value;
				}
			}
			else
			{
				aData[aInputElements[pCount].name] = aInputElements[pCount].value;
			}
		}

		var iSelectElementCount = aSelectElements.length;
		for (pCount = 0; pCount < iSelectElementCount; pCount++)
		{
			aData[aSelectElements[pCount].name] = aSelectElements[pCount].options[aSelectElements[pCount].selectedIndex].value;
		}

		var pPos = 0;

		if ((false === isset(aData['country']) || (NETHERLANDS !== strtoupper(aData['country']) && BELGIUM  !== strtoupper(aData['country']))))
		{
			aErrors[ERROR_COUNTRY+'_text'] = pPos;
			pPos++;
		}
		else
		{
			if (false === isset(aData['country']))
			{
				aData['country'] = NETHERLANDS;
			}
			switch (strtoupper(aData['country']))
			{
				case BELGIUM:
				{
					var aAddress = Array();
					aAddress['housenumber'] 	= true === isset(aData['housenumber_be']) 		? aData['housenumber_be'] 		: '';
					aAddress['additive'] 		= true === isset(aData['additive_be']) 			? aData['additive_be'] 			: '';
					aAddress['zipcode_numbers'] = true === isset(aData['zipcode_numbers_be']) 	? aData['zipcode_numbers_be'] 	: '';
					aAddress['street'] 			= true === isset(aData['street_be']) 			? aData['street_be'] 			: '';
					aAddress['city'] 			= true === isset(aData['city_be']) 				? aData['city_be'] 				: '';
					aAddress = isValidAddress(aAddress, BELGIUM);
					if (true !== aAddress)
					{
						aErrors[aAddress+'_text'] = pPos;
						pPos++;
					}
				}
				break;

				default:
				case NETHERLANDS:
				{
					var aAddress = Array();
					aAddress['housenumber'] 		= true === isset(aData['housenumber_nl']) 		? aData['housenumber_nl'] 		: '';
					aAddress['additive'] 			= true === isset(aData['additive_nl']) 			? aData['additive_nl'] 			: '';
					aAddress['zipcode_numbers'] 	= true === isset(aData['zipcode_numbers_nl']) 	? aData['zipcode_numbers_nl'] 	: '';
					aAddress['zipcode_letters'] 	= true === isset(aData['zipcode_letters_nl']) 	? aData['zipcode_letters_nl'] 	: '';
					aAddress = isValidAddress(aAddress, NETHERLANDS);

					if (true !== aAddress)
					{
						if (aAddress === ERROR_NL_ZIPCODE_HOUSENUMBER)
						{
							aErrors[ERROR_NL_HOUSENUMBER+'_text'] = pPos;
							pPos++;
							aErrors[ERROR_NL_ZIPCODE+'_text'] = pPos;
							pPos++;
						}
						else
						{
							aErrors[ERROR_NL_ZIPCODE+'_text'] = pPos;
							pPos++;
							aErrors[aAddress+'_text'] = pPos;
							pPos++;
						}
					}
				}
				break;
			}
		}

		if (false !== isset(aData['email']) && false === isValidEmailAddress(aData['email']))
		{
			aErrors[ERROR_EMAIL+'_text'] = pPos;
			pPos++;
		}

	}

	function validateStep2(eCountry)
	{
		var aInputElements 	= getAllElements('input');
		var aSelectElements	= getAllElements('select');
		var aData 			= Array();
		iMessageNumber		= 1;

		var iInputElementCount = aInputElements.length;
		var pCount = 0;
		for (pCount = 0; pCount < iInputElementCount; pCount++)
		{
			if (aInputElements[pCount].name.indexOf('gender') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['gender'] = aInputElements[pCount].value;
				}
			}
			else if (aInputElements[pCount].name.indexOf('conditions') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['conditions'] = "true";
				}
			}
			else
			{
				aData[aInputElements[pCount].name] = aInputElements[pCount].value;
			}
		}

		var iSelectElementCount = aSelectElements.length;
		for (pCount = 0; pCount < iSelectElementCount; pCount++)
		{
			aData[aSelectElements[pCount].name] = aSelectElements[pCount].options[aSelectElements[pCount].selectedIndex].value;
		}

		var pPos = 0;
		if (1 > strlen(trim(aData['firstname'])))
		{
			aErrors[ERROR_FIRSTNAME+'_text'] = pPos;
			pPos++;
		}

		if (false === isset(aData['surname']) || 1 > strlen(trim(aData['surname'])))
		{
			aErrors[ERROR_SURNAME+'_text'] = pPos;
			pPos++;
		}

		if (false === isset(aData['gender']) || ('m' !== aData['gender'] && 'f' !== aData['gender']))
		{
			aErrors[ERROR_GENDER+'_text'] = pPos;
			pPos++;
		}

		switch (strtoupper(eCountry))
		{
			case BELGIUM:
			{
				if (false !== isset(aData['telephone']) && true !== empty(aData['telephone'])&& false === isValidTelephoneNumber(aData['telephone'], BELGIUM))
				{
					aErrors[ERROR_BE_TELEPHONE+'_text'] = pPos;
					pPos++;
				}
			}
			break;

			default:
			case NETHERLANDS:
			{
				if (true === isset(aData['telephone']) && true === isValidTelephoneNumber(aData['telephone'], NETHERLANDS))
				{
					bHasTelephone = true;
				}

				if (false === bHasTelephone)
				{
					aErrors[ERROR_NL_TELEPHONE+'_text'] = true;
				}
			}
			break;
		}

		if (false === isset(aData['birthday_day']) || false === isset(aData['birthday_month']) || false === isset(aData['birthday_year'])
		||  false === isValidBirthDay(aData['birthday_day'], aData['birthday_month'], aData['birthday_year']))
		{
			aErrors[ERROR_BIRTHDAY+'_text'] = pPos;
			pPos++;
		}

		if (false === bIgnoreSubscribeCheck)
		{
			if (false === isset(aData['conditions']))
			{
				aErrors[ERROR_CONDITIONS+'_text'] = pPos;
				pPos++;
			}
		}
	}

	function validateRegistration()
	{
		var aInputElements 	= getAllElements('input');
		var aSelectElements	= getAllElements('select');
		var aData 			= Array();
		iMessageNumber		= 1;

		var iInputElementCount = aInputElements.length;
		var pCount = 0;
		for (pCount = 0; pCount < iInputElementCount; pCount++)
		{
			if (aInputElements[pCount].name.indexOf('selected_price') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['selected_price'] = aInputElements[pCount].value;
				}
			}
			else if (aInputElements[pCount].name.indexOf('gender') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['gender'] = aInputElements[pCount].value;
				}
			}
			else if (aInputElements[pCount].name.indexOf('country') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['country'] = aInputElements[pCount].value;
				}
			}
			else if (aInputElements[pCount].name.indexOf('conditions') !== -1)
			{
				if (aInputElements[pCount].checked === true || aInputElements[pCount].checked == "checked")
				{
					aData['conditions'] = "true";
				}
			}
			else
			{
				aData[aInputElements[pCount].name] = aInputElements[pCount].value;
			}

		}

		var iSelectElementCount = aSelectElements.length;
		for (pCount = 0; pCount < iSelectElementCount; pCount++)
		{
			aData[aSelectElements[pCount].name] = aSelectElements[pCount].options[aSelectElements[pCount].selectedIndex].value;
		}

		var pPos = 0;

		if (false === isset(aData['selected_price']) && false === isset(ignorePrice))
		{
			aErrors[ERROR_PRICE_SELECT] = pPos;
			pPos++;
		}

		if (1 > strlen(trim(aData['firstname'])))
		{
			aErrors[ERROR_FIRSTNAME+'_text'] = pPos;
			pPos++;
		}

		if (false === isset(aData['surname']) || 1 > strlen(trim(aData['surname'])))
		{
			aErrors[ERROR_SURNAME+'_text'] = pPos;
			pPos++;
		}

		if (false === isset(aData['gender']) || ('m' !== aData['gender'] && 'f' !== aData['gender']))
		{
			aErrors[ERROR_GENDER+'_text'] = pPos;
			pPos++;
		}

		if (false === isset(aData['country']) || (NETHERLANDS !== strtoupper(aData['country']) && BELGIUM  !== strtoupper(aData['country'])))
		{
			aErrors[ERROR_COUNTRY+'_text'] = pPos;
			pPos++;
		}
		else
		{

			switch (strtoupper(aData['country']))
			{
				case BELGIUM:
				{
					if (false !== isset(aData['telephone']) && true !== empty(aData['telephone'])&& false === isValidTelephoneNumber(aData['telephone'], BELGIUM))
					{
						aErrors[ERROR_BE_TELEPHONE+'_text'] = pPos;
						pPos++;
					}

					var aAddress = Array();
					aAddress['housenumber'] 	= true === isset(aData['housenumber_be']) 		? aData['housenumber_be'] 		: '';
					aAddress['additive'] 		= true === isset(aData['additive_be']) 			? aData['additive_be'] 			: '';
					aAddress['zipcode_numbers'] = true === isset(aData['zipcode_numbers_be']) 	? aData['zipcode_numbers_be'] 	: '';
					aAddress['street'] 			= true === isset(aData['street_be']) 			? aData['street_be'] 			: '';
					aAddress['city'] 			= true === isset(aData['city_be']) 				? aData['city_be'] 				: '';
					aAddress = isValidAddress(aAddress, BELGIUM);
					if (true !== aAddress)
					{
						aErrors[aAddress+'_text'] = pPos;
						pPos++;
					}
				}
				break;

				default:
				case NETHERLANDS:
				{
					var aAddress = Array();
					aAddress['housenumber'] 		= true === isset(aData['housenumber_nl']) 		? aData['housenumber_nl'] 		: '';
					aAddress['additive'] 			= true === isset(aData['additive_nl']) 			? aData['additive_nl'] 			: '';
					aAddress['zipcode_numbers'] 	= true === isset(aData['zipcode_numbers_nl']) 	? aData['zipcode_numbers_nl'] 	: '';
					aAddress['zipcode_letters'] 	= true === isset(aData['zipcode_letters_nl']) 	? aData['zipcode_letters_nl'] 	: '';
					aAddress = isValidAddress(aAddress, NETHERLANDS);
					if (true !== aAddress)
					{
						if (aAddress === ERROR_NL_ZIPCODE_HOUSENUMBER)
						{
							aErrors[ERROR_NL_HOUSENUMBER+'_text'] = pPos;
							pPos++;
							aErrors[ERROR_NL_ZIPCODE+'_text'] = pPos;
							pPos++;
						}
						else
						{
							aErrors[aAddress+'_text'] = pPos;
							pPos++;
							aErrors[ERROR_NL_ZIPCODE+'_text'] = pPos;
							pPos++;
						}
					}
					else
					{
						bHasTelephone = false;
						if (false === isset(aData['telephone']) || true === empty(aData['telephone']))
						{
							bHasTelephone = true;
						}

						if (true === isset(aData['telephone']) && true === isValidTelephoneNumber(aData['telephone'], NETHERLANDS))
						{
							bHasTelephone = true;
						}

						if (false === bHasTelephone)
						{
							aErrors[ERROR_NL_TELEPHONE+'_text'] = true;
						}

					}
				}
				break;
			}
		}

		if (false === isset(aData['birthday_day']) || false === isset(aData['birthday_month']) || false === isset(aData['birthday_year'])
		||  false === isValidBirthDay(aData['birthday_day'], aData['birthday_month'], aData['birthday_year']))
		{
			aErrors[ERROR_BIRTHDAY+'_text'] = pPos;
			pPos++;
		}

		if (false !== isset(aData['email']) && false === isValidEmailAddress(aData['email']))
		{
			aErrors[ERROR_EMAIL+'_text'] = pPos;
			pPos++;
		}

		if (false === bIgnoreSubscribeCheck)
		{
			if (false === isset(aData['conditions']))
			{
				aErrors[ERROR_CONDITIONS+'_text'] = pPos;
				pPos++;
			}
		}

	}

	function check_single_answers_dropdown(iQuestionId, iAnswerId, mObsolete1, mObsolete2)
	{
		var aObjects		=	getAllElements('select');
		var iObjectCount	=	aObjects.length;
		var iAnswerCount	=	0;
		var bValidated		=	false;

		for (var pCount = 0; pCount < iObjectCount; pCount++)
		{
			if (aObjects[pCount].name.indexOf('question_'+iQuestionId) !== -1)
			{
				for (var pSubCount = 0; pSubCount < aObjects[pCount].options.length; pSubCount++)
				{
					if (true === aObjects[pCount].options[pSubCount].selected || "selected" === aObjects[pCount].options[pSubCount].selected)
					{
						if ("" != aObjects[pCount].options[pSubCount].value)
						{
							bValidated = true;
						}
					}
				}
			}
		}
		if (false === bValidated)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
		}
		return bValidated;
	}

	function check_multiple_answers_dropdown(iQuestionId, iAnswerId, iMinAnswers, iMaxAnswers)
	{
		var aObjects		=	getAllElements('select');
		var iObjectCount	=	aObjects.length;
		var iAnswerCount	=	0;

		for (var pCount = 0; pCount < iObjectCount; pCount++)
		{
			if (aObjects[pCount].name.indexOf('question_'+iQuestionId) !== -1)
			{
				for (var pSubCount = 0; pSubCount < aObjects[pCount].options.length; pSubCount++)
				{
					if (true === aObjects[pCount].options[pSubCount].selected || "selected" === aObjects[pCount].options[pSubCount].selected)
					{
						iAnswerCount++;
					}
				}
			}
		}

		if (iMinAnswers > 0 && iAnswerCount < iMinAnswers)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
			return false;
		}
		if (iMaxAnswers > 0 && iAnswerCount > iMaxAnswers)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
			return false;
		}
		if (iAnswerCount < 1)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
			return false;
		}
		return true;
	}

	function check_single_answers_dropdown_additional(iQuestionId, iAnswerId, iSubQuestionId)
	{
		oParentAnswer = getElement('question_'+iQuestionId+'_'+iAnswerId);

		if (null !== oParentAnswer && (oParentAnswer.checked == true || oParentAnswer.checked == "checked"))
		{
			var aObjects		=	getAllElements('select');
			var iObjectCount	=	aObjects.length;
			var iAnswerCount	=	0;

			for (var pCount = 0; pCount < iObjectCount; pCount++)
			{
				if (aObjects[pCount].name.indexOf('question_'+iSubQuestionId) !== -1)
				{
					for (var pSubCount = 0; pSubCount < aObjects[pCount].options.length; pSubCount++)
					{
						if (true === aObjects[pCount].options[pSubCount].selected || "selected" === aObjects[pCount].options[pSubCount].selected)
						{
							iAnswerCount++;
						}
					}
				}
			}

			if (iAnswerCount > 0)
			{
				return true;
			}

			aErrors['question_'+iSubQuestionId+'_text'] = true;
			return false
		}
		return true;
	}

	function check_single_answer(iQuestionId, mObsolete1, mObsolete2, mObsolete3)
	{
		var bValidated 		= false;

		var aObjects 		= getAllElements('input');
		var iObjectCount	= aObjects.length;


		for (pCount = 0; pCount < iObjectCount; pCount++)
		{
			if (aObjects[pCount].name.indexOf('question_'+iQuestionId) !== -1)
			{
				if (aObjects[pCount].checked == true || aObjects[pCount].checked == "checked")
				{
					bValidated = true;
				}
			}
		}

		if (bValidated === false)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
		}
	}

	function check_grade(iQuestionId, mObsolete1, mObsolete2, sSingleAnswers)
	{
		var bValidated 			= false;

		var aObjects 			= getAllElements('input');
		var iObjectCount		= aObjects.length;
		var bUsesSingleAnswer 	= false;

		var aTmp		 		= sSingleAnswers.split(',');

		var aSingleAnswers 		= Array();
		var iTmp 				= '';
		for (iTmp in aTmp)
		{
			aSingleAnswers[aTmp[iTmp]] = true;
		}
		var iCheckedObjects = 0;

		for (pCount = 0; pCount < iObjectCount; pCount++)
		{
			if (aObjects[pCount].name.indexOf('question_'+iQuestionId) !== -1)
			{
				if (aObjects[pCount].checked == true || aObjects[pCount].checked == "checked")
				{
					iCheckedObjects++;
					bValidated = true;
					if (isset(aSingleAnswers[aObjects[pCount]]))
					{
						bUsesSingleAnswer = true;
					}
				}
			}
		}

		if (true === bUsesSingleAnswer && 1 !== iCheckedObjects)
		{
			bValidated = false;
		}

		if (bValidated === false)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
		}
	}

	function check_single_answer_additional(iQuestionId, iAnswerId, iSubQuestionId)
	{

		oParentAnswer = getElement('question_'+iQuestionId+'_'+iAnswerId);
		if (null !== oParentAnswer && (oParentAnswer.checked == true || oParentAnswer.checked == "checked"))
		{
			var bValidated 		= false;
			var aObjects 		= getAllElements('input');
			var iObjectCount	= aObjects.length;

			for (pCount = 0; pCount < iObjectCount; pCount++)
			{
				if (aObjects[pCount].name.indexOf('question_'+iSubQuestionId) !== -1)
				{
					if (aObjects[pCount].checked == true || aObjects[pCount].checked == "checked")
					{
						bValidated = true;
					}
				}
			}

			if (bValidated === false)
			{
				aErrors['question_'+iSubQuestionId+'_text'] = true;
			}
		}
	}

	function check_textual_answer_additional(iQuestionId, iAnswerId, iSubQuestionId)
	{

		oParentAnswer = getElement('question_'+iQuestionId+'_'+iAnswerId);
		if (null !== oParentAnswer && (oParentAnswer.checked == true || oParentAnswer.checked == "checked"))
		{
			oTextBox = getElement('question_'+iSubQuestionId);
			if (null === oTextBox || oTextBox.value == "" )
			{
				aErrors['question_'+iSubQuestionId+'_text'] = true;
			}
		}
	}

	function check_textual_answer(iQuestionId, mObsolete1, mObsolete2, mObsolete3)
	{
		oParentAnswer = getElement('question_'+iQuestionId);
		if (null === oParentAnswer || "" == oParentAnswer.value)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
		}
	}

	function check_multiple_answers(iQuestionId, iMinAnswers, iMaxAnswers, sSingleAnswers)
	{
		var bValidated 			= false;

		var aObjects 			= getAllElements('input');
		var iObjectCount		= aObjects.length;
		var iCheckedObjects 	= 0;
		var bUsesSingleAnswer	= false;
		var aTmp		 		= sSingleAnswers.split(',');

		var aSingleAnswers 		= Array();
		var iTmp 				= '';
		for (iTmp in aTmp)
		{
			aSingleAnswers[aTmp[iTmp]] = true;
		}

		for (pCount = 0; pCount < iObjectCount; pCount++)
		{
			if (aObjects[pCount].name.indexOf('question_'+iQuestionId) !== -1)
			{
				if (aObjects[pCount].checked == true || aObjects[pCount].checked == "checked")
				{
					iCheckedObjects++;
					if (isset(aSingleAnswers[aObjects[pCount]]))
					{
						bUsesSingleAnswer = true;
					}
				}
			}
		}

		if (iMinAnswers > 0 || iMaxAnswers > 0)
		{
			if (iMinAnswers < 1)
			{
				iMinAnswers = 1;
			}
			if (iMaxAnswers < 1)
			{
				iMaxAnswers = 9999;
			}
			if (iCheckedObjects >= iMinAnswers && iCheckedObjects <= iMaxAnswers)
			{
				bValidated = true;
			}
		}
		else
		{
			if (iCheckedObjects > 0)
			{
				bValidated = true;
			}
		}

		if (true === bUsesSingleAnswer && 1 !== iCheckedObjects)
		{
			bValidated = false;
		}

		if (bValidated === false)
		{
			aErrors['question_'+iQuestionId+'_text'] = true;
		}
	}


	function check_bank_account(iQuestionId, iAnswerId, eCountry)
	{
		oBankObject = getElement('bank_account_'+iAnswerId);
		oSelectObject = getElement('question_'+iQuestionId+'_'+iAnswerId);
		if (null !== oSelectObject)
		{
			if (oSelectObject.checked == true || oSelectObject.checked == "checked")
			{
				if (false === isValidBankAccountNumber(oBankObject.value, eCountry))
				{
					aErrors['bank_account_'+iAnswerId+'_text'] = true;
				}
			}
		}
	}

	function CheckZipCode( bBool, bCheckImageMap )
	{
		if(typeof(bBool) === "undefined")
		{
			bBool = false;
		}

		var oStreetObject 		= getElement('dutch_street');
		var oCityObject 		= getElement('dutch_city');
		var oCommuneObject 		= getElement('dutch_commune');
		var oHouseNumberObject 	= getElement('housenumber_nl');
		var oAdditiveObject 	= getElement('additive_nl');
		var oSurnameObject	 	= getElement('surname');
		var oZipcodeNumbers 	= getElement('zipcode_numbers_nl');
		var oZipcodeLetters 	= getElement('zipcode_letters_nl');
		var oCombinationCheck	= getElement('check_combi');
		var oMunicipality 		= getElement('Commune');
		var sMunicipality 		= 'Onbekend';
		if (null === oZipcodeLetters)
		{
			return;
		}


		var oTelephonePart 		= getElement("telephone_part");
		if (null !== oTelephonePart)
		{
			oTelephonePart.style.display = 'none';
		}
		var oTelephonePart2		= getElement("telephone");
		if (null !== oTelephonePart2)
		{
			oTelephonePart2.value = '';
		}

		if
		(
			true === isNumeric(oZipcodeNumbers.value) &&
			false === isNumeric(oZipcodeLetters.value) &&
			2 == oZipcodeLetters.value.length &&
			4 == oZipcodeNumbers.value.length &&
			"" != oHouseNumberObject.value
		)
		{
			sValue = validatePostcode(oZipcodeNumbers.value, oZipcodeLetters.value, oHouseNumberObject.value, '');

			if (sValue == false)
			{
				if (null !== oStreetObject)
				{
					oStreetObject.value = "Ongeldige combinatie";
				}
				if (null !== oCombinationCheck)
				{
					oCombinationCheck.style.display = '';
					oCombinationCheck.innerHTML = 'Ongeldige combinatie';
				}
				if (null !== oCityObject)
				{
					oCityObject.value = "";
				}
				if (null !== oCommuneObject)
				{
					oCommuneObject.value = "";
				}
				if(false !== bCheckImageMap && "function" === typeof(MapClick))
				{
					MapClick();
					if (null !== oMunicipality)
					{
						oMunicipality.innerHTML = sMunicipality;
					}
				}
			}
			else
			{
				oCombinationCheck.style.display = 'none';
				var aStreetArray = sValue.split(",");

				if (null !== oStreetObject)
				{
					oStreetObject.value = aStreetArray[0].replace(" ","");
				}
				if (null !== oCityObject)
				{
					oCityObject.value = aStreetArray[2].replace(" ","");
				}
				if (null !== oCommuneObject)
				{
					oCommuneObject.value = aStreetArray[6].replace(" ","");
				}
				sMunicipality = ucfirst(trim(strtolower((isset(aStreetArray[7]) ? aStreetArray[7] : sMunicipality))));

				if(false !== bCheckImageMap && "function" === typeof(MapClick))
				{
					MapClick();
					if (null !== oMunicipality)
					{
						oMunicipality.innerHTML = sMunicipality;
					}
				}

				if (null !== oSurnameObject && oSurnameObject.value !== "")
				{
					sValue = getPhoneNumberFromScript(oSurnameObject.value, oZipcodeNumbers.value+oZipcodeLetters.value, oHouseNumberObject.value, oAdditiveObject.value);

					if (null !== oTelephonePart)
					{
						oTelephonePart.style.display = '';
					}
					if (null !== oTelephonePart2)
					{
						oTelephonePart2.value =  sValue;
					}
				}
			}
		}
		else
		{
			if (null !== oStreetObject)
			{
				if (oZipcodeNumbers.value == "" || oZipcodeLetters.value == "" || oHouseNumberObject.value == "")
				{
					oStreetObject.value = "Hier verschijnt uw adres";
				}
				else
				{
					oStreetObject.value = "Ongeldige combinatie";
					if (null !== oCombinationCheck)
					{
						oCombinationCheck.innerHTML = 'Ongeldige combinatie';
					}
				}
			}
			if (null !== oCityObject)
			{
				oCityObject.value = "";
			}
			if (null !== oCommuneObject)
			{
				oCommuneObject.value = "";
			}
			if(false !== bCheckImageMap && "function" === typeof(MapClick))
			{
				MapClick();
				if (null !== oMunicipality)
				{
					oMunicipality.innerHTML = sMunicipality;
				}
			}
		}
	}

	function getPostcodeCheckResponse( sUrl )
	{
	    oXmlHttp.open("GET", sUrl, false);
	    oXmlHttp.send(null);
	    return oXmlHttp.responseText;
	}

	function validatePostcode(cijfers, letters, huisnr, toevoeging)
	{
		var returnValue = getPostcodeCheckResponse('/shared/nationaleenquetes/scripts/postcodecheck.php?huisnummer='+huisnr+'&toevoeging='+toevoeging+'&postcode_letters='+letters+'&postcode_cijfers='+cijfers)

		if(returnValue == 'false')
		{
			return false;
		}
		else
		{
			return returnValue;
		}
	}

	function fetchTelephoneNumber(oSurname, oTelephoneObject, iClientId)
	{
		var returnValue = getPostcodeCheckResponse('/shared/nationaleenquetes/scripts/telephonecheck.php?surname='+oSurname.value+'&clientid='+iClientId)
		
		if(returnValue == '')
		{
			return false;
		}
		else
		{
			oTelephoneObject.value = returnValue;
		}
		return true;
	}
	
	function fetchTelephoneNumberOnDisplay(sSurname, sTelephoneNumber, iClientId, oTelephoneObject)
	{
		var returnValue = getPostcodeCheckResponse('/shared/nationaleenquetes/scripts/telephonecheck.php?surname='+sSurname+'&clientid='+iClientId+'&tel='+sTelephoneNumber)
		
		if(returnValue == '')
		{
			return false;
		}
		else
		{
			oTelephoneObject.value = returnValue;
		}
		return true;
	}

	function getPhoneNumberFromScript(sSurname, sZipcode, sHouseNumber, sAdditive)
	{
		var returnValue = getPostcodeCheckResponse('/shared/nationaleenquetes/scripts/telephonecheck.php?huisnummer='+sHouseNumber+'&toevoeging='+sAdditive+'&postcode='+sZipcode+'&surname='+sSurname)
		if(returnValue == 'false') {
			return false;
		} else {
			return returnValue;
		}
	}

	function check_template_question(sName)
	{

		if (sName.indexOf('car_brand') !== -1)
		{
			sName = sName.replace('template_', '');
			oCarBrand = getElement('client_data_car_brand');
			if (oCarBrand.options[oCarBrand.selectedIndex].value == '')
			{
				aErrors['template_'+sName+'_error_text'] = true;
			}
		}
		else
		{
			var bValidated			= false;

			var aObjects			= getAllElements('input');
			var iObjectCount		= aObjects.length;
			sName = sName.replace('template_', '');
			for (pCount = 0; pCount < iObjectCount; pCount++)
			{
				if (aObjects[pCount].name.indexOf(sName) !== -1)
				{
					if (aObjects[pCount].checked == true || aObjects[pCount].checked == "checked")
					{
						bValidated = true;
					}
				}
			}

			if (bValidated === false)
			{
				aErrors['template_'+sName+'_error_text'] = true;
			}
		}
	}
