/* Module wbkFrm.js - JavaScript 1.5

Waterbok Reservation form functions

©2007- InnoTech Dynamics® Web Design
  http://idwd.vantonder.net
  E-mail: itdwd at vantonder dot net

  2007-05-26
Updates:
  2008-05-10    // JSLint
  2008-09-28
  2009-06-21
*/


function test(aForm, id)
{
  var tst = id;
  for (var i = 0; i < crForm.Van_gas.length; i++) {
    tst += "\n"+" "+i+" `"+crForm.Van_gas[i].value+"` "+crForm.Van_gas[i].optional+" `"+crForm.Naam_gas[i].value+"` "+crForm.Naam_gas[i].optional+
      " `"+crForm.Voorletters_gas[i].value+"` "+crForm.Voorletters_gas[i].optional;
  }
  alert(tst);
}


function frmOnld(aForm)
{ /*  Form "onLoad"
  2007-05-26
 Updates:
  2008-04-09
*/

  crForm = aForm;     // set global current form
  //lstElm();
  fnElmDscr();
  elmUpd();
  vrfcPrp();
  evntHnd();
  formCalc();
}


function wrtFrmSmry(frm, lang)
{ /* Display form summary
  2009-06-19
 Updates:
  2009-06-20
*/
  var htTblFrm = '';
  if (lang == "af") {
    htTblFrm += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">\n';
    htTblFrm += '<html>\n';
    htTblFrm += '<head>\n';
    htTblFrm += '<title>Waterbok - Verblyf-aansoek Data</title>\n';
    htTblFrm += '</head>\n';
    htTblFrm += '<body style="width:52em;' + ffSs + '">\n';
    htTblFrm += '<p style="margin:0;">&nbsp;</p>\n';
    htTblFrm += '<div style="' + ffSs + ' width:50em; border:1px solid; padding: 0.5em;">\n';
    htTblFrm += '<p style="margin-bottom:0.25em; text-align:center; font-size:145%; color:#0000e0">Waterbok Wildpark GasteTuiste</p>\n';
    htTblFrm += '<p style="margin:0; text-align:center; font-size:121%">Aansoek om Verblyf</p>\n';
    htTblFrm += '<p style="margin:0.25em 0 0.5em; text-align:center; font-size:110%">&rsquo;n Opsomming van die inligting op die aansoekvorm volg:</p>\n';

    htTblFrm += formValues(frm);

    htTblFrm += '<p style="margin:0; text-align:right; font-size:80%; color:#808080">' + TimeISO(now) + '<\/p>\n';
    htTblFrm += '</div>\n';
    htTblFrm += '<p style="margin:0;">&nbsp;</p>\n';
    htTblFrm += '<div style="width:50em;">\n';
    htTblFrm += '<p style="text-align:center; page-break-before:always">Gaan asseblief terug na die vorige bladsy as u van die inligting wil verander.<br>\n';
    htTblFrm += 'Verander die inligting op die vorm dienooreenkomstig en dien weer in.</p>\n';
    htTblFrm += '<p style="margin:0.4em 1em;">As u tevrede is met die inligting soos ingedien, moet u asseblief die opsomming per e-pos aan ons stuur.</p>\n';
    htTblFrm += '<p style="margin:0.4em 2em;">&bull; Selekteer die raam hierbo en die inligting daarbinne met behulp van die rekenaar-muis. Om die proses te vergemaklik is daar <i>onsigbare&nbsp;</i> merkers aan die linkerkant direk bo en onder die raam aangebring.<br>\n';
    htTblFrm += 'Kopieer die seleksie (Ctrl+C) en plaas dit in &rsquo;n e-pos venster (Ctrl+V).</p>\n';
    htTblFrm += '<p style="margin:0.4em 2em;">&bull; U kan ook die dokument "druk" met behulp van &rsquo;n PDF-skrywer soos <i>PrimoPdf&nbsp;</i> en die resulterende PDF-dokument instuur as &rsquo;n aanhangsel tot &rsquo;n e-pos boodskap. (Dit behoort nie nodig te wees om die laaste bladsy te druk nie.)<br>Verseker asseblief dat die pdf-dokument in sodanige formaat geskryf word dat die teks daaruit gekopieer kan word.</p>\n';
    htTblFrm += '<p style="margin:0.4em 2em;">&bull; Sien asseblief <a href="Kontak.htm">Kontak-inligting</a> vir die e-pos adres wat gebruik moet word.</p>\n';
    htTblFrm += '<p style="text-align:center; font-size:121%">Baie dankie nogmaals vir u moeite om die aansoekvorm te voltooi en in te dien.</p>\n';
    htTblFrm += '</div>\n';
    htTblFrm += '</body>\n';
    htTblFrm += '</html>\n';
  } else {
    htTblFrm += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">\n';
    htTblFrm += '<html>\n';
    htTblFrm += '<head>\n';
    htTblFrm += '<title>Waterbok - Application Form Data</title>\n';
    htTblFrm += '</head>\n';
    htTblFrm += '<body style="width:52em;' + ffSs + '">\n';
    htTblFrm += '<p style="margin:0;">&nbsp;</p>\n';
    htTblFrm += '<div style="' + ffSs + ' width:50em; border:1px solid; padding: 0.5em;">\n';
    htTblFrm += '<p style="margin-bottom:0.25em; text-align:center; font-size:145%; color:#0000e0">Waterbok Game Park Guest Homes</p>\n';
    htTblFrm += '<p style="margin:0; text-align:center; font-size:121%">Application for Accomodation</p>\n';
    htTblFrm += '<p style="margin:0.25em 0 0.5em; text-align:center; font-size:110%">A summary of the information entered into the Application Form follows</p>\n';

    htTblFrm += formValues(frm);

    htTblFrm += '<p style="margin:0; text-align:right; font-size:80%; color:#808080">' + TimeISO(now) + '<\/p>\n';
    htTblFrm += '</div>\n';
    htTblFrm += '<p style="margin:0;">&nbsp;</p>\n';
    htTblFrm += '<div style="width:50em;">\n';
    htTblFrm += '<p style="text-align:center; page-break-before:always">If you would like to change some of the information, please go back to the previous page.<br>\n';
    htTblFrm += 'Change the form accordingly and resubmit it.</p>\n';
    htTblFrm += '<p style="margin:0.4em 1em;">If you are satisfied with the information as submitted, please copy the contents of the summary table to the body of an e-mail message and send it in.</p>\n';
    htTblFrm += '<p style="margin:0.4em 2em;">&bull; Using the computer mouse, select the border line above and the information inside. <i>Invisible&nbsp;</i> markers on the left side directly above and below the border line help to facilitate the selection process.<br>\n';
    htTblFrm += 'Copy the selection (Ctrl+C) and paste it into the body of an e-mail (Ctrl+V).</p>\n';
    htTblFrm += '<p style="margin:0.4em 2em;">&bull; You may also "print" the document in PDF format using a PDF writer such as <i>PrimoPdf&nbsp;</i> and send in the resulting document as an attachment to an e-mail. (It should not be necessary to print the last page.)<br>Please ensure that the pdf is written in such a format that the text can be copied from it.</p>\n';
    htTblFrm += '<p style="margin:0.4em 2em;">&bull; See <a href="Contact.htm">Contact information</a> for our e-mail address.</p>\n';
    htTblFrm += '<p style="text-align:center; font-size:121%">Thank you for taking the trouble to complete and submit the application.</p>\n';
    htTblFrm += '</div>\n';
    htTblFrm += '</body>\n';
    htTblFrm += '</html>\n';
  }

  var elmTxt = frm.elmtxtarea;
  elmTxt.value = htTblFrm;

  var w = window.open(null, "frmSmry");
  var d = w.document;
  d.write(htTblFrm);
  d.close();
  // Return true from this error handler, so that JavaScript does not
  // display its own error dialog.
  return true;
}


