/* EGOR.TEAM: тихие подсказки про доплату до «С поддержкой» (аналог lechefio in-course-upgrade.html). Лежит в доп. файле JS темы 100765 (egorteam-upgrade.js). 2026-10-26.
   1) В уроке вместо голого «Вы не можете отвечать в этом уроке» объяснение и ссылка на форму доплаты в тренинге (только если у этого ученика в тренинге есть форма .lc-up).
   2) В тренинге по ссылке #lcup страница прокручивается к форме.
   Ничего не трогает в редакторе (editMode) и на других страницах. */
(function () {
  if (location.origin !== 'https://egor.team') return;
  var P = location.pathname, S = location.search || '';
  if (/editMode/.test(P) || /editMode=1/.test(S)) return;
  var isLesson = /\/teach\/control\/lesson\/view/.test(P);
  var isStream = /\/teach\/control\/stream\/view\/id\/\d+\/?$/.test(P);
  if (!isLesson && !isStream) return;

  var CSS = '.lcup-fb{font-size:14px;line-height:1.6;color:var(--lc-gray,#5a514a)}'
    + '.lcup-fb a{color:var(--lc-persimmon,#d4543b);text-decoration:underline;text-underline-offset:2px;white-space:nowrap}'
    + '.lcup-fb a:hover{opacity:.85}';

  function addCss() {
    if (document.getElementById('lcup-css')) return;
    var s = document.createElement('style');
    s.id = 'lcup-css';
    s.textContent = CSS;
    (document.head || document.documentElement).appendChild(s);
  }

  function streamId() {
    var m = P.match(/\/teach\/control\/stream\/view\/id\/(\d+)/);
    if (!m) {
      var back = document.querySelector('a[href*="/teach/control/stream/view/id/"]');
      if (back) m = back.getAttribute('href').match(/\/id\/(\d+)/);
    }
    return m ? m[1] : null;
  }

  /* Форма есть только у тех, кому она положена (сегмент), поэтому ссылку ставим, только если форма реально есть на странице тренинга. */
  function streamHasForm(sid, cb) {
    var key = 'lcup_form_' + String(window.accountUserId || '') + '_' + sid;
    try {
      var c = JSON.parse(window.sessionStorage.getItem(key) || 'null');
      if (c && (new Date().getTime() - c.t) < 600000) { cb(c.v); return; }
    } catch (e) { /* storage may be blocked */ }
    if (typeof window.fetch !== 'function') { cb(false); return; }
    window.fetch('/teach/control/stream/view/id/' + sid, { credentials: 'same-origin' })
      .then(function (r) { return r.ok ? r.text() : ''; })
      .then(function (html) {
        var v = /class="[^"]*xdget-orderForm[^"]*\blc-up\b/.test(html) || /"elClass"\s*:\s*"lc-up"/.test(html);
        try { window.sessionStorage.setItem(key, JSON.stringify({ t: new Date().getTime(), v: v })); } catch (e) { /* fine */ }
        cb(v);
      })
      .catch(function () { cb(false); });
  }

  var fbState = 0; /* 0 не пробовали, 1 ждём, 2 готово */

  function feedbackBlock() {
    if (fbState) return;
    var box = document.querySelector('.why-no-form');
    if (!box || box.getAttribute('data-lcup') === '1') return;
    if (!/не можете отвечать/i.test(box.textContent || '')) return;
    var sid = streamId();
    if (!sid) return;
    fbState = 1;
    streamHasForm(sid, function (has) {
      fbState = 2;
      if (!has || box.getAttribute('data-lcup') === '1') return;
      box.setAttribute('data-lcup', '1');
      addCss();
      var wrap = document.createElement('div');
      wrap.className = 'lcup-fb';
      wrap.appendChild(document.createTextNode(
        'В вашем тарифе нет обратной связи по заданиям. С поддержкой куратор смотрит ваши фото '
        + 'и подсказывает, что поправить, пока вы ещё у плиты. '));
      var a = document.createElement('a');
      a.href = '/teach/control/stream/view/id/' + sid + '#lcup';
      a.textContent = 'Как добавить поддержку';
      wrap.appendChild(a);
      box.innerHTML = '';
      box.appendChild(wrap);
    });
  }

  /* страница ещё достраивается (картинки, виджеты), поэтому прокручиваем к форме несколько раз, пока она не окажется на экране */
  function jumpToForm() {
    if (location.hash !== '#lcup') return;
    var f = document.querySelector('.xdget-orderForm.lc-up');
    if (!f || typeof f.scrollIntoView !== 'function') return;
    var r = f.getBoundingClientRect();
    if (r.top < 0 || r.bottom > (window.innerHeight || 800)) f.scrollIntoView({ block: 'center' });
  }

  var timers = [];
  function run() {
    try {
      if (isLesson) feedbackBlock();
      else jumpToForm();
    } catch (e) { /* never break the page */ }
    if (isLesson && fbState === 2) { while (timers.length) clearTimeout(timers.pop()); }
  }

  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run);
  else run();
  timers.push(setTimeout(run, 600));
  timers.push(setTimeout(run, 1800));
  if (isStream) { window.addEventListener('load', run); timers.push(setTimeout(run, 3500)); }
})();
