
function computeIntRate(myNumPmts, myPrin, myPmtAmt, myGuess) {

var myDecRate = 0;

if(myGuess.length == 0 || myGuess == 0) {
   var myDecGuess = 10;
   } else {
   var myDecGuess = myGuess;
   if(myDecGuess >= 1) {
      myDecGuess = myDecGuess /100;
      }
   }

var myDecRate = myDecGuess / 12;
var myNewPmtAmt = 0;
var pow = 1;
var j = 0;

for (j = 0; j < myNumPmts; j++) {
   pow = pow * (eval(1) + eval(myDecRate));
}

myNewPmtAmt = (myPrin * pow * myDecRate) / (pow - 1);

//2 DEC PLACE AMOUNT
var decPlace2Rate = (eval(myDecGuess) + eval(.01)) / 12;
var decPlace2Amt = 0;
pow = 1;
j=0;
for (j = 0; j < myNumPmts; j++) {
   pow = pow * (eval(1) + eval(decPlace2Rate));
}
var decPlace2PmtAmt = (myPrin * pow * decPlace2Rate) / (pow - 1);
decPlace2Amt = eval(decPlace2PmtAmt) - eval(myNewPmtAmt);

//3 DEC PLACE AMOUNT
var decPlace3Rate = (eval(myDecGuess) + eval(.001)) / 12;
var decPlace3Amt = 0;
pow = 1;
j=0;
for (j = 0; j < myNumPmts; j++) {
   pow = pow * (eval(1) + eval(decPlace3Rate));
}
var decPlace3PmtAmt = (myPrin * pow * decPlace3Rate) / (pow - 1);
decPlace3Amt = eval(decPlace3PmtAmt) - eval(myNewPmtAmt);

//4 DEC PLACE AMOUNT
var decPlace4Rate = (eval(myDecGuess) + eval(.0001)) / 12;
var decPlace4Amt = 0;
pow = 1;
j=0;
for (j = 0; j < myNumPmts; j++) {
   pow = pow * (eval(1) + eval(decPlace4Rate));
}
var decPlace4PmtAmt = (myPrin * pow * decPlace4Rate) / (pow - 1);
decPlace4Amt = eval(decPlace4PmtAmt) - eval(myNewPmtAmt);

//5 DEC PLACE AMOUNT
var decPlace5Rate = (eval(myDecGuess) + eval(.00001)) / 12;
var decPlace5Amt = 0;
pow = 1;
j=0;
for (j = 0; j < myNumPmts; j++) {
   pow = pow * (eval(1) + eval(decPlace5Rate));
}
var decPlace5PmtAmt = (myPrin * pow * decPlace5Rate) / (pow - 1);
decPlace5Amt = eval(decPlace5PmtAmt) - eval(myNewPmtAmt);

var myPmtDiff = 0;

if(myNewPmtAmt < myPmtAmt) {

   while(myNewPmtAmt < myPmtAmt) {

      myPmtDiff = eval(myPmtAmt) - eval(myNewPmtAmt);
      if(myPmtDiff > decPlace2Amt) {
         myDecRate = eval(myDecRate) + eval(.01 / 12);
      } else
      if(myPmtDiff > decPlace3Amt) {
         myDecRate = eval(myDecRate) + eval(.001 / 12);
      } else
      if(myPmtDiff > decPlace4Amt) {
         myDecRate = eval(myDecRate) + eval(.0001 / 12);
      } else
      if(myPmtDiff > decPlace5Amt) {
         myDecRate = eval(myDecRate) + eval(.00001 / 12);
      } else {
         myDecRate = eval(myDecRate) + eval(.000001 / 12);
      }

      pow = 1
      j = 0;
      
      for (j = 0; j < myNumPmts; j++) {
         pow = pow * (eval(1) + eval(myDecRate));
      }
      myNewPmtAmt = (myPrin * pow * myDecRate) / (pow - 1);
   }

} else {


   while(myNewPmtAmt > myPmtAmt) {

      myPmtDiff = eval(myNewPmtAmt) - eval(myPmtAmt);
      if(myPmtDiff > decPlace2Amt) {
         myDecRate = eval(myDecRate) - eval(.01 / 12);
      } else
      if(myPmtDiff > decPlace3Amt) {
         myDecRate = eval(myDecRate) - eval(.001 / 12);
      } else
      if(myPmtDiff > decPlace4Amt) {
         myDecRate = eval(myDecRate) - eval(.0001 / 12);
      } else
      if(myPmtDiff > decPlace5Amt) {
         myDecRate = eval(myDecRate) - eval(.00001 / 12);
      } else {
         myDecRate = eval(myDecRate) - eval(.000001 / 12);
      }

      pow = 1
      j = 0;
      
      for (j = 0; j < myNumPmts; j++) {
         pow = pow * (eval(1) + eval(myDecRate));
      }
      myNewPmtAmt = (myPrin * pow * myDecRate) / (pow - 1);
   }


}

myDecRate = myDecRate * 12 * 100;

return myDecRate;

}

