/*
  Deze include bevat generieke validatiefuncties.
  Alle functies geven als returnwaarde: TRUE of FALSE.

  De functies beginnend met 'IsVeld' kunnen gebruikt worden om invoer van
  een FORM te valideren. Als parameter wordt het betreffende veldobject doorgegeven.
  Indien onjuist, verschijnt een foutmelding en wordt de focus gezet op het betreffende veld.

  - IsGevuld(string): er staat iets van tekst in?
  - IsVeldGevuld(object): staat er iets in het invoerveld?
  - IsAlfanumeriek(string): alleen letters, cijfers en underscore? (m.n. voor wachtwoorden)
  - IsVeldAlfanumeriek(object): vuld gevuld met alleen letters en cijfers?
  - IsLengteCorrect(string, numeriek): invoer overschrijdt niet een max. lengte?
  - IsEmailCorrect(string): adres ziet uit als een emailadres?
  - IsVeldEmailCorrect(object): invoer lijkt op een emailadres?

*/

// Controle op gevulde strings.
// Alleen maar een CR, LF en/of TAB wordt beschouwd als leeg.
// Parameter: string
// Returns TRUE indien er iets (interessants) in staat
function IsGevuld(cTekst)
{
 if ((typeof(cTekst) == "undefined") || (cTekst == ""))
    {return false}

 // Per karakter nagaan of deze blanko is.
 // Dus spatie, TAB, LF of CR.
 // Blijf zolang controleren totdat we een 'echte' letter tegenkomen
 var cBlanko = new String(" \t\n\r");
 cTekst = new String(cTekst);

 for (var i = 0; i < cTekst.length; i++)
    {
     // Controle van de betreffende letter
     var cLetter = cTekst.charAt(i);

     if (cBlanko.indexOf(cLetter) == -1) return true;
    }

    // Alle letters waren blanko
    return false;
}

// Controle voor verplichte velden
// Alleen maar een CR, LF en/of TAB wordt beschouwd als leeg.
// Parameters: objectreference naar het veld
// Returns TRUE indien er iets (interessants) in staat
// Returns FALSe indien leeg en zet tevens de focus en select
function IsVeldGevuld(oVeld)
{
 if (!IsGevuld(oVeld.value))
    {
     alert('Invoerveld "' + oVeld.name + '" is verplicht.');
     oVeld.focus();
     oVeld.select();
     return false;
    }


 return true;
}

// Controle van woord op alfanumeriek zijn.
// Parameter: string
// Returns TRUE indien alles correct is
function IsAlfanumeriek(cWoord)
{
 // Alleen de tekens: a-z A-Z 0-9 en _
 var regWoord = new RegExp("^\\w+$");
 return (regWoord.test(cWoord));
}

// Controle voor alfanumerieke velden zoals een wachtwoord
// Parameters: objectreference naar het veld
// Returns TRUE indien alfanumeriek
// Returns FALSe afwijkende tekens en zet tevens de focus en select
function IsVeldAlfanumeriek(oVeld)
{
 if (!IsAlfanumeriek(oVeld.value))
    {
     alert('Invoerveld "' + oVeld.name + '": alleen letters, cijfers en underscore zijn toegestaan.');
     oVeld.focus();
     oVeld.select();
     return false;
    }

 return true;
}

// Controle van tekst op maximaal toegestane lengte.
// Parameters: string
//             maximum lengte
// Returns TRUE indien alles correct is
function IsLengteCorrect(cTekst, nMaxLengte)
{
 cString = new String(cTekst);
 return (cString.length <= nMaxLengte);
}

// Controle op correctheid emailadres.
// Parameter: string
// Returns TRUE indien alles correct is
function IsEmailCorrect(cEmailAdres)
{
 //var regEmail = new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[a-zA-Z]$");
 regEmail = /^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/;
 return (regEmail.test(cEmailAdres));
}

// Controle voor invoer van emailadres
// Parameters: objectreference naar het veld
// Returns TRUE indien adres correct
// Returns FALSE bij een onjuist adres en zet tevens de focus en select
function IsVeldEmailCorrect(oVeld)
{
 if (!IsEmailCorrect(oVeld.value))
    {
     alert('De invoer "' + oVeld.value + '" is geen correct emailadres.');
     oVeld.focus();
     oVeld.select();
     return false;
    }
 return true;
}
