/**
 * DOCLOUD - Custom JavaScript
 * - Botón CTA "Acceso ICSManager"
 * - Toggle modo oscuro/claro
 * - Integración Zammad
 */

(function() {
  'use strict';

  document.addEventListener('DOMContentLoaded', initCustomFeatures);

  function initCustomFeatures() {
    setDefaultDarkMode();
    fixLogoLink();
    addThemeToggle();
    addLoginButton();
    // Cargar Zammad de forma diferida
    if ('requestIdleCallback' in window) {
      requestIdleCallback(loadZammadForm);
    } else {
      setTimeout(loadZammadForm, 2000);
    }
  }

  /**
   * Establece modo oscuro por defecto
   */
  function setDefaultDarkMode() {
    var savedTheme = localStorage.getItem('docloud-theme');
    if (!savedTheme) {
      document.documentElement.setAttribute('data-theme', 'dark');
      localStorage.setItem('docloud-theme', 'dark');
    } else {
      document.documentElement.setAttribute('data-theme', savedTheme);
    }
  }

  /**
   * Asegura que el logo siempre enlace al home
   */
  function fixLogoLink() {
    var logoLink = document.querySelector('.logo-link');
    if (logoLink) {
      logoLink.href = '/';
    }
  }

  /**
   * Añade el toggle de modo claro/oscuro
   */
  function addThemeToggle() {
    var header = document.querySelector('.sidebar-header');
    if (!header) return;

    var toggleBtn = document.createElement('button');
    toggleBtn.className = 'theme-toggle-btn';
    toggleBtn.setAttribute('aria-label', 'Cambiar tema');
    toggleBtn.setAttribute('title', 'Alto contraste');
    updateToggleIcon(toggleBtn);

    toggleBtn.addEventListener('click', function() {
      var currentTheme = document.documentElement.getAttribute('data-theme');
      var newTheme = currentTheme === 'dark' ? 'light' : 'dark';
      document.documentElement.setAttribute('data-theme', newTheme);
      localStorage.setItem('docloud-theme', newTheme);
      updateToggleIcon(toggleBtn);
    });

    // Crear contenedor para los botones del header
    var btnContainer = document.createElement('div');
    btnContainer.style.cssText = 'display:flex;align-items:center;gap:12px;';
    btnContainer.appendChild(toggleBtn);
    header.appendChild(btnContainer);

    return btnContainer;
  }

  /**
   * Actualiza el icono del toggle según el tema
   */
  function updateToggleIcon(btn) {
    var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
    btn.innerHTML = isDark ? '☀' : '☽';
    btn.title = isDark ? 'Modo claro' : 'Modo oscuro';
  }

  /**
   * Añade el botón CTA "Acceso ICSManager"
   */
  function addLoginButton() {
    var btnContainer = document.querySelector('.sidebar-header > div:last-child');
    if (!btnContainer) {
      var header = document.querySelector('.sidebar-header');
      if (!header) return;
      btnContainer = document.createElement('div');
      btnContainer.style.cssText = 'display:flex;align-items:center;gap:12px;';
      header.appendChild(btnContainer);
    }

    var loginBtn = document.createElement('a');
    loginBtn.href = 'https://icsmanager.docloud.es/ics1';
    loginBtn.className = 'header-login-btn';
    loginBtn.textContent = 'Acceso ICSManager';
    loginBtn.setAttribute('rel', 'noopener');
    loginBtn.setAttribute('title', 'Acceder al panel de gestión');

    btnContainer.appendChild(loginBtn);
  }

  /**
   * Carga jQuery y Zammad Form
   */
  function loadZammadForm() {
    var feedbackBtn = document.createElement('button');
    feedbackBtn.id = 'zammad-feedback-form';
    feedbackBtn.textContent = 'Contactar';
    document.body.appendChild(feedbackBtn);

    if (typeof jQuery === 'undefined') {
      var jqueryScript = document.createElement('script');
      jqueryScript.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
      jqueryScript.onload = loadZammadScript;
      document.head.appendChild(jqueryScript);
    } else {
      loadZammadScript();
    }
  }

  /**
   * Carga el script de Zammad
   */
  function loadZammadScript() {
    var zammadScript = document.createElement('script');
    zammadScript.id = 'zammad_form_script';
    zammadScript.src = 'https://soporte.tecnico.com.es/assets/form/form.js';
    zammadScript.onload = initZammadForm;
    document.head.appendChild(zammadScript);
  }

  /**
   * Inicializa el formulario de Zammad
   */
  function initZammadForm() {
    if (typeof jQuery !== 'undefined' && jQuery.fn.ZammadForm) {
      jQuery('#zammad-feedback-form').ZammadForm({
        messageTitle: 'Contacto con Soporte Técnico',
        messageSubmit: 'Enviar',
        messageThankYou: 'Gracias por contactarnos (#%s). Responderemos a la brevedad.',
        modal: true
      });
    }
  }

})();