function getPrin(bbal, pmt, rate, term, pmts) {

   var pmts_made = Number(term) - Number(pmts);
   if(pmts_made > 1000) {
      pmts_made = 1000;
   }

   var prin = bbal;
   var i_port = 0;
   var p_port = 0;

   var r = rate;
   if(r == 0) {
      prin = pmt * pmts;

   } else {

      r /= 100.0;
      r /= 12;

      for(var t = 0; t < pmts_made; t++) {
         i_port = prin * r;
         p_port = Number(pmt) - Number(i_port);
         prin = Number(prin) - Number(p_port);
      }


   }

   return prin;

}


function calc_mtg(ln) {

   var v_mtg_bal = 0;
   var mtg_bal_fld = "";
   var mtg_bal_fld_amt = 0;

   var v_mtg_pmt = 0;
   var mtg_pmt_fld = "";
   var mtg_pmt_fld_amt = 0;

   var v_mtg_rate = 0;
   var mtg_rate_fld = "";
   var mtg_rate_fld_amt = 0;


   for(var j = 1; j<4; j++) {

      mtg_bal_fld = document.getElementById("mtg_bal_" + j);
      mtg_bal_fld_amt = window.opener.sn(mtg_bal_fld.value);
      window.opener.mtg_bal_arr[j] = mtg_bal_fld_amt;
  

      mtg_pmt_fld = document.getElementById("mtg_pmt_" + j);
      mtg_pmt_fld_amt = window.opener.sn(mtg_pmt_fld.value);
      window.opener.mtg_pmt_arr[j] = mtg_pmt_fld_amt;


      mtg_rate_fld = document.getElementById("mtg_rate_" + j);
      mtg_rate_fld_amt = window.opener.sn(mtg_rate_fld.value);
      window.opener.mtg_rate_arr[j] = mtg_rate_fld_amt;

      v_mtg_bal = Number(v_mtg_bal) + Number(mtg_bal_fld_amt);

      v_mtg_pmt = Number(v_mtg_pmt) + Number(mtg_pmt_fld_amt);

   }

   window.opener.document.debtForm.mtg_bal.value = "$" + window.opener.fn(v_mtg_bal,0,1);
   window.opener.document.debtForm.mtg_pmt.value = "$" + window.opener.fn(v_mtg_pmt,0,1);

   var rate_cnt = 0;
   var tot_rate = 0;
   var bal_fact = 0;
   var rate_fact = 0;

   for(j=1;j<4;j++) {
      if(v_mtg_bal > 0 && window.opener.mtg_bal_arr[j] > 0) {
         rate_cnt += 1;
         bal_fact = window.opener.mtg_bal_arr[j] / v_mtg_bal;
         rate_fact = window.opener.mtg_rate_arr[j] * bal_fact;
         tot_rate = Number(tot_rate) + Number(rate_fact);
      }
   }

   window.opener.document.debtForm.mtg_rate.value = window.opener.fn(tot_rate,2,0) + "%";

   window.opener.total_debts();

}



