/**************************************************************************
'Functie			:	fShowInfoSpanLayerReis
'Programmeur		:	WiBi
'Datum eerste versie:	13-10-2005
'Doel				:	Span hiden
'Parameters			:	a_Span (span naam)
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		WiBi				13-10-2005	Eerste versie
'**************************************************************************/
function fShowInfoSpanLayerReis(a_Span)
{
	document.getElementById("divDimmer").style.display = "";	
	fInfoSpan(a_Span,250,150,450,500);
}

/**************************************************************************
'Functie			:	fHideInfoSpanLayerReis
'Programmeur		:	MaNi
'Datum eerste versie:	25-07-2005
'Doel				:	Span hiden
'Parameters			:	a_Span (span naam)
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		MaNi				25-07-2005	Eerste versie
'**************************************************************************/
function fHideInfoSpanLayerReis(a_Span)
{
	document.getElementById("divDimmer").style.display = "none";	
	fHideInfoSpan(a_Span);
}
/**************************************************************************
'Functie			:	fIsSofinummer
'Programmeur		:	Remco Bulten
'Datum eerste versie:	09-07-2007
'Doel				:	Sofinummer vallideren
'Parameters			:	a_Sofinummer (sofinummer)
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0			Remc				09-07-2007	Eerste versie
'**************************************************************************/
function fIsSofinummer(a_Sofinummer) 
{ 
	var reSofi = /(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)/; 
	var bValid = false; 
	var array; 
	var lSom = 0; 
					
	if ((a_Sofinummer.length == 0) || (a_Sofinummer == null)) 
		bValid = false; 
	else 
	{ 
		bValid = (reSofi.test(a_Sofinummer)); 
		if (bValid) 
		{ 
			// 11 proef 
			array = (a_Sofinummer.match(reSofi));
			for (i=1;i<9;i+=1) 
				lSom += (array[i] * (9-(i-1)));
			bValid = (((lSom -= array[9]) % 11) == 0)
		} 
	} 
	return (bValid); 
}

// VALIDATIES VOOR PERSOONS EN ADRES GEGEVENS //

