﻿function MortgageCalculation(form) {

var m = 0, balance = 0, p = 0;
var q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, y = 0;

p = createNo(form.LoanBalance.value);
form.LoanBalance.value = p;

q = createNo(form.PropertyTax.value);
form.PropertyTax.value = q;

if (isEmpty(form, false)) {
		if (form.MortPeriod.options[0].selected)
			m = 180;
		else if (form.MortPeriod.options[1].selected)
			m = 240;
		else
			m = 360;
		if (form.DownPayment.options[0].selected) {
			balance = parseFloat(form.LoanBalance.value);
			r = .0104; }
		else if (form.DownPayment.options[1].selected) {
			balance = parseFloat(form.LoanBalance.value) * .97;
			r = .009; }
		else if (form.DownPayment.options[2].selected) {
			balance = parseFloat(form.LoanBalance.value) * .95;
			r = .0078; }
		else if (form.DownPayment.options[3].selected) {
			balance = parseFloat(form.LoanBalance.value) * .9;
			r = .0052; }
		else if (form.DownPayment.options[4].selected) {
			balance = parseFloat(form.LoanBalance.value) * .85;
			r = .0032; }
		else if (form.DownPayment.options[5].selected) {
			balance = parseFloat(form.LoanBalance.value) * .8;
			r = 0.0; }
		else if (form.DownPayment.options[6].selected) {
			balance = parseFloat(form.LoanBalance.value) * .75;
			r = 0.0; }
		else if (form.DownPayment.options[7].selected) {
			balance = parseFloat(form.LoanBalance.value) * .7;
			r = 0.0; }

		form.MortAmt.value = Round(balance);

		s = parseFloat(form.LoanBalance.value) - balance;
		form.DownPaymentAmt.value = Round(s);

		t = CalculatePrinciple(balance, parseFloat(form.IntRate.value)/1200.0, m);
		form.MonthlyPayment.value = Round(t);

		u = parseFloat(form.PropertyTax.value) / 12;
		form.Taxes.value = Round(u);

		v = parseFloat(form.LoanBalance.value) * .00025;
		form.HomeIns.value = Round(v);

		w = balance * r / 12;
		form.MortIns.value = Round(w);

		y = parseFloat(t) + parseFloat(u) + parseFloat(v) + parseFloat(w);
		form.TotalMonthly.value = Round(y);

		p = parseFloat(form.LoanBalance.value);
		form.LoanBalance.value = Round(p);

		q = parseFloat(form.PropertyTax.value);
		form.PropertyTax.value = Round(q);
	}
}


function CalculatePrinciple(balance, rate, m) {
    var amount = balance * (rate * (Math.pow((1 + rate), m))) / (Math.pow((1 + rate), m) - 1);
	return amount;
}


function createNo(input) {
var h = "";
var b = 0;
   for (var i=0; i<input.length; i++) {
       var x = input.substring(i, i+1);
       var flag = true;
       if (!isNaN(parseInt(x))) {
          h = h + x
       }
       if (x==".") {
         b++;
       }
       if (b==1){
          h = h + x
       }
     }
  return(h)
}


function Round(g) {
   h = Math.floor(g)+"." ;
   n = h.length;
   if (g>1000 && g<999999) {  
     h = h.substring(0,n-4)+","+h.substring(n-4,n);
   }
   if (g>=1000000) {  
     h = h.substring(0,n-7)+","+h.substring(n-7,n-4)+","+h.substring(n-4,n);
   }
   var cents=100*(g-Math.floor(g))+0.5;
   h += Math.floor(cents/10);
   h += Math.floor(cents%10);
   return(h)
}



function checkIt(a, b) {
	var c = "";
	var d = true;
	num="0123456789.";
	if (parseFloat(a) == 0) {
		document.forms[0].elements[b].value = c;
		return;	
	}
	if (a != "") {
		for (var i=0; i<a.length; i++) {
			check=a.substring(i,i+1); 
			if ( num.indexOf(check) >= 0 ) {
				if (d) {
					c = check;
					d = false;
				}
				else
					c += check;
			}
		}
		document.forms[0].elements[b].value = c;
	}
 }



function isEmpty(form, a) {
	if (form.LoanBalance.value == "") {
		form.LoanBalance.select();
		form.LoanBalance.focus();
		alert("You must enter a Loan Balance for this calculator to work properly.");
  return false;
	}
	if (form.IntRate.value == "") {
		form.IntRate.select();
		form.IntRate.focus();
		alert("You must enter an Interest Rate for this calculator to work properly.");
		return false;
	}
	else {
		if (form.IntRate.value < 1) {
		form.IntRate.select();
		form.IntRate.focus();
			alert("You must enter a valid Interest Rate in percents for this calculator to work properly.");
			return false;
		}
	}
		if (form.PropertyTax.value == "") {
			form.PropertyTax.select();
			form.PropertyTax.focus();
			alert("You must enter a value for Estimated Yearly Taxes for this calculator to work properly.");
			return false;
	}
	if (a)
		form.submit();
	return true;
}
