    function checkNumber(input, min, max, msg) {
        msg = msg + " field has invalid data: " + input.value;
        var str = input.value;
        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;
            }
        }
        var num = 0 + str
        if (num < min || max < num) {
            alert(msg + " not in range [" + min + ".." + max + "]");
            return false;
        }
        input.value = str;
        return true;
    }

function NumFormat( __StringNumber ) {
 InString = _Trim(__StringNumber);
 OutString = "";
 InLength = InString.length;
 for(__x=InLength; __x!=0; __x--) {
  if(OutString.length == 3 | OutString.length == 7 | OutString.length == 11) {
   OutString = "," + OutString;
   OutString = InString.substring(__x-1,__x) + OutString;
  } else {
   OutString = InString.substring(__x-1,__x) + OutString;
  }
 }
 return OutString;
}

function _Trim( str ) {
	astr = String( str );
	t_str = String("");
	LastCharAt = 0;
	for(x=astr.length-1;x>=0;x--) {
		if( astr.charAt(x) != " " ) {
			LastCharAt = x+1;
			break;
		}
	}
	return astr.substring(0,LastCharAt);
}

    function computeForm(form) {
	//
	// Insure all needed fields are input!
	//
        if ((form.yrterm.value == null || form.yrterm.value.length == 0) ||
            (form.interest.value == null || form.interest.value.length == 0) ||
            (form.principal.value == null || form.principal.value.length == 0)) {
            return;
        }
	//
	// Insure all input fields are within valid limits!
	//
        if (!checkNumber(form.yrterm, 1, 480, "# of payments") ||
            !checkNumber(form.interest, 0, 99, "Interest")) {
            form.payment.value = "Invalid";
            return;
        }
	var thenumberofpayments = form.yrterm.value * 12;
	var theinterestrate = form.interest.value;
	var theprincipal = _StrTran(form.principal.value,",","");


	//
	// Check / Set interest rate to correct value!
	//
        var i = theinterestrate;
		if (i == 0) 
			i = .001;

        if (i > 1.0) {
            i = i / 100.0;
            //form.interest.value = i;
        }
	//
	// Calculate payments!
	//
        i /= 12;
        var pow = 1;
        	for (var j = 0; j < thenumberofpayments; j++)
            	pow = pow * (1 + i);
		var mpaymnt = (theprincipal * pow * i) / (pow - 1);


        form.payment.value = "$"+NumFormat(parseInt(mpaymnt));
		form.yrpayment.value = "$"+NumFormat(parseInt(mpaymnt*12));
		form.tpayment.value = "$"+NumFormat(parseInt((mpaymnt*12)*(form.yrterm.value)));
		form.mprinciple.value = "$"+NumFormat(parseInt(((mpaymnt*12)*(form.yrterm.value))-(_StrTran(form.principal.value,",",""))));

	}	


    function computeForm2(form) {

        if ((form.yrterm2.value == null || form.yrterm2.value.length == 0) ||
            (form.interest.value == null || form.interest.value.length == 0)) {
            return;
        }

        if (!checkNumber(form.yrterm2, 1, 480, "# of payments") ||
            !checkNumber(form.interest, 0, 99, "Interest")) {
            form.bipayment.value = "Invalid";
            return;
        }
	var thenumberofpayments = form.yrterm2.value * 12;
	var thenumberofpayments2 = form.yrterm.value * 12;
	var theinterestrate = form.interest.value;
	var theprincipal =  _StrTran(form.principal.value,",","");

        i /= 12;
        var pow = 1;
        	for (var j = 0; j < thenumberofpayments2; j++)
            	pow = pow * (1 + i);
		var mpaymnt = (theprincipal * pow * i) / (pow - 1);


        var i = theinterestrate;
		if (i == 0) 
			i = .001;

        if (i > 1.0) {
            i = i / 100.0;
            //form.interest.value = i;
        }

        i /= 12;
        var pow = 1;
        	for (var j = 0; j < thenumberofpayments; j++)
            	pow = pow * (1 + i);
		var xpayment = (theprincipal * pow * i) / (pow - 1);

        form.bipayment.value = "$"+NumFormat(parseInt(xpayment));
		form.biyrpayment.value = "$"+NumFormat(parseInt(xpayment*12));
		form.bitpayment.value = "$"+NumFormat(parseInt(xpayment*12*form.yrterm2.value));
		form.bprinciple.value = "$"+NumFormat(parseInt((xpayment*12*form.yrterm2.value)-_StrTran(form.principal.value,",","")));
//		form.savings2.value = "$"+NumFormat(parseInt(((form.payment.value*12)*form.yrterm.value)-(_StrTran(form.principal.value,",","")))-parseInt(((form.bipayment.value*12)*form.yrterm2.value)-(_StrTran(form.principal.value,",",""))));

	}

    function clearForm(form) {
        form.yrterm.value = "";
        form.interest.value = "";
        form.principal.value = "";
    }

    function computeField(input) {
        if (input.value != null && input.value.length != 0)
            input.value = "" + NumFormat(parseInt(input.value));

}

function _StrTran( _str2b_chg, _substr2_look4, _substr2_sub ) {
//=====================================================================
// function _StrTran( _str2b_chg, _substr2_look4, _substr2_sub )
//
//
//=====================================================================
 var _Str_2B_Chg = String( _str2b_chg );
 var _Str_2_Look_4 = String( _substr2_look4 );
 var _Str_2_Sub = String( _substr2_sub );
 var _Out_Str = "";

 _len2chg = _Str_2B_Chg.length;
 _len2lk4 = _Str_2_Look_4.length;
 for( _stepr=0; _stepr<_len2chg; _stepr++ ) {
  if(_Str_2B_Chg.substring(_stepr,_stepr+_len2lk4) == _Str_2_Look_4)
   _Out_Str += _Str_2_Sub;
  else
   _Out_Str += _Str_2B_Chg.substring(_stepr,_stepr+_len2lk4)
 }
 return _Out_Str;
}



