Index: /trunk/ova.flowplayer/dist/css/controls-hulu.css
===================================================================
--- /trunk/ova.flowplayer/dist/css/controls-hulu.css	(revision 418)
+++ /trunk/ova.flowplayer/dist/css/controls-hulu.css	(revision 418)
@@ -0,0 +1,121 @@
+
+/* root element should be positioned relatively so that
+	child elements can be positioned absolutely */
+div.hulu {
+	position:relative;
+	height:40px;
+
+	/* black background with a gradient */
+	background:#000 url(../images/hulu.png) repeat-x 0 -4px;
+	width:500px;
+}
+
+/* play/pause button */
+div.hulu a.play, div.hulu a.pause {
+	position:absolute;
+	width: 46px;
+	height: 40px;
+	display:block;
+	text-indent:-9999em;
+	background:url(../images/hulu.png) no-repeat 10px -61px;
+	cursor:pointer;
+	border-right:1px solid #000;
+}
+
+div.hulu a.play:hover {
+	background-position:10px -105px;
+}
+
+/* pause state */
+div.hulu a.pause {
+	background-position:11px -148px;
+}
+
+div.hulu a.pause:hover {
+	background-position:11px -192px;
+}
+
+/* the timeline (or "scrubber")  */
+div.hulu div.track {
+	left:47px;
+	position:absolute;
+	cursor:pointer;
+	width:285px;
+	border-left:1px solid #999;
+	height:40px;
+}
+
+/* the draggable playhead */
+div.hulu div.playhead {
+	position:absolute;
+	cursor:pointer;
+	background-color:#4ff;
+	opacity:0.3;
+	filter: alpha(opacity=30);
+	width:3px;
+	height:40px;
+	border-right:1px solid #444;
+}
+
+/* buffer- and progress bars. upon runtime the width of these elements grows */
+div.hulu div.progress, div.hulu div.buffer {
+	position:absolute;
+	background-color:#4ff;
+	filter: alpha(opacity=10);
+	opacity:0.1;
+	width:0px;
+	height:40px;
+}
+
+div.hulu div.buffer {
+	background-color:#fff;
+	opacity:0.1;
+	filter: alpha(opacity=10);
+}
+
+/* time display */
+div.hulu div.time {
+	position:absolute;
+	width:129px;
+	left:330px;
+	padding:12px 0;
+	text-align:center;
+	border:1px solid #999;
+	border-width:0 1px;
+
+	font-family:futura,"Lucida Grande","bitstream vera sans","trebuchet ms",verdana,arial;
+	font-size:12px;
+	color:#fff;
+}
+
+/* total duration in time display */
+div.hulu div.time strong {
+	font-weight:normal;
+	color:#666;
+}
+
+/* mute / unmute buttons */
+div.hulu a.mute, div.hulu a.unmute {
+	position:absolute;
+	left:460px;
+	width:40px;
+	height:40px;
+	text-align:center;
+	padding:8px 0;
+	cursor:pointer;
+	text-indent:-9999em;
+	background:url(../images/hulu.png) no-repeat 5px -323px;
+}
+
+div.hulu a.mute:hover {
+	background-position:5px -367px;
+}
+
+/* unmute state */
+div.hulu a.unmute {
+	background-position:5px -235px;
+}
+
+div.hulu a.unmute:hover {
+	background-position:5px -279px;
+}
Index: /trunk/ova.flowplayer/dist/js/ova-examples.js
===================================================================
--- /trunk/ova.flowplayer/dist/js/ova-examples.js	(revision 383)
+++ /trunk/ova.flowplayer/dist/js/ova-examples.js	(revision 418)
@@ -86,5 +86,9 @@
 var OVA_ZERO_DURATION_VAST = OVA_DIST_TEMPLATES_3 + "error-responses/vast1.0/zero-duration.xml";
 var OVA_VAST_1_WRAPPER_RESPONSE = OVA_DIST_TEMPLATES_2 + "wrapper/vast1-wrapper.xml";
-var OVA_VPAID_EXAMPLE1_VAST = OVA_DIST_TEMPLATES_2 + "vpaid/example01.xml";
+var OVA_VPAID_LINEAR_1_VAST= OVA_DIST_TEMPLATES_2 + "ad-servers/eyewonder/vpaid-linear-01.xml"
+var OVA_VPAID_NON_LINEAR_1_VAST= OVA_DIST_TEMPLATES_2 + "ad-servers/eyewonder/vpaid-non-linear-01.xml"
+var OVA_VPAID_LINEAR_2_VAST= OVA_DIST_TEMPLATES_2 + "ad-servers/eyewonder/vpaid-linear-01.xml"
+var OVA_VPAID_NON_LINEAR_2_VAST= OVA_DIST_TEMPLATES_2 + "ad-servers/eyewonder/vpaid-non-linear-01.xml"
+//var OVA_VPAID_EXAMPLE1_VAST = OVA_DIST_TEMPLATES_2 + "vpaid/example01.xml";
 //var OVA_VPAID_EXAMPLE1_VAST = "http://app.scanscout.com/ssframework/adStreamJSController.xml?a=getadscheduleforcontent__amp__fetchads=overlay__amp__format=vast2.0__amp__ss_partnerId=17001__amp__ss_mediaId=932466433ab_324__amp__ss_mediaTitle=Interview%20with%20Tom%20Cruise__amp__ss_mediaDescription=Katie%20Couric%20interviews%20Tom%20Cruise__amp__ss_mediaCategories=Entertainment,Culture__amp__ss_mediaKeywords=Tom%20Cruise,Katie%20Holmes,Top%20Gun__amp__ss_mediaURL=http%3A//www.mysite.com/videos/tomcruise.flv__amp__ss_pageURL=http%3A//www.mysite.com/videos__amp__ss_streamPageURL=__amp__ss_height=300__amp__ss_width=400__amp__ss_asVersion=3__amp__jsa=Y__amp__ss_rand=[SOME_RANDOM_STRING]";
 
