// alle functies en meldingen betreffende algemene invoervelden.
// de invoercontroles gelden voor alle formulieren [ particulieren en werkgevers ]

function foutMeldingenEN(obj){
	var invoer = obj.substring(0,5) 
	switch(invoer){
		case "Naam_":
		alert("Type in the name of your organisation.");
		document.getElementById(obj).focus();
		break;
	
		case "Voorl":
		alert("Type in your initials.");
		document.getElementById(obj).focus();
		break;

		case "Achte":
		alert("Type in your surname.");
		document.getElementById(obj).focus();
		break;
		
		case "Gesla":
		alert("Type in your gender.");
		document.getElementById(obj).focus();
		break;

		case "Email":
 		alert("Type in your e-mail address.");
		document.getElementById(obj).focus();
		break;
		
		default:
		alert("Type in a value.")
		document.getElementById(obj).focus();
	}	
}

function foutMeldingen(obj){
	var invoer = obj.substring(0,5) 
	switch(invoer){
		case "Naam_":
		alert("Vul de naam van uw organisatie in.");
		document.getElementById(obj).focus();
		break;
		
		case "PGGM_":
		alert("Vul uw PGGM-nummer in.");
		document.getElementById(obj).focus();
		break;
		
		case "Voorl":
		alert("Vul uw voorletters in.");
		document.getElementById(obj).focus();
		break;

		case "Achte":
		alert("Vul uw achternaam in.");
		document.getElementById(obj).focus();
		break;
		
		case "Gesla":
		alert("Vul uw geslacht in.");
		document.getElementById(obj).focus();
		break;

		case "Straa":
		alert("Vul uw straatnaam in.");
		document.getElementById(obj).focus();
		break;
		
		case "Huisn":
 		alert("Vul uw huisnummer in.");
		document.getElementById(obj).focus();
		break;
		
		case "Postc":
 		alert("Vul uw postcode in.");
		document.getElementById(obj).focus();
		break;
		
		case "Plaat":
 		alert("Vul uw plaatsnaam in.");
		document.getElementById(obj).focus();
		break;
		case "Geb_D":
 		alert("Vul uw geboortedag in.");
		document.getElementById(obj).focus();
		break;
		
		case "Geb_M":
 		alert("Vul uw geboortemaand in.");
		document.getElementById(obj).focus();
		break;
			
		case "Funct":
 		alert("Vul uw functie in.");
		document.getElementById(obj).focus();
		break;
		
		case "Ander":
 		alert("Geef aan wat uw functienaam is.");
		document.getElementById(obj).focus();
		break;		
		
		case "Telef":
 		alert("Vul uw telefoonnummer in.");
		document.getElementById(obj).focus();
		break;

		case "Email":
 		alert("Vul uw e-mailadres in.");
		document.getElementById(obj).focus();
		break;
		
		case "Aanle":
 		alert("Geef aan wat de andere aanleiding was.");
		document.getElementById(obj).focus();
		break;

		case "Klant":
 		alert("Geef aan of u klant bent van PGGM.");
		break;		
		
		case "Op_de":
 		alert("Geef aan of PGGM u op de hoogte mag houden.");
		break;
	 
		default:
		alert("Vul een waarde in.")
		document.getElementById(obj).focus();
	}	
}

