// return the decoded email address
function decodeEmail(encodedEmail) {
  // holds the decoded email address
  var email = "";

  // go through and decode the email address
  for (i=0; i < encodedEmail.length;) {
    // holds each letter (2 digits)
    var letter = "";
    letter = encodedEmail.charAt(i) + encodedEmail.charAt(i+1)

    // build the real email address
    email += String.fromCharCode(parseInt(letter,16));
    i += 2;
  }
  
  return email;
}

function sendEmail(encodedEmail) {
  // do the mailto: link
  location.href = "mailto:" + decodeEmail(encodedEmail);
}

function toggleVisibility(element) {
	elem = document.getElementById(element);
	if (elem) {
		if (elem.style.display=="inline") {
			elem.style.display="none";
		}
		else {
			elem.style.display="inline";
		}
	}
}

function showElement(element) {
    hza = document.getElementById(element);
    hza.style.display = "block";
}

function hideElement(element) {
    hza = document.getElementById(element);
    hza.style.display = "none";
}

function validateRequired(field,alerttxt)
{
	with (field) {
		if (value==null || value=="") {
			alert(alerttxt);
			return false;
		}
		else {
			return true;
		}
	}
}

function validateRequiredRadio(field,alerttxt) {
	with (field) {
		for (var i=0; i < field.length; i++) {
   			if (field[i].checked) {
      			return true;
      		}
   		}
	}
	alert(alerttxt);
	return false;
}

function validateChecked(field,alerttxt) {
	if (!field.checked) {
		alert(alerttxt);
		return false;
	}
	else {
		return true;
	}
}

function validDate(field) {
	var pattern = new RegExp("[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}");
	if (field.value.match(pattern)) {
		var date_array = field.value.split('-');
		var day = date_array[0];

		// Javascript consider months in the range 0 - 11
		var month = date_array[1] - 1;
		var year = date_array[2];

		// create a date object
		try {
			source_date = new Date(year,month,day);
		}
		catch (err) {
			// this will cause the validation to fail
			year = -1;
		}
	  
		if (	year == source_date.getFullYear()
			&& month == source_date.getMonth()
			&& day == source_date.getDate()) {
			return true;
		}
	}
	alert(field.value + " is geen geldige datum");
	return false;
}

function validateForumForm(thisform, validateTitle) {
	with (thisform)	{
		if (validateRequired(name,"Je moet je naam invullen!")==false) {
			name.focus();
			return false;
		}
		if (validateTitle && validateRequired(title,"Je moet het onderwerp invullen!")==false) {
			title.focus();
			return false;
		}
		if (validateRequired(text,"Je moet een tekst invullen!")==false) {
			text.focus();
			return false;
		}
	}
}

function validateGuestbookForm(thisform) {
	with (thisform)	{
		if (validateRequired(name,"Je moet je naam invullen!")==false) {
			name.focus();
			return false;
		}
		if (validateRequired(text,"Je moet een tekst invullen!")==false) {
			text.focus();
			return false;
		}
	}
}

function validateRegForm(thisform) {
	with (thisform)	{
		if (validateRequired(regusername,"Je moet je gebruikersnaam invullen!")==false) {
			regusername.focus();
			return false;
		}
		if (validateRequired(regpassword,"Je moet een wachtwoord invullen!")==false) {
			regpassword.focus();
			return false;
		}
		if (validateRequired(regpassword2,"Je moet je wachtwoord 2 keer invullen!")==false) {
			regpassword.focus();
			return false;
		}
		if (regpassword.value != regpassword2.value) {
				alert("Je hebt niet 2 keer hetzelfde wachtwoord ingevuld!");
				regpassword.focus();
				return false;
		}
		if (validateRequired(regvoornaam,"Je moet minimaal je voornaam invullen!")==false) {
			regvoornaam.focus();
			return false;
		}
		if (validateRequired(regemail,"Je moet een e-mail adres invullen!")==false) {
			regemail.focus();
			return false;
		}
		if (regakkoord.checked) {
			 return true;
		}
		else {
			alert("Je kun je alleen registreren als je aangeeft dat je akkoord gaat met de spelregels!");
			return false;
		}
	}
}