Index: /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-non-linear-01.xml
===================================================================
--- /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-non-linear-01.xml	(revision 418)
+++ /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-non-linear-01.xml	(revision 418)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VAST version="2.0">
+  <Ad id="linear-1">
+    <InLine>
+      <AdSystem>OVA Static Template</AdSystem>
+      <AdTitle>VPAID Linear Ad</AdTitle>
+      <Impression>
+        <URL id="test"><![CDATA[http://localhost/log?impression]]></URL>
+      </Impression>
+      <Creatives>
+        <Creative>
+          <Linear>
+              <Duration>00:00:00</Duration>
+		      <TrackingEvents>
+ 		        <Tracking event="creativeView">http://localhost/log?creativeView</Tracking>
+ 		        <Tracking event="start">http://localhost/log?start</Tracking>
+		        <Tracking event="firstQuartile">http://localhost/log?firstQuartile</Tracking>
+		        <Tracking event="midpoint">http://localhost/log?midpoint</Tracking>
+		        <Tracking event="thirdQuartile">http://localhost/log?thirdQuartile</Tracking>
+		        <Tracking event="complete">http://localhost/log?complete</Tracking>
+		        <Tracking event="pause">http://localhost/log?pause</Tracking>
+		        <Tracking event="resume">http://localhost/log?resume</Tracking>
+		        <Tracking event="rewind">http://localhost/log?rewind</Tracking>
+		        <Tracking event="mute">http://localhost/log?mute</Tracking>
+		        <Tracking event="unmute">http://localhost/log?unmute</Tracking>
+		        <Tracking event="fullscreen">http://localhost/log?fullscreen</Tracking>
+		        <Tracking event="expand">http://localhost/log?expand</Tracking>
+		        <Tracking event="collapse">http://localhost/log?collapse</Tracking>
+		        <Tracking event="acceptInvitation">http://localhost/log?acceptInvitation</Tracking>
+		        <Tracking event="close">http://localhost/log?close</Tracking>
+		      </TrackingEvents>
+              <MediaFiles>
+                 <MediaFile height="270" width="370" type="application/x-shockwave-flash" apiFramework="VPAID">
+	                 <![CDATA[http://cdn1.eyewonder.com/200125/instream/_modules/loaders/Custom/VPAID_as3/loader.swf?adLoaderWidth=320&adLoaderHeight=240&cp=http://cdn1.eyewonder.com/200125/752457/1224933/&loaderCreative=Ticker_Holder_as3.swf%3Fcp%3Dhttp%3A//cdn1.eyewonder.com/200125/752457/1224933/%26ewbase%3Dhttp%3A//cdn1.eyewonder.com/200125/752457/1224933/%26adLoaderWidth%3D320%26adLoaderHeight%3D240%26hAlign%3Dcenter%26vAlign%3Dbottom%26keywordNames%3DenableFriendlyIframe%2Cinflow_iframe_div%26keywordIDs%3D[48]%2C[52]%26ewbust%3D[timestamp]&adInstreamType=ticker&adTagAlignHorizontal=center&adTagAlignVertical=bottom&adMode=prog&qaReportUUID=common]]>
+                 </MediaFile>
+              </MediaFiles>
+           </Linear>
+        </Creative>
+      </Creatives>
+    </InLine>
+  </Ad>
+</VAST>
Index: /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-linear-01.xml
===================================================================
--- /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-linear-01.xml	(revision 418)
+++ /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-linear-01.xml	(revision 418)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VAST version="2.0">
+  <Ad id="linear-1">
+    <InLine>
+      <AdSystem>OVA Static Template</AdSystem>
+      <AdTitle>VPAID Linear Ad</AdTitle>
+      <Impression>
+        <URL id="test"><![CDATA[http://localhost/log?impression]]></URL>
+      </Impression>
+      <Creatives>
+        <Creative>
+          <Linear>
+              <Duration>00:00:00</Duration>
+		      <TrackingEvents>
+ 		        <Tracking event="creativeView">http://localhost/log?creativeView</Tracking>
+ 		        <Tracking event="start">http://localhost/log?start</Tracking>
+		        <Tracking event="firstQuartile">http://localhost/log?firstQuartile</Tracking>
+		        <Tracking event="midpoint">http://localhost/log?midpoint</Tracking>
+		        <Tracking event="thirdQuartile">http://localhost/log?thirdQuartile</Tracking>
+		        <Tracking event="complete">http://localhost/log?complete</Tracking>
+		        <Tracking event="pause">http://localhost/log?pause</Tracking>
+		        <Tracking event="resume">http://localhost/log?resume</Tracking>
+		        <Tracking event="rewind">http://localhost/log?rewind</Tracking>
+		        <Tracking event="mute">http://localhost/log?mute</Tracking>
+		        <Tracking event="unmute">http://localhost/log?unmute</Tracking>
+		        <Tracking event="fullscreen">http://localhost/log?fullscreen</Tracking>
+		        <Tracking event="expand">http://localhost/log?expand</Tracking>
+		        <Tracking event="collapse">http://localhost/log?collapse</Tracking>
+		        <Tracking event="acceptInvitation">http://localhost/log?acceptInvitation</Tracking>
+		        <Tracking event="close">http://localhost/log?close</Tracking>
+		      </TrackingEvents>
+              <MediaFiles>
+                 <MediaFile height="270" width="370" type="application/x-shockwave-flash" apiFramework="VPAID">
+	                 <![CDATA[http://cdn1.eyewonder.com/200125/instream/documentation_test_tags/vpaid/as3/VPAID_2_0.swf?adLoaderWidth=320&adLoaderHeight=240&cp=http://cdn.eyewonder.com/100125/754851/1262098/&loaderCreative=Linear_Interactive_Holder_as3.swf%3Fcp%3Dhttp://cdn.eyewonder.com/100125/754851/1262098/%26ewbase%3Dhttp://cdn.eyewonder.com/100125/754851/1262098/%26adLoaderWidth%3D300%26adLoaderHeight%3D225%26hAlign%3Dcenter%26vAlign%3Dmiddle%26keywordNames%3Dinstream_VAST_2_0_TEST%26keywordIDs%3D[103]%26ewbust%3D[timestamp]&adInstreamType=fixedroll&adTagAlignHorizontal=center&adTagAlignVertical=middle&adMode=prog&qaReportUUID=common]]>
+                 </MediaFile>
+              </MediaFiles>
+           </Linear>
+        </Creative>
+      </Creatives>
+    </InLine>
+  </Ad>
+</VAST>
Index: /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-linear-02.xml
===================================================================
--- /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-linear-02.xml	(revision 418)
+++ /trunk/ova.flowplayer/dist/templates/ad-servers/eyewonder/vpaid-linear-02.xml	(revision 418)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VAST version="2.0">
+  <Ad id="linear-1">
+    <InLine>
+      <AdSystem>OVA Static Template</AdSystem>
+      <AdTitle>VPAID Linear Ad</AdTitle>
+      <Impression>
+        <URL id="test"><![CDATA[http://localhost/log?impression]]></URL>
+      </Impression>
+      <Creatives>
+        <Creative>
+          <Linear>
+              <Duration>00:00:00</Duration>
+		      <TrackingEvents>
+ 		        <Tracking event="creativeView">http://localhost/log?creativeView</Tracking>
+ 		        <Tracking event="start">http://localhost/log?start</Tracking>
+		        <Tracking event="firstQuartile">http://localhost/log?firstQuartile</Tracking>
+		        <Tracking event="midpoint">http://localhost/log?midpoint</Tracking>
+		        <Tracking event="thirdQuartile">http://localhost/log?thirdQuartile</Tracking>
+		        <Tracking event="complete">http://localhost/log?complete</Tracking>
+		        <Tracking event="pause">http://localhost/log?pause</Tracking>
+		        <Tracking event="resume">http://localhost/log?resume</Tracking>
+		        <Tracking event="rewind">http://localhost/log?rewind</Tracking>
+		        <Tracking event="mute">http://localhost/log?mute</Tracking>
+		        <Tracking event="unmute">http://localhost/log?unmute</Tracking>
+		        <Tracking event="fullscreen">http://localhost/log?fullscreen</Tracking>
+		        <Tracking event="expand">http://localhost/log?expand</Tracking>
+		        <Tracking event="collapse">http://localhost/log?collapse</Tracking>
+		        <Tracking event="acceptInvitation">http://localhost/log?acceptInvitation</Tracking>
+		        <Tracking event="close">http://localhost/log?close</Tracking>
+		      </TrackingEvents>
+              <MediaFiles>
+                 <MediaFile height="270" width="370" type="application/x-shockwave-flash" apiFramework="VPAID">
+	                 <![CDATA[http://cdn1.eyewonder.com/200125/instream/_modules/loaders/Custom/VPAID_as3/loader.swf?adLoaderWidth=300&adLoaderHeight=225&cp=http://cdn.eyewonder.com/100125/754851/1242700/&loaderCreative=Linear_Holder_as3.swf%3Fcp%3Dhttp%3A//cdn.eyewonder.com/100125/754851/1242700/%26amp%3Bewbase%3Dhttp%3A//cdn.eyewonder.com/100125/754851/1242700/%26amp%3BadLoaderWidth%3D300%26amp%3BadLoaderHeight%3D225%26amp%3BhAlign%3Dcenter%26amp%3BvAlign%3Dmiddle%26amp%3BkeywordNames%3DenableFriendlyIframe%2Cinflow_iframe_div%26amp%3BkeywordIDs%3D%5B48%5D%2C%5B52%5D%26amp%3Bewbust%3D%5Btimestamp%5D&adInstreamType=fixedroll&adTagAlignHorizontal=center&adTagAlignVertical=middle&adMode=prog&qaReportUUID=common]]>
+                 </MediaFile>
+              </MediaFiles>
+           </Linear>
+        </Creative>
+      </Creatives>
+    </InLine>
+  </Ad>
+</VAST>
Index: /trunk/ova.flowplayer/src/org/openvideoads/plugin/flowplayer/streamer/clip/ScheduledClip.as
===================================================================
--- /trunk/ova.flowplayer/src/org/openvideoads/plugin/flowplayer/streamer/clip/ScheduledClip.as	(revision 347)
+++ /trunk/ova.flowplayer/src/org/openvideoads/plugin/flowplayer/streamer/clip/ScheduledClip.as	(revision 418)
@@ -57,4 +57,42 @@
 			return _isOverlayLinear;			
 		}
+
+/*		
+		public function setFromOriginalClip(originalClip:Clip):void {
+			this.accelerated = originalClip.accelerated;
+			this.autoBuffering = originalClip.autoBuffering;
+			this.autoPlay = originalClip.autoPlay;
+			this.autoPlayNext = originalClip.autoPlayNext;
+			this.baseUrl = originalClip.baseUrl;
+			this.bufferLength = originalClip.bufferLength;
+			this.connectionProvider = originalClip.connectionProvider;
+			this.cuepointMultiplier = originalClip.cuepointMultiplier;
+			this.setCuepoints(originalClip.cuepoints);
+			this.customProperties = originalClip.customProperties;
+			this.duration = originalClip.duration;
+			this.durationFromMetadata = originalClip.durationFromMetadata;
+			this.fadeInSpeed = originalClip.fadeInSpeed;
+			this.fadeOutSpeed = originalClip.fadeOutSpeed;
+			this.height = originalClip.height;
+			this.image = originalClip.image;
+			this.linkUrl = originalClip.linkUrl;
+			this.linkWindow = originalClip.linkWindow;
+			this.live = originalClip.live;
+			this.metaData = originalClip.metaData;
+			this.originalHeight = originalClip.originalHeight;
+			this.originalWidth = originalClip.originalWidth;
+			this.parent = originalClip.parent;
+			this.played = originalClip.played;
+			this.position = originalClip.position;
+			this.provider = originalClip.provider;
+			this.scaling = originalClip.scaling;
+			this.seekableOnBegin = originalClip.seekableOnBegin;
+			this.smoothing = originalClip.smoothing;
+			this.start = originalClip.start;
+			this.type = originalClip.type;
+			this.url = originalClip.url;
+			this.setUrlResolvers(originalClip.urlResolvers);
+		}
+*/
 	}
 }
Index: /trunk/ova.flowplayer/src/org/openvideoads/plugin/flowplayer/streamer/OpenAdStreamer.as
===================================================================
--- /trunk/ova.flowplayer/src/org/openvideoads/plugin/flowplayer/streamer/OpenAdStreamer.as	(revision 406)
+++ /trunk/ova.flowplayer/src/org/openvideoads/plugin/flowplayer/streamer/OpenAdStreamer.as	(revision 418)
@@ -23,4 +23,5 @@
 	import org.flowplayer.model.PluginEvent;
 	import org.flowplayer.model.PluginModel;
+	import org.flowplayer.model.State;
 	import org.flowplayer.util.PropertyBinder;
 	import org.flowplayer.view.AbstractSprite;
@@ -38,5 +39,5 @@
 	import org.openvideoads.vast.config.ConfigLoadListener;
 	import org.openvideoads.vast.config.groupings.analytics.AnalyticsConfigGroup;
-	import org.openvideoads.vast.config.groupings.analytics.google.GoogleAnalyticsConfigGroup;	
+	import org.openvideoads.vast.config.groupings.analytics.google.GoogleAnalyticsConfigGroup;
 	import org.openvideoads.vast.events.AdNoticeDisplayEvent;
 	import org.openvideoads.vast.events.CompanionAdDisplayEvent;
@@ -48,4 +49,5 @@
 	import org.openvideoads.vast.events.TemplateEvent;
 	import org.openvideoads.vast.events.TrackingPointEvent;
+	import org.openvideoads.vast.events.VPAIDAdDisplayEvent;
 	import org.openvideoads.vast.playlist.Playlist;
 	import org.openvideoads.vast.schedule.Stream;
@@ -77,4 +79,6 @@
 		protected var _loadEventHasBeenDispatched:Boolean = false;
 		protected var _removeFirstImageClipBeforeLoading:Boolean = false;
+
+		protected var _playerPaused:Boolean = false;
      
         protected static const CONTROLBAR_HEIGHT:int = 29;   
@@ -85,5 +89,5 @@
 		protected static const OVA_FP_DEFAULT_GA_ACCOUNT_ID:String = "UA-4011032-6";
 		
-        public static const OVA_VERSION:String = "v0.6.0 RC3 (build 65)";
+        public static const OVA_VERSION:String = "v0.6.0 RC3 (build 71)";
         
         protected static var STREAMING_PROVIDERS:Object = {
@@ -172,17 +176,20 @@
 			// it's empty in the config - this is a bit of a hack - is there a better way to determine this?
 			
-			if(_player.playlist.clips.length > 0 && _player.playlist.clips[0].url != null) {
-				if(config.outputingDebug()) doLog("Shows configuration include items from the Flowplayer playlist " + _player.playlist.toString(), Debuggable.DEBUG_ALWAYS);
-				if(config.hasStreams()) {
-					config.prependStreams(convertFlowplayerPlaylistToShowStreamConfig());
-				}
-				else config.streams = convertFlowplayerPlaylistToShowStreamConfig();
-				
-				if(config.outputingDebug())  {
-					doLog("Total show configuration is: " + config.streams.length + " (length)", Debuggable.DEBUG_ALWAYS);
-					for(var i:int=0; i < config.streams.length; i++) {
-						doLog("- stream " + i + ": " + config.streams[i].file, Debuggable.DEBUG_ALWAYS);
+			if(_player.playlist.clips.length > 0) {
+				if(_player.playlist.clips[0].url != null || _player.playlist.clips[0].customProperties["bitrates"] != null) {
+					if(config.outputingDebug()) doLog("Shows configuration include items from the Flowplayer playlist " + _player.playlist.toString(), Debuggable.DEBUG_ALWAYS);
+					if(config.hasStreams()) {
+						config.prependStreams(convertFlowplayerPlaylistToShowStreamConfig());
+					}
+					else config.streams = convertFlowplayerPlaylistToShowStreamConfig();
+					
+					if(config.outputingDebug())  {
+						doLog("Total show configuration is: " + config.streams.length + " (length)", Debuggable.DEBUG_ALWAYS);
+						for(var i:int=0; i < config.streams.length; i++) {
+							doLog("- stream " + i + ": " + ((config.streams[i].file == null) ? "To be determined - e.g. bwcheck etc." : config.streams[i].file), Debuggable.DEBUG_ALWAYS);
+						}					
 					}					
 				}
+				else if(config.outputingDebug()) doLog("No Flowplayer playlist defined - first clip does not have a URL or 'bitrates' specified", Debuggable.DEBUG_ALWAYS);
 			}
 			else if(config.outputingDebug()) doLog("No Flowplayer playlist defined - relying on internal show stream configuration", Debuggable.DEBUG_ALWAYS);						
@@ -347,5 +354,19 @@
             _vastController.addEventListener(NonLinearSchedulingEvent.SCHEDULE, onNonLinearSchedule);
 
-			// Setup the Longtail impression counter
+            // Setup VPAID event handlers
+            _vastController.addEventListener(VPAIDAdDisplayEvent.LINEAR_START, onVPAIDLinearAdStart); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.LINEAR_COMPLETE, onVPAIDLinearAdComplete); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.LINEAR_ERROR, onVPAIDLinearAdError); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.LINEAR_LINEAR_CHANGE, onVPAIDLinearAdLinearChange); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.LINEAR_EXPANDED_CHANGE, onVPAIDLinearAdExpandedChange); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.LINEAR_TIME_CHANGE, onVPAIDLinearAdTimeChange); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.NON_LINEAR_START, onVPAIDNonLinearAdStart); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.NON_LINEAR_COMPLETE, onVPAIDNonLinearAdComplete); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.NON_LINEAR_ERROR, onVPAIDNonLinearAdError); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.NON_LINEAR_LINEAR_CHANGE, onVPAIDNonLinearAdLinearChange); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.NON_LINEAR_EXPANDED_CHANGE, onVPAIDNonLinearAdExpandedChange); 
+            _vastController.addEventListener(VPAIDAdDisplayEvent.NON_LINEAR_TIME_CHANGE, onVPAIDNonLinearAdTimeChange); 
+
+			// Setup the Google Analytics impression counter
             _vastController.registerAnalytics(
             		[
@@ -388,4 +409,5 @@
 								"originalPlaylistIndex": index,				     								     		
 								"baseUrl": _player.playlist.clips[index].baseUrl
+//								"originalClip": _player.playlist.clips[index]
 				     		},
 			     			{
@@ -404,5 +426,6 @@
 								"seekableOnBegin": _player.playlist.clips[index].seekableOnBegin,
 								"baseUrl": _player.playlist.clips[index].baseUrl,
-								"autoPlay": _player.playlist.clips[index].autoPlay
+								"autoPlay": _player.playlist.clips[index].autoPlay,
+								"urlResolvers": _player.playlist.clips[index].urlResolvers
 			     			},
 			     			null,
@@ -542,4 +565,8 @@
 			}
 			return baseName;
+		}
+
+		protected function activeStreamIsLinearAd():Boolean {
+			return (_vastController.streamSequence.streamAt(getActiveStreamIndex()) is AdSlot);
 		}
 
@@ -776,4 +803,7 @@
 							clip.seekableOnBegin = event.stream.customProperties[prop];		
 						}
+						else if(prop == "urlResolvers") {					
+							clip.setUrlResolvers(event.stream.customProperties[prop]);		
+						}
 						else clip.setCustomProperty(prop, event.stream.customProperties[prop]);
 					}
@@ -813,4 +843,124 @@
 		}			
 
+        // VPAID specific playback handlers
+
+		protected function moveFromVPAIDLinearToNextPlaylistItem():void {
+			if(_vastController.hideControlbarDuringVPAIDLinearPlayback()) {
+				setControlBarVisibility(_defaultControlbarVisibilityState);
+			}
+			else turnOnControlBar();
+			_player.next();
+//			streamCompleteStateHandler(null, true, false);
+		}
+		
+        protected function onVPAIDLinearAdStart(event:VPAIDAdDisplayEvent):void {
+        	doLog("PLUGIN NOTIFICATION: VPAID Linear Ad started", Debuggable.DEBUG_VPAID);
+			if(_vastController.hideControlbarDuringVPAIDLinearPlayback()) {
+				setControlBarVisibility(false);
+			}
+			else turnOffControlBar();
+        }
+        
+        protected function onVPAIDLinearAdComplete(event:VPAIDAdDisplayEvent):void {
+        	if(activeStreamIsLinearAd()) {
+	        	doLog("PLUGIN NOTIFICATION: VPAID Linear Ad complete - proceeding to next playlist item", Debuggable.DEBUG_VPAID);
+	        	moveFromVPAIDLinearToNextPlaylistItem();
+	        }
+	        else {
+	        	if(playerPaused()) {
+		        	doLog("PLUGIN NOTIFICATION: VPAID Linear Ad complete - show stream is already active - resuming playback", Debuggable.DEBUG_VPAID);
+	        		resumePlayback();
+	        	}
+		        else doLog("PLUGIN NOTIFICATION: VPAID Linear Ad complete - show stream is already active - no additional action required", Debuggable.DEBUG_VPAID);
+	        }
+        }
+
+		protected function onVPAIDLinearAdError(error:VPAIDAdDisplayEvent):void {
+        	if(activeStreamIsLinearAd()) {
+	        	doLog((error != null) 
+    	    	         ? "PLUGIN NOTIFICATION: VPAID Linear Ad error ('" + ((error.data != null) ? error.data.message : "") + "') proceeding to next playlist item"
+        		         : "PLUGIN NOTIFICATION: VPAID Linear Ad error proceeding to next playlist item", Debuggable.DEBUG_VPAID);
+        		moveFromVPAIDLinearToNextPlaylistItem();
+        	}
+        	else {
+        		if(playerPaused()) {
+		        	doLog("PLUGIN NOTIFICATION: VPAID Linear Ad error ('" + ((error.data != null) ? error.data.message : "") + "') - Active stream is a show stream - resuming playback", Debuggable.DEBUG_VPAID);
+        			resumePlayback();			
+        		}
+        		else doLog("PLUGIN NOTIFICATION: VPAID Linear Ad error ('" + ((error.data != null) ? error.data.message : "") + "') - Active stream is a show stream - no additional action required", Debuggable.DEBUG_VPAID);
+        	} 
+		}
+
+		protected function onVPAIDLinearAdLinearChange(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Linear Ad linear change - linear state == " + ((event != null) ? event.data : "'not provided'"), Debuggable.DEBUG_VPAID);
+			if(event.data == false) { 
+				// event.data represents the "adLinear" value - in this case adLinear == false so ad is no longer in linear state
+			}
+		}
+
+		protected function onVPAIDLinearAdExpandedChange(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Linear Ad expanded change - expanded state == " + ((event != null) ? event.data : "'not provided'") + ", player paused == " + playerPaused(), Debuggable.DEBUG_VPAID);
+			if(event.data == false) { 
+			    // VPAID ad has been minimised as the "adExpanded" state == false (event.data represents the "adExpanded" state
+			    if(activeStreamIsLinearAd()) {
+					moveFromVPAIDLinearToNextPlaylistItem();				
+				}
+				else {
+					// We have a show stream as the active stream
+					if(_playerPaused) resumePlayback();
+				}
+			}
+			else { 
+				// VPAID ad has been expanded as the "adExpanded" state == true
+				pausePlayback();
+			}
+		}
+
+		protected function onVPAIDLinearAdTimeChange(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Linear Ad time change - time == " + ((event != null) ? event.data : "'not provided'"), Debuggable.DEBUG_VPAID);
+		}          
+		
+		protected function onVPAIDNonLinearAdStart(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad start", Debuggable.DEBUG_VPAID);
+		}
+		
+		protected function onVPAIDNonLinearAdComplete(event:VPAIDAdDisplayEvent):void { 
+			if(playerPaused()) {
+				doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad complete - resuming playback", Debuggable.DEBUG_VPAID);
+				resumePlayback();
+			}
+			else doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad complete - no action required", Debuggable.DEBUG_VPAID);
+		}
+		
+		protected function onVPAIDNonLinearAdError(event:VPAIDAdDisplayEvent):void {
+			if(playerPaused()) {
+				doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad error ('" + ((event.data != null) ? event.data.message : "") + "') - resuming playback", Debuggable.DEBUG_VPAID);
+				resumePlayback();
+			}
+        	else doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad error ('" + ((event.data != null) ? event.data.message : "") + "')", Debuggable.DEBUG_VPAID);
+		}
+		
+		protected function onVPAIDNonLinearAdLinearChange(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad linear change", Debuggable.DEBUG_VPAID);
+		}
+		
+		protected function onVPAIDNonLinearAdExpandedChange(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad expanded change - expanded state == " + ((event != null) ? event.data : "'not provided'") + ", player paused == " + playerPaused(), Debuggable.DEBUG_VPAID);
+			if(event.data == false) { 
+			    // VPAID ad has been minimised as the "adExpanded" state == false (event.data represents the "adExpanded" state
+				if(_playerPaused) {
+					resumePlayback();
+				}
+			}
+			else { 
+				// VPAID ad has been expanded as the "adExpanded" state == true
+				pausePlayback();
+			}
+		}
+
+		protected function onVPAIDNonLinearAdTimeChange(event:VPAIDAdDisplayEvent):void {
+			doLog("PLUGIN NOTIFICATION: VPAID Non-Linear Ad time change", Debuggable.DEBUG_VPAID);
+		}   
+		
 		// Tracking Point event callbacks
 
