You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/03/24 20:59:39 UTC

[18/37] git commit: [flex-asjs] [refs/heads/spark] - start fixing errors in the cross-compile

start fixing errors in the cross-compile


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/7bfeed8a
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/7bfeed8a
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/7bfeed8a

Branch: refs/heads/spark
Commit: 7bfeed8a0bb0743e02f6b6552935c443276eab32
Parents: 02064d1
Author: Alex Harui <ah...@apache.org>
Authored: Sat Feb 27 23:17:05 2016 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Feb 27 23:17:05 2016 -0800

----------------------------------------------------------------------
 .../src/main/flex/flex/display/DisplayObject.as | 367 +------------------
 .../flex/flex/display/DisplayObjectContainer.as |   2 +-
 .../MX/src/main/flex/flex/display/Graphics.as   |  51 +++
 .../MX/src/main/flex/flex/display/MovieClip.as  |  27 ++
 .../MX/src/main/flex/flex/display/Sprite.as     |  14 +-
 .../main/flex/flex/display/TopOfDisplayList.as  |   4 +
 .../main/flex/flex/events/ContextMenuEvent.as   |  12 +
 .../MX/src/main/flex/flex/events/Event.as       |   4 +
 .../src/main/flex/flex/events/IOErrorEvent.as   |  12 +
 .../src/main/flex/flex/events/ProgressEvent.as  |  12 +
 .../MX/src/main/flex/flex/events/TimerEvent.as  |  12 +
 .../MX/src/main/flex/flex/text/TextField.as     |   1 +
 .../MX/src/main/flex/flex/text/TextFieldType.as |  12 +
 .../projects/MX/src/main/flex/flex/ui/Mouse.as  |  50 +++
 .../src/main/flex/mx/binding/BindabilityInfo.as |  72 ++--
 .../MX/src/main/flex/mx/binding/Binding.as      | 106 ++++--
 .../MX/src/main/flex/mx/core/IContainer.as      |   3 +-
 .../src/main/flex/mx/core/ISpriteInterface.as   |   1 -
 .../mx/events/ChildExistenceChangedEvent.as     |   2 +-
 .../main/flex/mx/managers/CursorManagerImpl.as  |  96 +++--
 .../main/flex/mx/managers/IToolTipManager2.as   |   9 +-
 .../src/main/flex/mx/managers/SystemManager.as  |  82 +++--
 .../main/flex/mx/managers/ToolTipManagerImpl.as | 168 +++++----
 .../MX/src/main/flex/mx/states/AddItems.as      |  13 +-
 .../MX/src/main/flex/mx/states/State.as         |   2 +-
 .../flex/mx/utils/DescribeTypeCacheRecord.as    |  40 +-
 .../MX/src/main/flex/mx/utils/ObjectProxy.as    | 126 ++++++-
 .../MX/src/main/flex/mx/utils/OrderedObject.as  |  15 +-
 28 files changed, 749 insertions(+), 566 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/display/DisplayObject.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/DisplayObject.as b/frameworks/projects/MX/src/main/flex/flex/display/DisplayObject.as
