/*
  -----------------------------------------------------

  Functies ten behoeve van controles bij het verlaten
  van een form.
  
  - initDefaults
    Laadt de waarden van velden in in het defaultValue
	attribuut van dit veld
  - isDirty
    Controleert aan de hand van de defaultValues van
    de formvelden of het formulier is gewijzigd
  - checkFormVelden
    Controleert voor het opgegeven form of alle verplichte
    velden werden ingevuld; zoniet wordt er false
    geretourneerd.
    Een verplicht veld heeft een id beginnende met een v.

  OPM
  - indien tussentijds het frm wordt gesubmit,
    initDefaults opnieuw laten uitvoeren om de defaults
	terug te initialiseren.
	
  GEBRUIK    (-- suggestie in semi pseudo --)
  
  <body onbeforeunload = "functie()">
  
  functie()
   {
    if (isDirty(formulier))
	  {
	    Melding
		
		formulier.submitknop.click()  of  event opvangen
	  }
	}

  --UPDATE 2004/09/17--
  * Datum werd als fout aangerekend indien NIET verpl.
    en leeggelaten.

  -----------------------------------------------------
*/
  
	function initDefaults(oForm)
	// Zet defaultwaarden van alle formvelden op de huidige waarde
		{
		
			var iNumElems = oForm.elements.length;

			for (var i=0;i<iNumElems;i++)
			{
				
				var oElem = oForm.elements[i];
	
				if ("text" == oElem.type || "TEXTAREA" == oElem.tagName)
				{
					oElem.defaultValue = oElem.value;
				}
				else if ("checkbox" == oElem.type || "radio" == oElem.type)
				{
					oElem.defaultChecked = oElem.checked;
				}
				else if ("SELECT" == oElem.tagName)
				{
					var oOptions = oElem.options;
					var iNumOpts = oOptions.length;
					for (var j=0;j<iNumOpts;j++)
					{
						var oOpt = oOptions[j];
						oOpt.defaultSelected = oOpt.selected;
					}
				}
			}
		}
		
	function isDirty(oForm)
	// Controleer of de form inhoud is gewijzigd
	// Werkt adhv defaultvalues (evt. initDefaults laden)
		{
			//if(fSubmit) return false;
			
			var iNumElems = oForm.elements.length;
			
			for (var i = 0; i < iNumElems; i++)
			{
				var oElem = oForm.elements[i];
			
				if ("text" == oElem.type || "TEXTAREA" == oElem.tagName)
				{
					if (oElem.value != oElem.defaultValue) return true;
				}
				else if ("checkbox" == oElem.type || "radio" == oElem.type)
				{
					if (oElem.checked != oElem.defaultChecked) return true;
				}
				else if ("SELECT" == oElem.tagName)
				{
					var oOptions = oElem.options;
					var iNumOpts = oOptions.length;
					for (var j=0;j<iNumOpts;j++)
					{
						var oOpt = oOptions[j];
						if (oOpt.selected != oOpt.defaultSelected) return true;
					}
				}
			}
			
			return false;

		}


	function checkFormVelden(oForm)
	// Controleert de aanwezige velden.
		{
			var iNumElems = oForm.elements.length;

			for (var i=0;i<iNumElems;i++)
			{
				var oElem = oForm.elements[i];
	
				// Indien het eerste karakter van de ID een v_ is, is dit veld verplicht en wordt de invoer gecontroleerd.
				if (oElem.id.indexOf('v_') == 0)
				{
				
					veldVerplicht = 1;
				
					if ("text" == oElem.type || "TEXTAREA" == oElem.tagName)
					{
						if (oElem.value == '')
						{
							oElem.focus();
							alert('Alle velden gemarkeerd met een * dient u in te vullen.');
							return false;
						}
					}
					else if ("SELECT" == oElem.tagName)
					{
						if (oElem.selectedIndex == 0)
						{
							oElem.focus();
							alert('U dient een keuze te maken uit de lijst.');
							return false;
						}
					}
				}
				else
				{
					veldVerplicht = 0;
				}

				// indien het veld een mailadres (type 4) moet zijn, controleer dit
				if (oElem.id.indexOf('4') == 2 && ( oElem.value.indexOf('@') == -1  || oElem.value.indexOf('.') == -1) && oElem.value != '' )
				{
					oElem.focus();
					alert('U dient een geldig e-mailadres in te geven.');
					return false;
				}

				// indien het veld een datum (type 1) moet zijn, controleer dit
				else if (oElem.id.indexOf('1') == 2 && oElem.id.indexOf('1') == 2 && ! validateDate(oElem.value) )
				{
					if (oElem.value == '' && veldVerplicht == 0)
					{
						// lengte = 0 maar veld niet verplicht
					}
					else
					{
						oElem.focus();
						alert('U dient een geldige datum in te geven.');
						return false;
					}
				}
				
				// indien het veld een tijd (type 2) moet zijn, controleer dit
				else if (oElem.id.indexOf('2') == 2)
				{
					passTime = oElem.value;
					
					var returnTime = "";

					returnUur = passTime.charAt(0) + passTime.charAt(1)

					if (passTime.length == 4)
					{
						returnMin = passTime.charAt(2) + passTime.charAt(3)
					}
					else if (passTime.length == 5)
					{
						returnMin = passTime.charAt(3) + passTime.charAt(4)
					}
			
					if (new Number(returnUur) >= 0 && new Number(returnMin) >= 0 && (new Number(returnUur) <= 23 && new Number(returnMin) <= 59))
					{
						returnTime = returnUur + ":" + returnMin;

						oElem.value = returnTime;

					}
					else
					{
						oElem.focus();
						alert('U dient een geldige tijd in te geven (uu:mm).');
					}
				}
			}
		}

		
function validateDate(passVal)
	{

	if (new Date(passVal) == "NaN")
		return false;
	else
		return true;
		
	}