/**************************************************************************
'Functie			:	fDoCheckPostcode()
'Programmeur		:	SaHi
'Datum eerste versie:	12-04-2005
'Doel				:	Validatie postcode + aanroepen iframe om Straat + Woonplaats op te halen
'Parameters			:	-
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		SaHi				12-04-2005	Eerste versie
'1.1		MaNi				07-06-2005	Uitgebreid
'**************************************************************************/
function fDoCheckPostcode()
{
	var strPostcodeCijfers
	var strPostcodeLetters
	var strHuisNummer
	var strTelControlePostcode = 0;

	blnPostcodeOK = false;		
	strHuisNummer = document.getElementById("txtHuisnummer").value;
	strPostcodeLetters = document.getElementById("txtZipcodeChars").value;
	strPostcodeCijfers = document.getElementById("txtZipcodeDigits").value;

	if (strPostcodeCijfers.length > 0)
	{
		if (strPostcodeCijfers.length == 4)
		{
			if (CheckNumeric(document.getElementById("txtZipcodeDigits").value) == false)
			{
				document.getElementById("PostcodeErrorText").innerHTML = "Onjuiste karakters in postcode";
				document.getElementById("PostcodeError").style.display = "";
			}
			else
			{
				strTelControlePostcode = strTelControlePostcode + 1;
			}
		}
		else
		{
			document.getElementById("PostcodeErrorText").innerHTML = "Postcode moet uit 4 cijfers bestaan";
			document.getElementById("PostcodeError").style.display = "";
		}
	}

	if (strPostcodeLetters.length > 0)
	{
		if (strPostcodeLetters.length == 2)
		{
			strPostcodeLetters = strPostcodeLetters.toUpperCase();
			if (!validatePostcodeAlfa(strPostcodeLetters))
			{
				document.getElementById("PostcodeErrorText").innerHTML = "Onjuiste karakters in postcode";
				document.getElementById("PostcodeError").style.display = "";
			}
			else
			{
				strTelControlePostcode = strTelControlePostcode + 1;
			}
		}
		else
		{
			document.getElementById("PostcodeErrorText").innerHTML = "Postcode moet uit 2 karakters bestaan";
			document.getElementById("PostcodeError").style.display = "";
		}
	}	

	if (strHuisNummer.length > 0)
	{
		if (!validateNumeric(strHuisNummer))
		{	
			document.getElementById("HuisnummerError").style.display = "";
			document.getElementById("HuisnummerErrorText").innerHTML = "Huisnummer moet numeriek zijn";
		}
		else
		{
			strTelControlePostcode = strTelControlePostcode + 1;
		}		
	}
	// controles goed?
	if (strTelControlePostcode == 3)
	{
		document.getElementById("HuisnummerError").style.display = "none";
		document.getElementById("HuisnummerErrorText").innerHTML = "";
		strPostcodeCijfers = document.getElementById("txtZipcodeDigits").value;
		strPostcodeLetters = document.getElementById("txtZipcodeChars").value;
		document.getElementById("td_LadenPostcode").style.display = "";
		//roep iframe aan (met delay)
		//self.setTimeout("fLoadPostCodeIframe('" + strPostcodeCijfers + "','" + strPostcodeLetters + "','" + strHuisNummer + "');", 2000);	
		//roep postcode_iframe aan
		fLoadPostCodeIframe(strPostcodeCijfers,strPostcodeLetters,strHuisNummer);
	}
	else
	{
		document.getElementById("tr_Straatnaam").style.display = "none";
		document.getElementById("tr_Woonplaats").style.display = "none";		
		document.getElementById("td_StraatnaamBekend").style.display = "none";
		document.getElementById("td_WoonplaatsBekend").style.display = "none";
	
		document.getElementById("txtHiddenStraatnaam").value = ""; 
		document.getElementById("txtHiddenWoonplaats").value = "";		
 		document.getElementById("td_StraatnaamBekend").innerHTML = "";
 		document.getElementById("td_WoonplaatsBekend").innerHTML = "";
		
		blnPostcodeOK = false;
		return false;
	}	
}

function fLoadPostCodeIframe(a_strPostcodeCijfers, a_strPostCodeLetters, a_strHuisnummer)
{
	//Dit staat in een aparte functie zodat de timeout werkt
	//iframe wordt (opnieuw) geladen
	window.frames['postcode_iframe'].window.location = '/forms/postcode_iframe.asp?strPostCodeCijfers=' + a_strPostcodeCijfers + '&strPostCodeLetters=' + a_strPostCodeLetters + '&strHuisnummer=' + a_strHuisnummer;
}		

/**************************************************************************
'Functie			:	fHuisnummerToevCheck()
'Programmeur		:	MaNi
'Datum eerste versie:	08-06-2005
'Doel				:	Huisnummer toevoeging validatie
'Parameters			:	
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		MaNi				08-06-2005	Eerste versie
'**************************************************************************/		
function fHuisnummerToevCheck()
{
	var strHuisnummerToev = document.getElementById("txtHuisnummerToev").value;

	if (strHuisnummerToev.length != 0)	
	{
		if (!validateAlfaNumericExtra(strHuisnummerToev))
		{
			document.getElementById("HuisnummerToevError").style.display = "";
			document.getElementById("HuisnummerToevErrorText").innerHTML = "Huisnummer toevoeging is fout ingevuld.";
			return false;
		}
		else
		{
			document.getElementById("HuisnummerToevError").style.display = "none";
			document.getElementById("HuisnummerToevErrorText").innerHTML = "";
			return true;
		}
	}
	else
	{
		//Niet verplicht veld, dus leeg is OK
		document.getElementById("HuisnummerToevError").style.display = "none";
		document.getElementById("HuisnummerToevErrorText").innerHTML = "";
		return true;
	}
}

