function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

//change default year from 10 to 20yr. period.
j_term = 20;

//change default rate to 10%
d_pay = 0.10

//change jrate to change the interest rate.
// jrate = 6.99;


function sval(num)
{
	j_term = num;
	
}
function tval(num)
{
	d_pay = num;
	
}

// variables
	totalProject = 0;
	bankTerm = 0;
	bankRate = 0;
	jterm = 0;
	bankLoan = 0;
	jloan = 0;
	equilty = 0;
	bankPayments = 0;
	jpayments = 0;
	totalPayments = 0;

	sfee = 0;
	cfee = 0;
	ffee = 0;
	lfee = 0;
	ufee = 0;
	tfee = 0;

//YO
function custRound(x,places) {
	return (Math.round(x*Math.pow(10,places)))/Math.pow(10,places)
}


function FillForm(form)
{	// error checking //

   	var jrate10 = form.irate10.value;
   	var jrate20 = form.irate20.value;
	if(j_term==10) var userate = jrate10; else var userate = jrate20;

	totalProject = strip_commas(form.totalproject.value);
	if (!checkNumber(totalProject,"Total Project"))
		return false;

	bankTerm = strip_commas(form.bankloanterm.value);

	if(bankTerm < 10)
	{
		alert("Loan Term must be at least 10 years!")
		return false;
	}


	if (!checkNumber(bankTerm,"Loan Term"))
		return false;

	bankRate = strip_commas(form.bankloanrate.value);
	if (!checkNumber(bankRate,"Bank Rate"))
		return false;

	jterm = j_term;

	bankLoan = (0.5 * totalProject);
	jloan = ((0.5 - d_pay) * totalProject);
	if(jloan > 3894000)
	{
		bankLoan += (jloan-3894000);
		jloan = 3894000;
	}
	equilty = (d_pay * totalProject);
	sfee = (jloan)*(0.005);
	sfee = 0;

	cfee = (jloan)*(0.015);
	ffee = (jloan)*(0.0025);
	lfee = (jloan)*(0.01);
	if(lfee > 2500)
	{
		lfee = 2500;
	}
	if (jterm == 10){
		ufee = custRound(((sfee+cfee+ffee+lfee+jloan)/0.996),-3)*(0.00375);
	}else{
		ufee = custRound(((sfee+cfee+ffee+lfee+jloan)/0.996),-3)*(0.004);
	}
	tfee = sfee+cfee+ffee+lfee+ufee;
	// tfee = custRound(tfee+499,-3);

	i = bankRate / 100;
	if( i > 0){
	     i = i / 12;
	     n = bankTerm * 12;
		 tmp = (1/i) * (1 - Math.pow(1/(1+i), n));
		 tmp = bankLoan / tmp;
		 tmp = Math.round(tmp*100) / 100;
	     bankPayments = tmp;
	}


	// jpayments = Amort(jrate, jterm, jloan, tfee, bankLoan);
	// jpayments = NewAmort2(bankRate, jterm, jloan, tfee, bankLoan);
	jpayments = NewAmort2(userate, jterm, jloan, tfee, bankLoan);



	totalPayments = bankPayments + jpayments;


	form.totalloan.value = put_commas(jloan);
	form.totalbankloan.value = put_commas(bankLoan);
	form.equilty.value = put_commas(equilty);

	// form.guaranteefee.value = put_commas(sfee);

	form.packagefee.value = put_commas(cfee);
	form.fundingfee.value = put_commas(ffee);
	form.legalcost.value = put_commas(lfee);
	form.underwriting.value = put_commas(ufee);
	form.onetimefeestotal.value = put_commas(tfee);
	form.paybank.value = put_commas(bankPayments);
	form.pay.value = put_commas(jpayments);
	form.paytotal.value = put_commas(totalPayments);

}


