    function getElem(x) {return document.getElementById(x);}
    
    function getRadioValue(name) {
      radios = document.getElementsByName(name);
      for (i=0; i<(radios.length); i++) {
        if (radios[i].checked) {
          // alert(radios[i].value);
          return radios[i].value;
        }
      }
      return '';
    }
    
    /**
     * Etomite seems to strip slashes on save (yes, it's silly), that's why the double backslashes.
    **/
    
    // fixme(fld) -- corrects invalid field values
    function fixme(fld) {
      // commas to dots, multiple dots to a single one, anything not dot or digit to nirvana
      val = fld.value;
      if ((fld.name == 'bday1') || (fld.name == 'bday2')) {
        fld.value = ((val >= 1) && (val <= 31)) ? Math.round(val) : 1;
      }else if ((fld.name == 'bmonth1') || (fld.name == 'bmonth2')) {
        fld.value = ((val >= 1) && (val <= 12)) ? Math.round(val) : 1;
      }else if ((fld.name == 'byear1') || (fld.name == 'byear2')) {
        now = new Date(); // getYear is broken in FF (non-Y2K), who knew?
        fld.value = ((val >= 1900) && (val <= (now.getFullYear-18()))) ? Math.round(val) : 1900;
      }else if (fld.name == 'inkomen1') {
        fld.value = val > 5000000 ? 5000000 : (val < 1000 ? 1000 : Math.round(val));
      }else if (fld.name == 'inkomen2') {
        fld.value = val > 5000000 ? 5000000 : Math.round(val);
      }
    }
    
    //________________ checks form values before submitting
    // checksubmit() /
    function checksubmit() {
      var i, $blanks = '';
      var $fields = 'bday1 bmonth1 byear1 samenlevingsvorm1 inkomen1'.split(' ');
      var $radiofields = ['hypotheek', 'geslacht1'];
      var $names = {'bday1': 'Geboortedatum dag', 'bmonth1':'Geboortedatum maand', 'byear1':'Geboortedatum jaar',
            'samenlevingsvorm1': 'Samenlevingsvorm', 'inkomen1':'Inkomen aanvrager', 'hypotheek':'Gewenste hypotheek', 'geslacht1':'Geslacht aanvrager'};
      var $missing = [];
      for (i=0; i<$radiofields.length; i++) {
        if (! getRadioValue($radiofields[i])) $missing.push($radiofields[i]);
      }
      for (i=0; i<$fields.length; i++) {
        var $val = getElem($fields[i]).value;
        if ($val == '' || $val == '0') $missing.push($fields[i]);
      }
      if ($missing.length > 0) {
        for (i=0; i<$missing.length; i++) $blanks += $names[$missing[i]]+'\n';
        alert('De volgende velden zijn nog niet goed ingevuld:\n' + $blanks);
        return false;
      }
      return true;
    }
    
    function checksubmit2() {
      var i, $blanks = '', $missing = [];
      var errorMsg = '';
      var $fields = 'bedrag_te_financieren bedrag_executiewaarde bedrag_leningdeel1 bedrag_niet_aftrekbaar1 looptijd1'.split(' ');
      var $names = {'bedrag_te_financieren':'Totaal hypotheekbedrag', 'bedrag_executiewaarde':'Executiewaarde', 'bedrag_leningdeel1':'Lening(1) bedrag', 'bedrag_niet_aftrekbaar1':'Lening(1) Niet aftrekbaar deel', 'looptijd1':'Lening(1) looptijd'};
      for (i=0; i<$fields.length; i++) {
        var $val = getElem($fields[i]).value;
        if ($val == '' || $val == 0 || isNaN($val)) $missing.push($fields[i]);
      }
      if ($missing.length > 0) {
        for (i=0; i<$missing.length; i++) $blanks += '- ' + $names[$missing[i]]+'\n';
        errorMsg = 'De volgende velden zijn nog niet goed ingevuld:\n' + $blanks;
      }
      // check moar values
      var l1 = parseInt(getElem('bedrag_leningdeel1').value);
      if (isNaN(l1)) l1 = 0;
      var l2 = parseInt(getElem('bedrag_leningdeel2').value);
      if (isNaN(l2)) l2 = 0;
      if ((l1 + l2) != parseInt(getElem('bedrag_te_financieren').value)) {
        errorMsg += '\n - Leningdeel 1 en Leningdeel 2 zijn samen niet het hypotheekbedrag.';
      }
      if (errorMsg != '') {
        alert(errorMsg);
        return false;
      }
      return true;
    }
    
  $(document).ready(function(){
  	
    $('#calculate1').click(function(){
      if (checksubmit()) {
        $hypotheek          = getRadioValue('hypotheek');
        $geslacht1          = getRadioValue('geslacht1');
        $geslacht2          = getRadioValue('geslacht2');
        $bday1              = getElem('bday1').value;
        $bmonth1            = getElem('bmonth1').value;
        $byear1             = getElem('byear1').value;
        $bday2              = getElem('bday2').value;
        $bmonth2            = getElem('bmonth2').value;
        $byear2             = getElem('byear2').value;
        $samenlevingsvorm1  = getElem('samenlevingsvorm1').value;
        $inkomen1           = getElem('inkomen1').value;
        $inkomen2           = getElem('inkomen2').value;
        // if (! ($income && $duration && $percent)) return false;
        // alert("running calculate1");
        $('#arena').load(
          "assets/php/maandlasten1.php",
          {hypotheek: $hypotheek, geslacht1: $geslacht1, geslacht2: $geslacht2, bday1: $bday1, bmonth1: $bmonth1, byear1: $byear1, bday2: $bday2,   bmonth2: $bmonth2, byear2: $byear2, samenlevingsvorm1: $samenlevingsvorm1, inkomen1: $inkomen1, inkomen2: $inkomen2},
          function() {$('#calculate2').click( function() { checkSecondForm() } )}
        );
      }
    });
    
    function checkSecondForm() {
      var i, post_data = {};
      if (checksubmit2()) {
        // get hidden form input from the previous form by id
        var fields = 'hypotheek geslacht1 geslacht2 bday1 bmonth1 byear1 samenlevingsvorm1 inkomen1 bday2 bmonth2 byear2 inkomen2'.split(' ');
        for (i=0; i<fields.length; i++) {
          eval('post_data.' + fields[i] + ' = getElem(\'' + fields[i] + '\').value;');
        }
        // get regular vars by id
        fields = 'bedrag_te_financieren bedrag_executiewaarde bedrag_renteverlies_bouw bedrag_boeterente bedrag_leningdeel1 bedrag_niet_aftrekbaar1 niet_aftrekbaar_na1 aflossingsvorm1 rentevastperiode1 looptijd1 bedrag_verzekering1 bedrag_leningdeel2 bedrag_niet_aftrekbaar2 niet_aftrekbaar_na2 aflossingsvorm2 rentevastperiode2 looptijd2 bedrag_verzekering2'.split(' ');
        for (i=0; i<fields.length; i++) {
          eval('post_data.' + fields[i] + ' = getElem(\'' + fields[i] + '\').value;');
        }
        // get radiobutton values by name
        fields = 'ind_aank_oversluiting ind_nieuw_bestaand ind_taxatiekosten ind_nhg'.split(' ');
        for (i=0; i<fields.length; i++) {
          eval('post_data.' + fields[i] + ' = getRadioValue(\'' + fields[i] + '\');');
        }
        $('#arena').load(
          'assets/php/maandlasten2.php',
          post_data);
      }
    }
    
  });
