// Using mouse document.body.addEventListener('mousedown', function() { document.body.classList.add('using-mouse'); }); document.body.addEventListener('keydown', function(event) { if (event.keyCode === 9) { document.body.classList.remove('using-mouse'); } }); //GIFS // Identify which comment form to insert GIF into var commentFormID; function commentForm(form) { commentFormID = form; }; // Insert EMOJI markdown into comment box function function getEmoji(searchTerm, form) { var emoji = ' :'+searchTerm+': ' var commentBox = document.getElementById(form); var old = commentBox.value; commentBox.value = old + emoji; } function loadEmojis(form) { const emojis = [ { type:'platy', emojis: ['platyblush','platybruh','platycaveman','platycheer','platydown','platyeyes','platyheart','platylol','platymicdrop','platynooo','platysalute','platyseethe','platythumbsup','platywave'] }, { type:'marsey', emojis: ['marseyasian','marseyblm','marseyburger','marseydildo','marseyfacepalm','marseygrilling','marseyjanny','marseymermaid','marseyrentfree','marseyretard','marseysadcat','marseysick','marseysmug','marseytrain', 'marseysipping', 'marseyjamming','marseyangel','marseyblowkiss','marseycry','marseydead','marseyexcited','marseygift','marseyinabox','marseylaugh','marseylove','marseymad','marseyparty','marseyrain','marseyreading','marseyready','marseysad','marseyscarf','marseyshook','marseysleep','marseythumbsup','marseywave', 'marsey69', 'marseycomrade', 'marseyira', 'marseyisis', 'marseymerchant', 'marseynut', 'marseyreich', 'marseyglam', 'marseycowboy', 'marseypat', 'marseypanties', 'marseybingus', 'marseydepressed', 'marseygift'] }, { type:'tay', emojis: ['tayaaa','tayadmire','taycat','taycelebrate','taychefkiss','taychristmas','tayclap','taycold','taycrown','tayflex','tayflirt','taygrimacing','tayhappy','tayheart','tayhmm','tayhuh','tayhyperdab','tayjammin','taylaugh','taymindblown','tayno','taynod','taypeace','taypray','tayrun','tayscrunch','tayshake','tayshrug','taysilly','tayslide','taysmart','taystop','taytantrum','taytea','taythink','tayvibin','taywhat','taywine','taywine2','taywink','tayyes'] }, { type:'classic', emojis: ['2thumbsup','aliendj','ambulance','angry','angrywhip','argue','aroused','ashamed','badass','banana','band','banghead','batman','bigeyes','bite','blind','blowkiss','blush','bong','bounce','bow','breakheart','bs','cartwheel','cat','celebrate','chainsaw','cheers','clap','cold','confused','crazyeyes','cry','cthulhu','cute','D','daydream','ddr','deadpool','devilsmile','diddle','die','distress','disturbing','dizzy','domo','doughboy','drink','drool','dudeweedlmao','edward','electro','elephant','embarrassed','emo','emo2','evil','evilclown','evilgrin','facepalm','fap','flamethrower','flipbird','flirt','frown','gasp','glomp','go','gooby','grr','gtfo','guitar','haha','handshake','happydance','headbang','heart','heartbeat','hearts','highfive','hmm','hmph','holdhands','horny','hug','hugging','hugs','hump','humpbed','hysterical','ily','inlove','jason','jawdrop','jedi','jester','kaboom','kick','kiss','kitty','laughchair','lick','link','lol','lolbeat','loving','makeout','medal','megaman','megamanguitar','meow','metime','mooning','mummy','na','nauseous','nervous','ninja','nod','nono','omg','onfire','ooo','orly','p','paddle','panda','pandabutt','paranoid','party','pat','peek','pikachu','pimp','plzdie','poke','popcorn','pout','probe','puke','punch','quote','raccoon','roar','rofl','roflmao','rolleyes','sad','sadeyes','sadhug','samurai','sarcasm','scoot','scream','shmoopy','shrug','skull','slap','slapfight','sleepy','smackfish','smackhead','smh','smile','smoke','sonic','spank','sparta','sperm','spiderman','stab','star','stare','stfu','suicide','surprisehug','suspicious','sweat','swordfight','taco','talk2hand','tantrum','teehee','thinking','threesome','throw','throwaway','tickle','typing','uhuh','vampbat','viking','violin','vulgar','wah','wat','whip','whipping','wink','witch','wizard','woah','worm','woo','work','worship','wow','XD','yay','zzz'] }, { type:'rage', emojis: ['troll','bitchplease','cerealguypart2','challengeaccepted','contentiouscereal','cryingatcuteness','derp','derpcornsyrup','derpcrying','derpcute','derpdumb','derpeuphoria','derpinahd','derpinapokerface','derpinasnickering','derpprocessing','derprealization','derpsnickering','derptalking','derpthinking','derpthumbsup','derpunimpressed','derpwhy','donotwant','epicfacefeatures','fancywithwine','fffffffuuuuuuuuuuuu','flipthetable','foreveralone','foreveralonehappy','hewillnever','idontknow','interuptedreading','iseewhatyoudidthere','killherkillher','ledesire','leexcited','legenius','lelolidk','lemiddlefinger','lemindblown','leokay','lepanicrunning','lepokerface','lepokerface2','lerageface','leseriousface','likeaboss','lolface','longwhiskers','manymiddlefingers','megusta','motherfucker','motherofgod','mysides','ohgodwhy','pervertedspiderman','picard','ragestrangle','rukiddingme','tfwyougettrolled','trollolol','truestorybro','xallthey','yuno'] }, { type:'wojak', emojis: ['gigachad','chadyes','chadno','abusivewife','ancap','bardfinn','bloomer','boomer','boomermonster','brainletbush','brainletcaved','brainletchair','brainletchest','brainletmaga','brainletpit','chad','chadarab','chadasian','chadblack','chadjesus','chadjew','chadjihadi','chadlatino','chadlibleft','chadnordic','chadsikh','chadusa','coomer','doomer','doomerfront','doomergirl','ethot','fatbrain','fatpriest','femboy','gogetter','grug','monke','nazijak','npc','npcfront','npcmaga','psychojak','ragejak','ragemask','ramonajak','soyjackwow','soyjak','soyjakfront','soyjakhipster','soyjakmaga','soyjakyell','tomboy','zoomer','zoomersoy'] }, { type:'flags', emojis: ['niger', 'lgbt', 'saudi', 'animesexual','blacknation','blm','blueline','dreamgender','fatpride','incelpride','israel','kazakhstan','landlordlove','scalperpride','superstraight','trans','translord','transracial','usa'] } ] for (i=0; i < emojis.length; i++) { let container = document.getElementById(`EMOJIS_${emojis[i].type}`) let str = '' let arr = emojis[i].emojis for (j=0; j < arr.length; j++) { str += ``; } container.innerHTML = str } } function getGif(searchTerm) { if (searchTerm !== undefined) { document.getElementById('gifSearch').value = searchTerm; } else { document.getElementById('gifSearch').value = null; } // load more gifs div var loadGIFs = document.getElementById('gifs-load-more'); // error message div var noGIFs = document.getElementById('no-gifs-found'); // categories div var cats = document.getElementById('GIFcats'); // container div var container = document.getElementById('GIFs'); // modal body div var modalBody = document.getElementById('gif-modal-body') // UI buttons var backBtn = document.getElementById('gifs-back-btn'); var cancelBtn = document.getElementById('gifs-cancel-btn'); container.innerHTML = ''; if (searchTerm == undefined) { container.innerHTML = '
Agree
Laugh
Confused
Sad
Happy
Awesome
Yes
No
Love
Please
Scared
Angry
Awkward
Cringe
OMG
Why
Gross
Meh
' backBtn.innerHTML = null; cancelBtn.innerHTML = null; noGIFs.innerHTML = null; loadGIFs.innerHTML = null; } else { backBtn.innerHTML = ''; cancelBtn.innerHTML = ''; let gifs = []; let apiKey = tenor_api_key(); let lmt = 25; let url = "https://g.tenor.com/v1/search/?q=" + searchTerm + "&key=" + apiKey + "&limit=" + lmt; fetch(url) .then(response => { return response.json(); }) .then(json => { let results = json.results.map(function(obj) { return { id: obj.id, preview: obj.media[0].tinygif.url, url: obj.media[0].gif.url, source: obj.url, bgColor: obj.bg_color } }); gifs = results // loop for fetching mutliple GIFs and creating the card divs if (gifs.length) { for (var i = 0; i < gifs.length; i++) { container.innerHTML += ('
'); noGIFs.innerHTML = null; loadGIFs.innerHTML = '