function Amort(irate, jterm, jloan, tfee, bankLoan) {
	i = irate / 100;
	if( i > 0) {
		i = i / 12;
		n = jterm * 12;
		tmp = (1/i) * (1 - Math.pow(1/(1+i), n));
		tmp = custRound((jloan+(tfee-(0.005*bankLoan))),-3)/tmp;
		tmp = Math.round(tmp*100) / 100;
		jpayments = tmp;
		if(jloan < 3894000) {
			jpayments += 8.62
		} else if(jloan == 3894000) {
			jpayments += 8.61
		}
	}
	return(jpayments);
}
function NewAmort(irate, jterm, jloan, tfee, bankLoan) {
	i = irate / 100;
	if( i > 0) {
		i = i / 12;
		n = jterm * 12;
		tmp = (1/i) * (1 - Math.pow(1/(1+i), n));
		tmp = custRound((jloan+tfee+499),-3)/tmp;
		tmp = Math.round(tmp*100) / 100;
		jpayments = tmp;
	}
	return(jpayments);
}
function NewAmort2(irate, jterm, jloan, tfee, bankLoan) {
	i = irate / 100;
	if( i > 0) {
		i = i / 12;
		n = jterm * 12;
		tmp = (1/i) * (1 - Math.pow(1/(1+i), n));
		tmp = custRound((jloan+tfee+499),-3)/tmp;
		tmp = Math.round(tmp*100) / 100;
		jpayments = tmp;
	}
	return(jpayments);
}


function checkNumber(input,field) {
	// blank field reset to default value.
	if (input == '') {
		alert("You must enter data for the field " + field)
		return false;
	}

	// remove any user added commas
	input = strip_commas(input);

	// place a warning on the status line if the field contains invalid data
	msg ="This field requires numeric data: " + input;
	var str = new String(input);
	for (var i = 0; i < str.length; i++) {
		var ch = str.substring(i, i + 1)
	   	if ((ch < "0" || "9" < ch) && ch != '.') {

			alert(msg);
			return false;
			status=msg;
		}
	}
	return true;
}

function add_input(input,form1,form2) {
	var total1;
	total1=(form1.price.value*1)
}

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}


// Make a number a nice comma delimited number.
function put_commas(input) {
	var result, len;
	input += "";

	// Locate the decimal point if any.
	len = input.indexOf(".");
	if (len == -1) {
		len = input.length;
		result = ".00";
	} else if(len == 3) {
		result = input.substring(len, len+3) + "0";
	}else {
		result = input.substring(len, len+3);
	}

	// 3 characters at a time through the integer portion.
	while (len > 3) {
		result = input.substring(len-3, len) + result;
		result = "," + result;
		len -= 3;
	}

	// Add any remaining characters.
	result = "$" + input.substring(0, len) + result;
	return result;
}

// Remove all commas from a passed string.
function strip_commas(input) {
        var newnum;
        var ch;
	var newinp = new String(input)
        newnum ="";
        for(var i=0; i<newinp.length; i++) {
                ch = newinp.charAt(i);
                if(ch != ",") {
                        newnum += ch;
                }
        }
        return parseFloat(newnum);
}

function checkNumPeriods(input) {
        input.value = strip_commas(input.value);
        input.value = parseFloat(input.value);
//        input.value = parseInt(input.value);
        if(input.value == null ||
         input.value.length == 0 ||
           input.value == "NaN") {
                input.value = "";
        }
        else {
                if(parseFloat(input.value) <= 0) {
                        input.value = "";
                }
        }
        calcMonthly(input.form);
        input.value = put_commas(input.value);
}

function checkTotal(input) {
        input.value = strip_commas(input.value);
        input.value = parseFloat(input.value);
        if(input.value == null ||
         input.value.length == 0 ||
           input.value == "NaN") {
                input.value = "";
        }
        else {
                if(parseFloat(input.value) < 0) {
                        input.value = "";
                }
        }
        calcMonthly(input.form);
        input.value = put_commas(input.value);
}

// Verify the interest rate is a reasonable number, or set it to one.
function checkInterest(input) {
	input.value = parseFloat(input.value);
	if (input.value == null ||
	    input.value.length == 0 ||
	    input.value == "NaN" ||
	    input.value < 0 ||
	    input.value > 100) {
		input.value = 9;
	}
	calcMonthly(input.form);
}

