treasure chest

    Информация о пользователе

    Привет, Гость! Войдите или зарегистрируйтесь.


    Вы здесь » treasure chest » Склад скриптов » html ке ке ке


    html ке ке ке

    Сообщений 1 страница 4 из 4

    1

    style.css
    style_cs.css

    HTML-верх

    Код:
    <!------------------------------------ НАЧАЛО ТАБЛИЦЫ ------------------------------------------->
    <t>
    <t_env></t_env> <t_cap></t_cap> <t_frog></t_frog><t_card></t_card>
    <t_ttl><p>crystal</p>cage</t_ttl>
    <t_set>Wizarding World 18+, 1980, июнь-июль</t_set>
    
    <!------------ лучший пост ------------>
    <t_post>
    <t_ph>классный пост</t_ph>
    <a href='https://crystalcage.rusff.me/viewtopic.php?id=76#p1536' target="_blank">Антонин Долохов</a>
    <p>Каждый твой будущий провал станет их вечным клеймом. рука не должна дрогнуть. не дрожала тогда и никогда не усомнится впредь. чувство вины давно стерлось из твоего словаря. слова табу пополнили фолиант мерзких ярлыков. тяжелые шаги сопровождаются образами смутного "завтра".</p>
    </t_post>
    
    <!------------ лучший эпизод ----------->
    <t_ep>
    <p>классный эпизод</p>
    <a href='https://crystalcage.rusff.me/viewtopic.php?id=75' target="_blank">This room is so suffocating</a>
    </t_ep>
    
    
    <!------------ постописцы ------------>
    <div class="t_wanted_c">
    <t_head>постописцы</t_head>
    
    <a href="https://crystalcage.rusff.me/profile.php?id=19" data-text="Реджи"><img src="https://forumupload.ru/uploads/001c/76/cd/3/387509.jpg" /></a> 
    
    <a href="https://crystalcage.rusff.me/profile.php?id=21" data-text="Тони"><img src="https://forumupload.ru/uploads/001c/76/cd/3/381636.jpg" /></a> 
    
    <a href="https://crystalcage.rusff.me/" data-text="Жон Доу"><img src="https://forumstatic.ru/files/001c/44/10/21763.png" style="width:44px; "  /></a> 
    </div>
    
    
    <!------------ активисты ------------>
    <div class="t_wanted_c">
    <t_head>активисты</t_head>
    <a href="https://crystalcage.rusff.me/profile.php?id=19" data-text="Панда"><img src="https://forumupload.ru/uploads/001c/76/cd/3/628509.jpg" /></a>
    
      <a href="https://crystalcage.rusff.me/profile.php?id=22" data-text="Пророчица"><img src="https://forumupload.ru/uploads/001c/76/cd/3/397834.jpg" /></a>
    
     <a href="https://crystalcage.rusff.me/profile.php?id=21" data-text="Тони"><img src="https://forumupload.ru/uploads/001c/76/cd/3/381636.jpg" /></a>
    </div>
    </t>
    
    
    <!------------ навигация 1------------>
    <div class="spirit-navigation" id="navig-batton">каминная сеть</div>
    <div id="navigblock" style="display:none">
    <div class="sslka">
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=56">Гостевая</a> 
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=4">Правила</a>
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=2">Сюжет</a>
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=6">Роли и внешности</a> 
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=10">Биржа труда</a> 
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=9">Хронология</a> 
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=42">Связь с АМС</a> 
    </div>
    </div>
    <!----- конец навигации 1 ----->
    <! ------------------ скрипт навигации (2) [основа рено, переработка вещего духа] ---------------> 
    <script type="text/javascript" src="https://forumstatic.ru/files/001c/30/dc/86760.js"></script>
    <! -------------------------------------конец скрипта навигации --------------------------------->
    
    <!------------------------------------ КОНЕЦ ТАБЛИЦЫ ------------------------------------------->
    
    <!----------------------------------------- очередность ------------------------------------------------->
    <div id="slideout">
    <div id="slideout_inner"><div id="slideout_inner_textarea">
    <br><br><br>
    
    <div class="ochered">
    <left>квестовая очередность</left><br><br>
    <a href="https://crystalcage.rusff.me/viewtopic.php?id=35">Идет запись</a>
    </div>
    
    </div></div></div>
    <!-----------------------------------------конец очередности ------------------------------------------->
    
    <!---------------------------- основной шрифт  ---------------------------->
    <style>
    @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Raleway:ital,wght@0,100..900;1,100..900&family=Yeseva+One&display=swap');
    @import url('https://forumstatic.ru/files/001c/35/64/31260.otf');
    @import url('https://fonts.googleapis.com/css2?family=Viaoda+Libre&display=swap');
    @import url('https://fonts.googleapis.com/css2?family=Merriweather:ital,opsz,wght@0,18..144,300..900;1,18..144,300..900&display=swap');
    </style>
    <!---------------------------- конец основного шрифта  ---------------------------->
    
    <!---------------------------------// Быстроплюсы v.2 РЕНО by Deff //------------------------>
    <script type="text/javascript" src="https://forumstatic.ru/files/0012/d8/04/58219.js" addComment="1"></script>
    <!---------------------------------// конец быстроплюсы v.2 РЕНО by Deff //------------------------>
    
    <!------------------- Выделение кода в блоке "Код" // © Damassk, версия 2019г. ---------------------> 
    <script type="text/javascript" src="https://forumstatic.ru/files/0016/4a/bf/98029.js"></script>
    <script>eval(select_text.toString().replace(/\}$/,'try{document.execCommand("copy")}catch(e){}}'))</script>
    <script type="text/javascript">select_text.linkText = 'скопировать код' //текст ссылки</script>
    <!------------------------------- конец выделения кода ------------------------------------>
    
    <!---------------------------- пиар-вход ---------------------------->
        <script src="https://forumstatic.ru/files/0015/c4/3f/26781.js"></script>
        <script type="text/javascript">
        PR.nick = 'Spider'; //Ник PR-аккаунта
        PR.pass = 'PRacc'; //Пароль PR-аккаунта
        PR.btn_text = 'PR-вход'; //Надпись на кнопке PR-входа(или ссылка на картинку);
        PR.set();</script>
    <!---------------------------- конец пиар-входа ---------------------------->
    
    <!---------------------------- Быстрая смена аккаунта  ---------------------------->
    <script type="text/javascript">
      New_EXiT = 'https://forumstatic.ru/files/001c/51/c9/98994.png'; //Дополнительная Иконка выход;
    </script>
    <script data="367b65"  src="https://forumstatic.ru/files/0014/cc/0a/93129.js"></script>
    
    
    <!----------------------------- скрытие профиля в теме тегом----------------------------->
    <style type="text/css">.hideprofile .post-author,.hideprofile .pl-email,.hideprofile .pl-website{display:none!important}
    .hideprofile .post-body,.hideprofile .post-links,.hideprofile .post-links ul,.post.hideprofile h3>span{margin-left:0!important}
    .post.hideprofile h3 {display: flex;}</style>
    <script>
        FORUM.set('editor.addition.tags.hideprofile',{name:'Скрыть минипрофиль',onclick:function(){insert('[hideprofile]');}});
        $().pun_mainReady(function(){$('.post:contains("[hideprofile]")').addClass('hideprofile').html(function(){return $(this).html().replace(/\[hideprofile\]/gim,'')})});
    </script>
    <!-----------------------------конец скрытия профиля в теме тегом----------------------------->
    <!-- ----------------------смена аватара в топике © Deff, Alex_63------------------------>
    <link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0015/c4/3f/67168.css" />
    <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/67169.js"></script>
    <!-- ----------------------конец смены аватара в топике © Deff, Alex_63------------------------>
    <!-------------------------Убрать Закрыто и Важно--------------------------------------------------->
    <style>.stickytext,.closedatafield{ display:none;}</style>
    <!------------------------------------------- конец ----------------------------------------------------->
    <!------------------------------------------------- личная страница ------------------------------------>
    <script src="https://forumstatic.ru/files/0011/e9/e1/56920.js" type="text/javascript"></script>
    <!------------------------------------------------- личная страница ------------------------------------>
    
    <!—----------------- HTML в постах с допуском по группам © Alex_63 ----------------—> 
    <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/52361.js"></script> 
    <script type="text/javascript"> 
    HTMLinPost.groups = [1,2,3,4,5,6,7,8]; // Группы, допущенные к вставке HTML в посты 
    HTMLinPost.parseHTMLinPosts() 
    </script>
    <!—----------------- конец HTML в постах с допуском по группам © Alex_63 ----------------—>
    <!--- Хронология от Feathertail --->
    <script>
    document.addEventListener("DOMContentLoaded", function () {
      // Получаем данные из div.chrono-state
      const chronoStateDiv = document.querySelector(".chrono-state");
      if (!chronoStateDiv) {
        console.error("Не найден элемент .chrono-state");
        return;
      }
    
      const chronoDataText = chronoStateDiv.textContent.trim();
      let chronoData;
      try {
        chronoData = JSON.parse(chronoDataText);
      } catch (e) {
        console.error("Не удалось распарсить данные состояния:", e);
        return;
      }
    
      const currentYearStart = chronoData.currentYearStart;
      const episodesData = chronoData.episodes;
      const additionalFilters = chronoData.filterOptions;
    
      // Предопределенные фильтры
      const predefinedFilters = [
        { value: "plot", label: "Сюжетные события" },
        { value: "in-progress", label: "Эпизоды в процессе" },
        { value: "unfinished", label: "Эпизоды-наследие" },
        { value: "completed", label: "Завершённые эпизоды" },
      ];
    
      const allFilters = predefinedFilters.concat(additionalFilters);
    
      // Очищаем содержимое div.chrono-state
      chronoStateDiv.innerHTML = "";
    
      // Создаём основной контейнер
      const chronoBody = document.createElement("div");
      chronoBody.classList.add("chrono-body");
    
      // Создаём фильтры
      const chronoDiv = document.createElement("div");
      chronoDiv.classList.add("chrono");
    
      const filterDetails = document.createElement("details");
      filterDetails.setAttribute("open", "");
    
      const filterSummary = document.createElement("summary");
    
      const filterHeaderP = document.createElement("p");
      filterHeaderP.id = "filter-header";
      filterHeaderP.textContent = "Фильтр эпизодов и событий";
      filterSummary.appendChild(filterHeaderP);
    
      const filterActionsDiv = document.createElement("div");
      filterActionsDiv.classList.add("filter-actions");
      const resetFiltersButton = document.createElement("button");
      resetFiltersButton.id = "reset-filters";
      resetFiltersButton.textContent = "Сбросить фильтры";
      filterActionsDiv.appendChild(resetFiltersButton);
      filterSummary.appendChild(filterActionsDiv);
    
      filterDetails.appendChild(filterSummary);
    
      const episodeFilterDiv = document.createElement("div");
      episodeFilterDiv.classList.add("episode-filter");
      episodeFilterDiv.setAttribute("data-component", "filter");
    
      function generateFilterOptions() {
        const includeFilters = document.createElement("ul");
        includeFilters.id = "include-filters";
        const includeFilterOptionsDiv = document.createElement("div");
        includeFilterOptionsDiv.classList.add("filter-options");
        const includeSpan = document.createElement("span");
        includeSpan.textContent = "Показать:";
        includeFilterOptionsDiv.appendChild(includeSpan);
        includeFilterOptionsDiv.appendChild(includeFilters);
    
        const excludeFilters = document.createElement("ul");
        excludeFilters.id = "exclude-filters";
        const excludeFilterOptionsDiv = document.createElement("div");
        excludeFilterOptionsDiv.classList.add("filter-options", "exclude-options");
        const excludeSpan = document.createElement("span");
        excludeSpan.textContent = "Скрыть:";
        excludeFilterOptionsDiv.appendChild(excludeSpan);
        excludeFilterOptionsDiv.appendChild(excludeFilters);
    
        allFilters.forEach((option) => {
          const includeLabel = createFilterLabel(option.value, option.label, "show");
          includeFilters.appendChild(includeLabel);
    
          const excludeLabel = createFilterLabel(option.value, option.label, "hide");
          excludeFilters.appendChild(excludeLabel);
        });
    
        episodeFilterDiv.appendChild(includeFilterOptionsDiv);
        episodeFilterDiv.appendChild(excludeFilterOptionsDiv);
    
        const filterSearchDiv = document.createElement("div");
        filterSearchDiv.classList.add("filter-search");
        const searchLabel = document.createElement("label");
        searchLabel.innerHTML = "Поиск:<br />";
        const searchInput = document.createElement("input");
        searchInput.type = "text";
        searchInput.id = "search-input";
        searchInput.placeholder = "Введите текст для поиска...";
        searchLabel.appendChild(searchInput);
        filterSearchDiv.appendChild(searchLabel);
    
        episodeFilterDiv.appendChild(filterSearchDiv);
      }
    
      function createFilterLabel(value, labelText, filterType) {
        const li = document.createElement("li");
        const label = document.createElement("label");
        const input = document.createElement("input");
        input.type = "checkbox";
        input.value = value;
        input.dataset.filter = filterType;
    
        label.appendChild(input);
        label.appendChild(document.createTextNode(" " + labelText));
        li.appendChild(label);
    
        return li;
      }
    
      generateFilterOptions();
    
      filterDetails.appendChild(episodeFilterDiv);
      chronoDiv.appendChild(filterDetails);
    
      // Создаём контейнер для эпизодов
      const episodeTimelineDiv = document.createElement("div");
      episodeTimelineDiv.classList.add("episode-timeline");
      episodeTimelineDiv.setAttribute("data-component", "timeline");
      chronoDiv.appendChild(episodeTimelineDiv);
    
      chronoBody.appendChild(chronoDiv);
    
      // Создаём форму для добавления эпизодов
      const episodeFormContainer = document.createElement("div");
      episodeFormContainer.classList.add("episode-form-container");
    
      const detailsElement = document.createElement("details");
    
      const summaryElement = document.createElement("summary");
      const generatorHeaderP = document.createElement("p");
      generatorHeaderP.id = "generator-header";
      generatorHeaderP.textContent = "Добавить новый эпизод";
      summaryElement.appendChild(generatorHeaderP);
    
      detailsElement.appendChild(summaryElement);
    
      const episodeForm = document.createElement("form");
      episodeForm.id = "episode-form";
    
      function createFormGroup(labelText, inputElement) {
        const formGroup = document.createElement("div");
        formGroup.classList.add("form-group");
    
        const label = document.createElement("label");
        label.textContent = labelText;
        label.htmlFor = inputElement.id;
    
        formGroup.appendChild(label);
        formGroup.appendChild(inputElement);
    
        return formGroup;
      }
    
      // Поля формы
      // Название эпизода
      const titleInput = document.createElement("input");
      titleInput.type = "text";
      titleInput.id = "episode-title";
      titleInput.name = "episode-title";
      titleInput.required = true;
      const titleFormGroup = createFormGroup("Название эпизода*:", titleInput);
      episodeForm.appendChild(titleFormGroup);
    
      // Дата
      const dateInput = document.createElement("input");
      dateInput.type = "date";
      dateInput.id = "episode-date";
      dateInput.name = "episode-date";
      dateInput.required = true;
      const dateFormGroup = createFormGroup("Дата (ДД-ММ-ГГГГ)*:", dateInput);
      episodeForm.appendChild(dateFormGroup);
    
      // Описание
      const descriptionTextarea = document.createElement("textarea");
      descriptionTextarea.id = "episode-description";
      descriptionTextarea.name = "episode-description";
      descriptionTextarea.required = true;
      const descriptionFormGroup = createFormGroup("Описание*:", descriptionTextarea);
      episodeForm.appendChild(descriptionFormGroup);
    
      // Ссылка
      const linkInput = document.createElement("input");
      linkInput.type = "url";
      linkInput.id = "episode-link";
      linkInput.name = "episode-link";
      const linkFormGroup = createFormGroup("Ссылка:", linkInput);
      episodeForm.appendChild(linkFormGroup);
    
      // Участники
      const authorsInput = document.createElement("input");
      authorsInput.type = "text";
      authorsInput.id = "episode-authors";
      authorsInput.name = "episode-authors";
      authorsInput.placeholder = "Введите имена участников, разделённые запятыми, на латинице (eng)";
      authorsInput.required = true;
      const authorsFormGroup = createFormGroup("Участники*:", authorsInput);
      episodeForm.appendChild(authorsFormGroup);
    
      // Статус эпизода (обязательно выбрать один)
      const statusFormGroup = document.createElement("div");
      statusFormGroup.classList.add("form-group");
    
      const statusLabel = document.createElement("span");
      statusLabel.textContent = "Статус эпизода*:";
      statusFormGroup.appendChild(statusLabel);
    
      predefinedFilters.slice(1).forEach((option) => {
        // slice(1) to skip "plot"
        const label = document.createElement("label");
        const input = document.createElement("input");
        input.type = "radio";
        input.value = option.value;
        input.name = "status";
        input.required = true;
    
        label.appendChild(input);
        label.appendChild(document.createTextNode(" " + option.label));
        statusFormGroup.appendChild(label);
      });
    
      episodeForm.appendChild(statusFormGroup);
    
      // Сюжетный эпизод (plot) - checkbox
      const plotFormGroup = document.createElement("div");
      plotFormGroup.classList.add("form-group");
      const plotLabel = document.createElement("label");
      const plotInput = document.createElement("input");
      plotInput.type = "checkbox";
      plotInput.id = "plot-checkbox";
      plotInput.name = "plot";
      plotLabel.appendChild(plotInput);
      plotLabel.appendChild(document.createTextNode(" Сюжетный эпизод"));
      plotFormGroup.appendChild(plotLabel);
      episodeForm.appendChild(plotFormGroup);
    
      // // Локация - выбрать одну из дополнительных категорий
      // const locationFormGroup = document.createElement("div");
      // locationFormGroup.classList.add("form-group");
    
      // const locationLabel = document.createElement("span");
      // locationLabel.textContent = "Метки*:";
      // locationFormGroup.appendChild(locationLabel);
    
      // additionalFilters.forEach((option) => {
      //   const label = document.createElement("label");
      //   const input = document.createElement("input");
      //   input.type = "radio";
      //   input.value = option.value;
      //   input.name = "location";
      //   input.required = false;
    
      //   label.appendChild(input);
      //   label.appendChild(document.createTextNode(" " + option.label));
      //   locationFormGroup.appendChild(label);
      // });
    
      // episodeForm.appendChild(locationFormGroup);
    
      // Метки- выбрать одну или несколько дополнительных категорий
    const locationFormGroup = document.createElement("div");
    locationFormGroup.classList.add("form-group");
    
    const locationLabel = document.createElement("span");
    locationLabel.textContent = "Метки* (можно выбрать несколько):";
    locationFormGroup.appendChild(locationLabel);
    
    additionalFilters.forEach((option) => {
      const label = document.createElement("label");
      const input = document.createElement("input");
      input.type = "checkbox";
      input.value = option.value;
      input.name = "location";
      input.required = false; // убрано требование обязательного выбора хотя бы одной
    
      label.appendChild(input);
      label.appendChild(document.createTextNode(" " + option.label));
      locationFormGroup.appendChild(label);
    });
    
    episodeForm.appendChild(locationFormGroup);
    
    
      // Кнопка отправки
      const submitFormGroup = document.createElement("div");
      submitFormGroup.classList.add("form-group");
      const submitButton = document.createElement("button");
      submitButton.type = "submit";
      submitButton.textContent = "Сгенерировать код эпизода";
      submitFormGroup.appendChild(submitButton);
      episodeForm.appendChild(submitFormGroup);
    
      detailsElement.appendChild(episodeForm);
    
      // Контейнер для сгенерированного кода
      const generatedCodeContainer = document.createElement("div");
      generatedCodeContainer.classList.add("generated-code-container");
    
      const generatedCodeLabel = document.createElement("label");
      generatedCodeLabel.setAttribute("for", "generated-code");
      generatedCodeLabel.textContent = "Сгенерированный код эпизода:";
      generatedCodeContainer.appendChild(generatedCodeLabel);
    
      const generatedCodeTextarea = document.createElement("textarea");
      generatedCodeTextarea.id = "generated-code";
      generatedCodeTextarea.setAttribute("readonly", "");
      generatedCodeContainer.appendChild(generatedCodeTextarea);
    
      const copyCodeButton = document.createElement("button");
      copyCodeButton.id = "copy-code-button";
      copyCodeButton.textContent = "Скопировать код";
      generatedCodeContainer.appendChild(copyCodeButton);
    
      detailsElement.appendChild(generatedCodeContainer);
    
      episodeFormContainer.appendChild(detailsElement);
    
      // Добавляем всё в chronoBody
      chronoBody.appendChild(episodeFormContainer);
    
      // Добавляем chronoBody в chronoStateDiv
      chronoStateDiv.appendChild(chronoBody);
    
      // Создание элементов эпизодов
      function createEpisodeElement(data) {
        const li = document.createElement("li");
        li.classList.add("episode-item");
        li.dataset.category = data.categories.join(" ");
        li.dataset.date = data.date;
    
        const divHeader = document.createElement("div");
        divHeader.classList.add("episode-header");
    
        const divLine1 = document.createElement("div");
        divLine1.classList.add("episode-line-1");
    
        const daySpan = document.createElement("span");
        daySpan.classList.add("episode-day");
        const dateObj = new Date(data.date);
        const day = dateObj.getDate().toString().padStart(2, "0");
        daySpan.textContent = day;
    
        const titleLink = document.createElement("a");
        titleLink.href = data.link || "#";
        titleLink.classList.add("episode-title");
        titleLink.textContent = data.title;
    
        divLine1.appendChild(daySpan);
        divLine1.appendChild(titleLink);
    
        const descriptionP = document.createElement("p");
        descriptionP.textContent = data.description;
    
        const authorsP = document.createElement("p");
        authorsP.innerHTML = `<b>Участники:</b> ${data.authors}`;
    
        divHeader.appendChild(divLine1);
        divHeader.appendChild(descriptionP);
        divHeader.appendChild(authorsP);
    
        li.appendChild(divHeader);
    
        return li;
      }
    
      const episodes = episodesData.map((data) => {
        const episodeElement = createEpisodeElement(data);
        const date = new Date(data.date);
        return { element: episodeElement, date: date };
      });
    
      episodes.sort((a, b) => a.date - b.date);
    
      const pastEvents = episodes.filter(
        (ep) => ep.date.getFullYear() < currentYearStart
      );
      const currentEvents = episodes.filter(
        (ep) => ep.date.getFullYear() >= currentYearStart
      );
    
      function groupByMonthAndYear(episodes) {
        return episodes.reduce((groups, ep) => {
          const monthYear = ep.date.toLocaleString("ru", {
            month: "long",
            year: "numeric",
          });
          if (!groups[monthYear]) groups[monthYear] = [];
          groups[monthYear].push(ep);
          return groups;
        }, {});
      }
    
      function buildTimelineSection(sectionClass, episodes, periodLabel) {
        const section = document.createElement("section");
        section.classList.add("timeline-period", sectionClass);
    
        const periodSpan = document.createElement("span");
        if (periodLabel === "Прошлое") {
          periodSpan.classList.add("past-label", "period-label-text");
        } else if (periodLabel === "Настоящее") {
          periodSpan.classList.add("current-label", "period-label-text");
        }
    
        const periodParagraph = document.createElement("p");
        periodParagraph.textContent = periodLabel;
    
        periodSpan.appendChild(periodParagraph);
        section.appendChild(periodSpan);
    
        const monthYearGroups = groupByMonthAndYear(episodes);
    
        Object.entries(monthYearGroups).forEach(([monthYear, eps]) => {
          const div = document.createElement("div");
          div.classList.add("timeline-date");
          div.textContent =
            monthYear.charAt(0).toUpperCase() + monthYear.slice(1);
    
          const ul = document.createElement("ul");
          ul.classList.add("episode-list");
    
          eps.forEach((ep) => {
            ul.appendChild(ep.element);
          });
    
          section.appendChild(div);
          section.appendChild(ul);
        });
    
        episodeTimelineDiv.appendChild(section);
      }
    
      episodeTimelineDiv.innerHTML = "";
    
      buildTimelineSection("past-events", pastEvents, "Прошлое");
      buildTimelineSection("current-events", currentEvents, "Настоящее");
    
      // Фильтрация
      const allCheckboxes = document.querySelectorAll(
        '.filter-options input[type="checkbox"]'
      );
      const resetButton = resetFiltersButton;
      const searchInput = document.getElementById("search-input");
    
      function applyFilters() {
        const showValues = Array.from(
          document.querySelectorAll('input[data-filter="show"]:checked')
        ).map((cb) => cb.value);
        const hideValues = Array.from(
          document.querySelectorAll('input[data-filter="hide"]:checked')
        ).map((cb) => cb.value);
        const searchText = searchInput.value.trim().toLowerCase();
    
        document.querySelectorAll(".episode-item").forEach((episode) => {
          const categories = episode.dataset.category
            ? episode.dataset.category.split(" ")
            : [];
          const shouldShow =
            showValues.length === 0 ||
            showValues.some((value) => categories.includes(value));
          const shouldHide = hideValues.some((value) =>
            categories.includes(value)
          );
          const matchesSearch =
            !searchText ||
            episode.textContent.toLowerCase().includes(searchText);
    
          episode.classList.toggle(
            "hidden",
            !(shouldShow && !shouldHide && matchesSearch)
          );
        });
      }
    
      episodeTimelineDiv.addEventListener("click", function (e) {
        const episodeItem = e.target.closest(".episode-item");
        if (episodeItem && !e.target.closest(".episode-title")) {
          episodeItem.classList.toggle("show-description");
        }
      });
    
      allCheckboxes.forEach((cb) => cb.addEventListener("change", applyFilters));
      searchInput.addEventListener("input", applyFilters);
    
      resetButton.addEventListener("click", () => {
        allCheckboxes.forEach((cb) => (cb.checked = false));
        searchInput.value = "";
        applyFilters();
      });
    
      applyFilters();
    
      // Обработка формы
      episodeForm.addEventListener("submit", function (e) {
        e.preventDefault();
    
        const date = document.getElementById("episode-date").value;
        const title = document.getElementById("episode-title").value.trim();
        const description = document
          .getElementById("episode-description")
          .value.trim();
        const link = document.getElementById("episode-link").value.trim();
        const authors = document.getElementById("episode-authors").value.trim();
    
        // Получаем статус
        const statusInput = document.querySelector('input[name="status"]:checked');
        if (!statusInput) {
          alert("Пожалуйста, выберите статус эпизода.");
          return;
        }
        const status = statusInput.value;
    
        // Получаем значение plot
        const plotCheckbox = document.getElementById("plot-checkbox");
        const isPlot = plotCheckbox.checked;
    
    // Получаем все выбранные локации
    const locationInputs = document.querySelectorAll('input[name="location"]:checked');
    //if (locationInputs.length === 0) {
    //  alert("Пожалуйста, выберите хотя бы одну метку эпизода.");
    //  return;
    //}
    const locations = Array.from(locationInputs).map(input => input.value);
    
        if (!authors) {
          alert("Пожалуйста, введите имена участников.");
          return;
        }
    
        const categories = [status, ...locations];
        if (isPlot) {
          categories.push("plot");
        }
    
        const episodeObject = {
          title: title,
          date: date,
          description: description,
          link: link,
          authors: authors,
          categories: categories,
        };
    
        const episodeJSON = JSON.stringify(episodeObject, null, 2);
    
        generatedCodeTextarea.value = episodeJSON;
      });
    
      copyCodeButton.addEventListener("click", function () {
        generatedCodeTextarea.select();
        document.execCommand("copy");
        alert("Код скопирован в буфер обмена!");
      });
    });
    </script>
    
    
    <!-- Cчётчик Игровых постов -->
    <script type="text/javascript">
    /***************************
            Настройки!
    ***************************/
    FORUM._NUMpa_fld = 5;    // Номер.Доп.поля,
    FORUM._color_fld = "inherit";	// Цвет шрифта,
    FORUM.includeFirstPost = 0;	// 0 - не учитывать,1 - учитывать Первопост автора в игровых темах,
    FORUM.AddOrSlash = 0;    //0 - Поле отдельно, 1 - через слешь c общ. числом сообщений,
    FORUM.Number_winners = [7,[1]];	// Начальное Число отображаемых юзеров в таблице и список форумов показа;
    FORUM.Subscription_Code = "f87f9524f52b3f15cd458b2bf2a95a906ca5a960";	//Код подписки!!;
    /**** НАСТРОЙКА Игровых локаций ****/
    function ad_ (){/*!~!FORUM.ForArrAy = {
    //Форум  //Темы (включаемые, или исключаемые)
    
    f11	:-[0],  //Квест-раздел
    f10	:-[0],  //Линяки
    f9	:-[0],  //АУ
    f12	:-[0],  //Архив, доиграно
    f20	:-[0],  //архив ау
    f18	:-[0]	//Архив эпизодов //Последний элемент без запятой!
    }
    !~!*/}ad_ = ad_.toString().split('!~!')[1];//alert(ad_);
    </script>
    <script type="text/javascript" src="https://forumstatic.ru/files/0013/44/56/77707.js"></script>
    <style>.Form-Table{}.punbb .table_GamePosts tbody th{text-align: center;color:#fff}
    #pre_placement>a {top:3px;right:2px;z-index:100}.punbb .GamePst{padding:0!important;}
    .punbb #profile-right li#pa-fld1 strong.GamePst2 {}</style>
    <!--//END Cчётчик Игровых постов © Deff-->
    
    
    <!-- НАЧАЛО. скрытие подфорума -->
    <script language="JavaScript">
    str=document.URL
    if(str.substring(str.lastIndexOf('/')+1)=="" || str.substring(str.lastIndexOf('/')+1)=="index.php")
       document.write("<style>#forum_f12, #forum_f20, #forum_f18 {display:none!important;}</style>")
    </script>
    <!-- КОНЕЦ. скрытие подфорума -->
    
    
    <!------------------------------------------ ОТКЛЮЧЕНИЕ ФУНКЦИЙ И КНОПОК ------------------------------->
    <!--Отключить кнопку "Жалоба" -->
    <script type="text/javascript">
    RusffCore.sets.show_reportBtn = 0;
    </script>
    <!--Отключить функцию "Поделиться" -->
    <script type="text/javascript">
    RusffCore.sets.share = false;
    </script>
    <!--Отключить функцию "Вложения" -->
    <script type="text/javascript">
    RusffCore.sets.files.button = false;
    </script>
    <!--Отключить функцию "Это интересно" -->
    <script type="text/javascript">
    rusffLive.enable = false;
    </script>
    <!--Отключить функцию "Реакция" -->
    <script>
    ReactionsPlugin.setConfig({
      disable: true
    });
    </script>
    <!--Список просматривающих тему -->
    <script>
    RusffCore.sets.realtimeTopicReaders = false
    </script>
    
    
    
    
    <!------------------------- Мгновенные уведомления © Alex_63, Deff 2019 ------------------------>
    <link rel="stylesheet" type="text/css" href="//forumstatic.ru/f/ru/bestbb/notifications.css" />
    <style>.punbb #pun-main .pun-modal.unread-notifications .section h2{text-align:center!important}
    /*.pun-modal.unread-notifications .modal-inner.section {background: rgba(228, 228, 228, 0.92)!important;*/}
    </style>
    <script type="text/javascript" src="//forumstatic.ru/f/ru/bestbb/notifications.js"></script>
    <!--+ Мгновенные уведомления: упоминания © Alex_63, 2020 -->
    <script>notifications.load('mentions');</script>
    <!--+ Мгновенные уведомления: комментарии к репутации без переадресации  Alex_63, 2019-->
    <script>notifications.load('reputation');</script>
    <!--+ Мгновенные уведомления: подписки на форум/тему © Alex_63, 2019 -->
    <script>notifications.load('subscriptions');</script>
    <!--+ Мгновенные уведомления: новые посты из важных тем © Alex_63, 2019 -->
    <script type="text/javascript">
    notifications.load('common', {});
    notifications.load('important', {topics: [5,43]}); // ID важных тем (через запятую)
    </script>
    
    <!------------------------------------------ ВЫРАВНИВАНИЕ ПО ШИРИНЕ --------------------------------------->
    <script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#post #button-center").after('<td id=button-justify align=center valign=center><img onclick="bbcode(\'[align=justify]\',\'[/align]\')" src="/i/blank.gif"/></td>');}); 
    </script>
    
    <!-- Инструмент для добавления bb-кодов -->
    <script src="https://mybb.kozhilya.ru/script/mybbcode.min.js"></script>
    <!-- END Инструмент для добавления bb-кодов -->

    HTML-низ

    Код:
    <!-------------------------- всплывающее окно контент от 18 лет -------------------------->
    <link rel="stylesheet" href="https://forumstatic.ru/files/001c/76/cd/12176.css?v=2" />
    <script type="text/javascript"  src="https://forumstatic.ru/files/001c/76/cd/10828.js?v=2"></script>
    
    <!-------------------------- копирайт -------------------------->
    <a class="cop" href="https://imagiart.ru/viewtopic.php?id=19438#p1326422">mrazeus + rae rae</a>
    
    <!------------------------------------------- баннеры -------------------------------------------->
    <div class="banners">
    <a href="https://imagiart.ru/"  class="static" target="_blank"> <img src="https://i.imgur.com/h3ba1GC.gif" title="photoshop: Renaissance" border="0" alt="photoshop: Renaissance"></a>
    
    <a href="https://ragepage.rusff.me/" target="_blank"><img src="https://i.ibb.co/DPMKDkjq/Frame-96.png" title="rage; marauders :: 1982"></a>
    
    <a href="https://darkesttimes.rusff.me/"><img src="https://forumstatic.ru/files/001c/59/e0/40310.png" title="ГП-2, ужасы, детектив"></a>
    
    <a href="https://mmaleficarum.rusff.me/" target="_blank"><img src="https://forumstatic.ru/files/001c/3b/dd/41582.png"title="malleus maleficarum"border="0"width="88" height="31"></a>
    
    
    <a href="https://mayak.f-rpg.me/?utm_medium=banner88forum"><img src="https://forumstatic.ru/files/001b/ff/2a/15151.png" title="Маяк. Сообщество ролевиков, дизайнеров и графистов" alt="Маяк. Сообщество ролевиков, дизайнеров и графистов"></a>
    
    <a href="https://happyhouse.rusff.me/"><img src="https://forumupload.ru/uploads/001c/52/80/5/764708.jpg"></a>
    
    
    <a href="https://godstrust.rusff.me//" title="in gods we trust. боговник" target="_blank"><img src="https://forumstatic.ru/files/001c/38/7d/49106.png"></a>
    
    <a href="https://meethope.ru/"><img src="https://forumstatic.ru/files/001c/42/be/39857.gif" title="Hope County"></a>
    
    <a href="https://karma.f-rpg.me/" target="_blank"><img src="https://forumupload.ru/uploads/001c/14/5b/7/124634.png" title="karma cross" border="0" width="88" height="31"></a>
    
    <a href="https://sunnycross.ru/"><img src="https://forumstatic.ru/files/001c/73/be/65745.jpg"></a>
    
    <a href="https://trt.rusff.me/" target="_blank"><img src="https://forumupload.ru/uploads/001c/2b/59/2/934868.png" width="88px" height="31px"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    
    <a href="https://crystalcage.rusff.me/" title="Wizarding World, 1980, Dark!Ay, тоталитаризм" target=_blank><img src="https://forumstatic.ru/files/001c/76/cd/52012.png"></a>
    </div>
    
    <!-- Перемешать баннеры при перезагрузке © TheBanana, max, the murderer! 2022 -->  
    <script>
    $(document).ready(function(){
    	$('.banners').each(function () {
    	    var block = $(this);
    	    var banners = (block).children('a').not('.static');
    	    $(banners).sort(function (a, b) {
    	        return (-1 + Math.random() * 2);
    	    })
    	    .appendTo(block).show();
    	});
    });
    </script>
    <!------------------------------------------- конец баннеров -------------------------------------------->
    
    <!-------------------------- вверх-вниз -------------------------->
    <div class="go-up" id='ToTop'>«</div>
    <div class="go-down" id='OnBottom'>»</div>
    <!--кнопки вверх вниз-->
    <script type="text/javascript">
    $(function(){
    if ($(window).scrollTop()>="250") $("#ToTop").fadeIn("slow")
    $(window).scroll(function(){
      if ($(window).scrollTop()<="250") $("#ToTop").fadeOut("slow")
      else $("#ToTop").fadeIn("slow")
    });
    if ($(window).scrollTop()<=$(document).height()-"999") $("#OnBottom").fadeIn("slow")
    $(window).scroll(function(){
      if ($(window).scrollTop()>=$(document).height()-"999") $("#OnBottom").fadeOut("slow")
      else $("#OnBottom").fadeIn("slow")
    });
    $("#ToTop").click(function(){$("html,body").animate({scrollTop:0},"slow")})
    $("#OnBottom").click(function(){$("html,body").animate({scrollTop:$(document).height()},"slow")})
    });
    </script>
    <!-------------------------- конец вверх-вниз'а -------------------------->
    
    <!-------------------- Аватар для гостя и по умолчанию / Deff, Alex_63 mod by ForumD.ru  -->
        <script type="text/javascript">
        var DefAvtr = 'https://forumupload.ru/uploads/001c/44/10/4/885511.png'; //Ссылка на аватар по умолчанию
        var GuestAvtr = 'https://forumupload.ru/uploads/001c/44/10/4/885511.png'; //Ссылка на аватар для Гостя
    
       $('#pun-viewtopic,#pun-messages').find('.pa-title').each(function(){
          var b = DefAvtr;
          if (+$(this).parents('.post').attr('data-group-id') == 3) b = GuestAvtr;
          var s='<li class="pa-avatar item2"><img class="defavtr" src="'+b+'" alt="Аватар"/></li>';
          if($(this).parent().find('.pa-avatar').html()==null)$(this).after(s);
        });
        $('#profile-left strong:contains("Нет аватара")')
        .parent().html('<div><img src="'+DefAvtr+'"/></div>');
        </script>
    <!--------------------------------------------- Конец ------------------------------------------------->
    
    <!-------------------------- Универсальный скрипт замены © Alex_63 ------------------------------------>
    <script>
    function Change(sc,ch,st){$(sc).parent().each(function(){$(this).html($(this).html().replace(ch,st));});}
    Change('#pun-stats li.item1','Всего тем','Тайных комнат открыто');
    Change('#pun-stats li.item2','Всего сообщений','Заклинаний произнесено');
    Change('#pun-stats li.item3','Зарегистрированных пользователей','Волшебников в клетке');
    Change('#pun-stats li.item4','Последним зарегистрировался','Аппарировал последним');
    Change('#pun-stats .onlinelist div > a','Активны','В  "Трех Метлах":');
    Change('#pun-stats .users_24h div > a','Посетили за сутки','Разошлись по домам:');    
    Change('li#navuserlist','Участники','Волшебники');
    Change("li#navsearch","Поиск","Акцио");
    Change('li#navprofile','Профиль','Зеркало');
    Change('li#navpm','Сообщения','Кричалки');
    Change('li#navadmin','Администрирование','Настройки');
    </script>
    <!-------------------------- Универсальный скрипт замены © Alex_63 ------------------------------------>
    
    <!--------------------------- тултип ---------------------------------->
    <script> 
    jQuery.fn.quicktip = function(options) {
        // Значения по умолчанию
        var defaults = {
            speed: 500,
            xOffset: 0,
            yOffset: 30
        };
    
        // Объединяем переданные опции с дефолтными
        var settings = $.extend({}, defaults, options);
    
        // Для каждого элемента, к которому применяется плагин
        return this.each(function() {
            var $this = jQuery(this);
    
            // Сохраняем title в data-атрибут, чтобы восстановить его позже
            var tipTitle = $this.attr('title') || $this.attr('original-title') || 'Quick tip';
            $this.data('title', tipTitle).removeAttr('title');  // Удаляем атрибут title
    
            // Обработка событий наведения мыши
            $this.hover(function(e) {
                $this.css('cursor', 'pointer');
                $("body").append("<div id='tooltip'>" + tipTitle + "</div>");
                
                $("#tooltip")
                    .css("top", (e.pageY + settings.yOffset) + "px")
                    .css("left", (e.pageX + settings.xOffset) + "px")
                    .fadeIn(settings.speed);
                    
            }, function() {
                // Удаляем подсказку при уходе мыши
                $("#tooltip").remove();
            });
    
            // Обновляем позицию подсказки при движении мыши
            $this.mousemove(function(e) {
                $("#tooltip")
                    .css("top", (e.pageY + settings.yOffset) + "px")
                    .css("left", (e.pageX + settings.xOffset) + "px");
            });
        });
    };
    </script>
    <script>
    $(function(){
    $('*[title]').quicktip({
    speed:300, //Скорость появления подсказки
    fade: true 
    });
    });
    </script>
    
    <script>
    $('.pa-online, .postlink:not(.postlink.long), .subscribelink, .postlink .new-poll, .postlink .new-topic, #pun-viewforum .modmenu strong a, #profile .container li.view a').each(function(){
      $(this).attr('title',$(this).text());
    });
    
    // Подсказка для кнопки с #togglePreview .button
    $('#togglePreview .button').each(function() {
      // Получим значение атрибута value и установим его в title
      var value = $(this).val(); // Получаем значение value
      $(this).attr('title', value); // Устанавливаем это значение как title
    });
    </script>
    <!------------------------------------------ конец тултипа --------------------------------------->
    
    <!-------------------- Ссылка на авторский пост в цитате // v.3 © Alex_63 -------------------->
    <script type="text/javascript">
    var quote_img = 'https://forumstatic.ru/files/0015/ec/20/41408.png'; //Кнопка "Перейти к сообщению" в цитате
    $('.quote-box>cite:not(:contains("Скрытый текст:"))').each(function() {
      var cntq=$(this).text(),sp0='<span class="qcn">записка под дверью от</span> ',
      sp1='<span class="qc-uname">###</span>';
      if(cntq.indexOf('#p')!=-1){var pid=cntq.split(',')[0],autq=cntq.split(',')[1].split(' написал')[0],
        lnkq='<a class="qc-post-link" href="',imgq='<img src="'+quote_img+'" title="Перейти к сообщению"/>',
        sp2=' <span class="qc-post-link">'+lnkq;sp1=sp1.replace('###',autq);
        if($('.post'+pid).length){$(this).html(sp0+sp1+sp2+pid+'">'+imgq+'</a></span>');}else
        {$(this).html(sp0+sp1+sp2+'/viewtopic.php?pid='+pid.split('#p')[1]+pid+'">'+imgq+'</a></span>');}
      }else{var autq=cntq.split(' написал')[0];sp1=sp1.replace('###',autq);$(this).html(sp0+sp1);}
    });$('#pun-viewtopic .pl-quote>a').each(function() {
      $(this).attr('href',$(this).attr('href').replace('(\'','(\'#'+$(this).parents('.post').attr('id')+','));
    });
    </script>
    <!-------------------- конец ссылки на авторский пост в цитате // v.3 © Alex_63 -------------------->
    
    
    <!------------------- убрать пожаловаться ------------------->
    <script type="text/javascript">
    RusffCore.sets.show_reportBtn = 0;
    </script>
    <!------------------- конец убрать пожаловаться  ------------------->
    
    <!----------------- между никами запятая --------------->
    <style type="text/css">
    div#topic-users-in a:after {
        content: ',    ';
    }
    div#topic-users-in a:last-child::after {
        content: ' ';
    }
    </style>
    
    <!----------------- после ника запятая --------------->
    <script type="text/javascript">
    function to(username)
    {insert('[b]' + username + '[/b]' + ', ');}
    </script>
    
    <!-----------------конец запятых --------------->
    <!--------------------- регулировка размера шрифта в постах © Alex_63 --------------------->
     <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/31001.js"></script>
    <!--------------------- конец регулировки размера шрифта в постах © Alex_63 --------------------->
    
    <!----------- Перенос Быстрого ответа под нужное сообщение © Alex_63 ----------->
    <style>
    /* Кнопка "Ответить" */
    li.pl-reply a {
      }
    /* при наведении */
    .button.cancel{display:none;}
    </style>
    <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/26021.js"></script>
    <!----------- //End//-Перенос Быстрого ответа под нужное сообщение ----------->
    <!-----------------------тег абзаца со своими отступами ------------------------->
    <style>#button-indent {background:url(http://s7.uploads.ru/t/mnkgq.png)no-repeat center 6px!important;}</style>
    <!--ТЕГ  абзаца - [indent=X,Y] --><script type="text/javascript">
    (function(){var c="[indent",h,e='<span style="display:inline-block;margin:YYem XXem;"></span>';
    $("#button-strike").after('<td id="button-indent" title="Отступы"><img src="/i/blank.gif"  onclick="smile(\''+c+'=2,1]\')\"></td>');
    function a(b,d){if(!d){return e.replace("XX","2").replace("YY","1")} /*удвоенные Отступы слево и сверху по умолчанию*/
    else{return d.replace(/=(\d+(?:\.\d+)?)((?:,\d+(?:\.\d+)?)?)$/,function(f,i,g){h=e.replace("XX",i);v=g.substr(1);return h.replace("YY",(v?v:"0"));
    })}}$('.post-content p:contains("'+c+'")').each(function(){$(this).html($(this).html().replace(/\[indent([=\d\.,]*?)\]/gm,a))})}());
    </script>
    <!-----------------------конец тега абзаца со своими отступами ------------------------->
    <!-- Восстановление последнего поста при утере by Человек-Шаман -->
    <script>
    $(document).ready(function() {
      $('#addition-area').append(function() {
        return $('<div>Восстановить последний пост</div>').click(restoreLastPost);
      });
      function restoreLastPost() {
        $('#main-reply').val(localStorage.ReservePost);
      };
    });
    </script>
    
    <!--конец-->
    
    
    <!-- Кликабельность ника в постах гостя © Alex_63 -->
    <script>$(".post[data-group-id=3]").find(".pa-author").html(function(){return this.innerHTML.replace(/(<.+>)(.+)$/,'$1<a href="javascript:to(\'$2\')">$2</a>')});</script>
    <!------------------------ конец кликабельности ника в постах Гостя --------------------------------->
    <!------------------------- Мгновенный предпросмотр сообщения © Alex_63 ---------------------------->
    <script type="text/javascript">
    var PPREV = {};
    PPREV.position = 0; //Положение окна Предпросмотра: 0 - над полем ввода, 1 - под полем ввода, 2 - справа
    PPREV.quote_cite = 'написал(а):'; //Надпись в окне цитаты
    </script>
    <script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/10524.js"></script>
    
    <!-- Кнопка отключения мгновенного предпросмотра -->
    <style>#togglePreview{float:right;margin-top: -40px;margin-right: -5px;}</style>
    <script type="text/javascript">(function (){
      var a='Включить быстрый предпросмотр';
      var b='Отключить быстрый предпросмотр';
      var d='_PreviewToggle';
      setCookiePPrev=function(a,b,c){if(c){var d=new Date();d.setTime(d.getTime()+c);}if(a && b)document.cookie=a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
      getCookiePPrev=function(a){var b=new RegExp(a+'=([^;]){1,}');var c=b.exec(document.cookie);if(c)c=c[0].split('=');else return false;return c[1] ? c[1] : false;}
      $('<small id="togglePreview"><input type="button" class="button" value="'+ b +'" onclick="togglePreview(this)"/></small>').insertAfter('#post fieldset:last legend');
      var x = ParseContent;
      window.togglePreview = function(sel){//alert(sel.value);
        if(sel.value==a){sel.value=b;setCookiePPrev(d,'0',-1000);ParseContent=x;ParseContent();$('#post-preview').show(); return}
        if(sel.value==b){sel.value=a;setCookiePPrev(d,'OFF',30*3600*24*30*1000);if($('#pun-viewtopic').length){$('#post-preview').hide()}ParseContent=function(){return};return}
      }; if(getCookiePPrev(d)=='OFF'){$('#togglePreview>.button').click()};
    }())
    </script>
    
    <!------------------------- конец предпросмотра сообщения © Alex_63 ---------------------------->
    <!------------------------------------- обертка в профиле  ---------------------------------------------> 
    <script>
    $('.post-author').each(function() {
           var posts = $(this).find('.pa-posts'),
            respect = $(this).find('.pa-respect'),
            fld5 = $(this).find('.pa-fld5'),
            fld3 = $(this).find('.pa-fld3');
    
        // Если все элементы существуют
        if (posts.length && respect.length && fld5.length && fld3.length) {
            $(this).find('.pa-posts, .pa-respect, .pa-fld5, .pa-fld3').wrapAll('<div class="fld_wrap"></div>');
        } else {
            // Если хотя бы один элемент отсутствует, присвоить другой класс
            $(this).find('.pa-posts, .pa-respect, .pa-fld5, .pa-fld3').wrapAll('<div class="fld_wrap_un"></div>');
        }
    });
    </script>
    <!------------------------------------- конец обертки в профиле  ---------------------------------------------> 
    <!---------------------------- личная страница ---------------------------->
    <!-- личная страница -->
    <script src="https://forumstatic.ru/files/0011/e9/e1/56920.js" type="text/javascript"></script>
        <div id="character" class="reveal-modal xlarge main container">
        <div class='modal_wrap'></div>
        <a class="close-reveal-modal">×</a>
        </div>
    
        <script type="text/javascript">
        function showTab(elem){
            $(".menu span").removeClass("tabactive");
            $(elem).addClass("tabactive");
            $("div.submenutext").hide();
            var activeDiv = $(elem).attr("alt");
            $("div."+activeDiv).fadeIn();
            return false;
        }
        $(".modal-link").click(function() {
                var modId = $(this).attr('id');
        $('.modal_wrap').html('');
        $.get('pages/'+modId, function (data){
            $('.modal_wrap').html($(data).find('.character').html());
        });
        $(".submenutext").hide();
        $(".submenutext:first").show();
        });
        </script>
    
    <!---------------------------- конец личной страницы ---------------------------->
    
    <!---------------------------- маска ---------------------------->
    <script src="https://forumstatic.ru/files/0017/95/29/89289.js"></script>
    <script>
    hvScriptSet.addMask({
        forumAccessExtended: {
            'истинно так': ['Пользователи'],
            'ДОБРО ПОЖАЛОВАТЬ': ['Пользователи'],
            'ГОРИЗОНТ СОБЫТИЙ': ['Пользователи']
        },
        changeList: {
            'pafld1': {
                title: 'личное звание',
                description: '',
                tag: 'fauxlz',
                class: 'pa-fld4',
                defaultCode: '<liz><h4>ФИО</h4><p>цитата и можно <a href=\'ССЫЛКУ\'>на зазнобу</a> </p></liz>',
                type: 'html'
            }
        },
        userFields: ['pa-author', 'pa-title', 'pa-avatar', 'pa-fld4', 'pa-posts', 'pa-fld5', 'pa-respect', 'pa-fld3', 'pa-fld1', 'pa-fld2', 'pa-online', 'pa-ua', 'pa-gifts']
    });
    </script>
    
    <!---------------------------- конец маски ---------------------------->
    
    <!------------------------ обтекание изображения 2.4.4 ------------------------------>
    <script language="javascript">
    $(function(){
    $('td#button-link').before('<td id="floatbut" style=\'background-image:url("https://forumstatic.ru/files/0015/dd/40/15488.gif")\'></td>');
    $('#floatbut, .vibor').click(function(){
    $('div#float').toggle();});
      });
    elm=document.getElementsByTagName("div")
    for(x in elm) if(elm[x].className=="post-content") 
    {
    post = elm[x].innerHTML;
    if(post.indexOf("[/float]") != -1) {
    floats = /\[float=(.*?)\]([^\[]*)\[\/float\]/gi
    elm[x].innerHTML = elm[x].innerHTML.replace(floats, "<span style='float: $1; margin: 0px 10px 0px; text-align: $1;'>$2</span>")
    }}
    </script>
    <div id="float" style="display:none;width:auto; padding:8px; position:absolute; margin-top:-37%; margin-left:35%; z-index:20;background-color: rgb(185 183 180);border-radius: 5px;color: var(--t-body);box-shadow: 0 0 6px 1px #0000001f, 0 0 0 1px #94928e;">
    <div><strong>Направление обтекания</strong></div><br>
    <div align="center">
    <img class="vibor" src="https://forumstatic.ru/files/001a/fc/23/50698.png" title="left" onclick="bbcode('[float=left]', '[/float]')" />
    <img class="vibor" src="https://forumstatic.ru/files/001a/fc/23/19406.png" title="right" onclick="bbcode('[float=right]', '[/float]')" />
    </div></div>
    <!------------------------ конец обтекания изображения 2.4.4 ------------------------------>
    <!-- НАЧАЛО. ссылка на новые сообщения -->
    <script type="text/javascript">
    $('#pun-ulinks ul').prepend('<li class="item1"><a href="/search.php?action=show_new">новые сообщения</a></li>');
    </script>
    <!-- КОНЕЦ. ссылка на новые сообщения -->
    
    <!----------------------------- СКРИПТ ЗЕЛИЙ --------------------------------------->
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
    $(document).ready(function() {
        const potions = {
            'amortentia': {
                title: 'Amortentia (Амортенция)',
                color: '#e74c3c',
                desc: 'Самое сильное любовное зелье. Имеет перламутровый оттенок и издаёт аромат, который наиболее привлекателен для того, кто его нюхает. Запрещено к использованию.',
                icon: '❤️'
            },
            'animagus': {
                title: 'Animagus Potion (Зелье анимага)',
                color: '#8e44ad',
                desc: 'Позволяет волшебнику превращаться в животное. Процесс приготовления занимает месяц, требует постоянного ноствания мандрагоры во рту.',
                icon: '🐾'
            },
            'antidote': {
                title: 'Antidote to Common Poisons (Противоядие)',
                color: '#27ae60',
                desc: 'Зелье бирюзового цвета, нейтрализует большинство известных ядов. Изобретено Северусом Снеггом в школьные годы.',
                icon: '🌿'
            },
            'draught': {
                title: 'Draught of Living Death (Напиток живых мертвецов)',
                color: '#16a085',
                desc: 'Одно из самых сложных зелий. Вызывает глубокий сон, похожий на смерть. Имеет серебристый цвет.',
                icon: '💀'
            },
            'felix': {
                title: 'Felix Felicis (Феликс Фелицис)',
                color: '#f39c12',
                desc: 'Золотое зелье удачи. Дарует невероятное везение на 12 часов. Передозировка вызывает головокружение и безрассудство.',
                icon: '✨'
            },
            'pepperup': {
                title: 'Pepperup Potion (Бодрящее зелье)',
                color: '#c0392b',
                desc: 'Лечит простуду. После приёма из ушей повалит пар в течение нескольких часов. Изобретено в XVIII веке.',
                icon: '♨️'
            },
            'polyjuice': {
                title: 'Polyjuice Potion (Полижуйс)',
                color: '#2ecc71',
                desc: 'Позволяет принять облик другого человека на 1 час. Требует биологический материал цели (волос, ноготь). Имеет отвратительный вкус.',
                icon: '🧪'
            },
            'skele': {
                title: 'Skele-Gro (Скелегро)',
                color: '#bdc3c7',
                desc: 'Восстанавливает утраченные кости. Процесс крайне болезненный.',
                icon: '🦴'
            },
            'veritaserum': {
                title: 'Veritaserum (Сыворотка правды)',
                color: '#3498db',
                desc: 'Прозрачное зелье правды без вкуса и запаха. Заставляет говорить только правду в течение 1 часа. Используется Министерством Магии.',
                icon: '💧'
            },
            'wolfsbane': {
                title: 'Wolfsbane Potion (Оборотное зелье)',
                color: '#34495e',
                desc: 'Позволяет оборотню сохранять человеческий разум при превращении. Очень сложно варится и дорого стоит.',
                icon: '🐺'
            }
        };
    
        // Открытие/закрытие dropdown
        $('.potion-dropdown').on('click', function(e) {
            e.stopPropagation();
            $(this).toggleClass('active');
            $('.potion-options').not($(this).find('.potion-options')).slideUp();
            $(this).find('.potion-options').slideToggle(200);
        });
    
        // Закрытие при клике вне
        $(document).on('click', function() {
            $('.potion-dropdown').removeClass('active');
            $('.potion-options').slideUp(200);
        });
    
        // Выбор зелья
        $('.potion-options li').on('click', function(e) {
            e.stopPropagation();
            const potionId = $(this).data('potion');
            const potion = potions[potionId];
            
            // Обновляем выбор
            $('.selected-value').text(potion.title);
            $('.selected-potion').val(potionId);
            
            // Обновляем детали
            $('.potion-title').text(potion.title).css('color', '#423a52');
            $('.potion-description').text(potion.desc);
            $('.potion-image').html(potion.icon)
                .css('background-color', potion.color)
                .css('font-size', '24px');
            
            // Закрываем dropdown
            $('.potion-dropdown').removeClass('active');
            $('.potion-options').slideUp(200);
        });
    });
    </script>
    
    
    
    
    
    
    <!-------------------- УДАЛЯЕМ ЛИШНИЕ СТРОКИ ПОСЛЕ ЦИТАТЫ И КОДА © Alex_63 v.3 ----------------->
        <script type="text/javascript">
        $('.post-content').each(function() {
            var CNT = $(this).html();
            CNT = CNT.replace(/<p><br><\/p>/img,'');
            CNT = CNT.replace(/<p><br><br>(.*?)<\/p>/img,'<p>$1</p>');
            CNT = CNT.replace(/<p><br>(.*?)<\/p>/img,'<p>$1</p>');
            $(this).html(CNT);
        });
        </script>
    
    <!------------------------------------------------- ЗАМЕНА ТИРЕ -------------------------------------------------->
    <script type="text/javascript">
    $('.post-content p').each(function(){
      function replacer(str){return str.replace(/-\s|–\s/gm,'— ');}
      var a = $(this).clone().wrap('<div></div>').parent().html();
      var b = a.replace(/>[^<>]+</gim,replacer);
      if(a!=b)$(this).replaceWith(b)
    });
    </script> 
    
    
    <!=================================================================
                                                          СКРИПТЫ ДЛЯ ФОРМА ОТВЕТА
    ==================================================================>
    
    
    
    <!-------------------------------------- ОТКЛЮЧЕНИЕ ФУНКЦИЙ И КНОПОК ----------------------------------->
    
    <!-- Отключение сокращения ссылок -->
    <script type="text/javascript"> FORUM.set("editor.link.short_url", function() { return false; }); </script>
    
    <!-- Скрыть "Пожаловаться" -->
    <style type="text/css"> .pl-reports {display:none!important;} </style>
    
    <!-- Скрыть "rss-atom" -->
    <style type="text/css"> .punbb .modmenu .container span {display: none;} </style>
    
    <!-- Ники модера -->
    <style> .modlist {display: none !important;} </style>
    
    
    
    <!-- Запятая после ника в посте -->
    <script type="text/javascript">
    function to(username)
    {insert('[b]' + username + '[/b]' + ', ');}
    </script>
    
    
    
    
    <!-- FILL CODE AS FORM (info: https://github.com/4eDo/mybb/tree/main/fill_code_as_form#readme )-->
    	<input type="button" class="button" id="templateBtn" onclick="showTemplateWindow()" value="Заполнение кодов" style="margin-top:-20px;margin-left:34px;	display: none;">
    	<div>
        <div class="tmpl_overlay">
        <div class="tmpl_popup" style="display:none">
        	<div id="tmpl_back-button" onclick="showTemplatesList()" style="display:none">Назад</div>
        	<div id="tmpl_close-button" onclick="hideTemplateWindow()">x</div>
        	<div id="templatesList"></div>
        	<div id="targetForm" style="display:none"></div>
        </div>
    	</div>
    </div>
    	<script>
        const COLOR_INPUT_TEXT_fcaf = "color: #000000 !important";
        const NEED_HIDE_NAVLINKS = false;
        const TEMPLATE_SRC = "https://forumstatic.ru/files/001c/76/cd/75472.html?v=30";
    	</script>
    	<script type="text/javascript" src="https://4edo.github.io/mybb/fill_code_as_form/fillCodeAsForm_v2.js"></script>
    <!-- end FILL CODE AS FORM -->
    
    <!--вкладки, (c) EMERAEL 2024 -->
    <script>
    (() => {
        const posts = document.querySelectorAll('.post-content');
        const processedPosts = new Set();
        const processPost = (post) => {
            if(processedPosts.has(post)) return;
            const postTabs = post.querySelectorAll('.custom_tag_tab');
            const actualizeTabsDisplay = () => postTabs.forEach(tab => tab.querySelector('.custom_tag_tabdefault') ? tab.classList.remove('hidden') : tab.classList.add('hidden'));
            const postTabtitles = post.querySelectorAll('.custom_tag_tabtitle');
            if(!postTabs.length) return;
        
            const defaultTabElement = post.querySelector('.custom_tag_tabdefault');
            const openTabMarker = defaultTabElement ? defaultTabElement : document.createElement('div');
            if (!defaultTabElement) {
                openTabMarker.classList.add('custom_tag_tabdefault');
                postTabs[0].prepend(openTabMarker);
                // Добавляем класс "active" для первой вкладки по умолчанию
                postTabtitles[0].classList.add('active');
            }
            const tabnamesToTab = new Map();
            postTabs.forEach((tab) => tabnamesToTab.set(tab.dataset.tabname, tab));
            const tabnamesToTabtitle = new Map();
            postTabtitles.forEach((tabtitle) => {
                const tabname = tabtitle.dataset.tabname;
                tabnamesToTabtitle.set(tabname, tabtitle);
                tabtitle.addEventListener('click', () => {
                    const triggeredTab = tabnamesToTab.get(tabname);
                    if(!triggeredTab || triggeredTab.querySelector('.custom_tag_tabdefault')){
                        return;
                    }
                    triggeredTab.prepend(openTabMarker);
                    actualizeTabsDisplay();
                    // Добавляем класс "active" для открытой вкладки
                    postTabtitles.forEach((tab) => tab.classList.remove('active'));
                    tabtitle.classList.add('active');
                });
            });
            actualizeTabsDisplay();
            processedPosts.add(post)
        };
        posts.forEach((el) => processPost(el));
        $(document).on('pun_post', () =>  document.querySelectorAll('.post-content').forEach((el) => processPost(el)));
        $(document).on('pun_preview', () => document.querySelectorAll('.post-content').forEach((el) => processPost(el)));
        $(document).on('pun_edit', () => document.querySelectorAll('.post-content').forEach((el) => processPost(el)));
    })()
    
    
    </script>

    0

    2

    HTML-низ тестовый

    Код:
    <!-- Быстрое обёртывание в спойлер с ником Админа © Deff -->
    <script>if(GroupID<3)(function () {
    var obj = {'Kneazle':'Низзл','Bartemius Crouch Sr.':'Министр','Fabian Prewett':'Рыжий', 'Cygnus Black':'Сигнус'} /* Замещение ников */
    var nb = (obj[UserLogin]?obj[UserLogin]:UserLogin);
    nb = "bbcode('"+"["+"spoiler=""+nb+""]'";
    var $a = $("<td id=\"button-ams-spoiler\" title=\"Свернутый текст АМС\"><img onclick=\"$('#main-reply').focus().select();"+nb+",'['+'/spoiler]');\" src=\"/i/blank.gif\"/><b><p style=\"z-index:20;position:absolute;height14px;margin:-14px 0 0 23px;\"></p></b></td>");
    $a.insertAfter('#post #button-spoiler');}());
    </script>
    <!-- конец -->
    
    <script id="efof">
    /** СКРИПТ ИЗМЕНЕНИЯ БАЛАНСА СО СТРАНИЦЫ БАНКА
            Автор: @4eDo
    	https://github.com/4eDo/mybb/blob/main/edit_field_on_fly/readme.md
     	Версия от 2024-11-01
    **/
    const FIELD_ID_FOR_EDIT = "fld3";
    const ADD_CACHE_TEXT = "Изменение баланса";
    const COLOR_INPUT_TEXT = "";
    const ALLOWED_TOPICS = ['30','32', '70']; // С кавычками
    const ALLOWED_GROUPS = [1]; // БЕЗ кавычек
    
    const OPERATIONS = [ // Наименование опции, коэффициент, в каких топиках есть (через пробел) или all
    	["Начисление", "1", "all"],
    	["Списание", "-1", "all"],
    ];
    const ROUND = 0;
    
    const USE_WRAPPER = true; // false, если не хотите, чтобы сообщение как-то помечалось
    
    // шаблон, по которому оборачивается пост.
    // {{ADMIN_NAME}} - имя админа
    // {{CACHE_BEFORE}} - баланс до изменения
    // {{CACHE_AFTER}} - баланс после изменения
    const WRAPPER_START = `[spoiler="[table layout=auto width=100]
    [tr]
    [td][b]ОБРАБОТАНО[/b] ({{ADMIN_NAME}})[/td]
    [td][b]Было[/b]: {{CACHE_BEFORE}}[/td]
    [td][b]Стало[/b]: {{CACHE_AFTER}}[/td]
    [/tr]
    [/table]"]`
    const WRAPPER_END = `[/spoiler]`;
    
    // Если id есть в таблице ниже, будет подставлено имя из неё. Иначе будет имя профиля.
    const ADMIN_NAMES = { // id, ник для подстановки
    	2: "Котик Потоптался",
    3: "Крауч",
    4: "Гениальный Финансист",
    5: "Этот рыжий",
    }
    
    var currTopic_efof = new URLSearchParams(window.location.search).get('id');$(document).ready(function(){if(ALLOWED_GROUPS.includes(GroupID)&&ALLOWED_TOPICS.includes(currTopic_efof)){function t(t,e,n){const o={};return $.ajax({url:t,method:"get",async:!1,success:function(t){let e=(new DOMParser).parseFromString(t,"text/html").querySelector(n);if(e){const t=new FormData(e);for(const[e,n]of t.entries())o[e]=n;return o}throw new Error(`Форма '${n}' не найдена.`)},error:function(e,n,o){throw console.error("Ошибка при выполнении AJAX-запроса:",n,o),new Error(`Ошибка при загрузке страницы ${t} : ${n}`)}}),o}async function e(t,e){let n=new FormData;for(let t in e)n.append(t,e[t]);try{const e=await fetch(t,{method:"POST",body:function(t){const e=[];for(const[n,o]of t.entries())e.push({name:n,value:o});const n=$("<form>");return $.each(e,function(t,e){n.append($("<input>").attr({type:"hidden",name:e.name,value:e.value}))}),n.serialize2()}(n),headers:{"Content-Type":"application/x-www-form-urlencoded"}});return!!e.ok||(console.error("Ошибка отправки данных:",e.statusText),!1)}catch(t){return console.error("Ошибка отправки данных:",t),!1}}console.group("4eDo script edit_field_on_fly "),console.log("%c~~ Скрипт для быстрого начисления/списания средств. %c https://github.com/4eDo ~~","font-weight: bold;","font-weight: bold;"),console.groupEnd(),function(){const n=$(".post-rating");let o=0;n.each(function(){const n=$(this),r=n.closest("[data-user-id]"),s=r.data("user-id"),l=r.attr("id").slice(1),i=$("<div></div>"),a=$('<input type="button" />').addClass("edit_on_fly button preview").val(ADD_CACHE_TEXT).css("cursor","pointer").on("click",function(){p.show()}),c=$("<select></select>").attr("id",`select-type-${o}`).on("change",function(){d.toggle("0"!==c.val())});c.append('<option value="0">Не выбрано</option>');for(let t=0;t<OPERATIONS.length;t++)("all"==OPERATIONS[t][2]||OPERATIONS[t][2].split(" ").includes(currTopic_efof))&&c.append(`<option value="${OPERATIONS[t][1]}">${OPERATIONS[t][0]} (${OPERATIONS[t][1]>0?"+":""}${OPERATIONS[t][1]})</option>`);const p=$("<p>Тип операции: </p>").hide().append(c),u=$('<input type="number" min="0" step="1" />').attr("style",COLOR_INPUT_TEXT).attr("id",`input-count-${o}`).on("input",function(){f.toggle(u.val()>0)}),d=$("<p>Количество: </p>").hide().append(u),f=$('<input type="button" />').addClass("edit_on_fly button submit").val("Выполнить").hide().css("cursor","pointer").on("click",function(){const n=c.val(),o=u.val();f.prop("disabled",!0),p.css("opacity","0.5").css("pointer-events","none"),d.css("opacity","0.5").css("pointer-events","none"),f.css("opacity","0.5").css("pointer-events","none"),async function(n,o,r,s,l){try{var i=document.URL;let a="/profile.php?section=fields&id="+r,c="#profile8",p=await t(a,r,c),u=`form[${FIELD_ID_FOR_EDIT}]`,d=parseFloat(p[u])||0,f=d,E=function(t){if(0==ROUND)return parseInt(t);return Number.isInteger(t)?t:parseFloat(t.toFixed(ROUND))}(d+parseFloat(n)*parseInt(o));p[u]=`${E}`;let h='<table class="editOnFly_success" border="1" style="margin-top: 10px;"><tr><td>Тип операции:</td>'+`<td>${n>0?"начисление (+":"списание ("} ${parseFloat(n)})</td></tr>`+`<tr><td>Количество:</td><td>${o}</td></tr>`+`<tr><td>Было:</td><td>${f}</td></tr>`+`<tr><td>Стало:</td><td>${E}</td></tr></table>`+"<p>Новые значения будут видны после обновления страницы.</p>";h+=USE_WRAPPER?"<p><strong>Оборачиваем сообщение.</strong></p>":"",history.replaceState(null,null,a),setTimeout(function(){history.replaceState(null,null,i)},1e3);let A=await e(a,p);if(!A)throw new Error("Произошла ошибка при отправке данных.");if(s.append($(h)),USE_WRAPPER){let n="/edit.php?id="+l,o="#post",a=await t(n,r,o),c="req_message",p=a[c],u=WRAPPER_START+p+WRAPPER_END;u=u.replaceAll("{{CACHE_BEFORE}}",f).replaceAll("{{CACHE_AFTER}}",E).replaceAll("{{ADMIN_NAME}}",ADMIN_NAMES[UserID]||UserLogin),a[c]=u,console.log("getCurrentValueAndSetNew: обёрнутое сообщение",a);let d="<p>Сообщение обёрнуто.</p>";history.replaceState(null,null,n),setTimeout(function(){history.replaceState(null,null,i)},1e3);let h=await e(n,a);if(!h)throw new Error("Произошла ошибка при оборачивании сообщения.");s.append($(d))}}catch(t){s.append($(`<p class="editOnFly_error">${t}</p>`))}}(n,o,s,i,l)});i.append(a,p,d,f),n.after(i),o++})}()}else $("#efof").remove()});
    </script>
    

    0

    3

    HTML в форме ответа

    Код:
    <!-------------------------- счетчик символов -------------------------->
    <script>var a,L,epl=$("#main-reply"),str='<small id="plng" style=" float: left; padding: 6px 10px; top: -25px; background: var(--forcol); left: 592px; font-weight: 700 !important; border-radius: 7px !important; border: 1px solid #46464638 !important; color: var(--link); text-transform: uppercase; font-size: 8px; width: 130px; height: 12px; text-align: center; margin: 22px 0 0px;">слов написано: <b>00</b> </small>';epl.parents("fieldset").find("#form-buttons").prepend(str);function epl3(){a=epl.val().length;if(a>9){L=''}else{L='0'};$("#plng b").text(L+a)};epl3();$(".pl-quote").click(function (){setTimeout('epl3()',100)});epl.bind('mouseout mousemove keydown keypress keyup',function(e){epl3()});</script>
    <!-------------------------- конец счетчика символов -------------------------->
    <!-- Font Awesome в форме ответа (с) ForumD.ru -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.1/css/all.css">
    <style>
    #form-buttons tr {     display: flex;
        justify-content: space-evenly;
        width: 100%;
        text-align: center;
        margin: 20px 0px 0px 0px;
        padding: 5px 0px;
        border-radius: 5px;
    }
    #form-buttons td img {position: absolute; z-index: 100; left: 0; top: 0;}
    #form-buttons td {
    background-image: none !important;
    display: inline-block;
    position: relative;
    width: 20px; /* ширина кнопки */
    height: 20px; /* высота кнопки */
    margin: 0; /* отступы кнопок друг от друга */
    border-radius: 5px; /* закругление кнопок */
    }
    #form-buttons td .fab,
    #form-buttons td .fas, 
    #form-buttons td .far,
    #form-buttons td .fal, 
    #form-buttons td .fad {
    font-size: 14px; /* размер иконок */
    padding: 4px 4px; /* отступ от иконки до кнопки */
    color: #534e48; /* цвет иконок */
    transition: all .2s ease-in-out;
    }
    #form-buttons td:hover {} /* изменение цвета кнопки при наведении курсора */
    #form-buttons td:hover .fab,
    #form-buttons td:hover .fas, 
    #form-buttons td:hover .far,
    #form-buttons td:hover .fal, 
    #form-buttons td:hover .fad {
            color: var(--hovlink);} /* изменение цвета иконки при наведении курсора */
    </style>
    
    
    <script type="text/javascript">
    $(document).ready(function(){
    $("#button-font").append('<i class="fas fa-font"></i>');
    $("#button-transL").append('<i class="fas fa-solid fa-globe"></i>');
    $("#button-size").append('<i class="fas fa-sort-amount-up-alt"></i>');
    $("#button-bold").append('<i class="fas fa-bold"></i>');
    $("#button-italic").append('<i class="fas fa-italic"></i>');
    $("#button-underline").append('<i class="fas fa-underline"></i>');
    $("#button-strike").append('<i class="fas fa-strikethrough"></i>');
    $("#button-left").append('<i class="fas fa-align-left"></i>');
    $("#button-center").append('<i class="fas fa-align-center"></i>');
    $("#button-right").append('<i class="fas fa-align-right"></i>');
    $("#button-link").append('<i class="fas fa-link"></i>');
    $("#button-spoiler").append('<i class="fas fa-cut"></i>');
    $("#button-image").append('<i class="fas fa-image"></i>');
    $("#button-img").append('<i class="fas fa-images"></i>');
    $("#button-video").append('<i class="fas fa-play-circle"></i>');
    $("#button-hide").append('<i class="fas fa-lock"></i>');
    $("#button-quote").append('<i class="fas fa-quote-right"></i>');
    $("#button-code").append('<i class="fas fa-code"></i>');
    $("#button-color").append('<i class="fas fa-palette"></i>');
    $("#button-table").append('<i class="fas fa-table"></i>');
    $("#button-smile").append('<i class="far fa-grin"></i>');
    $("#button-keyboard").append('<i class="fas fa-keyboard"></i>');
    $("#button-addition").append('<i class="fas fa-plus-circle"></i>');
    $("#button-mask").append('<i class="fas fa-solid fa-mask"></i>');
    $("#button-dice").append('<i class=" fas fa-solid fa-dice"></i>');
    $("#button-indent").append('<i class="fas fa-solid fa-indent"></i>');
    });
    </script>
    
    
    
    
    
    <!--Переключение раскладки выделенного текста -->
    <script type="text/javascript">S='<img src="http://forum.mybb.ru/i/blank.gif" title="Lat- Русс" onclick="bbcode(\'[Lat-Rus]\',\'[/Rus-Lat]\');LatRus();"/>';
    $("#button-font").after('<td id=button-transL>'+S+'</td>');var TxtTrans1='lat';
    function LatRus(){if(TxtTrans1=='lat'){TxtTrans1='rus'}else{TxtTrans1='lat'};
    lat0='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~[].'.split('');
    lat='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~'.split('');
    lat.push('\\[');lat.push('\\]');lat.push('\\.');
    rus=('йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю').split('');
    function transF(p){ar1=lat;ar2=rus;if(TxtTrans1=='lat'){ar2=lat0;ar1=rus}for(var i=0; i<ar1.length; i++){trans='/'+ar1[i]+'/g';p=p.replace(eval(trans), ar2[i])}return p;}L=$('#main-reply').val();L=L.replace(/\[Lat-Rus\]([\s\S]*)\[\/Rus-Lat\]/mg,function(a,b,c){return transF(b);});$('#main-reply').val(L);}
    </script>
    <!-- Конец -->
    
    <!-------------------------- кнопка img в форме ответа -------------------------->
    <script>
    var oldIMG="<td id=\"button-img\" title=\"Изображение\"><img onclick=\"bbcode('[img]','[/img]')\" src=\"/i/blank.gif\"/><b><p style=\"z-index: 20; position: absolute;margin: 4px 0 0 18px; font-size: 0px;;\">2</p></b></td>"
    $("#button-image").after(oldIMG);
    </script>
    
    
    <!---------------------------------------- Смайлики --------------------------------------------->
    <script src="//forumstatic.ru/files/0017/95/29/40399.js"></script>
    <script>
    $(document).ready(function() {
      hvStickerPack.init("https://forumstatic.ru/files/001c/76/cd/71049.txt?v=6");
    });
    </script>
    <style> #button-sticker:before {
        content: "\f587";
        font-family: 'FONT AWESOME';
        line-height: 22px;
        font-weight: bolder;
        font-size: 14px;
        color: #534e48;
    }
    </style>
    
    <!--Переключение регистра выделенного текста -->
    <style>#button-ChangeСase{background:url(http://forumupload.ru/uploads/001a/ea/43/8/140262.png);background-size:16px auto;:}</style>
    <script type="text/javascript">(function(){var S='<img src="http://kbartest.rusff.me/i/blank.gif" title="Смена регистра" \
    onclick="bbcode(\'[Upper-Lower]\',\'[/Upper-Lower]\');UpperLower();"/>';
    $("#button-font").after('<td id=button-ChangeСase>'+S+'</td>');var ChangeСase='upper';
    UpperLower=function (){if(ChangeСase=='upper'){ChangeСase='lower'}else{ChangeСase='upper'};
    function transF(p){if(ChangeСase=='upper')return p.toLowerCase();else ;return p.toUpperCase();}
    var L=$('#main-reply').val();L=L.replace(/\[Upper-Lower\]([\s\S]*)\[\/Upper-Lower\]/mg,
    function(a,b,c){return transF(b);});$('#main-reply').val(L);}}());
    </script>
    
    <!---------------------------------------------Кубики---------------------------------------------------->
    <script type="text/javascript">
    if(form=document.getElementById("form-buttons"))
    {
       var buttonCell = form.getElementsByTagName("tr")[0].insertCell(20);
       buttonCell.id = "button-dice";
       buttonCell.title = "Кубики";
       buttonCell.innerHTML='<img onclick="dice();" src="/i/blank.gif">';
    }
    </script>
    <script type="text/javascript">
    function dice()
    {
    var FoundErrors = '';
    var diceRes=""
    var CountCube = prompt("Количество кубиков", "3");
    var SideCube = prompt("Сколько граней у кубика?", "6");
    if(CountCube>20){
    alert("Нельзя бросать столько кубиков");
    return false;}
    if(SideCube>20){
    alert("Не бывает таких кубиков");
    return false;}
    if (!CountCube)
    {return false;}
    if (!SideCube)
    {return false;}
    for(i=0; i<CountCube;i++){
    var dice = (Math.round(Math.random()*SideCube))
    if(dice==0) dice=1;
    diceRes += dice*1936+"-"
    }
    smile('[dice='+diceRes+CountCube+SideCube+']')
    }
    </script>
    <script>
    function addDice(str,from,internal){
    var pos=0,pos2=0,newpos=0
    if((pos=str.indexOf("[dice=",from))==-1) return str;
    if((pos2=str.indexOf("]"),pos+6)==-1) return str;
    newpos=str.indexOf("]",pos+6)
    if(newpos<pos2 && newpos!=-1) str=addDice(str,pos+6,true)
    if((pos2=str.indexOf("]",pos+6))==-1) return str;
    str=str.substring(0,pos)+makeDice(str.substring(pos+6,pos2))+str.substring(pos2+1,str.length)
    if( str.indexOf("[dice=")!=-1 && internal==false) str=addDice(str,0,false)
    return str}
    
    function makeDice(dice){
    diceMass = dice.split("-")
    diceC = dice.substring(dice.length-2, dice.length-1)
    diceS = dice.substring(dice.length-1, dice.length)
    var diceR=0, diceRu="";
    for(i=0;i<diceMass.length-1;i++){diceR+=diceMass[i]/1936;}
    for(i=0;i<diceMass.length-1;i++){if(diceMass[i]==diceMass[diceMass.length-2]){diceRu+=diceMass[i]/1936;}else{diceRu+=parseInt(diceMass[i]/1936)+"+";}}
    txt="<div class=\"quote-box\"><blockquote><p><b>Исходный бросок</b>: "+diceC+"d"+diceS+"<br /><br /><b>Результаты броска</b>: ("+diceRu+")="+diceR+"</p></blockquote></div>"
    return txt}
    
    if(document.URL.indexOf("viewtopic.php")!=-1){
    elm=document.getElementById("pun-main").getElementsByTagName("div")
    for(x in elm) if(elm[x].className=="post-content"){
    var post=elm[x]
    post.innerHTML=addDice(post.innerHTML,0,false)}}
    </script>
    <!-------------------------------Конец кубиков------------------------------------------------------->
    
    <!-- Дополнительные шрифты в форме ответа © rps -->
    <script type="text/javascript">
    if (document.URL.indexOf("viewtopic") != -1) {
    var ft; var i; var ft_f; var j = "";
    ft = document.getElementById("font-area");
     
    var ft_f = new Array();
    ft_f.push('Marck Script');
    ft_f.push('Alumni Collegiate Italic');
    ft_f.push('Alumni Collegiate');
    ft_f.push('AmaticSC');
    ft_f.push('Bad Script');
    ft_f.push('Bellota');
    ft_f.push('Caveat Variable');
    ft_f.push('Comforter Brush');
     
    for (i in ft_f) {
    j = "<div><span style='font-family:" + ft_f[i] + ";'>" + ft_f[i] +  "</span><img src='/i/blank.gif' onclick=\"bbcode('[";
    j += "font=" + ft_f[i];
    j += "]','[/font]')\" /></div>";
    ft.innerHTML += j;
    }}
    </script>
    

    0

    4

    Пользовательские bb-теги

    Код:
    indent:sito
    tabtitle[/data-tabname]:a
    tab[/data-tabname]:a
    tabdefault:s
    themeTitle
    themeP
    themeSub
    themeParT
    themeHr:s
    themeBlur:s
    themePara:u
    themeParab
    themeTitleS

    0


    Вы здесь » treasure chest » Склад скриптов » html ке ке ке