/**************************************************************************
'Functie			:	fVoorlettersCheck()
'Programmeur		:	MaNi
'Datum eerste versie:	08-06-2005
'Doel				:	Voorletters validatie
'Parameters			:	
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		MaNi				08-06-2005	Eerste versie
'**************************************************************************/		
function fVoorlettersCheck()
{
	var strVoorletters = document.getElementById("txtVoorletters").value;

	if (strVoorletters.length != 0)
	{
		if (!validateAlfaNumeric(strVoorletters))
		{
			document.getElementById("VoorlettersError").style.display = "";
			document.getElementById("VoorlettersErrorText").innerHTML = "Voorletters is fout ingevuld.";
			return false;
		}
		else
		{
			document.getElementById("VoorlettersError").style.display = "none";
			document.getElementById("VoorlettersErrorText").innerHTML = "";
			return true;
		}
	}
	else
	{
		document.getElementById("VoorlettersError").style.display = "none";
		document.getElementById("VoorlettersErrorText").innerHTML = "";
		return false;
	}
}

/**************************************************************************
'Functie			:	fTussenvoegselCheck()
'Programmeur		:	SaHi
'Datum eerste versie:	12-04-2005
'Doel				:	Tussenvoegsel validatie
'Parameters			:	
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		SaHi				12-04-2005	Eerste versie
'1.1		MaNi				07-06-2005	Uitgebreid
'**************************************************************************/		
function fTussenvoegselCheck()
{
	var strTussenvoegsel = document.getElementById("txtTussenvoegsel").value;

	if (strTussenvoegsel.length != 0)	
	{
		if (!validateAlfaNumeric(strTussenvoegsel))
		{
			document.getElementById("TussenvoegselError").style.display = "";
			document.getElementById("TussenvoegselErrorText").innerHTML = "Tussenvoegsel is fout ingevuld.";
			return false;
		}
		else
		{
			document.getElementById("txtTussenvoegsel").value = strTussenvoegsel.toLowerCase();
			
			document.getElementById("TussenvoegselError").style.display = "none";
			document.getElementById("TussenvoegselErrorText").innerHTML = "";
			return true;
		}
	}
	else
	{
		//Niet verplicht veld, dus leeg is OK
		document.getElementById("TussenvoegselError").style.display = "none";
		document.getElementById("TussenvoegselErrorText").innerHTML = "";
		return true;
	}
}

/**************************************************************************
'Functie			:	fAchternaamCheck()
'Programmeur		:	SaHi
'Datum eerste versie:	12-04-2005
'Doel				:	Achternaam validatie
'Parameters			:	
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		SaHi				12-04-2005	Eerste versie
'1.1		MaNi				07-06-2005	Uitgebreid
'**************************************************************************/		
function fAchternaamCheck()
{
	var strAchternaam = document.getElementById("txtAchternaam").value;
	if (strAchternaam.length != 0)	
	{
		if (!validateAlfaNumeric(strAchternaam))
		{
			document.getElementById("AchternaamError").style.display = "";
			document.getElementById("AchternaamErrorText").innerHTML = "Achternaam is fout ingevuld.";
			return false;
		}
		else
		{
			document.getElementById("txtAchternaam").value = fCapitalizeText(strAchternaam); 

			document.getElementById("AchternaamError").style.display = "none";
			document.getElementById("AchternaamErrorText").innerHTML = "";
			return true;
		}
	}
	else
	{
		document.getElementById("AchternaamError").style.display = "none";
		document.getElementById("AchternaamErrorText").innerHTML = "";		
		return false;	
	}
}