function fnElmDscr()
{ /*  Form element desriptions
  2007-06-02
 Updates:
  2008-09-25
*/
  if (document.body.lang == "af") {
    crForm.Van_verantwoordelik.text = "Van";
    crForm.Naam_verantwoordelik.text = "Naam";
    crForm.Voorletters_verantwoordelik.text = "Voorletters";
    crForm.Epos_adres.text = "E-pos adres";
    crForm.ID_nr.text = "ID nr.";
    crForm.Paspoort_nr.text = "Paspoort nr.";
    crForm.Fisiese_Adres.text = "Woonadres";
    crForm.Pos_adres.text = "Posadres";
    crForm.Huis_foon.text = "Telefoon (huis)";
    crForm.Werk_foon.text = "Telefoon (werk)";
    crForm.Mobiele_foon.text = "Mobiele foon";
    crForm.Faks_nr.text = "Faks nr.";
    for (var i = 0; i < crForm.Van_gas.length; i++) {
      crForm.Van_gas[i].text = "Van (gas)";
      crForm.Naam_gas[i].text = "Naam (gas)";
      crForm.Voorletters_gas[i].text = "Voorletters (gas)";
      crForm.ID_paspoortnr_gas[i].text = "ID / Paspoortnr (gas)";
    }
    crForm.vgaste.text = "Getal gaste";
     //crForm.Aankoms_jaar.text = "Aankoms_jaar";
     //crForm.Aankoms_maand.text = "Aankoms_maand";
     //crForm.Aankoms_dag.text = "Aankoms_dag";
     //crForm.Vertrek_jaar.text = "Vertrek_jaar";
     //crForm.Vertrek_maand.text = "Vertrek_maand";
     //crForm.Vertrek_dag.text = "Vertrek_dag";
     //crForm.Getal_nagte.text = "Getal_nagte";
     //crForm.Getal_gaste.text = "Getal_gaste";
     //crForm._1kamer_eenhede.text = "_1kamer_eenhede";
     //crForm._2kamer_eenhede.text = "_2kamer_eenhede";
     //crForm.Kamer_tariewe.text = "Kamer_tariewe";
     //crForm.Kamer_tariewe.text = "Kamer_tariewe";
     //crForm.Kamer_tariewe.text = "Kamer_tariewe";
     //crForm.Kamer_tariewe.text = "Kamer_tariewe";
    crForm.Getal_ontbyte.text = "Getal ontbyte";
     //crForm.Ontbyt_tarief.text = "Ontbyt_tarief";
    crForm.Stelle_linne.text = "Stelle linne";
     //crForm.Linne_tarief.text = "Linne_tarief";
     //crForm.Vol_mb_opsie.text = "Vol_mb_opsie";
     //crForm.vmb_Verblyf_koste.text = "vmb_Verblyf_koste";
     //crForm.Linne_vmb_opsie.text = "Linne_vmb_opsie";
     //crForm.Linne_koste.text = "Linne_koste";
     //crForm.Ontbyt_vmb_opsie.text = "Ontbyt_vmb_opsie";
     //crForm.Ontbyt_koste.text = "Ontbyt_koste";
     //crForm.Totale_koste.text = "Totale_koste";
     //crForm.Deposito_koste.text = "Deposito_koste";
     //crForm.Balans_by_aankoms_koste.text = "Balans_by_aankoms_koste";}
  } else {
    crForm.Van_verantwoordelik.text = "Surname";
    crForm.Naam_verantwoordelik.text = "First name";
    crForm.Voorletters_verantwoordelik.text = "Initials";
    crForm.Epos_adres.text = "E-mail address";
    crForm.ID_nr.text = "ID no.";
    crForm.Paspoort_nr.text = "Passport no.";
    crForm.Fisiese_Adres.text = "Residential address";
    crForm.Pos_adres.text = "Postal address";
    crForm.Huis_foon.text = "Telephone (home)";
    crForm.Werk_foon.text = "Telephone (work)";
    crForm.Mobiele_foon.text = "Mobile phone";
    crForm.Faks_nr.text = "Fax no.";
    for (i = 0; i < crForm.Van_gas.length; i++) {
      crForm.Van_gas[i].text = "Surname (guest)";
      crForm.Naam_gas[i].text = "First name (guest)";
      crForm.Voorletters_gas[i].text = "Initials (guest)";
      crForm.ID_paspoortnr_gas[i].text = "ID / Passport no (guest)";
    }
    crForm.vgaste.text = "Number of guests";
    crForm.Getal_ontbyte.text = "Number of breakfasts";
    crForm.Stelle_linne.text = "Sets of linen";
  }
}


function vrfcPrp()
{ /*  Form element verification properties
  2007-05-26
 Updates:
  2007-06-02
  2008-04-04
  2008-09-28
*/
  crForm.Van_verantwoordelik.min = 2;
  crForm.Naam_verantwoordelik.min = 2;
  crForm.Epos_adres.filter = /^[a-zA-Z0-9._\-]+@([a-zA-Z0-9.\-]+\.)+[a-zA-Z0-9.\-]{2,4}$/;
  crForm.Faks_nr.optional = true;
  crForm.Faks_nr.filter = /^(\+\d\d)?[0-9 \-]{9,16}[0-9]$/;
  crForm.Faks_nr.fltmsg = "Only +nn, digits and spaces in between allowed";
  crForm.ID_nr.optional = true;
  crForm.ID_nr.noprompt = true;
  crForm.ID_nr.filter = /^[0-9 ]{13,15}$/;
  crForm.ID_nr.fltmsg = "Only correct number of digits and spaces inbetween allowed";
  crForm.Paspoort_nr.optional = true;
  crForm.Paspoort_nr.noprompt = true;
  crForm.Pos_adres.optional = true;
  crForm.Huis_foon.optional = true;
  crForm.Huis_foon.filter = /^(\+\d\d)?[0-9 \-]{9,16}[0-9]$/;
  crForm.Huis_foon.fltmsg = "Only +nn, digits and spaces in between allowed";
  crForm.Stelle_linne.min = 0;
  crForm.Stelle_linne.numeric = true;
  crForm.Getal_ontbyte.min = 0;
  crForm.Getal_ontbyte.numeric = true;
  crForm.Werk_foon.optional = true;
  crForm.Werk_foon.filter = /^(\+\d\d)?[0-9 \-]{9,16}[0-9]$/;
  crForm.Werk_foon.fltmsg = "Only +nn, digits and spaces in between allowed";
  crForm.Mobiele_foon.optional = true;
  crForm.Mobiele_foon.filter = /^(\+\d\d)?[0-9 \-]{9,16}[0-9]$/;
  crForm.Mobiele_foon.fltmsg = "Only +nn, digits and spaces in between allowed";
  crForm.Fisiese_Adres.min = 15;
  for (var i = 0; i < crForm.Van_gas.length; i++) {
    crForm.Van_gas[i].min = 2;
    crForm.Naam_gas[i].min = 2;
  }
  for (i = 1; i < crForm.Van_gas.length; i++) {
    crForm.Van_gas[i].optional = true;
    crForm.Naam_gas[i].optional = true;
    crForm.Voorletters_gas[i].optional = true;
    crForm.ID_paspoortnr_gas[i].optional = true;
    crForm.Van_gas[i].noprompt = true;
    crForm.Naam_gas[i].noprompt = true;
    crForm.Voorletters_gas[i].noprompt = true;
    crForm.ID_paspoortnr_gas[i].noprompt = true;
  }
    crForm.Tarief_basis[1].optional = true; // for when submiited before any fields entered
    crForm.Tarief_basis[1].noprompt = true; // same
  //test(aForm, "vrfcPrp3");
}


function vrfySpcf()
{ /*  Form verifications needing more than simple element properties
  2007-05-26
 Updates:
  2007-06-02
  2008-04-09
  2008-09-28
*/
  //crForm.Fisiese_Adres.value = crForm.Fisiese_Adres.value.replace(/(\w)\n/g , "$1  ");
  //crForm.Pos_adres.value = crForm.Pos_adres.value.replace(/(\w)\n/g , "$1  ");

  var inxLng;
  if (document.body.lang == "af") {
    inxLng = 1;
  } else {
    inxLng = 0;
  }

  var errors = "";
  var year = crForm.Aankoms_jaar.options[crForm.Aankoms_jaar.selectedIndex].value;
  var month = crForm.Aankoms_maand.options[crForm.Aankoms_maand.selectedIndex].value;
  var day = crForm.Aankoms_dag.options[crForm.Aankoms_dag.selectedIndex].value;

  dateArrv = new Date(year, month-1, day);
  year = crForm.Vertrek_jaar.options[crForm.Vertrek_jaar.selectedIndex].value;
  month = crForm.Vertrek_maand.options[crForm.Vertrek_maand.selectedIndex].value;
  day = crForm.Vertrek_dag.options[crForm.Vertrek_dag.selectedIndex].value;
  dateDprt = new Date(year, month-1, day);

  var msgDprt = new Array("Departure date not later than arrival date", "Vertrekdatum nie later as datum van aankoms");
  if (dateDprt.getTime() <= dateArrv.getTime()) {
    errors += '- ' + msgDprt[inxLng] + '\n';
  }

  var msgMty = new Array("fields both empty", "velde beide leeg");
  if (isempty(crForm.ID_nr.value) && isempty(crForm.Paspoort_nr.value)) {
    errors += "    `" + crForm.ID_nr.text + "` \& `" +  crForm.Paspoort_nr.text + "` " + msgMty[inxLng] + "\n";
  }

  var msgPhn = new Array("No telephone number supplied", "Geen telefoonnommer verskaf nie");
  if (isempty(crForm.Huis_foon.value) && isempty(crForm.Werk_foon.value) && isempty(crForm.Mobiele_foon.value)) {
    errors += "    " + msgPhn[inxLng] + "\n";
  }

  var msgCnd = new Array("Conditions of stay not accepted", "Verblyfvoorwaardes nie aanvaar nie");
  if (!crForm.Aanvaar_Voorwaardes.checked) {
    errors += "    " + msgCnd[inxLng] + "\n";
  }

  return errors;
}


