function validateBSN(e) {
   // Verificate 11 proef and modify where appropriate
   var i= 9;
   var s='';
   var k=0;
   for (var n=0; n< e.value.length; n++) {
      if (e.value[n]>='0' && (e.value[n]<='9')) {
         s+= e.value[n];
         k+= e.value*i;
         i--;
      }
   }
   if (i!=0) { alert('Te weinig cijfers'); e.style.background='red'; return false; }
   else if ((k % 11)!= 0) { alert('Geen geldig Burgerservicenummer'); e.style.background='red'; return false; }
   else { e.value=s; e.style.background='transparent'; return true; }
}

function validateBankAccount(e) {
   // Verificate 11 proef and modify where appropriate
   var i= 9;
   var s='';
   var k=0;
   if (e.value[0]=='P') {
      // Rest must be numeric and at least 5 digits
      for (var n=1; n< e.value.length; n++) {
         if (e.value[n]<='0') { alert('Ongeldig teken in gironummer'); e.style.background='red'; e.focus(); e.select(); return false; }
         if (e.value[n]>='9') { alert('Ongeldig teken in gironummer'); e.style.background='red'; e.focus(); e.select(); return false; }
      }
      if (n< 6)     { alert('Te weinig cijfers in gironummer'); e.style.background='red'; e.focus(); e.select(); return false; }
      else if (n>8) { alert('Te veel cijfers in gironummer');   e.style.background='red'; e.focus(); e.select(); return false; }
      else          { e.style.background='transparent'; return true; }
   }
   for (var n=0; n< e.value.length; n++) {
      if (e.value[n]>='0' && (e.value[n]<='9')) {
         s+= e.value[n];
         k+= e.value*i;
         i--;
      }
   }
   if (i!=0) { alert('Te weinig cijfers, gironummer?'); e.style.background='red'; e.focus(); e.select(); return false; }
   else if ((k % 11)!= 0) { alert('Geen geldig Bankrekeningnummer'); e.style.background='red'; e.focus(); e.select(); return false; }
   else { e.value=s; e.style.background='transparent'; return true; }
}

function validateTime(t) {
   var exp = /^\d{1,2}:\d{2}?$/;
   var e=exp.test(t.value);
   if (e==false) {
      alert(t.value + " is geen geldige tijd");
      t.select();
      t.focus();
      t.style.background='red';
   }
   else { t.style.background='transparent'; }
   return e;
}

function validateDate(d) {
   exp1= /^(\d{1,2})-(\d{1,2})-(\d{4})$/;
   exp2= /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
   exp3= /^(\d{1,2}) (\w{3}) (\d{2,4})$/; // Allow dd mmm yyyy
   var e1=exp1.test(d.value);
   var e2=exp2.test(d.value);
   var e3=exp2.test(d.value);
   if (e1 || e2 || e3) {
      // try to convert the value to yyyy-mm-dd format
      d.style.background='transparent';
   }
   else { alert("Ongeldige datum."); d.focus(); d.select(); d.style.background='red'; }
   return e1 || e2 || e3;
}

function validateEmail(m) {
   var exp=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i
   var e=exp.test(m.value)
   if (e==false) { alert("Ongeldig email address."); m.focus(); m.select(); m.style.background='red'; }
   else m.style.background='transparent';
   return e;
}

function validatePostcode(p) {
   // Tricky... Postcode must be matched against database of known addresses
   // and must enter the proper street and city into the appropriate fields
   // However, if no match is found, accept it anyway
   // Foreign addresses are to be preceded by countrycode and minus sign, as in B-1100 for Antwerpen
   // Postal codes to be validateed:
   // B- Belgium
   // F- France
   // D- Germany
   // NL- Netherlands
   // No prefix=Netherlands
   // var exp=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i means begin, word, optional (dot word) required @, optional (word dot), word dot (two to 4 chars from a-z)

   return true;
}

function validateStreetCity(e) {
   // Tricky... street and city must be matched against database of known addresses
   // and must enter the proper postal code into the postcode field
   // However, if no match is found, accept it anyway
   // Foreign addresses are to be indicated by the city name postfixed with the country code in parenthesis, as in Deurne (B)
   return true;
}

