             LzMouseKernel.__lastMouseDown.__globalmouseup(event);
             __lastMouseDown = null;
         } else {
+            if (__mouseLeft && event.buttonDown && LzMouseKernel.__lastMouseDown != null) {
+                __mouseLeft = false;
+                //Debug.write(eventname, event.buttonDown, LzMouseKernel.__lastMouseDown);
+                var ev = new MouseEvent('mouseup');
+                LzMouseKernel.__lastMouseDown.__globalmouseup(ev);
+                LzMouseKernel.__lastMouseDown = null;
+            }
             LzMouseKernel.__sendEvent(null, eventname);
         }
     }

    // handles MOUSE_LEAVES event
    static function __mouseLeavesHandler(event:Event):void {
        var eventname = 'on' + event.type.toLowerCase();
        LzMouseKernel.__sendEvent(null, eventname);
    }


    static var __callback = null;
    static var __scope = null;
    static var __lastMouseDown = null;
    static var __mouseLeft:Boolean = false;
    static var __listeneradded:Boolean = false ;

    /**
