/*
function checkField
param[0]: form naam
param[1]: input veld naam
param[2]: type check
param[4] (optioneel) alert message

    function checkForm(){
      var result = checkField("test","email","email","Het veld email moet een geldig adres bevatten hoor!");
      if (result) result = checkField("test","pc","postcode");
      if (result) result = checkField("test","num","number");
      if (result) result = checkField("test","leeg","nonempty","leeg?");
      if (result) result = checkField("test","money","bedrag");
      return result;
}
<form name="test" onSubmit="return checkForm()" action="#" method="POST">    
*/


var regExps = new Array();
// rfc8010 
regExps["pre-email"]= /\b(^(\S+@).+(\.\S{2,6})$)\b/i;
regExps["pre-email"].msg = "Dit veld bevat geen geldig email adres";

// Nieuwe definitie email
// Aangepasst n.a.v. 8355
regExps["email"]= /^([A-Z0-9]+[._-]?){1,}[A-Z0-9]+\@(([A-Z0-9]+[-_]?){1,}[A-Z0-9]+\.){1,}[A-Z]{2,6}$/i;
regExps["email"].msg = "Dit veld bevat geen geldig email adres";
// Eind RFC 8010

//regExps["postcode"]= /^\s*\d{4}?[a-z]{2}\s*$/i;
regExps["postcode"]= /^\s*\d{4}[a-z]{2}\s*$/i;
regExps["postcode"].msg = "Dit veld bevat geen geldige postcode";
regExps["number"]=/^[+-]?[\d]+$/;
regExps["number"].msg = "Dit veld bevat geen geldig nummer";

regExps["posnumber"]=/^[1-9]+[\d]?$/;
regExps["posnumber"].msg = "Dit veld bevat geen geldig nummer";
regExps["gezinsleden"]= /^[1-6]?$/;
regExps["nonempty"]=/\S+/;
regExps["nonempty"].msg = "Dit veld mag niet leeg zijn";
regExps["bedrag"]=/^\s*((\d+)|((\d{1,3}\.)(\d{3}\.)*(\d{3})))(,\d{1,2})?\s*$/;
regExps["bedrag"].msg = "Dit is geen juist bedrag";
regExps["date1"]= /^(0[1-9]|1[0-9]|2[0-9]|3[0-1])-(0[1-9]|1[0-2])-([0-9][0-9])$/;
regExps["date1"].msg = "Dit is geen juiste datum";
regExps["timebox"]= /^(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])$/;
regExps["timebox"].msg = "Dit is geen juist tijdstip";
regExps["amnummer"]= /^\d{9}$/;
regExps["amnummer"].msg = "Dit is geen juist Air Miles nummer";

function checkField(whatForm,whatField,whatType){
  if (!document.forms[whatForm]){
    alert("no  such form : " + whatForm);
    return false;
  } else {
    if (!document.forms[whatForm][whatField]){
      alert("no  such field : " + whatField);
      return false;
    }   
  }

  var theField =  document.forms[whatForm][whatField];
  if (!regExps[whatType]) return true;   //het zal het wel goed zijn
  if (!getFieldValue(theField).match(regExps[whatType])) {
  var msg = arguments[3];
  if (!msg) msg = regExps[whatType].msg + "\n(" + whatField + ")";
    alert(msg);
    focusFieldValue(theField);
    return false;
    } else {return true;}
  }

function getFieldValue(whatField){
	if (whatField.type=='select'||whatField.type=='select-one') {return "" + whatField[whatField.selectedIndex].value};
	if (whatField.length){
		for (var i=0;i<whatField.length;i++) if (whatField[i].checked) return whatField[i].value;
		return "";
	}
	else return "" + whatField.value;
}

function focusFieldValue(whatField){
	if (whatField.type!='hidden' && !whatField.length) whatField.focus();
}

function isValidAirmilesNumber(aAirmilesNumber) {
	if (!aAirmilesNumber) {
		return false;
	} else {}
	
	if ( !aAirmilesNumber.match(regExps["amnummer"])) {
		return false;
	}
	
	//Check first number
	if (aAirmilesNumber.charAt(0)=='0' || aAirmilesNumber.charAt(0)>'3') {
		return false;
	}

	//Do the 11-check
	total=0;
	formula='';
	for (i=0;i<9;i++) {
		num=aAirmilesNumber.charAt(i);
		total+=num*(9-i);
		formula=formula + '( ' + String(num) + ' * ' + String(9-i) + ') +  ';
	}
	//alert(formula);
	//alert(total);

	if (total%11 != 0) {
		return false;
	}
	
	return true;	
	
}
