(function($){$.fn.cuepointsManager=function(options){var settings=$.extend({cadence:1000,cadenceUpdate:10000,player:"player_1",baseurl:"",evtID:0,video_type:'hds',updateTime:function(){return false;},drawCuepoints:function(){return false;}},options);var interval;var intervalUpdate;var running=false;var playerPos=0;var cuepoints=Array();var cp_updated=Array();var timedCuepoints=Array();var startTime=0;var hasChanged=true;this.stop=function(){settings.running=false;clearInterval(interval);clearInterval(intervalUpdate);} this.start=function(){getCPs();settings.running=true;intervalUpdate=setInterval(function(){getCPs()},settings.cadenceUpdate);interval=setInterval(function(){updateCPs()},settings.cadence);} function getCPs(){var cp_signatures=Array();cp_updated=Array();$.each(cuepoints,function(index,cp){cp_signatures.push({cpid:cp.id,cp_mod:cp.last_mod_date})});$.ajax({url:settings.baseurl+'index.php/embed/getCP/'+settings.evtID,type:'POST',dataType:'json',data:{cps:cp_signatures},success:function(server_cp){$.each(server_cp,function(index,scp){if(scp.status=="newcp"){cp_updated.push(scp.cp);hasChanged=true;}else{$.each(cuepoints,function(index,oldcp){if(oldcp.id==scp.cpid){if(scp.status=='orderchange'){cp_updated.push(scp.cp);hasChanged=true;}else{cp_updated.push(oldcp);} return false;}});}});cuepoints=cp_updated;}});} function updateCPs(){playerPos=Math.round(jwplayer(settings.player).getPosition());if(hasChanged){start_time=getStartTime();settings.drawCuepoints(cuepoints);timedCuepoints=cuepoints.filter(function(obj){return(obj.cptype==="2"||obj.cptype==="1")&&(obj.temps_absolut!=-1);});} if(settings.video_type=='hds'){var temps_reel=start_time+playerPos;}else if(settings.video_type=='hls'){var temps_reel=getHLSTime(start_time,playerPos);} settings.updateTime(playerPos,start_time,timedCuepoints,temps_reel,settings.video_type);hasChanged=false;} function getHLSTime(start_time,playerPos){var tl=getTimeLine();var temps_reel=start_time+playerPos;var decal=0;$.each(tl[1],function(i,item){if(item.end-start_time>playerPos+decal){return false;}else{decal+=tl[0][i].lng;}});temps_reel+=decal;return temps_reel;} function getTimeLine(){var arrayCP=cuepoints.filter(function(obj){return(obj.cptype==="4"||obj.cptype==="5")&&obj.temps_absolut!=-1;});var whole=Array();var recorded=Array();var b=0;var c=0;$.each(arrayCP,function(index,cp){if(cp.cptype=='5'){b=cp.temps_absolut;if(c!=0){recorded.push({start:c,end:cp.temps_absolut,lng:cp.temps_absolut-c});c=0;}} if(cp.cptype=='4'){c=cp.temps_absolut;if(b!=0){whole.push({start:cp.temps_absolut,end:b,lng:cp.temps_absolut-b});b=0;}}});return Array(whole,recorded);} function getStartTime(){var st=0;var arrayCP=cuepoints.filter(function(obj){return(obj.cptype==="4");});$.each(arrayCP,function(index,cp){st=cp.temps_absolut;return false;});st=Math.round(st);return st;} function formatTime(time,returnArray){if(time==undefined){time=new Date();}else{time=new Date(time*1000)} var hour=time.getHours();var minutes=time.getMinutes();var seconds=time.getSeconds();if(returnArray==true){return Array(hour,minutes,seconds);} if(hour<10){hour="0"+hour;} if(minutes<10){minutes="0"+minutes;} if(seconds<10){seconds="0"+seconds;} return hour+'"'+minutes+'\''+seconds;} function initCPM(){getCPs();} return this;};}(jQuery));if(!Array.prototype.filter){Array.prototype.filter=function(fun) {"use strict";if(this===void 0||this===null) throw new TypeError();var t=Object(this);var len=t.length>>>0;if(typeof fun!=="function") throw new TypeError();var res=[];var thisp=arguments[1];for(var i=0;i