 		private function genericHTTPStatusHandler(event:HTTPStatusEvent):void {
             trace("genericHTTPStatusHandler: " + event);
         }
+
+		private function startVideoViewTimeTracker():void {
+			trace('startVideoViewTimeTracker');
+			var now:Date = new Date();
+			videoViewTimeStart = now.getTime();
+		}
+		
+		private function stopVideoViewTimeTracker():uint {
+			trace('stopVideoViewTimeTracker');
+			if(!videoViewTimeStart) return videoViewTime;
+			var now:Date = new Date();
+			videoViewTime += (now.getTime() - videoViewTimeStart);	// ms
+			videoViewTimeStart = 0;	// reset
+			trace('videoViewTime', videoViewTime);
+			return videoViewTime;
+		}
 		
 		
 		/* ======================== */

			if(ExternalInterface.available) {
				ExternalInterface.addCallback("getCurrentTime", getCurrentTime);
				ExternalInterface.addCallback("seekToSegment", seekToSegment);
			}
		}

		// EXTERNAL METHOD
		public function getCurrentTime():Number {
			
			var currentTime:Number = 0
			try {
				currentTime = video.getCurrentTime();
			} catch(e:Error) {
				currentTime = 0;
			}
			
			return currentTime;
			
		}
		
		// EXTERNAL METHOD
		public function seekToSegment(id:String):void {
			
			trace("seekToSegment, id:" + id);
						
			var seekTime:Number = 0;
			for each(var segment:Object in videoSegments) {
				if(segment.id == id) {

					break;
				}
			}
			try {
				video.seekTo(seekTime);
				video.play();
