function fmtMoney(n, c, d, t) {
	var m = (c = Math.abs(c) + 1 ? c : 2, d = d || ",", t = t || ".", /(\d+)(?:(\.\d+)|)/.exec(n + "")),
	          x = (m[1].length > 2 ? m[1].length % 3 : 0);
	return (x ? m[1].substr(0, x) + t : "") + m[1].substr(x).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + (+m[2]).toFixed(c).substr(2) : "");
}
function GetIntrest(form) {

	if (isNaN(form.nominal.value) || form.nominal.value == 0) {
		alert("Please fill in an interest rate");
		form.nominal.focus();
		return -1;
	}
	if (form.nominal.value <= 0) {
		alert("You should use an interest rate bigger than zero!");
		return -1
	}
	return (parseFloat(form.nominal.value) / 1200);
}

function GetN(form) {
	if (isNaN(form.years.value) || form.years.value < 1) {
		alert("The length of loan needs to be at least one year!");
		return -1
	}
	return (form.years.value * 12);
}

function CalcPMT(form) {
	var n;
	var pmt;
	var pv;
	var i;
	var tmp;
	var roundprecision;

	var amortWin;

	roundprecision = Math.pow(10, 2);     //form.precision.selectedIndex changed to 2
	n = GetN(form);
	if (n == -1)
		return;
	
	if (isNaN(form.pv.value)) {
		alert("You should fill in a numeric loan amount!\nDon't use commas or $!");
		form.pv.focus();
		return;
	}
	if (form.pv.value <= 0) {
		alert("Fill in a positive loan amount!");
		form.pv.focus();
		return;
	}
	
	i = GetIntrest(form);
	if (i == -1)
		return;
		
	pv = form.pv.value;
	pmt = pv * i * Math.pow(1 + i, n) / (Math.pow(1 + i, n) - 1);
	pmt = Math.round(pmt * roundprecision) / roundprecision;
	form.pmt.value = pmt;
	form.total.value = Math.round(pmt * n * roundprecision) / roundprecision;

	if (form.amortWin.checked == false) {
		//alert("This loan would have estimated\nmonthly payments of $"+(form.pmt.value)+".")
		document.getElementById("divEstPmt").innerHTML =
			"Estimated Monthly Payments of: <b>$" + fmtMoney(form.pmt.value, 2, '.', ',') + "</b>";
	}

	if (form.amortWin.checked == true) {
		AmortTable(form)
	}

	return;
}

