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

1 line
450 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,"file":"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","settings_newMediaViewer","settings_hidePostBtn","settings_endlessScroll","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","asOP","historyEmpty","noDataLoaded","unable_load_20","captchaLangChanged","found","links","selectMultiple","selected","directLink","quoteLink","maxAttNumReached","unsupportedFileType","hideName","removeFile","spoilerOnOff","hidePost","unhidePost","settings_hideCompletely","pinUnpin","hideForm","collapseExpand","notEmpty","showName","showSubject","showEmbeds","showPassword","showTTL","attachFile","classicSimplifiedForm","showMarkup","refreshCatalog","cancelTimer","saved","savedMulti","password","captcha","captchaImage","refreshCaptcha","showCaptcha","captchaExpired","mod_","ru","odc","_l","locale","hasOwnProperty","onReady","pushTask","fn","isReady","tasks","push","ready","forEach","Array","prototype","indexOf","elt","Math","floor","ceil","len","length","from","arguments","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","_lastActiveForm","Object","defineProperty","window","get","getClientRects","updateActiveForm","set","el","querySelectorAll","a","classList","remove","form","_findParent","add","contains","toggleFormCollapse","floating","querySelector","lastActiveForm","findClosest","selector","height","innerHeight","list","closest","map","call","rect","offset","abs","y","filter","sort","e1","e2","insert","text","breakBefore","breakAfter","textarea","start","selectionStart","end","selectionEnd","pre","substr","charBefore","charAfter","selectionRange","setSelectionRange","focus","markup","$target","istart","iend","element","find","startPos","endPos","substring","bullets","bullet","$area","val","split","newtxt","quotes","type","areaVal","tag","quote","b","v","eval","checkhighlight","match","location","toString","$","highlight","id","offTimeout","removeClass","this_board_dir","$post","parents","addClass","setTimeout","bcr","getBoundingClientRect","docHeight","documentElement","clientHeight","bottom","top","postX","scrollTop","spaceAround","scrollTo","password_length","get_password","pass","getCookie","randomString","togglePassword","passwordbox_html","html","toLowerCase","newhtml","show","set_cookie","Styles","all","titles","init","_","each","getElementsByTagName","link","getAttribute","_default","hasAttribute","custom","current","customBypass","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","HiddenItems","hideCompletely","kind","ls","lists","write","buildCSS","unhide","hide","hiddenPosts","node","updateCSS","injector","inject","isHidden","hideItem","saveList","unhideItem","hideThread","slideDown","$thread","$form","promise","done","toggleFormFloating","unhideThread","togglePost","$body","$btn","css","attr","expandthread","threadid","board","expandFrom","data","expandTo","$omitted","prependTo","HTMLoader","getThread","err","replaceWith","replyMap","showReplies","newposts","busy","options","defaults","expectedPost","silent","onError","onSuccess","timestamp","execute","task","next","replies_container","$newposts_get","$lastQrl","last","lastpost","idb","bd","insertAdjacentHTML","unreadCounter","refreshTimestamp","info","stack","shift","flyTo","dest","destBox","destX","x","width","destY","elBox","style","transformOrigin","Promise","resolve","getComputedStyle","transition","oldBox","offRight","right","innerWidth","toggle","box","newWidth","left","toggleFormRow","btn","dataset","row","rem","isRowEmpty","_originalTitle","focal","inputs","checked","trim","updateReminders","float","pinner","getParentPost","f","then","drags","mousedown","e","stopPropagation","dragsOff","prop","hidePostForm","_preview","_pinned","toggleFormSimplify","simplify","simplified","clonePostForm","anchorID","preview","boardName","getPostbox","oldForm","Captcha","enabled","state","newForm","cloneNode","innerText","blotter","onclick","uniqueId","l","newid","input","setAttribute","resetForm","richFileInput","initForm","maybePost","_findPrevious","matches","skip","anchor","pinned","ondragstart","ondrop","quickreply","$this","threadID","postID","fromExternalBoard","is_overboard","$preview","needInsert","_findNext","formExists","formHidden","formFloating","quotation","getPostQuotation","parentElement","insertAdjacentElement","existingForm","_getSelection","getSelection","selection","selectedText","anchorNode","getLocalSelection","sel","_isChildOf","popupMessage","content","delay","console","warn","forceEnable","captchaTimeout","addImgLoadListener","cw","onClick","bind","evt","addEventListener","onFieldClick","onload","onImageLoad","evType","onAnimationEnd","_state","s","offsetWidth","clear","refresh","ctrlKey","altKey","target","switch_lang","cColor","slice","ku_boardspath","random","img","src","formatFileSize","bytes","round","handleFiles","fromClipboard","maxfiles","slotsLeft","filesLeft","fileAttached","handleFile","fx","ns","ext","pop","allowedAllFiletypes","allowedFiletypes","fname","sizeFormatted","size","reader","FileReader","result","addFile","readAsDataURL","extra","index","store","makeGenericFileIcon","recalcForm","thisEl","updateInfo","toUpperCase","naturalWidth","naturalHeight","onerror","_ext","updateTitle","count","innerHTML","$el","hasClass","serialize","fd","fe","_this","on","$entry","toggleClass","select","item","items","clipboardData","originalEvent","arr","getAsFile","nodeName","dataTransfer","Sortable","create","animation","handle","removeAttribute","area","previousElementSibling","clearStore","color","char","reverse","handleCtrlEnter","activeElement","Ajax","submitPost","redirectTo","href","sage","hcaptcha","async","response","key","actuallySubmitPost","error","shownErrors","hCaptchaResponse","alertsToRemove","clone","closeByID","showError","captchafield","showWarning","FormData","xr","XMLHttpRequest","postToken","open","action","status","res","parse","error_verbose","error_type","ku_cgipath","badatt","error_data","attachmenttype","position","timings","log","nokoInput","noko","thread_replyto","post_id","reload","send","reportPost","callback","forms","delform","postsReported","postErrors","success","msg","message","timerToken","postsSaved","$reply","modThread","$a","$li","$posthead","$extrabtns","prepend","makeIcon","deleteItems","has","delToken","inspectFormData","formData","entries","pair","classes","bare","addCaptchaToMenu","$menu","keydown","MediaViewer","min","postnum","imgurl","thumburl","imgw","imgh","isVideo","thumb","initZoom","createContainer","resetTransform","PostPreviews","pinPreview","thBCR","thumb_x","thumb_y","thumb_w","thumb_h","win_w","viewer","clientWidth","win_h","scaleDownFactor","pre_w","mi_w","mi_h","trans","me","_ins","createMediaElement","refreshList","currentThumb","visibility","updateCounter","showPercentage","_isVideo","setVolume","_scaleDownFactor","currentMediaItem","_realWidth","body","overflow","requestAnimationFrame","container","transform","findIndex","handleZoom","mouseX","clientX","mouseY","clientY","isMouseDown","handleDrag","button","ov","pointerEvents","gripX","gripY","emptyClick","isDragged","pnb","switchItem","toggleFullSize","translateX","translateY","scale","zoomAmount","minScale","zoomSteps","sign","dir","deltaY","initialScale","zSteps","z","concat","centerX","centerY","newScale","isNaN","applyTransform","flashLabel","dx","dy","initialTransX","initialTransY","parseVideo","parseImg","thumbw","thumbh","vid","volume","onvolumechange","muted","clearTimeout","flashLabelTimeout","svg","resizeFactor","offScreen","thumbBCR","transX","transY","onCollapse","underImageSrc","Element","firstElementChild","lastElementChild","nextElementSibling","expandimg_old","getElementById","fc_width","$element","$postbody","$fc_filename","event","which","Settings","expandImgFull","max_w","offset_el","offsetLeft","offsetParent","new_w","ratio","zoom","notice","createElement","textDecoration","textNode","createTextNode","appendChild","insertBefore","maxWidth","expandimg","newMediaViewer","mv","zindex","_parseLink","cl","_mouseover","isCatalog","parsedURL","parentid","postid","previewid","children","first","before","mouseleave","_mouseout","mouseover","mouseOverPreview","pageY","pageX","zIndex","cursor","getPost","ebtns","is","fadeout","nodelay","predelay","_timings","fade","pin","temporary","o","set_inputs","savedName","em","postpassword","set_delpass","special","load","nodeType","tagName","complete","readyState","handler","apply","trigger","jQuery","_checkbox","clicked","settingName","defaultValue","perBoard","settingNameGeneral","removeAttr","fxEnabled","changed","off","is_catalog","sfwMode","constrainWidth","hidePostBtn","endlessScroll","rswap","swap","after","setCaptchaLang","lang","offClick","readyset","isTouch","pf","chpok","LatexIT","checkgotothread","checknamesave","bnrs","processNodeInsertion","add_mob_menu","menu_show","cloud20","mouseenter","head","js","OpenLatexEditor","expandVideo","xl","animate","htm","stripHTML","ref","postnode","formBoard","postBody","qoutation","unwrapEmbed","wrapEmbed","countries","$fig","$fsz","pause","itemCount","$postnode","isOP","opmod","visible","$boundTo","ofs","offsetTop","outerHeight","outerWidth","fileid","$pn","pid","__menuProps","isFile","$md","isShown","menu","$item","$pass","$c","special_error","errors","cssLink","styleName","isTrip","resize","$fileMenu","textbox","onfocus","onblur","animationName","catalog","appendTo","trip","getJSON","formatDate","fadeIn","fail","liveupd_ena","io","updater","doubletap","bindType","delegateType","handleObj","targetData","now","delta","lastTouch","touches","origType","property","changedTouches","NTP","calc","t0","t1","t2","t3","sync","force","pending","valueOf","ajax","servertime","synced","timeWithOffset","getServerTime","externallyResolvingPromise","promiseResolve","promiseReject","reject","$node","prettyPrint","render","iv","updateTTL","srvTime","ms_left","min_left","h_left","padLeft","markOnly","clearInterval","setInterval","atLoad","audio","play","noop","newThreads","socket","connect","liveupd_api","subscribeTo","liveupd_sitename","thr","dispatch","emit","writable","configurable","token","notifyAboutNewThreads","notifyAboutNewRepliesOnBoardPage","showNewReplies","hasFocus","board_desc","new_thread_id","showNewThreads","room","repliesOnBoardPage","reply_id","refreshNewRepliesCount","$counter","clearCounter","loadNewReplies","$freshReplies","freshReplies","__alreadyLoading","$wta","insideDeletedThread","bySelf","postsDeleted","filesDeleted","fileErrors","deletedClasses","by_op","by_mod","itemtype","prev","thread_id","kumod","expandVideo_old","$mov","movieurl","dt","uid","video","new_h","checkd","doc","navigatepages","docloc","page","docloc_trimmed","lastIndexOf","docloc_valid","relativepost","maxthreads","getElementsByName","newrelativepost","attachEvent","NodeList","parentNode","Node","root","postNum","repliesContainer","linkData","className","linkDestBoard","linkPostNum","includes","elements","dimensions","scrollY","_top","mid","elMap","parentBCR","elems","pos","relativeVisibleWidth","relativeVisibleHeight","primaryVisibility","secondaryVisibility","primaryOffset","secondaryOffset","bcrBefore","loaded","bcrAfter","scrollBy","lastTime","vendors","cancelAnimationFrame","max","currTime","timeToCall","menu_current","menu_last","dl","queue","clearQueue","menu_pin","toggle_oldmenu","mode","implementation","hasFeature","eqn","txt","atxt","extxt","r","g","replaceWithSrc","$scope","scope","normalizergb","toFixed","normalizergba","needle","haystack","opt","extend","$drag","z_idx","drg_h","drg_w","pos_y","pos_x","onMove","$iw","paddingBottom","code","iframeOptions","enccode","encodeURI","$ew","empty","isClone","fields","field","onchange","indicator","embedLinks","process","site","nextCheckbox","exp","onmouseleave","hideTimeout","onmouseenter","cms","areaID","ro","readOnly","sub","ttl","fileButton","alias","existing","styleSheet","cssText","removeChild","chars","mm","$mmw","overboard_dir","overboard_desc","cats","boards10","getBoards","b20","order","boards","cat","ix","desc","sqrt","R","allboards","toexpand","sd","sect","section","rs","rj","query","display","opts","ku_boardsfolder","reduced","bnr","path","toDisplay","randomItem","getRandomInt","array","sites","rx","fruit","conf","layout","respectStickied","expandOnHover","saveConfig","myConf","refreshBtn","sortBtns","v_d_i","pinBtns","hideBtns","layoutBtns","searchInput","$card","getEmbedThumb","currentTarget","threadIX","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","expanderBtn","playerBtn","embeds","smallThumb","file_type","ftype","thumbURL","vartype","bigThumb","isGeneric","op","repliesLabel","reply_count","last_reply","images","countersCombined","posterauthority","nameDatePriority","tripcode","poster","this_board_defaultName","dn","dateCompact","searchData","subject","buildIndicators","layouts","stickied","lock","locked","deathmark","deleted_timestamp","burger","and","indicatorsCombined","tmp","createHTMLDocument","textContent","overboard","_boards","unique","boardid","idFromName","built","lastvisits","last_ts","parseInt","dataType","valstr","$brd","loadThread","boardID","force_html_nocache","thrno","postMap","cached","threadMaps","loadPage","chunk","pageCleanUp","existingIDs","secondTry","cachedPost","range","threadMap","reduce","cachedPostboxes","pb","hcaptchaScript","firstChild","bound","onScroll","removeEventListener","scrollHeight","loader","switchFileType","exts","buildAlert","marginTop","timeout","onHold","old","ar","ae","holdOffTimeout","scheduleClose","aid","byID","cooldown","upd","cls","contentsOnly","contents","iconMap","historyToggle","destroy","defaultTimeout","container_id","pupclass","historySize","cloneDeep","junkProperty"],"sources":["es6/src/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 settings_newMediaViewer: \"Experimental media viewer\",\r\n settings_hidePostBtn: 'Post hide buttons',\r\n settings_endlessScroll: 'Endless scrolling',\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 asOP: 'as OP',\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 maxAttNumReached: 'Attachments number limit reached.',\r\n unsupportedFileType: 'unsupported file type',\r\n hideName: 'Hide file name',\r\n removeFile: 'Remove file',\r\n spoilerOnOff: 'Spoier On/Off',\r\n hidePost: 'Hide post',\r\n unhidePost: 'Unhide post',\r\n settings_hideCompletely: 'Hide items completely',\r\n pinUnpin: 'Pin/Unpin',\r\n hideForm: 'Hide form',\r\n collapseExpand: 'Collapse/Expand',\r\n notEmpty: 'Not empty',\r\n showName: 'Show/hide name/trip field',\r\n showSubject: 'Show/hide subject field',\r\n showEmbeds: 'Show/hide embeds',\r\n showPassword: 'Show/hide password field',\r\n showTTL: 'Show/hide time-to-live field',\r\n attachFile: 'Attach file...',\r\n classicSimplifiedForm: 'Classic/simplified form',\r\n showMarkup: 'Show/hide markup',\r\n refreshCatalog: 'Refresh catalog',\r\n cancelTimer: 'Cancel timer',\r\n saved:'saved from deletion',\r\n savedMulti: 'saved from deletion',\r\n password: 'Password',\r\n captcha: 'Captcha',\r\n captchaImage: 'Captcha image',\r\n refreshCaptcha: 'Refresh captcha',\r\n showCaptcha: 'Show captcha',\r\n captchaExpired: 'Captcha has expired.',\r\n mod_: 'Mod.'\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 settings_newMediaViewer: \"Экспериментальный просмотрщик медиа\",\r\n settings_hidePostBtn: 'Кнопки скрытия постов',\r\n settings_endlessScroll: 'Бесконечная прокрутка',\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 asOP: 'от лица ОПа',\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 maxAttNumReached: 'Превышено допустимое число вложений.',\r\n unsupportedFileType: 'недопустимый тип файла',\r\n hideName: 'Скрыть имя файла',\r\n removeFile: 'Удалить файл',\r\n spoilerOnOff: 'Спойлер Вкл/Выкл',\r\n hidePost: 'Скрыть пост',\r\n unhidePost: 'Раскрыть пост',\r\n settings_hideCompletely: 'Скрывать треды и посты полностью',\r\n pinUnpin: 'Прикрепить/Открепить',\r\n hideForm: 'Скрыть форму',\r\n collapseExpand: 'Свернуть/Развернуть',\r\n notEmpty: 'Содержит данные',\r\n showName: 'Показать/скрыть поле имени',\r\n showSubject: 'Показать/скрыть поле темы',\r\n showEmbeds: 'Показать/скрыть вложения',\r\n showPassword: 'Показать/скрыть поле ввода пароля',\r\n showTTL: 'Показать/скрыть время жизни',\r\n attachFile: 'Прикрепить файл...',\r\n classicSimplifiedForm: 'Упрощенная/классическая форма',\r\n showMarkup: 'Показать/скрыть разметку',\r\n refreshCatalog: 'Обновить каталог',\r\n cancelTimer: 'Отменить таймер',\r\n saved:'спасен от удаления',\r\n savedMulti: 'спасены от удаления',\r\n password: 'Пароль',\r\n captcha: 'Captcha',\r\n captchaImage: 'Captcha image',\r\n refreshCaptcha: 'Обновить капчу',\r\n showCaptcha: 'Показать капчу',\r\n captchaExpired: 'Капча протухла.',\r\n mod_: 'Мод.'\r\n }\r\n}\r\nvar _l = (typeof locale !== 'undefined' && _messages.hasOwnProperty(locale)) ? _messages[locale] : _messages.ru;\r\n\r\nvar onReady = {\r\n pushTask: function(fn) {\r\n if (this.isReady)\r\n fn()\r\n else\r\n this.tasks.push(fn)\r\n },\r\n tasks: [],\r\n ready: function() {\r\n this.isReady = true\r\n this.tasks.forEach(fn=>fn())\r\n }\r\n}\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\nvar _lastActiveForm = false\r\nObject.defineProperty(window, 'lastActiveForm', {\r\n get: function() {\r\n if (!_lastActiveForm || !_lastActiveForm.getClientRects().length) {\r\n updateActiveForm()\r\n }\r\n return _lastActiveForm\r\n },\r\n set: function(el) {\r\n document.querySelectorAll('.qrf-active').forEach(a => a.classList.remove('qrf-active'))\r\n if (el) {\r\n let form = el._findParent('form') // _findParent retuns element itself if in matches the selector\r\n form.classList.add('qrf-active')\r\n if (form.classList.contains('collapsed')) {\r\n toggleFormCollapse(form, false/*← uncollapse*/, false/*← no focus*/)\r\n }\r\n _lastActiveForm = form\r\n }\r\n else\r\n _lastActiveForm = false\r\n }\r\n})\r\nfunction updateActiveForm() {\r\n let floating = document.querySelector('.qrf-floating:not(.collapsed)')\r\n if (floating) {\r\n lastActiveForm = floating\r\n return\r\n }\r\n lastActiveForm = findClosest('.qrf-floating.collapsed, .quick-reply-form textarea')\r\n return\r\n}\r\n\r\nfunction findClosest(selector) {\r\n let height = window.innerHeight\r\n , hh = height / 2\r\n , list = document.querySelectorAll(selector)\r\n if (!list) return false\r\n let closest = [].map.call(list, el => {\r\n let rect = el.getClientRects()\r\n , offset = rect.length\r\n ? Math.abs(hh - (rect[0].y + rect[0].height/2))\r\n : null\r\n return { el: el, offset: offset }\r\n })\r\n .filter(a => a.offset !== null)\r\n .sort((e1, e2) => e1.offset < e2.offset ? -1 : 1)\r\n return closest.length ? closest[0].el : false\r\n}\r\n\r\nfunction insert(text, breakBefore=true, breakAfter=true) {\r\n let form = lastActiveForm || document.querySelector('#postform')\r\n , textarea = form && form.querySelector('textarea')\r\n if(textarea) {\r\n if (form.classList.contains('collapsed')) {\r\n toggleFormCollapse(form, false/*← uncollapse*/, false/*← no focus*/)\r\n }\r\n let start = textarea.selectionStart\r\n , end = textarea.selectionEnd\r\n , pre = textarea.value.substr(0,start)\r\n , post = textarea.value.substr(end)\r\n , charBefore = pre[pre.length-1]\r\n , charAfter = post[0]\r\n if (breakBefore && text[0] !== \"\\n\" && charBefore && charBefore !== \"\\n\")\r\n text = \"\\n\"+text\r\n if (breakAfter && text[text.length-1] !== \"\\n\" && charAfter !== \"\\n\")\r\n text += \"\\n\"\r\n let selectionRange = start + text.length\r\n textarea.value = pre + text + post\r\n textarea.setSelectionRange(selectionRange, selectionRange)\r\n textarea.focus()\r\n }\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[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') && 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 quotes($target, type) {\r\n let $area = $target.find('textarea')\r\n , areaVal = $area.val()\r\n , element = $area[0]\r\n , startPos = element.selectionStart\r\n , endPos = element.selectionEnd\r\n , selected = areaVal.substring(startPos, endPos)\r\n , newtxt = \"\"\r\n if (~selected.indexOf('\\n')) { // multiline quoting\r\n selected = areaVal.substring(startPos, endPos).split('\\n')\r\n for(var i=0; i<selected.length; i++) {\r\n let bullet = (type=='g') ? '>'\r\n : (type=='r') ? '<'\r\n : (i%2) ? '<'\r\n : '>'\r\n newtxt += (bullet + ' ' + selected[i])\r\n if(i < (selected.length - 1)) newtxt += '\\n'\r\n }\r\n }\r\n else { // inline quoting\r\n let tag = type=='r' ? 'rq' : 'q'\r\n newtxt = `[${tag}]${selected}[/${tag}]`\r\n }\r\n element.value =\r\n areaVal.substring(0, startPos)\r\n + newtxt +\r\n areaVal.substring(endPos)\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 if (!(''+id).split('-')[1])\r\n id += '-'+this_board_dir\r\n let $post = $(`#postbody${id}`).parents('.reply')\r\n if (!$post.length) return false;\r\n let post = $post[0]\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\nconst password_length = 20;\r\n\r\nfunction get_password(name) {\r\n let pass = getCookie(name);\r\n if(pass) return pass;\r\n pass = randomString(password_length)\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')\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 HiddenItems = {\r\n init: function() {\r\n this.hideCompletely = localStorage['hideCompletely.'+this_board_dir]=='true'\r\n ;['posts', 'threads'].forEach(kind => {\r\n let ls = localStorage[`hidden${_.capitalize(kind)}`]\r\n , list = ls ? ls.split(',').filter(a => a) : []\r\n this.lists[kind] = list\r\n })\r\n document.write(`<style id=\"injector:hideitems\">${this.buildCSS()}</style>`)\r\n },\r\n buildCSS: function() {\r\n let unhide = [], hide = [], hiddenPosts = []\r\n ;['posts', 'threads'].forEach(kind => {\r\n this.lists[kind].forEach(id => {\r\n if (kind==\"posts\") {\r\n let node = `#postnode${id}`\r\n hiddenPosts.push(node)\r\n if (this.hideCompletely)\r\n hide.push(node)\r\n else\r\n hide.push(`#postbody${id}`)\r\n }\r\n else if(ispage) {\r\n hide.push(`#thread${id}`)\r\n if (this.hideCompletely) {\r\n hide.push(`#unhidethread${id}`)\r\n hide.push(`#thread${id} + br`)\r\n hide.push(`#thread${id} + br + hr`)\r\n }\r\n else {\r\n unhide.push(`#unhidethread${id}`)\r\n }\r\n }\r\n })\r\n })\r\n if (hiddenPosts.length) {\r\n onReady.pushTask(() => {\r\n $(hiddenPosts.join(',')).addClass('post-hidden')\r\n })\r\n }\r\n return (hide.length ? hide.join(',') + '{ display: none }' : '') +\r\n (unhide.length ? unhide.join(',') + '{ display: inline-block }' : '')\r\n },\r\n updateCSS: function() {\r\n injector.inject('hideitems', this.buildCSS())\r\n },\r\n hideCompletely: false,\r\n lists: {},\r\n isHidden: function(kind, id) {\r\n return this.lists[kind+'s'].indexOf(id.toString()) != -1 \r\n },\r\n hideItem: function(kind, id) {\r\n if (this.isHidden(kind, id)) return;\r\n this.lists[kind+'s'].push(id)\r\n this.saveList(kind)\r\n },\r\n unhideItem: function(kind, id) {\r\n if (!this.isHidden(kind, id)) return;\r\n this.lists[kind+'s'] = this.lists[kind+'s'].filter(a => a!=id)\r\n this.saveList(kind)\r\n },\r\n hideThread: function(id, inCatalog=false) {\r\n this.hideItem('thread', id)\r\n $('#unhidethread' + id).slideDown()\r\n let $thread = $('#thread' + id)\r\n , $form = $thread.find('.qrf-floating')\r\n $thread.slideUp().promise().done(updateActiveForm)\r\n if ($form.length)\r\n toggleFormFloating($form[0], false /* ← float=off*/, false /* ← no focus*/)\r\n },\r\n unhideThread: function(id, inCatalog=false) {\r\n this.unhideItem('thread', id)\r\n $('#thread' + id).slideDown()\r\n $('#unhidethread' + id).slideUp()\r\n },\r\n hidePost: function(id) {\r\n this.hideItem('post', id)\r\n $('#postbody' + id).slideUp('fast')\r\n },\r\n unhidePost: function(id) {\r\n this.unhideItem('post', id)\r\n $('#postbody' + id).slideDown('fast')\r\n },\r\n togglePost: function(id) {\r\n let $body = $('#postbody' + id)\r\n , $btn = $body.parent().find('.hide-post-btn')\r\n if ($body.css('display') == 'none') {\r\n this.unhidePost(id)\r\n $btn.attr('title', _l.hidePost)\r\n .find('use').attr('xlink:href', '#i-hide')\r\n }\r\n else {\r\n this.hidePost(id)\r\n $btn.attr('title', _l.unhidePost)\r\n .find('use').attr('xlink:href', '#i-unhide')\r\n }\r\n },\r\n saveList: function(kind) {\r\n localStorage[`hidden${_.capitalize(kind)}s`] = this.lists[kind+'s'].join(',')\r\n }\r\n}\r\nHiddenItems.init()\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').data('id')\r\n , expandTo = + $thread.find('.postnode:not(.op):first').data('id')\r\n , $omitted = $thread.find('.omittedposts')\r\n $omitted.find('a').hide()\r\n if (! $omitted.find('span').length) {\r\n $(`<div class=\"spinner\"></div><span>${_l.loading}...</span>`).prependTo($omitted)\r\n }\r\n else {\r\n $omitted.find('.spinner').show()\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 setTimeout(() => $omitted.find('.spinner').hide(), 1000)\r\n $omitted.find('span').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 if (!threadid.split('-')[1])\r\n threadid += '-'+this_board_dir\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} .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 let idb = threadid.split('-')\r\n , id = idb[0], bd = idb[1]\r\n HTMLoader.getThread(bd, id, [+(lastpost.split('-')[0]),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, bd)\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\n// Hiding animation\r\nfunction flyTo(el, dest) {\r\n let destBox = dest.getBoundingClientRect()\r\n , destX = destBox.x + (destBox.width / 2)\r\n , destY = destBox.y + (destBox.height / 2)\r\n , elBox = el.getBoundingClientRect()\r\n el.style.transformOrigin = `${(destX - elBox.x) + 'px'} ${(destY - elBox.y) + 'px'}`\r\n el.classList.add('fly-to-zero')\r\n return new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n el.classList.remove('fly-to-zero')\r\n el.style.transformOrigin = null\r\n resolve(el)\r\n }, (+getComputedStyle(el).transition.match(/transform ([0-9\\.]+)/)[1] * 1000) + 100 )\r\n })\r\n}\r\n\r\nfunction toggleFormCollapse(form, collapse = !form.classList.contains('collapsed'), focus = !collapse) {\r\n let oldBox = form.getBoundingClientRect()\r\n , offRight = oldBox.right - (window.innerWidth - 32)\r\n form.classList.toggle('collapsed', collapse)\r\n let box = form.getBoundingClientRect()\r\n , newWidth = box.width\r\n form.style.left = \r\n box.left \r\n + (oldBox.width - newWidth) \r\n - (offRight > 0 ? offRight : 0) \r\n + 'px'\r\n form.querySelector('.collapser').classList.toggle('collapsed', collapse)\r\n if (focus) {\r\n form.querySelector('textarea').focus()\r\n }\r\n}\r\n\r\nfunction toggleFormRow(form, btn) {\r\n let id = btn.dataset.toggle\r\n , row = form.querySelector(`.${btn.dataset.toggle}-row`)\r\n if (! row) return;\r\n let show = row.classList.toggle('row-shown')\r\n btn.querySelector('svg').classList.toggle('pressed', show)\r\n let rem = show ? 0 : isRowEmpty(row, id)\r\n btn.classList.toggle('button-with-reminder', rem)\r\n if (rem) {\r\n if (! btn._originalTitle)\r\n btn._originalTitle = btn.title\r\n btn.title = `${btn._originalTitle} (${_l.notEmpty})`\r\n }\r\n else if (btn._originalTitle)\r\n btn.title = btn._originalTitle\r\n if (show) { // focus on field\r\n let focal = null\r\n if (id == 'subject-send') {\r\n let i = form.querySelector('input[name=subject]')\r\n if (!i.value)\r\n focal = i\r\n }\r\n if (id == 'name') {\r\n let i = form.querySelector('input[name=name]')\r\n if (!i.value && !i.disabled)\r\n focal = i\r\n }\r\n if (id == 'embed') {\r\n let inputs = [].filter.call(form.querySelectorAll('input[type=text][name^=embed]'), \r\n el => el.getClientRects().length && !el.value)\r\n if (inputs.length)\r\n focal = inputs[0]\r\n }\r\n if (focal)\r\n focal.focus()\r\n }\r\n}\r\n\r\nfunction isRowEmpty(row, id) {\r\n return !!(\r\n (id == 'name' &&\r\n row.querySelector('input[name=name]').value != ''\r\n &&\r\n !row.querySelector('input[name=disable_name]').checked\r\n ) ||\r\n (id == 'subject-send' &&\r\n row.querySelector('input[name=subject]').value != ''\r\n ) ||\r\n (id == 'embed' &&\r\n [].find.call(row.querySelectorAll('input[type=text]'), i => i.value.trim())\r\n ) ||\r\n (id == 'ttl' &&\r\n row.querySelector('input[name=ttl-enable]').checked\r\n )\r\n )\r\n}\r\n\r\nfunction updateReminders(form) {\r\n ['name', 'subject-send', 'embed', 'ttl'].forEach(id => {\r\n let row = form.querySelector(`.${id}-row:not(.row-shown)`)\r\n , btn = row && form.querySelector(`.simplified-toggle[data-toggle=\"${id}\"]`)\r\n if (btn)\r\n btn.classList.toggle('button-with-reminder', isRowEmpty(row, id))\r\n })\r\n}\r\n\r\nfunction toggleFormFloating(form, float, focus=true) {\r\n let pinner = form.querySelector('.pinner')\r\n pinner.classList.toggle('pinned', !float)\r\n pinner.classList.toggle('unpinned', float)\r\n if (float) { // Make the form floating\r\n // Pin other forms\r\n scrollAnchor.save('toggleFormFloating', form.getParentPost())\r\n document.querySelectorAll('.qrf-floating').forEach(f => toggleFormFloating(f, false))\r\n scrollAnchor.restore('toggleFormFloating')\r\n .then(() => { // When all scrolling is settled\r\n let box = form.getBoundingClientRect()\r\n form.classList.add('qrf-floating')\r\n form.classList.remove('qrf-builtin', 'qrf-builtin-back')\r\n form.style.top = box.top + 'px'\r\n form.style.left = box.left + 'px'\r\n $(form).drags()\r\n .find('input, textarea, select, label, .fe-sort-wrapper, button, .b-icon').mousedown(function(e) {\r\n e.stopPropagation()\r\n })\r\n })\r\n }\r\n else { // Build the form back in\r\n form.classList.remove('qrf-floating', 'collapsed')\r\n form.querySelector('.collapser').classList.remove('collapsed')\r\n form.classList.add('qrf-builtin', 'qrf-builtin-back')\r\n $(form).dragsOff()\r\n ;['top', 'left', 'zIndex'].forEach(prop => form.style[prop] = null)\r\n }\r\n if (focus)\r\n form.querySelector('textarea').focus()\r\n}\r\n\r\nfunction hidePostForm(form) {\r\n form.classList.add('hidden')\r\n toggleFormFloating(form, false)\r\n toggleFormCollapse(form, false)\r\n setTimeout(() => {\r\n form.classList.remove('qrf-builtin-back')\r\n }, 200)\r\n if (form._preview) {\r\n let pinner = form._preview.querySelector('.pinner')\r\n if (pinner) {\r\n pinner.classList.remove('pinned')\r\n pinner.classList.add('unpinned')\r\n }\r\n form._preview._pinned = false\r\n }\r\n updateActiveForm()\r\n}\r\n\r\nfunction toggleFormSimplify(form, simplify) {\r\n let simplified = form.classList.toggle('postform-simplified', simplify)\r\n if (simplified)\r\n updateReminders(form)\r\n}\r\n\r\nfunction clonePostForm(anchorID, preview, boardName=false) {\r\n return new Promise((resolve, reject) => {\r\n HTMLoader.getPostbox(boardName).then(oldForm => {\r\n if (Captcha.enabled)\r\n Captcha.state = 'init' // Destroy old captcha because it will be inevitably reloaded at form cloning\r\n let newForm = oldForm.cloneNode(true)\r\n newForm.id = anchorID + '_qrf'\r\n newForm.dataset.anchorID = anchorID\r\n newForm.classList.remove('main-reply-form')\r\n newForm.querySelector('.simplified-send-row .primary span').innerText = _l.reply\r\n newForm.querySelector('input[name=\"postpassword\"]').value = get_password('postpassword')\r\n newForm.querySelector('input.primary').value = _l.reply\r\n newForm.querySelector('.noko-row').remove()\r\n let blotter = newForm.querySelector('.blotter-row')\r\n if (preview)\r\n newForm._preview = preview\r\n blotter.insertAdjacentHTML('afterend', `\r\n <span class=\"extrabtns simplified-extras\">\r\n ${newForm.querySelector('.name-row') ? `\r\n <a href=\"#\" class=\"simplified-toggle\" data-toggle=\"name\" title=\"${_l.showName}\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-name\"></use></svg>\r\n </a>\r\n ` : ''}\r\n <a href=\"#\" class=\"simplified-toggle\" data-toggle=\"subject-send\" title=\"${_l.showSubject}\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-subject\"></use></svg>\r\n </a>\r\n <a href=\"#\" class=\"s-markup\" data-toggle=\"password\" title=\"${_l.showMarkup}\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-markup\"></use></svg>\r\n </a>\r\n ${newForm.querySelector('.embed-row') ? `\r\n <a href=\"#\" class=\"simplified-toggle\" data-toggle=\"embed\" title=\"${_l.showEmbeds}\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-embed\"></use></svg>\r\n </a>\r\n ` : ''}\r\n <a href=\"#\" class=\"simplified-toggle\" data-toggle=\"password\" title=\"${_l.showPassword}\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-password\"></use></svg>\r\n </a>\r\n ${newForm.querySelector('.ttl-row') ? `\r\n <a href=\"#\" class=\"simplified-toggle\" data-toggle=\"ttl\" title=\"${_l.showTTL}\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-timer\"></use></svg>\r\n </a>\r\n ` : ''}\r\n </span>`)\r\n // Name reminder\r\n updateReminders(newForm)\r\n // Enabling extra inputs in simplified form\r\n newForm.querySelectorAll('.simplified-toggle').forEach(a => {\r\n a.onclick = ev => {\r\n ev.preventDefault()\r\n toggleFormRow(newForm, a)\r\n }\r\n })\r\n newForm.querySelector('.s-markup').onclick = function(ev) {\r\n ev.preventDefault()\r\n this.querySelector('.icon').classList.toggle('pressed')\r\n newForm.querySelector('.message-row').classList.toggle('markup-enabled')\r\n }\r\n blotter.remove()\r\n // Rename label[for]s and corresponding inputs\r\n let add = '_'+_.uniqueId()\r\n // newForm.id = 'postform'+add\r\n newForm.querySelectorAll('label').forEach(l => {\r\n let id = l.getAttribute('for')\r\n , newid = id + add\r\n , input = newForm.querySelector('#'+id)\r\n if (input)\r\n input.id = newid\r\n l.setAttribute('for', newid)\r\n })\r\n newForm.classList.add('quick-reply-form') // New general class to tell qr form apart from the main form\r\n newForm.classList.add('postform-simplified')\r\n // Clear fields\r\n resetForm(newForm, true /* ← isClone */)\r\n // Init rich file input\r\n richFileInput.initForm(newForm)\r\n // Add extra buttons\r\n newForm.insertAdjacentHTML('beforeend', `\r\n <span class=\"extrabtns postboxcontrol\">\r\n <svg class=\"icon form-handle-icon\"><use xlink:href=\"#i-handle\"></use></svg>\r\n <a href=\"#\" title=\"${_l.classicSimplifiedForm}\" class=\"simplify-qr-form\">\r\n <svg class=\"icon b-icon\">\r\n <use class=\"use-simplify\" xlink:href=\"#i-simplify\"></use>\r\n <use class=\"use-complicate\" xlink:href=\"#i-complicate\"></use>\r\n </svg>\r\n </a>\r\n <a href=\"#\" title=\"${_l.collapseExpand}\" class=\"collapse-qr-form collapser\">\r\n <svg class=\"icon b-icon\">\r\n <use class=\"use-collapse\" xlink:href=\"#i-collapse\"></use>\r\n <use class=\"use-uncollapse\" xlink:href=\"#i-uncollapse\"></use>\r\n </svg>\r\n </a>\r\n <a href=\"#\" class=\"pinner\" title=\"${_l.pinUnpin}\">\r\n <svg class=\"icon b-icon\">\r\n <use class=\"use-pin\" xlink:href=\"#i-float\"></use>\r\n <use class=\"use-unpin\" xlink:href=\"#i-unfloat\"></use>\r\n </svg>\r\n </a>\r\n &nbsp;\r\n <a href=\"#\" title=\"${_l.hideForm}\" class=\"hide-qr-form\">\r\n <svg class=\"icon b-icon\"><use xlink:href=\"#i-x\"></use></svg>\r\n </a>\r\n </span>`)\r\n // Form button actions\r\n newForm.getParentPost = () => {\r\n let maybePost = newForm._findPrevious('*:not(.i0svcel)')\r\n return maybePost.matches('.postnode') ? maybePost : null\r\n }\r\n newForm.querySelector('.hide-qr-form').onclick = ev => {\r\n ev.preventDefault()\r\n let skip = false\r\n if (newForm.classList.contains('qrf-floating')) {\r\n let anchor = newForm.getParentPost()\r\n if (anchor) {\r\n flyTo(newForm, anchor.querySelector('a.qrl .b-icon')).then(hidePostForm)\r\n skip = true\r\n }\r\n }\r\n if (!skip) {\r\n hidePostForm(newForm)\r\n }\r\n }\r\n newForm.querySelector('.simplify-qr-form').onclick = ev => {\r\n ev.preventDefault()\r\n toggleFormSimplify(newForm)\r\n }\r\n newForm.querySelector('.pinner').onclick = function(ev) {\r\n ev.preventDefault()\r\n let pinned = newForm.classList.contains('qrf-builtin')\r\n toggleFormFloating(newForm, pinned)\r\n }\r\n newForm.querySelector('.collapse-qr-form').onclick = ev => {\r\n ev.preventDefault()\r\n toggleFormCollapse(newForm)\r\n }\r\n // Prevent dragging of links\r\n newForm.querySelectorAll('a').forEach(a => {\r\n a.ondragstart = ev => false\r\n a.ondrop = ev => false\r\n })\r\n // Extra hooks for the new form\r\n initForm(newForm)\r\n\r\n resolve(newForm)\r\n })\r\n })\r\n}\r\n\r\nfunction quickreply() {\r\n let $this = $(this)\r\n , threadID = $this.data('parent')\r\n , postID = $(this).data('postnum') || threadID.split('-')[0]\r\n , $post = $this.parents('.postnode')\r\n , boardName = $post.data('board')\r\n , fromExternalBoard = (!is_overboard && boardName != this_board_dir)\r\n , post = $post[0]\r\n , $preview = $post.parents('.reflinkpreview')\r\n , isPreview = !!$preview\r\n , needInsert = true\r\n , form = post._findNext('*:not(.i0svcel)')\r\n , formExists = form && form.getAttribute('name') == 'postform'\r\n , formHidden = formExists && form.classList.contains('hidden')\r\n , formFloating = formExists && form.classList.contains('qrf-floating')\r\n , isOpen = true\r\n , preview = post._findParent('.reflinkpreview')\r\n , quotation = needInsert ? getPostQuotation(post.querySelector('.postbody')) : ''\r\n \r\n if (formExists) {\r\n if (formFloating) {\r\n toggleFormCollapse(form, false)\r\n toggleFormFloating(form, false)\r\n }\r\n else {\r\n if (!formHidden) {\r\n hidePostForm(form)\r\n formHidden = true\r\n }\r\n else {\r\n form.classList.remove('hidden')\r\n }\r\n formHidden = !formHidden\r\n }\r\n needInsert = false\r\n }\r\n else {\r\n $this.addClass('spin-around')\r\n clonePostForm(post.id || post.parentElement.id, preview, (is_overboard ? boardName : false)).then(form => {\r\n $this.removeClass('spin-around')\r\n form.classList.add('qrf-builtin')\r\n form.querySelector('.pinner').classList.toggle('pinned')\r\n form.querySelector('input[name=replythread]').value = threadID\r\n post.insertAdjacentElement('afterend', form)\r\n document.querySelectorAll('.qrf-floating:not(.collapsed)')\r\n .forEach(existingForm => toggleFormCollapse(existingForm))\r\n form.querySelector('textarea').focus()\r\n if (needInsert) {\r\n insert(`>>${fromExternalBoard ? `/${boardName}/` : ''}${postID}\\n${quotation}`)\r\n }\r\n // Pin the post if it is in preview\r\n if (preview && !preview._pinned) {\r\n post.querySelector('.pinner').click()\r\n }\r\n })\r\n }\r\n // post.classList.toggle('reply-with-form-open', isOpen)\r\n return false\r\n}\r\n\r\nfunction _getSelection() {\r\n if (! window.getSelection) return null\r\n let selection = window.getSelection()\r\n if (selection.type !== \"Range\") return null\r\n let selectedText = selection.toString()\r\n if (! selectedText) return null\r\n return {\r\n text: selectedText,\r\n node: selection.anchorNode\r\n }\r\n}\r\n\r\n// get the selected text within the given element\r\nfunction getLocalSelection(parent) {\r\n let sel = _getSelection()\r\n return sel && sel.node._isChildOf(parent) \r\n ? sel.text \r\n : null\r\n}\r\n\r\nfunction getPostQuotation(post) {\r\n let text = getLocalSelection(post)\r\n if (!text) return ''\r\n text = text\r\n .replace(/^\\s/, '').replace(/\\s$/, '') // remove leading and trailing whitespaces\r\n .replace(/^>/gm, ' >').replace(/^/gm, '> ') // add quotation marks\r\n return text/*+'\\n'*/ || ''\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(forceEnable=false) {\r\n let captchaImage = document.querySelector('.captchaimage')\r\n this.enabled = forceEnable || !!captchaImage\r\n if (!this.enabled) return;\r\n injector.inject('captcha-rotting',\r\n `.cw-running .rotting-indicator {\r\n -webkit-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 animation-delay: ${captchaTimeout}s;}`)\r\n if (captchaImage) {\r\n this.addImgLoadListener(captchaImage)\r\n }\r\n },\r\n initForm: function(form) {\r\n let cw = form.querySelector('.captchawrap')\r\n if (!cw) return;\r\n cw.onclick = this.onClick.bind(this)\r\n ;['click', 'focus'].forEach(evt => {\r\n form.querySelector('input[name=captcha]').addEventListener(evt, this.onFieldClick.bind(this))\r\n })\r\n let captchaImage = form.querySelector('.captchaimage')\r\n if (captchaImage) {\r\n this.addImgLoadListener(captchaImage)\r\n }\r\n },\r\n addImgLoadListener: function(captchaImage) {\r\n captchaImage.onload = this.onImageLoad.bind(this)\r\n ;['animationend', 'webkitAnimationEnd', 'msAnimationEnd'].forEach(evType => {\r\n captchaImage.addEventListener(evType, this.onAnimationEnd.bind(this))\r\n })\r\n },\r\n _state: 'init',\r\n get state() {\r\n return this._state\r\n },\r\n set state(s) { // Capthca state machine\r\n document.querySelectorAll('.captchawrap').forEach(c => {\r\n if (s == 'init') {\r\n c.classList.remove('cw-running')\r\n c.classList.add('cw-initial')\r\n }\r\n if (s == 'init' || s == 'load') {\r\n c.classList.add('captchaimage-invisible')\r\n }\r\n if (s == 'load') {\r\n c.classList.remove('cw-initial', 'cw-running')\r\n void c.offsetWidth //trigger a reflow\r\n c.classList.add('cw-running', 'cw-loading')\r\n }\r\n else {\r\n c.classList.remove('cw-loading')\r\n }\r\n if (s == 'run') {\r\n c.classList.remove('captchaimage-invisible')\r\n }\r\n })\r\n if (s !== 'run')\r\n this.clear()\r\n this._state = s\r\n },\r\n onClick: function(ev) {\r\n this.refresh(ev.ctrlKey || ev.altKey)\r\n ev.target._findParent('form').querySelector('input[name=captcha]').focus()\r\n },\r\n onFieldClick: function() {\r\n if (this.state == 'init' || this.state == 'expired')\r\n this.refresh()\r\n },\r\n onImageLoad: function() {\r\n if (this.state == 'load')\r\n this.state = 'run'\r\n },\r\n onAnimationEnd: function() {\r\n this.state = 'expired'\r\n },\r\n clear: function() {\r\n document.querySelectorAll('input[name=\"captcha\"]').forEach(i => i.value = '')\r\n },\r\n refresh: function(switch_lang=false) {\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 let url = ku_boardspath+'/captcha.php?'+Math.random()+cColor+(switch_lang ? '&switch' : '')\r\n document.querySelectorAll('.captchaimage').forEach(img => img.src = url)\r\n this.state = 'load'\r\n }\r\n}\r\n\r\nfunction formatFileSize(bytes) {\r\n if (bytes < 1000) {\r\n return `${bytes}B`\r\n }\r\n else if (bytes < 1000000) {\r\n return `${Math.round(bytes/1000)}KB`\r\n }\r\n else {\r\n return `${Math.round(bytes/100000)/10}MB`\r\n }\r\n}\r\n\r\nconst richFileInput = {\r\n handleFiles: function(files, form, fromClipboard=false) {\r\n let maxfiles = +form.dataset.maxfiles\r\n , slotsLeft = maxfiles - $(form).find('.file-entry').length\r\n , filesLeft = files.length\r\n , i = 0\r\n for (; slotsLeft && filesLeft; i++) {\r\n let fileAttached = this.handleFile(files[i], form, fromClipboard)\r\n slotsLeft -= fileAttached\r\n filesLeft--\r\n }\r\n if (slotsLeft <= 0 && filesLeft)\r\n pups.warn(_l.maxAttNumReached)\r\n },\r\n handleFile: function(file, form, fromClipboard=false) {\r\n let fx = {}\r\n // Determine the file extension\r\n let ns = file.name.split('.')\r\n fx.ext = (ns.length) > 1 ? ns.pop().toLowerCase() : \"\"\r\n if (fx.ext == 'jpeg') \r\n fx.ext = 'jpg'\r\n\r\n if (\r\n form.dataset.allowedAllFiletypes != '*'\r\n &&\r\n !_.contains(form.dataset.allowedFiletypes.split(','), fx.ext)\r\n ) {\r\n pups.err(`${file.name}: ${_l.unsupportedFileType}.`)\r\n return 0\r\n }\r\n fx.fname = ns.join('.')\r\n\r\n fx.sizeFormatted = formatFileSize(file.size)\r\n \r\n if (file.type.indexOf(\"image\") != -1) {\r\n let reader = new FileReader()\r\n reader.onload = ev => {\r\n fx.img = ev.target.result\r\n this.addFile(file, fx, form, fromClipboard)\r\n }\r\n reader.readAsDataURL(file, fx, form)\r\n }\r\n else {\r\n this.addFile(file, fx, form, fromClipboard)\r\n }\r\n return 1\r\n },\r\n addFile: function(file, extra, form, fromClipboard=false) {\r\n let index = this.store.push(file)-1\r\n form.querySelector('.fe-sort-wrapper').insertAdjacentHTML('beforeEnd', `\r\n <div class=\"file-entry${fromClipboard ? ' fe-name-hidden' : ''}\" data-index=\"${index}\" title=\"${file.name}\">\r\n <div class=\"fe-thumb\">\r\n ${extra.img ? `<img src=${extra.img}>` : makeGenericFileIcon(extra.ext)}\r\n </div>\r\n <input type=\"text\" value=\"${extra.fname}\" class=\"fe-fn\" ${fromClipboard ? ' disabled' : ''}>\r\n <button class=\"clear-filename fe-pop-button icon-wraping-button\" title=\"${_l.hideName}\"><svg class=\"icon b-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#i-hide-name\"></use>\r\n </svg></button>\r\n <button class=\"remove-file fe-pop-button icon-wraping-button\" title=\"${_l.removeFile}\"><svg class=\"icon b-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#i-x\"></use>\r\n </svg></button>\r\n <button class=\"spoiler-file fe-pop-button icon-wraping-button\" title=\"${_l.spoilerOnOff}\"><svg class=\"icon b-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#i-spoiler\"></use>\r\n </svg></button>\r\n <div class=\"fe-info\"></div>\r\n </div>\r\n `)\r\n this.recalcForm(form)\r\n let thisEl = form.querySelector(`.file-entry[data-index=\"${index}\"]`)\r\n , img = false\r\n , updateInfo = () => thisEl.querySelector(`.fe-info`).innerText = \r\n `${extra.ext.toUpperCase()}${(img ? `, ${img.naturalWidth}×${img.naturalHeight}`: '')}, ${extra.sizeFormatted}`\r\n if (extra.img) {\r\n img = thisEl.querySelector('img')\r\n img.onload = updateInfo\r\n img.onerror = updateInfo\r\n }\r\n else updateInfo()\r\n thisEl._ext = extra.ext\r\n this.updateTitle($(thisEl))\r\n },\r\n recalcForm: function(form) {\r\n let count = form.querySelectorAll('.file-entry').length\r\n , maxfiles = +form.dataset.maxfiles\r\n form.classList.toggle('fda-non-empty', count > 0)\r\n form.classList.toggle('fda-form-full', count >= maxfiles)\r\n form.querySelector('.file-count').innerHTML = count > 0\r\n ? `${_l.files}<br>(${count}/${maxfiles})`\r\n : `${_l.file}`\r\n },\r\n updateTitle: function($el) {\r\n let v = $el.find('.fe-fn').val()\r\n , fname = !$el.hasClass('fe-name-hidden') && v ? v : '*****'\r\n $el[0].title = `${fname}.${$el[0]._ext}`\r\n },\r\n serialize: function(form, fd) {\r\n form.querySelectorAll('.file-entry').forEach((fe, i) => {\r\n fd.append('imagefile[]', this.store[+fe.dataset.index])\r\n if (fe.classList.contains('fe-spoiler'))\r\n fd.append(`spoiler-${i}`, 1)\r\n let fname = fe.querySelector('.fe-fn').value\r\n if (fe.classList.contains('fe-name-hidden') || fname==='')\r\n fd.append(`hidename-${i}`, 1)\r\n else\r\n fd.append(`filename-${i}`, fname)\r\n } )\r\n },\r\n store: [],\r\n initiated: false,\r\n init: function(form) {\r\n this.enabled = form.querySelector('.file-row') && 'FileReader' in window\r\n if (this.enabled) {\r\n let _this = this\r\n $('body')\r\n .on('click', '.remove-file', function(ev) {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n let $entry = $(this).parents('.file-entry')\r\n _this.store[+$entry.data('index')] = null\r\n let $form = $entry.parents('form[name=postform]')\r\n $entry.remove()\r\n _this.recalcForm($form[0])\r\n })\r\n .on('click', '.file-entry', function(ev) {\r\n $(this).toggleClass('fe-expanded')\r\n setTimeout(() => $(this).find('input').select(), 450)\r\n })\r\n .on('click', '.file-entry input', function(ev) {\r\n ev.stopPropagation()\r\n })\r\n .on('click', '.spoiler-file', function(ev) {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n $(this).parents('.file-entry').toggleClass('fe-spoiler')\r\n })\r\n .on('click', '.clear-filename', function(ev) {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n let $entry = $(this).parents('.file-entry')\r\n $entry.find('.fe-fn').prop('disabled', !$entry.hasClass('fe-name-hidden'))\r\n $entry.toggleClass('fe-name-hidden')\r\n _this.updateTitle($entry)\r\n })\r\n .on('change', '.fe-fn', function(ev) {\r\n _this.updateTitle($(this).parents('.file-entry'))\r\n })\r\n .on('change', 'input[type=file]', function(ev) {\r\n let form = $(this).parents('form[name=postform]')[0]\r\n _this.handleFiles(ev.target.files, form)\r\n this.value = null\r\n })\r\n .on('click', '.add-files', function(ev) {\r\n ev.preventDefault()\r\n $(this).parents('form[name=postform]').find('input[type=file]')[0].click()\r\n })\r\n .on('paste', 'form[name=postform]', function(ev) {\r\n let items = (ev.clipboardData || ev.originalEvent.clipboardData).items\r\n , arr = [];\r\n for (var i = 0 ; i < items.length ; i++) {\r\n var item = items[i];\r\n if (item.kind == 'file') {\r\n arr.push(item.getAsFile())\r\n }\r\n }\r\n _this.handleFiles(arr, this, true)\r\n })\r\n }\r\n else {\r\n $('body')\r\n .on('click', '.remove-file', function(ev) {\r\n ev.preventDefault()\r\n $(this).parent().find('input[type=file]')\r\n .val(null)\r\n .removeClass('non-empty-file-input')\r\n })\r\n .on('change', 'input[type=file]', function() {\r\n $(this).toggleClass('non-empty-file-input', this.value)\r\n })\r\n }\r\n this.initiated = true\r\n /*if (!is_overboard)\r\n this.initForm(postform)*/\r\n },\r\n initForm: function(form) {\r\n if (!this.initiated)\r\n this.init(form)\r\n let _this = this\r\n if (this.enabled) {\r\n // Drag and drop events\r\n $(form) // I tried using plain JS, doesn't work, sorry\r\n .on('dragenter dragend dragover drop dragleave', function(ev) {\r\n ev.originalEvent.stopPropagation()\r\n if (!(ev.target.nodeName == 'TEXTAREA' || ev.target.nodeName == 'INPUT')) \r\n ev.preventDefault()\r\n })\r\n .on('drop', function(ev) {\r\n ev.originalEvent.stopPropagation()\r\n if (ev.originalEvent.dataTransfer && ev.originalEvent.dataTransfer.files.length) {\r\n ev.originalEvent.preventDefault() \r\n _this.handleFiles(ev.originalEvent.dataTransfer.files, this)\r\n }\r\n })\r\n // File entry sorting\r\n if(form.querySelector('.fe-sort-wrapper')) {\r\n Sortable.create(form.querySelector('.fe-sort-wrapper'), {\r\n animation: 150,\r\n handle: '.fe-thumb'\r\n })\r\n }\r\n // Prevent legacy file inputs from being serialized\r\n form.querySelectorAll('input[name^=imagefile]').forEach(i => i.removeAttribute('name'))\r\n }\r\n else {\r\n let area = form.querySelector('.drop-area')\r\n if (!area) return;\r\n area.previousElementSibling.classList.remove('noscript')\r\n area.remove()\r\n }\r\n },\r\n clear: function(form, clearStore=false) {\r\n if (this.enabled) {\r\n form.querySelectorAll('.file-entry').forEach(fe => {\r\n if (clearStore)\r\n this.store[fe.dataset.index] = null\r\n fe.remove()\r\n })\r\n this.recalcForm(form)\r\n }\r\n }\r\n}\r\n\r\nfunction makeGenericFileIcon(ext) {\r\n let color = ext.toLowerCase().split('').map(char=>char.charCodeAt(0)).reverse().join('') % 360\r\n return `<div class=\"generic-file-icon\" style=\"background-color: hsl(${color}, 66%, 50%)\"><div class=\"gfi-extension\">${ext}</div></div>`\r\n}\r\n\r\nfunction handleCtrlEnter(ev) {\r\n ev.preventDefault()\r\n let area = document.activeElement\r\n , form = area._findParent('form[name=postform]')\r\n if (form) {\r\n Ajax.submitPost(form)\r\n }\r\n}\r\n\r\nfunction redirectTo(href) {\r\n // console.warn('About to redirect to:', href)\r\n document.location.href = href\r\n}\r\n\r\nconst Ajax = {\r\n submitPost: function(form, sage) {\r\n if (form.querySelector('script[src^=\"https://js.hcaptcha.com\"]')) {\r\n hcaptcha.execute({ async: true })\r\n .then(({ response, key }) => {\r\n this.actuallySubmitPost(form, sage, response)\r\n })\r\n .catch(err => {\r\n console.error('hcapthca:', err)\r\n if (err == 'challenge-expired')\r\n this.shownErrors.push(pups.warn(_l.captchaExpired))\r\n });\r\n }\r\n else {\r\n this.actuallySubmitPost(form, sage)\r\n }\r\n },\r\n actuallySubmitPost: function(form, sage, hCaptchaResponse=false) {\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 let showWarning = (a, b={}) => this.shownErrors.push(pups.warn(a, b))\r\n\r\n let captchafield = form.captcha\r\n if (captchafield && !captchafield.value.length) {\r\n captchafield.focus()\r\n return showWarning(_l.enterCaptcha)\r\n }\r\n \r\n form.classList.add('form-sending')\r\n let fd = new FormData(form)\r\n\r\n if (typeof sage !== 'undefined')\r\n fd.append('sagebtn', sage)\r\n\r\n if (hCaptchaResponse) {\r\n fd.append('h-captcha-response', hCaptchaResponse)\r\n }\r\n\r\n if (richFileInput.enabled)\r\n richFileInput.serialize(form, fd)\r\n let 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 if (Captcha.enabled)\r\n Captcha.state = 'init'\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 if (res.timings) {\r\n console.log('timings:', res.timings)\r\n }\r\n resetForm(form)\r\n if (form.classList.contains('quick-reply-form')) {\r\n hidePostForm(form) // TODO: tumbach pinning?\r\n }\r\n /*else {\r\n }*/\r\n let nokoInput = form.querySelector('input[name=\"redirecttothread\"]')\r\n , noko = nokoInput && nokoInput.checked\r\n if (res.thread_replyto != 0) {\r\n newposts.get({\r\n threadid: ispage ? res.thread_replyto+'-'+res.board : null,\r\n expectedPost: res.post_id+'-'+res.board,\r\n onError: (err) => {\r\n console.error(err)\r\n redirectTo(`${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 redirectTo(`${ku_boardspath}/${res.board}/res/${res.post_id}.html`)\r\n }\r\n else {\r\n redirectTo(`${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 cancelTimer: function(fd, callback=null) {\r\n let xr = new XMLHttpRequest()\r\n fd.append('AJAX', 1)\r\n fd.append('cancel_timer', 1)\r\n\r\n // Token for live updates\r\n this.timerToken = randomString()\r\n fd.append('token', this.timerToken)\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(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 (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 callback(false)\r\n }\r\n else {\r\n $('body').removeClass('select-multiple')\r\n $('.userdelete').removeClass('ud-active')\r\n let postsSaved = []\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 postsSaved.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 (postsSaved.length) {\r\n postsSaved.forEach(id => {\r\n let $reply = $(`.postnode[data-id=${id}]`)\r\n $reply.find('.post-ttl').remove()\r\n $reply.find('.post-menu').hide()\r\n } )\r\n msg += postsSaved.length > 1 ?\r\n `${_l.posts} #${postsSaved.join(', #')} ${_l.savedMulti}.`\r\n :`${_l.post} #${postsSaved[0]} ${_l.saved}.`\r\n pups.succ(msg, {time: 2 + postsSaved.length})\r\n }\r\n postErrors.forEach(err => {\r\n pups.err(`${_l.post} #${err.id}: ${err.message}`)\r\n })\r\n callback(postErrors)\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, asMod=false) {\r\n let kind = 'Items'\r\n if (asMod) {\r\n console.log('yes')\r\n fd.append('moddelete', 1)\r\n }\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 ? callback(null) : 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 addCaptchaToMenu($menu) {\r\n if ($menu.find('.captchawrap').length) {\r\n Captcha.state = 'init';\r\n return;\r\n }\r\n if (!Captcha.enabled) {\r\n Captcha.init('only-access')\r\n }\r\n $menu.prepend(`<li class=\"menu-captcha\">\r\n <div class=\"captchawrap cw-initial captchaimage-invisible\" title=\"${_l.refreshCaptcha}\">\r\n <div class=\"captcha-show msg\">${_l.showCaptcha}</div>\r\n <img class=\"captchaimage\" valign=\"middle\" border=\"0\" alt=\"${_l.captchaImage}\">\r\n <div class=\"rotting-indicator\"></div>\r\n <div class=\"rotten-msg msg\">${_l.captchaExpired}</div>\r\n </div>\r\n <input type=\"text\" name=\"captcha\" placeholder=\"${_l.captcha}\" autocomplete=\"off\">\r\n </li>`)\r\n Captcha.initForm($menu[0])\r\n $menu.find('input[name=captcha]').keydown(ev => {\r\n if (ev.key == 'Enter') {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n }\r\n })\r\n}\r\n\r\n// YOBA media previews\r\nclass MediaViewer {\r\n static parseVideo(link) {\r\n let postnum = link.dataset.id\r\n , imgurl = link.href\r\n , thumburl = link.dataset.thumb\r\n , imgw = link.dataset.width\r\n , imgh = link.dataset.height\r\n , thumb = link.querySelector('img')\r\n , thumbw = thumb.width\r\n , thumbh = thumb.height\r\n return [postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh]\r\n }\r\n static parseImg(link) {\r\n return link.getAttribute('onclick')\r\n .match(/expandimg\\('(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)'/)\r\n .slice(1)\r\n }\r\n constructor(postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh, isVideo=false) {\r\n let thumb = document.querySelector(`#thumb${postnum} img`)\r\n if (thumb == null) return false;\r\n this.post = thumb._findParent('.postbody')\r\n this.initZoom()\r\n this.createContainer()\r\n this.resetTransform()\r\n let pre = thumb._findParent('.reflinkpreview')\r\n if (pre)\r\n PostPreviews.pinPreview(pre, true, true)\r\n let thBCR = thumb.getBoundingClientRect()\r\n , thumb_x = thBCR.x, thumb_y = thBCR.y, thumb_w = thBCR.width, thumb_h = thBCR.height\r\n , win_w = this.viewer.clientWidth, win_h = this.viewer.clientHeight\r\n , scaleDownFactor = Math.min(win_w / imgw, win_h / imgh, 1)\r\n , pre_w = imgw * scaleDownFactor, pre_h = imgh * scaleDownFactor\r\n , visibleMarginX = (win_w-pre_w)/2, visibleMarginY = (win_h-pre_h)/2\r\n , mi_w = Math.min(win_w, imgw), mi_h = Math.min(win_h, imgh)\r\n , screenScaleDownFactor = thumb_w/pre_w\r\n , transX = (thumb_x + thumb_w/2) - win_w/2, transY = (thumb_y + thumb_h/2) - win_h/2\r\n , trans = `style=\"transform: translate(${transX}px, ${transY}px) scale(${screenScaleDownFactor})\"`\r\n , me = this.viewer._ins('afterBegin', this.createMediaElement(thumb.src, imgw, imgh, imgurl, trans, isVideo))\r\n this.refreshList()\r\n this.currentThumb = thumb\r\n thumb.style.visibility = 'hidden'\r\n this.updateCounter()\r\n this.showPercentage(scaleDownFactor)\r\n me._isVideo = isVideo\r\n this.setVolume(me)\r\n me._scaleDownFactor = scaleDownFactor\r\n this.currentMediaItem = me\r\n me._realWidth = imgw\r\n this.imgw = imgw\r\n this.imgh = imgh\r\n document.body.style.overflow = 'hidden'\r\n requestAnimationFrame(() => {\r\n this.container.classList.remove('mvc-collapsed')\r\n me.style.transform = null\r\n })\r\n }\r\n refreshList() {\r\n this.list = document.querySelectorAll('img.thumb')\r\n }\r\n findIndex(thumb) {\r\n return Array.prototype.findIndex.call(this.list, e => e==thumb)\r\n }\r\n // Container\r\n createContainer() {\r\n this.container = document.body._ins('beforeend', `<div class=\"mv-container mvc-collapsed\">\r\n <div class=\"media-viewer\">\r\n <div class=\"mv-label\">\r\n <span class=\"item-counter\"></span>\r\n <span class=\"scale-indicator\"></span>\r\n </div>\r\n <div class=\"mv-button mv-prev-next mv-prev\"></div>\r\n <div class=\"mv-button mv-prev-next mv-next\"></div>\r\n <div class=\"mv-button mv-restore\"></div>\r\n <div class=\"mv-button mv-close\"></div>\r\n </div></div>`)\r\n this.viewer = this.container.querySelector('.media-viewer')\r\n this.viewer.addEventListener('wheel', this.handleZoom.bind(this))\r\n this.viewer.addEventListener('mousemove', ev => {\r\n this.mouseX = ev.clientX\r\n this.mouseY = ev.clientY\r\n if (this.isMouseDown) {\r\n this.handleDrag()\r\n }\r\n })\r\n this.viewer.addEventListener('mousedown', ev => {\r\n if (ev.button==2 && this.currentMediaItem._isVideo) {\r\n let ov = this.currentMediaItem.querySelector('.video-event-overlay')\r\n ov.style.pointerEvents='none'\r\n setTimeout(() => ov.style.pointerEvents='all', 100)\r\n }\r\n this.gripX = ev.clientX\r\n this.gripY = ev.clientY\r\n this.isMouseDown = true\r\n if (ev.target.classList.contains('media-viewer') || ev.target.classList.contains('mv-under'))\r\n this.emptyClick = true\r\n })\r\n this.viewer.addEventListener('contextmenu', ev => {\r\n if (this.currentMediaItem._isVideo) {\r\n let ov = this.currentMediaItem.querySelector('.video-event-overlay')\r\n ov.style.pointerEvents='none'\r\n setTimeout(() => ov.style.pointerEvents='all', 100)\r\n }\r\n })\r\n this.viewer.addEventListener('click', ev=> {\r\n if (this.isDragged) {\r\n this.isDragged = false\r\n ev.preventDefault()\r\n }\r\n })\r\n this.viewer.addEventListener('mouseup', ev => {\r\n this.isMouseDown = false\r\n this.currentMediaItem.classList.remove('no-transition')\r\n if (this.isDragged) {\r\n ev.preventDefault()\r\n }\r\n else if (ev.button == 0) {\r\n this.collapse()\r\n }\r\n this.emptyClick = false\r\n })\r\n this.viewer.addEventListener('dragstart', ev => {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n })\r\n this.viewer.querySelectorAll('.mv-button').forEach(pnb => {\r\n pnb.addEventListener('click', ev => {\r\n ev.stopPropagation()\r\n this.refreshList()\r\n let index = this.findIndex(this.currentThumb)\r\n if (pnb.classList.contains('mv-prev') || pnb.classList.contains('mv-next')) {\r\n if (pnb.classList.contains('mv-prev')) {\r\n index -= 1\r\n if (index < 0)\r\n index = this.list.length-1\r\n }\r\n else {\r\n index += 1\r\n if (index >= this.list.length)\r\n index = 0\r\n }\r\n this.switchItem(this.list[index])\r\n }\r\n else if (pnb.classList.contains('mv-close')) {\r\n this.collapse()\r\n }\r\n else if (pnb.classList.contains('mv-restore')) {\r\n this.toggleFullSize(0)\r\n }\r\n })\r\n ;['mouseup', 'mousedown'].forEach(evt => pnb.addEventListener(evt, ev => ev.stopPropagation()))\r\n })\r\n this.viewer.addEventListener('mouseleave', ev => {\r\n this.isMouseDown = false\r\n this.isDragged = false\r\n })\r\n }\r\n // Managing transforms\r\n applyTransform() {\r\n let me = this.currentMediaItem\r\n if (!me) return;\r\n me.style.transform = `translate(${this.translateX}px, ${this.translateY}px) scale(${this.scale})`\r\n }\r\n resetTransform() {\r\n this.translateX = 0\r\n this.translateY = 0\r\n this.scale = 1\r\n }\r\n // Zooming\r\n initZoom() {\r\n this.zoomAmount = 0.5\r\n this.minScale = 0.1\r\n this.zoomSteps = [0.1, 0.25, 0.33, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10]\r\n }\r\n handleZoom(ev) {\r\n let me = this.currentMediaItem\r\n if (!me) return;\r\n ev.stopPropagation()\r\n ev.preventDefault()\r\n let dir = -Math.sign(ev.deltaY)\r\n , initialScale = 1/me._scaleDownFactor\r\n , zSteps = Array.from(this.zoomSteps)\r\n .filter(z => Math.abs((z-initialScale)/initialScale) > 0.1) // Remove zoom steps that are close to (real) 100%\r\n .concat([initialScale]) // Add a (real) 100% step\r\n , centerX = this.viewer.clientWidth / 2 + this.translateX\r\n , centerY = this.viewer.clientHeight / 2 + this.translateY\r\n , newScale = zSteps.map(z => z - this.scale).filter(z => z*dir > 0) // Pick only the steps in the needed direction\r\n .sort((a,b) => (a-b)*dir)[0] + this.scale // Find the closest step\r\n if (!isNaN(newScale)) { // It may be NaN in case when minimum or maximum zoom amount is achieved\r\n this.showPercentage(me._scaleDownFactor * newScale)\r\n this.translateX += (centerX - this.mouseX)/this.scale * (newScale-this.scale)\r\n this.translateY += (centerY - this.mouseY)/this.scale * (newScale-this.scale)\r\n this.scale = newScale\r\n this.applyTransform()\r\n this.flashLabel()\r\n }\r\n }\r\n showPercentage(scale) {\r\n this.viewer.querySelector('.scale-indicator').innerText = `| ${Math.round(scale * 100)}%`\r\n }\r\n // Dragging\r\n handleDrag(ev) {\r\n let me = this.currentMediaItem\r\n if (!me) return;\r\n let dx = this.mouseX - this.gripX\r\n , dy = this.mouseY - this.gripY\r\n if (dx != 0 || dy != 0) {\r\n if (!this.isDragged) {\r\n this.currentMediaItem.classList.add('no-transition')\r\n this.isDragged = true\r\n this.initialTransX = this.translateX\r\n this.initialTransY = this.translateY\r\n }\r\n this.translateX = this.initialTransX+dx\r\n this.translateY = this.initialTransY+dy\r\n this.applyTransform()\r\n }\r\n }\r\n // Switching\r\n switchItem(thumb) {\r\n let link = thumb._findParent('a')\r\n , isVideo = link.classList.contains('movie')\r\n let [postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh] = isVideo\r\n ? MediaViewer.parseVideo(link)\r\n : MediaViewer.parseImg(link)\r\n let win_w = this.viewer.clientWidth, win_h = this.viewer.clientHeight\r\n , scaleDownFactor = Math.min(win_w / imgw, win_h / imgh, 1)\r\n this.showPercentage(scaleDownFactor)\r\n this.resetTransform()\r\n this.applyTransform()\r\n this.currentMediaItem._isVideo = isVideo\r\n this.currentMediaItem._scaleDownFactor = scaleDownFactor\r\n this.currentMediaItem.classList.remove('no-transition')\r\n this.currentMediaItem.innerHTML = this.createMediaElement(thumb.src, imgw, imgh, imgurl, null, isVideo)\r\n this.setVolume(this.currentMediaItem)\r\n this.currentThumb.style.visibility = 'visible'\r\n thumb.style.visibility = 'hidden'\r\n this.post = thumb._findParent('.postbody')\r\n this.currentThumb = thumb\r\n this.updateCounter()\r\n this.refreshList()\r\n }\r\n setVolume(me) {\r\n if (!me._isVideo) return;\r\n let vid = me.querySelector('video')\r\n vid.volume = localStorage['mediaVolume'] || 1\r\n vid.onvolumechange = function() {\r\n localStorage['mediaVolume'] = this.muted ? 0 : this.volume\r\n }\r\n }\r\n updateCounter() {\r\n let index = this.findIndex(this.currentThumb)\r\n this.viewer.querySelector('.item-counter').innerText = `${index+1}/${this.list.length}`\r\n this.flashLabel()\r\n }\r\n flashLabel() {\r\n clearTimeout(this.flashLabelTimeout)\r\n this.viewer.querySelector('.mv-label').classList.add('mvl-visible')\r\n this.flashLabelTimeout = setTimeout(() => this.viewer.querySelector('.mv-label').classList.remove('mvl-visible'), 1000)\r\n }\r\n // Closing\r\n collapse() {\r\n document.body.style.overflow = ''\r\n let me = this.currentMediaItem\r\n , mi_w = me.clientWidth, mi_h = me.clientHeight\r\n , svg = me.querySelector('.placeholder-svg')\r\n , resizeFactor = Math.min(this.viewer.clientHeight/svg.naturalHeight, this.viewer.clientWidth/svg.naturalWidth)\r\n if (me._isVideo) {\r\n me.querySelector('video').remove()\r\n }\r\n this.isDragged = false\r\n if (resizeFactor < 1) {\r\n mi_w = svg.naturalWidth * resizeFactor\r\n mi_h = svg.naturalHeight * resizeFactor\r\n }\r\n let offScreen = true, transform = ''\r\n if (document.body.contains(this.currentThumb)) {\r\n let thumbBCR = this.currentThumb.getBoundingClientRect()\r\n offScreen = !(\r\n thumbBCR.y < window.innerHeight\r\n &&\r\n (thumbBCR.y + thumbBCR.height) > 0\r\n &&\r\n thumbBCR.x < window.innerWidth\r\n &&\r\n (thumbBCR.x + thumbBCR.width) > 0\r\n )\r\n if (!offScreen) {\r\n let transX = (thumbBCR.x + thumbBCR.width/2) - this.viewer.clientWidth/2\r\n , transY = (thumbBCR.y + thumbBCR.height/2) - this.viewer.clientHeight/2\r\n me.style.transform = `translate(${transX}px, ${transY}px) scale(${thumbBCR.width/mi_w})`\r\n }\r\n }\r\n if (offScreen) {\r\n me.style.transform = 'translate(0px, 0px) scale(0)'\r\n }\r\n me.classList.remove('no-transition')\r\n this.container.classList.add('mvc-collapsed')\r\n setTimeout(() => {\r\n this.container.remove()\r\n this.currentThumb.style.visibility = 'visible'\r\n if (this.onCollapse) this.onCollapse()\r\n }, 250)\r\n }\r\n // Full screen on and off\r\n toggleFullSize(on) {\r\n document.body.style.overflow = on ? 'hidden' : ''\r\n if (on)\r\n this.viewer.classList.remove('mv-transparent')\r\n else\r\n this.viewer.classList.add('mv-transparent')\r\n }\r\n // Media element within container\r\n createMediaElement(underImageSrc, imgw, imgh, imgurl, trans='', isVideo=false) {\r\n return `<div class=\"media-item ${isVideo ? 'loaded' : ''}\" ${trans}>\r\n <div style=\"background-image: url(${underImageSrc}); max-width: ${imgw}px\" class=\"mv-under\"></div>\r\n <${isVideo ? 'video controls autoplay loop' : 'img'} src=\"${imgurl}\" class=\"mv-over\" ${isVideo \r\n ? `></video><img class=\"video-event-overlay\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' width='${imgw}' height='${Math.min(imgh, window.innerHeight)-50}'%2F%3E\">`\r\n : `onload=\"this.parentElement.classList.add('loaded')\">`}\r\n <img class=\"placeholder-svg\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' width='${imgw}' height='${imgh}'%2F%3E\">\r\n </div>`\r\n }\r\n}\r\n\r\n// Insert adjacent HTML and immediately return the inserted element\r\nElement.prototype._ins = function(position='beforeend', html) {\r\n this.insertAdjacentHTML(position, html)\r\n position = position.toLowerCase()\r\n if (position == 'afterbegin') \r\n return this.firstElementChild\r\n else if (position == 'beforeend')\r\n return this.lastElementChild\r\n else if (position == 'beforebegin')\r\n return this.previousElementSibling\r\n else\r\n return this.nextElementSibling\r\n}\r\n\r\nfunction expandimg_old(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\nfunction expandimg(postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh) {\r\n if (Settings.newMediaViewer()) {\r\n let mv = new MediaViewer(postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh)\r\n mv.onCollapse = () => mv = null //gc\r\n }\r\n else {\r\n expandimg_old(postnum, imgurl, thumburl, imgw, imgh, thumbw, thumbh)\r\n }\r\n return false\r\n}\r\n\r\n// YOBA previews\r\nvar PostPreviews = {\r\n zindex: 3,\r\n parent: {},\r\n\r\n _parseLink: function(el) {\r\n let url = el.getAttribute(\"href\")\r\n if (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 {\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 let cl = [].find.call(el.classList, c => c.match(/ref\\|.+?\\|([0-9]+|\\?)\\|[0-9]+/))\r\n if (cl) {\r\n cl = cl.split('|')\r\n return {\r\n board: cl[1],\r\n parent: cl[2],\r\n post: cl[3],\r\n }\r\n }\r\n return null\r\n },\r\n\r\n _mouseover: function(e) {\r\n e.stopPropagation();\r\n var isCatalog = $(this).hasClass('catalog-entry')\r\n , parsedURL = PostPreviews._parseLink(this)\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.mouseOverPreview);\r\n }\r\n else {\r\n if ($preview[0]._pinned)\r\n return false // No need to recreate a preview in this case\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) { \r\n if (id == previewid || PostPreviews.parent[id] == previewid) \r\n return\r\n }\r\n PostPreviews.parent[previewid] = parent.attr('id');\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 let preview = $preview[0]\r\n HTMLoader.getPost(board, parentid, postid, (err, post) => {\r\n window.setTimeout(() => {\r\n preview.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 // Add pin button\r\n let ebtns = preview.querySelector('.extrabtns')\r\n if (!ebtns) return;\r\n ebtns.insertAdjacentHTML('beforeEnd', `\r\n <a href=\"#\" class=\"pin-preview pinner unpinned\" title=\"${_l.pinUnpin}\">\r\n <svg class=\"icon b-icon\">\r\n <use class=\"use-pin\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#i-pin\"></use>\r\n <use class=\"use-unpin\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#i-unpin\"></use>\r\n </svg>\r\n </a>`)\r\n let pinner = ebtns.querySelector('.pinner')\r\n pinner.onclick = (ev) => {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n PostPreviews.pinPreview($preview[0])\r\n }\r\n }, 0)\r\n })\r\n e.preventDefault();\r\n },\r\n\r\n mouseOverPreview: function() {\r\n var preview = $(this);\r\n if ($(this).is('a')) {\r\n let parsedURL = PostPreviews._parseLink(this)\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(ev, nodelay=false) {\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._parseLink(this)\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 if (pre[0]._pinned) return;\r\n\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 }, nodelay ? 0 : PostPreviews._timings.fade)\r\n preview = $('#' + PostPreviews.parent[preview.attr('id')]);\r\n }\r\n },\r\n\r\n pinPreview: function(pre, pin, temporary=false) {\r\n let pinner = pre.querySelector('.pinner')\r\n if (typeof pin == 'undefined')\r\n pin = !pinner.classList.contains('pinned')\r\n pinner.classList.toggle('pinned', pin)\r\n pinner.classList.toggle('unpinned', !pin)\r\n if (temporary) {\r\n let o = pre\r\n o.addEventListener('mouseenter', () => PostPreviews.pinPreview(o, false))\r\n o.classList.add('temporarily-pinned')\r\n }\r\n while (pre) {\r\n pre._pinned = pin\r\n pre = document.querySelector(`#${PostPreviews.parent[pre.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) {\r\n let savedName = getCookie(\"name\")\r\n if (~savedName.indexOf('#'))\r\n name.type = 'password'\r\n name.value = savedName\r\n }\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, perBoard=false) {\r\n let settingNameGeneral = settingName\r\n if (perBoard)\r\n settingName = settingName+'.'+this_board_dir\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_' + settingNameGeneral).is(\":checked\");\r\n } else {\r\n // update checkbox (called on load)\r\n if (localStorage[settingName] == 'true')\r\n $('#settings_' + settingNameGeneral).attr(\"checked\",\"checked\");\r\n else\r\n $('#settings_' + settingNameGeneral).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 && (typeof is_catalog === 'undefined' || !is_catalog)) {\r\n scrollAnchor.save('replymap', '.postnode')\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', 'figure > *, .emoji { opacity: 0.05;} figure:hover > *, .postbody:hover .emoji { opacity: 1;}');\r\n }\r\n else {\r\n injector.remove('sfwMode');\r\n }\r\n return enabled;\r\n },\r\n\r\n hideCompletely: function(changed) {\r\n var enabled = Settings._checkbox(changed, 'hideCompletely', false, true);\r\n if (changed) {\r\n HiddenItems.hideCompletely = enabled\r\n HiddenItems.updateCSS()\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 newMediaViewer: function(changed) {\r\n return Settings._checkbox(changed, 'newMediaViewer', true);\r\n },\r\n\r\n hidePostBtn: function(changed) {\r\n let enabled = Settings._checkbox(changed, 'hidePostBtn', true)\r\n if (!enabled) {\r\n injector.inject('hidePostBtn', `.hide-post-btn {display: none}`)\r\n }\r\n else {\r\n injector.remove('hidePostBtn')\r\n }\r\n if (!changed) {\r\n HiddenItems.lists.posts.forEach(id => {\r\n $(`#postnode${id}`).find('.hide-post-btn').attr('title', _l.unhidePost)\r\n .find('use').attr('xlink:href', '#i-unhide')\r\n })\r\n }\r\n return enabled\r\n },\r\n\r\n endlessScroll: function(changed) {\r\n let enabled = Settings._checkbox(changed, 'endlessScroll', false)\r\n endlessScroll.toggle(enabled)\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 let pf = document.querySelector('#postform')\r\n if (pf)\r\n richFileInput.initForm(pf)\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 redirectTo(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 document.querySelectorAll('[id^=preview]').forEach(pre => PostPreviews._mouseout.bind(pre)(null, true))\r\n })\r\n $('body').on('click', \"a[class^='ref']\", PostPreviews._mouseover)\r\n .on('doubletap', '.postnode', function(ev) {\r\n ev.stopPropagation()\r\n ev.preventDefault()\r\n this.querySelector('.qrl').click()\r\n })\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 //Video expanding\r\n .on('click', '.movie', function(event) {expandVideo($(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() { // TODO: what is this?\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('click', '.reflink a', function(ev) {\r\n ev.preventDefault()\r\n let ref = this.parentElement\r\n , postnode = ref._findParent('.postnode')\r\n if (!lastActiveForm) {\r\n quickreply.bind(postnode.querySelector('.qrl'))()\r\n }\r\n else {\r\n let formBoard = is_overboard\r\n ? lastActiveForm.getAttribute('id').match(/[0-9]+\\-(.+?)_qrf/)[1]\r\n : this_board_dir\r\n let postBody = postnode.querySelector('.postbody')\r\n , qoutation = getPostQuotation(postBody)\r\n insert(`>>${ref.dataset.b == formBoard ? '' : `/${ref.dataset.b}/`}${ref.dataset.id}\\n${qoutation}`)\r\n }\r\n })\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}:&nbsp;<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 /*if (!isOP)\r\n $postnode.toggleClass('post-hidden', HiddenItems.isHidden('post', id))*/\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 ${!isOP ? `\r\n ${typeof opmod !== 'undefined' && +opmod || 0 ? `<li class=\"menu-delete menu-delete-op\">${makeIcon('x')}<span>${_l.del} ${_l.asOP}</span></li>`: ''}\r\n <li class=\"menu-hide\">${makeIcon('hide')}<span>${_l.hidePost}</span></li>\r\n <li class=\"menu-unhide\">${makeIcon('unhide')}<span>${_l.unhidePost}</span></li>\r\n `: ''}\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 ${$postnode.find('.post-ttl').length ? `\r\n <li class=\"menu-cancel-timer\">${makeIcon('untimer')}<span>${_l.cancelTimer}</span></li>\r\n `: ''}\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 let fileid = $fsz.parents('figure').data('fileid')\r\n , $pn = $fsz.parents('.postnode')\r\n , board = $pn.data('board')\r\n , pid = $pn.data('id')\r\n $menu[0].__menuProps = {\r\n fileid: fileid,\r\n board: board\r\n }\r\n $menu[0].$boundTo = $fsz\r\n // Set the proper link for file banning\r\n $menu.find('.menu-banfile').attr('href', `${ku_cgipath}/manage_page.php?action=bans&banboard=${board}&banpost=${pid}&banfile=${fileid}`)\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 , $pass = $menu.find('.menu-password')\r\n $this.addClass('spin-around')\r\n let fd = new FormData()\r\n if ($menu.find('.menu-captcha').length) {\r\n let $c = $menu.find('input[name=captcha]')\r\n if (!$c.val()) {\r\n $c.focus()\r\n pups.warn(_l.enterCaptcha)\r\n $this.removeClass('spin-around')\r\n return;\r\n }\r\n fd.append('captcha', $c.val())\r\n }\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 let asMod = $this.hasClass('menu-delete-mod')\r\n fd.append('moddelete', asMod)\r\n fd.append('opdelete', +$this.hasClass('menu-delete-op'))\r\n fd.append('board', isFile \r\n ? menu.__menuProps.board\r\n : $item.parents('.postnode').data('board'))\r\n fd.append('postpassword', $pass.length\r\n ? $pass.find('input').val()\r\n : $(`#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 if (asMod) return;\r\n if (!$pass.length) {\r\n $menu.prepend(`<li class=\"menu-password\">${makeIcon('password')}\r\n <input value=\"${get_password(\"postpassword\")}\" class=\"make-me-readonly\" type=\"password\" placeholder=\"${_l.password}\" readonly onfocus=\"this.readOnly=false\"></li>`)\r\n }\r\n if (result.special_error && result.special_error == 'captchalocked') {\r\n addCaptchaToMenu($menu)\r\n }\r\n else {\r\n $menu.find('.menu-password input').select()\r\n .keydown(ev => {\r\n if (ev.key == 'Enter') {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n }\r\n })\r\n }\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 , $postnode = $this.parents('.postnode')\r\n $this.addClass('spin-around')\r\n let fd = new FormData()\r\n fd.append('post[]', $postnode.data('id'))\r\n fd.append('board', $postnode.data('board'))\r\n Ajax.reportPost(fd, data => {\r\n $this.removeClass('spin-around')\r\n })\r\n })\r\n .on('click', '.menu-hide', function() {\r\n let $postnode = $(this).parents('.postnode')\r\n HiddenItems.hidePost($postnode.data('id')+'-'+$postnode.data('board'))\r\n $postnode.addClass('post-hidden')\r\n .find('.post-menu').hide()\r\n })\r\n .on('click', '.menu-unhide', function() {\r\n let $postnode = $(this).parents('.postnode')\r\n HiddenItems.unhidePost($postnode.data('id')+'-'+$postnode.data('board'))\r\n $postnode.removeClass('post-hidden')\r\n })\r\n .on('click', '.menu-cancel-timer', function() {\r\n let $this = $(this)\r\n , $menu = $this.parents('.post-menu')\r\n , menu = $menu[0]\r\n , $pass = $menu.find('.menu-password')\r\n , $postnode = $this.parents('.postnode')\r\n $this.addClass('spin-around')\r\n let fd = new FormData()\r\n if ($menu.find('.menu-captcha').length) {\r\n let $c = $menu.find('input[name=captcha]')\r\n if (!$c.val()) {\r\n $c.focus()\r\n pups.warn(_l.enterCaptcha)\r\n $this.removeClass('spin-around')\r\n return;\r\n }\r\n fd.append('captcha', $c.val())\r\n }\r\n fd.append('post[]', $postnode.data('id'))\r\n fd.append('board', $postnode.data('board'))\r\n fd.append('modsave', $this.hasClass('menu-delete-mod'))\r\n fd.append('opsave', $this.hasClass('menu-delete-op'))\r\n fd.append('postpassword', $pass.length\r\n ? $pass.find('input').val()\r\n : $(`#delform input[name=\"postpassword\"]`).val())\r\n Ajax.cancelTimer(fd, errors => {\r\n $this.removeClass('spin-around')\r\n if (errors.length) {\r\n let result = errors[0]\r\n if (!$pass.length) {\r\n $menu.prepend(`<li class=\"menu-password\">${makeIcon('password')}\r\n <input value=\"${get_password(\"postpassword\")}\" class=\"make-me-readonly\" type=\"password\" placeholder=\"${_l.password}\" readonly onfocus=\"this.readOnly=false\"></li>`)\r\n }\r\n if (result.special_error && result.special_error == 'captchalocked') {\r\n addCaptchaToMenu($menu)\r\n }\r\n else {\r\n $menu.find('.menu-password input').select()\r\n .keydown(ev => {\r\n if (ev.key == 'Enter') {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n }\r\n })\r\n }\r\n }\r\n else {\r\n $menu.find('.menu-password, .menu-captcha').remove()\r\n }\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('blur', 'input[name=\"name\"]', function() {\r\n let isTrip = ~this.value.indexOf('#')\r\n this.type = isTrip ? 'password' : 'text'\r\n })\r\n .on('focus', 'input[name=\"name\"]', function() {\r\n this.type ='text'\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 $('.userdelete').addClass('content-background reflinkpreview')\r\n .find('tbody').append(`<tr><td><input name=\"moddelete\" value=\"${_l.del} (${_l.mod_})\" type=\"submit\" class=\"styled-button bad-button\" /></td></tr>`)\r\n\r\n $('#delform').on('submit', function(e) {\r\n e.preventDefault()\r\n Ajax.deleteItems(new FormData(this))\r\n return false\r\n })\r\n\r\n $('.userdelete input[type=submit]').click(function(e) {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n let fd = new FormData($(this).parents('form')[0])\r\n if (this.name == 'deletepost' || this.name == 'moddelete') {\r\n Ajax.deleteItems(fd, null, this.name == 'moddelete')\r\n }\r\n if (this.name == 'cancel_timer') {\r\n Ajax.cancelTimer(fd)\r\n }\r\n if (this.name == 'reportpost') {\r\n Ajax.reportPost(fd)\r\n }\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 if (!is_overboard)\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 ? `\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\" class=\"menu-banfile\">\r\n <li>${makeIcon('ban')}<span>${_l.ban} ${_l.file.toLowerCase()}...</span></li>\r\n </a>` \r\n : ''}\r\n </ul>\r\n </div>\r\n `)\r\n \r\n //animation hooks \r\n $(document).on('animationstart webkitAnimationStart MSAnimationStart oanimationstart', function(event) {\r\n var $target = $(event.target)\r\n //detect node insertions and process them\r\n if (event.originalEvent.animationName == \"nodeInserted\" && !$target.hasClass('_inserted_'))\r\n processNodeInsertion($target)\r\n //detect window resize\r\n if (event.originalEvent.animationName == \"windowSmall\") {\r\n document.querySelectorAll('.quick-reply-form').forEach(f => {\r\n toggleFormFloating(f, false)\r\n toggleFormSimplify(f, true)\r\n })\r\n }\r\n });\r\n\r\n Captcha.init(is_overboard)\r\n\r\n initForm(document.querySelector('#postform'))\r\n\r\n if(typeof is_catalog !== 'undefined' && is_catalog) catalog.init();\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 unreadCounter.update()\r\n\r\n if(liveupd_ena && typeof io !== 'undefined')\r\n updater.init()\r\n\r\n onReady.ready()\r\n}\r\n\r\n/*\r\n * jQuery Double Tap https://gist.github.com/attenzione/7098476\r\n * Developer: Sergey Margaritov (github.com/attenzione)\r\n * License: MIT\r\n * Date: 22.10.2013\r\n * Based on jquery documentation http://learn.jquery.com/events/event-extensions/\r\n */\r\n(function($){\r\n $.event.special.doubletap = {\r\n bindType: 'touchend',\r\n delegateType: 'touchend',\r\n\r\n handle: function(event) {\r\n var handleObj = event.handleObj,\r\n targetData = jQuery.data(event.target),\r\n now = new Date().getTime(),\r\n delta = targetData.lastTouch ? now - targetData.lastTouch : 0,\r\n delay = delay == null ? 300 : delay,\r\n e = event.originalEvent\r\n\r\n if (delta < delay && delta > 30 && !(e.touches && e.touches.length > 1)) {\r\n targetData.lastTouch = null;\r\n event.type = handleObj.origType;\r\n ['clientX', 'clientY', 'pageX', 'pageY'].forEach(function(property) {\r\n event[property] = event.originalEvent.changedTouches[0][property];\r\n })\r\n\r\n // let jQuery handle the triggering of \"doubletap\" event handlers\r\n handleObj.handler.apply(this, arguments);\r\n } else {\r\n targetData.lastTouch = now;\r\n }\r\n }\r\n };\r\n})(jQuery)\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('.postnode').data('id')}], 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 document.querySelectorAll('.postnode.op').forEach(thr => subscribeTo.push(liveupd_sitename+thr.dataset.board+':'+thr.dataset.id))\r\n }\r\n else {\r\n subscribeTo = [liveupd_sitename+this_board_dir+':'+$('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 if (data.action == 'cancel_timer') {\r\n // Do nothing if it is my post\r\n if (data.token && Ajax.timerToken && data.token==Ajax.timerToken) return;\r\n let postsSaved = [], msg = ''\r\n data.items.forEach(item => {\r\n $(`.postnode[data-id=${item.id}] .post-ttl`).remove()\r\n postsSaved.push(item.id)\r\n })\r\n if(postsSaved.length) {\r\n msg = postsSaved.length > 1 ?\r\n `${_l.posts} #${postsSaved.join(', #')} ${_l.savedMulti}.`\r\n :`${_l.post} #${postsSaved[0]} ${_l.saved}.`\r\n pups.info(msg, {time: 2 + postsSaved.length})\r\n }\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({\r\n board: data.board,\r\n board_desc: data.board_desc || false,\r\n thread: data.new_thread_id\r\n });\r\n if (! document.hasFocus()) {\r\n scrollAnchor.save('autoload', '.postnode')\r\n this.showNewThreads(() => scrollAnchor.restore('autoload'))\r\n chpok.play()\r\n }\r\n else if(!$('#wild_thread_appeared').length) {\r\n $('#delform').before('<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 let room = data.room + '-' + data.board\r\n if (! this.repliesOnBoardPage[room])\r\n this.repliesOnBoardPage[room] = [data.reply_id]\r\n else\r\n this.repliesOnBoardPage[room].push(data.reply_id)\r\n this.refreshNewRepliesCount(data.board, data.room, data.timestamp)\r\n },\r\n refreshNewRepliesCount(board, threadID, timestamp=null) {\r\n let thread = threadID + '-' + board\r\n , 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 }\r\n if (! document.hasFocus()) {\r\n scrollAnchor.save('autoload', '.postnode')\r\n loadNewReplies(() => scrollAnchor.restore('autoload'))\r\n chpok.play()\r\n }\r\n else {\r\n let $freshReplies = $target.append('<br class=\"fresh-replies-breaker\"><a href=\"/'+ board +'/res/'+threadID+'.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(thr.board, thr.thread, 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 ${posts}\r\n <div id=\"replies${thr.thread}-${thr.board}\" class=\"replies\"></div>\r\n </div>\r\n <br clear=\"left\" />\r\n <hr>`);\r\n if (is_overboard && thr.board_desc) {\r\n document.querySelector('#delform .posthead').insertAdjacentHTML('afterbegin', \r\n `<a href=\"/${thr.board}\" target=\"_blank\" class=\"over-boardlabel\">/${thr.board}/ — ${thr.board_desc}</a>`)\r\n }\r\n this.socket.emit('subscribe', liveupd_sitename+thr.board+':'+thr.thread)\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 let deletedClasses = 'deleted'\r\n + (item.by_op ? ' op-deleted' : '')\r\n + (item.by_mod ? ' mod-deleted' : '')\r\n\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(deletedClasses)\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(deletedClasses)\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(deletedClasses)\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 expandVideo_old($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 video[0].volume = localStorage['mediaVolume'] || 1\r\n video[0].onvolumechange = function() {\r\n localStorage['mediaVolume'] = this.muted ? 0 : this.volume\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 expandVideo($mov, ev) {\r\n ev.preventDefault()\r\n if (Settings.newMediaViewer()) {\r\n let mv = new MediaViewer(...MediaViewer.parseVideo($mov[0]), true)\r\n mv.onCollapse = () => mv = null\r\n }\r\n else {\r\n expandVideo_old($mov, ev)\r\n }\r\n return false\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') == 'off') {\r\n checkd = false;\r\n } else {\r\n checkd = true;\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 if (event.ctrlKey) {\r\n var link = null;\r\n var href = null;\r\n var docloc = document.location.toString();\r\n if (docloc.indexOf('/res/') != -1) {\r\n if(event.key=='Enter') {\r\n handleCtrlEnter(event)\r\n }\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.key)\r\n {\r\n case 'Enter':\r\n handleCtrlEnter(event)\r\n break;\r\n\r\n case 'ArrowLeft':\r\n link = document.getElementById('prevPage');\r\n break;\r\n case 'ArrowRight':\r\n link = document.getElementById('nextPage');\r\n break;\r\n\r\n case 'ArrowDown':\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 'ArrowUp':\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 'Home': // 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) redirectTo(href);\r\n }\r\n }\r\n else {\r\n let mv = document.querySelector('.media-viewer:not(.mv-transparent)')\r\n if (mv) {\r\n if (event.key == 'ArrowLeft')\r\n mv.querySelector('.mv-prev').click()\r\n if (event.key == 'ArrowRight')\r\n mv.querySelector('.mv-next').click()\r\n if (event.key == 'Escape')\r\n mv.querySelector('.mv-close').click()\r\n }\r\n }\r\n}\r\nif (window.document.addEventListener) { // how fucking old is this jeez\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\nNodeList.prototype.map = Array.prototype.map;\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\nElement.prototype._findNext = function(selector) {\r\n let node = this.nextElementSibling\r\n while(node && !node.matches(selector)) {\r\n node = node.nextElementSibling\r\n if (! node) return null\r\n }\r\n return node\r\n}\r\nElement.prototype._findPrevious = function(selector) {\r\n let node = this.previousElementSibling\r\n while(node && !node.matches(selector)) {\r\n node = node.previousElementSibling\r\n if (! node) return null\r\n }\r\n return node\r\n}\r\nNode.prototype._isChildOf = function(parent) {\r\n let node = this.parentNode\r\n while (node) {\r\n if (node == parent) {\r\n return true\r\n }\r\n node = node.parentNode\r\n }\r\n return false\r\n}\r\n\r\nvar replyMap = {\r\n showReplies: function(root=document) {\r\n root.querySelectorAll('.postnode').forEach(post => {\r\n let postNum = post.dataset.id\r\n , board = post.dataset.board\r\n , thread = post._findParent('div[id^=thread]')\r\n , threadID = thread && thread.dataset['threadid']\r\n , msg = post.querySelector('.postmessage')\r\n , repliesContainer = post.querySelector('.replieslist')\r\n if (!this.posts[board])\r\n this.posts[board] = {}\r\n if (this.posts[board][postNum]) {\r\n this.posts[board][postNum].container = repliesContainer\r\n }\r\n else {\r\n this.posts[board][postNum] = {\r\n container: repliesContainer,\r\n replies: []\r\n }\r\n }\r\n let links = msg.querySelectorAll(`a[class^=ref\\\\|]`)\r\n if (links.length) links.forEach(link => {\r\n let linkData = link.className.split(' ')[0].split('|')\r\n , linkDestBoard = linkData[1]\r\n , linkPostNum = linkData[3]\r\n , href = `/${board}/res/${threadID}.html#${postNum}`\r\n , htm = `<a class=\"ref-reply\" href=\"${href}\">&gt;&gt;${board == linkDestBoard ? '' : `/${board}/`}${postNum}</a>`\r\n if (this.posts[linkDestBoard] && this.posts[linkDestBoard][linkPostNum]) {\r\n if (! _.includes(this.posts[linkDestBoard][linkPostNum].replies, htm)) {\r\n this.posts[linkDestBoard][linkPostNum].replies.push(htm)\r\n }\r\n }\r\n else {\r\n if (!this.posts[linkDestBoard])\r\n this.posts[linkDestBoard] = {}\r\n this.posts[linkDestBoard][linkPostNum] = {\r\n replies: [htm]\r\n }\r\n }\r\n this.posts[linkDestBoard][linkPostNum].skip = false\r\n })\r\n })\r\n _.each(this.posts, board => _.each(board, 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=window, dimensions='v') {\r\n if (!window.scrollY) {\r\n this.saved[id] = {_top: true}\r\n return\r\n }\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 = elements instanceof Node\r\n ? [elements]\r\n : elements instanceof NodeList\r\n ? elements\r\n : ((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 return new Promise((resolve, reject) => {\r\n let loaded = this.saved[id]\r\n if (loaded) window.requestAnimationFrame(() => {\r\n if (loaded._top) {\r\n window.scrollTo(0,0)\r\n resolve()\r\n return\r\n }\r\n let bcrAfter = loaded.anchor.getBoundingClientRect()\r\n loaded.parent.scrollBy(\r\n loaded.dimensions.indexOf('h') !== (-1) \r\n ? bcrAfter.left - loaded.left \r\n : 0, \r\n loaded.dimensions.indexOf('v') !== (-1) \r\n ? bcrAfter.top - loaded.top \r\n : 0\r\n )\r\n resolve()\r\n })\r\n else reject()\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 if (opt.onMove)\r\n opt.onMove()\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 if ($iw.data('site') == \"Soundcloud\")\r\n $iw.addClass('soundcloud-embed')\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') == \"Soundcloud\") {\r\n let enccode = encodeURI(code)\r\n let start = $iw.data('start')\r\n $iw.append(`<iframe src=\"https://w.soundcloud.com/player/?url=https%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F${enccode}\" ${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\nfunction resetForm(form, isClone=false) {\r\n let fields = form.querySelectorAll('input[type=text]:not([name=name]), input[type=file], textarea')\r\n fields.forEach(field => field.value = null)\r\n form.querySelectorAll('.site-indicator').forEach(i => i.remove())\r\n richFileInput.clear(form, !isClone)\r\n // Remove extra inputs\r\n form.querySelectorAll('input[name^=addembed], input[name^=addfile], input[name=ttl-enable]').forEach(i => {\r\n i.checked = false\r\n if (i.name == 'ttl-enable' && i.onchange)\r\n i.onchange()\r\n })\r\n}\r\n\r\nfunction initForm(form) {\r\n if (!form)\r\n return\r\n let $form = $(form)\r\n form.querySelectorAll('input[name^=embed]').forEach(i => {\r\n i.addEventListener('input', function() {\r\n let indicator = this.parentElement.querySelector('.site-indicator')\r\n if (indicator) \r\n indicator.remove()\r\n let match = embedLinks.process(this.value)\r\n if(match)\r\n this.insertAdjacentHTML('afterend', `<img src=\"${ku_boardspath}/images/site-logos/${match.site}.png\" class=\"site-indicator\">`)\r\n })\r\n })\r\n form.querySelectorAll('input[name^=imagefile]').forEach(i => {\r\n i.addEventListener('change', function() {\r\n if (this.value) {\r\n let nextCheckbox = this.parentElement.nextElementSibling\r\n if (nextCheckbox)\r\n nextCheckbox.checked = true\r\n }\r\n })\r\n })\r\n // Markup\r\n form.querySelectorAll('.opt-exp').forEach(exp => {\r\n exp.onclick = function(ev) {\r\n ev.preventDefault()\r\n this.querySelector('.expandee').classList.toggle('expanded')\r\n }\r\n exp.onmouseleave = function(ev) {\r\n this.hideTimeout = setTimeout(() => this.querySelector('.expandee').classList.remove('expanded'), 250)\r\n }\r\n exp.onmouseenter = function() {\r\n clearTimeout(this.hideTimeout)\r\n }\r\n })\r\n let cms = form.querySelector('.code_markup_select')\r\n if (cms) {\r\n cms.onchange = function() {\r\n markup($form, `[code=${this.value}]`, '[/code]')\r\n }\r\n }\r\n form.querySelector('.quote_select').onchange = function() {\r\n quotes($form, this.value)\r\n }\r\n // for TeX\r\n let areaID = form.id + '_textarea'\r\n form.querySelector('textarea').id = areaID\r\n form.querySelector('.uib-tx').dataset.target = areaID\r\n // captcha\r\n if (Captcha.enabled && Captcha.enabled!=='only-access')\r\n Captcha.initForm(form)\r\n // readonly stuff\r\n form.querySelectorAll('.make-me-readonly').forEach(ro => {\r\n ro.readOnly = true\r\n ro.addEventListener('focus', () => ro.readOnly = false)\r\n })\r\n // Name disabling\r\n let name = form.querySelector('input[name=disable_name]')\r\n if (name) {\r\n name.onchange = function() {\r\n let off = this.checked\r\n form.querySelector('input[name=name]').disabled = off\r\n localStorage.setItem('post_anonymously', +off)\r\n }\r\n name.checked = !!+localStorage['post_anonymously']\r\n name.onchange()\r\n }\r\n // Submitting\r\n form.addEventListener('submit', function(ev) {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n Ajax.submitPost(this)\r\n })\r\n form.querySelectorAll('.simplified-send-row button[type=\"submit\"]').forEach(sub => {\r\n sub.onclick = function(ev) {\r\n ev.preventDefault()\r\n ev.stopPropagation()\r\n let sage = +(this.name == 'sagebtn')\r\n Ajax.submitPost(form, sage)\r\n }\r\n })\r\n // TTL\r\n let ttl = form.querySelector('input[name=\"ttl-enable\"]')\r\n if (ttl) {\r\n ttl.onchange = function() {\r\n let on = this.checked\r\n , input = form.ttl\r\n input.disabled = !on\r\n input.min = on ? 1 : 0\r\n if (on && input.value == 0) {\r\n input.value = 1\r\n }\r\n }\r\n ttl.onchange()\r\n }\r\n // Detecting last active textarea\r\n form.querySelectorAll('textarea, input[type=text]').forEach(el => {\r\n el.onfocus = () => {\r\n lastActiveForm = form\r\n }\r\n })\r\n // Add file button\r\n let fileButton = form.querySelector('.s-file')\r\n if (fileButton) {\r\n fileButton.onclick = ev => {\r\n ev.preventDefault()\r\n form.querySelector('input[type=file]').click()\r\n }\r\n }\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 if (overboard_dir) {\r\n htm += `<a href=\"/${overboard_dir}\" class=\"mm-item mm-brd\">${overboard_desc}</a>`\r\n }\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\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 {id: 'soundcloud', rx: /[\\w\\W]*soundcloud.com\\/([\\w\\W]*)[\\w\\W]*/i },\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\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 document.body.classList.add('is-catalog')\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 // Catalog refresh button\r\n var refreshBtn = `<div class=\"refresh-catalog\" title=\"${_l.refreshCatalog}\"><svg class=\"icon i-16in20\"><use xlink:href=\"#i-refresh\"></use></svg></div>`\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 refreshBtn+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('pressed');\r\n $target.html(makeIcon('unhide', '', true));\r\n HiddenItems.hideItem('thread', threadID);\r\n $card.addClass('thread-hidden')\r\n }\r\n else {\r\n $target[0].classList.remove('pressed');\r\n $target.html(makeIcon('hide', '', true));\r\n HiddenItems.unhideItem('thread', 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 $('#catalog-contents').html(`<div class=\"cat-loading\"><div class=\"spinner\"></div>${_l.loading}...</div>`);\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', 'mp4', '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 let isGeneric = !_.includes(this.fileTypes.iconsAvailable, embed.file_type)\r\n , thumb = isGeneric\r\n ? makeGenericFileIcon(embed.file_type)\r\n : `<img src=\"${(_.includes(this.fileTypes.embed, embed.file_type)\r\n ? `/inc/filetypes/generic-embed.png`\r\n : `/inc/filetypes/${embed.file_type}.png`)}\">`\r\n // , expandable = _.includes(this.fileTypes.embed, embed.file_type) || _.includes(this.fileTypes.audio, embed.file_type)\r\n thread.smallThumb =\r\n `<a target=\"_blank\" href=\"${thread.url}\" class=\"smallThumb\">${thumb}</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 if (thread.bigThumb)\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 thread.hidden = HiddenItems.isHidden('thread', 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 ? ' pressed' : '')+'\"><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 overboard = {\r\n get boards() {\r\n if (!is_overboard)\r\n return [boardid]\r\n if (!this._boards)\r\n this._boards = _.unique([].map.call(document.querySelectorAll('div[id^=thread]'), e => e.dataset.boardid))\r\n return this._boards\r\n },\r\n idFromName: name => name!==null && $(`div[data-board=\"${name}\"]`).parents('div[id^=thread]').data('boardid')\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 overboard.boards.forEach(boardid => {\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 },\r\n refreshTimestamp: function(timestamp, boardName=null) { // PHP standard timestamp length\r\n if (!this.lastvisits)\r\n this.init()\r\n let id = !is_overboard ? boardid : overboard.idFromName(boardName)\r\n if (id) {\r\n if (timestamp===null || typeof timestamp === 'undefined')\r\n timestamp = Math.round(new Date().getTime() / 1000)\r\n this.lastvisits[id] = timestamp\r\n localStorage.setItem('lastvisits', JSON.stringify(this.lastvisits))\r\n }\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 let 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 return {\r\n id: +res[1],\r\n body: res[2]\r\n }\r\n })\r\n if (threadID === '?') {\r\n let thrno = data.match(/<!--i0:thrno=([0-9]+)-->/) //wtf\r\n if (thrno)\r\n threadID = thrno[1]\r\n }\r\n if (posts.length) {\r\n let postMap = posts.map(post => {\r\n this.cached[`${boardID}_${post.id}`] = post.body\r\n return post.id\r\n })\r\n if (threadID !== '?') {\r\n this.threadMaps[`${boardID}_${threadID}`] = postMap\r\n }\r\n }\r\n done()\r\n })\r\n .fail(err => {\r\n done(err.status || 'null')\r\n })\r\n },\r\n loadPage: function(page, callback, boardID=this_board_dir) {\r\n $.get(`${ku_boardspath}/${boardID}/${page==0 ? '' : `${page}.html`}`)\r\n .then(data => {\r\n let chunk = data.match(/<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-page-start\\s*?<\\/div\\s*?>\\s*([\\s\\S]+?)\\s*<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-page-end\\s*?<\\/div\\s*?>/i)?.[1]\r\n if (chunk) {\r\n document.querySelector('#delform hr:last-of-type').insertAdjacentHTML('afterend', chunk)\r\n this.pageCleanUp()\r\n }\r\n callback()\r\n })\r\n },\r\n pageCleanUp() {\r\n let existingIDs = []\r\n document.querySelectorAll('div[id^=thread]').forEach(thr => {\r\n if (existingIDs.includes(thr.id)) {\r\n thr.previousElementSibling.remove() // remove #unhidethread\r\n thr.nextElementSibling.remove() // remove <br>\r\n thr.nextElementSibling.remove() // remove </hr>\r\n thr.remove()\r\n }\r\n existingIDs.push(thr.id)\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 cachedPostboxes: {},\r\n getPostbox: function(boardID) {\r\n return new Promise((resolve, reject) => {\r\n if (boardID===false) // not overboard\r\n return resolve(document.querySelector('#postform'))\r\n if (this.cachedPostboxes[boardID])\r\n return resolve(this.cachedPostboxes[boardID])\r\n $.get(`${ku_boardspath}/${boardID}/`) // dirty deeds done dirt cheap\r\n .then(data => {\r\n let pb = data.match(/<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-pb\\s*?<\\/div\\s*?>([\\s\\S]+?)<div\\s*?class\\s*?=\\s*?\"[^\"]*?i0svcel[^\"]*?\"\\s*?>!i0-pb-end\\s*?<\\/div\\s*?>/i)\r\n if (!pb)\r\n reject(404)\r\n let c = document.createElement('div')\r\n c.innerHTML = pb[1]\r\n let hcaptchaScript\r\n if (typeof hcaptcha === 'undefined' && (hcaptchaScript = pb[1].match(/<script src=\"(.+?js\\.hcaptcha\\.com.+?)\"/))) {\r\n head.js(hcaptchaScript[1], () => console.log('hcaptcha loaded'))\r\n }\r\n this.cachedPostboxes[boardID] = c.firstChild\r\n resolve(this.cachedPostboxes[boardID])\r\n })\r\n .fail(err => {\r\n reject(err.status || 'null')\r\n })\r\n })\r\n }\r\n}\r\n\r\nvar endlessScroll = {\r\n toggle: function(enabled = this.enabled) {\r\n if (enabled) {\r\n if (!this.bound)\r\n this.bound = this.onScroll.bind(this)\r\n window.addEventListener('scroll', this.bound)\r\n this.onScroll()\r\n }\r\n else\r\n window.removeEventListener('scroll', this.bound)\r\n this.enabled = enabled\r\n },\r\n enabled: false,\r\n onScroll: function() {\r\n if (this.busy || window.scrollY + window.innerHeight < document.body.scrollHeight) return;\r\n this.busy = true\r\n // determine next page\r\n let next = document.querySelector('#pagination a')\r\n if (next) {\r\n let loader = document.querySelector('#delform hr:last-of-type')._ins('afterend', `<div class=\"endless-scroll-loading spin-around\"></div>`)\r\n let page = +next.innerText\r\n HTMLoader.loadPage(page, () => {\r\n next.insertAdjacentHTML('afterend', `<span>${page}</span>`)\r\n next.remove()\r\n loader.remove()\r\n this.busy = false\r\n })\r\n }\r\n }\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}\r\n"],"mappings":"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"}