/**************************************************************************
'Functie			:	fTelnrCheck
'Programmeur		:	SaHi
'Datum eerste versie:	20-05-2005
'Doel				:	Telefoonnummer validatie
'Parameters			:	a_event	(bij verandering een foutmelding)
'Versie		Naam				Datum			Reden
'1.0		SaHi 				12-04-2005		Eerste versie
'1.0		SaHi				12-04-2005		Controle 1e karakter = 0 toegevoegd
'**************************************************************************/
function fTelnrCheck(a_event)
{
	var intLengte
	var strTelNr = document.getElementById("txtTelefoonNr").value;
	
	intLengte = strTelNr.length
	if (intLengte != 0)
	{	
		if (!validateNumeric(strTelNr))
		{
			document.getElementById("TelefoonError").style.display = "";
			document.getElementById("TelefoonErrorText").innerHTML = "Het telefoonnummer is fout ingevuld";
			return false;
		}
		else
		{			
			if (intLengte == 10)
			{
				var strTelNrEerste
				strTelNrEerste = strTelNr.substring(0,1);
				if (strTelNrEerste == 0)
				{		
					//validatie goed
					document.getElementById("sp_TelText").style.display = "none";
					document.getElementById("TelefoonError").style.display = "none";
					document.getElementById("TelefoonErrorText").innerHTML = "";
					return true;
				}
				else
				{
					document.getElementById("TelefoonError").style.display = "";
					document.getElementById("TelefoonErrorText").innerHTML = "Het telefoonnummer is fout ingevuld";
					return false;
				}				
			}
			else
			{
				if ((a_event == "change") && (intLengte != 0))
				{
					document.getElementById("sp_TelText").style.display = "";
					document.getElementById("TelefoonError").style.display = "";
					document.getElementById("TelefoonErrorText").innerHTML = "Het telefoonnummer is fout ingevuld";
				}
				return false;
			}
		}
	}
	else
	{
		document.getElementById("sp_TelText").style.display = "";
		document.getElementById("TelefoonError").style.display = "none";
		document.getElementById("TelefoonErrorText").innerHTML = "";	
		return false
	}
}

/**************************************************************************
'Functie			:	fEmailCheck
'Programmeur		:	SaHi
'Datum eerste versie:	12-04-2005
'Doel				:	Email validatie
'Parameters			:	a_event	(bij verandering een foutmelding)
'Versie		Naam				Datum		Reden
'1.0		SaHi				12-04-2005	Eerste versie
'1.1		MaNi				08-06-2005	Uitgebreid
'**************************************************************************/		
function fEmailCheck(a_event)
{
	var strEmail = document.getElementById("txtEmail").value;
	if (strEmail.length != 0)
	{
		if (!CheckEmailAddress(strEmail))
		{
			if (a_event == "change")
			{
				document.getElementById("EmailError").style.display = "";
				
				if (!validateAlfaNumericExtraEmail(strEmail))
				{
					document.getElementById("EmailErrorText").innerHTML = "Uw email-adres bevat onjuiste karakters";
				}
				else
				{	
					document.getElementById("EmailErrorText").innerHTML = "Het e-mailadres is fout ingevuld.";
				}
			}
			return false;
		}
		else
		{
			if (!validateAlfaNumericExtraEmail(strEmail))
			{
				document.getElementById("EmailError").style.display = "";
				document.getElementById("EmailErrorText").innerHTML = "Uw email-adres bevat onjuiste karakters";
				return false;
			}
			else
			{
				//emailadres OK
				document.getElementById("EmailError").style.display = "none";
				document.getElementById("EmailErrorText").innerHTML = "";
				return true;
			}
		}
	}
	document.getElementById("EmailError").style.display = "none";
	document.getElementById("EmailErrorText").innerHTML = "";	
	return false
}