function validateCaribeberichtAanmeldingForm(thisform) {
	with (thisform)	{
		if (validateRequired(regemail,"Je moet een e-mail adres invullen!")==false) {
			regemail.focus();
			return false;
		}
		if (regakkoord.checked) {
			return true;
		}
		else {
			alert("Je kun je alleen registreren als je aangeeft dat je akkoord gaat met het ontvangen van het caribe bericht op je email-adres!");
			return false;
		}
	}
}

function validateReunieForm(thisform) {
	with (thisform)	{
		if (validateRequired(regvoornaam,"Je moet minimaal je voornaam en achternaam invullen!")==false) {
			regvoornaam.focus();
			return false;
		}
		if (validateRequired(regachternaam,"Je moet minimaal je voornaam en achternaam invullen!")==false) {
			regachternaam.focus();
			return false;
		}
		if (validateRequired(regemail,"Je moet een e-mail adres invullen!")==false) {
			regemail.focus();
			return false;
		}
		return true;
    }
}

function validateBallenForm(thisform) {
	with (thisform)	{
		if (validateRequired(naam,"Je moet wel je naam invullen!")==false) {
			naam.focus();
			return false;
		}
		if (validateRequired(email,"Je moet een e-mail adres invullen!")==false) {
			email.focus();
			return false;
		}
		return true;
    }
}

function validateAanmeldingsForm(thisform) {
	with (thisform) {
		if (validateRequired(voornaam,"Ja moet je voornaam invullen")==false) {
			voornaam.focus();
			return false;
		}
		
		if (validateRequired(achternaam,"Je moet je achternaam invullen")==false) {
			achternaam.focus();
			return false;
		}
		
		if (validateRequired(geboortedatum,"Je moet je geboortedatum invullen")==false) {
			geboortedatum.focus();
			return false;
		}
		
		if (validDate(geboortedatum)==false) {
			geboortedatum.focus();
			return false;
		}
		
		if (validateRequired(nationaliteit,"Je moet je nationaliteit invullen")==false) {
			nationaliteit.focus();
			return false;
		}
		
		if (validateRequiredRadio(m_v,"Geef aan of je een man of vrouw bent")==false) {
			return false;
		}
		
		if (validateRequired(adres,"Je moet je adres invullen")==false) {
			adres.focus();
			return false;
		}
		
		if (validateRequired(postcode,"Je moet je postcode invullen")==false) {
			postcode.focus();
			return false;
		}
		
		if (validateRequired(woonplaats,"Je moet je woonplaats invullen")==false) {
			woonplaats.focus();
			return false;
		}

		if (validateRequired(email,"Je moet je emailadres invullen")==false) {
			email.focus();
			return false;
		}
	
		if (validateEmail(email)==false) {
			email.focus();
			return false;
		}
		
		if (validateRequired(soort_lid,"Geef aan of je spelend lid, niet spelend lid of donateur wordt")==false) {
			soort_lid.focus();
			return false;
		}
		
		if (validateRequiredRadio(ind_vorige_vereniging,"Geef aan of je wel of niet eerder hebt gespeeld")==false) {
			return false;
		}
		
		if (validateRequired(rekeningnummer,"Je moet je rekeningnummer invullen (ongeacht of je wel of niet Caribe machtigt om de contributie af te schrijven)")==false) {
			rekeningnummer.focus();
			return false;
		}
		
		if (validateRequired(naam_rekeninghouder,"Je moet de naam van de rekeninghouder invullen")==false) {
			naam_rekeninghouder.focus();
			return false;
		}

		if (validateChecked(akkoord,"Geef aan dat je akkoord gaat met de voorwaarden")==false) {
			return false;
		}
		
		return true;
	}
}

function validateEmail(field) { 
	var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
 	if (!field.value.match(re)) {
 		alert(field.value + " is geen geldig email-adres");
		return false;
 	}
 	return true;
}

