var foutInDezeRun;

/**
 * controleerWWVergeten
 */
function controleerWWVergeten(formulier)
{
	foutInDezeRun = false;
	
	controleerVeld(formulier.elements.emailadres,"^[^@]+@[^@]+.[a-z]{2,}$");
	
	if (foutInDezeRun)
	{
		getChildElementById(formulier, "melding").style.display = 'block';
		return (false);
	} else {
		getChildElementById(formulier, "melding").style.display = 'none';
		return (true);
	}
}

/**
 * controleerAanmeldformulier
 */
function controleerAanmeldformulier(formulier)
{
	foutInDezeRun = false;

	controleerVeld(formulier.elements.Bedrijfsnaam,"");
	controleerVeld(formulier.elements.Emailadres_Gebruikersnaam,"^[^@]+@[^@]+.[a-z]{2,}$");

	// controleer ingevoerde wachtwoord
	var sMelding = document.getElementById('melding').innerHTML;
	if (
		(formulier.elements.Wachtwoord.value == "" || formulier.elements.Wachtwoord_bevestiging.value == "")
		||
		(formulier.elements.Wachtwoord.value != formulier.elements.Wachtwoord_bevestiging.value)
		){
		foutInDezeRun = true;
		// velden markeren
		formulier.elements.Wachtwoord.className = 'veldFout';
		formulier.elements.Wachtwoord_bevestiging.className = 'veldFout';
	} 
	else
	{
		// wachtwoorden zijn gelijk aan elkaar
		// controleer of lengte van wachtwoord ok is
		var lengte = formulier.elements.Wachtwoord.value.length;
		if (lengte < 4 || lengte > 15) 
		{
			foutInDezeRun = true;
			formulier.elements.Wachtwoord.className = 'veldFout';
			formulier.elements.Wachtwoord_bevestiging.className = 'veldFout';
		}
	}
	
	if (foutInDezeRun)
	{
		getChildElementById(formulier, "melding").style.display = 'block';
		return (false);
	} else {
		getChildElementById(formulier, "melding").style.display = 'none';
		return (true);
	}
}

/**
 * controleerBoekingsFormulier
 */
function controleerBoekingsFormulier( formulier ) 
{
	foutInDezeRun = false;	
	
	controleerVeld(formulier.elements.Bedrijfsnaam,"");
	controleerVeld(formulier.elements.Vestigingsplaats,"");
	controleerVeld(formulier.elements.Telefoonnummer,"");
	controleerVeld(formulier.elements.Contactpersoon,"");
	controleerVeld(formulier.elements.Emailadres,"^[^@]+@[^@]+.[a-z]{2,}$");
	
	if (foutInDezeRun)
	{
		getChildElementById(formulier, "melding").style.display = 'block';
		return (false);
	} else {
		getChildElementById(formulier, "melding").style.display = 'none';
		return (true);
	}
}

/**
 * controleerPFAanmeldFormulier
 */
function controleerPFAanmeldFormulier(formulier)
{
	foutInDezeRun = false;

	controleerVeld(formulier.elements.firma_naam,"");
	controleerVeld(formulier.elements.inschrijfnummer_kvk,"^[0-9]{8}$");
	controleerVeld(formulier.elements.btw_nummer,"");
	controleerVeld(formulier.elements.bank_giro_nummer,"");
	controleerVeld(formulier.elements.telefoonnummer,"");
	controleerVeld(formulier.elements.faxnummer,"");
	controleerVeld(formulier.elements.contactpersoon,"");
	controleerVeld(formulier.elements.afleveradres,"");
	controleerVeld(formulier.elements.afleveradres_postcode,"");
	controleerVeld(formulier.elements.afleveradres_plaats,"");
	controleerVeld(formulier.elements.factuuradres,"");
	controleerVeld(formulier.elements.factuuradres_postcode,"");
	controleerVeld(formulier.elements.factuuradres_plaats,"");
	controleerVeld(formulier.elements.emailadres,"^[^@]+@[^@]+.[a-z]{2,}$");
	
	// controle van niet verplichte velden (emailadressen)
	aNietVerplicht = ['directie_email','inkoop_email','financieel_email', 'technisch_email'];
	for( var i=0; i < aNietVerplicht.length; i++)
	{
		if (document.getElementById( aNietVerplicht[i] ).value != "" ) 
		{
			controleerVeld( eval("formulier.elements."+aNietVerplicht[i]), "^[^@]+@[^@]+.[a-z]{2,}$");	
		}
	}
	
	if (foutInDezeRun)
	{
		getChildElementById(formulier, "melding").style.display = 'block';
		return (false);
	} else {
		getChildElementById(formulier, "melding").style.display = 'none';
		return (true);
	}
}

