/*
De Volgende opties zijn aanwezig:
-----------------------------------------------------------------------------
	required
	email
	md5
	number
	decimal=""  // definieer hoeveel decimalen er mogen worden ingevoerd
	match=""    // definieer aan welk veldid hij gelijk moet zijn
-----------------------------------------------------------------------------
*/
document.onreadystatechange = function() {
	// Beveiligd tegen forms zonder velden of beginnend met hidden velden of fieldsets
	f = document.forms[0];
	elNr = 0;
	while ( typeof( f.elements[elNr] ) != 'undefined' && ( (f.elements[elNr].tagName == 'INPUT' && f.elements[elNr].type == 'hidden') || f.elements[elNr].tagName == 'FIELDSET' ) )
		++elNr;
	if ( typeof( f.elements[elNr] ) != 'undefined' )
		f.elements[elNr].focus();
};

function checkForm( form ) {
	var fout = false;
	var foutID = -1; // foutID houdt bij in welk elementID de laatste fout zat. Nodig om te kijken of de tekst zwart mag worden gemaakt
	if ( form == null ) { form = 0; }
	f = document.forms[form];

	for( i = 0 ; i < document.forms[form].elements.length ; i++ )
	{
		el = document.forms[form].elements[i];
		if ( el.tagName == 'INPUT' || el.tagName == 'FILE' || el.tagName == 'TEXTAREA' || el.tagName == 'HIDDEN' )
		{
			// trim de value
			el.value = trim( el.value );
			if ( el.getAttribute( 'required' ) != null && el.value.length == 0 )
			{
				if ( document.getElementById( el.name+'Text' ) != null )
				{
					document.getElementById( el.name+'Text' ).style.color = 'red';
				}
				if ( !fout )
				{
					melding = 'U bent vergeten het veld ' + el.title.toLowerCase() + ' in te vullen';
					el.focus();
					fout = true;
				}
			} else {
				// controleer of het een e-mail adres moet zijn
				if ( el.getAttribute( 'email' ) != null )
				{
					var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
					if ( !filter.test( el.value ) )
					{
						if ( document.getElementById( el.name+'Text' ) != null )
						{
							document.getElementById( el.name+'Text' ).style.color = 'red';
						}
						foutID = i;
						if ( !fout )
						{
							melding = 'Het e-mail adres voor veld ' + el.title.toLowerCase() + ' wordt niet herkent';
							el.focus();
							fout = true;
						}
					} else {
						if ( document.getElementById( el.name+'Text' ) != null )
						{
							document.getElementById( el.name+'Text' ).style.color = '';
						}
					}
				}

				// Controleer of het een getal moet zijn
				if ( el.getAttribute( 'number' ) != null )
				{
					if ( isNaN( el.value ) )
					{
						if ( foutID != i && document.getElementById( el.name+'Text' ) != null )
						{
							document.getElementById( el.name+'Text' ).style.color = 'red';
						}
						if ( !fout )
						{
							melding = 'Het veld ' + el.title.toLowerCase() + ' dient een getal te zijn';
							el.focus();
							fout = true;
							foutID = i;
						}
					} else {
						if ( foutID != i && document.getElementById( el.name+'Text' ) != null )
						{
							document.getElementById( el.name+'Text' ).style.color = '';
						}

						// Controleer of het getal een aantal decimalen mag bevatten
						if ( el.getAttribute( 'decimal' ) != null && !isNaN( el.decimal ) )
						{
							elValueTemp = el.value.split('.');
							if ( elValueTemp.length > 1 )
							{
								if ( el.decimal == 0 )
								{
									el.value = elValueTemp[0];
								} else {
									// Controleer of er niet wordt geeindigd met een punt
									if ( elValueTemp[1].length == 0 )
									{
										el.value = elValueTemp[0];
									} else {
										el.value = elValueTemp[0]+'.'+elValueTemp[1].substring(0, el.decimal);
									}
								}
							}
						} else {
							// Controleer of er niet wordt geeindigd met een punt
							elValueTemp = el.value.split('.');
							if ( elValueTemp.length > 1 )
							{
								if ( elValueTemp[1].length == 0 )
								{
									el.value = elValueTemp[0];
								}
							}
						}
					}
				} else {
					if ( foutID != i && document.getElementById( el.name+'Text' ) != null )
					{
						document.getElementById( el.name+'Text' ).style.color = '';
					}
				}

				// Controleer of het identiek aan een ander veld moet zijn
				if ( el.getAttribute( 'match' ) != null && el.match.length > 0 )
				{
					if ( el.value != document.getElementById( el.match ).value )
					{
						if ( foutID != i && document.getElementById( el.name+'Text' ) != null )
						{
							document.getElementById( el.name+'Text' ).style.color = 'red';
						}
						if ( !fout )
						{
							melding = 'Het veld ' + el.title.toLowerCase() + ' dient hetzelfde te zijn als het veld '+document.getElementById( el.match ).title.toLowerCase();
							el.focus();
							fout = true;
							foutID = i;
						}
					} else {
						if ( foutID != i && document.getElementById( el.name+'Text' ) != null )
						{
							document.getElementById( el.name+'Text' ).style.color = '';
						}
					}
				}
			}
		} // Einde INPUT - FILE - TEXTAREA

		if ( el.tagName == 'SELECT' )
		{
			// de value wordt alleen in de check getrimt, hierdoor kun je zelf bepalen of je met een spatie begint of eindigd
			if ( el.getAttribute( 'required' ) != null && trim( el.value ).length == 0 )
			{
				if ( document.getElementById( el.name+'Text' ) != null )
				{
					document.getElementById( el.name+'Text' ).style.color = 'red';
				}
				if ( !fout )
				{
					melding = 'U bent vergeten een item te selecteren in het veld ' + el.title.toLowerCase();
					el.focus();
					fout = true;
				}
			} else {
				if ( document.getElementById( el.name+'Text' ) != null )
				{
					document.getElementById( el.name+'Text' ).style.color = '';
				}
			}
		} // Einde SELECT
	}

	if ( fout )
	{
		alert( melding );
		return false;
	}

	// Controleer of er wachtwoord moeten worden beveiligd met md5
	// i wordt _i omdat i al wordt gebruikt in calcMD5
	for( _i = 0 ; _i < document.forms[form].elements.length ; _i++ )
	{
		el = document.forms[form].elements[_i];
		if ( el.getAttribute( 'md5' ) != null && trim( el.value ).length != 0 )
		{
			el.value = calcMD5( el.value );
		}
	}
	return true;
}

function trim( strText ) {
	while ( strText.substring(0,1) == ' ' )
	{
		strText = strText.substring(1, strText.length);
	}
	while (strText.substring(strText.length-1,strText.length) == ' ')
	{
		strText = strText.substring(0, strText.length-1);
	}
	return strText;
}
