     }
 
     static var __amLocked:Boolean = false;
+    static var useBuiltinCursor:Boolean = false;
     static var cursorSprite:Sprite = null;
     static var globalCursorResource:String = null;
     static var lastCursorResource:String = null;
 
+    #passthrough {
+        private static var __builtinCursors:Object = null;
+        static function get builtinCursors () :Object {
+            if (__builtinCursors == null) {
+                var cursors:Object = {};
+                cursors[MouseCursor.ARROW] = true;
+                cursors[MouseCursor.AUTO] = true;
+                cursors[MouseCursor.BUTTON] = true;
+                cursors[MouseCursor.HAND] = true;
+                cursors[MouseCursor.IBEAM] = true;
+                __builtinCursors = cursors;
+            }
+            return __builtinCursors;
+        }
+    }#
+
     /**
     * Sets the cursor to a resource
-    * @param String what: The resource to use as the cursor. 
+    * @param String what: The resource to use as the cursor.
     */
     static function setCursorGlobal (what:String) :void {
         globalCursorResource = what;

    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.ui.Mouse;
    }#



    /**
    * This function restores the default cursor if there is no locked cursor on
    * the screen.
    *
    * @access private
    */
    static function restoreCursor () :void {
        if ( __amLocked ) { return; }
        cursorSprite.stopDrag();
        cursorSprite.visible = false;
        LFCApplication.stage.removeEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler);
        globalCursorResource = null;
        Mouse.cursor = MouseCursor.AUTO;
        Mouse.show();
    }

