window.additionalEmbed = function(videoPlayer) 
	{
		function concatMetaData(metadataBase)
		{
			var returnMe = '';
			for(val in metadataBase)
			{
				returnMe += val + '|';
				returnMe += metadataBase[val] + '|';
			}
			return returnMe;
		}
		
		function initialize()
		{
			videoPlayer.videoPlaying = false;
			videoPlayer.videoOpen = false;
			videoPlayer.videoPlayStart = 0;
			videoPlayer.videoScrubbed = false;
			videoPlayer.videoPrimaryTimingGranularity = 60;
			videoPlayer.videoSecondaryTimingGranularity = 5*60;
			videoPlayer.videoSecondaryTimingPoint = 5*60;
			videoPlayer.videoSecondaryTimingActive = false;
			videoPlayer.videoType = 'VOD:';
			videoPlayer.videoMetaDataFetched = false;
			videoPlayer.videoDuration = undefined;
			videoPlayer.videoTitle = undefined;
			videoPlayer.adStartTime = 0;
			if(typeof s !== 'undefined') s.Media.trackMilestones="25,50,75";
			videoPlayer.metadata = undefined;
		}

		initialize();
				
		function trackSeconds( seconds )
		{
			videoPlayer.videoType = 'STREAM:';
			s.Media.trackSeconds = seconds;							
		};
		
		function trackMediaOpen( videoTitle, videoDuration )
		{
			if( !videoPlayer.videoOpen )
			{
				if( !videoPlayer.videoMetaDataFetched )
				{
					videoPlayer.mb.publish(OO.EVENTS.WILL_FETCH_METADATA);
				}
				
				if(typeof videoPlayer.videoTitle !== 'undefined')
				{
					videoTitle = videoPlayer.videoTitle;
				}
				videoTitle = typeof videoTitle === 'undefined' ? '<undefined videoTitle>' : videoTitle;
				
				if( typeof videoPlayer.videoDuration !== 'undefined' )
				{
					videoDuration = videoPlayer.videoDuration;
				}
				videoDuration = (typeof videoDuration === 'undefined' || videoDuration < 1 ) ? -1 : videoDuration;
				
				if( videoDuration < 0 )
				{
					trackSeconds( videoPlayer.videoPrimaryTimingGranularity );
					videoPlayer.videoTimeTracked = Math.floor( new Date().getTime() / 1000 );
				}
				setTimeout(function(){ 
					//console.log('trackMediaOpen( ' + videoTitle + ', ' + videoDuration + ')');
					s.Media.open( videoPlayer.videoType + videoTitle, videoDuration, 'Ooyala');
				},0 );
				videoPlayer.videoOpen = true;
				videoPlayer.videoTitle = videoTitle;
			}
		};
		
		function trackMediaPlay( videoTitle, videoPlayPosition )
		{
			if( !videoPlayer.videoPlaying )
			{
				trackMediaOpen( videoTitle, videoPlayer.getDuration() );
				videoTitle = typeof videoTitle == 'undefined' ? '<undefined videoTitle>' : videoTitle ;
				if(videoPlayPosition >= videoPlayer.getDuration() - 1 )
				{
					videoPlayPosition = 0;
					videoPlayer.videoPlayStart = 0;
				}
				videoPlayPosition = typeof videoPlayPosition == 'undefined' ? videoPlayer.videoPlayStart : Math.floor(videoPlayPosition) ;							
				setTimeout(function(){ 
					//console.log('trackMediaPlay( ' + videoPlayer.videoType + videoTitle + ', ' + videoPlayPosition + ')');
					s.Media.play( videoPlayer.videoType + videoTitle , videoPlayPosition );
				},0 );
				videoPlayer.videoPlaying = true;
			}							
		};
		
		function trackMediaStop( videoTitle, videoStopPosition )
		{
			if( videoPlayer.videoOpen && videoPlayer.videoPlaying )
			{
				videoTitle = typeof videoTitle === 'undefined' ? '<undefined videoTitle>' : videoTitle ;
				videoStopPosition = typeof videoStopPosition === 'undefined' ? videoPlayer.videoPlayStart : videoStopPosition ;
				setTimeout(function(){ 
					//console.log('trackMediaStop( ' + videoTitle + ', ' + videoStopPosition + ')');
					s.Media.stop( videoPlayer.videoType + videoTitle , videoStopPosition );
				},0 );
				videoPlayer.videoPlaying = false;
				videoPlayer.videoPlayStart = videoStopPosition;
			}
		};
		
		function trackMediaClose( videoTitle )
		{
			if( videoPlayer.videoOpen )
			{
				videoTitle = typeof videoTitle === 'undefined' ? '<undefined videoTitle>' : videoTitle ;
				trackMediaStop( videoTitle, videoPlayer.getPlayheadTime() );								
				setTimeout(function(){ 
					//console.log('trackMediaClose( ' + videoTitle + ')');
					s.Media.close( videoPlayer.videoType + videoTitle );
				},0 );
				initialize();
			}
			
		};

		videoPlayer.mb.subscribe(OO.EVENTS.PLAYED, 'TelstraMedia', 
		function(eventName) {
			trackMediaClose( videoPlayer.getTitle() );
		});

		videoPlayer.mb.subscribe(OO.EVENTS.PLAYING, 'TelstraMedia', 
		function(eventName) {
			var title = typeof videoPlayer.videoTitle !== 'undefined' ? videoPlayer.videoTitle : videoPlayer.getTitle();
			trackMediaPlay( title, typeof videoPlayer.adStartTime !== 'undefined' && videoPlayer.adStartTime > -1 ? videoPlayer.adStartTime : videoPlayer.getPlayheadTime() );
			videoPlayer.adStartTime = -1;
		});
		
		videoPlayer.mb.subscribe(OO.EVENTS.PAUSED, 'TelstraMedia', 
		function(eventName, metadata) {
			trackMediaStop( typeof videoPlayer.videoTitle !== 'undefined' ? videoPlayer.videoTitle : videoPlayer.getTitle(), videoPlayer.getPlayheadTime() );
		});	
				
		videoPlayer.mb.subscribe(OO.EVENTS.PLAYHEAD_TIME_CHANGED, 'TelstraMedia', 
		function(eventName, arg1, arg2, arg3) {
			var playHeadTime = typeof videoPlayer.getPlayheadTime() !== 'undefined' ? videoPlayer.getPlayheadTime() : arg1 ;
			
			if(typeof arg1 === 'undefined')
			{
				videoPlayer.videoDuration = arg2;				
				trackMediaOpen( videoPlayer.getTitle(), arg2 ); 
			}
			
			if( videoPlayer.videoPlaying )
			{
				if( !videoPlayer.videoSecondaryTimingActive )
				{					
					var currentTime = Math.floor( new Date().getTime() / 1000 );
					if( typeof videoPlayer.videoTimeTracked !== 'undefined' && currentTime - videoPlayer.videoTimeTracked > videoPlayer.videoSecondaryTimingPoint )
					{
						trackSeconds( videoPlayer.videoSecondaryTimingGranularity );
						videoPlayer.videoSecondaryTimingActive = true;
					}						
				}
				// if( playHeadTime < videoPlayer.videoPlayStart)
				// {
				// 	console.log('playheadtimebefore videoplay start: ' + playHeadTime + ":" + videoPlayer.videoPlayStart);
				// 	trackMediaClose( videoPlayer.getTitle() );
				// 	trackMediaPlay( videoPlayer.getTitle(), playHeadTime );				
				// }
				s.eVar64 = '' + Math.floor( playHeadTime / (videoPlayer.videoSecondaryTimingActive ? videoPlayer.videoPrimaryTimingGranularity : videoPlayer.videoPrimaryTimingGranularity) ) * (videoPlayer.videoSecondaryTimingActive ? videoPlayer.videoPrimaryTimingGranularity : videoPlayer.videoPrimaryTimingGranularity);				
			}
		});

		// videoPlayer.mb.subscribe('*', 'TelstraMedia', 
		// function(eventName, payload) {
		// 	console.log(eventName + ": " + payload);
		// });

		videoPlayer.mb.subscribe(OO.EVENTS.METADATA_FETCHED, 'TelstraMedia', 
		function(eventName, metadata) {
			videoPlayer.metadata = metadata;
			//s.contextData['metaData'] = concatMetaData(metadata.base);
			//s.contextData['channelname'] = videoPlayer.metadata.base.ChannelName;
			//s.contextData['channelname'] = concatMetaData(metadata.base);
			// s.contextData['classification'] = videoPlayer.metadata.base.Classification;
			// s.contextData['contentprovider'] = videoPlayer.metadata.base.ContentProvider;
			// s.contextData['collection'] = videoPlayer.metadata.base.Collection;
			// s.contextData['aspectratio'] = videoPlayer.metadata.base.AspectRatio;
			// s.contextData['site'] = videoPlayer.metadata.base.Site;
			// s.contextData['drmprotected'] = videoPlayer.metadata.base.DRMProtected;
			if(typeof s !== 'undefined')
			{
				s.contextData['videoURL'] = window.location.toString();
			}
			videoPlayer.videoTitle = videoPlayer.metadata.base.VmsId
			videoPlayer.videoMetaDataFetched = true;
		});
		
		videoPlayer.mb.subscribe(OO.EVENTS.WILL_PLAY_ADS, 'TelstraMedia', 
		function(eventName) {
			if(videoPlayer.videoPlaying)
			{
				videoPlayer.adStartTime = typeof videoPlayer.getPlayheadTime() === 'undefined' ? 0 : videoPlayer.getPlayheadTime();
				trackMediaStop(videoPlayer.getTitle() , videoPlayer.adStartTime);	
			}
		});

		videoPlayer.mb.subscribe(OO.EVENTS.ADS_PLAYED, 'TelstraMedia', 
		function(eventName) {
			if( videoPlayer.adStartTime > -1 && videoPlayer.videoPlaying)
			{
				trackMediaPlay(videoPlayer.getTitle() , videoPlayer.adStartTime);
			}
			videoPlayer.adStartTime = -1;
		});

		videoPlayer.mb.subscribe(OO.EVENTS.EMBED_CODE_CHANGED, 'TelstraMedia', 
		function(eventName, payload) {
			if(typeof payload === 'object')
			{
				if( typeof videoPlayer.videoTitle !== 'undefined' )
				{
					trackMediaClose(videoPlayer.videoTitle);
					initialize();
					videoPlayer.mb.publish(OO.EVENTS.WILL_FETCH_METADATA);
				}
			}
		});	
	};
