		var newPrincipal 		= 0;	/* new pricipal value after loan payment */
		var interestPayment 	= 0;/* interest payment */
		var principalPayment 	= 0;
		var totalInterest 		= 0; 	/* cumulative interest paid */
		var totalPayments 		= 0;  /* (# of payments/yr) * (# of years) */
		var Payment 			= 0;	
		var yearlyPayments 		= 12;
		var biweeklyPayments 	= 26;
		var additionalMonthly 	= 0;

	/* ---------------------------------------------------------------*/	
	function commify_number(mynumber) {
		var i=0,counter=0;
		var newnumber = "";
		var numlen= mynumber.toString(); /* we have to do this to treat our number as a string */
		
		if (parseInt(mynumber) > 999) { 
			for (i=numlen.length; i != 0; i--){
				if ( (counter%3 == 0) && counter != 0 ) {
					newnumber = ',' + newnumber;
					}
				newnumber = numlen.charAt(i-1) + newnumber;
				counter++;
				}
		} else {
			return mynumber; 
			}
		return newnumber;
		}
	
	
	/* --------------------------------------------------------------- */	
	function estimate_pti() {
		document.myform.tax.value 			= Math.round(eval(document.myform.appraised.value) * .012);
		document.myform.insurance.value 	= Math.round(eval(document.myform.appraised.value) * .005);
		check_mi();
		}
	
			
	/* ---------------------------------------------------------------*/	
	function check_mi() {
		if ( (eval(document.myform.appraised.value) - eval(document.myform.price.value)) <
			 (eval(document.myform.appraised.value) *.2) ) { 
			document.myform.mi.value 	= Math.round(eval(document.myform.price.value) * .004);
			document.getElementById("results").innerHTML = '<font color="990000"><b>NOTE:</b></font><br>If the down payment amount is less than 20% of the value of the home, in most cases this will require additional mortgage insurance from your lender. We calculated an average mortgage insurance rate by using 0.4% of the loan amount.</font>';	
			} else {
				document.getElementById("results").innerHTML = '';
				document.myform.mi.value = 0;
				}
		
		}
					
	/* ---------------------------------------------------------------*/	
	function calculator_init() {
		document.getElementById("results").innerHTML="";
		newPrincipal 		= 0;	/* new pricipal value after loan payment */
		interestPayment 	= 0;/* interest payment */
		principalPayment 	= 0;
		totalInterest 		= 0; 	/* cumulative interest paid */
		totalPayments 		= 0;  /* (# of payments/yr) * (# of years) */
		Payment 			= 0;	
		additionalMonthly 	= 0;
	}
	
	
	/* ---------------------------------------------------------------*/	
	/* this function determines which loan we are calculating for */
	function calculate_loan() {
		
		calculator_init();
		
		loan				= new Object;
		  loan.rate 			= document.myform.interest.value;
		  loan.price	 		= document.myform.price.value;
		  loan.appraised 		= document.myform.appraised.value;
		  loan.down				= loan.appraised - loan.price;
		  loan.down_req 		= loan.appraised * .2;
		  loan.loan_type 		= document.myform.type.value;
		  loan.property_tax 	= document.myform.tax.value;
		  loan.h_ins			= document.myform.insurance.value;
		  loan.m_ins			= document.myform.mi.value;
	  	
		

		
			
		if (loan.loan_type.indexOf('/') > 0) {
			var index 				= loan.loan_type.split('/');
			loan.loan_type			= index[0];
			loan.loan_typeterm 	= index[1];
			loan.cap 				= eval(loan.rate) + 6;
			
			calculate_arm(loan);
			
		} else if (loan.loan_type.indexOf('-') > 0) {
			var index 				= loan.loan_type.split('-');
			loan.loan_type			= index[0];
			loan.loan_typevariant 	= index[1];
			calculate_arm(loan);		
			calculate_balloon(loan);
		
		} else {
			commify_number(loan.price);
			calculate_fixed(loan);
			}
			
		}

	
		
	/* ---------------------------------------------------------------*/		
	function calculate_arm(loan) {
		var multiplier,factor,i,resultdata,additionalMonthly=0,ratechange=0,initPayment,maxPayment;
		var fields = new Array();
		var values = new Array();
		
		totalPayments = eval(yearlyPayments) * eval(loan.loan_typeterm);
		
		/* month marker where loan varies */
		ratechange = eval(yearlyPayments) * eval(loan.loan_type);
		
		/* calculate the monthly payment */
		factor		= eval(loan.rate)/100/eval(yearlyPayments);
		multiplier 	= Math.pow( (1+factor), totalPayments);
		Payment		= ( eval(loan.price)*multiplier*factor )/(multiplier-1);
		initPayment	= Payment;
		maxPayment	= Payment;
		
		/* calculate additional charges */
		additionalMonthly = additional_monthly(loan,yearlyPayments);
		 	
		/* calculate the total interest paid */
		newPrincipal = eval(loan.price);
		for (i=1;i<totalPayments;i++) {
			if ( (i >= ratechange) && (i%12 == 0) ) {
				if (loan.rate <= loan.cap) {
					if ((eval(loan.rate) + 1) > loan.cap) {
						loan.rate = loan.cap;
					} else {
						loan.rate = eval(loan.rate) + 1;
						}
					}
				/* recalculate payments */	
				factor		= eval(loan.rate)/100/eval(yearlyPayments);
				multiplier 	= Math.pow( (1+factor), eval(totalPayments) - (i - 1) );
				Payment		= ( eval(newPrincipal)*multiplier*factor )/(multiplier-1);				
				if (Payment > maxPayment) { maxPayment = Payment; }
				/* alert('rate change at year: ' + i/12 
					+ '\nnew rate: ' + loan.rate 
					+ '\ncap: ' + loan.cap
					+ '\nnew payment: ' + Payment); 
				*/
				}
			
			interestPayment 	= (eval(newPrincipal)*eval(loan.rate)) / eval(yearlyPayments) / 100;
			totalInterest 		+= interestPayment;
			principalPayment 	= eval(Payment) - eval(interestPayment);
			newPrincipal 		= eval(newPrincipal) - eval(principalPayment);
			
			// comment to see tables  - for generating table information 
			resultdata += '<tr><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(interestPayment) + '</td><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(principalPayment) + '</td><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(newPrincipal) + '</td><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(totalInterest) + '</td></tr>'; 
			
			}			
		
		fields[0] = 'ARM payment (Initial / Max)&nbsp;&nbsp;$';
		values[0] = commify_number( Math.round(eval(initPayment)) ) + ' / ' + commify_number( Math.round( eval(maxPayment)) );
		
		fields[1] = 'Tax & Insurance&nbsp;&nbsp;$';
		values[1] = commify_number(Math.round( eval(additionalMonthly)) );	

		fields[2] = '<hr size=1 width=8 noshade>';
		values[2] = '<hr size=1 noshade>';	
		
		fields[3] = '<b>Total monthly payment&nbsp;&nbsp;$</b>';
		values[3] = '<b>' + commify_number( Math.round(eval(initPayment) + eval(additionalMonthly)) ) + 
					' / ' + 
					commify_number( Math.round(eval(maxPayment) + eval(additionalMonthly)) ) + '</b>';		
				
		fields[4] = '';
		values[4] = '&nbsp;';			
		fields[5] = 'Interest paid over life of loan&nbsp;&nbsp;$';
		values[5] = commify_number( Math.round( totalInterest ) );
		fields[6] = 'Total paid for home&nbsp;&nbsp;$';
		values[6] = commify_number( eval(Math.round(totalInterest) + eval(loan.price)) );					
		draw_results(fields,values);	
		// removed comments	
		//document.getElementById("results").innerHTML+= '<br><br><br><br><br><br><br><table cellpadding=2 border=1><tr><td><font face="arial,helvetica,verdana" size=2>Interest Payed</td><td><font face="arial,helvetica,verdana" size=2>Principal payment</td><td><font face="arial,helvetica,verdana" size=2>New pricipal</td><td><font face="arial,helvetica,verdana" size=2>Total interest</td></tr>' + resultdata + '</table>';
		
		
		}
		
		
		
	/* ---------------------------------------------------------------*/		
	function calculate_balloon(loan) {
		alert('balloon');
		}

		
		
	/* ---------------------------------------------------------------*/		
	function calculate_biweekly_fixed(loan) {
	
		}
		
		
		
	/* ---------------------------------------------------------------*/	
	function calculate_fixed(loan) {
		var multiplier,factor,i,resultdata,additionalMonthly=0;
		var fields = new Array();
		var values = new Array();
		
		totalPayments = eval(yearlyPayments) * eval(loan.loan_type);
		
		/* calculate the monthly payment */
		factor		= eval(loan.rate)/100/eval(yearlyPayments);
		multiplier 	= Math.pow( (1+factor), totalPayments);
		Payment		= ( eval(loan.price)*multiplier*factor )/(multiplier-1);

		/* calculate additional charges */
		additionalMonthly = additional_monthly(loan,yearlyPayments);
		 	
		/* calculate the total interest paid */
		newPrincipal = eval(loan.price);
		for (i=1;i<totalPayments;i++) {
			interestPayment 	= (eval(newPrincipal)*eval(loan.rate)) / eval(yearlyPayments) / 100;
			totalInterest 		+= interestPayment;
			principalPayment 	= eval(Payment) - eval(interestPayment);
			newPrincipal 		= eval(newPrincipal) - eval(principalPayment);
			
			// uncomment to see tables 
			resultdata += '<tr><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(interestPayment) + '</td><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(principalPayment) + '</td><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(newPrincipal) + '</td><td><font face="arial,helvetica,verdana" size=2>' +  Math.round(totalInterest) + '</td></tr>';
			
			}	
		
		fields[0] = 'Mortgage payment&nbsp;&nbsp;$';
		values[0] = '' + commify_number(Math.round( Payment ));
		
		fields[1] = 'Taxes & Insurance&nbsp;&nbsp;$';
		values[1] = '' + commify_number(Math.round( additionalMonthly ));
				
		fields[2] = '<hr size=1 width=8 noshade>';
		values[2] = '<hr size=1 noshade>';				
					
		fields[3] = '<b>Total monthly payment&nbsp;&nbsp;$</b>';
		values[3] = '<b>' + commify_number( Math.round(eval(Payment) + eval(additionalMonthly)) ) + '</b>';
		
		fields[4] = '';
		values[4] = '<img src="/classified/art/ui/dot_clear.gif" height=20 border=0>';
					
		fields[5] = 'Interest paid over life of loan&nbsp;&nbsp; $';
		values[5] = '' + commify_number(Math.round( totalInterest ));			
		fields[6] = 'Total paid for home&nbsp;&nbsp;$';
		values[6] = '' + commify_number(eval(Math.round(totalInterest) + eval(loan.price)));				

		draw_results(fields,values);
		
		// TABLES 
		// document.getElementById("results").innerHTML+= '<br><br><br><br><table cellpadding=2 border=1><tr><td><font face="arial,helvetica,verdana" size=2>Interest Payed</td><td><font face="arial,helvetica,verdana" size=2>Principal payment</td><td><font face="arial,helvetica,verdana" size=2>New pricipal</td><td><font face="arial,helvetica,verdana" size=2>Total interest</td></tr>' + resultdata + '</table>';
		
		}		
										

	/* ---------------------------------------------------------------*/		
	function draw_results(fields,values) {		
		var i,results;

		results = '<table cellpadding=0 cellspacing=0 border=0 align="right">';
		for (i=0;i < fields.length; i++) {
			results += '<tr><td align="right" valign="bottom"><font face="arial,helvetica,verdana" size=2>'
					 + fields[i] 
					 + '</font></td>'
					 + '<td align="right" valign="bottom" ><font face="arial,helvetica,verdana" size=2>'				
					 + values[i] 
					 + '</font></td></tr>';
			}
		results += '</table>';
		document.getElementById("results").innerHTML += results;
		}									



	/* ---------------------------------------------------------------*/		
	function additional_monthly(loan,term) {
		/* add property tax charges to additional payment */
		if (eval(loan.property_tax) != 0) {
			 additionalMonthly 	= eval(additionalMonthly) + (eval(loan.property_tax) / eval(term));
			 }
			 
		/* add property tax charges to additional payment */
		if (eval(loan.h_ins) != 0) {
			 additionalMonthly 	= eval(additionalMonthly) + (eval(loan.h_ins) / eval(term));
			 }			 
	
		/* add mortgage insurance to additional payment */
		if (eval(loan.m_ins) != 0) {
			 additionalMonthly 	= eval(additionalMonthly) + (eval(loan.m_ins) / eval(term));
			 }	

		return additionalMonthly;
		}	