var redgePlayers=[];var partnerId="";var livePageConfig={};$(document).ready(()=>{const livePage=$('.live-item, .live-streaming');$(".redge-player").each(function(){let $el=$(this);let playerModel={containerId:$el.attr('id'),id:$el.data("player-id"),autoplay:$el.data("auto-play")===true,showNextEpisode:$el.data("show-next")===true,src:$el.data("src"),sourceType:$el.data("source-type"),stripeUrl:$el.data("stripe-url"),sourceUrls:$el.data("source-urls"),isLive:$el.data("is-live")||false,meta:{title:$el.data("meta-title"),seriesLogo:$el.data("meta-series-logo"),seasonNumber:$el.data("meta-season-number"),genre:$el.data("meta-genres"),ageRestriction:$el.data("meta-age"),seriesName:$el.data("meta-series-name")},file:{dash:$el.data("dash-url"),hls:$el.data("hls-url")},introStart:parseInt($el.data("intro-start"),10),introEnd:parseInt($el.data("intro-end"),10),recapStart:parseInt($el.data("recap-start"),10),recapEnd:parseInt($el.data("recap-end"),10),creditsStart:parseInt($el.data("credits-start"),10),poster:$el.data("poster-url"),controls:$el.data("enable-controls")===true,enablePip:$el.data("enable-pip")===true,muted:$el.data("is-muted")===true,enableNpaw:$el.data("enable-npaw")===true,channelName:$el.data("channel-name"),liveMetaData:(typeof liveMetaData!=='undefined')?liveMetaData:[]};partnerId=$el.data("partner-id");if(livePage){livePageConfig.kantarChannelName=$el.data('kantar-channel-name');}
window.InitRedgePlayer(playerModel);});});window.InitRedgePlayer=function(playerModel){let fileObj=null;let isDescktopDevice=$(window).width()>=$('#wrapper').attr('data-mobile-width');let npawEnabled=playerModel.enableNpaw&&typeof npawSettings!=='undefined'&&npawSettings.isEnabled&&typeof npawData!=='undefined';if(playerModel.file&&playerModel.file.dash){fileObj={hls:playerModel.file.hls,dash:playerModel.file.dash};}
else{if(playerModel.src){const urlData=RedgeUrlBuilder.processEntryId(playerModel.src,partnerId,playerModel.isLive);playerModel.src=urlData.src;playerModel.sourceUrls=urlData.sourceUrls;playerModel.stripeUrl=urlData.stripeUrl;playerModel.sourceType=urlData.sourceType;playerModel.isKaltura=urlData.isKaltura}
if(playerModel.sourceUrls){fileObj=playerModel.sourceUrls;}
else{fileObj={[playerModel.sourceType]:playerModel.src};}}
const skinUrl=`https://r.il.cdn-redge.media/file/oil/kan/player/version_0.3.17/css/redgalaxy-player.css`;const cfg={file:fileObj,skin:{url:skinUrl},controls:playerModel.controls,autoplay:playerModel.autoplay,width:"100%",height:"100%",forceDash:false,keyboardEvents:true,googleAnalytics:{additionalMetadata:{video_provider:'Redge Media',video_title:playerModel.meta.title,},},chromecast:{appId:'AE23K239',id:1234,title:'Big Buck Bunny',subtitle:'Short animated film',session:{name:'rm-session-cookie',value:'abc12345678',}},live:playerModel.isLive,playbackRates:[0.5,1,1.5,2],defaultGuiLanguage:'heb',poster:playerModel.poster,hlsjs:true};if(playerModel.autoplay){cfg.autoplayBlockedRule="mute";}
if(playerModel.enablePip){cfg.pip={available:true,mode:"all",enableIfStopped:false,enableIfPaused:true,pauseOnClose:false,threshold:0.4,native:true,}}
if(playerModel.isLive){cfg.type="LIVE";if(!playerModel.isKaltura){cfg.timeShift={dvrWindow:3600};}
cfg.productMetadata={nowText:"משודר עכשיו"};const currentItem=Array.isArray(playerModel.liveMetaData)&&playerModel.liveMetaData.length?playerModel.liveMetaData.find(item=>item.IsPlaying):null;if(currentItem){cfg.productMetadata.title=currentItem.Title;cfg.productMetadata.startTime=convertToLocalTimeHrs(currentItem.StartTime);cfg.productMetadata.endTime=convertToLocalTimeHrs(currentItem.EndTime);cfg.productMetadata.ageRestriction=currentItem.AgeRestriction;cfg.programme={start:currentItem.StartTime}
if(npawEnabled){npawData.program=currentItem.ProgramName;npawData.episodeTitle=currentItem.Title;npawData.customDimension2=currentItem.EpisodeNumber;npawData.customDimension9=currentItem.Season;npawData.customDimension7=currentItem.BroadcastDate;npawData.customDimension8=currentItem.EpisodeKlhCode;}}}
else{cfg.type="VOD";cfg.productMetadata={episodeTitle:playerModel.meta.title,seasonNumber:playerModel.meta.seasonNumber?`${playerModel.meta.seasonNumber} עונה`:null,genre:playerModel.meta.genre,ageRestriction:playerModel.meta.ageRestriction};if(isDescktopDevice&&playerModel.meta.seriesLogo){cfg.productMetadata.seriesLogo=playerModel.meta.seriesLogo;}else{cfg.productMetadata.title=playerModel.meta.seriesName;}
cfg.programme={start:0}
const hasIntro=playerModel.introStart>0||playerModel.introEnd>0;const hasRecap=playerModel.recapStart>0||playerModel.recapEnd>0;const hasCredits=playerModel.creditsStart>0;if(hasIntro){cfg.intro={start:playerModel.introStart,end:playerModel.introEnd,minDuration:7};};if(hasRecap){cfg.recap={start:playerModel.recapStart,end:playerModel.recapEnd};}
if(hasCredits&&playerModel.showNextEpisode){cfg.creditsTime=playerModel.creditsStart;cfg.nextEpisode={delay:10};}}
if(playerModel.stripeUrl){cfg.stripe={url:playerModel.stripeUrl,interval:2,count:16,width:160,height:90};}
cfg.i18n={heb:{SKIP_RECAP:'דלגו על התקציר',WATCH_CREDITS:'צפייה בקרדיטים'},};if(!isDescktopDevice){cfg.hiddenButtons=['addToPlaylist'];}
else{cfg.hiddenButtons=['addToPlaylist','share'];}
if(npawEnabled){let episodeTitle=(playerModel.isLive?npawData.episodeTitle:playerModel.meta.title)||'';cfg.npaw={accountCode:npawSettings.accountCode,title:episodeTitle,id:playerModel.id,additionalMetadata:{'content.program':npawData.program,'content.tvShow':npawData.program,'content.season':npawData.season,'content.episodeTitle':episodeTitle,'content.channel':playerModel.channelName||npawData.channel,'content.type':npawData.type,'content.genre':npawData.genre,'content.customDimension.1':npawData.customDimension1,'content.customDimension.2':npawData.customDimension2,'content.customDimension.3':npawData.customDimension3,'content.customDimension.4':npawData.customDimension4,'content.customDimension.6':npawData.customDimension6,'content.customDimension.7':npawData.customDimension7,'content.customDimension.8':npawData.customDimension8,'app.name':npawData.appName,'app.releaseVersion':npawData.appReleaseVersion,'session.context':true}};}
const player=new redGalaxy.Player(playerModel.containerId).setup(cfg);player.on("error",err=>console.error("Redge error:",err));player.on('share',()=>{if(navigator.share){let shareData={title:playerModel.meta.title,url:window.location.href}
navigator.share(shareData).then(function(){console.log('Thanks for sharing!');}).catch(function(err){console.log("Error while using Web share API:");console.log(err);});}});player.on('nextEpisode',()=>{getNextEpisodeData(playerModel.id).then(data=>{if(data){let isMuted=player.isMuted();window.RedgePlayer.destroyAllPlayers();playerModel.src=data.src;playerModel.meta.title=data.title;playerModel.meta.seasonNumber=data.seasonNumber;playerModel.poster=data.posterUrl;playerModel.introStart=data.timecodes.introStartTimeSec;playerModel.introEnd=data.timecodes.introEndTimeSec;playerModel.recapStart=data.timecodes.recapStartTimeSec;playerModel.recapEnd=data.timecodes.recapEndTimeSec;playerModel.creditsStart=data.timecodes.creditsStartTimeSec;playerModel.showNextEpisode=data.showNextEpisode;playerModel.id=data.modelId;playerModel.autoplay=true;playerModel.muted=isMuted;playerModel.file={hls:data.source.hlsUrl,dash:data.source.dashUrl};window.InitRedgePlayer(playerModel);if(window.npawPlugin&&data.liveMetaData[0]){let metadata=data.liveMetaData[0];window.npawPlugin.setVideoOptions({'content.title':data.title,'content.customDimension.2':metadata.episodeNumber,'content.customDimension.9':metadata.season,'content.customDimension.7':metadata.broadcastDate,'content.customDimension.8':metadata.episodeKlhCode});}}}).catch(err=>{console.error("Error loading next episode:",err);});;});player.on("ready",()=>{if(playerModel.isLive){const currentItem=Array.isArray(playerModel.liveMetaData)&&playerModel.liveMetaData.length?(playerModel.liveMetaData.find(item=>item.IsPlaying)||playerModel.liveMetaData[0]):null;if(!currentItem)return;player._cancelLiveMeta=startLiveMetadataScheduler(player,currentItem);}});player._id=playerModel.id;redgePlayers.push(player);$(`.btn-mute_${playerModel.id}`).on('click',function(event){event.stopPropagation();if(player.getVolume()!=0){player.setVolume(0)
$(this).removeClass('unmute');}
else{player.unMute()
$(this).addClass('unmute');}});let isPlaying=false;player.on("playing",()=>isPlaying=true);player.on("pause",()=>isPlaying=false);player.on("paused",()=>isPlaying=false);player.on("stopped",()=>isPlaying=false);player.on("ended",()=>isPlaying=false);$(`.card-media_${playerModel.id}`).on('click',()=>{if(!isPlaying){player.play();}
else{player.pause()}})
return player;}
const convertToLocalTimeHrs=(unixSecs)=>new Date(unixSecs*1000).toLocaleTimeString([],{hour:'2-digit',minute:'2-digit',hour12:false});function startLiveMetadataScheduler(player,currentItem){if(!player?.setProductMetadata||!currentItem)return;let activeTimeoutId=null;let isFirstItem=true
function buildMeta(item){return{title:item.Title,startTime:convertToLocalTimeHrs(item.StartTime),endTime:convertToLocalTimeHrs(item.EndTime),ageRestriction:item.AgeRestriction,nowText:'משודר עכשיו'};}
function findNextItem(afterItem){return liveMetaData.find(el=>el.StartTime>=afterItem.EndTime)||null;}
function scheduleFrom(item){if(!isFirstItem){player.setProductMetadata(buildMeta(item));if(window.npawPlugin){window.npawPlugin.setVideoOptions({'content.title':item.EpisodeName,'content.program':item.ProgramName,'content.customDimension.2':item.EpisodeNumber,'content.customDimension.9':item.Season,'content.customDimension.7':item.BroadcastDate,'content.customDimension.8':item.EpisodeKlhCode});}}
if(isFirstItem){isFirstItem=false;}
const msUntilEnd=Math.max(item.EndTime*1000-Date.now(),0)+3000;activeTimeoutId=setTimeout(()=>{const nextItem=findNextItem(item);if(nextItem){scheduleFrom(nextItem);}},msUntilEnd);}
scheduleFrom(currentItem);return()=>{if(activeTimeoutId)clearTimeout(activeTimeoutId);};}
const RedgeUrlBuilder={patterns:{kalturaId:/^\d+_[a-z0-9]+$/i,redgePath:/r\.dcs\.redcdn\.pl/i},buildKalturaHlsUrl:function(partnerId,entryId,isLive){if(!partnerId){throw new Error("partnerId is required for Kaltura URLs.");}
const sp=`${partnerId}00`;const baseUrl=`https://cdnapisec.kaltura.com/p/${partnerId}/sp/${sp}/`+`playManifest/entryId/${entryId}/format/applehttp/protocol/https/playlist.m3u8`;return isLive?`${baseUrl}?live=1`:baseUrl;},extractSlug:function(redgeUrl){const start=redgeUrl.indexOf("/vod/");if(start===-1)return"";const slugStart=start+5;const end=redgeUrl.indexOf('/',slugStart);return end===-1?redgeUrl.substring(slugStart):redgeUrl.substring(slugStart,end);},buildRedgeSourceUrls:function(slug){return{hls:`//r.dcs.redcdn.pl/hls/o2/portal/prod/vod/${slug}/movie/hls/playlist.smil/playlist.m3u8`,dash:`//r.dcs.redcdn.pl/dash/o2/portal/prod/vod/${slug}/movie/dash/Manifest.ism`,smooth:`//r.dcs.redcdn.pl/ss/o2/portal/prod/vod/${slug}/movie/Manifest.ism/manifest`};},buildStripeUrl:function(slug){return`//r.dcs.redcdn.pl/http/o2/portal/prod/vod/${slug}/stripes/stripe_{index}.jpg`;},processEntryId:function(entryId,partnerId,isLive){const result={src:"",sourceUrls:null,stripeUrl:null,sourceType:"hls",isKaltura:false};const getSourceTypeFromUrl=function(url){const lowerUrl=url.toLowerCase();const patterns=[{type:'mp4',test:url=>url.endsWith('.mp4')},{type:'mp3',test:url=>url.endsWith('.mp3')},{type:'hls',test:url=>url.includes('.m3u8')||url.includes('/hls/')||url.includes('playlist.m3u8')},{type:'dash',test:url=>url.includes('.mpd')||url.includes('/dash/')||url.includes('manifest.ism')},{type:'smooth',test:url=>url.includes('/smooth/')||(url.includes('manifest')&&!url.includes('/dash/'))}];const match=patterns.find(pattern=>pattern.test(lowerUrl));return match?match.type:'hls';};;if(this.patterns.kalturaId.test(entryId)){result.src=this.buildKalturaHlsUrl(partnerId,entryId,isLive);result.sourceType="hls";result.isKaltura=true;}else{if(isLive||entryId.includes('/livehls/')){result.src=entryId;result.sourceUrls=null;result.stripeUrl=null;result.sourceType="hls";}else{result.sourceType=getSourceTypeFromUrl(entryId);let slug=entryId;if(this.patterns.redgePath.test(entryId)){slug=this.extractSlug(entryId);}
if(slug&&!entryId.match(/\.(mp4|mp3)$/i)){result.stripeUrl=this.buildStripeUrl(slug);result.sourceUrls=this.buildRedgeSourceUrls(slug);}
result.src=entryId;}}
return result;}};window.RedgePlayer={init:window.InitRedgePlayer,urlBuilder:RedgeUrlBuilder,players:redgePlayers,getPlayer:function(playerId){return redgePlayers.find(p=>p._id===playerId);},destroyPlayer:function(playerId){const player=this.getPlayer(playerId);if(player){if(player._cancelLiveMeta){player._cancelLiveMeta();}
if(typeof player.destroy==='function'){player.destroy();}
redgePlayers=redgePlayers.filter(p=>p._id!==playerId);const container=document.getElementById(playerId);if(container){container.innerHTML='';}
return true;}
return false;},destroyAllPlayers:function(){redgePlayers.forEach(player=>{if(player._id){this.destroyPlayer(player._id);}});redgePlayers=[]}};async function getNextEpisodeData(currentEpisodeId){try{const response=await fetch(`/umbraco/surface/VideoItemSurface/GetNextEpisode?currentEpisodeId=${currentEpisodeId}`);if(!response.ok){throw new Error(`HTTP error! status: ${response.status}`);}
const data=await response.json();return data;}catch(err){console.error("Cant recieve next episode:",err);}};;
