
function isInputValid(theField, MsgFieldName, MinNum, MaxNum, FormatType) {
//	alert(theField.form.name);
	var ret = true;
	var CalcFieldNum = Str2Num(theField.value);
	if (CheckValueRange(CalcFieldNum, MinNum, MaxNum, MsgFieldName)==false) {
		CalcFieldNum = 0.00;
		ret = false;
	}
	theField.value=formatNumber(CalcFieldNum, FormatType);
	return ret;
}

function formatNumber(theNumber, theFormat) {
	var sNumber = theNumber + "";
	var sResult = "";
	var sIntPart = "";
	var sDecimalPart = "";

	//divide number into dollar and cent parts
	DecimalLocation = sNumber.indexOf(".")
	if (DecimalLocation != -1) {
		DecimalFound = true;
		sIntPart = sNumber.substring(0,DecimalLocation);
		sDecimalPart = sNumber.substring(DecimalLocation+1,sNumber.length) + "00";
	} else {
		DecimalFound = false;
		sIntPart = sNumber.substring(0,sNumber.length);
		sDecimalPart = "";
	}

	//add commas to dollar part
	TotalLength = sIntPart.length ;
	var CommaPos = 3;
	var sTmp = "";

	while (TotalLength > CommaPos) {
		sTmp = sIntPart.substring(0,TotalLength-CommaPos) ;
		sIntPart = sTmp + "," + sIntPart.substring(TotalLength - CommaPos, TotalLength) ;
		CommaPos += 4;
		TotalLength += 1;
	}

	//format the final string
	var DecimalPos = theFormat.length - theFormat.indexOf(".") - 1;
//alert(DecimalPos);
	if ((DecimalFound) && (DecimalPos>0)) {
		sResult = sIntPart + "." + sDecimalPart.substring(0,DecimalPos);
	} else {
 	 	sResult = sIntPart;
	};

	if (theFormat.indexOf("$") != -1){
		sResult = "$" + sResult;
	} else {
		if (theFormat.indexOf("%") != -1){
			sResult = sResult + "%";
		}
	}
	return sResult;
}

function CalculatePayment(LoanAmt, Years, YearlyInterest, PaymentsPerYear) {
	p = PaymentsPerYear;
	i = (YearlyInterest) / p;
	n = Years * p;
	CompoundNum = Math.pow(i+1,n);
	result = LoanAmt * (i * CompoundNum) / (CompoundNum - 1);
	return result;
}

function Str2Num(str) {
	if (str.length == 0) {
		str = "0";
	}

	var nNumber = "";
    for (var i = 0; i < str.length; i++) {
        var chr = str.substring(i, i + 1)
        if ((chr < "0" || "9" < chr) && chr != '.') {}
		else { nNumber += chr }
    }

		nNumber = (Math.round(nNumber * 100)) / 100
		//alert(nNumber);
		return nNumber;
}


function ReturnNumber(str, FormatType) {

    	//if str is null
    	//alert (str.length);
    	if (str.length == 0) {
    		str = "0"
    	}

		var CleanNum = ""
    for (var i = 0; i < str.length; i++) {
        var chr = str.substring(i, i + 1)
        if ((chr < "0" || "9" < chr) && chr != '.') {
         }
				else { CleanNum += chr
				}
    }

    	//alert (CleanNum) ;
		if (FormatType.indexOf(".") == -1) {
			CleanNum = Math.round(CleanNum)
		}
		else {
			CleanNum = (Math.round(CleanNum * 100)) / 100
		}
		//alert(CleanNum);
		return CleanNum;
}



//function to check that numbers are in the valid range
function CheckValueRange(origNumber, MinVal, MaxVal, MsgName)
{
    var num = origNumber;
    if (num < MinVal || MaxVal < num) {
		if (num != 0) {
        	alert(MsgName + " not in range [" + MinVal + ".." + MaxVal + "]");
        	return false;
		}
    }
    return true;
}

