instant-0chan/lib/javascript/kusaba.new.js.map

1 line
295 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["es6/src/kusaba.new.js"],"names":["style_cookie","style_cookie_txt","style_cookie_site","ispage","kumod_set","is_entering","_messages","en","noLocalStorage","oops","blankResponse","expandingThread","newThread","NewThread","replyTo","cancel","update","updatingCounts","couldntFetch","noNewPosts","replies","settings_fxEnabled","settings_showReplies","settings_sfwMode","settings_expandImgFull","settings_constrainWidth","enterCaptcha","selectText","dcls","watchOn","captcharot","threadUpdationAutomatically","stopFuckingDolls","del","delandban","ban","stickthread","unstickthread","lockthread","unlockthread","returnDesktop","returnTouch","forceDesktop","okay","captchalang","reply","imageDownscaledBy","videoDownscaledBy","toFit","newReplies","newThreadsAvailable","loading","anonymous","sortBy","bumpOrder","lastReply","creationDate","replyCount","doStick","showHidden","doNotStick","hideHidden","search","threadOnPage","goToThread","smallPics","largePics","legacyMode","threads","comments","active_since","last_active","active_on","tryAgain","xhrError","details","thread","post","posts","deleted","deletedMulti","report","reported","reportedMulti","fileRemoved","file","files","collapse","asMod","historyEmpty","noDataLoaded","unable_load_20","captchaLangChanged","found","links","selectMultiple","selected","directLink","quoteLink","ru","odc","_l","locale","hasOwnProperty","Array","prototype","indexOf","elt","len","length","from","arguments","Math","ceil","floor","Utf8","encode","string","String","fromCharCode","replace","c","utftext","n","charCodeAt","decode","i","c2","c3","Cookie","name","regexp","RegExp","hit","exec","document","cookie","unescape","replaceAll","value","days","expires","date","Date","setTime","getTime","toGMTString","str","to","idx","insert","text","textarea","$","css","find","createTextRange","caretPos","charAt","setSelectionRange","start","selectionStart","end","selectionEnd","substr","focus","markup","$target","istart","iend","element","get","startPos","endPos","substring","bullets","bullet","$area","val","split","newtxt","quote","b","a","v","eval","checkhighlight","match","location","toString","highlight","id","offTimeout","removeClass","$post","parents","addClass","setTimeout","bcr","getBoundingClientRect","docHeight","documentElement","clientHeight","bottom","top","postX","scrollTop","spaceAround","height","window","scrollTo","get_password","pass","getCookie","randomString","togglePassword","passwordbox_html","html","toLowerCase","newhtml","show","set_cookie","Styles","all","titles","init","_","each","getElementsByTagName","link","getAttribute","push","_default","hasAttribute","custom","current","customBypass","this_board_dir","in_array","initiated","decide","testingCSS","LSfetchJSON","title","addStyle","url","setStyle","$clink","click","ev","preventDefault","quitTest","parent","slideUp","$cancelLink","append","setCustom","sc","setDefault","change","stylename","removeBypass","addBypass","oldcookie","newcookie","brd","join","scrollAnchor","save","sheet","disabled","restore","onTest","m","capitalize","escape","$link","testStyle","pups","succ","time","confirmLongTermTest","localStorage","setItem","JSON","stringify","removeItem","HiddenThreads","list","err","getItem","isHidden","threadid","hide","newlist","unhide","slice","concat","togglethread","slideDown","toggleblotter","slideToggle","is","hideblotter","expandthread","board","$thread","expandFrom","expandTo","$omitted","$msg","prependTo","HTMLoader","getThread","replaceWith","replyMap","showReplies","newposts","busy","options","defaults","expectedPost","silent","onError","onSuccess","timestamp","pushTask","execute","task","next","replies_container","$newposts_get","querySelector","$lastQrl","last","lastpost","data","insertAdjacentHTML","unreadCounter","refreshTimestamp","info","stack","shift","quickreply","round","externalBoard","preferUnpinned","appearsNew","isTouch","offset","left","width","position","ku_boardspath","popupMessage","content","delay","console","warn","Captcha","refresh","ctrlKey","altKey","injector","inject","captchaTimeout","on","shownOnce","switch_lang","cColor","attr","random","offsetWidth","forEach","call","querySelectorAll","input","refreshOnce","Ajax","submitPost","form","alertsToRemove","clone","shownErrors","closeByID","showError","captchafield","ffdata","classList","add","fd","FormData","xr","XMLHttpRequest","postToken","open","action","onload","remove","status","el","res","parse","response","e","error","error_verbose","error_type","ku_cgipath","badatt","error_data","attachmenttype","resetForm","noko","checked","thread_replyto","href","post_id","reload","send","reportPost","callback","forms","delform","postsReported","postErrors","item","success","msg","map","message","modThread","$a","$li","$posthead","$extrabtns","prepend","makeIcon","deleteItems","kind","has","delToken","inspectFormData","formData","pair","entries","log","classes","bare","expandimg","postnum","imgurl","thumburl","imgw","imgh","thumbw","thumbh","getElementById","fc_width","$element","$postbody","$fc_filename","event","which","Settings","expandImgFull","img","max_w","clientWidth","body","offset_el","offsetLeft","offsetParent","new_w","ratio","zoom","notice","createElement","setAttribute","style","textDecoration","textNode","createTextNode","appendChild","insertBefore","innerHTML","maxWidth","PostPreviews","zindex","cached","_parseURL","matches","_mouseover","stopPropagation","isCatalog","hasClass","parsedURL","parentid","postid","previewid","preview","children","first","before","mouseleave","_mouseout","mouseover","onMouseOver","transformOrigin","clientY","pageY","clientX","pageX","right","zIndex","cursor","getPost","clearTimeout","fadeout","predelay","pre","_timings","transition","fade","set_inputs","em","postpassword","set_delpass","special","load","nodeType","tagName","src","complete","readyState","handler","apply","trigger","bind","jQuery","_checkbox","clicked","settingName","defaultValue","removeAttr","fxEnabled","changed","enabled","fx","off","sfwMode","constrainWidth","rswap","swap","after","setCaptchaLang","lang","offClick","readyset","chpok","LatexIT","checkgotothread","checknamesave","bnrs","processNodeInsertion","add_mob_menu","menu_show","cloud20","mouseenter","toggleClass","hideTimeout","fn","target","head","js","OpenLatexEditor","expandwebm","xl","animate","htm","stripHTML","unwrapEmbed","wrapEmbed","countries","toUpperCase","$this","$fig","$fsz","pause","itemCount","prop","$menu","$postnode","isOP","toggle","visible","$boundTo","ofs","offsetTop","outerHeight","outerWidth","__menuProps","fileid","isFile","$md","isShown","select","menu","$item","result","cssLink","styleName","resize","$fileMenu","newid","drags","mousedown","pinnerState","pinner","appendTo","s","textbox","onfocus","onblur","originalEvent","animationName","embedLinks","process","site","nextCheckbox","is_catalog","catalog","trip","getJSON","done","formatDate","fadeIn","fail","liveupd_ena","io","updater","$i","NTP","calc","t0","t1","t2","t3","sync","pending","_this","valueOf","ajax","servertime","synced","resolve","timeWithOffset","getServerTime","Promise","promise","externallyResolvingPromise","promiseResolve","promiseReject","reject","$node","prettyPrint","render","iv","updateTTL","then","ms_left","srvTime","min_left","h_left","padLeft","markOnly","clearInterval","setInterval","audio","play","catch","noop","newThreads","socket","connect","liveupd_api","subscribeTo","liveupd_sitename","dispatch","emit","Object","defineProperty","writable","configurable","token","notifyAboutNewThreads","notifyAboutNewRepliesOnBoardPage","showNewReplies","items","hasFocus","new_thread_id","showNewThreads","repliesOnBoardPage","room","reply_id","refreshNewRepliesCount","count","$counter","clearCounter","loadNewReplies","$freshReplies","freshReplies","__alreadyLoading","$wta","thr","bySelf","postsDeleted","insideDeletedThread","filesDeleted","fileErrors","itemtype","$reply","prev","thread_id","filter","kumod","$mov","movieurl","dt","uid","video","checkd","doc","navigatepages","docloc","keyCode","submit","page","docloc_trimmed","lastIndexOf","docloc_valid","relativepost","maxthreads","getElementsByName","newrelativepost","addEventListener","attachEvent","NodeList","Element","_findParent","selector","node","parentNode","root","repliesContainer","container","linkData","className","linkN","threadID","dataset","includes","skip","elements","dimensions","mid","innerWidth","innerHeight","elMap","parentBCR","elems","abs","pos","relativeVisibleWidth","relativeVisibleHeight","dx","dy","primaryVisibility","secondaryVisibility","primaryOffset","secondaryOffset","sort","anchor","bcrBefore","saved","loaded","requestAnimationFrame","bcrAfter","scrollBy","x","lastTime","vendors","cancelAnimationFrame","currTime","timeToCall","max","menu_current","menu_last","dl","queue","clearQueue","menu_pin","toggle_oldmenu","innerText","mode","implementation","hasFeature","eqn","txt","atxt","extxt","r","g","replaceWithSrc","$scope","scope","normalizergb","toFixed","normalizergba","needle","haystack","opt","extend","handle","$el","$drag","z_idx","drg_h","drg_w","pos_y","pos_x","dragsOff","pin","scrollLeft","$iw","paddingBottom","code","$ew","empty","fields","field","alias","existing","type","styleSheet","cssText","removeChild","chars","mm","$mmw","cats","boards10","getBoards","order","boards","b20","cat","ix","dir","desc","y","R","sqrt","scale","allboards","o","toexpand","sd","sect","section","rs","rj","query","display","opts","ku_boardsfolder","reduced","bnr","path","toDisplay","randomItem","getRandomInt","min","array","savedOn","savedon","unload","key","sites","rx","fruit","onbeforeunload","conf","layout","respectStickied","expandOnHover","saveConfig","myConf","val_desc","sortBtns","v_d_i","pinBtns","hideBtns","layoutBtns","searchInput","$card","getEmbedThumb","currentTarget","threadIX","findIndex","model","hidden","rendered","$group","build","gallery","fileTypes","image","jpgThumb","iconsAvailable","embed","authorities","short","Dow","dateLocal","dows","getDay","yy","getFullYear","mo","getMonth","Mon","mons","dd","getDate","hh","getHours","getMinutes","ss","getSeconds","entry","sortByOrder","sby","repeat","buildEntry","thumbnail_url","outerHTML","thumbnail_medium","processed","embeds","smallThumb","file_type","thumb_w","thumb_h","ftype","thumbURL","vartype","bigThumb","smallSrc","expandable","op","repliesLabel","reply_count","last_reply","images","countersCombined","posterauthority","nameDatePriority","tripcode","poster","this_board_defaultName","dateCompact","searchData","subject","buildIndicators","layouts","stickied","lock","locked","deathmark","deleted_timestamp","indicatorsCombined","tmp","createHTMLDocument","textContent","built","lastvisits","last_ts","boardid","parseInt","dataType","valstr","$brd","loadThread","boardID","postID","force_html_nocache","thrno","postMap","threadMaps","secondTry","cachedPost","range","force","threadMap","reduce","switchFileType","exp","exts","uniqueId","now","buildAlert","marginTop","onclick","timeout","onHold","old","onmouseenter","reverse","ar","onmouseleave","ae","holdOffTimeout","scheduleClose","aid","byID","cooldown","upd","cls","contentsOnly","contents","iconMap","historyToggle","destroy","overflow","defaultTimeout","container_id","contains","pupclass","historySize","cloneDeep","junkProperty"],"mappings":"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","file":"kusaba.new.js","sourcesContent":["'use strict';\r\n\r\nvar style_cookie;\r\nvar style_cookie_txt;\r\nvar style_cookie_site;\r\nvar kumod_set=false;\r\nvar ispage;\r\nvar is_entering=false;\r\n\r\nvar _messages = {\r\n en: {\r\n noLocalStorage: \"Your browser does not support LocalStorage\",\r\n oops: \"Something went wrong...\",\r\n blankResponse: \"blank response\",\r\n expandingThread: \"Expanding thread...\",\r\n newThread: \"new thread\",\r\n NewThread: \"New thread\",\r\n replyTo: \"reply to\",\r\n cancel: \"Cancel\",\r\n update: \"Update\",\r\n updatingCounts: \"Updating...\",\r\n couldntFetch: \"Could not fetch this post\",\r\n noNewPosts: \"No new posts\",\r\n replies: \"Replies\",\r\n settings_fxEnabled: \"Animation effects\",\r\n settings_showReplies: \"Show replies inside posts\",\r\n settings_sfwMode: \"NSFW mode\",\r\n settings_expandImgFull: \"Expand images to full size\",\r\n settings_constrainWidth: \"Constrain content width\",\r\n enterCaptcha: \"Please enter captcha.\",\r\n selectText: \"Select some text\",\r\n dcls: \"Double click to show source\",\r\n watchOn: \"Watch on\",\r\n captcharot: \"Captcha has rotted\",\r\n threadUpdationAutomatically: \"Tread is being updated automatically.\",\r\n stopFuckingDolls: \"<b>Отключите AJAX-отправку постов и AJAX-обновление треда.</b><br />(Кликните, чтобы закрыть)\",\r\n del: \"Delete\",\r\n delandban: \"Delete and ban\",\r\n ban: \"Ban\",\r\n stickthread: \"Stick thread\",\r\n unstickthread: \"Unstick thread\",\r\n lockthread: \"Lock thread\",\r\n unlockthread: \"Unlock thread\",\r\n returnDesktop: \"Switch to desktop interface\",\r\n returnTouch: \"Switch to touch interface\",\r\n forceDesktop: \"Force Desktop interface\",\r\n okay: \"Okay\",\r\n captchalang: \"Captcha language\",\r\n reply: \"Reply\",\r\n imageDownscaledBy: \"Image was downscaled by\",\r\n videoDownscaledBy: \"Video was downscaled by\",\r\n toFit: \"to feet screen\",\r\n newReplies: \"New replies\",\r\n newThreadsAvailable: \"New threads available.\",\r\n loading: \"Loading\",\r\n anonymous: \"Anonymous\",\r\n sortBy: \"Sort by\",\r\n bumpOrder: \"Bump order\",\r\n lastReply: \"Last reply\",\r\n creationDate: \"Creation date\",\r\n replyCount: \"Reply count\",\r\n doStick: \"Respect stickied\",\r\n showHidden: \"Show hidden\",\r\n doNotStick: \"Ignore stickied\",\r\n hideHidden: \"Hide hidden\",\r\n search: \"Search\",\r\n threadOnPage: \"Thread is on page\",\r\n goToThread: \"Go to thread\",\r\n smallPics: \"Small pictures\",\r\n largePics: \"Large pictures\",\r\n legacyMode: \"Legacy mode\",\r\n threads: \"Threads\",\r\n comments: \"Replies\",\r\n active_since: \"Active since\",\r\n last_active: \"Last seen\",\r\n active_on: \"Active on\",\r\n tryAgain: \"Try again\",\r\n xhrError: \"XHR error\",\r\n details: \"details\",\r\n thread: \"Thread\",\r\n post: 'Post',\r\n posts: \"Posts\",\r\n deleted:'has been deleted',\r\n deletedMulti: 'have been deleted',\r\n report: 'Report',\r\n reported:'has been reported',\r\n reportedMulti: 'have been reported',\r\n fileRemoved: 'File<br>removed.',\r\n file: 'File',\r\n files: 'Files',\r\n collapse: 'Collapse',\r\n asMod: 'as Mod',\r\n historyEmpty: 'History is empty',\r\n noDataLoaded: 'No data was loaded',\r\n unable_load_20: 'Unable to load 2.0 boards list',\r\n captchaLangChanged: 'Captcha laguage changed',\r\n found: 'Found',\r\n links: 'Links',\r\n selectMultiple: 'Select multiple',\r\n selected: 'Selected',\r\n directLink: 'Direct link',\r\n quoteLink: 'Quote link'\r\n },\r\n ru: {\r\n noLocalStorage: \"localStorage не поддерживается браузером\",\r\n oops: \"Что-то пошло не так...\",\r\n blankResponse: \"пустой ответ\",\r\n expandingThread: \"Разворачиваем тред...\",\r\n newThread: \"новый тред\",\r\n NewThread: \"Создать тред\",\r\n replyTo: \"ответ на\",\r\n cancel: \"Отмена\",\r\n update: \"Обновить\",\r\n updatingCounts: \"Ищем новые посты...\",\r\n couldntFetch: \"Не удалось загрузить этот пост\",\r\n noNewPosts: \"Нет новых постов\",\r\n replies: \"Ответы\",\r\n settings_fxEnabled: \"Анимированные эффекты\",\r\n settings_showReplies: \"Показывать ответы внутри поста\",\r\n settings_sfwMode: \"Мамка в комнате\",\r\n settings_expandImgFull: \"Разворачивать картинки до исходного размера\",\r\n settings_constrainWidth: \"Ограничивать ширину контента\",\r\n enterCaptcha: \"Пожалуйста, введите капчу.\",\r\n selectText: \"Текст не выделен\",\r\n dcls: \"Double click to show source\",\r\n watchOn: \"Смотреть на\",\r\n odc: \"javascript:LatexIT.replaceWithSrc(this);\",\r\n captcharot: \"Капча протухла\",\r\n threadUpdationAutomatically: \"Тред обновляется автоматически\",\r\n stopFuckingDolls: \"<b>Отключите AJAX-отправку постов и AJAX-обновление треда.</b><br />(Кликните, чтобы закрыть)\",\r\n del: \"Удалить\",\r\n delandban: \"Удалить и забанить\",\r\n ban: \"Забанить\",\r\n stickthread: \"Прикрепить тред\",\r\n unstickthread: \"Отлепить тред\",\r\n lockthread: \"Закрыть тред\",\r\n unlockthread: \"Открыть тред\",\r\n returnDesktop: \"Переключиться на десктопный интерфейс\",\r\n returnTouch: \"Переключиться на тач-интерфейс\",\r\n forceDesktop: \"Force Desktop interface\",\r\n okay: \"Ясно\",\r\n captchalang: \"Язык капчи\",\r\n reply: \"Ответить\",\r\n imageDownscaledBy: \"Картинка ужата на\",\r\n videoDownscaledBy: \"Видео ужато на\",\r\n toFit: \"по размеру окна\",\r\n newReplies: \"Новых ответов\",\r\n newThreadsAvailable: \"Доступны новые треды.\",\r\n loading: \"Загружаем\",\r\n anonymous: \"Аноним\",\r\n sortBy: \"Сортировать по\",\r\n bumpOrder: \"бампам\",\r\n lastReply: \"дате ответов\",\r\n creationDate: \"дате создания\",\r\n replyCount: \"числу ответов\",\r\n doStick: \"Прикреплять\",\r\n showHidden: \"Показывать скрытые\",\r\n doNotStick: \"Не прикреплять\",\r\n hideHidden: \"Скрывать скрытые\",\r\n search: \"Поиск\",\r\n threadOnPage: \"Тред располагается на странице\",\r\n goToThread: \"Перейти в тред\",\r\n smallPics: \"Мелкие картинки\",\r\n largePics: \"Большие картинки\",\r\n legacyMode: \"Олдфажный режим\",\r\n threads: \"Тредов\",\r\n comments: \"Ответов\",\r\n active_since: \"Присоединился\",\r\n last_active: \"Был активен\",\r\n active_on: \"Активен на\",\r\n tryAgain: \"Попробовать снова\",\r\n xhrError: \"Ошибка XHR\",\r\n details: \"подробности\",\r\n thread: \"Тред\",\r\n post: 'Пост',\r\n posts: 'Посты',\r\n deleted:'удален',\r\n deletedMulti: 'удалены',\r\n report: 'Пожаловаться',\r\n reported:': жалоба отправлена',\r\n reportedMulti: ': жалобы отправлены',\r\n fileRemoved: 'Файл<br>удален.',\r\n file: 'Файл',\r\n files: 'Файлы',\r\n collapse: 'Свернуть',\r\n asMod: 'от лица модератора',\r\n historyEmpty: 'История пуста',\r\n noDataLoaded: 'Данные не загружены',\r\n unable_load_20: 'Unable to load 2.0 boards list',\r\n captchaLangChanged: 'Язык капчи изменен',\r\n found: 'Найдено',\r\n links: 'Ссылки',\r\n selectMultiple: 'Выбрать несколько',\r\n selected: 'Выбрано',\r\n directLink: 'Прямая ссылка на пост',\r\n quoteLink: 'Ссылка для цитирования'\r\n }\r\n}\r\nvar _l = (typeof locale !== 'undefined' && _messages.hasOwnProperty(locale)) ? _messages[locale] : _messages.ru;\r\n\r\n/* IE/Opera fix, because they need to go learn a book on how to use indexOf with arrays */ // Is this still relevant tho?\r\nif (!Array.prototype.indexOf) {\r\n Array.prototype.indexOf = function(elt /*, from*/) {\r\n var len = this.length;\r\n\r\n var from = Number(arguments[1]) || 0;\r\n from = (from < 0)\r\n ? Math.ceil(from)\r\n : Math.floor(from);\r\n if (from < 0)\r\n from += len;\r\n\r\n for (; from < len; from++) {\r\n if (from in this &&\r\n this[from] === elt)\r\n return from;\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\n/* Utf8 strings de-/encoder */\r\nvar Utf8 = {\r\n // public method for url encoding\r\n encode : function (string) {\r\n string = string.replace(/\\r\\n/g,\"\\n\");\r\n var utftext = \"\";\r\n for (var n = 0; n < string.length; n++) {\r\n var c = string.charCodeAt(n);\r\n if (c < 128) {\r\n utftext += String.fromCharCode(c);\r\n }\r\n else if((c > 127) && (c < 2048)) {\r\n utftext += String.fromCharCode((c >> 6) | 192);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n else {\r\n utftext += String.fromCharCode((c >> 12) | 224);\r\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n }\r\n return utftext;\r\n },\r\n // public method for url decoding\r\n decode : function (utftext) {\r\n var string = \"\", i = 0, c = 0, c1 = 0, c2 = 0, c3 = 0\r\n while ( i < utftext.length ) {\r\n c = utftext.charCodeAt(i);\r\n if (c < 128) {\r\n string += String.fromCharCode(c);\r\n i++;\r\n }\r\n else if((c > 191) && (c < 224)) {\r\n c2 = utftext.charCodeAt(i+1);\r\n string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\r\n i += 2;\r\n }\r\n else {\r\n c2 = utftext.charCodeAt(i+1);\r\n c3 = utftext.charCodeAt(i+2);\r\n string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n i += 3;\r\n }\r\n }\r\n return string;\r\n }\r\n}\r\n\r\nfunction Cookie(name) {\r\n if (arguments.length == 1) {\r\n // with(document.cookie) {\r\n var regexp=new RegExp(\"(^|;\\\\s+)\"+name+\"=(.*?)(;|$)\");\r\n var hit=regexp.exec(document.cookie);\r\n if(hit&&hit.length>2) return Utf8.decode(unescape(replaceAll(hit[2],'+','%20')));\r\n else return '';\r\n // }\r\n } else {\r\n var value = arguments[1]\r\n , days = arguments[2]\r\n , expires=\"\"\r\n if(days) {\r\n var date=new Date();\r\n date.setTime(date.getTime()+(days*24*60*60*1000));\r\n expires=\"; expires=\"+date.toGMTString();\r\n }\r\n document.cookie=name+\"=\"+value+expires+\"; path=/\";\r\n }\r\n}\r\n\r\nfunction replaceAll(str, from, to) {\r\n var idx = str.indexOf( from );\r\n while ( idx > -1 ) {\r\n str = str.replace( from, to );\r\n idx = str.indexOf( from );\r\n }\r\n return str;\r\n}\r\n\r\nfunction insert(text) {\r\n var textarea = (($('#postclone').length && $('#postclone').css('display') !== 'none') ? $('#postclone') : $('#postform')).find('textarea')[0];\r\n if(textarea) {\r\n if(textarea.createTextRange && textarea.caretPos) { // IE\r\n var caretPos=textarea.caretPos;\r\n caretPos.text=caretPos.text.charAt(caretPos.text.length-1)==\" \"?text+\" \":text;\r\n } else if(textarea.setSelectionRange) { // Firefox\r\n var start=textarea.selectionStart;\r\n var end=textarea.selectionEnd;\r\n textarea.value=textarea.value.substr(0,start)+text+textarea.value.substr(end);\r\n textarea.setSelectionRange(start+text.length,start+text.length);\r\n } else {\r\n textarea.value+=text+\" \";\r\n }\r\n textarea.focus();\r\n }\r\n if($('#postclone').css('display') !== 'none') return false;\r\n}\r\n\r\nfunction markup($target, start, end, istart, iend) {\r\n let element = $target.find('textarea').get(0);\r\n if (element.selectionStart || element.selectionStart == '0') {\r\n element.focus();\r\n let startPos = element.selectionStart\r\n , endPos = element.selectionEnd\r\n , selected = element.value.substring(startPos, endPos);\r\n if(selected.indexOf('\\n') === (-1) && typeof istart !== \"undefined\" && typeof iend !== \"undefined\") {\r\n start = istart; end = iend;\r\n }\r\n element.value = element.value.substring(0, startPos) + start + element.value.substring(startPos, endPos) + end + element.value.substring(endPos, element.value.length);\r\n } else {\r\n element.value += start + end;\r\n }\r\n}\r\n\r\nfunction bullets($target, bullet, istart, iend) {\r\n let $area = $target.find('textarea')\r\n , element = $area.get(0)\r\n , startPos = element.selectionStart\r\n , endPos = element.selectionEnd\r\n , selected = $area.val().substring(startPos, endPos)\r\n if(selected.indexOf('\\n') === (-1) && typeof istart !== \"undefined\" && typeof iend !== \"undefined\") {\r\n element.value = element.value.substring(0, startPos) + istart + element.value.substring(startPos, endPos) + iend + element.value.substring(endPos, element.value.length);\r\n }\r\n else {\r\n selected = $area.val().substring(startPos, endPos).split('\\n');\r\n var newtxt = \"\";\r\n for(var i=0; i<selected.length; i++) {\r\n newtxt += (bullet + selected[i]);\r\n if(i < (selected.length - 1)) newtxt += '\\n';\r\n }\r\n $area.val(\r\n $area.val().substring(0, startPos)\r\n + newtxt +\r\n $area.val().substring(endPos)\r\n );\r\n }\r\n}\r\n\r\nfunction quote(b, a) {\r\n var v = eval(\"document.\" + a + \".message\");\r\n v.value += \">>\" + b + \"\\n\";\r\n v.focus();\r\n}\r\n\r\nfunction checkhighlight() {\r\n var match;\r\n if(match=/#i([0-9]+)/.exec(document.location.toString()))\r\n if(!$('#postform textarea').val())\r\n insert(\">>\"+match[1]);\r\n if(match=/#([0-9]+)/.exec(document.location.toString()))\r\n highlight(match[1]);\r\n}\r\n\r\nfunction highlight(id, offTimeout=5000) {\r\n $('.highlight').removeClass('highlight');\r\n let $post = $(`#delform a[name=\"${id}\"]`).parents('.reply, .op')\r\n , post = $post[0]\r\n if (! post) return false;\r\n $post.addClass('highlight');\r\n if (offTimeout) {\r\n setTimeout(() => $post.removeClass('highlight'), offTimeout)\r\n }\r\n // Scroll to post\r\n let bcr = post.getBoundingClientRect()\r\n , docHeight = document.documentElement.clientHeight\r\n if (bcr.bottom > docHeight || bcr.top < 0) {\r\n let postX = bcr.top + document.documentElement.scrollTop\r\n , spaceAround = docHeight - bcr.height\r\n window.scrollTo(0, postX - (spaceAround ? Math.ceil(spaceAround/2) : 0))\r\n }\r\n return true\r\n}\r\n\r\nfunction get_password(name) {\r\n let pass = getCookie(name);\r\n if(pass) return pass;\r\n pass = randomString(8)\r\n Cookie(name, pass, 365);\r\n return(pass);\r\n}\r\n\r\nfunction togglePassword() {\r\n var passwordbox_html = $(\"#passwordbox\").html().toLowerCase();\r\n var newhtml = '<td></td><td></td>';\r\n if (passwordbox_html == newhtml) {\r\n newhtml = '<td class=\"postblock\">Mod</td><td><input type=\"text\" name=\"modpassword\" size=\"28\" maxlength=\"75\">&nbsp;<acronym title=\"Display staff status (Mod/Admin)\">D</acronym>:&nbsp;<input type=\"checkbox\" name=\"displaystaffstatus\" checked>&nbsp;<acronym title=\"Lock\">L</acronym>:&nbsp;<input type=\"checkbox\" name=\"lockonpost\">&nbsp;&nbsp;<acronym title=\"Sticky\">S</acronym>:&nbsp;<input type=\"checkbox\" name=\"stickyonpost\">&nbsp;&nbsp;<acronym title=\"Raw HTML\">RH</acronym>:&nbsp;<input type=\"checkbox\" name=\"rawhtml\">&nbsp;&nbsp;<acronym title=\"Name\">N</acronym>:&nbsp;<input type=\"checkbox\" name=\"usestaffname\"></td>';\r\n }\r\n $(\"#passwordbox\").html(newhtml).show();\r\n return false;\r\n}\r\n\r\n// proxied functions\r\nfunction getCookie(name) { return Cookie(name) }\r\nfunction set_cookie(name,value,days) { return Cookie(name,value,days) }\r\n\r\nvar Styles = {\r\n all: [], titles: [],\r\n init: function() {\r\n _.each(document.getElementsByTagName(\"link\"), function(link) {\r\n if(link.getAttribute(\"rel\").indexOf(\"style\")!=-1 && link.getAttribute(\"title\")) {\r\n this.all.push(link);\r\n this.titles.push(link.getAttribute(\"title\"));\r\n if(link.getAttribute(\"rel\").indexOf(\"alternate\")===-1) {\r\n this._default = link.getAttribute(\"title\");\r\n }\r\n if(link.hasAttribute(\"data-custom\")) {\r\n this.custom = link.getAttribute(\"title\");\r\n }\r\n }\r\n }, this);\r\n this.current = this._default;\r\n var customBypass = getCookie('bypasscustom');\r\n this.customBypass = (customBypass.length && typeof this_board_dir !== 'undefined' && in_array(this_board_dir, customBypass.split('|'))) ? true : false;\r\n this.initiated = true\r\n },\r\n decide: function() {\r\n this.init();\r\n var testingCSS = LSfetchJSON('testing-css')\r\n if(testingCSS) {\r\n let title = this.addStyle(testingCSS.url, testingCSS.title)\r\n this.setStyle(title)\r\n var $clink = $('<a href=\"#\">Отключить тестирование '+title+'.css</a>')\r\n $clink.click(function(ev) {\r\n ev.preventDefault()\r\n Styles.quitTest()\r\n $(this).parent().slideUp()\r\n })\r\n this.$cancelLink = $('<div style=\"font-weight: bold\"></div>').append($clink)\r\n return\r\n }\r\n if(this.hasOwnProperty('custom') && !this.customBypass)\r\n return this.setCustom();\r\n var sc = getCookie(style_cookie);\r\n if(sc && in_array(sc, this.titles))\r\n this.setStyle(sc);\r\n else {\r\n this.setDefault();\r\n set_cookie(\"kustyle_site\",this._default,365);\r\n set_cookie(\"kustyle\",this._default,365);\r\n }\r\n },\r\n change: function(stylename) {\r\n if(!in_array(stylename, this.titles) || this.current === stylename) return;\r\n this.setStyle(stylename);\r\n if(this.hasOwnProperty('custom') && this.custom === stylename) {\r\n this.removeBypass();\r\n }\r\n else {\r\n if(this.hasOwnProperty('custom'))\r\n this.addBypass();\r\n set_cookie(\"kustyle_site\",stylename,365);\r\n set_cookie(\"kustyle\",stylename,365);\r\n }\r\n },\r\n removeBypass: function() {\r\n if(!this.customBypass || typeof this_board_dir === 'undefined') return;\r\n this.customBypass = false;\r\n var oldcookie = getCookie('bypasscustom').split('|'), newcookie = [];\r\n _.each(oldcookie, function(brd) {\r\n if(brd !== this_board_dir) newcookie.push(brd);\r\n });\r\n newcookie = newcookie.length ? newcookie.join('|') : '';\r\n set_cookie(\"bypasscustom\",newcookie,365);\r\n },\r\n addBypass: function() {\r\n if(this.customBypass || typeof this_board_dir === 'undefined') return;\r\n this.customBypass = true;\r\n var cookie = getCookie('bypasscustom').split('|');\r\n if(!in_array(this_board_dir, cookie)) {\r\n cookie.push(this_board_dir);\r\n set_cookie(\"bypasscustom\",cookie.join('|'),365);\r\n }\r\n },\r\n setDefault: function() {\r\n if(this.hasOwnProperty('_default') && this.current !== this._default)\r\n this.setStyle(this._default);\r\n },\r\n setCustom: function() {\r\n if(this.hasOwnProperty('custom'))\r\n this.setStyle(this.custom);\r\n },\r\n setStyle: function(stylename) {\r\n if(!in_array(stylename, this.titles)) return;\r\n if (scrollAnchor && scrollAnchor.save)\r\n scrollAnchor.save('setstyle', '.postnode', window, 'v');\r\n _.each(this.all, function(sheet) {\r\n sheet.disabled=true; // Hello IE\r\n if(sheet.getAttribute(\"title\") === stylename)\r\n sheet.disabled=false;\r\n });\r\n if (scrollAnchor && scrollAnchor.restore)\r\n scrollAnchor.restore('setstyle');\r\n this.current = stylename;\r\n },\r\n onTest: null,\r\n addStyle: function(url, title='') {\r\n if (! title) {\r\n let m = /(?:.+\\/)?(.+)\\.css/i.exec(url)\r\n if(!m) return;\r\n title = m[1]\r\n }\r\n title = _.capitalize(_.escape(title))\r\n if(!in_array(title, this.titles)) {\r\n var $link = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"'+url+'\" title=\"'+title+'\" disabled>')\r\n $('head').append($link);\r\n this.titles.push(title)\r\n this.all.push($link[0])\r\n }\r\n return title\r\n },\r\n testStyle: function(url, title) {\r\n title = this.addStyle(url, title)\r\n this.setStyle(title)\r\n this.onTest = {\r\n url: url,\r\n title: title\r\n }\r\n pups.succ(`Установлен стиль ${title}.\r\n <div class=\"styletest-form\">\r\n <button onclick=\"Styles.confirmLongTermTest()\">OK</button>\r\n <button onclick=\"Styles.quitTest()\">${_l.cancel}</button>\r\n </div>`, {time: 0, save: true})\r\n },\r\n confirmLongTermTest: function() {\r\n if(this.onTest)\r\n localStorage.setItem('testing-css', JSON.stringify(this.onTest))\r\n },\r\n quitTest: function() {\r\n localStorage.removeItem('testing-css')\r\n this.decide()\r\n }\r\n}\r\nif(style_cookie) Styles.decide();\r\n\r\nvar HiddenThreads = {\r\n list: function() {\r\n if (localStorage == null) {\r\n pups.err(_l.noLocalStorage);\r\n return [];\r\n }\r\n var list = localStorage.getItem('hiddenThreads.' + this_board_dir);\r\n if (list == null) return [];\r\n return list.split(',');\r\n },\r\n isHidden: function(threadid) { return HiddenThreads.list().indexOf(threadid) != -1 },\r\n hide: function(threadid) {\r\n if (localStorage == null) \r\n pups.err(_l.noLocalStorage);\r\n else {\r\n var newlist = HiddenThreads.list();\r\n newlist.push(threadid.toString());\r\n localStorage.setItem('hiddenThreads.' + this_board_dir, newlist.join(','));\r\n }\r\n },\r\n unhide: function(threadid) {\r\n if (localStorage == null) \r\n pups.err(_l.noLocalStorage);\r\n else {\r\n var list = HiddenThreads.list();\r\n var i = list.indexOf(threadid.toString());\r\n if (i == -1) return;\r\n var newlist = list.slice(0,i);\r\n newlist = newlist.concat(list.slice(i+1));\r\n localStorage.setItem('hiddenThreads.' + this_board_dir, newlist.join(','));\r\n }\r\n }\r\n}\r\n\r\nfunction togglethread(threadid) {\r\n if (HiddenThreads.isHidden(threadid)) {\r\n $('#unhidethread' + threadid + this_board_dir).slideUp();\r\n $('#thread' + threadid + this_board_dir).slideDown();\r\n HiddenThreads.unhide(threadid);\r\n } else {\r\n $('#unhidethread' + threadid + this_board_dir).slideDown();\r\n $('#thread' + threadid + this_board_dir).slideUp();\r\n HiddenThreads.hide(threadid);\r\n }\r\n return false;\r\n}\r\n\r\nfunction toggleblotter() { // [!]\r\n $('.blotter-entries').each(function(index,element) {\r\n $(this).slideToggle(function() {\r\n if($(this).is(\":hidden\")) {\r\n Cookie('ku_showblotter', '0', 365);\r\n } else {\r\n Cookie('ku_showblotter', '1', 365);\r\n }\r\n });\r\n });\r\n}\r\n\r\nfunction hideblotter() {\r\n $('.blotter-entries').each(function(index,element) {\r\n $(this).hide();\r\n });\r\n}\r\n\r\nfunction expandthread(threadid, board, ev) {\r\n ev.preventDefault()\r\n let $thread = $(`#thread${threadid}${board}`)\r\n if ($thread.length) {\r\n let expandFrom = + $thread.find('.postnode.op').find('input[type=checkbox]').val()\r\n , expandTo = + $thread.find('.postnode:not(.op):first').find('input[type=checkbox]').val()\r\n , $omitted = $thread.find('.omittedposts')\r\n $omitted.find('a').hide()\r\n let $msg = $omitted.find('span')\r\n if (!$msg.length) {\r\n $msg = $(`<div class=\"spinner\"></div><span>${_l.loading}...</span>`).prependTo($omitted)\r\n }\r\n HTMLoader.getThread(board, +threadid, [expandFrom, expandTo], (err, posts) => {\r\n if (posts) {\r\n $thread.find('.omittedposts').replaceWith(posts)\r\n replyMap.showReplies()\r\n }\r\n else {\r\n $msg.text(_l.oops + (err !== false ? ` (${err})` : ''))\r\n $omitted.find('a').text(_l.tryAgain).show()\r\n }\r\n })\r\n }\r\n return false;\r\n}\r\n\r\nvar newposts = {\r\n busy: false,\r\n get: function(options={}) {\r\n options = _.defaults(options, {\r\n threadid: null,\r\n expectedPost: null,\r\n silent: false,\r\n onError: err => pups.err(`Error geting new posts (${err})`),\r\n onSuccess: null,\r\n timestamp: null\r\n })\r\n if (!options.threadid) {\r\n if (ispage)\r\n return options.onError()\r\n options.threadid = +$('input[name=replythread]').val()\r\n }\r\n this.pushTask(options)\r\n return false\r\n },\r\n execute: function(task) {\r\n this.busy = true\r\n let threadid = +task.threadid\r\n , expectedPost = task.expectedPost\r\n , onError = err => {\r\n this.next()\r\n task.onError(err)\r\n }\r\n let replies_container, $newposts_get\r\n if (!ispage) {\r\n $newposts_get = $('#newposts_get')\r\n $newposts_get.removeClass('upd-counting').addClass('upd-updating')\r\n replies_container = document.querySelector('.replies')\r\n }\r\n else {\r\n replies_container = document.querySelector(`#thread${threadid}${this_board_dir} .replies`)\r\n if (!replies_container) return onError('No replies container!');\r\n }\r\n // If post is already there, skip the entire thing\r\n if (expectedPost && highlight(expectedPost)) {\r\n $newposts_get.removeClass('upd-updating')\r\n this.next()\r\n return\r\n }\r\n let $lastQrl = $(`.qrl[data-parent=\"${threadid}\"]`).last()\r\n , lastpost = +($lastQrl.data('postnum') || $lastQrl.data('parent'))\r\n if (! lastpost) return onError();\r\n \r\n HTMLoader.getThread(this_board_dir, threadid, [lastpost,Infinity], (err, posts) => {\r\n if (!ispage) {\r\n $newposts_get.removeClass('upd-updating')\r\n }\r\n if (posts) {\r\n replies_container.insertAdjacentHTML('beforeend', posts)\r\n replyMap.showReplies()\r\n unreadCounter.refreshTimestamp(task.timestamp || null)\r\n if (task.onSuccess)\r\n task.onSuccess()\r\n }\r\n else {\r\n if (!task.silent) {\r\n pups.info(posts === '' ? _l.noNewPosts : _l.oops + (err !== false ? ` (${err})` : ''), {time: 1})\r\n }\r\n }\r\n if (expectedPost && !highlight(expectedPost)) {\r\n return onError('No target reply!');\r\n }\r\n this.next()\r\n }, false, true)\r\n },\r\n pushTask: function(task) {\r\n if (this.busy)\r\n this.stack.push(task)\r\n else\r\n this.execute(task)\r\n },\r\n next: function() {\r\n let next = this.stack.shift()\r\n if (next)\r\n this.execute(next)\r\n else\r\n this.busy = false\r\n }, \r\n stack: []\r\n}\r\n\r\nfunction quickreply(ev) {\r\n var externalBoard = $(this).data('boardname');\r\n if(externalBoard === this_board_dir) externalBoard = false;\r\n var parent = $(this).data('parent'), current = $(this).data('postnum') || parent;\r\n var preferUnpinned = !!+localStorage['pinForm'];\r\n var appearsNew = ($('#postclone').css('display') === 'none');\r\n $('#postclone').show();\r\n if(!isTouch) {\r\n if(preferUnpinned) {\r\n $('#postclone').css({\r\n top: $(this).offset().top + $(this).height(),\r\n left: Math.round(($(window).width() / 2) - ($('#postclone').width() / 2)),\r\n position: 'absolute'\r\n });\r\n }\r\n else if(appearsNew) {\r\n $('#postclone').css({\r\n top: $(this).offset().top + $(this).height() - $(document).scrollTop(),\r\n left: Math.round(($(window).width() / 2) - ($('#postclone').width() / 2)),\r\n position: 'fixed'\r\n });\r\n }\r\n }\r\n $('#postclone input[name=\"replythread\"]').val(parent);\r\n if(externalBoard) {\r\n $('#postclone input[name=\"board\"]').val(externalBoard);\r\n $('#postclone .posttypeindicator').html('<a href=\"'+ku_boardspath+'/'+externalBoard+'/res/'+parent+'.html?i#'+current+'\"> &gt;&gt;/'+externalBoard+'/'+parent+'</a>');\r\n }\r\n else {\r\n $('#postclone .posttypeindicator').html('<a class=\"xlink\" href=\"#'+current+'\"> &gt;&gt;'+parent+'</a>');\r\n }\r\n insert('>>'+current+'\\n');\r\n return false;\r\n}\r\n\r\nfunction popupMessage(content, delay=1000) {\r\n pups.info(content, {time: delay/1000})\r\n console.warn('popupMessage() is deprecated. Please use YOBA alerts instead.')\r\n}\r\n\r\nvar Captcha = {\r\n init: function() {\r\n $('.captchawrap').click(ev => this.refresh(ev.ctrlKey || ev.altKey))\r\n injector.inject('captcha-rotting',\r\n `.cw-running .rotting-indicator {\r\n -webkit-animation-duration: ${captchaTimeout}s;\r\n -o-animation-duration: ${captchaTimeout}s;\r\n animation-duration: ${captchaTimeout}s;\r\n }\r\n .cw-running .captchaimage,\r\n .cw-running .rotten-msg {\r\n -webkit-animation-delay: ${captchaTimeout}s;\r\n -o-animation-delay: ${captchaTimeout}s;\r\n animation-delay: ${captchaTimeout}s;}`)\r\n $('.captchaimage').on('animationend webkitAnimationEnd msAnimationEnd', ev => {\r\n this.shownOnce = false\r\n $('input[name=captcha]').val('')\r\n })\r\n },\r\n refresh: function(switch_lang=false) {\r\n if (!$('.captchawrap').length) return;\r\n this.shownOnce = true\r\n let cColor = $('.captchawrap').css('color').match(/([0-9]+(?:\\.[0-9]+)?)/g)\r\n cColor = (cColor.length >= 3) ? '&color='+cColor.slice(0, 3).join(',') : ''\r\n $('.captchaimage').attr('src', ku_boardspath+'/captcha.php?'+Math.random()+cColor+(switch_lang ? '&switch' : ''))\r\n $('.captchawrap')\r\n .removeClass('cw-initial cw-running')\r\n .each(function() {void this.offsetWidth}) //trigger a reflow\r\n .addClass('cw-running')\r\n Array.prototype.forEach.call(document.querySelectorAll('input[name=\"captcha\"]'), input => input.value = null)\r\n },\r\n refreshOnce: function() {\r\n if (!this.shownOnce) {\r\n this.refresh()\r\n }\r\n return false\r\n },\r\n shownOnce: false\r\n}\r\n\r\nconst Ajax = {\r\n submitPost: function(form) {\r\n let alertsToRemove = _.clone(this.shownErrors)\r\n setTimeout(() => {\r\n alertsToRemove.forEach(a => {\r\n pups.closeByID(a)\r\n })\r\n }, 300)\r\n this.shownErrors = []\r\n let showError = (a, b={}) => this.shownErrors.push(pups.err(a, b))\r\n\r\n //Moved from handleSubmit() and checkcaptcha()\r\n let captchafield = form.querySelector('input[name=captcha]')\r\n if (captchafield && !captchafield.value.length)\r\n return showError(_l.enterCaptcha)\r\n if(+$('.rotten-msg').css('opacity') > 0) {\r\n return showError(_l.captcharot);\r\n }\r\n if (form.id === 'postclone')\r\n ffdata.save()\r\n\r\n form.classList.add('form-sending')\r\n let fd = new FormData(form)\r\n , xr = new XMLHttpRequest()\r\n fd.append('AJAX', 1)\r\n\r\n // Token for live updates\r\n this.postToken = randomString()\r\n fd.append('token', this.postToken)\r\n\r\n xr.open('POST', form.action)\r\n xr.onload = e => {\r\n form.classList.remove('form-sending')\r\n if (xr.status !== 200) {\r\n showError(_l.xhrError)\r\n return\r\n }\r\n ;[].forEach.call(form.querySelectorAll('.error-in-attachment'), el => el.classList.remove('error-in-attachment'))\r\n Captcha.refresh()\r\n let res = null\r\n try {\r\n res = JSON.parse(xr.response)\r\n }\r\n catch(e) {\r\n showError(_l.xhrError)\r\n console.error('Malformed response (JSON expected):', xr.response)\r\n return\r\n }\r\n if (res.error) {\r\n if (res.error_verbose)\r\n res.error = `${res.error}<br>${res.error_verbose}`\r\n if (res.error_type) {\r\n if (res.error_type == 'ban') {\r\n showError(`${res.error} (<a href=\"${ku_cgipath}/banned.php\" target=\"_blank\">${_l.details}</a>)`, {time: 0, save: true})\r\n }\r\n if (res.error_type == 'duplicate_file') {\r\n showError(res.error, {time: 0})\r\n form.querySelector('input[name=\"imagefile\"]').value = null\r\n }\r\n if (res.error_type == 'upload_error') {\r\n showError(res.error, {time: 0})\r\n let badatt = form.querySelector(`.multiembedwrap[data-pos=\"${res.error_data.attachmenttype}-${res.error_data.position+1}\"]`)\r\n if (badatt) {\r\n badatt.classList.add('error-in-attachment')\r\n }\r\n }\r\n }\r\n else {\r\n showError(res.error, {time: 0})\r\n }\r\n return\r\n }\r\n else {\r\n resetForm(form)\r\n if (form.id == \"postclone\") {\r\n $(form).hide()\r\n }\r\n let noko = form.querySelector('input[name=\"redirecttothread\"]').checked\r\n if (res.thread_replyto != 0) {\r\n newposts.get({\r\n threadid: ispage ? res.thread_replyto : null,\r\n expectedPost: +res.post_id,\r\n onError: (err) => {\r\n console.error(err)\r\n document.location.href = `${ku_boardspath}/${res.board}/res/${res.thread_replyto}.html#${res.post_id}`\r\n if (! ispage)\r\n document.location.reload()\r\n },\r\n onSuccess: () => $(`#delform div[id^=thread${res.thread_replyto}] .fresh-replies`).remove()\r\n })\r\n }\r\n else {\r\n if (noko) {\r\n document.location.href = `${ku_boardspath}/${res.board}/res/${res.post_id}.html`\r\n }\r\n else {\r\n document.location.href = `${ku_boardspath}/${res.board}`\r\n }\r\n }\r\n }\r\n }\r\n xr.send(fd)\r\n },\r\n shownErrors: [],\r\n reportPost: function(fd, callback=null) {\r\n let xr = new XMLHttpRequest()\r\n fd.append('AJAX', 1)\r\n fd.append('reportpost', 1)\r\n xr.open('POST', document.forms.delform.action)\r\n xr.onload = e => {\r\n if (xr.status !== 200) {\r\n pups.err(_l.xhrError)\r\n return callback(false)\r\n }\r\n let res = null\r\n try {\r\n res = JSON.parse(xr.response)\r\n }\r\n catch(e) {\r\n pups.err(_l.xhrError)\r\n console.error('Malformed response (JSON expected):', xr.response)\r\n return callback(false)\r\n }\r\n if (callback)\r\n callback(res.data)\r\n if (res.error) {\r\n if (res.error_verbose)\r\n res.error = `${res.error}<br>${res.error_verbose}`\r\n pups.err(res.error, {time: 0})\r\n return\r\n }\r\n else {\r\n $('body').removeClass('select-multiple')\r\n $('.userdelete').removeClass('ud-active')\r\n let postsReported = []\r\n , postErrors = []\r\n res.data.forEach(item => {\r\n if (!item.success) {\r\n postErrors.push(item)\r\n return\r\n }\r\n postsReported.push(item.id)\r\n if (! $('input[name=\"post[]\"]:checked').length)\r\n $('.userdelete').removeClass('ud-active');\r\n })\r\n let msg = ''\r\n if (postsReported.length) {\r\n postsReported = postsReported.map(post => '#'+post)\r\n msg += postsReported.length > 1 ?\r\n `${_l.posts} ${postsReported.join(', ')} ${_l.reportedMulti}.`\r\n :`${_l.post} ${postsReported[0]} ${_l.reported}.`\r\n pups.succ(msg, {time: 2 + postsReported.length})\r\n }\r\n postErrors.forEach(err => {\r\n pups.err(`${_l.post} #${err.id}: ${err.message}`)\r\n })\r\n }\r\n }\r\n xr.send(fd)\r\n },\r\n modThread: function(a, action) {\r\n let $a = $(a)\r\n , fd = new FormData()\r\n , xr = new XMLHttpRequest()\r\n , $li = $a.find('li')\r\n $li.addClass('spin-around')\r\n fd.append('AJAX', 1)\r\n xr.open('POST', a.getAttribute('href'))\r\n xr.onload = e => {\r\n $li.removeClass('spin-around')\r\n if (xr.status !== 200) {\r\n pups.err(_l.xhrError)\r\n return\r\n }\r\n let res = null\r\n try {\r\n res = JSON.parse(xr.response)\r\n }\r\n catch(e) {\r\n pups.err(_l.xhrError)\r\n console.error('Malformed response (JSON expected):', xr.response)\r\n return\r\n }\r\n if (res.error) {\r\n if (res.error_verbose)\r\n res.error = `${res.error}<br>${res.error_verbose}`\r\n pups.err(res.error, {time: 0})\r\n return\r\n }\r\n else {\r\n let $posthead = $a.parents('.posthead')\r\n , $extrabtns = $posthead.find('.extrabtns')\r\n if (action == 'stickypost') {\r\n $extrabtns.prepend(makeIcon('pin', 'i-icon i-pin'));\r\n $posthead.addClass('thread-stickied')\r\n }\r\n if (action == 'unstickypost') {\r\n $extrabtns.find('svg.i-icon.i-pin').remove()\r\n $posthead.removeClass('thread-stickied')\r\n }\r\n if (action == 'lockpost') {\r\n $extrabtns.prepend(makeIcon('lock', 'i-icon i-lock'));\r\n $posthead.addClass('thread-locked')\r\n }\r\n if (action == 'unlockpost') {\r\n $extrabtns.find('svg.i-icon.i-lock').remove()\r\n $posthead.removeClass('thread-locked')\r\n }\r\n pups.succ(res.message)\r\n }\r\n }\r\n xr.send(fd)\r\n },\r\n deleteItems: function(fd, callback=null) {\r\n let kind = 'Items'\r\n if (fd.has) {\r\n if (fd.has('post[]')) {\r\n if (!fd.has('delete-file[]'))\r\n kind = 'Posts'\r\n fd.append('deletepost', 1)\r\n }\r\n else if (fd.has('delete-file[]'))\r\n kind = 'Files'\r\n else return;\r\n }\r\n else { // FormData.has() is not supported\r\n fd.append('deletepost', 1)\r\n }\r\n \r\n let xr = new XMLHttpRequest()\r\n fd.append('AJAX', 1)\r\n\r\n // Token for live updates\r\n this.delToken = randomString()\r\n fd.append('token', this.delToken)\r\n\r\n xr.open('POST', document.forms.delform.action)\r\n xr.onload = e => {\r\n if (xr.status !== 200) {\r\n pups.err(_l.xhrError)\r\n return callback(null)\r\n }\r\n let res = null\r\n try {\r\n res = JSON.parse(xr.response)\r\n }\r\n catch(e) {\r\n pups.err(_l.xhrError)\r\n console.error('Malformed response (JSON expected):', xr.response)\r\n return callback(null)\r\n }\r\n if (callback)\r\n callback(res.data)\r\n if (res.error) {\r\n if (res.error_verbose)\r\n res.error = `${res.error}<br>${res.error_verbose}`\r\n pups.err(res.error, {time: 0})\r\n return\r\n }\r\n else {\r\n deleteItems(res.data)\r\n }\r\n }\r\n xr.send(fd)\r\n }\r\n}\r\n\r\nfunction inspectFormData(formData) {\r\n for (var pair of formData.entries()) {\r\n console.log(pair[0]+ ', ' + pair[1]);\r\n }\r\n}\r\n\r\nfunction makeIcon(i, classes=\"\", bare=false) {\r\n return `${bare ? '' : `<svg class=\"icon ${classes}\">`}\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#i-${i}\"></use>\r\n ${bare ? '' : '</svg>'}`\r\n}\r\n\r\nfunction expandimg(postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh) {\r\n let element = document.getElementById(\"thumb\" + postnum);\r\n if (element == null) return false;\r\n let $element = $(element)\r\n , $postbody = $element.parents('.postbody')\r\n , $fc_filename = $element.parents('figure').find('.fc-filename')\r\n , fc_width\r\n if(typeof event !== 'undefined' && event.which === 2) return true;\r\n if (element.getElementsByTagName('img')[0].getAttribute('alt').substring(0,4)!='full') {\r\n $element.html('<img src=\"'+imgurl+'\" alt=\"full'+postnum+'\" class=\"thumb\" height=\"'+imgh+'\" width=\"'+imgw+'\">');\r\n if (! Settings.expandImgFull()) {\r\n let img = element.getElementsByTagName('img')[0]\r\n , max_w = document.documentElement?document.documentElement.clientWidth : document.body.clientWidth\r\n , offset = 50\r\n , offset_el = img\r\n\r\n while (offset_el != null) {\r\n offset += offset_el.offsetLeft;\r\n offset_el = offset_el.offsetParent;\r\n }\r\n var new_w = max_w - offset;\r\n if (img.width > new_w) {\r\n var ratio = img.width / img.height;\r\n var zoom = 1 - new_w / img.width;\r\n var new_h = new_w / ratio;\r\n var notice = document.createElement('div');\r\n notice.setAttribute('class', 'filesize');\r\n notice.style.textDecoration = 'underline';\r\n var textNode = document.createTextNode(_l.imageDownscaledBy + \" \" + Math.round(zoom*100) + \"% \"+_l.toFit);\r\n notice.appendChild(textNode);\r\n element.insertBefore(notice, img);\r\n $(img).width(new_w);\r\n $(img).height(new_h);\r\n }\r\n fc_width = new_w\r\n }\r\n else\r\n fc_width = imgw\r\n if ($postbody) $postbody.addClass('postbody-expanded')\r\n }\r\n else {\r\n element.innerHTML = '<img src=\"' + thumburl + '\" alt=\"' + postnum + '\" class=\"thumb\" height=\"' + thumbh + '\" width=\"' + thumbw + '\">';\r\n fc_width = thumbw\r\n if ($postbody) $postbody.removeClass('postbody-expanded')\r\n }\r\n $fc_filename[0].style.maxWidth = `${fc_width - 50}px`\r\n return false;\r\n}\r\n\r\n// YOBA previews\r\nvar PostPreviews = {\r\n zindex: 3,\r\n cached: {},\r\n parent: {},\r\n\r\n _parseURL: function(url) {\r\n let matches = url.match(/\\/(.+)\\/res\\/([0-9]+)\\.html#([0-9]+)|postbynumber\\.php\\?b=(.+)&p=([0-9]+)/i)\r\n if (!matches) return null;\r\n return {\r\n board: matches[1] || matches[4],\r\n parent: matches[2] || '?',\r\n post: matches[3] || matches[5],\r\n }\r\n },\r\n\r\n _mouseover: function(e) {\r\n e.stopPropagation();\r\n var href = this.getAttribute(\"href\")\r\n , isCatalog = $(this).hasClass('catalog-entry')\r\n , parsedURL = PostPreviews._parseURL(href)\r\n if (!parsedURL) return false;\r\n let board = parsedURL['board']\r\n , parentid = parsedURL['parent']\r\n , postid = parsedURL['post']\r\n , previewid = 'preview_'+board+'_'+postid\r\n , preview = $('#' + previewid)\r\n if (preview.length == 0) {\r\n $('body').children().first().before('<div id=\"'+previewid+'\"></div>');\r\n preview = $('#' + previewid);\r\n preview.addClass('reflinkpreview content-background pre-hidden actual-reflinkpreview');\r\n preview.mouseleave(PostPreviews._mouseout);\r\n preview.mouseover(PostPreviews.onMouseOver);\r\n }\r\n var parent = $(this).parents('div[id^=preview]');\r\n if (parent.length > 0) {\r\n if (previewid == parent.attr('id')) return; // anti-recursion\r\n for (var id in PostPreviews.parent) { if (id == previewid || PostPreviews.parent[id] == previewid) return }\r\n PostPreviews.parent[previewid] = parent.attr('id');\r\n }\r\n else {\r\n PostPreviews.parent = [];\r\n }\r\n let transformOrigin;\r\n if(e.clientY < ($(window).height() / 1.5)) {\r\n preview.css({top:e.pageY+5});\r\n transformOrigin = \"top \"\r\n } else {\r\n preview.css({bottom:$(window).height()-e.pageY+5});\r\n transformOrigin = \"bottom \"\r\n }\r\n if(e.clientX < ($(window).width() / 1.5)) {\r\n preview.css({left:e.pageX+15});\r\n transformOrigin += \"left\"\r\n } else {\r\n preview.css({right:$(window).width()-e.pageX+15});\r\n transformOrigin += \"right\"\r\n }\r\n preview.css({zIndex: PostPreviews.zindex++, \"transform-origin\": transformOrigin});\r\n this.style.cursor = \"progress\"\r\n HTMLoader.getPost(board, parentid, postid, (err, post) => {\r\n window.setTimeout(() => {\r\n preview[0].getBoundingClientRect() // force reflow or how is this thing called\r\n preview.html(post ? post : (_l.oops + (err !== false ? ` (${err})` : '')))\r\n .removeClass('pre-hidden')\r\n this.style.cursor = \"pointer\"\r\n }, 0)\r\n })\r\n e.preventDefault();\r\n },\r\n\r\n onMouseOver: function() {\r\n var preview = $(this);\r\n if ($(this).is('a')) {\r\n let parsedURL = PostPreviews._parseURL(this.getAttribute(\"href\"))\r\n if (!parsedURL) return;\r\n let board = parsedURL['board']\r\n , postid = parsedURL['post']\r\n preview = $('#preview_'+board+\"_\"+postid).first();\r\n }\r\n while (preview.length > 0) {\r\n clearTimeout(preview[0].fadeout)\r\n preview = $('#' + PostPreviews.parent[preview.attr('id')]);\r\n }\r\n },\r\n\r\n _mouseout: function() {\r\n var preview = $(this);\r\n if ($(this).is('a')) {\r\n if (this.predelay) {\r\n clearTimeout(this.predelay)\r\n }\r\n let parsedURL = PostPreviews._parseURL(this.getAttribute(\"href\"))\r\n if (!parsedURL) return;\r\n let board = parsedURL['board']\r\n , postid = parsedURL['post']\r\n preview = $('#preview_'+board+\"_\"+postid).first();\r\n }\r\n while (preview.length > 0) {\r\n clearTimeout(preview[0].fadeout)\r\n let pre = preview\r\n preview[0].fadeout = setTimeout(() => {\r\n pre.addClass('pre-hidden')\r\n setTimeout(() => {\r\n delete PostPreviews.parent[pre.attr('id')];\r\n pre.remove();\r\n }, PostPreviews._timings.transition)\r\n }, PostPreviews._timings.fade)\r\n preview = $('#' + PostPreviews.parent[preview.attr('id')]);\r\n }\r\n },\r\n\r\n _timings: {\r\n predelay: 50,\r\n transition: 200,\r\n fade: 400\r\n }\r\n}\r\n\r\nfunction set_inputs(id) {\r\n let form = document.getElementById(id)\r\n if (form) {\r\n let name = form.querySelector('input[name=name]')\r\n if(name && !name.value) name.value = getCookie(\"name\");\r\n if(!form.em.value) form.em.value = getCookie(\"email\");\r\n if(!form.postpassword.value) form.postpassword.value = get_password(\"postpassword\");\r\n }\r\n}\r\n\r\nfunction set_delpass(id) {\r\n let form = document.getElementById(id)\r\n if (! form) return;\r\n let postpassword = form.postpassword\r\n if (postpassword && !postpassword.value) {\r\n postpassword.value = get_password(\"postpassword\");\r\n }\r\n}\r\n\r\n(function ($) { // [!] What the fuck is this?\r\n $.event.special.load = {\r\n add: function (callback) {\r\n if ( this.nodeType === 1 && this.tagName.toLowerCase() === 'img' && this.src !== '' ) {\r\n if ( this.complete || this.readyState === 4 ) {\r\n callback.handler.apply(this);\r\n }\r\n else if ( this.readyState === 'uninitialized' && this.src.indexOf('data:') === 0 ) {\r\n $(this).trigger('error');\r\n }\r\n\r\n else {\r\n $(this).bind('load', callback.handler);\r\n }\r\n }\r\n }\r\n };\r\n}(jQuery));\r\n\r\nvar Settings = {\r\n _checkbox: function(clicked, settingName, defaultValue) {\r\n if (localStorage == null) {\r\n pups.err(_l.noLocalStorage);\r\n return;\r\n }\r\n if (localStorage[settingName] == null) {\r\n localStorage[settingName] = defaultValue;\r\n }\r\n if (clicked == true) {\r\n // save it\r\n localStorage[settingName] = $('#settings_' + settingName).is(\":checked\");\r\n } else {\r\n // update checkbox (called on load)\r\n if (localStorage[settingName] == 'true')\r\n $('#settings_' + settingName).attr(\"checked\",\"checked\");\r\n else\r\n $('#settings_' + settingName).removeAttr(\"checked\");\r\n }\r\n return (localStorage[settingName] == 'true') || (localStorage[settingName] == true) ;\r\n },\r\n\r\n fxEnabled: function(changed) {\r\n var enabled = Settings._checkbox(changed, 'fxEnabled', true);\r\n if (changed != null) {\r\n $.fx.off = !enabled;\r\n }\r\n return enabled;\r\n },\r\n\r\n showReplies: function(changed) {\r\n var enabled = Settings._checkbox(changed, 'showReplies', true);\r\n if (changed != null) {\r\n scrollAnchor.save('replymap', '.postnode', window, 'v')\r\n if (enabled) {\r\n replyMap.showReplies()\r\n injector.remove('hide-replies')\r\n }\r\n else {\r\n injector.inject('hide-replies', '.replieslist {display: none}')\r\n }\r\n scrollAnchor.restore('replymap')\r\n }\r\n return enabled;\r\n },\r\n\r\n sfwMode: function(changed) {\r\n var enabled = Settings._checkbox(changed, 'sfwMode', false);\r\n if (enabled) {\r\n injector.inject('sfwMode', '.thumb { opacity: 0.05;} .thumb:hover { opacity: 1;}');\r\n }\r\n else {\r\n injector.remove('sfwMode');\r\n }\r\n return enabled;\r\n },\r\n\r\n expandImgFull: function(changed) {\r\n return Settings._checkbox(changed, 'expandImgFull', false);\r\n },\r\n\r\n constrainWidth: function(changed) {\r\n var enabled = Settings._checkbox(changed, 'constrainWidth', false);\r\n if (enabled) {\r\n injector.inject('constrainWidth', `body {\r\n max-width: 960px;\r\n margin: 0px auto;\r\n }`)\r\n }\r\n else {\r\n injector.remove('constrainWidth')\r\n }\r\n }\r\n}\r\n\r\nvar rswap = {\r\n i: true,\r\n swap: function() {\r\n if(this.i) $('#delform').before($('#rswapper')).after($('.postarea'));\r\n else $('#delform').before($('.postarea')).after($('#rswapper'));\r\n this.i = !this.i;\r\n }\r\n}\r\n\r\nvar captchalang = getCookie('captchalang') || 'ru';\r\nfunction setCaptchaLang(lang) {\r\n if(!in_array(lang, ['ru', 'en', 'num'])) return;\r\n captchalang = lang;\r\n set_cookie('captchalang', lang, 365);\r\n pups.succ(_l.captchaLangChanged)\r\n}\r\n\r\nconst offClick = []\r\n\r\nfunction readyset() {\r\n $('.make-me-readonly').each(function() {\r\n $(this).attr('readonly', true)\r\n .on('focus', function() {\r\n $(this).removeAttr('readonly')\r\n })\r\n })\r\n\r\n if(!ispage) $('.mgoback').show();\r\n if(isTouch)\r\n $('#js_settings').prepend('<a href=\"javascript: localStorage.setItem(\\'interfaceType\\', \\'desktop\\'); location.reload();\">'+_l.returnDesktop+'</a><br>');\r\n else\r\n $('#js_settings').prepend('<a href=\"javascript: localStorage.setItem(\\'interfaceType\\', \\'touch\\'); location.reload();\">'+_l.returnTouch+'</a><br>');\r\n\r\n $('#js_settings').prepend(_l.captchalang+': <a href=\"javascript:setCaptchaLang(\\'ru\\');\">Cyrillic</a> | <a href=\"javascript:setCaptchaLang(\\'en\\');\">Latin</a> | <a href=\"javascript:setCaptchaLang(\\'num\\');\">Numeral</a><br />');\r\n\r\n if(Styles.$cancelLink)\r\n $('#js_settings').prepend(Styles.$cancelLink)\r\n\r\n pups.init();\r\n chpok.init(true)\r\n\r\n LatexIT.init();\r\n checkhighlight();\r\n checkgotothread();\r\n checknamesave();\r\n\r\n bnrs.init();\r\n\r\n if(getCookie('ku_menutype')) {\r\n var c = Cookie('ku_menutype');\r\n if(c != 'default' && c != '')\r\n document.getElementById('overlay_menu').style.position = c;\r\n }\r\n\r\n //initial post-process\r\n processNodeInsertion()\r\n\r\n if(!isTouch) {\r\n cloud20.init();\r\n $('.sect-exr').mouseenter(function() { menu_show('ms-'+$(this).data('toexpand')); });\r\n $('#overlay_menu').mouseleave(function() { menu_show('_off_'); });\r\n $('body').on('mouseenter', \"a[class^='ref']\", function(ev) {\r\n this.predelay = setTimeout(() => PostPreviews._mouseover.bind(this)(ev), PostPreviews._timings.predelay)\r\n })\r\n .on('mouseleave', \"a[class^='ref']\", PostPreviews._mouseout)\r\n .on('click', \"a[class^='ref']\", function(e) {\r\n e.preventDefault()\r\n let href = this.getAttribute('href')\r\n if (!highlight(href.split('#')[1], 0)) {\r\n document.location.href = href\r\n }\r\n })\r\n }\r\n else {\r\n add_mob_menu();\r\n $('body').addClass('touch-mode');\r\n $('.sect-exr:not([data-toexpand=\"_options\"])').parent().hide();\r\n $('.sect-exr').click(function() {\r\n if($('#js_settings').is(':visible')) {\r\n menu_show('_off_');\r\n }\r\n else {\r\n menu_show('ms-_options');\r\n }\r\n return false;\r\n });\r\n offClick.push(ev => {\r\n menu_show('_off_');\r\n $('[id^=preview]').addClass('pre-hidden')\r\n setTimeout(() => {\r\n $('[id^=preview]').remove();\r\n }, PostPreviews._timings.transition)\r\n })\r\n $('body').on('click', \"a[class^='ref']\", PostPreviews._mouseover);\r\n }\r\n\r\n // new markup\r\n \r\n $('.opt-exp').click(function(ev) {\r\n ev.preventDefault()\r\n $(this).find('.expandee').toggleClass('expanded');\r\n })\r\n .mouseleave(function() {\r\n this.hideTimeout = setTimeout(() => $(this).find('.expandee').removeClass('expanded'), 250)\r\n })\r\n .mouseenter(function() {\r\n clearTimeout(this.hideTimeout)\r\n })\r\n $('.code_markup_select').change(function() {\r\n markup($(this).parents('form'), '[code='+$(this).val()+']', '[/code]');\r\n })\r\n\r\n $('html').click(ev => offClick.forEach(fn => fn(ev)))\r\n\r\n /* ---------- All delegated events on body ---------- */\r\n $('body')\r\n .on('click', '.uib-mup', function() {\r\n markup($(this).parents('form'), $(this).data('mups'), $(this).data('mupe'), $(this).data('imups'), $(this).data('imupe'));\r\n return false;\r\n })\r\n .on('click', '.uib-bul', function() {\r\n bullets($(this).parents('form'), $(this).data('bul'), $(this).data('imups'), $(this).data('imupe'));\r\n return false;\r\n })\r\n .on('click', '.uib-tx', function() {\r\n var target = $(this).data('target');\r\n head.js('http://latex.codecogs.com/editor3.js', function() {\r\n OpenLatexEditor(target,'phpBB','en-us', false, '','full');\r\n });\r\n return false;\r\n })\r\n //Webm expanding\r\n .on('click', '.movie', function(event) {expandwebm($(this), event)})\r\n //new quick reply\r\n .on('click', '.qrl', quickreply)\r\n // ID highlighting\r\n .on('click', '.hashpic', function() {\r\n $('.highlight').removeClass('highlight')\r\n let found = $(`.hashpic[alt=${$(this).attr('alt')}]`).each(function() {\r\n $(this).parents('.posthead').parent().addClass('highlight')\r\n }).length\r\n pups.info(_l.found+': '+found, {time: 1.5})\r\n })\r\n .on('click', '.posttypeindicator a', function() {\r\n var xl = $(this);\r\n var offset = $('[name=\"' + xl.attr('href').substr(1) + '\"]').offset() || $('[name=\"' + xl.text().split('>>')[1] + '\"]').offset() || false;\r\n if(offset) {\r\n $('html, body').animate({\r\n scrollTop: offset.top - ( $('#overlay_menu').height() + 10 )\r\n }, 250);\r\n }\r\n return false;\r\n })\r\n .on('click', '.dice', function() {\r\n if(typeof $(this).data('html') === 'undefined') $(this).data('html', $(this).html());\r\n var htm = stripHTML($(this).html());\r\n $(this).html($(this).attr('title'));\r\n $(this).attr('title', htm);\r\n })\r\n .on('submit', '#postform, #postclone', function(e) {\r\n e.preventDefault()\r\n Ajax.submitPost(this)\r\n })\r\n .on('click', '.shl', () => false)\r\n //Ultimate YOBA Youtube embeds\r\n .on('click','.embed-play-button', function(ev) {\r\n ev.preventDefault()\r\n unwrapEmbed($(this).parents('figure'))\r\n })\r\n .on('click','.collapse-video', function(ev) {\r\n ev.preventDefault()\r\n wrapEmbed($(this).parents('figure'))\r\n })\r\n .on('mouseenter', '._country_', function() {\r\n if(typeof $(this).attr('title') === \"undefined\") {\r\n $(this).attr('title', countries[$(this).attr('src').split('flags/')[1].split('.png')[0].toUpperCase()]);\r\n }\r\n })\r\n .on('click', '.audiowrap', function(ev) {\r\n ev.preventDefault();\r\n let $this = $(this)\r\n var src = $this.attr('href');\r\n let $fig = $this.parents('figure')\r\n if (! $fig.hasClass('unwrapped')) {\r\n $fig.addClass('unwrapped unwrapped-audio')\r\n }\r\n let $fsz = $fig.find('.filesize');\r\n if (! $fsz.find('.collapse-btn').length)\r\n $fsz.append(`\r\n <button title=\"${_l.collapse}\" class=\"emb-button collapse-video\">\r\n ${makeIcon('shrink', 'b-icon')}\r\n </button>`);\r\n if (! $this.find('audio').length)\r\n $this.append('<audio src=\"'+src+'\" controls autoplay=\"true\"></audio>')\r\n $fsz.find('.collapse-video').click(function() {\r\n $fig.removeClass('unwrapped unwrapped-audio')\r\n .find('audio')[0].pause()\r\n })\r\n })\r\n .on('change', '.multidel', function() {\r\n let itemCount = $('.multidel:checked').length\r\n\r\n if (! $('.item-count').length) {\r\n $('.userdelete tbody').prepend(`<tr><td>\r\n ${_l.selected}: <span class=\"item-count\"></span>\r\n <button class=\"close-multisel icon-wraping-button\" title=\"${_l.cancel}\">${makeIcon('x', 'b-icon ', false)}</button>\r\n </td></tr>`)\r\n $('.close-multisel').click(function(ev) {\r\n ev.preventDefault()\r\n $('.multidel').prop('checked', false)\r\n $('body').removeClass('select-multiple')\r\n $('.userdelete').removeClass('ud-active')\r\n })\r\n }\r\n\r\n if (itemCount > 0) {\r\n $('.item-count').text(itemCount)\r\n }\r\n else {\r\n $('.userdelete').removeClass('ud-active')\r\n $('body').removeClass('select-multiple')\r\n }\r\n })\r\n /* Post menu */ \r\n .on('click', 'label.postinfo', function(ev) {\r\n if (! $(this).find('.multidel').is(':visible')) {\r\n ev.stopPropagation()\r\n ev.preventDefault()\r\n let $this = $(this)\r\n , $menu = $this.parent().find('.post-menu')\r\n let on = !$menu.is(':visible')\r\n $('.post-menu').hide()\r\n if (! $menu.length) {\r\n let $postnode = $(this).parents('.postnode')\r\n , board = $postnode.data('board')\r\n , id = $postnode.data('id')\r\n , isOP = $postnode.hasClass('op')\r\n this.insertAdjacentHTML('afterend', `<div class=\"content-background post-menu\" style=\"display: none\"> \r\n <ul>\r\n <li class=\"menu-delete\">${makeIcon('x')}<span>${_l.del}</span></li>\r\n <li class=\"menu-report\">${makeIcon('warning')}<span>${_l.report}</span></li>\r\n <li class=\"menu-link-share\">${makeIcon('link')}<span>${_l.links}</span></li>\r\n <li class=\"menu-select-multiple\">${makeIcon('select-multiple')}<span>${_l.selectMultiple}</span></li>\r\n ${kumod_set ? `\r\n <li class=\"menu-delete menu-delete-mod\">${makeIcon('x')}<span>${_l.del} ${_l.asMod}</span></li>\r\n <a href=\"${ku_cgipath}/manage_page.php?action=bans&amp;banboard=${board}&amp;banpost=${id}\">\r\n <li class=\"menu-ban\">${makeIcon('ban')}<span>${_l.ban}...<span></li>\r\n </a>\r\n ${isOP ? `\r\n <a class=\"stickypost-btn\" onclick=\"Ajax.modThread(this, 'stickypost'); return false\"\r\n href=\"${ku_cgipath}/manage_page.php?action=stickypost&amp;board=${board}&amp;postid=${id}\">\r\n <li>${makeIcon('pin')}<span>${_l.stickthread}<span></li>\r\n </a>\r\n <a class=\"unstickypost-btn\" onclick=\"Ajax.modThread(this, 'unstickypost'); return false\"\r\n href=\"${ku_cgipath}/manage_page.php?action=unstickypost&amp;board=${board}&amp;postid=${id}\">\r\n <li>${makeIcon('unpin')}<span>${_l.unstickthread}<span></li>\r\n </a>\r\n <a class=\"lockpost-btn\" onclick=\"Ajax.modThread(this, 'lockpost'); return false\"\r\n href=\"${ku_cgipath}/manage_page.php?action=lockpost&amp;board=${board}&amp;postid=${id}\">\r\n <li>${makeIcon('lock')}<span>${_l.lockthread}<span></li>\r\n </a>\r\n <a class=\"unlockpost-btn\" onclick=\"Ajax.modThread(this, 'unlockpost'); return false\"\r\n href=\"${ku_cgipath}/manage_page.php?action=unlockpost&amp;board=${board}&amp;postid=${id}\">\r\n <li>${makeIcon('unlock')}<span>${_l.unlockthread}<span></li>\r\n </a>`\r\n : ''}`\r\n : ''}\r\n </ul>\r\n </div>`)\r\n $menu = $this.parent().find('.post-menu')\r\n }\r\n $menu.toggle(on)\r\n }\r\n })\r\n // Figure menu is global because of FUCKING overflow\r\n .on('click', '.file-menu-toggle', function(ev) {\r\n ev.stopPropagation()\r\n ev.preventDefault()\r\n let $menu = $('.file-menu')\r\n , $this = $(this)\r\n , $fsz = $this.parent()\r\n , visible = $menu.is(':visible')\r\n $('.post-menu').hide()\r\n if (visible && $menu[0].$boundTo[0] == $fsz[0]) return;\r\n let ofs = $fsz.offset()\r\n , offsetTop = $fsz.hasClass('embed-wrap') ? 22 : $fsz.outerHeight()\r\n $menu.css({\r\n 'left': `${ofs.left}px`,\r\n 'top': `${ofs.top + offsetTop}px`,\r\n 'min-width': `${$fsz.outerWidth()}px`\r\n }).show()\r\n $menu[0].__menuProps = {\r\n fileid: $fsz.parents('figure').data('fileid'),\r\n board: $fsz.parents('.postnode').data('board')\r\n }\r\n $menu[0].$boundTo = $fsz\r\n })\r\n .on('click', '.post-menu li', ev => ev.stopPropagation())\r\n .on('click', '.menu-select-multiple', function(ev) {\r\n $('.post-menu').hide()\r\n let $menu = $(this).parents('.post-menu')\r\n , isFile = $menu.hasClass('file-menu')\r\n , $md = (isFile ? $menu[0].$boundTo : $(this).parents('.posthead'))\r\n .find('.multidel')\r\n if (! $md.length) return;\r\n $md.prop('checked', true).trigger('change')\r\n $('.userdelete').addClass('ud-active')\r\n $('body').addClass('select-multiple')\r\n })\r\n .on('click', '.menu-link-share', function(ev) {\r\n let $this = $(this)\r\n , isShown = $this.find('input').length\r\n if (! isShown) {\r\n let $postnode = $this.parents('.postnode')\r\n , board = $postnode.data('board')\r\n , id = $postnode.data('id')\r\n , directLink = ku_boardspath + $postnode.find('.shl').attr('href')\r\n $this.find('span').html(`<input class=\"pm-direct-link pm-link\" type=\"text\" value=\"${directLink}\" title=\"${_l.directLink}\">&nbsp;\r\n <input class=\"pm-quote-link pm-link\" type=\"text\" value=\"&gt;&gt;/${board}/${id}\" title=\"${_l.quoteLink}\">`)\r\n .css({'font-size': 0})\r\n .find('.pm-direct-link').click()\r\n }\r\n else\r\n $this.toggleClass('direct-or-quote')\r\n })\r\n .on('click', '.pm-link', function(ev) {\r\n ev.stopPropagation()\r\n let $this = $(this)\r\n $('.pm-link').removeClass('selected')\r\n $this.focus().select().addClass('selected')\r\n })\r\n .on('click', '.menu-delete', function() {\r\n let $this = $(this)\r\n , $menu = $this.parents('.post-menu')\r\n , menu = $menu[0]\r\n , isFile = $menu.hasClass('file-menu')\r\n , $item = isFile ? $menu[0].$boundTo : $this.parents('.posthead')\r\n $this.addClass('spin-around')\r\n let fd = new FormData()\r\n if (isFile)\r\n fd.append('delete-file[]', menu.__menuProps.fileid)\r\n else\r\n fd.append('post[]', $item.parents('.postnode').data('id'))\r\n fd.append('moddelete', $this.hasClass('menu-delete-mod'))\r\n fd.append('board', isFile \r\n ? menu.__menuProps.board\r\n : $item.parents('.postnode').data('board'))\r\n fd.append('postpassword', $(`#delform input[name=\"postpassword\"]`).val())\r\n Ajax.deleteItems(fd, data => {\r\n $this.removeClass('spin-around')\r\n if (!data) return;\r\n let result = data[0]\r\n if(!result.success && $item.is(':visible')) {\r\n $item.find('.multidel').prop('checked', true).trigger('change')\r\n $('.userdelete').addClass('ud-active')\r\n $('body').addClass('select-multiple')\r\n }\r\n else if (isFile)\r\n $('.file-menu').hide()\r\n })\r\n })\r\n .on('click', '.menu-report', function() {\r\n let $this = $(this)\r\n , $item = $this.parents('.posthead')\r\n $this.addClass('spin-around')\r\n let fd = new FormData()\r\n fd.append('post[]', $item.find('.reflink a:last').text())\r\n fd.append('board', $item.parents('.postnode').data('board'))\r\n Ajax.reportPost(fd, data => {\r\n $this.removeClass('spin-around')\r\n })\r\n })\r\n .on('click', '.csswrap', function(ev) {\r\n ev.preventDefault()\r\n let cssLink = $(this).attr('href')\r\n , styleName = $(this).parent().find('.fc-filename').text()\r\n Styles.testStyle(cssLink, styleName)\r\n })\r\n .on('click', '.remove-file', function(ev) {\r\n ev.preventDefault()\r\n $(this).parent().find('input[type=file]').val(null)\r\n })\r\n\r\n offClick.push(ev => {\r\n $('.post-menu').hide()\r\n })\r\n\r\n $(window).resize(() => {\r\n let $fileMenu = $('.file-menu')\r\n if (! $fileMenu.is(':visible')) return;\r\n let $fsz = $fileMenu[0].$boundTo\r\n , ofs = $fsz.offset()\r\n , offsetTop = $fsz.hasClass('embed-wrap') ? 22 : $fsz.outerHeight()\r\n $fileMenu.css({\r\n 'left': `${ofs.left}px`,\r\n 'top': `${ofs.top + offsetTop}px`,\r\n 'min-width': `${$fsz.outerWidth()}px`\r\n })\r\n })\r\n\r\n $('#postclone label').each(function() {\r\n let id =$(this).attr('for')\r\n , newid = id+'_clone'\r\n $(this).parents('form').find('#'+id).attr('id', newid);\r\n $(this).attr('for', newid);\r\n });\r\n $('#postform textarea').attr('id', 'top-textarea'); $('#postform .uib-tx').data('target', 'top-textarea');\r\n $('#postclone textarea').attr('id', 'pop-textarea'); $('#postclone .uib-tx').data('target', 'pop-textarea');\r\n if(!isTouch) {\r\n $('#postclone').drags()\r\n .find('input, textarea, select, label').mousedown(function(e) {\r\n e.stopPropagation()\r\n })\r\n var pinnerState = !!+localStorage['pinForm'] ? 'pinned' : 'unpinned';\r\n var pinner = '<a href=\"#\" class=\"pinner '+pinnerState+'\" onclick=\"javascript:$(\\'#postclone\\').pin();return false;\" title=\"Прикрепить / Открепить\"><svg class=\"icon b-icon\"><use class=\"use-pin\" xlink:href=\"#i-pin\"></use><use class=\"use-unpin\" xlink:href=\"#i-unpin\"></use></svg></a>';\r\n }\r\n else {\r\n var pinner = '';\r\n }\r\n\r\n /* not losing floating form data */\r\n ffdata.load();\r\n\r\n $('<span class=\"extrabtns postboxcontrol\">'+ pinner +\r\n '&nbsp;<a href=\"#\" onclick=\"javascript:$(\\'#postclone\\').hide();return false;\" title=\"Закрыть\"><svg class=\"icon b-icon\"><use xlink:href=\"#i-x\"></use></svg></a>'+\r\n '</span>').appendTo('#postclone');\r\n\r\n $('#delform').on('submit', function(e) {\r\n e.preventDefault()\r\n Ajax.deleteItems(new FormData(this))\r\n })\r\n\r\n $('input[name=reportpost]').click(function(e) {\r\n e.preventDefault()\r\n Ajax.reportPost(new FormData($(this).parents('form')[0]))\r\n })\r\n\r\n $('#delform').after('<div id=\"rswapper\">[<a onclick=\"javascript:rswap.swap();return false;\" href=\"#\">'+(ispage ? _l.NewThread : _l.reply)+'</a>]<hr /></div>');\r\n\r\n Settings.sfwMode(false);\r\n if (localStorage) {\r\n for(var s in Settings) {\r\n if (s.substring(0,1) == \"_\") continue;\r\n $(\"#js_settings\").append('<label><input type=\"checkbox\" onchange=\"javascript:Settings.'+s+'(true)\" name=\"settings_'+s+'\" id=\"settings_'+s+'\" value=\"true\"> '+_l['settings_'+s]+'</label><br />');\r\n Settings[s](false);\r\n }\r\n } else {\r\n $(\"#js_settings\").append(\"<span style=\\\"color:#F00\\\">\"+_l.noLocalStorage+\"</span><br />Твой браузер — говно. Скачай <a href=\\\"/web/20110329072959/http://google.com/chrome\\\" target=\\\"_blank\\\">Chome</a>, например.\");\r\n }\r\n\r\n var textbox = document.getElementById('message');\r\n if(textbox) {\r\n textbox.onfocus=function(){is_entering = true;}\r\n textbox.onblur=function(){is_entering = false;}\r\n }\r\n\r\n // Figure menu is global because of FUCKING overflow\r\n $('body').append(`\r\n <div class=\"content-background post-menu file-menu\" style=\"display: none\"> \r\n <ul>\r\n <li class=\"menu-delete\">${makeIcon('x')}<span>${_l.del}</span></li>\r\n <li class=\"menu-select-multiple\">${makeIcon('select-multiple')}<span>${_l.selectMultiple}</span></li>\r\n ${kumod_set ? `<li class=\"menu-delete menu-delete-mod\">${makeIcon('x')}<span>${_l.del} ${_l.asMod}</span></li>` : ''}\r\n </ul>\r\n </div>\r\n `)\r\n\r\n //detect node insertions and process them\r\n $(document).on('animationstart webkitAnimationStart MSAnimationStart oanimationstart', function(event) {\r\n var $target = $(event.target);\r\n if (event.originalEvent.animationName == \"nodeInserted\" && !$target.hasClass('_inserted_'))\r\n processNodeInsertion($target);\r\n });\r\n\r\n $('input[name^=embed]').on('input', function() {\r\n let $this = $(this)\r\n $this.parent().find('.site-indicator').remove()\r\n var match = embedLinks.process($(this).val());\r\n if(match) {\r\n $this.after(`<img src=\"${ku_boardspath}/images/site-logos/${match.site}.png\" class=\"site-indicator\">`)\r\n }\r\n });\r\n\r\n $('input[name^=imagefile]').on('change', function() {\r\n let $this = $(this)\r\n if ($this.val()) {\r\n let nextCheckbox = $this.parent().next()\r\n if (nextCheckbox.length)\r\n nextCheckbox.prop('checked', true)\r\n }\r\n })\r\n\r\n if(typeof is_catalog !== 'undefined' && is_catalog) catalog.init();\r\n\r\n $('.userdelete').addClass('content-background reflinkpreview');\r\n\r\n $('<div id=\"tripinfo\"></div>').addClass('content-background reflinkpreview qreplyform').hide().appendTo('body');\r\n\r\n $('#delform').on('click', '.postertrip', function(ev) {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n var trip = $(this).text().split('!')[1]\r\n , offset = $(this).offset(), height = $(this).height()\r\n $.getJSON('/tripinfo.php', { trip: trip })\r\n .done(function(data) {\r\n var active_on = [];\r\n _.each(data.active_on, function(board) {\r\n active_on.push('<a target=\"_blank\" href=\"'+ku_boardspath+'/'+board+'/\">'+'/'+board+'/</a>');\r\n })\r\n $('#tripinfo')\r\n .html(\r\n '<div><b class=\"postertrip\">!'+trip+'</b> ['+'<a href=\"https://www.google.com/search?q=!'+trip+'\" target=\"_blank\">G</a>]</div>'+\r\n '<a style=\"float:left;\" href=\"#\" onclick=\"javascript:$(\\'#tripinfo\\').hide();return false;\"><svg style=\"position: absolute; top: 3px; right: 3px;\" class=\"icon b-icon\"><use xlink:href=\"#i-x\"></use></svg></a>'+\r\n '<div class=\"trip-info-line\">'+_l.threads+': '+data.threads+', '+_l.comments+': '+data.comments+'</div>'+\r\n '<div class=\"trip-info-line\">'+_l.active_since+': '+catalog.formatDate(data.active_since, true)+'</div>'+\r\n '<div class=\"trip-info-line\">'+_l.last_active+': '+catalog.formatDate(data.last_active, true)+'</div>'+\r\n (active_on.length ? '<div class=\"trip-info-line\">'+_l.active_on+': '+active_on.join(', ')+'</div>' : '')\r\n )\r\n .css({\r\n top: offset.top + height,\r\n left: offset.left\r\n })\r\n .fadeIn('fast');\r\n })\r\n .fail(function(error) {\r\n console.error(error)\r\n })\r\n })\r\n\r\n $('input[name=disable_name]').on('change', function() {\r\n var off = $(this).is(':checked')\r\n $(this).parents('form').find('input[name=name]').attr('disabled', off)\r\n localStorage.setItem('post_anonymously', +off)\r\n })\r\n .prop('checked', !!+localStorage['post_anonymously']).trigger('change')\r\n\r\n unreadCounter.update()\r\n\r\n Captcha.init()\r\n\r\n if(liveupd_ena && typeof io !== 'undefined')\r\n updater.init()\r\n\r\n $('input[name=\"ttl-enable\"]').on('change', function() {\r\n let on = $(this).is(':checked')\r\n , $i = $(this).parents('form').find('input[name=\"ttl\"]')\r\n $i.attr('disabled', !on)\r\n if (on && $i.val()==0)\r\n $i.val(1)\r\n $i.attr('min', on ? 1 : 0)\r\n }).trigger('change')\r\n}\r\n\r\nconst NTP = {\r\n calc: (t0, t1, t2, t3) => ((t1 - t0) + (t2 - t3)) / 2,\r\n sync: function(force) {\r\n this.pending = true\r\n let _this = this\r\n , t0 = (new Date()).valueOf()\r\n $.ajax({\r\n url: '/ntp.php',\r\n success: function(servertime) {\r\n let t1 = servertime,\r\n t2 = servertime,\r\n t3 = (new Date()).valueOf()\r\n\r\n _this.offset = _this.calc(t0, t1, t2, t3)\r\n },\r\n error: function() {\r\n pups.err('Failed to synchronize time with the server')\r\n },\r\n complete: function() {\r\n _this.synced = true\r\n\r\n while (_this.stack.length) {\r\n _this.stack.shift().resolve(_this.timeWithOffset)\r\n }\r\n }\r\n });\r\n },\r\n offset: 0,\r\n stack: [],\r\n get timeWithOffset() {\r\n return new Date(new Date().getTime() + this.offset).getTime()\r\n },\r\n getServerTime: function() {\r\n if (this.synced)\r\n return Promise.resolve(this.timeWithOffset)\r\n\r\n let promise = externallyResolvingPromise()\r\n if (! this.pending)\r\n this.sync()\r\n this.stack.push(promise)\r\n return promise.promise\r\n }\r\n}\r\n\r\nfunction externallyResolvingPromise() {\r\n let promiseResolve, promiseReject\r\n , promise = new Promise((resolve, reject) => {\r\n promiseResolve = resolve\r\n promiseReject = reject\r\n });\r\n\r\n return {\r\n promise: promise,\r\n resolve: promiseResolve,\r\n reject: promiseReject\r\n }\r\n}\r\n\r\n// this will be applied to every new inserted node (post)\r\nfunction processNodeInsertion($node) {\r\n if(typeof $node === 'undefined')\r\n $node = $('body');\r\n else {\r\n $node.addClass('_inserted_');\r\n $node = $node.parents(\":eq(1)\");\r\n }\r\n if($node.find('.prettyprint').length)\r\n prettyPrint.apply(window);\r\n LatexIT.render($node);\r\n\r\n // Post time-to-live updating\r\n $node.find('.post-ttl:not(._inserted_)').each(function() {\r\n let $this = $(this)\r\n $this.addClass('_inserted_')\r\n let iv\r\n , updateTTL = () => {\r\n if ($this.length) {\r\n NTP.getServerTime().then(srvTime => {\r\n let ms_left = $this.data('deleted-timestamp')*1000 - srvTime\r\n if (ms_left >= 0) {\r\n let min_left = Math.round(ms_left / 60000)\r\n , h_left = Math.floor(min_left / 60)\r\n min_left -= h_left * 60\r\n $this.text(`${_.padLeft(h_left, 2, '0')}:${_.padLeft(min_left, 2, '0')}`)\r\n }\r\n else {\r\n $.get(document.forms.delform.action) // call board.php to force delete posts\r\n deleteItems([{action: 'delete_post', id: $this.parents('.posthead').find('.reflink > a:not(.shl)').text()}], false, updater.markOnly)\r\n clearInterval(iv)\r\n }\r\n })\r\n }\r\n else\r\n clearInterval(iv)\r\n }\r\n iv = setInterval(updateTTL, 30 * 1000)\r\n updateTTL()\r\n })\r\n}\r\n\r\nconst chpok = {\r\n init: function(atLoad = false) {\r\n document.body.insertAdjacentHTML('beforeend', `<audio id=\"chpok-audio\" style=\"display:none\">\r\n <source src=\"${ku_boardspath}/images/chpok.mp3\">\r\n <source src=\"${ku_boardspath}/images/chpok.ogg\">\r\n </audio>`)\r\n this.initiated = true\r\n this.audio = document.querySelector('#chpok-audio')\r\n },\r\n play: function() {\r\n if (! this.initiated)\r\n this.init()\r\n // In chrome the sound won't play, causing a DOM exception, if a user hasn't clicked a page at least once (and it's unfixable)\r\n this.audio.play().catch(e => _.noop)\r\n }\r\n}\r\n\r\nconst updater = {\r\n newThreads: [],\r\n init: function () {\r\n this.socket = io.connect(liveupd_api);\r\n let subscribeTo\r\n if(ispage) {\r\n subscribeTo = [liveupd_sitename+this_board_dir+':threads'];\r\n $('.op .reflink').children(':last-child').each(function() { \r\n subscribeTo.push(liveupd_sitename+this_board_dir+':'+$(this).text());\r\n });\r\n }\r\n else {\r\n subscribeTo = [liveupd_sitename+$('input[name=board]').val()+':'+$('input[name=replythread]').val()];\r\n _l.noNewPosts += (\"<br>\" + _l.threadUpdationAutomatically)\r\n }\r\n this.socket\r\n .on('update', this.dispatch.bind(this))\r\n .emit('subscribe', subscribeTo)\r\n Object.defineProperty(this, 'markOnly', {\r\n value: true,\r\n writable: false,\r\n configurable: false\r\n })\r\n },\r\n dispatch: function(data) {\r\n if (! data.action) {\r\n pups.warn('Event with unspecified action, see console')\r\n console.warn(data)\r\n return\r\n }\r\n if (data.action == 'new_thread') {\r\n // Do nothing if it is my post\r\n if (data.token && Ajax.postToken && data.token==Ajax.postToken) return;\r\n this.notifyAboutNewThreads(data)\r\n }\r\n if (data.action == 'new_reply') {\r\n // Do nothing if it is my post\r\n if (data.token && Ajax.postToken && data.token==Ajax.postToken) return;\r\n if (ispage) {\r\n this.notifyAboutNewRepliesOnBoardPage(data)\r\n }\r\n else {\r\n this.showNewReplies(data)\r\n }\r\n }\r\n if (data.action == 'delete') {\r\n // Do nothing if it is my post\r\n if (data.token && Ajax.delToken && data.token==Ajax.delToken) return;\r\n deleteItems(data.items, false, this.markOnly)\r\n }\r\n },\r\n showNewReplies: function(data) {\r\n newposts.get({\r\n silent: true,\r\n timestamp: data.timestamp,\r\n onSuccess: () => {\r\n if (! document.hasFocus())\r\n chpok.play()\r\n }\r\n })\r\n },\r\n notifyAboutNewThreads: function(data) {\r\n this.newThreads.push(data.new_thread_id);\r\n if (! document.hasFocus()) {\r\n scrollAnchor.save('autoload', '.postnode', window, 'v')\r\n this.showNewThreads(() => scrollAnchor.restore('autoload'))\r\n chpok.play()\r\n }\r\n else if(!$('#wild_thread_appeared').length) {\r\n $('.postarea').after('<a class=\"xlink\" onclick=\"updater.showNewThreads();return false\" id=\"wild_thread_appeared\"><span class=\"salient\">'+_l.newThreadsAvailable+'</span><hr /></a>')\r\n }\r\n },\r\n notifyAboutNewRepliesOnBoardPage: function(data) {\r\n if (! this.repliesOnBoardPage[data.room])\r\n this.repliesOnBoardPage[data.room] = [data.reply_id]\r\n else\r\n this.repliesOnBoardPage[data.room].push(data.reply_id)\r\n this.refreshNewRepliesCount(data.room, data.timestamp)\r\n },\r\n refreshNewRepliesCount(thread, timestamp=null) {\r\n let count = (this.repliesOnBoardPage[thread] || []).length\r\n , $target = $('[id^=replies'+thread+']')\r\n , $counter = $target.find('.fresh-replies')\r\n let clearCounter = () => this.repliesOnBoardPage[thread] = []\r\n if (count) {\r\n if (! $counter.length) {\r\n function loadNewReplies(callback) {\r\n newposts.get({\r\n threadid: thread,\r\n onSuccess: () => {\r\n clearCounter()\r\n if (callback)\r\n callback()\r\n },\r\n onError: (e) => {\r\n console.error(e)\r\n pups.err(_l.oops)\r\n },\r\n silent: true,\r\n timestamp: timestamp\r\n })\r\n // var after = /\\d+/.exec($target.find('.reply').last().attr('id')); // What was this for?\r\n }\r\n if (! document.hasFocus()) {\r\n scrollAnchor.save('autoload', '.postnode', window, 'v')\r\n loadNewReplies(() => scrollAnchor.restore('autoload'))\r\n chpok.play()\r\n }\r\n else {\r\n let $freshReplies = $target.append('<a href=\"/'+ this_board_dir +'/res/'+thread+'.html\" class=\"salient fresh-replies\">'+_l.newReplies+': <span class=\"fresh-replies-number\"></span></a>')\r\n .find('.fresh-replies')\r\n , freshReplies = $freshReplies[0]\r\n $freshReplies.click(function(e) {\r\n e.preventDefault()\r\n if ($freshReplies.__alreadyLoading)\r\n return;\r\n freshReplies.__alreadyLoading = true\r\n freshReplies.insertAdjacentHTML('afterBegin', '<div class=\"spinner\"></div>')\r\n loadNewReplies(() => $(freshReplies).remove())\r\n })\r\n }\r\n }\r\n $target.find('.fresh-replies-number').text(count)\r\n }\r\n else if($counter.length) {\r\n $counter.remove()\r\n clearCounter()\r\n }\r\n },\r\n repliesOnBoardPage: {},\r\n showNewThreads: function(callback) {\r\n let $wta = $('#wild_thread_appeared')\r\n if ($wta.length)\r\n $wta.find('span')[0].insertAdjacentHTML('afterBegin', '<div class=\"spinner\"></div>')\r\n this.newThreads.forEach(thr => {\r\n HTMLoader.getThread(this_board_dir, thr, null, (err, posts) => {\r\n if (err)\r\n return pups.err(_l.noDataLoaded)\r\n $wta.remove()\r\n document.querySelector('#delform').insertAdjacentHTML('afterBegin', `\r\n <div id=\"thread${thr}${this_board_dir}\">\r\n ${posts}\r\n <div id=\"replies${thr}${this_board_dir}\" class=\"replies\"></div>\r\n </div>\r\n <br clear=\"left\" />\r\n <hr />`);\r\n this.socket.emit('subscribe', liveupd_sitename+this_board_dir+':'+thr)\r\n if (callback) \r\n callback()\r\n })\r\n })\r\n this.newThreads = [];\r\n }\r\n}\r\n\r\nfunction deleteItems(items, bySelf=true, markOnly=false) {\r\n let postsDeleted = []\r\n , postErrors = []\r\n , insideDeletedThread\r\n , filesDeleted = []\r\n , fileErrors = []\r\n\r\n items.forEach(item => {\r\n if (item.action == 'delete_post' || item.itemtype == 'post') {\r\n if (bySelf && !item.success) {\r\n postErrors.push(item)\r\n return\r\n }\r\n insideDeletedThread = false\r\n let $thread = $(`#delform [id^=thread${item.id}]`)\r\n , $reply = $(`#delform [id^=reply${item.id}]`)\r\n if ($thread.length) {\r\n if (markOnly || !ispage) {\r\n $thread.addClass('deleted')\r\n .find('.reply, figure').addClass('deleted')\r\n if (!ispage) {\r\n insideDeletedThread = true\r\n $('form[name=postform], .qrl, #rswapper').remove()\r\n pups.warn(`${_l.thread} ${_l.deleted}!`, {time: 0})\r\n }\r\n }\r\n else {\r\n $thread.prev().remove() //unhidethread\r\n $thread.next().remove() //br\r\n $thread.next().remove() //hr\r\n $thread.remove()\r\n }\r\n }\r\n else if ($reply.length) {\r\n if (markOnly)\r\n $reply.addClass('deleted')\r\n else {\r\n let $reply = $(`#delform [id^=reply${item.id}]`)\r\n if ($reply.length) {\r\n $reply.parents('.postnode').remove()\r\n }\r\n }\r\n }\r\n else {\r\n if (updater.repliesOnBoardPage[item.thread_id])\r\n updater.repliesOnBoardPage[item.thread_id] = updater.repliesOnBoardPage[item.thread_id].filter(i => i!=item.id)\r\n updater.refreshNewRepliesCount(item.thread_id)\r\n }\r\n if (!insideDeletedThread)\r\n postsDeleted.push('#'+item.id)\r\n }\r\n\r\n if (item.action == 'delete_file' || item.itemtype == 'file') {\r\n if (bySelf && !item.success) {\r\n fileErrors.push(item)\r\n return\r\n }\r\n let $fig = $(`figure[data-fileid=${item.id}]`)\r\n if (markOnly)\r\n $fig.addClass('deleted')\r\n else\r\n $fig.replaceWith(`<div class=\"nothumb\">${_l.fileRemoved}</div>`)\r\n filesDeleted.push('#'+item.id)\r\n }\r\n\r\n if (item.action == 'delete_thread') { // A notification about deleted\r\n updater.newThreads = updater.newThreads.filter(i => i!=item.id)\r\n if (! updater.newThreads.length)\r\n $('#wild_thread_appeared').remove();\r\n pups.info(`${_l.thread} ${item.id} ${_l.deleted}.`)\r\n }\r\n })\r\n\r\n if (! $('.multidel').is(\":checked\") && ! $('.multidel.delete-file').is(\":checked\")) {\r\n $('.userdelete').removeClass('ud-active')\r\n $('body').removeClass('select-multiple')\r\n }\r\n \r\n if (postsDeleted.length) {\r\n let msg = postsDeleted.length > 1 ?\r\n `${_l.posts} ${postsDeleted.join(', ')} ${_l.deletedMulti}.`\r\n :`${_l.post} ${postsDeleted[0]} ${_l.deleted}.`\r\n pups[bySelf ? 'succ' : 'info'](msg, {time: 2 + postsDeleted.length})\r\n }\r\n if (filesDeleted.length) {\r\n let msg = filesDeleted.length > 1 ?\r\n `${_l.files} ${filesDeleted.join(', ')} ${_l.deletedMulti}.`\r\n :`${_l.file} ${filesDeleted[0]} ${_l.deleted}.`\r\n pups[bySelf ? 'succ' : 'info'](msg, {time: 2 + filesDeleted.length})\r\n }\r\n if (postErrors.length)\r\n pups.err(postErrors.map(err => `${_l.post} #${err.id}: ${err.message}`).join('<br>'), \r\n {time: 2 + postErrors.length})\r\n if (fileErrors.length) {\r\n pups.err(fileErrors.map(err => `${_l.file} #${err.id}: ${err.message}`).join('<br>'), \r\n {time: 2 + fileErrors.length})\r\n }\r\n}\r\n\r\nif (+localStorage['localmod']) {\r\n kumod_set = true\r\n}\r\nelse {\r\n let kumod = getCookie('kumod');\r\n if (kumod !== '') {\r\n if (kumod === 'allboards')\r\n kumod_set = true\r\n else\r\n kumod_set = in_array(this_board_dir, kumod.split('|'));\r\n }\r\n}\r\n\r\nfunction expandwebm($mov, ev) {\r\n //good luck understanding this shitcode :^)\r\n let $reply = $mov.parents('.reply')\r\n if($mov.data('expanded') !== '1') {\r\n ev.preventDefault();\r\n var movieurl = $mov.attr('href'), imgh = $mov.data('height'), imgw = $mov.data('width'), dt = $mov.data('thumb'), postnum = $mov.data('id');\r\n var uid = '_vframe_'+randomString(5)+(new Date().getTime());\r\n $mov.replaceWith(function() {\r\n return '<span id=\"'+uid+'\" data-thumb=\"'+dt+'\" data-width=\"'+imgw+'\"\" data-height=\"'+imgh+'\" data-href=\"'+movieurl+'\">'+this.innerHTML + '</span>';\r\n });\r\n $mov = $(\"#\"+uid);\r\n $mov.find('img').hide();\r\n var video = $mov.find('video').show(), notice = '';\r\n if(!video.length) {\r\n $mov.find('.playable-thumb').append('<video class=\"thumb\" src=\"'+movieurl+'\" controls loop autoplay height=\"'+imgh+'\" width=\"'+imgw+'\"></video>').promise().done(function() {\r\n video = $mov.find('video');\r\n });\r\n }\r\n else video.get(0).play();\r\n if(!Settings.expandImgFull()) {\r\n var offset = 50, offset_el = video[0];\r\n var max_w = document.documentElement?document.documentElement.clientWidth : document.body.clientWidth;\r\n while (offset_el != null) {\r\n offset += offset_el.offsetLeft;\r\n offset_el = offset_el.offsetParent;\r\n }\r\n var new_w = max_w - offset;\r\n if(imgw > new_w) {\r\n var ratio = imgw / imgh;\r\n var zoom = 1 - new_w / imgw;\r\n var new_h = new_w / ratio;\r\n video.width(new_w);\r\n video.height(new_h);\r\n notice = _l.videoDownscaledBy + \" \" + Math.round(zoom*100) + \"% \"+_l.toFit;\r\n }\r\n }\r\n let $fig = $mov.parents('figure');\r\n if (! $fig.hasClass('unwrapped')) {\r\n $fig.addClass('unwrapped')\r\n }\r\n let $fsz = $mov.parent().find('.filesize');\r\n if (! $fsz.find('.collapse-btn').length) {\r\n $fsz.append(`\r\n <button title=\"${_l.collapse}\" class=\"emb-button collapse-video\">\r\n ${makeIcon('shrink', 'b-icon')}\r\n </button>`);\r\n $mov.parent().find('.collapse-video').click(function() {\r\n $fig.removeClass('unwrapped')\r\n var uid = '_vframe_'+randomString(5)+(new Date().getTime());\r\n $mov.replaceWith(function() {\r\n return '<a class=\"movie\" id=\"'+uid+'\" data-thumb=\"'+dt+'\" data-width=\"'+imgw+'\"\" data-height=\"'+imgh+'\" href=\"'+movieurl+'\">'+this.innerHTML + '</a>';\r\n }).data('expanded', '0');\r\n $mov = $(\"#\"+uid);\r\n $mov.find('video').hide()[0].pause();\r\n $mov.find('img').show();\r\n $(this).remove();\r\n $mov.parents('.reply').removeClass('reply-expanded')\r\n return false;\r\n });\r\n }\r\n $mov.parents('.reply').addClass('reply-expanded')\r\n }\r\n}\r\n\r\nfunction checknamesave() {\r\n var checkd;\r\n if(getCookie('name') != '') {\r\n checkd = true;\r\n } else {\r\n checkd = false;\r\n }\r\n var doc = document.getElementById('save');\r\n if (doc != null) doc.checked = checkd;\r\n}\r\nfunction checkgotothread() {\r\n var checkd;\r\n if(getCookie('tothread') == 'on') {\r\n checkd = true;\r\n } else {\r\n checkd = false;\r\n }\r\n $(\"#gotothread\").attr('checked', checkd);\r\n}\r\n\r\nfunction navigatepages (event) {\r\n if (!document.getElementById) return;\r\n if (is_entering) return;\r\n if (window.event) event = window.event;\r\n\r\n if (event.ctrlKey)\r\n {\r\n\r\n var link = null;\r\n var href = null;\r\n\r\n var docloc = document.location.toString();\r\n if (docloc.indexOf('/res/') != -1) {\r\n if( (event.keyCode ? event.keyCode : event.which ? event.which : null) == 13 )\r\n $('textarea[name=\"message\"]:focus').parents('form').submit();\r\n }\r\n else {\r\n if (docloc.indexOf('.html') == -1 || docloc.indexOf('board.html') != -1) {\r\n var page = 0;\r\n var docloc_trimmed = docloc.substr(0, docloc.lastIndexOf('/') + 1);\r\n } else {\r\n var page = docloc.substr((docloc.lastIndexOf('/') + 1));\r\n page = (+page.substr(0, page.indexOf('.html')));\r\n var docloc_trimmed = docloc.substr(0, docloc.lastIndexOf('/') + 1);\r\n }\r\n if (page == 0) {\r\n var docloc_valid = docloc_trimmed;\r\n } else {\r\n var docloc_valid = docloc_trimmed + page + '.html';\r\n }\r\n let match;\r\n if(match=/#s([0-9]+)/.exec(docloc)) {\r\n var relativepost = (+match[1]);\r\n } else {\r\n var relativepost = -1;\r\n }\r\n var maxthreads = 0;\r\n while(document.getElementsByName('s'+(++maxthreads)).length>0){}\r\n switch (event.keyCode ? event.keyCode : event.which ? event.which : null)\r\n {\r\n case 13: // ctrl+Enter\r\n $('textarea[name=\"message\"]:focus').parents('form').submit();\r\n break;\r\n\r\n case 0x25: // ctrl+left\r\n link = document.getElementById('prevPage');\r\n break;\r\n case 0x27: // ctrl+right\r\n link = document.getElementById('nextPage');\r\n break;\r\n\r\n case 0x28: // ctrl+down\r\n if (relativepost == maxthreads - 1) {\r\n break; //var newrelativepost = 0;\r\n } else {\r\n var newrelativepost = relativepost + 1;\r\n }\r\n href = docloc_valid + '#s' + newrelativepost;\r\n break;\r\n\r\n case 0x26: // ctrl+up\r\n if (relativepost == -1 || relativepost == 0) {\r\n break; //var newrelativepost = maxthreads - 1;\r\n } else {\r\n var newrelativepost = relativepost - 1;\r\n }\r\n href = docloc_valid + '#s' + newrelativepost;\r\n break;\r\n\r\n case 0x24: // ctrl+home\r\n document.location = docloc_trimmed;\r\n break;\r\n }\r\n\r\n if (link && link.action) document.location = link.action;\r\n if (href) document.location.href = href;\r\n }\r\n }\r\n}\r\nif (window.document.addEventListener) {\r\n window.document.addEventListener(\"keydown\", navigatepages, false);\r\n} else {\r\n window.document.attachEvent(\"onkeydown\", navigatepages);\r\n}\r\n\r\nNodeList.prototype.forEach = Array.prototype.forEach;\r\n\r\n// More efficient parent finder\r\nElement.prototype._findParent = function(selector) {\r\n let node = this\r\n while(node && !node.matches(selector)) {\r\n node = node.parentNode\r\n if (! node.matches) return null;\r\n }\r\n return node\r\n}\r\n\r\nvar replyMap = {\r\n showReplies: function(root=document) {\r\n root.querySelectorAll('.postnode').forEach(post => {\r\n let n = post.querySelector('.reflink a:last-child').innerHTML\r\n , msg = post.querySelector('.postmessage')\r\n , repliesContainer = post.querySelector('.replieslist')\r\n if (this.posts[n]) {\r\n this.posts[n].container = repliesContainer\r\n }\r\n else {\r\n this.posts[n] = {\r\n container: repliesContainer,\r\n replies: []\r\n }\r\n }\r\n let links = msg.querySelectorAll(`a[class^=ref\\\\|${this_board_dir}]`)\r\n if (links.length) links.forEach(link => {\r\n let linkData = link.className.split(' ')[0].split('|')\r\n , linkN = linkData[3]\r\n , threadID = link._findParent('div[id^=thread]').dataset['threadid']\r\n , href = `/${linkData[1]}/res/${threadID}.html#${n}`\r\n , htm = `<a class=\"ref-reply\" href=\"${href}\">&gt;&gt;${n}</a>`\r\n if (! threadID) console.warn('what?')\r\n if (this.posts[linkN]) {\r\n if (! _.includes(this.posts[linkN].replies, htm)) {\r\n this.posts[linkN].replies.push(htm)\r\n }\r\n }\r\n else {\r\n this.posts[linkN] = {\r\n replies: [htm]\r\n }\r\n }\r\n this.posts[linkN].skip = false\r\n })\r\n })\r\n _.each(this.posts, post => {\r\n if (!post.skip && post.replies.length && post.container) {\r\n post.container.innerHTML = `${_l.replies}: ${post.replies.join(', ')}`\r\n post.skip = true\r\n }\r\n })\r\n },\r\n posts: {}\r\n}\r\n\r\nvar scrollAnchor = {\r\n save: function(id, elements, parent, dimensions) {\r\n parent = parent || window\r\n dimensions = dimensions || 'vh'\r\n let mid = [window.innerWidth / 2, window.innerHeight / 2]\r\n , elMap = []\r\n , parentBCR = (parent != window)\r\n ? parent.getBoundingClientRect()\r\n : {\r\n left: 0,\r\n top: 0,\r\n right: window.innerWidth,\r\n bottom: window.innerHeight\r\n }\r\n if (\r\n parent != window\r\n &&\r\n (\r\n (parentBCR.left <= 0 && parentBCR.right <= 0)\r\n ||\r\n (parentBCR.top <= 0 && parentBCR.bottom <= 0)\r\n ||\r\n parentBCR.left >= window.innerWidth\r\n ||\r\n parentBCR.top >= window.innerHeight\r\n )\r\n ) {\r\n mid = [parentBCR.left + parentBCR.width/2, parentBCR.top + parentBCR.height/2]\r\n }\r\n let elems = (parent == window ? document : parent).querySelectorAll(elements)\r\n if (! elems.length) return;\r\n elems.forEach(function (el) {\r\n let bcr = el.getBoundingClientRect()\r\n , relativeVisibleWidth = Math.pos(bcr.width - (Math.pos(parentBCR.left - bcr.left) + Math.pos(bcr.right - parentBCR.right))) / bcr.width\r\n , relativeVisibleHeight = Math.pos(bcr.height - (Math.pos(parentBCR.top - bcr.top) + Math.pos(bcr.bottom - parentBCR.bottom))) / bcr.height\r\n , dx = Math.abs(mid[0] - (bcr.left + bcr.width/2))\r\n , dy = Math.abs(mid[1] - (bcr.top + bcr.height/2))\r\n elMap.push({\r\n el: el,\r\n primaryVisibility: dimensions[0] == 'h' ? relativeVisibleWidth : relativeVisibleHeight,\r\n secondaryVisibility: dimensions[0] == 'v' ? relativeVisibleWidth : relativeVisibleHeight,\r\n primaryOffset: dimensions[0] == 'h' ? dx : dy,\r\n secondaryOffset: dimensions[0] == 'v' ? dx : dy\r\n })\r\n })\r\n elMap.sort((a, b) => {\r\n if (b.primaryVisibility !== a.primaryVisibility) {\r\n return b.primaryVisibility - a.primaryVisibility\r\n }\r\n else if (dimensions.length > 1 && b.secondaryVisibility !== a.secondaryVisibility) {\r\n return b.secondaryVisibility - a.secondaryVisibility\r\n }\r\n else if (a.primaryOffset !== b.primaryOffset) {\r\n return a.primaryOffset - b.primaryOffset\r\n }\r\n else if (dimensions.length > 1) {\r\n return a.secondaryOffset - b.secondaryOffset\r\n }\r\n })\r\n let anchor = elMap[0].el\r\n , bcrBefore = anchor.getBoundingClientRect()\r\n this.saved[id] = {\r\n anchor: anchor,\r\n left: bcrBefore.left,\r\n top: bcrBefore.top,\r\n parent: parent,\r\n dimensions: dimensions\r\n }\r\n },\r\n restore: function(id) {\r\n let loaded = this.saved[id]\r\n if (! loaded) return;\r\n window.requestAnimationFrame(() => {\r\n let bcrAfter = loaded.anchor.getBoundingClientRect()\r\n loaded.parent.scrollBy(loaded.dimensions.indexOf('h') !== (-1) ? bcrAfter.left - loaded.left : 0, loaded.dimensions.indexOf('v') !== (-1) ? bcrAfter.top - loaded.top : 0)\r\n })\r\n },\r\n saved: {}\r\n}\r\nMath.pos = x => x >= 0 ? x : 0;\r\n\r\n// requestAnimationFrame polyfill https://gist.github.com/paulirish/1579671\r\n(function() {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n/// overlay menu\r\nvar menu_current = '';\r\nvar menu_last = '';\r\nfunction menu_show(id)\r\n{\r\n if(menu_current != '')\r\n {\r\n var dl = (id == '_off_') ? 125 : 0;\r\n $('#'+menu_current).delay(dl).slideUp(100);\r\n menu_last = menu_current;\r\n }\r\n if (id != '') {\r\n if (menu_last == id && typeof $('#' + id).queue() !== 'undefined' && $('#' + id).queue().length > 0) {\r\n $('#' + id).clearQueue();\r\n } else {\r\n $('#' + id).slideDown(150);\r\n }\r\n }\r\n menu_current = id;\r\n}\r\nfunction menu_pin() {\r\n if(document.getElementById('overlay_menu').style.position == 'absolute') {\r\n document.getElementById('overlay_menu').style.position = 'fixed';\r\n Cookie('ku_menutype', 'fixed', 365);\r\n } else {\r\n document.getElementById('overlay_menu').style.position = 'absolute';\r\n Cookie('ku_menutype', 'absolute', 365);\r\n }\r\n}\r\n\r\nfunction toggle_oldmenu(on=null) {\r\n if (on===null)\r\n on = getCookie('ku_oldmenu') != 'yes'\r\n injector.inject('oldmenu', `#${on ? 'overlay_menu' : 'head_oldmenu'} { display: none }`)\r\n if (on && !document.getElementById('head_oldmenu')) {\r\n document.getElementById('boardlist_header').insertAdjacentHTML('afterBegin', `<div id=\"head_oldmenu\" class=\"boardlist\">\r\n ${document.getElementById('ns_oldmenu').innerText}\r\n <a href=\\\"#\\\" onclick=\\\"javascript:toggle_oldmenu();\\\" class=\"bl-sect\" style=\"order:1\">[overlay]</a>\r\n </div>`)\r\n }\r\n Cookie('ku_oldmenu', on ? 'yes' : 'no', 90); \r\n}\r\n\r\nvar LatexIT = {\r\n mode : 'gif',\r\n init : function() {\r\n if(document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"))\r\n this.mode='svg';\r\n },\r\n odc: \"javascript:LatexIT.replaceWithSrc(this);\",\r\n dcls: \"Double click to show source\",\r\n\r\n pre : function(eqn) {\r\n var txt=eqn.innerHTML;\r\n if ( !txt.match(/<img.*?>/i) && !txt.match(/<object.*?>/i))\r\n {\r\n //Clean code\r\n txt=txt.replace(/<br>/gi,\"\").replace(/<br \\/>/gi,\"\").replace(/&amp;/mg,'&');\r\n var atxt = \"[tex]\"+txt+\"[/tex]\";\r\n txt=escape(txt.replace(/\\\\/mg,'\\\\'));\r\n // Add coloring according to style of text\r\n var c = eval(\"LatexIT.normalize\"+$(eqn).parent().css('color'));\r\n var extxt = \"{\\\\color[rgb]{\"+c.r+','+c.g+','+c.b+\"}\"+txt+\"}\";\r\n txt = \" <img src=\\\"http://latex.codecogs.com/\"+this.mode+\".latex?\"+ extxt +\"\\\" title=\\\"\"+this.dcls+\"\\\" alt=\\\"\"+atxt+\"\\\" ondblclick=\\\"\"+this.odc+\"\\\" border=\\\"0\\\" class=\\\"latex\\\" /> \";\r\n }\r\n return txt;\r\n },\r\n\r\n replaceWithSrc: function(eqn) {\r\n var txt = $(eqn).attr('alt');\r\n $(eqn).parent().html(txt);\r\n },\r\n\r\n render : function($scope) {\r\n var scope = (typeof $scope === 'undefined') ? window.document : $scope[0];\r\n var eqn = scope.getElementsByTagName(\"*\");\r\n for (var i=0; i<eqn.length; i++) {\r\n if(eqn[i].getAttribute(\"lang\") == \"latex\" || eqn[i].getAttribute(\"xml:lang\") == \"latex\")\r\n eqn[i].innerHTML = this.pre(eqn[i]);\r\n }\r\n },\r\n\r\n normalizergb : function(r, g, b) {\r\n return {r: (r/255).toFixed(3), g: (g/255).toFixed(2), b: (b/255).toFixed(2) }\r\n },\r\n normalizergba : function(r, g, b, a) {\r\n return this.normalizergb(r, g, b);\r\n }\r\n};\r\n\r\nfunction in_array(needle, haystack) {\r\n return (typeof haystack !== 'object') ? (needle === haystack) : _.includes(haystack, needle)\r\n}\r\n\r\n(function($) {\r\n $.fn.drags = function(opt) {\r\n opt = $.extend({handle:\"\",cursor:\"move\"}, opt);\r\n\r\n if(opt.handle === \"\") {\r\n var $el = this;\r\n } else {\r\n var $el = this.find(opt.handle);\r\n }\r\n\r\n return $el.css('cursor', opt.cursor).on(\"mousedown\", function(e) {\r\n if(opt.handle === \"\") {\r\n var $drag = $(this).addClass('draggable');\r\n } else {\r\n var $drag = $(this).addClass('active-handle').parent().addClass('draggable');\r\n }\r\n var z_idx = $drag.css('z-index'),\r\n drg_h = $drag.outerHeight(),\r\n drg_w = $drag.outerWidth(),\r\n pos_y = $drag.offset().top + drg_h - e.pageY,\r\n pos_x = $drag.offset().left + drg_w - e.pageX;\r\n $drag.css('z-index', 1000).parents().on(\"mousemove\", function(e) {\r\n $('.draggable').offset({\r\n top:e.pageY + pos_y - drg_h,\r\n left:e.pageX + pos_x - drg_w\r\n }).on(\"mouseup\", function() {\r\n $(this).removeClass('draggable').css('z-index', z_idx);\r\n });\r\n });\r\n e.preventDefault(); // disable selection\r\n }).on(\"mouseup\", function() {\r\n if(opt.handle === \"\") {\r\n $(this).removeClass('draggable');\r\n } else {\r\n $(this).removeClass('active-handle').parent().removeClass('draggable');\r\n }\r\n });\r\n }\r\n $.fn.dragsOff = function(opt) {\r\n opt = $.extend({handle:\"\",cursor:\"default\"}, opt);\r\n\r\n if(opt.handle === \"\") {\r\n var $el = this;\r\n $(this).removeClass('draggable');\r\n } else {\r\n var $el = this.find(opt.handle);\r\n $(this).removeClass('active-handle')\r\n .parent()\r\n .removeClass('draggable');\r\n }\r\n return $el.css('cursor', \"default\")\r\n .off(\"mousedown\")\r\n .off(\"mouseup\")\r\n .off(\"mousemove\");\r\n }\r\n $.fn.pin = function() {\r\n if(this.css('position') !== 'fixed') {\r\n var abs = {\r\n top: this.position().top - $(document).scrollTop(),\r\n left: this.position().left - $(document).scrollLeft()\r\n }\r\n this.css({\r\n position: 'fixed',\r\n left: abs.left,\r\n top: abs.top\r\n });\r\n this.find('.pinner').removeClass('pinned').addClass('unpinned');\r\n localStorage['pinForm'] = 0;\r\n }\r\n else {\r\n var abs = {\r\n top: this.position().top + $(document).scrollTop(),\r\n left: this.position().left + $(document).scrollLeft()\r\n }\r\n this.css({\r\n position: 'absolute',\r\n left: abs.left,\r\n top: abs.top\r\n });\r\n this.find('.pinner').removeClass('unpinned').addClass('pinned');\r\n localStorage['pinForm'] = 1;\r\n }\r\n }\r\n})(jQuery);\r\n\r\nfunction unwrapEmbed($fig) {\r\n $fig.addClass('unwrapped')\r\n let $iw = $fig.find('.emb-iframe-wrapper')\r\n if ($iw.data('h') > $iw.data('w'))\r\n $iw.addClass('vertical-video')\r\n $iw.css({\r\n paddingBottom: `${($iw.data('h')/$iw.data('w'))*100}%`\r\n })\r\n let code = $iw.data('code')\r\n , iframeOptions = `frameborder=\"0\" scrolling=\"no\" webkitallowfullscreen=\"\" mozallowfullscreen=\"\" allowfullscreen=\"\"`\r\n if ($iw.data('site') == \"Youtube\") {\r\n let start = $iw.data('startraw')\r\n $iw.append(`<iframe src=\"https://www.youtube-nocookie.com/embed/${code}?autoplay=1${start ? `&start=${start}` : ''}\" ${iframeOptions}></iframe>`)\r\n }\r\n if ($iw.data('site') == \"Vimeo\") {\r\n let start = $iw.data('start')\r\n $iw.append(`<iframe src=\"//player.vimeo.com/video/${code}?badge=0&autoplay=1${start ? `#t=${start}` : ''}\" ${iframeOptions}></iframe>`)\r\n }\r\n if ($iw.data('site') == \"Coub\")\r\n $iw.append(`<iframe src=\"http://coub.com/embed/${code}?muted=false&autostart=true&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false\" ${iframeOptions}></iframe>`)\r\n let $ew = $fig.find('.embed-wrap')\r\n if (! $ew.find('.collapse-video').length)\r\n $fig.find('.embed-wrap').append(`\r\n <button title=\"${_l.collapse}\" class=\"emb-button collapse-video\">\r\n ${makeIcon('shrink')}\r\n </button>`)\r\n}\r\n\r\nfunction wrapEmbed($fig) {\r\n $fig.removeClass('unwrapped')\r\n $fig.find('.emb-iframe-wrapper').empty()\r\n}\r\n\r\n/*function clearfields($form, onlycaptcha) {\r\n if(typeof onlycaptcha === 'undefined') onlycaptcha = false;\r\n if(!onlycaptcha) {\r\n $form.find('[name=\"message\"]').val('');\r\n $form.find('[name=\"captcha\"]').val('');\r\n $form.find('[name=\"subject\"]').val('');\r\n $form.find('[name=\"imagefile\"]').val('');\r\n $form.find('[name=\"name\"]').val('');\r\n $form.find('[name=\"embed\"]').val('');\r\n $form.find('[name=\"token\"]').val(randomString());\r\n }\r\n if(!dcxt.enabled) {\r\n $('.captchawrap').stop();\r\n clearTimeout(rottencaptcha);\r\n rotCaptcha();\r\n }\r\n}*/\r\n\r\nfunction resetForm(form) {\r\n let fields = form.querySelectorAll('input[type=text]:not([name=name]), input[type=file], textarea')\r\n Array.prototype.forEach.call(fields, field => field.value = null)\r\n Array.prototype.forEach.call(form.querySelectorAll('.site-indicator'), i => i.remove())\r\n}\r\n\r\nvar injector = {\r\n inject: function(alias, css) {\r\n var id = `injector:${alias}`\r\n var existing = document.getElementById(id)\r\n if (existing) {\r\n existing.innerHTML = css\r\n return\r\n }\r\n var head = document.head || document.getElementsByTagName('head')[0]\r\n , style = document.createElement('style')\r\n style.type = 'text/css'\r\n style.id = id\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = css\r\n } else {\r\n style.appendChild(document.createTextNode(css))\r\n }\r\n head.appendChild(style)\r\n },\r\n remove: function(alias) {\r\n var id = `injector:${alias}`\r\n var style = document.getElementById(id)\r\n if (style) {\r\n var head = document.head || document.getElementsByTagName('head')[0]\r\n if (head)\r\n head.removeChild(document.getElementById(id))\r\n }\r\n }\r\n}\r\n\r\nfunction randomString(length=10, chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {\r\n let result = ''\r\n for (let i = length; i > 0; --i) \r\n result += chars[Math.round(Math.random() * (chars.length - 1))]\r\n return result\r\n}\r\n\r\nfunction add_mob_menu() {\r\n let r = 20\r\n , pos = 10\r\n , delay = 300\r\n $('#overlay_menu').hide()\r\n document.body.insertAdjacentHTML('afterbegin', `<div id=\"mobile-menu\"><div id=\"mobile-menu-contents\"></div></div>`)\r\n let mm = document.querySelector('#mobile-menu-contents')\r\n , $mmw = $('#mobile-menu')\r\n , htm = ''\r\n $('<div id=\"mmb-_options\" style=\"display: none\"></div>').append($('#ms-_options')).appendTo($(mm))\r\n $mmw.append(`<div id=\"mm-toggle\">\r\n <div class=\"mm-bars\"></div>\r\n <div id=\"mm-circle\"></div>\r\n </div>`)\r\n let cats = boards10.list\r\n cloud20.getBoards().then(b20 => {\r\n cats.sort((a,b) => +a.order > +b.order)\r\n .push({\r\n id: '20',\r\n name: '2.0',\r\n boards: b20\r\n })\r\n cats.forEach((cat, ix) => {\r\n if (cat.boards) {\r\n htm += `<a href=\"#\" class=\"mm-item mm-cat\" data-mmbx=\"${ix}\">${cat.name}</a>\r\n <span class=\"mm-boards\" id=\"mmb-${ix}\">`\r\n cat.boards.forEach(b => {\r\n b.dir = b.dir || b.name\r\n htm += `<a class=\"mm-item mm-brd\" href=\"/${b.dir}\">/${b.dir}/ — ${b.desc}</a>`\r\n })\r\n htm += '</span>'\r\n }\r\n })\r\n htm += `<a href=\"#\" class=\"mm-item mm-toggle-options\" onclick=\"\r\n $('.mm-boards').toggle(false); \r\n $('#mmb-_options').slideToggle('fast');\r\n $('.mmc-expanded').removeClass('mmc-expanded')\r\n return false\r\n \">Options</a>`\r\n mm.insertAdjacentHTML('afterBegin', `${htm}`)\r\n $('#mm-toggle').click(function() {\r\n if ($mmw.hasClass('mm-expanded')) return;\r\n $mmw.addClass('mm-expanded')\r\n let bcr = $mmw[0].getBoundingClientRect()\r\n , x = bcr.width - r - pos // - radius/2, -position\r\n , y = bcr.height - r - pos // - radius/2, -position\r\n , R = Math.sqrt(x*x + y*y) // See, math is not useless after all\r\n , scale = Math.ceil(R / r)\r\n $('#mm-circle').css({'transform': `scale(${scale})`})\r\n $(mm).css({\r\n 'visibility': 'visible',\r\n 'opacity': 1\r\n })\r\n $mmw.addClass('bars-away')\r\n setTimeout(() => {\r\n $mmw.addClass('mm-expanded-full')\r\n }, delay)\r\n })\r\n\r\n offClick.push(() => {\r\n if (! $mmw.hasClass('mm-expanded-full')) return;\r\n $mmw.removeClass('mm-expanded-full bars-away')\r\n setTimeout(() => {\r\n $(mm).css({'visibility': 'hidden'})\r\n $mmw.removeClass('mm-expanded')\r\n }, delay)\r\n $(mm).css({\r\n 'visibility': 'visible',\r\n 'opacity': 0\r\n })\r\n $('#mm-circle').css({'transform': `scale(1)`})\r\n })\r\n })\r\n $mmw.click(function(ev) {\r\n ev.stopPropagation()\r\n })\r\n .on('click', '.mm-cat[data-mmbx]', function() {\r\n let $target = $(`#mmb-${$(this).data('mmbx')}`)\r\n if ($target.is(':visible')) {\r\n $target.toggle(false)\r\n $(this).removeClass('mmc-expanded')\r\n }\r\n else {\r\n $('.mm-boards').toggle(false)\r\n $('#mmb-_options').slideUp('fast');\r\n $target.toggle(true)\r\n $('.mmc-expanded').removeClass('mmc-expanded')\r\n $(this).addClass('mmc-expanded')\r\n }\r\n return false\r\n })\r\n}\r\n\r\nvar boards10 = {\r\n get list() {\r\n if (!this.allboards) {\r\n this.allboards = []\r\n document.querySelectorAll('.olm-link').forEach(o => {\r\n o = o.querySelector('a')\r\n if (!o) return;\r\n let s = o.dataset.toexpand\r\n , sd = o.innerText\r\n , sect = document.querySelector(`#ms-${s}`)\r\n if (!s || s=='20' || s=='_options') return;\r\n let section = {\r\n id: s,\r\n name: sd,\r\n boards: []\r\n }\r\n sect.querySelectorAll('a').forEach(a => {\r\n let m = a.innerText.match(/\\/(.+?)\\/ - (.+)/)\r\n if (m) \r\n section.boards.push({\r\n dir: m[1],\r\n desc: m[2]\r\n })\r\n })\r\n this.allboards.push(section)\r\n })\r\n }\r\n return this.allboards\r\n }\r\n}\r\n\r\nvar cloud20 = {\r\n init: function() {\r\n this.getBoards().then(() => this.filter('')).catch(_.noop)\r\n $('#boardselect').on('input', function() {\r\n cloud20.filter($(this).val());\r\n });\r\n },\r\n getBoards: function() {\r\n return new Promise((rs, rj) => {\r\n if (this.allboards)\r\n rs(this.allboards)\r\n else {\r\n $.getJSON(ku_cgipath + '/boards20.json', data => {\r\n this.allboards = data\r\n rs(data)\r\n })\r\n .fail(e => {\r\n pups.err(_l.unable_load_20)\r\n rj(e)\r\n })\r\n }\r\n })\r\n },\r\n filter: function(query) {\r\n var res = [];\r\n if(typeof this.allboards === \"undefined\") return;\r\n if(query == '') res = this.allboards;\r\n else {\r\n query = query.toLowerCase();\r\n _.each(this.allboards, function(board) {\r\n if(board.name.toLowerCase().search(query) !== -1 || board.desc.toLowerCase().search(query) !== -1)\r\n res.push(board);\r\n });\r\n }\r\n this.display(res);\r\n },\r\n display: function(list) {\r\n var newhtml = '', opts = '';\r\n _.each(list, function(item) {\r\n newhtml += '<a class=\"menu-item\" title=\"'+ item.desc +'\" href=\"'+ku_boardsfolder+item.name+'/\">/'+item.name+'/ - '+ item.desc +'</a>';\r\n opts += '<option value=\"'+item.name+'\">/'+item.name+'/ - '+ item.desc +'</option>';\r\n });\r\n $('#boards20').html(newhtml);\r\n $('.boardsel20').append(opts);\r\n }\r\n}\r\n\r\nvar countries = {\r\n 'A1': \"Anonymous Proxy\",\r\n 'A2': \"Satellite Provider\",\r\n 'O1': \"Other Country\",\r\n 'AD': \"Andorra\",\r\n 'AE': \"United Arab Emirates\",\r\n 'AF': \"Afghanistan\",\r\n 'AG': \"Antigua and Barbuda\",\r\n 'AI': \"Anguilla\",\r\n 'AL': \"Albania\",\r\n 'AM': \"Armenia\",\r\n 'AO': \"Angola\",\r\n 'AP': \"Asia/Pacific Region\",\r\n 'AQ': \"Antarctica\",\r\n 'AR': \"Argentina\",\r\n 'AS': \"American Samoa\",\r\n 'AT': \"Austria\",\r\n 'AU': \"Australia\",\r\n 'AW': \"Aruba\",\r\n 'AX': \"Aland Islands\",\r\n 'AZ': \"Azerbaijan\",\r\n 'BA': \"Bosnia and Herzegovina\",\r\n 'BB': \"Barbados\",\r\n 'BD': \"Bangladesh\",\r\n 'BE': \"Belgium\",\r\n 'BF': \"Burkina Faso\",\r\n 'BG': \"Bulgaria\",\r\n 'BH': \"Bahrain\",\r\n 'BI': \"Burundi\",\r\n 'BJ': \"Benin\",\r\n 'BL': \"Saint Bartelemey\",\r\n 'BM': \"Bermuda\",\r\n 'BN': \"Brunei Darussalam\",\r\n 'BO': \"Bolivia\",\r\n 'BQ': \"Bonaire, Saint Eustatius and Saba\",\r\n 'BR': \"Brazil\",\r\n 'BS': \"Bahamas\",\r\n 'BT': \"Bhutan\",\r\n 'BV': \"Bouvet Island\",\r\n 'BW': \"Botswana\",\r\n 'BY': \"Belarus\",\r\n 'BZ': \"Belize\",\r\n 'CA': \"Canada\",\r\n 'CC': \"Cocos (Keeling) Islands\",\r\n 'CD': \"Congo, The Democratic Republic of the\",\r\n 'CF': \"Central African Republic\",\r\n 'CG': \"Congo\",\r\n 'CH': \"Switzerland\",\r\n 'CI': \"Cote d'Ivoire\",\r\n 'CK': \"Cook Islands\",\r\n 'CL': \"Chile\",\r\n 'CM': \"Cameroon\",\r\n 'CN': \"China\",\r\n 'CO': \"Colombia\",\r\n 'CR': \"Costa Rica\",\r\n 'CU': \"Cuba\",\r\n 'CV': \"Cape Verde\",\r\n 'CW': \"Curacao\",\r\n 'CX': \"Christmas Island\",\r\n 'CY': \"Cyprus\",\r\n 'CZ': \"Czech Republic\",\r\n 'DE': \"Germany\",\r\n 'DJ': \"Djibouti\",\r\n 'DK': \"Denmark\",\r\n 'DM': \"Dominica\",\r\n 'DO': \"Dominican Republic\",\r\n 'DZ': \"Algeria\",\r\n 'EC': \"Ecuador\",\r\n 'EE': \"Estonia\",\r\n 'EG': \"Egypt\",\r\n 'EH': \"Western Sahara\",\r\n 'ER': \"Eritrea\",\r\n 'ES': \"Spain\",\r\n 'ET': \"Ethiopia\",\r\n 'EU': \"Europe\",\r\n 'FI': \"Finland\",\r\n 'FJ': \"Fiji\",\r\n 'FK': \"Falkland Islands (Malvinas)\",\r\n 'FM': \"Micronesia, Federated States of\",\r\n 'FO': \"Faroe Islands\",\r\n 'FR': \"France\",\r\n 'GA': \"Gabon\",\r\n 'GB': \"United Kingdom\",\r\n 'GD': \"Grenada\",\r\n 'GE': \"Georgia\",\r\n 'GF': \"French Guiana\",\r\n 'GG': \"Guernsey\",\r\n 'GH': \"Ghana\",\r\n 'GI': \"Gibraltar\",\r\n 'GL': \"Greenland\",\r\n 'GM': \"Gambia\",\r\n 'GN': \"Guinea\",\r\n 'GP': \"Guadeloupe\",\r\n 'GQ': \"Equatorial Guinea\",\r\n 'GR': \"Greece\",\r\n 'GS': \"South Georgia and the South Sandwich Islands\",\r\n 'GT': \"Guatemala\",\r\n 'GU': \"Guam\",\r\n 'GW': \"Guinea-Bissau\",\r\n 'GY': \"Guyana\",\r\n 'HK': \"Hong Kong\",\r\n 'HM': \"Heard Island and McDonald Islands\",\r\n 'HN': \"Honduras\",\r\n 'HR': \"Croatia\",\r\n 'HT': \"Haiti\",\r\n 'HU': \"Hungary\",\r\n 'ID': \"Indonesia\",\r\n 'IE': \"Ireland\",\r\n 'IL': \"Israel\",\r\n 'IM': \"Isle of Man\",\r\n 'IN': \"India\",\r\n 'IO': \"British Indian Ocean Territory\",\r\n 'IQ': \"Iraq\",\r\n 'IR': \"Iran, Islamic Republic of\",\r\n 'IS': \"Iceland\",\r\n 'IT': \"Italy\",\r\n 'JE': \"Jersey\",\r\n 'JM': \"Jamaica\",\r\n 'JO': \"Jordan\",\r\n 'JP': \"Japan\",\r\n 'KE': \"Kenya\",\r\n 'KG': \"Kyrgyzstan\",\r\n 'KH': \"Cambodia\",\r\n 'KI': \"Kiribati\",\r\n 'KM': \"Comoros\",\r\n 'KN': \"Saint Kitts and Nevis\",\r\n 'KP': \"Korea, Democratic People's Republic of\",\r\n 'KR': \"Korea, Republic of\",\r\n 'KW': \"Kuwait\",\r\n 'KY': \"Cayman Islands\",\r\n 'KZ': \"Kazakhstan\",\r\n 'LA': \"Lao People's Democratic Republic\",\r\n 'LB': \"Lebanon\",\r\n 'LC': \"Saint Lucia\",\r\n 'LI': \"Liechtenstein\",\r\n 'LK': \"Sri Lanka\",\r\n 'LR': \"Liberia\",\r\n 'LS': \"Lesotho\",\r\n 'LT': \"Lithuania\",\r\n 'LU': \"Luxembourg\",\r\n 'LV': \"Latvia\",\r\n 'LY': \"Libyan Arab Jamahiriya\",\r\n 'MA': \"Morocco\",\r\n 'MC': \"Monaco\",\r\n 'MD': \"Moldova, Republic of\",\r\n 'ME': \"Montenegro\",\r\n 'MF': \"Saint Martin\",\r\n 'MG': \"Madagascar\",\r\n 'MH': \"Marshall Islands\",\r\n 'MK': \"Macedonia\",\r\n 'ML': \"Mali\",\r\n 'MM': \"Myanmar\",\r\n 'MN': \"Mongolia\",\r\n 'MO': \"Macao\",\r\n 'MP': \"Northern Mariana Islands\",\r\n 'MQ': \"Martinique\",\r\n 'MR': \"Mauritania\",\r\n 'MS': \"Montserrat\",\r\n 'MT': \"Malta\",\r\n 'MU': \"Mauritius\",\r\n 'MV': \"Maldives\",\r\n 'MW': \"Malawi\",\r\n 'MX': \"Mexico\",\r\n 'MY': \"Malaysia\",\r\n 'MZ': \"Mozambique\",\r\n 'NA': \"Namibia\",\r\n 'NC': \"New Caledonia\",\r\n 'NE': \"Niger\",\r\n 'NF': \"Norfolk Island\",\r\n 'NG': \"Nigeria\",\r\n 'NI': \"Nicaragua\",\r\n 'NL': \"Netherlands\",\r\n 'NO': \"Norway\",\r\n 'NP': \"Nepal\",\r\n 'NR': \"Nauru\",\r\n 'NU': \"Niue\",\r\n 'NZ': \"New Zealand\",\r\n 'OM': \"Oman\",\r\n 'PA': \"Panama\",\r\n 'PE': \"Peru\",\r\n 'PF': \"French Polynesia\",\r\n 'PG': \"Papua New Guinea\",\r\n 'PH': \"Philippines\",\r\n 'PK': \"Pakistan\",\r\n 'PL': \"Poland\",\r\n 'PM': \"Saint Pierre and Miquelon\",\r\n 'PN': \"Pitcairn\",\r\n 'PR': \"Puerto Rico\",\r\n 'PS': \"Palestinian Territory\",\r\n 'PT': \"Portugal\",\r\n 'PW': \"Palau\",\r\n 'PY': \"Paraguay\",\r\n 'QA': \"Qatar\",\r\n 'RE': \"Reunion\",\r\n 'RO': \"Romania\",\r\n 'RS': \"Serbia\",\r\n 'RU': \"Russian Federation\",\r\n 'RW': \"Rwanda\",\r\n 'SA': \"Saudi Arabia\",\r\n 'SB': \"Solomon Islands\",\r\n 'SC': \"Seychelles\",\r\n 'SD': \"Sudan\",\r\n 'SE': \"Sweden\",\r\n 'SG': \"Singapore\",\r\n 'SH': \"Saint Helena\",\r\n 'SI': \"Slovenia\",\r\n 'SJ': \"Svalbard and Jan Mayen\",\r\n 'SK': \"Slovakia\",\r\n 'SL': \"Sierra Leone\",\r\n 'SM': \"San Marino\",\r\n 'SN': \"Senegal\",\r\n 'SO': \"Somalia\",\r\n 'SR': \"Suriname\",\r\n 'SS': \"South Sudan\",\r\n 'ST': \"Sao Tome and Principe\",\r\n 'SV': \"El Salvador\",\r\n 'SX': \"Sint Maarten\",\r\n 'SY': \"Syrian Arab Republic\",\r\n 'SZ': \"Swaziland\",\r\n 'TC': \"Turks and Caicos Islands\",\r\n 'TD': \"Chad\",\r\n 'TF': \"French Southern Territories\",\r\n 'TG': \"Togo\",\r\n 'TH': \"Thailand\",\r\n 'TJ': \"Tajikistan\",\r\n 'TK': \"Tokelau\",\r\n 'TL': \"Timor-Leste\",\r\n 'TM': \"Turkmenistan\",\r\n 'TN': \"Tunisia\",\r\n 'TO': \"Tonga\",\r\n 'TR': \"Turkey\",\r\n 'TT': \"Trinidad and Tobago\",\r\n 'TV': \"Tuvalu\",\r\n 'TW': \"Taiwan\",\r\n 'TZ': \"Tanzania, United Republic of\",\r\n 'UA': \"Ukraine\",\r\n 'UG': \"Uganda\",\r\n 'UM': \"United States Minor Outlying Islands\",\r\n 'US': \"United States\",\r\n 'UY': \"Uruguay\",\r\n 'UZ': \"Uzbekistan\",\r\n 'VA': \"Holy See (Vatican City State)\",\r\n 'VC': \"Saint Vincent and the Grenadines\",\r\n 'VE': \"Venezuela\",\r\n 'VG': \"Virgin Islands, British\",\r\n 'VI': \"Virgin Islands, U.S.\",\r\n 'VN': \"Vietnam\",\r\n 'VU': \"Vanuatu\",\r\n 'WF': \"Wallis and Futuna\",\r\n 'WS': \"Samoa\",\r\n 'YE': \"Yemen\",\r\n 'YT': \"Mayotte\",\r\n 'ZA': \"South Africa\",\r\n 'ZM': \"Zambia\",\r\n 'ZW': \"Zimbabwe\",\r\n 'XX': \"OMCK\",\r\n 'T1': \"Tor\"\r\n}\r\n\r\nvar bnrs = {\r\n initiated: false,\r\n init: function() {\r\n $.getJSON(ku_boardspath+'/bnrs.json', function(data) {\r\n var reduced = [];\r\n if(data.length > 1) {\r\n _.each(data, function(bnr) {\r\n if(bnr.link !== this_board_dir) reduced.push(bnr);\r\n });\r\n }\r\n else reduced = data;\r\n bnrs.data = reduced;\r\n bnrs.initiated = true;\r\n bnrs.display();\r\n });\r\n },\r\n display: function() {\r\n if(!this.initiated) return;\r\n if(!this.data.length) return;\r\n var reduced = [];\r\n if(typeof this.current !== 'undefined') {\r\n _.each(this.data, function(item) {\r\n if(item.path !== bnrs.current) reduced.push(item)\r\n });\r\n }\r\n else reduced = this.data;\r\n var toDisplay = randomItem(reduced);\r\n this.current = toDisplay.path;\r\n var link = (toDisplay.link.indexOf('http') === (-1)) ? ku_boardspath+'/'+toDisplay.link : toDisplay.link;\r\n var newhtml = '<a class=\"bnrsupdate\" href=\"#\" onclick=\"javascript:bnrs.display();return false;\"></a><a href=\"'+link+'\"><img src=\"'+ku_boardspath+'/images/bnrs/'+toDisplay.path+'\" /></a>';\r\n if($('.bnr').length) {\r\n $('.bnr').html(newhtml);\r\n }\r\n else $('.logo').before('<div class=\"bnr-wrap\"><div class=\"bnr\">'+newhtml+'</div></div>');\r\n },\r\n}\r\n\r\nfunction getRandomInt (min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n}\r\n\r\nfunction randomItem(array) {\r\n return array[getRandomInt(0, array.length-1)];\r\n}\r\n\r\n/* not losing floating form data */\r\nvar ffdata = {\r\n pos: ['top', 'left'],\r\n save: function() {\r\n var data = {};\r\n _.each(ffdata.pos, function(pos) {\r\n data[pos] = $('#postclone').css(pos);\r\n });\r\n var savedOn = new Date().getTime();\r\n data.savedon = savedOn;\r\n ffdata.savedOn = savedOn;\r\n $('#postform [name=ffdata_savedon]').val(savedOn);\r\n localStorage.setItem('ffdata_'+this_board_dir+'_'+(ispage ? 'page' : $('#postform [name=replythread]').val()), JSON.stringify(data));\r\n return true;\r\n },\r\n savedOn: false,\r\n unload: function() {\r\n $('#postform [name=ffdata_savedon]').val(ffdata.savedOn || new Date().getTime());\r\n },\r\n load: function() {\r\n var key = 'ffdata_'+this_board_dir+'_'+(ispage ? 'page' : $('#postform [name=replythread]').val());\r\n if(!localStorage[key]) return;\r\n try {\r\n let data = JSON.parse(localStorage[key]);\r\n if(data.savedon && data.savedon == $('#postform [name=ffdata_savedon]').val()) {\r\n _.each(ffdata.pos, function(pos) {\r\n if(data.hasOwnProperty(pos)) $('#postclone').css(pos, data[pos]);\r\n });\r\n $('#postclone').show();\r\n }\r\n else localStorage.removeItem(key);\r\n\r\n }\r\n catch(e) {\r\n localStorage.removeItem(key);\r\n console.log('unable to load form data', e)\r\n }\r\n }\r\n}\r\n\r\nvar embedLinks = {\r\n sites: [\r\n {id: 'youtube', rx: /(?:youtu(?:\\.be|be\\.com)\\/(?:.*v(?:\\/|=)|(?:.*\\/)?)([\\w'-]+))/i },\r\n {id: 'vimeo', rx: /[\\w\\W]*vimeo\\.com\\/(?:.*?)([0-9]+)(?:.*)?/ },\r\n {id: 'coub', rx: /[\\w\\W]*coub\\.com\\/view\\/([\\w\\W]*)[\\w\\W]*/ }\r\n ],\r\n process: function(val) {\r\n var result = null;\r\n _.find(this.sites, function(site) {\r\n var fruit = site.rx.exec(val);\r\n if(fruit != null) {\r\n result = {\r\n site: site.id,\r\n code: fruit[1]\r\n }\r\n }\r\n })\r\n return result;\r\n }\r\n}\r\n\r\nwindow.onbeforeunload = ffdata.unload;\r\n\r\nvar catalog = {\r\n conf: {\r\n sortBy: 'bumped',\r\n layout: 'text',\r\n respectStickied: true,\r\n showHidden: true,\r\n expandOnHover: true\r\n },\r\n saveConfig: function() {\r\n localStorage['catalogSettings'] = JSON.stringify(this.conf);\r\n },\r\n init: function() {\r\n // apply settings\r\n if(localStorage['catalogSettings']) {\r\n try {\r\n var myConf = JSON.parse(localStorage['catalogSettings']);\r\n _.each(myConf, function(val, key) {\r\n this.conf[key] = val\r\n }, this)\r\n }\r\n catch(e) {\r\n console.error('Invalid catalog config');\r\n localStorage.removeItem('catalogSettings');\r\n }\r\n }\r\n\r\n var sortOptionElements = '';\r\n _.each([\r\n ['bumped', 'bumpOrder'],\r\n ['replied', 'lastReply'],\r\n ['timestamp', 'creationDate'],\r\n ['reply_count', 'replyCount']\r\n ], (function(val_desc) {\r\n sortOptionElements += '<option value=\"'+val_desc[0]+'\"'+(val_desc[0]==this.conf.sortBy ? ' selected' : '')+'>'+_l[val_desc[1]]+'</option>';\r\n }).bind(this));\r\n\r\n // catalog control buttons\r\n var sortBtns = '<div class=\"button-group\" data-select=\"sortBy\">';\r\n _.each([\r\n ['bumped', 'bumpOrder', 'bump', 'i-20'],\r\n ['timestamp', 'creationDate', 'creation', 'i-20'],\r\n ['replied', 'lastReply', 'reply', 'i-16in20'],\r\n ['reply_count', 'replyCount', 'replies', 'i-20']\r\n ], (function(v_d_i) {\r\n sortBtns += '<div class=\"bg-button'+(v_d_i[0]==this.conf.sortBy ? ' bgb-selected' : '')+\r\n '\" data-val=\"'+v_d_i[0]+'\" title=\"'+_l.sortBy+' '+_l[v_d_i[1]]+'\">\\\r\n <svg class=\"icon '+v_d_i[3]+'\"><use xlink:href=\"#i-'+v_d_i[2]+'\"></use></svg></div>'\r\n }).bind(this));\r\n sortBtns += '</div>';\r\n var pinBtns = '<div class=\"button-group'+(this.conf.sortBy !== 'bumped' ? ' disabled' : '')+'\" data-select=\"respectStickied\" id=\"pinControl\">';\r\n _.each([\r\n [1, 'doStick', 'pin', 'i-16in20'],\r\n [0, 'doNotStick', 'unpin', 'i-16in20']\r\n ], (function(v_d_i) {\r\n pinBtns += '<div class=\"bg-button'+(v_d_i[0]==this.conf.respectStickied ? ' bgb-selected' : '')+\r\n '\" data-val=\"'+v_d_i[0]+'\" title=\"'+_l[v_d_i[1]]+'\">\\\r\n <svg class=\"icon '+v_d_i[3]+'\"><use xlink:href=\"#i-'+v_d_i[2]+'\"></use></svg></div>'\r\n }).bind(this));\r\n pinBtns += '</div>';\r\n var hideBtns = '<div class=\"button-group\" data-select=\"showHidden\">';\r\n _.each([\r\n [0, 'hideHidden', 'hide', 'i-16in20'],\r\n [1, 'showHidden', 'unhide', 'i-16in20']\r\n ], (function(v_d_i) {\r\n hideBtns += '<div class=\"bg-button'+(v_d_i[0]==this.conf.showHidden ? ' bgb-selected' : '')+\r\n '\" data-val=\"'+v_d_i[0]+'\" title=\"'+_l[v_d_i[1]]+'\">\\\r\n <svg class=\"icon '+v_d_i[3]+'\"><use xlink:href=\"#i-'+v_d_i[2]+'\"></use></svg></div>'\r\n }).bind(this));\r\n hideBtns += '</div>';\r\n var layoutBtns = '<div class=\"button-group\" data-select=\"layout\">';\r\n _.each([\r\n ['text', 'smallPics', 'grid-small', 'i-20'],\r\n ['gallery', 'largePics', 'gallery-grid', 'i-20'],\r\n /*['legacy', 'legacyMode', 'legacy-grid', 'i-20']*/\r\n ], (function(v_d_i) {\r\n layoutBtns += '<div class=\"bg-button'+(v_d_i[0]==this.conf.layout ? ' bgb-selected' : '')+\r\n '\" data-val=\"'+v_d_i[0]+'\" title=\"'+_l[v_d_i[1]]+'\">\\\r\n <svg class=\"icon '+v_d_i[3]+'\"><use xlink:href=\"#i-'+v_d_i[2]+'\"></use></svg></div>'\r\n }).bind(this));\r\n layoutBtns += '</div>';\r\n // searck input\r\n var searchInput = '<input name=\"subject\" autocomplete=\"false\" class=\"button-group\" type=\"text\" id=\"cat-search\" placeholder=\"'+_l.search+'...\" /><input type=\"text\" name=\"FUCKYOUCHROMEFUCKYOU\" style=\"display:none;\"/>'\r\n\r\n $('#catalog-controls').html(\r\n sortBtns+pinBtns+searchInput+hideBtns+layoutBtns\r\n );\r\n this.load();\r\n if(this.conf.expandOnHover)\r\n $('#catalog-contents').addClass('expand-on-hover-enabled');\r\n // Card events\r\n $('#catalog-contents')\r\n .on('click', '.namedate-overlay', function() {\r\n $(this).toggleClass('date-on name-on');\r\n })\r\n .on('click', '.ce-text .bigThumb', function(ev) {\r\n ev.stopPropagation(); ev.preventDefault();\r\n var $card = $(this).parents('.cat-entry');\r\n $card.toggleClass('thumbExpanded');\r\n })\r\n .on('click', '.bigThumb audio, .bigThumb video', function(ev) {\r\n ev.stopPropagation();\r\n })\r\n .on('animationstart webkitAnimationStart MSAnimationStart oanimationstart', (function(event) {\r\n var $target = $(event.target);\r\n if (event.originalEvent.animationName == \"embed-image-insert\" && !$target.hasClass('_inserted_'))\r\n this.getEmbedThumb($target);\r\n }).bind(this))\r\n .on('mousedown', '.cat-prv', function(ev) {\r\n ev.preventDefault();\r\n PostPreviews._mouseover.bind(this)(ev);\r\n })\r\n .on('click', '.cat-prv', function(ev) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n })\r\n .on('mouseleave', '.cat-prv', function(ev) {\r\n PostPreviews._mouseout.bind(this)(ev);\r\n })\r\n .on('click', '.i-hide', (function(ev) {\r\n var $target = $(ev.currentTarget)\r\n , $card = $target.parents('.cat-entry')\r\n , threadID = $card.data('id')\r\n , threadIX = _.findIndex(this.model, {'id': threadID})\r\n , thread = this.model[threadIX];\r\n thread.hidden = !thread.hidden;\r\n // addClass won't work here for some reason\r\n if(thread.hidden) {\r\n $target[0].classList.add('hidden-on');\r\n $target.html(makeIcon('unhide', '', true));\r\n HiddenThreads.hide(threadID);\r\n $card.addClass('thread-hidden')\r\n }\r\n else {\r\n $target[0].classList.remove('hidden-on');\r\n $target.html(makeIcon('hide', '', true));\r\n HiddenThreads.unhide(threadID);\r\n $card.removeClass('thread-hidden')\r\n }\r\n //invalidate rendered cache\r\n this.model[threadIX] = thread;\r\n delete this.rendered[this.conf.layout][threadID];\r\n }).bind(this))\r\n // catalog configuration\r\n $('.bg-button').click((function(ev) {\r\n var $target = $(ev.currentTarget);\r\n if($target.hasClass('bgb-selected')) return;\r\n var $group = $target.parent()\r\n , val = $target.data('val')\r\n , key = $group.data('select');\r\n $group.find('.bg-button').removeClass('bgb-selected');\r\n $target.addClass('bgb-selected');\r\n if(key !== 'sortBy' && key !== 'layout') val = !!val;\r\n else {\r\n if(val == 'bumped') $('#pinControl').removeClass('disabled');\r\n else $('#pinControl').addClass('disabled');\r\n }\r\n this.conf[key] = val;\r\n this.saveConfig();\r\n if(key !== 'showHidden') this.build();\r\n else {\r\n if(val) $('#catalog-contents').removeClass('hideHidden');\r\n else $('#catalog-contents').addClass('hideHidden');\r\n }\r\n }).bind(this))\r\n $('#refresh_catalog').click((function(ev) {\r\n ev.preventDefault();\r\n this.load();\r\n }).bind(this));\r\n //search\r\n $('#cat-search').on('input', function() {\r\n var query = $(this).val().toLowerCase().replace(/\\\"/, '\\\\\"');\r\n try {\r\n injector.remove('cat-search');\r\n } catch(e) {}\r\n if(query.length)\r\n injector.inject('cat-search', '#catalog-contents .cat-entry:not([data-search *= \"'+query+'\"]) { display:none; }');\r\n else injector.remove('cat-search');\r\n }).trigger('input');\r\n },\r\n load: function() {\r\n // clear data\r\n this.rendered = {text: {}, gallery: {}};\r\n this.model = null;\r\n // get contents\r\n $.getJSON('catalog.json?v='+(new Date().getTime()))\r\n .done(this.build.bind(this))\r\n .fail(function(err) {\r\n throw err;\r\n })\r\n },\r\n fileTypes: {\r\n image: ['jpg', 'gif', 'png'],\r\n jpgThumb: ['webm', 'cob', 'vim', 'you'],\r\n iconsAvailable: ['swf', 'mp3', 'ogg', 'css', 'flv'],\r\n audio: ['mp3', 'ogg'],\r\n embed: ['cob', 'vim', 'you']\r\n },\r\n authorities: ['', 'Admin', 'Mod', '?', 'God'],\r\n formatDate: function(timestamp, short) {\r\n if(typeof short === 'undefined') short = false;\r\n var date = new Date(timestamp * 1000)\r\n , Dow = this.dateLocal.dows.hasOwnProperty(locale) ? this.dateLocal.dows[locale][date.getDay()] : this.dateLocal.dows.en[date.getDay()]\r\n , yy = _.padLeft(date.getFullYear() % 100, 2, 0)\r\n , mo = _.padLeft(date.getMonth()+1, 2, 0)\r\n , Mon = (locale === 'ru') ? this.dateLocal.mons.ru[date.getMonth()] : date.getMonth()+1\r\n , dd = _.padLeft(date.getDate(), 2, 0)\r\n , hh = _.padLeft(date.getHours(), 2, 0)\r\n , mm = _.padLeft(date.getMinutes(), 2, 0)\r\n , ss = _.padLeft(date.getSeconds(), 2, 0);\r\n return (short\r\n ? ( (locale === 'ru')\r\n ? (dd+'.'+mo+'.'+yy+' в ')\r\n : (mo+'/'+dd+'/'+yy+' @ ') )\r\n : ( (locale === 'ru')\r\n ? (Dow+' '+dd+' '+Mon+''+yy+' в ')\r\n : (mo+'/'+dd+'/'+yy+' ('+Dow+') @ ') )\r\n ) + hh+':'+mm+':'+ss;\r\n },\r\n dateLocal: {\r\n dows: {\r\n ru: ['Пнд','Втр','Срд','Чтв','Птн','Сбт','Вск'],\r\n en: ['Sun','Mon','Tue','Wen','Thu','Fri','Sat']\r\n },\r\n mons: {\r\n ru: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек']\r\n }\r\n },\r\n build: function(data) {\r\n if(typeof data === 'undefined') data = this.model;\r\n if(!data) return;\r\n // normalize\r\n _.each(data, function(entry, i) {\r\n _.each(['id', 'reply_count', 'bumped', 'replied', 'reply_count', 'timestamp', 'page', 'locked', 'stickied', 'deleted_timestamp'], function(prop) {\r\n entry[prop] = ~~entry[prop];\r\n })\r\n data[i] = entry;\r\n })\r\n // Sort threads\r\n if(this.conf.sortBy === 'bumped' && this.conf.respectStickied)\r\n this.model = _.sortByOrder(data, ['stickied', 'bumped'], ['desc', 'desc']);\r\n else {\r\n var sby = [this.conf.sortBy];\r\n if(this.conf.sortBy !== 'bumped')\r\n sby.push('bumped')\r\n this.model = _.sortByOrder(data, sby, _.repeat('desc', sby.length));\r\n }\r\n\r\n var html = '';\r\n\r\n _.each(this.model, function(thread) {\r\n html += this.buildEntry(thread);\r\n }, this);\r\n\r\n $('#catalog-contents').html(html);\r\n },\r\n getEmbedThumb: function($el) {\r\n var site = $el.data('site'), id = $el.data('id'), img\r\n , $thread = $el.parents('.cat-entry')\r\n , threadID = $thread.data('id');\r\n if(site == 'cob')\r\n $.get(ku_boardspath+'/corpsy.php?code='+id, (function(res) {\r\n $el.replaceWith('<img src=\"'+res.thumbnail_url+'\">');\r\n this.rendered[this.conf.layout][threadID] = $thread[0].outerHTML;\r\n }).bind(this));\r\n if(site == 'vim')\r\n $.get('http://vimeo.com/api/v2/video/'+id+'.json', (function(res) {\r\n $el.replaceWith('<img src=\"'+res[0].thumbnail_medium+'\">');\r\n this.rendered[this.conf.layout][threadID] = $thread[0].outerHTML\r\n }).bind(this));\r\n },\r\n\r\n buildEntry: function(thread) {\r\n if(this.rendered[this.conf.layout].hasOwnProperty(thread.id))\r\n return this.rendered[this.conf.layout][thread.id];\r\n\r\n if(!thread.processed) {\r\n thread.url = '/'+this_board_dir+'/res/'+thread.id+'.html';\r\n // --- Building blocks ---\r\n // Thumbnails\r\n var expanderBtn = '<svg class=\"actor icon cat-thumb-expand\"><use xlink:href=\"#i-expand\"></use></svg>',\r\n playerBtn = '<svg class=\"actor icon cat-thumb-expand\"><use xlink:href=\"#i-play\"></use></svg>';\r\n // Find first non-deleted file\r\n let embed = thread.embeds ? (thread.embeds.find(e => e.file != 'removed') || 'removed') : null\r\n // for images\r\n if(!embed || embed === 'removed') {\r\n thread.smallThumb =\r\n '<a href=\"'+thread.url+'\" class=\"smallThumb\">\\\r\n <div class=\"nofile-removed ctx\">'+(embed === 'removed' ? 'Удалён' : 'No File')+'</div>'\r\n +'</a>';\r\n }\r\n else {\r\n if (\r\n _.includes(this.fileTypes.image, embed.file_type)\r\n ||\r\n _.includes(this.fileTypes.jpgThumb, embed.file_type)\r\n ||\r\n (\r\n _.includes(this.fileTypes.audio, embed.file_type)\r\n &&\r\n (+embed.thumb_w) > 0\r\n &&\r\n (+embed.thumb_h) > 0\r\n )\r\n ) {\r\n let ftype = _.includes(this.fileTypes.image, embed.file_type)\r\n ? embed.file_type\r\n : 'jpg'\r\n , thumbURL = _.includes(this.fileTypes.embed, embed.file_type)\r\n ? `${embed.file_type}-${embed.file}-`\r\n : embed.file\r\n , vartype = embed.file_type == 'mp3' ? ' onerror=\"switchFileType(this)\" extset=\"jpg,png,gif\"' : ''\r\n thread.smallThumb =\r\n '<a href=\"'+thread.url+'\" class=\"smallThumb\">\\\r\n <img src=\"thumb/'+thumbURL+'c.'+ftype+'\"'+vartype+'>'\r\n +'</a>';\r\n thread.bigThumb =\r\n '<img src=\"thumb/'+thumbURL+'s.'+ftype+'\"'+vartype+'>';\r\n }\r\n /*if(_.includes(this.fileTypes.image, thread.file_type)) {\r\n thread.fileTypeClass = 'image';\r\n thread.smallThumb =\r\n '<a href=\"'+thread.url+'\" class=\"smallThumb\">\\\r\n <img src=\"thumb/'+thread.file+'c.'+(thread.file_type === 'webm' ? 'jpg' : thread.file_type)+'\">'\r\n +'</a>';\r\n thread.bigThumb =\r\n '<img src=\"thumb/'+thread.file+'s.'+(thread.file_type === 'webm' ? 'jpg' : thread.file_type)+'\">';\r\n }*/\r\n // small thumbnail for embeds and generic files\r\n else {\r\n var smallSrc = (_.includes(this.fileTypes.iconsAvailable, embed.file_type))\r\n ? '/inc/filetypes/'+embed.file_type+'.png'\r\n : '/inc/filetypes/generic'+(_.includes(this.fileTypes.embed, embed.file_type) ? '-embed' : '')+'.png';\r\n var expandable = _.includes(this.fileTypes.embed, embed.file_type) || _.includes(this.fileTypes.audio, embed.file_type);\r\n thread.smallThumb =\r\n '<a href=\"'+thread.url+'\" class=\"smallThumb\">\\\r\n <img src=\"'+smallSrc+'\">' +\r\n /*+ ''+(expandable ? playerBtn : '') +*/\r\n '</a>';\r\n // for audios\r\n if(_.includes(this.fileTypes.audio, embed.file_type)) {\r\n thread.bigThumb =\r\n '<audio src=\"src/'+embed.file+'.'+embed.file_type+'\" controls></audio>';\r\n }\r\n }\r\n /*// for embeds\r\n if(_.includes(this.fileTypes.embed, thread.file_type)) {\r\n thread.bigThumb = (thread.file_type == 'you')\r\n ? '<img src=\"http://i.ytimg.com/vi/'+thread.file+'/mqdefault.jpg\">'\r\n : '<div class=\"cat-bt-embed\" data-site=\"'+thread.file_type+'\" data-id=\"'+thread.file+'\"></div>';\r\n }\r\n // for audios\r\n if(_.includes(this.fileTypes.audio, thread.file_type)) {\r\n thread.bigThumb =\r\n '<audio src=\"src/'+thread.file+'.'+thread.file_type+'\" controls></audio>';\r\n }*/\r\n thread.bigThumb = '<a target=\"_blank\" href=\"'+thread.url+'\" class=\"bigThumb\">'+thread.bigThumb+'</a>';\r\n }\r\n /*if(!embed || embed === 'removed')\r\n thread.bigThumb = '<a target=\"_blank\" href=\"'+thread.url+'\" class=\"bigThumb\">'+thread.bigThumb+'</a>';*/\r\n\r\n //OP\r\n thread.op = '<a target=\"_blank\" title=\"'+_l.goToThread+'\" target=\"_blank\" href=\"'+thread.url+'\" class=\"op-number ctx\">#'+thread.id+'</a>';\r\n\r\n //preview\r\n thread.preview =\r\n '<a href=\"'+thread.url+'#'+thread.id+'\" class=\"actor cat-prv\">\\\r\n <svg class=\"icon\"><use xlink:href=\"#i-eye\"></use></svg>\\\r\n </a>';\r\n\r\n //counters\r\n var repliesLabel =\r\n '<svg class=\"icon\"><use xlink:href=\"#i-reply\"></use></svg>\\\r\n <span class=\"ctx reply-count\">'+thread.reply_count+'</span>';\r\n if(thread.last_reply)\r\n repliesLabel = '<a href=\"'+thread.url+'#'+thread.last_reply+'\" class=\"actor cat-prv\">'+repliesLabel+'</a>';\r\n var replies =\r\n '<div class=\"infolabel\">'+repliesLabel+'</div>',\r\n images =\r\n '<div class=\"infolabel\">\\\r\n <svg class=\"icon\"><use xlink:href=\"#i-picture\"></use></svg>\\\r\n <span class=\"ctx image-count\">'+thread.images+'</span>\\\r\n </div>',\r\n page =\r\n '<div class=\"infolabel il-page\">\\\r\n <a title=\"'+_l.threadOnPage+' '+thread.page+'\" target=\"_blank\" href=\"/'+this_board_dir+'/' + ((thread.page > 0) ? thread.page+'.html' : '')+'#'+thread.id+'\" class=\"actor\">\\\r\n <svg class=\"icon\"><use xlink:href=\"#i-page\"></use></svg>\\\r\n <span class=\"ctx page-number\">'+thread.page+'</span>\\\r\n </a>\\\r\n </div>';\r\n thread.countersCombined = replies+images+page;\r\n\r\n //Poster name+date\r\n thread.posterauthority = +thread.posterauthority;\r\n thread.nameDatePriority = 'date';\r\n if(localStorage['cat_nameDatePriority'] == 'name' ||\r\n (localStorage['cat_nameDatePriority'] != 'date' &&\r\n (thread.name || thread.tripcode || thread.posterauthority)\r\n )\r\n ) thread.nameDatePriority = 'name';\r\n\r\n // Poster name\r\n var poster =\r\n (thread.name ? '<span class=\"ctx postername\">'+thread.name+'</span>' : '') +\r\n (thread.tripcode ? '<span class=\"ctx postertrip\">!'+thread.tripcode+'</span>' : '') +\r\n (thread.posterauthority ? '<span class=\"ctx admin\">&nbsp;##'+this.authorities[thread.posterauthority]+'##</span>' : '');\r\n thread.poster = '<div class=\"cat-poster\"><span class=\"ctx\">by&nbsp;</span>'+ (poster || '<span class=\"ctx c-postername\">'+(this_board_defaultName || _l.anonymous)+'</span>')+'</div>';\r\n\r\n // Date\r\n var dn = ' style=\"display:none\"';\r\n thread.date = '<div class=\"ctx cat-date cat-date-long\">'+this.formatDate(thread.timestamp)+'</div>';\r\n thread.dateCompact = '<div class=\"ctx cat-date cat-date-short\">'+this.formatDate(thread.timestamp, 1)+'</div>';\r\n\r\n //search data\r\n thread.searchData = _.escape(stripHTML(thread.subject + ' ' + thread.message).toLowerCase());\r\n\r\n thread.message = thread.message.replace(/\\\\\"/mg, '\"');\r\n\r\n thread.processed = true;\r\n this.model[_.findIndex(this.model, {id: thread.id})] = thread;\r\n }\r\n //indicators\r\n thread = this.buildIndicators(thread);\r\n\r\n var html = this.layouts[this.conf.layout].bind(this)(thread);\r\n this.rendered[this.conf.layout][thread.id] = html;\r\n return html\r\n },\r\n buildIndicators: function(thread) {\r\n // if(!thread.hasOwnProperty('hidden'))\r\n thread.hidden = _.includes((localStorage['hiddenThreads.'+this_board_dir] || '').split(','), ''+thread.id);\r\n var pin = thread.stickied ? '<svg class=\"foradmin-act icon i-layer-1 i-pin\"><use xlink:href=\"#i-pin\"></use></svg>' : '',\r\n lock = thread.locked ? '<svg class=\"foradmin-act icon i-layer-1 i-lock\"><use xlink:href=\"#i-lock\"></use></svg>' : '',\r\n deathmark = thread.deleted_timestamp ? '<svg class=\"foradmin-act icon i-layer-1 i-deathmark\"><use xlink:href=\"#i-skull\"></use></svg>' : '',\r\n hide = '<svg class=\"actor icon i-layer-1 i-hide'+(thread.hidden ? ' hidden-on' : '')+'\"><use xlink:href=\"#i-'+(thread.hidden ? 'unhide' : 'hide')+'\"></use></svg>',\r\n burger = '<svg class=\"actor icon i-burger foradmin-show\"><use xlink:href=\"#i-burger\"></use></svg>',\r\n del = '<svg class=\"actor icon i-layer-2 i-delete foradmin-show\"><use xlink:href=\"#i-x\"></use></svg>',\r\n and = '<svg class=\"actor icon i-layer-2 i-dnb foradmin-show\"><use xlink:href=\"#i-and\"></use></svg>',\r\n ban = '<svg class=\"actor icon i-layer-2 i-ban foradmin-show\"><use xlink:href=\"#i-ban\"></use></svg>';\r\n thread.indicatorsCombined = '<div class=\"indicators\">'+burger+'<span class=\"i-layer-1\">'+deathmark+pin+lock+hide+'</span><span class=\"i-layer-2\">'+del+and+ban+'</span></div>';\r\n return thread;\r\n },\r\n layouts: {\r\n text: function(thread) {\r\n return ''+\r\n '<div data-id=\"'+thread.id+'\" class=\"cat-entry ce-text'+(thread.hidden ? ' thread-hidden' : '')+'\" data-search=\"'+thread.searchData+'\">\\\r\n <div class=\"cat-card\">\\\r\n <div class=\"ce-heda\">'\r\n +thread.smallThumb+\r\n '<div class=\"cat-infoline ci-op-link\">'\r\n +thread.op\r\n +thread.indicatorsCombined+\r\n '</div>\\\r\n <div class=\"cat-infoline namedate-overlay '+thread.nameDatePriority+'-on\">'\r\n +thread.poster\r\n +thread.date\r\n +'</div>\\\r\n <div class=\"cat-infoline\">'\r\n +thread.preview\r\n +thread.countersCombined+\r\n '</div>\\\r\n </div>\\\r\n <div class=\"ce-opcontent ctx\">\\\r\n <h5>'+thread.subject+'</h5>'+\r\n thread.message+\r\n '</div>\\\r\n </div>'\r\n +thread.bigThumb+\r\n '</div>'\r\n },\r\n gallery: function(thread) {\r\n return ''+\r\n '<div data-id=\"'+thread.id+'\" class=\"cat-entry ce-gallery'+(thread.hidden ? ' thread-hidden' : '')+'\" data-search=\"'+thread.searchData+'\">\\\r\n <div class=\"cat-card\">'+\r\n thread.bigThumb+\r\n '<div class=\"cat-infoline\">\\\r\n <div class=\"ci-op-link\">'+thread.op+'</div>\\\r\n <div class=\"counters\">'+thread.countersCombined+'</div>\\\r\n </div>\\\r\n <div class=\"cat-infoline\">'\r\n +thread.preview+\r\n '<div class=\"namedate-overlay '+thread.nameDatePriority+'-on\">'\r\n +thread.poster\r\n +thread.dateCompact\r\n +'</div>'\r\n +thread.indicatorsCombined+\r\n '</div>\\\r\n <div class=\"ce-opcontent ctx\">\\\r\n <h5>'+thread.subject+'</h5>'+\r\n thread.message+\r\n '</div>\\\r\n </div>\\\r\n </div>'\r\n }\r\n }\r\n}\r\n\r\nfunction stripHTML(html) {\r\n var tmp = document.implementation.createHTMLDocument(\"New\").body;\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || \"\";\r\n}\r\n\r\nvar unreadCounter = {\r\n init: function(built) {\r\n if (!built) {\r\n built = + document.querySelector('meta[property=\"i0:buildtime\"]').content\r\n }\r\n this.lastvisits = localStorage['lastvisits'] ? (JSON.parse(localStorage['lastvisits']) || { }) : { }\r\n let last_ts = this.lastvisits.hasOwnProperty(boardid) ? parseInt(this.lastvisits[boardid]) : 0;\r\n if(last_ts < built) {\r\n this.lastvisits[boardid] = built\r\n localStorage.setItem('lastvisits', JSON.stringify(this.lastvisits))\r\n }\r\n },\r\n refreshTimestamp: function(timestamp = Math.round(new Date().getTime() / 1000)) { // PHP standard timestamp length\r\n if (!this.lastvisits)\r\n this.init()\r\n this.lastvisits[boardid] = timestamp\r\n localStorage.setItem('lastvisits', JSON.stringify(this.lastvisits))\r\n },\r\n update: function() {\r\n if (!this.lastvisits)\r\n this.init()\r\n $.ajax({\r\n url: '/newpostscount.php',\r\n data: this.lastvisits,\r\n dataType: 'json',\r\n success: function(data) {\r\n $('.newposts-counter').remove()\r\n $('.got-updates').removeClass('got-updates')\r\n _.each(data, function(val, brd) {\r\n if ((+val) > 0) {\r\n let valstr = `<span class=\"newposts-counter\"> (${val})</span>`\r\n , $brd = $(`.menu-item[href=\"/${brd}/\"]`)\r\n if ($brd.length) {\r\n $brd.append(valstr)\r\n $(`.sect-exr[data-toexpand=\"${$brd.parents('.menu-sect').attr('id').split('ms-')[1]}\"]`).parent().addClass('got-updates')\r\n }\r\n $(`.mobile-nav option[value=\"${brd}\"]`).append(valstr)\r\n }\r\n })\r\n }\r\n });\r\n }\r\n}\r\n\r\nvar HTMLoader = {\r\n loadThread: function(boardID, threadID, done, postID) {\r\n $.get(threadID === '?'\r\n ? `${ku_boardspath}/postbynumber.php?b=${boardID}&p=${postID}`\r\n : `${ku_boardspath}/${boardID}/res/${threadID}.html?${force_html_nocache ? Math.random() : ''}`)\r\n .then(data => {\r\n let posts = data.match(/<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-pd:[0-9]+\\s*?<\\/div\\s*?>[\\s\\S]+?<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-pd-end\\s*?<\\/div\\s*?>/gi)\r\n .map(match => {\r\n \tlet res = match.match(/<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-pd:([0-9]+)\\s*?<\\/div\\s*?>([\\s\\S]+?)<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-pd-end\\s*?<\\/div\\s*?>/i);\r\n \treturn {\r\n \t\tid: +res[1],\r\n \t\tbody: res[2]\r\n \t}\r\n })\r\n if (threadID === '?') {\r\n \tlet thrno = data.match(/<!--i0:thrno=([0-9]+)-->/) //wtf\r\n \tif (thrno)\r\n \t\tthreadID = thrno[1]\r\n }\r\n if (posts.length) {\r\n \tlet postMap = posts.map(post => {\r\n \t\tthis.cached[`${boardID}_${post.id}`] = post.body\r\n \t\treturn post.id\r\n \t})\r\n \tif (threadID !== '?') {\r\n \t this.threadMaps[`${boardID}_${threadID}`] = postMap\r\n \t}\r\n }\r\n done()\r\n })\r\n .fail(err => {\r\n done(err.status || 'null')\r\n })\r\n },\r\n getPost: function(boardID, threadID, postID, callback, secondTry) {\r\n let cachedPost = this.cached[`${boardID}_${postID}`]\r\n if (cachedPost) {\r\n callback(false, cachedPost)\r\n return\r\n }\r\n else {\r\n if (!secondTry) {\r\n let found = false\r\n if (boardID === this_board_dir) {\r\n let $post = $(`a[name=${postID}]`)\r\n if ($post.length) {\r\n let post = $post.parents('.postnode')[0].outerHTML\r\n this.cached[`${boardID}_${postID}`] = post\r\n found = true\r\n callback(false, post)\r\n }\r\n }\r\n if (!found) {\r\n this.loadThread(boardID, threadID, err => {\r\n if (err) {\r\n callback(err)\r\n }\r\n else {\r\n this.getPost(boardID, threadID, postID, callback, true)\r\n }\r\n }, postID)\r\n }\r\n }\r\n else {\r\n callback(null)\r\n }\r\n }\r\n },\r\n getThread: function(boardID, threadID, range, callback, secondTry, force) {\r\n let threadMap = force ? false : this.threadMaps[`${boardID}_${threadID}`]\r\n if (threadMap) {\r\n if (range) {\r\n threadMap = threadMap.filter(n => n > range[0] && n < range[1])\r\n }\r\n callback(false, threadMap.reduce((htm, postID) => htm + this.cached[`${boardID}_${postID}`], ''))\r\n }\r\n else {\r\n if (!secondTry) {\r\n this.loadThread(boardID, threadID, err => {\r\n if (err) {\r\n callback(err)\r\n }\r\n else {\r\n this.getThread(boardID, threadID, range, callback, true)\r\n }\r\n })\r\n }\r\n else {\r\n callback(null)\r\n }\r\n }\r\n },\r\n cached: {},\r\n threadMaps: {}\r\n}\r\n\r\nfunction switchFileType(el) {\r\n let exp = /\\.([a-z0-9]+)(?=$|\\?)/i\r\n , match = el.src.match(exp)\r\n if (!match) return;\r\n let exts = el.getAttribute('extset').toLowerCase().split(',')\r\n if (!exts.length) return;\r\n let i = exts.indexOf(match[1].toLowerCase())\r\n if (i == -1 || i >= (exts.length-1)) return;\r\n el.src = el.src.replace(exp, `.${exts[i+1]}`)\r\n}\r\n\r\nfunction LSfetchJSON(key) {\r\n let val = null, data = localStorage[key]\r\n if (typeof data !== 'undefined') {\r\n try {\r\n val = JSON.parse(data)\r\n }\r\n catch(e) {\r\n console.error(e)\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n return val\r\n}\r\n\r\n// YOBA alerts\r\nvar pups = {\r\n push: function(a) {\r\n // generate a unique alert ID\r\n a.id = (+_.uniqueId(_.now())).toString(16)\r\n this.container.insertAdjacentHTML('afterBegin', this.buildAlert(a))\r\n a.el = document.getElementById(`pup_${a.id}`)\r\n // Add the popup to the animation queue\r\n a.el.style.marginTop = -a.el.getBoundingClientRect().height + 'px'\r\n a.el.getBoundingClientRect() // This forces browser to respect the element's updated position for future animations (no idea why but it works)\r\n // Close on click\r\n a.el.onclick = () => {\r\n delete a.timeout\r\n a.onHold = false\r\n a.old = true\r\n a.el.classList.add('pup-away')\r\n a.el.style.marginTop = -a.el.getBoundingClientRect().height + 'px'\r\n }\r\n // Do not close if mouse is over\r\n a.el.onmouseenter = () => {\r\n // iterate stack from end to start\r\n this.stack.slice(0).reverse().find(ar => {\r\n ar.onHold = true\r\n return (ar.id == a.id) // break\r\n })\r\n }\r\n // Close after mouse leave\r\n a.el.onmouseleave = () => {\r\n this.stack.forEach(ae => {\r\n ae.onHold = false\r\n })\r\n this.holdOffTimeout = setTimeout(() => {\r\n this.stack.forEach(ae => {\r\n if (!ae.onHold && ae.old && ae.el) {\r\n ae.el.classList.add('pup-away')\r\n ae.el.style.marginTop = -a.el.getBoundingClientRect().height + 'px'\r\n }\r\n })\r\n }, 200)\r\n }\r\n this.queue.add(() => {\r\n this.scheduleClose(a)\r\n a.el.classList.remove('pup-pre')\r\n a.el.style.marginTop = null\r\n a.el.classList.remove('pup-noshadow')\r\n })\r\n this.stack.push(a)\r\n this.save()\r\n return a.id\r\n },\r\n closeByID: function(aid) {\r\n let a = this.byID(aid)\r\n if (a)\r\n a.el.onclick()\r\n },\r\n queue: {\r\n stack: [],\r\n busy: false,\r\n add: function(fn) {\r\n return new Promise((resolve, reject) => {\r\n if (! this.busy) {\r\n this.timeout = setTimeout(this.next.bind(this), this.cooldown * 1000)\r\n this.busy = true\r\n resolve(fn())\r\n }\r\n else {\r\n this.stack.push(() => resolve(fn()))\r\n }\r\n })\r\n },\r\n next: function() {\r\n let next = this.stack.shift()\r\n if (! next)\r\n this.busy = false\r\n else {\r\n next()\r\n this.timeout = setTimeout(this.next.bind(this), this.cooldown * 1000)\r\n }\r\n },\r\n cooldown: .3\r\n },\r\n byID: function(aid) {\r\n return this.stack.find(a => a.id == aid)\r\n },\r\n update: function(aid, upd) {\r\n let a = this.byID(aid)\r\n if (typeof upd !== 'object')\r\n a = {msg: upd}\r\n _.extend(a, upd)\r\n // reset timeout\r\n this.scheduleClose(a)\r\n a.el.setAttribute('pupclass', a.cls)\r\n a.el.querySelector('.pup-wrapped').innerHTML = this.buildAlert(a, 1)\r\n this.save()\r\n },\r\n buildAlert: function(a, contentsOnly=false) {\r\n let contents = `\r\n <div class=\"alert-icon\">\r\n <svg class=\"icon\"><use xlink:href=\"#i-${this.iconMap[a.cls]}\"></use></svg>\r\n </div>\r\n <div class=\"alert-msg\">${a.msg}</div>`\r\n if (contentsOnly)\r\n return contents\r\n return `<div class=\"pup ${a.old ? 'pup-away pup-away-full' : 'pup-pre pup-noshadow'}\" pupclass=\"${a.cls}\" id=\"pup_${a.id}\">\r\n <div class=\"pup-wrapped\">\r\n ${contents}\r\n </div>\r\n </div>`\r\n },\r\n iconMap: {\r\n succ: 'success',\r\n err: 'error',\r\n info: 'info',\r\n warn: 'warning'\r\n },\r\n historyToggle: function() {\r\n if (!this.stack.length) {\r\n this.push({cls: 'info', msg: _l.historyEmpty, destroy: true})\r\n return\r\n }\r\n let on = this.container.classList.toggle('history-mode')\r\n setTimeout(() => this.container.style.overflow = (on ? 'auto' : null), on ? 300 : 0)\r\n },\r\n scheduleClose: function(a) {\r\n if (a.timeout)\r\n clearTimeout(a.timeout)\r\n if (a.onHold)\r\n a.onHold = false\r\n let time = (a.time || a.time === 0) ? a.time : this.defaultTimeout\r\n if (time) // If time is 0 it means no timeout\r\n a.timeout = setTimeout(() => {\r\n a.old = true\r\n if (! a.onHold) {\r\n a.el.classList.add('pup-away')\r\n a.el.style.marginTop = -a.el.getBoundingClientRect().height + 'px'\r\n }\r\n }, time * 1000)\r\n },\r\n defaultTimeout: 3.5, // in seconds\r\n init: function(container_id=\"pups-container\") {\r\n document.body.insertAdjacentHTML('beforeEnd', `<div id=\"${container_id}\"><div class=\"pup-history-shadow\"></div></div>`)\r\n this.container = document.getElementById(container_id)\r\n if (! this.container) {\r\n console.error('No popup container found')\r\n return;\r\n }\r\n this.container.onclick = () => {\r\n if (this.container.classList.contains('history-mode')) {\r\n return this.historyToggle()\r\n }\r\n }\r\n // make aliases for error classes\r\n ['err', 'warn', 'info', 'succ', 'wait'].forEach(pupclass => {\r\n this[pupclass] = function(a, options={}) {\r\n if (typeof a !== 'object')\r\n a = {msg: a}\r\n a.cls = pupclass\r\n _.extend(a, options)\r\n return this.push(a)\r\n }\r\n })\r\n // load history from LS\r\n let log = LSfetchJSON('I0_event_log') || []\r\n log.forEach(a => {\r\n a.old = true\r\n this.container.insertAdjacentHTML('afterBegin', this.buildAlert(a))\r\n this.stack.push(a)\r\n })\r\n },\r\n historySize: 10,\r\n save: function() {\r\n let ss = [] \r\n _.cloneDeep(this.stack).forEach(a => {\r\n if (a.save) {\r\n // Clear stack from the properties that don't need to be saved\r\n ['old', 'onHold', 'timeout', 'el', 'save'].forEach(junkProperty => delete a[junkProperty])\r\n ss.push(a)\r\n }\r\n })\r\n while (ss.length > this.historySize) {\r\n ss.shift()\r\n }\r\n localStorage['I0_event_log'] = JSON.stringify(ss)\r\n },\r\n stack: []\r\n}"]}