Files
Gw0bm/public/njum/js/newscript.min.js

1 line
25 KiB
JavaScript

function escapeHTML(a){return a.replace(/[&<>"'`=\/]/g,function(a){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"}[a]})}class API{static request(a,b,c,d,e){$.ajax({url:"/api/"+b+"/"+c,method:a?"POST":"GET",data:d,success:a=>{"null"===a.error?e(!0,null,a.warnings,a):e(!1,this.responsify(a.error),a.warnings,a)},error:a=>e(!1,null,null,a)})}static responsify(a){var b=(a,b)=>({type:a,text:b});return{not_logged_in:b("error","Not logged in (\u2716\u256D\u256E\u2716)"),invalid_request:b("error","Invalid request \u3010\u30C4\u3011"),video_not_found:b("error","Video not found. Perhaps it has already been deleted"),insufficient_permissions:b("error","Insufficient permissions \u250C\u2229\u2510(\u25E3_\u25E2)\u250C\u2229\u2510"),no_tags_specified:b("error","No tags specified")}[a]}}$(function(){$.ajaxSetup({headers:{"X-CSRF-TOKEN":$("meta[name=\"_token\"]").attr("content")}})});class Video{constructor(){let a=location.href.match(/(\d+)(?!.*\/.)/);a&&(this.id=a[1],this.user=$(".fa-info-circle").next().children().text().trim(),this.tags=$.makeArray($("#tag-display").children().children()).map(a=>a.innerText).filter(a=>!!a),this.api="video",this.apiBase=this.api+"/"+this.id)}tag(a,b){var c=this;a.length?API.request(!0,this.apiBase,"tag",{tags:a},function(a,d,e,f){a&&(c.tags=[],c.tags=f.tags.map(a=>a.name)),b(a,d,e,f)}):b(!1,API.responsify("no_tags_specified"),null,null)}untag(a,b){var c=this;a=a.trim(),!a?b(!1,API.responsify("invalid_request"),null,null):API.request(!0,this.apiBase,"untag",{tag:a},function(a,d,e,f){a&&(c.tags=[],c.tags=f.tags.map(a=>a.name)),b(a,d,e,f)})}delete(a,b){a=a.trim(),!a?b(!1,API.responsify("invalid_request"),null,null):API.request(!0,this.apiBase,"delete",{reason:a},b)}}function flash(a,b){var c=$(".flashcontainer > .flash-inner");"error"===a&&(a="danger"),c.append("<div class=\"alert alert-:TYPE: alert-dismissable\" role=\"alert\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>:REPLACE:</div>".replace(/:TYPE:/,a).replace(/:REPLACE:/,b)),alertrm(jQuery)}if(window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),"undefined"!=typeof video){video=new Video,video.id||(video=null);var videoElem=document.getElementById("video");if(videoElem.play(),videoElem.addEventListener("mouseover",function(){this.controls=!0}),videoElem.volume=.3,videoElem.volume=localStorage.getItem("volume")||1,videoElem.addEventListener("volumechange",a=>{localStorage.setItem("volume",a.target.volume)}),null!==videoElem){function a(){videoElem.paused||videoElem.ended||!background||(context.drawImage(videoElem,0,0,cw,ch),window.requestAnimFrame(a))}null==localStorage.getItem("background")&&localStorage.setItem("background","true");var background="true"===localStorage.getItem("background"),canvas=document.getElementById("bg"),context=canvas.getContext("2d"),cw=canvas.width=0|canvas.clientWidth,ch=canvas.height=0|canvas.clientHeight;videoElem.addEventListener("play",a)}}$("#togglebg").on("click",function(a){a.preventDefault(),background=!background,localStorage.setItem("background",background.toString()),background?$(canvas).css("display","block"):$(canvas).css("display","none"),animationLoop()}),$("[data-toggle=popover]").popover({html:!0,content:function(){return $("#popover-content").html()}}),function(a){function b(b,c){if(a("video").length){var d=[];c.interpret&&d.push(" <strong>Artist:</strong> "+c.interpret),c.songtitle&&d.push(" <strong>Songtitle:</strong> "+c.songtitle),c.imgsource&&d.push(" <strong>Video Source:</strong> "+c.imgsource),c.category.name&&d.push(" <strong>Category:</strong> "+c.category.name),a("span.fa-info-circle").attr("data-content",d.join("<br>"))}else{var e=b.parents("tr");e.find("span").show(),e.find("input, select").hide(),e.find(".vinterpret").html(c.interpret||""),e.find(".vsongtitle").html(c.songtitle||""),e.find(".vimgsource").html(c.imgsource||""),e.find(".vcategory").html("<a href=\"/"+c.category.shortname+"\">"+c.category.name+"</a>")}}var c=a(".indexform, #webmedit");if(a(".indexedit").find("input, select").hide(),c.length){var d=a("tr");d.on("dblclick touchdown",function(){var b=a(this);b.find("input, select").show(),b.find("span").hide()})}c.on("submit",function(c){var d=a(this);c.preventDefault(),a.ajax({type:"POST",url:d.attr("action"),data:d.serialize()}).done(function(a){flash("success","Video successfully updated"),b(d,a),d.find("#webmeditmodal")}).fail(function(){flash("error","Error updating video"),d.find("#webmeditmodal")})})}(jQuery),function(a){a(":not(form)[data-confirm]").on("click touchdown",function(){return confirm(a(this).data("confirm"))})}(jQuery);var alertrm=function(a){a(".alert").each(function(b){a(this).delay(3e3+1e3*b).slideUp(300,function(){a(this).remove()})})};alertrm(jQuery),$(function(){function a(){$("#dragndrop").css({color:l,"border-color":m,"background-color":n})}function b(a){var b=Math.floor(Math.log(a)/Math.log(1024));return(a/Math.pow(1024,b)).toFixed(2)+" "+["B","kB","MB","GB","TB","PB","EB","ZB","YB"][b]}function c(a){a.preventDefault(),$("input[type=\"file\"]").trigger("click")}function d(){$("#dragndrop-link").on("click",c),$("#dragndrop-link").attr("href","#"),$("#dragndrop-text").html(k)}function f(c){$("#dragndrop-link").removeAttr("href").off("click"),$("#dragndrop-text").html("<video id=\"video_preview\" src=\""+URL.createObjectURL(c)+"\" autoplay controls loop></video><span class=\"upload-info\">"+c.name+" &mdash; "+b(c.size)+" &mdash; <a id=\"dragndrop-clear\" class=\"fa fa-times\" href=\"#\"></a></span><div class=\"progress progress-striped\" style=\"display: none; margin-left: 10px; margin-right: 10px;\"><div class=\"progress-bar progress-bar-custom\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\"><span class=\"upload-info sr-only\">0%</span></div></div><span class=\"upload-info\"><span id=\"upload-stats\" style=\"display: none;\"></span></span>"),$("#video_preview").prop("volume",0),$("#dragndrop-clear").on("click",function(b){b.preventDefault(),b.stopPropagation(),i=null,$(this).off("click"),a(),d(),j&&"abort"!=j.statusText&&(j.abort(),j=null)})}function g(c){var d=c.size>100000000,e="video/webm"!==c.type;return!(d&&$("#dragndrop").data("uploadlimit")||e)||(flash("error",e?"Invalid file":`File too big. Max ${b(100000000)}`),a(),!1)}function h(a,c,d,e,f,g,h){function k(){var a,c=0,d=n.length;for(a=o;a<d;a++)c+=n[a];c/=a-o,o=a,$("#upload-stats").text("Speed: "+b(Math.floor(c))+"/s Uploaded: "+b(m.loaded))}var l,m={loaded:0,secondsElapsed:0},n=[],o=0,p=new FormData;p.append("videotitle",a),p.append("interpret",c),p.append("songtitle",d),p.append("imgsource",e),p.append("category",f),p.append("tags",g),p.append("file",h),$(".progress-striped, #upload-stats").css("opacity",0).slideDown("fast").animate({opacity:1},{queue:!1,duration:"fast"}),j=$.ajax({url:"/api/upload",type:"POST",data:p,processData:!1,contentType:!1,success:function(a){switch(a.error){case"null":a.video_id?(flash("success","Upload successful: <a href=\"/"+a.video_id+"\">/"+a.video_id+"</a>. Redirect in 3 seconds..."),setTimeout(function(){location.href="/"+a.video_id},3e3)):flash("error","Upload failed");break;case"invalid_request":flash("error","Invalid request");break;case"not_logged_in":flash("error","Not logged in");break;case"uploadlimit_reached":flash("error","Uploadlimit reached");break;case"invalid_file":flash("error","Invalid file");break;case"file_too_big":flash("error","File too big. Check the max upload size.");break;case"already_exists":a.video_id?flash("error","Video already exists: <a href=\"/"+a.video_id+"\">/"+a.video_id+"</a>"):flash("error","Video already existed but has been deleted");break;case"erroneous_file_encoding":flash("error","Erroneous file encoding. <a href=\"/webm\">Try reencoding it</a>");break;default:flash("error","Upload failed");}"null"!=a.error&&($(".progress-bar-custom").css("background-color","red"),$(".progress-bar-custom").text("Upload failed")),$("#upload-stats").text("Speed: "+b(Math.floor(n.average()))+"/s Uploaded: "+b(i.size))},error:function(a,b,c){return a=null,"abort"==c?void flash("info","Upload aborted"):void(flash("error","Upload failed"),$(".progress-bar-custom").css("background-color","red"),$(".progress-bar-custom").text("Upload failed"))},complete:function(){clearInterval(l)},xhr:function(){var a=$.ajaxSettings.xhr(),b=new Date;return $(".progress-bar-custom").css("background-color","rgba(47, 196, 47, 1)"),a.upload.onprogress=function(a){var c=Math.floor(100*(a.loaded/a.total)),d=(new Date().getTime()-b.getTime())/1e3,e=(a.loaded-m.loaded)/(d-m.secondsElapsed);$(".progress-bar-custom").css("width",c+"%"),$(".progress-bar-custom").text(c+"%"),m.secondsElapsed=d,m.loaded=a.loaded,n.push(e),l||(k(),l=setInterval(k,500))},a}})}if(/\/upload/.test(location.href)){var i,j,k=$("#dragndrop-text").html(),l=$("#dragndrop").css("color"),m=$("#dragndrop").css("border-left-color"),n=$("#dragndrop").css("background-color"),o=0,p=$("#tags_upload"),q=$("#nsfw");$("input[type=\"file\"]").on("change",function(){if(this.files.length){var a=this.files[0];g(a)&&(i=a,f(a)),$(this).wrap("<form>").closest("form").get(0).reset(),$(this).unwrap()}}),$("#dragndrop-link").on("click",c),$(document).on("dragenter",function(a){a.preventDefault(),o++;var b=a.originalEvent.dataTransfer;null!=b.types&&(b.types.indexOf?0===b.types.indexOf("Files"):b.types.contains("application/x-moz-file"))&&$("#dragndrop").css({color:"#BBB","border-color":"#656464","background-color":"#323234"})}).on("dragleave",function(){o--,0===o&&a()}).on("dragover",function(a){a.preventDefault()}).on("drop",function(b){b.preventDefault(),$(b.target).is("#dragndrop-text")||a()}),$("#dragndrop-text").on("dragover",function(a){var b=a.originalEvent.dataTransfer,c=b.effectAllowed;b.dropEffect="move"===c||"linkMove"===c?"move":"copy"}).on("drop",function(b){if(b.originalEvent.dataTransfer.files.length){j&&"abort"!=j.statusText&&(j.abort(),i=null,d());var c=b.originalEvent.dataTransfer.files[0];a(),g(c)&&(i=c,f(c),o=0)}}),$("button#btn-upload").on("click",function(){return i?j&&(0==j.readyState||1==j.readyState||3==j.readyState)?void flash("info","Already uploading"):void h($("#videotitle").val(),$("#interpret").val(),$("#songtitle").val(),$("#imgsource").val(),$("#category").val(),p.tagsinput("items"),i):void flash("error","No file selected")}),p.on("itemRemoved",function(a){"nsfw"===a.item?(q.prop("checked",!1),$(this).tagsinput("add","sfw")):"sfw"===a.item&&(q.prop("checked",!0),$(this).tagsinput("add","nsfw"))}),q.on("change",function(){this.checked?(p.tagsinput("remove","sfw"),p.tagsinput("add","nsfw")):(p.tagsinput("remove","nsfw"),p.tagsinput("add","sfw"))}),q.trigger("change")}});var figure=$(".video-index").hover(hoverVideo,hideVideo);function hoverVideo(){$("#video-index",this).get(0).play()}function hideVideo(){$("#video-index",this).get(0).pause()}$(function(){var a=$.timeago.settings,b=a.strings;a.refreshMillis=1e3,a.allowFuture=!0,a.localeTitle=!0,b.seconds="%d seconds",b.minute="1 minute",b.hour="1 hour",b.hours="%d hours",b.day="1 day",b.month="1 month",b.year="1 year",b.suffixFromNow=null,$("time.timeago").timeago(),$("[data-toggle=\"tooltip\"]").tooltip()});function getNext(){var a=$("#next");"hidden"!=a.css("visibility")&&a.get(0).click()}function getPrev(){var a=$("#prev");"hidden"!=a.css("visibility")&&a.get(0).click()}$(document).on("keydown",function(a){a.defaultPrevented||a.target.nodeName.match(/\b(input|textarea)\b/i)||a.ctrlKey||a.altKey||a.shiftKey||(39==a.keyCode?getNext():37==a.keyCode?getPrev():65==a.keyCode?getPrev():68==a.keyCode?getNext():72==a.keyCode?getPrev():76==a.keyCode?getNext():82==a.keyCode?$("#prev").next().get(0).click():70==a.keyCode&&$("#fav").get(0).click())}),function(a){var b=a("#fav"),c=a("#hidden-fav");b.on("click touchdown",function(d){d.preventDefault(),a.ajax({type:"GET",url:c.attr("href")}).done(function(){var a=b.find("i");a.hasClass("fa-heart-o")?(a.removeClass("fa-heart-o"),a.addClass("fa-heart")):(a.removeClass("fa-heart"),a.addClass("fa-heart-o"))})})}(jQuery),$(function(){function a(a){return[a.clientX+$("div#thumb").width()>=$(window).width()-10?a.pageX-5-$("div#thumb").width():a.pageX+5,a.clientY+$("div#thumb").height()>=$(window).height()-10?a.pageY-5-$("div#thumb").height():a.pageY+5]}$("[data-thumb]").on("mouseenter",function(b){var c=$(this).data("thumb"),d=a(b);$(document.body).prepend("<div id=\"thumb\"></div>"),$("div#thumb").prepend("<img id=\"thumb\"/>"),$("img#thumb").text("Loading..."),$("div#thumb").css({position:"absolute",left:d[0],top:d[1],"z-index":"5",border:"1px white solid","box-shadow":"5px 5px 7px 0px rgba(0,0,0,0.75)",color:"white","background-color":"#181818"});var e=$("img#thumb"),f=$("<img/>");f.load(function(){e.attr("src",$(this).attr("src")),d=a(b),$("div#thumb").css({left:d[0],top:d[1]})}),f.attr("src","/thumbs/"+c+".gif")}).on("mousemove",function(b){$("div#thumb").css({left:a(b)[0],top:a(b)[1]})}).on("mouseleave",function(){$("#thumb").remove()})});var filter=$("#filter"),submitfilter=$("#submitfilter");submitfilter.on("click touchdown",function(a){a.preventDefault(),$.ajax({type:"POST",url:submitfilter.attr("href"),data:filter.serialize()}).done(function(){flash("success","Filter successfully updated"),$("#filterselectmodal").modal("hide")}).fail(function(){flash("error","Error updating filter")})});let tagsinput=$("#tags"),submit=$("#submittags"),tagdisplay=$("#tag-display");function tagmd(){let a=(a,b,c)=>a.innerHTML=a.innerHTML.replace(b,c);tagdisplay.children().children(":first-of-type").each((b,c)=>{a(c,/^nsfw$/i,a=>"<span style=\"color: red;\">"+a+"</span>"),a(c,/^sfw$/i,a=>"<span style=\"color: #23ff00;\">"+a+"</span>")})}tagmd();function tagDeleteHandler(a){a.preventDefault();confirm("Do you really want to delete this tag?")&&video.untag($(this).siblings().text(),(a,b,c,d)=>{if(a){flash("success","Tag successfully deleted");let a=[];for(let b of d.tags)a.push("<span class=\"badge badge-secondary\"><a href=\"/index?q="+b.normalized+"\" class=\"badge badge-secondary\">"+escapeHTML(b.name)+"</a> <a class=\"delete-tag badge badge-secondary\" href=\"#\"><i class=\"fa fa-times\"></i></a></span>");tagdisplay.empty(),tagdisplay.append(a.join(" ")),$(".delete-tag").on("click",tagDeleteHandler),tagmd()}else flash("error","Error deleting tag")})}$(".delete-tag").on("click",tagDeleteHandler),$("#tags, #filter, #tags_upload").on("itemAdded",a=>setTimeout(()=>$(a.currentTarget).siblings(".bootstrap-tagsinput").children("input").val(""),0)),tagsinput.on("beforeItemAdd",a=>{for(let b of video.tags)if(b.toLowerCase()===a.item.toLowerCase())return a.cancel=!0,void flash("info","Tag already exists")}),submit.on("click touchdown",a=>{a.preventDefault(),video.tag(tagsinput.tagsinput("items"),(a,b,c,d)=>{if(a){$("#tag-add-toggle").prop("checked",!1);var e=[];for(let a of d.tags)e.push("<span class=\"badge badge-secondary\"><a href=\"/index?q="+a.normalized+"\" class=\"default-link badge badge-secondary\">"+escapeHTML(a.name)+"</a>"+(d.can_edit_video?" <a class=\"delete-tag badge badge-secondary\" href=\"#\"><i class=\"fa fa-times\"></i></a>":"")+"</span>");tagdisplay.empty(),tagdisplay.append(e.join(" ")),tagsinput.tagsinput("removeAll"),$(".delete-tag").on("click",tagDeleteHandler),tagmd()}else flash("error","Error saving tag(s)")})}),$("video").on("wheel",function(a){a.ctrlKey||a.altKey||a.shiftKey||(a.preventDefault(),0<a.originalEvent.deltaY?getNext():getPrev())}),$(function(){$(".delete_video").on("click",function(a){a.preventDefault();do{var b=prompt("Reason for deleting video "+video.id+" by "+video.user);if(null===b)return;b=b.trim()}while(!b);video.delete(b,(a,b,c)=>{if(a){flash("success","Video deleted. Redirect in 3 seconds..."),setTimeout(()=>location.href="/",3e3);for(let a of c)flash("warning",a)}else flash("error","Error deleting video")})})});var activeMessage,messagesBadge=$("ul.navbar-right > li > a > span.badge");0<messagesBadge.text()&&messagesBadge.css("visibility","visible"),/\/user\/.+\/comments/i.test(location.href)?function(a){if("undefined"!=typeof Handlebars){Handlebars.registerHelper("paginate",paginate);var b=Handlebars.compile(a("#comlist").html()),c=Handlebars.compile(a("#paginationtmpl").html()),d={},e=location.href.match(/\/user\/(.+)\/comments/i)[1],f=function(g){g||(g="/api/comments"),a.getJSON(g,{username:e}).done(function(e){a(".spinner").hide(),d=e,a("#list").html(b(e)),a("time.timeago").timeago(),a("time[data-toggle=\"tooltip\"]").tooltip();var g={pagination:{page:e.current_page,pageCount:e.last_page}};a("#pagination").html(c(g)),a("#pagination a").on("click touchdown",function(b){b.preventDefault(),f("/api/comments?page="+a(this).data("page"))})})};f()}}(jQuery):function(a){if("undefined"!=typeof Handlebars&&a("#msglist").length){Handlebars.registerHelper("paginate",paginate);var b=Handlebars.compile(a("#msglist").html()),c=Handlebars.compile(a("#msgtmpl").html()),d=Handlebars.compile(a("#paginationtmpl").html()),f={},g=function(e){e||(e="/api/messages"),a.getJSON(e).done(function(e){a(".spinner").hide(),f=e,a("#list").html(b(e)),"undefined"!=typeof activeMessage&&a("#listitems a[data-id=\""+activeMessage+"\"]").addClass("active");var h={pagination:{page:e.current_page,pageCount:e.last_page}};a("#pagination").html(d(h)),a("#pagination a").on("click touchdown",function(b){b.preventDefault(),g("/api/messages?page="+a(this).data("page"))}),a("#listitems a").on("click touchdown",function(b){b.preventDefault();var d=a(this),e=d.data("index");activeMessage=a(this).data("id"),a("#message").html(c(f.data[e])),f.data[e].read||a.post("/api/messages/read","m_ids[]="+d.data("id")).done(function(){d.removeClass("list-group-item-info"),messagesBadge.text(messagesBadge.text()-1),0>=messagesBadge.text()&&messagesBadge.css("visibility","hidden")}),a("a").removeClass("active"),d.addClass("active"),a("time.timeago").timeago(),a("time[data-toggle=\"tooltip\"]").tooltip()})})};g()}}(jQuery);function readAll(){$.ajax({url:"/api/messages/readall",success:function(a){1==a?(flash("success","Marked all messages as read"),$(".list-group-item-info").removeClass("list-group-item-info"),messagesBadge.text("0"),messagesBadge.css("visibility","hidden")):flash("error","Failed to mark all messages as read")},error:function(){flash("error","Failed to mark all messages as read")}})}$("ul.dropdown-menu").on("click touchdown",function(a){a.stopPropagation()});function deleteComment(a){var b=a.closest("div[data-id]"),c=b.data("id"),d=$(b.children(".panel-footer").children("a")[0]).text();do{var e=prompt("Reason for deleting comment "+c+" by "+d);if(null===e)return;e=e.trim()}while(!e);$.ajax({url:"/api/comments/"+c+"/delete",method:"POST",data:{reason:e},success:function(a){"success"==a?(flash("success","Comment deleted"),b.removeClass("panel-default").addClass("panel-danger"),b.find(".panel-footer").children("a[onclick=\"deleteComment($(this))\"]").replaceWith("<a href=\"#\" onclick=\"restoreComment($(this))\"><i style=\"color:green\"; class=\"fa fa-refresh\" aria-hidden=\"true\"></i></a>"),b.find(".panel-footer > a[onclick=\"editComment($(this))\"]").remove()):"invalid_request"==a?flash("error","Invalid request"):"not_logged_in"==a?flash("error","Not logged in"):"insufficient_permissions"==a?flash("error","Insufficient permissions"):flash("error","Error deleting comment")},error:function(){flash("error","Error deleting comment")}})}function restoreComment(a){var b=a.closest("div[data-id]"),c=b.data("id"),d=$(b.children(".panel-footer").children("a")[0]).text();do{var e=prompt("Reason for restoring comment "+c+" by "+d);if(null===e)return;e=e.trim()}while(!e);$.ajax({url:"/api/comments/"+c+"/restore",method:"POST",data:{reason:e},success:function(a){"success"==a?(flash("success","Comment restored"),b.removeClass("panel-danger").addClass("panel-default"),b.find(".panel-footer").children("a[onclick]").replaceWith("<a href=\"#\" onclick=\"deleteComment($(this))\"><i style=\"color:red\"; class=\"fa fa-times\" aria-hidden=\"true\"></i></a> <a href=\"#\" onclick=\"editComment($(this))\"><i style=\"color:cyan;\" class=\"fa fa-pencil-square\" aria-hidden=\"true\"></i></a>")):"invalid_request"==a?flash("error","Invalid request"):"not_logged_in"==a?flash("error","Not logged in"):"insufficient_permissions"==a?flash("error","Insufficient permissions"):"comment_not_deleted"==a?flash("error","Comment is not deleted"):flash("error","Error restoring comment")},error:function(){flash("error","Error restoring comment")}})}function editComment(a){var b=a.closest("div[data-id]"),c=b.find(".panel-body"),d=b.data("id");$.ajax({url:"/api/comments/"+d,success:function(e){if("null"==e.error){var f=$("<textarea class=\"form-control\">");c.replaceWith(f),f.val($("<div>").html(e.comment).text()),a.prev().remove(),a.replaceWith("<a href=\"#\" class=\"saveCommentEdit\">[save]</a> <a href=\"#\" class=\"abortCommentEdit\">[abort]</a>"),b.find(".abortCommentEdit").on("click",function(a){a.preventDefault(),$(this).prev().remove(),$(this).replaceWith("<a class=\"delete_comment\" href=\"#\" onclick=\"deleteComment($(this))\">[del]</a> <a class=\"edit_comment\" href=\"#\" onclick=\"editComment($(this))\">[edit]</a>"),f.replaceWith(c)}),b.find(".saveCommentEdit").on("click",function(a){a.preventDefault();var b=$(this);$.ajax({url:"/api/comments/"+d+"/edit",method:"POST",data:{comment:f.val()},success:function(a){"null"==a.error?(c.html(a.rendered_comment),flash("success","Comment edited successfully"),c.find(".comment_clickable_timestamp").on("click",commentClickableTimestamp)):"invalid_request"==a.error?flash("error","Invalid request was sent by your browser"):"not_logged_in"==a.error?flash("error","Not logged in"):"insufficient_permissions"==a.error?flash("error","Insufficient permissions"):"comment_not_found"==a.error?flash("error","Comment does not exist"):flash("error","Error editing comment")},error:function(){flash("error","Error editing comment")},complete:function(){f.replaceWith(c),b.next().remove(),b.replaceWith("<a class=\"delete_comment\" href=\"#\" onclick=\"deleteComment($(this))\">[del]</a> <a class=\"edit_comment\" href=\"#\" onclick=\"editComment($(this))\">[edit]</a>")}})})}else"comment_not_found"==e.error?flash("error","Comment does not exist"):flash("error","Error editing comment")},error:function(){flash("error","Failed receiving non-rendered comment from API")}})}function commentClickableTimestamp(a){if(a.preventDefault(),!!player){var b=$(a.target).text().match(/(\d{1,2}):(\d{2})/);if(b){var c=60*parseInt(b[1])+parseInt(b[2]);c<=player.duration()&&player.currentTime(c)}}}$(function(){$(".comment_clickable_timestamp").on("click",commentClickableTimestamp)}),$(function(a){var b=a("#commentForm > form");let c="";b.on("submit",function(d){d.preventDefault();const e=b.serialize();return e==c?(alert("nope. just don't. seriously... don't."),!1):void(c=e,a.ajax({type:"POST",url:b.attr("action"),data:e}).done(function(c){a(".nocomments").remove();var d=a(c).appendTo(".commentwrapper").find("time.timeago");d.timeago(),d.tooltip(),d.closest(".panel-footer").siblings(".panel-body").find(".comment_clickable_timestamp").on("click",commentClickableTimestamp);var e=b.find("textarea").val("");e.blur()}).fail(function(){flash("error","Error saving comment")}))})});function formatText(a){var b=document.getElementById("cinput"),c=b.value,d=c.substring(b.selectionStart,b.selectionEnd),e=c.substring(0,b.selectionStart),f=c.substr(b.selectionEnd),g=e+"["+a+"]"+d,h=g.length;b.value=g+"[/"+a+"]"+f,b.focus(),b.setSelectionRange(h,h)}/\/user\/.+\/comments/i.test(location.href)?function(a){if("undefined"!=typeof Handlebars){Handlebars.registerHelper("paginate",paginate);var b=Handlebars.compile(a("#comlist").html()),c=Handlebars.compile(a("#paginationtmpl").html()),d={},e=location.href.match(/\/user\/(.+)\/comments/i)[1],f=function(g){g||(g="/api/comments"),a.getJSON(g,{username:e}).done(function(e){a(".spinner").hide(),d=e,a("#list").html(b(e)),a("time.timeago").timeago(),a("time[data-toggle=\"tooltip\"]").tooltip();var g={pagination:{page:e.current_page,pageCount:e.last_page}};a("#pagination").html(c(g)),a("#pagination a").on("click touchdown",function(b){b.preventDefault(),f("/api/comments?page="+a(this).data("page"))})})};f()}}(jQuery):function(a){if("undefined"!=typeof Handlebars&&a("#msglist").length){Handlebars.registerHelper("paginate",paginate);var b=Handlebars.compile(a("#msglist").html()),c=Handlebars.compile(a("#msgtmpl").html()),d=Handlebars.compile(a("#paginationtmpl").html()),f={},g=function(e){e||(e="/api/messages"),a.getJSON(e).done(function(e){a(".spinner").hide(),f=e,a("#list").html(b(e)),"undefined"!=typeof activeMessage&&a("#listitems a[data-id=\""+activeMessage+"\"]").addClass("active");var h={pagination:{page:e.current_page,pageCount:e.last_page}};a("#pagination").html(d(h)),a("#pagination a").on("click touchdown",function(b){b.preventDefault(),g("/api/messages?page="+a(this).data("page"))}),a("#listitems a").on("click touchdown",function(b){b.preventDefault();var d=a(this),e=d.data("index");activeMessage=a(this).data("id"),a("#message").html(c(f.data[e])),f.data[e].read||a.post("/api/messages/read","m_ids[]="+d.data("id")).done(function(){d.removeClass("list-group-item-info"),messagesBadge.text(messagesBadge.text()-1),0>=messagesBadge.text()&&messagesBadge.css("visibility","hidden")}),a("a").removeClass("active"),d.addClass("active"),a("time.timeago").timeago(),a("time[data-toggle=\"tooltip\"]").tooltip()})})};g()}}(jQuery);