function form_submit(form_name)
{
	if (validate(form_name))
		eval("document.forms['" + form_name + "']").submit();
}
//-----------------------------------------------------------------------------
function validate(form_name)
{
	var missinginfo = "";
	var validated;
	var failer = null;
	for (var j = 0; j < arrfields.length ; j+=3)
	{
		for (var i = 0 ; i < eval("document.forms['"+form_name+"']").elements.length ; i++)
		{
			if (eval("document.forms['"+form_name+"']").elements[i].name == arrfields[j])
			{
				switch (arrfields[j+1])
				{
					case "isaradiobuttonselected":
						command = arrfields[j+1]+"(document.forms['"+form_name+"']."+arrfields[j]+")";
						break;
					case "ischecked":
						command = arrfields[j+1]+"('"+form_name+"','"+arrfields[j]+"')";
						break;
					default:
						command = arrfields[j+1]+"(document.forms['"+form_name+"'].elements["+i+"])";
						break;
				}
				validated = eval(command);

				if (!validated) 
				{
					missinginfo += "\n     -  "+arrfields[j + 2];
					if (failer == null)
					{
						failer = eval("document.forms['"+form_name+"']").elements[i];
						if (failer.type == "text")
						{
							failer.focus();
							failer.select();
						}
						else
							failer = null;
					}
					break;
				}
			}
		}
	}
	
	if (missinginfo != "")
	{
		missinginfo = validate_header + ":\n__________________________________________________________\n" + missinginfo + "\n__________________________________________________________\n";
		alert(missinginfo);
		return false;
	}
	else
		return true;
}
//-----------------------------------------------------------------------------
var ToegestaanNum="0123456789";
var ToegestaanCap="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var ToegestaanPoint=".";
var ToegestaanSpace=" ";
var ToegestaanNonCAP="abcdefghijklmnopqrstuvwxyz";
var ToegestaanChar="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,'/-+ "
//------------------------------------------------------------------------------
function contains_akkoord(formelem)
{
	if (formelem.value == 'akkoord' || formelem.value == 'Akkoord' || formelem.value == 'AKKOORD' || formelem.value == 'aKKOORD')
		return true;
	return false;
}
//------------------------------------------------------------------------------
function isdate(formelem)
{
	if (formelem.value != '')
	  return DatumOK(formelem.value, formelem, '');
	return true;
}
//------------------------------------------------------------------------------
function isempty(formelem)
{
	return (formelem.value != "");
}
//------------------------------------------------------------------------------
function isselected(formelem)
{
	return (formelem.options.selectedIndex != 0);
}
//------------------------------------------------------------------------------
function isaradiobuttonselected(formelem)
{
	var breturn = 0;
	for (var i=0; i<formelem.length; i++)
		breturn |= formelem[i].checked;
	return breturn;	
}
//------------------------------------------------------------------------------
function ispostcode(formelem)
{
	if (formelem.value != '')
		return (ControlChar(ToegestaanNum,formelem.value.charAt(0)) && ControlChar(ToegestaanNum,formelem.value.charAt(1)) && ControlChar(ToegestaanNum,formelem.value.charAt(2)) && ControlChar(ToegestaanNum,formelem.value.charAt(3)) && ControlChar(ToegestaanCap,formelem.value.charAt(4)) && ControlChar(ToegestaanCap,formelem.value.charAt(5)));
	return true;
}
//-----------------------------------------------------------------------------
function ischar(formelem)
{
	if (formelem.value != '')
		return ControlString(ToegestaanChar,formelem.value.charAt(0));
	return true;
}
//-----------------------------------------------------------------------------


