// controles_library.js
// alle beschikbare checks en hoofdfunctie die controles stuur op nummer.

var loError = false;
var myMessage;

// krijg serie van objecten (namen) binnen en roept voor elke param de fuControleerVeld aan	
function fuSubmitForm(pichFormulier, pichButton, pichFormActie) {
	
  myMessage = "";	
	// bij starten van submit, met zijn controles, altijd de controle logical loError op false zetten
	// om met een schone lei de controles te starten
	loError = false; 	
	
  pichButton.disabled = true;
  
  //var fieldArray = new Array();
  var field;
  for (j=0; j<pichFormulier.elements.length; j++) {    
          
    if(field!=pichFormulier.elements[j].name){
      fuControleerVeld(pichFormulier.elements[j])
    }
        
    
    field = pichFormulier.elements[j].name;
        
  }
  
  if(loError) {
   if(myMessage!=""){
     alert("De volgende problemen zijn opgetreden:\n\n" + myMessage);
   }
   else{
   // document.getElementById("erform").innerHTML = "Let op: Het formulier kon niet verzonden worden. Pas de gemarkeerde velden aan.";
   }
    pichButton.disabled = false;
    loError = false
  }
  else {
    if (pichFormulier.bewerking) {
      pichFormulier.bewerking.value = pichButton.name;
    }
    //pichFormulier.sesfid.value = parent.chSesfid;
    pichFormulier.method = "post";
    pichFormulier.action = pichFormActie;		    
    pichFormulier.submit();
    pichButton.disabled = false;
  } 
}

function fuEnterSubmit(pichFormulier, pichButton, pichFormActie) {
  if(window.event && window.event.keyCode == 13) {
    fuSubmitForm(pichFormulier, pichButton, pichFormActie);
  }
}

function fuControles(pichVeld, pichControles){
  var arResultaat = new Array();
  
  for (i=0; i<pichControles.length; i++) { 
    switch(pichControles[i]) {
	  /* leeg          */ case 0: arResultaat[0]=(fuIsLeeg(pichVeld)); break
	  /* niet leeg     */ case 1: arResultaat[1]=(fuIsNietLeeg(pichVeld)); break
	  /* postcode      */ case 2: arResultaat[2]=(fuIsPostcode(pichVeld)); break
	  /* datum         */ case 3: arResultaat[3]=(fuIsDatum(pichVeld)); break
	  /* email         */ case 4: arResultaat[4]=(fuIsEmail(pichVeld)); break
	  /* numeriek      */ case 5: arResultaat[5]=(fuIsNumeriek(pichVeld)); break
	  /* alfa      	   */ case 6: arResultaat[6]=(fuIsAlfa(pichVeld)); break
	  /* hoofdletter   */ //case 7: arResultaat[pichControles[i]]=(fuIsAlfaLettersGroot(pichVeld)); break	  
	  /* kleine letter */ //case 8: arResultaat[pichControles[i]]=(fuIsAlfaLettersKlein(pichVeld)); break	
	  /* niet 0        */ case 9: arResultaat[9]=(fuIsNietNul(pichVeld)); break
	  /* minimaal 8    */ case 10: arResultaat[10]=(fuMinimaalAcht(pichVeld)); break
	  /* telefoonnr    */ case 11: arResultaat[11]=(fuIsTelefoonnummer(pichVeld)); break
	     
	  }	  
  }
  return arResultaat;
}
// global vars, letters
var chLettersKlein = "abcdefghijklmnopqrstuvwxyz";
var chLettersHoofd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var chLettersAllen = chLettersKlein + chLettersHoofd;
var chCijfers = "0123456789";

//----------------------------------------------------------------------------------
// Check minimaal 8
//----------------------------------------------------------------------------------
function fuMinimaalAcht(piobFormField) {
  chVal = piobFormField.value;
	if (chVal.length < 8) 
	  return "Minimaal 8 karakters";
	else 
	  return "";
}

//----------------------------------------------------------------------------------
// Check postcode
//----------------------------------------------------------------------------------
function fuIsPostcode(piobFormField) {
  chVal = piobFormField.value;
	
	if (chVal!=""){
	    if (/^[1-9]{1}[0-9]{3}[a-zA-Z]{2}$/.test(chVal.replace(/ /g,''))) {
	      chVal = chVal.replace(/ /g,'').toUpperCase();chVal=chVal.substr(0,4)+''+chVal.substr(4);
	      piobFormField.value=chVal;
	      return "";
	    } 
			else {      
	      //piobFormField.focus();
				return "Dit is geen geldige postcode";
				
	    }
  	}
	else {
	  // leeggelaten, dan ook error
	  return "Dit is geen geldige postcode";
	}
	

}

//----------------------------------------------------------------------------------
// Check datum
//----------------------------------------------------------------------------------
function fuIsDatum(piobFormField){
  var chFormat = /^(0[1-9]|[12][0-9]|3[01])[-](0[1-9]|1[012])[-](19|20)\d\d$/

  if (chFormat.test(piobFormField.value) == false) 
  	  return "Dit is geen geldige datum";
  else
  	  return "";
}

