// JavaScript Document
// copyright and written by Dominique Peladeau
// www.1stop-mortgagecalculator.com
// dom@1stop-mortgagecalculator.com
function EnleveDol (entre) { // change entree en chiffre si pas chiffre result= "ERROR"
		while (entre.indexOf("$") ==0 || entre.indexOf(" ") ==0) {entre = entre.substring(1,entre.length);}
		while (entre.indexOf(",") != -1)  {
		var entre = ""+entre.substring(0,entre.indexOf(","))+entre.substring(entre.indexOf(",")+1,entre.length)   }
			var entre2   = parseFloat(entre);
				if (entre2  != entre) {
				entre = "ERROR";
				}
		return entre;
	}


function Decimales (entree,decim) {
        entree += "";                         // S'assurer que entree est une chaine texte:
        var original_entree = entree;          // Garder l'original de la chaine entree:
        var montant = parseFloat(entree);      // Prendre la valeur flottante:
		var valpos = "";
		var valdec = "";
        if (isNaN (montant))                  // Retourner chaine entree si non convertible:
                return original_entree;
		if (decim == 2) {
	        montant = Math.round (100 * montant);  // Mettre montant en sous, arrondi au sou:
	        var chaine;
	        if (montant < 10) {
	                chaine = "00" + montant;  // Mettre montant en chaine et mettre des zeros si necessaire:
	        } else if (montant < 100) {
	                chaine = "0" + montant;
			} else {
	                chaine = "" + montant;
			}
			valpos = chaine.substring(0,chaine.length - 2);
			valdec = chaine.substring(chaine.length - 2,chaine.length);
    	} else {
			valpos  = "" + Math.round (montant);  // Exprime le montant
		}
		var chiffresavant = "";
		var chiffresmilieu   = "";
		if (valpos.length > 6) {
			chiffresavant = valpos.substring(0,(valpos.length - (parseInt(valpos.length / 3) * 3) ))+",";
		}
		if (valpos.length > 3){
			chiffresmilieu   = valpos.substring(valpos.length - 6,valpos.length - 3)+",";
		}
		chiffresfin   = valpos.substring(valpos.length - 3, valpos.length);
		nouvalpos = "$"+chiffresavant+chiffresmilieu+chiffresfin;
		if (decim == 2) {nouvalpos = nouvalpos+"."+valdec;}
        return nouvalpos;                      // Retourne la chaine en format monetaire:
}

function floor(chiffre) { //copyright 2003 Dominique Peladeau
  return Math.floor(chiffre*Math.pow(10,2))/Math.pow(10,2);
}

