diff -rupN trunk.original/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponent.as trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponent.as
--- trunk.original/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponent.as	2010-05-21 19:01:46.000000000 -0700
+++ trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponent.as	2010-07-11 17:03:34.000000000 -0700
@@ -176,6 +176,16 @@ package com.longtailvideo.jwplayer.view.
 			animations.fade(1, 0.5);
 		}
 		
+		private function clearControlbar():void {
+			clearTimeout(hiding);
+			try {
+				_player.controls.display.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
+				removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
+			} catch (e:Error) {}
+			Mouse.show();
+			animations.fade(0, 0.5);
+		}
+
 		/** Show above controlbar on mousemove. **/
 		private function moveHandler(evt:MouseEvent=null):void {
 			if (alpha == 0) {
@@ -196,12 +206,26 @@ package com.longtailvideo.jwplayer.view.
 		private function stateHandler(evt:PlayerEvent=null):void {
 			switch(_player.state) {
 				case PlayerState.BUFFERING:
+					if (controlbarConfig['hideidle'] == true && controlbarConfig['position'] == "over") {
+						animations.fade(1, 0.5);
+					}
+					break;
 				case PlayerState.PLAYING:
 					startFader();
 					break;
 				case PlayerState.PAUSED:
+					if (controlbarConfig['hidepause'] == true && controlbarConfig['position'] == "over") {
+						clearControlbar();
+					} else {
+						stopFader();
+					}
+					break;
 				case PlayerState.IDLE:
-					stopFader();
+					if (controlbarConfig['hideidle'] == true && controlbarConfig['position'] == "over") {
+						clearControlbar();
+					} else {
+						stopFader();
+					}
 					break;
 			}
 			updateControlbarState();
diff -rupN trunk.original/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponentV4.as trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponentV4.as
--- trunk.original/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponentV4.as	2010-04-30 20:11:44.000000000 -0700
+++ trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponentV4.as	2010-07-11 17:03:17.000000000 -0700
@@ -388,6 +388,16 @@ package com.longtailvideo.jwplayer.view.
 			animations.fade(1);
 		}
 		
+		private function clearFader():void {
+			clearTimeout(hiding);
+			try {
+				_player.controls.display.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
+				removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
+			} catch (e:Error) {}
+			Mouse.show();
+			animations.fade(0);
+		}
+		
 		/** Show above controlbar on mousemove. **/
 		private function moveHandler(evt:MouseEvent=null):void {
 			if (alpha == 0) {
@@ -419,7 +429,11 @@ package com.longtailvideo.jwplayer.view.
 					case PlayerState.PAUSED:
 						getSkinComponent('playButton').visible = true;
 						getSkinComponent('pauseButton').visible = false;
-						stopFader();
+						if (controlbarConfig['hidepause'] == true && controlbarConfig['position'] == "over") {
+							clearFader();
+						} else {
+							stopFader();
+						}
 						break;
 					case PlayerState.BUFFERING:
 						getSkinComponent('playButton').visible = false;
@@ -430,7 +444,11 @@ package com.longtailvideo.jwplayer.view.
 						getSkinComponent('playButton').visible = true;
 						getSkinComponent('pauseButton').visible = false;
 						timeHandler();
-						stopFader();
+						if (controlbarConfig['hideidle'] == true && controlbarConfig['position'] == "over") {
+							clearFader();
+						} else {
+							stopFader();
+						}
 						break;
 				}
 			} catch (e:Error) {

