diff --git a/gulpfile.js b/gulpfile.js index 84b93b8e..f2c7b3b6 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -52,7 +52,7 @@ gulp.task('build', function() { }) gulp.task('remotecontroller', function () { - gulp.src(['server/VERSION.js', 'server/config/api_key.js', 'server/public/assets/js/remotecontroller.js']) + gulp.src(['server/VERSION.js', 'server/config/api_key.js', 'server/public/assets/js/remotecontroller.js', 'server/public/assets/js/helpers.js']) .pipe(uglify({ mangle: true, compress: true, diff --git a/server/public/assets/css/style.css b/server/public/assets/css/style.css index 3e196d83..dcd857c6 100755 --- a/server/public/assets/css/style.css +++ b/server/public/assets/css/style.css @@ -2308,6 +2308,7 @@ nav ul li:hover, nav ul li.active { #controls { + overflow: hidden; z-index: 99999999999; opacity:0; height:32px; diff --git a/server/public/assets/js/admin.js b/server/public/assets/js/admin.js index 8eee6ed5..c8d2fd4d 100755 --- a/server/public/assets/js/admin.js +++ b/server/public/assets/js/admin.js @@ -32,7 +32,7 @@ var Admin = { //Crypt.set_pass(chan.toLowerCase(), Crypt.tmp_pass); for (var i = 0; i < names.length; i++) { - document.getElementsByName(names[i])[0].setAttribute("disabled", false); + document.getElementsByName(names[i])[0].removeAttribute("disabled"); } Helper.removeClass(".card-action", "hide"); @@ -162,7 +162,11 @@ var Admin = { for (var i = 0; i < names.length; i++) { document.getElementsByName(names[i])[0].checked = (conf_array[names[i]] === true); - document.getElementsByName(names[i])[0].setAttribute("disabled", show_disabled); + if(show_disabled) { + document.getElementsByName(names[i])[0].setAttribute("disabled", show_disabled); + } else { + document.getElementsByName(names[i])[0].removeAttribute("disabled"); + } } if((hasadmin) && !Admin.logged_in) { if(Helper.html("#admin-lock") != "lock") Admin.display_logged_out(); diff --git a/server/public/assets/js/channel.js b/server/public/assets/js/channel.js index 3c9b86d1..8a69c07d 100644 --- a/server/public/assets/js/channel.js +++ b/server/public/assets/js/channel.js @@ -246,7 +246,7 @@ var Channel = { html: "Cast Zoff to TV" }); - $("#color_embed").spectrum({ + /*$("#color_embed").spectrum({ color: "#808080", change: function(c) { color = c.toHexString().substring(1); // #ff0000 @@ -256,12 +256,13 @@ var Channel = { containerClassName: 'polyfill-color z-depth-4', show: function(color) { }, - }); + });*/ - Helper.addClass(".sp-choose", "hide"); + /*Helper.addClass(".sp-choose", "hide"); Helper.addClass(".sp-cancel", "btn-flat waves-effect waves-red"); Helper.removeClass(".sp-cancel", "sp-cancel"); document.getElementsByClassName("sp-button-container")[0].insertAdjacentHTML("beforeend", "CHOOSE"); + */ } addListener("click", ".sp-choose-link", function(e) { diff --git a/server/public/assets/js/chat.js b/server/public/assets/js/chat.js index 61b86261..853d06fb 100755 --- a/server/public/assets/js/chat.js +++ b/server/public/assets/js/chat.js @@ -42,9 +42,9 @@ var Chat = { if(data.value.startsWith("/name ")){ Chat.namechange(data.value.substring(6), false); } else if(data.value.startsWith("/help")) { - if($(".chat-tab-li a.active").attr("href") == "#all_chat"){ - if($("#chatall").children().length > 100) { - $("#chatall").children()[0].remove() + if(document.querySelector(".chat-tab-li a.active").getAttribute("href") == "#all_chat"){ + if(document.querySelector("#chatall").children.length > 100) { + document.querySelector("#chatall").children[0].remove() } for(var x = 0; x < Chat.chat_help.length; x++) { var color = Helper.intToARGB(Helper.hashCode("System")); @@ -55,14 +55,14 @@ var Chat = { } color = Helper.hexToRgb(color.substring(0,6)); var color_temp = Helper.rgbToHsl([color.r, color.g, color.b], false); - $("#chatall").append("
  • System:
  • "); + document.querySelector("#chatall").insertAdjacentHTML("beforeend", "
  • System:
  • "); var in_text = document.createTextNode(Chat.chat_help[x]); - $("#chatall li:last")[0].appendChild(in_text); + document.querySelector("#chatall").children[document.querySelector("#chatall").children.length - 1].appendChild(in_text); document.getElementById("chatall").scrollTop = document.getElementById("chatall").scrollHeight; } } else { - if($("#chatchannel").children().length > 100) { - $("#chatchannel").children()[0].remove() + if(document.querySelector("#chatchannel").children.length > 100) { + document.querySelector("#chatchannel").children[0].remove() } for(var x = 0; x < Chat.chat_help.length; x++) { @@ -74,15 +74,14 @@ var Chat = { } color = Helper.hexToRgb(color.substring(0,6)); var color_temp = Helper.rgbToHsl([color.r, color.g, color.b], false); - $("#chatchannel").append("
  • System:
  • "); + document.querySelector("#chatchannel").insertAdjacentHTML("beforeend", "
  • System:
  • "); var in_text = document.createTextNode(Chat.chat_help[x]); - $("#chatchannel li:last")[0].appendChild(in_text); document.getElementById("chatchannel").scrollTop = document.getElementById("chatchannel").scrollHeight; } } } else if(data.value.startsWith("/removename")) { Chat.removename(); - } else if($(".chat-tab-li a.active").attr("href") == "#all_chat") { + } else if(document.querySelector(".chat-tab-li a.active").getAttribute("href") == "#all_chat") { socket.emit("all,chat", {channel: chan.toLowerCase(), data: data.value}); } else { socket.emit("chat", {channel: chan.toLowerCase(), data: data.value}); @@ -94,20 +93,20 @@ var Chat = { allchat: function(inp, time_sent, disable_blink) { if(inp.msg.substring(0,1) == ":" && !chat_active && !disable_blink) { Chat.all_received += 1; - $("#favicon").attr("href", "/assets/images/highlogo.png"); + document.querySelector("#favicon").getAttribute("href", "/assets/images/highlogo.png"); unseen = true; chat_unseen = true; - Helper.removeClass(".chat-link span badge new white", "hide"); + Helper.removeClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); var to_display = Chat.channel_received + Chat.all_received > 9 ? "9+" : Chat.channel_received + Chat.all_received; - Helper.setHtml(".chat-link span badge new white", to_display); + Helper.setHtml(document.querySelector(".chat-link span.badge.new.white"), to_display); } if(document.hidden) { document.getElementById("favicon").setAttribute("href", "/assets/images/highlogo.png"); } - if($("#chatall").children().length > 100) { - $("#chatall").children()[0].remove() + if(document.querySelector("#chatall").children.length > 100) { + document.querySelector("#chatall").children[0].remove() } var color = Helper.intToARGB(Helper.hashCode(inp.from)); if(color.length < 6) { @@ -127,9 +126,9 @@ var Chat = { _time = new Date(time_sent); } var time = Helper.pad(_time.getHours()) + ":" + Helper.pad(_time.getMinutes()); - $("#chatall").append("
  • " + time + " " + icon_add + ""+inp.from+" " + inp.channel + "
  • "); + document.querySelector("#chatall").insertAdjacentHTML("beforeend", "
  • " + time + " " + icon_add + ""+inp.from+" " + inp.channel + "
  • "); var in_text = document.createTextNode(inp.msg); - $("#chatall li:last")[0].appendChild(in_text); + document.querySelector("#chatall").children[document.querySelector("#chatall").children.length - 1].appendChild(in_text); if(!userscroll) { programscroll = true; document.getElementById("chatall").scrollTop = document.getElementById("chatall").scrollHeight; @@ -139,18 +138,18 @@ var Chat = { channelchat: function(data, time_sent, disable_blink) { if(data.msg.substring(0,1) == ":" && !chat_active && !disable_blink) { - $("#favicon").attr("href", "/assets/images/highlogo.png"); + document.querySelector("#favicon").setAttribute("href", "/assets/images/highlogo.png"); unseen = true; chat_unseen = true; Chat.channel_received += 1; //blink_interval = setTimeout(Chat.chat_blink, 1000); - Helper.removeClass(".chat-link span badge new white", "hide"); + Helper.removeClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); var to_display = Chat.channel_received + Chat.all_received > 9 ? "9+" : Chat.channel_received + Chat.all_received; - Helper.setHtml(".chat-link span badge new white", to_display); + Helper.setHtml(document.querySelector(".chat-link span.badge.new.white"), to_display); } - if($("#chatchannel").children().length > 100) { - $("#chatchannel").children()[0].remove() + if(document.querySelector("#chatchannel").children.length > 100) { + document.querySelector("#chatchannel").children[0].remove() } var icon_add = ""; @@ -171,9 +170,9 @@ var Chat = { _time = new Date(time_sent); } var time = Helper.pad(_time.getHours()) + ":" + Helper.pad(_time.getMinutes()); - $("#chatchannel").append("
  • " + time + " " + icon_add + ""+data.from+"
  • "); + document.querySelector("#chatchannel").insertAdjacentHTML("beforeend", "
  • " + time + " " + icon_add + ""+data.from+"
  • "); var in_text = document.createTextNode(data.msg); - $("#chatchannel li:last")[0].appendChild(in_text); + document.querySelector("#chatchannel").children[document.querySelector("#chatchannel").children.length - 1].appendChild(in_text); if(!userscroll) { programscroll = true; document.getElementById("chatchannel").scrollTop = document.getElementById("chatchannel").scrollHeight; @@ -183,9 +182,9 @@ var Chat = { chat_blink: function() { blinking = true; - $(".chat-link").attr("style", "color: grey !important;"); + document.querySelector(".chat-link").setAttribute("style", "color: grey !important;"); setTimeout(function () { - $(".chat-link").attr("style", "color: white !important;"); + document.querySelector(".chat-link").setAttribute("style", "color: white !important;"); setTimeout(function() { if(blinking) Chat.chat_blink(); }, 1000); diff --git a/server/public/assets/js/embed.js b/server/public/assets/js/embed.js index 0fc312a7..782f6591 100755 --- a/server/public/assets/js/embed.js +++ b/server/public/assets/js/embed.js @@ -6,8 +6,9 @@ var paused = false; var client = false; var startTime = 0; var socket_connected = false; +var dynamicListeners = {}; var player_ready = false; -var list_html = $("#list-song-html").html(); +var list_html = document.getElementById("list-song-html").innerHTML; var w_p = true; var lazy_load = false; var end_programmatically = false; @@ -66,11 +67,11 @@ function receiveMessage(event) { window.addEventListener("message", receiveMessage, false); -$(document).ready(function() { +window.addEventListener("load", function() { if(hash.length >= 3 && hash[2] == "autoplay"){ autoplay = true; - $("#player").css("visibility", "hidden"); + Helper.css("#player", "visibility", "hidden"); } else { paused = true; } @@ -120,8 +121,8 @@ $(document).ready(function() { Playercontrols.initSlider(); window.setVolume = setVolume; - $("#controls").css("background-color", color); - $("#playlist").css("background-color", color); + Helper.css("#controls", "background-color", color); + Helper.css("#playlist", "background-color", color); if(hash.indexOf("controll") > -1) { Hostcontroller.change_enabled(true); } else { @@ -285,8 +286,8 @@ function toast(msg) { tried_again = false; adminpass = Crypt.get_pass(chan.toLowerCase()) == undefined ? Crypt.tmp_pass : Crypt.get_pass(chan.toLowerCase()); msg="Correct password. You now have access to the sacred realm of The Admin."; - $("#thumbnail_form").css("display", "inline-block"); - $("#description_form").css("display", "inline-block"); + Helper.css("#thumbnail_form", "display", "inline-block"); + Helper.css("#description_form", "display", "inline-block"); if(!Helper.mobilecheck()) { Helper.tooltip('#chan_thumbnail', { delay: 5, @@ -326,6 +327,28 @@ function emit() { } } +function handleEvent(e, target, tried, type) { + if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { + dynamicListeners[type]["#" + target.id].call(target); + return; + } else { + 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; + } + } + } + if(!tried) { + handleEvent(e, e.target.parentElement, true, type); + } +} + +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]; @@ -336,32 +359,36 @@ function before_toast(){ //Materialize.Toast.removeAll(); } -$(document).on( "click", "#zoffbutton", function(e) { +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'); }); -$(document).on( "click", ".vote-container", function(e) { - var id = $(this).attr("data-video-id"); +addListener("click", ".vote-container", function(e) { + var id = this.getAttribute("data-video-id"); List.vote(id, "pos"); }); -$(document).on("click", ".prev_page", function(e) { +addListener("click", ".prev_page", function(e) { e.preventDefault(); List.dynamicContentPage(-1); }); -$(document).on("click", ".next_page", function(e) { +addListener("click", ".next_page", function(e) { e.preventDefault(); List.dynamicContentPage(1); }); -$(document).on("click", ".last_page", function(e){ +addListener("click", ".last_page", function(e){ e.preventDefault(); List.dynamicContentPage(10); }); -$(document).on("click", ".first_page", function(e){ +addListener("click", ".first_page", function(e){ e.preventDefault(); List.dynamicContentPage(-10); }); diff --git a/server/public/assets/js/frontpage.js b/server/public/assets/js/frontpage.js index 60593bd2..8adc3d3f 100755 --- a/server/public/assets/js/frontpage.js +++ b/server/public/assets/js/frontpage.js @@ -148,8 +148,9 @@ var Frontpage = { }); document.getElementById("preloader").style.display = "none"; + document.getElementById("channels").style.display = "block"; //Materialize.fadeInImage('#channels'); - $("#channels").fadeIn(800); + //$("#channels").fadeIn(800); document.getElementById("autocomplete-input").focus(); num = 0; }, @@ -201,11 +202,11 @@ var Frontpage = { //$(".room-namer").css("opacity", 0); setTimeout(function(){ if(frontpage){ - $("#mega-background").css("background", "url(data:image/png;base64,"+Frontpage.blob_list[i]+")"); - $("#mega-background").css("background-size" , "cover"); - $("#mega-background").css("background-repeat" , "no-repeat"); - $("#mega-background").css("opacity", 1); - $(".autocomplete").attr("placeholder", list[i]._id); + Helper.css("#mega-background","background", "url(data:image/png;base64,"+Frontpage.blob_list[i]+")"); + Helper.css("#mega-background","background-size" , "cover"); + Helper.css("#mega-background","background-repeat" , "no-repeat"); + Helper.css("#mega-background","opacity", 1); + document.querySelector(".autocomplete").setAttribute("placeholder", list[i]._id); //$(".room-namer").css("opacity", 1); } },500); @@ -222,26 +223,27 @@ var Frontpage = { type: "POST", data: {id:id}, url: add + "/api/imageblob", + headers: {"Content-Type": "application/json;charset=UTF-8"}, success: function(data){ setTimeout(function(){ - $("#mega-background").css("background", "url(/assets/images/thumbnails/"+data+")"); - $("#mega-background").css("background-size" , "cover"); - $("#mega-background").css("background-repeat" , "no-repeat"); - $("#mega-background").css("opacity", 1); - $(".autocomplete").attr("placeholder", list[i]._id); + Helper.css("#mega-background", "background", "url(/assets/images/thumbnails/"+data+")"); + Helper.css("#mega-background", "background-size" , "cover"); + Helper.css("#mega-background", "background-repeat" , "no-repeat"); + Helper.css("#mega-background", "opacity", 1); + document.querySelector(".autocomplete").setAttribute("placeholder", list[i]._id); },500); }, error: function() { - $(".autocomplete").attr("placeholder", list[i]._id); + document.querySelector(".autocomplete").setAttribute("placeholder", list[i]._id); } }); }; img.onload = function(){ // Loaded successfully - $("#mega-background").css("background", "url("+img.src+")"); - $("#mega-background").css("background-size" , "cover"); - $("#mega-background").css("background-repeat" , "no-repeat"); - $("#mega-background").css("opacity", 1); - $(".autocomplete").attr("placeholder", list[i]._id); + Helper.css("#mega-background", "background", "url("+img.src+")"); + Helper.css("#mega-background", "background-size" , "cover"); + Helper.css("#mega-background", "background-repeat" , "no-repeat"); + Helper.css("#mega-background", "opacity", 1); + document.querySelector(".autocomplete").setAttribute("placeholder", list[i]._id); }; } @@ -306,7 +308,7 @@ var Frontpage = { }, set_viewers: function(viewers) { - $("#frontpage-viewer-counter").html("visibility" + viewers); + document.querySelector("#frontpage-viewer-counter").innerHTML = "visibility" + viewers; }, to_channel: function(new_channel, popstate) { @@ -439,7 +441,7 @@ var Frontpage = { window.location.reload(true); }); } - if($("#alreadyfp").length === 0 || Helper.mobilecheck() || !socket._callbacks.$playlists || user_auth_avoid){ + if(document.querySelectorAll("#alreadyfp").length === 0 || Helper.mobilecheck() || !socket._callbacks.$playlists || user_auth_avoid){ setup_playlist_listener(); } diff --git a/server/public/assets/js/functions.js b/server/public/assets/js/functions.js index e9d589c8..24dd4a21 100644 --- a/server/public/assets/js/functions.js +++ b/server/public/assets/js/functions.js @@ -23,12 +23,12 @@ function removeAllListeners() { function getColor(id) { Helper.ajax({ - type: "POST", + method: "POST", url: "/api/color", - async: true, - data: { + headers: {"Content-Type": "application/json;charset=UTF-8"}, + data: JSON.stringify({ id: id - }, + }), success: function(c) { c = JSON.parse(c); if(typeof(c) == "object") { @@ -40,9 +40,7 @@ function getColor(id) { function hide_native(way) { if(way == 1){ - if(!$('.castButton').hasClass('castButton-white-active')) { - $('.castButton').addClass('castButton-white-active'); - } + Helper.addClass('.castButton', 'castButton-white-active'); if(!Helper.mobilecheck()) { if(M.Tooltip.getInstance(document.getElementsByClassName("castButton")[0])) { Helper.tooltip('.castButton', 'destroy'); @@ -53,19 +51,19 @@ function hide_native(way) { html: "Stop casting" }); } - $("#duration").toggleClass("hide"); - $("#fullscreen").toggleClass("hide"); + Helper.toggleClass("#duration", "hide"); + Helper.toggleClass("#fullscreen", "hide"); try{ Player.player.stopVideo(); } catch(e){} Player.stopInterval = true; if(Helper.mobilecheck()){ - if($("#pause").hasClass("hide")){ - $("#play").toggleClass("hide"); - $("#pause").toggleClass("hide"); - } else if($("#play").hasClass("hide")){ - $("#play").toggleClass("hide"); - $("#pause").toggleClass("hide"); + if(document.querySelector("#pause").classList.contains("hide")){ + Helper.toggleClass("#play", "hide"); + Helper.toggleClass("#pause", "hide"); + } else if(document.querySelector("#play").classList.contains("hide")){ + Helper.toggleClass("#play", "hide"); + Helper.toggleClass("#pause", "hide"); } } else { Playercontrols.visualVolume(100); @@ -87,7 +85,7 @@ function hide_native(way) { } Player.player.setVolume(100); - $("#player_overlay_text").toggleClass("hide"); + Helper.toggleClass("#player_overlay_text", "hide"); } else if(way == 0){ if(!Helper.mobilecheck()) { if(M.Tooltip.getInstance(document.getElementsByClassName("castButton")[0])) { @@ -101,8 +99,8 @@ function hide_native(way) { } Helper.removeClass('.castButton', 'castButton-white-active'); - $("#duration").toggleClass("hide"); - $("#fullscreen").toggleClass("hide"); + Helper.toggleClass("#duration", "hide"); + Helper.toggleClass("#fullscreen", "hide"); Player.player.playVideo(); Player.stopInterval = false; duration = Player.player.getDuration(); @@ -112,7 +110,7 @@ function hide_native(way) { Playercontrols.visualVolume(Crypt.get_volume()); } Helper.addClass("#player_overlay", "hide"); - $("#player_overlay_text").toggleClass("hide"); + Helper.toggleClass("#player_overlay_text", "hide"); Helper.setHtml("#chromecast_text", ""); Helper.css("#playing_on", "display", "none"); if(!offline){ @@ -157,7 +155,7 @@ function start_auth() { Helper.removeClass("#player_overlay", "hide"); Helper.css("#player_overlay", "display", "block"); M.Modal.getInstance(document.getElementById("user_password")).open(); - $("#user-pass-input").focus(); + document.querySelector("#user-pass-input").focus(); //Crypt.remove_userpass(chan.toLowerCase()); before_toast(); M.toast({html: "That is not the correct password, try again..", displayLength: 4000}); @@ -186,6 +184,7 @@ function get_list_ajax() { userpass: "", token: zoff_api_token, }, + headers: {"Content-Type": "application/json;charset=UTF-8"}, url: "/api/list/" + chan.toLowerCase(), success: function(response) { response = JSON.parse(response); @@ -217,24 +216,26 @@ function get_list_ajax() { } function contextListener(that, e) { - var parent = $(that).parent(); + console.log("here"); + var parent = that.parentElement; var suggested = false; - if(parent.attr("id").indexOf("suggested-") > -1) suggested = true; + if(parent.id.indexOf("suggested-") > -1) suggested = true; document.getElementsByClassName("context-menu-root")[0].setAttribute("data-suggested", suggested); - document.getElementsByClassName("context-menu-root")[0].setAttribute("data-id", parent.attr("id").replace("suggested-", "")); + document.getElementsByClassName("context-menu-root")[0].setAttribute("data-id", parent.getAttribute("id").replace("suggested-", "")); Helper.removeClass("#context-menu-overlay", "hide"); - var left = e.pageX - $(".context-menu-root").width() / 2; - var top = e.pageY; - if(left + 200 > $(window).width()) { - left = $(window).width() - 200 - 15; + var left = event.pageX - document.querySelector(".context-menu-root").offsetWidth / 2; + var top = event.pageY; + if(left + 200 > window.innerWidth) { + left = window.innerWidth - 200 - 15; } else if (left < 0) { left = 11; } - if(top + 96 > $(window).height()) { - top = $(window).height() - 96 - 15; + if(top + 96 > window.innerHeight) { + top = window.innerHeight - 96 - 15; } else if(top < 0) { top = 15; } + console.log(event.pageX); Helper.css(".context-menu-root", "left", left + "px"); Helper.css(".context-menu-root", "top", top + "px"); Helper.removeClass(".context-menu-root","hide"); @@ -244,15 +245,18 @@ function contextListener(that, e) { } function mouseContext(left, top) { - $(document).off("mousemove"); - $(document).mousemove(function( event ) { - if(event.pageX < left - 60 || event.pageX > left + $(".context-menu-root").width() + 60 || - event.pageY < top - 60 || event.pageY > top + $(".context-menu-root").height() + 60) { + var moveFunction = function( event ) { + if(event.pageX < left - 60 || event.pageX > left + document.querySelector(".context-menu-root").offsetWidth + 60 || + event.pageY < top - 60 || event.pageY > top + document.querySelector(".context-menu-root").offsetHeight + 60) { Helper.addClass(".context-menu-root", "hide"); Helper.addClass("#context-menu-overlay", "hide"); - $(document).off("mousemove"); + document.removeEventListener("mousemove", moveFunction); } - }); + }; + try { + document.removeEventListener("mousemove", moveFunction); + } catch(e) {} + document.addEventListener("mousemove", moveFunction, false); } function get_np_ajax() { @@ -265,6 +269,7 @@ function get_np_ajax() { fetch_song: true, token: zoff_api_token }, + headers: {"Content-Type": "application/json;charset=UTF-8"}, url: "/api/list/" + chan.toLowerCase() + "/__np__", success: function(response) { response = JSON.parse(response); @@ -295,6 +300,7 @@ function del_ajax(id) { userpass: "", token: zoff_api_token }, + headers: {"Content-Type": "application/json;charset=UTF-8"}, url: "/api/list/" + chan.toLowerCase() + "/" + id, success: function(response) { toast("deletesong"); @@ -329,6 +335,7 @@ function add_ajax(id, title, duration, playlist, num, full_num, start, end) { start_time: start, token: zoff_api_token }, + headers: {"Content-Type": "application/json;charset=UTF-8"}, url: "/api/list/" + chan.toLowerCase() + "/" + id, success: function(response) { toast("addedsong"); @@ -361,6 +368,7 @@ function vote_ajax(id) { userpass: "", token: zoff_api_token }, + headers: {"Content-Type": "application/json;charset=UTF-8"}, url: "/api/list/" + chan.toLowerCase() + "/" + id, success: function(response) { toast("voted"); @@ -446,7 +454,7 @@ function setup_viewers_listener(){ viewers = view; var outPutWord = "visibility"//v > 1 ? "viewers" : "viewer"; - $("#viewers").html(outPutWord + " " + view); + Helper.setHtml("#viewers", outPutWord + " " + view); if(song_title !== undefined) Player.getTitle(song_title, viewers); @@ -528,19 +536,42 @@ function change_offline(enabled, already_offline){ Helper.tooltip("#offline-mode", 'destroy'); } } - if(enabled){ - if(list_html){ - list_html = $("
    " + list_html + "
    "); - //list_html.find(".list-remove").removeClass("hide"); - list_html = list_html.html(); + + var mouseEnter = function(e){ + Helper.removeClass("#seekToDuration", "hide"); + }; + + var mouseLeave = function(e){ + dragging = false; + Helper.addClass("#seekToDuration", "hide"); + }; + + var mouseDown = function(e) { + var acceptable = ["bar", "controls", "duration"]; + if(acceptable.indexOf(e.target.id) >= 0) { + dragging = true; } + }; + + var mouseUp = function(e) { + dragging = false; + }; + + if(enabled){ + /*if(list_html == undefined){ + var tempOuter = document.createElement("div"); + list_html.innerHTML = list_html; + //list_html.find(".list-remove").removeClass("hide"); + list_html = list_html.innerHTML; + }*/ //$(".list-remove").removeClass("hide"); Helper.addClass("#viewers", "hide"); Helper.removeClass(".margin-playbar", "margin-playbar"); - Helper.addClass(".prev.playbar", "margin-playbar"); - Helper.removeClass(".prev.playbar", "hide"); + Helper.addClass(".prev playbar", "margin-playbar"); + Helper.removeClass(".prev playbar", "hide"); Helper.removeClass("#offline-mode", "waves-cyan"); Helper.addClass("#offline-mode", "cyan"); + Helper.removeClass(".delete-context-menu", "context-menu-disabled"); if(!Helper.mobilecheck()) { Helper.tooltip("#offline-mode", { delay: 5, @@ -551,35 +582,18 @@ function change_offline(enabled, already_offline){ if(window.location.pathname != "/"){ socket.removeEventListener("color"); - $("#controls").on("mouseenter", function(e){ - Helper.removeClass("#seekToDuration", "hide"); - }); + document.getElementById("controls").addEventListener("mouseenter", mouseEnter, false); + document.getElementById("controls").addEventListener("mouseleave", mouseLeave, false); + document.getElementById("controls").addEventListener("mousedown", mouseDown, false); + document.getElementById("controls").addEventListener("mouseup", mouseUp, false); + document.getElementById("controls").addEventListener("mousemove", Channel.seekToMove); + document.getElementById("controls").addEventListener("click", Channel.seekToClick); - $("#controls").on("mouseleave", function(e){ - dragging = false; - Helper.addClass("#seekToDuration", "hide"); - }); - - $("#controls").on("mousedown", function(e) { - var acceptable = ["bar", "controls", "duration"]; - if(acceptable.indexOf($(e.target).attr("id")) >= 0) { - dragging = true; - } - }); - $("#controls").on("mouseup", function(e) { - dragging = false; - }); - $("#controls").on("mousemove", Channel.seekToMove); - $("#controls").on("click", Channel.seekToClick); - $("#main_components").append("
    00:00/01:00
    "); - if(!Helper.mobilecheck()) $("#seekToDuration").css("top", $("#controls").position().top - 55); - else if(Helper.mobilecheck()) $("#seekToDuration").css("top", $("#controls").position().top - 20); + document.querySelector("#main_components").insertAdjacentHTML("beforeend", "
    00:00/01:00
    "); + var controlElement = document.querySelector("#controls"); + if(!Helper.mobilecheck()) Helper.css("#seekToDuration", "top", controlElement.offsetHeight - parseInt(controlElement.style.height) - 55); + else if(Helper.mobilecheck()) Helper.css("#seekToDuration", "top", controlElement.offsetHeight - parseInt(controlElement.style.height) - 20); Helper.addClass("#controls", "ewresize"); - } else { - $("#controls").off("mouseenter"); - $("#controls").off("mouseleave"); - $("#controls").off("mousemove"); - $("#controls").off("click"); } if(full_playlist != undefined && !already_offline){ for(var x = 0; x < full_playlist.length; x++){ @@ -589,14 +603,17 @@ function change_offline(enabled, already_offline){ List.populate_list(full_playlist); } } else { - if(list_html){ - list_html = $("
    " + list_html + "
    "); - list_html = list_html.html(); - } + /*if(list_html == undefined){ + var tempOuter = document.createElement("div"); + list_html.innerHTML = list_html; + //list_html.find(".list-remove").removeClass("hide"); + list_html = list_html.innerHTML; + }*/ + if(!Admin.logged_in) Helper.addClass(".delete-context-menu", "context-menu-disabled"); Helper.removeClass(".margin-playbar", "margin-playbar"); Helper.addClass("#playpause", "margin-playbar"); Helper.removeClass("#viewers", "hide"); - Helper.addClass(".prev.playbar", "hide"); + Helper.addClass(".prev playbar", "hide"); Helper.addClass("#offline-mode", "waves-cyan"); Helper.removeClass("#offline-mode", "cyan"); if(!Helper.mobilecheck()) { @@ -607,14 +624,14 @@ function change_offline(enabled, already_offline){ }); } - $("#controls").off("mouseleave"); - $("#controls").off("mouseenter"); - $("#controls").off("mousedown"); - $("#controls").off("mouseup"); - $("#controls").off("mousemove", Channel.seekToMove); - $("#controls").off("click", Channel.seekToClick); - Helper.removeElement("#seekToDuration"); if(window.location.pathname != "/"){ + document.getElementById("controls").removeEventListener("mouseenter", mouseEnter, false); + document.getElementById("controls").removeEventListener("mouseleave", mouseLeave, false); + document.getElementById("controls").removeEventListener("mousedown", mouseDown, false); + document.getElementById("controls").removeEventListener("mouseup", mouseUp, false); + document.getElementById("controls").removeEventListener("mousemove", Channel.seekToMove); + document.getElementById("controls").removeEventListener("click", Channel.seekToClick); + Helper.removeElement("#seekToDuration"); socket.on("color", Player.setBGimage); socket.emit("pos", {channel: chan.toLowerCase()}); var add = ""; @@ -626,20 +643,27 @@ function change_offline(enabled, already_offline){ } function handleEvent(e, target, tried, type) { - if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { - dynamicListeners[type]["#" + target.id].call(target); - return; - } else { - 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; + //console.log(target, dynamicListeners); + //console.log(e.path, target); + console.log(target); + for(var y = 0; y < e.path.length; y++) { + var target = e.path[y]; + if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { + //console.log(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]]) { + //console.log(target.id); + dynamicListeners[type]["." + target.classList[i]].call(target); + return; + } } } } - if(!tried) { - handleEvent(e, e.target.parentElement, true, type); - } + } function addListener(type, element, callback) { @@ -843,25 +867,25 @@ function before_toast(){ } function scrollChat() { - var current = $(".chat-tab active").attr("href"); + var current = document.querySelector(".chat-tab active").getAttribute("href"); if(current == "#channelchat") { - $('#chatchannel').scrollTop($('#chatchannel')[0].scrollHeight); + document.querySelector('#chatchannel').scrollTop(document.querySelector('#chatchannel').scrollHeight); } else if(current == "#all_chat") { - $('#chatall').scrollTop($('#chatall')[0].scrollHeight); + document.querySelector('#chatall').scrollTop(document.querySelector('#chatall').scrollHeight); } } function searchTimeout(event) { - search_input = $(".search_input").val(); + search_input = document.getElementsByClassName("search_input")[0].value; code = event.keyCode || event.which; if (code != 40 && code != 38 && code != 13 && code != 39 && code != 37 && code != 17 && code != 16 && code != 225 && code != 18 && code != 27) { clearTimeout(timeout_search); if(search_input.length < 3){ - $("#results").html(""); + document.querySelector("#results").innerHTML = ""; if(search_input.length == 0) { - $("body").attr("style", "overflow-y: auto"); + document.querySelector("body").setAttribute("style", "overflow-y: auto"); } } if(code == 13){ diff --git a/server/public/assets/js/helpers.js b/server/public/assets/js/helpers.js index 3b91fc69..966c32ca 100755 --- a/server/public/assets/js/helpers.js +++ b/server/public/assets/js/helpers.js @@ -63,6 +63,19 @@ var Helper = { css: function(element, attribute, value) { try { + if(typeof(element) == "object") { + try { + if(element.length > 0) { + for(var i = 0; i < element.length; i++) { + element[i].style[attribute] = value; + } + } else { + element.style[attribute] = value; + } + } catch(e) { + element.style[attribute] = value; + } + } if(typeof(element) == "object") { element.style[attribute] = value; } else if(element.substring(0,1) == "#") { @@ -232,66 +245,79 @@ var Helper = { }, addClass: function(element, className) { - if(typeof(element) == "object") { - if(element.className.indexOf(className) == -1) { - element.className += " " + className; - } - } else if(element.substring(0,1) == "#") { - var elem = document.getElementById(element.substring(1)); - if(elem.className.indexOf(className) == -1) { - elem.className += " " + className; - } - } else { - var elements; - if(element.substring(0,1) == ".") { - var testSplit = element.substring(1).split(" "); - if(testSplit.length > 1) { - var insideElement = document.getElementsByClassName(testSplit[0]); - elements = []; - for(var i = 0; i < insideElement.length; i++) { - var innards = insideElement[i].querySelectorAll(testSplit[1]); - for(var y = 0; y < innards.length; y++) { - elements.push(innards[y]); + try { + if(typeof(element) == "object") { + try { + if(element.length > 0) { + for(var i = 0; i < element.length; i++) { + if(element[i].className.indexOf(className) == -1) { + element[i].className += " " + className; + } + } + } else { + if(element.className.indexOf(className) == -1) { + element.className += " " + className; } } - } else { - elements = document.getElementsByClassName(element.substring(1)); + } catch(e) { + console.log(element); + if(element.className.indexOf(className) == -1) { + element.className += " " + className; + } + } + } else if(element.substring(0,1) == "#") { + var elem = document.getElementById(element.substring(1)); + if(elem.className.indexOf(className) == -1) { + elem.className += " " + className; } } else { - elements = document.getElementsByTagName(element); - } - for(var i = 0; i < elements.length; i++) { - if(elements[i].className.indexOf(className) == -1) { - elements[i].className += " " + className; + var elements; + if(element.substring(0,1) == ".") { + elements = document.getElementsByClassName(element.substring(1)); + } else { + elements = document.getElementsByTagName(element); + } + for(var i = 0; i < elements.length; i++) { + if(elements[i].className.indexOf(className) == -1) { + elements[i].className += " " + className; + } } } - } + }catch(e) {} }, ajax: function(obj) { var _async = true; if(obj.async) _async = obj.async; + if(obj.method == undefined && obj.type != undefined) obj.method = obj.type; if(obj.method == undefined) obj.method = "GET"; var xmlhttp = new XMLHttpRequest(); - if(obj.headers) { - for(header in obj.headers) { - xmlhttp.setRequestHeader(header, obj.headers[header]); - } - } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == XMLHttpRequest.DONE) { // XMLHttpRequest.DONE == 4 if (xmlhttp.status == 200) { obj.success(xmlhttp.responseText, xmlhttp); } - else { + else if(obj.hasOwnProperty("error")){ obj.error(xmlhttp); } } }; xmlhttp.open(obj.method, obj.url, _async); + if(obj.headers) { + for(header in obj.headers) { + xmlhttp.setRequestHeader(header, obj.headers[header]); + } + } if(obj.data) { + var sendRequest = ""; + if(typeof(obj.data) == "string") JSON.parse(obj.data); + for(key in obj.data) { + sendRequest += key + "=" + obj.data[key] + "&"; + } + sendRequest = sendRequest.substring(0, sendRequest.length - 1); if(typeof(obj.data) == "object") obj.data = JSON.stringify(obj.data); + //xmlhttp.send(sendRequest); xmlhttp.send(obj.data); } else xmlhttp.send(); @@ -559,10 +585,10 @@ var Helper = { url: "/api/mail", success: function(data){ if(data == "success"){ - $("#contact-container").empty(); + Helper.setHtml("#contact-container", ""); Helper.setHtml("#contact-container", "Mail has been sent, we'll be back with you shortly.") }else{ - $("#contact-container").empty(); + Helper.setHtml("#contact-container", ""); Helper.setHtml("#contact-container", "Something went wrong, sorry about that. You could instead try with your own mail-client: contact@zoff.me") } } diff --git a/server/public/assets/js/hostcontroller.js b/server/public/assets/js/hostcontroller.js index 61b70444..c1b18cc3 100755 --- a/server/public/assets/js/hostcontroller.js +++ b/server/public/assets/js/hostcontroller.js @@ -21,9 +21,9 @@ var Hostcontroller = { } } var codeURL = window.location.protocol + "//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); + document.querySelector("#code-text").innerText = id; + document.querySelector("#code-qr").setAttribute("src", "https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+codeURL); + document.querySelector("#code-link").setAttribute("href", codeURL); if(!began) { began = true; setup_host_listener(id); @@ -42,7 +42,7 @@ var Hostcontroller = { Admin.beginning = true; chan = arr.value.toLowerCase(); - $("#chan").html(Helper.upperFirst(chan)); + Helper.setHtml("#chan", Helper.upperFirst(chan)); w_p = true; var add = ""; @@ -62,6 +62,6 @@ var Hostcontroller = { change_enabled:function(val){ enabled = val; - $(".remote_switch_class").prop("checked", enabled); + document.querySelector(".remote_switch_class").checked = enabled; } }; diff --git a/server/public/assets/js/list.js b/server/public/assets/js/list.js index 82004d8a..5c357801 100755 --- a/server/public/assets/js/list.js +++ b/server/public/assets/js/list.js @@ -2,8 +2,8 @@ var List = { empty: false, page: 0, - can_fit: Math.round(($("#wrapper").height()) / 71), - element_height: (($("#wrapper").height()) / Math.round(($("#wrapper").height()) / 71)) - 25, + can_fit: document.querySelectorAll("#wrapper").length > 0 ? Math.round((window.getComputedStyle(document.querySelector("#wrapper"), null).getPropertyValue("height")) / 71) : 0, + element_height: document.querySelectorAll("#wrapper").length > 0 ? ((window.getComputedStyle(document.querySelector("#wrapper"), null).getPropertyValue("height")) / Math.round((window.getComputedStyle(document.querySelector("#wrapper"), null).getPropertyValue("height")) / 71)) - 25 : 0, uris: [], not_found: [], num_songs: 0, @@ -83,13 +83,13 @@ var List = { changedValues: function(song) { if(song.type == "suggested") { - $("#suggested-" + song.id).find(".vote-container").attr("title", song.title); - $("#suggested-" + song.id).find(".list-title").attr("title", song.title); - $("#suggested-" + song.id).find(".list-title").text(song.title); + document.querySelector("#suggested-" + song.id).querySelector(".vote-container").setAttribute("title", song.title); + document.querySelector("#suggested-" + song.id).querySelector(".list-title").setAttribute("title", song.title); + document.querySelector("#suggested-" + song.id).querySelector(".list-title").innerText = song.title; var _temp_duration = Helper.secondsToOther(song.duration); - $("#suggested-" + song.id).find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1])); - $("#suggested-" + song.id).find(".list-image").attr("style", "background-image:url('//img.youtube.com/vi/"+song.new_id+"/mqdefault.jpg');"); - $("#suggested-" + song.id).attr("id", song.new_id); + document.querySelector("#suggested-" + song.id).querySelector(".card-duration").innerText = Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]); + document.querySelector("#suggested-" + song.id).querySelector(".list-image").setAttribute("style", "background-image:url('//img.youtube.com/vi/"+song.new_id+"/mqdefault.jpg');"); + document.querySelector("#suggested-" + song.id).setAttribute("id", song.new_id); return; } var i = List.getIndexOfSong(song.id); @@ -100,20 +100,20 @@ var List = { full_playlist[i].end = song.end; full_playlist[i].id = song.new_id; - $("#" + song.id).find(".vote-container").attr("title", song.title); - $("#" + song.id).find(".list-title").attr("title", song.title); - $("#" + song.id).find(".list-title").text(song.title); + document.querySelector("#" + song.id).querySelector(".vote-container").setAttribute("title", song.title); + document.querySelector("#" + song.id).querySelector(".list-title").setAttribute("title", song.title); + document.querySelector("#" + song.id).querySelector(".list-title").innerText = song.title; var _temp_duration = Helper.secondsToOther(song.duration); - $("#" + song.id).find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1])); - $("#" + song.id).find(".list-image").attr("style", "background-image:url('//img.youtube.com/vi/"+song.new_id+"/mqdefault.jpg');"); - $("#" + song.id).attr("id", song.new_id); + document.querySelector("#" + song.id).querySelector(".card-duration").innerText = Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]); + document.querySelector("#" + song.id).querySelector(".list-image").setAttribute("style", "background-image:url('//img.youtube.com/vi/"+song.new_id+"/mqdefault.jpg');"); + document.querySelector("#" + song.id).setAttribute("id", song.new_id); } }, insertAtBeginning: function(song_info, transition) { var display = List.page == 0 ? "" : "none"; var add = List.generateSong(song_info, transition, false, true, false, display, false); - $("#wrapper").append(add); + document.querySelector("#wrapper").insertAdjacentHTML("beforeend", add); }, insertAtIndex: function(song_info, transition, change) { @@ -123,21 +123,21 @@ var List = { if(i >= List.page && i < List.page + (List.can_fit)) display = "inline-flex" var add = List.generateSong(song_info, transition, false, true, false, display, false); if(i === 0) { - $("#wrapper").prepend(add); + document.querySelector("#wrapper").insertAdjacentHTML("afterbegin", add); } else { - $("#wrapper > div:nth-child(" + (i) + ")").after(add); + document.querySelector("#wrapper > div:nth-child(" + (i) + ")").insertAdjacentHTML("afterend", add); } - var added = $("#wrapper").children()[i]; + var added = document.querySelector("#wrapper").children[i]; Helper.css(added, "display", display); - if(display == "inline-flex" && $("#wrapper").children().length >= List.page + List.can_fit + 1){ - $($("#wrapper").children()[List.page + List.can_fit]).css("display", "none"); - } else if(i < List.page && $("#wrapper").children().length - (List.page + 1) >= 0){ - $($("#wrapper").children()[List.page]).css("display", "inline-flex"); - } else if($("#wrapper").children().length > List.page + List.can_fit){ - $($("#wrapper").children()[List.page + List.can_fit - 1]).css("display", "inline-flex"); + if(display == "inline-flex" && document.querySelector("#wrapper").children.length >= List.page + List.can_fit + 1){ + Helper.css(document.querySelector("#wrapper").children[List.page + List.can_fit], "display", "none"); + } else if(i < List.page && document.querySelector("#wrapper").children.length - (List.page + 1) >= 0){ + Helper.css(document.querySelector("#wrapper").children[List.page], "display", "inline-flex"); + } else if(document.querySelector("#wrapper").children.length > List.page + List.can_fit){ + Helper.css(document.querySelector("#wrapper").children[List.page + List.can_fit - 1], "display", "inline-flex"); } if(change && List.page > 0){ - $($("#wrapper").children()[List.page - 1]).css("display", "none"); + Helper.css(document.querySelector("#wrapper").children[List.page - 1], "display", "none"); } if(transition){ setTimeout(function(){ @@ -153,23 +153,23 @@ var List = { populate_list: function(msg, no_reset) { // This math is fucked and I don't know how it works. Should be fixed sometime if(!Helper.mobilecheck() && !embed && !client){ - List.can_fit = Math.round(($("#wrapper").height()) / 71)+1; - List.element_height = (($("#wrapper").height()) / List.can_fit)-5.3; + List.can_fit = Math.round((document.querySelector("#wrapper").offsetHeight) / 71); + List.element_height = ((document.querySelector("#wrapper").offsetHeight) / List.can_fit)-5.3; } else if(embed) { - List.can_fit = Math.round(($("#wrapper").height()) / 91) + 1; - List.element_height = (($("#wrapper").height()) / List.can_fit)-4; + List.can_fit = Math.round((document.querySelector("#wrapper").offsetHeight) / 91) + 1; + List.element_height = ((document.querySelector("#wrapper").offsetHeight) / List.can_fit)-4; } else if(!client){ - List.can_fit = Math.round(($(window).height() - $(".tabs").height() - $("header").height() - 64 - 40) / 71)+1; - List.element_height = (($(window).height() - $(".tabs").height() - $("header").height() - 64 - 40) / List.can_fit)-5; + List.can_fit = Math.round((window.innerHeight - window.getComputedStyle(document.querySelector(".tabs"), null).getPropertyValue("height") - window.getComputedStyle(document.querySelector("header"), null).getPropertyValue("height") - 64 - 40) / 71)+1; + List.element_height = ((window.innerHeight - window.getComputedStyle(document.querySelector(".tabs"), null).getPropertyValue("height") - window.getComputedStyle(document.querySelector("header"), null).getPropertyValue("height") - 64 - 40) / List.can_fit)-5; } else { - List.can_fit = Math.round(($(window).height() - $("header").height() - $("#pageButtons").height()) / 80)+1; - List.element_height = (($(window).height() - $("header").height() - $("#pageButtons").height()) / List.can_fit) - 8; + List.can_fit = Math.round((window.innerHeight - window.getComputedStyle(document.querySelector("header"), null).getPropertyValue("height") - window.getComputedStyle(document.querySelector(".pageButtons"), null).getPropertyValue("height")) / 80)+1; + List.element_height = ((window.innerHeight - window.getComputedStyle(document.querySelector("header"), null).getPropertyValue("height") - window.getComputedStyle(document.querySelector(".pageButtons"), null).getPropertyValue("height")) / List.can_fit) - 8; } if(List.element_height < 55.2 && !client){ List.can_fit = List.can_fit - 1; List.element_height = 55.2; - List.can_fit = Math.round(($(window).height() - $(".tabs").height() - $("header").height() - 64 - 40) / 71); - List.element_height = (($(window).height() - $(".tabs").height() - $("header").height() - 64 - 40) / List.can_fit)-5; + List.can_fit = Math.round((window.innerHeight - window.getComputedStyle(document.querySelector(".tabs"), null).getPropertyValue("height") - window.getComputedStyle(document.querySelector("header"), null).getPropertyValue("height") - 64 - 40) / 71); + List.element_height = ((window.innerHeight - window.getComputedStyle(document.querySelector(".tabs"), null).getPropertyValue("height") - window.getComputedStyle(document.querySelector("header"), null).getPropertyValue("height") - 64 - 40) / List.can_fit)-5; } if(list_html === undefined) list_html = Helper.html("#list-song-html"); full_playlist = msg; @@ -180,7 +180,7 @@ var List = { } List.sortList(); - $("#wrapper").empty(); + Helper.setHtml("#wrapper", ""); Helper.log([ "FULL PLAYLIST", @@ -192,16 +192,16 @@ var List = { if(!_current_song.hasOwnProperty("start")) full_playlist[j].start = 0; if(!_current_song.hasOwnProperty("end")) full_playlist[j].end = full_playlist[j].duration; if(!_current_song.now_playing && _current_song.type != "suggested"){ //check that the song isnt playing - var generated = List.generateSong(_current_song, false, lazy_load, true, false, "", true) - $("#wrapper").append(generated); + var generated = List.generateSong(_current_song, false, lazy_load, true, false, "inline-flex", true) + document.querySelector("#wrapper").insertAdjacentHTML("beforeend", generated); } } - if($("#wrapper").children().length > List.can_fit && !$("#pageButtons").length){ + if(document.querySelector("#wrapper").children.length > List.can_fit && !document.querySelectorAll("#pageButtons").length){ Helper.css(".prev_page", "display", "none"); Helper.css(".first_page", "display", "none"); Helper.css(".next_page_hide", "display","none"); Helper.css(".last_page_hide", "display","none"); - } else if(!$("#pageButtons").length){ + } else if(!document.querySelectorAll("#pageButtons").length){ Helper.css(".prev_page", "display", "none"); Helper.css(".next_page", "display", "none"); Helper.css(".last_page", "display", "none"); @@ -267,17 +267,17 @@ var List = { dynamicContentPageJumpTo: function(page) { page = page * List.can_fit; if(page > List.page || page < List.page){ - $("#wrapper").children().slice(List.page, List.page + List.can_fit).hide(); + Helper.css(document.querySelector("#wrapper").children.slice(List.page, List.page + List.can_fit), "display", "none"); List.page = page; - $("#wrapper").children().slice(List.page, List.page + List.can_fit).css("display", "inline-flex"); - if(List.page > 0 && $(".prev_page").css("display") == "none"){ + Helper.css(document.querySelector("#wrapper").children.slice(List.page, List.page + List.can_fit), "display", "inline-flex"); + if(List.page > 0 && document.querySelector(".prev_page").style.display == "none"){ Helper.css(".prev_page", "display", "inline-flex"); Helper.css(".prev_page_hide", "display", "none"); Helper.css(".first_page", "display", "inline-flex"); Helper.css(".first_page_hide", "display", "none"); } - if(List.page + List.can_fit >= $("#wrapper").children().length){ + if(List.page + List.can_fit >= document.querySelector("#wrapper").children.length){ Helper.css(".next_page_hide", "display", "inline-flex"); Helper.css(".next_page", "display", "none"); Helper.css(".last_page_hide", "display", "inline-flex"); @@ -289,89 +289,60 @@ var List = { }, dynamicContentPage: function(way) { - if(way == 1){ - $("#wrapper").children().slice(List.page, List.page + List.can_fit).hide(); - List.page = List.page + List.can_fit; - $("#wrapper").children().slice(List.page, List.page + List.can_fit).css("display", "inline-flex"); - if(List.page > 0 && $(".prev_page").css("display") == "none"){ + var wrapperChildren = [].slice.call(document.querySelector("#wrapper").children); + if(way == 1 || way == 10) { + Helper.css(wrapperChildren.slice(List.page, List.page + List.can_fit), "display", "none"); + if(way == 1){ + List.page = List.page + List.can_fit; + } else if(way == 10) { + List.page = (Math.floor((document.querySelector("#wrapper").children.length - 1)/ List.can_fit) * List.can_fit); + + } + Helper.css(wrapperChildren.slice(List.page, List.page + List.can_fit), "display", "inline-flex"); + + if(List.page > 0 && document.querySelector(".prev_page").style.display == "none"){ Helper.css(".prev_page", "display", "inline-flex"); Helper.css(".prev_page_hide", "display", "none"); Helper.css(".first_page", "display", "inline-flex"); Helper.css(".first_page_hide", "display", "none"); } - - if(List.page + List.can_fit >= $("#wrapper").children().length){ + if(List.page + List.can_fit >= document.querySelector("#wrapper").children.length){ Helper.css(".next_page_hide", "display", "inline-flex"); Helper.css(".next_page", "display", "none"); Helper.css(".last_page_hide", "display", "inline-flex"); Helper.css(".last_page", "display", "none"); } - //$("#wrapper").scrollTop(0); - } else if(way == 10) { - $("#wrapper").children().slice(List.page, List.page + List.can_fit).hide(); - List.page = (Math.floor(($("#wrapper").children().length - 1)/ List.can_fit) * List.can_fit); - $("#wrapper").children().slice(List.page, List.page + List.can_fit).css("display", "inline-flex"); - - if(List.page > 0 && $(".prev_page").css("display") == "none"){ - Helper.css(".prev_page", "display", "inline-flex"); - Helper.css(".prev_page_hide", "display", "none"); - Helper.css(".first_page", "display", "inline-flex"); - Helper.css(".first_page_hide", "display", "none"); - } - if(List.page + List.can_fit >= $("#wrapper").children().length){ - Helper.css(".next_page_hide", "display", "inline-flex"); - Helper.css(".next_page", "display", "none"); - Helper.css(".last_page_hide", "display", "inline-flex"); - Helper.css(".last_page", "display", "none"); - } - } else if(way==-10) { - $("#wrapper").children().slice(List.page, List.page + List.can_fit).hide(); - List.page = 0; - $("#wrapper").children().slice(List.page, List.page + List.can_fit).css("display", "inline-flex"); - if(List.page == 0 && $(".prev_page").css("display") != "none"){ - Helper.css(".prev_page", "display", "none"); - Helper.css(".prev_page_hide", "display", "inline-flex"); - Helper.css(".first_page", "display", "none"); - Helper.css(".first_page_hide", "display", "inline-flex"); - } else if($(".prev_page").css("display") == "none"){ - Helper.css(".prev_page_hide", "display", "inline-flex"); - Helper.css(".first_page_hide", "display", "inline-flex"); - } else { - Helper.css(".prev_page_hide", "display", "none"); - Helper.css(".first_page_hide", "display", "none"); - } - if(List.page + List.can_fit < $("#wrapper").children().length){ - Helper.css(".next_page_hide", "display", "none"); - Helper.css(".next_page", "display", "inline-flex"); - Helper.css(".last_page_hide", "display", "none"); - Helper.css(".last_page", "display", "inline-flex"); - } } else { - $("#wrapper").children().slice(List.page - List.can_fit, List.page).css("display", "inline-flex"); - $("#wrapper").children().slice(List.page, List.page + List.can_fit).hide(); - List.page = List.page - List.can_fit < 0 ? 0 : List.page - List.can_fit; - if(List.page == 0 && $(".prev_page").css("display") != "none"){ + if(way==-10) { + Helper.css(wrapperChildren.slice(List.page, List.page + List.can_fit), "display", "none"); + List.page = 0; + //console.log(List.page, List.can_fit, wrapperChildren.slice(List.page, List.page + List.can_fit)); + Helper.css(wrapperChildren.slice(List.page, List.page + List.can_fit), "display", "inline-flex"); + } else { + Helper.css(wrapperChildren.slice(List.page - List.can_fit, List.page), "display", "inline-flex"); + Helper.addClass(wrapperChildren.slice(List.page, List.page + List.can_fit), "hide"); + List.page = List.page - List.can_fit < 0 ? 0 : List.page - List.can_fit; + } + if(List.page == 0 && document.querySelector(".prev_page").style.display != "none"){ Helper.css(".prev_page", "display", "none"); Helper.css(".prev_page_hide", "display", "inline-flex"); Helper.css(".first_page", "display", "none"); Helper.css(".first_page_hide", "display", "inline-flex"); - } else if($(".prev_page").css("display") == "none"){ + } else if(document.querySelector(".prev_page").style.display == "none"){ Helper.css(".prev_page_hide", "display", "inline-flex"); Helper.css(".first_page_hide", "display", "inline-flex"); } else { Helper.css(".prev_page_hide", "display", "none"); Helper.css(".first_page_hide", "display", "none"); } - - if(List.page + List.can_fit < $("#wrapper").children().length){ + if(List.page + List.can_fit < document.querySelector("#wrapper").children.length){ Helper.css(".next_page_hide", "display", "none"); Helper.css(".next_page", "display", "inline-flex"); Helper.css(".last_page_hide", "display", "none"); Helper.css(".last_page", "display", "inline-flex"); } - } - $("#pageNumber").html((List.page / List.can_fit) + 1); + document.querySelector("#pageNumber").innerText = (List.page / List.can_fit) + 1; }, added_song: function(added) { @@ -386,26 +357,28 @@ var List = { full_playlist.push(now_playing); } - if($("#suggested-"+added.id).length > 0) { + if(document.querySelectorAll("#suggested-"+added.id).length > 0) { number_suggested = number_suggested - 1; if(number_suggested < 0) number_suggested = 0; var to_display = number_suggested > 9 ? "9+" : number_suggested; if(to_display == 0){ - Helper.addClass(".suggested-link span badge new white", "hide"); + Helper.addClass(document.querySelector(".suggested-link span.badge.new.white"), "hide"); } - $(".suggested-link span.badge.new.white").text(to_display); + document.querySelector(".suggested-link span.badge.new.white").innerText = to_display; } Helper.removeElement("#suggested-"+added.id); if(List.empty){ List.empty = false; } - $("#empty-channel-message").remove(); + if(document.querySelectorAll("#empty-channel-message").length > 0) { + document.querySelector("#empty-channel-message").remove(); + } List.insertAtIndex(added, true); - $($("#wrapper").children()[List.page + List.can_fit]).css("display", "none"); - if($("#wrapper").children().length > List.page + List.can_fit){ + Helper.css(document.querySelector("#wrapper").children[List.page + List.can_fit], "display", "none"); + if(document.querySelector("#wrapper").children.length > List.page + List.can_fit){ Helper.css(".next_page_hide", "display", "none"); Helper.removeClass(".next_page", "hide"); Helper.css(".last_page_hide", "display", "none"); @@ -421,26 +394,27 @@ var List = { deleted_song: function(deleted, removed) { try{ var index = List.getIndexOfSong(deleted); - //var to_delete = $("#wrapper").children()[index]; //if(!removed) to_delete.style.height = 0; - - if(index < List.page && $("#wrapper").children().length - (List.page + 2) >= 0){ - $($("#wrapper").children()[List.page]).css("height", 0); - $($("#wrapper").children()[List.page]).css("display", "inline-flex"); - $($("#wrapper").children()[List.page]).css("height", List.element_height); - } else if($("#wrapper").children().length > List.page + (List.can_fit)){ - $($("#wrapper").children()[List.page + (List.can_fit)]).css("height", 0); - $($("#wrapper").children()[List.page + (List.can_fit)]).css("display", "inline-flex"); - $($("#wrapper").children()[List.page + (List.can_fit)]).css("height", List.element_height); + var nextToChange; + if(index < List.page && document.querySelector("#wrapper").children.length - (List.page + 2) >= 0){ + //Helper.css(document.querySelector("#wrapper").children[List.page], "height", 0 + "px"); + nextToChange = document.querySelector("#wrapper").children[List.page]; + //Helper.css(document.querySelector("#wrapper").children[List.page], "display", "inline-flex"); + //Helper.css(document.querySelector("#wrapper").children[List.page], "height", List.element_height + "px"); + } else if(document.querySelector("#wrapper").children.length > List.page + (List.can_fit)){ + //Helper.css(document.querySelector("#wrapper").children[List.page + (List.can_fit)], "height", 0 + "px"); + nextToChange = document.querySelector("#wrapper").children[List.page + (List.can_fit)]; + //Helper.css(document.querySelector("#wrapper").children[List.page + (List.can_fit)], "display", "inline-flex"); + //Helper.css(document.querySelector("#wrapper").children[List.page + (List.can_fit)], "height", List.element_height + "px"); } - - if(List.page >= $("#wrapper").children().length - 1){ + console.log(List.element_height); + if(List.page >= document.querySelector("#wrapper").children.length - 1){ List.dynamicContentPage(-1); Helper.css(".next_page_hide", "display", "inline-flex"); Helper.css(".next_page", "display", "none"); Helper.css(".last_page_hide", "display", "inline-flex"); Helper.css(".last_page", "display", "none"); - } else if(List.page + List.can_fit + 1 >= $("#wrapper").children().length - 1){ + } else if(List.page + List.can_fit + 1 >= document.querySelector("#wrapper").children.length - 1){ Helper.css(".next_page_hide", "display", "inline-flex"); Helper.css(".next_page", "display", "none"); Helper.css(".last_page_hide", "display", "inline-flex"); @@ -449,16 +423,27 @@ var List = { if(List.page <= index && List.page - List.can_fit <= index) { Helper.addClass("#" + deleted, "side_away"); - $("#" + deleted).find(".mobile-delete").remove(); + + //document.getElementById(deleted).querySelector(".mobile-delete").remove(); Helper.css("#" + deleted, "transform", "translateX(-100%)"); setTimeout(function() { Helper.removeElement("#" + deleted); - + /*var wrapperChildren = [].slice.call(document.querySelector("#wrapper").children); + if(wrapperChildren.length > List.can_fit) { + Helper.css(wrapperChildren[List.can_fit], "display", "inline-flex"); + }*/ + if(nextToChange != undefined) { + Helper.css(nextToChange, "display", "inline-flex"); + Helper.css(nextToChange, "height", List.element_height + "px"); + } }, 300); } else { Helper.removeElement("#"+deleted); + if(nextToChange != undefined) { + Helper.css(nextToChange, "display", "inline-flex"); + Helper.css(nextToChange, "height", List.element_height + "px"); + } } - //$("#"+deleted).remove(); full_playlist.splice(List.getIndexOfSong(deleted), 1); Player.sendNext({title: full_playlist[0].title, videoId: full_playlist[0].id}); //} @@ -466,11 +451,17 @@ var List = { } catch(err) { full_playlist.splice(List.getIndexOfSong(deleted), 1); if(!List.empty){ - $("#"+deleted).remove(); - if(index < List.page && $("#wrapper").children().length - (List.page + 1) >= 0){ - $($("#wrapper").children()[List.page - 1]).css("display", "inline-flex"); - } else if($("#wrapper").children().length > List.page + List.can_fit){ - $($("#wrapper").children()[List.page + (List.can_fit - 1)]).css("display", "inline-flex"); + try { + document.getElementById(deleted).remove(); + }catch(e){} + if(index < List.page && document.querySelector("#wrapper").children.length - (List.page + 1) >= 0){ + //Helper.css(document.querySelector("#wrapper").children[List.page - 1], "display", "inline-flex"); + } else if(document.querySelector("#wrapper").children.length > List.page + List.can_fit){ + //Helper.css(document.querySelector("#wrapper").children[List.page + (List.can_fit - 1)], "display", "inline-flex"); + } + if(nextToChange != undefined) { + Helper.css(nextToChange, "display", "inline-flex"); + Helper.css(nextToChange, "height", List.element_height + "px"); } Player.sendNext({title: full_playlist[0].title, videoId: full_playlist[0].id}); } @@ -480,11 +471,11 @@ var List = { Helper.setHtml("#wrapper", "The playlist is empty."); } Helper.removeElement("#suggested-"+deleted); - if(List.page + List.can_fit < $("#wrapper").children().length + 1){ + if(List.page + List.can_fit < document.querySelector("#wrapper").children.length + 1){ //$(".next_page_hide").css("display", "none"); //$(".next_page").css("display", "flex"); } - if(List.page >= $("#wrapper").children().length){ + if(List.page >= document.querySelector("#wrapper").children.length){ List.dynamicContentPage(-1); } Suggestions.checkUserEmpty(); @@ -511,7 +502,7 @@ var List = { full_playlist.unshift(full_playlist.pop()); full_playlist[full_playlist.length - 1].now_playing = true; - $("#wrapper").children()[$("#wrapper").children().length - 1].remove(); + document.querySelector("#wrapper").children[document.querySelector("#wrapper").children.length - 1].remove(); var length = full_playlist.length - 2; if(length < 0) { @@ -524,7 +515,7 @@ var List = { song_change: function(time, remove) { try{ var length = full_playlist.length - 1; - $("#wrapper").children()[0].remove(); + document.querySelector("#wrapper").children[0].remove(); if(full_playlist.length <= 1) { List.empty = true; Helper.setHtml("#wrapper", "The playlist is empty."); @@ -543,11 +534,15 @@ var List = { "SONG ON FIRST INDEX", full_playlist[0] ]); + full_playlist.push(full_playlist.shift()); if(!remove){ - List.insertAtIndex(full_playlist[$("#wrapper").children().length], false, true); + List.insertAtIndex(full_playlist[document.querySelector("#wrapper").children.length], false, true); } - + /*var wrapperChildren = [].slice.call(document.querySelector("#wrapper").children); + if(wrapperChildren.length > List.can_fit) { + //Helper.css(wrapperChildren[List.can_fit], "display", "inline-flex"); + }*/ } catch(e) {} }, @@ -661,7 +656,7 @@ var List = { track = encodeURIComponent(track); Helper.removeClass(".current_number", "hide"); - $(".current_number").text((current_element + 1) + " of " + (full_playlist.length)); + document.querySelector(".current_number").innerText = (current_element + 1) + " of " + (full_playlist.length); Helper.ajax({ type: "GET", url: "https://api.spotify.com/v1/search?q=" + track + "&type=track", @@ -753,16 +748,16 @@ var List = { List.addToSpotifyPlaylist(List.uris, playlist_id, user_id); Helper.addClass("#playlist_loader_export", "hide"); } - if($(".exported-spotify-list").length == 0) { - $(".exported-list").append("" + chan + ""); + if(document.querySelector(".exported-spotify-list").length == 0) { + document.querySelector(".exported-list").insertAdjacentHTML("beforeend", "" + chan + ""); } for(var i = 0; i < List.not_found.length; i++) { var data = List.not_found[i]; - - var not_added_song = $("
    " + not_export_html + "
    "); - not_added_song.find(".extra-add-text").attr("value", data); - not_added_song.find(".extra-add-text").attr("title", data); - $(".not-exported-container").append(not_added_song.html()); + var not_added_song = document.createElement("div"); + not_added_song.innerHTML = not_export_html; + not_added_song.querySelector(".extra-add-text").setAttribute("value", data); + not_added_song.querySelector(".extra-add-text").setAttribute("title", data); + document.querySelector(".not-exported-container").insertAdjacentHTML("beforeend", not_added_song.innerHTML); } Helper.addClass(".current_number", "hide"); Helper.removeClass(".not-exported", "hide"); @@ -859,14 +854,14 @@ var List = { if(num == full_playlist.length - 1){ Helper.log(["All videoes added!"]); Helper.log(["url: https://www.youtube.com/playlist?list=" + playlist_id]); - $(".exported-list").append("" + chan + ""); + document.querySelector(".exported-list").insertAtBeginning("beforeend", "" + chan + ""); Helper.addClass("#playlist_loader_export", "hide"); Helper.addClass(".current_number", "hide"); //$(".youtube_export_button").removeClass("hide"); } else { //setTimeout(function(){ Helper.removeClass(".current_number", "hide"); - $(".current_number").text((num + 1) + " of " + (full_playlist.length)); + document.querySelector(".current_number").innerText = (num + 1) + " of " + (full_playlist.length); List.addToYoutubePlaylist(playlist_id, full_playlist, num + 1, request_url) //}, 50); } @@ -904,7 +899,9 @@ var List = { var video_votes = _song_info.votes; var video_thumb_url = "//img.youtube.com/vi/"+video_id+"/mqdefault.jpg"; var video_thumb = "background-image:url('" + video_thumb_url + "');"; - var song = $("
    "+list_html+"
    "); + var song = document.createElement("div"); + song.innerHTML = list_html; + song = song.cloneNode(true); var image_attr = "style"; if(_song_info.hasOwnProperty("start") && _song_info.hasOwnProperty("end")) { _song_info.duration = _song_info.end - _song_info.start; @@ -913,37 +910,40 @@ var List = { var del_attr; //song.find(".list-song"); if(transition) { - song.find(".list-song").css("transform", "translateX(100%)"); - song.find(".list-song").addClass("side_away"); + Helper.css(song.querySelector(".list-song"), "transform", "translateX(100%)"); + Helper.addClass(song.querySelector(".list-song"), "side_away"); } - song.find(".list-song").css("height", List.element_height); - if(!w_p) song.find(".card-action").removeClass("hide"); - if(video_votes == 1)song.find(".vote-text").text("vote"); + Helper.css(song.querySelector(".list-song"), "height", List.element_height + "px"); + if(!w_p) Helper.removeClass(song.querySelector(".card-action"), "hide"); + if(video_votes == 1)song.querySelector(".vote-text").innerText = "vote"; if(lazy){ video_thumb = "//img.youtube.com/vi/"+video_id+"/mqdefault.jpg"; image_attr = "data-original"; } + + song.querySelector(".list-image").setAttribute(image_attr,video_thumb); if(list){ - song.find(".list-votes").text(video_votes); - song.find("#list-song").attr("data-video-id", video_id); - song.find("#list-song").attr("data-video-type", "song"); - song.find("#list-song").attr("id", video_id); - song.find(".vote-container").attr("title", video_title); - if((($("#wrapper").children().length >= List.can_fit) && initial) || display == "none"){ - song.find(".card").css("display", "none"); + song.querySelector(".list-votes").innerText = video_votes; + song.querySelector("#list-song").setAttribute("data-video-id", video_id); + song.querySelector("#list-song").setAttribute("data-video-type", "song"); + song.querySelector("#list-song").setAttribute("id", video_id); + song.classList.remove("hide"); + song.querySelector(".vote-container").setAttribute("title", video_title); + if(((document.querySelector("#wrapper").children.length >= List.can_fit) && initial) || display == "none"){ + Helper.css(song.querySelector(".card"), "display", "none"); } attr = ".vote-container"; del_attr = "delete_button"; var _temp_duration = Helper.secondsToOther(_song_info.duration); - song.find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1])); + song.querySelector(".card-duration").innerText = Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]); }else if(!list){ - //song.find(".card-duration").remove(); - //song.find(".list-song").removeClass("playlist-element"); - //song.find(".more_button").addClass("hide"); - song.find(".suggested_remove").removeClass("hide"); - song.find(".vote-text").text(""); - song.find(".card-duration").text(Helper.pad(_song_info.duration[0]) + ":" + Helper.pad(_song_info.duration[1])); + //song.querySelector(".card-duration").remove(); + //song.querySelector(".list-song").removeClass("playlist-element"); + //song.querySelector(".more_button").addClass("hide"); + Helper.removeClass(song.querySelector(".suggested_remove"), "hide"); + song.querySelector(".vote-text").innerText = ""; + song.querySelector(".card-duration").innerText = Helper.pad(_song_info.duration[0]) + ":" + Helper.pad(_song_info.duration[1]); var added_by = "user"; attr = ".add-suggested"; if(user){ @@ -952,48 +952,49 @@ var List = { del_attr = "del_suggested"; added_by = "system"; } - song.find(".vote-container").attr("class", "clickable add-suggested"); - song.find(".add-suggested").attr("title", video_title); - song.find(".delete_button").addClass(del_attr); - song.find(attr).attr("data-video-title", video_title); - song.find(attr).attr("data-video-length", _song_info.length); - song.find(attr).attr("data-added-by", added_by); - song.find("#list-song").attr("data-video-type", "suggested"); - song.find("#list-song").attr("data-video-id", video_id); - song.find("#list-song").css("display", "inline-flex"); - song.find("#list-song").attr("id", "suggested-" + video_id); - song.find(".list-image").attr("class", song.find(".list-image").attr("class").replace("list-image", "list-suggested-image")); - + song.querySelector(".vote-container").setAttribute("class", "clickable add-suggested"); + song.querySelector(".add-suggested").setAttribute("title", video_title); + //Helper.addClass(song.querySelector(".delete_button"), del_attr); + song.querySelector(attr).setAttribute("data-video-title", video_title); + song.querySelector(attr).setAttribute("data-video-length", _song_info.length); + song.querySelector(attr).setAttribute("data-added-by", added_by); + song.querySelector("#list-song").setAttribute("data-video-type", "suggested"); + song.querySelector("#list-song").setAttribute("data-video-id", video_id); + Helper.css(song.querySelector("#list-song"), "display", "inline-flex"); + song.querySelector("#list-song").setAttribute("id", "suggested-" + video_id); + var list_image = song.querySelector(".list-image"); + list_image.classList.remove("list-image"); + list_image.className += " list-suggested-image"; + //song.querySelector(".list-image").setAttribute("class", song.querySelector(".list-image").getAttribute("class").replace("list-image", "list-suggested-image")); } - song.find(".mobile-delete").remove(); - song.find(".list-title").text(video_title); - song.find(".list-title").attr("title", video_title); - song.find(attr).attr("data-video-id", video_id); - song.find(".list-image").attr(image_attr,video_thumb); - song.find(".list-image-placeholder").attr("src", video_thumb_url); - song.find(".list-suggested-image").attr(image_attr,video_thumb); - song.find("."+del_attr).attr("data-video-id", video_id); - return song.html(); + song.querySelector(".mobile-delete").remove(); + song.querySelector(".list-title").innerText = video_title; + song.querySelector(".list-title").setAttribute("title", video_title); + song.querySelector(attr).setAttribute("data-video-id", video_id); + //song.querySelector(".list-image-placeholder").setAttribute("src", video_thumb_url); + if(song.querySelectorAll(".list-suggested-image").length > 0) { + song.querySelector(".list-suggested-image").setAttribute(image_attr,video_thumb); + } + //console.log(del_attr, song.querySelector("."+del_attr)); + //song.querySelector("."+del_attr).setAttribute("data-video-id", video_id); + return song.innerHTML; }, getIndexOfSong: function(id) { try { - indexes = $.map(full_playlist, function(obj, index) { - if(obj.id == id) { - return index; - } - }); + for(var i = 0; i < full_playlist.length; i++) { + if(full_playlist[i].id == id) return i; + } - return indexes[0]; } catch(e) {} }, scrollTop: function() { - $("#wrapper").scrollTop(0); + document.querySelector("#wrapper").scrollTop(0); }, scrollBottom: function(){ - $("#wrapper").scrollTop($("#wrapper")[0].scrollHeight); + document.querySelector("#wrapper").scrollTop(document.querySelector("#wrapper").scrollHeight); } }; diff --git a/server/public/assets/js/listeners.js b/server/public/assets/js/listeners.js index f13f49d4..9b237b37 100755 --- a/server/public/assets/js/listeners.js +++ b/server/public/assets/js/listeners.js @@ -1,5 +1,5 @@ -var chan = window.chan === undefined ? $("#chan").html() : window.chan; -var w_p = true; +var chan = window.chan === undefined && document.querySelectorAll("#chan").length > 0 ? document.querySelector("#chan").innerText : window.chan; +var w_p = true; var domain = window.location.host.split("."); var client = false; if(domain.length > 0 && domain[0] == "client") { @@ -7,8 +7,8 @@ if(domain.length > 0 && domain[0] == "client") { } var dynamicListeners = {}; var socket_connected = false; -var hasadmin = 0; -var list_html = $("#list-song-html").html(); +var hasadmin = 0; +var list_html = document.querySelectorAll("#list-song-html").length > 0 ? document.querySelector("#list-song-html").innerHTML : undefined; var unseen = false; 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)?)?/; @@ -52,7 +52,7 @@ var userpass = ""; var i = -1; var lazy_load = false; var embed = false; -var autoplay = true; +var autoplay = Helper.mobilecheck() ? false : true; var durationBegun = false; var chat_active = false; var chat_unseen = false; @@ -133,20 +133,15 @@ try{ } else { Helper.log('Service Worker is not supported in this browser.'); } -/* + /* navigator.serviceWorker.getRegistration('/').then(function(registration) { - if(registration) { - registration.unregister(); - } - });*/ + if(registration) { + registration.unregister(); +} +});*/ } catch(e) {} -/* -$.ajaxPrefilter(function( options, original_Options, jqXHR ) { - options.async = true; -});*/ - window.zoff = { enable_debug: enable_debug, disable_debug: disable_debug @@ -157,27 +152,26 @@ if(!Helper.mobilecheck() && (window.location.host != "localhost" && window.locat if(e == "Script error.") return true; Helper.logs.unshift({log: e.toString().replace(/(\r\n|\n|\r)/gm,""), date: new Date(), lineno: lineno, colno: colno, source:source}); Helper.logs.unshift({log: chan != "" && chan != undefined ? chan.toLowerCase() : "frontpage", date: new Date()}); - $(".contact-form-content").remove(); - $("#submit-contact-form").remove(); - $(".contact-modal-header").text("An error occurred"); - $(".contact-container-info").remove(); - $(".contact-modal-footer").prepend('Send'); - $("#contact-form").attr("id", "error-report-form"); - $("#contact-container").prepend('

    Do you want to send an error-report?

    \ -

    \ -
    \ - \ -
    '); + document.querySelector(".contact-form-content").remove(); + document.querySelector("#submit-contact-form").remove(); + document.querySelector(".contact-modal-header").innerText = "An error occurred"; + document.querySelector(".contact-container-info").remove(); + document.querySelector(".contact-modal-footer").insertAdjacentHTML("beforeend", 'Send'); + document.querySelector("#contact-form").setAttribute("id", "error-report-form"); + document.querySelector("#contact-container").insertAdjacentHTML("afterbegin", '

    Do you want to send an error-report?

    \ +

    \ +
    \ + \ +
    '); M.Modal.init(document.getElementById("contact")); M.Modal.getInstance(document.getElementById("contact")).open(); - /*$("#error-report-modal").modal();*/ Helper.setHtml("#error-report-code", JSON.stringify(Helper.logs, undefined, 4)); //console.error(e.originalEvent.error); return true; }; } -$().ready(function(){ +window.addEventListener("DOMContentLoaded", function() { if(!localStorage.getItem("VERSION") || parseInt(localStorage.getItem("VERSION")) != VERSION) { localStorage.setItem("VERSION", VERSION); } @@ -202,36 +196,37 @@ $().ready(function(){ socket.emit("offline", {status: true, channel: chan != undefined ? chan.toLowerCase() : ""}); } /*if(chan != undefined && (Crypt.get_pass(chan.toLowerCase()) !== undefined && Crypt.get_pass(chan.toLowerCase()) !== "")){ - emit("password", {password: Crypt.crypt_pass(Crypt.get_pass(chan.toLowerCase())), channel: chan.toLowerCase()}); - }*/ - $(".connect_error").fadeOut(function(){ - $(".connect_error").remove(); - M.toast({ html: "Connected!", displayLength: 2000, classes: "green lighten"}); - }); - } - Chat.namechange("", true, true); - }); - - /*socket.on("name", function(data) { - if(data.type == "name" && data.accepted) { - Crypt.set_name(temp_name, temp_pass); - temp_name = ""; - temp_pass = ""; - } else { - temp_name = ""; - temp_pass = ""; - } + emit("password", {password: Crypt.crypt_pass(Crypt.get_pass(chan.toLowerCase())), channel: chan.toLowerCase()}); + }*/ + /*$(".connect_error").fadeOut(function(){ + $(".connect_error").remove(); + M.toast({ html: "Connected!", displayLength: 2000, classes: "green lighten"}); });*/ - - socket.on("self_ping", function() { - if(chan != undefined && chan.toLowerCase() != "") { - socket.emit("self_ping", {channel: chan.toLowerCase()}); - } - }); - - setup_no_connection_listener(); + before_toast(); + } + Chat.namechange("", true, true); }); +/*socket.on("name", function(data) { +if(data.type == "name" && data.accepted) { +Crypt.set_name(temp_name, temp_pass); +temp_name = ""; +temp_pass = ""; +} else { +temp_name = ""; +temp_pass = ""; +} +});*/ + +socket.on("self_ping", function() { + if(chan != undefined && chan.toLowerCase() != "") { + socket.emit("self_ping", {channel: chan.toLowerCase()}); + } +}); + +setup_no_connection_listener(); +}, false); + initializeCastApi = function() { try { if(cast == undefined) return; @@ -251,60 +246,60 @@ initializeCastApi = function() { ]); switch (event.sessionState) { case cast.framework.SessionState.SESSION_STARTED: - castSession = cast.framework.CastContext.getInstance().getCurrentSession(); - castSession.addMessageListener("urn:x-cast:zoff.me", chromecastListener) - chrome.cast.media.GenericMediaMetadata({metadataType: 0, title:song_title, image: 'https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg', images: ['https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg']}); - //chrome.cast.Image('https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg'); - chromecastAvailable = true; - paused = false; - mobile_beginning = false; - var _seekTo; - try{ - _seekTo = Player.player.getCurrentTime(); - } catch(e){ - _seekTo = seekTo; - } - castSession.sendMessage("urn:x-cast:zoff.me", {type: "loadVideo", start: Player.np.start, end: Player.np.end, videoId: video_id, seekTo: _seekTo, channel: chan.toLowerCase()}) - castSession.sendMessage("urn:x-cast:zoff.me", {type: "nextVideo", videoId: full_playlist[0].id, title: full_playlist[0].title}) + castSession = cast.framework.CastContext.getInstance().getCurrentSession(); + castSession.addMessageListener("urn:x-cast:zoff.me", chromecastListener) + chrome.cast.media.GenericMediaMetadata({metadataType: 0, title:song_title, image: 'https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg', images: ['https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg']}); + //chrome.cast.Image('https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg'); + chromecastAvailable = true; + paused = false; + mobile_beginning = false; + var _seekTo; + try{ + _seekTo = Player.player.getCurrentTime(); + } catch(e){ + _seekTo = seekTo; + } + castSession.sendMessage("urn:x-cast:zoff.me", {type: "loadVideo", start: Player.np.start, end: Player.np.end, videoId: video_id, seekTo: _seekTo, channel: chan.toLowerCase()}) + castSession.sendMessage("urn:x-cast:zoff.me", {type: "nextVideo", videoId: full_playlist[0].id, title: full_playlist[0].title}) - if(Helper.mobilecheck() && !chromecast_specs_sent) { - socket.emit("get_id"); - } - hide_native(1); - if(Helper.mobilecheck()) { - Player.playVideo(); - } - Helper.css("#channel-load", "display", "none"); - Helper.addClass('.castButton', 'castButton-white-active'); - Helper.css("#playpause", "visibility", "visible"); - Helper.css("#playpause", "pointer-events", "all"); - break; + if(Helper.mobilecheck() && !chromecast_specs_sent) { + socket.emit("get_id"); + } + hide_native(1); + if(Helper.mobilecheck()) { + Player.playVideo(); + } + Helper.css("#channel-load", "display", "none"); + Helper.addClass('.castButton', 'castButton-white-active'); + Helper.css("#playpause", "visibility", "visible"); + Helper.css("#playpause", "pointer-events", "all"); + break; case cast.framework.SessionState.SESSION_RESUMED: - castSession = cast.framework.CastContext.getInstance().getCurrentSession(); - castSession.addMessageListener("urn:x-cast:zoff.me", chromecastListener); - chrome.cast.media.GenericMediaMetadata({metadataType: 0, title:song_title, image: 'https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg', images: ['https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg']}); - //chrome.cast.Image('https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg'); - chromecastAvailable = true; - paused = false; - mobile_beginning = false; - var _seekTo; - try{ - _seekTo = Player.player.getCurrentTime(); - } catch(e){ - _seekTo = seekTo; - } - castSession.sendMessage("urn:x-cast:zoff.me", {type: "loadVideo", start: Player.np.start, end: Player.np.end, videoId: video_id, seekTo: _seekTo, channel: chan.toLowerCase()}) - castSession.sendMessage("urn:x-cast:zoff.me", {type: "nextVideo", videoId: full_playlist[0].id, title: full_playlist[0].title}) - hide_native(1); - Helper.css("#channel-load", "display", "none"); - Helper.addClass('.castButton', 'castButton-white-active'); - Helper.css("#playpause", "visibility", "visible"); - Helper.css("#playpause", "pointer-events", "all"); - break; + castSession = cast.framework.CastContext.getInstance().getCurrentSession(); + castSession.addMessageListener("urn:x-cast:zoff.me", chromecastListener); + chrome.cast.media.GenericMediaMetadata({metadataType: 0, title:song_title, image: 'https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg', images: ['https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg']}); + //chrome.cast.Image('https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg'); + chromecastAvailable = true; + paused = false; + mobile_beginning = false; + var _seekTo; + try{ + _seekTo = Player.player.getCurrentTime(); + } catch(e){ + _seekTo = seekTo; + } + castSession.sendMessage("urn:x-cast:zoff.me", {type: "loadVideo", start: Player.np.start, end: Player.np.end, videoId: video_id, seekTo: _seekTo, channel: chan.toLowerCase()}) + castSession.sendMessage("urn:x-cast:zoff.me", {type: "nextVideo", videoId: full_playlist[0].id, title: full_playlist[0].title}) + hide_native(1); + Helper.css("#channel-load", "display", "none"); + Helper.addClass('.castButton', 'castButton-white-active'); + Helper.css("#playpause", "visibility", "visible"); + Helper.css("#playpause", "pointer-events", "all"); + break; case cast.framework.SessionState.SESSION_ENDED: - chromecastAvailable = false; - hide_native(0); - break; + chromecastAvailable = false; + hide_native(0); + break; } }); @@ -320,10 +315,11 @@ initializeCastApi = function() { if((!localStorage.getItem("_chSeen") || localStorage.getItem("_chSeen") != "seen") && !client) { Helper.css(".castButton", "display", "block"); showDiscovery = true; - $('.tap-target').tapTarget(); - $('.tap-target').tapTarget('open'); + var elem = document.querySelector('.tap-target'); + var instance = M.TapTarget.init(elem); + instance.open(); tap_target_timeout = setTimeout(function() { - $('.tap-target').tapTarget('close'); + instance.close(); }, 4000); localStorage.setItem("_chSeen", "seen"); Helper.removeClass('.castButton', 'castButton-white-active'); @@ -373,9 +369,9 @@ addListener("click", "#ethereum-address", function(e) { addListener("click", ".pagination-results a", function(e) { event.preventDefault(); - var that = $(this); - var pageToken = that.attr("data-pagination"); - var searchInput = that.attr("data-original-search"); + var that = this; + var pageToken = that.getAttribute("data-pagination"); + var searchInput = that.getAttribute("data-original-search"); Helper.addClass(".pagination-results a", "disabled"); Search.search(searchInput, false, false, pageToken); @@ -384,7 +380,7 @@ addListener("click", ".pagination-results a", function(e) { addListener("click", "#settings", function(e) { event.preventDefault(); var sidenavElem = document.getElementsByClassName("sidenav")[0]; - if(!M.Sidenav.getInstance($(".sidenav")).isOpen) { + if(!M.Sidenav.getInstance(document.querySelector(".sidenav")).isOpen) { M.Sidenav.getInstance(sidenavElem).open(); } else { M.Sidenav.getInstance(sidenavElem).close(); @@ -397,77 +393,15 @@ addListener("click", ".accept-delete", function(e) { M.Modal.getInstance(document.getElementById("delete_song_alert")).close(); }); -$(document).keyup(function(event) { - if(event.keyCode == 27){ - //$("#results").html(""); - if($("#search-wrapper").length != 0 && !Helper.contains($("#search-wrapper").attr("class").split(" "), "hide")) - $("#search-wrapper").toggleClass("hide"); - if($("#song-title").length != 0 && Helper.contains($("#song-title").attr("class").split(" "), "hide")) - $("#song-title").toggleClass("hide"); - - if($("#search-btn i").html() == "close") - { - $("#results").slideUp({ - complete: function() { - $("#results").empty(); - } - }); - document.getElementsByTagName("body")[0].setAttribute("style", "overflow-y:auto") - $("#search-btn i").html("search"); - $(".search_input").val(""); - } - if($(".search-container").length != 0 && !Helper.contains($(".search-container").attr("class").split(" "), "hide")){ - $("#results").toggleClass("hide"); - } - } else if(event.keyCode == 13 && $("#search").val() == "fireplace" && !$(".search-container").hasClass("hide") && window.location.pathname != "/") { - clearTimeout(timeout_search); - Helper.setHtml("#results", ""); - $("#search").val(""); - if($("#search-wrapper").length != 0 && !Helper.contains($("#search-wrapper").attr("class").split(" "), "hide")) - $("#search-wrapper").toggleClass("hide"); - if($("#song-title").length != 0 && Helper.contains($("#song-title").attr("class").split(" "), "hide")) - $("#song-title").toggleClass("hide"); - - if($("#search-btn i").html() == "close") - { - $("#search-btn i").html("search"); - } - if($(".search-container").length != 0 && !Helper.contains($(".search-container").attr("class").split(" "), "hide")){ - $("#results").toggleClass("hide"); - } - if(fireplace_initiated) { - fireplace_initiated = false; - Player.fireplace.destroy(); - Helper.css("#fireplace_player", "display", "none"); - } else { - fireplace_initiated = true; - Helper.css("#fireplace_player", "display", "block"); - Player.createFireplacePlayer(); - } - } -}); - -$(document).on("mouseenter", ".card.sticky-action", function(e){ - var that = this; - $(that).find(".card-reveal").attr("style", "display: block;"); - clearTimeout(image_timeout); - image_timeout = setTimeout(function(){ - $(that).find(".card-reveal").attr("style", "display: block;transform: translateY(-100%);"); - }, 50); -}); addListener("click", "#chat_submit", function(e){ + console.log(event); event.preventDefault(); - $("#chatForm").submit(); -}); - -$(document).on("mouseleave", ".card.sticky-action", function(e){ - var that = this; - $(that).find(".card-reveal").attr("style", "display: block;transform: translateY(0%);"); - clearTimeout(image_timeout); - image_timeout = setTimeout(function(){ - $(that).find(".card-reveal").attr("style", "display: none;"); - }, 100); + event.stopPropagation(); + Chat.chat(document.getElementById("chatForm").input); + document.getElementById("chat_submit").focus(); + //return true; + //document.getElementById("chatForm").submit(); }); addListener("click", "#offline-mode", function(e){ @@ -481,42 +415,37 @@ addListener("click", "#offline-mode", function(e){ addListener("submit", "#thumbnail_form", function(e){ event.preventDefault(); - emit("suggest_thumbnail", {channel: chan, thumbnail: $("#chan_thumbnail").val()}); - $("#chan_thumbnail").val(""); + emit("suggest_thumbnail", {channel: chan, thumbnail: document.getElementById("chan_thumbnail").value}); + document.getElementById("chan_thumbnail").value = ""; }); addListener("submit", "#description_form", function(e){ event.preventDefault(); - emit("suggest_description", {channel: chan, description: $("#chan_description").val()}); - $("#chan_description").val(""); + emit("suggest_description", {channel: chan, description: document.getElementById("chan_description").value}); + document.getElementById("chan_description").value = ""; }); addListener("click", "#playpause-overlay", function(){ - if($("#play-overlay").hasClass("hide")){ + if(document.getElementById("play-overlay").classList.contains("hide")){ Player.pauseVideo(); - $("#play-overlay").toggleClass("hide"); - $("#pause-overlay").toggleClass("hide"); - } else if($("#pause-overlay").hasClass("hide")){ + Helper.toggleClass("#play-overlay", "hide"); + Helper.toggleClass("#pause-overlay", "hide"); + } else if(document.getElementById("pause-overlay").classList.contains("hide")){ Player.playVideo(); - $("#play-overlay").toggleClass("hide"); - $("#pause-overlay").toggleClass("hide"); + Helper.toggleClass("#play-overlay", "hide"); + Helper.toggleClass("#pause-overlay", "hide"); } }); addListener("click", '#cookieok', function(e) { event.preventDefault(); - $(this).fadeOut(function(){ - $(this).remove(); - localStorage.ok_cookie = true; - }); + M.Toast.getInstance(this.parentElement).dismiss(); + localStorage.ok_cookie = true; }); addListener("click", ".connect_error", function(e){ event.preventDefault(); - $(this).fadeOut(function(){ - $(this).remove(); - connect_error = false; - }); + M.Toast.getInstance(this.parentElement).dismiss(); }); addListener("click", ".extra-button-search", function(e){ @@ -528,8 +457,8 @@ addListener("click", ".extra-button-search", function(e){ addListener("click", ".extra-button-delete", function(e){ event.preventDefault(); this.parentElement.remove(); - if($(".not-imported-container").children().length === 0){ - $(".not-imported").toggleClass("hide"); + if(document.querySelector(".not-imported-container").children.length === 0){ + Helper.toggleClass(".not-imported", "hide"); } }); @@ -578,7 +507,7 @@ addListener("click", ".find-context-menu", function(e) { addListener("click", ".delete-context-menu", function(e) { var that = this; - if(that.classList.indexOf("context-menu-disabled") > -1) { + if(that.classList.contains("context-menu-disabled")) { return; } var parent = that.parentElement; @@ -591,16 +520,16 @@ addListener("click", ".delete-context-menu", function(e) { var to_display = number_suggested > 9 ? "9+" : number_suggested; if(to_display == 0){ - Helper.addClass(".suggested-link span badge new white", "hide"); + Helper.addClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); } - Helper.setHtml(".suggested-link span badge new white", to_display); + Helper.setHtml(document.querySelector(".chat-link span.badge.new.white"), to_display); } List.vote(id, "del"); Helper.addClass(".context-menu-root", "hide"); Helper.addClass("#context-menu-overlay", "hide"); - document.getElementsByClassName("context-menu-root").setAttribute("data-id", ""); + document.getElementsByClassName("context-menu-root")[0].setAttribute("data-id", ""); }) addListener("click", "#closePlayer", function(e){ @@ -624,16 +553,150 @@ addListener("click", "#closePlayer", function(e){ Helper.removeElement("#closePlayer"); }); +document.addEventListener("keydown", function(e) { + 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){ + Helper.toggleClass("#find_div", "hide"); + document.getElementById("find_input").focus(); + find_word = ""; + } else { + Helper.toggleClass("#find_div", "hide"); + document.getElementById("find_input").value = ""; + document.getElementById("find_input").blur(); + Helper.removeClass(".highlight", "highlight"); + found_array = []; + found_array_index = 0; + find_word = ""; + } + } else if(event.keyCode == 32 && document.querySelector(".search-container").classList.contains("hide") && window.location.pathname != "/" && + document.querySelector("#text-chat-input") === document.activeElement && + document.querySelector("#password") === document.activeElement && + document.querySelector("#user-pass-input") === document.activeElement && + document.querySelector("#chan_thumbnail") === document.activeElement && + document.querySelector("#chan_description") === document.activeElement && + document.querySelector("#contact-form-from") === document.activeElement && + document.querySelector("#contact-form-message") === document.activeElement && + document.querySelector("#remote_channel") === document.activeElement && + document.querySelector("#import") === document.activeElement && + document.querySelector("#find_input") === document.activeElement && + document.querySelector("#import_spotify") === document.activeElement) { + if(Player.player.getPlayerState() == 1) { + event.preventDefault(); + Player.player.pauseVideo(); + return false; + } else if(Player.player.getPlayerState() == 2 || Player.player.getPlayerState() == 5) { + event.preventDefault(); + Player.player.playVideo(); + return false; + } + } else { + find_start = false; + } + } +}, false); + +document.addEventListener("keyup", function(e) { + if(event.keyCode == 27 && window.location.path != "/"){ + //$("#results").html(""); + if(document.querySelectorAll("#search-wrapper").length != 0 && !document.querySelector("#search-wrapper").classList.contains("hide")) { + Helper.toggleClass("#search-wrapper", "hide"); + } + if(document.querySelectorAll("#song-title").length != 0 && !document.querySelector("#song-title").classList.contains("hide")){ + Helper.toggleClass("#song-title", "hide"); + } + if(document.querySelector("#search-btn i").innerText == "close") + { + /*$("#results").slideUp({ + complete: function() { + $("#results").empty(); + } + });*/ + document.querySelector("#results").innerHTML = ""; + document.getElementsByTagName("body")[0].setAttribute("style", "overflow-y:auto") + document.querySelector("#search-btn i").innerText = "search"; + document.querySelector(".search_input").value = ""; + } + if(document.querySelectorAll(".search-container").length != 0 && !document.querySelector(".search-container").classList.contains("hide")){ + Helper.toggleClass("#results", "hide"); + } + } else if(event.keyCode == 13 && window.location.path != "/" && document.querySelector("#search").value == "fireplace" && !document.querySelector(".search-container").classList.contains("hide") && window.location.pathname != "/") { + clearTimeout(timeout_search); + Helper.setHtml("#results", ""); + document.querySelector("#search").value = ""; + if(document.querySelectorAll("#search-wrapper").length != 0 && !document.querySelector("#search-wrapper").classList.contains("hide")) { + Helper.toggleClass("#search-wrapper", "hide"); + } + if(document.querySelectorAll("#song-title").length != 0 && !document.querySelector("#song-title").classList.contains("hide")) { + Helper.toggleClass("#song-title", "hide"); + } + if(document.querySelector("#search-btn i").innerText == "close") + { + document.querySelector("#search-btn i").innerText == "search"; + } + if(document.querySelectorAll(".search-container").length != 0 && !document.querySelector(".search-container").classList.contains("hide")){ + Helper.toggleClass("#results", "hide"); + } + if(fireplace_initiated) { + fireplace_initiated = false; + Player.fireplace.destroy(); + Helper.css("#fireplace_player", "display", "none"); + } else { + fireplace_initiated = true; + Helper.css("#fireplace_player", "display", "block"); + Player.createFireplacePlayer(); + } + } else if((event.keyCode == 91 || event.keyCode == 17) && !find_started){ + find_start = false; + } + console.log("target = ", event.target); + if(event.target.classList.contains("search_input")) { + console.log("To search"); + searchTimeout(event); + } +}, false); document.addEventListener("click", function(e) { handleEvent(e, e.target, false, "click"); -}, false); +}, true); + +document.addEventListener("mouseleave", function(e) { + if(event.target.className == "card sticky-action") { + var that = event.target; + that.querySelector(".card-reveal").setAttribute("style", "display: block;transform: translateY(0%);"); + clearTimeout(image_timeout); + image_timeout = setTimeout(function(){ + that.querySelector(".card-reveal").setAttribute("style", "display: none;"); + }, 100); + } +}, true); + +document.addEventListener("mouseenter", function(e) { + if(event.target.className == "card sticky-action") { + var that = event.target; + that.querySelector(".card-reveal").setAttribute("style", "display: block;"); + clearTimeout(image_timeout); + image_timeout = setTimeout(function(){ + that.querySelector(".card-reveal").setAttribute("style", "display: block;transform: translateY(-100%);"); + }, 50); + } +}, true); + +document.addEventListener("contextmenu", function(e) { + handleEvent(e, e.target, false, "contextmenu"); +}, true); document.addEventListener("input", function(e) { handleEvent(e, e.target, false, "input"); }, true); document.addEventListener("change", function(e) { + console.log(e); handleEvent(e, e.target, false, "change"); }, true); @@ -641,8 +704,20 @@ document.addEventListener("submit", function(e) { handleEvent(e, e.target, false, "submit"); }, true); +addListener("change", "#width_embed", function() { + var that = event.target; + embed_width = that.value; + document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); +}); + +addListener("change", "#height_embed", function() { + var that = event.target; + embed_height = that.value; + document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); +}); + addListener("click", ".prev_page", function(e) { -//addListener("click", ".prev_page", function(e){ + //addListener("click", ".prev_page", function(e){ event.preventDefault(); List.dynamicContentPage(-1); }); @@ -769,75 +844,55 @@ addListener("click", "#aprilfools", function(){ addListener("change", '#view_channels_select', function(e) { var that = this; - console.log("test", that.value) if(currently_showing_channels != parseInt(that.value)) { Frontpage.populate_channels(Frontpage.all_channels, (parseInt(that.value) == 1 ? true : false)); } currently_showing_channels = parseInt(that.value); }); -$(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, embed_videoonly)); -}); - -$(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, embed_videoonly)); -}); - addListener("input", '#color_embed', function(){ - var that = $(this); - color = that.val().substring(1); - $("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly)); + var that = this; + color = that.value.substring(1); + document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); }); addListener("click", ".chan-link", function(e){ event.preventDefault(); var href = this.href.replace(window.location.protocol + "//" + window.location.hostname + "/", ""); - console.log(href, e); Frontpage.to_channel(href, false); }); addListener("click", ".listen-button", function(e){ - if($(".room-namer").val() === ""){ + if(document.querySelector(".room-namer").value === ""){ event.preventDefault(); - Frontpage.to_channel($(".room-namer").attr("placeholder")); + Frontpage.to_channel(document.querySelector(".room-namer").getAttribute("placeholder")); } }); addListener("submit", ".channel-finder", function(e){ event.preventDefault(); - Frontpage.to_channel($(".room-namer").val()); + Frontpage.to_channel(document.querySelector(".room-namer").value); return false; }); -addListener("submit", ".channel-finder-mobile", function(e){ - event.preventDefault(); - Frontpage.to_channel($("#searchFrontpage").val()); - return false; -}); - -addListener("change", 'input[class=remote_switch_class]', function() +addListener("change", '.remote_switch_class', function() { Hostcontroller.change_enabled(document.getElementsByName("remote_switch")[0].checked); Crypt.set_remote(enabled); }); -addListener("change", 'input[class=offline_switch_class]', function() +addListener("change", '.offline_switch_class', function() { offline = document.getElementsByName("offline_switch")[0].checked; change_offline(offline, !offline); }); -addListener("change", 'input[class=conf]', function() +addListener("change", '.conf', function() { Admin.save(false); }); -$("#clickme").click(function(){ +addListener("click", "#clickme", function(){ Player.playVideo(); }); @@ -897,8 +952,8 @@ addListener("click", ".export-spotify-auth", function(e){ addListener("submit", "#listImport", function(e){ event.preventDefault(); - var url = $("#import").val().split("https://www.youtube.com/playlist?list="); - if($("#import").val() !== "" && url.length == 2){ + var url = document.getElementById("import").value.split("https://www.youtube.com/playlist?list="); + if(document.getElementById("import").value !== "" && url.length == 2){ Search.importPlaylist(url[1]); document.getElementById("import").value = ""; document.getElementById("import").disabled = true; @@ -915,7 +970,7 @@ addListener("submit", "#listImport", function(e){ addListener("submit", "#listImportZoff", function(e) { event.preventDefault(); - var new_channel = $("#import_zoff").val(); + var new_channel = document.getElementById("import_zoff").value; if(new_channel == "") { M.toast({html: "It seems you've entered a invalid channel-name.", displayLength: 4000}); return; @@ -931,8 +986,8 @@ addListener("click", ".import-zoff", function(e) { addListener("submit", "#listImportSpotify", function(e){ event.preventDefault(); - if(spotify_authenticated && $("#import_spotify").val() !== ""){ - var url = $("#import_spotify").val().split("https://open.spotify.com/user/"); + if(spotify_authenticated && document.getElementById("import_spotify").value !== ""){ + var url = document.getElementById("import_spotify").value.split("https://open.spotify.com/user/"); if(url.length == 2) { url = url[1].split("/"); var user = url[0]; @@ -954,21 +1009,16 @@ addListener("submit", "#listImportSpotify", function(e){ document.getElementById("import_spotify").value = ""; }); -$(window).focus(function(){ - document.getElementById("favicon").setAttribute("href", "/assets/images/favicon.png"); - unseen = false; -}); - addListener("change", "#autoplay", function() { if(this.checked) embed_autoplay = "&autoplay"; else embed_autoplay = ""; - $("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly)); + document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); }); addListener("change", "#videoonly", function() { if(this.checked) embed_videoonly = "&videoonly"; else embed_videoonly = ""; - $("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly)); + document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); }); addListener("click", "#playbutton_remote", function(e) { @@ -992,15 +1042,15 @@ addListener("click", ".skip_next_client", function(e) { addListener("submit", "#remoteform", function(e) { event.preventDefault(); - Mobile_remote.get_input($("#remote_channel").val()); + Mobile_remote.get_input(document.getElementById("remote_channel").value); }); addListener("click", ".chat-link", function(){ - $("#text-chat-input").focus(); - $("#chat-btn i").css("opacity", 1); + document.getElementById("text-chat-input").focus(); + Helper.css(document.querySelector("#chat-btn i"), "opacity", 1); Chat.channel_received = 0; Chat.all_received = 0; - Helper.addClass(".chat-link span badge new white", "hide"); + Helper.addClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); unseen = false; document.getElementById("favicon").setAttribute("href", "/assets/images/favicon.png"); @@ -1011,12 +1061,8 @@ addListener("click", ".chat-tab-li", function() { scrollChat(); }); -$(document).on('keyup', ".search_input", function(event) { - searchTimeout(event); -}); - addListener("click", ".chat-tab", function(){ - $("#text-chat-input").focus(); + document.getElementById("text-chat-input").focus(); }); addListener("click", ".prev", function(e){ @@ -1073,7 +1119,7 @@ addListener("click", ".chat-link", function(e){ Helper.css("#chat-container", "display", "block"); Helper.css("#wrapper", "display", "none"); Helper.css("#suggestions", "display", "none"); - $("#text-chat-input").focus(); + document.getElementById("text-chat-input").focus(); Helper.css("#pageButtons", "display", "none"); }); @@ -1126,7 +1172,9 @@ addListener("click", ".import-youtube", function(e){ addListener("submit", "#chatForm", function(e){ event.preventDefault(); + event.stopPropagation(); Chat.chat(document.getElementById("chatForm").input); + return false; }); addListener("click", "#shuffle", function(e) @@ -1159,39 +1207,45 @@ addListener("click", "#closeSettings", function(e) Admin.hide_settings(); }); -$(window).resize(function(){ +window.addEventListener("focus", function(event) { + document.getElementById("favicon").setAttribute("href", "/assets/images/favicon.png"); + unseen = false; +}); + +window.addEventListener("resize", function(){ if(chan && !Helper.mobilecheck()){ - var temp_fit = Math.round(($("#wrapper").height()) / 71)+1; + var temp_fit = Math.round((window.getComputedStyle(document.querySelector("#wrapper"), null).getPropertyValue("height")) / 71)+1; if(temp_fit > List.can_fit || temp_fit < List.can_fit){ List.dynamicContentPage(-10); } if(List.can_fit < temp_fit){ - $($("#wrapper").children()[List.page + temp_fit - 1]).css("display", "inline-flex"); + Helper.css(document.querySelector("#wrapper").children[List.page + temp_fit - 1], "display", "inline-flex"); } else if(List.can_fit > temp_fit){ - $($("#wrapper").children()[List.page + temp_fit]).css("display", "none"); + Helper.css(document.querySelector("#wrapper").children[List.page + temp_fit], "display", "none"); } List.can_fit = temp_fit; - List.element_height = (($("#wrapper").height()) / List.can_fit)-5.3; + List.element_height = ((window.getComputedStyle(document.querySelector("#wrapper"), null).getPropertyValue("height")) / List.can_fit)-5.3; Helper.css(".list-song", "height", List.element_height + "px"); - //$("#player_overlay").width($("#player").width()+1); Channel.set_title_width(); - if($("#controls").length > 0 && !Helper.mobilecheck()) $("#seekToDuration").css("top", $("#controls").position().top - 55); - else if($("#controls").length > 0) $("#seekToDuration").css("top", $("#controls").position().top - 20); - + var controlsPosition = document.querySelector("#controls").offsetHeight - window.getComputedStyle(document.querySelector("#controls"), null).getPropertyValue("height"); + if(document.querySelectorAll("#controls").length > 0 && !Helper.mobilecheck()) { + Helper.css(document.querySelector("#seekToDuration"), "top", controlsPosition - 55); + } else if(document.querySelectorAll("#controls").length > 0) { + Helper.css(document.querySelector("#seekToDuration"), "top", controlsPosition - 20); + } Channel.window_width_volume_slider(); } }); addListener("click", ".result-object", function(e){ - var $html = $(e.target); - - var substr = $html.prop('outerHTML').substring(0,4); - if(substr != " original_length) { end = original_length; } @@ -1272,10 +1326,11 @@ addListener("submit", "#error-report-form", function(e) { }); addListener("click", "#add-many", function(e){ + event.preventDefault(); + event.stopPropagation(); var id = this.getAttribute("data-video-id"); var title = this.getAttribute("data-video-title"); var original_length = this.getAttribute("data-video-length"); - console.log(id, title, original_length); var parent = this.parentElement.parentElement; var start = parseInt(parent.querySelectorAll(".result-start")[0].value); @@ -1291,7 +1346,7 @@ addListener("click", "#add-many", function(e){ try { var length = parseInt(end) - parseInt(start); this.parentElement.parentElement.parentElement.remove(); - //Search.submit(id, title, length, false, 0, 1, start, end); + Search.submit(id, title, length, false, 0, 1, start, end); } catch(e) { M.toast({html: "Only numbers are accepted as song start and end parameters..", displayLength: 3000, classes: "red lighten"}); } @@ -1300,10 +1355,8 @@ addListener("click", "#add-many", function(e){ }); addListener("click", ".vote-container", function(e){ - if(this.parentElement.classList.indexOf("side_away") == -1) { - var id = this.getAttribute("data-video-id"); - List.vote(id, "pos"); - } + var id = this.getAttribute("data-video-id"); + List.vote(id, "pos"); }); addListener("click", ".delete_button", function(e){ @@ -1322,13 +1375,13 @@ addListener("click", ".add-suggested", function(e){ if(number_suggested < 0) number_suggested = 0; var to_display = number_suggested > 9 ? "9+" : number_suggested; - if(!$(".suggested-link span.badge.new.white").hasClass("hide") && to_display == 0){ - Helper.addClass(".suggested-link span badge new white", "hide"); + if(!document.querySelector(".suggested-link span.badge.new.white").classList.contains("hide") && to_display == 0){ + Helper.addClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); Helper.addClass("#user_suggests", "hide"); Helper.addClass("#suggest_bar", "hide"); } - $(".suggested-link span.badge.new.white").text(to_display); + document.querySelector(".suggested-link span.badge.new.white").innerText = to_display; } Helper.removeElement("#suggested-" + id); }); @@ -1348,18 +1401,17 @@ addListener("click", ".del_user_suggested", function(e){ var to_display = number_suggested > 9 ? "9+" : number_suggested; if(to_display == 0){ - Helper.addClass(".suggested-link span badge new white", "hide"); + Helper.addClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); } - $(".suggested-link span.badge.new.white").text(to_display); + docu.querySelector(".suggested-link span.badge.new.white").innerText = to_display; List.vote(id, "del"); }); addListener("click", '#toast-container', function(){ - $(this).fadeOut(function(){ - $(this).remove(); - }); + var toastInstance = M.Toast.getInstance(this); + toastInstance.dismiss(); }); addListener("click", "#embed-area", function(){ @@ -1384,81 +1436,27 @@ addListener("click", ".generate-channel-name", function(e) { type: "GET", url: "/api/generate_name", success: function(response) { - $(".room_namer").val(""); - $(".room-namer").val(response); + document.getElementsByClassName(".room_namer")[0].value = ""; + document.getElementsByClassName(".room_namer")[0].value = response; } }); ga('send', 'event', "button-click", "generate-channel"); }); -$(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(); - find_word = ""; - } else { - $("#find_div").toggleClass("hide"); - $("#find_input").val(""); - $("#find_input").blur(); - Helper.removeClass(".highlight", "highlight"); - found_array = []; - found_array_index = 0; - find_word = ""; - } - } else if(event.keyCode == 32 && $(".search-container").hasClass("hide") && window.location.pathname != "/" && - !$("#text-chat-input").is(":focus") && - !$("#password").is(":focus") && - !$("#user-pass-input").is(":focus") && - !$("#chan_thumbnail").is(":focus") && - !$("#chan_description").is(":focus") && - !$("#contact-form-from").is(":focus") && - !$("#contact-form-message").is(":focus") && - !$("#remote_channel").is(":focus") && - !$("#import").is(":focus") && - !$("#find_input").is(":focus") && - !$("#import_spotify").is(":focus")) { - if(Player.player.getPlayerState() == 1) { - event.preventDefault(); - Player.player.pauseVideo(); - return false; - } else if(Player.player.getPlayerState() == 2 || Player.player.getPlayerState() == 5) { - event.preventDefault(); - Player.player.playVideo(); - return false; - } - } else { - find_start = false; - } - } -}); - addListener("click", "#close_find_form_button", function(e) { event.preventDefault(); find_start = false; find_started = false; - $("#find_div").toggleClass("hide"); - $("#find_input").val(""); - $("#find_input").blur(); + Helper.toggleClass("#find_div", "hide"); + document.getElementById("find_input").value = ""; + document.getElementById("find_input").blur(); Helper.removeClass(".highlight", "highlight"); found_array = []; found_array_index = 0; find_word = ""; }); -$(document).keyup(function(event){ - if((event.keyCode == 91 || event.keyCode == 17) && !find_started){ - find_start = false; - } -}); - addListener("submit", "#find_form", function(e){ event.preventDefault(); if(this.find_value.value != find_word) { @@ -1469,25 +1467,27 @@ addListener("submit", "#find_form", function(e){ if(found_array.length == 0){ var that = this; found_array_index = 0; - found_array = $.map(full_playlist, function(obj, index) { - if(obj.title.toLowerCase().indexOf(that.find_value.value.toLowerCase()) >= 0 && index != full_playlist.length-1) { - return index; + found_array = []; + for(var i = 0; i < full_playlist.length; i++) { + var obj = full_playlist[i]; + if(obj.title.toLowerCase().indexOf(that.find_value.value.toLowerCase()) >= 0 && i != full_playlist.length-1) { + found_array.push(i); } - }); - $("#num_found").text(found_array_index + 1); - $("#of_total_found").text(found_array.length); + } + } else { found_array_index = found_array_index + 1; if(found_array.length - 1 < found_array_index){ found_array_index = 0; } - $("#num_found").text(found_array_index + 1); - $("#of_total_found").text(found_array.length); + } + document.getElementById("num_found").innerText = found_array_index + 1; + document.getElementById("of_total_found").innerText = found_array.length; if(found_array.length > 0 && found_array[found_array_index] != full_playlist.length - 1){ Helper.removeClass(".highlight", "highlight"); var jump_to_page = Math.floor(found_array[found_array_index] / List.can_fit); - $($("#wrapper").children()[found_array[found_array_index]]).addClass("highlight"); + Helper.addClass(document.querySelector("#wrapper").children[found_array[found_array_index]], "highlight"); List.dynamicContentPageJumpTo(jump_to_page); } else { Helper.removeClass(".highlight", "highlight"); diff --git a/server/public/assets/js/mobileremote.js b/server/public/assets/js/mobileremote.js index 981e49db..978795ea 100755 --- a/server/public/assets/js/mobileremote.js +++ b/server/public/assets/js/mobileremote.js @@ -11,15 +11,15 @@ var Mobile_remote = { set_id: function(id) { Mobile_remote.id = id; - $("#pausebutton_remote").attr("disabled", false); - $("#skipbutton_remote").attr("disabled", false); - $("#playbutton_remote").attr("disabled", false); - $("#skipbutton_remote").attr("disabled", false); - $("#remote_channel").val(""); - $("#remote_channel").attr("placeholder", "Change channel"); - $("#remote_header").html("Controlling " + id); - $("#volume-control-remote").css("display", "inline-block"); - $(".slider-vol-mobile").attr("style", "display: inline-block !important"); + document.getElementById("#pausebutton_remote").removeAttribute("disabled"); + document.getElementById("#skipbutton_remote").removeAttribute("disabled", false); + document.getElementById("#playbutton_remote").removeAttribute("disabled", false); + document.getElementById("#skipbutton_remote").removeAttribute("disabled", false); + document.getElementById("#remote_channel").value = ""; + document.getElementById("#remote_channel").setAttribute("placeholder", "Change channel"); + document.getElementById("#remote_header").innerText = "Controlling " + id; + Helper.css("#volume-control-remote", "display", "inline-block"); + document.querySelector(".slider-vol-mobile").setAttribute("style", "display: inline-block !important"); }, set_channel: function(channel_name) { @@ -40,10 +40,10 @@ var Mobile_remote = { initiate_volume: function() { var vol = 100; - $("#volume-control-remote").append("
    "); - $("#volume-control-remote").append("
    "); - $(".volume-slid-remote").css("width", vol + "%"); - $(".volume-handle-remote").css("left", "calc(" + vol + "% - 1px)"); + document.getElementById("#volume-control-remote").insertAdjacentHTML("beforeend", "
    "); + document.getElementById("#volume-control-remote").insertAdjacentHTML("beforeend", "
    "); + Helper.css(".volume-slid-remote", "width", vol + "%"); + Helper.css(".volume-handle-remote", "left", "calc(" + vol + "% - 1px)"); document.getElementById("volume-control-remote").addEventListener("touchstart", function(e) { e.preventDefault(); Playercontrols.dragMouseDown(e); diff --git a/server/public/assets/js/player.js b/server/public/assets/js/player.js index 3e1630eb..2704cfc8 100755 --- a/server/public/assets/js/player.js +++ b/server/public/assets/js/player.js @@ -81,10 +81,9 @@ var Player = { } catch(e){} Helper.log(["video_id variable: " + video_id]); if(!obj.np){ - $('#song-title').html("Empty channel. Add some songs!"); + document.getElementById('song-title').innerText = "Empty channel. Add some songs!"; document.title = "Zoff - the shared YouTube based radio"; - $("#channel-load").css("display", "none"); - //$("#player_overlay").height($("#player").height()); + Helper.css("#channel-load", "display", "none"); if(!window.MSStream && !chromecastAvailable) { Helper.removeClass("#player_overlay", "hide"); @@ -281,20 +280,18 @@ var Player = { break; case YT.PlayerState.PLAYING: if(embed) { - $("#player").css("visibility", "visible"); + Helper.css("#player", "visibility", "visible"); } if(embed && !autoplay) autoplay = true; if(!window.MSStream) { - $("#player").css("opacity", "1"); + Helper.css("#player", "opacity", "1"); //if(!Helper.mobilecheck()) { - $("#channel-load").css("display", "none"); - /*if(Frontpage.winter && $("#snow").length == 0) { - $("#video-container").prepend('
    '); - }*/ + Helper.css("#channel-load", "display", "none"); + //} } - $("#playpause").css("visibility", "visible"); - $("#playpause").css("pointer-events", "all"); + Helper.css("#playpause", "visibility", "visible"); + Helper.css("#playpause", "pointer-events", "all"); playing = true; if(beginning && Helper.mobilecheck() && !chromecastAvailable){ //Player.pauseVideo(); @@ -305,9 +302,9 @@ var Player = { if(!embed && window.location.pathname != "/" && !chromecastAvailable) Helper.addClass("#player_overlay", "hide"); if(window.location.pathname != "/"){ if(document.getElementById("play").className.split(" ").length == 1) - $("#play").toggleClass("hide"); + Helper.toggleClass("#play", "hide"); if(document.getElementById("pause").className.split(" ").length == 2) - $("#pause").toggleClass("hide"); + Helper.toggleClass("#pause", "hide"); } if((paused || was_stopped) && !offline) { /*var u = Crypt.crypt_pass(Crypt.get_userpass(chan.toLowerCase()), true); @@ -325,9 +322,9 @@ var Player = { } else { if(!chromecastAvailable){ if(beginning && mobile_beginning) { - $("#playpause").css("visibility", "visible"); - $("#playpause").css("pointer-events", "all"); - $("#channel-load").css("display", "none"); + Helper.css("#playpause", "visibility", "visible"); + Helper.css("#playpause", "pointer-events", "all"); + Helper.css("#channel-load", "display", "none"); } if(!empty_clear && !gotten_np) { paused = true; @@ -355,9 +352,9 @@ var Player = { //socket.emit('pos', {channel: chan.toLowerCase()}); chrome.cast.media.GenericMediaMetadata({metadataType: 0, title:song_title, image: 'https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg', images: ['https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg']}); //chrome.cast.Image('https://img.youtube.com/vi/'+video_id+'/mqdefault.jpg'); - if($("#pause").hasClass("hide")){ - $("#play").toggleClass("hide"); - $("#pause").toggleClass("hide"); + if(document.getElementById("pause").classList.contains("hide")){ + Helper.toggleClass("#play", "hide"); + Helper.toggleClass("#pause", "hide"); } //Playercontrols.play_pause(); } else { @@ -368,9 +365,9 @@ var Player = { pauseVideo: function(){ if(chromecastAvailable){ castSession.sendMessage("urn:x-cast:zoff.me", {type: "pauseVideo"}); - if($("#play").hasClass("hide")){ - $("#play").toggleClass("hide"); - $("#pause").toggleClass("hide"); + if(document.getElementById("play").classList.contains("hide")){ + Helper.toggleClass("#play", "hide"); + Helper.toggleClass("#pause", "hide"); } //Playercontrols.play_pause(); } else { @@ -535,16 +532,16 @@ var Player = { //var elem = document.getElementById('song-title'); //var getTitleViews = document.getElementById('viewers'); - $("#song-title").text(title); - $("#viewers").html(outPutWord + " " + v); - $("#song-title").attr("title", title); + document.getElementById("song-title").innerText = title; + document.getElementById("viewers").innerHtml = outPutWord + " " + v; + document.getElementById("song-title").setAttribute("title", title); //elem.title = title; if(chromecastAvailable){ - $("#player_overlay").css("background", "url(https://img.youtube.com/vi/" + video_id + "/hqdefault.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"); + Helper.css("#player_overlay", "background", "url(https://img.youtube.com/vi/" + video_id + "/hqdefault.jpg)"); + Helper.css("#player_overlay", "background-position", "center"); + Helper.css("#player_overlay", "background-size", "100%"); + Helper.css("#player_overlay", "background-color", "black"); + Helper.css("#player_overlay", "background-repeat", "no-repeat"); //$("#player_overlay").css("height", "calc(100% - 32px)"); } } @@ -627,6 +624,7 @@ var Player = { }, setBGimage: function(c){ + console.log(c); var color = c.color; if(window.location.pathname != "/" && ((offline && c.only) || (!offline && !c.only) || (!offline && c.only))) { document.getElementById("main-container").style.backgroundColor = Helper.rgbToHsl(color,true); @@ -637,7 +635,7 @@ var Player = { var hsl = Helper.rgbToHsl(color, true).replace("hsl(", "").replace(")", "").replace("%", "").replace(/ /g,'').replace("%", "").split(","); hexHsl = Helper.hslToHex(parseInt(hsl[0]), parseInt(hsl[1]), parseInt(hsl[2])); } catch(e) {} - $("meta[name=theme-color]").attr("content", hexHsl); + document.querySelector("meta[name=theme-color]").setAttribute("content", hexHsl); if(!client) { var new_color = Helper.rgbToHex(color[0], color[1], color[2]); new_color = Helper.hexToComplimentary(new_color); @@ -649,14 +647,14 @@ var Player = { }, set_width: function(val){ - $(".video-container").width(val); + document.getElementsByClassName("video-container")[0].style.width = val + "px"; if(!Helper.mobilecheck()) { - if($(window).width() > 769) { - var test_against_width = $(window).width() - $(".control-list").width() - $(".zbrand").outerWidth() - $(".brand-logo-navigate").outerWidth() - 66; + if(window.innerWidth > 769) { + var test_against_width = window.innerWidth - window.getComputedStyle(document.querySelector(".control-list"), null).getPropertyValue("width") - document.querySelector(".zbrand").offsetWidth - document.querySelector(".brand-logo-navigate").offsetWidth - 66; title_width = test_against_width; - $(".title-container").width(title_width); + document.querySelector(".title-container").style.width = title_width + "px"; } else { - $(".title-container").width("100%"); + document.querySelector(".title-container").style.width = "100%"; } } @@ -739,7 +737,7 @@ var Player = { minutes = Math.floor(currDurr / 60); seconds = currDurr - (minutes * 60); if(!isNaN(minutes) && !isNaN(seconds) && !isNaN(dMinutes) && !isNaN(dSeconds)) { - $("#duration").html(Helper.pad(minutes)+":"+Helper.pad(seconds)+" / "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds)); + Helper.setHtml("#duration", Helper.pad(minutes)+":"+Helper.pad(seconds)+" / "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds)); } per = (100 / duration) * currDurr; if(per >= 100) { @@ -778,7 +776,7 @@ var Player = { }, loadPlayer: function() { - if($("script[src='https://www.youtube.com/iframe_api']").length == 1){ + if(document.querySelectorAll("script[src='https://www.youtube.com/iframe_api']").length == 1){ try{ Player.onYouTubeIframeAPIReady(); } catch(error){ diff --git a/server/public/assets/js/playercontrols.js b/server/public/assets/js/playercontrols.js index 7b7fe0fc..975c6e99 100755 --- a/server/public/assets/js/playercontrols.js +++ b/server/public/assets/js/playercontrols.js @@ -8,18 +8,18 @@ var Playercontrols = { }, initControls: function() { - $("#volume-button").on("click", Playercontrols.mute_video); - $("#playpause").on("click", Playercontrols.play_pause); - $("#volume-button-overlay").on("click", Playercontrols.mute_video); - $("#playpause-overlay").on("click", Playercontrols.play_pause); - $("#fullscreen").on("click", Playercontrols.fullscreen); + document.getElementById("volume-button").addEventListener("click", Playercontrols.mute_video); + document.getElementById("playpause").addEventListener("click", Playercontrols.play_pause); + document.getElementById("volume-button-overlay").addEventListener("click", Playercontrols.mute_video); + document.getElementById("playpause-overlay").addEventListener("click", Playercontrols.play_pause); + document.getElementById("fullscreen").addEventListener("click", Playercontrols.fullscreen); }, initSlider: function() { try { vol = (Crypt.get_volume()); - //$("#volume").slider("destroy"); + } catch(e){ vol = 100; } @@ -30,12 +30,12 @@ var Playercontrols = { }catch(e){} if(Helper.mobilecheck() || slider_type == "vertical") { //slider_values.orientation = "vertical"; - if(!$(".volume-container").hasClass("hide")) { - $(".volume-container").toggleClass("hide"); + if(!document.querySelector(".volume-container").classList.contains("hide")) { + Helper.toggleClass(".volume-container", "hide"); } } - $("#volume").append("
    "); - $("#volume").append("
    "); + document.getElementById("volume").insertAdjacentHTML("beforeend", "
    "); + document.getElementById("volume").insertAdjacentHTML("beforeend", "
    "); if(slider_type != "vertical") { Helper.removeClass("#volume", "vertical"); Helper.css(".volume-slid", "width", vol + "%"); @@ -181,7 +181,7 @@ var Playercontrols = { }, fullscreen: function() { - var playerElement = $("#player").get(0); + var playerElement = document.getElementById("player"); var requestFullScreen = playerElement.requestFullScreen || playerElement.mozRequestFullScreen || playerElement.webkitRequestFullScreen; if (requestFullScreen) { requestFullScreen.bind(playerElement)(); @@ -196,18 +196,18 @@ var Playercontrols = { if(Helper.mobilecheck() && !window.MSStream){ //if(Helper.mobilecheck() && !/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream){ //document.getElementById("player").style.display = "none"; - $("#player").css("display", "none"); - $(".video-container").toggleClass("click-through"); - $(".page-footer").toggleClass("padding-bottom-extra"); + Helper.css("#player", "display", "none"); + Helper.toggleClass(".video-container", "click-through"); + Helper.toggleClass(".page-footer", "padding-bottom-extra"); } } else if(Player.player.getPlayerState() == YT.PlayerState.PAUSED || Player.player.getPlayerState() === YT.PlayerState.ENDED || (Player.player.getPlayerState() === YT.PlayerState.CUED)){ Player.playVideo(); //if(Helper.mobilecheck() && !/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream){ if(Helper.mobilecheck() && !window.MSStream){ //document.getElementById("player").style.display = "block"; - $("#player").css("display", "block"); - $(".video-container").toggleClass("click-through"); - $(".page-footer").toggleClass("padding-bottom-extra"); + Helper.css("#player", "display", "block"); + Helper.toggleClass(".video-container", "click-through"); + Helper.toggleClass(".page-footer", "padding-bottom-extra"); } } } else { @@ -217,26 +217,26 @@ var Playercontrols = { play_pause_show: function() { if(chromecastAvailable){ - if($("#play").hasClass("hide")){ + if(document.getElementById("play").classList.contains("hide")){ Player.pauseVideo(); - } else if($("#pause").hasClass("hide")){ + } else if(document.getElementById("pause").classList.contains("hide")){ Player.playVideo(); } } else { - if(!$("#pause").hasClass("hide")) { - $("#pause").toggleClass("hide"); - $("#pause-overlay").toggleClass("hide"); + if(!document.getElementById("pause").classList.contains("hide")) { + Helper.toggleClass("#pause", "hide"); + Helper.toggleClass("#pause-overlay", "hide"); } - if($("#play").hasClass("hide")) { - $("#play").toggleClass("hide"); - $("#play-overlay").toggleClass("hide"); + if(document.getElementById("play").classList.contains("hide")) { + Helper.toggleClass("#play", "hide"); + Helper.toggleClass("#play-overlay", "hide"); } } }, settings: function() { - $("#qS").toggleClass("hide"); + Helper.toggleClass("#qS", "hide"); }, changeQuality: function(wantedQ) { @@ -244,12 +244,12 @@ var Playercontrols = { Player.player.setPlaybackQuality(wantedQ); Player.player.getPlaybackQuality(); } - $("#qS").toggleClass("hide"); + Helper.toggleClass("#qS", "hide"); }, mute_video: function() { if(Helper.mobilecheck() || slider_type == "vertical") { - $(".volume-container").toggleClass("hide"); + Helper.toggleClass(".volume-container", "hide"); } else { if(!Player.player.isMuted()) { if(chromecastAvailable) castSession.sendMessage("urn:x-cast:zoff.me", {type: "mute"}); @@ -273,73 +273,73 @@ var Playercontrols = { choose_button: function(vol, mute) { if(!mute){ if(vol >= 0 && vol <= 33) { - if(!$("#v-full").hasClass("hide")) { - $("#v-full").toggleClass("hide"); - $("#v-full-overlay").toggleClass("hide"); + if(!document.getElementById("v-full").classList.contains("hide")) { + Helper.toggleClass("#v-full", "hide"); + Helper.toggleClass("#v-full-overlay", "hide"); } - if(!$("#v-medium").hasClass("hide")) { - $("#v-medium").toggleClass("hide"); - $("#v-medium-overlay").toggleClass("hide"); + if(!document.getElementById("v-medium").classList.contains("hide")) { + Helper.toggleClass("#v-medium", "hide"); + Helper.toggleClass("#v-medium-overlay", "hide"); } - if($("#v-low").hasClass("hide")) { - $("#v-low").toggleClass("hide"); - $("#v-low-overlay").toggleClass("hide"); + if(document.getElementById("v-low").classList.contains("hide")) { + Helper.toggleClass("#v-low", "hide"); + Helper.toggleClass("#v-low-overlay", "hide"); } - if(!$("#v-mute").hasClass("hide")) { - $("#v-mute").toggleClass("hide"); - $("#v-mute-overlay").toggleClass("hide"); + if(!document.getElementById("v-mute").classList.contains("hide")) { + Helper.toggleClass("#v-mute", "hide"); + Helper.toggleClass("#v-mute-overlay", "hide"); } } else if(vol >= 34 && vol <= 66) { - if(!$("#v-full").hasClass("hide")) { - $("#v-full").toggleClass("hide"); - $("#v-full-overlay").toggleClass("hide"); + if(!document.getElementById("v-full").classList.contains("hide")) { + Helper.toggleClass("#v-full", "hide"); + Helper.toggleClass("#v-full-overlay", "hide"); } - if($("#v-medium").hasClass("hide")) { - $("#v-medium").toggleClass("hide"); - $("#v-medium-overlay").toggleClass("hide"); + if(document.getElementById("v-medium").classList.contains("hide")) { + Helper.toggleClass("#v-medium", "hide"); + Helper.toggleClass("#v-medium-overlay", "hide"); } - if(!$("#v-low").hasClass("hide")) { - $("#v-low").toggleClass("hide"); - $("#v-low-overlay").toggleClass("hide"); + if(!document.getElementById("v-low").classList.contains("hide")) { + Helper.toggleClass("#v-low", "hide"); + Helper.toggleClass("#v-low-overlay", "hide"); } - if(!$("#v-mute").hasClass("hide")) { - $("#v-mute").toggleClass("hide"); - $("#v-mute-overlay").toggleClass("hide"); + if(!document.getElementById("v-mute").classList.contains("hide")) { + Helper.toggleClass("#v-mute", "hide"); + Helper.toggleClass("#v-mute-overlay", "hide"); } } else if(vol >= 67 && vol <= 100) { - if($("#v-full").hasClass("hide")) { - $("#v-full").toggleClass("hide"); - $("#v-full-overlay").toggleClass("hide"); + if(document.getElementById("v-full").classList.contains("hide")) { + Helper.toggleClass("#v-full", "hide"); + Helper.toggleClass("#v-full-overlay", "hide"); } - if(!$("#v-medium").hasClass("hide")) { - $("#v-medium").toggleClass("hide"); - $("#v-medium-overlay").toggleClass("hide"); + if(!document.getElementById("v-medium").classList.contains("hide")) { + Helper.toggleClass("#v-medium", "hide"); + Helper.toggleClass("#v-medium-overlay", "hide"); } - if(!$("#v-low").hasClass("hide")) { - $("#v-low").toggleClass("hide"); - $("#v-low-overlay").toggleClass("hide"); + if(!document.getElementById("v-low").classList.contains("hide")) { + Helper.toggleClass("#v-low", "hide"); + Helper.toggleClass("#v-low-overlay", "hide"); } - if(!$("#v-mute").hasClass("hide")) { - $("#v-mute").toggleClass("hide"); - $("#v-mute-overlay").toggleClass("hide"); + if(!document.getElementById("v-mute").classList.contains("hide")) { + Helper.toggleClass("#v-mute", "hide"); + Helper.toggleClass("#v-mute-overlay", "hide"); } } } else { - if(!$("#v-full").hasClass("hide")) { - $("#v-full").toggleClass("hide"); - $("#v-full-overlay").toggleClass("hide"); + if(!document.getElementById("v-full").classList.contains("hide")) { + Helper.toggleClass("#v-full", "hide"); + Helper.toggleClass("#v-full-overlay", "hide"); } - if(!$("#v-medium").hasClass("hide")) { - $("#v-medium").toggleClass("hide"); - $("#v-medium-overlay").toggleClass("hide"); + if(!document.getElementById("v-medium").classList.contains("hide")) { + Helper.toggleClass("#v-medium", "hide"); + Helper.toggleClass("#v-medium-overlay", "hide"); } - if(!$("#v-low").hasClass("hide")) { - $("#v-low").toggleClass("hide"); - $("#v-low-overlay").toggleClass("hide"); + if(!document.getElementById("v-low").classList.contains("hide")) { + Helper.toggleClass("#v-low", "hide"); + Helper.toggleClass("#v-low-overlay", "hide"); } - if($("#v-mute").hasClass("hide")) { - $("#v-mute").toggleClass("hide"); - $("#v-mute-overlay").toggleClass("hide"); + if(document.getElementById("v-mute").classList.contains("hide")) { + Helper.toggleClass("#v-mute", "hide"); + Helper.toggleClass("#v-mute-overlay", "hide"); } } }, diff --git a/server/public/assets/js/remotecontroller.js b/server/public/assets/js/remotecontroller.js index b349f4fa..7ca1a97c 100755 --- a/server/public/assets/js/remotecontroller.js +++ b/server/public/assets/js/remotecontroller.js @@ -6,9 +6,9 @@ mobilecheck = function() { return check; }; -$(document).ready(function (){ +window.addEventListener("DOMContentLoaded", function (){ document.title = "Zoff Remote"; - setTimeout(function(){$("#search").focus();},500); + setTimeout(function(){document.getElementById("search").focus();},500); var connection_options = { 'sync disconnect on unload':true, 'secure': true @@ -30,22 +30,57 @@ $(document).ready(function (){ id = id.toLowerCase(); Remotecontroller.control(); } -}); +}, false); -$(document).on("click", "#playbutton", function() { + +function handleEvent(e, target, tried, type) { + //console.log(target, dynamicListeners); + //console.log(e.path, target); + for(var y = 0; y < e.path.length; y++) { + var target = e.path[y]; + if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { + //console.log(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]]) { + //console.log(target.id); + dynamicListeners[type]["." + target.classList[i]].call(target); + return; + } + } + } + } +} + +function addListener(type, element, callback) { + if(dynamicListeners[type] == undefined) dynamicListeners[type] = {}; + dynamicListeners[type][element] = callback; +} + +document.addEventListener("click", function(e) { + handleEvent(e, e.target, false, "click"); +}, true); +document.addEventListener("submit", function(e) { + handleEvent(e, e.target, false, "submit"); +}, true); + +addListener("click", "#playbutton", function() { socket.emit("id", {id: id, type: "play", value: "mock"}); }); -$(document).on("click", "#pausebutton", function() { +addListener("click", "#pausebutton", function() { socket.emit("id", {id: id, type: "pause", value: "mock"}); }); -$(document).on("click", "#skipbutton", function() { +addListener("click", "#skipbutton", function() { socket.emit("id", {id: id, type: "skip", value: "mock"}); }); -$(document).on("submit", "#remoteform", function(e) { - e.preventDefault(); +addListener("submit", "#remoteform", function(e) { + event.preventDefault(); Remotecontroller.control(); }); @@ -60,14 +95,14 @@ var Remotecontroller = { document.getElementById("remoteform").chan.value = ""; start = false; - $(".volume-elements").css("display", "flex"); - $(".rc").css("display", "block"); + Helper.css(".volume-elements", "display", "flex"); + Helper.css(".rc", "display", "block"); //document.getElementById("base").setAttribute("onsubmit", "control(); return false;"); - $("#remote-text").text("Controlling "+ id.toUpperCase()); + document.getElementById("remote-text").innerText = "Controlling "+ id.toUpperCase(); document.getElementById("search").setAttribute("length", "18"); document.getElementById("search").setAttribute("maxlength", "18"); - $("#forsearch").html("Type new channel name to change to"); + document.getElementById("forsearch").innerText = "Type new channel name to change to"; // /*$("#volume-control").slider({ @@ -81,11 +116,11 @@ var Remotecontroller = { } //});*/ - $("#volume").append("
    "); - $("#volume").append("
    "); + document.getElementById("volume").insertAdjacentHTML("beforeend", "
    "); + document.getElementById("volume").insertAdjacentHTML("beforeend", "
    "); - $(".volume-slid").css("width", "100%"); - $(".volume-handle").css("left", "calc(100% - 1px)"); + Helper.css(".volume-slid", "width", "100%"); + Helper.css(".volume-handle", "left", "calc(100% - 1px)"); //document.getElementsByClassName("volume-handle")[0].onmousedown = Remotecontroller.dragMouseDown; //$("#volume").slider(slider_values); //document.getElementsByClassName("volume-slid")[0].onmousedown = Remotecontroller.dragMouseDown; @@ -99,8 +134,8 @@ var Remotecontroller = { Remotecontroller.closeDragElement(); } } else { - socket.emit("id", {id: id, type: "channel", value: $("#search").val().toLowerCase()}); - $("#search").val(""); + socket.emit("id", {id: id, type: "channel", value: document.getElementById("search").value.toLowerCase()}); + document.getElementById("search").value = ""; } }, diff --git a/server/public/assets/js/search.js b/server/public/assets/js/search.js index 6d9f0931..52beedb9 100755 --- a/server/public/assets/js/search.js +++ b/server/public/assets/js/search.js @@ -8,35 +8,36 @@ var Search = { submitYouTubeError: false, showSearch: function(){ - $("#search-wrapper").toggleClass("hide"); + Helper.toggleClass("#search-wrapper", "hide"); if(Helper.mobilecheck()) { - $(".search_input").focus(); + document.querySelector(".search_input").focus(); } - $("#song-title").toggleClass("hide"); + Helper.toggleClass("#song-title", "hide"); //$("#results").empty(); - if($("#search-btn i").html() == "close") { - $("body").attr("style", "overflow-y:auto") - $("#results").slideUp({ + if(document.querySelector("#search-btn i").innerText == "close") { + document.querySelector("body").setAttribute("style", "overflow-y:auto") + /*$("#results").slideUp({ complete: function() { $("#results").empty(); } - }); - $(".search_input").val(""); - $("#search-btn i").html("search"); + });*/ + document.getElementById("results").innerHTML = ""; + document.querySelector(".search_input").value = ""; + document.querySelector("#search-btn i").innerText = "search"; } else { - $("#search-btn i").html("close"); + document.querySelector("#search-btn i").innerText = "close"; } - $("#search").focus(); + document.querySelector("#search").focus(); }, search: function(search_input, retried, related, pagination){ if(result_html === undefined || empty_results_html === undefined) { - result_html = $("#temp-results-container"); + result_html = document.getElementById("#temp-results-container"); empty_results_html = Helper.html("#empty-results-container"); } - if(!pagination && $("#inner-results").length == 0) { + if(!pagination && document.querySelectorAll("#inner-results").length == 0) { Helper.setHtml(".search_results", ''); } if(search_input !== ""){ @@ -65,10 +66,10 @@ var Search = { var nextPageToken = response.nextPageToken; var prevPageToken = response.prevPageToken; if(response.items.length === 0) { - $("#results").empty(); + document.getElementById("results").innerHTML = ""; Helper.css("#results", "display", "block"); - $("").appendTo($("#results")).show("blind", 83.33); - if(Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) + //$("").appendTo($("#results")).show("blind", 83.33); + document.getElementById("results").insertAdjacentHTML("beforeend", ""); Helper.removeClass(".search_loader_spinner", "active"); } else if(response.items){ @@ -83,7 +84,9 @@ var Search = { success: function(response){ response = JSON.parse(response); var output = ""; - var pre_result = $(result_html); + + var pre_result = document.createElement("div"); + pre_result.innerHTML = result_html; //$("#results").append(result_html); @@ -100,51 +103,52 @@ var Search = { thumb=song.snippet.thumbnails.medium.url; //$("#results").append(result_html); - var songs = pre_result; - songs.find(".search-title").text(title); - songs.find(".result_info").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1])); - songs.find(".thumb").attr("src", thumb); - //songs.find(".add-many").attr("onclick", "submit('"+id+"','"+enc_title+"',"+secs+");"); - songs.find("#add-many").attr("data-video-id", id); - songs.find("#add-many").attr("data-video-title", enc_title); - songs.find("#add-many").attr("data-video-length", secs); - //$($(songs).find("div")[0]).attr("onclick", "submitAndClose('"+id+"','"+enc_title+"',"+secs+");"); - songs.find("#temp-results").attr("data-video-id", id); - songs.find("#temp-results").attr("data-video-title", enc_title); - songs.find("#temp-results").attr("data-video-length", secs); - songs.find(".open-externally").attr("href", "https://www.youtube.com/watch?v=" + id); - $(songs.find(".result-end")).attr("value", secs); - //$($(songs).find("div")[0]).attr("id", id) + var songs = pre_result.cloneNode(true); + songs.querySelector(".search-title").innerText = title; + songs.querySelector(".result_info").innerText = Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]); + songs.querySelector(".thumb").setAttribute("src", thumb); + //songs.querySelector(".add-many").attr("onclick", "submit('"+id+"','"+enc_title+"',"+secs+");"); + songs.querySelector("#add-many").setAttribute("data-video-id", id); + songs.querySelector("#add-many").setAttribute("data-video-title", enc_title); + songs.querySelector("#add-many").setAttribute("data-video-length", secs); + //$($(songs).querySelector("div")[0]).setAttribute("onclick", "submitAndClose('"+id+"','"+enc_title+"',"+secs+");"); + songs.querySelector("#temp-results").setAttribute("data-video-id", id); + songs.querySelector("#temp-results").setAttribute("data-video-title", enc_title); + songs.querySelector("#temp-results").setAttribute("data-video-length", secs); + songs.querySelector(".open-externally").setAttribute("href", "https://www.youtube.com/watch?v=" + id); + songs.querySelector(".result-end").setAttribute("value", secs); + //$($(songs).querySelector("div")[0]).setAttribute("id", id) //output += undefined; - if(songs.html() != undefined) { - output += songs.html(); + if(songs.innerHTML != undefined && songs.innerHTML != "") { + output += songs.innerHTML; } } } var fresh = false; - if($("#inner-results").length == 0) { + if(document.querySelectorAll("#inner-results").length == 0) { fresh = true; } - $(".search_results").empty(); + document.getElementsByClassName("search_results")[0].innerHTML = ""; if(output.length > 0) { //$(window).scrollTop(0); if(!pagination && fresh) { - $(".search_results").css("display", "none"); + Helper.css(".search_results", "display", "none"); } - $("#results").append(pagination_buttons_html); - $("
    "+output+"
    ").prependTo($("#results")); + document.getElementById("results").insertAdjacentHTML("beforeend", pagination_buttons_html); + //$("
    "+output+"
    ").prependTo($("#results")); + document.getElementById("results").insertAdjacentHTML("afterbegin", "
    "+output+"
    "); if(!pagination && fresh) { - $(".search_results").slideDown(); + //$(".search_results").slideDown(); } - $("body").attr("style", "overflow-y:hidden !important") + document.getElementsByTagName("body")[0].setAttribute("style", "overflow-y:hidden !important") if(nextPageToken) { - $(".next-results-button").attr("data-pagination", nextPageToken); + document.querySelector(".next-results-button").setAttribute("data-pagination", nextPageToken); } else { Helper.addClass(".next-results-button", "disabled"); } if(prevPageToken) { - $(".prev-results-button").attr("data-pagination", prevPageToken); + document.querySelector(".prev-results-button").setAttribute("data-pagination", prevPageToken); } else { Helper.addClass(".prev-results-button", "disabled"); } @@ -153,19 +157,14 @@ var Search = { //setTimeout(function(){$(".thumb").lazyload({container: $("#results")});}, 250); - if(Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) Helper.removeClass(".search_loader_spinner", "active"); - $(".add-many").click(function(e) { - e.preventDefault(); - e.stopPropagation(); - return false; - }); + } else if(!retried){ Search.search(search_input, true); } else { - $("").appendTo($("#results")).show("blind", 83.33); - if(Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) + //$("").appendTo($("#results")).show("blind", 83.33); + document.getElementById("results").insertAdjacentHTML("beforeend", ""); Helper.removeClass(".search_loader_spinner", "active"); } } @@ -202,11 +201,13 @@ var Search = { "Spotify title: " + title + " " + artist.join(" "), "Spotify length: " + length ]); - var not_added_song = $("
    " + not_import_html + "
    "); - not_added_song.find(".extra-add-text").text(title + " - " + artist.join(" ")); - not_added_song.find(".extra-add-text").attr("title", title + " - " + artist.join(" ")); - not_added_song.find(".extra-button-search").attr("data-text", title + " - " + artist.join(" ")); - $(".not-imported-container").append(not_added_song.html()); + var not_added_song = document.createElement("div"); + not_added_song.innerHTML = not_import_html; + + not_added_song.querySelector(".extra-add-text").innerText = title + " - " + artist.join(" "); + not_added_song.querySelector(".extra-add-text").setAttribute("title", title + " - " + artist.join(" ")); + not_added_song.querySelector(".extra-button-search").setAttribute("data-text", title + " - " + artist.join(" ")); + document.querySelector(".not-imported-container").insertAdjacentHTML("beforeend", not_added_song.innerHTML); Helper.removeClass(".not-imported", "hide"); } else if(response.items.length > 0) { for(var i = 0; i < response.items; i++) { @@ -264,11 +265,12 @@ var Search = { "Spotify title: " + title + " " + artist.join(" "), "Spotify length: " + length ]); - var not_added_song = $("
    " + not_import_html + "
    "); - not_added_song.find(".extra-add-text").text(title + " - " + artist.join(" ")); - not_added_song.find(".extra-add-text").attr("title", title + " - " + artist.join(" ")); - not_added_song.find(".extra-button-search").attr("data-text", title + " - " + artist.join(" ")); - $(".not-imported-container").append(not_added_song.html()); + var not_added_song = document.createElement("div"); + not_added_song.innerHTML = not_import_html; + not_added_song.querySelector(".extra-add-text").innerText = title + " - " + artist.join(" "); + not_added_song.querySelector(".extra-add-text").setAttribute("title", title + " - " + artist.join(" ")); + not_added_song.querySelector(".extra-button-search").setAttribute("data-text", title + " - " + artist.join(" ")); + document.querySelector(".not-imported-container").insertAdjacentHTML("beforeend", not_added_song.innerHTML); Helper.removeClass(".not-imported", "hide"); } } @@ -477,11 +479,9 @@ var Search = { } if(offline && document.getElementsByName("addsongs")[0].checked && document.getElementsByName("addsongs")[0].disabled){ var found_array = []; - found_array = $.map(full_playlist, function(obj, index) { - if(obj.id == id) { - return index; - } - }); + for(var i = 0; i < full_playlist.length; i++) { + if(full_playlist[i].id == id) found_array.push(i); + } if(found_array.length == 0){ List.channel_function({type: "added", start: start, end: end, value: {added: (new Date).getTime()/1000, guids: [1], id: id, title: title, duration: duration, now_playing: false, votes: 1}}); } else { diff --git a/server/public/assets/js/suggestions.js b/server/public/assets/js/suggestions.js index 57d9443a..8d99fa2c 100755 --- a/server/public/assets/js/suggestions.js +++ b/server/public/assets/js/suggestions.js @@ -7,15 +7,15 @@ var Suggestions = { number_suggested = number_suggested + params.length; } for(var i = 0; i < params.length; i++) { - if($("#suggested-" + params[i].id).length > 0) { + if(document.querySelectorAll("#suggested-" + params[i].id).length > 0) { number_suggested -= 1; } } var to_display = number_suggested > 9 ? "9+" : number_suggested; if(number_suggested > 0 && Admin.logged_in){ - Helper.removeClass(".suggested-link span badge new white", "hide"); + Helper.removeClass(document.querySelector(".chat-link span.badge.new.white"), "hide"); } - $(".suggested-link span.badge.new.white").text(to_display); + document.querySelector(".suggested-link span.badge.new.white").innerText = to_display; if(single){ Suggestions.createSuggested(params); }else{ @@ -31,8 +31,8 @@ var Suggestions = { var video_id = params.id; var video_title = params.title; var song = List.generateSong({id: video_id, title: video_title, length: params.duration, duration: duration}, false, false, false, true); - if($("#" + $(song).attr("id")).length == 0) { - $("#user-suggest-html").append(song); + if(document.querySelectorAll("#" + song.getAttribute("id")).length == 0) { + document.getElementById("user-suggest-html").insertAdjacentHTML("beforeend", song); } }, @@ -60,7 +60,7 @@ var Suggestions = { success: function(response) { response = JSON.parse(response); - $("#suggest-song-html").empty(); + Helper.setHtml("#suggest-song-html", ""); for(var i = 0; i < response.items.length; i++) { var song = response.items[i]; var duration = song.contentDetails.duration; @@ -69,7 +69,7 @@ var Suggestions = { var video_id = song.id; var video_title = song.snippet.title; - $("#suggest-song-html").append(List.generateSong({id: video_id, title: video_title, length: length, duration: duration}, false, false, false)); + document.getElementById("suggest-song-html").insertAdjacentHTML("beforeend", List.generateSong({id: video_id, title: video_title, length: length, duration: duration}, false, false, false)); } } }); @@ -78,9 +78,8 @@ var Suggestions = { }, checkUserEmpty: function(){ - var length = $("#user-suggest-html").children().length; + var length = document.getElementById("user-suggest-html").children.length; if(length === 0){ - if(!Helper.contains($("#user_suggests").attr("class").split(" "), "hide")) Helper.addClass("#user_suggests", "hide"); } else if(Admin.logged_in){ Helper.removeClass("#user_suggests", "hide"); diff --git a/server/public/assets/js/token_apply.js b/server/public/assets/js/token_apply.js index 34cc6c16..19c7380c 100644 --- a/server/public/assets/js/token_apply.js +++ b/server/public/assets/js/token_apply.js @@ -1,25 +1,25 @@ -$(document).ready(function() { +window.addEventListener("DOMContentLoaded", function(e) { M.Modal.init(document.getElementById("about")); M.Modal.init(document.getElementById("contact")); Helper.addClass(".help-button-footer", "hide"); Helper.setHtml("#contact-container", ""); Helper.setHtml("#contact-container", "Send a mail to us: contact@zoff.me"); - $("#submit-contact-form").hide(); + Helper.css("#submit-contact-form", "display", "none"); ga('send', 'pageview'); if(!Helper.mobilecheck()) { - $("#iframe-container").append(''); + document.getElementById("iframe-container").insertAdjacentHTML("beforeend", ''); } - $(".token-form").on("submit", function(e) { + document.getElementsByClassName("token-form")[0].addEventListener("submit", function(e) { e.preventDefault(); - var email = $("#email_address").val(); - var origin = $("#origin").val(); - $("#origin").attr("readonly", true); - $("#email_address").attr("readonly", true); - $(".submit").toggleClass("disabled"); + var email = document.getElementById("email_address").value; + var origin = document.getElementById("origin").value; + document.getElementById("origin").setAttribute("readonly", true); + document.getElementById("email_address").setAttribute("readonly", true); + Helper.toggleClass(".submit", "disabled"); Helper.removeClass(".full-form-token", "hide"); var captcha_response = grecaptcha.getResponse(); Helper.ajax({ @@ -35,23 +35,23 @@ $(document).ready(function() { if(response == "success") { M.toast({html: "Email sent!", displayLength: 3000, classes: "green lighten"}); } else { - $("#email_address").attr("readonly", false); - $(".submit").toggleClass("disabled"); - $("#origin").attr("readonly", false); + document.getElementById("email_address").setAttribute("readonly", false); + Helper.toggleClass(".submit", "disabled"); + document.getElementById("origin").setAttribute("readonly", false); grecaptcha.reset(); M.toast({html: "Something went wrong. Sure that email hasn't been used for another token?",displayLength: 3000, classes: "red lighten"}); } }, error: function(response) { Helper.addClass(".full-form-token", "hide"); - $("#email_address").attr("readonly", false); - $(".submit").toggleClass("disabled"); + document.getElementById("email_address").setAttribute("readonly", false); + Helper.toggleClass(".submit", "disabled"); } }); }); - $('#submit-contact-form').on('click', function(e) { + document.getElementById('submit-contact-form').addEventListener('click', function(e) { e.preventDefault(); - $("#contact-form").submit(); + document.getElementById("contact-form").submit(); }); }); diff --git a/server/public/layouts/client/main.handlebars b/server/public/layouts/client/main.handlebars index 4111f7f6..39a3fd84 100644 --- a/server/public/layouts/client/main.handlebars +++ b/server/public/layouts/client/main.handlebars @@ -84,10 +84,10 @@
    {{/unless}} - + - + {{#unless embed}} diff --git a/server/public/partials/channel/modal.handlebars b/server/public/partials/channel/modal.handlebars index 3d941ff6..877e8be4 100644 --- a/server/public/partials/channel/modal.handlebars +++ b/server/public/partials/channel/modal.handlebars @@ -13,7 +13,7 @@ - +