//********************** JW Player code ************************************************************************** utag.ut.waitFor = function(function_to_check, function_to_run, interval_time, max_runs, this_run) { if (typeof max_runs === 'undefined') { max_runs = 100; } if (typeof this_run === 'undefined') { this_run = 1; } if (typeof interval_time === 'undefined') { interval_time = 100; } if (max_runs < this_run) { return; } if (function_to_check()) { function_to_run(); return; } else { this_run++; setTimeout(function() { utag.ut.waitFor(function_to_check, function_to_run, interval_time, max_runs, this_run); }, interval_time); } } utag.ut.waitFor( function() { utag.DB('*************************************** checking window.jwplayer*********************************************************'); return typeof window.jwplayer != 'undefined' && typeof window.jwplayer().getState != "undefined"; }, function() { utag.DB('***************************************window.jwplayer != undefined *********************************************************'); //************************** var video_events = ["play", "pause", "buffer", "complete", "time"]; var milestone_percentages = ["25", "50", "75", "90"]; var played = false; var m1 = false; var m2 = false; var m3 = false; var m4 = false; // debugger; window._tealium_JW = { name: "JWPlayer", init_tries: 0, events: video_events, milestone_percentages: milestone_percentages, addEvents: function() { for (var i = 0; i < video_events.length; i++) { //********************** PLAY ************************************************************************** if (video_events[i] == "play") { jwplayer().on('play', function(event) { var pos = jwplayer().getPosition(); var dur = jwplayer().getDuration(); if (!played) { played = true; utag.DB("**** video started ****"); utag.link({ event_type: "video", event_name: "play" }) } else { utag.link({ event_type: "video", event_name: "resume", video_position: pos, video_duration: dur }) utag.DB("**** video resumed ****"); } utag.DB("**** video started ****"); }); } //********************** PAUSE ************************************************************************** if (video_events[i] == "pause") { jwplayer().on('pause', function(event) { var pos = jwplayer().getPosition(); var dur = jwplayer().getDuration(); utag.link({ event_type: "video", event_name: "pause", video_position: pos, video_duration: dur }); utag.DB("**** video paused****"); utag.DB("**** Position: " + pos); utag.DB("**** Total Duration: " + dur); }); } //********************** BUFFER ************************************************************************** if (video_events[i] == "buffer") { jwplayer().on('buffer', function(event) { var pos = jwplayer().getPosition(); var dur = jwplayer().getDuration(); utag.link({ event_type: "video", event_name: "buffer", video_position: pos, video_duration: dur, buffer_reason: event.reason }); utag.DB("**** video buffer****"); utag.DB("**** Position: " + pos); utag.DB("**** Total Duration: " + dur); utag.DB("**** Buffer Reason: " + event.reason); }); } //********************** COMPLETE ************************************************************************** if (video_events[i] == "complete") { jwplayer().on('complete', function(event) { var pos = jwplayer().getPosition(); var dur = jwplayer().getDuration(); played = false; _tealium_JW.resetMilestones(); utag.link({ event_type: "video", event_name: "complete", video_position: pos, video_duration: dur }) utag.DB("**** video complete****"); }); } //********************** TIME ************************************************************************** if (video_events[i] == "time") { jwplayer().on('time', function(event) { // utag.DB("**** video time : "+event.position+"****"); _tealium_JW.milestone(event); }); } } }, milestone: function(data) { var pct = parseFloat(data.position / data.duration) * 100; if (pct > _tealium_JW.milestone_percentages[0] && !m1) { m1 = true; utag.link({ event_type: "video", event_name: "milestone", video_milestone: "M:1:" + _tealium_JW.milestone_percentages[0], video_position: data.position, video_duration: data.duration }) utag.DB("**** 25% viwed****"); } else if (pct > _tealium_JW.milestone_percentages[1] && !m2) { m2 = true; utag.link({ event_type: "video", event_name: "milestone", video_milestone: "M:2:" + _tealium_JW.milestone_percentages[1], video_position: data.position, video_duration: data.duration }) utag.DB("**** 50% viewed****"); } else if (pct > _tealium_JW.milestone_percentages[2] && !m3) { m3 = true; utag.link({ event_type: "video", event_name: "milestone", video_milestone: "M:3:" + _tealium_JW.milestone_percentages[2], video_position: data.position, video_duration: data.duration }) utag.DB("**** 75% viewed****"); } else if (pct > _tealium_JW.milestone_percentages[3] && !m4) { m4 = true; utag.link({ event_type: "video", event_name: "milestone", video_milestone: "M:4:" + _tealium_JW.milestone_percentages[3], video_position: data.position, video_duration: data.duration }) utag.DB("**** 90% viewed****"); } }, resetMilestones: function(e) { m25 = false; m50 = false; m75 = false; m90 = false; }, init: function() { if (typeof jwplayer != "undefined") { utag.DB("TEALIUM: Connecting Tealium with JWPlayer object - SUCCESS"); _tealium_JW.addEvents() } else { _tealium_JW.init_tries += 1; if (_tealium_JW.init_tries > 100) { utag.DB("TEALIUM: Cannot connect to JWPlayer Video"); return; } setTimeout(function() { _tealium_JW.init() }, 100); } } } if (typeof _tealium_JW.videoPlayer == "undefined") { setTimeout(function() { _tealium_JW.init() }, 300); } } ); //********************** END JW Player code **************************************************************************