function Calculate(frm)
{
	var subtotal;               // total loan amount subtotal
	var cdcsubtotal;            // CDC loan amount subtotal
	var bankpercent = 50;	// percentage of subtotal for bank loan
	var cdcpercent = 40;        // percentage of subtotal for CDC
	var dppercent = 10;         // percentage of total for down payment
	var bankloanamount;		// bank loan amount
	var cdcloanamount;		// CDC loan amount
	var bankloanpayment;        // bank loan payment amount
	var cdcloanpayment;         // CDC loan payment amount
	var downpaymentamount;	// down payment amount
	var totalpayment;           // total monthly payment
	
	// fee percentages
	var cdcfeepct = 1.5;        // CDC fees
	var reservepct = .5;        // Reserve
	var fundingfeepct = .25;    // Funding fee
	var underwritingfeepct;     // Underwriting fees
	
	// fees
	var cdcfee;
	var reserve;
	var fundingfee;
	var closingcosts = 3500;    // Closing costs
	var underwritingfee;
	var totalfees;              // Total fees
	
	switch (parseInt(frm.years.value))
	{
		case 20:
			underwritingfeepct = .5;
			break;
		case 10:
			underwritingfeepct = .375;
			break;
		default:
			underwritingfeepct = .5;		
	}
	
	frm.bankloaninterest.value = FormatPercent(frm.lenderinterest.value);
	frm.cdcloaninterest.value = FormatPercent(frm.cdcinterest.value);
	subtotal = parseInt(frm.land.value) + parseInt(frm.building.value) + parseInt(frm.machinery.value) + parseInt(frm.fees.value) + parseInt(frm.contingency.value) + parseInt(frm.interest2.value) + parseInt(frm.other.value);
	
	frm.total.value = subtotal;
	frm.bankloanterm.value = frm.years.value + " yrs";
	frm.cdcloanterm.value = frm.years.value + " yrs";	

	switch (frm.startup.value)
	{
		case "Yes":
			cdcpercent -= 5;
			dppercent += 5;
			break;
		case "No":
			break;
		default:
			return;
	}
	switch (frm.singlepurpose.value)
	{
		case "Yes":
			cdcpercent -= 5;
			dppercent += 5;
			break;
		case "No":
			break;
		default:
			return;
	}
	frm.bankloanpercent.value = FormatPercent(bankpercent);	
	frm.cdcloanpercent.value = FormatPercent(cdcpercent);
	frm.downpaymentpercent.value = FormatPercent(dppercent);
	frm.totalspercent.value = FormatPercent(100);
	frm.bankloanamount.value = FormatMoney(subtotal / 2);
	
	cdcsubtotal = subtotal * cdcpercent / 100;
	cdcloanamount = cdcsubtotal;
	cdcfee = cdcsubtotal * cdcfeepct / 100;
	reserve = cdcsubtotal * reservepct / 100;
	fundingfee = cdcsubtotal * fundingfeepct / 100;
	totalfees = cdcfee + reserve + fundingfee + closingcosts;
	underwritingfee = (cdcsubtotal + totalfees) * underwritingfeepct / 100;
	cdcsubtotal += totalfees + underwritingfee;
	
	frm.cdcloanamount.value = FormatMoney(cdcloanamount);
	bankloanamount = subtotal * bankpercent / 100;
	downpaymentamount = subtotal * dppercent / 100;
	frm.downpaymentamount.value = FormatMoney(downpaymentamount);
	frm.totalsamount.value = FormatMoney(bankloanamount + cdcloanamount + downpaymentamount);
	bankloanpayment = Amortization(bankloanamount, frm.lenderinterest.value, frm.compoundperiod.value, frm.years.value);
	frm.bankloanpayment.value = FormatMoney(bankloanpayment);
	cdcloanpayment = Amortization(cdcsubtotal, frm.cdcinterest.value, frm.compoundperiod.value, frm.years.value);
	frm.cdcloanpayment.value = FormatMoney(cdcloanpayment);
	totalpayment = bankloanpayment + cdcloanpayment;
	frm.totalspayment.value = FormatMoney(totalpayment);
}

function FormatMoney(amt)
{
	var amount = amt.toFixed(2);
	var delimiter = ","; // replace comma if desired
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;
	return "$" + amount;

}

function FormatPercent(amount)
{
    return amount + "%";
}

function Amortization(principal, interest2, period, years)
{
	var i = interest2 / period / 100;
	return principal * (i / (1 - Math.pow(1 + i, -years * period)));
}
			-->