function calc_cc(ln) {

   var v_cc_bal = 0;
   var cc_bal_fld = "";
   var cc_bal_fld_amt = 0;

   var v_cc_rate = 0;
   var cc_rate_fld = "";
   var cc_rate_fld_amt = 0;

   var v_cc_pmt = 0;
   var cc_rate_pmt = "";
   var cc_rate_fld_pmt = 0;

   var cc_min_pmt = document.getElementById("min_cc_pmts");

   for(var j = 1; j<11; j++) {
      cc_bal_fld = document.getElementById("cc_bal_" + j);
      cc_bal_fld_amt = window.opener.sn(cc_bal_fld.value);
      window.opener.cc_bal_arr[j] = cc_bal_fld_amt;
      v_cc_bal = Number(v_cc_bal) + Number(cc_bal_fld_amt);

      cc_rate_fld = document.getElementById("cc_rate_" + j);
      cc_rate_fld_amt = window.opener.sn(cc_rate_fld.value);
      window.opener.cc_rate_arr[j] = cc_rate_fld_amt;
      v_cc_rate = Number(v_cc_rate) + Number(cc_rate_fld_amt);

      cc_pmt_fld = document.getElementById("cc_pmt_" + j);
      cc_pmt_fld_amt = window.opener.sn(cc_pmt_fld.value);
      if((cc_bal_fld_amt > 0 && cc_pmt_fld_amt == 0) || cc_min_pmt.checked == true) {
         cc_pmt_fld_amt = Math.round(cc_bal_fld_amt * .04);
         cc_pmt_fld.value = cc_pmt_fld_amt;
      }
      window.opener.cc_pmt_arr[j] = cc_pmt_fld_amt;
      v_cc_pmt = Number(v_cc_pmt) + Number(cc_pmt_fld_amt);
   }

   window.opener.document.debtForm.cc_bal.value = "$" + window.opener.fn(v_cc_bal,0,1);
   window.opener.document.debtForm.cc_pmt.value = "$" + window.opener.fn(v_cc_pmt,0,1);

   var rate_cnt = 0;
   var tot_rate = 0;
   var bal_fact = 0;
   var rate_fact = 0;

   for(j=1;j<11;j++) {
      if(v_cc_bal > 0 && window.opener.cc_bal_arr[j] > 0) {
         rate_cnt += 1;
         bal_fact = window.opener.cc_bal_arr[j] / v_cc_bal;
         rate_fact = window.opener.cc_rate_arr[j] * bal_fact;
         tot_rate = Number(tot_rate) + Number(rate_fact);
      }
   }

   window.opener.document.debtForm.cc_rate.value = window.opener.fn(tot_rate,2,0) + "%";

   window.opener.total_debts();


}


