You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2018/11/24 18:37:36 UTC

[royale-asjs] branch develop updated: MX CurrencyFormatter compile ok

This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new 316fc1a  MX CurrencyFormatter compile ok
316fc1a is described below

commit 316fc1a62b9d798f1525e76d060215e2d972ab8f
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Sat Nov 24 19:37:29 2018 +0100

    MX CurrencyFormatter compile ok
---
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   3 +
 .../main/royale/mx/formatters/CurrencyFormatter.as | 791 +++++++++++++++++++++
 .../src/main/royale/mx/formatters/Formatter.as     |  44 +-
 .../src/main/royale/mx/formatters/NumberBase.as    | 625 ++++++++++++++++
 .../royale/mx/formatters/NumberBaseRoundType.as    |  89 +++
 5 files changed, 1530 insertions(+), 22 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 734e9c5..f6796d2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -155,6 +155,9 @@ internal class MXRoyaleClasses
 	import mx.controls.advancedDataGridClasses.MXAdvancedDataGridItemRenderer; MXAdvancedDataGridItemRenderer;
 	import mx.formatters.Formatter; Formatter;
 	import mx.formatters.IFormatter; IFormatter;
+	import mx.formatters.NumberBase; NumberBase;
+	import mx.formatters.NumberBaseRoundType; NumberBaseRoundType;
+	import mx.formatters.CurrencyFormatter; CurrencyFormatter;
 	import mx.events.CalendarLayoutChangeEvent; CalendarLayoutChangeEvent;
 	import mx.net.SharedObject; SharedObject;
 	import mx.modules.ModuleManager; ModuleManager;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/CurrencyFormatter.as b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/CurrencyFormatter.as