/**************************************************************************
'Functie			:	fCheckGeslacht()
'Programmeur		:	MaNi
'Datum eerste versie:	08-06-2005
'Doel				:	Geslacht validatie
'Parameters			:	
'Versiebeheer		:
'Versie		Naam				Datum		Reden
'1.0		MaNi				08-06-2005	Eerste versie
'**************************************************************************/		
function fCheckGeslacht(a_form)
{
	var strOK;
	for (var i=0; i<document.forms[a_form].elements.radGeslacht.length; i++)
	{
		if (document.forms[a_form].elements.radGeslacht[i].checked)
		{
			strOK = true;
			break;
		}
		else
		{
			strOK = false;
		}
		
	}

	if (strOK == true)
	{
		return true;
	}
	else
	{
		return false;
	}
}

/**************************************************************************
'Functie             :	fGebddCheck
'Doel                :  Controleren juistheid ingevoerde geboortedatum
'Parameters			 :  a_strDay,a_strMonth,a_strYear
'Versiebeheer        :
'Naam                Datum             Reden
'SaHi				 02-09-2005        Eerste versie
'**************************************************************************/
function fGebddCheck(a_strDay,a_strMonth,a_strYear)
{
	var strGebdd
	var strLeeftijd
	var strPremie
		
	if ((a_strDay != "") && (a_strMonth != "") && (a_strYear.length==4))
	{
		// Lengte controleren en aanpassen van de datum velden
		if (a_strDay.length == 1)
		{
			a_strDay = "0" + a_strDay;
		}
		if (a_strMonth.length == 1)
		{ 
			a_strMonth = "0" + a_strMonth;
		}

		strGebdd = a_strDay+"-"+a_strMonth+"-"+a_strYear;
		strLeeftijd = fIsLeeftijd(strGebdd);
		
		// Controleer ingangsdatum
		if (IsValidDate(a_strDay,a_strMonth,a_strYear))
		{
			// Leetijd OK ?
			if (strLeeftijd < 18)
			{
				document.getElementById("GeboorteDatumError").style.display = "";
				document.getElementById("GeboorteDatumErrorText").innerHTML = "Op basis van uw leeftijd komt u niet in aanmerking voor een verzekering bij Proteq. Als u vragen heeft, bel dan van 07:00 tot 23:00 met 0900 – 0776 (10ct per minuut).";
				return false;
			}	
			else
			{
				document.getElementById("GeboorteDatumErrorText").innerHTML = "";
				document.getElementById("GeboorteDatumError").style.display = "none";
				return true;
			}
		}
		else
		//  onjuist ingevoerde ingangsdatum
		{
			if ((a_strDay != "dd") && (a_strMonth != "mm") && (a_strYear != "jjjj"))
			{
				// alleen melding indien niet de default vulling (dd / mm / jjjj)
				document.getElementById("GeboorteDatumError").style.display = "";
				document.getElementById("GeboorteDatumErrorText").innerHTML = "Geboortedatum is fout ingevuld.";
			}
			return false;
		}
	}
	else
	{
		return false;
	}
}

/**************************************************************************
'Functie             :	fBirthdayOnFocus
'Doel                :  Het afhandelen van het veld als deze de focus krijgt
'Versiebeheer        :
'Naam                Datum             Reden
'WiBi		 		19-10-2005        Eerste versie
'**************************************************************************/
function fBirthdayOnFocus(a_strDatePart) 
{
	var strDay = document.getElementById("txtBirthDate1").value;
	var strMonth = document.getElementById("txtBirthDate2").value;
	var strYear = document.getElementById("txtBirthDate3").value;

	if (a_strDatePart == 'D')
	{
		if (strDay == 'dd')
		{
			document.getElementById("txtBirthDate1").value = '';
			document.getElementById("txtBirthDate1").select();			
		}
	}

	if (a_strDatePart == 'M')
	{
		if (strMonth == 'mm')
		{
			document.getElementById("txtBirthDate2").value = '';
			document.getElementById("txtBirthDate2").select();
		}
	}


	if (a_strDatePart == 'Y')
	{
		if (strYear == 'jjjj')
		{
			document.getElementById("txtBirthDate3").value = '';
			document.getElementById("txtBirthDate3").select();
		}
	}
}

