/************************************************************************************
* General Calculator Functions
************************************************************************************/
// onChange="dosum()"

function floor(number)
{
  return Math.floor(number*Math.pow(10,2))/Math.pow(10,2);
}

/************************************************************************************
* Mortgage Calculator Functions
************************************************************************************/

function doMortgagePmt()
{
  var mi = document.temps.IR.value / 1200;
  var base = 1;
  var mbase = 1 + mi;
  for (i=0; i<document.temps.YR.value * 12; i++)
  {
    base = base * mbase
  }
  // ((Purchase Price - Down Payment) * Interest Rate) / (1- (1/Base Multiplier))
  var daloan = (document.temps.PP.value - document.temps.DP.value);
  document.temps.LA.value = floor(daloan);
  var dasum = (document.temps.LA.value) * mi / ( 1 - (1/base));
  document.temps.MP.value = floor(dasum);
}

/************************************************************************************
* Consumer Loan Calculator Functions
************************************************************************************/

function doConsLoanPmt()
{
  var mi = document.temps.IR.value / 1200;
  var base = 1;
  var mbase = 1 + mi;
  for (i=0; i<document.temps.YR.value * 12; i++)
  {
    base = base * mbase
  }
  // (Loan Amount * Interest Rate) / (1- (1/Base Multiplier))
  var dasum = document.temps.LA.value * mi / ( 1 - (1/base));
  document.temps.MP.value = floor(dasum);
}

/************************************************************************************
* Savings Account Calculator Functions
************************************************************************************/

function doSavingsGoalPmt(form)
{
   // Check for value of time
   if (form.time.value == null || form.time.value.length == 0) {
      form.time.value = 10;
   }
   
   // Check for value of current savings
   if (form.savings.value == null || form.savings.value.length == 0) {
       form.savings.value = 0;
   }
   
   // Check for value of interest rate
   if (form.interest.value == null || form.interest.value.length == 0) {
       form.interest.value = 5;
   }
   
   // Variable Declarations
   var pv = parseFloat(form.savings.value);        // Present Value = Amount already saved
   var fv = parseFloat(form.goal.value);           // Future Value = Savings goal amount
   var np = parseFloat(form.time.value) * 12;      // Number of periods = Time, in months
   var ir = parseFloat(form.interest.value) / 1200 // Interest Rate per period - decimal
   var pmt = 0;                                    // Payment declaration
   
   // Clearn the form box
   form.monthly.value = "";

   // Calculate the necessary payment
   q = Math.pow(1 + ir,np);
   pmt = ((ir * (fv + q * pv))/(-1 + q));
   
   // Print the Payment amount
   form.monthly.value = floor(pmt);
}

function doROIforSavings(form)
{
   // Variable Declarations
   var fv = 0;
   var pmt = 0;
   var pv = parseFloat(form.P.value);
   var np = parseInt(form.T.value) * 12;
   var ir = (parseFloat(form.R.value) / 1200);
   
   if (pv == 0 || pv == "") {
      alert("Please enter a deposit amount");
      form.deposit.focus();
	  return;
   } else {
      // Determine the number of years
      var q = Math.pow(1+ir,np);
      fv = -(-pmt + q * pmt + ir * q * pv)/ir;
   }
   
   form.AMT.value = eval(floor(-fv));
}

/************************************************************************************
* Certificate of Deposit Calculator Functions
************************************************************************************/

function doROIforCD(form)
{
   // Variable Declarations
   var fv = 0;
   var pmt = 0;
   var pv = parseFloat(form.deposit.value);
   var np = parseInt(form.np.value) * parseInt(form.term_type.value);
   var ir = (parseFloat(form.interest.value) / 1200);
   
   if (pv == 0 || pv == "") {
      alert("Please enter a deposit amount");
      form.deposit.focus();
	  return;
   } else {
      // Determine the number of years
      var q = Math.pow(1+ir,np);
      fv = -(-pmt + q * pmt + ir * q * pv)/ir;
   }
   
   form.ROI.value = eval(floor(-fv));
   form.interest_paid.value = floor(eval(-fv + ' - ' + pv));
}
