").parent().html()),$("#main-row").append("
"),$("#player").removeClass("player_bottom"),$("#main-row").removeClass("frontpage_modified_heights"),$("#main_section_frontpage").remove(),$("#closePlayer").remove(),$("#player_bottom_overlay").remove()}$("#search").attr("placeholder","Find song on YouTube..."),$(".page-footer").addClass("padding-bottom-novideo"),1==$("#alreadychannel").length?e():(Me=!0,e()),0===$("#alreadyfp").length&&$("head").append("
")}})}};String.prototype.capitalizeFirstLetter=function(){return this.charAt(0).toUpperCase()+this.slice(1)};var je={loaded:!0,before_load:"",after_load:"",ytplayer:"",stopInterval:!1,youtube_listener:function(e){if(je.loaded=!1,"true"===localStorage.debug){console.log("--------youtube_listener--------"),console.log("Received: "),console.log(e),console.log("paused variable: "+W),console.log("mobile_beginning variable: "+fe);try{console.log("getVideoUrl(): "+je.ytplayer.getVideoUrl().split("v=")[1])}catch(e){}console.log("video_id variable: "+Se),console.log("---------------------------------")}if(0===e.length){document.getElementById("song-title").innerHTML="Empty channel. Add some songs!",$("#player_overlay").height($("#player").height()),window.MSStream||$("#player_overlay").toggleClass("hide");try{je.ytplayer.stopVideo()}catch(e){}}else{void 0===Ee?Ee=e[0][0].id:Ee!=Se&&(Ee=Se),Se=e[0][0].id,q=e[1][0],time=e[2],Te=time-q.startTime,xe=e[0][0].title,duration=e[0][0].duration,fe&&E.mobilecheck()&&0===Te&&(Te=1);try{be[0].id==Se&&L.song_change(be[0].added),qe.fetchYoutubeSuggests(Se)}catch(e){}if(je.getTitle(xe,G),je.setBGimage(Se),J&&!window.MSStream)try{je.ytplayer.getVideoUrl().split("v=")[1]!=Se&&(je.ytplayer.loadVideoById(Se),je.notifyUser(Se,xe),je.ytplayer.seekTo(Te),W&&je.ytplayer.pauseVideo()),W||(fe||je.ytplayer.playVideo(),ae||je.durationSetter()),(je.ytplayer.getDuration()>Te||0===je.ytplayer.getDuration())&&je.ytplayer.seekTo(Te),je.after_load=Se,je.loaded||setTimeout(function(){je.loaded=!0},500)}catch(e){ae||je.durationSetter()}else je.getTitle(xe,G)}},onPlayerStateChange:function(e){if("true"===localStorage.debug){console.log("-------onPlayerStateChange------"),console.log("New state\nState: "),console.log(e);try{console.log("Duration: "+je.ytplayer.getDuration(),"Current time: "+je.ytplayer.getCurrentTime()),console.log("getVideoUrl(): "+je.ytplayer.getVideoUrl().split("v=")[1])}catch(e){}console.log("video_id variable: "+Se),console.log("---------------------------------")}switch(e.data){case-1:break;case 0:Z=!1,W=!1,Be.emit("end",{id:Se,channel:M.toLowerCase()});break;case 1:Z=!0,beginning&&E.mobilecheck()&&(je.ytplayer.pauseVideo(),beginning=!1,fe=!1),oe||"/"==window.location.pathname||E.addClass("#player_overlay","hide"),"/"!=window.location.pathname&&(1==document.getElementById("play").className.split(" ").length&&$("#play").toggleClass("hide"),2==document.getElementById("pause").className.split(" ").length&&$("#pause").toggleClass("hide")),W&&(Be.emit("pos",{channel:M.toLowerCase()}),W=!1);break;case 2:W=!0,"/"!=window.location.pathname&&Oe.play_pause_show(),fe=!0;break;case 3:}},getTitle:function(e,t){var o=t>1?"viewers":"viewer",n=decodeURIComponent(e);if("/"!=window.location.pathname){var a=document.getElementById("song-title"),i=document.getElementById("viewers");a.innerHTML=n,i.innerHTML=t+" "+o,a.title=n+" • "+t+" "+o}document.title=n+" • Zöff / "+M},errorHandler:function(e){5==e.data||100==e.data||101==e.data||150==e.data?(curr_playing=je.ytplayer.getVideoUrl().replace("https://www.youtube.com/watch?v=",""),Be.emit("skip",{error:e.data,id:Se,pass:U,channel:M.toLowerCase})):void 0!==Se&&je.ytplayer.loadVideoById(Se)},onPlayerReady:function(e){$("#channel-load").css("display","none");try{beginning=!0,J=!0,window.MSStream||($("#player").css("opacity","1"),$("#controls").css("opacity","1"),$(".playlist").css("opacity","1"),je.ytplayer.loadVideoById(Se),ne&&!E.mobilecheck()&&je.ytplayer.playVideo(),ae||je.durationSetter(),oe?setTimeout(function(){je.ytplayer.seekTo(Te),ne||(je.ytplayer.pauseVideo(),Oe.play_pause_show())},1e3):je.ytplayer.seekTo(Te)),je.readyLooks(),Oe.initYoutubeControls(je.ytplayer),Oe.initSlider(),je.ytplayer.setVolume(T.get_volume()),$(".video-container").removeClass("no-opacity")}catch(e){}},readyLooks:function(){je.setBGimage(Se)},setBGimage:function(e){if(void 0!==e&&!oe){var t=new Image;t.onload=function(){var e=new ColorThief,o=e.getColor(t);"/"!=window.location.pathname&&(document.getElementsByTagName("body")[0].style.backgroundColor=E.rgbToHsl(o,!0),$("meta[name=theme-color]").attr("content",E.rgbToHex(o[0],o[1],o[2])))},t.crossOrigin="Anonymous",t.src="https://zoff.no:8080/https://img.youtube.com/vi/"+e+"/mqdefault.jpg"}},set_width:function(e){$(".video-container").width(e)},notifyUser:function(e,t){if(t=t.replace(/\\\'/g,"'").replace(/"/g,"'").replace(/&/g,"&"),"granted"===Notification.permission&&document.hidden){var o=new Notification("Now Playing",{body:t,icon:"http://i.ytimg.com/vi/"+e+"/mqdefault.jpg",iconUrl:"http://i.ytimg.com/vi/"+e+"/mqdefault.jpg"});o.onclick=function(e){window.focus(),this.cancel()},setTimeout(function(){o.close()},5e3)}},setup_all_listeners:function(){n(),o(),s(),l(),c()},onYouTubeIframeAPIReady:function(){je.ytplayer=new YT.Player("player",{videoId:Se,playerVars:{rel:"0",wmode:"transparent",controls:"0",iv_load_policy:"3",theme:"light",color:"white",showinfo:0},events:{onReady:je.onPlayerReady,onStateChange:je.onPlayerStateChange,onError:je.errorHandler}})},durationSetter:function(){if(void 0!==duration)try{je.stopInterval||(ae=!0),dMinutes=Math.floor(duration/60),dSeconds=duration-60*dMinutes,currDurr=void 0!==je.ytplayer.getCurrentTime()?Math.floor(je.ytplayer.getCurrentTime()):Te,currDurr>duration&&(currDurr=duration),minutes=Math.floor(currDurr/60),seconds=currDurr-60*minutes,document.getElementById("duration").innerHTML=E.pad(minutes)+":"+E.pad(seconds)+"
/ "+E.pad(dMinutes)+":"+E.pad(dSeconds),per=100/duration*currDurr,per>=100?per=100:0===duration&&(per=0),$("#bar").width(per+"%")}catch(e){}je.stopInterval||setTimeout(je.durationSetter,1e3)},loadPlayer:function(){1==$("script[src='https://www.youtube.com/iframe_api']").length?je.onYouTubeIframeAPIReady():(_e=document.createElement("script"),_e.src="https://www.youtube.com/iframe_api",ke=document.getElementsByTagName("script")[0],ke.parentNode.insertBefore(_e,ke))}},Oe={stopInterval:!1,initYoutubeControls:function(){!E.mobilecheck()||/iPad|iPhone|iPod/.test(navigator.userAgent)||window.MSStream||$("#controls").appendTo("#playbar"),Oe.initControls()},initControls:function(){document.getElementById("volume-button").addEventListener("click",Oe.mute_video),document.getElementById("playpause").addEventListener("click",Oe.play_pause),document.getElementById("fullscreen").addEventListener("click",Oe.fullscreen)},initSlider:function(){try{vol=T.get_volume()}catch(e){}$("#volume").slider({min:0,max:100,value:vol,range:"min",animate:!0,slide:function(e,t){Oe.setVolume(t.value);try{T.set_volume(t.value)}catch(e){}}}),Oe.choose_button(vol,!1)},fullscreen:function(){var e=document.getElementById("player"),t=e.requestFullScreen||e.mozRequestFullScreen||e.webkitRequestFullScreen;t&&t.bind(e)()},play_pause:function(){1==je.ytplayer.getPlayerState()?(je.ytplayer.pauseVideo(),!E.mobilecheck()||/iPad|iPhone|iPod/.test(navigator.userAgent)||window.MSStream||(document.getElementById("player").style.display="none",$(".video-container").toggleClass("click-through"),$(".page-footer").toggleClass("padding-bottom-extra"))):2!=je.ytplayer.getPlayerState()&&0!==je.ytplayer.getPlayerState()||(je.ytplayer.playVideo(),!E.mobilecheck()||/iPad|iPhone|iPod/.test(navigator.userAgent)||window.MSStream||(document.getElementById("player").style.display="block",$(".video-container").toggleClass("click-through"),$(".page-footer").toggleClass("padding-bottom-extra")))},play_pause_show:function(){1==document.getElementById("pause").className.split(" ").length&&$("#pause").toggleClass("hide"),2==document.getElementById("play").className.split(" ").length&&$("#play").toggleClass("hide")},settings:function(){$("#qS").toggleClass("hide")},changeQuality:function(e){je.ytplayer.getPlaybackQuality!=e&&(je.ytplayer.setPlaybackQuality(e),je.ytplayer.getPlaybackQuality()),$("#qS").toggleClass("hide")},mute_video:function(){je.ytplayer.isMuted()?(je.ytplayer.unMute(),Oe.choose_button(je.ytplayer.getVolume(),!1)):(Oe.choose_button(0,!0),je.ytplayer.mute())},setVolume:function(e){je.ytplayer.setVolume(e),Oe.choose_button(e,!1),je.ytplayer.isMuted()&&je.ytplayer.unMute()},choose_button:function(e,t){t?(1==document.getElementById("v-full").className.split(" ").length&&$("#v-full").toggleClass("hide"),1==document.getElementById("v-medium").className.split(" ").length&&$("#v-medium").toggleClass("hide"),1==document.getElementById("v-low").className.split(" ").length&&$("#v-low").toggleClass("hide"),2==document.getElementById("v-mute").className.split(" ").length&&$("#v-mute").toggleClass("hide")):e>=0&&e<=33?(1==document.getElementById("v-full").className.split(" ").length&&$("#v-full").toggleClass("hide"),1==document.getElementById("v-medium").className.split(" ").length&&$("#v-medium").toggleClass("hide"),2==document.getElementById("v-low").className.split(" ").length&&$("#v-low").toggleClass("hide"),1==document.getElementById("v-mute").className.split(" ").length&&$("#v-mute").toggleClass("hide")):e>=34&&e<=66?(1==document.getElementById("v-full").className.split(" ").length&&$("#v-full").toggleClass("hide"),2==document.getElementById("v-medium").className.split(" ").length&&$("#v-medium").toggleClass("hide"),1==document.getElementById("v-low").className.split(" ").length&&$("#v-low").toggleClass("hide"),1==document.getElementById("v-mute").className.split(" ").length&&$("#v-mute").toggleClass("hide")):e>=67&&e<=100&&(2==document.getElementById("v-full").className.split(" ").length&&$("#v-full").toggleClass("hide"),1==document.getElementById("v-medium").className.split(" ").length&&$("#v-medium").toggleClass("hide"),1==document.getElementById("v-low").className.split(" ").length&&$("#v-low").toggleClass("hide"),1==document.getElementById("v-mute").className.split(" ").length&&$("#v-mute").toggleClass("hide"))},playPause:function(){state=je.ytplayer.getPlayerState(),button=document.getElementById("playpause"),1==state?je.ytplayer.pauseVideo():2==state&&je.ytplayer.playVideo()},volumeOptions:function(){je.ytplayer.isMuted()?(je.ytplayer.unMute(),vol=je.ytplayer.getVolume(),$("#volume").slider("value",je.ytplayer.getVolume())):(je.ytplayer.mute(),$("#volume").slider("value",0))},hoverMute:function(e){vol=je.ytplayer.getVolume()}},Re={showSearch:function(){$("#search-wrapper").toggleClass("hide"),E.mobilecheck()&&$(".search_input").focus(),$("#song-title").toggleClass("hide"),$("#results").toggleClass("hide"),$("#results").empty(),$("#search-btn i").toggleClass("mdi-navigation-close"),$("#search-btn i").toggleClass("mdi-action-search"),$("#search").focus()},search:function(e){if(void 0!==he&&void 0!==ye||(he=$("#temp-results-container"),ye=$("#empty-results-container").html()),$(".search_results").html(""),""!==e){O=!0;var t=encodeURIComponent(e),o="https://www.googleapis.com/youtube/v3/search?key="+j+"&videoEmbeddable=true&part=id&fields=items(id)&type=video&order=viewCount&safeSearch=none&maxResults=25";o+="&q="+t,Y&&(o+="&videoCategoryId=10");var n="https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+j+"&id=";E.contains($("#search_loader").attr("class").split(" "),"hide")&&$("#search_loader").removeClass("hide"),E.contains($("#results").attr("class").split(" "),"hide")&&$("#results").removeClass("hide"),$.ajax({type:"GET",url:o,dataType:"jsonp",success:function(e){0===e.items.length?($("
"+ye+"
").appendTo($("#results")).show("blind",83.33),E.contains($("#search_loader").attr("class").split(" "),"hide")||$("#search_loader").addClass("hide")):e.items&&($.each(e.items,function(e,t){n+=t.id.videoId+","}),$.ajax({type:"GET",url:n,dataType:"jsonp",success:function(e){var t="",o=$(he);$.each(e.items,function(e,n){var a=n.contentDetails.duration;if(secs=Re.durationToSeconds(a),!longsongs||secs<720){Ce=n.snippet.title,enc_title=Ce,$e=n.id,a=a.replace("PT","").replace("H","h ").replace("M","m ").replace("S","s"),thumb=n.snippet.thumbnails.medium.url;var i=o;i.find(".search-title").text(Ce),i.find(".result_info").text(a),i.find(".thumb").attr("data-original",thumb),i.find("#add-many").attr("data-video-id",$e),i.find("#add-many").attr("data-video-title",enc_title),i.find("#add-many").attr("data-video-length",secs),i.find("#temp-results").attr("data-video-id",$e),i.find("#temp-results").attr("data-video-title",enc_title),i.find("#temp-results").attr("data-video-length",secs),t+=i.html()}}),$("
"+t+"
").appendTo($("#results")).show("blind",83.33*(e.items.length-1)),setTimeout(function(){$(".thumb").lazyload({container:$("#results")})},250),E.contains($("#search_loader").attr("class").split(" "),"hide")||$("#search_loader").addClass("hide"),$(".add-many").click(function(e){return e.preventDefault(),e.stopPropagation(),!1})}}))}})}else $(".main").removeClass("blurT"),$("#controls").removeClass("blurT"),$(".main").removeClass("clickthrough")},backgroundSearch:function(e,t,o,n,a){var i=encodeURIComponent(e+" "+t),s="https://www.googleapis.com/youtube/v3/search?key="+j+"&videoEmbeddable=true&part=id,snippet&fields=items(id,snippet)&type=video&order=relevance&safeSearch=none&maxResults=5";s+="&q="+i;var l="https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+j+"&id=";t=t.split(" ");var r=e.split("-");r=r.join(" ").split(" "),$.ajax({type:"GET",url:s,dataType:"jsonp",success:function(i){i.items.length>0&&($.each(i.items,function(o,n){var a=!0;return n.snippet.title.toLowerCase().indexOf(t[0].toLowerCase())==-1&&n.snippet.channelTitle.toLowerCase().indexOf(t[0].toLowerCase())==-1&&n.snippet.channelTitle.toLowerCase().indexOf("vevo")==-1&&n.snippet.title.toLowerCase().indexOf("remix")>=0&&e.toLowerCase().indexOf("remix")==-1?(a=!1,!1):void(n.snippet.title.toLowerCase().indexOf("cover")==-1&&a&&e.toLowerCase().indexOf("cover")==-1&&(l+=n.id.videoId+","))}),$.ajax({type:"GET",url:l,dataType:"jsonp",success:function(i){if(i.items.length>0){var s=!1;if($.each(i.items,function(e,t){var o=Re.durationToSeconds(t.contentDetails.duration),i=!1;if($.each(r,function(e,o){return t.snippet.title.toLowerCase().indexOf(o.toLowerCase())==-1&&(i=!0),!1}),!i)return s=!0,Re.submit(t.id,t.snippet.title,o,!0,a,n),!1}),!s){"true"===localStorage.debug&&(console.log("------------------------------"),console.log("NO MATCH FOR:"),console.log("Spotify title: "+e+" "+t.join(" ")),console.log("Spotify length: "+o),console.log("------------------------------"));var l=$("
"+de+"
");l.find(".extra-add-text").text(e+" - "+t.join(" ")),l.find(".extra-add-text").attr("title",e+" - "+t.join(" ")),l.find(".extra-button-search").attr("data-text",e+" - "+t.join(" ")),$(".not-imported-container").append(l.html()),$(".not-imported").removeClass("hide")}}}}))}}),a==n-1&&(document.getElementById("import_spotify").disabled=!1,$("#import_spotify").removeClass("hide"),$("#playlist_loader_spotify").addClass("hide"))},submitAndClose:function(e,t,o){
+return t&&u.find("#list-song").css("height",0),P||u.find(".card-action").removeClass("hide"),1==c&&u.find(".vote-text").text("vote"),o&&(d="//img.youtube.com/vi/"+l+"/mqdefault.jpg",p="data-original"),n?(u.find(".list-votes").text(c),u.find("#list-song").attr("id",l),u.find(".vote-container").attr("title",r),i=".vote-container",s="del"):n||(u.find(".vote-text").text(e.duration),i=".add-suggested",s=a?"del_user_suggested":"del_suggested",u.find(".vote-container").attr("class","clickable add-suggested"),u.find(".add-suggested").attr("title",r),u.find("#del").attr("id",s),u.find(i).attr("data-video-title",r),u.find(i).attr("data-video-length",e.length),u.find("#list-song").attr("id","suggested-"+l),u.find(".list-image").attr("class",u.find(".list-image").attr("class").replace("list-image","list-suggested-image"))),u.find(".list-title").text(r),u.find(".list-title").attr("title",r),u.find(i).attr("data-video-id",l),u.find(".list-image").attr(p,d),u.find(".list-suggested-image").attr(p,d),u.find("#"+s).attr("data-video-id",l),u.html()},getIndexOfSong:function(e){return indexes=$.map(be,function(t,o){if(t.id==e)return o}),indexes[0]},scrollTop:function(){$("#wrapper").scrollTop(0)},scrollBottom:function(){$("#wrapper").scrollTop($("#wrapper")[0].scrollHeight)}},M=void 0===window.chan?$("#chan").html():window.chan,P=!0,z=0,N=!0,A=$("#list-song-html").html(),D=!1,V=!1,j="***REMOVED***",O=!1,R=/P((([0-9]*\.?[0-9]*)Y)?(([0-9]*\.?[0-9]*)M)?(([0-9]*\.?[0-9]*)W)?(([0-9]*\.?[0-9]*)D)?)?(T(([0-9]*\.?[0-9]*)H)?(([0-9]*\.?[0-9]*)M)?(([0-9]*\.?[0-9]*)S)?)?/,q=[],Y=0,H=1,U="",F="",J=!1,G=1,W=!1,Z=!1,Q=6e3,X=Date.now(),K=!1,ee=-1,te=!0,oe=!1,ne=!0,ae=!1,ie=!1,se=!1,le=!1,re={},ce=!1,de="",ue=300,pe=600,me="&autoplay";if(void 0===localStorage.debug){var ge=!1;localStorage.debug=ge}var he,ye,fe,ve,$e,be,q,we,_e,ke,Ce,G,Se,Ie,Te,xe,Ee,Be,Le={"sync disconnect on unload":!0,secure:!0,"force new connection":!0},Me=!1,Pe=!1;navigator.serviceWorker?navigator.serviceWorker.register("/service-worker.js",{scope:"/"}).then(function(e){console.log(e)}).catch(function(e){console.error(e)}):console.log("Service Worker is not supported in this browser."),$().ready(function(){Me||"/"==window.location.pathname?Pe||"/"!=window.location.pathname||C():e(),t(),Ne=$.ajax({type:"GET",url:"https://api.github.com/repos/zoff-music/zoff/commits",async:!1}).responseText,Ne=$.parseJSON(Ne),$("#latest-commit").html("Latest Commit:
"+Ne[0].commit.author.date.substring(0,10)+": "+Ne[0].committer.login+"
"+Ne[0].sha.substring(0,10)+": "+Ne[0].commit.message+"
=48&&$("#wrapper").scrollTop()>0?($("#top-button").removeClass("hide"),E.addClass("#bottom-button","hide")):t>=$("#playlist").height()-18&&$("#wrapper").scrollTop()<$("#wrapper")[0].scrollHeight-$("#wrapper").height()-1?($("#bottom-button").removeClass("hide"),E.addClass("#top-button","hide")):(E.addClass("#bottom-button","hide"),E.addClass("#top-button","hide"))}),$(document).on("mouseleave","#playlist",function(){E.addClass("#bottom-button","hide"),E.addClass("#top-button","hide")}),$(document).on("click","#top-button",function(){L.scrollTop()}),$(document).on("click","#bottom-button",function(){L.scrollBottom()});var ze,Ne,Be,Ae,De={id:"",get_input:function(e){""===De.id?De.set_id(e.toLowerCase()):De.set_channel(e.toLowerCase())},set_id:function(e){De.id=e,$("#pausebutton_remote").attr("disabled",!1),$("#skipbutton_remote").attr("disabled",!1),$("#playbutton_remote").attr("disabled",!1),$("#skipbutton_remote").attr("disabled",!1),$("#remote_channel").val(""),$("#remote_channel").attr("placeholder","Change channel"),$("#remote_header").html("Controlling "+e),$("#volume-control-remote").css("display","block")},set_channel:function(e){Be.emit("id",[De.id,"channel",e])},play_remote:function(){Be.emit("id",[De.id,"play","mock"])},pause_remote:function(){Be.emit("id",[De.id,"pause","mock"])},skip_remote:function(){Be.emit("id",[De.id,"skip","mock"])},initiate_volume:function(){$("#volume-control-remote").slider({min:0,max:100,value:100,range:"min",animate:!0,stop:function(e,t){Be.emit("id",[De.id,"volume",t.value]),console.log("volume")}})}},H=!0,Ve={blob_list:[],winter:!1,times_rotated:0,frontpage_function:function(e){$("#channels").empty(),H=!0,Ve.populate_channels(e.channels),Ve.set_viewers(e.viewers)},populate_channels:function(e){var t,o="",n=0;1==e[0][5]&&(t=e.shift()),e.sort(Ve.sortFunction),void 0!==t&&e.unshift(t),pre_card=$(ze),E.mobilecheck()||Ve.add_backdrop(e,0);for(var a in e){var i=e[a][3];if(n<12){var s=e[a][1],l=e[a][0],r="background-image:url('https://img.youtube.com/vi/"+s+"/hqdefault.jpg');",c=e[a][4],d=pre_card;1==e[a][5]?(d.find(".pin").attr("style","display:block;"),d.find(".card").attr("title","Pinned!")):(d.find(".pin").attr("style","display:none;"),d.find(".card").attr("title","")),d.find(".chan-name").text(i),d.find(".chan-name").attr("title",i),d.find(".chan-views").text(l),d.find(".chan-songs").text(c),d.find(".chan-bg").attr("style",r),d.find(".chan-link").attr("href",i),$("#channels").append(d.html())}o+="