function elmUpd()
{ /*  Update form elements according to current time
  2007-05-26
 Updates:
*/
  var year = now.getFullYear();
  var month = now.getMonth() + 1;
  var day = now.getDate();
  for (var i = 0; i < 3; i++) {
    crForm.Aankoms_jaar[i + 1].value = year + i;
    crForm.Aankoms_jaar[i + 1].text = year + i;
    crForm.Vertrek_jaar[i + 1].value = year + i;
    crForm.Vertrek_jaar[i + 1].text = year + i;
  }
  if (crForm.Aankoms_jaar.selectedIndex === 0) {
    crForm.Aankoms_jaar.selectedIndex = 1;
  }
  if (crForm.Vertrek_jaar.selectedIndex === 0) {
    crForm.Vertrek_jaar.selectedIndex = 1;
  }
  if (crForm.Aankoms_maand.selectedIndex === 0) {
    crForm.Aankoms_maand.selectedIndex = month;
  }
  if (crForm.Vertrek_maand.selectedIndex === 0) {
    crForm.Vertrek_maand.selectedIndex = month;
  }
  if (crForm.Aankoms_dag.selectedIndex === 0 || crForm.Vertrek_dag.selectedIndex === 0) {
    if (day < 31) {
      crForm.Aankoms_dag.selectedIndex = day;
      crForm.Vertrek_dag.selectedIndex = day + 1;
    } else {
      crForm.Aankoms_dag.selectedIndex = day - 1;
      crForm.Vertrek_dag.selectedIndex = day;
    }
  }
}