@@ -850,4 +1000,18 @@
 		}
 		
+		// Player operations
+		
+		protected function pausePlayback():void {
+			_player.pause();
+		}
+		
+		protected function resumePlayback():void {
+			_player.play();
+		}
+		
+		protected function playerPaused():Boolean {
+			return (_player.state == State.PAUSED);
+		}
+		
 		// VAST data event callbacks
 		
@@ -882,5 +1046,11 @@
 		}
 
-        // Seekbar callbacks
+        // Control bar operations
+        
+        protected function turnOffControlBar():void {
+        }
+        
+        protected function turnOnControlBar():void {
+        }
 
 		protected function enableControlBarWidgets():void {
@@ -1074,10 +1244,21 @@
 
         private function getActiveStreamIndex():int {
-        	return (_player.currentClip as ScheduledClip).key; 
+        	if(_player.currentClip != null) {
+				if(_player.currentClip is ScheduledClip) {
+	        		return (_player.currentClip as ScheduledClip).key;				
+				}
+				else return _player.currentClip.index;
+        	}
+        	return 0;
         }
         
         private function isActiveLinearClipOverlay():Boolean {
-			var activeClip:ScheduledClip = _player.currentClip as ScheduledClip;
-			return activeClip.isOverlayLinear;        	
+        	if(_player.currentClip != null) {
+        		if(_player.currentClip is ScheduledClip) {
+					var activeClip:ScheduledClip = _player.currentClip as ScheduledClip;
+					return activeClip.isOverlayLinear;        		
+        		}
+        	}
+        	return false;
         }
 
@@ -1166,5 +1347,4 @@
 		}
 