function controleNAWgegevens(input){
var form = input;
var formulier = document.getElementById(form);
var aantal_elementen = document.getElementById(form).elements.length;
var begin_punt;
// bepaal het begin punt van de algemene controles, dit is bij particulieren de voorletters en bij werkgevers de naam van de instelling
// bepaal het eind punt van de algemene controles, dit is bij particulieren het toestemming blok en bij werkgevers het e-mail adres
if(document.getElementById("SoortFormulier").value=="particulieren"){
	begin_punt = "Voorletters"
	eind_punt ="Op_de_hoogte_houden"
}
else
{
	begin_punt = "Naam_Organisatie"
	eind_punt = "Aanleiding"
}	

	for (var e = 0; e < aantal_elementen; e++){
	
		var naam =	formulier.elements[e].name;
		if (naam == begin_punt){
		x = e;
		}
		if (naam == eind_punt){
		y = e+1;
		}
	}
	// controle invoervelden leeg en niet leeg	
	for (var i = x; i < y; i++){
		var naam =	formulier.elements[i].name;
		var waarde = formulier.elements[i].value;
		var type = formulier.elements[i].type;
		
		if (type == "radio"){
			var groep = formulier[formulier.elements[i].name];
			var isChecked = false;
			for(var r = 0; r < groep.length; r++){
				if(groep[r].checked){
					isChecked = true;
				}
			}	
			if(isChecked){
			}
			else
			{
				foutMeldingen(naam);
				return false;
			}
		}
		else {
			
			if (waarde == ""){
				if(document.getElementById("SoortFormulier").value=="particulieren"){
					if ((naam != "Tussenvoegsel")&&(naam!="BRS_nummer")){
					foutMeldingen(naam);
					return false;
					}
				}	
				else
				{
				// 
					if ((naam != "Tussenvoegsel")&&(naam!="Anders_functie")&&(naam!="Telefoon")&&(naam != "Omvang_organisatie")&&(naam != "Aanleiding")&&(naam != "Anders_aanleiding")){
					foutMeldingen(naam);
					return false;
					}
				}
			}
			else 
			{
			//controles als een waarde is ingevoerd.
				if (naam == "PGGM_nummer"){
					if (isNaN(waarde)){
					alert("Een PGGM nummer bestaat alleen uit cijfers.");
					formulier.elements[i].select();
					return false;
					}
				}
				if (naam == "BRS_nummer"){
					if (waarde.length > 10){
					alert("Een klantnummer is een 10-cijferig veld. U vindt uw klantnummer op uw pensioenoverzicht.");
					formulier.elements[i].select();
					return false;
					}
				}

				if (naam == "Postcode"){
					if (controlePostcode(waarde)==false){
					formulier.elements[i].focus();
					return false;
					}
				}
				
				if (naam == "Huisnummer"){
				//input parameter voor MAP is een huisnummer zonder toevoeging
					if (isNaN(waarde)){
						var nummer = "";
						nummer = zetHuisnummerzonderToevoeging(waarde);
						if (nummer == ""){
							alert("U heeft een ongeldig huisnummer ingevuld.");
							formulier.elements[i].select();
							return false;
						}
						else
						{
						document.getElementById("HuisnummerZonderToevoeging").value = nummer;
						}
					}
					else
					{
						document.getElementById("HuisnummerZonderToevoeging").value = waarde;
					}
				}
				
				if (naam =="GeboorteJaar"){
					if (controleGeboorteJaar(waarde)==false){
					formulier.elements[i].focus();
					return false;
					}
				}
				
				if (naam =="Functie"){
					if (waarde=="Anders"){
						var v = i + 1;
						if(formulier.elements[v].value == ""){
							foutMeldingen(naam);
							formulier.elements[v].focus();
							return false;
						}	
					}
				}
				if (naam =="Telefoon"){
					if (!controleTelefoonnummer(waarde)){
					formulier.elements[i].focus();
					return false;
					}
				}
				if (naam =="Email"){
	 				if (controleEmailadres(waarde)==false){
        	      	formulier.elements[i].focus();
        	        return false;
					}
        	    }
				if (naam =="EmailEN"){
	 				if (controleEmailadresEN(waarde)==false){
        	      	formulier.elements[i].focus();
        	        return false;
					}
        	    }
				
				if (naam =="Aanleiding"){
					if (waarde=="Anders"){
						var v = i + 1;
						if(formulier.elements[v].value == ""){
							foutMeldingen(naam);
							formulier.elements[v].focus();
							return false;
						}	
					}
				}
				
				
			}	
		}	
	}	
}