function evntHnd()
{ /* Form element event handlers
  2007-05-26
 Updates:
  2008-04-10
  2008-09-27
*/

  crForm.Van_verantwoordelik.onblur =
    function() {
      crForm.Van_verantwoordelik.value = trim(crForm.Van_verantwoordelik.value);
      crForm.Van_gas[0].value = crForm.Van_verantwoordelik.value;
      crForm.Kan_kamer_deel[0].checked="checked";
      formCalc();
    };
  crForm.Naam_verantwoordelik.onblur =
    function() {
      crForm.Naam_verantwoordelik.value = trim(crForm.Naam_verantwoordelik.value);
      crForm.Naam_gas[0].value = crForm.Naam_verantwoordelik.value;
    };
  crForm.Voorletters_verantwoordelik.onblur =
    function() {
      crForm.Voorletters_verantwoordelik.value = trim(crForm.Voorletters_verantwoordelik.value);
      crForm.Voorletters_gas[0].value = crForm.Voorletters_verantwoordelik.value;
    };
  crForm.ID_nr.onblur =
    function() {
      crForm.ID_nr.value = trim(crForm.ID_nr.value);
      crForm.ID_paspoortnr_gas[0].value = crForm.ID_nr.value;
      if (isempty(crForm.ID_paspoortnr_gas[0].value)) {
        if (!isempty(crForm.Paspoort_nr.value)) {
          crForm.ID_paspoortnr_gas[0].value = crForm.Paspoort_nr.value;
        }
      }
    };
  crForm.Paspoort_nr.onblur =
    function() {
      crForm.Paspoort_nr.value = trim(crForm.Paspoort_nr.value);
      if (isempty(crForm.ID_paspoortnr_gas[0].value)) {
        crForm.ID_paspoortnr_gas[0].value = crForm.Paspoort_nr.value;
      }
    };

  crForm.Van_gas[1].onblur = function() {
      this.value = trim(this.value);
      if (!isempty(this.value)) {
        this.form.Kan_kamer_deel[1].checked=true;
      } else {
        this.form.Kan_kamer_deel[1].checked=false;
      }
      formCalc();
    };
  crForm.Van_gas[2].onblur = function() {
      this.value = trim(this.value);
      if (!isempty(this.value)) {
        this.form.Kan_kamer_deel[2].checked=true;
      } else {
        this.form.Kan_kamer_deel[2].checked=false;
      }
      formCalc();
    };
  crForm.Van_gas[3].onblur = function() {
      this.value = trim(this.value);
      if (!isempty(this.value)) {
        this.form.Kan_kamer_deel[3].checked=true;
      } else {
        this.form.Kan_kamer_deel[3].checked=false;
      }
      formCalc();
    };
  crForm.Van_gas[4].onblur = function() {
      this.value = trim(this.value);
      if (!isempty(this.value)) {
        this.form.Kan_kamer_deel[4].checked=true;
      } else {
        this.form.Kan_kamer_deel[4].checked=false;
      }
      formCalc();
    };
  crForm.Van_gas[5].onblur = function() {
      this.value = trim(this.value);
      if (!isempty(this.value)) {
        this.form.Kan_kamer_deel[5].checked=true;
      } else {
        this.form.Kan_kamer_deel[5].checked=false;
      }
      formCalc();
    };
  for (var i = 1; i < crForm.Van_gas.length; i++) {
    crForm.Naam_gas[i].onblur = this.value = trim(this.value);
    crForm.Voorletters_gas[i].onblur = this.value = trim(this.value);
    crForm.Kan_kamer_deel[i].onclick = formCalc;
  }

  for (i = 0; i < crForm.Van_gas.length; i++) {
    // crForm.Is_volwassene[i].onchange =  formCalc; Not IE7
    // crForm.Is_volwassene[i].onclick =  formCalc;  Also not IE7. What is?
  }

  crForm.Epos_adres.onblur = function() {crForm.Epos_adres.value = trim(crForm.Epos_adres.value);};
  crForm.Fisiese_Adres.onblur = function() {crForm.Fisiese_Adres.value = trim(crForm.Fisiese_Adres.value);};
  crForm.Pos_adres.onblur = function() {crForm.Pos_adres.value = trim(crForm.Pos_adres.value);};
  crForm.Huis_foon.onblur = function() {crForm.Huis_foon.value = trim(crForm.Huis_foon.value);};
  crForm.Werk_foon.onblur = function() {crForm.Werk_foon.value = trim(crForm.Werk_foon.value);};
  crForm.Mobiele_foon.onblur = function() {crForm.Mobiele_foon.value = trim(crForm.Mobiele_foon.value);};
  crForm.Faks_nr.onblur = function() {crForm.Faks_nr.value = trim(crForm.Faks_nr.value);};

  crForm.Aankoms_dag.onchange = formCalc;
  crForm.Aankoms_jaar.onchange = formCalc;
  crForm.Aankoms_maand.onchange = formCalc;
  crForm.Vertrek_dag.onchange = formCalc;
  crForm.Vertrek_jaar.onchange = formCalc;
  crForm.Vertrek_maand.onchange = formCalc;

  crForm.Vol_mb_opsie.onchange = formCalc;
  crForm.Linne_vmb_opsie.onchange = formCalc;
  crForm.Ontbyt_vmb_opsie.onchange = formCalc;
  crForm.Stelle_linne.onchange = formCalc;
  crForm.Getal_ontbyte.onchange = formCalc;
  crForm.Kan_kamer_deel[0].onclick = formCalc;

  crForm.Vol_mb_opsie.onclick = formCalc;
  crForm.Linne_vmb_opsie.onclick = formCalc;
  crForm.Ontbyt_vmb_opsie.onclick = formCalc;
  crForm.Stelle_linne.onblur = formCalc;
  crForm.Getal_ontbyte.onblur = formCalc;
}


