
var curValue=0.0;
var STR_NOT_AVAILABLE = "N/A";

function validateNumber( oInp )
{
    var value=oInp.value
	if (!value) return "";
	var number = parseFloat( parseMoney( value ) );

    //alert(number)

	// blank field reset to default value.
	if( (number == null) || (number.length == 0) || (number == "NaN") ) {
        //alert('cur - ' + curValue)
		oInp.value = curValue;
        //alert('This field requires numeric data!')
		return;
	}

	var str = number + "";

	for( var i = 0; i < str.length; i++ ) {
		var ch = str.substring( i, i + 1 );
	   	if( (ch < '0' || '9' < ch) && (ch != '.') ) {
			oInp.focus();
			oInp.select();
			alert('This field requires numeric data!');
			return;
		}
	}

    //alert('str -- ' + str)


	return formatMoney( str );
}

function formatMoney (m) {
	if (m == STR_NOT_AVAILABLE) return m;

    if ( !m ) m = 0;

    var money = m + "";
    var decimals = "";

    dotIndex = money.indexOf(".");
    if (dotIndex > -1) {
        decimals = money.substr(dotIndex);
        money = money. substr(0, dotIndex);
    }

	var offset = 0;
    var output = "";
    var isNegative = false;
    
    for(var i = 0; i < money.length; i++) {
        c = money.charAt(money.length-1 - i);
		if( c == '$' || c == ',' || c == '-') {
			if( c == '-' )
				isNegative = true;
			offset++;
			continue;
		}
        if ((i > 0) && (((i-offset) % 3) == 0)) output = "," + output;

        output = c + output;
    }

	if( (decimals != null) && (decimals != "") && (decimals.length < 3) ) {
		decimals += "0" + (decimals.length == 1) ? "0" : "";
	}
	
    return "$ " + ( isNegative ? "-" : "" )  + output + decimals;
}

function invertSign( number ) {
	return (number * -1);
}

function parseMoney (money) 
{
    if( !money ) return 0.0;

	money = money + "";
    var output = "";
    for(var i = 0; i < money.length; i++) {
        c = money.charAt(i);
        if ((c < '0' || c > '9') && (c != '.') && (c != '-') ) continue;
        output += c;
    }
    
    output = parseFloat(output);
    if (isNaN(output)) return 0.0;
    
    return output;
}

// includes 0 in acceptable values
function isNegative( value ) 
{
        var number = parseFloat(  value );
        if( isNaN(number) || (number < 0) ) {
			// invalid number
			return true;
        }
        return false;
}

// Verify the interest rate is a reasonable number, or set it to one.
function isValidPercentage( value ) 
{
	var number = parseFloat( parseMoney( value ) );
	
	if( (number == null) || (number.length == 0) || isNaN(number) || (number < 0) || (number > 100) ) {
		return false;
	}
	return true;
}
 