//----------------------------------------------------------------------------------
// Check e-mail adres
//----------------------------------------------------------------------------------
function fuIsEmail(piobFormField) {
  //  Description: does not allow IP for domain name : hello@154.145.68.12 does not allow litteral addresses "hello, how are you?"@world.com allows numeric domain names after the last "." minimum 2 letters 
  //  Matches: he_llo@worl.d.com|||hel.l-o@wor-ld.museum|||h1ello@123.com 
  //  Non-Matches: hello@worl_d.com|||he&llo@world.co1|||.hello@wor#.co.uk 

  //var chFormat = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/
  var chFormat = /^[A-Za-z0-9_\.\-]*@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/

  if (chFormat.test(piobFormField.value) == false) 
  	  return "Dit is geen geldig emailadres";
  else
  	  return "";  
}

//----------------------------------------------------------------------------------
// Check numeriek
//----------------------------------------------------------------------------------
function fuIsNumeriek(piobFormField) {
  var chFormat = /^[0-9]+$/

  if (chFormat.test(piobFormField.value) == false) 
  	  return "Dit is geen numerieke waarde";
  else
  	  return ""; 
}

//----------------------------------------------------------------------------------
// Check is niet nul
//----------------------------------------------------------------------------------
function fuIsNietNul(piobFormField) {

  if (piobFormField.value == 0) 
  	  return "Vul een waarde in. ";
  else
  	  return ""; 
}

//----------------------------------------------------------------------------------
// Check gevuld
//----------------------------------------------------------------------------------
function fuIsNietLeeg(piobFormField) {
  if(piobFormField.value.length > 0) 
  	return "";
  else
  	return "Verplicht veld";
}

//----------------------------------------------------------------------------------
// Check ongevuld
//----------------------------------------------------------------------------------
function fuIsLeeg(piobFormField) {
  if(piobFormField.value.length == 0)
  	return "";
  else
  	return "Er is een waarde ingevuld. ";
}

//----------------------------------------------------------------------------------
// Is Alfanumeriek
//----------------------------------------------------------------------------------
function fuIsAlfa(piobFormField) {
  chVeldWaarde = piobFormField.value;
  for(var i=0;i<chVeldWaarde.length;i++) {
    if (chLettersAllen.indexOf(chVeldWaarde.charAt(i)) == -1) {
      return "Hier alleen letters invullen";
    }
    else {
      return "";
    }
  }
}

//----------------------------------------------------------------------------------
// Is Alfanumeriek kleine letter
//----------------------------------------------------------------------------------
function fuIsAlfaLettersKlein(piobFormField) {
  chVeldWaarde = piobFormField.value;
  for(var i=0;i<chVeldWaarde.length;i++) {
    if (chLettersKlein.indexOf(chVeldWaarde.charAt(i)) == -1) {
      return "Hier alleen kleine letters invullen";
    }
    else {
      return "";
    }
  }
}

//----------------------------------------------------------------------------------
// Is Alfanumeriek hoofdletter
//----------------------------------------------------------------------------------
function fuIsAlfaLettersGroot(piobFormField) {
  chVeldWaarde = piobFormField.value;
  for(var i=0;i<chVeldWaarde.length;i++) {
    if (chLettersGroot.indexOf(chVeldWaarde.charAt(i)) == -1) {
      return "Hier alleen hoofdletters invullen";
    }
    else {
      return "";
    }
  }
}

//----------------------------------------------------------------------------------
// Is Telefoonnummer
//   in deze controle :
//     - is het veld NIET verplicht
//     - worden streepjes en spaties vooraf automatisch verwijderd 
//		 - moet de waarde met een nul beginnen
//     - moet de waarde tien cijfers bevatten
//     - moet de waarde numeriek zijn
//----------------------------------------------------------------------------------
function fuIsTelefoonnummer(piobFormField) {

		var chVeldWaarde = "";

		// doe alleen een controle als er een waarde is ingevoerd, veld is niet verplicht
		if(piobFormField.value != "") {
			// replace van streepjes en spaties
			chVeldWaarde = piobFormField.value;
			chVeldWaarde = chVeldWaarde.replace(/ /g, "");
			chVeldWaarde = chVeldWaarde.replace(/-/g, "");
					
			// vervang waarde in veld na replace acties.
			piobFormField.value = chVeldWaarde;
			
			// moeten tien cijfers zijn
			if(piobFormField.value.length != 10 ||
			   piobFormField.value.substring(0,1) != '0') {
        return  "Dit is geen geldig telefoonnummer. Een telefoonnummer moet uit tien cijfers bestaan en beginnen met een 0."; 				
			}
			else {
				// controle op numeriekheid          
				var chLokaalVarFormaatNumeriek = /^[0-9]+$/

				if (chLokaalVarFormaatNumeriek.test(piobFormField.value) == false) 
					  return "Dit is geen geldig telefoonnummer. Een telefoonnummer moet uit tien cijfers bestaan, en beginnen met een 0.";
			}				
		}	
}