new file mode 100644
index 0000000..f360ed8
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/CurrencyFormatter.as
@@ -0,0 +1,791 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.formatters
+{
+
+import mx.managers.ISystemManager;
+import mx.managers.SystemManager;
+
+// [ResourceBundle("formatters")]
+// [ResourceBundle("SharedResources")]
+
+// [Alternative(replacement="spark.formatters.CurrencyFormatter", since="4.5")]
+/**
+ *  The CurrencyFormatter class formats a valid number as a currency value.
+ *  It adjusts the decimal rounding and precision, the thousands separator, 
+ *  and the negative sign; it also adds a currency symbol.
+ *  You place the currency symbol on either the left or the right side
+ *  of the value with the <code>alignSymbol</code> property.
+ *  The currency symbol can contain multiple characters,
+ *  including blank spaces.
+ *  
+ *  <p>If an error occurs, an empty String is returned and a String that describes 
+ *  the error is saved to the <code>error</code> property. The <code>error</code> 
+ *  property can have one of the following values:</p>
+ *
+ *  <ul>
+ *    <li><code>"Invalid value"</code> means an invalid numeric value is passed to 
+ *    the <code>format()</code> method. The value should be a valid number in the 
+ *    form of a Number or a String.</li>
+ *    <li><code>"Invalid format"</code> means one of the parameters contains an unusable setting.</li>
+ *  </ul>
+ *  
+ *  @mxml
+ *  
+ *  <p>The <code>&lt;mx:CurrencyFormatter&gt;</code> tag
+ *  inherits all of the tag attributes of its superclass,
+ *  and adds the following tag attributes:</p>
+ *  
+ *  <pre>
+ *  &lt;mx:CurrencyFormatter
+ *    alignSymbol="left|right" 
+ *    currencySymbol="$"
+ *    decimalSeparatorFrom="."
+ *    decimalSeparatorTo="."
+ *    precision="-1"
+ *    rounding="none|up|down|nearest"
+ *    thousandsSeparatorFrom=","
+ *    thousandsSeparatorTo=","
+ *    useNegativeSign="true|false"
+ *    useThousandsSeparator="true|false"
+ *	/>  
+ *  </pre>
+ *  
+ *  @includeExample examples/CurrencyFormatterExample.mxml
+ *  
+ *  @see mx.formatters.NumberBase
+ *  @see mx.formatters.NumberBaseRoundType
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class CurrencyFormatter extends Formatter
+{
+    // include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function CurrencyFormatter()
+	{
+		super();
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  alignSymbol
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the alignSymbol property.
+	 */
+	private var _alignSymbol:String;
+	
+    /**
+	 *  @private
+	 */
+	private var alignSymbolOverride:String;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Aligns currency symbol to the left side or the right side
+	 *  of the formatted number.
+     *  Permitted values are <code>"left"</code> and <code>"right"</code>.
+	 *
+     *  @default "left"
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get alignSymbol():String
+	{
+		return _alignSymbol;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set alignSymbol(value:String):void
+	{
+		alignSymbolOverride = value;
+
+		_alignSymbol = value != null ?
+					   value : "right";
+					//    resourceManager.getString(
+					//        "SharedResources", "alignSymbol");
+	}
+
+	//----------------------------------
+	//  currencySymbol
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the currencySymbol property.
+	 */
+	private var _currencySymbol:String;
+	
+    /**
+	 *  @private
+	 */
+	private var currencySymbolOverride:String;
+	
+    // [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Character to use as a currency symbol for a formatted number.
+     *  You can use one or more characters to represent the currency 
+	 *  symbol; for example, "$" or "YEN".
+	 *  You can also use empty spaces to add space between the 
+	 *  currency character and the formatted number.
+	 *  When the number is a negative value, the currency symbol
+	 *  appears between the number and the minus sign or parentheses.
+	 *
+     *  @default "$"
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get currencySymbol():String
+	{
+		return _currencySymbol;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set currencySymbol(value:String):void
+	{
+		currencySymbolOverride = value;
+
+		_currencySymbol = value != null ?
+						  value : "\ €";
+						//   resourceManager.getString(
+					    //       "SharedResources", "currencySymbol");
+	}
+
+	//----------------------------------
+	//  decimalSeparatorFrom
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the decimalSeparatorFrom property.
+	 */
+	private var _decimalSeparatorFrom:String;
+	
+    /**
+	 *  @private
+	 */
+	private var decimalSeparatorFromOverride:String;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Decimal separator character to use
+	 *  when parsing an input string.
+	 *
+     *  @default "."
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get decimalSeparatorFrom():String
+	{
+		return _decimalSeparatorFrom;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set decimalSeparatorFrom(value:String):void
+	{
+		decimalSeparatorFromOverride = value;
+
+		_decimalSeparatorFrom = value != null ?
+								value : ",";
+								// resourceManager.getString(
+								//     "SharedResources", "decimalSeparatorFrom");
+	}
+
+	//----------------------------------
+	//  decimalSeparatorTo
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the decimalSeparatorTo property.
+	 */
+	private var _decimalSeparatorTo:String;
+	
+    /**
+	 *  @private
+	 */
+	private var decimalSeparatorToOverride:String;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Decimal separator character to use
+	 *  when outputting formatted decimal numbers.
+	 *
+     *  @default "."
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get decimalSeparatorTo():String
+	{
+		return _decimalSeparatorTo;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set decimalSeparatorTo(value:String):void
+	{
+		decimalSeparatorToOverride = value;
+
+		_decimalSeparatorTo = value != null ?
+							  value : ",";
+							//   resourceManager.getString(
+							//       "SharedResources", "decimalSeparatorTo");
+	}
+
+	//----------------------------------
+	//  precision
+	//----------------------------------
+	
+    /**
+	 *  @private
+	 *  Storage for the precision property.
+	 */
+	private var _precision:Object;
+	
+    /**
+	 *  @private
+	 */
+	private var precisionOverride:Object;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Number of decimal places to include in the output String.
+	 *  You can disable precision by setting it to <code>-1</code>.
+	 *  A value of <code>-1</code> means do not change the precision. For example, 
+	 *  if the input value is 1.453 and <code>rounding</code> 
+	 *  is set to <code>NumberBaseRoundType.NONE</code>, return 1.453.
+	 *  If <code>precision</code> is -1 and you set some form of 
+	 *  rounding, return a value based on that rounding type.
+	 *
+     *  @default -1
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get precision():Object
+	{
+		return _precision;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set precision(value:Object):void
+	{
+		precisionOverride = value;
+
+		_precision = value != null ?
+					 int(value) : -1;
+					//  resourceManager.getInt(
+					//      "formatters", "currencyFormatterPrecision");
+	}
+
+	//----------------------------------
+	//  rounding
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the rounding property.
+	 */
+	private var _rounding:String;
+	
+    /**
+	 *  @private
+	 */
+	private var roundingOverride:String;
+	
+    [Inspectable(category="General", enumeration="none,up,down,nearest", defaultValue="null")]
+
+    /**
+     *  How to round the number.
+	 *  In ActionScript, the value can be <code>NumberBaseRoundType.NONE</code>, 
+	 *  <code>NumberBaseRoundType.UP</code>,
+	 *  <code>NumberBaseRoundType.DOWN</code>, or <code>NumberBaseRoundType.NEAREST</code>.
+	 *  In MXML, the value can be <code>"none"</code>, 
+	 *  <code>"up"</code>, <code>"down"</code>, or <code>"nearest"</code>.
+	 *
+	 *  @default NumberBaseRoundType.NONE
+ 	 *
+	 *  @see mx.formatters.NumberBaseRoundType
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get rounding():String
+	{
+		return _rounding;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set rounding(value:String):void
+	{
+		roundingOverride = value;
+
+		_rounding = value != null ?
+					value : "none";
+					// resourceManager.getString(
+					//     "formatters", "rounding");
+	}
+
+	//----------------------------------
+	//  thousandsSeparatorFrom
+	//----------------------------------
+	
+    /**
+	 *  @private
+	 *  Storage for the thousandsSeparatorFrom property.
+	 */
+	private var _thousandsSeparatorFrom:String;
+	
+    /**
+	 *  @private
+	 */
+	private var thousandsSeparatorFromOverride:String;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Character to use as the thousands separator
+	 *  in the input String.
+	 *
+     *  @default ","
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get thousandsSeparatorFrom():String
+	{
+		return _thousandsSeparatorFrom;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set thousandsSeparatorFrom(value:String):void
+	{
+		thousandsSeparatorFromOverride = value;
+
+		_thousandsSeparatorFrom = value != null ?
+								  value : ".";
+								//   resourceManager.getString(
+								//       "SharedResources", "thousandsSeparatorFrom");
+	}
+	
+	//----------------------------------
+	//  thousandsSeparatorTo
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the thousandsSeparatorTo property.
+	 */
+	private var _thousandsSeparatorTo:String;
+	
+    /**
+	 *  @private
+	 */
+	private var thousandsSeparatorToOverride:String;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  Character to use as the thousands separator
+	 *  in the output string.
+	 *
+     *  @default ","
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get thousandsSeparatorTo():String
+	{
+		return _thousandsSeparatorTo;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set thousandsSeparatorTo(value:String):void
+	{
+		thousandsSeparatorToOverride = value;
+
+		_thousandsSeparatorTo = value != null ?
+								value : ".";
+								// resourceManager.getString(
+								//     "SharedResources", "thousandsSeparatorTo");
+	}
+
+	//----------------------------------
+	//  useNegativeSign
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the useNegativeSign property.
+	 */
+	private var _useNegativeSign:Object;
+	
+    /**
+	 *  @private
+	 */
+	private var useNegativeSignOverride:Object;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  If <code>true</code>, format a negative number 
+	 *  by preceding it with a minus "-" sign.
+	 *  If <code>false</code>, format the number
+	 *  surrounded by parentheses, for example (400).
+	 *
+     *  @default true
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get useNegativeSign():Object
+	{
+		return _useNegativeSign;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set useNegativeSign(value:Object):void
+	{
+		useNegativeSignOverride = value;
+
+		_useNegativeSign = value != null ?
+						   Boolean(value) : true;
+						//    resourceManager.getBoolean(
+						//        "formatters", "useNegativeSignInCurrency");
+	}
+
+	//----------------------------------
+	//  useThousandsSeparator
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the useThousandsSeparator property.
+	 */
+	private var _useThousandsSeparator:Object;
+	
+    /**
+	 *  @private
+	 */
+	private var useThousandsSeparatorOverride:Object;
+	
+    [Inspectable(category="General", defaultValue="null")]
+
+    /**
+     *  If <code>true</code>, split the number into thousands increments
+	 *  by using a separator character.
+	 *
+     *  @default true
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+	public function get useThousandsSeparator():Object
+	{
+		return _useThousandsSeparator;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set useThousandsSeparator(value:Object):void
+	{
+		useThousandsSeparatorOverride = value;
+
+		_useThousandsSeparator = value != null ?
+								 Boolean(value) : true;
+								//  resourceManager.getBoolean(
+								//      "formatters", "useThousandsSeparator");
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	// override protected function resourcesChanged():void
+	// {
+	// 	super.resourcesChanged();
+
+	// 	alignSymbol = alignSymbolOverride;
+	// 	currencySymbol = currencySymbolOverride;
+	// 	decimalSeparatorFrom = decimalSeparatorFromOverride;
+	// 	decimalSeparatorTo = decimalSeparatorToOverride;
+	// 	precision = precisionOverride;
+	// 	rounding = roundingOverride;
+	// 	thousandsSeparatorFrom = thousandsSeparatorFromOverride;
+	// 	thousandsSeparatorTo = thousandsSeparatorToOverride;
+	// 	useNegativeSign = useNegativeSignOverride;
+	// 	useThousandsSeparator = useThousandsSeparatorOverride;
+	// }
+
+    /**
+     *  Formats <code>value</code> as currency.
+	 *  If <code>value</code> cannot be formatted, return an empty String 
+	 *  and write a description of the error to the <code>error</code> property.
+	 *
+     *  @param value Value to format.
+	 *
+     *  @return Formatted string. Empty if an error occurs.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function format(value:Object):String
+    {
+        // Reset any previous errors.
+        if (error)
+			error = null;
+
+        if (useThousandsSeparator &&
+			(decimalSeparatorFrom == thousandsSeparatorFrom ||
+			 decimalSeparatorTo == thousandsSeparatorTo))
+        {
+            error = defaultInvalidFormatError;
+            return "";
+        }
+
+        if (decimalSeparatorTo == "")
+        {
+            error = defaultInvalidFormatError;
+            return "";
+        }
+
+        var dataFormatter:NumberBase = new NumberBase(decimalSeparatorFrom,
+													  thousandsSeparatorFrom,
+													  decimalSeparatorTo,
+													  thousandsSeparatorTo);
+
+        // -- value --
+
+        if (value is String)
+        {
+            var temp_value:String = dataFormatter.parseNumberString(String(value));
+            
+            // If we got 0 back, but string was longer than one character, NumberBase
+            // Chopped our value.  So we need to do some formatting to get our value back
+            // to the way it was.
+            if (temp_value == "0")
+            {
+                var valueArr:Array = value.split(decimalSeparatorFrom);
+                value = valueArr[0];
+                if (valueArr[1] != undefined)
+                    value += "." + valueArr[1];
+                else
+                    value = temp_value;
+            }
+            else
+                value = temp_value;
+        }
+
+        if (value === null || isNaN(Number(value)))
+        {
+            error = defaultInvalidValueError;
+            return "";
+        }
+
+        // -- format --
+        
+		var isNegative:Boolean = (Number(value) < 0);
+
+        var numStr:String = value.toString();
+        var numArrTemp:Array = numStr.split(".");
+        var numFraction:int = numArrTemp[1] ? String(numArrTemp[1]).length : 0;
+
+        if (precision <= numFraction)
+		{
+            if (rounding != NumberBaseRoundType.NONE)
+			{
+                numStr = dataFormatter.formatRoundingWithPrecision(
+					numStr, rounding, int(precision));
+			}
+		}
+
+        var numValue:Number = Number(numStr);
+        if (Math.abs(numValue) >= 1)
+        {
+            numArrTemp = numStr.split(".");
+            var front:String =
+				useThousandsSeparator ?
+				dataFormatter.formatThousands(String(numArrTemp[0])) :
+				String(numArrTemp[0]);
+            if (numArrTemp[1] != null && numArrTemp[1] != "")
+                numStr = front + decimalSeparatorTo + numArrTemp[1];
+            else
+                numStr = front;
+        }
+        else if (Math.abs(numValue) >= 0)
+        {
+        	// if the value is in scientefic notation then the search for '.' 
+        	// doesnot give the correct result. Adding one to the value forces 
+        	// the value to normal decimal notation. 
+        	// As we are dealing with only the decimal portion we need not 
+        	// worry about reverting the addition
+        	if (numStr.indexOf("e") != -1)
+        	{
+	        	var temp:Number = Math.abs(numValue) + 1;
+	        	numStr = temp.toString();
+        	}
+        	
+        	// Handle leading zero if we got one give one if not don't
+        	var position:Number = numStr.indexOf(".");
+        	var leading:String = position > 0 ? "0" : "";
+			
+			// must be zero ("0") if no "." and >= 0 and < 1
+			if (position != -1)
+			{
+	            numStr = leading + decimalSeparatorTo +
+						 numStr.substring(position + 1);
+			}
+        }
+        
+        numStr = dataFormatter.formatPrecision(numStr, int(precision));
+
+		// If our value is 0, then don't show -0
+		if (Number(numStr) == 0)
+		{
+			isNegative = false;	
+		}
+
+        if (isNegative)
+            numStr = dataFormatter.formatNegative(numStr, useNegativeSign);
+
+        if (!dataFormatter.isValid)
+        {
+            error = defaultInvalidFormatError;
+            return "";
+        }
+
+        // -- currency --
+
+        if (alignSymbol == "left")
+		{
+            if (isNegative)
+			{
+                var nSign:String = numStr.charAt(0);
+                var baseVal:String = numStr.substr(1, numStr.length - 1);
+                numStr = nSign + currencySymbol + baseVal;
+            }
+			else
+			{
+                numStr = currencySymbol + numStr;
+            }
+        } 
+		else if (alignSymbol == "right")
+		{
+            var lastChar:String = numStr.charAt(numStr.length - 1);
+            if (isNegative && lastChar == ")")
+			{
+                baseVal = numStr.substr(0, numStr.length - 1);
+                numStr = baseVal + currencySymbol + lastChar;
+            }
+			else
+			{
+                numStr = numStr + currencySymbol;
+            }
+        }
+		else
+		{
+            error = defaultInvalidFormatError;
+            return "";
+        }
+
+        return numStr;
+    }
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/Formatter.as b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/Formatter.as
index a62c38c..92fe7d1 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/Formatter.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/Formatter.as
@@ -29,7 +29,7 @@ import mx.managers.SystemManager;
 
 use namespace mx_internal;
 
-[ResourceBundle("formatters")]
+// [ResourceBundle("formatters")]
 
 /**
  *  The Formatter class is the base class for all data formatters.
@@ -107,12 +107,12 @@ public class Formatter implements IFormatter
 	 *  @private
 	 *  Storage for the defaultInvalidFormatError property.
 	 */
-	//private static var _defaultInvalidFormatError:String
+	private static var _defaultInvalidFormatError:String
 	
     /**
 	 *  @private
 	 */
-	//private static var defaultInvalidFormatErrorOverride:String
+	private static var defaultInvalidFormatErrorOverride:String
 
 	/**
 	 *  Error message for an invalid format string specified to the formatter.
@@ -128,26 +128,26 @@ public class Formatter implements IFormatter
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
 	 */
-	/* public static function get defaultInvalidFormatError():String
+	public static function get defaultInvalidFormatError():String
 	{
-		initialize();
+		// initialize();
 
 		return _defaultInvalidFormatError; 
-	} */
+	}
 
 	/**
 	 *  @private
 	 */
-	/* public static function set defaultInvalidFormatError(value:String):void
+	public static function set defaultInvalidFormatError(value:String):void
 	{
 		defaultInvalidFormatErrorOverride = value;
 		
 		 _defaultInvalidFormatError = 
 			value != null ?
-			value :
-			static_resourceManager.getString(
-				"formatters", "defaultInvalidFormatError"); 
-	} */
+			value : "Invalid format";
+			// static_resourceManager.getString(
+			// 	"formatters", "defaultInvalidFormatError"); 
+	}
 
 	//----------------------------------
 	//  defaultInvalidValueError
@@ -157,12 +157,12 @@ public class Formatter implements IFormatter
 	 *  @private
 	 *  Storage for the defaultInvalidValueError property.
 	 */
-	//private static var _defaultInvalidValueError:String
+	private static var _defaultInvalidValueError:String
 	
     /**
 	 *  @private
 	 */
-	//private static var defaultInvalidValueErrorOverride:String
+	private static var defaultInvalidValueErrorOverride:String
 
 	/**
 	 *  Error messages for an invalid value specified to the formatter. The
@@ -178,26 +178,26 @@ public class Formatter implements IFormatter
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
 	 */
-	/* public static function get defaultInvalidValueError():String
+	public static function get defaultInvalidValueError():String
 	{
-		initialize();
+		// initialize();
 
 		return _defaultInvalidValueError; 
-	} */
+	}
 
 	/**
 	 *  @private
 	 */
-	/* public static function set defaultInvalidValueError(value:String):void
+	public static function set defaultInvalidValueError(value:String):void
 	{
 		defaultInvalidValueErrorOverride = value;
 
 		 _defaultInvalidValueError =
 			value != null ?
-			value :
-			static_resourceManager.getString(
-				"formatters", "defaultInvalidValueError"); 
-	} */
+			value : "Invalid value";
+			// static_resourceManager.getString(
+			// 	"formatters", "defaultInvalidValueError"); 
+	}
 	
 	//--------------------------------------------------------------------------
 	//
@@ -299,7 +299,7 @@ public class Formatter implements IFormatter
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
 	 */
-	//public var error:String;
+	public var error:String;
 
     //----------------------------------
     //  resourceManager
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/NumberBase.as b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/NumberBase.as
new file mode 100644
index 0000000..d7e7829
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/NumberBase.as
@@ -0,0 +1,625 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.formatters
+{
+
+/**
+ *  The NumberBase class is a utility class that contains
+ *  general number formatting capabilities, including rounding,
+ *  precision, thousands formatting, and negative sign formatting.
+ *  The implementation of the formatter classes use this class.
+ *
+ *  @see mx.formatters.NumberFormatter
+ *  @see mx.formatters.NumberBaseRoundType
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class NumberBase
+{
+    // include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 * 
+	 *  @param decimalSeparatorFrom Decimal separator to use
+	 *  when parsing an input String.
+	 *
+	 *  @param thousandsSeparatorFrom Character to use
+	 *  as the thousands separator in the input String.
+	 *
+	 *  @param decimalSeparatorTo Decimal separator character to use
+	 *  when outputting formatted decimal numbers.
+	 *
+	 *  @param thousandsSeparatorTo Character to use
+	 *  as the thousands separator in the output String.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function NumberBase(decimalSeparatorFrom:String = ".",
+							   thousandsSeparatorFrom:String = ",",
+							   decimalSeparatorTo:String = ".",
+							   thousandsSeparatorTo:String = ",")
+	{
+		super();
+
+		this.decimalSeparatorFrom = decimalSeparatorFrom;
+		this.thousandsSeparatorFrom = thousandsSeparatorFrom;
+		this.decimalSeparatorTo = decimalSeparatorTo;
+		this.thousandsSeparatorTo = thousandsSeparatorTo;
+
+		isValid = true;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  decimalSeparatorFrom
+	//----------------------------------
+
+	/**
+     *  Decimal separator character to use
+	 *  when parsing an input String.
+	 *  
+	 *  @default "."
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var decimalSeparatorFrom:String;
+
+	//----------------------------------
+	//  decimalSeparatorTo
+	//----------------------------------
+
+	/**
+     *  Decimal separator character to use
+	 *  when outputting formatted decimal numbers.
+	 *  
+	 *  @default "."
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var decimalSeparatorTo:String;
+
+	//----------------------------------
+	//  isValid
+	//----------------------------------
+
+	/**
+	 *  If <code>true</code>, the format succeeded,
+	 *  otherwise it is <code>false</code>.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var isValid:Boolean = false;
+
+	//----------------------------------
+	//  thousandsSeparatorFrom
+	//----------------------------------
+
+	/**
+     *  Character to use as the thousands separator
+	 *  in the input String.
+	 *  
+	 *  @default ","
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var thousandsSeparatorFrom:String;
+
+	//----------------------------------
+	//  thousandsSeparatorTo
+	//----------------------------------
+
+	/**
+     *  Character to use as the thousands separator
+	 *  in the output String.
+	 *  
+	 *  @default ","
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var thousandsSeparatorTo:String;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Formats a number by rounding it. 
+	 *  The possible rounding types are defined by
+	 *  mx.formatters.NumberBaseRoundType.
+	 *
+	 *  @param value Value to be rounded.
+	 *
+	 *  @param roundType The type of rounding to perform:
+	 *  NumberBaseRoundType.NONE, NumberBaseRoundType.UP,
+	 *  NumberBaseRoundType.DOWN, or NumberBaseRoundType.NEAREST.
+	 *
+	 *  @return Formatted number.
+	 *
+	 *  @see mx.formatters.NumberBaseRoundType
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function formatRounding(value:String, roundType:String):String
+	{
+		var v:Number = Number(value);
+		
+		if (roundType != NumberBaseRoundType.NONE)
+		{
+			if (roundType == NumberBaseRoundType.UP)
+			{
+				 v = Math.ceil(v);
+			}
+			else if (roundType == NumberBaseRoundType.DOWN)
+			{
+				v = Math.floor(v);
+			}
+			else if (roundType == NumberBaseRoundType.NEAREST)
+			{
+				v = Math.round(v);
+			}
+			else
+			{
+				isValid = false;
+				return "";
+			}
+		}
+
+		return v.toString();
+	}
+
+	/**
+	 *  Formats a number by rounding it and setting the decimal precision.
+	 *  The possible rounding types are defined by
+	 *  mx.formatters.NumberBaseRoundType.
+	 *
+	 *  @param value Value to be rounded.
+	 *
+	 *  @param roundType The type of rounding to perform:
+	 *  NumberBaseRoundType.NONE, NumberBaseRoundType.UP,
+	 *  NumberBaseRoundType.DOWN, or NumberBaseRoundType.NEAREST.
+	 *
+	 *  @param precision int of decimal places to use.
+	 *
+	 *  @return Formatted number.
+	 *
+	 *  @see mx.formatters.NumberBaseRoundType
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function formatRoundingWithPrecision(value:String, roundType:String,
+												precision:int):String
+	{
+		// precision works differently now. Its default value is -1
+		// which means 'do not alter the number's precision'. If a precision
+		// value is set, all numbers will contain that precision. Otherwise, there
+		// precision will not be changed. 
+
+		var v:Number = Number(value);
+		
+		// If rounding is not present and precision is NaN,
+		// leave value untouched.
+		if (roundType == NumberBaseRoundType.NONE) 
+		{
+			if (precision == -1)
+				return v.toString();
+		}
+		else
+		{
+			// If rounding is present but precision is less than 0,
+			// then do integer rounding.
+			if (precision < 0) 
+				precision = 0;
+			
+			// Shift decimal right as Math functions
+			// perform only integer ceil/round/floor.
+			v = v * Math.pow(10, precision);
+			
+			// Attempt to get rid of floating point errors
+			v = Number(v.toString()); 
+			if (roundType == NumberBaseRoundType.UP)
+			{
+				v = Math.ceil(v);
+			}
+			else if (roundType == NumberBaseRoundType.DOWN)
+			{
+				v = Math.floor(v);
+			}
+			else if (roundType == NumberBaseRoundType.NEAREST)
+			{
+				v = Math.round(v);
+			}
+			else
+			{
+				isValid = false;
+				return "";
+			}
+			
+			// Shift decimal left to get back decimal to original point.
+			v = v / Math.pow(10, precision); 
+		}
+
+		return v.toString();
+	}
+
+	/**
+	 *  Formats a number by replacing the default decimal separator, ".", 
+	 *  with the decimal separator specified by <code>decimalSeparatorTo</code>. 
+	 *
+	 *  @param value The String value of the Number
+	 *  (formatted American style ####.##).
+	 *
+	 *  @return String representation of the input where "." is replaced
+	 *  with the decimal formatting character.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function formatDecimal(value:String):String
+	{
+	    var parts:Array = value.split(".");
+	    return parts.join(decimalSeparatorTo);
+	}
+
+	/**
+	 *  Formats a number by using 
+	 *  the <code>thousandsSeparatorTo</code> property as the thousands separator 
+	 *  and the <code>decimalSeparatorTo</code> property as the decimal separator.
+	 *
+	 *  @param value Value to be formatted.
+	 *
+	 *  @return Formatted number.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function formatThousands(value:String):String
+	{
+		var v:Number = Number(value);
+		
+		var isNegative:Boolean = (v < 0);
+		
+		var numStr:String = Math.abs(v).toString();
+		
+		numStr.toLowerCase();
+        var e:int = numStr.indexOf("e")
+        if (e != -1)  //deal with exponents
+            numStr = expandExponents(numStr);
+            
+		var numArr:Array =
+			numStr.split((numStr.indexOf(decimalSeparatorTo) != -1) ? decimalSeparatorTo : ".");
+		var numLen:int = String(numArr[0]).length;
+
+		if (numLen > 3)
+		{
+			var numSep:int = int(Math.floor(numLen / 3));
+
+			if ((numLen % 3) == 0)
+				numSep--;
+			
+			var b:int = numLen;
+			var a:int = b - 3;
+			
+			var arr:Array = [];
+			for (var i:int = 0; i <= numSep; i++)
+			{
+				arr[i] = numArr[0].slice(a, b);
+				a = int(Math.max(a - 3, 0));
+				b = int(Math.max(b - 3, 1));
+			}
+			
+			arr.reverse();
+			
+			numArr[0] = arr.join(thousandsSeparatorTo);
+		}
+		
+		numStr = numArr.join(decimalSeparatorTo);
+		
+		if (isNegative)
+			numStr = "-" + numStr;
+		
+		return numStr.toString();
+	}
+
+	/**
+	 *  Formats a number by setting its decimal precision by using 
+	 *  the <code>decimalSeparatorTo</code> property as the decimal separator.
+	 *
+	 *  @param value Value to be formatted.
+	 *
+	 *  @param precision Number of decimal points to use.
+	 *
+	 *  @return Formatted number.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function formatPrecision(value:String, precision:int):String
+	{
+		// precision works differently now. Its default value is -1
+		// which stands for 'do not alter the number's precision'. If a precision
+		// value is set, all numbers will contain that precision. Otherwise, there
+		// precision will not be changed.
+		
+		if (precision == -1)
+			return value;
+		
+		var numArr:Array = value.split(decimalSeparatorTo);
+		
+		numArr[0] = numArr[0].length == 0 ? "0" : numArr[0];
+		
+		if (precision > 0)
+		{
+			var decimalVal:String = numArr[1] ? String(numArr[1]) : "";
+			var fraction:String =
+				decimalVal + "000000000000000000000000000000000";
+			value = numArr[0] + decimalSeparatorTo + fraction.substr(0, precision);
+		}
+		else
+		{
+			value = String(numArr[0]);
+		}
+		
+		return value.toString();
+	}
+
+	/**
+	 *  Formats a negative number with either a minus sign (-)
+	 *  or parentheses ().
+	 *
+	 *  @param value Value to be formatted.
+	 *
+	 *  @param useSign If <code>true</code>, use a minus sign (-).
+	 *  If <code>false</code>, use parentheses ().
+	 *
+	 *  @return Formatted number.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function formatNegative(value:String, useSign:Boolean):String
+	{
+		if (useSign)
+		{
+			if (value.charAt(0) != "-")
+				value = "-" + value;
+		}
+		else if (!useSign)
+		{
+			if (value.charAt(0) == "-")
+				value = value.substr(1, value.length - 1);
+			value = "(" + value + ")";
+		}
+		else
+		{
+			isValid = false;
+			return "";
+		}
+		return value;
+	}
+
+	/**
+	 *  Extracts a number from a formatted String.
+	 *  Examines the String from left to right
+	 *  and returns the first number sequence.
+	 *  Ignores thousands separators and includes the
+	 *  decimal and numbers trailing the decimal.
+	 *
+	 *  @param str String to parse for the numeric value.
+	 *
+	 *  @return Value, which can be a decimal.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function parseNumberString(str:String):String
+	{	
+		// Check the decimal and thousands formatting for validity.
+		var splitDec:Array = str.split(decimalSeparatorFrom);
+		if (splitDec.length > 2)
+			return null;
+
+		// Attempt to extract the first number sequence from the string.
+		var len:int = str.length;
+		var count:int = 0;
+		var letter:String;
+		var num:String;
+		var isNegative:Boolean = false;
+		var hasExponent:Boolean = false
+
+		while (count < len)
+		{
+			letter = str.charAt(count);
+			count++;
+
+			if (("0" <= letter && letter <= "9") || (letter == decimalSeparatorFrom))
+			{
+				var lastLetter:String = str.charAt(count - 2);
+				// We must handle cases where we have negative input like "-YTL5.000,00"
+				// and currencySymbol is longer than one character.
+				if ((lastLetter == "-") || (str.charAt(0) == "-"))
+					isNegative = true;
+				num = "";
+				count--;
+				
+				for (var i:int = count; i < len; i++)
+				{
+					letter = str.charAt(count);
+					count++;
+					if ("0" <= letter && letter <= "9")
+					{
+						num += letter;
+					}
+					else if (letter == decimalSeparatorFrom)
+					{
+						num += ".";
+					}
+					else if (letter == "e" || letter == "E")
+					{
+						num += letter;
+						hasExponent = true;
+					}
+					else if (hasExponent && (letter == "-" || letter == "+"))
+					{
+						num += letter;
+					}
+					else if (letter != thousandsSeparatorFrom || count >= len)
+					{
+						break;
+					}
+				}
+			}
+		}
+
+		// there are all sorts of variations of zero, such as:
+		// .0    0.   0.0    0000     0000.00000     -0
+		// Here, we simply convert to a 'real' Number and see if
+		// it's resolved to zero. if it does, just return a zero
+		// string and be done with it.
+		if ((num != null) && (str != ''))
+		{
+			var n:Number = Number(num);
+
+			if (n == 0)
+				return '0';
+		}
+
+		// if the last digit is the dot, whack it
+		if (num)
+		{
+			if (num.charAt(num.length-1) == '.')
+			{
+				// we have something like 33.
+				if (num.length >= 2)
+				{
+					num = num.substring(0, num.length-1);
+				}
+				// we have merely .
+				else if (num.length == 1)
+				{
+					num = '';
+					isNegative = false;
+				}
+			}
+		}
+
+		return isNegative ? "-" + num : num;
+	}
+	
+    /**
+     *  Formats a number in exponent notation, into 
+     *  a number in decimal notation.
+     *
+     *  @param str String to process in exponent notation.
+     *
+     *  @return Formatted number.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */    
+    public function expandExponents(value:String):String
+    {
+        //Break string into component parts
+        var regExp:RegExp = /^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/;
+        var result:Object = regExp.exec(value);
+        var sign:String = result[1];
+        var first:String = result[2];
+        var last:String =  result[3];
+        var exp:int =  int(result[4]);
+                
+        //if we didn't get a good exponent to begin with, return what we can figure out
+        if (!exp)
+        {
+            return (sign ? sign : "") + (first ? first : "0") + (last ? "." + last : "");
+        }
+                
+        var r:String = first + last;
+                
+        var decimal:Boolean = exp < 0;
+                
+        if (decimal)
+        {   
+            var o:Number = -1 * (first.length + exp) + 1;
+            return (sign ? sign : "") + "0." + new Array(o).join("0") + r;
+        }
+        else
+        {
+            var i:Number = exp + first.length;
+            if (i >= r.length)
+                return (sign ? sign : "") + r + new Array(i - r.length + 1).join("0");
+            else
+                return (sign ? sign : "") + r.substr(0,i) + "." + r.substr(i); 
+        }
+    }
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/NumberBaseRoundType.as b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/NumberBaseRoundType.as
new file mode 100644
index 0000000..ebf61dc
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/formatters/NumberBaseRoundType.as
@@ -0,0 +1,89 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.formatters
+{
+	
+/**
+ *  The NumberBaseRoundType class defines the constant values for formatter properties
+ *  that specify a type of rounding. For example, you can set the 
+ *  <code>NumberFormatter.rounding</code> property using these constants.
+ *
+ *  @see mx.formatters.NumberFormatter
+ *  @see mx.formatters.NumberBase
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public final class NumberBaseRoundType
+{
+	// include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Rounds a number down to an integer that is both closest to, 
+	 *  and less than or equal to, the input number.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public static const DOWN:String = "down";
+
+	/**
+	 *  Rounds a number up or down to the nearest integer.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public static const NEAREST:String = "nearest";
+
+	/**
+	 *  Perform no rounding.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public static const NONE:String = "none";
+
+	/**
+	 *  Rounds a number up to an integer value that is both closest to, 
+	 *  and greater than or equal to, the input number.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public static const UP:String = "up";
+}
+
+}