// 이선생 TKTX — 캡쳐/스크랩 방지 (브라우저 한계 내)
// ⚠️ OS 레벨 캡쳐(Windows PrtScn, macOS Shift+Cmd+4, 모바일 전원+볼륨)는 막을 수 없음.
// admin 페이지에서는 비활성화됨.

(function () {
  if (location.pathname.startsWith('/admin')) return;

  // 1. 우클릭 차단
  document.addEventListener('contextmenu', e => { e.preventDefault(); return false; });

  // 2. 텍스트 드래그 시작 차단 (입력 필드 제외)
  document.addEventListener('selectstart', e => {
    const tag = e.target.tagName;
    if (tag === 'INPUT' || tag === 'TEXTAREA' || e.target.isContentEditable) return;
    e.preventDefault();
  });

  // 3. 드래그 차단
  document.addEventListener('dragstart', e => e.preventDefault());

  // 4. 키보드 단축키 차단
  document.addEventListener('keydown', e => {
    const k = e.key;
    const lower = k.toLowerCase();

    // F12
    if (k === 'F12') { e.preventDefault(); return false; }

    // Ctrl/Cmd 조합
    if (e.ctrlKey || e.metaKey) {
      // Ctrl+S, Ctrl+U (소스 보기), Ctrl+P (인쇄), Ctrl+A (전체 선택), Ctrl+C (입력 필드 제외)
      if (['s','u','p'].includes(lower)) { e.preventDefault(); return false; }

      // Ctrl+A / Ctrl+C — 입력 필드는 허용
      if (['a','c'].includes(lower)) {
        const tag = e.target.tagName;
        if (!(tag === 'INPUT' || tag === 'TEXTAREA' || e.target.isContentEditable)) {
          e.preventDefault();
          return false;
        }
      }

      // Ctrl+Shift+I/J/C (개발자 도구)
      if (e.shiftKey && ['i','j','c'].includes(lower)) { e.preventDefault(); return false; }
    }

    // PrintScreen (브라우저는 받지만 OS가 먼저 처리. 클립보드만 비우기 시도)
    if (k === 'PrintScreen') {
      try { navigator.clipboard?.writeText(''); } catch (_) {}
    }
  });

  // 5. 이미지 저장 시도 추가 차단
  document.addEventListener('mousedown', e => {
    if (e.target.tagName === 'IMG' && e.button === 2) e.preventDefault();
  });

  // 6. blur on visibility change (탭 전환/스크린샷 도구 띄울 때 흐리게)
  // — 너무 거슬리면 admin이 끌 수 있게 cms_config.security.blur_on_blur 토글로 운영
  document.addEventListener('visibilitychange', () => {
    if (document.hidden) document.body.style.filter = 'blur(8px)';
    else document.body.style.filter = '';
  });

  // 7. devtools open detection (대략적, 100% X)
  let devtoolsOpen = false;
  setInterval(() => {
    const threshold = 160;
    const open = window.outerWidth - window.innerWidth > threshold ||
                 window.outerHeight - window.innerHeight > threshold;
    if (open && !devtoolsOpen) {
      devtoolsOpen = true;
      console.clear();
      console.warn('%c⚠ 외부 스크랩 시도가 감지되었습니다.', 'color:#ff2a2a;font-size:18px;font-weight:900;');
    }
    if (!open) devtoolsOpen = false;
  }, 1500);
})();