function FaitLe() {

  var InterDiv = parseFloat(document.MortgageCalculator.PourC.value); // taux interet
      if (isNaN (InterDiv))  {                // Retourner chaine entree si non convertible:
		alert('The Interest rate ('+InterDiv+') is causing an error!  Please re-enter values ...');
		return;
		}
	  if (InterDiv < 0.3) {
        InterDiv = InterDiv * 100.0;   
		}
		document.MortgageCalculator.PourC.value = InterDiv+" %";
  InterDiv2 = InterDiv
  InterDiv = InterDiv / 1200;
  var radic = 1;
  var moy = 1 + InterDiv;
  
    var annees = parseFloat(document.MortgageCalculator.AN.value); // terme en annees
      if (isNaN (annees))  {                // Retourner chaine entree si non convertible:
		alert('The Loan Term, in Years ('+annees+') is causing an error!  Please re-enter values ...');
		return;
		}
		document.MortgageCalculator.AN.value = annees+" yrs";
  
  for (i=0; i<annees * 12; i++)
  {
    radic = radic * moy
  }
  
  var emprunte = EnleveDol (document.MortgageCalculator.emprunt.value); // le principal
        if (emprunte == "ERROR")  {                // Retourner chaine entree si non convertible:
		alert('The Principal Loan Balance ('+document.MortgageCalculator.emprunt.value+') is causing an error!  Please re-enter values ...');
		return;
		}
  document.MortgageCalculator.emprunt.value = Decimales(emprunte,0); // le principal
  var emprunteOri = parseFloat(emprunte);
  var PrinEtInt = floor(emprunte * InterDiv / ( 1 - (1/radic)));
 // document.MortgageCalculator.moisPI.value = Decimales(PrinEtInt,2); // princip + int par mois
   document.getElementById('moisPIlabel').innerHTML = Decimales(PrinEtInt,2);
 
  //document.MortgageCalculator.BimoisPI.value = Decimales(floor(emprunte * InterDiv / ( 1 - (1/radic))/2),2);
   document.getElementById('BimoisPIlabel').innerHTML = Decimales(floor(emprunte * InterDiv / ( 1 - (1/radic))/2),2);
  
    var LesTaxes = EnleveDol (document.MortgageCalculator.taxes.value); // les taxes
        if (LesTaxes == "ERROR")  {                // Retourner chaine entree si non convertible:
		alert('The Annual Taxes ('+document.MortgageCalculator.taxes.value+') is causing an error!  Please re-enter values ...');
		return;
		}
  document.MortgageCalculator.taxes.value = Decimales(LesTaxes,0);
  var TaxesParMois = floor(LesTaxes / 12);	
  //document.MortgageCalculator.moisTaxes.value = Decimales(TaxesParMois,2);
  document.getElementById('moisTaxeslabel').innerHTML = Decimales(TaxesParMois,2);
  var TaxesParSem = floor(LesTaxes / 26); 
 // document.MortgageCalculator.biTaxes.value = Decimales(TaxesParSem,2);
    document.getElementById('biTaxeslabel').innerHTML = Decimales(TaxesParSem,2);

      var LesAssu = EnleveDol (document.MortgageCalculator.assu.value); // les assurances
        if (LesAssu == "ERROR")  {                // Retourner chaine entree si non convertible:
		alert('The Annual Insurance ('+document.MortgageCalculator.assu.value+') is causing an error!  Please re-enter values ...');
		return;
		}
  document.MortgageCalculator.assu.value = Decimales(LesAssu,0);
 // document.MortgageCalculator.moisAssu.value = Decimales(floor(LesAssu / 12),2); 
  document.getElementById('moisAssulabel').innerHTML = Decimales(floor(LesAssu / 12),2);
 //document.MortgageCalculator.biAssu.value = Decimales(floor(LesAssu / 26),2);
    document.getElementById('biAssulabel').innerHTML = Decimales(floor(LesAssu / 26),2);

  var leTout = emprunte * InterDiv / ( 1 - (1/radic)) + LesTaxes / 12 + LesAssu / 12;
 // document.MortgageCalculator.Pmensuel.value = Decimales(floor(leTout),2); // Paiment mensuel
   document.getElementById('Pmensuellabel').innerHTML = Decimales(floor(leTout),2);
 var leToutBi = (LesTaxes / 26) + (LesAssu / 26) + (emprunte * InterDiv / ( 1 - (1/radic))/2);
 // document.MortgageCalculator.Pbisem.value = Decimales(floor(leToutBi),2);// Paiement 2 semaines
     document.getElementById('Pbisemlabel').innerHTML = Decimales(floor(leToutBi),2);

  //document.MortgageCalculator.TYPmois.value = Decimales(floor(leTout*12),0); // Paiement annuel mois
  document.getElementById('TYPmoislabel').innerHTML = Decimales(floor(leTout*12),0);
 // document.MortgageCalculator.TYPsem.value = Decimales(floor(leToutBi*26),0); // Paiement annuel 2 sem
     document.getElementById('TYPsemlabel').innerHTML = Decimales(floor(leToutBi*26),0);
  
    var pmt1 = PrinEtInt;
    var pmt2 = PrinEtInt / 2;
    var prin1 = emprunte;
    var prin2 = emprunte;
    var intPort1 = 0;
    var intPort2 = 0;
    var prinPort1 = 0;
    var prinPort2 = 0;
    var accumInt1 = 0;
    var accumPrin1 = 0;
    var accumInt2 = 0;
    var accumPrin2 = 0;
    var i = InterDiv2;
	
    if (i > 1.0) 
	{
        i = i / 100.0;
    }
    var i1  = i  / 12;
    var i2 = i / 26;
    var count1 = 0;
    var count2 = 0;
	
    while(prin1 > 0) 
	{
        intPort1 = prin1 * i1;
        prinPort1 = pmt1 - intPort1;
        prin1 = prin1 - prinPort1;
        accumPrin1 = accumPrin1 + prinPort1;
        accumInt1 = accumInt1 + intPort1;
        count1 = count1 + 1;

     if(count1 > 600) 
	 {
        break;
        } else {
        continue;
        }

       }

if(count1 > 600) {
 alert("Using your entered terms you will never pay off this amount.  Please either lower the principal amount, lower the interest rate, or increase the payment amount.;")
        document.MortgageCalculator.origInt.value = "";
        document.MortgageCalculator.biwkInt.value = "";
        document.MortgageCalculator.intSave.value = "";
        document.MortgageCalculator.Expla.value = "";
        } else {

   // document.MortgageCalculator.origInt.value = Decimales(accumInt1,0);
   document.getElementById('origIntlabel').innerHTML = Decimales(accumInt1,0);
    while(prin2 > 0) {
        intPort2 = prin2 * i2;
        prinPort2 = pmt2 - intPort2;
        prin2 = prin2 - prinPort2;
        accumPrin2 = accumPrin2 + prinPort2;
        accumInt2 = accumInt2 + intPort2;
        count2 = count2 + 1;

        if(count1 > 600) {break; } else {continue; }
       }
   // document.MortgageCalculator.biwkInt.value = Decimales(accumInt2,0);
   document.getElementById('biwkIntlabel').innerHTML = Decimales(accumInt2,0);
	// document.MortgageCalculator.biwkCost.value = Decimales(emprunteOri + accumInt2,0); // 
   document.getElementById('biwkCostlabel').innerHTML = Decimales(emprunteOri + accumInt2,0);
	//document.MortgageCalculator.MontCost.value = Decimales(emprunteOri + accumInt1,0);
   document.getElementById('MontCostlabel').innerHTML = Decimales(emprunteOri + accumInt1,0);
    // document.MortgageCalculator.intSave.value = Decimales(accumInt1 - accumInt2,0);
   document.getElementById('intSavelabel').innerHTML = Decimales(accumInt1 - accumInt2,0);
	//document.MortgageCalculator.Expla2.value = floor(count2 /26)+ " yrs";
   document.getElementById('Expla2label').innerHTML = floor(count2 /26)+ " yrs";
//	document.MortgageCalculator.Expla3.value = document.MortgageCalculator.AN.value;
   document.getElementById('Expla3label').innerHTML = document.MortgageCalculator.AN.value;
   }	
}
