function startCalc_MT_VoorwaardenTE()
{
  interval = setInterval("MT_VoorwaardenTE()",500);
}

function MT_VoorwaardenTE()
{
    // Variabelen vullen met schermwaarden.
    rMaxBedrdag = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_MaxBedrdag').value);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_BerdagMax1').innerHTML = (rMaxBedrdag*1);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_BerdagMax2').innerHTML = (rMaxBedrdag*1);
}

function startCalc()
{
  interval = setInterval("bereken()",5000);
}
// Berekenen van de bedragen voor de factuur, provisie, opbrengst taxateur.
function bereken()
{
    // Afhankelijk van de keuze voor vaste- of variabele provisie, wordt de juiste rekenmethode gekozen.
    bVasteProvisie = document.getElementById('ctl00_ContentPlaceHolder1_rbt_ProvisieVast').checked;
    if (bVasteProvisie == true)
    {
        RekenMethode_VasteProvisie()
    }
    else
    {
        RekenMethode_VariabeleProvisie()
    }
}
function stopCalc()
{
  clearInterval(interval);
}
var numb = '0123456789';
var getallen = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var bmk = '0123456789,';
var bmp = '0123456789.';
function isValid(the_key,val) 
{
   if (!the_key)
    {
        the_key = event.keyCode;
    }
    
   var t = String.fromCharCode(the_key);
  if (the_key == "") return false;
  for (i=0; i<val.length; i++) 
  {
    if (val.indexOf(t.charAt(i),0) == -1) return false;
  }
  return true;
}
function isHoofdletters(the_key) {return isValid(the_key,upr);}
function isBedragMetKomma(the_key) {return isValid(the_key,bmk);}
function isBedragMetPunt(the_key) {return isValid(the_key,bmp);}
function isGetal(the_key) {return isValid(the_key,getallen);}
function isLower(the_key) {return isValid(the_key,lwr);}
function isUpper(the_key) {return isValid(the_key,upr);}
function isAlpha(the_key) {return isValid(the_key,lwr+upr);}
function isAlphanum(the_key) {return isValid(the_key,lwr+upr+numb);} 
function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
         return true;
      }
      
// Afronden van een getal op X cijfers achter de komma.
function roundNumber(num, dec)
{
	var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);

    // Vervangen van een NaN (Not a Number) door een 0.
    if (isNaN(result))
    {
        return 0;
    }
    else
    {
        return result;
    }
}

// Berekenen van de bedragen voor de factuur, provisie, opbrengst taxateur.
function RekenMethode_VasteProvisie()
{
    // Ervoor zorgen dat er geldige getalwaarden staan in de velden.
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rVovGeschat'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rBodemCourtage'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rVovGrensbedrag'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rCourtagePromillage'));
//    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rCourtagePromilleBedrag'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rAdditioneleKosten'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rLeges'));

    // Variabelen vullen met schermwaarden.
    var rVovGeschat = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rVovGeschat').value);
    var rBodemCourtage = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rBodemCourtage').value);
    var rVovGrensbedrag = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rVovGrensbedrag').value);
    var sCourtagePromillage = document.getElementById('ctl00_ContentPlaceHolder1_txt_rCourtagePromillage').value;
