Index: /plugins/popout/popout.xml
===================================================================
--- /plugins/popout/popout.xml	(revision 531)
+++ /plugins/popout/popout.xml	(revision 531)
@@ -0,0 +1,34 @@
+<plugin>
+	<title>Popout Plugin</title>
+	<filename>popout.swf</filename>
+	<version>1.0</version>
+	<compatibility>Compatible with 4.5.</compatibility>
+	<author>LongTail Video</author>
+	<description>
+		This plugin displays a dock button that opens a popup window.
+		The contents of this window can be assigned with the popup.file flashvar.
+		Technically, a javascript call to window.open() is called.
+		If this fails (popup blockers), a blank window is launched.
+	</description>
+	<href>http://developer.longtailvideo.com/trac/browser/plugins/popout</href>
+
+	<flashvars>
+		<flashvar>
+			<name>file</name>
+			<default />
+			<description>
+				HTML file to load into the popup player.
+				Usually, this HTML file contains a maxedout player that autostarts.
+			</description>
+		</flashvar>
+		<flashvar>
+			<name>settings</name>
+			<default>status=0,toolbar=0,width=600,height=400,left=100,top=100</default>
+			<description>
+				Settings to push to the window.open script.
+			</description>
+		</flashvar>
+	</flashvars>
+
+</plugin>
+
Index: /plugins/popout/build.sh
===================================================================
--- /plugins/popout/build.sh	(revision 531)
+++ /plugins/popout/build.sh	(revision 531)
@@ -0,0 +1,7 @@
+# This is a simple script that compiles the plugin using MXMLC (free & cross-platform).
+# To use, make sure you have downloaded and installed the Flex SDK in the following directory:
+FLEXPATH=/Developer/SDKs/flex_sdk_3
+
+
+echo "Compiling with MXMLC..."
+$FLEXPATH/bin/mxmlc ./com/jeroenwijering/plugins/Popout.as -sp ./ -o ./popout.swf -use-network=false
Index: /plugins/popout/com/jeroenwijering/plugins/Popout.as
===================================================================
--- /plugins/popout/com/jeroenwijering/plugins/Popout.as	(revision 531)
+++ /plugins/popout/com/jeroenwijering/plugins/Popout.as	(revision 531)
@@ -0,0 +1,62 @@
+
+package com.jeroenwijering.plugins {
+
+
+import com.jeroenwijering.events.*;
+
+import flash.display.MovieClip;
+import flash.events.Event;
+import flash.external.ExternalInterface;
+import flash.net.URLRequest;
+import flash.net.navigateToURL;
+
+
+/**
+* Popout Plugin; implements a dock button that.
+**/
+public class Popout extends MovieClip implements PluginInterface {
+
+
+	[Embed(source="../../../dockIcon.png")]
+	private const DockIcon:Class;
+
+
+	/** List with configuration settings. **/
+	public var config:Object = {
+		file:undefined,
+		settings:'status=0,toolbar=0,width=600,height=400,left=100,top=100'
+	};
+	/** Reference to the View of the player. **/
+	private var view:AbstractView;
+
+
+	/** Constructor; nothing going on. **/
+	public function Popout():void {};
+
+
+	/** HD button is clicked, so change the video. **/
+	private function clickHandler(evt:Event=null):void {
+		if(ExternalInterface.available) {
+			var win:String = ExternalInterface.call('function(){var win=window.open("'+
+				config['file']+'","  ","'+config['settings']+'"); return win.name;}');
+			if(!win) {
+				navigateToURL(new URLRequest(config['file']),'_blank');
+			}
+		}
+		view.sendEvent(ViewEvent.PLAY,false);
+	};
+
+
+	/** The initialize call is invoked by the player View. **/
+	public function initializePlugin(vie:AbstractView):void {
+		view = vie;
+		if(view.getPlugin('dock') && view.config['dock']) {
+			view.getPlugin('dock').addButton(new DockIcon(),'popout',clickHandler);
+		}
+	};
+
+
+};
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/AbstractView.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/AbstractView.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/AbstractView.as	(revision 300)
@@ -0,0 +1,108 @@
+/**
+* Abstract superclass for the View. Defines all methods accessible to plugins.
+*
+* Import this class into your project/plugin for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.display.MovieClip;
+import flash.events.EventDispatcher;
+
+
+public class AbstractView extends EventDispatcher {
+
+
+	/** Constructor. **/
+	public function AbstractView() {};
+
+
+	/**  Getter for config, the hashmap with configuration settings. **/
+	public function get config():Object { return new Object(); };
+	/** Getter for playlist, an array of hashmaps (file,link,image,etc) for each playlistentry. **/
+	public function get playlist():Array { return new Array(); };
+	/** Getter for skin, the on-stage player graphics. **/ 
+	public function get skin():MovieClip { return new MovieClip(); };
+
+
+	/**
+	* *(Un)subscribe to events fired by the Controller (seek,load,resize,etc).
+	* 
+	* @param typ	The specific event to listen to.
+	* @param fcn	The function that will handle the event.
+	* @see 			ControllerEvent
+	**/
+	public function addControllerListener(typ:String,fcn:Function):void {};
+	public function removeControllerListener(typ:String,fcn:Function):void {};
+
+
+	/**
+	* (Un)subscribe to events fired by the Model (time,state,meta,etc).
+	* 
+	* @param typ	The specific event to listen to.
+	* @param fcn	The function that will handle the event.
+	* @see 			ModelEvent
+	**/
+	public function addModelListener(typ:String,fcn:Function):void {};
+	public function removeModelListener(typ:String,fcn:Function):void {};
+
+
+	/**
+	* (Un)subscribe to events fired from the View (play,mute,stop,etc).
+	* All events fired by plugins or the actionscript/javascript API flow through the View.
+	* 
+	* @param typ	The specific event to listen to.
+	* @param fcn	The function that will handle the event.
+	* @see 			ViewEvent
+	**/
+	public function addViewListener(typ:String,fcn:Function):void {};
+	public function removeViewListener(typ:String,fcn:Function):void {};
+
+
+	/**
+	* Get a reference to a specific plugin.
+	*
+	* @param nam	The name of the plugin to return.
+	* @return		A reference to the plugin itself. Public methods can be directly called on this.
+	* @see 			SPLoader
+	**/
+	public function getPlugin(nam:String):Object { return {}; };
+
+
+	/**
+	* Load a plugin into the player at runtime.
+	*
+	* @prm url	The url of the plugin to load.
+	* @prm vrs	A string of flashvars for the plugin 
+	*			(separated by & and = signs, no 'pluginname.' variable needed).
+	* @return	Boolean true if succeeded.
+	**/
+	public function loadPlugin(url:String,vrs:String=null):Boolean {
+		return true;
+	};
+
+
+	/**
+	* Save a cookie. This cookie is automatically picked up by the player on subsequent loads.
+	*
+	* @param typ	The name of the cookie.
+	* @param prm	The contents of the cookie.
+	* @see 			Configger
+	**/
+	public function saveCookie(prm:String,val:Object):void {};
+
+
+	/**
+	* Dispatch an event. The event will be serialized and fired by the View.
+	*
+	* @param typ	The specific event to fire to.
+	* @param prm	The accompanying parameter. Some events require one, others not.
+	* @see 			ViewEvent
+	**/
+	public function sendEvent(typ:String,prm:Object=undefined):void {};
+
+
+}
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/PlayerEvent.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/PlayerEvent.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/PlayerEvent.as	(revision 300)
@@ -0,0 +1,36 @@
+/**
+* Definition of the READY event, fired by the Player when all components are set up.
+* 
+* Listen to this event when loading the player.swf in a flash/Flex project. 
+* When fired, all API calls are available.
+*
+* Import this class into your project/plugin for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.events.Event;
+
+
+public class PlayerEvent extends Event {
+
+
+	/** Definition for the ready event. **/
+	public static var READY:String = "READY";
+
+
+	/**
+	* Constructor; sets the event definition.
+	*
+	* @param typ	The type of event.
+	* @param dat	An object with all associated data.
+	**/
+	public function PlayerEvent(typ:String,bbl:Boolean=false,ccb:Boolean=false):void {
+		super(typ, bbl, ccb);
+	};
+
+
+}
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/PluginInterface.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/PluginInterface.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/PluginInterface.as	(revision 300)
@@ -0,0 +1,34 @@
+/**
+* Interface all plugins must implement.
+*
+* It defines the initializePlugin call, which is fired by the player.
+* It passes a reference of the view, which is the entrypoint for the API.
+*
+* The plugin API is part of the JW Player and as such covered by its licenses.
+* Implementing the API in other projects violates the license.
+* Contact us (www.longtailvideo.com) for more info or waivers.
+*
+* Import this class into your plugin for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.events.Event;
+
+
+public interface PluginInterface {
+
+	/**
+	* When a plugin is loaded, the player attempts to call this function.
+	* 
+	* @param vie	Reference to the View, which is the entrypoint for the API.
+	*				It defines all available variables, listeners and calls.
+	* @see			AbstractView
+	**/
+	function initializePlugin(vie:AbstractView):void;
+
+
+};
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/ModelEvent.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/ModelEvent.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/ModelEvent.as	(revision 300)
@@ -0,0 +1,47 @@
+/**
+* Definitions for all event types fired by the Model.
+*
+* Import this class into your project/plugin for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.events.Event;
+
+
+public class ModelEvent extends Event {
+
+
+	/** Definitions for all event types. **/
+	public static var BUFFER:String = "BUFFER";
+	public static var ERROR:String = "ERROR";
+	public static var LOADED:String = "LOADED";
+	public static var META:String = "META";
+	public static var STATE:String = "STATE";
+	public static var TIME:String = "TIME";
+	/** The data associated with the event. **/
+	private var _data:Object;
+
+
+	/**
+	* Constructor; sets the event type and inserts the new value.
+	*
+	* @param typ	The type of event.
+	* @param dat	An object with all associated data.
+	**/
+	public function ModelEvent(typ:String,dat:Object=undefined,bbl:Boolean=false,ccb:Boolean=false):void {
+		super(typ,bbl,ccb);
+		_data = dat;
+	};
+
+
+	/** Returns the data associated with the event. **/
+	public function get data():Object {
+		return _data;
+	};
+
+
+}
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/ModelStates.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/ModelStates.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/ModelStates.as	(revision 300)
@@ -0,0 +1,27 @@
+/**
+* Static typed list of all possible model states, fired with the 'state' event.
+*
+* Import this class into your project/plugin for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+public class ModelStates {
+
+
+	/** Nothing happening. No playback and no file in memory. **/
+	public static var IDLE:String = "IDLE";
+	/** Buffering; will start to play when the buffer is full. **/
+	public static var BUFFERING:String = "BUFFERING";
+	/** The file is being played back. **/
+	public static var PLAYING:String = "PLAYING";
+	/** Playback is paused. **/
+	public static var PAUSED:String = "PAUSED";
+	/** End of mediafile has been reached. No playback but the file is in memory. **/
+	public static var COMPLETED:String = "COMPLETED";
+
+
+}
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/ControllerEvent.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/ControllerEvent.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/ControllerEvent.as	(revision 300)
@@ -0,0 +1,50 @@
+/**
+* Definitions for all event types fired by the Controller.
+*
+* Import this class into your project/plugin for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.events.Event;
+
+
+public class ControllerEvent extends Event {
+
+
+	/** Definitions for all event types. **/
+	public static var ERROR:String = "ERROR";
+	public static var ITEM:String = "ITEM";
+	public static var MUTE:String = "MUTE";
+	public static var PLAY:String = "PLAY";
+	public static var PLAYLIST:String = "PLAYLIST";
+	public static var RESIZE:String = "RESIZE";
+	public static var SEEK:String = "SEEK";
+	public static var STOP:String = "STOP";
+	public static var VOLUME:String = "VOLUME";
+	/** The data associated with the event. **/
+	private var _data:Object;
+
+
+	/**
+	* Constructor; sets the event type and inserts the data value.
+	*
+	* @param typ	The type of event.
+	* @param dat	An object with all associated data.
+	**/
+	public function ControllerEvent(typ:String,dat:Object=undefined,bbl:Boolean=false,ccb:Boolean=false):void {
+		super(typ,bbl,ccb);
+		_data = dat;
+	};
+
+
+	/** Returns the data associated with the event. **/
+	public function get data():Object {
+		return _data;
+	};
+
+
+}
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/SPLoaderEvent.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/SPLoaderEvent.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/SPLoaderEvent.as	(revision 300)
@@ -0,0 +1,35 @@
+/**
+* Definition of the events fired by the SPLoader, which loads the skin and plugins SWF.
+* 
+* These events are not exposed through the API.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.events.Event;
+
+
+public class SPLoaderEvent extends Event {
+
+
+	/** Definition for the event that indicates the skin is loaded. **/
+	public static var SKIN:String = "SKIN";
+	/** Definition for the event that indicates all plugins are loaded. **/
+	public static var PLUGINS:String = "PLUGINS";
+
+
+	/**
+	* Constructor; defines which event is fired.
+	*
+	* @param typ	The definition of the event.
+	* @param dat	An object with all associated data.
+	**/
+	public function SPLoaderEvent(typ:String,bbl:Boolean=false,ccb:Boolean=false):void {
+		super(typ, bbl, ccb);
+	};
+
+
+};
+
+
+}
Index: /plugins/popout/com/jeroenwijering/events/ViewEvent.as
===================================================================
--- /plugins/popout/com/jeroenwijering/events/ViewEvent.as	(revision 300)
+++ /plugins/popout/com/jeroenwijering/events/ViewEvent.as	(revision 300)
@@ -0,0 +1,54 @@
+/**
+* Definitions for all event types fired by the View.
+*
+* Import this class into your project/plugin folder for strong-typed api references.
+**/
+package com.jeroenwijering.events {
+
+
+import flash.events.Event;
+
+
+public class ViewEvent extends Event {
+
+
+	/** Definitions for all event types. **/
+	public static var FULLSCREEN:String = "FULLSCREEN";
+	public static var ITEM:String = "ITEM";
+	public static var LINK:String = "LINK";
+	public static var LOAD:String = "LOAD";
+	public static var MUTE:String = "MUTE";
+	public static var NEXT:String = "NEXT";
+	public static var PLAY:String = "PLAY";
+	public static var PREV:String = "PREV";
+	public static var REDRAW:String = "REDRAW";
+	public static var SEEK:String = "SEEK";
+	public static var STOP:String = "STOP";
+	public static var TRACE:String = "TRACE";
+	public static var VOLUME:String = "VOLUME";
+	/** The data associated with the event. **/
+	private var _data:Object;
+
+
+	/**
+	* Constructor; sets the event type and inserts the new value.
+	*
+	* @param typ	The type of event.
+	* @param dat	An object with all associated data.
+	**/
+	public function ViewEvent(typ:String,dat:Object=undefined,bbl:Boolean=false,ccb:Boolean=false):void {
+		super(typ, bbl, ccb);
+		_data = dat;
+	};
+
+
+	/** Returns the data associated with the event. **/
+	public function get data():Object {
+		return _data;
+	};
+
+
+}
+
+
+}
Index: ugins/qualitymonitor/com/jeroenwijering/events/AbstractView.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/AbstractView.as	(revision 300)
+++ 	(revision )
@@ -1,108 +1,0 @@
-/**
-* Abstract superclass for the View. Defines all methods accessible to plugins.
-*
-* Import this class into your project/plugin for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.display.MovieClip;
-import flash.events.EventDispatcher;
-
-
-public class AbstractView extends EventDispatcher {
-
-
-	/** Constructor. **/
-	public function AbstractView() {};
-
-
-	/**  Getter for config, the hashmap with configuration settings. **/
-	public function get config():Object { return new Object(); };
-	/** Getter for playlist, an array of hashmaps (file,link,image,etc) for each playlistentry. **/
-	public function get playlist():Array { return new Array(); };
-	/** Getter for skin, the on-stage player graphics. **/ 
-	public function get skin():MovieClip { return new MovieClip(); };
-
-
-	/**
-	* *(Un)subscribe to events fired by the Controller (seek,load,resize,etc).
-	* 
-	* @param typ	The specific event to listen to.
-	* @param fcn	The function that will handle the event.
-	* @see 			ControllerEvent
-	**/
-	public function addControllerListener(typ:String,fcn:Function):void {};
-	public function removeControllerListener(typ:String,fcn:Function):void {};
-
-
-	/**
-	* (Un)subscribe to events fired by the Model (time,state,meta,etc).
-	* 
-	* @param typ	The specific event to listen to.
-	* @param fcn	The function that will handle the event.
-	* @see 			ModelEvent
-	**/
-	public function addModelListener(typ:String,fcn:Function):void {};
-	public function removeModelListener(typ:String,fcn:Function):void {};
-
-
-	/**
-	* (Un)subscribe to events fired from the View (play,mute,stop,etc).
-	* All events fired by plugins or the actionscript/javascript API flow through the View.
-	* 
-	* @param typ	The specific event to listen to.
-	* @param fcn	The function that will handle the event.
-	* @see 			ViewEvent
-	**/
-	public function addViewListener(typ:String,fcn:Function):void {};
-	public function removeViewListener(typ:String,fcn:Function):void {};
-
-
-	/**
-	* Get a reference to a specific plugin.
-	*
-	* @param nam	The name of the plugin to return.
-	* @return		A reference to the plugin itself. Public methods can be directly called on this.
-	* @see 			SPLoader
-	**/
-	public function getPlugin(nam:String):Object { return {}; };
-
-
-	/**
-	* Load a plugin into the player at runtime.
-	*
-	* @prm url	The url of the plugin to load.
-	* @prm vrs	A string of flashvars for the plugin 
-	*			(separated by & and = signs, no 'pluginname.' variable needed).
-	* @return	Boolean true if succeeded.
-	**/
-	public function loadPlugin(url:String,vrs:String=null):Boolean {
-		return true;
-	};
-
-
-	/**
-	* Save a cookie. This cookie is automatically picked up by the player on subsequent loads.
-	*
-	* @param typ	The name of the cookie.
-	* @param prm	The contents of the cookie.
-	* @see 			Configger
-	**/
-	public function saveCookie(prm:String,val:Object):void {};
-
-
-	/**
-	* Dispatch an event. The event will be serialized and fired by the View.
-	*
-	* @param typ	The specific event to fire to.
-	* @param prm	The accompanying parameter. Some events require one, others not.
-	* @see 			ViewEvent
-	**/
-	public function sendEvent(typ:String,prm:Object=undefined):void {};
-
-
-}
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/PlayerEvent.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/PlayerEvent.as	(revision 300)
+++ 	(revision )
@@ -1,36 +1,0 @@
-/**
-* Definition of the READY event, fired by the Player when all components are set up.
-* 
-* Listen to this event when loading the player.swf in a flash/Flex project. 
-* When fired, all API calls are available.
-*
-* Import this class into your project/plugin for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.events.Event;
-
-
-public class PlayerEvent extends Event {
-
-
-	/** Definition for the ready event. **/
-	public static var READY:String = "READY";
-
-
-	/**
-	* Constructor; sets the event definition.
-	*
-	* @param typ	The type of event.
-	* @param dat	An object with all associated data.
-	**/
-	public function PlayerEvent(typ:String,bbl:Boolean=false,ccb:Boolean=false):void {
-		super(typ, bbl, ccb);
-	};
-
-
-}
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/PluginInterface.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/PluginInterface.as	(revision 300)
+++ 	(revision )
@@ -1,34 +1,0 @@
-/**
-* Interface all plugins must implement.
-*
-* It defines the initializePlugin call, which is fired by the player.
-* It passes a reference of the view, which is the entrypoint for the API.
-*
-* The plugin API is part of the JW Player and as such covered by its licenses.
-* Implementing the API in other projects violates the license.
-* Contact us (www.longtailvideo.com) for more info or waivers.
-*
-* Import this class into your plugin for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.events.Event;
-
-
-public interface PluginInterface {
-
-	/**
-	* When a plugin is loaded, the player attempts to call this function.
-	* 
-	* @param vie	Reference to the View, which is the entrypoint for the API.
-	*				It defines all available variables, listeners and calls.
-	* @see			AbstractView
-	**/
-	function initializePlugin(vie:AbstractView):void;
-
-
-};
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/ModelEvent.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/ModelEvent.as	(revision 300)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/**
-* Definitions for all event types fired by the Model.
-*
-* Import this class into your project/plugin for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.events.Event;
-
-
-public class ModelEvent extends Event {
-
-
-	/** Definitions for all event types. **/
-	public static var BUFFER:String = "BUFFER";
-	public static var ERROR:String = "ERROR";
-	public static var LOADED:String = "LOADED";
-	public static var META:String = "META";
-	public static var STATE:String = "STATE";
-	public static var TIME:String = "TIME";
-	/** The data associated with the event. **/
-	private var _data:Object;
-
-
-	/**
-	* Constructor; sets the event type and inserts the new value.
-	*
-	* @param typ	The type of event.
-	* @param dat	An object with all associated data.
-	**/
-	public function ModelEvent(typ:String,dat:Object=undefined,bbl:Boolean=false,ccb:Boolean=false):void {
-		super(typ,bbl,ccb);
-		_data = dat;
-	};
-
-
-	/** Returns the data associated with the event. **/
-	public function get data():Object {
-		return _data;
-	};
-
-
-}
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/ModelStates.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/ModelStates.as	(revision 300)
+++ 	(revision )
@@ -1,27 +1,0 @@
-/**
-* Static typed list of all possible model states, fired with the 'state' event.
-*
-* Import this class into your project/plugin for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-public class ModelStates {
-
-
-	/** Nothing happening. No playback and no file in memory. **/
-	public static var IDLE:String = "IDLE";
-	/** Buffering; will start to play when the buffer is full. **/
-	public static var BUFFERING:String = "BUFFERING";
-	/** The file is being played back. **/
-	public static var PLAYING:String = "PLAYING";
-	/** Playback is paused. **/
-	public static var PAUSED:String = "PAUSED";
-	/** End of mediafile has been reached. No playback but the file is in memory. **/
-	public static var COMPLETED:String = "COMPLETED";
-
-
-}
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/ControllerEvent.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/ControllerEvent.as	(revision 300)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/**
-* Definitions for all event types fired by the Controller.
-*
-* Import this class into your project/plugin for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.events.Event;
-
-
-public class ControllerEvent extends Event {
-
-
-	/** Definitions for all event types. **/
-	public static var ERROR:String = "ERROR";
-	public static var ITEM:String = "ITEM";
-	public static var MUTE:String = "MUTE";
-	public static var PLAY:String = "PLAY";
-	public static var PLAYLIST:String = "PLAYLIST";
-	public static var RESIZE:String = "RESIZE";
-	public static var SEEK:String = "SEEK";
-	public static var STOP:String = "STOP";
-	public static var VOLUME:String = "VOLUME";
-	/** The data associated with the event. **/
-	private var _data:Object;
-
-
-	/**
-	* Constructor; sets the event type and inserts the data value.
-	*
-	* @param typ	The type of event.
-	* @param dat	An object with all associated data.
-	**/
-	public function ControllerEvent(typ:String,dat:Object=undefined,bbl:Boolean=false,ccb:Boolean=false):void {
-		super(typ,bbl,ccb);
-		_data = dat;
-	};
-
-
-	/** Returns the data associated with the event. **/
-	public function get data():Object {
-		return _data;
-	};
-
-
-}
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/SPLoaderEvent.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/SPLoaderEvent.as	(revision 300)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/**
-* Definition of the events fired by the SPLoader, which loads the skin and plugins SWF.
-* 
-* These events are not exposed through the API.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.events.Event;
-
-
-public class SPLoaderEvent extends Event {
-
-
-	/** Definition for the event that indicates the skin is loaded. **/
-	public static var SKIN:String = "SKIN";
-	/** Definition for the event that indicates all plugins are loaded. **/
-	public static var PLUGINS:String = "PLUGINS";
-
-
-	/**
-	* Constructor; defines which event is fired.
-	*
-	* @param typ	The definition of the event.
-	* @param dat	An object with all associated data.
-	**/
-	public function SPLoaderEvent(typ:String,bbl:Boolean=false,ccb:Boolean=false):void {
-		super(typ, bbl, ccb);
-	};
-
-
-};
-
-
-}
Index: ugins/qualitymonitor/com/jeroenwijering/events/ViewEvent.as
===================================================================
--- /plugins/qualitymonitor/com/jeroenwijering/events/ViewEvent.as	(revision 300)
+++ 	(revision )
@@ -1,54 +1,0 @@
-/**
-* Definitions for all event types fired by the View.
-*
-* Import this class into your project/plugin folder for strong-typed api references.
-**/
-package com.jeroenwijering.events {
-
-
-import flash.events.Event;
-
-
-public class ViewEvent extends Event {
-
-
-	/** Definitions for all event types. **/
-	public static var FULLSCREEN:String = "FULLSCREEN";
-	public static var ITEM:String = "ITEM";
-	public static var LINK:String = "LINK";
-	public static var LOAD:String = "LOAD";
-	public static var MUTE:String = "MUTE";
-	public static var NEXT:String = "NEXT";
-	public static var PLAY:String = "PLAY";
-	public static var PREV:String = "PREV";
-	public static var REDRAW:String = "REDRAW";
-	public static var SEEK:String = "SEEK";
-	public static var STOP:String = "STOP";
-	public static var TRACE:String = "TRACE";
-	public static var VOLUME:String = "VOLUME";
-	/** The data associated with the event. **/
-	private var _data:Object;
-
-
-	/**
-	* Constructor; sets the event type and inserts the new value.
-	*
-	* @param typ	The type of event.
-	* @param dat	An object with all associated data.
-	**/
-	public function ViewEvent(typ:String,dat:Object=undefined,bbl:Boolean=false,ccb:Boolean=false):void {
-		super(typ, bbl, ccb);
-		_data = dat;
-	};
-
-
-	/** Returns the data associated with the event. **/
-	public function get data():Object {
-		return _data;
-	};
-
-
-}
-
-
-}
Index: /trunk/as3/com/jeroenwijering/plugins/Watermark.as
===================================================================
--- /trunk/as3/com/jeroenwijering/plugins/Watermark.as	(revision 409)
+++ /trunk/as3/com/jeroenwijering/plugins/Watermark.as	(revision 531)
@@ -143,4 +143,5 @@
 				easing:Regular.easeIn
 			});