function strVgaste()
{ /*  Defined guests
  2007-05-25
 Updates:
  2008-04-04
  2008-04-09
  2008-09-26
*/
  crForm.vgaste.value = "";
  var cntG = 0; //Guests
  var cntSh = 0; //Shared room

  for (i = 1; i < crForm.Van_gas.length; i++) {
    if (!isempty(crForm.Van_gas[i].value)) {
      crForm.Naam_gas[i].optional = undefined;
      crForm.Voorletters_gas[i].optional = undefined;
      crForm.ID_paspoortnr_gas[i].optional = undefined;
      crForm.Naam_gas[i].noprompt = false;
      crForm.Voorletters_gas[i].noprompt = false;
      crForm.ID_paspoortnr_gas[i].noprompt = false;
    } else {
      crForm.Naam_gas[i].optional = true;
      crForm.Voorletters_gas[i].optional = true;
      crForm.ID_paspoortnr_gas[i].optional = true;
      crForm.Naam_gas[i].noprompt = true;
      crForm.Voorletters_gas[i].noprompt = true;
      crForm.ID_paspoortnr_gas[i].noprompt = true;
    }
    if (!isempty(crForm.Naam_gas[i].value)) {
      crForm.Van_gas[i].optional = undefined;
    } else {
      crForm.Van_gas[i].optional = true;
    }
    if (!isempty(crForm.Voorletters_gas[i].value)) {
      crForm.Naam_gas[i].optional = undefined;
      crForm.Van_gas[i].optional = undefined;
    }
  }

  for (var i = 0; i < crForm.Van_gas.length; i++) {
    if (!isempty(crForm.Van_gas[i].value)) {
      cntG++;
    }
  }

  for (var i = 0; i < crForm.Van_gas.length; i++) {
    if (!isempty(crForm.Van_gas[i].value)) {
      //Guest list string crForm.vgaste
      crForm.vgaste.value += "\n |  " + crForm.Van_gas[i].value + ",  " + crForm.Naam_gas[i].value;
      if (!isempty(crForm.Voorletters_gas[i].value)) {
        crForm.vgaste.value += " ; " + crForm.Voorletters_gas[i].value;
      }
      if (!isempty(crForm.ID_paspoortnr_gas[i].value)) {
        crForm.vgaste.value += " ; " + crForm.ID_paspoortnr_gas[i].value;
      }
      if (crForm.Is_volwassene[i].checked) {
        crForm.vgaste.value += "  " + lngAdlt;
      }
      if (crForm.Kan_kamer_deel[i].checked) {
        if (cntG != 1) {
          cntSh++;
          crForm.vgaste.value += "  " + lngShr;
        }
      }
    }
  }

  crForm.Getal_gaste.value = cntG;
  var cntSngRm = cntG - cntSh;
  var cntDblRm = ((cntG - cntSngRm) - ((cntG - cntSngRm) % 2 )) / 2;
  cntSngRm = cntG - (cntDblRm * 2);
  var cntRm = cntDblRm + cntSngRm;
  crForm.Getal_enkelkamers.value = cntSngRm;
  crForm.Getal_dubbelkamers.value = cntDblRm;

  if (cntRm == 6) {
    crForm._1kamer_eenhede.value = 2;
    crForm._2kamer_eenhede.value = 2;
  } else {
    crForm._1kamer_eenhede.value = cntRm % 2;
    crForm._2kamer_eenhede.value = (cntRm - cntRm % 2) / 2;
  }
  //alert("Gaste " + cntG + "\nDeel " + cntSh + "\nDubbel " + cntDblRm + "\nEnkel " + cntSngRm + "\n2kamer " + crForm._2kamer_eenhede.value + "\n1kamer " + crForm._1kamer_eenhede.value);
}


