var video_events = ["OnMediaStart","OnMediaPause","OnMediaUnpause","OnMediaPlaying","OnMediaComplete"]; var milestone_percentages = ["25","50","75","90"]; var played = false; var m1 = false; var m2 = false; var m3 = false; var m4 = false; // Call utag.link in thePlatform event listeners window._tealium_PDK = { name : "thePlatform PDK", init_tries : 0, events : video_events, milestone_percentages : milestone_percentages, milestone_progress : .5, mediaEventHandler : function(e){ if (e.type === 'OnMediaStart') { // Initialize Reporting/Status // If this is an ad playing, just show the video is ready // If the real video, inidicate it is playing _tealium_PDK.video_title = e.data.title; _tealium_PDK.isAd = e.data.baseClip.isAd; if (e.data.baseClip.isAd) { utag.DB(e); utag.DB("**** Ad Started ****"); } else { utag.DB(e); utag.DB("***** Video Start ******* : "+ _tealium_PDK.video_title); } } if (!_tealium_PDK.isAd) { pos = (e.data.currentTime) dur = (e.data.duration) _tealium_PDK.convertToMins(pos,dur); if (e.type === 'OnMediaPause') { _tealium_PDK.video_state = "pause" utag.DB("***** Video Pause ******* : "+ _tealium_PDK.video_title); }else if (e.type === 'OnMediaUnpause') { _tealium_PDK.video_state = "resume"; utag.DB("***** Video Resume ******* : "+ _tealium_PDK.video_title); } else if (e.type === 'OnMute') { _tealium_PDK.video_state = "mute"; utag.DB("***** Video Mute ******* : "+ _tealium_PDK.video_title); } else if (e.type === 'OnMediaSeek') { // track(['_trackEvent', 'video', 'Seek', ngVideoTitle]); } else if (e.type === 'OnMediaComplete') { _tealium_PDK.video_state = "complete"; _tealium_PDK.resetMilestones(); _tealium_PDK.pos = ""; _tealium_PDK.dur = ""; utag.DB("***** Video Complete ******* : "+ _tealium_PDK.video_title); } else if (e.type === 'OnMediaPlaying') { _tealium_PDK.video_state = "playing"; _tealium_PDK.milestone(e,pos,dur); } } // END If Not an Ad if(typeof _tealium_PDK.video_state!="undefined" && _tealium_PDK.video_state!="playing"){ utag.link({event_type:"video",event_name:_tealium_PDK.video_state,video_title:_tealium_PDK.video_title,video_isAd:_tealium_PDK.isAd,video_position:(_tealium_PDK.pos=="NaN:NaN"?"":_tealium_PDK.pos),video_duration:(_tealium_PDK.dur=="NaN:NaN"?"":_tealium_PDK.dur)}) } }, // Attaching Event Listeners for Begin, Play, Stop, and Video Completion // Each Event Handler has a callback function attached to it (mediaEventHandler) which will be called when the event occurs addEvents : function(){ for(var i=0;i<_tealium_PDK.events.length;i++){ $pdk.controller.addEventListener(_tealium_PDK.events[i],_tealium_PDK.mediaEventHandler); } }, milestone: function(e,pos,dur){ var pct = parseFloat(e.data.currentTime / e.data.duration) * 100; if (pct > _tealium_PDK.milestone_percentages[0] && !m1) { m1 = true; utag.link({event_type:"video",event_name:"milestone",video_milestone:"M:1:"+_tealium_PDK.milestone_percentages[0],video_position:_tealium_PDK.pos,video_duration:_tealium_PDK.dur}) utag.DB("**** 25% viwed****"); } else if (pct > _tealium_PDK.milestone_percentages[1] && !m2) { m2 = true; utag.link({event_type:"video",event_name:"milestone",video_milestone:"M:2:"+_tealium_PDK.milestone_percentages[1],video_position:_tealium_PDK.pos,video_duration:_tealium_PDK.dur}) utag.DB("**** 50% viewed****"); } else if (pct > _tealium_PDK.milestone_percentages[2] && !m3) { m3 = true; utag.link({event_type:"video",event_name:"milestone",video_milestone:"M:3:"+_tealium_PDK.milestone_percentages[2],video_position:_tealium_PDK.pos,video_duration:_tealium_PDK.dur}) utag.DB("**** 75% viewed****"); } else if (pct > _tealium_PDK.milestone_percentages[3] && !m4) { m4 = true; utag.link({event_type:"video",event_name:"milestone",video_milestone:"M:4:"+_tealium_PDK.milestone_percentages[3],video_position:_tealium_PDK.pos,video_duration:_tealium_PDK.dur}) utag.DB("**** 90% viewed****"); } }, resetMilestones : function(e){ m25 = false; m50 = false; m75 = false; m90 = false; }, convertToMins : function(c,d){ p_sec = (((c/1000)/60%1)*60).toFixed(0); d_sec = (((d/1000)/60%1)*60).toFixed(0); p_min = Math.floor((c/1000)/60); d_min = Math.floor((d/1000)/60); _tealium_PDK.pos = p_min+':'+p_sec _tealium_PDK.dur = d_min+':'+d_sec }, init : function(){ //utag.DB("Connecting Tealium with thePlatform object"); if(typeof $pdk!="undefined" && typeof _tealium_PDK.eventsAdded == "undefined"){ _tealium_PDK.addEvents() utag.DB("TEALIUM: Connecting Tealium with thePlatform Player - SUCCESS"); _tealium_PDK.eventsAdded = true; return; }else{ // If thePlatform object is not defined we will increment the number of tries by 1 _tealium_PDK.init_tries += 1; //Stop trying to connect to the Video Player if tried 100 times if(_tealium_PDK.init_tries>100){ utag.DB("TEALIUM: Cannot connect to thePlatform Video"); return; } // Calls init function repeatedly either 100 times or thePlatform Object is defined setTimeout(function(){_tealium_PDK.init()}, 100); } } } if(typeof _tealium_PDK.videoPlayer == "undefined"){ setTimeout(function(){_tealium_PDK.init()}, 300); }