index 0cf041b..2568582 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/DisplayObject.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/DisplayObject.as
@@ -18,370 +18,17 @@
 ////////////////////////////////////////////////////////////////////////////////
 package flex.display
 {
+import flex.display.TopOfDisplayList;
+
 import org.apache.flex.core.IUIBase;
+import org.apache.flex.events.IEventDispatcher;
 import org.apache.flex.geom.Point;
 import org.apache.flex.geom.Rectangle;
 
-public interface DisplayObject
+public interface DisplayObject extends IEventDispatcher
 {
-/*
- *  The methods here would normally just be in IDisplayObject,
- *  but for backward compatibility, they have to be included
- *  directly into IFlexDisplayObject, so they are kept in 
- *  this separate include file.
- */
-
-    /**
-     *  @copy flash.display.DisplayObject#root
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get root():DisplayObject;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#stage
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    COMPILE::LATER
-    function get stage():Stage;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#name
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get name():String;
-    function set name(value:String):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#parent
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get parent():IUIBase;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#mask
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get mask():DisplayObject;
-    function set mask(value:DisplayObject):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#visible
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get visible():Boolean;
-    function set visible(value:Boolean):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#x
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get x():Number;
-    function set x(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#y
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get y():Number;
-    function set y(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#scaleX
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get scaleX():Number;
-    function set scaleX(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#scaleY
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get scaleY():Number;
-    function set scaleY(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#mouseX
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get mouseX():Number; // note: no setter
-
-
-    /**
-     *  @copy flash.display.DisplayObject#mouseY
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get mouseY():Number; // note: no setter
-
-
-    /**
-     *  @copy flash.display.DisplayObject#rotation
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get rotation():Number;
-    function set rotation(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#alpha
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get alpha():Number;
-    function set alpha(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#width
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get width():Number;
-    function set width(value:Number):void;
-
-    /**
-     *  @copy flash.display.DisplayObject#height
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get height():Number;
-    function set height(value:Number):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#cacheAsBitmap
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get cacheAsBitmap():Boolean;
-    function set cacheAsBitmap(value:Boolean):void;
-
-    /**
-     *  @copy flash.display.DisplayObject#opaqueBackground
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get opaqueBackground():Object;
-    function set opaqueBackground(value:Object):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#scrollRect
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get scrollRect():Rectangle;
-    function set scrollRect(value:Rectangle):void;
-
-
-    /**
-     *  @copy flash.display.DisplayObject#filters
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get filters():Array;
-    function set filters(value:Array):void;
-
-    /**
-     *  @copy flash.display.DisplayObject#blendMode
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get blendMode():String;
-    function set blendMode(value:String):void;
-
-    /**
-     *  @copy flash.display.DisplayObject#transform
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    COMPILE::LATER
-    function get transform():Transform;
-    COMPILE::LATER
-    function set transform(value:Transform):void;
-
-    /**
-     *  @copy flash.display.DisplayObject#scale9Grid
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function get scale9Grid():Rectangle;
-    function set scale9Grid(innerRectangle:Rectangle):void;
-
-    /**
-     *  @copy flash.display.DisplayObject#globalToLocal()
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function globalToLocal(point:Point):Point;
-
-    /**
-     *  @copy flash.display.DisplayObject#localToGlobal()
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function localToGlobal(point:Point):Point;
-
-    /**
-     *  @copy flash.display.DisplayObject#getBounds()
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function getBounds(targetCoordinateSpace:DisplayObject):Rectangle;
-
-    /**
-     *  @copy flash.display.DisplayObject#getRect()
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function getRect(targetCoordinateSpace:DisplayObject):Rectangle;
-
-    /**
-     *  @copy flash.display.DisplayObject#loaderInfo
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    COMPILE::LATER
-    function get loaderInfo() : LoaderInfo;
-
-    /**
-     *  @copy flash.display.DisplayObject#hitTestObject()
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function hitTestObject(obj:DisplayObject):Boolean;
-
-    /**
-     *  @copy flash.display.DisplayObject#hitTestPoint()
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    function hitTestPoint(x:Number, y:Number, shapeFlag:Boolean=false):Boolean;
-
-    /**
-     *  @copy flash.display.DisplayObject#accessibilityProperties
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    COMPILE::LATER
-    function get accessibilityProperties() : AccessibilityProperties;
-    COMPILE::LATER
-    function set accessibilityProperties( value : AccessibilityProperties ) : void;
-    
+	include "../../mx/core/IDisplayObjectInterface.as"    
+	
+	function get topOfDisplayList():TopOfDisplayList;
 }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/display/DisplayObjectContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/DisplayObjectContainer.as b/frameworks/projects/MX/src/main/flex/flex/display/DisplayObjectContainer.as
index 939725a..926064a 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/DisplayObjectContainer.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/DisplayObjectContainer.as
@@ -23,6 +23,6 @@ package flex.display
 
 	public interface DisplayObjectContainer extends DisplayObject, IUIBase
 	{
-		
+		include "../../mx/core/IDisplayObjectContainerInterface.as"    
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/display/Graphics.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/Graphics.as b/frameworks/projects/MX/src/main/flex/flex/display/Graphics.as
new file mode 100644
index 0000000..e439e1e
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/display/Graphics.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flex.display
+{
+	import org.apache.flex.core.graphics.GraphicsContainer;
+	import org.apache.flex.core.graphics.SolidColor;
+	
+	public class Graphics
+	{
+		private var host:GraphicsContainer;
+		
+		public function Graphics(host:GraphicsContainer)
+		{
+			this.host = host;
+		}
+		
+		public function beginFill(color:uint, alpha:Number = 1.0):void
+		{
+			var sc:SolidColor = new SolidColor();
+			sc.color = color;
+			host.fill = sc;
+		}
+		
+		public function drawRect(x:Number, y:Number, width:Number, height:Number):void
+		{
+			host.drawRect(x, y, width, height);	
+		}
+		
+		public function endFill():void
+		{
+			// really, we should queue up the drawing commands and execute them here.
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/display/MovieClip.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/MovieClip.as b/frameworks/projects/MX/src/main/flex/flex/display/MovieClip.as
new file mode 100644
index 0000000..53e5eb1
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/display/MovieClip.as
@@ -0,0 +1,27 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flex.display
+{
+	import org.apache.flex.core.UIBase;
+	
+	public class MovieClip extends Sprite
+	{
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as b/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
index ff3e16e..e0ce060 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/Sprite.as
@@ -19,7 +19,19 @@
 
 package flex.display
 {
-	public interface Sprite extends InteractiveObject
+	import org.apache.flex.core.graphics.GraphicsContainer;
+	
+	public class Sprite extends GraphicsContainer implements InteractiveObject
 	{
+		private var _name:String;
+		public function get name():String
+		{
+			return _name;
+		}
+		public function set name(value:String):void
+		{
+			_name = value;
+		}
+		
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/display/TopOfDisplayList.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/display/TopOfDisplayList.as b/frameworks/projects/MX/src/main/flex/flex/display/TopOfDisplayList.as
index 41ef735..459331e 100644
--- a/frameworks/projects/MX/src/main/flex/flex/display/TopOfDisplayList.as
+++ b/frameworks/projects/MX/src/main/flex/flex/display/TopOfDisplayList.as
@@ -23,6 +23,10 @@ COMPILE::AS3
 {
 	import flash.display.Stage;
 }
+COMPILE::JS
+{
+	import org.apache.flex.core.UIBase;
+}
 
 COMPILE::AS3
 public class TopOfDisplayList extends Stage

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/events/ContextMenuEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/ContextMenuEvent.as b/frameworks/projects/MX/src/main/flex/flex/events/ContextMenuEvent.as
new file mode 100644
index 0000000..caad1be
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/events/ContextMenuEvent.as
@@ -0,0 +1,12 @@
+package flex.events
+{	
+	public class ContextMenuEvent extends Event
+	{
+		public function ContextMenuEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+		{
+			super(type, bubbles, cancelable);
+		}
+		
+		public static const MENU_SELECT:String = "menuSelect";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/events/Event.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/Event.as b/frameworks/projects/MX/src/main/flex/flex/events/Event.as
index 558afa5..7260f83 100644
--- a/frameworks/projects/MX/src/main/flex/flex/events/Event.as
+++ b/frameworks/projects/MX/src/main/flex/flex/events/Event.as
@@ -9,8 +9,12 @@ package flex.events
 			super(type, bubbles, cancelable);
 		}
 		
+		protected var bubbles:Boolean;
+		protected var cancelable:Boolean;
+		
 		public static const ADDED:String = "added";
 		public static const CHANGE:String = "change";
+		public static const COMPLETE:String = "change";
 		public static const ENTER_FRAME:String = "enterFrame";
 		public static const REMOVED:String = "removed";
 		public static const REMOVED_FROM_STAGE:String = "removedFromStage";

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/events/IOErrorEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/IOErrorEvent.as b/frameworks/projects/MX/src/main/flex/flex/events/IOErrorEvent.as
new file mode 100644
index 0000000..bfda542
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/events/IOErrorEvent.as
@@ -0,0 +1,12 @@
+package flex.events
+{	
+	public class IOErrorEvent extends Event
+	{
+		public function IOErrorEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+		{
+			super(type, bubbles, cancelable);
+		}
+		
+		public static const IO_ERROR:String = "ioError";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/events/ProgressEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/ProgressEvent.as b/frameworks/projects/MX/src/main/flex/flex/events/ProgressEvent.as
new file mode 100644
index 0000000..30e2289
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/events/ProgressEvent.as
@@ -0,0 +1,12 @@
+package flex.events
+{	
+	public class ProgressEvent extends Event
+	{
+		public function ProgressEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+		{
+			super(type, bubbles, cancelable);
+		}
+		
+		public static const PROGRESS:String = "progress";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as b/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
new file mode 100644
index 0000000..9864b85
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/events/TimerEvent.as
@@ -0,0 +1,12 @@
+package flex.events
+{	
+	public class TimerEvent extends Event
+	{
+		public function TimerEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+		{
+			super(type, bubbles, cancelable);
+		}
+		
+		public static const TIMER:String = "timer";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as b/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
index a60bac1..4de38f3 100644
--- a/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
+++ b/frameworks/projects/MX/src/main/flex/flex/text/TextField.as
@@ -6,6 +6,7 @@ COMPILE::AS3
 }
 COMPILE::JS
 {
+	import mx.core.IUITextField;
 	import org.apache.flex.html.Label;
 }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/text/TextFieldType.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/text/TextFieldType.as b/frameworks/projects/MX/src/main/flex/flex/text/TextFieldType.as
new file mode 100644
index 0000000..39df8a0
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/text/TextFieldType.as
@@ -0,0 +1,12 @@
+package flex.text
+{
+	public class TextFieldType
+	{
+		public function TextFieldType()
+		{
+		}
+		
+		public static const INPUT:String = "input";
+		public static const DYNAMIC:String = "dynamic";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/flex/ui/Mouse.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/flex/ui/Mouse.as b/frameworks/projects/MX/src/main/flex/flex/ui/Mouse.as
new file mode 100644
index 0000000..68e39f6
--- /dev/null
+++ b/frameworks/projects/MX/src/main/flex/flex/ui/Mouse.as
@@ -0,0 +1,50 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flex.ui
+{
+	public class Mouse
+	{
+		public function Mouse()
+		{
+		}
+		
+		COMPILE::JS
+		private static var styleElement:HTMLStyleElement;
+		
+		COMPILE::JS
+		public static function hide():void
+		{
+			if (!styleElement)
+				styleElement = document.createElement("STYLE");
+			var css:CSSStyleSheet = styleElement.sheet as CSSStyleSheet;
+			css.insertRule("* { cursor: none; }", 0);
+		}
+		
+		COMPILE::JS
+		public static function show():void
+		{
+			if (!styleElement)
+				return;
+			var css:CSSStyleSheet = styleElement.sheet as CSSStyleSheet;
+			css.deleteRule(0);
+		}
+		
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/binding/BindabilityInfo.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/binding/BindabilityInfo.as b/frameworks/projects/MX/src/main/flex/mx/binding/BindabilityInfo.as
index 5cbf6ef..dec8f6a 100644
--- a/frameworks/projects/MX/src/main/flex/mx/binding/BindabilityInfo.as
+++ b/frameworks/projects/MX/src/main/flex/mx/binding/BindabilityInfo.as
@@ -19,9 +19,13 @@
 
 package mx.binding
 {
-
 import mx.events.PropertyChangeEvent;
 
+import org.apache.flex.reflection.MetaDataArgDefinition;
+import org.apache.flex.reflection.MetaDataDefinition;
+import org.apache.flex.reflection.MethodDefinition;
+import org.apache.flex.reflection.TypeDefinition;
+
 [ExcludeClass]
 
 /**
@@ -114,7 +118,7 @@ public class BindabilityInfo
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
 	 */
-	public function BindabilityInfo(typeDescription:XML)
+	public function BindabilityInfo(typeDescription:TypeDefinition)
 	{
 		super();
 
@@ -130,7 +134,7 @@ public class BindabilityInfo
 	/**
 	 *  @private
 	 */
-	private var typeDescription:XML;
+	private var typeDescription:TypeDefinition;
 	
 	/**
 	 *  @private
@@ -169,16 +173,33 @@ public class BindabilityInfo
 			changeEvents = copyProps(getClassChangeEvents(), {});
 
 			// Get child-specific events.
-			var childDesc:XMLList =
-				typeDescription.accessor.(@name == childName) +
-				typeDescription.method.(@name == childName);
+			var childDesc:Array = [];
+			for each (var p:MethodDefinition in typeDescription.accessors)
+			{
+				if (p.name == childName)
+				{
+					childDesc.push(p);
+					break;
+				}
+			}
+			if (childName == null)
+			{
+				for each (var p:MethodDefinition in typeDescription.methods)
+				{
+					if (p.name == childName)
+					{
+						childDesc.push(p);
+						break;
+					}
+				}				
+			}
 			
 			var numChildren:int = childDesc.length();
 
 			if (numChildren == 0)
 			{
 				// we've been asked for events on an unknown property
-				if (!typeDescription.@dynamic)
+				if (!typeDescription.dynamic)
 				{
 					trace("warning: no describeType entry for '" +
 						  childName + "' on non-dynamic type '" +
@@ -194,7 +215,8 @@ public class BindabilityInfo
 						  "':\n" + childDesc);
 				}
 
-				addBindabilityEvents(childDesc.metadata, changeEvents);
+				var prop:MethodDefinition = childDesc[0];
+				addBindabilityEvents(prop.metadata, changeEvents);
 			}
 
 			childChangeEvents[childName] = changeEvents;
@@ -229,13 +251,18 @@ public class BindabilityInfo
 	/**
 	 *  @private
 	 */
-	private function addBindabilityEvents(metadata:XMLList,
+	private function addBindabilityEvents(metadata:Array,
 										  eventListObj:Object):void
 	{
-		addChangeEvents(metadata.(@name == BINDABLE), eventListObj, true);
-		addChangeEvents(metadata.(@name == CHANGE_EVENT), eventListObj, true);
-		addChangeEvents(metadata.(@name == NON_COMMITTING_CHANGE_EVENT),
-						eventListObj, false);
+		for each (var p:MetaDataDefinition in metadata)
+		{
+			if (p.name == BINDABLE)
+				addChangeEvents(p.args, eventListObj, true);
+			else if (p.name == CHANGE_EVENT)
+				addChangeEvents(p.args, eventListObj, true);
+			else if (p.name == NON_COMMITTING_CHANGE_EVENT)
+				addChangeEvents(p.args, eventListObj, false);
+		}
 	}
 
 	/**
@@ -244,22 +271,21 @@ public class BindabilityInfo
 	 *  to an event list object.
 	 *  Note: metadata's first arg value is assumed to be change event name.
 	 */
-	private function addChangeEvents(metadata:XMLList, eventListObj:Object, isCommit:Boolean):void
+	private function addChangeEvents(metadata:Array, eventListObj:Object, isCommit:Boolean):void
 	{
-		for each (var md:XML in metadata)
+		var atLeastOne:Boolean = false;
+		for each (var md:MetaDataArgDefinition in metadata)
 		{
-			var arg:XMLList = md.arg;
-			if (arg.length() > 0)
+			if (md.value)
 			{
-				var eventName:String = arg[0].@value;
+				var eventName:String = md.@value;
 				eventListObj[eventName] = isCommit;
-			}
-			else
-			{
-				trace("warning: unconverted Bindable metadata in class '" +
-					  typeDescription.@name + "'");
+				atLeastOne = true;
 			}
 		}
+		if (!atLeastOne)
+			trace("warning: unconverted Bindable metadata in class '" +
+				typeDescription.name + "'");
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/binding/Binding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/binding/Binding.as b/frameworks/projects/MX/src/main/flex/mx/binding/Binding.as
index a8c569a..2cdca49 100644
--- a/frameworks/projects/MX/src/main/flex/mx/binding/Binding.as
+++ b/frameworks/projects/MX/src/main/flex/mx/binding/Binding.as
@@ -160,7 +160,7 @@ public class Binding
      *  We will resynch with our binding if isEnabled is set to true
      *  and one or more of our watchers fired while we were disabled.
      */
-    mx_internal var disabledRequests:Dictionary;
+    mx_internal var disabledRequests:Array;
 
 	/**
  	 *  @private
@@ -357,8 +357,16 @@ public class Binding
         }
         catch(error:Error)
         {
-            if (allowedErrors[error.errorID] == null)
-                throw error;
+			COMPILE::AS3
+			{
+				if (allowedErrors[error.errorID] == null)
+					throw error;					
+			}
+			COMPILE::JS
+			{
+				if (allowedErrors[error.name] == null)
+					throw error;					
+			}
         }
         finally
         {
@@ -375,9 +383,9 @@ public class Binding
         if (o != null)
         {
             disabledRequests = (disabledRequests != null) ? disabledRequests : 
-                new Dictionary(true);
+				[];
             
-            disabledRequests[o] = true;
+            disabledRequests.push(o);
         }
     }  
     
@@ -389,7 +397,7 @@ public class Binding
     {
         if (disabledRequests != null)
         {
-            for (var key:Object in disabledRequests) 
+            for each (var key:Object in disabledRequests) 
             {
                 execute(key);
             }
@@ -445,21 +453,42 @@ public class Binding
 	            //   Error #1055: - has no properties.
 	            //   Error #1069: Property - not found on - and there is no default value
 	            // We allow any other errors to be thrown.
-	            if ((error.errorID != 1006) &&
-	                (error.errorID != 1009) &&
-	                (error.errorID != 1010) &&
-	                (error.errorID != 1055) &&
-	                (error.errorID != 1069))
-	            {
-	                throw error;
-	            }
-	            else
-	            {
-	                if (BindingManager.debugDestinationStrings[destString])
-	                {
-	                    trace("Binding: destString = " + destString + ", error = " + error);
-	                }
-	            }
+				COMPILE::AS3
+				{
+					if ((error.errorID != 1006) &&
+						(error.errorID != 1009) &&
+						(error.errorID != 1010) &&
+						(error.errorID != 1055) &&
+						(error.errorID != 1069))
+					{
+						throw error;
+					}
+					else
+					{
+						if (BindingManager.debugDestinationStrings[destString])
+						{
+							trace("Binding: destString = " + destString + ", error = " + error);
+						}
+					}						
+				}
+				COMPILE::JS
+				{
+					if ((error.name != 1006) &&
+						(error.name != 1009) &&
+						(error.name != 1010) &&
+						(error.name != 1055) &&
+						(error.name != 1069))
+					{
+						throw error;
+					}
+					else
+					{
+						if (BindingManager.debugDestinationStrings[destString])
+						{
+							trace("Binding: destString = " + destString + ", error = " + error);
+						}
+					}
+				}
 			}
         }
 
@@ -470,6 +499,7 @@ public class Binding
 	 *	@private
 	 *  true if XMLLists x and y contain the same node sequence.
 	 */
+	COMPILE::LATER
 	private static function nodeSeqEqual(x:XMLList, y:XMLList):Boolean
 	{
 		var n:uint = x.length();
@@ -504,18 +534,28 @@ public class Binding
         	//	Suppress binding assignments on non-simple XML: identical single nodes, or
         	//	lists over identical node sequences.
 			//	Note: outer tests are inline for efficiency
-        	if (!(lastValue is XML && lastValue.hasComplexContent() && lastValue === value) &&
-        		!(lastValue is XMLList && lastValue.hasComplexContent() && value is XMLList &&
-        			nodeSeqEqual(lastValue as XMLList, value as XMLList)))
-        	{
-	            destFunc.call(document, value);
-
-                if(destFuncFailed == false) {
-                    //	Note: state is not updated if destFunc throws
-                    lastValue = value;
-                    hasHadValue = true;
-	            }
-	        }
+			COMPILE::LATER
+			{
+	        	if (!(lastValue is XML && lastValue.hasComplexContent() && lastValue === value) &&
+	        		!(lastValue is XMLList && lastValue.hasComplexContent() && value is XMLList &&
+	        			nodeSeqEqual(lastValue as XMLList, value as XMLList)))
+	        	{
+		            destFunc.call(document, value);
+	
+	                if(destFuncFailed == false) {
+	                    //	Note: state is not updated if destFunc throws
+	                    lastValue = value;
+	                    hasHadValue = true;
+		            }
+		        }
+			}
+			destFunc.call(document, value);
+			
+			if(destFuncFailed == false) {
+				//	Note: state is not updated if destFunc throws
+				lastValue = value;
+				hasHadValue = true;
+			}
         }
     }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/core/IContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/IContainer.as b/frameworks/projects/MX/src/main/flex/mx/core/IContainer.as
index a482148..7dfa535 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/IContainer.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/IContainer.as
@@ -41,16 +41,17 @@ COMPILE::AS3
 	import flash.display.DisplayObject;
 	import flash.display.Sprite;		
 	import flash.geom.Rectangle;
+	import flash.display.Graphics;
 }
 COMPILE::JS
 {
 	import flex.display.DisplayObject;
 	import flex.display.Sprite;		
 	import org.apache.flex.geom.Rectangle;
+	import flex.display.Graphics;
 }
 COMPILE::LATER
 {
-	import flash.display.Graphics;
 	import flash.media.SoundTransform;
 }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/core/ISpriteInterface.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/core/ISpriteInterface.as b/frameworks/projects/MX/src/main/flex/mx/core/ISpriteInterface.as
index d7d9757..4639a33 100644
--- a/frameworks/projects/MX/src/main/flex/mx/core/ISpriteInterface.as
+++ b/frameworks/projects/MX/src/main/flex/mx/core/ISpriteInterface.as
@@ -30,7 +30,6 @@
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-	COMPILE::LATER
     function get graphics():Graphics;
 
     /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/events/ChildExistenceChangedEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/events/ChildExistenceChangedEvent.as b/frameworks/projects/MX/src/main/flex/mx/events/ChildExistenceChangedEvent.as
index 488cab4..27f7ab3 100644
--- a/frameworks/projects/MX/src/main/flex/mx/events/ChildExistenceChangedEvent.as
+++ b/frameworks/projects/MX/src/main/flex/mx/events/ChildExistenceChangedEvent.as
@@ -28,7 +28,7 @@ COMPILE::JS
 {
 	import flex.display.DisplayObject;		
 }
-import org.apache.flex.events.Event;
+import flex.events.Event;
 
 /**
  *  Represents events that are dispatched when a the child of a control

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/managers/CursorManagerImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/CursorManagerImpl.as b/frameworks/projects/MX/src/main/flex/mx/managers/CursorManagerImpl.as
index a66b83e..788b56e 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/CursorManagerImpl.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/CursorManagerImpl.as
@@ -20,26 +20,46 @@
 package mx.managers
 {
 
-import flash.display.DisplayObject;
-import flash.display.DisplayObjectContainer;
-import flash.display.InteractiveObject;
-import flash.display.Sprite;
-import flash.events.ContextMenuEvent;
-import flash.events.Event;
-import flash.events.EventDispatcher;
-import flash.events.IEventDispatcher;
-import flash.events.IOErrorEvent;
-import flash.events.MouseEvent;
-import flash.events.ProgressEvent;
-import flash.geom.Point;
-import flash.text.TextField;
-import flash.text.TextFieldType;
-import flash.ui.Mouse;
+COMPILE::AS3
+{
+	import flash.display.DisplayObject;
+	import flash.display.DisplayObjectContainer;
+	import flash.display.InteractiveObject;
+	import flash.display.Sprite;		
+	import flash.events.IOErrorEvent;
+	import flash.events.Event;
+	import flash.events.ProgressEvent;
+	import flash.events.ContextMenuEvent;
+	import flash.text.TextField;
+	import flash.text.TextFieldType;
+	import flash.ui.Mouse;
+}
+COMPILE::JS
+{
+	import flex.display.DisplayObject;
+	import flex.display.DisplayObjectContainer;
+	import flex.display.InteractiveObject;
+	import flex.display.Sprite;
+	import flex.events.ContextMenuEvent;
+	import flex.events.Event;
+	import flex.events.IOErrorEvent;
+	import flex.events.ProgressEvent;
+	import flex.text.TextField;
+	import flex.text.TextFieldType;
+	import flex.ui.Mouse;
+}
+import org.apache.flex.events.EventDispatcher;
+import org.apache.flex.events.IEventDispatcher;
+import org.apache.flex.events.MouseEvent;
+import org.apache.flex.geom.Point;
 import mx.core.FlexGlobals;
-import org.apache.flex.core.UIBase;
+import org.apache.flex.utils.PointUtils;
 import mx.core.mx_internal;
 import mx.core.ISystemCursorClient;
-import mx.core.IUIComponent;
+COMPILE::JS
+	{
+		import mx.core.UIComponent;		
+	}
 import mx.events.Request;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.StyleManager;
@@ -576,6 +596,7 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
     /**
      *  @private
      *  Decides what cursor to display.
+	 *  @flexjsignorecoercion flex.display.Sprite
      */
     private function showCurrentCursor():void 
     {
@@ -595,10 +616,13 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
 				{
 					// The first time a cursor is requested of the CursorManager,
 					// create a Sprite to hold the cursor symbol
-					cursorHolder = new UIBase();
+					cursorHolder = new UIComponent() as Sprite;
 					cursorHolder.name = "cursorHolder";
+					COMPILE::AS3
+					{
 					cursorHolder.mouseEnabled = false;
 					cursorHolder.mouseChildren = false;
+					}
                		systemManager.cursorChildren.addChild(cursorHolder);
 				}
             }
@@ -620,10 +644,13 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
                 
                 if (currentCursor)
                 {
-                    if (currentCursor is InteractiveObject)
-                        InteractiveObject(currentCursor).mouseEnabled = false;
-                    if (currentCursor is DisplayObjectContainer)
-                        DisplayObjectContainer(currentCursor).mouseChildren = false;
+					COMPILE::AS3
+					{
+						if (currentCursor is InteractiveObject)
+							InteractiveObject(currentCursor).mouseEnabled = false;
+						if (currentCursor is DisplayObjectContainer)
+							DisplayObjectContainer(currentCursor).mouseChildren = false;							
+					}
                     cursorHolder.addChild(currentCursor);
                     
                     addContextMenuHandlers();
@@ -633,8 +660,8 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
                     if (systemManager is SystemManager)
                     {
 						pt = new Point(SystemManager(systemManager).mouseX + item.x, SystemManager(systemManager).mouseY + item.y);
-						pt = SystemManager(systemManager).localToGlobal(pt);
-						pt = cursorHolder.parent.globalToLocal(pt);
+						pt = PointUtils.localToGlobal(pt, systemManager);
+						pt = PointUtils.globalToLocal(pt, cursorHolder.parent);
                     	cursorHolder.x = pt.x;
                     	cursorHolder.y = pt.y;
                     }
@@ -642,8 +669,8 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
                     else if (systemManager is DisplayObject)
                     {
 						pt = new Point(DisplayObject(systemManager).mouseX + item.x, DisplayObject(systemManager).mouseY + item.y);
-						pt = DisplayObject(systemManager).localToGlobal(pt);
-						pt = cursorHolder.parent.globalToLocal(pt);
+						pt = PointUtils.localToGlobal(pt, systemManager);
+						pt = PointUtils.globalToLocal(pt, cursorHolder.parent);
                     	cursorHolder.x = DisplayObject(systemManager).mouseX + item.x;
                     	cursorHolder.y = DisplayObject(systemManager).mouseY + item.y;
                     }
@@ -756,11 +783,14 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
             const app:InteractiveObject = systemManager.document as InteractiveObject;
         	const sm:InteractiveObject = systemManager as InteractiveObject;
         	
-        	if (app && app.contextMenu)
-        		app.contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true);
-
-        	if (sm && sm.contextMenu)
-        		sm.contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true);
+			COMPILE::AS3
+			{
+				if (app && app.contextMenu)
+					app.contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true);
+				
+				if (sm && sm.contextMenu)
+					sm.contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true);					
+			}
    
         	listenForContextMenu = false; 	
         }
