﻿var formtesttype = "normal";
var foutmeldingen = null;
function addEvent(obj, type, fn) {
  if(obj.attachEvent) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn](window.event);
  }
  obj.attachEvent('on'+type, obj[type+fn]);
  } else {
    obj.addEventListener(type, fn, false);
  }
}

function removeEvent(obj, type, fn) {
  if(obj.detachEvent) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else {
   obj.removeEventListener(type, fn, false);
  }
}

function incorrect(control) {
  if(formtesttype == "div") {
    var tmp = document.getElementById(control+"div")
    tmp.style.backgroundColor = "#ffffff";
    tmp.style.className = "checkfout";
  } else {
    var tmp = document.getElementById(control).parentNode
    var tmpclass = tmp.className
    tmpclass = tmpclass.replace(new RegExp(" ingevuld\\b"), "");
    tmpclass = tmpclass.replace(new RegExp(" fingevuld\\b"), "");
    tmp.className = tmpclass + " fingevuld";
  }
}

function correct(control) {
  if(formtesttype == "div") {
    var tmp = document.getElementById(control + "div")
    tmp.style.backgroundColor = '#ffffff';
    tmp.className = "check";
  } else {
    var tmp = document.getElementById(control).parentNode
    var tmpclass = tmp.className
    tmpclass = tmpclass.replace(new RegExp(" ingevuld\\b"), "");
    tmpclass = tmpclass.replace(new RegExp(" fingevuld\\b"), "");
    tmp.className = tmpclass + " ingevuld";
  }
}

function checkMail()
{
  var blnError = false;
  if (document.getElementById("afronding_0").checked)
  {
    if (document.getElementById("email").value.length > 0)
    {
      blnError = false;
    }else
    {
      blnError = true;
    }
  }
  
  if (blnError)
  {
    if (!(foutmeldingen.innerHTML.indexOf("<li>Als u bevestiging per e-mail wilt, moet u uw email adres invullen. 2 Stappen terug om uw e-mail adres alsnog in te vullen.</li>") > -1))
    {
      // Alleen foutmelding tonen als de lengte groter is dan nul, verplichting wordt afgehandeld door formulier.
      foutmeldingen.innerHTML += "<li>Als u bevestiging per e-mail wilt, moet u uw email adres invullen. 2 Stappen terug om uw e-mail adres alsnog in te vullen.</li>";
    }
    // Inline omdat het een float element is, ie6 fix.
    foutmeldingen.style.display = 'inline';
  }
  else
  {
    if (foutmeldingen.innerHTML.indexOf("<li>Als u bevestiging per e-mail wilt, moet u uw email adres invullen. 2 Stappen terug om uw e-mail adres alsnog in te vullen.</li>") > - 1)
    {
      foutmeldingen.innerHTML.replace("<li>Als u bevestiging per e-mail wilt, moet u uw email adres invullen. 2 Stappen terug om uw e-mail adres alsnog in te vullen.</li>","")
    }
  }
  return !blnError;
}

function checkBank(txtBank)
{
  var blnError = false;
  foutmeldingen = document.getElementById("foutmeldingen");
  
  var bank = document.getElementById(txtBank).value;
  if (bank.length == 9)
  {
    // Normaal rekeningnummer, controleren met de 'elf' proef.
    var intCount = 0;
    for (var i = 1; i <= 9; i++)
    {
      intCount += bank.charAt(9-i) * i;
    }
    
    var intResult = intCount % 11;
    if (!(intResult == 0))
    {
      blnError = true
    }
  }else 
  {
    // Postbank rekeningnummer, alleen getallen van lenten 3 tot 7 toestaan.
    blnError = (bank.length < 3 || bank.length > 7);
  }
  
  if (!blnError)
  {
    blnError = isNaN(bank);
  }
  
  if (blnError) 
  {
    if (!(foutmeldingen.innerHTML.indexOf("<li>Het opgegeven bankrekeningnummer is niet geldig.</li>") > -1))
    {
      if (bank.length > 0 )
      {
        // Alleen foutmelding tonen als de lengte groter is dan nul, verplichting wordt afgehandeld door formulier.
        foutmeldingen.innerHTML += "<li>Het opgegeven bankrekeningnummer is niet geldig.</li>";
      }
    }
    // Inline omdat het een float element is, ie6 fix.
    foutmeldingen.style.display = 'inline';
  }
  else
  {
    if (foutmeldingen.innerHTML.indexOf("<li>Het opgegeven bankrekeningnummer is niet geldig.</li>") > - 1)
    {
      foutmeldingen.innerHTML.replace("<li>Het opgegeven bankrekeningnummer is niet geldig.</li>","")
    }
  }
  return !blnError;
}

