/**************************************************************************
 **
 ** Tools 
 **
**************************************************************************/

var Tools = new Object();

Tools.ParseNumber = function ( number )
{
    var match_number = /^[\n\f\r\s\t]*([0-9, ]+)[\n\f\r\s\t]*$/;
    var matches      = match_number.exec( number );
    
    var parsed_number = null;

    if( matches ) {
	parsed_number = matches[0].replace( /[ ,]/g, '' );
    }
    
    return parsed_number;
} // Tools.ParseNumber

Tools.ParseMoney = function ( money )
{
    var match_money  = /^[\n\f\r\s\t]*\$?[\n\f\r\s\t]*([0-9, ]+(\.\d{1,2}|\.)?)[\n\f\r\s\t]*$/;
    var matches      = match_money.exec( money );
    
    var parsed_money = null;

    if( matches ) {
	parsed_money = matches[1].replace( ',', '' ).replace( ' ', '' );
    }
    
    return parsed_money;
} // Tools.ParseMoney

Tools.FormatMoney = function ( money )
{
    var formatted_money = money;

    var missing_zero = /^\d+\.\d$/;
    if( missing_zero.exec( money ) )
    {
	formatted_money += '0';
    }
    else if( (new String( formatted_money )).indexOf( '.' ) == -1 )
    {
	formatted_money += '.00';
    }

    formatted_money = '$' + Tools.Commify( formatted_money );

    return formatted_money;
} // Tools.FormatMoney

Tools.Commify = function ( number )
{
    var commified_number = number;

    commified_number = Tools.ReverseString( commified_number );
    commified_number = commified_number.replace( /(\d{3})(?=\d)(?!\d*\.)/g, "$1," );
    commified_number = Tools.ReverseString( commified_number );
    
    return commified_number;
} // Commify

Tools.ReverseString = function (str)
{
    str = new String( str );
    var reversed_string = null;

    if( str != null )
    {
	reversed_string = "";
	
	if( str.length > 0 ) {
	    for( var i = str.length-1; i >= 0; i-- ) {
		reversed_string += str.charAt( i );
	    }
	}
    }

    return reversed_string;
} // ReverseString