@@ -875,8 +905,8 @@ public class CursorManagerImpl extends EventDispatcher implements ICursorManager
     mx_internal function mouseMoveHandler(event:MouseEvent):void
     {
         
-		var pt:Point = new Point(event.stageX, event.stageY);
-		pt = cursorHolder.parent.globalToLocal(pt);
+		var pt:Point = new Point(event.screenX, event.screenY);
+		pt = PointUtils.globalToLocal(pt, cursorHolder.parent);
 		pt.x += currentCursorXOffset;
 		pt.y += currentCursorYOffset;
        	cursorHolder.x = pt.x;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/managers/IToolTipManager2.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/IToolTipManager2.as b/frameworks/projects/MX/src/main/flex/mx/managers/IToolTipManager2.as
index 05b0c24..db5af2d 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/IToolTipManager2.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/IToolTipManager2.as
@@ -20,7 +20,14 @@
 package mx.managers
 {
 
-import flash.display.DisplayObject;
+COMPILE::AS3
+{
+	import flash.display.DisplayObject;		
+}
+COMPILE::JS
+{
+	import flex.display.DisplayObject;		
+}
 
 import mx.core.IToolTip;
 import mx.core.IUIComponent;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as b/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
index 1a6d60a..649a9b5 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/SystemManager.as
@@ -20,13 +20,25 @@
 package mx.managers
 {
 
-import flash.display.DisplayObject;
-import flash.display.DisplayObjectContainer;
-import flash.display.Graphics;
+COMPILE::AS3
+{
+	import flash.display.DisplayObject;
+	import flash.display.DisplayObjectContainer;
+	import flash.display.Graphics;
+	import flash.display.MovieClip;
+	import flash.display.Sprite;
+	import flash.display.LoaderInfo;
+		
+}
+COMPILE::JS
+{
+	import flex.display.DisplayObject;
+	import flex.display.DisplayObjectContainer;
+	import flex.display.Graphics;
+	import flex.display.MovieClip;
+	import flex.display.Sprite;	
+}
 import flash.display.Loader;
-import flash.display.LoaderInfo;
-import flash.display.MovieClip;
-import flash.display.Sprite;
 import flash.display.Stage;
 import flash.display.StageAlign;
 import flash.display.StageQuality;
@@ -43,8 +55,8 @@ import flash.text.Font;
 import flash.text.TextFormat;
 import flash.ui.Keyboard;
 import flash.utils.Dictionary;
-import flash.utils.Timer;
-import flash.utils.getQualifiedClassName;
+import org.apache.flex.utils.Timer;
+import org.apache.flex.reflection.getQualifiedClassName;
 
 import mx.core.IChildList;
 import mx.core.IFlexDisplayObject;
@@ -240,14 +252,17 @@ public class SystemManager extends MovieClip
 
         super();
 
-        // Loaded SWFs don't get a stage right away
-        // and shouldn't override the main SWF's setting anyway.
-        if (stage)
-        {
-            stage.scaleMode = StageScaleMode.NO_SCALE;
-            stage.align = StageAlign.TOP_LEFT;
-            stage.quality = StageQuality.HIGH;
-        }
+		COMPILE::AS3
+		{
+			// Loaded SWFs don't get a stage right away
+			// and shouldn't override the main SWF's setting anyway.
+			if (stage)
+			{
+				stage.scaleMode = StageScaleMode.NO_SCALE;
+				stage.align = StageAlign.TOP_LEFT;
+				stage.quality = StageQuality.HIGH;
+			}				
+		}
 
         // If we don't have a stage then we are not top-level,
         // unless there are no other top-level managers, in which
@@ -261,14 +276,24 @@ public class SystemManager extends MovieClip
         if (topLevel)
             SystemManagerGlobals.topLevelSystemManagers.push(this);
 
-        // Make sure to stop the playhead on the current frame.
-        stop();
+		COMPILE::AS3
+		{
+			// Make sure to stop the playhead on the current frame.
+			stop();				
+		}
 
         // Listen for the last frame (param is 0-indexed) to be executed.
         //addFrameScript(totalFrames - 1, frameEndHandler);
 
-        if (root && root.loaderInfo)
-            root.loaderInfo.addEventListener(Event.INIT, initHandler);
+		COMPILE::AS3
+		{
+			if (root && root.loaderInfo)
+				root.loaderInfo.addEventListener(Event.INIT, initHandler);				
+		}
+		COMPILE::JS
+		{
+			initHandler(null);
+		}
             
     }
 
@@ -2024,13 +2049,16 @@ public class SystemManager extends MovieClip
     {
         var mainClassName:String = info()["mainClassName"];
 
-        if (mainClassName == null)
-        {
-            var url:String = loaderInfo.loaderURL;
-            var dot:int = url.lastIndexOf(".");
-            var slash:int = url.lastIndexOf("/");
-            mainClassName = url.substring(slash + 1, dot);
-        }
+		COMPILE::AS3
+		{
+			if (mainClassName == null)
+			{
+				var url:String = loaderInfo.loaderURL;
+				var dot:int = url.lastIndexOf(".");
+				var slash:int = url.lastIndexOf("/");
+				mainClassName = url.substring(slash + 1, dot);
+			}				
+		}
 
         var mainClass:Class = Class(getDefinitionByName(mainClassName));
         

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/managers/ToolTipManagerImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/managers/ToolTipManagerImpl.as b/frameworks/projects/MX/src/main/flex/mx/managers/ToolTipManagerImpl.as
index 8a341fe..a882de4 100644
--- a/frameworks/projects/MX/src/main/flex/mx/managers/ToolTipManagerImpl.as
+++ b/frameworks/projects/MX/src/main/flex/mx/managers/ToolTipManagerImpl.as
@@ -19,37 +19,47 @@
 
 package mx.managers
 {
-
-    import flash.display.DisplayObject;
-    import flash.events.Event;
-    import flash.events.EventDispatcher;
-    import flash.events.MouseEvent;
-    import flash.events.TimerEvent;
-    import flash.geom.Point;
-    import flash.geom.Rectangle;
-    import flash.utils.Timer;
-
-    import mx.controls.ToolTip;
-    import mx.core.FlexGlobals;
-    import mx.core.FlexVersion;
-    import mx.core.IFlexDisplayObject;
-    import mx.core.IFlexModule;
-    import mx.core.IInvalidating;
-    import mx.core.ILayoutDirectionElement;
-    import mx.core.IToolTip;
-    import mx.core.IUIComponent;
-    import mx.core.IVisualElement;
-    import mx.core.LayoutDirection;
-    import mx.core.mx_internal;
-    import mx.effects.EffectManager;
-    import mx.effects.IAbstractEffect;
-    import mx.events.DynamicEvent;
-    import mx.events.EffectEvent;
-    import mx.events.ToolTipEvent;
-    import mx.styles.IStyleClient;
-    import mx.validators.IValidatorListener;
-
-    use namespace mx_internal;
+COMPILE::AS3
+{
+	import flash.display.DisplayObject;		
+	import flash.events.TimerEvent;
+}
+COMPILE::JS
+{
+	import mx.managers.SystemManagerGlobals;
+	
+	import flex.display.DisplayObject;
+	import flex.events.TimerEvent;
+}
+import org.apache.flex.events.Event;
+import org.apache.flex.events.EventDispatcher;
+import org.apache.flex.events.MouseEvent;
+import org.apache.flex.geom.Point;
+import org.apache.flex.geom.Rectangle;
+import org.apache.flex.utils.PointUtils;
+import org.apache.flex.utils.Timer;
+
+import mx.controls.ToolTip;
+import mx.core.FlexGlobals;
+import mx.core.FlexVersion;
+import mx.core.IFlexDisplayObject;
+import mx.core.IFlexModule;
+import mx.core.IInvalidating;
+import mx.core.ILayoutDirectionElement;
+import mx.core.IToolTip;
+import mx.core.IUIComponent;
+import mx.core.IVisualElement;
+import mx.core.LayoutDirection;
+import mx.core.mx_internal;
+import mx.effects.EffectManager;
+import mx.effects.IAbstractEffect;
+import mx.events.DynamicEvent;
+import mx.events.EffectEvent;
+import mx.events.ToolTipEvent;
+import mx.styles.IStyleClient;
+import mx.validators.IValidatorListener;
+
+use namespace mx_internal;
 
 [ExcludeClass]
 
@@ -129,6 +139,10 @@ public class ToolTipManagerImpl extends EventDispatcher
         if (hasEventListener("initialize"))
     		dispatchEvent(new Event("initialize"));
 
+		COMPILE::JS
+		{
+			SystemManagerGlobals.topLevelSystemManagers[0].addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);		
+		}
     }
 
     //--------------------------------------------------------------------------
@@ -686,34 +700,46 @@ public class ToolTipManagerImpl extends EventDispatcher
      *  @private
      *  Returns true if the mouse is over the specified target.
      */
-    private static function mouseIsOver(target:DisplayObject):Boolean
+    private function mouseIsOver(target:DisplayObject):Boolean
     {
-    	if (!target || !target.stage)
-    		return false;
-    		
-    	//SDK:13465 - If we pass through the above if block, then
-    	//we have a target component and its been added to the 
-    	//display list. If the mouse coordinates are (0,0), there 
-    	//is a chance the component has not been positioned yet 
-    	//and we'll end up mistakenly showing tooltips since the 
-    	//target hitTest will return true. 
-    	if ((target.stage.mouseX == 0)	 && (target.stage.mouseY == 0))
-    		return false;
-        
-        if (target is ILayoutManagerClient && !ILayoutManagerClient(target).initialized)
-            return false;
-		
-		if (target is IVisualElement && !IVisualElement(target).visible)
-			return false;
-		
-		if (target is IFlexDisplayObject && !IFlexDisplayObject(target).visible)
-			return false;
-    		
-        if (!isVisibleParentsIncluded(target))
-            return false;
-        
-    	return target.hitTestPoint(target.stage.mouseX,
-    							   target.stage.mouseY, true);
+		COMPILE::AS3
+		{
+			if (!target || !target.stage)
+				return false;
+			
+			//SDK:13465 - If we pass through the above if block, then
+			//we have a target component and its been added to the 
+			//display list. If the mouse coordinates are (0,0), there 
+			//is a chance the component has not been positioned yet 
+			//and we'll end up mistakenly showing tooltips since the 
+			//target hitTest will return true. 
+			if ((target.stage.mouseX == 0)	 && (target.stage.mouseY == 0))
+				return false;
+			
+			if (target is ILayoutManagerClient && !ILayoutManagerClient(target).initialized)
+				return false;
+			
+			if (target is IVisualElement && !IVisualElement(target).visible)
+				return false;
+			
+			if (target is IFlexDisplayObject && !IFlexDisplayObject(target).visible)
+				return false;
+			
+			if (!isVisibleParentsIncluded(target))
+				return false;
+			
+			return target.hitTestPoint(target.stage.mouseX,
+				target.stage.mouseY, true);				
+		}
+		COMPILE::JS
+		{
+			var screenPos:Point = new Point(target.x, target.y);
+			screenPos = PointUtils.localToGlobal(screenPos, target);
+			var screenX:Number = lastMouseEvent.screenX;
+			var screenY:Number = lastMouseEvent.screenY;
+			return ((screenPos.x <= screenX && screenX <= screenPos.x + target.width) &&
+					(screenPos.y <= screenY && screenY <= screenPos.y + target.height));
+		}
     }
     
     /**
@@ -968,9 +994,12 @@ public class ToolTipManagerImpl extends EventDispatcher
             currentTarget is IFlexModule)
             IFlexModule(currentToolTip).moduleFactory = IFlexModule(currentTarget).moduleFactory;
         
+		COMPILE::LATER
+		{
         if (hasEventListener("createTip"))
     		if (!dispatchEvent(new Event("createTip", false, true)))
 	    		return;
+		}
 
         var sm:ISystemManager = getSystemManager(currentTarget) as ISystemManager;
        	sm.topLevelSystemManager.toolTipChildren.addChild(currentToolTip as DisplayObject);
@@ -1221,8 +1250,8 @@ public class ToolTipManagerImpl extends EventDispatcher
                 y = screenHeight - toolTipHeight;
             
             var pos:Point = new Point(x, y);
-            pos = DisplayObject(sm).localToGlobal(pos);
-            pos = DisplayObject(sm.getSandboxRoot()).globalToLocal(pos);
+            pos = PointUtils.localToGlobal(pos, sm);
+            pos = PointUtils.globalToLocal(pos, sm.getSandboxRoot());
             x = pos.x;
             y = pos.y;
         }
@@ -1592,14 +1621,14 @@ public class ToolTipManagerImpl extends EventDispatcher
     {
         var upperLeft:Point = new Point(0, 0);
         
-        upperLeft = obj.localToGlobal(upperLeft);
+        upperLeft = PointUtils.localToGlobal(upperLeft, obj);
         
         // If the layout has been mirrored, then the 0,0 is the uppper
         // right corner; compensate here.
         if (mirror)
             upperLeft.x -= obj.width;
 
-        upperLeft = parent.globalToLocal(upperLeft);
+        upperLeft = PointUtils.globalToLocal(upperLeft, obj);
         
         return new Rectangle(upperLeft.x, upperLeft.y, obj.width, obj.height);
     }
@@ -1624,10 +1653,11 @@ public class ToolTipManagerImpl extends EventDispatcher
      *  @private
      *  This handler is called when the mouse moves out of an object
      *  with a toolTip.
+	 *  @flexjsignorecoercion flex.display.DisplayObject
      */
     mx_internal function toolTipMouseOutHandler(event:MouseEvent):void
     {
-        checkIfTargetChanged(event.relatedObject);
+        checkIfTargetChanged(event.relatedObject as DisplayObject);
     }
 
     /**
@@ -1644,10 +1674,11 @@ public class ToolTipManagerImpl extends EventDispatcher
      *  @private
      *  This handler is called when the mouse moves out of an object
      *  with an errorString.
+	 *  @flexjsignorecoercion flex.display.DisplayObject
      */
     mx_internal function errorTipMouseOutHandler(event:MouseEvent):void
     {
-        checkIfTargetChanged(event.relatedObject);
+        checkIfTargetChanged(event.relatedObject as DisplayObject);
     }
 
     /**
@@ -1711,6 +1742,15 @@ public class ToolTipManagerImpl extends EventDispatcher
     {
         reset();
     }
+	
+	COMPILE::JS
+	private var lastMouseEvent:MouseEvent;
+	
+	COMPILE::JS
+	private function mouseMoveHandler(event:MouseEvent):void
+	{
+		lastMouseEvent = event;
+	}
 
 }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as b/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
index b840bca..68be25a 100644
--- a/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
+++ b/frameworks/projects/MX/src/main/flex/mx/states/AddItems.as
@@ -19,9 +19,16 @@
 
 package mx.states 
 {
-import flash.display.DisplayObject;
-import flash.events.Event;
-import flash.events.IEventDispatcher;
+COMPILE::AS3
+{
+	import flash.display.DisplayObject;		
+}
+COMPILE::JS
+{
+	import flex.display.DisplayObject;			
+}
+import org.apache.flex.events.Event;
+import org.apache.flex.events.IEventDispatcher;
 
 import mx.binding.BindingManager;
 import mx.collections.IList;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/states/State.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/states/State.as b/frameworks/projects/MX/src/main/flex/mx/states/State.as
index 4e24e62..79ffc83 100644
--- a/frameworks/projects/MX/src/main/flex/mx/states/State.as
+++ b/frameworks/projects/MX/src/main/flex/mx/states/State.as
@@ -20,7 +20,7 @@
 package mx.states
 {
 
-import flash.events.EventDispatcher;
+import org.apache.flex.events.EventDispatcher;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/utils/DescribeTypeCacheRecord.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/utils/DescribeTypeCacheRecord.as b/frameworks/projects/MX/src/main/flex/mx/utils/DescribeTypeCacheRecord.as
index ea17f6c..dc8f00f 100644
--- a/frameworks/projects/MX/src/main/flex/mx/utils/DescribeTypeCacheRecord.as
+++ b/frameworks/projects/MX/src/main/flex/mx/utils/DescribeTypeCacheRecord.as
@@ -20,10 +20,13 @@
 package mx.utils 
 {
 
-import flash.utils.Proxy;
+import org.apache.flex.utils.Proxy;
+import org.apache.flex.reflection.TypeDefinition;
+COMPILE::AS3
+{
 import flash.utils.flash_proxy;
-
 use namespace flash_proxy;
+}
 
 [ExcludeClass]
 
@@ -60,7 +63,7 @@ public dynamic class DescribeTypeCacheRecord extends Proxy
     /**
      *  @private
      */
-    public var typeDescription:XML;
+    public var typeDescription:TypeDefinition;
     
     //----------------------------------
     //  typeName
@@ -94,6 +97,7 @@ public dynamic class DescribeTypeCacheRecord extends Proxy
     /**
      *  @private
      */
+	COMPILE::AS3
     override flash_proxy function getProperty(name:*):*
     {
         var result:* = cache[name];
@@ -106,10 +110,25 @@ public dynamic class DescribeTypeCacheRecord extends Proxy
         
         return result;
     }
+	COMPILE::JS
+	override public function getProperty(name:String):*
+	{
+		var result:* = cache[name];
+		
+		if (result === undefined)
+		{
+			result = DescribeTypeCache.extractValue(name, this);
+			cache[name] = result;
+		}
+		
+		return result;
+	}
+	
 
     /**
      *  @private
      */
+	COMPILE::AS3
     override flash_proxy function hasProperty(name:*):Boolean
     {
         if (name in cache)
@@ -124,6 +143,21 @@ public dynamic class DescribeTypeCacheRecord extends Proxy
         
         return true;
     }
+	COMPILE::JS
+	override public function hasProperty(name:String):Boolean
+	{
+		if (name in cache)
+			return true;
+		
+		var value:* = DescribeTypeCache.extractValue(name, this);       
+		
+		if (value === undefined)
+			return false;
+		
+		cache[name] = value;
+		
+		return true;
+	}
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/utils/ObjectProxy.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/utils/ObjectProxy.as b/frameworks/projects/MX/src/main/flex/mx/utils/ObjectProxy.as
index 03a8f51..b1f31f2 100644
--- a/frameworks/projects/MX/src/main/flex/mx/utils/ObjectProxy.as
+++ b/frameworks/projects/MX/src/main/flex/mx/utils/ObjectProxy.as
@@ -20,20 +20,30 @@
 package mx.utils
 {
 
+import org.apache.flex.events.EventDispatcher;
+import org.apache.flex.reflection.getQualifiedClassName;
+COMPILE::AS3
+{
 import flash.events.Event;
-import flash.events.EventDispatcher;
-import flash.utils.getQualifiedClassName;
 import flash.utils.IDataInput;
 import flash.utils.IDataOutput;
 import flash.utils.IExternalizable;
-import flash.utils.Proxy;
 import flash.utils.flash_proxy;
+}
+COMPILE::JS
+{
+	import org.apache.flex.events.Event;	
+}
+import org.apache.flex.utils.Proxy;
 import mx.core.IPropertyChangeNotifier;
 import mx.events.PropertyChangeEvent;
 import mx.events.PropertyChangeEventKind;
 
+COMPILE::AS3
+{
 use namespace flash_proxy;
 use namespace object_proxy;
+}
 
 [Bindable("propertyChange")]
 [RemoteClass(alias="flex.messaging.io.ObjectProxy")]
@@ -256,6 +266,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::LATER
     object_proxy function get object():Object
     {
         return _item;
@@ -269,6 +280,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @private
      *  Storage for the qualified type name.
      */
+	COMPILE::LATER
     private var _type:QName;
 
     /**
@@ -279,6 +291,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::LATER
     object_proxy function get type():QName
     {
         return _type;
@@ -287,6 +300,7 @@ public dynamic class ObjectProxy extends Proxy
     /**
      *  @private
      */
+	COMPILE::LATER
     object_proxy function set type(value:QName):void
     {
         _type = value;
@@ -348,6 +362,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     override flash_proxy function getProperty(name:*):*
     {
         // if we have a data proxy for this then
@@ -372,6 +387,31 @@ public dynamic class ObjectProxy extends Proxy
 
         return result;
     }
+	COMPILE::JS
+	override public function getProperty(name:String):*
+	{
+		// if we have a data proxy for this then
+		var result:*;
+		
+		if (notifiers[name.toString()])
+			return notifiers[name];
+		
+		result = _item[name];
+		
+		if (result)
+		{
+			if (_proxyLevel == 0 || ObjectUtil.isSimple(result))
+			{
+				return result;
+			}
+			else
+			{
+				result = object_proxy::getComplexProperty(name, result);
+			} // if we are proxying
+		}
+		
+		return result;
+	}
 
     /**
      *  Returns the value of the proxied object's method with the specified name.
@@ -388,6 +428,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     override flash_proxy function callProperty(name:*, ... rest):*
     {
         return _item[name].apply(_item, rest)
@@ -408,6 +449,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     override flash_proxy function deleteProperty(name:*):Boolean
     {
         var notifier:IPropertyChangeNotifier = IPropertyChangeNotifier(notifiers[name]);
@@ -433,18 +475,51 @@ public dynamic class ObjectProxy extends Proxy
 
         return deleted;
     }
+	COMPILE::JS
+	override public function deleteProperty(name:String):Boolean
+	{
+		var notifier:IPropertyChangeNotifier = IPropertyChangeNotifier(notifiers[name]);
+		if (notifier)
+		{
+			notifier.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE,
+				propertyChangeHandler);
+			delete notifiers[name];
+		}
+		
+		var oldVal:* = _item[name];
+		var deleted:Boolean = delete _item[name]; 
+		
+		if (dispatcher.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE))
+		{
+			var event:PropertyChangeEvent = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
+			event.kind = PropertyChangeEventKind.DELETE;
+			event.property = name;
+			event.oldValue = oldVal;
+			event.source = this;
+			dispatcher.dispatchEvent(event);
+		}
+		
+		return deleted;
+	}
 
     /**
      *  @private
      */
+	COMPILE::AS3
     override flash_proxy function hasProperty(name:*):Boolean
     {
         return(name in _item);
     }
+	COMPILE::JS
+	override public function hasProperty(name:String):Boolean
+	{
+		return(name in _item);
+	}
     
     /**
      *  @private
      */
+	COMPILE::AS3
     override flash_proxy function nextName(index:int):String
     {
         return propertyList[index -1];
@@ -453,6 +528,7 @@ public dynamic class ObjectProxy extends Proxy
     /**
      *  @private
      */
+	COMPILE::AS3
     override flash_proxy function nextNameIndex(index:int):int
     {
         if (index == 0)
@@ -473,6 +549,7 @@ public dynamic class ObjectProxy extends Proxy
     /**
      *  @private
      */
+	COMPILE::AS3
     override flash_proxy function nextValue(index:int):*
     {
         return _item[propertyList[index -1]];
@@ -492,6 +569,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     override flash_proxy function setProperty(name:*, value:*):void
     {
         var oldVal:* = _item[name];
@@ -523,6 +601,41 @@ public dynamic class ObjectProxy extends Proxy
             } 
         }
     }
+	COMPILE::JS
+	override public function setProperty(name:String, value:*):void
+	{
+		var oldVal:* = _item[name];
+		if (oldVal !== value)
+		{
+			// Update item.
+			_item[name] = value;
+			
+			// Stop listening for events on old item if we currently are.
+			var notifier:IPropertyChangeNotifier =
+				IPropertyChangeNotifier(notifiers[name]);
+			if (notifier)
+			{
+				notifier.removeEventListener(
+					PropertyChangeEvent.PROPERTY_CHANGE,
+					propertyChangeHandler);
+				delete notifiers[name];
+			}
+			
+			// Notify anyone interested.
+			if (dispatcher.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE))
+			{
+				COMPILE::LATER
+				{
+				if (name is QName)
+					name = QName(name).localName;
+				}
+				var event:PropertyChangeEvent =
+					PropertyChangeEvent.createUpdateEvent(
+						this, name.toString(), oldVal, value);
+				dispatcher.dispatchEvent(event);
+			} 
+		}
+	}
 
     //--------------------------------------------------------------------------
     //
@@ -590,6 +703,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function readExternal(input:IDataInput):void
     {
         var value:Object = input.readObject();
@@ -610,6 +724,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function writeExternal(output:IDataOutput):void
     {
         output.writeObject(_item);
@@ -655,6 +770,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function addEventListener(type:String, listener:Function,
                                      useCapture:Boolean = false,
                                      priority:int = 0,
@@ -690,6 +806,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function removeEventListener(type:String, listener:Function,
                                         useCapture:Boolean = false):void
     {
@@ -718,6 +835,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function dispatchEvent(event:Event):Boolean
     {
         return dispatcher.dispatchEvent(event);
@@ -743,6 +861,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function hasEventListener(type:String):Boolean
     {
         return dispatcher.hasEventListener(type);
@@ -768,6 +887,7 @@ public dynamic class ObjectProxy extends Proxy
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
+	COMPILE::AS3
     public function willTrigger(type:String):Boolean
     {
         return dispatcher.willTrigger(type);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7bfeed8a/frameworks/projects/MX/src/main/flex/mx/utils/OrderedObject.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MX/src/main/flex/mx/utils/OrderedObject.as b/frameworks/projects/MX/src/main/flex/mx/utils/OrderedObject.as
index f60067b..f1e05cb 100644
--- a/frameworks/projects/MX/src/main/flex/mx/utils/OrderedObject.as
+++ b/frameworks/projects/MX/src/main/flex/mx/utils/OrderedObject.as
@@ -203,7 +203,7 @@ public dynamic class OrderedObject extends Proxy
 	 *  @productversion Flex 3
 	 */
 	COMPILE::JS
-	override public function deleteProperty(name:*):Boolean
+	override public function deleteProperty(name:String):Boolean
 	{
 		var deleted:Boolean = delete valueMap[name]; 
 		
@@ -246,7 +246,7 @@ public dynamic class OrderedObject extends Proxy
         return(name in valueMap);
     }
 	COMPILE::JS
-	override protected function hasProperty(name:*):Boolean
+	override public function hasProperty(name:String):Boolean
 	{
 		return(name in valueMap);
 	}
@@ -272,9 +272,9 @@ public dynamic class OrderedObject extends Proxy
         return propertyList[index -1];
     }
 	COMPILE::JS
-	override public function nextName(index:int):String
+	override public function elementNames():Array
 	{
-		return propertyList[index -1];
+		return propertyList.slice();
 	}
 
     /**
@@ -297,11 +297,6 @@ public dynamic class OrderedObject extends Proxy
     {
         return valueMap[propertyList[index -1]];
     }
-	COMPILE::JS
-	override public function nextValue(index:int):*
-	{
-		return valueMap[propertyList[index -1]];
-	}
 
     /**
      *  Updates the specified property on the proxied object.
@@ -336,7 +331,7 @@ public dynamic class OrderedObject extends Proxy
         }
     }               
 	COMPILE::JS
-	override public function setProperty(name:*, value:*):void
+	override public function setProperty(name:String, value:*):void
 	{
 		var oldVal:* = valueMap[name];
 		if (oldVal !== value)