function controlePostcode(Postcode)	{
	ZIP = Postcode;
	ZIP = ZIP.toUpperCase();
	if ( ZIP.length != 6 ) {
		alert("U heeft een ongeldige postcode ingevuld.\nEen postcode bestaat uit 6 karakters (bv '1234AB').");
		return false;
	}
	for (letter =0; letter < 4; letter++){
		if ( isNaN( parseInt( ZIP.charAt( letter ) ) ) ){
			alert("U heeft een ongeldige postcode ingevuld.\nDe eerste 4 karakter mogen alleen getallen bevatten (bv '1234AB').");
			return false;
		}
	}
	for (letter=4; letter < 6; letter++){
		if ( !isNaN( parseInt( ZIP.charAt( letter ) ) ) | ZIP.charAt( letter) == ' ' ){
			alert("U heeft een ongeldige postcode ingevuld.\nDe laatste 2 karakters moeten letters zijn (bv '1234AB').");
			return false;
		}
	}
	return true; 
}

function controleGeboorteJaar(Jaar)	{
	GeboorteJaar = Jaar;
	var nu = new Date
	var huidigeJaar = nu.getFullYear()
	if (Jaar.length != 4 ) {
		alert("Vul uw geboortejaar in.");
		return false;
	}
	if (isNaN( GeboorteJaar)){
		alert("Vul uw geboortejaar in.");
		return false;
	}
	if ((Jaar < 1900) || (Jaar > huidigeJaar)){
		alert("Vul uw geboortejaar in.");
		return false;
	}
	return true; 
}

function controleTelefoonnummer(telnum) {
  	var str = "";
	var nmr;
	str = stripNumberString(telnum);
	if (str==true) {
		alert ("U heeft een ongeldig telefoonnummer ingevuld.");
    	return false;
	}
	nmr = parseInt( str, 10 );
	if( (str.length > 9)  &&  (str.length < 11) && (nmr > 9999999) && (nmr <= 9999999999)  ){
    	return true;
	} else  {
    	alert ("U heeft een ongeldig telefoonnummer ingevuld.");
    	return false;
  	}
}

function stripNumberString(theString){
	var str = '';
  	var theMatch = /([0-9- ])/;
  	for (i=0; i < theString.length; i++) {
    	if (! theString.charAt(i).match(theMatch) ) {
    	return true;
		} else if ( !((theString.charAt(i) == ' ') || (theString.charAt(i) == '-')) ) {
      		str += theString.charAt(i);
    	}
  	}
  	return str;
}
function controleEmailadres(email,formuliernaam){
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(email)) {
	}
	else 
	{
		if (formuliernaam != 'AanvragenKwartaalberichtEN') {
			alert("Uw gegevens worden niet als e-mailadres herkend. Controleer of de invoer juist is.");
			return false;
		}
		else {
			alert("Please enter a valid email address.");
			return false;
		}
			
	}
}

function controleHTMLsyntax(invoerWaarde) {
	var tempString=invoerWaarde;
	var HTMLsyntax = ['<','>','/','&'];
	var vervangMet = ['','','',''];
	for(var i=0; i < HTMLsyntax.length; i++)
		tempString=tempString.replace(HTMLsyntax[i],vervangMet[i]);
	return tempString;
}

function nederlandseDatum(){
	var datum = new Date();
	var dag=datum.getDate();
	var jaar=datum.getYear();
	
	if (jaar < 1000)
	{jaar+=1900}
	var maand=datum.getMonth();
	var maandArray=new Array("januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december")	
	var nedDatum = dag + ' ' + maandArray[maand] + ' ' + jaar;
	return nedDatum;
	
	}

