mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	Merge pull request #337 from zoff-music/refactor/no-jquery
Refactor/no jquery
This commit is contained in:
		| @@ -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, | ||||
|   | ||||
| @@ -1481,9 +1481,13 @@ margin:-1px; | ||||
|     overflow-x: hidden; | ||||
| } | ||||
|  | ||||
| .empty-inner-results { | ||||
|     height: calc(100vh - 64px) !important; | ||||
| } | ||||
|  | ||||
| #empty-results { | ||||
|     text-align:center; | ||||
|     height:100px; | ||||
|     height:calc(100vh - 64px); | ||||
|     cursor: default; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -9,15 +9,15 @@ var Admin = { | ||||
|         w_p = false; | ||||
|  | ||||
|         if(Admin.logged_in) { | ||||
|             $("#thumbnail_form").css("display", "inline-block"); | ||||
|             $("#description_form").css("display", "inline-block"); | ||||
|             $("#user_suggests").removeClass("hide"); | ||||
|             $("#user-suggest-html").removeClass("hide"); | ||||
|             if($(".suggested-badge").text() != "0" && $(".suggested-badge").text() != "") { | ||||
|                 $(".suggested-badge").removeClass("hide"); | ||||
|             Helper.css("#thumbnail_form", "display", "inline-block"); | ||||
|             Helper.css("#description_form", "display", "inline-block"); | ||||
|             Helper.removeClass("#user_suggests", "hide"); | ||||
|             Helper.removeClass("#user-suggest-html", "hide"); | ||||
|             if(Helper.html(".suggested-badge") != "0" && Helper.html(".suggested-badge") != "") { | ||||
|                 Helper.removeClass(".suggested-badge", "hide"); | ||||
|             } | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('#chan_thumbnail').tooltip({ | ||||
|                 Helper.tooltip('#chan_thumbnail', { | ||||
|                     delay: 5, | ||||
|                     position: "left", | ||||
|                     html: "imgur link" | ||||
| @@ -26,38 +26,38 @@ var Admin = { | ||||
|         } else { | ||||
|             Admin.hideUserSuggested(); | ||||
|         } | ||||
|         $(".delete-context-menu").removeClass("context-menu-disabled"); | ||||
|         Helper.removeClass(".delete-context-menu", "context-menu-disabled"); | ||||
|         names     = ["vote","addsongs","longsongs","frontpage", "allvideos", | ||||
|         "removeplay", "skip", "shuffle", "userpass"]; | ||||
|         //Crypt.set_pass(chan.toLowerCase(), Crypt.tmp_pass); | ||||
|  | ||||
|         for (var i = 0; i < names.length; i++) { | ||||
|             $("input[name="+names[i]+"]").attr("disabled", false); | ||||
|             document.getElementsByName(names[i])[0].removeAttribute("disabled"); | ||||
|         } | ||||
|  | ||||
|         $(".card-action").removeClass("hide"); | ||||
|         $("#admin-lock").addClass("clickable"); | ||||
|         $("#admin-lock").html("lock_open"); | ||||
|         Helper.removeClass(".card-action", "hide"); | ||||
|         Helper.addClass("#admin-lock", "clickable"); | ||||
|         document.getElementById("admin-lock").innerHTML = "lock_open"; | ||||
|         if(!Helper.mobilecheck()){ | ||||
|             $('#admin-lock').tooltip({ | ||||
|             Helper.tooltip('#admin-lock', { | ||||
|                 delay: 5, | ||||
|                 position: "left", | ||||
|                 html: "Logout" | ||||
|             }); | ||||
|         } | ||||
|         $("#password").val(""); | ||||
|         $("#password").attr("placeholder", "Change admin password"); | ||||
|         $(".user-password-li").removeClass("hide"); | ||||
|         $(".delete-all").removeClass("hide"); | ||||
|         if($(".password_protected").prop("checked")) { | ||||
|             $(".change_user_pass").removeClass("hide"); | ||||
|         document.getElementById("password").value = ""; | ||||
|         document.getElementById("password").setAttribute("placeholder", "Change admin password"); | ||||
|         Helper.removeClass(".user-password-li", "hide"); | ||||
|         Helper.removeClass(".delete-all", "hide"); | ||||
|         if(document.getElementsByClassName("password_protected")[0].checked) { | ||||
|             Helper.removeClass(".change_user_pass", "hide"); | ||||
|         } | ||||
|  | ||||
|         if($("#admin-lock").html() != "lock_open"){ | ||||
|             $("#admin-lock").addClass("clickable"); | ||||
|             $("#admin-lock").html("lock_open"); | ||||
|         if(Helper.html("#admin-lock") != "lock_open"){ | ||||
|             Helper.addClass("#admin-lock", "clickable"); | ||||
|             document.getElementById("admin-lock").innerHTML = "lock_open"; | ||||
|             if(!Helper.mobilecheck()){ | ||||
|                 $('#admin-lock').tooltip({ | ||||
|                 Helper.tooltip('#admin-lock', { | ||||
|                     delay: 5, | ||||
|                     position: "left", | ||||
|                     html: "Logout" | ||||
| @@ -67,15 +67,9 @@ var Admin = { | ||||
|     }, | ||||
|  | ||||
|     hideUserSuggested: function() { | ||||
|         if(!$("#user_suggests").hasClass("hide")) { | ||||
|             $("#user_suggests").addClass("hide") | ||||
|         } | ||||
|         if(!$("#user-suggest-html").hasClass("hide")) { | ||||
|             $("#user-suggest-html").addClass("hide"); | ||||
|         } | ||||
|         if(!$(".suggested-badge").hasClass("hide")) { | ||||
|             $(".suggested-badge").addClass("hide"); | ||||
|         } | ||||
|         Helper.addClass("#user_suggests", "hide") | ||||
|         Helper.addClass("#user-suggest-html", "hide"); | ||||
|         Helper.addClass(".suggested-badge", "hide"); | ||||
|     }, | ||||
|  | ||||
|     conf: function(msg) { | ||||
| @@ -119,43 +113,34 @@ var Admin = { | ||||
|         names     = ["vote","addsongs","longsongs","frontpage", "allvideos", | ||||
|         "removeplay", "skip", "shuffle"]; | ||||
|         document.getElementById("password").value = ""; | ||||
|         $("#thumbnail_form").css("display", "none"); | ||||
|         $("#description_form").css("display", "none"); | ||||
|         Helper.css("#thumbnail_form", "display", "none"); | ||||
|         Helper.css("#description_form", "display", "none"); | ||||
|         for (i = 0; i < names.length; i++) { | ||||
|             $("input[name="+names[i]+"]").attr("disabled", true); | ||||
|             document.getElementsByName(names[i])[0].setAttribute("disabled", true); | ||||
|         } | ||||
|  | ||||
|         if($("#admin-lock").html() != "lock") { | ||||
|         if(Helper.html("#admin-lock") != "lock") { | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('#admin-lock').tooltip("destroy"); | ||||
|                 //$('#admin-lock').tooltip('destroy'); | ||||
|                 Helper.tooltip('#admin-lock', "destroy"); | ||||
|             } | ||||
|             $("#admin-lock").removeClass("clickable"); | ||||
|             $("#admin-lock").html("lock"); | ||||
|             Helper.removeClass("#admin-lock", "clickable"); | ||||
|             document.getElementById("admin-lock").innerHTML = "lock"; | ||||
|         } | ||||
|  | ||||
|         if(!$(".user-password-li").hasClass("hide")) { | ||||
|             $(".user-password-li").addClass("hide") | ||||
|  | ||||
|         Helper.addClass(".user-password-li", "hide"); | ||||
|         Helper.addClass(".delete-all", "hide"); | ||||
|  | ||||
|         if(document.getElementsByClassName("password_protected")[0].checked) { | ||||
|             Helper.removeClass(".change_user_pass", "hide"); | ||||
|         } | ||||
|  | ||||
|         if(!$(".delete-all").hasClass("hide")) { | ||||
|           $(".delete-all").addClass("hide"); | ||||
|         } | ||||
|  | ||||
|         if($(".password_protected").prop("checked")) { | ||||
|             $(".change_user_pass").removeClass("hide"); | ||||
|         } | ||||
|  | ||||
|         if(!$(".change_user_pass").hasClass("hide")) { | ||||
|             $(".change_user_pass").addClass("hide"); | ||||
|         } | ||||
|         Helper.addClass(".change_user_pass", "hide"); | ||||
|         Admin.hideUserSuggested(); | ||||
|  | ||||
|         $("#admin-lock").removeClass("clickable"); | ||||
|         $("#password").attr("placeholder", "Enter admin password"); | ||||
|         if(!$(".delete-context-menu").hasClass("context-menu-disabled")) { | ||||
|             $(".delete-context-menu").addClass("context-menu-disabled"); | ||||
|         } | ||||
|         Helper.removeClass("#admin-lock", "clickable"); | ||||
|         document.getElementById("password").setAttribute("placeholder", "Enter admin password"); | ||||
|         Helper.addClass(".delete-context-menu", "context-menu-disabled"); | ||||
|     }, | ||||
|  | ||||
|     save: function(userpass) { | ||||
| @@ -177,29 +162,33 @@ var Admin = { | ||||
|  | ||||
|         for (var i = 0; i < names.length; i++) { | ||||
|             document.getElementsByName(names[i])[0].checked = (conf_array[names[i]] === true); | ||||
|             $("input[name="+names[i]+"]").attr("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($("#admin-lock").html() != "lock") Admin.display_logged_out(); | ||||
|             if(Helper.html("#admin-lock") != "lock") Admin.display_logged_out(); | ||||
|         } else if(!hasadmin) { | ||||
|             $("#password").attr("placeholder", "Create admin password"); | ||||
|             document.getElementById("password").setAttribute("placeholder", "Create admin password"); | ||||
|         } else { | ||||
|             if($(".password_protected").prop("checked")) { | ||||
|                 $(".change_user_pass").removeClass("hide"); | ||||
|             if(document.getElementsByClassName("password_protected")[0].checked) { | ||||
|                 Helper.removeClass(".change_user_pass", "hide"); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if(!$(".password_protected").prop("checked") && !$(".change_user_pass").hasClass("hide")) { | ||||
|             $(".change_user_pass").addClass("hide"); | ||||
|         if(!document.getElementsByClassName("password_protected")[0].checked) { | ||||
|             Helper.addClass(".change_user_pass", "hide"); | ||||
|             //Crypt.remove_userpass(chan.toLowerCase()); | ||||
|         } | ||||
|  | ||||
|         if(conf_array.thumbnail != undefined && conf_array.thumbnail != "") { | ||||
|             $("#thumbnail_image").html("<img id='thumbnail_image_channel' src='" + conf_array.thumbnail + "' alt='thumbnail' />"); | ||||
|             document.getElementById("thumbnail_image").innerHTML = "<img id='thumbnail_image_channel' src='" + conf_array.thumbnail + "' alt='thumbnail' />"; | ||||
|         } | ||||
|  | ||||
|         if(conf_array.description != undefined && conf_array.description != "") { | ||||
|             $("#description_area").html(conf_array.description); | ||||
|             document.getElementById("description_area").innerHTML = conf_array.description; | ||||
|         } | ||||
|  | ||||
|     }, | ||||
| @@ -233,7 +222,8 @@ var Admin = { | ||||
|     }, | ||||
|  | ||||
|     hide_settings: function() { | ||||
|         $('.sidenav').sidenav('close'); | ||||
|         var sidenavElem = document.getElementsByClassName("sidenav")[0]; | ||||
|         M.Sidenav.getInstance(sidenavElem).close(); | ||||
|     }, | ||||
|  | ||||
|     shuffle: function() { | ||||
|   | ||||
| @@ -1,28 +1,26 @@ | ||||
| var Channel = { | ||||
|     init: function() { | ||||
|         if(client) { | ||||
|             $(".tabs").addClass("hide"); | ||||
|             $("#wrapper").removeClass("tabs_height"); | ||||
|             $("#wrapper").addClass("client-wrapper"); | ||||
|             //$(".embed-button-footer").addClass("hide"); | ||||
|             //$(".skip_next_client").removeClass("hide"); | ||||
|             Helper.addClass(".tabs", "hide"); | ||||
|             Helper.removeClass("#wrapper", "tabs_height"); | ||||
|             Helper.addClass("#wrapper", "client-wrapper"); | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $(".skip_next_client").tooltip({ | ||||
|                 Helper.tooltip(".skip_next_client", { | ||||
|                     delay: 5, | ||||
|                     position: "bottom", | ||||
|                     html: "Skip" | ||||
|                 }); | ||||
|             } | ||||
|             $("#chan").addClass("chan-client"); | ||||
|             $("#results").addClass("client-results-height"); | ||||
|             $(".pagination-results").addClass("client-pagination-height"); | ||||
|             $(".control-list").addClass("client-control-list"); | ||||
|             Helper.addClass("#chan", "chan-client"); | ||||
|             Helper.addClass("#results", "client-results-height"); | ||||
|             Helper.addClass(".pagination-results", "client-pagination-height"); | ||||
|             Helper.addClass(".control-list", "client-control-list"); | ||||
|         } | ||||
|         if(!Admin.logged_in) Admin.display_logged_out(); | ||||
|         number_suggested = 0; | ||||
|         var no_socket = true; | ||||
|  | ||||
|         chan = $("#chan").html(); | ||||
|         chan = Helper.html("#chan"); | ||||
|         mobile_beginning = Helper.mobilecheck(); | ||||
|         var side = Helper.mobilecheck() ? "left" : "right"; | ||||
|  | ||||
| @@ -35,7 +33,7 @@ var Channel = { | ||||
|         }; | ||||
|  | ||||
|         if(window.location.hostname == "fb.zoff.me") { | ||||
|             $("footer").addClass("hide"); | ||||
|             Helper.addClass("footer", "hide"); | ||||
|         } | ||||
|  | ||||
|         if(window.location.hostname != "fb.zoff.me") Channel.share_link_modifier(); | ||||
| @@ -45,65 +43,53 @@ var Channel = { | ||||
|         if(Player !== undefined && !client) Player.stopInterval= false; | ||||
|  | ||||
|         if(!client) { | ||||
|             //$('ul.playlist-tabs').tabs(); | ||||
|             $('ul.playlist-tabs-loggedIn').tabs(); | ||||
|             $('ul.chatTabs').tabs(); | ||||
|             //Helper.tabs('.playlist-tabs'); | ||||
|             Helper.tabs('.playlist-tabs-loggedIn'); | ||||
|             Helper.tabs('.chatTabs'); | ||||
|         } | ||||
|         $(".sidenav").sidenav({ | ||||
|         var sidenavElem = document.getElementsByClassName("sidenav")[0]; | ||||
|         M.Sidenav.init(sidenavElem, { | ||||
|             menuWidth: 310, | ||||
|             edge: side, | ||||
|             closeOnClick: false, | ||||
|             draggable: false, | ||||
|             onOpenStart: function(el) { | ||||
|                 if(!$(".hamburger-sidenav").hasClass("open")) { | ||||
|                     $(".hamburger-sidenav").addClass("open"); | ||||
|                 } | ||||
|                 $('*[id*=sidenav-overlay]:visible').each(function(i) { | ||||
|                     if(i > 0) { | ||||
|                         this.remove(); | ||||
|                     } | ||||
|                 }); | ||||
|                 Helper.addClass(".hamburger-sidenav", "open"); | ||||
|             }, | ||||
|             onCloseStart: function(el) { | ||||
|                 $(".hamburger-sidenav").removeClass("open"); | ||||
|                 $('*[id*=sidenav-overlay]:visible').each(function(i) { | ||||
|                     if(i > 0) { | ||||
|                         this.remove(); | ||||
|                     } | ||||
|                 }); | ||||
|                 Helper.removeClass(".hamburger-sidenav", "open"); | ||||
|             }, | ||||
|         }); | ||||
|         $('.collapsible').collapsible({ | ||||
|         M.Collapsible.init(document.getElementsByClassName("settings-collapsible")[0], { | ||||
|             accordion : true | ||||
|         }); | ||||
|  | ||||
|         if(!client) { | ||||
|             $("#embed").modal(); | ||||
|             M.Modal.init(document.getElementById("embed")); | ||||
|         } else { | ||||
|             //$("#help").remove(); | ||||
|             $("#embed").remove(); | ||||
|             //$(".help-button-footer").remove(); | ||||
|             $(".embed-button-footer").remove(); | ||||
|             $(".tabs").remove(); | ||||
|             Helper.removeElement("#embed"); | ||||
|             Helper.removeElement(".embed-button-footer"); | ||||
|             Helper.removeElement(".tabs"); | ||||
|         } | ||||
|         $("#help").modal(); | ||||
|         $("#contact").modal(); | ||||
|         $("#channel-share-modal").modal(); | ||||
|         $("#delete_song_alert").modal({ | ||||
|         M.Modal.init(document.getElementById("help")); | ||||
|         M.Modal.init(document.getElementById("contact")); | ||||
|         M.Modal.init(document.getElementById("channel-share-modal")); | ||||
|         M.Modal.init(document.getElementById("delete_song_alert"), { | ||||
|             dismissible: false | ||||
|         }); | ||||
|         $("#user_password").modal({ | ||||
|         M.Modal.init(document.getElementById("user_password"), { | ||||
|             dismissible: false | ||||
|         }); | ||||
|  | ||||
|         Channel.spotify_is_authenticated(spotify_authenticated); | ||||
|  | ||||
|         result_html 	   	  = $("#temp-results-container"); | ||||
|         pagination_buttons_html = $("<div>").append($(".pagination-results").clone()).html(); | ||||
|         empty_results_html 	  = $("#empty-results-container").html(); | ||||
|         not_import_html       = $(".not-imported-container").html(); | ||||
|         not_export_html       = $(".not-exported-container").html(); | ||||
|         $(".not-imported-container").empty(); | ||||
|         $(".not-exported-container").empty(); | ||||
|         result_html 	   	  = document.getElementById("temp-results-container"); | ||||
|         pagination_buttons_html = "<div class='pagination-results'>" + document.getElementsByClassName("pagination-results")[0].cloneNode(true).innerHTML + "</div>"; | ||||
|         empty_results_html 	  = Helper.html("#empty-results-container"); | ||||
|         not_import_html       = Helper.html(".not-imported-container"); | ||||
|         not_export_html       = Helper.html(".not-exported-container"); | ||||
|         Helper.setHtml(".not-imported-container", ""); | ||||
|         Helper.setHtml(".not-exported-container", ""); | ||||
|  | ||||
|         if(socket === undefined){ | ||||
|             no_socket = false; | ||||
| @@ -122,21 +108,23 @@ var Channel = { | ||||
|         setup_auth_listener(); | ||||
|  | ||||
|         if(Crypt.get_offline()){ | ||||
|             $(".offline_switch_class")[0].checked = true; | ||||
|             document.getElementsByClassName("offline_switch_class")[0].checked = true; | ||||
|             change_offline(true, offline); | ||||
|         } | ||||
|         if(!Helper.mobilecheck() && ($("#alreadychannel").length === 0 || !Hostcontroller.old_id || $("#code-text").text().toUpperCase() == "ABBADUR")) setup_host_initialization(); | ||||
|         if(!Helper.mobilecheck() && (document.querySelectorAll("#alreadychannel").length === 0 || !Hostcontroller.old_id || document.getElementById("code-text").innerText.toUpperCase() == "ABBADUR")) setup_host_initialization(); | ||||
|  | ||||
|         if($("#alreadychannel").length === 0 || Helper.mobilecheck()){ | ||||
|         if(document.querySelectorAll("#alreadychannel").length === 0 || Helper.mobilecheck()){ | ||||
|             setup_youtube_listener(); | ||||
|             get_list_listener(); | ||||
|             setup_suggested_listener(); | ||||
|             setup_viewers_listener(); | ||||
|             if(!client) { | ||||
|                 setup_viewers_listener(); | ||||
|             } | ||||
|         } else { | ||||
|             $("#channel-load").css("display", "none"); | ||||
|             $("#player").css("opacity", "1"); | ||||
|             $("#controls").css("opacity", "1"); | ||||
|             $(".playlist").css("opacity", "1"); | ||||
|             Helper.css("#channel-load", "display", "none"); | ||||
|             Helper.css("#player", "opacity", "1"); | ||||
|             Helper.css("#controls", "opacity", "1"); | ||||
|             Helper.css(".playlist", "opacity", "1"); | ||||
|             if(!client) { | ||||
|                 Player.readyLooks(); | ||||
|                 Playercontrols.initYoutubeControls(Player.player); | ||||
| @@ -144,75 +132,75 @@ var Channel = { | ||||
|                 if(player_ready) { | ||||
|                     Player.player.setVolume(Crypt.get_volume()); | ||||
|                 } | ||||
|                 $(".video-container").removeClass("no-opacity"); | ||||
|                 Helper.removeClass(".video-container", "no-opacity"); | ||||
|                 var codeURL = "https://remote."+window.location.hostname+"/"+id; | ||||
|                 $("#code-text").text(id); | ||||
|                 $("#code-qr").attr("src", "https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+codeURL); | ||||
|                 $("#code-link").attr("href", codeURL); | ||||
|                 Helper.setHtml("#code-text", id); | ||||
|                 document.getElementById("code-qr").setAttribute("src", "https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+codeURL); | ||||
|                 document.getElementById("code-link").setAttribute("href", codeURL); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         if(!client) { | ||||
|             var shareCodeUrl = window.location.protocol + "//client."+window.location.hostname+"/"+chan.toLowerCase(); | ||||
|             $("#share-join-qr").attr("src", "https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+shareCodeUrl); | ||||
|             $("#channel-name-join").text("client." + window.location.hostname + "/" + chan.toLowerCase()); | ||||
|             document.getElementById("share-join-qr").setAttribute("src", "https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+shareCodeUrl); | ||||
|             Helper.setHtml("#channel-name-join", "client." + window.location.hostname + "/" + chan.toLowerCase()); | ||||
|         } else { | ||||
|             $(".video-container").remove(); | ||||
|             $(".offline-panel").remove(); | ||||
|             $(".remote-panel").remove(); | ||||
|             $(".mobile-remote-panel").remove(); | ||||
|             $(".import-panel").remove(); | ||||
|             $(".export-panel").remove(); | ||||
|             Helper.removeElement(".video-container"); | ||||
|             Helper.removeElement(".offline-panel"); | ||||
|             Helper.removeElement(".remote-panel"); | ||||
|             Helper.removeElement(".mobile-remote-panel"); | ||||
|             Helper.removeElement(".import-panel"); | ||||
|             Helper.removeElement(".export-panel"); | ||||
|         } | ||||
|         if(no_socket || Helper.mobilecheck()){ | ||||
|             emit_list(); | ||||
|         } | ||||
|  | ||||
|         if(((!localStorage.getItem("_jSeen") || localStorage.getItem("_jSeen") != "seen") && !Helper.mobilecheck()) && !client) { | ||||
|             $('.tap-target-join').tapTarget(); | ||||
|             $('.tap-target-join').tapTarget('open'); | ||||
|             var instance = M.TapTarget.init(document.getElementsByClassName('tap-target-join')[0]); | ||||
|             instance.open(); | ||||
|             tap_target_timeout = setTimeout(function() { | ||||
|                 $('.tap-target-join').tapTarget('close'); | ||||
|                 instance.close(); | ||||
|             }, 4000); | ||||
|             localStorage.setItem("_jSeen", "seen"); | ||||
|         } | ||||
|  | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             if(!client) { | ||||
|                 $("#chan").tooltip({ | ||||
|                 Helper.tooltip("#chan", { | ||||
|                     delay: 5, | ||||
|                     position: "bottom", | ||||
|                     html: "Show join URL", | ||||
|                 }); | ||||
|             } | ||||
|  | ||||
|             $("#viewers").tooltip({ | ||||
|             Helper.tooltip("#viewers", { | ||||
|                 delay: 5, | ||||
|                 position: "top", | ||||
|                 html: "Viewers" | ||||
|             }); | ||||
|  | ||||
|             $("#fullscreen").tooltip({ | ||||
|             Helper.tooltip("#fullscreen", { | ||||
|                 delay: 5, | ||||
|                 position: "top", | ||||
|                 html: "Fullscreen" | ||||
|             }); | ||||
|  | ||||
|             $(".search-btn-container").tooltip({ | ||||
|             Helper.tooltip(".search-btn-container", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Search" | ||||
|             }); | ||||
|  | ||||
|  | ||||
|             $(".shuffle-btn-container").tooltip({ | ||||
|             Helper.tooltip(".shuffle-btn-container", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Shuffle", | ||||
|             }); | ||||
|  | ||||
|             $("#settings").tooltip({ | ||||
|             Helper.tooltip("#settings", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Settings", | ||||
| @@ -229,9 +217,8 @@ var Channel = { | ||||
|             if(!client) { | ||||
|                 Mobile_remote.initiate_volume(); | ||||
|             } | ||||
|             $(".close-settings").addClass("hide"); | ||||
|             }	else { | ||||
|             $('input#chan_description').characterCounter(); | ||||
|                 Helper.addClass(".close-settings", "hide"); | ||||
|         } else { | ||||
|             if(!client) { | ||||
|                 Channel.window_width_volume_slider(); | ||||
|             } | ||||
| @@ -251,51 +238,52 @@ var Channel = { | ||||
|  | ||||
|         if(!Helper.msieversion() && !Helper.mobilecheck() && !client) Notification.requestPermission(); | ||||
|  | ||||
|         $(".search_input").focus(); | ||||
|         document.getElementsByClassName("search_input")[0].focus(); | ||||
|  | ||||
|         Helper.sample(); | ||||
|         if(!Helper.mobilecheck() && !client) { | ||||
|             $('.castButton').tooltip({ | ||||
|             Helper.tooltip('.castButton', { | ||||
|                 delay: 5, | ||||
|                 position: "top", | ||||
|                 html: "Cast Zoff to TV" | ||||
|             }); | ||||
|  | ||||
|             $("#color_embed").spectrum({ | ||||
|             /*$("#color_embed").spectrum({ | ||||
|                 color: "#808080", | ||||
|                 change: function(c) { | ||||
|                     color = c.toHexString().substring(1); // #ff0000 | ||||
|                     $("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color)); | ||||
|                     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color); | ||||
|                 }, | ||||
|                 appendTo: "#embed", | ||||
|                 containerClassName: 'polyfill-color z-depth-4', | ||||
|                 show: function(color) { | ||||
|                 }, | ||||
|             }); | ||||
|             });*/ | ||||
|  | ||||
|             $(".sp-choose").addClass("hide"); | ||||
|             $(".sp-cancel").addClass("btn-flat waves-effect waves-red"); | ||||
|             $(".sp-cancel").removeClass("sp-cancel"); | ||||
|             $(".sp-button-container").append("<a href='#' class='btn-flat waves-effect waves-green sp-choose-link'>CHOOSE</a>"); | ||||
|             /*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", "<a href='#' class='btn-flat waves-effect waves-green sp-choose-link'>CHOOSE</a>"); | ||||
|             */ | ||||
|         } | ||||
|  | ||||
|         $(".sp-choose-link").on("click", function(e) { | ||||
|             e.preventDefault(); | ||||
|             $(".sp-choose").trigger("click"); | ||||
|         addListener("click", ".sp-choose-link", function(e) { | ||||
|             event.preventDefault(); | ||||
|             document.getElementsByClassName("sp-choose")[0].click(); | ||||
|         }); | ||||
|  | ||||
|         $("#results" ).hover( function() { $("div.result").removeClass("hoverResults"); i = 0; }, function(){ }); | ||||
|         $("#search").focus(); | ||||
|         $("#embed-button").css("display", "inline-block"); | ||||
|         $("#embed-area").val(embed_code(embed_autoplay, embed_width, embed_height, color)); | ||||
|         $("#search").attr("placeholder", "Find song on YouTube..."); | ||||
|         //$("#results" ).hover( function() { Helper.removeClass(".result", "hoverResults"); i = 0; }, function(){ }); | ||||
|         document.getElementById("search").focus(); | ||||
|         Helper.css("#embed-button", "display", "inline-block"); | ||||
|         document.getElementById("search").setAttribute("placeholder", "Find song on YouTube..."); | ||||
|  | ||||
|         if(!$("footer").hasClass("padding-bottom-novideo") && !client) { | ||||
|             $("footer").addClass("padding-bottom-novideo"); | ||||
|         if(!client) { | ||||
|             Helper.addClass("footer", "padding-bottom-novideo"); | ||||
|             document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color); | ||||
|         } | ||||
|  | ||||
|         if(!/chrom(e|ium)/.test(navigator.userAgent.toLowerCase()) && !Helper.mobilecheck() && !client){ | ||||
|             $(".castButton").css("display", "none"); | ||||
|             Helper.css(".castButton", "display", "none"); | ||||
|         } | ||||
|  | ||||
|         Helper.log(["chromecastAvailable " + chromecastAvailable, "chromecastReady " + chromecastReady]); | ||||
| @@ -327,8 +315,8 @@ var Channel = { | ||||
|     seekToClick: function(e){ | ||||
|         var acceptable = ["bar", "controls", "duration"]; | ||||
|  | ||||
|         if(acceptable.indexOf($(e.target).attr("id")) >= 0) { | ||||
|             var total = full_playlist[full_playlist.length - 1].duration / $("#controls").width(); | ||||
|         if(acceptable.indexOf(e.target.getAttribute("id")) >= 0) { | ||||
|             var total = full_playlist[full_playlist.length - 1].duration / document.getElementById("controls").offsetWidth; | ||||
|             total = total * e.clientX; | ||||
|  | ||||
|             if(!chromecastAvailable){ | ||||
| @@ -349,7 +337,7 @@ var Channel = { | ||||
|                 per = 100; | ||||
|                 else if(duration === 0) | ||||
|                 per = 0; | ||||
|                 $("#bar").width(per+"%"); | ||||
|                 document.getElementById("bar").style.width = per + "%" | ||||
|             } else { | ||||
|                 castSession.sendMessage("urn:x-cast:zoff.me", {type: "seekTo", seekTo: total}); | ||||
|             } | ||||
| @@ -357,38 +345,38 @@ var Channel = { | ||||
|     }, | ||||
|  | ||||
|     seekToMove: function(e){ | ||||
|         var pos_x = e.clientX - Math.ceil($("#seekToDuration").width() / 2) - 8; | ||||
|         var pos_x = e.clientX - Math.ceil(document.getElementById("seekToDuration").outerWidth / 2) - 8; | ||||
|         if(pos_x < 0) pos_x = 0; | ||||
|         else if(pos_x + $("#seekToDuration").width() > $("#controls").width()) { | ||||
|             pos_x = $("#controls").width() - $("#seekToDuration").width(); | ||||
|         else if(pos_x + document.getElementById("seekToDuration").outerWidth > document.getElementById("controls").outerWidth) { | ||||
|             pos_x = document.getElementById("controls").outerWidth - document.getElementById("seekToDuration").outerWidth; | ||||
|         } | ||||
|         $("#seekToDuration").css("left", pos_x); | ||||
|         Helper.css("#seekToDuration", "left", pos_x); | ||||
|         try{ | ||||
|             var total = full_playlist[full_playlist.length - 1].duration / $("#controls").width(); | ||||
|             var total = full_playlist[full_playlist.length - 1].duration / document.getElementById("controls").outerWidth; | ||||
|             total = total * e.clientX; | ||||
|             var _time = Helper.secondsToOther(total); | ||||
|             var _minutes = Helper.pad(_time[0]); | ||||
|             var _seconds = Helper.pad(Math.ceil(_time[1])); | ||||
|             $("#seekToDuration").text(_minutes + ":" + _seconds); | ||||
|             Helper.setHtml("#seekToDuration", _minutes + ":" + _seconds); | ||||
|  | ||||
|             var acceptable = ["bar", "controls", "duration"]; | ||||
|             if(acceptable.indexOf($(e.target).attr("id")) >= 0 && dragging) { | ||||
|                 $("#bar").width(((100 / duration) * total) + "%"); | ||||
|             if(acceptable.indexOf(e.target.getAttribute("id")) >= 0 && dragging) { | ||||
|                 document.getElementById("bar").style.width(((100 / duration) * total) + "%"); | ||||
|             } | ||||
|         } catch(e){} | ||||
|     }, | ||||
|  | ||||
|     set_title_width: function(start){ | ||||
|         if($(window).width() + 8 > 600){ | ||||
|             var add_width = $(".brand-logo").outerWidth() | ||||
|         if(window.innerWidth > 600){ | ||||
|             var add_width = document.getElementsByClassName("brand-logo")[0].offsetWidth | ||||
|             if(start){ | ||||
|                 add_width = $(window).width()*0.15; | ||||
|                 add_width = window.innerWidth * 0.15; | ||||
|             } | ||||
|             var test_against_width = $(window).width() - $(".control-list").width() - add_width - 33; | ||||
|             var test_against_width = window.innerWidth - document.getElementsByClassName("control-list")[0].offsetWidth - add_width - 33; | ||||
|             title_width = test_against_width; | ||||
|             $(".title-container").width(title_width); | ||||
|             document.getElementsByClassName("title-container")[0].style.width = title_width + "px"; | ||||
|         } else { | ||||
|             $(".title-container").width("100%"); | ||||
|             document.getElementsByClassName("title-container")[0].style.width = "100%"; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -401,41 +389,40 @@ var Channel = { | ||||
|                 "expires_in: " + access_token_data.expires_in | ||||
|             ]); | ||||
|  | ||||
|             $(".spotify_authenticated").css("display", "block"); | ||||
|             $(".spotify_unauthenticated").css("display", "none"); | ||||
|             Helper.css(".spotify_authenticated", "display", "block"); | ||||
|             Helper.css(".spotify_unauthenticated", "display", "none"); | ||||
|         } else { | ||||
|             Helper.log(["Spotify is not authenticated"]); | ||||
|             $(".spotify_authenticated").css("display", "none"); | ||||
|             $(".spotify_unauthenticated").css("display", "block"); | ||||
|             Helper.css(".spotify_authenticated", "display", "none"); | ||||
|             Helper.css(".spotify_unauthenticated", "display", "block"); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     add_context_menu: function() { | ||||
|         $(document).on("contextmenu", ".vote-container", function(e) { | ||||
|             e.preventDefault(); | ||||
|         addListener("contextmenu", ".vote-container", function(e) { | ||||
|             event.preventDefault(); | ||||
|             var that = this; | ||||
|             contextListener(that, e); | ||||
|         }); | ||||
|  | ||||
|         $(document).on("contextmenu", ".add-suggested", function(e) { | ||||
|             e.preventDefault(); | ||||
|         addListener("contextmenu", ".add-suggested", function(e) { | ||||
|             event.preventDefault(); | ||||
|             var that = this; | ||||
|             contextListener(that, e); | ||||
|         }); | ||||
|  | ||||
|         $(document).on("click", ".list-remove", function(e) { | ||||
|             e.preventDefault(); | ||||
|         addListener("click", ".list-remove", function(e) { | ||||
|             event.preventDefault(); | ||||
|             var that = this; | ||||
|             contextListener(that, e); | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     share_link_modifier: function(){ | ||||
|         $("#facebook-code-link").attr("href", "https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/" + chan.toLowerCase()); | ||||
|         $("#facebook-code-link").attr("onclick", "window.open('https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/" + chan.toLowerCase() + "', 'Share Playlist','width=600,height=300'); return false;"); | ||||
|         $("#twitter-code-link").attr("href", "https://twitter.com/intent/tweet?url=https://zoff.me/" + chan.toLowerCase() + "&text=Check%20out%20this%20playlist%20" + chan.toLowerCase() + "%20on%20Zoff!&via=zoffmusic"); | ||||
|         $("#twitter-code-link").attr("onclick", "window.open('https://twitter.com/intent/tweet?url=https://zoff.me/" + chan.toLowerCase() + "/&text=Check%20out%20this%20playlist%20" + chan.toLowerCase() + "%20on%20Zoff!&via=zoffmusic','Share Playlist','width=600,height=300'); return false;"); | ||||
|         //$("#qr-code-image-link").attr("src", "//chart.googleapis.com/chart?chs=150x150&cht=qr&chl=https://zoff.me/" + chan.toLowerCase() + "&choe=UTF-8&chld=L%7C1"); | ||||
|         document.getElementById("facebook-code-link").setAttribute("href", "https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/" + chan.toLowerCase()); | ||||
|         document.getElementById("facebook-code-link").setAttribute("onclick", "window.open('https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/" + chan.toLowerCase() + "', 'Share Playlist','width=600,height=300'); return false;"); | ||||
|         document.getElementById("twitter-code-link").setAttribute("href", "https://twitter.com/intent/tweet?url=https://zoff.me/" + chan.toLowerCase() + "&text=Check%20out%20this%20playlist%20" + chan.toLowerCase() + "%20on%20Zoff!&via=zoffmusic"); | ||||
|         document.getElementById("twitter-code-link").setAttribute("onclick", "window.open('https://twitter.com/intent/tweet?url=https://zoff.me/" + chan.toLowerCase() + "/&text=Check%20out%20this%20playlist%20" + chan.toLowerCase() + "%20on%20Zoff!&via=zoffmusic','Share Playlist','width=600,height=300'); return false;"); | ||||
|     }, | ||||
|  | ||||
|     window_width_volume_slider: function() { | ||||
| @@ -445,31 +432,35 @@ var Channel = { | ||||
|         } else if(window.innerWidth > 600 && slider_type == "vertical") { | ||||
|             slider_type = "horizontal"; | ||||
|             Playercontrols.initSlider(); | ||||
|             $(".volume-container").removeClass("hide"); | ||||
|             Helper.removeClass(".volume-container", "hide"); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     listeners: function(on) { | ||||
|         if(on) { | ||||
|             $("#chatchannel").scroll(function(e) { | ||||
|                 if(!programscroll) { | ||||
|                     userscroll = true; | ||||
|                     if($("#chatchannel").scrollTop() + $("#chatchannel").innerHeight() >= $("#chatchannel")[0].scrollHeight) { | ||||
|                         userscroll = false; | ||||
|                     } | ||||
|         var scrollListener = function(e) { | ||||
|             if(!programscroll) { | ||||
|                 userscroll = true; | ||||
|                 if(document.getElementById("chatchannel").scrollTop + document.getElementById("chatchannel").offsetHeight >= document.getElementById("chatchannel").scrollHeight) { | ||||
|                     userscroll = false; | ||||
|                 } | ||||
|             }); | ||||
|             $("#chatall").scroll(function(e) { | ||||
|                 if(!programscroll) { | ||||
|                     userscroll = true; | ||||
|                     if($("#chatall").scrollTop() + $("#chatall").innerHeight() >= $("#chatall")[0].scrollHeight) { | ||||
|                         userscroll = false; | ||||
|                     } | ||||
|             } | ||||
|         } | ||||
|         var scrollAllListener = function(e) { | ||||
|             if(!programscroll) { | ||||
|                 userscroll = true; | ||||
|                 if(document.getElementById("chatall").scrollTop+ document.getElementById("chatall").offsetHeight >= document.getElementById("chatall").scrollHeight) { | ||||
|                     userscroll = false; | ||||
|                 } | ||||
|             }) | ||||
|         } else { | ||||
|             $("#chatchannel").off("scroll"); | ||||
|             $("#chatall").off("scroll"); | ||||
|             } | ||||
|         } | ||||
|         if(!client) { | ||||
|             if(on) { | ||||
|                 document.getElementById("chatchannel").addEventListener("scroll", scrollListener); | ||||
|                 document.getElementById("chatall").addEventListener("scroll", scrollListener); | ||||
|             } else { | ||||
|                 document.getElementById("chatchannel").removeEventListener("scroll", scrollListener); | ||||
|                 document.getElementById("chatall").removeEventListener("scroll", scrollAllListener); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -482,7 +473,7 @@ var Channel = { | ||||
|             Admin.beginning = true; | ||||
|  | ||||
|             chan = url_split[3].replace("#", ""); | ||||
|             $("#chan").html(Helper.upperFirst(chan)); | ||||
|             document.getElementById("chan").innerHTML = Helper.upperFirst(chan); | ||||
|             var add = ""; | ||||
|             w_p = true; | ||||
|             if(private_channel) add = Crypt.getCookie("_uI") + "_"; | ||||
| @@ -496,15 +487,14 @@ var Channel = { | ||||
|             var channel_before_move = chan.toLowerCase(); | ||||
|             clearTimeout(timed_remove_check); | ||||
|             changing_to_frontpage = true; | ||||
|             //$.contextMenu( 'destroy', ".playlist-element" ); | ||||
|             user_change_password = false; | ||||
|             clearTimeout(width_timeout); | ||||
|             if(fireplace_initiated){ | ||||
|                 fireplace_initiated = false; | ||||
|                 Player.fireplace.destroy(); | ||||
|                 $("#fireplace_player").css("display", "none"); | ||||
|                 Helper.css("#fireplace_player", "display", "none"); | ||||
|             } | ||||
|             $("#channel-load").css("display", "block"); | ||||
|             Helper.css("#channel-load", "display", "block"); | ||||
|             window.scrollTo(0, 0); | ||||
|  | ||||
|             Player.stopInterval = true; | ||||
| @@ -512,34 +502,36 @@ var Channel = { | ||||
|             began 				 = false; | ||||
|             durationBegun  		 = false; | ||||
|  | ||||
|             $("#embed-button").css("display", "none"); | ||||
|             Helper.css("#embed-button", "display", "none"); | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('.castButton').tooltip("destroy"); | ||||
|                 $("#viewers").tooltip("destroy"); | ||||
|                 //$('.castButton-unactive').tooltip("destroy"); | ||||
|                 $("#offline-mode").tooltip("destroy"); | ||||
|                 if(M.Tooltip.getInstance($("#chan_thumbnail")) != undefined) { | ||||
|                     $('#chan_thumbnail').tooltip("destroy"); | ||||
|                 Helper.tooltip('.castButton', "destroy"); | ||||
|                 Helper.tooltip("#viewers", "destroy"); | ||||
|                 Helper.tooltip("#offline-mode", "destroy"); | ||||
|                 if(M.Tooltip.getInstance(document.getElementById("chan_thumbnail")) != undefined) { | ||||
|                     Helper.tooltip('#chan_thumbnail', "destroy"); | ||||
|                 } | ||||
|                 $('#fullscreen').tooltip("destroy"); | ||||
|                 if(M.Tooltip.getInstance($("#admin-lock")) != undefined) { | ||||
|                     $('#admin-lock').tooltip("destroy"); | ||||
|                 Helper.tooltip('#fullscreen', "destroy"); | ||||
|                 if(M.Tooltip.getInstance(document.getElementById("admin-lock")) != undefined) { | ||||
|                     Helper.tooltip('#admin-lock', "destroy"); | ||||
|                 } | ||||
|                 $(".search-btn-container").tooltip("destroy"); | ||||
|                 $(".shuffle-btn-container").tooltip("destroy"); | ||||
|                 $("#settings").tooltip("destroy"); | ||||
|                 Helper.tooltip(".search-btn-container", "destroy"); | ||||
|                 Helper.tooltip(".shuffle-btn-container", "destroy"); | ||||
|                 Helper.tooltip("#settings", "destroy"); | ||||
|             } | ||||
|             $("#seekToDuration").remove(); | ||||
|             $(".sidenav").sidenav("destroy"); | ||||
|             Helper.removeElement("#seekToDuration"); | ||||
|  | ||||
|             M.Sidenav.getInstance(document.getElementsByClassName("sidenav")[0]).destroy(); | ||||
|             if(!client) { | ||||
|                 if(!Helper.mobilecheck()) { | ||||
|                     $("#chan").tooltip("destroy"); | ||||
|                     Helper.tooltip("#chan", "destroy"); | ||||
|                 } | ||||
|                 if(M.TapTarget.getInstance($(".tap-target"))) { | ||||
|                     $('.tap-target').tapTarget('close'); | ||||
|                 var tap_1 = document.querySelectorAll(".tap-target") | ||||
|                 if(tap_1.length > 0 && M.TapTarget.getInstance(tap_1[0])) { | ||||
|                     M.TapTarget.getInstance(tap_1[0]).close(); | ||||
|                 } | ||||
|                 if(M.TapTarget.getInstance($(".tap-target-join"))) { | ||||
|                     $('.tap-target-join').tapTarget('close'); | ||||
|                 var tap_2 = document.querySelectorAll(".tap-target-join") | ||||
|                 if(tap_2.length > 0 && M.TapTarget.getInstance(tap_2[0])) { | ||||
|                     M.TapTarget.getInstance(tap_2[0]).close(); | ||||
|                 } | ||||
|             } | ||||
|             clearTimeout(tap_target_timeout); | ||||
| @@ -571,8 +563,9 @@ var Channel = { | ||||
|             socket.removeEventListener("suggested"); | ||||
|             socket.removeEventListener("color"); | ||||
|             socket.removeEventListener("chat_history"); | ||||
|             $.ajax({ | ||||
|             Helper.ajax({ | ||||
|                 url: "/", | ||||
|                 method: "GET", | ||||
|                 success: function(e){ | ||||
|  | ||||
|                     if(!client) { | ||||
| @@ -586,18 +579,18 @@ var Channel = { | ||||
|                         song_title = ""; | ||||
|                     } | ||||
|  | ||||
|                     $("meta[name=theme-color]").attr("content", "#2D2D2D"); | ||||
|                     document.querySelectorAll("meta[name=theme-color]")[0].setAttribute("content", "#2D2D2D"); | ||||
|  | ||||
|                     if(!Helper.mobilecheck() && !user_auth_avoid){ | ||||
|                         $("#playbar").remove(); | ||||
|                         $("#main_components").remove(); | ||||
|                         $("#player").addClass("player_bottom"); | ||||
|                         $("#main-row").addClass("frontpage_modified_heights"); | ||||
|                         $("#player").css("opacity", "1"); | ||||
|                         $("#video-container").removeClass("no-opacity"); | ||||
|                         $("#main-row").prepend("<div id='player_bottom_overlay' class='player player_bottom'></div>"); | ||||
|                         $("#player_bottom_overlay").append("<a id='closePlayer' title='Close Player'>X</a>"); | ||||
|                         $("#playlist").remove(); | ||||
|                         Helper.removeElement("#playbar"); | ||||
|                         Helper.removeElement("#main_components"); | ||||
|                         Helper.addClass("#player", "player_bottom"); | ||||
|                         Helper.addClass("#main-row", "frontpage_modified_heights"); | ||||
|                         Helper.css("#player", "opacity", "1"); | ||||
|                         Helper.removeClass("#video-container", "no-opacity"); | ||||
|                         document.getElementById("main-row").insertAdjacentHTML("afterbegin", "<div id='player_bottom_overlay' class='player player_bottom'></div>"); | ||||
|                         document.getElementById("player_bottom_overlay").insertAdjacentHTML("afterbegin", "<a id='closePlayer' title='Close Player'>X</a>"); | ||||
|                         Helper.removeElement("#playlist"); | ||||
|                     } else { | ||||
|                         try{ | ||||
|                             Player.player.destroy(); | ||||
| @@ -606,25 +599,27 @@ var Channel = { | ||||
|                         document.title = "Zoff"; | ||||
|                     } | ||||
|  | ||||
|                     var response = $("<div>" + e + "</div>"); | ||||
|                     var response = document.createElement("div"); | ||||
|                     response.innerHTML = e; | ||||
|                     Helper.removeElement("#sidenav-overlay"); | ||||
|                     document.getElementsByTagName("main")[0].className = "center-align container"; | ||||
|                     Helper.removeClass("#main-container", "channelpage"); | ||||
|                     document.getElementById("main-container").setAttribute("style", ""); | ||||
|                     document.getElementsByTagName("header")[0].innerHTML = response.querySelectorAll("header")[0].outerHTML; | ||||
|  | ||||
|                     //$(".drag-target").remove(); | ||||
|                     $("#sidenav-overlay").remove(); | ||||
|                     $("main").attr("class", "center-align container"); | ||||
|                     $("#main-container").removeClass("channelpage"); | ||||
|                     $("#main-container").attr("style", ""); | ||||
|                     $("header").html($(response.find("header")).html()); | ||||
|                     $($(response.find(".section.mega"))).insertAfter("header"); | ||||
|                     $($(response.find(".section.mobile-search"))).insertAfter(".mega"); | ||||
|                     if(Helper.mobilecheck() || user_auth_avoid) $("main").html($(response.find("main")).html()); | ||||
|                     else $("main").append($(response.find("#main_section_frontpage")).wrap("<div>").parent().html()); | ||||
|                     $(".page-footer").removeClass("padding-bottom-extra"); | ||||
|                     $(".page-footer").removeClass("padding-bottom-novideo"); | ||||
|                     $("#favicon").attr("href", "/assets/images/favicon-32x32.png"); | ||||
|                     document.getElementsByTagName("header")[0].insertAdjacentHTML("afterend", response.querySelectorAll(".section.mega")[0].outerHTML); | ||||
|                     //document.getElementsByTagName("header")[0].insertAdjacentHTML("afterend", response.querySelectorAll(".section.mobile-search")[0].innerHTML); | ||||
|                     if(Helper.mobilecheck() || user_auth_avoid) { | ||||
|                         document.getElementsByTagName("main")[0].innerHTML = response.querySelectorAll("main")[0].innerHTML; | ||||
|                     } else { | ||||
|                         document.getElementsByTagName("main")[0].insertAdjacentHTML("beforeend", response.querySelectorAll("#main_section_frontpage")[0].outerHTML); | ||||
|                     } | ||||
|                     Helper.removeClass(".page-footer", "padding-bottom-extra"); | ||||
|                     Helper.removeClass(".page-footer", "padding-bottom-novideo"); | ||||
|                     document.getElementById("favicon").setAttribute("href", "/assets/images/favicon-32x32.png"); | ||||
|  | ||||
|                     //$(".context-menu-list").remove(); | ||||
|                     Helper.log(["Socket", socket]); | ||||
|                     if($("#alreadyfp").length == 1){ | ||||
|                     if(document.querySelectorAll("#alreadyfp").length == 1){ | ||||
|                         Frontpage.init(); | ||||
|                     }else { | ||||
|                         fromChannel = true; | ||||
| @@ -633,12 +628,12 @@ var Channel = { | ||||
|                     } | ||||
|                     changing_to_frontpage = false; | ||||
|  | ||||
|                     if($("#alreadychannel").length === 0 && !user_auth_avoid){ | ||||
|                         $("head").append("<div id='alreadychannel'></div"); | ||||
|                     if(document.querySelectorAll("#alreadychannel").length === 0 && !user_auth_avoid){ | ||||
|                         document.getElementsByTagName("head")[0].insertAdjacentHTML("beforeend", "<div id='alreadychannel'></div"); | ||||
|                     } else if(user_auth_avoid) { | ||||
|                         $("#alreadychannel").remove(); | ||||
|                         Helper.removeElement("#alreadychannel"); | ||||
|                     } | ||||
|                     $("#channel-load").css("display", "none"); | ||||
|                     Helper.css("#channel-load", "display", "none"); | ||||
|                     user_auth_avoid = false; | ||||
|                 } | ||||
|             }); | ||||
|   | ||||
| @@ -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("<li title='Zoff''><span style='color:"+color_temp+";'>System</span>: </li>"); | ||||
|                     document.querySelector("#chatall").insertAdjacentHTML("beforeend", "<li title='Zoff''><span style='color:"+color_temp+";'>System</span>: </li>"); | ||||
|                     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("<li><span style='color:"+color_temp+";'>System</span>: </li>"); | ||||
|                     document.querySelector("#chatchannel").insertAdjacentHTML("beforeend", "<li><span style='color:"+color_temp+";'>System</span>: </li>"); | ||||
|                     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,22 +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; | ||||
|             if($(".chat-link span.badge.new.white").hasClass("hide")){ | ||||
|                 $(".chat-link span.badge.new.white").removeClass("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; | ||||
|             $(".chat-link span.badge.new.white").html(to_display); | ||||
|             Helper.setHtml(document.querySelector(".chat-link span.badge.new.white"), to_display); | ||||
|         } | ||||
|  | ||||
|         if(document.hidden)	{ | ||||
|             $("#favicon").attr("href", "/assets/images/highlogo.png"); | ||||
|             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) { | ||||
| @@ -129,9 +126,9 @@ var Chat = { | ||||
|             _time = new Date(time_sent); | ||||
|         } | ||||
|         var time = Helper.pad(_time.getHours()) + ":" + Helper.pad(_time.getMinutes()); | ||||
|         $("#chatall").append("<li title='"+inp.channel+"'><span class='time_color'>" + time + "</span> " + icon_add + "<span style='color:"+color_temp+";'>"+inp.from+"</span><span class='channel-info-all-chat'> " + inp.channel + " </span></li>"); | ||||
|         document.querySelector("#chatall").insertAdjacentHTML("beforeend", "<li title='"+inp.channel+"'><span class='time_color'>" + time + "</span> " + icon_add + "<span style='color:"+color_temp+";'>"+inp.from+"</span><span class='channel-info-all-chat'> " + inp.channel + " </span></li>"); | ||||
|         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; | ||||
| @@ -141,20 +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); | ||||
|             if($(".chat-link span.badge.new.white").hasClass("hide")) { | ||||
|                 $(".chat-link span.badge.new.white").removeClass("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; | ||||
|             $(".chat-link span.badge.new.white").html(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 = ""; | ||||
| @@ -175,9 +170,9 @@ var Chat = { | ||||
|             _time = new Date(time_sent); | ||||
|         } | ||||
|         var time = Helper.pad(_time.getHours()) + ":" + Helper.pad(_time.getMinutes()); | ||||
|         $("#chatchannel").append("<li><span class='time_color'>" + time + "</span> " + icon_add + "<span style='color:"+color_temp+";'>"+data.from+"</span></li>"); | ||||
|         document.querySelector("#chatchannel").insertAdjacentHTML("beforeend", "<li><span class='time_color'>" + time + "</span> " + icon_add + "<span style='color:"+color_temp+";'>"+data.from+"</span> </li>"); | ||||
|         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; | ||||
| @@ -187,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); | ||||
|   | ||||
| @@ -43,7 +43,7 @@ var Crypt = { | ||||
|         );*/ | ||||
|  | ||||
|         //return $.parseJSON(decrypted.toString(CryptoJS.enc.Utf8)); | ||||
|         return $.parseJSON(atob(cookie)); | ||||
|         return JSON.parse(atob(cookie)); | ||||
|     }, | ||||
|  | ||||
|     decrypt_pass: function(pass) { | ||||
|   | ||||
| @@ -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; | ||||
| @@ -65,24 +66,23 @@ function receiveMessage(event) { | ||||
| } | ||||
|  | ||||
| window.addEventListener("message", receiveMessage, false); | ||||
|  | ||||
| $(document).ready(function() { | ||||
|  | ||||
| console.log("qq"); | ||||
| window.addEventListener("DOMContentLoaded", function() { | ||||
|     console.log("ads"); | ||||
|     if(hash.length >= 3 && hash[2] == "autoplay"){ | ||||
|         autoplay = true; | ||||
|         $("#player").css("visibility", "hidden"); | ||||
|         Helper.css("#player", "visibility", "hidden"); | ||||
|     } else { | ||||
|         paused = true; | ||||
|     } | ||||
|  | ||||
|     if(hash.indexOf("videoonly") > -1) { | ||||
|         $("#playlist").addClass("hide"); | ||||
|         $("#controls").addClass("hide"); | ||||
|         $("#player").addClass("video_only"); | ||||
|         $("#zoffbutton").css("bottom", "0px"); | ||||
|         Helper.addClass("#playlist", "hide"); | ||||
|         Helper.addClass("#controls", "hide"); | ||||
|         Helper.addClass("#player", "video_only"); | ||||
|         Helper.css("#zoffbutton", "bottom", "0px"); | ||||
|     } | ||||
|  | ||||
|     $("#locked_channel").modal({ | ||||
|     M.Modal.init(document.getElementById("locked_channel"), { | ||||
|         dismissible: false | ||||
|     }); | ||||
|     color = "#" + hash[1]; | ||||
| @@ -91,7 +91,7 @@ $(document).ready(function() { | ||||
|     socket = io.connect(''+add+':8080', connection_options); | ||||
|  | ||||
|     socket.on('auth_required', function() { | ||||
|         $("#locked_channel").modal('open'); | ||||
|         M.Modal.getInstance(document.getElementById("locked_channel")).open(); | ||||
|     }); | ||||
|  | ||||
|     socket.on("get_list", function() { | ||||
| @@ -121,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 { | ||||
| @@ -186,8 +186,8 @@ function toast(msg) { | ||||
|             if(embed) return; | ||||
|             msg=Helper.rnd(["I added the playlist", "Your playlist has been added", "Yay, many more songs!", "Thats a cool playlist!", "I added all the songs for you", "I see you like adding songs.."]); | ||||
|             document.getElementById("import").disabled = false; | ||||
|             $("#playlist_loader").addClass("hide"); | ||||
|             $("#import").removeClass("hide"); | ||||
|             Helper.addClass("#playlist_loader", "hide"); | ||||
|             Helper.removeClass("#import", "hide"); | ||||
|             break; | ||||
|         case "savedsettings": | ||||
|             if(embed) return; | ||||
| @@ -198,10 +198,10 @@ function toast(msg) { | ||||
|             msg=Helper.rnd(["That's not the right password!", "Wrong! Better luck next time...", "You seem to have mistyped the password", "Incorrect. Have you tried meditating?","Nope, wrong password!", "Wrong password. The authorities have been notified."]); | ||||
|             //Crypt.remove_pass(chan.toLowerCase()); | ||||
|             Admin.display_logged_out(); | ||||
|             $("#thumbnail_form").css("display", "none"); | ||||
|             $("#description_form").css("display", "none"); | ||||
|             Helper.css("#thumbnail_form", "display", "none"); | ||||
|             Helper.css("#description_form", "display", "none"); | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('#chan_thumbnail').tooltip("destroy"); | ||||
|                 Helper.tooltip('#chan_thumbnail', "destroy"); | ||||
|             } | ||||
|             w_p = true; | ||||
|             break; | ||||
| @@ -245,20 +245,16 @@ function toast(msg) { | ||||
|             msg=Helper.rnd(["I'm sorry, but you have to be an admin to do that!", "Only admins can do that", "You're not allowed to do that, try logging in!", "I can't let you do that", "Please log in to do that"]); | ||||
|             //Crypt.remove_pass(chan.toLowerCase()); | ||||
|             Admin.display_logged_out(); | ||||
|             $("#thumbnail_form").css("display", "none"); | ||||
|             $("#description_form").css("display", "none"); | ||||
|             Helper.css("#thumbnail_form", "display", "none"); | ||||
|             Helper.css("#description_form", "display", "none"); | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('#chan_thumbnail').tooltip("destroy"); | ||||
|                 Helper.tooltip('#chan_thumbnail', "destroy"); | ||||
|             } | ||||
|             w_p = true; | ||||
|             if(!$("#playlist_loader").hasClass("hide")) { | ||||
|                 $("#playlist_loader").addClass("hide"); | ||||
|             } | ||||
|             if(!$("#playlist_loader_spotify").hasClass("hide")) { | ||||
|                 $("#playlist_loader_spotify").addClass("hide"); | ||||
|             } | ||||
|             $("#import_spotify").removeClass("hide"); | ||||
|                     $("#import").removeClass("hide"); | ||||
|             Helper.addClass("#playlist_loader", "hide"); | ||||
|             Helper.addClass("#playlist_loader_spotify", "hide"); | ||||
|             Helper.removeClass("#import_spotify", "hide"); | ||||
|             Helper.removeClass("#import", "hide"); | ||||
|             break; | ||||
|         case "noskip": | ||||
|             if(embed) return; | ||||
| @@ -290,10 +286,10 @@ 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()) { | ||||
|                 $('#chan_thumbnail').tooltip({ | ||||
|                 Helper.tooltip('#chan_thumbnail', { | ||||
|                     delay: 5, | ||||
|                     position: "left", | ||||
|                     html: "imgur link" | ||||
| @@ -331,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]; | ||||
| @@ -341,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) { | ||||
|     e.preventDefault(); | ||||
| addListener("click", ".prev_page", function(e) { | ||||
|     event.preventDefault(); | ||||
|     List.dynamicContentPage(-1); | ||||
| }); | ||||
|  | ||||
| $(document).on("click", ".next_page", function(e) { | ||||
|     e.preventDefault(); | ||||
| addListener("click", ".next_page", function(e) { | ||||
|     event.preventDefault(); | ||||
|     List.dynamicContentPage(1); | ||||
| }); | ||||
|  | ||||
| $(document).on("click", ".last_page", function(e){ | ||||
|     e.preventDefault(); | ||||
| addListener("click", ".last_page", function(e){ | ||||
|     event.preventDefault(); | ||||
|     List.dynamicContentPage(10); | ||||
| }); | ||||
|  | ||||
| $(document).on("click", ".first_page", function(e){ | ||||
|     e.preventDefault(); | ||||
| addListener("click", ".first_page", function(e){ | ||||
|     event.preventDefault(); | ||||
|     List.dynamicContentPage(-10); | ||||
| }); | ||||
|   | ||||
| @@ -22,8 +22,8 @@ var Frontpage = { | ||||
|         ]); | ||||
|         Frontpage.all_channels = msg.channels; | ||||
|         if(msg.channels.length == 0) { | ||||
|             $("#preloader").css("display", "none"); | ||||
|             $("#channel-list-container").append("<p>No channels yet</p>"); | ||||
|             Helper.css("#preloader", "display", "none"); | ||||
|             document.getElementById("channel-list-container").insertAdjacentHTML("beforeend", "<p>No channels yet</p>"); | ||||
|         } else { | ||||
|             Frontpage.populate_channels(msg.channels, true); | ||||
|         } | ||||
| @@ -31,7 +31,7 @@ var Frontpage = { | ||||
|     }, | ||||
|  | ||||
|     populate_channels: function(lists, popular) { | ||||
|         $("#channels").empty(); | ||||
|         document.getElementById("channels").innerHTML = ""; | ||||
|  | ||||
|         var num = 0; | ||||
|  | ||||
| @@ -64,7 +64,7 @@ var Frontpage = { | ||||
|             Frontpage.add_backdrop(lists, 0); | ||||
|         } | ||||
|  | ||||
|         pre_card = $(channel_list); | ||||
|         pre_card = channel_list; | ||||
|  | ||||
|         Helper.log([ | ||||
|             "Pre_card: ", | ||||
| @@ -83,37 +83,39 @@ var Frontpage = { | ||||
|                 } | ||||
|  | ||||
|                 var song_count = lists[x].count; | ||||
|  | ||||
|                 var card = pre_card.clone(); | ||||
|                 var card = document.createElement("div"); | ||||
|                 card.innerHTML += pre_card; | ||||
|                 //card.innerHTML = card.children[0]; | ||||
|                 if(song_count > 4) { | ||||
|                     if(lists[x].pinned == 1) { | ||||
|                         card.find(".pin").attr("style", "display:block;"); | ||||
|                         card.querySelector(".pin").setAttribute("style", "display:block;"); | ||||
|                         //card.find(".card").attr("title", "Featured list"); | ||||
|                     } else { | ||||
|                         /*card.find(".pin").attr("style", "display:none;"); | ||||
|                         card.find(".card").attr("title", "");*/ | ||||
|                         card.find(".pin").remove(); | ||||
|                         card.querySelector(".pin").remove(); | ||||
|                     } | ||||
|                     card.find(".chan-name").text(chan); | ||||
|                     card.find(".chan-name").attr("title", chan); | ||||
|                     card.find(".chan-views").text(viewers); | ||||
|                     card.find(".chan-songs").text(song_count); | ||||
|                     card.find(".chan-bg").attr("style", img); | ||||
|                     card.find(".chan-link").attr("href", chan + "/"); | ||||
|                     card.querySelector(".chan-name").innerText = chan; | ||||
|                     card.querySelector(".chan-name").setAttribute("title", chan); | ||||
|                     card.querySelector(".chan-views").innerText = viewers; | ||||
|                     card.querySelector(".chan-songs").innerText = song_count; | ||||
|                     card.querySelector(".chan-bg").setAttribute("style", img); | ||||
|                     card.querySelector(".chan-link").setAttribute("href", chan + "/"); | ||||
|  | ||||
|                     if(description != "" && description != undefined && !Helper.mobilecheck()) { | ||||
|                         card.find(".card-title").text(chan); | ||||
|                         card.find(".description_text").text(description); | ||||
|                         card.querySelector(".card-title").innerText = chan; | ||||
|                         card.querySelector(".description_text").innerText = description; | ||||
|                         description = ""; | ||||
|                     } else { | ||||
|                         card.find(".card-reveal").remove(); | ||||
|                         card.find(".card").removeClass("sticky-action") | ||||
|                         card.querySelector(".card-reveal").remove(); | ||||
|                         Helper.removeClass(card.querySelector(".card"), "sticky-action") | ||||
|                     } | ||||
|  | ||||
|                     $("#channels").append(card.html()); | ||||
|                     document.getElementById("channels").insertAdjacentHTML("beforeend", card.children[0].innerHTML); | ||||
|                 } else { | ||||
|                     num--; | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|             num++; | ||||
|         } | ||||
| @@ -125,18 +127,18 @@ var Frontpage = { | ||||
|         for(var x in options_list) { | ||||
|             data[options_list[x]._id] = null; | ||||
|         } | ||||
|         if($(".pin").length == 1 && !Helper.mobilecheck()) { | ||||
|             $($(".pin").parent().parent().parent()).tooltip({ | ||||
|         if(document.querySelectorAll(".pin").length == 1 && !Helper.mobilecheck()) { | ||||
|             Helper.tooltip(document.querySelectorAll(".pin")[0].parent().parent().parent(), { | ||||
|                 delay: 5, | ||||
|                 position: "top", | ||||
|                 html: "Featured playlist" | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         var to_autocomplete = "input.autocomplete"; | ||||
|         var to_autocomplete = document.querySelectorAll("input.autocomplete")[0]; | ||||
|         //if(Helper.mobilecheck()) to_autocomplete = "input.mobile-search"; | ||||
|  | ||||
|         $(to_autocomplete).autocomplete({ | ||||
|         M.Autocomplete.init(to_autocomplete, { | ||||
|             data: data, | ||||
|             limit: 5, // The max amount of results that can be shown at once. Default: Infinity. | ||||
|             onAutocomplete: function(val) { | ||||
| @@ -145,9 +147,10 @@ var Frontpage = { | ||||
|         }); | ||||
|  | ||||
|         document.getElementById("preloader").style.display = "none"; | ||||
|         document.getElementById("channels").style.display = "block"; | ||||
|         //Materialize.fadeInImage('#channels'); | ||||
|         $("#channels").fadeIn(800); | ||||
|         $("#searchFrontpage").focus(); | ||||
|         //$("#channels").fadeIn(800); | ||||
|         document.getElementById("autocomplete-input").focus(); | ||||
|         num = 0; | ||||
|     }, | ||||
|  | ||||
| @@ -198,11 +201,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); | ||||
| @@ -215,30 +218,31 @@ var Frontpage = { | ||||
|                 if(window.location.hostname == "fb.zoff.me") { | ||||
|                     add = "https://zoff.me"; | ||||
|                 } | ||||
|                 $.ajax({ | ||||
|                 Helper.ajax({ | ||||
|                     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); | ||||
|             }; | ||||
|  | ||||
|         } | ||||
| @@ -259,10 +263,11 @@ var Frontpage = { | ||||
|         if(window.location.hostname == "fb.zoff.me") { | ||||
|             add = "https://zoff.me"; | ||||
|         } | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             url: add + "/api/frontpages", | ||||
|             method: "get", | ||||
|             success: function(response){ | ||||
|                 response = JSON.parse(response); | ||||
|                 Frontpage.frontpage_function(response.results); | ||||
|             }, | ||||
|             error: function() { | ||||
| @@ -302,11 +307,11 @@ var Frontpage = { | ||||
|     }, | ||||
|  | ||||
|     set_viewers: function(viewers) { | ||||
|         $("#frontpage-viewer-counter").html("<i class='material-icons frontpage-viewers'>visibility</i>" + viewers); | ||||
|         document.querySelector("#frontpage-viewer-counter").innerHTML = "<i class='material-icons frontpage-viewers'>visibility</i>" + viewers; | ||||
|     }, | ||||
|  | ||||
|     to_channel: function(new_channel, popstate) { | ||||
|         $("#channel-load").css("display", "block"); | ||||
|         Helper.css("#channel-load", "display", "block"); | ||||
|         window.scrollTo(0, 0); | ||||
|         frontpage = false; | ||||
|         new_channel = new_channel.toLowerCase(); | ||||
| @@ -315,19 +320,19 @@ var Frontpage = { | ||||
|             Helper.log(["removing all listeners"]); | ||||
|             removeAllListeners(); | ||||
|         } | ||||
|         $("#main-container").css("background-color", "#2d2d2d"); | ||||
|         Helper.css("#main-container", "background-color", "#2d2d2d"); | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             $("#frontpage-viewer-counter").tooltip("destroy"); | ||||
|             $(".generate-channel-name").tooltip("destroy"); | ||||
|             $("#offline-mode").tooltip("destroy"); | ||||
|             $("#client-mode-button").tooltip("destroy"); | ||||
|             if($(".pin").length == 1) { | ||||
|                 $($(".pin").parent().parent().parent()).tooltip("destroy"); | ||||
|             Helper.tooltip("#frontpage-viewer-counter", "destroy"); | ||||
|             Helper.tooltip(".generate-channel-name", "destroy"); | ||||
|             Helper.tooltip("#offline-mode", "destroy"); | ||||
|             Helper.tooltip("#client-mode-button", "destroy"); | ||||
|             if(document.querySelectorAll(".pin").length == 1) { | ||||
|                 Helper.tooltip(document.querySelectorAll(".pin")[0].parent().parent().parent(), "destroy"); | ||||
|             } | ||||
|         } | ||||
|         currently_showing_channels = 1; | ||||
|         clearTimeout(retry_frontpage); | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             url: "/" + new_channel, | ||||
|             method: "get", | ||||
|             data: {channel: new_channel}, | ||||
| @@ -337,7 +342,8 @@ var Frontpage = { | ||||
|                     //Player.player.destroy(); | ||||
|                     socket.emit("change_channel", {channel: chan.toLowerCase()}); | ||||
|                 } | ||||
|                 $("#frontpage_player").empty(); | ||||
|                 var _player = document.querySelectorAll("#frontpage_player"); | ||||
|                 if(_player.length > 0) _player[0].innerHTML = ""; | ||||
|                 if(Helper.mobilecheck()) { | ||||
|                     //Helper.log("disconnecting"); | ||||
|                     //socket.disconnect(); | ||||
| @@ -351,37 +357,40 @@ var Frontpage = { | ||||
|                     window.chan = new_channel; | ||||
|                 } | ||||
|  | ||||
|                 var response = $("<div>" + e + "</div>"); | ||||
|                 var response = document.createElement("div"); | ||||
|                 response.innerHTML = e; | ||||
|  | ||||
|                 $('select').formSelect('destroy'); | ||||
|                 $(".mega").remove(); | ||||
|                 $(".mobile-search").remove(); | ||||
|                 $("main").attr("class", "container center-align main"); | ||||
|                 $("#main-container").addClass("channelpage"); | ||||
|                 //$("header").html($($(e)[63]).html()); | ||||
|                 $("header").html($(response.find("header")).html()); | ||||
|                 if($("#alreadychannel").length === 0 || Helper.mobilecheck() || Player.player === undefined){ | ||||
|                     $("main").html($(response.find("main")).html()); | ||||
|                 M.FormSelect.getInstance(document.querySelector("#view_channels_select")).destroy(); | ||||
|                 //$('select').formSelect('destroy'); | ||||
|                 Helper.removeElement(".mega"); | ||||
|                 Helper.removeElement(".mobile-search"); | ||||
|                 document.getElementsByTagName("main")[0].className = "container center-align main"; | ||||
|                 Helper.addClass("#main-container", "channelpage"); | ||||
|  | ||||
|                 document.getElementsByTagName("header")[0].innerHTML = response.querySelectorAll("header")[0].innerHTML; | ||||
|  | ||||
|                 if(document.querySelectorAll("#alreadychannel").length === 0 || Helper.mobilecheck() || Player.player === undefined){ | ||||
|                     document.getElementsByTagName("main")[0].innerHTML = response.querySelectorAll("main")[0].innerHTML; | ||||
|                 } else { | ||||
|                     $("#main-row").append($(response.find("#playlist").wrap("<div>").parent().html())); | ||||
|                     $("#video-container").append($(response.find("#main_components").wrap("<div>").parent().html())); | ||||
|                     $("#main-row").append("<div id='playbar'></div>"); | ||||
|                     $("#player").removeClass("player_bottom"); | ||||
|                     $("#main-row").removeClass("frontpage_modified_heights"); | ||||
|                     $("#main_section_frontpage").remove(); | ||||
|                     $("#closePlayer").remove(); | ||||
|                     $("#player_bottom_overlay").remove(); | ||||
|                     document.getElementById("main-row").insertAdjacentHTML("beforeend", response.querySelectorAll("#playlist")[0].outerHTML); | ||||
|                     if(!client) document.getElementById("video-container").insertAdjacentHTML("beforeend", response.querySelectorAll("#main_components")[0].outerHTML); | ||||
|                     document.getElementById("main-row").insertAdjacentHTML("beforeend", "<div id='playbar'></div>"); | ||||
|                     Helper.removeClass("#player", "player_bottom"); | ||||
|                     Helper.removeClass("#main-row", "frontpage_modified_heights"); | ||||
|                     Helper.removeElement("#main_section_frontpage"); | ||||
|                     Helper.removeElement("#closePlayer"); | ||||
|                     Helper.removeElement("#player_bottom_overlay"); | ||||
|                 } | ||||
|                 $("#search").attr("placeholder", "Find song on YouTube..."); | ||||
|                 $(".page-footer").addClass("padding-bottom-novideo"); | ||||
|                 document.getElementById("search").setAttribute("placeholder", "Find song on YouTube..."); | ||||
|                 Helper.addClass(".page-footer", "padding-bottom-novideo"); | ||||
|                 from_frontpage = true; | ||||
|                 if($("#alreadychannel").length == 1){ | ||||
|                 if(document.querySelectorAll("#alreadychannel").length == 1){ | ||||
|                     Channel.init(); | ||||
|                 }else{ | ||||
|                     fromFront = true; | ||||
|                     Channel.init(); | ||||
|                 } | ||||
|                 if($("#alreadyfp").length === 0) $("head").append("<div id='alreadyfp'></div>"); | ||||
|                 if(document.querySelectorAll("#alreadyfp").length === 0) document.getElementsByTagName("head")[0].insertAdjacentHTML("beforeend", "<div id='alreadyfp'></div>"); | ||||
|  | ||||
|             } | ||||
|         }); | ||||
| @@ -392,8 +401,8 @@ var Frontpage = { | ||||
|         var date = new Date(); | ||||
|         Frontpage.blob_list = []; | ||||
|         if(date.getMonth() == 3 && date.getDate() == 1){ | ||||
|             $(".mega").css("-webkit-transform", "rotate(180deg)"); | ||||
|             $(".mega").css("-moz-transform", "rotate(180deg)"); | ||||
|             Helper.css(".mega", "-webkit-transform", "rotate(180deg)"); | ||||
|             Helper.css(".mega", "-moz-transform", "rotate(180deg)"); | ||||
|             //Materialize.toast('<p id="aprilfools">We suck at pranks..<a class="waves-effect waves-light btn light-green" style="pointer-events:none;">Agreed</a></p>', 100000); | ||||
|         } | ||||
|  | ||||
| @@ -410,10 +419,10 @@ var Frontpage = { | ||||
|         }; | ||||
|  | ||||
|         if(window.location.hostname == "fb.zoff.me") { | ||||
|             $("footer").addClass("hide"); | ||||
|             Helper.addClass("footer", "hide"); | ||||
|         } | ||||
|  | ||||
|         channel_list = $("#channel-list-container").clone().html(); | ||||
|         channel_list = document.getElementById("channel-list-container").cloneNode(true).innerHTML; | ||||
|  | ||||
|         if(window.location.hostname != "fb.zoff.me") Frontpage.share_link_modifier(); | ||||
|  | ||||
| @@ -430,14 +439,15 @@ 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(); | ||||
|         } | ||||
|  | ||||
|         $("#about").modal(); | ||||
|         $("#help").modal(); | ||||
|         $("#contact").modal(); | ||||
|         $('select').formSelect(); | ||||
|         M.Modal.init(document.getElementById("about")); | ||||
|         M.Modal.init(document.getElementById("help")); | ||||
|         M.Modal.init(document.getElementById("contact")); | ||||
|         var elem = document.querySelector('select'); | ||||
|         var instance = M.FormSelect.init(elem); | ||||
|  | ||||
|         Helper.log([ | ||||
|             "Sending frontpage_lists", | ||||
| @@ -449,7 +459,7 @@ var Frontpage = { | ||||
|             change_offline(true, offline); | ||||
|         } else { | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $("#offline-mode").tooltip({ | ||||
|                 Helper.tooltip("#offline-mode", { | ||||
|                     delay: 5, | ||||
|                     position: "bottom", | ||||
|                     html: "Enable local mode" | ||||
| @@ -457,17 +467,17 @@ var Frontpage = { | ||||
|             } | ||||
|         } | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             $("#frontpage-viewer-counter").tooltip({ | ||||
|             Helper.tooltip("#frontpage-viewer-counter", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Total Viewers" | ||||
|             }); | ||||
|             $("#client-mode-button").tooltip({ | ||||
|             Helper.tooltip("#client-mode-button", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Client mode" | ||||
|             }); | ||||
|             $(".generate-channel-name").tooltip({ | ||||
|             Helper.tooltip(".generate-channel-name", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Generate name" | ||||
| @@ -475,12 +485,12 @@ var Frontpage = { | ||||
|         } | ||||
|         Frontpage.get_frontpage_lists(); | ||||
|  | ||||
|         $("#channel-load").css("display", "none"); | ||||
|         Helper.css("#channel-load", "display", "none"); | ||||
|         //Materialize.toast("<a href='/remote' style='color:white;'>Try out our new feature, remote!</a>", 8000) | ||||
|         if(window.location.hash == "#donation") { | ||||
|             window.location.hash = "#"; | ||||
|             $('#donation').modal(); | ||||
|             $('#donation').modal('open'); | ||||
|             M.Modal.init(document.getElementById("donation"));; | ||||
|             M.Modal.getInstance(document.getElementById("donation")).open(); | ||||
|         } | ||||
|  | ||||
|         if(!localStorage.ok_cookie){ | ||||
| @@ -490,21 +500,21 @@ var Frontpage = { | ||||
|  | ||||
|         var pad = 0; | ||||
|  | ||||
|         $(".zicon").on("click", function(e) { | ||||
|         /*$(".zicon").on("click", function(e) { | ||||
|             e.preventDefault(); | ||||
|  | ||||
|             pad += 10; | ||||
|             $(".zicon").css("padding-left", pad + "vh"); | ||||
|             Helper.css(".zicon", "padding-left", pad + "vh"); | ||||
|             if(pad >= 80) | ||||
|             window.location.href = 'http://etys.no'; | ||||
|         }); | ||||
|         });*/ | ||||
|  | ||||
|         if(!Helper.mobilecheck() && Frontpage.winter) { | ||||
|             $(".mega").prepend('<div id="snow"></div>'); | ||||
|             document.getElementsByClassName("mega")[0].insertAdjacentHTML("afterbegin", '<div id="snow"></div>'); | ||||
|         } | ||||
|  | ||||
|         if(Helper.mobilecheck()){ | ||||
|             $('input#autocomplete-input').characterCounter(); | ||||
|             //$('input#autocomplete-input').characterCounter(); | ||||
|         } | ||||
|  | ||||
|         window['__onGCastApiAvailable'] = function(loaded, errorInfo) { | ||||
| @@ -516,10 +526,10 @@ var Frontpage = { | ||||
|     }, | ||||
|  | ||||
|     share_link_modifier: function() { | ||||
|         $("#facebook-code-link").attr("href", "https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/"); | ||||
|         $("#facebook-code-link").attr("onclick", "window.open('https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/', 'Share Zoff','width=600,height=300'); return false;"); | ||||
|         $("#twitter-code-link").attr("href", "https://twitter.com/intent/tweet?url=https://zoff.me/&text=Check%20out%20Zoff!&via=zoffmusic"); | ||||
|         $("#twitter-code-link").attr("onclick", "window.open('https://twitter.com/intent/tweet?url=https://zoff.me/&text=Check%20out%20Zoff!&via=zoffmusic','Share Playlist','width=600,height=300'); return false;"); | ||||
|         document.getElementById("facebook-code-link").setAttribute("href", "https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/"); | ||||
|         document.getElementById("facebook-code-link").setAttribute("onclick", "window.open('https://www.facebook.com/sharer/sharer.php?u=https://zoff.me/', 'Share Zoff','width=600,height=300'); return false;"); | ||||
|         document.getElementById("twitter-code-link").setAttribute("href", "https://twitter.com/intent/tweet?url=https://zoff.me/&text=Check%20out%20Zoff!&via=zoffmusic"); | ||||
|         document.getElementById("twitter-code-link").setAttribute("onclick", "window.open('https://twitter.com/intent/tweet?url=https://zoff.me/&text=Check%20out%20Zoff!&via=zoffmusic','Share Playlist','width=600,height=300'); return false;"); | ||||
|         //$("#qr-code-link").attr("href", "//chart.googleapis.com/chart?chs=500x500&cht=qr&chl=https://zoff.me/&choe=UTF-8&chld=L%7C1"); | ||||
|         //$("#qr-code-image-link").attr("src", "//chart.googleapis.com/chart?chs=150x150&cht=qr&chl=https://zoff.me/&choe=UTF-8&chld=L%7C1"); | ||||
|     } | ||||
|   | ||||
| @@ -22,14 +22,15 @@ function removeAllListeners() { | ||||
| } | ||||
|  | ||||
| function getColor(id) { | ||||
|     $.ajax({ | ||||
|         type: "POST", | ||||
|     Helper.ajax({ | ||||
|         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") { | ||||
|                 Player.setBGimage({color:c, only:true}); | ||||
|             } | ||||
| @@ -39,71 +40,67 @@ 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($(".castButton"))) { | ||||
|                 $('.castButton').tooltip('destroy'); | ||||
|             if(M.Tooltip.getInstance(document.getElementsByClassName("castButton")[0])) { | ||||
|                 Helper.tooltip('.castButton', 'destroy'); | ||||
|             } | ||||
|             $('.castButton').tooltip({ | ||||
|             Helper.tooltip('.castButton', { | ||||
|                 delay: 5, | ||||
|                 position: "top", | ||||
|                 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); | ||||
|         } | ||||
|         if(Helper.mobilecheck()) { | ||||
|             if(!$("#player_overlay").hasClass("hide")) { | ||||
|                 $("#player_overlay").addClass("hide") | ||||
|             } | ||||
|             $("#player_overlay").css("display", "none"); | ||||
|             $("#playing_on").css("display", "none"); | ||||
|             Helper.addClass("#player_overlay", "hide") | ||||
|             Helper.css("#player_overlay", "display", "none"); | ||||
|             Helper.css("#playing_on", "display", "none"); | ||||
|         } else { | ||||
|             $("#player_overlay").removeClass("hide"); | ||||
|             $("#player_overlay").css("display", "block"); | ||||
|             $("#player_overlay").css("background", "url(https://img.ytimg.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"); | ||||
|             $("#playing_on").css("display", "flex"); | ||||
|             $("#chromecast_text").html("Playing on<br>" + castSession.La.friendlyName); | ||||
|             Helper.removeClass("#player_overlay", "hide"); | ||||
|             Helper.css("#player_overlay", "display", "block"); | ||||
|             Helper.css("#player_overlay", "background", "url(https://img.ytimg.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"); | ||||
|             Helper.css("#playing_on", "display", "flex"); | ||||
|             Helper.setHtml("#chromecast_text", "Playing on<br>" + castSession.La.friendlyName); | ||||
|         } | ||||
|         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($(".castButton"))) { | ||||
|                 $('.castButton').tooltip('destroy'); | ||||
|             if(M.Tooltip.getInstance(document.getElementsByClassName("castButton")[0])) { | ||||
|                 Helper.tooltip('.castButton', 'destroy'); | ||||
|             } | ||||
|             $('.castButton').tooltip({ | ||||
|             Helper.tooltip('.castButton', { | ||||
|                 delay: 5, | ||||
|                 position: "top", | ||||
|                 html: "Cast Zoff to TV" | ||||
|             }); | ||||
|         } | ||||
|         $('.castButton').removeClass('castButton-white-active'); | ||||
|         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,10 +109,10 @@ function hide_native(way) { | ||||
|             Player.player.setVolume(Crypt.get_volume()); | ||||
|             Playercontrols.visualVolume(Crypt.get_volume()); | ||||
|         } | ||||
|         $("#player_overlay").addClass("hide"); | ||||
|         $("#player_overlay_text").toggleClass("hide"); | ||||
|         $("#chromecast_text").html(""); | ||||
|         $("#playing_on").css("display", "none"); | ||||
|         Helper.addClass("#player_overlay", "hide"); | ||||
|         Helper.toggleClass("#player_overlay_text", "hide"); | ||||
|         Helper.setHtml("#chromecast_text", ""); | ||||
|         Helper.css("#playing_on", "display", "none"); | ||||
|         if(!offline){ | ||||
|             socket.emit('pos', {channel: chan.toLowerCase()}); | ||||
|         } else { | ||||
| @@ -142,16 +139,12 @@ function chromecastListener(evt, data) { | ||||
|             } | ||||
|             break; | ||||
|         case 1: | ||||
|             if(!$("#play").hasClass("hide")) { | ||||
|                 $("#play").addClass("hide"); | ||||
|             } | ||||
|             $("#pause").removeClass("hide"); | ||||
|             Helper.addClass("#play", "hide"); | ||||
|             Helper.removeClass("#pause", "hide"); | ||||
|             break; | ||||
|         case 2: | ||||
|             if(!$("#pause").hasClass("hide")) { | ||||
|                 $("#pause").addClass("hide"); | ||||
|             } | ||||
|             $("#play").removeClass("hide"); | ||||
|             Helper.addClass("#pause", "hide"); | ||||
|             Helper.removeClass("#play", "hide"); | ||||
|             break; | ||||
|     } | ||||
| } | ||||
| @@ -159,10 +152,10 @@ function chromecastListener(evt, data) { | ||||
| function start_auth() { | ||||
|     if(!user_auth_started) { | ||||
|         user_auth_started = true; | ||||
|         $("#player_overlay").removeClass("hide"); | ||||
|         $("#player_overlay").css("display", "block"); | ||||
|         $("#user_password").modal("open"); | ||||
|         $("#user-pass-input").focus(); | ||||
|         Helper.removeClass("#player_overlay", "hide"); | ||||
|         Helper.css("#player_overlay", "display", "block"); | ||||
|         M.Modal.getInstance(document.getElementById("user_password")).open(); | ||||
|         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}); | ||||
| @@ -185,34 +178,37 @@ function emit_list() { | ||||
|  | ||||
| function get_list_ajax() { | ||||
|     //var c = Crypt.get_userpass(chan.toLowerCase()); | ||||
|     $.ajax({ | ||||
|     Helper.ajax({ | ||||
|         type: "POST", | ||||
|         data: { | ||||
|             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); | ||||
|             if(response.results.length > 0) { | ||||
|                 if(response.status == 403) { | ||||
|                     start_auth(); | ||||
|                 } | ||||
|                 if(client) { | ||||
|                     $("#channel-load").remove(); | ||||
|                     Helper.removeElement("#channel-load"); | ||||
|                 } | ||||
|                 List.populate_list(response.results); | ||||
|             } | ||||
|         }, | ||||
|         error: function(response) { | ||||
|             if(response.responseJSON.status == 403) { | ||||
|         error: function(response, xmlhttp) { | ||||
|             response = JSON.parse(response); | ||||
|             if(response.status == 403) { | ||||
|                 start_auth(); | ||||
|             } else if(response.responseJSON.status == 429) { | ||||
|             } else if(response.status == 429) { | ||||
|                 setTimeout(function() { | ||||
|                     get_list_ajax(); | ||||
|                 }, response.getResponseHeader("Retry-After") * 1000) | ||||
|                 }, xmlhttp.getResponseHeader("Retry-After") * 1000) | ||||
|             } | ||||
|             if(client) { | ||||
|                 $("#channel-load").remove(); | ||||
|                 Helper.removeElement("#channel-load"); | ||||
|             } | ||||
|             //List.populate_list(response.responseJSON.results); | ||||
|         } | ||||
| @@ -220,64 +216,71 @@ function get_list_ajax() { | ||||
| } | ||||
|  | ||||
| function contextListener(that, e) { | ||||
|     var parent = $(that).parent(); | ||||
|     var parent = that.parentElement; | ||||
|     var suggested = false; | ||||
|     if(parent.attr("id").indexOf("suggested-") > -1) suggested = true; | ||||
|     $(".context-menu-root").attr("data-suggested", suggested); | ||||
|     $(".context-menu-root").attr("data-id", parent.attr("id").replace("suggested-", "")); | ||||
|     $("#context-menu-overlay").removeClass("hide"); | ||||
|     var left = e.pageX - $(".context-menu-root").width() / 2; | ||||
|     var top = e.pageY; | ||||
|     if(left + 200 > $(window).width()) { | ||||
|         left = $(window).width() - 200 - 15; | ||||
|     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.getAttribute("id").replace("suggested-", "")); | ||||
|     Helper.removeClass("#context-menu-overlay", "hide"); | ||||
|     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; | ||||
|     } | ||||
|     $(".context-menu-root").css({left: left,top:top}); | ||||
|     $(".context-menu-root").removeClass("hide"); | ||||
|     Helper.css(".context-menu-root", "left", left + "px"); | ||||
|     Helper.css(".context-menu-root", "top", top + "px"); | ||||
|     Helper.removeClass(".context-menu-root","hide"); | ||||
|     if(!Helper.mobilecheck()) { | ||||
|         mouseContext(left, top); | ||||
|     } | ||||
| } | ||||
|  | ||||
| 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) { | ||||
|            $(".context-menu-root").addClass("hide"); | ||||
|            $("#context-menu-overlay").addClass("hide"); | ||||
|            $(document).off("mousemove"); | ||||
|     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.removeEventListener("mousemove", moveFunction); | ||||
|        } | ||||
|     }); | ||||
|     }; | ||||
|     try { | ||||
|         document.removeEventListener("mousemove", moveFunction); | ||||
|     } catch(e) {} | ||||
|     document.addEventListener("mousemove", moveFunction, false); | ||||
| } | ||||
|  | ||||
| function get_np_ajax() { | ||||
|     /*var c = Crypt.get_userpass(chan.toLowerCase()); | ||||
|     if(c == undefined) c = "";*/ | ||||
|     $.ajax({ | ||||
|     Helper.ajax({ | ||||
|         type: "POST", | ||||
|         data: { | ||||
|             userpass: "", | ||||
|             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); | ||||
|             Player.getTitle(response.results[0].title, 1); | ||||
|         }, | ||||
|         error: function(response) { | ||||
|             if(response.responseJSON.status == 403) { | ||||
|         error: function(response, xmlhttp) { | ||||
|             response = JSON.parse(response); | ||||
|             if(response.status == 403) { | ||||
|                 start_auth(); | ||||
|             } else if(response.responseJSON.status == 429) { | ||||
|             } else if(response.status == 429) { | ||||
|                 setTimeout(function() { | ||||
|                     get_np_ajax(); | ||||
|                 }, response.getResponseHeader("Retry-After") * 1000) | ||||
|                 }, xmlhttp.getResponseHeader("Retry-After") * 1000) | ||||
|             } | ||||
|         } | ||||
|     }) | ||||
| @@ -288,25 +291,27 @@ function del_ajax(id) { | ||||
|     var u = Crypt.get_userpass(chan.toLowerCase()); | ||||
|     if(a == undefined) a = ""; | ||||
|     if(u == undefined) u = "";*/ | ||||
|     $.ajax({ | ||||
|     Helper.ajax({ | ||||
|         type: "DELETE", | ||||
|         data: { | ||||
|             adminpass: "", | ||||
|             userpass: "", | ||||
|             token: zoff_api_token | ||||
|         }, | ||||
|         headers: {"Content-Type": "application/json;charset=UTF-8"}, | ||||
|         url: "/api/list/" + chan.toLowerCase() + "/" + id, | ||||
|         success: function(response) { | ||||
|             toast("deletesong"); | ||||
|             get_list_ajax(); | ||||
|         }, | ||||
|         error: function(response) { | ||||
|             if(response.responseJSON.status == 403) { | ||||
|         error: function(response, xmlhttp) { | ||||
|             response = JSON.parse(response); | ||||
|             if(response.status == 403) { | ||||
|                 toast("listhaspass"); | ||||
|             } else if(response.responseJSON.status == 429) { | ||||
|             } else if(response.status == 429) { | ||||
|                 setTimeout(function() { | ||||
|                     del_ajax(id); | ||||
|                 }, response.getResponseHeader("Retry-After") * 1000); | ||||
|                 }, xmlhttp.getResponseHeader("Retry-After") * 1000); | ||||
|             } | ||||
|         } | ||||
|     }) | ||||
| @@ -317,7 +322,7 @@ function add_ajax(id, title, duration, playlist, num, full_num, start, end) { | ||||
|     var u = Crypt.get_userpass(chan.toLowerCase()); | ||||
|     if(a == undefined) a = ""; | ||||
|     if(u == undefined) u = "";*/ | ||||
|     $.ajax({ | ||||
|     Helper.ajax({ | ||||
|         type: "POST", | ||||
|         data: { | ||||
|             adminpass: "", | ||||
| @@ -328,20 +333,22 @@ 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"); | ||||
|             get_list_ajax(); | ||||
|         }, | ||||
|         error: function(response) { | ||||
|             if(response.responseJSON.status == 403) { | ||||
|         error: function(response, xmlhttp) { | ||||
|             response = JSON.parse(response); | ||||
|             if(response.status == 403) { | ||||
|                 toast("listhaspass"); | ||||
|             } else if(response.responseJSON.status == 409) { | ||||
|             } else if(response.status == 409) { | ||||
|                 vote_ajax(id); | ||||
|             } else if(response.responseJSON.status == 429) { | ||||
|             } else if(response.status == 429) { | ||||
|                 setTimeout(function() { | ||||
|                     add_ajax(id, title, duration, playlist, num, full_num, start, end); | ||||
|                 }, response.getResponseHeader("Retry-After") * 1000); | ||||
|                 }, xmlhttp.getResponseHeader("Retry-After") * 1000); | ||||
|             } | ||||
|         } | ||||
|     }); | ||||
| @@ -352,25 +359,27 @@ function vote_ajax(id) { | ||||
|     var u = Crypt.get_userpass(chan.toLowerCase()); | ||||
|     if(a == undefined) a = ""; | ||||
|     if(u == undefined) u = "";*/ | ||||
|     $.ajax({ | ||||
|     Helper.ajax({ | ||||
|         type: "PUT", | ||||
|         data: { | ||||
|             adminpass: "", | ||||
|             userpass: "", | ||||
|             token: zoff_api_token | ||||
|         }, | ||||
|         headers: {"Content-Type": "application/json;charset=UTF-8"}, | ||||
|         url: "/api/list/" + chan.toLowerCase() + "/" + id, | ||||
|         success: function(response) { | ||||
|             toast("voted"); | ||||
|             get_list_ajax(); | ||||
|         }, | ||||
|         error: function(response) { | ||||
|             if(response.responseJSON.status == 403) { | ||||
|         error: function(response, xmlhttp) { | ||||
|             response = JSON.parse(response); | ||||
|             if(response.status == 403) { | ||||
|                 toast("listhaspass"); | ||||
|             } else if(response.responseJSON.status == 429) { | ||||
|             } else if(response.status == 429) { | ||||
|                 setTimeout(function() { | ||||
|                     vote_ajax(id); | ||||
|                 }, response.getResponseHeader("Retry-After") * 1000); | ||||
|                 }, xmlhttp.getResponseHeader("Retry-After") * 1000); | ||||
|             } | ||||
|         } | ||||
|     }) | ||||
| @@ -443,7 +452,7 @@ function setup_viewers_listener(){ | ||||
|         viewers = view; | ||||
|         var outPutWord    = "<i class='material-icons'>visibility</i>"//v > 1 ? "viewers" : "viewer"; | ||||
|  | ||||
|         $("#viewers").html(outPutWord + " " + view); | ||||
|         Helper.setHtml("#viewers", outPutWord + " " + view); | ||||
|  | ||||
|         if(song_title !== undefined) | ||||
|         Player.getTitle(song_title, viewers); | ||||
| @@ -521,25 +530,48 @@ function change_offline(enabled, already_offline){ | ||||
|     ga('send', 'event', "button-click", "offline", "", offline ? 1 : 0); | ||||
|     socket.emit("offline", {status: enabled, channel: chan != undefined ? chan.toLowerCase() : ""}); | ||||
|     if(!Helper.mobilecheck()) { | ||||
|         if($("#offline-mode").length == 1 && M.Tooltip.getInstance($("#offline-mode"))) { | ||||
|             $("#offline-mode").tooltip('destroy'); | ||||
|         if(document.querySelectorAll("#offline-mode").length == 1 && M.Tooltip.getInstance(document.getElementById("offline-mode"))) { | ||||
|             Helper.tooltip("#offline-mode", 'destroy'); | ||||
|         } | ||||
|     } | ||||
|     if(enabled){ | ||||
|         if(list_html){ | ||||
|             list_html = $("<div>" + list_html + "</div>"); | ||||
|             //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"); | ||||
|         $("#viewers").addClass("hide"); | ||||
|         $(".margin-playbar").removeClass("margin-playbar"); | ||||
|         $(".prev.playbar").addClass("margin-playbar"); | ||||
|         $(".prev.playbar").removeClass("hide"); | ||||
|         $("#offline-mode").removeClass("waves-cyan"); | ||||
|         $("#offline-mode").addClass("cyan"); | ||||
|         Helper.addClass("#viewers", "hide"); | ||||
|         Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
|         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()) { | ||||
|             $("#offline-mode").tooltip({ | ||||
|             Helper.tooltip("#offline-mode", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Disable local mode" | ||||
| @@ -548,39 +580,18 @@ function change_offline(enabled, already_offline){ | ||||
|  | ||||
|         if(window.location.pathname != "/"){ | ||||
|             socket.removeEventListener("color"); | ||||
|             $("#controls").on("mouseenter", function(e){ | ||||
|                 if($("#seekToDuration").hasClass("hide")){ | ||||
|                     $("#seekToDuration").removeClass("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; | ||||
|                 if(!$("#seekToDuration").hasClass("hide")){ | ||||
|                     $("#seekToDuration").addClass("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("<div id='seekToDuration' class='hide'>00:00/01:00</div>"); | ||||
|             if(!Helper.mobilecheck()) $("#seekToDuration").css("top", $("#controls").position().top - 55); | ||||
|             else if(Helper.mobilecheck()) $("#seekToDuration").css("top", $("#controls").position().top - 20); | ||||
|             if(!$("#controls").hasClass("ewresize")) $("#controls").addClass("ewresize"); | ||||
|         } else { | ||||
|             $("#controls").off("mouseenter"); | ||||
|             $("#controls").off("mouseleave"); | ||||
|             $("#controls").off("mousemove"); | ||||
|             $("#controls").off("click"); | ||||
|             document.querySelector("#main_components").insertAdjacentHTML("beforeend", "<div id='seekToDuration' class='hide'>00:00/01:00</div>"); | ||||
|             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"); | ||||
|         } | ||||
|         if(full_playlist != undefined && !already_offline){ | ||||
|             for(var x = 0; x < full_playlist.length; x++){ | ||||
| @@ -590,42 +601,84 @@ function change_offline(enabled, already_offline){ | ||||
|             List.populate_list(full_playlist); | ||||
|         } | ||||
|     } else { | ||||
|         if(list_html){ | ||||
|             list_html = $("<div>" + list_html + "</div>"); | ||||
|             list_html = list_html.html(); | ||||
|         } | ||||
|         $(".margin-playbar").removeClass("margin-playbar"); | ||||
|         $("#playpause").addClass("margin-playbar"); | ||||
|         $("#viewers").removeClass("hide"); | ||||
|         $(".prev.playbar").addClass("hide"); | ||||
|         $("#offline-mode").addClass("waves-cyan"); | ||||
|         $("#offline-mode").removeClass("cyan"); | ||||
|         /*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("#offline-mode", "waves-cyan"); | ||||
|         Helper.removeClass("#offline-mode", "cyan"); | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             $("#offline-mode").tooltip({ | ||||
|             Helper.tooltip("#offline-mode", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Enable local mode" | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         $("#controls").off("mouseleave"); | ||||
|         $("#controls").off("mouseenter"); | ||||
|         $("#controls").off("mousedown"); | ||||
|         $("#controls").off("mouseup"); | ||||
|         $("#controls").off("mousemove", Channel.seekToMove); | ||||
|         $("#controls").off("click", Channel.seekToClick); | ||||
|         $("#seekToDuration").remove(); | ||||
|         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 = ""; | ||||
|             if(private_channel) add = Crypt.getCookie("_uI") + "_"; | ||||
|             socket.emit("list", {version: parseInt(localStorage.getItem("VERSION")), channel: add + chan.toLowerCase()}); | ||||
|             if($("#controls").hasClass("ewresize")) $("#controls").removeClass("ewresize"); | ||||
|             Helper.removeClass("#controls", "ewresize"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| function pagination_results(e) { | ||||
|     event.preventDefault(); | ||||
|     var that = this; | ||||
|     var pageToken = that.getAttribute("data-pagination"); | ||||
|     var searchInput = that.getAttribute("data-original-search"); | ||||
|  | ||||
|     Helper.addClass(".next-results-button", "disabled"); | ||||
|     Helper.addClass(".prev-results-button", "disabled"); | ||||
|     Search.search(searchInput, false, false, pageToken); | ||||
| } | ||||
|  | ||||
| function handleEvent(e, target, tried, type) { | ||||
|     for(var y = 0; y < e.path.length; y++) { | ||||
|         var target = e.path[y]; | ||||
|         if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { | ||||
|             dynamicListeners[type]["#" + target.id].call(target); | ||||
|             return; | ||||
|         } else { | ||||
|             if(target.classList == undefined) return; | ||||
|             for(var i = 0; i < target.classList.length; i++) { | ||||
|                 if(dynamicListeners[type] && dynamicListeners[type]["." + target.classList[i]]) { | ||||
|                     dynamicListeners[type]["." + target.classList[i]].call(target); | ||||
|                     return; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| function addListener(type, element, callback) { | ||||
|     if(dynamicListeners[type] == undefined) dynamicListeners[type] = {}; | ||||
|     dynamicListeners[type][element] = callback; | ||||
| } | ||||
|  | ||||
| function removeListener(type, element) { | ||||
|     delete dynamicListeners[type][element]; | ||||
| } | ||||
|  | ||||
| function toast(msg) { | ||||
|     switch(msg) { | ||||
|         case "other_list_pass": | ||||
| @@ -671,8 +724,8 @@ function toast(msg) { | ||||
|             } | ||||
|             msg=Helper.rnd(["I added the playlist", "Your playlist has been added", "Yay, many more songs!", "Thats a cool playlist!", "I added all the songs for you", "I see you like adding songs.."]); | ||||
|             document.getElementById("import").disabled = false; | ||||
|             $("#playlist_loader").addClass("hide"); | ||||
|             $("#import").removeClass("hide"); | ||||
|             Helper.addClass("#playlist_loader", "hide"); | ||||
|             Helper.removeClass("#import", "hide"); | ||||
|             break; | ||||
|         case "savedsettings": | ||||
|             if(embed) return; | ||||
| @@ -683,10 +736,10 @@ function toast(msg) { | ||||
|             msg=Helper.rnd(["That's not the right password!", "Wrong! Better luck next time...", "You seem to have mistyped the password", "Incorrect. Have you tried meditating?","Nope, wrong password!", "Wrong password. The authorities have been notified."]); | ||||
|             //Crypt.remove_pass(chan.toLowerCase()); | ||||
|             Admin.display_logged_out(); | ||||
|             $("#thumbnail_form").css("display", "none"); | ||||
|             $("#description_form").css("display", "none"); | ||||
|             Helper.css("#thumbnail_form", "display", "none"); | ||||
|             Helper.css("#description_form", "display", "none"); | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('#chan_thumbnail').tooltip("destroy"); | ||||
|                 Helper.tooltip('#chan_thumbnail', "destroy"); | ||||
|             } | ||||
|             w_p = true; | ||||
|             break; | ||||
| @@ -732,20 +785,16 @@ function toast(msg) { | ||||
|             msg=Helper.rnd(["I'm sorry, but you have to be an admin to do that!", "Only admins can do that", "You're not allowed to do that, try logging in!", "I can't let you do that", "Please log in to do that"]); | ||||
|             //Crypt.remove_pass(chan.toLowerCase()); | ||||
|             Admin.display_logged_out(); | ||||
|             $("#thumbnail_form").css("display", "none"); | ||||
|             $("#description_form").css("display", "none"); | ||||
|             Helper.css("#thumbnail_form", "display", "none"); | ||||
|             Helper.css("#description_form", "display", "none"); | ||||
|             if(!Helper.mobilecheck()) { | ||||
|                 $('#chan_thumbnail').tooltip("destroy"); | ||||
|                 Helper.tooltip('#chan_thumbnail', "destroy"); | ||||
|             } | ||||
|             w_p = true; | ||||
|             if(!$("#playlist_loader").hasClass("hide")) { | ||||
|                 $("#playlist_loader").addClass("hide"); | ||||
|             } | ||||
|             if(!$("#playlist_loader_spotify").hasClass("hide")) { | ||||
|                 $("#playlist_loader_spotify").addClass("hide"); | ||||
|             } | ||||
|             $("#import_spotify").removeClass("hide"); | ||||
|                     $("#import").removeClass("hide"); | ||||
|             Helper.addClass("#playlist_loader", "hide"); | ||||
|             Helper.addClass("#playlist_loader_spotify", "hide"); | ||||
|             Helper.removeClass("#import_spotify", "hide"); | ||||
|             Helper.removeClass("#import", "hide"); | ||||
|             break; | ||||
|         case "noskip": | ||||
|             if(embed) return; | ||||
| @@ -777,8 +826,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"); | ||||
|             break; | ||||
|         case "changedpass": | ||||
|             if(embed) return; | ||||
| @@ -822,25 +871,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){ | ||||
|   | ||||
| @@ -2,11 +2,11 @@ var Helper = { | ||||
|     logs: [], | ||||
|     log: function(to_log) { | ||||
|         if(localStorage.debug === "true") { | ||||
|             console.log("------------ " + new Date() + " ------------"); | ||||
|             console.log("------------ " + new Date() + " ------------");/*RemoveLogging:skip*/ | ||||
|             for(var i = 0; i < to_log.length; i++) { | ||||
|                 console.log(to_log[i]); | ||||
|                 console.log(to_log[i]);/*RemoveLogging:skip*/ | ||||
|             } | ||||
|             console.log("------------ " + new Date() + " ------------"); | ||||
|             console.log("------------ " + new Date() + " ------------");/*RemoveLogging:skip*/ | ||||
|         } | ||||
|         Helper.logs.unshift({log: to_log, date: new Date()}); | ||||
|         if(Helper.logs.length > 10) { | ||||
| @@ -18,6 +18,306 @@ var Helper = { | ||||
|         return arr[Math.floor(Math.random() * arr.length)]; | ||||
|     }, | ||||
|  | ||||
|     toggleClass: function(element, className) { | ||||
|         try { | ||||
|             if(typeof(element) == "object") { | ||||
|                 if(element.className.indexOf(className) == -1) { | ||||
|                     Helper.addClass(element, className); | ||||
|                 } else { | ||||
|                     Helper.removeClass(element, className); | ||||
|                 } | ||||
|             } else if(element.substring(0,1) == "#") { | ||||
|                 var elem = document.getElementById(element.substring(1)); | ||||
|                 if(elem.className.indexOf(className) == -1) { | ||||
|                     Helper.addClass(elem, className); | ||||
|                 } else { | ||||
|                     Helper.removeClass(elem, 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]); | ||||
|                             } | ||||
|                         } | ||||
|                     } else { | ||||
|                         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) { | ||||
|                         Helper.addClass(elements[i], className); | ||||
|                     }  else { | ||||
|                         Helper.removeClass(element, className); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }catch(e) {} | ||||
|     }, | ||||
|  | ||||
|     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) == "#") { | ||||
|                 document.getElementById(element.substring(1)).style[attribute] = value; | ||||
|             } else { | ||||
|                 var elements = document.getElementsByClassName(element.substring(1)); | ||||
|                 for(var i = 0; i < elements.length; i++) { | ||||
|                     elements[i].style[attribute] = value; | ||||
|                 } | ||||
|             } | ||||
|         } catch(e) { | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     html: function(element) { | ||||
|         try { | ||||
|             if(element.substring(0,1) == "#") { | ||||
|                 return document.getElementById(element.substring(1)).innerHTML; | ||||
|             } else { | ||||
|                 var elements = document.getElementsByClassName(element.substring(1)); | ||||
|                 for(var i = 0; i < elements.length; i++) { | ||||
|                     return elements[i].innerHTML; | ||||
|                 } | ||||
|             } | ||||
|         } catch(e){} | ||||
|     }, | ||||
|  | ||||
|     removeClass: function(element, className) { | ||||
|         try { | ||||
|             if(typeof(element) == "object") { | ||||
|                 element.classList.remove(className); | ||||
|             } else if(element.substring(0,1) == "#") { | ||||
|                 document.getElementById(element.substring(1)).classList.remove(className); | ||||
|             } else { | ||||
|                 var elements = document.getElementsByClassName(element.substring(1)); | ||||
|                 for(var i = 0; i < elements.length; i++) { | ||||
|                     elements[i].classList.remove(className); | ||||
|                 } | ||||
|             } | ||||
|         } catch(e) { | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     removeElement: function(element) { | ||||
|         try { | ||||
|             if(element.substring(0,1) == "#") { | ||||
|                 var elem = document.getElementById(element.substring(1)); | ||||
|                 elem.remove(); | ||||
|             } 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]); | ||||
|                             } | ||||
|                         } | ||||
|                     } else { | ||||
|                         elements = document.getElementsByClassName(element.substring(1)); | ||||
|                     } | ||||
|                 } else { | ||||
|                     elements = document.getElementsByTagName(element); | ||||
|                 } | ||||
|                 for(var i = 0; i < elements.length; i++) { | ||||
|                     elements[i].remove(); | ||||
|                 } | ||||
|             } | ||||
|         } catch(e) {} | ||||
|     }, | ||||
|  | ||||
|     setHtml: function(element, html) { | ||||
|         if(typeof(element) == "object") { | ||||
|             element.innerHTML = html; | ||||
|         } else if(element.substring(0,1) == "#") { | ||||
|             var elem = document.getElementById(element.substring(1)); | ||||
|             elem.innerHTML = html; | ||||
|         } else { | ||||
|             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++) { | ||||
|                 elements[i].innerHTML = html; | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     attr: function(element, attr, value) { | ||||
|         if(element.substring(0,1) == "#") { | ||||
|             var elem = document.getElementById(element.substring(1)); | ||||
|             elem.setAttribute(attr, value); | ||||
|         } 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]); | ||||
|                         } | ||||
|                     } | ||||
|                 } else { | ||||
|                     elements = document.getElementsByClassName(element.substring(1)); | ||||
|                 } | ||||
|             } else { | ||||
|                 elements = document.getElementsByTagName(element); | ||||
|             } | ||||
|             for(var i = 0; i < elements.length; i++) { | ||||
|                 elements[i].setAttribute(attr, value); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     tabs: function(element, options) { | ||||
|         if(element.substring(0,1) == "#") { | ||||
|             var elem = document.getElementById(element.substring(1)); | ||||
|             if(options == "destroy") { | ||||
|                 var this_element = M.Tabs.getInstance(elem); | ||||
|                 if(this_element != undefined) this_element.destroy(); | ||||
|             } else { | ||||
|                 M.Tabs.init(elem, options); | ||||
|             } | ||||
|         } else { | ||||
|             var elements = document.getElementsByClassName(element.substring(1)); | ||||
|             for(var i = 0; i < elements.length; i++) { | ||||
|                 if(options == "destroy") { | ||||
|                     var this_element = M.Tabs.getInstance(elem); | ||||
|                     if(this_element != undefined) this_element.destroy(); | ||||
|                 } else { | ||||
|                     M.Tabs.init(elements[i], options); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     tooltip: function(element, options) { | ||||
|         try { | ||||
|             if(element.substring(0,1) == "#") { | ||||
|                 var elem = document.getElementById(element.substring(1)); | ||||
|                 if(options == "destroy") { | ||||
|                     var this_element = M.Tooltip.getInstance(elem); | ||||
|                     if(this_element != undefined) this_element.destroy(); | ||||
|                 } else { | ||||
|                     M.Tooltip.init(elem, options); | ||||
|                 } | ||||
|             } else { | ||||
|                 var elements = document.getElementsByClassName(element.substring(1)); | ||||
|                 for(var i = 0; i < elements.length; i++) { | ||||
|                     if(options == "destroy") { | ||||
|                         var this_element = M.Tooltip.getInstance(elem); | ||||
|                         if(this_element != undefined) this_element.destroy(); | ||||
|                     } else { | ||||
|                         M.Tooltip.init(elements[i], options); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } catch(e) {} | ||||
|     }, | ||||
|  | ||||
|     addClass: function(element, className) { | ||||
|         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; | ||||
|                         } | ||||
|                     } | ||||
|                 } catch(e) { | ||||
|                     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) == ".") { | ||||
|                     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(); | ||||
|         xmlhttp.onreadystatechange = function() { | ||||
|             if (xmlhttp.readyState == XMLHttpRequest.DONE) {   // XMLHttpRequest.DONE == 4 | ||||
|                if (xmlhttp.status == 200 || xmlhttp.status == 201 || xmlhttp.status == 202) { | ||||
|                    obj.success(xmlhttp.responseText, xmlhttp); | ||||
|                } | ||||
|                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) { | ||||
|             if(typeof(obj.data) == "object") obj.data = JSON.stringify(obj.data); | ||||
|             //xmlhttp.send(sendRequest); | ||||
|             xmlhttp.send(obj.data); | ||||
|         } | ||||
|         else xmlhttp.send(); | ||||
|     }, | ||||
|  | ||||
|     randomString: function(length){ | ||||
|         var text = ""; | ||||
|         var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_"; | ||||
| @@ -262,21 +562,15 @@ var Helper = { | ||||
|         return string.substring(0,1).toUpperCase()+string.substring(1).toLowerCase(); | ||||
|     }, | ||||
|  | ||||
|     addClass: function(object, toAdd){ | ||||
|         if(!Helper.contains($(object).attr("class").split(" "), toAdd)){ | ||||
|             $(object).addClass(toAdd); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     send_mail: function(from, message){ | ||||
|         if(from !== "" && message !== ""){ | ||||
|  | ||||
|             $("#submit-contact-form").addClass("hide"); | ||||
|             $("#send-loader").removeClass("hide"); | ||||
|             $("#contact-form-from").attr("disabled", "true"); | ||||
|             $("#contact-form-message").attr("disabled", "true"); | ||||
|             Helper.addClass("#submit-contact-form", "hide"); | ||||
|             Helper.removeClass("#send-loader", "hide"); | ||||
|             document.getElementById("contact-form-from").setAttribute("disabled", true); | ||||
|             document.getElementById("contact-form-message").setAttribute("disabled", true); | ||||
|             var captcha_response = grecaptcha.getResponse(); | ||||
|             $.ajax({ | ||||
|             Helper.ajax({ | ||||
|                 type: "POST", | ||||
|                 data: { | ||||
|                     from: from, | ||||
| @@ -286,11 +580,11 @@ var Helper = { | ||||
|                 url: "/api/mail", | ||||
|                 success: function(data){ | ||||
|                     if(data == "success"){ | ||||
|                         $("#contact-container").empty(); | ||||
|                         $("#contact-container").html("Mail has been sent, we'll be back with you shortly.") | ||||
|                         Helper.setHtml("#contact-container", ""); | ||||
|                         Helper.setHtml("#contact-container", "Mail has been sent, we'll be back with you shortly.") | ||||
|                     }else{ | ||||
|                         $("#contact-container").empty(); | ||||
|                         $("#contact-container").html("Something went wrong, sorry about that. You could instead try with your own mail-client: <a title='Open in client' href='mailto:contact@zoff.me?Subject=Contact%20Zoff'>contact@zoff.me</a>") | ||||
|                         Helper.setHtml("#contact-container", ""); | ||||
|                         Helper.setHtml("#contact-container", "Something went wrong, sorry about that. You could instead try with your own mail-client: <a title='Open in client' href='mailto:contact@zoff.me?Subject=Contact%20Zoff'>contact@zoff.me</a>") | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
|   | ||||
| @@ -5,6 +5,7 @@ var Hostcontroller = { | ||||
|     old_id: null, | ||||
|  | ||||
|     host_listener: function(id) { | ||||
|         if(client) return; | ||||
|         Helper.log([ | ||||
|             "Host-listener triggered", | ||||
|             "Host-listener id:" + id | ||||
| @@ -15,15 +16,16 @@ var Hostcontroller = { | ||||
|             began = false; | ||||
|             Hostcontroller.old_id = id; | ||||
|         } | ||||
|         var codeURL = window.location.protocol + "//remote."+window.location.hostname+"/"+id; | ||||
|         if(embed) { | ||||
|             if(window.parentWindow && window.parentOrigin) { | ||||
|                 window.parentWindow.postMessage({type: "controller", id: id}, window.parentOrigin); | ||||
|             } | ||||
|         } else if(!embed) { | ||||
|             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); | ||||
|         } | ||||
|         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); | ||||
|         if(!began) { | ||||
|             began = true; | ||||
|             setup_host_listener(id); | ||||
| @@ -31,6 +33,7 @@ var Hostcontroller = { | ||||
|     }, | ||||
|  | ||||
|     host_on_action: function(arr) { | ||||
|         if(client) return; | ||||
|         if(enabled){ | ||||
|             if(arr.type == "volume") { | ||||
|                 Playercontrols.visualVolume(arr.value); | ||||
| @@ -42,7 +45,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 = ""; | ||||
| @@ -61,7 +64,10 @@ var Hostcontroller = { | ||||
|     }, | ||||
|  | ||||
|     change_enabled:function(val){ | ||||
|         if(client) return; | ||||
|         enabled = val; | ||||
|         $(".remote_switch_class").prop("checked", enabled); | ||||
|         try { | ||||
|             document.querySelector(".remote_switch_class").checked = enabled; | ||||
|         }catch(e) {} | ||||
|     } | ||||
| }; | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -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("<div class='volume-slid-remote'></div>"); | ||||
|         $("#volume-control-remote").append("<div class='volume-handle-remote'></div>"); | ||||
|             $(".volume-slid-remote").css("width", vol + "%"); | ||||
|             $(".volume-handle-remote").css("left", "calc(" + vol + "% - 1px)"); | ||||
|         document.getElementById("volume-control-remote").insertAdjacentHTML("beforeend", "<div class='volume-slid-remote'></div>"); | ||||
|         document.getElementById("volume-control-remote").insertAdjacentHTML("beforeend", "<div class='volume-handle-remote'></div>"); | ||||
|             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); | ||||
|   | ||||
| @@ -81,15 +81,12 @@ 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) { | ||||
|                     if($("#player_overlay").hasClass("hide")) { | ||||
|                         $("#player_overlay").removeClass("hide"); | ||||
|                     } | ||||
|                     Helper.removeClass("#player_overlay", "hide"); | ||||
|                 } | ||||
|                 try{ | ||||
|                     if(!chromecastAvailable) { | ||||
| @@ -167,7 +164,7 @@ var Player = { | ||||
|                     if(full_playlist[0].id == video_id && !mobile_beginning){ | ||||
|                         List.song_change(full_playlist[0].added); | ||||
|                     } | ||||
|                     Suggestions.fetchYoutubeSuggests(video_id); | ||||
|                     if(!client) Suggestions.fetchYoutubeSuggests(video_id); | ||||
|                 }catch(e){} | ||||
|  | ||||
|                 Player.getTitle(song_title, viewers); | ||||
| @@ -283,18 +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('<div id="snow" class="snow-channel"></div>'); | ||||
|                         }*/ | ||||
|                         Helper.css("#channel-load", "display", "none"); | ||||
|  | ||||
|                     //} | ||||
|                 } | ||||
|                 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; | ||||
|             if(!client) 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)"); | ||||
|             } | ||||
|         } | ||||
| @@ -572,23 +569,23 @@ var Player = { | ||||
|             player_ready = true; | ||||
|             if(!window.MSStream) { | ||||
|                 if(Helper.mobilecheck()){ | ||||
|                     $("#playpause").css("visibility", "hidden"); | ||||
|                     $("#playpause").css("pointer-events", "none"); | ||||
|                     $("#player").css("opacity", "1"); | ||||
|                     Helper.css("#playpause", "visibility", "hidden"); | ||||
|                     Helper.css("#playpause", "pointer-events", "none"); | ||||
|                     Helper.css("#player", "opacity", "1"); | ||||
|                     if(offline) { | ||||
|                         setTimeout(function(){ | ||||
|                             $("#channel-load").css("display", "none"); | ||||
|                             $("#playpause").css("visibility", "visible"); | ||||
|                             $("#playpause").css("pointer-events", "all"); | ||||
|                             Helper.css("#channel-load", "display", "none"); | ||||
|                             Helper.css("#playpause", "visibility", "visible"); | ||||
|                             Helper.css("#playpause", "pointer-events", "all"); | ||||
|                         }, 1500); | ||||
|                     } | ||||
|                 } else { | ||||
|                     //$("#channel-load").css("display", "none"); | ||||
|                 } | ||||
|                 /*$("#player").css("opacity", "1");*/ | ||||
|                 $(".video-container").removeClass("no-opacity"); | ||||
|                 $("#controls").css("opacity", "1"); | ||||
|                 $(".playlist").css("opacity", "1"); | ||||
|                 Helper.removeClass(".video-container", "no-opacity"); | ||||
|                 Helper.css("#controls", "opacity", "1"); | ||||
|                 Helper.css(".playlist", "opacity", "1"); | ||||
|                 if(autoplay) { | ||||
|                     Player.loadVideoById(video_id, duration); | ||||
|                 } else { | ||||
| @@ -615,6 +612,7 @@ var Player = { | ||||
|             } | ||||
|             Player.readyLooks(); | ||||
|             Playercontrols.initYoutubeControls(Player.player); | ||||
|             Player.player.setVolume(Crypt.get_volume()); | ||||
|             Playercontrols.initSlider(); | ||||
|             Player.player.setVolume(Crypt.get_volume()); | ||||
|         }catch(e){ | ||||
| @@ -629,33 +627,33 @@ var Player = { | ||||
|         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); | ||||
|             $("#nav").css("background-color", Helper.rgbToHsl(color, true)); | ||||
|             $(".title-container").css("background-color", Helper.rgbToHsl(color, true)); | ||||
|             Helper.css("#nav", "background-color", Helper.rgbToHsl(color, true)); | ||||
|             Helper.css(".title-container", "background-color", Helper.rgbToHsl(color, true)); | ||||
|             var hexHsl = Helper.rgbToHex(color[0], color[1], color[2]); | ||||
|             try { | ||||
|                 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); | ||||
|                 new_color = Helper.hexToRgb(new_color); | ||||
|                 new_color = Helper.rgbToHsl([new_color.r, new_color.g, new_color.b], true); | ||||
|                 $("#controls").css("background", new_color); | ||||
|                 Helper.css("#controls", "background", new_color); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     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%"; | ||||
|             } | ||||
|  | ||||
|         } | ||||
| @@ -738,7 +736,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)+" <span id='dash'>/</span> "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds)); | ||||
|                     Helper.setHtml("#duration", Helper.pad(minutes)+":"+Helper.pad(seconds)+" <span id='dash'>/</span> "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds)); | ||||
|                 } | ||||
|                 per = (100 / duration) * currDurr; | ||||
|                 if(per >= 100) { | ||||
| @@ -754,7 +752,7 @@ var Player = { | ||||
|                 } | ||||
|  | ||||
|                 if(!dragging) { | ||||
|                     $("#bar").width(per+"%"); | ||||
|                     document.getElementById("bar").style.width = per+"%"; | ||||
|                 } | ||||
|  | ||||
|                 if(Player.player.getCurrentTime() > Player.np.end && Player.player.getPlayerState() == YT.PlayerState.PLAYING) { | ||||
| @@ -777,7 +775,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){ | ||||
|   | ||||
| @@ -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,24 +30,20 @@ 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("<div class='volume-slid " + slider_type + "'></div>"); | ||||
|         $("#volume").append("<div class='volume-handle " + slider_type + "'></div>"); | ||||
|         document.getElementById("volume").insertAdjacentHTML("beforeend", "<div class='volume-slid " + slider_type + "'></div>"); | ||||
|         document.getElementById("volume").insertAdjacentHTML("beforeend", "<div class='volume-handle " + slider_type + "'></div>"); | ||||
|         if(slider_type != "vertical") { | ||||
|             if($("#volume").hasClass("vertical")) { | ||||
|                 $("#volume").removeClass("vertical"); | ||||
|             } | ||||
|             $(".volume-slid").css("width", vol + "%"); | ||||
|             $(".volume-handle").css("left", "calc(" + vol + "% - 1px)"); | ||||
|             Helper.removeClass("#volume", "vertical"); | ||||
|             Helper.css(".volume-slid", "width", vol + "%"); | ||||
|             Helper.css(".volume-handle", "left", "calc(" + vol + "% - 1px)"); | ||||
|         } else { | ||||
|             if(!$("#volume").hasClass("vertical")) { | ||||
|                 $("#volume").addClass("vertical"); | ||||
|             } | ||||
|             $(".volume-slid").css("height", vol + "%"); | ||||
|             $(".volume-handle").css("bottom", "calc(" + vol + "% - 1px)"); | ||||
|             Helper.addClass("#volume", "vertical"); | ||||
|             Helper.css(".volume-slid", "height", vol + "%"); | ||||
|             Helper.css(".volume-handle", "bottom", "calc(" + vol + "% - 1px)"); | ||||
|  | ||||
|         } | ||||
|         Playercontrols.choose_button(vol, false); | ||||
| @@ -185,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)(); | ||||
| @@ -200,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 { | ||||
| @@ -221,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) { | ||||
| @@ -248,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"}); | ||||
| @@ -277,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"); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| var start = true; | ||||
| var dynamicListeners = {}; | ||||
|  | ||||
| mobilecheck = function() { | ||||
|     var check = false; | ||||
| @@ -6,17 +7,17 @@ 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 | ||||
|     }; | ||||
|  | ||||
|     $("#about").modal(); | ||||
|     $("#contact").modal(); | ||||
|     $("#help").modal(); | ||||
|     M.Modal.init(document.getElementById("about")); | ||||
|     M.Modal.init(document.getElementById("contact")); | ||||
|     M.Modal.init(document.getElementById("help")); | ||||
|  | ||||
|     if(window.location.hostname == "remote.zoff.me") add = "https://zoff.me"; | ||||
|     else add = "localhost"; | ||||
| @@ -30,22 +31,53 @@ $(document).ready(function (){ | ||||
|         id = id.toLowerCase(); | ||||
|         Remotecontroller.control(); | ||||
|     } | ||||
| }); | ||||
| }, false); | ||||
|  | ||||
| $(document).on("click", "#playbutton", function() { | ||||
|  | ||||
| function handleEvent(e, target, tried, type) { | ||||
|     for(var y = 0; y < e.path.length; y++) { | ||||
|         var target = e.path[y]; | ||||
|         if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { | ||||
|             dynamicListeners[type]["#" + target.id].call(target); | ||||
|             return; | ||||
|         } else { | ||||
|             if(target.classList == undefined) return; | ||||
|             for(var i = 0; i < target.classList.length; i++) { | ||||
|                 if(dynamicListeners[type] && dynamicListeners[type]["." + target.classList[i]]) { | ||||
|                     dynamicListeners[type]["." + target.classList[i]].call(target); | ||||
|                     return; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| function addListener(type, element, callback) { | ||||
|     if(dynamicListeners[type] == undefined) dynamicListeners[type] = {}; | ||||
|     dynamicListeners[type][element] = callback; | ||||
| } | ||||
|  | ||||
| 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 +92,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 +113,11 @@ var Remotecontroller = { | ||||
|             } | ||||
|             //});*/ | ||||
|  | ||||
|             $("#volume").append("<div class='volume-slid'></div>"); | ||||
|             $("#volume").append("<div class='volume-handle'></div>"); | ||||
|             document.getElementById("volume").insertAdjacentHTML("beforeend", "<div class='volume-slid'></div>"); | ||||
|             document.getElementById("volume").insertAdjacentHTML("beforeend", "<div class='volume-handle'></div>"); | ||||
|  | ||||
|             $(".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 +131,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 = ""; | ||||
|         } | ||||
|  | ||||
|     }, | ||||
|   | ||||
| @@ -8,36 +8,37 @@ 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"); | ||||
|             empty_results_html = $("#empty-results-container").html(); | ||||
|             result_html = document.getElementById("temp-results-container"); | ||||
|             empty_results_html = Helper.html("#empty-results-container"); | ||||
|         } | ||||
|         if(!pagination && $("#inner-results").length == 0) { | ||||
|             $(".search_results").html(''); | ||||
|         if(!pagination && document.querySelectorAll("#inner-results").length == 0) { | ||||
|             Helper.setHtml(".search_results", ''); | ||||
|         } | ||||
|         if(search_input !== ""){ | ||||
|             searching = true; | ||||
| @@ -52,44 +53,44 @@ var Search = { | ||||
|                 var vid_url	= "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+api_key+"&id="; | ||||
|             } | ||||
|  | ||||
|             if(!Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) | ||||
|             $(".search_loader_spinner").addClass("active"); | ||||
|  | ||||
|             if(Helper.contains($("#results").attr("class").split(" "), "hide")) | ||||
|             $("#results").removeClass("hide"); | ||||
|             Helper.addClass(".search_loader_spinner", "active"); | ||||
|             Helper.removeClass("#results", "hide"); | ||||
|  | ||||
|             $.ajax({ | ||||
|             Helper.ajax({ | ||||
|                 type: "GET", | ||||
|                 url: yt_url, | ||||
|                 dataType:"jsonp", | ||||
|                 dataType: "jsonp", | ||||
|                 success: function(response){ | ||||
|                     response = JSON.parse(response); | ||||
|                     var nextPageToken = response.nextPageToken; | ||||
|                     var prevPageToken = response.prevPageToken; | ||||
|                     if(response.items.length === 0) { | ||||
|                         $("#results").empty(); | ||||
|                         $("#results").css("display", "block"); | ||||
|                         $("<div style='display:none;' id='inner-results' class='empty-inner-results'>"+empty_results_html+"</div>").appendTo($("#results")).show("blind", 83.33); | ||||
|                         if(Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) | ||||
|                         $(".search_loader_spinner").removeClass("active"); | ||||
|                         document.getElementById("results").innerHTML = ""; | ||||
|                         Helper.css("#results", "display", "block"); | ||||
|                         //$("<div style='display:none;' id='inner-results' class='empty-inner-results'>"+empty_results_html+"</div>").appendTo($("#results")).show("blind", 83.33); | ||||
|                         document.getElementById("results").insertAdjacentHTML("beforeend", "<div style='display:block;' id='inner-results' style='height:calc(100vh - 64px);' class='empty-inner-results'>"+empty_results_html+"</div>"); | ||||
|                         Helper.removeClass(".search_loader_spinner", "active"); | ||||
|  | ||||
|                     } else if(response.items){ | ||||
|                         $.each(response.items, function(i,data) { | ||||
|                             vid_url += data.id.videoId+","; | ||||
|                         }); | ||||
|                         for(var i = 0; i < response.items.length; i++) { | ||||
|                             vid_url += response.items[i].id.videoId+","; | ||||
|                         } | ||||
|  | ||||
|                         $.ajax({ | ||||
|                         Helper.ajax({ | ||||
|                             type: "GET", | ||||
|                             url: vid_url, | ||||
|                             dataType:"jsonp", | ||||
|                             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.outerHTML; | ||||
|  | ||||
|                                 //$("#results").append(result_html); | ||||
|  | ||||
|                                 $.each(response.items, function(i,song) | ||||
|                                 { | ||||
|                                 for(var i = 0; i < response.items.length; i++) { | ||||
|                                     var song = response.items[i]; | ||||
|                                     var duration=song.contentDetails.duration; | ||||
|                                     secs=Search.durationToSeconds(duration); | ||||
|                                     var _temp_duration = Helper.secondsToOther(secs); | ||||
| @@ -101,73 +102,70 @@ 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); | ||||
|                                     $("<div id='inner-results'>"+output+"</div>").prependTo($("#results")); | ||||
|                                     document.getElementById("results").insertAdjacentHTML("beforeend", pagination_buttons_html); | ||||
|                                     //$("<div id='inner-results'>"+output+"</div>").prependTo($("#results")); | ||||
|                                     document.getElementById("results").insertAdjacentHTML("afterbegin", "<div id='inner-results'>"+output+"</div>"); | ||||
|                                     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 { | ||||
|                                         $(".next-results-button").addClass("disabled"); | ||||
|                                         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 { | ||||
|                                         $(".prev-results-button").addClass("disabled"); | ||||
|                                         Helper.addClass(".prev-results-button", "disabled"); | ||||
|                                     } | ||||
|  | ||||
|                                     $(".pagination-results a").attr("data-original-search", search_input); | ||||
|                                     document.querySelector(".pagination-results a").setAttribute("data-original-search", search_input); | ||||
|  | ||||
|                                     //setTimeout(function(){$(".thumb").lazyload({container: $("#results")});}, 250); | ||||
|  | ||||
|                                     if(Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) | ||||
|                                     $(".search_loader_spinner").removeClass("active"); | ||||
|                                     Helper.removeClass(".search_loader_spinner", "active"); | ||||
|                                     Helper.css(".search_results", "display", "block"); | ||||
|  | ||||
|                                     $(".add-many").click(function(e) { | ||||
|                                         e.preventDefault(); | ||||
|                                         e.stopPropagation(); | ||||
|                                         return false; | ||||
|                                     }); | ||||
|                                 } else if(!retried){ | ||||
|                                     Search.search(search_input, true); | ||||
|                                 } else { | ||||
|                                     $("<div style='display:none;' id='inner-results'>"+empty_results_html+"</div>").appendTo($("#results")).show("blind", 83.33); | ||||
|                                     if(Helper.contains($(".search_loader_spinner").attr("class").split(" "), "active")) | ||||
|                                     $(".search_loader_spinner").removeClass("active"); | ||||
|                                     //$("<div style='display:none;' id='inner-results'>"+empty_results_html+"</div>").appendTo($("#results")).show("blind", 83.33); | ||||
|                                     document.getElementById("results").insertAdjacentHTML("beforeend", "<div style='display:block;' id='inner-results' style='height:calc(100vh - 64px);'>"+empty_results_html+"</div>"); | ||||
|                                     Helper.css("#results", "display", "block"); | ||||
|                                     Helper.removeClass(".search_loader_spinner", "active"); | ||||
|                                 } | ||||
|                             } | ||||
|                         }); | ||||
| @@ -175,9 +173,9 @@ var Search = { | ||||
|                 } | ||||
|             }); | ||||
|         } else { | ||||
|             $(".main").removeClass("blurT"); | ||||
|             $("#controls").removeClass("blurT"); | ||||
|             $(".main").removeClass("clickthrough"); | ||||
|             Helper.removeClass(".main", "blurT"); | ||||
|             Helper.removeClass("#controls", "blurT"); | ||||
|             Helper.removeClass(".main", "clickthrough"); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -189,11 +187,12 @@ var Search = { | ||||
|         artist = artist.split(" "); | ||||
|         var temptitle = title.split("-"); | ||||
|         temptitle = temptitle.join(" ").split(" "); | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             type: "GET", | ||||
|             url: yt_url, | ||||
|             dataType:"jsonp", | ||||
|             success: function(response){ | ||||
|                 response = JSON.parse(response); | ||||
|                 //Helper.log(response); | ||||
|                 if(response.items.length === 0){ | ||||
|                     Search.readySubmit(false, {totalLength: totalNumber - 1}); | ||||
| @@ -202,26 +201,30 @@ var Search = { | ||||
|                         "Spotify title: " + title + " " + artist.join(" "), | ||||
|                         "Spotify length: " + length | ||||
|                     ]); | ||||
|                     var not_added_song = $("<div>" + not_import_html + "</div>"); | ||||
|                     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()); | ||||
|                     $(".not-imported").removeClass("hide"); | ||||
|                 } else if(response.items.length > 0) { | ||||
|                     $.each(response.items, function(i,data) | ||||
|                     { | ||||
|                         vid_url += data.id.videoId+","; | ||||
|                     }); | ||||
|                     var not_added_song = document.createElement("div"); | ||||
|                     not_added_song.innerHTML = not_import_html; | ||||
|  | ||||
|                     $.ajax({ | ||||
|                     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.length; i++) { | ||||
|                         var data = response.items[i]; | ||||
|                         vid_url += data.id.videoId+","; | ||||
|                     } | ||||
|  | ||||
|                     Helper.ajax({ | ||||
|                         type: "GET", | ||||
|                         url: vid_url, | ||||
|                         dataType:"jsonp", | ||||
|                         success: function(response){ | ||||
|                             response = JSON.parse(response); | ||||
|                             if(response.items.length > 0) { | ||||
|                                 var matched = false; | ||||
|                                 $.each(response.items, function(i, data){ | ||||
|                                 for(var y = 0; y < response.items.length; y++) { | ||||
|                                     var data = response.items[y]; | ||||
|                                     //Helper.log(data); | ||||
|                                     //var title = data.snippet.title; | ||||
|                                     var duration = Search.durationToSeconds(data.contentDetails.duration); | ||||
| @@ -229,7 +232,9 @@ var Search = { | ||||
|                                     if(similarity(data.snippet.title, artist + " - " + title) > 0.75) { | ||||
|                                         not_matched = false; | ||||
|                                     } else { | ||||
|                                         $.each(temptitle, function(i, data_title){ | ||||
|                                         for(var i = 0; i < temptitle.length; i++) { | ||||
|                                             var data_title = temptitle[i]; | ||||
|  | ||||
|                                             if(data.snippet.title.toLowerCase().indexOf(data_title.toLowerCase()) == -1 || !( | ||||
|                                                 data.snippet.title.toLowerCase().indexOf("cover") == -1 && | ||||
|                                                 title.toLowerCase().indexOf("cover") == -1 && | ||||
| @@ -243,16 +248,16 @@ var Search = { | ||||
|                                             not_matched = true; | ||||
|                                             else if(duration > 1800) not_matched = true; | ||||
|  | ||||
|                                             return false; | ||||
|                                         }); | ||||
|  | ||||
|                                         } | ||||
|                                     } | ||||
|  | ||||
|                                     if((!not_matched)){ | ||||
|                                         matched = true; | ||||
|                                         Search.readySubmit(true, { id: data.id, title: data.snippet.title, duration: duration, totalLength: totalNumber - 1}); | ||||
|                                         return false; | ||||
|                                         break; | ||||
|                                     } | ||||
|                                 }); | ||||
|                                 } | ||||
|                                 if(!matched){ | ||||
|                                     Search.readySubmit(false, {totalLength: totalNumber - 1}); | ||||
|                                     Helper.log([ | ||||
| @@ -260,18 +265,24 @@ var Search = { | ||||
|                                         "Spotify title: " + title + " " + artist.join(" "), | ||||
|                                         "Spotify length: " + length | ||||
|                                     ]); | ||||
|                                     var not_added_song = $("<div>" + not_import_html + "</div>"); | ||||
|                                     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()); | ||||
|                                     $(".not-imported").removeClass("hide"); | ||||
|                                     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"); | ||||
|                                 } | ||||
|                             } | ||||
|                         }, | ||||
|                         error: function(e) { | ||||
|                             console.log(e); | ||||
|                         } | ||||
|                     }); | ||||
|  | ||||
|                 } | ||||
|             }, error: function(e) { | ||||
|                 console.log(e); | ||||
|             } | ||||
|         }); | ||||
|     }, | ||||
| @@ -291,8 +302,8 @@ var Search = { | ||||
|                 Search.submit(data.id, data.title, data.duration, true, i, Search.submitArray.length - 1, 0, data.duration); | ||||
|             });*/ | ||||
|             document.getElementById("import_spotify").disabled = false; | ||||
|             $("#import_spotify").removeClass("hide"); | ||||
|             $("#playlist_loader_spotify").addClass("hide"); | ||||
|             Helper.removeClass("#import_spotify", "hide"); | ||||
|             Helper.addClass("#playlist_loader_spotify", "hide"); | ||||
|             Search.submitArray = []; | ||||
|             Search.submitArrayExpected = null; | ||||
|         } | ||||
| @@ -300,14 +311,14 @@ var Search = { | ||||
|  | ||||
|     submitAndClose: function(id,title,duration, start, end){ | ||||
|         Search.submit(id,title, duration, false, 0, 1, start, end); | ||||
|         $("#results").html(''); | ||||
|         Helper.setHtml("#results", ''); | ||||
|         Search.showSearch(); | ||||
|         document.getElementById("search").value = ""; | ||||
|         $("body").attr("style", "overflow-y:auto") | ||||
|         $("#results").html = ""; | ||||
|         $(".main").removeClass("blurT"); | ||||
|         $("#controls").removeClass("blurT"); | ||||
|         $(".main").removeClass("clickthrough"); | ||||
|         document.getElementsByTagName("body")[0].setAttribute("style", "overflow-y:auto") | ||||
|         Helper.setHtml("#results",""); | ||||
|         Helper.removeClass(".main", "blurT"); | ||||
|         Helper.removeClass("#controls", "blurT"); | ||||
|         Helper.removeClass(".main", "clickthrough"); | ||||
|     }, | ||||
|  | ||||
|     importPlaylist: function(pId,pageToken){ | ||||
| @@ -327,13 +338,14 @@ var Search = { | ||||
|             headers = {};//'Content-Type': 'application/json'}; | ||||
|             datatype = "jsonp"; | ||||
|         } | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             type: "GET", | ||||
|             url: playlist_url, | ||||
|             dataType: datatype, | ||||
|             //dataType:"jsonp", | ||||
|             headers: headers, | ||||
|             success: function(response) { | ||||
|                 response = JSON.parse(response); | ||||
|                 if(response.error){ | ||||
|                     if(response.error.errors[0].reason == "playlistItemsNotAccessible"){ | ||||
|                         var nonce = Helper.randomString(29); | ||||
| @@ -360,8 +372,8 @@ var Search = { | ||||
|                             response.error | ||||
|                         ]); | ||||
|                         document.getElementById("import").disabled = false; | ||||
|                         $("#playlist_loader").addClass("hide"); | ||||
|                         $("#import").removeClass("hide"); | ||||
|                         Helper.addClass("#playlist_loader", "hide"); | ||||
|                         Helper.removeClass("#import", "hide"); | ||||
|                         before_toast(); | ||||
|                         M.toast({html: "It seems you've entered a invalid url.", displayLength: 4000}); | ||||
|                     } | ||||
| @@ -369,15 +381,16 @@ var Search = { | ||||
|                 }  else { | ||||
|                     var ids=""; | ||||
|                     var this_length = 0; | ||||
|                     if(typeof(response) == "string") response = $.parseJSON(response); | ||||
|                     if(typeof(response) == "string") response = JSON.parse(response); | ||||
|                     //Search.addVideos(response.items[0].contentDetails.videoId); | ||||
|                     //response.items.shift(); | ||||
|                     $.each(response.items, function(i,data) { | ||||
|                     for(var i = 0; i < response.items.length; i++) { | ||||
|                         var data = response.items[i]; | ||||
|                         ids+=data.contentDetails.videoId+","; | ||||
|                         Search.submitYouTubeArrayIds.push(data.contentDetails.videoId); | ||||
|                         this_length += 1; | ||||
|                         Search.submitYouTubeExpected += 1; | ||||
|                     }); | ||||
|                     } | ||||
|  | ||||
|                     if(response.nextPageToken) { | ||||
|                         //Search.addVideos(ids, true, 0, false, this_length); | ||||
| @@ -389,31 +402,65 @@ var Search = { | ||||
|                     } | ||||
|                     document.getElementById("import").value = ""; | ||||
|                 } | ||||
|             }, | ||||
|             error: function(e) { | ||||
|                 if(e.status == 403){ | ||||
|                     var nonce = Helper.randomString(29); | ||||
|                     window.callback = function(data) { | ||||
|                         access_token_data_youtube = data; | ||||
|                         if(access_token_data_youtube.state == nonce){ | ||||
|                             youtube_authenticated = true; | ||||
|                             setTimeout(function(){ | ||||
|                                 youtube_authenticated = false; | ||||
|                                 access_token_data_youtube = {}; | ||||
|                             }, access_token_data_youtube.expires_in * 1000); | ||||
|                             Search.importPlaylist(pId, pageToken); | ||||
|                         } else { | ||||
|                             access_token_data_youtube = ""; | ||||
|                             console.error("Nonce doesn't match"); | ||||
|                         } | ||||
|                         youtube_window.close(); | ||||
|                         window.callback = ""; | ||||
|                     }; | ||||
|                     youtube_window = window.open("/o_callback#youtube=true&nonce=" + nonce, "", "width=600, height=600"); | ||||
|                 } else { | ||||
|                     Helper.log([ | ||||
|                         "import list error: ", | ||||
|                         response.error | ||||
|                     ]); | ||||
|                     document.getElementById("import").disabled = false; | ||||
|                     Helper.addClass("#playlist_loader", "hide"); | ||||
|                     Helper.removeClass("#import", "hide"); | ||||
|                     before_toast(); | ||||
|                     M.toast({html: "It seems you've entered a invalid url.", displayLength: 4000}); | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     importSpotifyPlaylist: function(url){ | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             method: "get", | ||||
|             url: url, | ||||
|             headers: { | ||||
|                 'Authorization': 'Bearer ' + access_token_data.access_token | ||||
|             }, | ||||
|             success: function(response) { | ||||
|                 $.each(response.items, function(i,data) | ||||
|                 { | ||||
|                 response = JSON.parse(response); | ||||
|                 for(var i = 0; i < response.items.length; i++) { | ||||
|                     var data = response.items[i]; | ||||
|                     //ids+=data.contentDetails.videoId+","; | ||||
|                     Search.backgroundSearch(data.track.name, data.track.artists.map(function(elem){return elem.name;}).join(" "), Math.floor(data.track.duration_ms/1000), response.total, i + response.offset); | ||||
|  | ||||
|                 }); | ||||
|                 } | ||||
|                 if(response.next){ | ||||
|                     Search.importSpotifyPlaylist(response.next); | ||||
|                 } | ||||
|             }, | ||||
|             error: function() { | ||||
|             error: function(e) { | ||||
|                 document.getElementById("import_spotify").disabled = false; | ||||
|                 $("#import_spotify").removeClass("hide"); | ||||
|                 $("#playlist_loader_spotify").addClass("hide"); | ||||
|                 Helper.removeClass("#import_spotify", "hide"); | ||||
|                 Helper.addClass("#playlist_loader_spotify", "hide"); | ||||
|                 before_toast(); | ||||
|                 M.toast({html: "It seems you've entered a invalid url.", displayLength: 4000}); | ||||
|             } | ||||
| @@ -423,7 +470,7 @@ var Search = { | ||||
|     addVideos: function(ids){ | ||||
|         var more = false; | ||||
|         var next_ids = []; | ||||
|         var request_url="https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key=***REMOVED***&id="; | ||||
|         var request_url="https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key=" + api_key + "&id="; | ||||
|         for(var i = 0; i < ids.length; i++) { | ||||
|             if(i > 48) { | ||||
|                 more = true; | ||||
| @@ -432,17 +479,17 @@ var Search = { | ||||
|             } | ||||
|             request_url += ids[i] + ","; | ||||
|         } | ||||
|  | ||||
|         $.ajax({ | ||||
|             type: "POST", | ||||
|         Helper.ajax({ | ||||
|             type: "GET", | ||||
|             url: request_url, | ||||
|             dataType:"jsonp", | ||||
|             success: function(response){ | ||||
|                 response = JSON.parse(response); | ||||
|                 var x = 0; | ||||
|                 if(response.error) { | ||||
|                     Search.submitYouTubeError = true; | ||||
|                 } | ||||
|                 $.each(response.items, function(i,song) { | ||||
|                 for(var i = 0; i < response.items.length; i++) { | ||||
|                     var song = response.items[i]; | ||||
|                     var duration=Search.durationToSeconds(song.contentDetails.duration); | ||||
|                     if(!longsongs || duration<720){ | ||||
|                         enc_title= song.snippet.title;//encodeURIComponent(song.snippet.title); | ||||
| @@ -450,13 +497,16 @@ var Search = { | ||||
|                         x += 1; | ||||
|                         Search.submitYouTubeArray.push({id: song.id, title: enc_title, duration: duration}); | ||||
|                     } | ||||
|                 }); | ||||
|                 } | ||||
|                 if(more) Search.addVideos(next_ids); | ||||
|                 else { | ||||
|                     socket.emit("addPlaylist", {channel: chan.toLowerCase(), songs: Search.submitYouTubeArray}); | ||||
|                     Search.submitYouTubeArray = []; | ||||
|                     Search.submitYouTubeExpected = 0; | ||||
|                 } | ||||
|             }, | ||||
|             error: function(e) { | ||||
|                 console.log(e); | ||||
|             } | ||||
|         }); | ||||
|     }, | ||||
| @@ -468,11 +518,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 { | ||||
|   | ||||
| @@ -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($(".suggested-link span.badge.new.white").hasClass("hide") && number_suggested > 0 && Admin.logged_in){ | ||||
|             $(".suggested-link span.badge.new.white").removeClass("hide"); | ||||
|         if(number_suggested > 0 && Admin.logged_in){ | ||||
|             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); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -40,34 +40,37 @@ var Suggestions = { | ||||
|         var get_url 	= "https://www.googleapis.com/youtube/v3/search?part=snippet&relatedToVideoId="+id+"&type=video&key="+api_key; | ||||
|         var video_urls	= "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+api_key+"&id="; | ||||
|  | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             type: "GET", | ||||
|             url: get_url, | ||||
|             dataType:"jsonp", | ||||
|             success: function(response) | ||||
|             { | ||||
|                 $.each(response.items.slice(0,5), function(i,data){ | ||||
|                 response = JSON.parse(response); | ||||
|                 var this_resp = response.items.slice(0,5); | ||||
|                 for(var i = 0; i < this_resp.length; i++) { | ||||
|                     var data = this_resp[i]; | ||||
|                     video_urls += data.id.videoId+","; | ||||
|                 }); | ||||
|                 } | ||||
|  | ||||
|                 $.ajax({ | ||||
|                 Helper.ajax({ | ||||
|                     type: "GET", | ||||
|                     url: video_urls, | ||||
|                     dataType: "jsonp", | ||||
|                     success: function(response) | ||||
|                     { | ||||
|                         $("#suggest-song-html").empty(); | ||||
|  | ||||
|                         $.each(response.items, function(i,song) | ||||
|                         { | ||||
|                         response = JSON.parse(response); | ||||
|                         Helper.setHtml("#suggest-song-html", ""); | ||||
|                         for(var i = 0; i < response.items.length; i++) { | ||||
|                             var song = response.items[i]; | ||||
|                             var duration 	= song.contentDetails.duration; | ||||
|                             var length 		= Search.durationToSeconds(duration); | ||||
|                             duration 		= Helper.secondsToOther(Search.durationToSeconds(duration)); | ||||
|                             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)); | ||||
|                         } | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
| @@ -75,12 +78,11 @@ 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")) | ||||
|             $("#user_suggests").addClass("hide"); | ||||
|             Helper.addClass("#user_suggests", "hide"); | ||||
|         } else if(Admin.logged_in){ | ||||
|             $("#user_suggests").removeClass("hide"); | ||||
|             Helper.removeClass("#user_suggests", "hide"); | ||||
|         } | ||||
|     }, | ||||
| }; | ||||
|   | ||||
| @@ -1,28 +1,28 @@ | ||||
| $(document).ready(function() { | ||||
|     $("#about").modal(); | ||||
|     $(".help-button-footer").hide(); | ||||
|     $("#contact").modal(); | ||||
| window.addEventListener("DOMContentLoaded", function(e) { | ||||
|     M.Modal.init(document.getElementById("about")); | ||||
|     M.Modal.init(document.getElementById("contact")); | ||||
|     Helper.addClass(".help-button-footer", "hide"); | ||||
|  | ||||
|     $("#contact-container").empty(); | ||||
|     $("#contact-container").html("Send a mail to us: <a title='Open in client' href='mailto:contact@zoff.me?Subject=Contact%20Zoff'>contact@zoff.me</a>"); | ||||
|     $("#submit-contact-form").hide(); | ||||
|     Helper.setHtml("#contact-container", ""); | ||||
|     Helper.setHtml("#contact-container", "Send a mail to us: <a title='Open in client' href='mailto:contact@zoff.me?Subject=Contact%20Zoff'>contact@zoff.me</a>"); | ||||
|     Helper.css("#submit-contact-form", "display", "none"); | ||||
|  | ||||
|     ga('send', 'pageview'); | ||||
|  | ||||
|     if(!Helper.mobilecheck()) { | ||||
|         $("#iframe-container").append('<iframe id="iframe" src="https://zoff.me/_embed#celebrate&808080" width="600px" height="300px"></iframe>'); | ||||
|         document.getElementById("iframe-container").insertAdjacentHTML("beforeend", '<iframe id="iframe" src="https://zoff.me/_embed#celebrate&808080" width="600px" height="300px"></iframe>'); | ||||
|     } | ||||
|  | ||||
|     $(".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"); | ||||
|         $(".full-form-token").removeClass("hide"); | ||||
|         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(); | ||||
|         $.ajax({ | ||||
|         Helper.ajax({ | ||||
|             type: "POST", | ||||
|             url: "/api/apply", | ||||
|             data: { | ||||
| @@ -31,27 +31,27 @@ $(document).ready(function() { | ||||
|                 "g-recaptcha-response": captcha_response, | ||||
|             }, | ||||
|             success: function(response) { | ||||
|                 $(".full-form-token").addClass("hide"); | ||||
|                 Helper.addClass(".full-form-token", "hide"); | ||||
|                 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) { | ||||
|                 $(".full-form-token").addClass("hide"); | ||||
|                 $("#email_address").attr("readonly", false); | ||||
|                 $(".submit").toggleClass("disabled"); | ||||
|                 Helper.addClass(".full-form-token", "hide"); | ||||
|                 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(); | ||||
|     }); | ||||
| }); | ||||
|   | ||||
| @@ -84,10 +84,10 @@ | ||||
|             </ul> | ||||
|             <div id="context-menu-overlay" class="hide"></div> | ||||
|         {{/unless}} | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> | ||||
|         <!--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>--> | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/js/materialize.min.js"></script> | ||||
|         <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.0/socket.io.slim.js"></script> | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.js"></script> | ||||
|         <!--<script src="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.js"></script>--> | ||||
|         <script type="text/javascript" src="/assets/dist/{{javascript_file}}"></script> | ||||
|         {{#unless embed}} | ||||
|             <script type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script> | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
|                 <label for="height_embed" class="padding_left_6 embed-label">Height</label> | ||||
|                 <input type="number" value="300" id="height_embed" class="settings_embed" min="1" /> | ||||
|                 <label for="color_embed" class="padding_left_6 embed-label">Color</label> | ||||
|                 <input type="text" id="color_embed" class="settings_embed" value="#808080" /> | ||||
|                 <input type="color" id="color_embed" class="settings_embed" value="#808080" /> | ||||
|                 <label> | ||||
|                     <input type="checkbox" id="videoonly" class="checkbox" /> | ||||
|                     <span for="videoonly" class="padding_right_26">Video-only</span> | ||||
|   | ||||
| @@ -1,13 +1,13 @@ | ||||
| <li class="no-padding"> | ||||
|  | ||||
|     <div class="nav-btn close-settings clickable" title="Close" id="closeSettings"> | ||||
|         <i class="material-icons auto-margin">close</i> | ||||
|     </div> | ||||
|     <ul class="collapsible collapsible-accordion"> | ||||
|         <li> | ||||
|             <a class="col s9 collapsible-header bold waves-effect admin-settings"> | ||||
|     <ul class="collapsible collapsible-accordion settings-collapsible"> | ||||
|         <li class="no-padding"> | ||||
|             <div class="col s9 collapsible-header bold waves-effect admin-settings"> | ||||
|                 Channel Settings | ||||
|                 <i class="material-icons">tune</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <form action="#" id="adminForm" onsubmit="return false;"> | ||||
|                     <ul> | ||||
| @@ -143,14 +143,10 @@ | ||||
|                 </form> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
| <li class="no-padding"> | ||||
|     <ul class="collapsible collapsible-accordion"> | ||||
|         <li> | ||||
|             <a class="collapsible-header bold waves-effect">Channel Info | ||||
|         <li class="no-padding"> | ||||
|             <div class="collapsible-header bold waves-effect">Channel Info | ||||
|                 <i class="material-icons">info_outline</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <ul> | ||||
|                     <li> | ||||
| @@ -177,15 +173,11 @@ | ||||
|                 </ul> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
| {{#unless client}} | ||||
| <li class="no-padding remote-panel hide-on-small-only"> | ||||
|     <ul class="collapsible collapsible-accordion"> | ||||
|         <li> | ||||
|             <a class="collapsible-header bold waves-effect">Remote Control | ||||
|     {{#unless client}} | ||||
|         <li class="no-padding remote-panel hide-on-small-only"> | ||||
|             <div class="collapsible-header bold waves-effect">Remote Control | ||||
|                 <i class="material-icons">settings_remote</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <ul> | ||||
|                     <li> | ||||
| @@ -211,14 +203,10 @@ | ||||
|                 </ul> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
| <li class="no-padding offline-panel"> | ||||
|     <ul class="collapsible collapsible-accordion"> | ||||
|         <li> | ||||
|             <a class="collapsible-header bold waves-effect">Local Mode | ||||
|         <li class="no-padding offline-panel"> | ||||
|             <div class="collapsible-header bold waves-effect">Local Mode | ||||
|                 <i class="material-icons">visibility_off</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <ul> | ||||
|                     <li> | ||||
| @@ -239,15 +227,11 @@ | ||||
|                 </ul> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
|  | ||||
| <li class="no-padding show-only-mobile mobile-remote-panel"> | ||||
|     <ul class="collapsible collapsible-accordion"> | ||||
|         <li> | ||||
|             <a class="collapsible-header bold waves-effect import-a">Remote Controller | ||||
|         <li class="no-padding show-only-mobile mobile-remote-panel"> | ||||
|             <div class="collapsible-header bold waves-effect import-a">Remote Controller | ||||
|                 <i class="material-icons">settings_remote</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <ul id="remote-mobile-container"> | ||||
|                     <li class="white-bg"> | ||||
| @@ -284,15 +268,11 @@ | ||||
|                 </ul> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
|  | ||||
| <li class="no-padding import-panel"> | ||||
|     <ul class="collapsible collapsible-accordion"> | ||||
|         <li> | ||||
|             <a class="collapsible-header bold waves-effect import-a">Import Playlist | ||||
|         <li class="no-padding import-panel"> | ||||
|             <div class="collapsible-header bold waves-effect import-a">Import Playlist | ||||
|                 <i class="material-icons">keyboard_arrow_down</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <ul> | ||||
|                     <li class="white-bg"> | ||||
| @@ -364,15 +344,11 @@ | ||||
|                 </ul> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
|  | ||||
| <li class="no-padding export-panel"> | ||||
|     <ul class="collapsible collapsible-accordion white-bg"> | ||||
|         <li> | ||||
|             <a class="collapsible-header bold waves-effect export-a">Export Playlist | ||||
|         <li class="no-padding export-panel"> | ||||
|             <div class="collapsible-header bold waves-effect export-a">Export Playlist | ||||
|                 <i class="material-icons">keyboard_arrow_up</i> | ||||
|             </a> | ||||
|             </div> | ||||
|             <div class="collapsible-body"> | ||||
|                 <ul> | ||||
|                     <li class="white-bg"> | ||||
| @@ -421,7 +397,5 @@ | ||||
|                 </ul> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
| </li> | ||||
| {{/unless}} | ||||
| </ul> | ||||
|   | ||||
| @@ -1095,6 +1095,7 @@ function incrementToken(token) { | ||||
| router.route('/api/color').post(function(req, res) { | ||||
|     var origin = req.get("origin").replace("https://", "").replace("http://", ""); | ||||
|     var allowed = ["client.localhost", "localhost", "zoff.me", "client.zoff.me", "zoff.no", "client.zoff.no"]; | ||||
|     console.log(req.body); | ||||
|     if(allowed.indexOf(origin) < 0) { | ||||
|         res.sendStatus(403); | ||||
|         return; | ||||
| @@ -1114,6 +1115,7 @@ router.route('/api/imageblob').post(function(req, res) { | ||||
|         res.sendStatus(403); | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     Jimp.read('https://img.youtube.com/vi/' + req.body.id + '/mqdefault.jpg', function (err, image) { | ||||
|         if (err) { | ||||
|             console.log(err); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user