Files
zoff/server/public/assets/js/embed.js
2018-04-30 16:05:09 +02:00

316 lines
8.9 KiB
JavaScript
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var slider_type = "horizontal";
var timed_remove_check;
var gotten_np = false;
var song_title = "";
var paused = false;
var client = false;
var startTime = 0;
var socket_connected = false;
var dynamicListeners = {};
var player_ready = false;
var list_html = document.getElementById("list-song-html").innerHTML;
var w_p = true;
var lazy_load = false;
var end_programmatically = false;
var embed = true;
var vol = 100;
var adminpass = "";
var mobile_beginning = false;
var durationBegun = false;
var chromecastAvailable = false;
var private_channel = false;
var was_stopped = false;
var offline = false;
var began = false;
var from_frontpage = false;
var seekTo;
var socket;
var video_id;
var previous_video_id;
var hash = window.location.hash.substring(1).split("&");
var chan = hash[0];
var autoplay = false;
var color = "#808080";
var dragging = false;
var user_auth_started = false;
var user_auth_avoid = false;
var connection_options = {
'sync disconnect on unload':true,
'secure': true,
'force new connection': true
};
var Crypt = {
crypt_pass: function(pass) {
return pass;
}
};
function receiveMessage(event) {
if(event.data == "parent") {
window.parentWindow = event.source;
window.parentOrigin = event.origin;
}
if(event.data == "lower") {
window.setVolume(10);
}else if(event.data == "reset") {
window.setVolume(100);
} else if(event.data == "get_info") {
window.parentWindow.postMessage({type: "np", title: song_title}, window.parentOrigin);
window.parentWindow.postMessage({type: "controller", id: Hostcontroller.old_id}, window.parentOrigin);
if(full_playlist.length > 0) {
Player.sendNext({title: full_playlist[0].title, videoId: full_playlist[0].id});
}
}
}
window.addEventListener("message", receiveMessage, false);
window.addEventListener("DOMContentLoaded", function() {
if(hash.length >= 3 && hash[2] == "autoplay"){
autoplay = true;
Helper.css("#player", "visibility", "hidden");
} else {
paused = true;
}
if(hash.indexOf("videoonly") > -1) {
Helper.addClass("#wrapper", "hide");
Helper.addClass("#controls", "hide");
Helper.addClass("#player", "video_only");
Helper.css("#zoffbutton", "bottom", "0px");
}
M.Modal.init(document.getElementById("locked_channel"), {
dismissible: false
});
color = "#" + hash[1];
add = "https://zoff.me";
//add = "localhost";
socket = io.connect(''+add+':8080', connection_options);
socket.on('auth_required', function() {
M.Modal.getInstance(document.getElementById("locked_channel")).open();
});
socket.on("get_list", function() {
setTimeout(function(){socket.emit('list', {version: VERSION, channel: chan.toLowerCase(), pass: ''});},1000);
});
socket.on("self_ping", function() {
if(chan != undefined && chan.toLowerCase() != "") {
socket.emit("self_ping", {channel: chan.toLowerCase()});
}
});
socket.on("viewers", function(view) {
viewers = view;
if(song_title !== undefined)
Player.getTitle(song_title, viewers);
});
setup_host_initialization();
setup_youtube_listener();
setup_list_listener();
window.onYouTubeIframeAPIReady = Player.onYouTubeIframeAPIReady;
socket.on("toast", toast);
Player.loadPlayer();
Playercontrols.initSlider();
document.getElementById("playpause").addEventListener("click", Playercontrols.play_pause);
window.setVolume = setVolume;
//Helper.css("#controls", "background-color", color);
document.querySelector("body").style.backgroundColor = color;
if(hash.indexOf("controll") > -1) {
Hostcontroller.change_enabled(true);
} else {
Hostcontroller.change_enabled(false);
}
});
function setup_host_listener(id) {
socket.on(id, Hostcontroller.host_on_action);
}
function setup_host_initialization() {
socket.on("id", Hostcontroller.host_listener);
}
function setup_youtube_listener() {
socket.on("np", Player.youtube_listener);
}
function setup_list_listener() {
socket.on("channel", List.channel_function);
}
function setVolume(val) {
Playercontrols.visualVolume(val);
Playercontrols.setVolume(val);
}
function toast(msg) {
switch(msg) {
case "suggested_thumbnail":
if(embed) return;
msg = "The thumbnail has been suggested!";
break;
case "faulty_start_end":
if(embed) return;
break;
case "wait_longer":
if(embed) return;
break;
case "suggested_description":
if(embed) return;
break;
case "thumbnail_denied":
if(embed) return;
break;
case "description_denied":
if(embed) return;
break;
case "addedsong":
if(embed) return;
break;
case "addedplaylist":
if(embed) return;
break;
case "savedsettings":
if(embed) return;
break;
case "wrongpass":
if(embed) return;
break;
case "deleted_songs":
if(embed) return;
break;
case "shuffled":
if(embed) return;
break;
case "deletesong":
if(embed) return;
break;
case "voted":
msg=Helper.rnd(["You voted!", "You vote like a boss", "Voting is the key to democracy", "May you get your song to the very top!", "I love that song! I vouch for you.", "Only you vote that good", "I like the way you vote...", "Up the video goes!", "Voted Zoff for president", "Only 999 more to go!"]);
break;
case "alreadyvoted":
msg=Helper.rnd(["You can't vote twice on that song!", "I see you have voted on that song before", "One vote per person!", "I know you want to hear your song, but have patience!", "I'm sorry, but I can't let you vote twice, Dave."]);
break;
case "skip":
if(embed) return;
break;
case "listhaspass":
if(embed) return;
break;
case "noskip":
if(embed) return;
break;
case "alreadyskip":
if(embed) return;
break;
case "notyetskip":
if(embed) return;
break;
case "correctpass":
if(embed) return;
break;
case "changedpass":
if(embed) return;
break;
case "suggested":
if(embed) return;
break;
case "alreadyplay":
if(embed) return;
break;
}
before_toast();
M.toast({html: msg, displayLength: 4000});
}
function emit() {
if(!embed) {
lastCommand = [];
for(var i = 0; i < arguments.length; i++) {
lastCommand.push(arguments[i]);
}
}
if(arguments.length == 1) {
socket.emit(arguments[0]);
} else {
socket.emit(arguments[0], arguments[1]);
}
}
function handleEvent(e, target, tried, type) {
for(var y = 0; y < e.path.length; y++) {
var target = e.path[y];
if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) {
dynamicListeners[type]["#" + target.id].call(target);
return;
} else {
if(target.classList == undefined) return;
for(var i = 0; i < target.classList.length; i++) {
if(dynamicListeners[type] && dynamicListeners[type]["." + target.classList[i]]) {
dynamicListeners[type]["." + target.classList[i]].call(target);
return;
}
}
}
}
}
function addListener(type, element, callback) {
if(dynamicListeners[type] == undefined) dynamicListeners[type] = {};
dynamicListeners[type][element] = callback;
}
function before_toast(){
/*if($('.toast').length > 0) {
var toastElement = $('.toast').first()[0];
var toastInstance = toastElement.M_Toast;
toastInstance.remove();
}*/
M.Toast.dismissAll();
//Materialize.Toast.removeAll();
}
document.addEventListener("click", function(e) {
handleEvent(e, e.target, false, "click");
}, false);
addListener("click", "#zoffbutton", function(e) {
Player.pauseVideo();
window.open("https://zoff.me/" + chan.toLowerCase() + "/", '_blank');
});
addListener("click", ".vote-container", function(e) {
var id = this.getAttribute("data-video-id");
List.vote(id, "pos");
});
addListener("click", ".prev_page", function(e) {
event.preventDefault();
List.dynamicContentPage(-1);
});
addListener("click", ".next_page", function(e) {
event.preventDefault();
List.dynamicContentPage(1);
});
addListener("click", ".last_page", function(e){
event.preventDefault();
List.dynamicContentPage(10);
});
addListener("click", ".first_page", function(e){
event.preventDefault();
List.dynamicContentPage(-10);
});