function checkAanwezig()
{
  var blnError = false;
  foutmeldingen = document.getElementById("foutmeldingen");
  
  //alle checkboxen controleren.
  blnError = (!(document.getElementById("reeds_aanwezig_0").checked || document.getElementById("reeds_aanwezig_1").checked || document.getElementById("reeds_aanwezig_2").checked || document.getElementById("reeds_aanwezig_3").checked || document.getElementById("reeds_aanwezig_4").checked || document.getElementById("reeds_aanwezig_5").checked));
  
  if (blnError) 
  {
    if (!(foutmeldingen.innerHTML.indexOf("<li>U moet minimaal één van de opties aangeven.</li>") > -1))
    {
      // Alleen foutmelding tonen als de lengte groter is dan nul, verplichting wordt afgehandeld door formulier.
      foutmeldingen.innerHTML += "<li>U moet minimaal één van de opties aangeven.</li>";
    }
    // Inline omdat het een float element is, ie6 fix.
    foutmeldingen.style.display = 'inline';
  }
  else
  {
    if (foutmeldingen.innerHTML.indexOf("<li>U moet minimaal één van de opties aangeven.</li>") > - 1)
    {
      foutmeldingen.innerHTML.replace("<li>U moet minimaal één van de opties aangeven.</li>","")
    }
  }
  return !blnError;
}

function toggleGeboorteDatum()
{
  var geb = document.getElementById("divGeboortedatum")
  if (document.getElementById("plus_0").checked)
  {
    geb.style.display = "block";
  }else
  {
    geb.style.display = "none";
  }
}

function toggleTelefoonaanbieder()
{
  var geb = document.getElementById("divTelefoonaanbieder")
  if (document.getElementById("nr_meenemen_0").checked)
  {
    geb.style.display = "block";
  }else
  {
    geb.style.display = "none";
  }
}

function checkGeboorteDatum(dag, maand, jaar)
{
  var blnError = false;
  if (document.getElementById("plus_0").checked)
  {
    blnError = true;
    var datum = document.getElementById("geboortedatum").value
    var ingevuldeDag = datum.split("-")[0];
    var ingevuldeMaand = datum.split("-")[1];
    var ingevuldJaar = datum.split("-")[2];
    if (ingevuldJaar < jaar)
    {
      blnError = false;
    }
    if (ingevuldJaar == jaar)
    {
      if (ingevuldeMaand < maand)
      {
        blnError = false;
      }
      if (ingevuldeMaand == maand)
      {
        if (ingevuldeDag <= dag)
        {
          blnError = false;
        }
      }
    }
  }
  
  if (blnError) 
  {
    if (!(foutmeldingen.innerHTML.indexOf("<li>De opgegeven geboortedatum geeft aan dat u jonger dan 65 jaar bent.</li>") > -1))
    {
      // Alleen foutmelding tonen als de lengte groter is dan nul, verplichting wordt afgehandeld door formulier.
      foutmeldingen.innerHTML += "<li>De opgegeven geboortedatum geeft aan dat u jonger dan 65 jaar bent.</li>";
    }
    // Inline omdat het een float element is, ie6 fix.
    foutmeldingen.style.display = 'inline';
  }
  else
  {
    if (foutmeldingen.innerHTML.indexOf("<li>De opgegeven geboortedatum geeft aan dat u jonger dan 65 jaar bent.</li>") > - 1)
    {
      foutmeldingen.innerHTML.replace("<li>De opgegeven geboortedatum geeft aan dat u jonger dan 65 jaar bent.</li>","")
    }
  }  
  return !blnError;
}

function formtest(validationGroup, stapId) {
  if (typeof(Page_Validators) == "undefined") {
    return true;
  }
  if(validationGroup == "") {
    validationGroup = "formulier";
  }
  var i;
  var prevField = "";
  var prevValid = true;

  foutmeldingen = document.getElementById("foutmeldingen");
  foutmeldingen.innerHTML = "";
  
  // Alle controls ophalen in deze stap.
  var stapDiv = document.getElementById(stapId);
  var rightControls = stapDiv.getElementsByTagName("span")
  var blnCheckControl = false;
  // Zelf boolean bijhouden voor geldige pagina.
  var blnPageIsValid = true;
  
  for (i = 0; i < Page_Validators.length; i++) {
    ValidatorValidate(Page_Validators[i], validationGroup, null);

    // Controleren of een element wel in de div zit waarvan de id is meegegeven (stapId)
    blnCheckControl = false;
    for (var j = 0; j < rightControls.length; j++){
      if (Page_Validators[i].id == rightControls[j].id){
        blnCheckControl = true;
        
        // Speciefieke uitzondering voor geboortedatum bij lauwerspas
        if (Page_Validators[i].controltovalidate.toString() == "geboortedatum")
        {
          blnCheckControl = false;
          if (document.getElementById("plus_0"))
          {
            if (document.getElementById("plus_0").checked)
            {
              blnCheckControl = true;
            }
          }else
          {
            blnCheckControl = true;
          }          
        }
        
        // Speciefieke uitzondering voor telefoonaanbieder, controleren op de 7 velden die dan verplicht zijn.
        if ((Page_Validators[i].controltovalidate.toString() == "tel_1_woonplaats") || (Page_Validators[i].controltovalidate.toString() == "tel_1_postcode") || (Page_Validators[i].controltovalidate.toString() == "tel_1_huisnummer") || (Page_Validators[i].controltovalidate.toString() == "tel_1_straat") ||(Page_Validators[i].controltovalidate.toString() == "tel_1_voorletter") ||(Page_Validators[i].controltovalidate.toString() == "tel_1_aanbieder") || (Page_Validators[i].controltovalidate.toString() == "tel_1_naam") || (Page_Validators[i].controltovalidate.toString() == "tel_1_telefoon"))
        {
          blnCheckControl = false;
          if (document.getElementById("nr_meenemen_0").checked)
          {
            blnCheckControl = true;
          }
        }
      }
    }
    
    if (blnCheckControl){
      // Alleen een veld controleren als het in de huidige stap zit.
      if(!eval(Page_Validators[i].id).isvalid) {
        blnPageIsValid = false;
        incorrect(eval(Page_Validators[i].id).controltovalidate.toString());
        if (prevField != eval(Page_Validators[i].id).controltovalidate.toString() || prevValid){
          foutmeldingen.innerHTML += "<li>" + eval(Page_Validators[i].id).errormessage.toString() + "</li>";
        }
        
      }else if (eval(Page_Validators[i].id).controltovalidate.toString() != prevField){
        correct(eval(Page_Validators[i].id).controltovalidate.toString());
      }
    } 
    
    prevField = eval(Page_Validators[i].id).controltovalidate.toString();
    prevValid = eval(Page_Validators[i].id).isvalid;
  }
  
  ValidatorUpdateIsValid();
  ValidationSummaryOnSubmit(validationGroup);
  Page_BlockSubmit = !Page_IsValid;

  if (!Page_IsValid) {
    // Inline omdat het een float element is, ie6 fix.
    foutmeldingen.style.display = 'inline';
  } else {
    foutmeldingen.style.display = 'none';
  }
  
  //return Page_IsValid;
  return blnPageIsValid;
}

function checkCursusCheckboxes(sender){
  var pn = sender.parentNode;
  while (pn && pn.className != 'regel') {
    pn = pn.parentNode;
  }
  var strId = pn.id;
  var els = sender.getElementsByTagName('input');
  for(var i=0; i < els.length; i++) {
    if(els[i].type=='checkbox') {
      var span = els[i].parentNode;
      var dataid = span.getAttribute('db_id');
      var cursusdata = document.getElementById('f' + dataid);
      if(cursusdata) {
        cursusdata.style.display = (els[i].checked) ? 'block' : 'none';
        var cbxs = cursusdata.getElementsByTagName('input');
        if(!els[i].checked) {
          for(var j=0; j < cbxs.length; j++) {
            cbxs[j].checked = false;
          }
        } else {
          if(cbxs.length==1)cbxs[0].checked = true;
        }
      }
    }
  }
}