//    var rProvisieTussenpersoon = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rCourtagePromilleBedrag').value);
    var rAdditioneleKosten = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rAdditioneleKosten').value);
    var rLeges = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rLeges').value);
    var rBtwPercentage = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_hid_Btw').value);
    var rAdminKosten = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_hid_AdminKosten').value.replace(',' ,'.'));

    // Converteren van leestekens.
    rCourtagePromillage = parseFloat(sCourtagePromillage);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_rVovGeschat').innerHTML = roundNumber(rVovGeschat*1, 2);

    // Berekenen van de toeslag voor de bodemcourtage.
    var rToeslagMinimumCourtage;
    if (rVovGeschat > rVovGrensbedrag) 
    {
        rToeslagMinimumCourtage = ((rVovGeschat - rVovGrensbedrag) * rCourtagePromillage) / 1000;
    }
    else 
    {
        rToeslagMinimumCourtage = 0;
    }
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_rBodemCourtage').innerHTML = roundNumber(rBodemCourtage + rToeslagMinimumCourtage, 2);
       
    // Het uitrekenen van de te factureren courtage aan de klant.
    var rGefactureerdeCourtage = rBodemCourtage + rToeslagMinimumCourtage;  //+ rProvisieTussenpersoon;
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantCourtage').innerHTML = roundNumber(rGefactureerdeCourtage, 2);

    // Berekenen van de bedragen voor de factuur aan de klant.
    dFactuurKlant_Subtotaal = rGefactureerdeCourtage + rAdditioneleKosten + rLeges;
    dFactuurKlant_BTW = (rBtwPercentage / 100) * dFactuurKlant_Subtotaal;
    dFactuurKlant_Totaal = dFactuurKlant_Subtotaal + dFactuurKlant_BTW;
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantAddKosten').innerHTML = roundNumber(rAdditioneleKosten, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantLeges').innerHTML = roundNumber(rLeges, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantSubTotaal').innerHTML = roundNumber(dFactuurKlant_Subtotaal, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantBtw').innerHTML = roundNumber(dFactuurKlant_BTW, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantFactuurBedrag').innerHTML = roundNumber(dFactuurKlant_Totaal, 2);
    
    // Invullen van de provisie voor de TP in het scherm.
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntCourtage').innerHTML = roundNumber(rGefactureerdeCourtage, 2);
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntBodemCourtage').innerHTML = '-/- ' + roundNumber(rBodemCourtage + rToeslagMinimumCourtage, 2)
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntProvisie').innerHTML = roundNumber(rProvisieTussenpersoon, 2);
//    if (rProvisieTussenpersoon > rAdminKosten)
//    {
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntAdminKosten').innerHTML = '-/- ' + roundNumber(rAdminKosten, 2);
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntNettoUitkering').innerHTML = roundNumber(rProvisieTussenpersoon - rAdminKosten, 2);
//    }
//    else
//    {
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntAdminKosten').innerHTML = '-/- ' + roundNumber(rProvisieTussenpersoon, 2);
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntNettoUitkering').innerHTML = 0;
//    }

    // Berekenen van de opbrengst voor de taxateur.
    dTaxateur_FactuurBedragExBTW = dFactuurKlant_Subtotaal;
    dTaxateur_TotaalInkomstenTaxateur = dTaxateur_FactuurBedragExBTW  - rAdditioneleKosten - rLeges;
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxFactuurBedrag').innerHTML = roundNumber(dTaxateur_FactuurBedragExBTW, 2);
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxProvisie').innerHTML = '-/- ' + roundNumber(rProvisieTussenpersoon, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxUnieFee').innerHTML = '-/- ' + roundNumber(rAdditioneleKosten, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxLeges').innerHTML = '-/- ' + roundNumber(rLeges, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxTotaal').innerHTML = roundNumber(dTaxateur_TotaalInkomstenTaxateur, 2);
}