/**
 * controleerContactFormulier
 */
function controleerContactFormulier(formulier)
{
	foutInDezeRun = false;

	controleerVeld(formulier.elements.Reactie,"");
	controleerVeld(formulier.elements.Bedrijfsnaam,"");
	controleerVeld(formulier.elements.Voorletters,"");
	controleerVeld(formulier.elements.Voornaam,"");
	controleerVeld(formulier.elements.Achternaam,"");
	controleerVeld(formulier.elements.Postcode,"");
	controleerVeld(formulier.elements.Plaats,"");
	controleerVeld(formulier.elements.Adres,"");
	controleerVeld(formulier.elements.Telefoon,"");
	controleerVeld(formulier.elements.Emailadres,"^[^@]+@[^@]+.[a-z]{2,}$");

	if (foutInDezeRun)
	{
		getChildElementById(formulier, "melding").style.display = 'block';
		return (false);
	} else {
		getChildElementById(formulier, "melding").style.display = 'none';
		return (true);
	}
}

/**
 * controleerNieuwsbriefAanmeldFormulier
 */
function controleerNieuwsbriefAanmeldFormulier(formulier)
{
	foutInDezeRun = false;

	controleerVeld(formulier.elements.Bedrijfsnaam,"");
	controleerVeld(formulier.elements.Voornaam,"");
	controleerVeld(formulier.elements.Achternaam,"");
	controleerVeld(formulier.elements.Emailadres,"^[^@]+@[^@]+.[a-z]{2,}$");

	if (foutInDezeRun)
	{
		getChildElementById(formulier, "melding").style.display = 'block';
		return (false);
	} else {
		getChildElementById(formulier, "melding").style.display = 'none';
		return (true);
	}
}

// Controleer of de waarde in het veld voldoet aan 
// de reguliere expressie: format. Als format niet
// wordt opgegeven, dan controleren of het veld 
// gevuld is.
function controleerVeld(veld, format)
{
	var err;
	if (format == "") {
		err = veld.value == "";
	} else {
		err = veld.value == "" || 
				veld.value.search(format) == -1;
	}
	if(err)
	{
		veld.className = 'veldFout';
		if (!foutInDezeRun) { // Focus het eerste veld met een fout
			veld.focus();
		}
		foutInDezeRun = true;
	}
	else
	{
		veld.className = 'veld';
	}
}

// Controleer of voor de gegeven option group een
// optie is geselecteerd.
function controleerOptionGroup(group, veld)
{
	var selectedItems = 0;
	for (var i = 0; i < group.length; i++) {
		if (group[i].checked == true) {
			selectedItems++;
		}
	}
	
	if(selectedItems == 0)
	{
		veld.className = 'veldFout';
		foutInDezeRun = true;
	}
	else
	{
		veld.className = 'veld';
	}
}

function textCounter(field, maxlimit)
{
   if (field.value.length > maxlimit)
   {
       field.value = field.value.substring(0, maxlimit);
   }
}

// Zoek een child met id=child_id in de children van
// component. Geeft null terug als het child_id niet
// is gevonden.
function getChildElementById(component, child_id) {
	var children = new Array();
	var result = null;
	children.push(component);
	
	while (result == null && children.length > 0) {
		child = children.pop();

		if (child.id && child.id == child_id) {
			result = child;
		} else if (child.hasChildNodes() && child.childNodes != null) {
			children2 = children;
			for (var i=0; i<child.childNodes.length; i++) {
				children.push(child.childNodes[i]);
			}
		}
	}
	
	return result;
}