function isnumber(formelem)
{
	if (formelem.value != '')
		return ControlString(ToegestaanNum,formelem.value);
	return true;
}
//------------------------------------------------------------------------------
function isalfanumeriek(formelem)
{
	if (formelem.value != '')
		return ControlString(ToegestaanNum + ToegestaanCap + ToegestaanNonCAP + ToegestaanSpace,formelem.value);
	return true;
}
//------------------------------------------------------------------------------
function isvalidemail(formelem)
{
	if (formelem.value != '' && checkEmail(formelem.value) != 1)
		return false;
	return true;
}
//------------------------------------------------------------------------------
function ischecked(formname, formelem)
{
	var field = eval("document.forms['"+formname+"']").elements[formelem];

	if (field.length > 0)
	{
		for (i=0; i<field.length; i++)
		{
			if (field[i].checked)
				return true;
		}
		return false;
	}
	else
		 return field.checked;
}
//-----------------------------------------------------------------------------
function isbankrekeningnummer(formelem)
{
	if (formelem.value == '')
		return true;
	
	if (ControlString(ToegestaanNum,formelem.value))
		if (((parseInt(formelem.value.substring(0,1)) * 9) + (parseInt(formelem.value.substring(1,2)) * 8) + (parseInt(formelem.value.substring(2,3)) * 7) + (parseInt(formelem.value.substring(3,4)) * 6) + (parseInt(formelem.value.substring(4,5)) * 5) + (parseInt(formelem.value.substring(5,6)) * 4) + (parseInt(formelem.value.substring(6,7)) * 3) + (parseInt(formelem.value.substring(7,8)) * 2) + parseInt(formelem.value.substring(8,9))) % 11 == 0)
			return true;
	return false;
}
//------------------------------------------------------------------------------
function ControlString(toegestaan,invoer)
{
	for	(i=0; i<invoer.length; i++)
  {
		for	(ii=0; ii<toegestaan.length; ii++)
			if (invoer.charAt(i) == toegestaan.charAt(ii))
		 		break;
	  if (ii == toegestaan.length)
  		return false;
  }
  return true;
}
//------------------------------------------------------------------------------
function ControlChar(toegestaan,invoer)
{
	var toegestaneWaarden = toegestaan;
  var invoerKar         = invoer;
  var i;
  var resultaat=true;

   for ( i = 0; i < toegestaneWaarden.length; i++ )
       {  if (invoerKar == toegestaneWaarden.charAt( i ))
          break;
       }
  if (i  == toegestaneWaarden.length)
      resultaat = false;
  return resultaat;
}
//------------------------------------------------------------------------------
function DatumOK(invoer, iveld, veldnaam )
{
  var dag_maand=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  var dag_maand_schrikkel=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
  var datum_in=invoer;

  var dagc='';
  var maandc='';
  var jaarc='';

  var IsSchrikkel=false;
  var maxdagmaand=0;

  if (datum_in.length!=10) 
	  return false;
 
	// Gaat nu uit van het formaat yyyy-mm-dd (ISO-8601)
  for (i=0; i<10; i++) 
  { 
		aChar = datum_in.charAt(i); 
    if(!ControlChar(ToegestaanNum,aChar))
			if (!(aChar=="-" && ((i==4) || (i==7)))) 
      	return false;
  }

  for (i = 0; i < 4; i++) 
  { 
		aChar = datum_in.charAt(i) 
		jaarc=jaarc+aChar		
  }

  for (i = 5; i < 7; i++) 
  { 
    aChar = datum_in.charAt(i) 
    maandc=maandc+aChar
  }

  for (i = 8; i < 10; i++) 
  { 
    aChar = datum_in.charAt(i) 
    dagc=dagc+aChar
  }

  var dagn=parseInt(dagc,10);
  var maandn=parseInt(maandc,10);
  var jaarn=parseInt(jaarc,10);
	
  if ((maandn > 12) || (maandn < 1))
	  return false;

  if ((jaarn % 4 == 0) || (jaarn % 400 ==0))
    IsSchrikkel=true;

  if (IsSchrikkel)
     maxdagmaand=dag_maand_schrikkel[maandn-1 ];
  else
     maxdagmaand=dag_maand[maandn-1];

  if ((dagn < 1) || (dagn > maxdagmaand))
  {
		if ((!IsSchrikkel) && (maandn==2) && (dagn==29))
	  {
	    return false;
	  }
  	else
		{
	    return false;
	  }
  }
  return true;
}
//------------------------------------------------------------------------------
function checkChars (s, i, l) {
		 while (i < l && ("_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789").indexOf(s.charAt(i)) != -1){
		 		 i++;
		 }
		 return i;
}
//------------------------------------------------------------------------------
function checkFirstLevelDomainChars (s, i, l) {
		 while (i < l && ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(s.charAt(i)) != -1) {
		 		 i++;
		 }
		 return (i == l);
}
//------------------------------------------------------------------------------
function checkEmail (e) {
		 var i, j, l = e.length;
		 var foundPoint = false;

		 // every email starts with a string
		 if ((i=checkChars(e, 0, l)) == 0) {
		 		 return -1;
		 }
		 //init j
		 j=i;

		 // followed by an arbitrary number of ("." string) combinations
		 while (i < l && e.charAt(i) == ".") {
		 		 // skip the point
		 		 i++;
		 		 // if there are no chars, we have an error
		 		 if ((j=checkChars(e, i, l)) == i) {
		 		 		 return -2;
		 		 }
		 		 // else skip the chars
		 		 i = j;
		 }
		 // then follows the magic @
		 if (e.charAt(i) != "@"){
		 		 return -3;
		 }

		 // followed by minimum one string point string
		 // after the last point minimum 2 characters are allowed

		 do {
		 		 // skip the @ (j == i at the beginning, so it is like i++)
		 		 i = j+1;
		 		 // do we have more chars ?
		 		 j = checkChars(e, i, l);
		 		 if (j == i) {
		 		 		 // no more chars found -> error
		 		 		 return -4;
		 		 } else if (j == e.length) {
		 		 		 // emailaddress is finished, do we have a first level domain ?
		 		 		 j -= i;
		 		 		 // we have one if it is at least 2 long and consists of the correct characters
		 		 		 if(foundPoint && j>=2 && checkFirstLevelDomainChars(e, i, l)){
		 		 		 		 return 1
		 		 		 } else {
		 		 		 		 return -5
		 		 		 }
		 		 }
		 		 // if we reach the end or don't have a point, we return an error
		 		 foundPoint = (e.charAt(j) == ".");
		 } while (i < l && foundPoint);
		 return -6;
}
//------------------------------------------------------------------------------
function isinteger(formelem)
{
	if (isnumeric(formelem, 'integer'))
		return true;
	else
		return false;
}
//-----------------------------------------------------------------------------
function issignedinteger(formelem)
{
	if (isnumeric(formelem, 'signedinteger'))
		return true;
	else
		return false;
}
//-----------------------------------------------------------------------------
function isdecimal(formelem)
{
	if (isnumeric(formelem, 'decimal'))
		return true;
	else
		return false;
}
//-----------------------------------------------------------------------------
function issigneddecimal(formelem)
{
	if (isnumeric(formelem, 'signeddecimal'))
		return true;
	else
		return false;
}
//-----------------------------------------------------------------------------
function isnumeric(formelem, type)
{
	valid_chars = "0123456789";
	
  if (arguments.length < 2)
		type = 'signeddecimal';
	switch (type)
	{
		case 'integer':
			break;
		case 'signedinteger':
			valid_chars += "+-";
			break;
		case 'decimal':
			valid_chars += ".";
			break;
		case 'signeddecimal':
			valid_chars += "+-.";
			break;
	}

	//alle voor- en achterliggende spaties verwijderen en komma's vervangen door een punt.
	formelem.value = trim(formelem.value);
	formelem.value = formelem.value.replace(/,/gi, '.');
	
	// controleren op ongeldige tekens; er mag max 1 punt voorkomen.
	// er mag max 1 plus of minteken voorkomen en dan alleen op eerste positie.
	i = 0;
	len = formelem.value.length;
	str = formelem.value;
	cnt_point = 0;
	pos_plus = 0;
	pos_min = 0;
	while (i < len && valid_chars.indexOf(str.charAt(i)) != -1)
	{
		switch (str.charAt(i))
		{
		case '.':
			cnt_point++;
			break;
		case '+':
			pos_plus += i;
			break;
		case '-':
			pos_min += i;
			break;
		}
		i++;
	}
//	alert(i + ' ^ ' + len + ' ^ ' + cnt_point + ' ^ ' + pos_plus + ' ^ ' + pos_min);
	if (i < len || cnt_point > 1 || pos_plus > 0 || pos_min > 0)
		return false;
	else
		return true;
}
//-----------------------------------------------------------------------------
function trim(strTextvar)
{
	if (strTextvar == null) return strTextvar;

	var strText = new String("")
	strText = strTextvar; //needed for NN

	// this will get rid of leading spaces 
	while (strText.substring(0,1) == ' ') 
		strText = strText.substring(1, strText.length);

	// this will get rid of trailing spaces 
	while (strText.substring(strText.length-1,strText.length) == ' ')
		strText = strText.substring(0, strText.length-1);

	return strText;
} 
//------------------------------------------------------------------------------
function ispasswordequal(formelem)
{
	/*
	deze functie moet aangeroepen worden met het tweede wachtwoordveld. 
	de naam van de velden moet eindigen met _1 resp. _2
	*/
	frm = formelem.form;
	fld2 = formelem.name;
	fld1 = fld2.replace(/_2/gi, '_1')
	obj = eval('frm.' + fld1);
	if (obj.value == formelem.value)
		return true;
	else
		return false;
} 