function calc_auto(ln) {

   var v_auto_bal = 0;
   var auto_bal_fld = "";
   var auto_bal_fld_amt = 0;

   var v_auto_pmt = 0;
   var auto_pmt_fld = "";
   var auto_pmt_fld_amt = 0;

   var v_auto_rate = 0;
   var auto_rate_fld = "";
   var auto_rate_fld_amt = 0;


   for(var j = 1; j<4; j++) {

      auto_bal_fld = document.getElementById("auto_bal_" + j);
      auto_bal_fld_amt = window.opener.sn(auto_bal_fld.value);
      window.opener.auto_bal_arr[j] = auto_bal_fld_amt;
  

      auto_pmt_fld = document.getElementById("auto_pmt_" + j);
      auto_pmt_fld_amt = window.opener.sn(auto_pmt_fld.value);
      window.opener.auto_pmt_arr[j] = auto_pmt_fld_amt;


      auto_rate_fld = document.getElementById("auto_rate_" + j);
      auto_rate_fld_amt = window.opener.sn(auto_rate_fld.value);
      window.opener.auto_rate_arr[j] = auto_rate_fld_amt;

      v_auto_bal = Number(v_auto_bal) + Number(auto_bal_fld_amt);

      v_auto_pmt = Number(v_auto_pmt) + Number(auto_pmt_fld_amt);

   }

   window.opener.document.debtForm.auto_bal.value = "$" + window.opener.fn(v_auto_bal,0,1);
   window.opener.document.debtForm.auto_pmt.value = "$" + window.opener.fn(v_auto_pmt,0,1);

   var rate_cnt = 0;
   var tot_rate = 0;
   var bal_fact = 0;
   var rate_fact = 0;

   for(j=1;j<4;j++) {
      if(v_auto_bal > 0 && window.opener.auto_bal_arr[j] > 0) {
         rate_cnt += 1;
         bal_fact = window.opener.auto_bal_arr[j] / v_auto_bal;
         rate_fact = window.opener.auto_rate_arr[j] * bal_fact;
         tot_rate = Number(tot_rate) + Number(rate_fact);
      }
   }

   window.opener.document.debtForm.auto_rate.value = window.opener.fn(tot_rate,2,0) + "%";

   window.opener.total_debts();

}


function calc_other(ln) {

   var v_other_bal = 0;
   var other_bal_fld = "";
   var other_bal_fld_amt = 0;

   var v_other_pmt = 0;
   var other_pmt_fld = "";
   var other_pmt_fld_amt = 0;

   var v_other_rate = 0;
   var other_rate_fld = "";
   var other_rate_fld_amt = 0;


   for(var j = 1; j<4; j++) {

      other_bal_fld = document.getElementById("other_bal_" + j);
      other_bal_fld_amt = window.opener.sn(other_bal_fld.value);
      window.opener.other_bal_arr[j] = other_bal_fld_amt;
  

      other_pmt_fld = document.getElementById("other_pmt_" + j);
      other_pmt_fld_amt = window.opener.sn(other_pmt_fld.value);
      window.opener.other_pmt_arr[j] = other_pmt_fld_amt;


      other_rate_fld = document.getElementById("other_rate_" + j);
      other_rate_fld_amt = window.opener.sn(other_rate_fld.value);
      window.opener.other_rate_arr[j] = other_rate_fld_amt;

      v_other_bal = Number(v_other_bal) + Number(other_bal_fld_amt);

      v_other_pmt = Number(v_other_pmt) + Number(other_pmt_fld_amt);

   }

   window.opener.document.debtForm.other_bal.value = "$" + window.opener.fn(v_other_bal,0,1);
   window.opener.document.debtForm.other_pmt.value = "$" + window.opener.fn(v_other_pmt,0,1);

   var rate_cnt = 0;
   var tot_rate = 0;
   var bal_fact = 0;
   var rate_fact = 0;

   for(j=1;j<4;j++) {
      if(v_other_bal > 0 && window.opener.other_bal_arr[j] > 0) {
         rate_cnt += 1;
         bal_fact = window.opener.other_bal_arr[j] / v_other_bal;
         rate_fact = window.opener.other_rate_arr[j] * bal_fact;
         tot_rate = Number(tot_rate) + Number(rate_fact);
      }
   }

   window.opener.document.debtForm.other_rate.value = window.opener.fn(tot_rate,2,0) + "%";

   window.opener.total_debts();

}


function clear_loan(loan, ln) {

      bal_fld = document.getElementById(loan + "_bal_" + ln);
      bal_fld.value = 0;

      pmt_fld = document.getElementById(loan + "_pmt_" + ln);
      pmt_fld.value = 0;

      rate_fld = document.getElementById(loan + "_rate_" + ln);
      rate_fld.value = "0.00";

      eval("calc_" + loan + "(" + ln + ");");


}