var regExpressions = /[$\\@\\\-#%!;:.,\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|]/;
function vervangVreemdeTekens(invoer) {
	var controle = invoer.value;
	var lengte = controle.length;
	var lchar = invoer.value.charAt((lengte) - 1);
	if(lchar.search(regExpressions) != -1) {
		var temp = invoer.value.substring(0, (lengte) - 1);
		invoer.value = temp;
   }
}

function zetHuisnummerzonderToevoeging(huisnummer){
	var eenCijfer = /([0-9- ])/;
	var nummer= '';
	for (i=0; i < huisnummer.length; i++) {
    	if (huisnummer.charAt(i).match(eenCijfer) ) {
    		nummer += huisnummer.charAt(i);
		} 
		else {
      		nummer += '';
    	}
	}
	return nummer;
}

//openAWindow, validateDate en validateOptionalDate 
function openAWindow( pageToLoad, winName, width, height, center) 
{
    xposition=0; yposition=0;
    if ((parseInt(navigator.appVersion) >= 4 ) && (center))
	{
        xposition = (screen.width - width) / 2;
        yposition = (screen.height - height) / 2;
    }
    args = "width=" + width + "," 
    + "height=" + height + "," 
    + "location=0," 
    + "menubar=0,"
    + "resizable=1,"
    + "scrollbars=1,"
    + "status=0," 
    + "titlebar=0,"
    + "toolbar=0,"
    + "hotkeys=0,"
    + "screenx=" + xposition + ","  //NN Only
    + "screeny=" + yposition + ","  //NN Only
    + "left=" + xposition + ","     //IE Only
    + "top=" + yposition;           //IE Only
    window.open( pageToLoad,winName,args );
}

function validateDate(txtfield) {

/*	txtfield is een input type text met een datum 
	Er wordt gevalideerd op een geldige datum. 
	Inputformaat is DDMMYYYY of DDMMYY of DD-MM-YY of DD-MM-YYYY
	Als geen eeuwaanduiding is meegegeven dan wordt dit bepaald a.d.v.
	het jaar xx17.*/
	
	var strInput = txtfield.value;
	
	var str31maand='01,03,05,07,08,10,12'
	var dag, maand, jaar;
	var boolResult=true;
	var trace=0;
	
	if (strInput.indexOf('-')==-1) {
		dag=strInput.substring(0,2);
		maand=strInput.substring(2,4);
		jaar=strInput.substring(4,8);
	}
	else {
		dag=strInput.substring(0,2);
		maand=strInput.substring(3,5);
		jaar=strInput.substring(6,10);
	}
	if (jaar.length==2){
		if (jaar<=17){ jaar='20'+jaar }
		else { jaar='19'+jaar }
	}
	/* Check op lengtes van input en de verschillende datumonderdelen */
	boolResult=(strInput.length>5)?true:false;
	if (boolResult) {
		if (dag.length!=2){
			boolResult=false;
			trace=1
		}
	}
	if (boolResult) {
		if (maand.length!=2){
			boolResult=false;
			trace=2
		}
	}
	if (boolResult){
		if (jaar.length!=4){
			boolResult=false;
			trace=3
		}
	}

	/* test op laatste dag in februari */
	if (boolResult) {
		if (jaar%4==0) {
			if (maand=="02"&&dag>29){
				boolResult=false;
				trace=4
			}
		}
		else {
			if (maand=="02"&&dag>28){
				boolResult=false;
				trace=5
			}
		}
	}
	/* test op laatste dag van overige maanden */
	if (boolResult) {
		if (str31maand.indexOf(maand)>-1) {
			if (dag>31){
				boolResult=false;
				trace=6
			}
		}
		else {
			if (dag>30){
				boolResult=false;
				trace=7
			}
		}
	}
	/* Test op geldige maand */
	boolResult=(boolResult&&maand>0&&maand<13)?true:false;

	/* Test op geldige dag */
	boolResult=(boolResult&&dag>"00")?true:false;

	/* Toon foutmelding of plaats geformatteerde datum in txtfield */
	if (!boolResult) {
		alert("De ingevoerde datum kan niet verwerkt worden.\nU kunt een datum als volgt invoeren:\nDDMMJJ  of  DDMMJJJJ  of  DD-MM-JJ  of  DD-MM-JJJJ");
		txtfield.focus()
	}
	else {
		txtfield.value=dag+'-'+maand+'-'+jaar}
	return boolResult;
}

function validateOptionalDate(txtfield) {
/* Validatie van een optioneel in te vullen datumveld
   Deze functie maakt gebruik van de functie validateDate() */
	if (txtfield.value=="") {return true}
	else {return validateDate(txtfield)}
}

// TuO:22 jan 2007 tbv vtw 5233: *** info_aanvraag_particulieren ***
// Als land geen Nederland is, dan geen verplichting op straat en huisnummer.
function CheckInput(){
	var formNaam = document.InfoAanvragenParticulieren;

	if (formNaam.Voorletters.value == ""){
		foutMeldingen("Voorletters");
		return false;
	}
	else
	{
		if (formNaam.Achternaam.value == ""){
			foutMeldingen("Achternaam");
			return false;
		}
		else
		{
			var isChecked = false;
			var geslacht = formNaam.Geslacht;
			
			for (var r = 0; r < geslacht.length; r++)
			{
				if (geslacht[r].checked){
					isChecked = true;
				}
			}
			if (isChecked) {
			}
			else
			{
				foutMeldingen("Geslacht");
				return false;
			}				
		}
		if (formNaam.Geb_Dag.value == ""){
				foutMeldingen("Geb_Dag");
				return false;			
		}
		else
		{
			if (formNaam.Geb_Maand.value == ""){
				foutMeldingen("Geb_Maand");
				return false;			
			}
			else
			{
				if (controleGeboorteJaar(formNaam.GeboorteJaar.value) == false)
				{
					formNaam.GeboorteJaar.focus();
					return false;
				}
				else
				{
					if (formNaam.BRS_nummer.value.length > 10){
						alert("Een klantnummer is een 10-cijferige veld. U vindt uw klantnummer op uw pensioenoverzicht.");
						formNaam.BRS_nummer.focus();
						return false;
					}
					else
					{
						if (formNaam.Straat.value == ""){
							foutMeldingen("Straat");
							return false;
						}
						else
						{
							if (formNaam.Huisnummer.value != ""){
								if (isNaN(formNaam.Huisnummer.value)){
									var nummer = "";
									nummer = zetHuisnummerzonderToevoeging(formNaam.Huisnummer.value);
									if (nummer == ""){
										alert("U heeft een ongeldig huisnummer ingevuld.");
										formNaam.Huisnummer.focus();
										return false;
									}
									else
									{
										document.getElementById("HuisnummerZonderToevoeging").value = nummer;
									}
								}
								else
								{
									document.getElementById("HuisnummerZonderToevoeging").value = formNaam.Huisnummer.value;
								}
							}
							else
							{
								foutMeldingen("Huisnummer");
								return false;									
							}

							var selectedValue = formNaam.selectLand.value;
							if (selectedValue == "Nederland"){
								if (formNaam.Postcode.value != ""){
									if (controlePostcode(formNaam.Postcode.value) == false ){
										formNaam.Postcode.focus();
										return false;
									}
								}
								else
								{
									foutMeldingen("Postcode");
									return false;																	
								}
								if (formNaam.Plaats.value == ""){
									foutMeldingen("Plaats");
									return false;
								}
							}
							
							if (formNaam.Email.value != ""){
								if (controleEmailadres(formNaam.Email.value)==false){
        	      					formNaam.Email.focus();
				        	        return false;
								}
							}
							else
							{
								foutMeldingen("Email");
								return false;
							}
							
							var isChecked = false;
							var Klant = formNaam.Klant;
			
							for (var r = 0; r < Klant.length; r++){
								if (Klant[r].checked){
									isChecked = true;
								}
							}
							if (isChecked) {
							}
							else
							{
								foutMeldingen("Klant");
								return false;
							}				

							var isChecked = false;
							var Op_de_hoogte_houden = formNaam.Op_de_hoogte_houden;
			
							for (var r = 0; r < Op_de_hoogte_houden.length; r++){
								if (Op_de_hoogte_houden[r].checked){
									isChecked = true;
								}
							}
							if (isChecked) {
							}
							else
							{
								foutMeldingen("Op_de_hoogte_houden");
								return false;
							}				
						}
					}
				}
			}
		}
	}
}

// TuO:16 maart 2007 tbv vtw 5233: *** EigenTijd_Nieuwsbrief ***
// Als land geen Nederland is, dan geen verplichting op straat en huisnummer.
function CheckInputNB(){
	var formNaam = document.AanmeldenNieuwsbrief;

	if (formNaam.Voorletters.value == ""){
		foutMeldingen("Voorletters");
		return false;
	}
	else
	{
		if (formNaam.Achternaam.value == ""){
			foutMeldingen("Achternaam");
			return false;
		}
		else
		{
			var isChecked = false;
			var geslacht = formNaam.Geslacht;
			
			for (var r = 0; r < geslacht.length; r++)
			{
				if (geslacht[r].checked){
					isChecked = true;
				}
			}
			if (isChecked) {
			}
			else
			{
				foutMeldingen("Geslacht");
				return false;
			}				
		}
		if (formNaam.Geb_Dag.value == ""){
				foutMeldingen("Geb_Dag");
				return false;			
		}
		else
		{
			if (formNaam.Geb_Maand.value == ""){
				foutMeldingen("Geb_Maand");
				return false;			
			}
			else
			{
				if (controleGeboorteJaar(formNaam.GeboorteJaar.value) == false)
				{
					formNaam.GeboorteJaar.focus();
					return false;
				}
				else
				{
					if (formNaam.BRS_nummer.value.length > 10){
						alert("Een klantnummer is een 10-cijferig veld. U vindt uw klantnummer op uw pensioenoverzicht.");
						formNaam.BRS_nummer.focus();
						return false;
					}
					else
					{
						if (formNaam.Straat.value == ""){
							foutMeldingen("Straat");
							return false;
						}
						else
						{
							if (formNaam.Huisnummer.value != ""){
								if (isNaN(formNaam.Huisnummer.value)){
									var nummer = "";
									nummer = zetHuisnummerzonderToevoeging(formNaam.Huisnummer.value);
									if (nummer == ""){
										alert("U heeft een ongeldig huisnummer ingevuld.");
										formNaam.Huisnummer.focus();
										return false;
									}
									else
									{
										document.getElementById("HuisnummerZonderToevoeging").value = nummer;
									}
								}
								else
								{
									document.getElementById("HuisnummerZonderToevoeging").value = formNaam.Huisnummer.value;
								}
							}
							else
							{
								foutMeldingen("Huisnummer");
								return false;									
							}

							var selectedValue = formNaam.selectLand.value;
							if (selectedValue == "Nederland"){
								if (formNaam.Postcode.value != ""){
									if (controlePostcode(formNaam.Postcode.value) == false ){
										formNaam.Postcode.focus();
										return false;
									}
								}
								else
								{
									foutMeldingen("Postcode");
									return false;																	
								}
								if (formNaam.Plaats.value == ""){
									foutMeldingen("Plaats");
									return false;
								}
							}
							
							if (formNaam.Email.value != ""){
								if (controleEmailadres(formNaam.Email.value)==false){
        	      					formNaam.Email.focus();
				        	        return false;
								}
							}
							else
							{
								foutMeldingen("Email");
								return false;
							}
							
							var isChecked = false;
							var Klant = formNaam.Klant;
			
							for (var r = 0; r < Klant.length; r++){
								if (Klant[r].checked){
									isChecked = true;
								}
							}
							if (isChecked) {
							}
							else
							{
								foutMeldingen("Klant");
								return false;
							}				
						}
					}
				}
			}
		}
	}
}

function sterretjesUit(txtland)
{
	if (( txtland != "NL") && ( txtland !=""))
	{
		document.getElementById('mijnStraat').style.visibility='hidden'; 
		document.getElementById('mijnHuisnummer').style.visibility='hidden';
		document.getElementById('mijnPostcode').style.visibility='hidden';
		document.getElementById('mijnPlaats').style.visibility='hidden';
	}
	else
	{
		document.getElementById('mijnStraat').style.visibility='visible'; 
		document.getElementById('mijnHuisnummer').style.visibility='visible';
		document.getElementById('mijnPostcode').style.visibility='visible';
		document.getElementById('mijnPlaats').style.visibility='visible';	
	}
}

