/* INTEGRATION: GOOGLE ANALYTICS */ Player.provide('integration-google-analytics', { googleAnalyticsAccount:'', googleAnalyticsTrackPlayerPageview:0 }, function(Player,$,opts){ var $this = this; $.extend($this, opts); delete $this.container; var cu = []; var loaded = false; var catchup = function(){ $.each(cu, function(i,o){ ga('send', o); }); cu = []; } Player.bind('player:settings', function(e){ PlayerUtilities.mergeSettings($this, ['googleAnalyticsAccount','googleAnalyticsTrackPlayerPageview']); if($this.googleAnalyticsAccount) { (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', $this.googleAnalyticsAccount, 'auto'); loaded = true; catchup(); } }); var currentVideo = {id:'',title:'', type:'clip', duration:0, events:[]}; var trackEvent = function(type,action){ if(typeof(currentVideo.events[type+action])!='undefined') return; currentVideo.events[type+action] = true; var title = (currentVideo.type == 'stream' ? 'Live: ' : '') + currentVideo.title; var url = '/embed/'+currentVideo.id var o = { hitType: type, eventCategory: 'Videos', eventAction: action, eventLabel: title, title: title, page: url, location: url }; if(loaded) { ga('send', o); } else { cu.push(o); } } Player.bind('player:video:loaded', function(e,v){ // Reset the video times currentVideo = currentVideo = {id:v.photo_id, title:v.title, type:v.type, duration:new Number(v.video_length)||0, events:{}} // Possibly track a page view if($this.googleAnalyticsTrackPlayerPageview) trackEvent('pageview', 'Page view'); }); Player.bind('player:video:play', function(e,v){ trackEvent('event', 'Play'); }); Player.bind('player:video:ended', function(e,v){ trackEvent('event', 'Finished'); }); Player.bind('player:actions:overlay:click player:actions:video:click', function(e,v){ trackEvent('event', 'Action clicked'); }); window.setInterval(function(){ if(currentVideo.duration>0) { var ct = Player.get('currentTime'); if(ct>currentVideo.duration*.25) trackEvent('event', '25 Watched'); if(ct>currentVideo.duration*.50) trackEvent('event', '50 Watched'); if(ct>currentVideo.duration*.75) trackEvent('event', '75 Watched'); if(ct>currentVideo.duration*.99) trackEvent('event', '100 Watched'); } }, 3000); } , false); Player.use('integration-google-analytics');