// v8.1.31

function NumberValidator( val )
{
  
  var input = val.controltovalidate;
	
	var strNum = document.all[input].value;
	
	strNum = NumberValidator_Trim( strNum );

	if ( strNum == "" )
	{
		if ( val.Required == "True" )
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	if ( val.AllowedTextValues != "" )
	{
		var stringarray;
		
		var stringallowed = val.AllowedTextValues;

		stringarray = stringallowed.split( "," );
		
		for ( n = 0 ; n < stringarray.length ; n++ )
		{
			if ( strNum == stringarray[n] )
			{
				return true;
			}
		}
	}
	
	var temparray;
	
	temparray = strNum.split( "," );
	
	strNum = "";

	for ( n = 0 ; n < temparray.length ; n++ )
	{
		strNum += temparray[n];
	}

  if ( strNum.indexOf( "$" ) != -1 || strNum.indexOf( "%" ) != -1 )
	{
		strNum = strNum.replace( /\$/, "" );
        strNum = strNum.replace( /\%/, "" );
	}
	
	var strNumValue = strNum;
	
	if ( !isNaN( strNum ) )
	{
		if ( parseFloat( strNum ) > val.MaximumValue || parseFloat( strNum ) < val.MinimumValue )
		{
			return false;
		}

        if ( val.TruncateDecimalPlaces == "False" )
		{
		    if ( parseFloat(strNum)==0 )
		    {
		        if ( val.DecimalPlaces > 0 )
		            strNum = parseFloat( "0.0" ).toPrecision( val.DecimalPlaces );
		        else
		            strNum = "0";
		    }
		    else if ( strNum.indexOf( "." ) == -1 )
			{
				var significantDigitCount = parseInt( strNum.length ) + parseInt( val.DecimalPlaces );
				if (parseFloat(strNum)<0) significantDigitCount--;
				strNum = parseFloat( strNum ).toPrecision( significantDigitCount );
			}
			else if ( strNum.indexOf( "." ) > -1 )
			{
			    var significantDigitCount = parseInt( val.DecimalPlaces );
				
				if ( Math.abs(parseFloat(strNum))>1 )
				    significantDigitCount += strNum.indexOf( "." );
				
				if (parseFloat(strNum)<0) 
				    significantDigitCount--;
									
				strNum = parseFloat( strNum ).toPrecision( significantDigitCount );
			}
		}
		else
		{
			if ( strNum.indexOf( "." ) == -1 )
			{
				var temp = "";
				
				if ( val.DecimalPlaces > 0 )
				{
					for ( var i = 0 ; i < val.DecimalPlaces ; i++ )
					{
						temp += "0";
					}

					temp = "." + temp;
				}

				strNum += temp;
			}
			else if ( strNum.indexOf( "." ) > -1 )
			{
				var dec = "";
				
				var num = strNum.substr( 0 , strNum.indexOf( "." ) );
				
				dec = strNum.substr( strNum.indexOf( "." ) + 1 , ( strNum.length - strNum.indexOf( "." ) - 1 ) );
				
				if ( dec.length > val.DecimalPlaces )
				{
					dec = dec.substr( 0 , val.DecimalPlaces );
				}

				else if ( dec.length < val.DecimalPlaces )
				{
					for ( var i = 0 ; i < val.DecimalPlaces - dec.length ; i++ )
					{
						dec += "0";
					}
				}

				if ( val.DecimalPlaces == 0 )
				{
					strNum = num;
				}
				else
				{
					strNum = num + "." + dec;
				}
			}
		}

		var sing;
		
		if ( val.FormatType == "Currency" )
		{
			sing = "$";
		}
		else if ( val.FormatType == "Percent" )
		{
			sing = "%";
		}
		
		if ( val.ShowCommas == "True" )
		{
			strNum = NumberValidator_AddComma( strNum );
		}
		
		if ( sing == "$" )
		{
		    strNum = "$" + strNum;
		}
		else if ( sing == "%" )
		{
			strNum = strNum + "%";
		}
		
		// alert( 'Validated ' + strNum );
		
		document.all[input].value = strNum;
		
		return true;
	}

	return false;

} 

function NumberValidator_AddComma( str )
{
	var temp = "";

	var decimalpart = "";

	if ( str.length > 3 )
	
		if ( str.indexOf( "." ) > -1 )
		{
			var decimalpart = str.substr( str.indexOf( "." ) , str.length );
			str = str.substr( 0 , str.indexOf( "." ) );
		}
	{
	    for ( i = str.length ; i >= 0 ; i -= 3 )
	    {
		    if ( i - 3 >= 0 )
		    {
			    temp = str.substr( i - 3 , 3 ) + temp;

			    if ( i - 3 != 0 )
			    {
				    temp = "," + temp;
			    }
		    }
		    else
		    {
			    temp = str.substr( 0 , i ) + temp;
		    }
	    }
		
	    return temp.toString( ) + decimalpart.toString( );
	}
	
	return str;
}

function NumberValidator_Trim( val )
{
    while ( val.charAt( 0 ) == ' ' )
    {
	    val = val.substring( 1 , val.length );
    }
    return val;
}