function formCalc()
{ /*  Calculations on form element values
  2007-05-26
 Updates:
  2008-04-09
  2008-09-28
*/
  var year = crForm.Aankoms_jaar.options[crForm.Aankoms_jaar.selectedIndex].value;
  var month = crForm.Aankoms_maand.options[crForm.Aankoms_maand.selectedIndex].value;
  var day = crForm.Aankoms_dag.options[crForm.Aankoms_dag.selectedIndex].value;
  dateArrv = new Date(year, month-1, day);
  year = crForm.Vertrek_jaar.options[crForm.Vertrek_jaar.selectedIndex].value;
  month = crForm.Vertrek_maand.options[crForm.Vertrek_maand.selectedIndex].value;
  day = crForm.Vertrek_dag.options[crForm.Vertrek_dag.selectedIndex].value;
  dateDprt = new Date(year, month-1, day);
  if (dateDprt && dateArrv) {
    crForm.Getal_nagte.value = (dateDprt.getTime() - dateArrv.getTime()) / msDay;
  }

  strVgaste();

  var berBal;
  var berBybet;
  var berDep;
  var berKoste;
  var berLinne;
  var berOntbyt;
  var berTotl;
  var gmdTarief;

  if (crForm.Getal_nagte.value > 2 && crForm.Vol_mb_opsie.checked === true && crForm.Getal_gaste.value > 1) { //special
    gmdTarief = crForm._1kamer_eenhede.value * crForm.Kamer_tariewe[2].value + crForm._2kamer_eenhede.value * crForm.Kamer_tariewe[3].value;
    berKoste = crForm.Getal_nagte.value * gmdTarief;
    berDep = berKoste;
    crForm.Per_dag_tarief.value = gmdTarief;
    crForm.Tarief_basis[0].value = "";
    crForm.Tarief_basis[1].value = "E";
  } else {
    crForm.Stelle_linne.value = 0;
    if (crForm.Vol_mb_opsie.checked === true) {
      berKoste = crForm.Getal_nagte.value * crForm.Getal_gaste.value * crForm.Kamer_tariewe[1].value;
      berDep = berKoste;
      crForm.Per_dag_tarief.value = crForm.Kamer_tariewe[1].value;
      crForm.Tarief_basis[0].value = "P";
      crForm.Tarief_basis[1].value = "";
    } else {
      berKoste = crForm.Getal_nagte.value * crForm.Getal_gaste.value * crForm.Kamer_tariewe[0].value;
      berDep = berKoste * 0.5;
      crForm.Per_dag_tarief.value = crForm.Kamer_tariewe[0].value;
      crForm.Tarief_basis[0].value = "P";
      crForm.Tarief_basis[1].value = "";
    }
  }

  //berBybet = Math.max((crForm.Getal_enkelkamers.value - 1), 0) * crForm.Kamer_tariewe[4].value;;
  berBybet = Math.max((crForm.Getal_enkelkamers.value - crForm._2kamer_eenhede.value - crForm._1kamer_eenhede.value), 0) * crForm.Kamer_tariewe[4].value;;

  if (parseInt(crForm.Stelle_linne.value, 10) > parseInt(crForm.Getal_gaste.value, 10)) {
    crForm.Stelle_linne.value = crForm.Getal_gaste.value;
  } else {
    if (crForm.Stelle_linne.value < 0) {
      crForm.Stelle_linne.value = 0;
    }
  }
  berLinne = crForm.Stelle_linne.value * crForm.Linne_tarief.value;

  if (crForm.Getal_ontbyte.value > crForm.Getal_gaste.value * crForm.Getal_nagte.value) {
    crForm.Getal_ontbyte.value = crForm.Getal_gaste.value * crForm.Getal_nagte.value;
  } else {
    if (crForm.Getal_ontbyte.value < 0) {
      crForm.Getal_ontbyte.value = 0;
    }
  }
  berOntbyt = crForm.Getal_ontbyte.value * crForm.Ontbyt_tarief.value;
  berTotl = berKoste + berLinne + berOntbyt + berBybet;

  //if (crForm.Vol_mb_opsie.checked === true) {
    berDep += berBybet;
  //}
  if (crForm.Linne_vmb_opsie.checked === true) {
    berDep += berLinne;
  }
  if (crForm.Ontbyt_vmb_opsie.checked === true) {
    berDep += berOntbyt;
  }
  berBal = berTotl - berDep;
  crForm.vmb_Verblyf_koste.value = format(berKoste);
  crForm.Enkelkamer_bybetaling.value = format(berBybet);
  crForm.Linne_koste.value = format(berLinne);
  crForm.Ontbyt_koste.value = format(berOntbyt);
  crForm.Totale_koste.value = format(berTotl);
  crForm.Deposito_koste.value = format(berDep);
  crForm.Balans_by_aankoms_koste.value = format(berBal);
}