+			resizeHandler();
 		}
 		timeout = setTimeout(hide,_config['timeout']*1000);
Index: /trunk/as3/com/jeroenwijering/models/RTMPModel.as
===================================================================
--- /trunk/as3/com/jeroenwijering/models/RTMPModel.as	(revision 437)
+++ /trunk/as3/com/jeroenwijering/models/RTMPModel.as	(revision 531)
@@ -214,5 +214,5 @@
 		clearInterval(interval);
 		model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PAUSED});
-		if(stream && item['duration'] == 0) { stop(); }
+		if(stream && item['duration'] == 0 && !dynamics) { stop(); }
 	};
 
Index: /testing/files/popout.html
===================================================================
--- /testing/files/popout.html	(revision 531)
+++ /testing/files/popout.html	(revision 531)
@@ -0,0 +1,25 @@
+<html>
+<head>
+	<title>Big Buck Bunny</title>
+	<script type="text/javascript" src="swfobject.js"></script>
+</head>
+<body style="padding:0; margin:0; background-color:#000;">
+
+	<div id="container">Player here</div>
+
+	<script type="text/javascript">
+		swfobject.embedSWF(
+			'../../trunk/as3/player.swf',
+			'container',
+			'100%',
+			'100%',
+			'9.0.0',
+			null,
+			{file:'../../testing/files/bunny.flv',autostart:'true',controlbar:'over'},
+			{allowfullscreen:'true',allowscriptaccess:'always'},
+			{id:'player',name:'player'}
+		);
+	</script>
+	
+</body>
+</html>
Index: /testing/settings.js
===================================================================
--- /testing/settings.js	(revision 521)
+++ /testing/settings.js	(revision 531)
@@ -78,4 +78,8 @@
 			swf:'../plugins/spoton/spoton.swf',
 			xml:'../plugins/spoton/spoton.xml'
+		},
+		popout: {
+			swf:'../plugins/popout/popout.swf',
+			xml:'../plugins/popout/popout.xml'
 		}
 	},
@@ -451,4 +455,13 @@
 			width:600,
 			plugins:'flow'
+		},
+		64: {
+			title:'Popout plugin',
+			file:'../../testing/files/bunny.flv',
+			height:260,
+			width:400,
+			dock:true,
+			plugins:'popout',
+			'popout.file':'files/popout.html'
 		}
 	}
