//Javascript: Electronische vragenlijst op internet
//Copyright 2007, SKB Vragenlijst Services
//Programmer: TK
//Version: 1.0
//Last updated: 06-02-2007

function GoNextPage(pagid) {
//Validate answers, go to next Page

  if(!ValidateAnswers(pagid)){
    alert('Nog niet alle vragen zijn beantwoord.');
    return;
  }

  HideElement('pag_' + pagid);
  ShowElement('pag_' + (pagid+1));
}

function GoPreviousPage(pagid) {
//Go to previous Page (do not validate answers)

  HideElement('pag_' + pagid);
  ShowElement('pag_' + (pagid-1));
}

function SubmitAnswers(pagid) {
//Validate answers, calculate scores and show results

  if(!ValidateAnswers(pagid)){
    alert('Nog niet alle vragen zijn beantwoord.');
    return;
  }

  if (!CalculateScores()) {
    alert('Scores kunnen niet worden berekend.');
    return;
  }

  //Open result-page
  parent.ContentsFrame.location.href = 'results.htm?' + GetScoreString();
}

function ValidateAnswers(pagid) {
//Validate all questions on the page are answered

  var vraagF = document.vraagForm;

  if(pagid == 1) {
    if (!vraagF) {
      alert('Constructiefout: Formulier vraagForm niet gevonden.');
      return false;
    }

    //Controleer of vraag he101 een antwoord heeft
    if (!vraagF.he101_1.checked && !vraagF.he101_2.checked)
    {
      //alert('U hebt vraag he101 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he102 een antwoord heeft
    if (!vraagF.he102_1.checked && !vraagF.he102_2.checked)
    {
      //alert('U hebt vraag he102 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he103 een antwoord heeft
    if (!vraagF.he103_1.checked && !vraagF.he103_2.checked)
    {
      //alert('U hebt vraag he103 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he104 een antwoord heeft
    if (!vraagF.he104_1.checked && !vraagF.he104_2.checked)
    {
      //alert('U hebt vraag he104 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he105 een antwoord heeft
    if (!vraagF.he105_1.checked && !vraagF.he105_2.checked)
    {
      //alert('U hebt vraag he105 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he106 een antwoord heeft
    if (!vraagF.he106_1.checked && !vraagF.he106_2.checked)
    {
      //alert('U hebt vraag he106 nog niet beantwoord.');
      return false;
    }

    return true;
  }

  if(pagid == 2) {
    //Controleer of vraag he111 een antwoord heeft
    if (!vraagF.he111_1.checked && !vraagF.he111_2.checked)
    {
      //alert('U hebt vraag he111 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he121 een antwoord heeft
    if (vraagF.he111_2.checked && !vraagF.he121_1.checked && !vraagF.he121_2.checked)
    {
      //alert('U hebt vervolgvraag he121 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he112 een antwoord heeft
    if (!vraagF.he112_1.checked && !vraagF.he112_2.checked)
    {
      //alert('U hebt vraag he112 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he122 een antwoord heeft
    if (vraagF.he112_2.checked && !vraagF.he122_1.checked && !vraagF.he122_2.checked)
    {
      //alert('U hebt vervolgvraag he122 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he113 een antwoord heeft
    if (!vraagF.he113_1.checked && !vraagF.he113_2.checked)
    {
      //alert('U hebt vraag he113 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he123 een antwoord heeft
    if (vraagF.he113_2.checked && !vraagF.he123_1.checked && !vraagF.he123_2.checked)
    {
      //alert('U hebt vervolgvraag he123 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he114 een antwoord heeft
    if (!vraagF.he114_1.checked && !vraagF.he114_2.checked)
    {
      //alert('U hebt vraag he114 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he123 een antwoord heeft
    if (vraagF.he114_2.checked && !vraagF.he124_1.checked && !vraagF.he124_2.checked)
    {
      //alert('U hebt vervolgvraag he124 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he115 een antwoord heeft
    if (!vraagF.he115_1.checked && !vraagF.he115_2.checked)
    {
      //alert('U hebt vraag he115 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he125 een antwoord heeft
    if (vraagF.he115_2.checked && !vraagF.he125_1.checked && !vraagF.he125_2.checked)
    {
      //alert('U hebt vervolgvraag he125 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he116 een antwoord heeft
    if (!vraagF.he116_1.checked && !vraagF.he116_2.checked)
    {
      //alert('U hebt vraag he116 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he126 een antwoord heeft
    if (vraagF.he116_2.checked && !vraagF.he126_1.checked && !vraagF.he126_2.checked)
    {
      //alert('U hebt vervolgvraag he126 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he117 een antwoord heeft
    if (!vraagF.he117_1.checked && !vraagF.he117_2.checked)
    {
      //alert('U hebt vraag he117 nog niet beantwoord.');
      return false;
    }

    //Controleer of vervolgvraag he127 een antwoord heeft
    if (vraagF.he117_2.checked && !vraagF.he127_1.checked && !vraagF.he127_2.checked)
    {
      //alert('U hebt vervolgvraag he127 nog niet beantwoord.');
      return false;
    }

    //Controleer of vraag he118 een antwoord heeft
    if (!vraagF.he118_1.checked && !vraagF.he118_2.checked)
    {
      //alert('U hebt vraag he118 nog niet beantwoord.');
      return false;
    }
  }

  return true;
}

function CalculateScores() {
//Calculate scores

  var vraagF = document.vraagForm;
  var scoreF = parent.ScoresFrame.document.scoreForm;

  var som_atop = 0;
  var som_ecz1 = 0;
  var som_ecz2 = 0;
  var som_ecz3 = 0;

  if (!vraagF) {
    alert('Constructiefout: Formulier vraagForm niet gevonden.');
    return false;
  }

  if (!scoreF) {
    alert('Constructiefout: Formulier scoreForm niet gevonden.');
    return false;
  }

  //Bepaal score som_atop
  som_atop += GetScore('he101');
  som_atop += GetScore('he102');
  som_atop += GetScore('he103');
  som_atop += GetScore('he104');
  som_atop += GetScore('he105');
  som_atop += GetScore('he106');

  //Bepaal score som_ecz1
  som_ecz1 += GetScore('he111');
  som_ecz1 += GetScore('he112');
  som_ecz1 += GetScore('he113');
  som_ecz1 += GetScore('he114');
  som_ecz1 += GetScore('he115');
  som_ecz1 += GetScore('he116');
  som_ecz1 += GetScore('he117');
  som_ecz1 += GetScore('he118');

  //Bepaal score som_ecz2
  som_ecz2 += GetScore('he121');
  som_ecz2 += GetScore('he122');
  som_ecz2 += GetScore('he123');
  som_ecz2 += GetScore('he124');
  som_ecz2 += GetScore('he125');
  som_ecz2 += GetScore('he126');
  som_ecz2 += GetScore('he127');

  //Bepaal score som_ecz3
  if(GetScore('he111') == 1 || GetScore('he121') == 1) {som_ecz3 += 1};
  if(GetScore('he112') == 1 || GetScore('he122') == 1) {som_ecz3 += 1};
  if(GetScore('he113') == 1 || GetScore('he123') == 1) {som_ecz3 += 1};
  if(GetScore('he114') == 2 || GetScore('he124') == 2) {som_ecz3 += 2};
  if(GetScore('he115') == 2 || GetScore('he125') == 2) {som_ecz3 += 2};
  if(GetScore('he116') == 2 || GetScore('he126') == 2) {som_ecz3 += 2};
  if(GetScore('he117') == 1 || GetScore('he127') == 1) {som_ecz3 += 1};
  if(GetScore('he118') == 1) {som_ecz3 += 1};

  // Sla de berekende scores op de in datacontainers
  scoreF.som_atop.value = som_atop;
  scoreF.som_ecz1.value = som_ecz1;
  scoreF.som_ecz2.value = som_ecz2;
  scoreF.som_ecz3.value = som_ecz3;

  return true;
}

function GetScoreString() {
//Return scores as a parameter-string

  var strScores = "";
  var scoreF = parent.ScoresFrame.document.scoreForm;

  if (!scoreF) {
    alert('Constructiefout: Formulier scoreForm niet gevonden.');
    return false;
  }

  strScores = strScores + 'som_atop=' + scoreF.som_atop.value;
  strScores = strScores + '&som_ecz1=' + scoreF.som_ecz1.value;
  strScores = strScores + '&som_ecz2=' + scoreF.som_ecz2.value;
  strScores = strScores + '&som_ecz3=' + scoreF.som_ecz3.value;

  return strScores;
}

function ShowResults() {
//Show results of each item, based on calculated score

  var scoreF = parent.ScoresFrame.document.scoreForm;

  if (!scoreF) {
    alert('Constructiefout: Formulier scoreForm niet gevonden.');
    return false;
  }

  var som_atop = 1*scoreF.som_atop.value;
  var som_ecz1 = 1*scoreF.som_ecz1.value;
  var som_ecz2 = 1*scoreF.som_ecz2.value;
  var som_ecz3 = 1*scoreF.som_ecz3.value;

  //Toon over-all result
  if (som_atop <=1 ) {
    if (som_ecz3 <= 2) {ShowOverallResult('groen');}
    if (som_ecz3 >= 3 && som_ecz3 <= 4) {ShowOverallResult('oranje');}
    if (som_ecz3 >= 5) {ShowOverallResult('rood');}
  }

  if (som_atop == 2) {
    if (som_ecz3 <= 4) {ShowOverallResult('oranje');}
    if (som_ecz3 >= 5) {ShowOverallResult('rood');}
  }

  if (som_atop >= 3) {
    ShowOverallResult('rood');
  }

  // At last... don't forget to show the results
  HideElement('bussy');
  ShowElement('results');
}

function ShowOverallResult(tag) {
//Show over-all result

  HideElement('overall_rood');
  HideElement('overall_oranje');
  HideElement('overall_groen');

  ShowElement('overall_' + tag);
  SetInlineFrameResult(tag);
}

function HideElement(elem) {
//Hide element
  document.getElementById(elem).style.display='none';
}

function ShowElement(elem) {
//Show element
  document.getElementById(elem).style.display='block';
}

function SetInlineFrameResult(tag) {
//Set source of inline frame
//Doel: op deze manier wordt in de web-logfile de onderverdeling naar resultaat groen/oranje/rood geregistreerd
//doordat resp. de pagina groen.htm, oranje.htm, of rood.htm wordt opgevraagd.

  var ifra;
  
  iFra = document.getElementById('iframe_result');
  if(iFra) {
    iFra.src=tag + '.htm';
  }
}

function DoItAgain() {
//Do the test again
  parent.ContentsFrame.location.href = 'toets.htm';
}

function GetScore(vraagid) {

  var vraag;
  var i;
  var score = 0;

  for(i=1; i<=10; i++) {
    vraag = document.getElementById(vraagid + "_" + i);
    if(vraag) {
      if(vraag.checked) {score = 1*vraag.value;}
    }
  }

  return score;
}


