/*
Auteur:	David Rottiers

Functie: 	controleerEmail(adres)
Actie: 	controleert of doorgegeven string een correct geformatteerd e-mail adres is
Param: 	String
Return: 	false als adres niet correct, anders true

Controle:
	adres uit 2 delen, gescheiden door één @	
	de delen mogen niet beginnen of eindigen met een . (punt)
	elk teken dat voorkomt moet toegelaten zijn: A-z, 0-9, -, _, .
	het tweede deel MOET een punt bevatten
 	tweede deel mag GEEN 2 punten na elkaar bevatten
	de extensie moet bestaan uit 2,3 of 4 tekens (bv. be, com, info)
*/			

function controleerEmail(adres)
{
	var adresVolledig = adres.value;
	var toegelatenTekens = "abcdefghijklmnopqrstuvwxyz0123456789-_."
			
	// adres wordt in 2 delen opgesplitst	
	var adresOnderdelen = adresVolledig.split("@");
				
	if (adresOnderdelen.length != 2)
		return false;
	else
	{
		// tweede deel MOET een punt bevatten
		if (adresOnderdelen[1].indexOf(".") == -1)
			return false;
		else
		{
			// tweede deel mag GEEN twee punten na elkaar bevatten
			if (adresOnderdelen[1].indexOf("..") > 0)
				return false;
			else
			{
				// extensie moet uit 2,3 of 4 tekens bestaan
				var extensie = adresOnderdelen[1].substring((adresOnderdelen[1].lastIndexOf(".")+1), adresOnderdelen[1].length); 
								
				if (extensie.length < 2 || extensie.length > 4)	
					return false;
				else
				{
					var tellerOnderdelen, tellerTekens;
		
					// de onderdelen mogen niet leeg zijn
					for (tellerOnderdelen = 0; tellerOnderdelen < adresOnderdelen.length; tellerOnderdelen++)
					{
						if (adresOnderdelen[tellerOnderdelen].length <= 0)
							return false;
					}
		
					// elk teken wordt vergeleken met de inhoud van een string of array waar de toegelaten waarden in staan:
					// A-z, 0-9, -, _, .  
					for (tellerOnderdelen = 0; tellerOnderdelen < adresOnderdelen.length; tellerOnderdelen++)
					{
						for (tellerTekens = 0; tellerTekens <adresOnderdelen[tellerOnderdelen].length; tellerTekens++)
						{
							if (toegelatenTekens.indexOf(adresOnderdelen[tellerOnderdelen].charAt(tellerTekens).toLowerCase()) == -1)
								return false;
						}
					}

					// de delen mogen niet beginnen of eindigen met een "."
					for (tellerOnderdelen = 0; tellerOnderdelen < adresOnderdelen.length; tellerOnderdelen++)
					{
						if ((adresOnderdelen[tellerOnderdelen].indexOf(".") == 0) || (adresOnderdelen[tellerOnderdelen].indexOf(".") == adresOnderdelen[tellerOnderdelen].length-1))
							return false;
					}
				} // end else	
			} // end else
		} // end else
	} // end else
	return true;
} // end function