function calcMonthly(input) {
        if(input.interest.value == "" ||
           input.nper.value == "" ||
           input.loan.value == "") {
                input.monthly.value = "";
        }
        else {
				i = strip_commas(input.interest.value) / 100;
                if( i > 0){
        	        i = i / 12;
                	n = strip_commas(input.nper.value) * 12;
	                tmp = (1/i) * (1 - Math.pow(1/(1+i), n));
	                tmp = strip_commas(input.loan.value) / tmp;
	                tmp = Math.round(tmp*100) / 100;
	                input.monthly.value = put_commas(tmp);
	                if(input.monthly.value == null ||
	                 input.monthly.value.length == 0 ||
	                   input.monthly.value == "NaN") {
        	                input.total.value = "";
                	}
		} else {
			nummonths  = strip_commas(input.nper.value) * 12;
			loanamount = strip_commas(input.loan.value);

			monthlypayment = Math.round((loanamount / nummonths)*100) / 100;
			alert(loanamount);
			alert(nummonths);
			alert(monthlypayment);
			input.monthly.value = put_commas(monthlypayment);
		}

        }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  var vw = window.open(theURL,winName,features);
  var pinfo = String();

//Put the html in here, below you will find where I began, each pinfo has to be done on one line.
  pinfo = "<head>\n <title>Printable Rates</title>\n</head>\n <body bgcolor=#FFFFFF leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>\n<!-- <img src=images/rates_head.gif width=720 height=94 usemap=#Map border=0><map name=Map><area shape=rect coords=498,0,720,99 href=index.html></map> -->\n<BR>\n";

//This actually puts the information into the printable page or new window
  pinfo += "<table border=0 cellpadding=0 cellspacing=0>";
  pinfo += "<TR><TD><b>Total Project: </b></TD><TD>" + formatCurrency(totalProject) + "</TD></TR>\n";
  pinfo += "<TR><TD colspan=2><BR></TD></TR>\n";
  pinfo += "<TR><TD>Bank Loan Term: </TD><TD>" + bankTerm + " years</TD></TR>\n";
  pinfo += "<TR><TD>Bank Loan Rate: </TD><TD>" + bankRate + "%</TD></TR>\n";
  pinfo += "<TR><TD>Loan Rate: </TD><TD>" + jterm + " years </TD></TR>\n";
  pinfo += "<TR><TD colspan=2><BR></TD></TR>\n";
  
  pinfo += "<TR><TD colspan=2><b>Project Structure</b></TD></TR>\n";
  pinfo += "<TR><TD>Bank Loan: </TD><TD align='right'>" + formatCurrency(bankLoan) + "</TD></TR>\n";
  pinfo += "<TR><TD>Loan: </TD><TD align='right'>" + formatCurrency(jloan) + "</TD></TR>\n";
  pinfo += "<TR><TD>Equity/Down Payment: </TD><TD align='right'>" + formatCurrency(equilty) + "</TD></TR>\n";
  pinfo += "<TR><TD colspan=2><BR></TD></TR>\n";
  
  pinfo += "<TR><TD colspan=2><b>Payments</b>\n</TD></TR>";
  pinfo += "<TR><TD>Bank Payments </TD><TD align='right'>" + formatCurrency(bankPayments) + "</TD><TD>/month</TD></TR>\n";
  pinfo += "<TR><TD>Payments </TD><TD align='right'>" + formatCurrency(jpayments) + "</TD><TD>/month</TD></TR>\n";
  pinfo += "<TR><TD>Total Payments </TD><TD align='right'>" + formatCurrency(totalPayments) + "</TD><TD>/month</TD></TR>\n";
  pinfo += "<TR><TD colspan=2><BR></TD></TR>\n";
  
  pinfo += "<TR><TD colspan=2><b>One Time Fees</b></TD></TR>\n";
  // pinfo += "<TR><TD>SBA Guarantee Fee:&nbsp;&nbsp;</TD><TD align='right'>" + formatCurrency(sfee) + "</TD></TR>\n";
  pinfo += "<TR><TD>CDC Package Fee: </TD><TD align='right'>" + formatCurrency(cfee) + "</TD></TR>\n";
  pinfo += "<TR><TD>Funding Fee : </TD><TD align='right'>" + formatCurrency(ffee) + "</TD></TR>\n";
  pinfo += "<TR><TD>Legal Cost: </TD><TD align='right'>" + formatCurrency(lfee) + "</TD></TR>\n";
  pinfo += "<TR><TD>Underwriting Fee: </TD><TD align='right'>" + formatCurrency(ufee) + "</TD></TR>\n";
  pinfo += "<TR><TD colspan=2><BR></TD></TR>\n";
  
  pinfo += "<TR><TD>Total Fee: </TD><TD align='right'>" + formatCurrency(tfee) + "</TD></TR>\n";
  pinfo += "<TR><TD colspan=2><BR></TD></TR>\n";
  pinfo += "</table>";
  pinfo +=  "<!-- &copy; Heartland Business Capital.<BR>12345 W. 95th St. Suite 200<BR>Lenexa, KS 66215<BR>(913) 599-1717 -->\n";
  vw.document.write(pinfo);
  vw.document.close();
}