// Berekenen van de bedragen voor de factuur, provisie, opbrengst taxateur.
function RekenMethode_VariabeleProvisie()
{
    // Ervoor zorgen dat er geldige getalwaarden staan in de velden.
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rVovGeschat_v'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rBodemCourtage_v'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_PromilageAanKlant_v'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rAdditioneleKosten_v'));
    GeldigBedrag(document.getElementById('ctl00_ContentPlaceHolder1_txt_rLeges_v'));

    // Als het verdelingspercentage voor de TP niet ingevuld, dan standaard op 100% zetten.
    //if (document.getElementById('ctl00_ContentPlaceHolder1_txt_PercIntermediair_v').value.length == 0) {document.getElementById('ctl00_ContentPlaceHolder1_txt_PercIntermediair_v').value = 100}

    // Variabelen vullen met schermwaarden.
    var rVovGeschat = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rVovGeschat_v').value);
    var rBodemCourtage = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rBodemCourtage_v').value);
    var sCourtagePromillage = document.getElementById('ctl00_ContentPlaceHolder1_txt_PromilageAanKlant_v').value;
    var rAdditioneleKosten = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rAdditioneleKosten_v').value);
    var rLeges = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_rLeges_v').value);
    var rBtwPercentage = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_hid_Btw').value);
    var rAdminKosten = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_hid_AdminKosten').value.replace(',' ,'.'));
    
    // Converteren van leestekens.
    sCourtagePromillage.replace(',' ,'.');
    var rCourtagePromillage = parseFloat(sCourtagePromillage);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_rVovGeschat').innerHTML = roundNumber(rVovGeschat * 1, 2);

    // Labels in het scherm invullen.
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntBodemCourtage').innerHTML = roundNumber(rBodemCourtage, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_rBodemCourtage').innerHTML = roundNumber(rBodemCourtage, 2);
       
    // Het uitrekenen van de te factureren courtage aan de klant.
    var rGefactureerdeCourtage;
    rGefactureerdeCourtage = rVovGeschat * (rCourtagePromillage / 1000);
    // Als het promillage bedrag lager is dan de courtage voor de MT, dan wordt dit de courtage die wordt berekend aan de klant.
    if (rGefactureerdeCourtage < rBodemCourtage) 
    {
        rGefactureerdeCourtage = rBodemCourtage;
    }
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantCourtage').innerHTML = roundNumber(rGefactureerdeCourtage, 2);

    // Berekenen van de bedragen voor de factuur aan de klant.
    dFactuurKlant_Subtotaal = rGefactureerdeCourtage + rAdditioneleKosten + rLeges;
    dFactuurKlant_BTW = (rBtwPercentage / 100) * dFactuurKlant_Subtotaal;
    dFactuurKlant_Totaal = dFactuurKlant_Subtotaal + dFactuurKlant_BTW;
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantAddKosten').innerHTML = roundNumber(rAdditioneleKosten, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantLeges').innerHTML = roundNumber(rLeges, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantSubTotaal').innerHTML = roundNumber(dFactuurKlant_Subtotaal, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantBtw').innerHTML = roundNumber(dFactuurKlant_BTW, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_KlantFactuurBedrag').innerHTML = roundNumber(dFactuurKlant_Totaal, 2);
    
//    // Goedzetten van de verdelingspercentages als deze vreemde getallen bevatten.
//    var rPercentageVerdelingTP = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_txt_PercIntermediair_v').value);
//    if (rPercentageVerdelingTP > 100)
//    {
//        rPercentageVerdelingTP = 100;
//        document.getElementById('ctl00_ContentPlaceHolder1_txt_PercIntermediair_v').value = roundNumber(rPercentageVerdelingTP, 2);
//    }
//    var rPercentageVerdelingMT = 100 - rPercentageVerdelingTP;
//    document.getElementById('ctl00_ContentPlaceHolder1_txt_PercTaxateur_v').value = roundNumber(rPercentageVerdelingMT, 2);

//    // Berekenen van de provisie voor de TP.
//	rProvisieTussenpersoon = (rPercentageVerdelingTP / 100) * parseFloat(rGefactureerdeCourtage - rBodemCourtage);
//	var dAandeelTaxateur = (rPercentageVerdelingMT / 100) * parseFloat(rGefactureerdeCourtage - rBodemCourtage);
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntCourtage').innerHTML = roundNumber(rGefactureerdeCourtage, 2);
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntBodemCourtage').innerHTML = '-/- ' + roundNumber(rBodemCourtage, 2)
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_SubtotaalOpbInt').innerHTML = roundNumber(parseFloat(rGefactureerdeCourtage - rBodemCourtage), 2)
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_AandeelTaxateur').innerHTML = '-/- ' + roundNumber(dAandeelTaxateur, 2);
//    document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntProvisie').innerHTML = roundNumber(rProvisieTussenpersoon, 2);
//    if (rProvisieTussenpersoon > rAdminKosten)
//    {
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntAdminKosten').innerHTML = '-/- ' + roundNumber(rAdminKosten, 2);
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntNettoUitkering').innerHTML = roundNumber(rProvisieTussenpersoon - rAdminKosten, 2);
//    }
//    else
//    {
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntAdminKosten').innerHTML = '-/- ' + roundNumber(rProvisieTussenpersoon, 2);
//        document.getElementById('ctl00_ContentPlaceHolder1_lbl_IntNettoUitkering').innerHTML = 0;
//    }

    // Berekenen van de opbrengst voor de taxateur.
    dTaxateur_FactuurBedragExBTW = dFactuurKlant_Subtotaal;
    dTaxateur_TotaalInkomstenTaxateur = dTaxateur_FactuurBedragExBTW  - rAdditioneleKosten - rLeges;
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxFactuurBedrag').innerHTML = roundNumber(dTaxateur_FactuurBedragExBTW, 2);
    //document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxProvisie').innerHTML = '-/- ' + roundNumber(rProvisieTussenpersoon, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxUnieFee').innerHTML = '-/- ' + roundNumber(rAdditioneleKosten, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxLeges').innerHTML = '-/- ' + roundNumber(rLeges, 2);
    document.getElementById('ctl00_ContentPlaceHolder1_lbl_TaxTotaal').innerHTML = roundNumber(dTaxateur_TotaalInkomstenTaxateur, 2);
}

// De opgegeven control converteren naar een geldige waarde.
function GeldigBedrag (oTextBox)
{
  // Lege waarde vervangen door 0.
  if (oTextBox.value.length == 0)
  {
    oTextBox.value = 0;
  }
  // Vervangen van komma's door punten.
  if (oTextBox.value.match(','))
  {
      oTextBox.value = oTextBox.value.replace(',' ,'.');
  }
}
