mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 18:00:23 +00:00
1247 lines
40 KiB
JavaScript
Executable File
1247 lines
40 KiB
JavaScript
Executable File
var chan = window.chan === undefined ? $("#chan").html() : window.chan;
|
||
var w_p = true;
|
||
var hasadmin = 0;
|
||
var showToggle = true;
|
||
var list_html = $("#list-song-html").html();
|
||
var blink_interval_exists = false;
|
||
var unseen = false;
|
||
var api_key = "***REMOVED***";
|
||
var searching = false;
|
||
var time_regex = /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)?)?/;
|
||
var conf = [];
|
||
var music = 0;
|
||
var frontpage = 1;
|
||
var adminpass = "";
|
||
var filesadded = "";
|
||
var player_ready = false;
|
||
var viewers = 1;
|
||
var paused = false;
|
||
var playing = false;
|
||
var SAMPLE_RATE = 6000; // 6 seconds
|
||
var lastSample = Date.now();
|
||
var began = false;
|
||
var i = -1;
|
||
var lazy_load = false;
|
||
var embed = false;
|
||
var autoplay = true;
|
||
var durationBegun = false;
|
||
var chat_active = false;
|
||
var chat_unseen = false;
|
||
var blinking = false;
|
||
var access_token_data = {};
|
||
var spotify_authenticated = false;
|
||
var not_import_html = "";
|
||
var not_export_html = "";
|
||
var embed_height = 300;
|
||
var embed_width = 600;
|
||
var embed_autoplay = "&autoplay";
|
||
var connect_error = false;
|
||
var access_token_data_youtube = {};
|
||
var youtube_authenticated = false;
|
||
var chromecastAvailable = false;
|
||
var color = "808080";
|
||
var find_start = false;
|
||
var find_started = false;
|
||
var chromecastReady = false;
|
||
var found_array = [];
|
||
var found_array_index = 0;
|
||
var castSession;
|
||
|
||
if(localStorage.debug === undefined){
|
||
var debug = false;
|
||
localStorage.debug = debug;
|
||
}
|
||
|
||
var result_html;
|
||
var empty_results_html;
|
||
var mobile_beginning;
|
||
var timeout_search;
|
||
var id;
|
||
var full_playlist;
|
||
var conf;
|
||
var blink_interval;
|
||
var tag;
|
||
var firstScriptTag;
|
||
var title;
|
||
var viewers;
|
||
var video_id;
|
||
var list;
|
||
var seekTo;
|
||
var song_title;
|
||
var previous_video_id;
|
||
var socket;
|
||
var connection_options = {
|
||
'sync disconnect on unload':true,
|
||
'secure': true,
|
||
'force new connection': true
|
||
};
|
||
var fromFront = false;
|
||
var fromChannel = false;
|
||
|
||
if (navigator.serviceWorker) {
|
||
navigator.serviceWorker.register('/service-worker.js', {scope: '/'})
|
||
.then(function (registration) {
|
||
Helper.log(registration);
|
||
})
|
||
.catch(function (e) {
|
||
console.error(e);
|
||
});
|
||
} else {
|
||
Helper.log('Service Worker is not supported in this browser.');
|
||
}
|
||
|
||
$().ready(function(){
|
||
if(!fromFront && window.location.pathname != "/") init();
|
||
else if(!fromChannel && window.location.pathname == "/"){
|
||
initfp();
|
||
}
|
||
|
||
socket.on("connect", function(){
|
||
if(connect_error){
|
||
connect_error = false;
|
||
$(".connect_error").fadeOut(function(){
|
||
$(".connect_error").remove();
|
||
Materialize.toast("Connected!", 2000, "green lighten");
|
||
});
|
||
|
||
}
|
||
});
|
||
|
||
setup_no_connection_listener();
|
||
|
||
try{
|
||
git_info = $.ajax({ type: "GET",
|
||
url: "https://api.github.com/repos/zoff-music/zoff/commits",
|
||
async: false
|
||
}).responseText;
|
||
|
||
git_info = $.parseJSON(git_info);
|
||
$("#latest-commit").html("Latest Commit: <br>" +
|
||
git_info[0].commit.author.date.substring(0,10) +
|
||
": " + git_info[0].committer.login +
|
||
"<br><a href='"+git_info[0].html_url+"'>" +
|
||
git_info[0].sha.substring(0,10) + "</a>: " +
|
||
git_info[0].commit.message+"<br");
|
||
} catch(error){
|
||
Helper.log("Error with fetching GitHub commit info");
|
||
}
|
||
});
|
||
|
||
|
||
function init(){
|
||
|
||
var no_socket = true;
|
||
|
||
chan = $("#chan").html();
|
||
mobile_beginning = Helper.mobilecheck();
|
||
var side = Helper.mobilecheck() ? "left" : "right";
|
||
|
||
window.onpopstate = function(e){
|
||
onepage_load();
|
||
};
|
||
|
||
share_link_modifier_channel();
|
||
|
||
if(window.location.hostname == "zoff.no") add = "https://zoff.no";
|
||
else add = window.location.hostname;
|
||
|
||
if(Player !== undefined) Player.stopInterval= false;
|
||
|
||
$('ul.playlist-tabs').tabs();
|
||
$('ul.playlist-tabs-loggedIn').tabs();
|
||
$('.chatTabs').tabs();
|
||
$("#settings").sideNav({
|
||
menuWidth: 300, // Default is 240
|
||
edge: side, // Choose the horizontal origin
|
||
closeOnClick: false // Closes side-nav on <a> clicks, useful for Angular/Meteor
|
||
});
|
||
$('.collapsible').collapsible({
|
||
accordion : true // A setting that changes the collapsible behavior to expandable instead of the default accordion style
|
||
});
|
||
|
||
spotify_is_authenticated(spotify_authenticated);
|
||
|
||
result_html = $("#temp-results-container");
|
||
empty_results_html = $("#empty-results-container").html();
|
||
not_import_html = $(".not-imported-container").html();
|
||
not_export_html = $(".not-exported-container").html();
|
||
$(".not-imported-container").empty();
|
||
$(".not-exported-container").empty();
|
||
|
||
$(".video-container").resizable({
|
||
start: function(event, ui) {
|
||
$('iframe').css('pointer-events','none');
|
||
},
|
||
stop: function(event, ui) {
|
||
$('iframe').css('pointer-events','auto');
|
||
Crypt.set_width($(this).width());
|
||
},
|
||
handles: "e",
|
||
minWidth: 350,
|
||
maxWidth: $(window).width()-241
|
||
});
|
||
|
||
if(socket === undefined || Helper.mobilecheck()){
|
||
no_socket = false;
|
||
socket = io.connect(''+add+':8080', connection_options);
|
||
}
|
||
|
||
if($("#alreadychannel").length === 0 || Helper.mobilecheck()){
|
||
setup_youtube_listener();
|
||
get_list_listener();
|
||
setup_suggested_listener();
|
||
setup_viewers_listener();
|
||
|
||
} else {
|
||
$("#channel-load").css("display", "none");
|
||
$("#player").css("opacity", "1");
|
||
$("#controls").css("opacity", "1");
|
||
$(".playlist").css("opacity", "1");
|
||
Player.readyLooks();
|
||
Playercontrols.initYoutubeControls(Player.player);
|
||
Playercontrols.initSlider();
|
||
Player.player.setVolume(Crypt.get_volume());
|
||
$(".video-container").removeClass("no-opacity");
|
||
|
||
var codeURL = "https://remote."+window.location.hostname+"/"+id;
|
||
$("#code-text").text(id);
|
||
$("#code-qr").attr("src", "https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+codeURL);
|
||
$("#code-link").attr("href", codeURL);
|
||
|
||
}
|
||
|
||
if(no_socket) socket.emit('list', chan.toLowerCase());
|
||
|
||
|
||
//if(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream){
|
||
/*if(!Helper.mobilecheck() && !window.MSStream){
|
||
console.log("asd");
|
||
document.getElementById("search").blur();
|
||
$("#channel-load").css("display", "none");
|
||
} else {*/
|
||
window.onYouTubeIframeAPIReady = Player.onYouTubeIframeAPIReady;
|
||
if(Player.player === "" || Player.player === undefined || Helper.mobilecheck()) Player.loadPlayer();
|
||
//}
|
||
|
||
if(Helper.mobilecheck()) Mobile_remote.initiate_volume();
|
||
|
||
setup_admin_listener();
|
||
setup_list_listener();
|
||
setup_chat_listener();
|
||
if(!Helper.mobilecheck() && $("#alreadychannel").length === 0) setup_host_initialization();
|
||
|
||
if(!Helper.msieversion() && !Helper.mobilecheck()) Notification.requestPermission();
|
||
|
||
$(".search_input").focus();
|
||
|
||
Helper.sample();
|
||
|
||
$( "#results" ).hover( function() { $("div.result").removeClass("hoverResults"); i = 0; }, function(){ });
|
||
$("#search").focus();
|
||
$("#embed-button").css("display", "inline-block");
|
||
$("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color));
|
||
$("#search").attr("placeholder", "Find song on YouTube...");
|
||
|
||
if(chromecastAvailable){
|
||
//hide_native(1);
|
||
} else if(chromecastReady) {
|
||
initializeCastApi();
|
||
} else {
|
||
window['__onGCastApiAvailable'] = function(loaded, errorInfo) {
|
||
if (loaded) {
|
||
setTimeout(function(){
|
||
initializeCastApi();
|
||
}, 1000);
|
||
} else {
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
initializeCastApi = function() {
|
||
$(".castButton").css("display", "block");
|
||
cast.framework.CastContext.getInstance().setOptions({
|
||
receiverApplicationId: "E6856E24",
|
||
autoJoinPolicy: chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED});
|
||
var context = cast.framework.CastContext.getInstance();
|
||
$(".castButton").css("display", "block");
|
||
context.addEventListener(
|
||
cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
|
||
function(event) {
|
||
switch (event.sessionState) {
|
||
case cast.framework.SessionState.SESSION_STARTED:
|
||
castSession = cast.framework.CastContext.getInstance().getCurrentSession();
|
||
castSession.addMessageListener("urn:x-cast:zoff.no", chromecastListener)
|
||
chromecastAvailable = true;
|
||
paused = false;
|
||
mobile_beginning = false;
|
||
var _seekTo;
|
||
try{
|
||
_seekTo = Player.player.getCurrentTime();
|
||
} catch(e){
|
||
_seekTo = seekTo;
|
||
}
|
||
castSession.sendMessage("urn:x-cast:zoff.no", {type: "loadVideo", videoId: video_id, seekTo: _seekTo})
|
||
castSession.sendMessage("urn:x-cast:zoff.no", {type: "nextVideo", videoId: full_playlist[0].id, title: full_playlist[0].title})
|
||
hide_native(1);
|
||
break;
|
||
case cast.framework.SessionState.SESSION_RESUMED:
|
||
castSession = cast.framework.CastContext.getInstance().getCurrentSession();
|
||
castSession.addMessageListener("urn:x-cast:zoff.no", chromecastListener);
|
||
chromecastAvailable = true;
|
||
paused = false;
|
||
mobile_beginning = false;
|
||
var _seekTo;
|
||
try{
|
||
_seekTo = Player.player.getCurrentTime();
|
||
} catch(e){
|
||
_seekTo = seekTo;
|
||
}
|
||
castSession.sendMessage("urn:x-cast:zoff.no", {type: "loadVideo", videoId: video_id, seekTo: _seekTo})
|
||
castSession.sendMessage("urn:x-cast:zoff.no", {type: "nextVideo", videoId: full_playlist[0].id, title: full_playlist[0].title})
|
||
hide_native(1);
|
||
break;
|
||
case cast.framework.SessionState.SESSION_ENDED:
|
||
chromecastAvailable = false;
|
||
hide_native(0);
|
||
// Update locally as necessary
|
||
break;
|
||
}
|
||
});
|
||
};
|
||
|
||
function hide_native(way){
|
||
$(".castButton").toggleClass("hide");
|
||
$(".castButton-active").toggleClass("hide");
|
||
if(way == 1){
|
||
$("#duration").toggleClass("hide");
|
||
$("#fullscreen").toggleClass("hide");
|
||
try{
|
||
Player.player.stopVideo();
|
||
} catch(e){}
|
||
Player.stopInterval = true;
|
||
$("#player_overlay").removeClass("hide");
|
||
$("#player_overlay").css("display", "block");
|
||
if(Helper.mobilecheck()){
|
||
if($("#pause").hasClass("hide")){
|
||
$("#play").toggleClass("hide");
|
||
$("#pause").toggleClass("hide");
|
||
} else if($("#play").hasClass("hide")){
|
||
$("#play").toggleClass("hide");
|
||
$("#pause").toggleClass("hide");
|
||
}
|
||
} else {
|
||
$("#volume").slider("value", 100);
|
||
$("#player_overlay").width($("#player").width() + 1);
|
||
}
|
||
$("#player_overlay").css("background", "url(https://i.ytimg.com/vi/" + video_id + "/maxresdefault.jpg)");
|
||
$("#player_overlay").css("background-position", "center");
|
||
$("#player_overlay").css("background-size", "100%");
|
||
$("#player_overlay").css("background-color", "black");
|
||
$("#player_overlay").css("background-repeat", "no-repeat");
|
||
$("#player_overlay").css("height", "calc(100% - 32px)");
|
||
$("#playing_on").css("display", "flex");
|
||
$("#chromecast_text").html("Playing on<br>" + castSession.La.friendlyName);
|
||
Player.player.setVolume(100);
|
||
|
||
$("#player_overlay_text").toggleClass("hide");
|
||
} else if(way == 0){
|
||
$("#duration").toggleClass("hide");
|
||
$("#fullscreen").toggleClass("hide");
|
||
Player.player.playVideo();
|
||
Player.stopInterval = false;
|
||
Player.durationSetter();
|
||
if(!Helper.mobilecheck()){
|
||
Player.player.setVolume(Crypt.get_volume());
|
||
$("#volume").slider("value", Crypt.get_volume());
|
||
}
|
||
$("#player_overlay").addClass("hide");
|
||
$("#player_overlay_text").toggleClass("hide");
|
||
$("#chromecast_text").html("");
|
||
$("#playing_on").css("display", "none");
|
||
socket.emit('pos', {channel: chan.toLowerCase()});
|
||
}
|
||
}
|
||
|
||
function chromecastListener(evt, data){
|
||
var json_parsed = JSON.parse(data);
|
||
switch(json_parsed.type){
|
||
case -1:
|
||
socket.emit("end", {id: json_parsed.videoId, channel: chan.toLowerCase()});
|
||
break;
|
||
case 0:
|
||
socket.emit("skip", {error: json_parsed.data_code, id: json_parsed.videoId, pass: adminpass, channel: chan.toLowerCase});
|
||
break;
|
||
}
|
||
}
|
||
|
||
function setup_no_connection_listener(){
|
||
socket.on('connect_failed', function(){
|
||
Helper.log('Connection Failed');
|
||
if(!connect_error){
|
||
connect_error = true;
|
||
Materialize.toast("Error connecting to server, please wait..", 100000000, "red lighten connect_error");
|
||
}
|
||
});
|
||
|
||
socket.on("connect_error", function(){
|
||
Helper.log("Connection Failed.");
|
||
if(!connect_error){
|
||
connect_error = true;
|
||
Materialize.toast("Error connecting to server, please wait..", 100000000, "red lighten connect_error");
|
||
}
|
||
});
|
||
}
|
||
|
||
function setup_youtube_listener(){
|
||
socket.on("np", Player.youtube_listener);
|
||
}
|
||
|
||
function get_list_listener(){
|
||
socket.on("get_list", function(){
|
||
socket.emit('list', chan.toLowerCase());
|
||
});
|
||
}
|
||
|
||
function setup_suggested_listener(){
|
||
socket.on("suggested", function(params){
|
||
var single = true;
|
||
if(params.id === undefined)
|
||
single = false;
|
||
Suggestions.catchUserSuggests(params, single);
|
||
});
|
||
}
|
||
|
||
function setup_viewers_listener(){
|
||
socket.on("viewers", function(view){
|
||
viewers = view;
|
||
|
||
if(song_title !== undefined)
|
||
Player.getTitle(song_title, viewers);
|
||
});
|
||
}
|
||
|
||
function setup_admin_listener(){
|
||
socket.on("toast", Admin.toast);
|
||
socket.on("pw", Admin.pw);
|
||
socket.on("conf", Admin.conf);
|
||
}
|
||
|
||
function setup_chat_listener(){
|
||
socket.on("chat.all", Chat.allchat);
|
||
socket.on("chat", Chat.channelchat);
|
||
}
|
||
|
||
function setup_list_listener(){
|
||
socket.on("channel", List.channel_function);
|
||
}
|
||
|
||
function setup_playlist_listener(){
|
||
Helper.log("Setting up playlist_listener");
|
||
socket.on('playlists', Frontpage.frontpage_function);
|
||
}
|
||
|
||
function setup_host_initialization(){
|
||
socket.on("id", Hostcontroller.host_listener);
|
||
}
|
||
|
||
function setup_host_listener(id){
|
||
socket.on(id, Hostcontroller.host_on_action);
|
||
}
|
||
|
||
function enable_debug(){
|
||
localStorage.debug = true;
|
||
}
|
||
|
||
function disable_debug(){
|
||
localStorage.debug = false;
|
||
}
|
||
|
||
function embed_code(autoplay, width, height, color){
|
||
return '<embed src="https://zoff.no/_embed#' + chan.toLowerCase() + '&' + color + autoplay + '" width="' + width + 'px" height="' + height + 'px">';
|
||
}
|
||
|
||
function randomString(length){
|
||
var text = "";
|
||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_";
|
||
for(var i = 0; i < length; i++) {
|
||
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
||
}
|
||
return text;
|
||
}
|
||
|
||
function spotify_is_authenticated(bool){
|
||
if(bool){
|
||
Helper.log("------------------------");
|
||
Helper.log("Spotify is authenticated");
|
||
Helper.log("access_token: " + access_token_data.access_token);
|
||
Helper.log("token_type:" + access_token_data.token_type);
|
||
Helper.log("expires_in: " + access_token_data.expires_in);
|
||
Helper.log("------------------------");
|
||
$(".spotify_authenticated").css("display", "block");
|
||
$(".spotify_unauthenticated").css("display", "none");
|
||
} else {
|
||
Helper.log("----------------------------");
|
||
Helper.log("Spotify is not authenticated");
|
||
Helper.log("----------------------------");
|
||
$(".spotify_authenticated").css("display", "none");
|
||
$(".spotify_unauthenticated").css("display", "block");
|
||
}
|
||
}
|
||
|
||
window.enable_debug = enable_debug;
|
||
window.disable_debug = disable_debug;
|
||
|
||
$(document).keyup(function(e) {
|
||
if(event.keyCode == 27){
|
||
$("#results").html("");
|
||
if(!Helper.contains($("#search-wrapper").attr("class").split(" "), "hide"))
|
||
$("#search-wrapper").toggleClass("hide");
|
||
if(Helper.contains($("#song-title").attr("class").split(" "), "hide"))
|
||
$("#song-title").toggleClass("hide");
|
||
|
||
if($("#search-btn i").attr('class') == "mdi-navigation-close")
|
||
{
|
||
$("#search-btn i").toggleClass("mdi-navigation-close");
|
||
$("#search-btn i").toggleClass("mdi-action-search");
|
||
}
|
||
$("#results").toggleClass("hide");
|
||
}
|
||
});
|
||
|
||
$(document).on("click", "#playpause-overlay", function(){
|
||
if($("#play-overlay").hasClass("hide")){
|
||
Player.pauseVideo();
|
||
$("#play-overlay").toggleClass("hide");
|
||
$("#pause-overlay").toggleClass("hide");
|
||
} else if($("#pause-overlay").hasClass("hide")){
|
||
Player.playVideo();
|
||
$("#play-overlay").toggleClass("hide");
|
||
$("#pause-overlay").toggleClass("hide");
|
||
}
|
||
});
|
||
|
||
$(document).on("click", ".castButton-active", function(e){
|
||
e.preventDefault();
|
||
var castSession = cast.framework.CastContext.getInstance().getCurrentSession();
|
||
// End the session and pass 'true' to indicate
|
||
// that receiver application should be stopped.
|
||
castSession.endSession(true);
|
||
})
|
||
|
||
$(document).on('click', '#cookieok', function() {
|
||
$(this).fadeOut(function(){
|
||
$(this).remove();
|
||
localStorage.ok_cookie = true;
|
||
});
|
||
});
|
||
|
||
$(document).on("click", ".connect_error", function(e){
|
||
e.preventDefault();
|
||
$(this).fadeOut(function(){
|
||
$(this).remove();
|
||
connect_error = false;
|
||
});
|
||
});
|
||
|
||
$(document).on("click", ".extra-button-search", function(e){
|
||
e.preventDefault();
|
||
$("#search").val($(this).attr("data-text"));
|
||
Search.search($(this).attr("data-text"));
|
||
});
|
||
|
||
$(document).on("click", ".extra-button-delete", function(e){
|
||
e.preventDefault();
|
||
$(this).parent().remove();
|
||
if($(".not-imported-container").children().length === 0){
|
||
$(".not-imported").toggleClass("hide");
|
||
}
|
||
});
|
||
|
||
$(document).on("click", "#closePlayer", function(e){
|
||
e.preventDefault();
|
||
socket.emit("change_channel");
|
||
try{
|
||
if(chromecastAvailable){
|
||
var castSession = cast.framework.CastContext.getInstance().getCurrentSession();
|
||
castSession.endSession(true);
|
||
}
|
||
Player.player.destroy();
|
||
} catch(error){}
|
||
socket.removeEventListener("np");
|
||
socket.removeEventListener("id");
|
||
socket.removeEventListener(id);
|
||
$("#alreadychannel").remove();
|
||
Player.player = "";
|
||
document.title = "Zöff";
|
||
$("#closePlayer").remove();
|
||
});
|
||
|
||
$(document).on("click", ".prev_page", function(e){
|
||
e.preventDefault();
|
||
List.dynamicContentPage(-1);
|
||
});
|
||
|
||
$(document).on("click", ".modal-close", function(e){
|
||
e.preventDefault();
|
||
});
|
||
|
||
$(document).on("click", ".not-exported-container .not-exported-element #extra-export-container-text .extra-add-text", function(){
|
||
this.select();
|
||
})
|
||
|
||
$(document).on("click", ".next_page", function(e){
|
||
e.preventDefault();
|
||
List.dynamicContentPage(1);
|
||
});
|
||
|
||
$(document).on("click", ".last_page", function(e){
|
||
e.preventDefault();
|
||
List.dynamicContentPage(10);
|
||
});
|
||
|
||
$(document).on("click", ".first_page", function(e){
|
||
e.preventDefault();
|
||
List.dynamicContentPage(-10);
|
||
});
|
||
|
||
$(document).on('click', '#toast-container', function(){
|
||
$(".toast").fadeOut(function(){
|
||
$(".toast").remove();
|
||
});
|
||
});
|
||
|
||
$(document).on('click', "#aprilfools", function(){
|
||
$(".mega").css("-webkit-transform", "rotate(0deg)");
|
||
$(".mega").css("-moz-transform", "rotate(0deg)");
|
||
});
|
||
|
||
$(document).on('keyup mouseup', '#width_embed', function(){
|
||
var that = $(this);
|
||
embed_width = that.val();
|
||
$("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color));
|
||
});
|
||
|
||
$(document).on('keyup mouseup', '#height_embed', function(){
|
||
var that = $(this);
|
||
embed_height = that.val();
|
||
$("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color));
|
||
});
|
||
|
||
$(document).on('input', '#color_embed', function(){
|
||
var that = $(this);
|
||
color = that.val().substring(1);
|
||
$("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color));
|
||
});
|
||
|
||
$(document).on('click', ".chan-link", function(e){
|
||
e.preventDefault();
|
||
Frontpage.to_channel($(this).attr("href"), false);
|
||
});
|
||
|
||
$(document).on("click", ".listen-button", function(e){
|
||
if($(".room-namer").val() === ""){
|
||
e.preventDefault();
|
||
Frontpage.to_channel($(".room-namer").attr("placeholder"));
|
||
}
|
||
});
|
||
|
||
$(document).on("submit", ".channel-finder", function(e){
|
||
e.preventDefault();
|
||
Frontpage.to_channel($(".room-namer").val());
|
||
return false;
|
||
});
|
||
|
||
$(document).on("submit", ".channel-finder-mobile", function(e){
|
||
e.preventDefault();
|
||
Frontpage.to_channel($("#search-mobile").val());
|
||
return false;
|
||
});
|
||
|
||
$(document).on("change", 'input[class=remote_switch_class]', function()
|
||
{
|
||
Hostcontroller.change_enabled(document.getElementsByName("remote_switch")[0].checked);
|
||
Crypt.set_remote(enabled);
|
||
});
|
||
|
||
$(document).on("change", 'input[class=conf]', function()
|
||
{
|
||
Admin.save();
|
||
});
|
||
|
||
$("#clickme").click(function(){
|
||
Player.playVideo();
|
||
});
|
||
|
||
$(document).on("click", "#listExport", function(e){
|
||
e.preventDefault();
|
||
Helper.log(full_playlist);
|
||
$("#playlist_loader_export").removeClass("hide");
|
||
$(".youtube_export_button").addClass("hide");
|
||
if(!youtube_authenticated){
|
||
var nonce = randomString(29);
|
||
window.callback = function(data) {
|
||
access_token_data_youtube = data;
|
||
if(access_token_data_youtube.state == nonce){
|
||
youtube_authenticated = true;
|
||
setTimeout(function(){
|
||
youtube_authenticated = false;
|
||
access_token_data_youtube = {};
|
||
}, access_token_data_youtube.expires_in * 1000);
|
||
List.exportToYoutube();
|
||
} else {
|
||
access_token_data_youtube = "";
|
||
console.error("Nonce doesn't match");
|
||
}
|
||
youtube_window.close();
|
||
window.callback = "";
|
||
};
|
||
youtube_window = window.open("/o_callback#youtube=true&nonce=" + nonce, "", "width=600, height=600");
|
||
} else {
|
||
List.exportToYoutube();
|
||
}
|
||
});
|
||
|
||
$(document).on("click", ".export-spotify-auth", function(e){
|
||
e.preventDefault();
|
||
var nonce = randomString(29);
|
||
window.callback = function(data) {
|
||
access_token_data = data;
|
||
if(access_token_data.state == nonce){
|
||
spotify_authenticated = true;
|
||
spotify_is_authenticated(true);
|
||
setTimeout(function(){
|
||
spotify_authenticated = false;
|
||
access_token_data = {};
|
||
spotify_is_authenticated(false);
|
||
}, access_token_data.expires_in * 1000);
|
||
List.exportToSpotify();
|
||
} else {
|
||
access_token_data = {};
|
||
console.error("States doesn't match");
|
||
}
|
||
spotify_window.close();
|
||
window.callback = "";
|
||
};
|
||
spotify_window = window.open("/o_callback#spotify=true&nonce=" + nonce, "", "width=600, height=600");
|
||
});
|
||
|
||
$(document).on("submit", "#listImport", function(e){
|
||
e.preventDefault();
|
||
var url = $("#import").val().split("https://www.youtube.com/playlist?list=");
|
||
if($("#import").val() !== "" && url.length == 2){
|
||
Search.importPlaylist(url[1]);
|
||
document.getElementById("import").value = "";
|
||
document.getElementById("import").disabled = true;
|
||
$("#import").addClass("hide");
|
||
$("#playlist_loader").removeClass("hide");
|
||
} else {
|
||
Materialize.toast("It seems you've entered a invalid url.", 4000);
|
||
}
|
||
document.getElementById("import").value = "";
|
||
});
|
||
|
||
$(document).on("submit", "#listImportSpotify", function(e){
|
||
e.preventDefault();
|
||
if(spotify_authenticated && $("#import_spotify").val() !== ""){
|
||
//Helper.log("Import this playlist: " + document.getElementById("import_spotify").value);
|
||
var url = $("#import_spotify").val().split("https://open.spotify.com/user/");
|
||
if(url.length == 2) {
|
||
url = url[1].split("/");
|
||
var user = url[0];
|
||
var playlist_id = url[2];
|
||
|
||
document.getElementById("import_spotify").disabled = true;
|
||
$("#import_spotify").addClass("hide");
|
||
$("#playlist_loader_spotify").removeClass("hide");
|
||
|
||
Search.importSpotifyPlaylist('https://api.spotify.com/v1/users/' + user + '/playlists/' + playlist_id + '/tracks');
|
||
} else {
|
||
Materialize.toast("It seems you've entered a invalid url.", 4000);
|
||
}
|
||
}
|
||
document.getElementById("import_spotify").value = "";
|
||
});
|
||
|
||
$(window).focus(function(){
|
||
$("#favicon").attr("href", "public/images/favicon.png");
|
||
unseen = false;
|
||
});
|
||
|
||
$(document).on("change", "#autoplay", function() {
|
||
if(this.checked) embed_autoplay = "&autoplay";
|
||
else embed_autoplay = "";
|
||
$("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color));
|
||
});
|
||
|
||
$(document).on("click", "#playbutton_remote", function(e) {
|
||
e.preventDefault();
|
||
Mobile_remote.play_remote();
|
||
});
|
||
|
||
$(document).on("click", "#pausebutton_remote", function(e) {
|
||
e.preventDefault();
|
||
Mobile_remote.pause_remote();
|
||
});
|
||
|
||
$(document).on("click", "#skipbutton_remote", function(e) {
|
||
e.preventDefault();
|
||
Mobile_remote.skip_remote();
|
||
});
|
||
|
||
$(document).on("submit", "#remoteform", function(e) {
|
||
e.preventDefault();
|
||
Mobile_remote.get_input($("#remote_channel").val());
|
||
});
|
||
|
||
$(document).on("click", "#chat-btn", function(){
|
||
$("#text-chat-input").focus();
|
||
$("#chat-btn i").css("opacity", 1);
|
||
clearInterval(blink_interval);
|
||
blink_interval_exists = false;
|
||
unseen = false;
|
||
$("#favicon").attr("href", "public/images/favicon.png");
|
||
});
|
||
|
||
function searchTimeout(event) {
|
||
search_input = $(".search_input").val();
|
||
|
||
code = event.keyCode || event.which;
|
||
|
||
if (code != 40 && code != 38 && code != 13 && code != 39 && code != 37 &&
|
||
code != 17 && code != 16 && code != 225 && code != 18) {
|
||
clearTimeout(timeout_search);
|
||
if(search_input.length < 3){$("#results").html("");}
|
||
if(code == 13){
|
||
Search.search(search_input);
|
||
}else{
|
||
timeout_search = setTimeout(function(){
|
||
Search.search(search_input);
|
||
}, 1000);
|
||
/*i = 0;
|
||
timer=100;*/
|
||
}
|
||
}
|
||
}
|
||
|
||
if(/iPad|iPhone|iPod/.test(navigator.userAgent)){
|
||
$(document).on('keydown', '.search_input', function(event) {
|
||
searchTimeout(event);
|
||
});
|
||
} else {
|
||
$(document).on('keyup', ".search_input", function(event) {
|
||
searchTimeout(event);
|
||
});
|
||
}
|
||
|
||
$(document).on("click", ".chat-tab", function(){
|
||
$("#text-chat-input").focus();
|
||
});
|
||
|
||
|
||
$(document).on("click", "#skip", function(e){
|
||
e.preventDefault();
|
||
List.skip();
|
||
});
|
||
|
||
$(document).on("click", "#chan", function(e){
|
||
e.preventDefault();
|
||
List.show();
|
||
});
|
||
|
||
$(document).on("submit", "#adminForm", function(e){
|
||
e.preventDefault();
|
||
Admin.pass_save();
|
||
});
|
||
|
||
$(document).on("click", ".chat-link", function(e){
|
||
chat_active = true;
|
||
unseen = false;
|
||
chat_unseen = false;
|
||
$(".chat-link").attr("style", "color: white !important;");
|
||
blinking = false;
|
||
$("#favicon").attr("href", "public/images/favicon.png");
|
||
$("#chatPlaylist").css("display", "block");
|
||
$("#wrapper").css("display", "none");
|
||
$("#suggestions").css("display", "none");
|
||
$("#text-chat-input").focus();
|
||
$("#pageButtons").css("display", "none");
|
||
});
|
||
|
||
$(document).on("click", ".playlist-link", function(e){
|
||
chat_active = false;
|
||
$("#chatPlaylist").css("display", "none");
|
||
$("#wrapper").css("display", "block");
|
||
$("#suggestions").css("display", "none");
|
||
$("#pageButtons").css("display", "block");
|
||
});
|
||
|
||
$(document).on("click", ".suggested-link", function(e){
|
||
chat_active = false;
|
||
$("#chatPlaylist").css("display", "none");
|
||
$("#wrapper").css("display", "none");
|
||
$("#suggestions").css("display", "block");
|
||
$("#pageButtons").css("display", "none");
|
||
});
|
||
|
||
$(document).on("click", ".import-spotify-auth", function(e){
|
||
e.preventDefault();
|
||
var nonce = randomString(29);
|
||
window.callback = function(data) {
|
||
access_token_data = data;
|
||
if(access_token_data.state == nonce){
|
||
spotify_authenticated = true;
|
||
spotify_is_authenticated(true);
|
||
setTimeout(function(){
|
||
spotify_authenticated = false;
|
||
access_token_data = {};
|
||
spotify_is_authenticated(false);
|
||
$(".spotify_authenticated").css("display", "none");
|
||
$(".spotify_unauthenticated").css("display", "block");
|
||
}, access_token_data.expires_in * 1000);
|
||
} else {
|
||
access_token_data = {};
|
||
console.error("States doesn't match");
|
||
}
|
||
spotify_window.close();
|
||
window.callback = "";
|
||
};
|
||
spotify_window = window.open("/o_callback#spotify=true&nonce=" + nonce, "", "width=600, height=600");
|
||
});
|
||
|
||
$(document).on("click", ".import-youtube", function(e){
|
||
e.preventDefault();
|
||
$(".youtube_unclicked").css("display", "none");
|
||
$(".youtube_clicked").css("display", "block");
|
||
});
|
||
|
||
$(document).on("submit", "#chatForm", function(e){
|
||
e.preventDefault();
|
||
Chat.chat(document.getElementById("chatForm").input);
|
||
});
|
||
|
||
$(document).on("click", "#shuffle", function(e)
|
||
{
|
||
e.preventDefault();
|
||
Admin.shuffle();
|
||
});
|
||
|
||
$(document).on("click", "#search-btn", function(e)
|
||
{
|
||
e.preventDefault();
|
||
Search.showSearch();
|
||
});
|
||
|
||
$(document).on("click", "#song-title", function(e)
|
||
{
|
||
e.preventDefault();
|
||
Search.showSearch();
|
||
});
|
||
|
||
$(document).on("click", "#admin-lock", function(e)
|
||
{
|
||
e.preventDefault();
|
||
Admin.log_out();
|
||
});
|
||
|
||
$(document).on("click", "#closeSettings", function(e)
|
||
{
|
||
e.preventDefault();
|
||
Admin.hide_settings();
|
||
});
|
||
|
||
$(window).resize(function(){
|
||
if(chan && !Helper.mobilecheck()){
|
||
var temp_fit = Math.round(($("#wrapper").height()) / 71)+1;
|
||
if(temp_fit > List.can_fit || temp_fit < List.can_fit){
|
||
List.dynamicContentPage(-10);
|
||
}
|
||
List.can_fit = temp_fit;
|
||
List.element_height = (($("#wrapper").height()) / List.can_fit)-6;
|
||
$(".list-song").css("height", List.element_height + "px");
|
||
$("#player_overlay").width($("#player").width()+1);
|
||
}
|
||
})
|
||
|
||
$(document).on( "click", ".result-object", function(e){
|
||
var $html = $(e.target);
|
||
var substr = $html.prop('outerHTML').substring(0,4);
|
||
if(substr != "<i c"){
|
||
var id = $(this).attr("data-video-id");
|
||
var title = $(this).attr("data-video-title");
|
||
var length = $(this).attr("data-video-length");
|
||
|
||
Search.submitAndClose(id, title, length);
|
||
}
|
||
});
|
||
|
||
$(document).on( "click", "#add-many", function(e){
|
||
var id = $(this).attr("data-video-id");
|
||
var title = $(this).attr("data-video-title");
|
||
var length = $(this).attr("data-video-length");
|
||
|
||
Search.submit(id, title, length);
|
||
});
|
||
|
||
$(document).on( "click", ".vote-container", function(e){
|
||
var id = $(this).attr("data-video-id");
|
||
List.vote(id, "pos");
|
||
});
|
||
|
||
$(document).on( "click", "#del", function(e){
|
||
var id = $(this).attr("data-video-id");
|
||
List.vote(id, "del");
|
||
});
|
||
|
||
$(document).on( "click", ".add-suggested", function(e){
|
||
var id = $(this).attr("data-video-id");
|
||
var title = $(this).attr("data-video-title");
|
||
var length = $(this).attr("data-video-length");
|
||
|
||
|
||
Search.submit(id, title, length);
|
||
$("#suggested-" + id).remove();
|
||
});
|
||
|
||
$(document).on( "click", "#del_suggested", function(e){
|
||
var id = $(this).attr("data-video-id");
|
||
|
||
$("#suggested-" + id).remove();
|
||
});
|
||
|
||
$(document).on( "click", "#del_user_suggested", function(e){
|
||
var id = $(this).attr("data-video-id");
|
||
$("#suggested-" + id).remove();
|
||
List.vote(id, "del");
|
||
});
|
||
|
||
$(document).on('click', '#toast-container', function(){
|
||
$(this).fadeOut(function(){
|
||
$(this).remove();
|
||
});
|
||
});
|
||
|
||
$(document).on("click", "#embed-area", function(){
|
||
this.select();
|
||
});
|
||
|
||
$(document).on("click", ".brand-logo-navigate", function(e){
|
||
e.preventDefault();
|
||
|
||
window.history.pushState("to the frontpage!", "Title", "/");
|
||
onepage_load();
|
||
});
|
||
|
||
$(document).on("click", "#player_bottom_overlay", function(){
|
||
Frontpage.to_channel(chan.toLowerCase(), false);
|
||
});
|
||
|
||
$(document).on("mousemove", "#playlist", function(e)
|
||
{
|
||
var y = e.pageY - this.offsetTop;
|
||
if(((y <= 80 && y >= 48)) && $("#wrapper").scrollTop() > 0){
|
||
$("#top-button").removeClass("hide");
|
||
Helper.addClass("#bottom-button", "hide");
|
||
}else if(y >= $("#playlist").height() - 59 && y <= $("#playlist").height() - 32 && $("#wrapper").scrollTop() < $("#wrapper")[0].scrollHeight - $("#wrapper").height() - 1){
|
||
$("#bottom-button").removeClass("hide");
|
||
Helper.addClass("#top-button", "hide");
|
||
}else{
|
||
Helper.addClass("#bottom-button", "hide");
|
||
Helper.addClass("#top-button", "hide");
|
||
}
|
||
});
|
||
|
||
$(document).on("mouseleave", "#playlist", function(){
|
||
Helper.addClass("#bottom-button", "hide");
|
||
Helper.addClass("#top-button", "hide");
|
||
});
|
||
|
||
$(document).on("click", "#top-button", function(){
|
||
List.scrollTop();
|
||
});
|
||
|
||
$(document).on("click", "#bottom-button", function(){
|
||
List.scrollBottom();
|
||
});
|
||
|
||
|
||
$(document).keydown(function(event) {
|
||
if(window.location.pathname != "/"){
|
||
if(event.keyCode == 91 || event.keyCode == 17){
|
||
find_start = true;
|
||
} else if(find_start && event.keyCode == 70){
|
||
find_start = false;
|
||
find_started = !find_started;
|
||
event.preventDefault();
|
||
if(find_started){
|
||
$("#find_div").toggleClass("hide");
|
||
$("#find_input").focus();
|
||
} else {
|
||
$("#find_div").toggleClass("hide");
|
||
$("#find_input").val("");
|
||
$("#find_input").blur();
|
||
$(".highlight").removeClass("highlight");
|
||
found_array = [];
|
||
found_array_index = 0;
|
||
}
|
||
} else {
|
||
find_start = false;
|
||
}
|
||
}
|
||
});
|
||
|
||
$(document).keyup(function(event){
|
||
if((event.keyCode == 91 || event.keyCode == 17) && !find_started){
|
||
find_start = false;
|
||
}
|
||
});
|
||
|
||
$(document).on("submit", "#find_form", function(e){
|
||
e.preventDefault();
|
||
if(found_array.length == 0){
|
||
var that = this;
|
||
found_array_index = 0;
|
||
/*var result = $.grep(full_playlist, function(v,i) {
|
||
return v.title.toLowerCase().indexOf(that.find_value.value.toLowerCase()) >= 0;
|
||
});*/
|
||
found_array = $.map(full_playlist, function(obj, index) {
|
||
if(obj.title.toLowerCase().indexOf(that.find_value.value.toLowerCase()) >= 0) {
|
||
return index;
|
||
}
|
||
});
|
||
} else {
|
||
found_array_index = found_array_index + 1;
|
||
if(found_array.length - 1 < found_array_index){
|
||
found_array_index = 0;
|
||
}
|
||
}
|
||
if(found_array.length > 0 && found_array[found_array_index] != full_playlist.length - 1){
|
||
$(".highlight").removeClass("highlight");
|
||
var jump_to_page = Math.floor(found_array[found_array_index] / List.can_fit);
|
||
$($("#wrapper").children()[found_array[found_array_index]]).addClass("highlight");
|
||
List.dynamicContentPageJumpTo(jump_to_page);
|
||
} else {
|
||
Helper.log("none found");
|
||
}
|
||
});
|
||
|
||
|
||
function share_link_modifier_channel(){
|
||
$("#facebook-code-link").attr("href", "https://www.facebook.com/sharer/sharer.php?u=https://zoff.no/" + chan.toLowerCase());
|
||
$("#facebook-code-link").attr("onclick", "window.open('https://www.facebook.com/sharer/sharer.php?u=https://zoff.no/" + chan.toLowerCase() + "', 'Share Playlist','width=600,height=300'); return false;");
|
||
$("#twitter-code-link").attr("href", "https://twitter.com/intent/tweet?url=https://zoff.no/" + chan.toLowerCase() + "&text=Check%20out%20this%20playlist%20" + chan.toLowerCase() + "%20on%20Zöff!&via=zoffmusic");
|
||
$("#twitter-code-link").attr("onclick", "window.open('https://twitter.com/intent/tweet?url=https://zoff.no/" + chan.toLowerCase() + "/&text=Check%20out%20this%20playlist%20" + chan.toLowerCase() + "%20on%20Zöff!&via=zoffmusic','Share Playlist','width=600,height=300'); return false;");
|
||
$("#qr-code-link").attr("href", "//chart.googleapis.com/chart?chs=500x500&cht=qr&chl=https://zoff.no/" + chan.toLowerCase() + "&choe=UTF-8&chld=L%7C1");
|
||
$("#qr-code-image-link").attr("src", "//chart.googleapis.com/chart?chs=150x150&cht=qr&chl=https://zoff.no/" + chan.toLowerCase() + "&choe=UTF-8&chld=L%7C1");
|
||
}
|
||
|
||
function onepage_load(){
|
||
|
||
var url_split = window.location.href.split("/");
|
||
|
||
if(url_split[3].substr(0,1) != "#!" && url_split[3] !== "" && !(url_split.length == 5 && url_split[4].substr(0,1) == "#")){
|
||
socket.emit("change_channel");
|
||
Admin.beginning = true;
|
||
|
||
chan = url_split[3].replace("#", "");
|
||
$("#chan").html(Helper.upperFirst(chan));
|
||
|
||
w_p = true;
|
||
socket.emit("list", chan.toLowerCase());
|
||
}else if(url_split[3] === ""){
|
||
$("#channel-load").css("display", "block");
|
||
window.scrollTo(0, 0);
|
||
|
||
Player.stopInterval = true;
|
||
Admin.display_logged_out();
|
||
Admin.beginning = true;
|
||
began = false;
|
||
durationBegun = false;
|
||
$("#embed-button").css("display", "none");
|
||
|
||
$.ajax({
|
||
url: "public/php/frontpage.php",
|
||
success: function(e){
|
||
|
||
if(Helper.mobilecheck()) {
|
||
Helper.log("Removing all listeners");
|
||
socket.removeAllListeners();
|
||
socket.disconnect();
|
||
} else {
|
||
socket.removeEventListener("chat.all");
|
||
socket.removeEventListener("chat");
|
||
socket.removeEventListener("conf");
|
||
socket.removeEventListener("pw");
|
||
socket.removeEventListener("toast");
|
||
//socket.removeEventListener("id");
|
||
socket.removeEventListener("channel");
|
||
//socket.removeEventListener(id);
|
||
}
|
||
document.getElementById("volume-button").removeEventListener("click", Playercontrols.mute_video);
|
||
document.getElementById("playpause").removeEventListener("click", Playercontrols.play_pause);
|
||
document.getElementById("fullscreen").removeEventListener("click", Playercontrols.fullscreen);
|
||
|
||
if(Helper.mobilecheck()) {
|
||
video_id = "";
|
||
song_title = "";
|
||
}
|
||
|
||
$("meta[name=theme-color]").attr("content", "#2D2D2D");
|
||
|
||
if(!Helper.mobilecheck()){
|
||
$(".video-container").resizable("destroy");
|
||
$("main").append("<a id='closePlayer' title='Close Player'>X</a>");
|
||
$("#playbar").remove();
|
||
$("#playlist").remove();
|
||
$(".ui-resizable-handle").remove();
|
||
$("#main_components").remove();
|
||
$("#player").addClass("player_bottom");
|
||
$("#main-row").addClass("frontpage_modified_heights");
|
||
$("#player").css("opacity", "1");
|
||
$("#video-container").removeClass("no-opacity");
|
||
$("#main-row").prepend("<div id='player_bottom_overlay' title='To Channel' class='player player_bottom'></div>");
|
||
} else {
|
||
try{
|
||
Player.player.destroy();
|
||
} catch(error){
|
||
//No player to destroy
|
||
}
|
||
Player.player = "";
|
||
document.title = "Zöff";
|
||
}
|
||
|
||
var response = $("<div>" + e + "</div>");
|
||
|
||
$(".drag-target").remove();
|
||
$("#sidenav-overlay").remove();
|
||
$("main").attr("class", "center-align container");
|
||
$("body").attr("id", "");
|
||
$("body").attr("style", "");
|
||
$("header").html($(response.find("header")).html());
|
||
$($(response.find(".section.mega"))).insertAfter("header");
|
||
$($(response.find(".section.mobile-search"))).insertAfter(".mega");
|
||
if(Helper.mobilecheck()) $("main").html($(response.find("main")).html());
|
||
else $("main").append($(response.find("#main_section_frontpage")).wrap("<div>").parent().html());
|
||
$(".page-footer").removeClass("padding-bottom-extra");
|
||
$(".page-footer").removeClass("padding-bottom-novideo");
|
||
$("#favicon").attr("href", "public/images/favicon.png");
|
||
|
||
Helper.log(socket);
|
||
if($("#alreadyfp").length == 1){
|
||
initfp();
|
||
}else {
|
||
fromChannel = true;
|
||
frontpage = true;
|
||
initfp();
|
||
}
|
||
|
||
if($("#alreadychannel").length === 0){
|
||
$("head").append("<div id='alreadychannel'></div");
|
||
}
|
||
$("#channel-load").css("display", "none");
|
||
|
||
}
|
||
});
|
||
}
|
||
}
|