function fTerugReis()
{
	document.forms.frmReis.elements.strTerug.value = "Ja";
	document.forms.frmReis.submit();
}

/***********************************************************************************
'Functie				:	fCapitalizeText
'Doel					:	Laat elke woord (gescheiden door "-" of spatie) met een hoofdletter beginnen
'Parameters				:	a_strNaam = hetgeen wat met hoofdletters moet beginnen (naam/tussenvoegsel)
'Versiebeheer			:	1.0
'Versie		Datum			Reden
'1.0		17-11-2006		Eerste versie
'***********************************************************************************/
function fCapitalizeText(a_strNaam)
{
	var strValue = a_strNaam.toLowerCase();
	var strNewValue = '';

	// Eerst splitsen we de waarde op gesplits met ' '
	arrArray = strValue.split(" ");
	// Begin elk woord met een hoofdletter
	for (intCounter=0;intCounter<arrArray.length; intCounter++)
	{
		if (intCounter == 0) 
		{
			strNewValue = strNewValue + arrArray[intCounter].substring(0,1).toUpperCase() + arrArray[intCounter].substring(1,arrArray[intCounter].length);
		}
		else
		{
			strNewValue = strNewValue + " " + arrArray[intCounter].substring(0,1).toUpperCase() + arrArray[intCounter].substring(1,arrArray[intCounter].length);
		}
	}

	// Als tweede splitsen we de waarde op gesplits met '-'
	arrArray = strNewValue.split("-");
	strNewValue = '';
	// Begin elk woord met een hoofdletter
	for (intCounter=0;intCounter<arrArray.length; intCounter++)
	{
		if (intCounter == 0) 
		{
			strNewValue = strNewValue + arrArray[intCounter].substring(0,1).toUpperCase() + arrArray[intCounter].substring(1,arrArray[intCounter].length);
		}
		else
		{
			strNewValue = strNewValue + "-" + arrArray[intCounter].substring(0,1).toUpperCase() + arrArray[intCounter].substring(1,arrArray[intCounter].length);
		}
	}
	return strNewValue
}
/***********************************************************************************
'Functie						:	fServerValidatie
'Doel							:	Voer mbv de AJaX methode een validatie op de server uit, zonder de pagina te refreshen
'Parameters					:	De class fServerValidatie moet worden geinstancieerd:
'									Voorbeeld: var voorbeeld_naam = new fServerValidatie();
'									Vervolgens kan validate aangeroepen worden ( voorbeeld_naam.validate(); ) met de volgende parameters:
'									a_validatie = serverside validatie functie in ServerValidaties.asp
'									a_data = parameters voor de serverside validatiefunctie (naam=waarde&naam=waarde&...)
'									a_handle_function = naam van de js clientsite functie die de het antwoord van ServerValidaties.asp verwerkt
'									a_voorgangs_meter = het id van het htmlobject die geshowed wordt tijdens het valideren (bijv animated gif)
'Versiebeheer				:	1.0
'Versie		Datum				Reden
'1.0			12-01-2007		Eerste versie
'***********************************************************************************/
function fServerValidatie()
{
	var xmlhttp = false;
	if (window.XMLHttpRequest) 
	{ // IE7, Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) 
	{ // IE6
		try 
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}

	this.validate = function(a_validatie, a_data, a_handle_function, a_voorgangs_meter)
	{
		if (a_voorgangs_meter != "") document.getElementById(a_voorgangs_meter).style.display = "";
		xmlhttp.open('POST', "/forms/ServerValidaties.asp?validatie=" + a_validatie, true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-Length", a_data.length);
		xmlhttp.onreadystatechange = function()
			{
				if (xmlhttp.readyState == 4)
				{
					if (xmlhttp.status == 200)
					{
						a_handle_function(xmlhttp);
						if (a_voorgangs_meter != "") document.getElementById(a_voorgangs_meter).style.display = "none";
					}
				}
			}
		xmlhttp.send(a_data);
	}
	return this;
}