-
 		private function onPauseEvent(playlistEvent:ClipEvent):void {
         	if(_vastController != null) _vastController.onPlayerPause(getActiveStreamIndex(), isActiveLinearClipOverlay());
Index: /trunk/ova.flowplayer/examples/vpaid/example1.2.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/example1.2.html	(revision 418)
+++ /trunk/ova.flowplayer/examples/vpaid/example1.2.html	(revision 418)
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Example 1.2 - Standard control bar shown but disabled during ad playback</title>
+<script type="text/javascript" src="../../dist/js/jquery-1.3.1.js"></script>
+</head>
+<body>
+<script type="text/javascript" src="../../dist/js/flowplayer-3.2.3.min.js"></script>
+<script type="text/javascript" src="../../dist/js/ova-examples.js"></script>
+<style type="text/css">
+<!--
+  @import url(../../dist/css/global.css);
+-->
+</style>
+<h2>Example 1.2 - Standard control bar shown but disabled during ad playback</h2>
+<p class="example"></p>
+<div style="width:754px;height:255px;">
+	<a class="example" style="width:444px;height:252px;float:left"></a>
+	<div id="companion-1" style="width:300px;height:250px;border:1px solid #000;float:right;"></div>
+</div>
+<script type="text/javascript">
+flowplayer("a.example", FP_SWF_2, {
+    plugins: {
+        controls: {
+        	autoHide: "always"
+        },
+        
+        ova: {
+            url: OVA_OAS_URL_2,
+ 
+            "shows": {
+                "baseURL": OVA_HTTP_BASE_URL,
+                "streams": [
+                    {  
+                        "file": OVA_HTTP_SHOW_STREAM_FILE, 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+               "vpaid": {
+                  "controls": { "hideOnLinearPlayback": false }
+               },
+	           "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
+               ],
+               "schedule": [
+                  {
+                    "position": "pre-roll",
+                    "tag": OVA_VPAID_LINEAR_2_VAST
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": OVA_OAS_DEBUG,
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</script>
+<br/>
+<p>
+The configuration for this example is:
+</p>
+<div class="codebox">
+<pre>
+<code class="javascript">
+flowplayer("a.player614x345", "<script type="text/javascript">document.write(FP_SWF_2)</script>", {
+    plugins: {
+        controls: {
+        	autoHide: "always"
+        },
+
+        ova: {
+            url: "<script type="text/javascript">document.write(OVA_OAS_URL_2)</script>",
+ 
+            "shows": {
+                "baseURL": "<script type="text/javascript">document.write(OVA_HTTP_BASE_URL)</script>",
+                "streams": [
+                    {  
+                        "file":"<script type="text/javascript">document.write(OVA_HTTP_SHOW_STREAM_FILE)</script>", 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+               "vpaid": {
+                  "controls": { "hideOnLinearPlayback": false }
+               },
+               "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }
+               ],
+               "schedule": [
+                  {
+                     "position": "pre-roll",
+                     "tag": "<script type="text/javascript">document.write(OVA_VPAID_LINEAR_2_VAST)</script>"
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": "<script type="text/javascript">document.write(OVA_OAS_DEBUG)</script>",
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</code>
+</pre>
+</div>
+</body>
+</html>
Index: /trunk/ova.flowplayer/examples/vpaid/example1.3.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/example1.3.html	(revision 418)
+++ /trunk/ova.flowplayer/examples/vpaid/example1.3.html	(revision 418)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Example 1.3 - No visible control bar or show stream before or after ad playback</title>
+<script type="text/javascript" src="../../dist/js/jquery-1.3.1.js"></script>
+</head>
+<body>
+<script type="text/javascript" src="../../dist/js/flowplayer-3.2.3.min.js"></script>
+<script type="text/javascript" src="../../dist/js/ova-examples.js"></script>
+<style type="text/css">
+<!--
+  @import url(../../dist/css/global.css);
+-->
+</style>
+<h2>Example 1.3 - No visible control bar or show stream before or after ad playback</h2>
+<p class="example"></p>
+<div style="width:754px;height:255px;">
+	<a class="example" style="width:444px;height:252px;float:left"></a>
+	<div id="companion-1" style="width:300px;height:250px;border:1px solid #000;float:right;"></div>
+</div>
+<script type="text/javascript">
+flowplayer("a.example", FP_SWF_2, {
+    plugins: {
+        controls: null,
+        
+        ova: {
+            url: OVA_OAS_URL_2,
+ 
+            "shows": {
+                "baseURL": OVA_HTTP_BASE_URL,
+                "streams": [
+                    {  
+                        "file": OVA_HTTP_SHOW_STREAM_FILE, 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+	           "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
+               ],
+               "schedule": [
+                  {
+                    "position": "pre-roll",
+                    "tag": OVA_VPAID_LINEAR_2_VAST
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": OVA_OAS_DEBUG,
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</script>
+<br/>
+<p>
+The configuration for this example is:
+</p>
+<div class="codebox">
+<pre>
+<code class="javascript">
+flowplayer("a.player614x345", "<script type="text/javascript">document.write(FP_SWF_2)</script>", {
+    plugins: {
+        controls: null,
+
+        ova: {
+            url: "<script type="text/javascript">document.write(OVA_OAS_URL_2)</script>",
+ 
+            "shows": {
+                "baseURL": "<script type="text/javascript">document.write(OVA_HTTP_BASE_URL)</script>",
+                "streams": [
+                    {  
+                        "file":"<script type="text/javascript">document.write(OVA_HTTP_SHOW_STREAM_FILE)</script>", 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+               "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }
+               ],
+               "schedule": [
+                  {
+                     "position": "pre-roll",
+                     "tag": "<script type="text/javascript">document.write(OVA_VPAID_LINEAR_2_VAST)</script>"
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": "<script type="text/javascript">document.write(OVA_OAS_DEBUG)</script>",
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</code>
+</pre>
+</div>
+</body>
+</html>
Index: /trunk/ova.flowplayer/examples/vpaid/example1.4.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/example1.4.html	(revision 418)
+++ /trunk/ova.flowplayer/examples/vpaid/example1.4.html	(revision 418)
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Example 1.4 - Skinned controlbar hidden during ad playback</title>
+<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.4.min.js"></script> 
+<script src="http://static.flowplayer.org/js/flowplayer.controls-3.0.2.min.js"></script>
+</head>
+<body>
+<script type="text/javascript" src="../../dist/js/ova-examples.js"></script>
+<style type="text/css">
+<!--
+  @import url(../../dist/css/global.css);
+-->
+</style>
+<!-- "HULU" look and feel --> 
+<link rel="stylesheet" type="text/css" href="../../dist/css/controls-hulu.css"/>
+<h2>Example 1.4 - Skinned controlbar hidden during ad playback</h2>
+<p class="example"></p>
+<!-- player container -->
+<div style="width:754px;height:255px;">
+	<a class="example" style="width:444px;height:252px;float:left"></a>
+	<div id="companion-1" style="width:300px;height:250px;border:1px solid #000;float:right;"></div>
+</div>
+<!-- controlbar container -->
+<div id="hulu" class="hulu"></div>
+
+<script type="text/javascript">
+window.onload = function() {
+$f("a.example", "http://releases.flowplayer.org/swf/flowplayer-3.2.5.swf", {
+	// don't start automcatically
+	clip: {
+		autoPlay: false,
+		autoBuffering: true
+	},
+		
+    plugins: {
+        controls: null,
+
+        ova: {
+            url: OVA_OAS_URL_2,
+ 
+            "shows": {
+                "baseURL": OVA_HTTP_BASE_URL,
+                "streams": [
+                    {  
+                        "file": OVA_HTTP_SHOW_STREAM_FILE, 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+	           "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
+               ],
+               "schedule": [
+                  {
+                    "position": "pre-roll",
+                    "tag": OVA_VPAID_LINEAR_2_VAST
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": OVA_OAS_DEBUG,
+              "debugger": "firebug"
+            }
+        }
+    }
+}).controls("hulu", {duration: 25});
+};
+</script>
+<br/>
+<p>
+The configuration for this example is:
+</p>
+<div class="codebox">
+<pre>
+<code class="javascript">
+flowplayer("a.player614x345", "<script type="text/javascript">document.write(FP_SWF_2)</script>", {
+    plugins: {
+        controls: null,
+        
+        ova: {
+            url: "<script type="text/javascript">document.write(OVA_OAS_URL_2)</script>",
+ 
+            "shows": {
+                "baseURL": "<script type="text/javascript">document.write(OVA_HTTP_BASE_URL)</script>",
+                "streams": [
+                    {  
+                        "file":"<script type="text/javascript">document.write(OVA_HTTP_SHOW_STREAM_FILE)</script>", 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+               "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }
+               ],
+               "schedule": [
+                  {
+                     "position": "pre-roll",
+                     "tag": "<script type="text/javascript">document.write(OVA_VPAID_LINEAR_2_VAST)</script>"
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": "<script type="text/javascript">document.write(OVA_OAS_DEBUG)</script>",
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</code>
+</pre>
+</div>
+</body>
+</html>
Index: /trunk/ova.flowplayer/examples/vpaid/index.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/index.html	(revision 347)
+++ /trunk/ova.flowplayer/examples/vpaid/index.html	(revision 418)
@@ -7,11 +7,30 @@
 <a href="www.openvideoads.org"><img src="../../dist/images/ova-logo-final.png" border="0"/></a>
 <h2>OVA for Flowplayer - VPAID Examples</h2>
-<p class="example">
-<p>
+<p class="example">VPAID Linear (Pre-Roll) Examples</p>
 <ol>
-<li><a href="example01.html">Eyewonder VPAID Linear pre-roll</a></li>
-<li><a href="example02.html">Eyewonder VPAID Non-Linear</a></li>
-<li><a href="example03.html">Eyewonder VPAID Non-Linear with preset duration</a></li>
-<li><a href="example04.html">Passing in a referrer URL to a VPAID ad</a></li>
+<li><a href="example1.1.html">Standard control bar hidden during ad playback (default)</a></li>
+<li><a href="example1.2.html">Standard control bar shown but disabled during ad playback</a></li>
+<li><a href="example1.3.html">No visible control bar or show stream before or after ad playback</a></li>
+<li><a href="example1.4.html">HTML controlbar hidden during ad playback</a></li>
+<li><a href="example1.5.html">HTML controlbar shown but disabled during ad playback</a></li>
+<li><a href="example1.6.html">Controlbar = "over" hidden during ad playback (default)</a></li>
+<li><a href="example1.7.html">Controlbar = "top" hidden during ad playback (default)</a></li>
+<li><a href="example1.8.html">Controlbar = "none" during ad and show playback</a></li>
+</ol>
+<!--
+<p class="example">VPAID Non-Linear (Overlay) Examples</p>
+<ol>
+<li><a href="example2.1 02.html">Eyewonder VPAID Non-Linear</a></li>
+<li><a href="example2.2 03.html">Eyewonder VPAID Non-Linear with preset duration</a></li>
+<li><a href="example2.3 05.html">Specifying the VPAID Linear Display Region</a></li>
+<li><a href="example2.4 06.html">Specifying the VPAID Non-Linear Display Region</a></li>
+</ol>
+-->
+<p class="example">VPAID Custom Configuration Examples</p>
+<ol>
+<li><a href="example3.1.html">Enabling the referrer URL to be passed to a VPAID ad</a></li>
+<li><a href="example3.2.html">Specifying a max duration timeout timer</a></li>
+<li><a href="example3.5.html">Autostarting a VPAID Linear</a></li>
+<li><a href="example3.6.html">Deferred VPAID pre-roll ad call</a></li>
 </ol>
 <p>
Index: /trunk/ova.flowplayer/examples/vpaid/example1.1.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/example1.1.html	(revision 418)
+++ /trunk/ova.flowplayer/examples/vpaid/example1.1.html	(revision 418)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Example 1.1 - Standard control bar hidden during ad playback (default)</title>
+<script type="text/javascript" src="../../dist/js/jquery-1.3.1.js"></script>
+</head>
+<body>
+<script type="text/javascript" src="../../dist/js/flowplayer-3.2.3.min.js"></script>
+<script type="text/javascript" src="../../dist/js/ova-examples.js"></script>
+<style type="text/css">
+<!--
+  @import url(../../dist/css/global.css);
+-->
+</style>
+<h2>Example 1.1 - Standard control bar hidden during ad playback (default)</h2>
+<p class="example"></p>
+<div style="width:754px;height:255px;">
+	<a class="example" style="width:444px;height:252px;float:left"></a>
+	<div id="companion-1" style="width:300px;height:250px;border:1px solid #000;float:right;"></div>
+</div>
+<script type="text/javascript">
+flowplayer("a.example", FP_SWF_2, {
+    plugins: {
+        controls: {
+        	autoHide: "always"
+        },
+        
+        ova: {
+            url: OVA_OAS_URL_2,
+ 
+            "shows": {
+                "baseURL": OVA_HTTP_BASE_URL,
+                "streams": [
+                    {  
+                        "file": OVA_HTTP_SHOW_STREAM_FILE, 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+	           "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
+               ],
+               "schedule": [
+                  {
+                    "position": "pre-roll",
+                    "tag": OVA_VPAID_LINEAR_2_VAST
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": OVA_OAS_DEBUG,
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</script>
+<br/>
+<p>
+The configuration for this example is:
+</p>
+<div class="codebox">
+<pre>
+<code class="javascript">
+flowplayer("a.player614x345", "<script type="text/javascript">document.write(FP_SWF_2)</script>", {
+    plugins: {
+        ova: {
+            url: "<script type="text/javascript">document.write(OVA_OAS_URL_2)</script>",
+ 
+            "shows": {
+                "baseURL": "<script type="text/javascript">document.write(OVA_HTTP_BASE_URL)</script>",
+                "streams": [
+                    {  
+                        "file":"<script type="text/javascript">document.write(OVA_HTTP_SHOW_STREAM_FILE)</script>", 
+                        "duration":"00:00:20"
+                    }                    
+                ]
+            },
+            
+            "ads": {
+               "companions": [
+                  { "id":"companion-300x250", "width":"300", "height":"250" }
+               ],
+               "schedule": [
+                  {
+                     "position": "pre-roll",
+                     "tag": "<script type="text/javascript">document.write(OVA_VPAID_LINEAR_2_VAST)</script>"
+                  }
+               ]
+            },
+
+            "debug": {
+              "levels": "<script type="text/javascript">document.write(OVA_OAS_DEBUG)</script>",
+              "debugger": "firebug"
+            }
+        }
+    }
+});
+</code>
+</pre>
+</div>
+</body>
+</html>
Index: unk/ova.flowplayer/examples/vpaid/example01.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/example01.html	(revision 347)
+++ 	(revision )
@@ -1,116 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<title>Example 1 - Eyewonder VPAID Linear pre-roll</title>
-<script type="text/javascript" src="../../dist/js/jquery-1.3.1.js"></script>
-</head>
-<body>
-<script type="text/javascript" src="../../dist/js/flowplayer-3.2.3.min.js"></script>
-<script type="text/javascript" src="../../dist/js/ova-examples.js"></script>
-<style type="text/css">
-<!--
-  @import url(../../dist/css/global.css);
--->
-</style>
-<h2>Example 1 - Eyewonder VPAID Linear pre-roll</h2>
-<p class="example">
-This example illustrates a simple VPAID non-linear example.
-</p>
-<div style="width:754px;height:255px;">
-	<a class="example" style="width:444px;height:252px;float:left"></a>
-	<div id="companion-1" style="width:300px;height:250px;border:1px solid #000;float:right;"></div>
-</div>
-<script type="text/javascript">
-flowplayer("a.example", FP_SWF_2, {
-    plugins: {
-        controls: {
-        	autoHide: "always"
-        },
-        
-        ova: {
-            url: OVA_OAS_URL_2,
- 
-            "shows": {
-                "baseURL": OVA_HTTP_BASE_URL,
-                "streams": [
-                    {  
-                        "file": OVA_HTTP_SHOW_STREAM_FILE, 
-                        "duration":"00:00:20"
-                    }                    
-                ]
-            },
-            
-            "ads": {
-	           "companions": [
-                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
-               ],
-               "schedule": [
-                  {
-                    "position": "pre-roll",
-                    "tag": OVA_VPAID_EXAMPLE1_VAST
-                  }
-               ]
-            },
-
-            "debug": {
-              "levels": OVA_OAS_DEBUG,
-              "debugger": "firebug"
-            }
-        }
-    }
-});
-</script>
-<br/>
-<p>
-The configuration for this example is:
-</p>
-<div class="codebox">
-<pre>
-<code class="javascript">
-flowplayer("a.player614x345", "<script type="text/javascript">document.write(FP_SWF_2)</script>", {
-    plugins: {
-        ova: {
-            url: "<script type="text/javascript">document.write(OVA_OAS_URL_2)</script>",
- 
-            "shows": {
-                "baseURL": "<script type="text/javascript">document.write(OVA_HTTP_BASE_URL)</script>",
-                "streams": [
-                    {  
-                        "file":"<script type="text/javascript">document.write(OVA_HTTP_SHOW_STREAM_FILE)</script>", 
-                        "duration":"00:00:20"
-                    }                    
-                ]
-            },
-            
-            "ads": {
-               "servers": [
-                   {
-                      "type": "direct",
-                      "apiAddress": "<script type="text/javascript">document.write(OVA_VPAID_EXAMPLE1_VAST)</script>",
-                   }
-               ],
-               "restoreCompanions": false,
-               "companions": [
-                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
-               ],
-               "schedule": [
-                  {
-                    "startTime": "00:00:03",
-                    "duration": "00:00:15"
-                  }
-               ]
-            },
-
-            "debug": {
-              "levels": "<script type="text/javascript">document.write(OVA_OAS_DEBUG)</script>",
-              "debugger": "firebug"
-            }
-        }
-    }
-});
-</code>
-</pre>
-</div>
-</body>
-</html>
Index: unk/ova.flowplayer/examples/vpaid/example02.html
===================================================================
--- /trunk/ova.flowplayer/examples/vpaid/example02.html	(revision 347)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<title>Example 1 - VPAID Non-Linear (Countdown) Example</title>
-<script type="text/javascript" src="../../dist/js/jquery-1.3.1.js"></script>
-</head>
-<body>
-<script type="text/javascript" src="../../dist/js/flowplayer-3.2.3.min.js"></script>
-<script type="text/javascript" src="../../dist/js/ova-examples.js"></script>
-<style type="text/css">
-<!--
-  @import url(../../dist/css/global.css);
--->
-</style>
-<h2>Example 1 - VPAID Non-Linear (Countdown) Example</h2>
-<p class="example">
-This example illustrates a simple VPAID non-linear example.
-</p>
-<div style="width:754px;height:255px;">
-	<a class="example" style="width:444px;height:252px;float:left"></a>
-	<div id="companion-1" style="width:300px;height:250px;border:1px solid #000;float:right;"></div>
-</div>
-<script type="text/javascript">
-flowplayer("a.example", FP_SWF_2, {
-    plugins: {
-        controls: null,
-        ova: {
-            url: OVA_OAS_URL_2,
- 
-            "shows": {
-                "baseURL": OVA_HTTP_BASE_URL,
-                "streams": [
-                    {  
-                        "file": OVA_HTTP_SHOW_STREAM_FILE, 
-                        "duration":"00:00:20"
-                    }                    
-                ]
-            },
-            
-            "ads": {
-               "servers": [
-                   {
-                      "type": "direct",
-                      "apiAddress": OVA_VPAID_EXAMPLE1_VAST
-                   }
-               ],
-	           "companions": [
-                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
-               ],
-               "schedule": [
-                  {
-                    "startTime": "00:00:03",
-                    "duration": "00:00:15",
-                    "position": "reserved-fullscreen"
-                  }
-               ]
-            },
-
-            "debug": {
-              "levels": OVA_OAS_DEBUG,
-              "debugger": "firebug"
-            }
-        }
-    }
-});
-</script>
-<br/>
-<p>
-The configuration for this example is:
-</p>
-<div class="codebox">
-<pre>
-<code class="javascript">
-flowplayer("a.player614x345", "<script type="text/javascript">document.write(FP_SWF_2)</script>", {
-    plugins: {
-        ova: {
-            url: "<script type="text/javascript">document.write(OVA_OAS_URL_2)</script>",
- 
-            "shows": {
-                "baseURL": "<script type="text/javascript">document.write(OVA_HTTP_BASE_URL)</script>",
-                "streams": [
-                    {  
-                        "file":"<script type="text/javascript">document.write(OVA_HTTP_SHOW_STREAM_FILE)</script>", 
-                        "duration":"00:00:20"
-                    }                    
-                ]
-            },
-            
-            "ads": {
-               "servers": [
-                   {
-                      "type": "direct",
-                      "apiAddress": "<script type="text/javascript">document.write(OVA_VPAID_EXAMPLE1_VAST)</script>",
-                   }
-               ],
-               "restoreCompanions": false,
-               "companions": [
-                  { "id":"companion-300x250", "width":"300", "height":"250" }                  
-               ],
-               "schedule": [
-                  {
-                    "startTime": "00:00:03",
-                    "duration": "00:00:15"
-                  }
-               ]
-            },
-
-            "debug": {
-              "levels": "<script type="text/javascript">document.write(OVA_OAS_DEBUG)</script>",
-              "debugger": "firebug"
-            }
-        }
-    }
-});
-</code>
-</pre>
-</div>
-</body>
-</html>
Index: /trunk/ova.flowplayer/examples/index.html
===================================================================
--- /trunk/ova.flowplayer/examples/index.html	(revision 412)
+++ /trunk/ova.flowplayer/examples/index.html	(revision 418)
@@ -31,5 +31,5 @@
 <li><a href="pages/direct-injection/index.html">Direct VAST Data Injection</a></li>
 <li><a href="xml-wrapper/index.html">Supporting the VAST Wrapper</a></li>
-<!-- <li><a href="vpaid/index.html">VPAID Examples</a></li> -->
+<li><a href="vpaid/index.html">VPAID Examples</a></li>
 </ul>
 </p>
Index: /trunk/ova.as3/src/org/openvideoads/vast/schedule/StreamConfig.as
===================================================================
--- /trunk/ova.as3/src/org/openvideoads/vast/schedule/StreamConfig.as	(revision 347)
+++ /trunk/ova.as3/src/org/openvideoads/vast/schedule/StreamConfig.as	(revision 418)
@@ -65,9 +65,11 @@
 		                             fireTrackingEvents:Boolean=false) {
 			_id = id;
-			if(filename.indexOf("(live)") > -1) {
-				_filename = filename.substr(filename.lastIndexOf("(live)") + 6);
-				_isLive = true;
-			}
-			else _filename = filename;
+			if(filename != null) {
+				if(filename.indexOf("(live)") > -1) {
+					_filename = filename.substr(filename.lastIndexOf("(live)") + 6);
+					_isLive = true;
+				}
+				else _filename = filename;				
+			}
 			this.duration = duration;
 			_reduceLength = reduceLength;
@@ -234,5 +236,6 @@
         		return (_filename.match(pattern) == null);
 			}
-			return false; 
+			return true; 
+//			return false; 
 		}
 		
Index: /trunk/ova.as3/src/org/openvideoads/vast/schedule/ads/AdSchedule.as
===================================================================
--- /trunk/ova.as3/src/org/openvideoads/vast/schedule/ads/AdSchedule.as	(revision 405)
+++ /trunk/ova.as3/src/org/openvideoads/vast/schedule/ads/AdSchedule.as	(revision 418)
@@ -231,6 +231,9 @@
 						var relatedStream:StreamConfig = ((j < config.streams.length) ? config.streams[j] : null);
 						if(checkApplicability(config.adSchedule[i], j, excludePopupPosition, numberOfStreams, relatedStream)) {
-							var adSpot:Object = config.adSchedule[i];						
+							var adSpot:Object = config.adSchedule[i];
 							var originalAdSlot:AdSlot;
+							if((adSpot.zone is String) == false) {
+								adSpot.zone = new String(adSpot.zone);
+							}
 							if(adSpot.zone && adSpot.zone.toUpperCase() == "STATIC") {
 								originalAdSlot = new StaticAdSlot(relatedStreamSequence,
Index: /trunk/ova.as3/src/org/openvideoads/vast/schedule/Stream.as
===================================================================
--- /trunk/ova.as3/src/org/openvideoads/vast/schedule/Stream.as	(revision 405)
+++ /trunk/ova.as3/src/org/openvideoads/vast/schedule/Stream.as	(revision 418)
@@ -349,5 +349,6 @@
     			return (filename.match(pattern) != null);				
 			}
-			return false;
+			return true;
+//			return false;
         }
 
Index: /trunk/ova.as3/README.txt
===================================================================
--- /trunk/ova.as3/README.txt	(revision 415)
+++ /trunk/ova.as3/README.txt	(revision 418)
@@ -319,2 +319,3 @@
 * T270 - Fixed condition ensuring VAST 2.0.1 is processed
 * Added tagParams config option to allow additional parameters to be added to an ad tag
+* Added check to "zone" value - if it's not a string, convert when building the ad schedule