function AmortTable(form) {
	var n;
	var pmt;
	var showpmt;
	var pv;
	var total;
	var i;
	var ipmt;
	var ppmt;
	var roundprecision;
	var TableWin;
	var period;

	roundprecision = Math.pow(10, 2);     //form.precision.selectedIndex changed to 2
	n = GetN(form);
	if (n == -1)
		return;
	if (isNaN(form.nominal.value) || form.nominal.value == 0 ||
        isNaN(form.pmt.value) || form.pmt.value == 0 ||
        isNaN(form.pv.value) || form.pv.value == 0 ||
        isNaN(form.total.value) || form.total.value == 0) {
		alert("You need to make a calculation first because all fields need to be correctly filled in!");
		return;
	}

	/* Get all the calculation values */
	i = GetIntrest(form);
	if (i == -1)
		return;
	total = form.total.value;
	pv = form.pv.value;
	pmt = pv * i * Math.pow(1 + i, n) / (Math.pow(1 + i, n) - 1);
	showpmt = Math.round(pmt * roundprecision) / roundprecision;

	/* Write the amort table window begin */
	TableWin = window.open("", "MortAmortWin", "resizable,scrollbars,status,toolbar,titlebar,width=450,height=300");
	TableWin.document.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">');
	TableWin.document.writeln('<html><head><title>At Home With Yara - Mortgage Amortization Schedule</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link rel="stylesheet" href="./App_Themes/Default/main.css" type="text/css"></head>');
	TableWin.document.writeln('<body bgcolor="#FFFFFF" text="#000000" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10">');
	TableWin.document.writeln('<table width="568" border="0" cellspacing="0" cellpadding="0">');
	TableWin.document.writeln('<tr bgcolor="#2e682c"><td><table cellspacing="0" cellpadding="0" width="100%" border="0" bgcolor="#2e682c">');
	TableWin.document.writeln('<tr><td align="center"><img height="122" src="./App_Themes/Default/Images/Logo-bgGreen.jpg" width="168"></td>');
	TableWin.document.writeln('<td><table cellspacing="0" cellpadding="0" width="100%"><tr><td class="" colspan="2"></td></tr>');
	TableWin.document.writeln('<tr style="COLOR: white" align="center"><td align="center">111 Lake Avenue, Suite 5, Tuckahoe, NY 10707<br>Phone: (917) 372 - 1404&nbsp;&nbsp;Fax: (914) 372 - 1012</td>');
	TableWin.document.writeln('</tr></table></td></tr></table></td></tr>');
	TableWin.document.writeln('<tr><td><img src="images/spacer.gif" width="1" height="15"></td></tr></table>');
	TableWin.document.writeln('<table bgcolor="#ffffff" width="568" border="1" cellspacing="0" cellpadding="3" bordercolor="#FFFFFF"><tr class="rowlabel"><td colspan="3"><span class="sans18_B_gray">&nbsp;Loan Summary</span></td></tr>');
	TableWin.document.writeln('<tr><td width="279" align="left" valign="top"><span class="sans11"><b>Warning and Disclaimer:</b><br>This data is not guaranteed in any way and is dependent on the information entered on the preceeding page. For a personalized mortgage consultation, please contact us to schedule a meeting with one of our professional mortgage consultants.<br><br><i>At Home With Yara Realty Mortgage Consultants</i></span></td>');
	TableWin.document.writeln('<td width="28"></td><td width="235" align="right" valign="top">');
	TableWin.document.writeln('<table bgcolor="#FFFFFF" border="0" cellspacing="0" cellpadding="3"><tr><td class="sans12"><b>Interest Rate:</b></td><td class="sans12">');
	TableWin.document.writeln(form.nominal.value);
	TableWin.document.writeln('%</td></tr>');
	TableWin.document.writeln('<tr><td class="sans12"><b>Number of Payments:</b></td><td class="sans12">');
	TableWin.document.writeln(n);
	TableWin.document.writeln('</td></tr>');
	TableWin.document.writeln('<tr><td class="sans12"><b>Loan Amount:</b></td><td class="sans12">$');
	TableWin.document.writeln(fmtMoney(pv, 2, '.', ','));
	TableWin.document.writeln('</td></tr>');
	TableWin.document.writeln('<tr><td class="sans12"><b>Monthly Payment:</b></td><td class="sans12">$');
	TableWin.document.writeln(fmtMoney(showpmt, 2, '.', ','));
	TableWin.document.writeln('</td></tr></table></td></tr>');
	TableWin.document.writeln('<tr><td height="20"></td><td height="20"></td><td height="20"></td></tr></table>');
	TableWin.document.writeln('<table bgcolor="#ffffff" width="568" border="1" cellspacing="0" cellpadding="3" bordercolor="#CCCCCC"><tr class="rowlabel"><td colspan="4"><span class="sans18_B_gray">&nbsp;Amortization Table</span></td></tr>');
	TableWin.document.writeln('<tr align="center"><td bgcolor="#999999"><span class="white13B">Period</span></td><td bgcolor="#999999"><span class="white13B">Interest</span></td><td bgcolor="#999999"><span class="white13B">Principal</span></td><td bgcolor="#999999"><span class="white13B">Remaining Capital</span></td></tr>');

	/* Actual calculation loop */
	i = i + 1;
	for (period = 1; period <= n; period++) {
		TableWin.status = "Calculating payment " + period + " of " + n + ", please wait...";
		TableWin.document.writeln('<tr align="center">');
		TableWin.document.writeln('<td class="sans11">' + period + '</td>');
		ppmt = pmt / Math.pow(i, (n + 1 - period));
		pv = pv - ppmt;
		ipmt = pmt - ppmt;

		TableWin.document.writeln('<td class="sans11">' + fmtMoney((Math.round(ipmt * roundprecision) / roundprecision), 2, '.', ',') + '</td>');
		TableWin.document.writeln('<td class="sans11">' + fmtMoney((Math.round(ppmt * roundprecision) / roundprecision), 2, '.', ',') + '</td>');
		TableWin.document.writeln('<td class="sans11">' + fmtMoney((Math.round(pv * roundprecision) / roundprecision), 2, '.', ',') + '</td>');
		TableWin.document.writeln('</tr>');
	}
	TableWin.status = "Done";
	TableWin.document.writeln("</table>");

	TableWin.document.writeln("</body>");
	TableWin.document.writeln("</html>");
	TableWin.document.close();
	return;
}