Thou've reached the end of the list!

'; } } else { noGIFs.innerHTML = '

Aw shucks. No GIFs found...

'; container.innerHTML = null; loadGIFs.innerHTML = null; } }) .catch(err => alert(err)); }; } // Insert GIF markdown into comment box function function insertGIF(url,form) { var gif = "![](" + url +")"; var commentBox = document.getElementById(form); var old = commentBox.value; commentBox.value = old + gif; } // When GIF keyboard is hidden, hide all GIFs $('#gifModal').on('hidden.bs.modal', function (e) { document.getElementById('gifSearch').value = null; // load more gifs div var loadGIFs = document.getElementById('gifs-load-more'); // no GIFs div var noGIFs = document.getElementById('no-gifs-found'); // container div var container = document.getElementById('GIFs'); // UI buttons var backBtn = document.getElementById('gifs-back-btn'); var cancelBtn = document.getElementById('gifs-cancel-btn'); // Remove inner HTML from container var container.innerHTML = '
Agree
Laugh
Confused
Sad
Happy
Awesome
Yes
No
Love
Please
Scared
Angry
Awkward
Cringe
OMG
Why
Gross
Meh
' // Hide UI buttons backBtn.innerHTML = null; cancelBtn.innerHTML = null; // Remove inner HTML from no gifs div noGIFs.innerHTML = null; // Hide no more gifs div loadGIFs.innerHTML = null; }); //iOS webapp stuff (function(document,navigator,standalone) { // prevents links from apps from oppening in mobile safari // this javascript must be the first script in your if ((standalone in navigator) && navigator[standalone]) { var curnode, location=document.location, stop=/^(a|html)$/i; document.addEventListener('click', function(e) { curnode=e.target; while (!(stop).test(curnode.nodeName)) { curnode=curnode.parentNode; } // Condidions to do this only on links to your own app // if you want all links, use if('href' in curnode) instead. if('href' in curnode && ( curnode.href.indexOf('http') || ~curnode.href.indexOf(location.host) ) ) { e.preventDefault(); location.href = curnode.href; } },false); } })(document,window.navigator,'standalone'); //POST function post(url, callback, errortext) { var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); var form = new FormData() form.append("formkey", formkey()); xhr.withCredentials=true; xhr.onerror=function() { alert(errortext); }; xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { callback(); } else { xhr.onerror(); } }; xhr.send(form); }; function post_toast(url, callback, data) { var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); var form = new FormData() if(typeof data === 'object' && data !== null) { for(let k of Object.keys(data)) { form.append(k, data[k]); } } form.append("formkey", formkey()); xhr.withCredentials=true; xhr.onload = function() { if (xhr.status==204) {} else if (xhr.status >= 200 && xhr.status < 300) { $('#toast-post-success').toast('dispose'); $('#toast-post-success').toast('show'); document.getElementById('toast-post-success-text').innerText = JSON.parse(xhr.response)["message"]; callback(xhr) return true } else if (xhr.status >= 300 && xhr.status < 400) { window.location.href = JSON.parse(xhr.response)["redirect"] } else { try { data=JSON.parse(xhr.response); $('#toast-post-error').toast('dispose'); $('#toast-post-error').toast('show'); document.getElementById('toast-post-error-text').innerText = data["error"]; return false } catch(e) { $('#toast-post-success').toast('dispose'); $('#toast-post-error').toast('dispose'); $('#toast-post-error').toast('show'); document.getElementById('toast-post-error-text').innerText = "Error. Try again later."; return false } } }; xhr.send(form); } // Search Icon // Change navbar search icon when form is in focus, active states $(".form-control").focus(function () { $(this).prev('.input-group-append').removeClass().addClass('input-group-append-focus'); $(this).next('.input-group-append').removeClass().addClass('input-group-append-focus'); }); $(".form-control").focusout(function () { $(this).prev('.input-group-append-focus').removeClass().addClass('input-group-append'); $(this).next('.input-group-append-focus').removeClass().addClass('input-group-append'); }); //spinner effect $(document).ready(function() { $('#login').submit(function() { // disable button $("#login_button").prop("disabled", true); // add spinner to button $("#login_button").html('Signing in'); }); }); $(document).ready(function() { $('#signup').submit(function() { // disable button $("#register_button").prop("disabled", true); // add spinner to button $("#register_button").html('Registering'); }); }); // Mobile bottom navigation bar window.onload = function () { var prevScrollpos = window.pageYOffset; window.onscroll = function () { var currentScrollPos = window.pageYOffset; var topBar = document.getElementById("fixed-bar-mobile"); var bottomBar = document.getElementById("mobile-bottom-navigation-bar"); var dropdown = document.getElementById("mobileSortDropdown"); var navbar = document.getElementById("navbar"); if (bottomBar != null) { if (prevScrollpos > currentScrollPos && (window.innerHeight + currentScrollPos) < (document.body.offsetHeight - 65)) { bottomBar.style.bottom = "0px"; } else if (currentScrollPos <= 125 && (window.innerHeight + currentScrollPos) < (document.body.offsetHeight - 65)) { bottomBar.style.bottom = "0px"; } else if (prevScrollpos > currentScrollPos && (window.innerHeight + currentScrollPos) >= (document.body.offsetHeight - 65)) { bottomBar.style.bottom = "-50px"; } else { bottomBar.style.bottom = "-50px"; } } // Execute if bottomBar exists if (topBar != null && dropdown != null) { if (prevScrollpos > currentScrollPos) { topBar.style.top = "48px"; navbar.classList.remove("shadow"); } else if (currentScrollPos <= 125) { topBar.style.top = "48px"; navbar.classList.remove("shadow"); } else { topBar.style.top = "-48px"; dropdown.classList.remove('show'); navbar.classList.add("shadow"); } } prevScrollpos = currentScrollPos; } } // Tooltips $(document).ready(function(){ $('[data-toggle="tooltip"]').tooltip(); }); $('.mention-user').click(function (event) { if (event.which != 1) { return } event.preventDefault(); window.location.href='/@' + $(this).data('original-name'); });