$('body').on('click', '.spoiler', function() {
$(this).find("a").toggle();
$(this).next('div').toggle();
});
$('body').on('click', '.blur', function(e) {
e.stopPropagation();
$(this).prev().toggle();
$(this).toggle();
$(this).next('a').toggle();
});
$('body').on('click', '.toggleblur', function(e) {
e.stopPropagation();
$(this).toggle();
$(this).next('a').next('a').toggle();
$(this).next('a').toggle();
});
$('body').on('click', '#emoji', function(e) {
$(this).closest(".element").find('.picker').toggle();
$('#emojisearch').focus();
});
$('body').on('click', '#contact', function(e) {
$(this).closest(".element").find('.contactpicker').toggle();
$('#contactsearch').focus();
});
$('body').on('click', '.emoji', function(e) {
var code = $(this).attr("title");
console.log(code);
boxtxt = $(this).closest(".element").find("#status").val();
$(this).closest(".element").find("#status").val(boxtxt + ":"+code+":");
});
$('body').on('click', '.contact', function(e) {
var code = $(this).attr("title");
console.log(code);
boxtxt = $(this).closest(".element").find("#status").val();
$(this).closest(".element").find("#status").val(boxtxt + code+" ");
});
$(document).on("change paste keyup","#emojisearch",function () {
var val = $(this).val();
var list = $(this).closest('.element').find('.emojilist');
console.log(val);
$.get("action.php?a=true&emoji=" + val, function(data) {
list.html(data);
});
});
$(document).on("change paste keyup","#contactsearch",function () {
var val = $(this).val();
var list = $(this).closest('.element').find('.contactlist');
console.log(val);
$.get("action.php?a=true&contact=" + val, function(data) {
list.html(data);
});
});
// Open Lightbox
$('body').on('click', '.open-lightbox', function(e) {
e.preventDefault();
e.stopPropagation();
var image = $(this).attr('href');
$('html').addClass('no-scroll');
$('body').append('
');
});
// Close Lightbox
$('body').on('click', '.lightbox-opened', function() {
$('html').removeClass('no-scroll');
$('.lightbox-opened').remove();
});
window.addEventListener("scroll", function() {
onScrollDiv()
});
window.addEventListener("DOMContentLoaded", function() {
onScrollDiv()
});
function onScrollDiv() {
var images = document.querySelectorAll('.lazyload');
for (var i = 0, nb = images.length; i < nb; i++) {
var img = images[i]
var rect = img.getBoundingClientRect();
var isVisible = ((rect.top - window.innerHeight) < 500 && (rect.bottom) > -50) ? true : false;
if (isVisible) {
if (!img.src) {
img.src = img.dataset.src;
}
}
}
}
$('body').on('click', '.replies', function(e) {
e.preventDefault;
$(".reply").remove();
$(".element").removeClass("element_pad");
$(this).closest(".element").addClass("element_pad");
/*$('.replies_container').html('');*/
var id = $(this).parent().parent().attr('id');
if($('#' + id+'.replies_container').find('.reply').length < 1){
$('#' + id+'.replies_container').html("");
}
$.get("action.php?a=true&replies=" + id, function(data) {
$('#' + id+'.replies_container').html(data);
$('#' + id+'.replies_container').delay(800).fadeIn(400);
$('#a' + id).html('');
$('#' + id+".replies_container .ancestor").appendTo('#a' + id);
});
});
$.fn.isOnScreen = function(){
var win = $(window);
var viewport = {
top : win.scrollTop(),
left : win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
$('body').on('click', '.ldr:not(.tlicon)', function(e) {
$('.tlicon').each(function(a){
$( this ).removeClass('tiselected')
});
});
$('body').on('click', '.ldr', function(e) {
e.preventDefault();
location.hash = "#top";
$('#loader').html('');
$('#loaded').remove();
var url = $(this).attr('href');
var id = $(this).attr('id');
localStorage.setItem("content", $('#content .element').detach());
$('#content').html('');
$.get(url + "&ajax=1", function(data) {
$('#content').html(data);
history.pushState({}, "Dashboard FE", url);
var thread = getUrlParameter('thread');
});
});
$('body').on('click', '.gotop a', function(e) {
e.preventDefault();
$('html, body').animate({
scrollTop: 0
}, 800);
return false;
});
$('body').on('click', '.topbar:not(a)', function(e) {
if(e.target !== e.currentTarget) return;
e.preventDefault();
$('html, body').animate({
scrollTop: 0
}, 800);
return false;
});
$('body').on('click', '#loader', function() {
var cnt = $("#loaded").contents();
// $("#content").prepend(cnt);
$('#content').find('.element').first().after(cnt);
$("#loaded").remove();
$("#loader").html('');
});
$('body').on('click', '.listdelete', function() {
var id = $(this).attr('id');
$.get("action.php?listdelete=" + id, function(data) {
$("#"+id).remove();
});
});
$('body').on('click', '.softmutedelete', function() {
var id = $(this).attr('id');
$.get("action.php?softmutedelete=" + id, function(data) {
$("#"+id).remove();
});
});
$('body').on('click', '.listnew', function() {
var name = $(this).prev().val();
$.get("action.php?listnew=" + name, function(data) {
location.reload(true)
});
});
$("li input").keypress(function (e) {
var key = e.which;
if(key == 13) // the enter key code
{
var name = $(this).val();
$.get("action.php?listnew=" + name, function(data) {
location.reload(true)
});
}
});
$('body').on('click', '.nsfw', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&nsfw=" + id, function(data) {
if (data == '1') {
$('#' + id + '.nsfw').toggleClass('nsfw unnsfw');
$('#' + id + '.unnsfw').html('NSFW ');
}
});
});
$('body').on('click', '.unnsfw', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&nsfw=" + id, function(data) {
if (data == '1') {
$('#' + id + '.unnsfw').toggleClass('unnsfw nsfw');
$('#' + id + '.nsfw').html('NSFW ');
}
});
});
$('body').on('click', '.block', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&block=" + id, function(data) {
$('#' + id + '.block').removeClass('block').addClass('unblock');
$('#' + id + '.unblock').html('Unblock');
});
});
$('body').on('click', '.unblock', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&block=" + id, function(data) {
$('#' + id + '.unblock').removeClass('unblock').addClass('block');
$('#' + id + '.block').html('Block');
});
});
$('body').on('click', '.autl', function() {
var id = $(this).attr('id');
var list = $(this).attr('list');
$.get("action.php?a=true&mode=true&user=" + id + "&list=" + list, function(data) {
$('#' + id + '.autl').removeClass('autl').addClass('rutl');
/* $('#' + id + '.rutl li').html('Added'); */
});
});
$('body').on('click', '.rutl', function() {
var elem = $(this);
var id = $(this).attr('id');
var list = $(this).attr('list');
$.get("action.php?a=true&mode=off&user=" + id + "&list=" + list, function(data) {
$('#' + id + '.rutl').removeClass('rutl').addClass('autl');
/* $(elem).find('li').html('Removed');*/
});
});
$('body').on('click', '.hide', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&hide=" + id, function(data) {
$('#' + id + '.hide').removeClass('hide').addClass('unhide');
$('#' + id + '.unhide').html('Unhide Thread');
console.log(data);
});
});
$('body').on('click', '.unhide', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&hide=" + id, function(data) {
$('#' + id + '.unhide').removeClass('unhide').addClass('hide');
$('#' + id + '.hide').html('Hide Thread');
console.log(data);
});
});
$('body').on('click', '.bookmark', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&bookmark=" + id, function(data) {
$('#' + id + '.bookmark').removeClass('bookmark').addClass('unbookmark');
$('#' + id + '.unbookmark').html('Unbookmark');
console.log(data);
});
});
$('body').on('click', '.unbookmark', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&bookmark=" + id, function(data) {
$('#' + id + '.unbookmark').removeClass('unbookmark').addClass('bookmark');
$('#' + id + '.bookmark').html('Bookmark');
console.log(data);
});
});
$('body').on('click', '.follow', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&follow=" + id, function(data) {
console.log(data);
if (data == '1') {
$('#' + id + '.follow').removeClass('follow').addClass('unfollow');
$('#' + id + '.unfollow').html(' Following');
}
});
});
$('body').on('click', '.unfollow', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&unfollow=" + id, function(data) {
if (data == '1') {
$('#' + id + '.unfollow').removeClass('unfollow').addClass('follow');
$('#' + id + '.follow').html('Follow');
}
});
});
$('.container').on('mouseenter', '.user', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
var id = $(this).attr('id');
console.log(id);
$(this).append("");
$('#' + id + '.userinfo').fadeIn();
$.when($.get("action.php?a=true&userinfo=" + id, function(data) {
$('#' + id + '.userinfo').html(data);
})).then(function(){
$('#' + id + '.userinfo').fadeIn();
});
});
$('.container').on('mouseleave', '.user', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
$(this).find('.userinfo').fadeOut(300, function() { $(this).remove(); });
});
$('.container').on('mouseenter', '.external', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
var id = $(this).attr('id');
var url = $(this).attr('href');
console.log(url);
$(this).before("");
$.when($.get("action.php?a=true&previewurl=" + btoa(url), function(data) {
$('#' + id + '.previewpost').html(data);
})).then(function(){
if ($('#' + id + '.previewpost').html() === 'empty'){
return false;
}
$('#' + id + '.previewpost').fadeIn();
});
});
$('.container').on('mouseleave', '.external', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
$('.container').find('.previewpost').fadeOut(300, function() { $(this).remove(); });
});
$('.container').on('mouseenter', '.preview', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
var id = $(this).attr('id');
console.log(id);
$(this).before("");
$.when($.get("action.php?a=true&previewpost=" + id, function(data) {
$('#' + id + '.previewpost').html(data);
})).then(function(){
$('#' + id + '.previewpost').fadeIn();
});
});
$('.container').on('mouseleave', '.preview', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
$('.container').find('.previewpost').fadeOut(300, function() { $(this).remove(); });
});
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
};
function getMode() {
if (typeof getUrlParameter('user') !== 'undefined') {
console.log('list');
return "&user=" + getUrlParameter('user');
}
if (typeof getUrlParameter('list') !== 'undefined') {
console.log('list');
return "&list=" + getUrlParameter('list');
}
if (typeof getUrlParameter('mode') !== 'undefined') {
console.log('mode');
return "&mode=" + getUrlParameter('mode');
}
if (typeof getUrlParameter('tag') !== 'undefined') {
console.log('tag');
return "&tag=" + getUrlParameter('tag');
}
if (typeof getUrlParameter('search') !== 'undefined') {
console.log('tag');
return "&search=" + getUrlParameter('search');
}
return "&mode=federated";
};
function loadmore(){
var thread = getUrlParameter('thread');
if (typeof thread !== 'undefined') {
return false;
}
if (typeof getUrlParameter('search') !== 'undefined') {
return false;
}
var thread = getUrlParameter('thread');
if (typeof thread === 'undefined') {
var error = $(".error").length;
if (error < 1) {
pageMode = getMode();
var id = $('.post').last().attr('pid');
$('.loadmore').html("")
$.get("index.php?ajax=1&next=" + id + "" + pageMode, function(data) {
$('.loadmore').parent().before(data);
$('.loadmore').html("Load More Posts")
});
}
}
}
$(window).scroll(function() {
if ($(window).scrollTop() >= ($(document).height()-700) - $(window).height()) {
var loadinggif = $('#loadinggif').attr('src');
if (typeof loadinggif === 'undefined') {
loadmore();
}
}
});
$('body').on('click', '.loadmore', function() {
loadmore();
});
function newPosts() {
var url = window.location.href;
var thread = getUrlParameter('thread');
if (typeof thread !== 'undefined') {
return false;
}
var search = getUrlParameter('search');
if (typeof search !== 'undefined') {
return false;
}
var error = $(".error").length;
if (error >= 1) {
return false;
}
var id = $(".post").first().attr('pid');
pageMode = getMode();
if (getUrlParameter('mode') == 'bookmarks') {
return false;
}
var page = getUrlParameter('page');
if (typeof page !== 'undefined') {
return false;
}
$.get("index.php?ajax=1&since=" + id + "" + pageMode, function(data) {
if (window.location.href !== url){
return false;
}
if (data) {
var scroll = $(window).scrollTop();
if (scroll > 1000) {
$('#loader').html("");
if ($('#loaded').length) {
$('#loaded').prepend(data);
} else {
$('#loader').after("");
$('#loaded').prepend(data);
}
} else {
if ($('#loaded').length) {
$('#loaded').prepend(data);
} else {
$('#content').find('.element').first().after(data);
}
}
}
});
};
window.setInterval(function() {
var timestamp;
$('.postAge').each(function(a){
timestamp = $(this).attr('id');
$(this).html(timeSince(timestamp)+' ago');
});
newPosts();
}, 25000);
function themecheck(name){
if(name.value == "custom"){
$('#customtheme').css("display","block");
}
else{
$('#customtheme').css("display","none");
}
};
function timeSince(date) {
/* https://stackoverflow.com/questions/3177836/how-to-format-time-since-xxx-e-g-4-minutes-ago-similar-to-stack-exchange-site */
var seconds = Math.floor((new Date() - (date*1000)) / 1000);
var interval = Math.floor(seconds / 31536000);
if (interval >= 1) {
return interval + " year"+(interval > 1 ? "s" : "");
}
interval = Math.floor(seconds / 2592000);
if (interval >= 1) {
return interval + " month"+(interval > 1 ? "s" : "");
}
interval = Math.floor(seconds / 604800);
if (interval >= 1) {
return interval + " week"+(interval > 1 ? "s" : "");
}
interval = Math.floor(seconds / 86400);
if (interval >= 1) {
return interval + " day"+(interval > 1 ? "s" : "");
}
interval = Math.floor(seconds / 3600);
if (interval >= 1) {
return interval + " hour"+(interval > 1 ? "s" : "");
}
interval = Math.floor(seconds / 60);
if (interval >= 1) {
return interval + " minute"+(interval > 1 ? "s" : "");
}
if (interval < 0) {
return " just now";
}
return Math.floor(seconds) + " seconds";
}
function previewHeader(){
const chooseFile = document.getElementById("chooseheader");
const imgPreview = document.getElementById("profileheader");
const files = chooseFile.files[0];
if (files) {
const fileReader = new FileReader();
fileReader.readAsDataURL(files);
fileReader.addEventListener("load", function () {
imgPreview.style.backgroundImage = 'url(' + this.result + ')';
});
}
}
function previewAvatar(){
const chooseFile = document.getElementById("chooseavatar");
const imgPreview = document.getElementById("profileavatar");
const files = chooseFile.files[0];
if (files) {
const fileReader = new FileReader();
fileReader.readAsDataURL(files);
fileReader.addEventListener("load", function () {
imgPreview.style.backgroundImage = 'url(' + this.result + ')';
});
}
}
function dockvideo(elem){
$('#videodock embed').detach();
$(elem).prev().prev().detach().appendTo('#videodock');
$(elem).toggle();
embed1 = $('#videodock embed');
embed1.width(350);
embed1.height(240);
$('#videodock').toggle();
}
function undockvideo(){
$('#videodock embed').detach();
$('#videodock').toggle();
}