Edit in JSFiddle

// This work by Sébastien Brodeur is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
// By : Sebastien Brodeur ([email protected])

var gaLimeLightMediaID = '';
var gaLimeLightTitle = '';
var gaLimeLightDuration = 0;
var gaLimeLightPlayTimeInPercent = 0;
var gaLimeLightPlayTimeInMillis = 0;
var gaLimeLightState = '';



function delvePlayerCallback(playerId, eventName, data) {  
  var id = "limelight_player";
  if (eventName == 'onPlayerLoad' && (DelvePlayer.getPlayers() == null || DelvePlayer.getPlayers().length == 0)) {
    DelvePlayer.registerPlayer(id);
  }
  
  switch (eventName) {
    case 'onMediaLoad':
      doOnMediaLoad(data);
      break;

    case 'onPlayStateChanged':
      doOnPlayStateChanged(data);
      break;

    case 'onPlayheadUpdate':
      doOnPlayheadUpdate(data);
      break; 
      
    case 'onMediaComplete':
      doOnMediaComplete(data);
      break;
    
    case 'onError':
      doOnError(data);
      break;
  }
}



function doOnMediaLoad(e) {
  if (gaLimeLightPlayTimeInMillis > 0 && gaLimeLightPlayTimeInPercent != 100) {
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + Math.round(gaLimeLightPlayTimeInMillis / gaLimeLightDuration * 100)]);
  }
  gaLimeLightMediaID = e.id;
  gaLimeLightMediaTitle = e.title;
  gaLimeLightDuration = e.durationInMilliseconds;
  gaLimeLightPlayTimeInPercent = 0;
  gaLimeLightPlayTimeInMillis = 0;
  gaLimeLightState = '';
}



function doOnPlayStateChanged(e) {
  if (e.isBusy) {
    gaLimeLightState = 'buffer';
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', 'buffer', 0, true]);
  } else if (e.isPlaying) {
    gaLimeLightState = 'play';
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', 'play']);
  } else {
    gaLimeLightState = 'pause';
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', 'pause']);
  }
}



function doOnMediaComplete(e) {
  gaLimeLightPlayTimeInPercent = 100;
  gaLimeLightState = 'complete';
  _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '100']);
}



function doOnError(e) {
  _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', 'errorMessage="' + e.message + '"', 0, true]);
}



function doOnPlayheadUpdate(e) {
  gaLimeLightPlayTimeInMillis = e.positionInMilliseconds;
  
  if (gaLimeLightPlayTimeInPercent == 0 && (e.positionInMilliseconds / e.durationInMilliseconds * 100) > 10) {
    gaLimeLightPlayTimeInPercent = 10;
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + gaLimeLightPlayTimeInPercent]);
  } else if (gaLimeLightPlayTimeInPercent < 30 && (e.positionInMilliseconds / e.durationInMilliseconds * 100) > 30) {
    gaLimeLightPlayTimeInPercent = 30;
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + gaLimeLightPlayTimeInPercent]);
  } else if (gaLimeLightPlayTimeInPercent < 50 && (e.positionInMilliseconds / e.durationInMilliseconds * 100) > 50) {
    gaLimeLightPlayTimeInPercent = 50;
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + gaLimeLightPlayTimeInPercent]);
  } else if (gaLimeLightPlayTimeInPercent < 70 && (e.positionInMilliseconds / e.durationInMilliseconds * 100) > 70) {
    gaLimeLightPlayTimeInPercent = 70;
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + gaLimeLightPlayTimeInPercent]);
  } else if (gaLimeLightPlayTimeInPercent < 90 && (e.positionInMilliseconds / e.durationInMilliseconds * 100) > 90) {
    gaLimeLightPlayTimeInPercent = 90;
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + gaLimeLightPlayTimeInPercent]);
  }
}



window.onbeforeunload = function() { 
  if (gaLimeLightState != '' && gaLimeLightState != 'complete') {
    _gaq.push(['_trackEvent', 'LimeLight video', 'mediaTitle="' + gaLimeLightMediaTitle +'" mediaId="' + gaLimeLightMediaID + '"', '' + Math.round(gaLimeLightPlayTimeInMillis / gaLimeLightDuration * 100)]);
  }
};