SHARE
TWEET

Untitled

a guest Jun 30th, 2018 132 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var myVar = setInterval(func, 500);
  2. function func() {
  3.           var treeWalker = document.createTreeWalker(document, NodeFilter.SHOW_TEXT, null, false),
  4.               users = ["home", "boards",
  5.               "board aleatória",
  6.               "criar board",
  7.               "moderar",
  8.               "reportar bug",
  9.               "opções",
  10.              
  11.               "catalog",
  12.               "modo de postagem: resposta ",
  13.               "voltar",
  14.               "ir ao rodapé",
  15.               "assunto",
  16.               "responder",
  17.               "o corpo do texto é pequeno demais ou inexistente.",
  18.               "mensagem",
  19.               "arquivo",
  20.               "selecione, arraste ou cole arquivos aqui",
  21.               "campo obrigatório",
  22.               "exibir opções e limites",
  23.               "ocultar opções e limites",
  24.               "oekaki",
  25.               "mostrar oekaki",
  26.               "fechar oekaki",
  27.               "clique em qualquer imagem neste site para carregá-lo no oekaki",
  28.               "embutir",
  29.               "substitui",
  30.               "não bumpar",
  31.               "você também pode escrever sage no e-mail",
  32.               "imagem spoiler",
  33.               "isso substitui a miniatura da sua imagem por uma interrogação",
  34.               "senha",
  35.               "para remover arquivos e mensagens",
  36.               "formatos permitidos",
  37.               "tamanho máximo",
  38.               "dimensões máximas",
  39.               "você pode enviar",
  40.              
  41.               "resposta rápida",
  42.               "comentário",
  43.              
  44.               "expandir todas as imagens",
  45.               "encolher todas as imagens",
  46.              
  47.               "últimas",
  48.               "mensagens",
  49.               "acompanhar thread",
  50.              
  51.               "muito longa. clique",
  52.               "aqui",
  53.               "para ver o texto completo.",
  54.              
  55.               "respostas com imagem omitidas.",
  56.               "clique para expandir",
  57.               "ocultar respostas expandidas",
  58.               "omitidas",
  59.              
  60.               "esconder post",
  61.               "unhide post",
  62.               "adicionar filtro",
  63.               "denunciar",
  64.               "denúncia",
  65.               "enter reason below",
  66.               "deletar post",
  67.               "deletar arquivo",
  68.              
  69.               "ir para o topo",
  70.               "catálogo",
  71.               "atualizar",
  72.               "ir aos novos posts",
  73.               "automático",
  74.               "atualizando",
  75.              
  76.               "página",
  77.               "todas",
  78.               "anterior",
  79.               "próxima",
  80.              
  81.               "seg",
  82.               "ter",
  83.               "qua",
  84.               "qui",
  85.               "sex",
  86.               "sab",
  87.               "dom",
  88.              
  89.               "anônimo",
  90.               "você"
  91.               ],
  92.               reg = new RegExp(users.join("|"), "ig");
  93.           while (treeWalker.nextNode()) {
  94.               var el = treeWalker.currentNode;
  95.               el.data = el.data.replace(reg, function(a) {
  96.     return {
  97.     "home" : "Главная",
  98.     "boards" : "Доски",
  99.     "board aleatória" : "На случайную доску",
  100.     "criar board" : "Создать доску",
  101.     "moderar" : "Админка",
  102.     "reportar bug" : "Сообщить об ошибке",
  103.     "opções" : "Опции",
  104.    
  105.     "catalog" : "Каталог",
  106.     "modo de postagem: resposta " : "Ответить в тред ",
  107.     "voltar" : "Назад",
  108.     "ir ao rodapé" : "Вниз",
  109.     "assunto" : "Имя",
  110.     "responder" : "Ответить в тред",
  111.     "o corpo do texto é pequeno demais ou inexistente." : "Текст слишком мал или отсутствует",
  112.     "mensagem" : "Текст",
  113.     "arquivo" : "Файл",
  114.     "selecione, arraste ou cole arquivos aqui" : "Кликни / брось файл сюда.",
  115.     "campo obrigatório" : "обязательное поле",
  116.     "exibir opções e limites" : "Параметры и лимиты",
  117.     "ocultar opções e limites" : "Свернуть параметры и лимиты",
  118.     "oekaki" : "Оэкаки",
  119.     "mostrar oekaki" : "Развернуть",
  120.     "fechar oekaki" : "Свернуть",
  121.     "clique em qualquer imagem neste site para carregá-lo no oekaki" : "Нажмите на любое изображение на этом сайте, чтобы загрузить его в оэкаки",
  122.     "embutir" : "Ватермарка",
  123.     "substitui" : "Заменить",
  124.     "não bumpar" : "Sage",
  125.     "você também pode escrever sage no e-mail" : "вы также можете подписаться на электронную почту",
  126.     "imagem spoiler" : "Mark your image as a spoiler",
  127.     "isso substitui a miniatura da sua imagem por uma interrogação" : "это заменяет эскиз вашего изображения знаком вопроса",
  128.     "senha" : "Пароль",
  129.     "para remover arquivos e mensagens" : "служит для удаления ваших постов",
  130.     "formatos permitidos" : "Поддерживаемые форматы",
  131.     "tamanho máximo" : "Максимальный объем",
  132.     "dimensões máximas" : "Максимальный размер изображения",
  133.     "você pode enviar" : "Число вложений в 1 посте:",
  134.    
  135.     "resposta rápida" : "Быстрый ответ",
  136.     "comentário" : "Комментарий",          
  137.    
  138.     "expandir todas as imagens" : "Развернуть все изображения",
  139.     "encolher todas as imagens" : "Свернуть все изображения",
  140.    
  141.     "últimas" : "Последние",
  142.     "mensagens" : "сообщений",
  143.     "acompanhar thread" : "Следить",
  144.    
  145.     "muito longa. clique" : "слишком длинный. Нажмите",
  146.     "aqui" : "здесь",
  147.     "para ver o texto completo." : "чтобы увидеть весь текст.",
  148.    
  149.     "respostas com imagem omitidas." : "постов с изображениями.",
  150.     "clique para expandir" : "Раскрыть",
  151.     "ocultar respostas expandidas" : "Свернуть",
  152.     "omitidas" : "скрыто",
  153.    
  154.     "esconder post" : "Скрыть пост",
  155.     "unhide post" : "Развернуть пост",
  156.     "adicionar filtro" : "Скрытие",
  157.     "denunciar" : "Пожаловаться",
  158.     "denúncia" : "Пожаловаться на ЦП",
  159.     "enter reason below" : "Изложите причину",
  160.     "deletar post" : "Удалить пост",
  161.     "deletar arquivo" : "Удалить вложение",
  162.    
  163.     "ir para o topo" : "Вверх",
  164.     "catálogo" : "Каталог",
  165.     "atualizar" : "Обновить",
  166.     "ir aos novos posts" : "Переходить к новым постам",
  167.     "automático" : "Автообновление",
  168.     "atualizando" : "Обновляю",
  169.    
  170.     "página" : "Страница",
  171.     "todas" : "Все",
  172.     "anterior" : "Назад",
  173.     "próxima" : "Вперед",
  174.    
  175.     "seg" : "Пн",
  176.     "ter" : "Вт",
  177.     "qua" : "Ср",
  178.     "qui" : "Чт",
  179.     "sex" : "Пт",
  180.     "sab" : "Сб",
  181.     "dom" : "Вс",
  182.    
  183.     "anônimo" : "Аноним",
  184.     "você" : "Ваш пост",
  185.     }[a.toLowerCase()] || a
  186. })
  187.           }};
  188. /*
  189.  * local-time.js
  190.  * https://github.com/savetheinternet/Tinyboard/blob/master/js/local-time.js
  191.  *
  192.  * Released under the MIT license
  193.  * Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org>
  194.  * Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net>
  195.  *
  196.  * Usage:
  197.  *   // $config['additional_javascript'][] = 'js/jquery.min.js';
  198.  *   // $config['additional_javascript'][] = 'js/strftime.min.js';
  199.  *   $config['additional_javascript'][] = 'js/local-time.js';
  200.  *
  201.  */
  202.  
  203. $(document).ready(function(){
  204.     'use strict';
  205.  
  206.     var iso8601 = function(s) {
  207.         s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
  208.         s = s.replace(/-/,"/").replace(/-/,"/");
  209.         s = s.replace(/T/," ").replace(/Z/," UTC-2");
  210.         s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
  211.         return new Date(s);
  212.     };
  213.     var zeropad = function(num, count) {
  214.         return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
  215.     };
  216.  
  217.     var dateformat = (typeof strftime === 'undefined') ? function(t) {
  218.         return zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) +
  219.                 " (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()]  + ") " +
  220.                 // time
  221.                 zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
  222.  
  223.     } : function(t) {
  224.         // post_date is defined in templates/main.js
  225.         return strftime(window.post_date, t, datelocale);
  226.     };
  227.  
  228.     function timeDifference(current, previous) {
  229.  
  230.         var msPerMinute = 60 * 1000;
  231.         var msPerHour = msPerMinute * 60;
  232.         var msPerDay = msPerHour * 24;
  233.         var msPerMonth = msPerDay * 30;
  234.         var msPerYear = msPerDay * 365;
  235.  
  236.         var elapsed = current - previous;
  237.  
  238.         if (elapsed < msPerMinute) {
  239.             return 'Just now';
  240.         } else if (elapsed < msPerHour) {
  241.             return Math.round(elapsed/msPerMinute) + (Math.round(elapsed/msPerMinute)<=1 ? ' minute ago':' minutes ago');
  242.         } else if (elapsed < msPerDay ) {
  243.             return Math.round(elapsed/msPerHour ) + (Math.round(elapsed/msPerHour)<=1 ? ' hour ago':' hours ago');
  244.         } else if (elapsed < msPerMonth) {
  245.             return Math.round(elapsed/msPerDay) + (Math.round(elapsed/msPerDay)<=1 ? ' day ago':' days ago');
  246.         } else if (elapsed < msPerYear) {
  247.             return Math.round(elapsed/msPerMonth) + (Math.round(elapsed/msPerMonth)<=1 ? ' month ago':' months ago');
  248.         } else {
  249.             return Math.round(elapsed/msPerYear ) + (Math.round(elapsed/msPerYear)<=1 ? ' year ago':' years ago');
  250.         }
  251.     }
  252.  
  253.     var do_localtime = function(elem) {
  254.         var times = elem.getElementsByTagName('time');
  255.         var currentTime = Date.now();
  256.  
  257.         for(var i = 0; i < times.length; i++) {
  258.             var t = times[i].getAttribute('datetime');
  259.             var postTime = new Date(t);
  260.  
  261.             times[i].setAttribute('data-local', 'true');
  262.  
  263.             if (!localStorage.show_relative_time || localStorage.show_relative_time === 'false') {
  264.                 times[i].innerHTML = dateformat(iso8601(t));
  265.                 times[i].setAttribute('title', timeDifference(currentTime, postTime.getTime()));
  266.             } else {
  267.                 times[i].innerHTML = timeDifference(currentTime, postTime.getTime());
  268.                 times[i].setAttribute('title', dateformat(iso8601(t)));
  269.             }
  270.        
  271.         }
  272.     };
  273.  
  274.     if (window.Options && Options.get_tab('general') && window.jQuery) {
  275.         var interval_id;
  276.         Options.extend_tab('general', '<label id="show-relative-time"><input type="checkbox">' + _('Show relative time') + '</label>');
  277.  
  278.         $('#show-relative-time>input').on('change', function() {
  279.             if (localStorage.show_relative_time === 'true') {
  280.                 localStorage.show_relative_time = 'false';
  281.                 clearInterval(interval_id);
  282.             } else {
  283.                 localStorage.show_relative_time = 'true';
  284.                 interval_id = setInterval(do_localtime, 30000, document);
  285.             }
  286.             // no need to refresh page
  287.             do_localtime(document);
  288.         });
  289.  
  290.         if (localStorage.show_relative_time === 'true') {
  291.             $('#show-relative-time>input').attr('checked','checked');
  292.             interval_id = setInterval(do_localtime, 30000, document);
  293.         }
  294.  
  295.         // allow to work with auto-reload.js, etc.
  296.         $(document).on('new_post', function(e, post) {
  297.             do_localtime(post);
  298.         });
  299.     }
  300.  
  301.     do_localtime(document);
  302. });
  303. RAW Paste Data
  304.  
  305. var myVar = setInterval(func, 500);
  306. function func() {
  307.           var treeWalker = document.createTreeWalker(document, NodeFilter.SHOW_TEXT, null, false),
  308.               users = ["home", "boards",
  309.               "board aleatória",
  310.               "criar board",
  311.               "moderar",
  312.               "reportar bug",
  313.               "opções",
  314.              
  315.               "catalog",
  316.               "modo de postagem: resposta ",
  317.               "voltar",
  318.               "ir ao rodapé",
  319.               "assunto",
  320.               "responder",
  321.               "o corpo do texto é pequeno demais ou inexistente.",
  322.               "mensagem",
  323.               "arquivo",
  324.               "selecione, arraste ou cole arquivos aqui",
  325.               "campo obrigatório",
  326.               "exibir opções e limites",
  327.               "ocultar opções e limites",
  328.               "oekaki",
  329.               "mostrar oekaki",
  330.               "fechar oekaki",
  331.               "clique em qualquer imagem neste site para carregá-lo no oekaki",
  332.               "embutir",
  333.               "substitui",
  334.               "não bumpar",
  335.               "você também pode escrever sage no e-mail",
  336.               "imagem spoiler",
  337.               "isso substitui a miniatura da sua imagem por uma interrogação",
  338.               "senha",
  339.               "para remover arquivos e mensagens",
  340.               "formatos permitidos",
  341.               "tamanho máximo",
  342.               "dimensões máximas",
  343.               "você pode enviar",
  344.              
  345.               "resposta rápida",
  346.               "comentário",
  347.              
  348.               "expandir todas as imagens",
  349.               "encolher todas as imagens",
  350.              
  351.               "últimas",
  352.               "mensagens",
  353.               "acompanhar thread",
  354.              
  355.               "muito longa. clique",
  356.               "aqui",
  357.               "para ver o texto completo.",
  358.              
  359.               "respostas com imagem omitidas.",
  360.               "clique para expandir",
  361.               "ocultar respostas expandidas",
  362.               "omitidas",
  363.              
  364.               "esconder post",
  365.               "unhide post",
  366.               "adicionar filtro",
  367.               "denunciar",
  368.               "denúncia",
  369.               "enter reason below",
  370.               "deletar post",
  371.               "deletar arquivo",
  372.              
  373.               "ir para o topo",
  374.               "catálogo",
  375.               "atualizar",
  376.               "ir aos novos posts",
  377.               "automático",
  378.               "atualizando",
  379.              
  380.               "página",
  381.               "todas",
  382.               "anterior",
  383.               "próxima",
  384.              
  385.               "seg",
  386.               "ter",
  387.               "qua",
  388.               "qui",
  389.               "sex",
  390.               "sab",
  391.               "dom",
  392.              
  393.               "anônimo",
  394.               "você"
  395.               ],
  396.               reg = new RegExp(users.join("|"), "ig");
  397.           while (treeWalker.nextNode()) {
  398.               var el = treeWalker.currentNode;
  399.               el.data = el.data.replace(reg, function(a) {
  400.     return {
  401.     "home" : "Главная",
  402.     "boards" : "Доски",
  403.     "board aleatória" : "На случайную доску",
  404.     "criar board" : "Создать доску",
  405.     "moderar" : "Админка",
  406.     "reportar bug" : "Сообщить об ошибке",
  407.     "opções" : "Опции",
  408.    
  409.     "catalog" : "Каталог",
  410.     "modo de postagem: resposta " : "Ответить в тред ",
  411.     "voltar" : "Назад",
  412.     "ir ao rodapé" : "Вниз",
  413.     "assunto" : "Имя",
  414.     "responder" : "Ответить в тред",
  415.     "o corpo do texto é pequeno demais ou inexistente." : "Текст слишком мал или отсутствует",
  416.     "mensagem" : "Текст",
  417.     "arquivo" : "Файл",
  418.     "selecione, arraste ou cole arquivos aqui" : "Кликни / брось файл сюда.",
  419.     "campo obrigatório" : "обязательное поле",
  420.     "exibir opções e limites" : "Параметры и лимиты",
  421.     "ocultar opções e limites" : "Свернуть параметры и лимиты",
  422.     "oekaki" : "Оэкаки",
  423.     "mostrar oekaki" : "Развернуть",
  424.     "fechar oekaki" : "Свернуть",
  425.     "clique em qualquer imagem neste site para carregá-lo no oekaki" : "Нажмите на любое изображение на этом сайте, чтобы загрузить его в оэкаки",
  426.     "embutir" : "Ватермарка",
  427.     "substitui" : "Заменить",
  428.     "não bumpar" : "Sage",
  429.     "você também pode escrever sage no e-mail" : "вы также можете подписаться на электронную почту",
  430.     "imagem spoiler" : "Mark your image as a spoiler",
  431.     "isso substitui a miniatura da sua imagem por uma interrogação" : "это заменяет эскиз вашего изображения знаком вопроса",
  432.     "senha" : "Пароль",
  433.     "para remover arquivos e mensagens" : "служит для удаления ваших постов",
  434.     "formatos permitidos" : "Поддерживаемые форматы",
  435.     "tamanho máximo" : "Максимальный объем",
  436.     "dimensões máximas" : "Максимальный размер изображения",
  437.     "você pode enviar" : "Число вложений в 1 посте:",
  438.    
  439.     "resposta rápida" : "Быстрый ответ",
  440.     "comentário" : "Комментарий",          
  441.    
  442.     "expandir todas as imagens" : "Развернуть все изображения",
  443.     "encolher todas as imagens" : "Свернуть все изображения",
  444.    
  445.     "últimas" : "Последние",
  446.     "mensagens" : "сообщений",
  447.     "acompanhar thread" : "Следить",
  448.    
  449.     "muito longa. clique" : "слишком длинный. Нажмите",
  450.     "aqui" : "здесь",
  451.     "para ver o texto completo." : "чтобы увидеть весь текст.",
  452.    
  453.     "respostas com imagem omitidas." : "постов с изображениями.",
  454.     "clique para expandir" : "Раскрыть",
  455.     "ocultar respostas expandidas" : "Свернуть",
  456.     "omitidas" : "скрыто",
  457.    
  458.     "esconder post" : "Скрыть пост",
  459.     "unhide post" : "Развернуть пост",
  460.     "adicionar filtro" : "Скрытие",
  461.     "denunciar" : "Пожаловаться",
  462.     "denúncia" : "Пожаловаться на ЦП",
  463.     "enter reason below" : "Изложите причину",
  464.     "deletar post" : "Удалить пост",
  465.     "deletar arquivo" : "Удалить вложение",
  466.    
  467.     "ir para o topo" : "Вверх",
  468.     "catálogo" : "Каталог",
  469.     "atualizar" : "Обновить",
  470.     "ir aos novos posts" : "Переходить к новым постам",
  471.     "automático" : "Автообновление",
  472.     "atualizando" : "Обновляю",
  473.    
  474.     "página" : "Страница",
  475.     "todas" : "Все",
  476.     "anterior" : "Назад",
  477.     "próxima" : "Вперед",
  478.    
  479.     "seg" : "Пн",
  480.     "ter" : "Вт",
  481.     "qua" : "Ср",
  482.     "qui" : "Чт",
  483.     "sex" : "Пт",
  484.     "sab" : "Сб",
  485.     "dom" : "Вс",
  486.    
  487.     "anônimo" : "Аноним",
  488.     "você" : "Ваш пост",
  489.     }[a.toLowerCase()] || a
  490. })
  491.           }};
  492. /*
  493.  * local-time.js
  494.  * https://github.com/savetheinternet/Tinyboard/blob/master/js/local-time.js
  495.  *
  496.  * Released under the MIT license
  497.  * Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org>
  498.  * Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net>
  499.  *
  500.  * Usage:
  501.  *   // $config['additional_javascript'][] = 'js/jquery.min.js';
  502.  *   // $config['additional_javascript'][] = 'js/strftime.min.js';
  503.  *   $config['additional_javascript'][] = 'js/local-time.js';
  504.  *
  505.  */
  506.  
  507. $(document).ready(function(){
  508.     'use strict';
  509.  
  510.     var iso8601 = function(s) {
  511.         s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
  512.         s = s.replace(/-/,"/").replace(/-/,"/");
  513.         s = s.replace(/T/," ").replace(/Z/," UTC-2");
  514.         s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
  515.         return new Date(s);
  516.     };
  517.     var zeropad = function(num, count) {
  518.         return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
  519.     };
  520.  
  521.     var dateformat = (typeof strftime === 'undefined') ? function(t) {
  522.         return zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) +
  523.                 " (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()]  + ") " +
  524.                 // time
  525.                 zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
  526.  
  527.     } : function(t) {
  528.         // post_date is defined in templates/main.js
  529.         return strftime(window.post_date, t, datelocale);
  530.     };
  531.  
  532.     function timeDifference(current, previous) {
  533.  
  534.         var msPerMinute = 60 * 1000;
  535.         var msPerHour = msPerMinute * 60;
  536.         var msPerDay = msPerHour * 24;
  537.         var msPerMonth = msPerDay * 30;
  538.         var msPerYear = msPerDay * 365;
  539.  
  540.         var elapsed = current - previous;
  541.  
  542.         if (elapsed < msPerMinute) {
  543.             return 'Just now';
  544.         } else if (elapsed < msPerHour) {
  545.             return Math.round(elapsed/msPerMinute) + (Math.round(elapsed/msPerMinute)<=1 ? ' minute ago':' minutes ago');
  546.         } else if (elapsed < msPerDay ) {
  547.             return Math.round(elapsed/msPerHour ) + (Math.round(elapsed/msPerHour)<=1 ? ' hour ago':' hours ago');
  548.         } else if (elapsed < msPerMonth) {
  549.             return Math.round(elapsed/msPerDay) + (Math.round(elapsed/msPerDay)<=1 ? ' day ago':' days ago');
  550.         } else if (elapsed < msPerYear) {
  551.             return Math.round(elapsed/msPerMonth) + (Math.round(elapsed/msPerMonth)<=1 ? ' month ago':' months ago');
  552.         } else {
  553.             return Math.round(elapsed/msPerYear ) + (Math.round(elapsed/msPerYear)<=1 ? ' year ago':' years ago');
  554.         }
  555.     }
  556.  
  557.     var do_localtime = function(elem) {
  558.         var times = elem.getElementsByTagName('time');
  559.         var currentTime = Date.now();
  560.  
  561.         for(var i = 0; i < times.length; i++) {
  562.             var t = times[i].getAttribute('datetime');
  563.             var postTime = new Date(t);
  564.  
  565.             times[i].setAttribute('data-local', 'true');
  566.  
  567.             if (!localStorage.show_relative_time || localStorage.show_relative_time === 'false') {
  568.                 times[i].innerHTML = dateformat(iso8601(t));
  569.                 times[i].setAttribute('title', timeDifference(currentTime, postTime.getTime()));
  570.             } else {
  571.                 times[i].innerHTML = timeDifference(currentTime, postTime.getTime());
  572.                 times[i].setAttribute('title', dateformat(iso8601(t)));
  573.             }
  574.        
  575.         }
  576.     };
  577.  
  578.     if (window.Options && Options.get_tab('general') && window.jQuery) {
  579.         var interval_id;
  580.         Options.extend_tab('general', '<label id="show-relative-time"><input type="checkbox">' + _('Show relative time') + '</label>');
  581.  
  582.         $('#show-relative-time>input').on('change', function() {
  583.             if (localStorage.show_relative_time === 'true') {
  584.                 localStorage.show_relative_time = 'false';
  585.                 clearInterval(interval_id);
  586.             } else {
  587.                 localStorage.show_relative_time = 'true';
  588.                 interval_id = setInterval(do_localtime, 30000, document);
  589.             }
  590.             // no need to refresh page
  591.             do_localtime(document);
  592.         });
  593.  
  594.         if (localStorage.show_relative_time === 'true') {
  595.             $('#show-relative-time>input').attr('checked','checked');
  596.             interval_id = setInterval(do_localtime, 30000, document);
  597.         }
  598.  
  599.         // allow to work with auto-reload.js, etc.
  600.         $(document).on('new_post', function(e, post) {
  601.             do_localtime(post);
  602.         });
  603.     }
  604.  
  605.     do_localtime(document);
  606. });
  607. RAW Paste Data
  608.  
  609. var myVar = setInterval(func, 500);
  610. function func() {
  611.           var treeWalker = document.createTreeWalker(document, NodeFilter.SHOW_TEXT, null, false),
  612.               users = ["home", "boards",
  613.               "board aleatória",
  614.               "criar board",
  615.               "moderar",
  616.               "reportar bug",
  617.               "opções",
  618.              
  619.               "catalog",
  620.               "modo de postagem: resposta ",
  621.               "voltar",
  622.               "ir ao rodapé",
  623.               "assunto",
  624.               "responder",
  625.               "o corpo do texto é pequeno demais ou inexistente.",
  626.               "mensagem",
  627.               "arquivo",
  628.               "selecione, arraste ou cole arquivos aqui",
  629.               "campo obrigatório",
  630.               "exibir opções e limites",
  631.               "ocultar opções e limites",
  632.               "oekaki",
  633.               "mostrar oekaki",
  634.               "fechar oekaki",
  635.               "clique em qualquer imagem neste site para carregá-lo no oekaki",
  636.               "embutir",
  637.               "substitui",
  638.               "não bumpar",
  639.               "você também pode escrever sage no e-mail",
  640.               "imagem spoiler",
  641.               "isso substitui a miniatura da sua imagem por uma interrogação",
  642.               "senha",
  643.               "para remover arquivos e mensagens",
  644.               "formatos permitidos",
  645.               "tamanho máximo",
  646.               "dimensões máximas",
  647.               "você pode enviar",
  648.              
  649.               "resposta rápida",
  650.               "comentário",
  651.              
  652.               "expandir todas as imagens",
  653.               "encolher todas as imagens",
  654.              
  655.               "últimas",
  656.               "mensagens",
  657.               "acompanhar thread",
  658.              
  659.               "muito longa. clique",
  660.               "aqui",
  661.               "para ver o texto completo.",
  662.              
  663.               "respostas com imagem omitidas.",
  664.               "clique para expandir",
  665.               "ocultar respostas expandidas",
  666.               "omitidas",
  667.              
  668.               "esconder post",
  669.               "unhide post",
  670.               "adicionar filtro",
  671.               "denunciar",
  672.               "denúncia",
  673.               "enter reason below",
  674.               "deletar post",
  675.               "deletar arquivo",
  676.              
  677.               "ir para o topo",
  678.               "catálogo",
  679.               "atualizar",
  680.               "ir aos novos posts",
  681.               "automático",
  682.               "atualizando",
  683.              
  684.               "página",
  685.               "todas",
  686.               "anterior",
  687.               "próxima",
  688.              
  689.               "seg",
  690.               "ter",
  691.               "qua",
  692.               "qui",
  693.               "sex",
  694.               "sab",
  695.               "dom",
  696.              
  697.               "anônimo",
  698.               "você"
  699.               ],
  700.               reg = new RegExp(users.join("|"), "ig");
  701.           while (treeWalker.nextNode()) {
  702.               var el = treeWalker.currentNode;
  703.               el.data = el.data.replace(reg, function(a) {
  704.     return {
  705.     "home" : "Главная",
  706.     "boards" : "Доски",
  707.     "board aleatória" : "На случайную доску",
  708.     "criar board" : "Создать доску",
  709.     "moderar" : "Админка",
  710.     "reportar bug" : "Сообщить об ошибке",
  711.     "opções" : "Опции",
  712.    
  713.     "catalog" : "Каталог",
  714.     "modo de postagem: resposta " : "Ответить в тред ",
  715.     "voltar" : "Назад",
  716.     "ir ao rodapé" : "Вниз",
  717.     "assunto" : "Имя",
  718.     "responder" : "Ответить в тред",
  719.     "o corpo do texto é pequeno demais ou inexistente." : "Текст слишком мал или отсутствует",
  720.     "mensagem" : "Текст",
  721.     "arquivo" : "Файл",
  722.     "selecione, arraste ou cole arquivos aqui" : "Кликни / брось файл сюда.",
  723.     "campo obrigatório" : "обязательное поле",
  724.     "exibir opções e limites" : "Параметры и лимиты",
  725.     "ocultar opções e limites" : "Свернуть параметры и лимиты",
  726.     "oekaki" : "Оэкаки",
  727.     "mostrar oekaki" : "Развернуть",
  728.     "fechar oekaki" : "Свернуть",
  729.     "clique em qualquer imagem neste site para carregá-lo no oekaki" : "Нажмите на любое изображение на этом сайте, чтобы загрузить его в оэкаки",
  730.     "embutir" : "Ватермарка",
  731.     "substitui" : "Заменить",
  732.     "não bumpar" : "Sage",
  733.     "você também pode escrever sage no e-mail" : "вы также можете подписаться на электронную почту",
  734.     "imagem spoiler" : "Mark your image as a spoiler",
  735.     "isso substitui a miniatura da sua imagem por uma interrogação" : "это заменяет эскиз вашего изображения знаком вопроса",
  736.     "senha" : "Пароль",
  737.     "para remover arquivos e mensagens" : "служит для удаления ваших постов",
  738.     "formatos permitidos" : "Поддерживаемые форматы",
  739.     "tamanho máximo" : "Максимальный объем",
  740.     "dimensões máximas" : "Максимальный размер изображения",
  741.     "você pode enviar" : "Число вложений в 1 посте:",
  742.    
  743.     "resposta rápida" : "Быстрый ответ",
  744.     "comentário" : "Комментарий",          
  745.    
  746.     "expandir todas as imagens" : "Развернуть все изображения",
  747.     "encolher todas as imagens" : "Свернуть все изображения",
  748.    
  749.     "últimas" : "Последние",
  750.     "mensagens" : "сообщений",
  751.     "acompanhar thread" : "Следить",
  752.    
  753.     "muito longa. clique" : "слишком длинный. Нажмите",
  754.     "aqui" : "здесь",
  755.     "para ver o texto completo." : "чтобы увидеть весь текст.",
  756.    
  757.     "respostas com imagem omitidas." : "постов с изображениями.",
  758.     "clique para expandir" : "Раскрыть",
  759.     "ocultar respostas expandidas" : "Свернуть",
  760.     "omitidas" : "скрыто",
  761.    
  762.     "esconder post" : "Скрыть пост",
  763.     "unhide post" : "Развернуть пост",
  764.     "adicionar filtro" : "Скрытие",
  765.     "denunciar" : "Пожаловаться",
  766.     "denúncia" : "Пожаловаться на ЦП",
  767.     "enter reason below" : "Изложите причину",
  768.     "deletar post" : "Удалить пост",
  769.     "deletar arquivo" : "Удалить вложение",
  770.    
  771.     "ir para o topo" : "Вверх",
  772.     "catálogo" : "Каталог",
  773.     "atualizar" : "Обновить",
  774.     "ir aos novos posts" : "Переходить к новым постам",
  775.     "automático" : "Автообновление",
  776.     "atualizando" : "Обновляю",
  777.    
  778.     "página" : "Страница",
  779.     "todas" : "Все",
  780.     "anterior" : "Назад",
  781.     "próxima" : "Вперед",
  782.    
  783.     "seg" : "Пн",
  784.     "ter" : "Вт",
  785.     "qua" : "Ср",
  786.     "qui" : "Чт",
  787.     "sex" : "Пт",
  788.     "sab" : "Сб",
  789.     "dom" : "Вс",
  790.    
  791.     "anônimo" : "Аноним",
  792.     "você" : "Ваш пост",
  793.     }[a.toLowerCase()] || a
  794. })
  795.           }};
  796. /*
  797.  * local-time.js
  798.  * https://github.com/savetheinternet/Tinyboard/blob/master/js/local-time.js
  799.  *
  800.  * Released under the MIT license
  801.  * Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org>
  802.  * Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net>
  803.  *
  804.  * Usage:
  805.  *   // $config['additional_javascript'][] = 'js/jquery.min.js';
  806.  *   // $config['additional_javascript'][] = 'js/strftime.min.js';
  807.  *   $config['additional_javascript'][] = 'js/local-time.js';
  808.  *
  809.  */
  810.  
  811. $(document).ready(function(){
  812.     'use strict';
  813.  
  814.     var iso8601 = function(s) {
  815.         s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
  816.         s = s.replace(/-/,"/").replace(/-/,"/");
  817.         s = s.replace(/T/," ").replace(/Z/," UTC-2");
  818.         s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
  819.         return new Date(s);
  820.     };
  821.     var zeropad = function(num, count) {
  822.         return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
  823.     };
  824.  
  825.     var dateformat = (typeof strftime === 'undefined') ? function(t) {
  826.         return zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) +
  827.                 " (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()]  + ") " +
  828.                 // time
  829.                 zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
  830.  
  831.     } : function(t) {
  832.         // post_date is defined in templates/main.js
  833.         return strftime(window.post_date, t, datelocale);
  834.     };
  835.  
  836.     function timeDifference(current, previous) {
  837.  
  838.         var msPerMinute = 60 * 1000;
  839.         var msPerHour = msPerMinute * 60;
  840.         var msPerDay = msPerHour * 24;
  841.         var msPerMonth = msPerDay * 30;
  842.         var msPerYear = msPerDay * 365;
  843.  
  844.         var elapsed = current - previous;
  845.  
  846.         if (elapsed < msPerMinute) {
  847.             return 'Just now';
  848.         } else if (elapsed < msPerHour) {
  849.             return Math.round(elapsed/msPerMinute) + (Math.round(elapsed/msPerMinute)<=1 ? ' minute ago':' minutes ago');
  850.         } else if (elapsed < msPerDay ) {
  851.             return Math.round(elapsed/msPerHour ) + (Math.round(elapsed/msPerHour)<=1 ? ' hour ago':' hours ago');
  852.         } else if (elapsed < msPerMonth) {
  853.             return Math.round(elapsed/msPerDay) + (Math.round(elapsed/msPerDay)<=1 ? ' day ago':' days ago');
  854.         } else if (elapsed < msPerYear) {
  855.             return Math.round(elapsed/msPerMonth) + (Math.round(elapsed/msPerMonth)<=1 ? ' month ago':' months ago');
  856.         } else {
  857.             return Math.round(elapsed/msPerYear ) + (Math.round(elapsed/msPerYear)<=1 ? ' year ago':' years ago');
  858.         }
  859.     }
  860.  
  861.     var do_localtime = function(elem) {
  862.         var times = elem.getElementsByTagName('time');
  863.         var currentTime = Date.now();
  864.  
  865.         for(var i = 0; i < times.length; i++) {
  866.             var t = times[i].getAttribute('datetime');
  867.             var postTime = new Date(t);
  868.  
  869.             times[i].setAttribute('data-local', 'true');
  870.  
  871.             if (!localStorage.show_relative_time || localStorage.show_relative_time === 'false') {
  872.                 times[i].innerHTML = dateformat(iso8601(t));
  873.                 times[i].setAttribute('title', timeDifference(currentTime, postTime.getTime()));
  874.             } else {
  875.                 times[i].innerHTML = timeDifference(currentTime, postTime.getTime());
  876.                 times[i].setAttribute('title', dateformat(iso8601(t)));
  877.             }
  878.        
  879.         }
  880.     };
  881.  
  882.     if (window.Options && Options.get_tab('general') && window.jQuery) {
  883.         var interval_id;
  884.         Options.extend_tab('general', '<label id="show-relative-time"><input type="checkbox">' + _('Show relative time') + '</label>');
  885.  
  886.         $('#show-relative-time>input').on('change', function() {
  887.             if (localStorage.show_relative_time === 'true') {
  888.                 localStorage.show_relative_time = 'false';
  889.                 clearInterval(interval_id);
  890.             } else {
  891.                 localStorage.show_relative_time = 'true';
  892.                 interval_id = setInterval(do_localtime, 30000, document);
  893.             }
  894.             // no need to refresh page
  895.             do_localtime(document);
  896.         });
  897.  
  898.         if (localStorage.show_relative_time === 'true') {
  899.             $('#show-relative-time>input').attr('checked','checked');
  900.             interval_id = setInterval(do_localtime, 30000, document);
  901.         }
  902.  
  903.         // allow to work with auto-reload.js, etc.
  904.         $(document).on('new_post', function(e, post) {
  905.             do_localtime(post);
  906.         });
  907.     }
  908.  
  909.     do_localtime(document);
  910. });
  911. RAW Paste Data
  912.  
  913. var myVar = setInterval(func, 500);
  914. function func() {
  915.           var treeWalker = document.createTreeWalker(document, NodeFilter.SHOW_TEXT, null, false),
  916.               users = ["home", "boards",
  917.               "board aleatória",
  918.               "criar board",
  919.               "moderar",
  920.               "reportar bug",
  921.               "opções",
  922.              
  923.               "catalog",
  924.               "modo de postagem: resposta ",
  925.               "voltar",
  926.               "ir ao rodapé",
  927.               "assunto",
  928.               "responder",
  929.               "o corpo do texto é pequeno demais ou inexistente.",
  930.               "mensagem",
  931.               "arquivo",
  932.               "selecione, arraste ou cole arquivos aqui",
  933.               "campo obrigatório",
  934.               "exibir opções e limites",
  935.               "ocultar opções e limites",
  936.               "oekaki",
  937.               "mostrar oekaki",
  938.               "fechar oekaki",
  939.               "clique em qualquer imagem neste site para carregá-lo no oekaki",
  940.               "embutir",
  941.               "substitui",
  942.               "não bumpar",
  943.               "você também pode escrever sage no e-mail",
  944.               "imagem spoiler",
  945.               "isso substitui a miniatura da sua imagem por uma interrogação",
  946.               "senha",
  947.               "para remover arquivos e mensagens",
  948.               "formatos permitidos",
  949.               "tamanho máximo",
  950.               "dimensões máximas",
  951.               "você pode enviar",
  952.              
  953.               "resposta rápida",
  954.               "comentário",
  955.              
  956.               "expandir todas as imagens",
  957.               "encolher todas as imagens",
  958.              
  959.               "últimas",
  960.               "mensagens",
  961.               "acompanhar thread",
  962.              
  963.               "muito longa. clique",
  964.               "aqui",
  965.               "para ver o texto completo.",
  966.              
  967.               "respostas com imagem omitidas.",
  968.               "clique para expandir",
  969.               "ocultar respostas expandidas",
  970.               "omitidas",
  971.              
  972.               "esconder post",
  973.               "unhide post",
  974.               "adicionar filtro",
  975.               "denunciar",
  976.               "denúncia",
  977.               "enter reason below",
  978.               "deletar post",
  979.               "deletar arquivo",
  980.              
  981.               "ir para o topo",
  982.               "catálogo",
  983.               "atualizar",
  984.               "ir aos novos posts",
  985.               "automático",
  986.               "atualizando",
  987.              
  988.               "página",
  989.               "todas",
  990.               "anterior",
  991.               "próxima",
  992.              
  993.               "seg",
  994.               "ter",
  995.               "qua",
  996.               "qui",
  997.               "sex",
  998.               "sab",
  999.               "dom",
  1000.              
  1001.               "anônimo",
  1002.               "você"
  1003.               ],
  1004.               reg = new RegExp(users.join("|"), "ig");
  1005.           while (treeWalker.nextNode()) {
  1006.               var el = treeWalker.currentNode;
  1007.               el.data = el.data.replace(reg, function(a) {
  1008.     return {
  1009.     "home" : "Главная",
  1010.     "boards" : "Доски",
  1011.     "board aleatória" : "На случайную доску",
  1012.     "criar board" : "Создать доску",
  1013.     "moderar" : "Админка",
  1014.     "reportar bug" : "Сообщить об ошибке",
  1015.     "opções" : "Опции",
  1016.    
  1017.     "catalog" : "Каталог",
  1018.     "modo de postagem: resposta " : "Ответить в тред ",
  1019.     "voltar" : "Назад",
  1020.     "ir ao rodapé" : "Вниз",
  1021.     "assunto" : "Имя",
  1022.     "responder" : "Ответить в тред",
  1023.     "o corpo do texto é pequeno demais ou inexistente." : "Текст слишком мал или отсутствует",
  1024.     "mensagem" : "Текст",
  1025.     "arquivo" : "Файл",
  1026.     "selecione, arraste ou cole arquivos aqui" : "Кликни / брось файл сюда.",
  1027.     "campo obrigatório" : "обязательное поле",
  1028.     "exibir opções e limites" : "Параметры и лимиты",
  1029.     "ocultar opções e limites" : "Свернуть параметры и лимиты",
  1030.     "oekaki" : "Оэкаки",
  1031.     "mostrar oekaki" : "Развернуть",
  1032.     "fechar oekaki" : "Свернуть",
  1033.     "clique em qualquer imagem neste site para carregá-lo no oekaki" : "Нажмите на любое изображение на этом сайте, чтобы загрузить его в оэкаки",
  1034.     "embutir" : "Ватермарка",
  1035.     "substitui" : "Заменить",
  1036.     "não bumpar" : "Sage",
  1037.     "você também pode escrever sage no e-mail" : "вы также можете подписаться на электронную почту",
  1038.     "imagem spoiler" : "Mark your image as a spoiler",
  1039.     "isso substitui a miniatura da sua imagem por uma interrogação" : "это заменяет эскиз вашего изображения знаком вопроса",
  1040.     "senha" : "Пароль",
  1041.     "para remover arquivos e mensagens" : "служит для удаления ваших постов",
  1042.     "formatos permitidos" : "Поддерживаемые форматы",
  1043.     "tamanho máximo" : "Максимальный объем",
  1044.     "dimensões máximas" : "Максимальный размер изображения",
  1045.     "você pode enviar" : "Число вложений в 1 посте:",
  1046.    
  1047.     "resposta rápida" : "Быстрый ответ",
  1048.     "comentário" : "Комментарий",          
  1049.    
  1050.     "expandir todas as imagens" : "Развернуть все изображения",
  1051.     "encolher todas as imagens" : "Свернуть все изображения",
  1052.    
  1053.     "últimas" : "Последние",
  1054.     "mensagens" : "сообщений",
  1055.     "acompanhar thread" : "Следить",
  1056.    
  1057.     "muito longa. clique" : "слишком длинный. Нажмите",
  1058.     "aqui" : "здесь",
  1059.     "para ver o texto completo." : "чтобы увидеть весь текст.",
  1060.    
  1061.     "respostas com imagem omitidas." : "постов с изображениями.",
  1062.     "clique para expandir" : "Раскрыть",
  1063.     "ocultar respostas expandidas" : "Свернуть",
  1064.     "omitidas" : "скрыто",
  1065.    
  1066.     "esconder post" : "Скрыть пост",
  1067.     "unhide post" : "Развернуть пост",
  1068.     "adicionar filtro" : "Скрытие",
  1069.     "denunciar" : "Пожаловаться",
  1070.     "denúncia" : "Пожаловаться на ЦП",
  1071.     "enter reason below" : "Изложите причину",
  1072.     "deletar post" : "Удалить пост",
  1073.     "deletar arquivo" : "Удалить вложение",
  1074.    
  1075.     "ir para o topo" : "Вверх",
  1076.     "catálogo" : "Каталог",
  1077.     "atualizar" : "Обновить",
  1078.     "ir aos novos posts" : "Переходить к новым постам",
  1079.     "automático" : "Автообновление",
  1080.     "atualizando" : "Обновляю",
  1081.    
  1082.     "página" : "Страница",
  1083.     "todas" : "Все",
  1084.     "anterior" : "Назад",
  1085.     "próxima" : "Вперед",
  1086.    
  1087.     "seg" : "Пн",
  1088.     "ter" : "Вт",
  1089.     "qua" : "Ср",
  1090.     "qui" : "Чт",
  1091.     "sex" : "Пт",
  1092.     "sab" : "Сб",
  1093.     "dom" : "Вс",
  1094.    
  1095.     "anônimo" : "Аноним",
  1096.     "você" : "Ваш пост",
  1097.     }[a.toLowerCase()] || a
  1098. })
  1099.           }};
  1100. /*
  1101.  * local-time.js
  1102.  * https://github.com/savetheinternet/Tinyboard/blob/master/js/local-time.js
  1103.  *
  1104.  * Released under the MIT license
  1105.  * Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org>
  1106.  * Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net>
  1107.  *
  1108.  * Usage:
  1109.  *   // $config['additional_javascript'][] = 'js/jquery.min.js';
  1110.  *   // $config['additional_javascript'][] = 'js/strftime.min.js';
  1111.  *   $config['additional_javascript'][] = 'js/local-time.js';
  1112.  *
  1113.  */
  1114.  
  1115. $(document).ready(function(){
  1116.     'use strict';
  1117.  
  1118.     var iso8601 = function(s) {
  1119.         s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
  1120.         s = s.replace(/-/,"/").replace(/-/,"/");
  1121.         s = s.replace(/T/," ").replace(/Z/," UTC-2");
  1122.         s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
  1123.         return new Date(s);
  1124.     };
  1125.     var zeropad = function(num, count) {
  1126.         return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
  1127.     };
  1128.  
  1129.     var dateformat = (typeof strftime === 'undefined') ? function(t) {
  1130.         return zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) +
  1131.                 " (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()]  + ") " +
  1132.                 // time
  1133.                 zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
  1134.  
  1135.     } : function(t) {
  1136.         // post_date is defined in templates/main.js
  1137.         return strftime(window.post_date, t, datelocale);
  1138.     };
  1139.  
  1140.     function timeDifference(current, previous) {
  1141.  
  1142.         var msPerMinute = 60 * 1000;
  1143.         var msPerHour = msPerMinute * 60;
  1144.         var msPerDay = msPerHour * 24;
  1145.         var msPerMonth = msPerDay * 30;
  1146.         var msPerYear = msPerDay * 365;
  1147.  
  1148.         var elapsed = current - previous;
  1149.  
  1150.         if (elapsed < msPerMinute) {
  1151.             return 'Just now';
  1152.         } else if (elapsed < msPerHour) {
  1153.             return Math.round(elapsed/msPerMinute) + (Math.round(elapsed/msPerMinute)<=1 ? ' minute ago':' minutes ago');
  1154.         } else if (elapsed < msPerDay ) {
  1155.             return Math.round(elapsed/msPerHour ) + (Math.round(elapsed/msPerHour)<=1 ? ' hour ago':' hours ago');
  1156.         } else if (elapsed < msPerMonth) {
  1157.             return Math.round(elapsed/msPerDay) + (Math.round(elapsed/msPerDay)<=1 ? ' day ago':' days ago');
  1158.         } else if (elapsed < msPerYear) {
  1159.             return Math.round(elapsed/msPerMonth) + (Math.round(elapsed/msPerMonth)<=1 ? ' month ago':' months ago');
  1160.         } else {
  1161.             return Math.round(elapsed/msPerYear ) + (Math.round(elapsed/msPerYear)<=1 ? ' year ago':' years ago');
  1162.         }
  1163.     }
  1164.  
  1165.     var do_localtime = function(elem) {
  1166.         var times = elem.getElementsByTagName('time');
  1167.         var currentTime = Date.now();
  1168.  
  1169.         for(var i = 0; i < times.length; i++) {
  1170.             var t = times[i].getAttribute('datetime');
  1171.             var postTime = new Date(t);
  1172.  
  1173.             times[i].setAttribute('data-local', 'true');
  1174.  
  1175.             if (!localStorage.show_relative_time || localStorage.show_relative_time === 'false') {
  1176.                 times[i].innerHTML = dateformat(iso8601(t));
  1177.                 times[i].setAttribute('title', timeDifference(currentTime, postTime.getTime()));
  1178.             } else {
  1179.                 times[i].innerHTML = timeDifference(currentTime, postTime.getTime());
  1180.                 times[i].setAttribute('title', dateformat(iso8601(t)));
  1181.             }
  1182.        
  1183.         }
  1184.     };
  1185.  
  1186.     if (window.Options && Options.get_tab('general') && window.jQuery) {
  1187.         var interval_id;
  1188.         Options.extend_tab('general', '<label id="show-relative-time"><input type="checkbox">' + _('Show relative time') + '</label>');
  1189.  
  1190.         $('#show-relative-time>input').on('change', function() {
  1191.             if (localStorage.show_relative_time === 'true') {
  1192.                 localStorage.show_relative_time = 'false';
  1193.                 clearInterval(interval_id);
  1194.             } else {
  1195.                 localStorage.show_relative_time = 'true';
  1196.                 interval_id = setInterval(do_localtime, 30000, document);
  1197.             }
  1198.             // no need to refresh page
  1199.             do_localtime(document);
  1200.         });
  1201.  
  1202.         if (localStorage.show_relative_time === 'true') {
  1203.             $('#show-relative-time>input').attr('checked','checked');
  1204.             interval_id = setInterval(do_localtime, 30000, document);
  1205.         }
  1206.  
  1207.         // allow to work with auto-reload.js, etc.
  1208.         $(document).on('new_post', function(e, post) {
  1209.             do_localtime(post);
  1210.         });
  1211.     }
  1212.  
  1213.     do_localtime(document);
  1214. });
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top