--- ./player/StrobeMediaPlayback/src/org/osmf/player/chrome/widgets/PlayButtonOverlay.as.orig	2012-11-14 15:48:22.000000000 +0100
+++ ./player/StrobeMediaPlayback/src/org/osmf/player/chrome/widgets/PlayButtonOverlay.as	2012-11-20 15:14:02.000000000 +0100
@@ -98,6 +98,11 @@
 		override protected function onMouseClick(event:MouseEvent):void
 		{
 			var playable:PlayTrait = media.getTrait(MediaTraitType.PLAY) as PlayTrait;
+ 			var seekable:SeekTrait = media.getTrait(MediaTraitType.SEEK) as SeekTrait;
+ 			if(playable.playState == PlayState.STOPPED)
+ 			{
+ 				try{seekable.seek(0);}catch(e:Object){}
+ 			}
 			playable.play();
 		}
 		
@@ -134,4 +139,4 @@
 		/* static */
 		private static const VISIBILITY_DELAY:int = 500;
 	}
-}
\ No newline at end of file
+}
--- ./player/StrobeMediaPlayback/src/org/osmf/player/chrome/widgets/Slider.as.orig	2012-11-14 15:48:22.000000000 +0100
+++ ./player/StrobeMediaPlayback/src/org/osmf/player/chrome/widgets/Slider.as	2012-11-14 15:42:53.000000000 +0100
@@ -106,7 +106,7 @@
 			if (_enabled && _sliding == false)
 			{
 				_sliding = true;
-				stage.addEventListener(MouseEvent.MOUSE_UP, onStageExitDrag);
+				stage.addEventListener(MouseEvent.MOUSE_UP, onStageExitDrag, true);
 				updateFace(down);
 				scrubTimer.start();
 				dispatchEvent(new ScrubberEvent(ScrubberEvent.SCRUB_START));
--- ./player/StrobeMediaPlayback/src/org/osmf/player/chrome/widgets/PlayButton.as.orig	2012-11-14 15:48:22.000000000 +0100
+++ ./player/StrobeMediaPlayback/src/org/osmf/player/chrome/widgets/PlayButton.as	2012-11-14 15:42:53.000000000 +0100
@@ -26,6 +26,7 @@
 	import org.osmf.traits.MediaTraitType;
 	import org.osmf.traits.PlayState;
 	import org.osmf.traits.PlayTrait;
+	import org.osmf.traits.SeekTrait;
 	
 	public class PlayButton extends PlayableButton
 	{
@@ -44,6 +45,11 @@
 		override protected function onMouseClick(event:MouseEvent):void
 		{
 			var playable:PlayTrait = media.getTrait(MediaTraitType.PLAY) as PlayTrait;
+            var seekable:SeekTrait = media.getTrait(MediaTraitType.SEEK) as SeekTrait;
+			if(playable.playState == PlayState.STOPPED)
+			{
+			    try{seekable.seek(0);}catch(e:Object){}
+			}
 			playable.play();
 			event.stopImmediatePropagation();
 		}
@@ -58,4 +64,4 @@
 			}
 		}
 	}
-}
\ No newline at end of file
+}
--- ./player/StrobeMediaPlayback/src/StrobeMediaPlayback.as.orig	2012-11-14 15:48:22.000000000 +0100
+++ ./player/StrobeMediaPlayback/src/StrobeMediaPlayback.as	2012-11-14 15:42:54.000000000 +0100
@@ -52,6 +52,7 @@
 	import org.osmf.traits.MediaTraitType;
 	import org.osmf.traits.PlayState;
 	import org.osmf.traits.PlayTrait;
+	import org.osmf.traits.SeekTrait;
 	import org.osmf.utils.OSMFSettings;
 	import org.osmf.utils.OSMFStrings;
 	
@@ -152,6 +153,7 @@
 			
 			player.addEventListener(TimeEvent.COMPLETE, onComplete);
 			player.addEventListener(MediaErrorEvent.MEDIA_ERROR, onMediaError);
+			player.addEventListener(MediaPlayerCapabilityChangeEvent.CAN_PLAY_CHANGE, onCanPlayChange);
 			
 			// Add DRM error handler
 			var drmManager:DRMManager = DRMManager.getDRMManager();
@@ -338,6 +340,8 @@
 			mainContainer.backgroundAlpha = 0;
 			mainContainer.addEventListener(MouseEvent.DOUBLE_CLICK, onFullScreenRequest);
 			mainContainer.addEventListener(MouseEvent.CLICK, onMainClick, false);
+			mainContainer.addEventListener(MouseEvent.MOUSE_DOWN, onMainDown, false);
+			mainContainer.addEventListener(MouseEvent.MOUSE_UP, onMainUp, false);
 			mainContainer.doubleClickEnabled = true;
 			
 			addChild(mainContainer);
@@ -415,6 +419,9 @@
 				}
 
 				player.addEventListener(PlayEvent.PLAY_STATE_CHANGE, onSetAutoHide);
+
+				controlBarContainer.addEventListener(MouseEvent.MOUSE_DOWN, onControlBarAny, false);
+				controlBarContainer.addEventListener(MouseEvent.MOUSE_UP, onControlBarAny, false);
 					
 				layout();
 				
@@ -757,6 +764,38 @@
 			}
 		}
 		
+		private function onMainDown(event:MouseEvent):void
+		{
+			var playable:PlayTrait = player.media.getTrait(MediaTraitType.PLAY) as PlayTrait;
+			if (playable.playState == PlayState.PLAYING)
+			{
+				playable.pause();
+			}
+		}
+		
+		private function onMainUp(event:MouseEvent):void
+		{
+			var playable:PlayTrait = player.media.getTrait(MediaTraitType.PLAY) as PlayTrait;
+			var seekable:SeekTrait = player.media.getTrait(MediaTraitType.SEEK) as SeekTrait;
+			if(playable.playState == PlayState.STOPPED)
+			{
+				if(player.canSeek){seekable.seek(0);}
+				playable.play();
+			}
+			else if(playable.playState == PlayState.PAUSED)
+			{
+				playable.play();
+			}
+		}
+		
+		private function onControlBarAny(event:MouseEvent):void
+		{
+		    if(event.eventPhase == EventPhase.BUBBLING_PHASE)
+			{
+				event.stopImmediatePropagation();
+			}
+		}
+		
 		/**
 		 * Toggles full screen state.
 		 */ 
@@ -1036,12 +1075,20 @@
 				&&	configuration.endOfVideoOverlay != ""
 				&&	player.loop == false
 				&&	player.playing == false
+				&&	player.autoRewind == true
 			)
 			{
 				processPoster(configuration.endOfVideoOverlay);
 			}	
 		}
 		
+		private function onCanPlayChange(event:MediaPlayerCapabilityChangeEvent):void
+		{
+			// Make sure this event gets handled only once:
+			player.removeEventListener(event.type, arguments.callee);
+			player.play(); player.stop();
+		}
+
 		private function onMediaError(event:MediaErrorEvent):void
 		{
 			// Make sure this event gets handled only once:
