/**
 * MonsterAgro galvenais skripts
 * Apstrādā:
 * - Lietotāju autentifikāciju un sesijas pārvaldi
 * - Dinamisku navigācijas ielādi
 * - Uz lomām bāzētu navigāciju (Administrators, Darba devējs, Darbunieks)
 * - Izrakstīšanās funkcionalitāti
 * Veidoja: Edijs Dunavskis
 */

// Uz lomām bāzētu navigācijas joslas izveide
const HeaderManager = (() => {
  /**
   * Ielādēt header.html
   * Ievieto to katras lapas html elementā ar identifikatoru "header"
   */
  async function loadHeader(containerId = 'header-container') {
    try {
      const headerEl = document.getElementById(containerId);
      if (!headerEl) {
        console.warn(`Header container with ID '${containerId}' not found`);
        return;
      }

      const response = await fetch('header.html');
      const headerHTML = await response.text();
      headerEl.innerHTML = headerHTML;
      
      // Papildina navigācijas joslu skatoties pēc lietotāja lomas
      populateHeader();
    } catch (error) {
      console.error('Error loading header:', error);
    }
  }

  /**
   * Papildina navigācijas joslu skatoties pēc lietotāja lomas
   */
  function populateHeader() {
    const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
    const userData = localStorage.getItem('user');
    const navbarLinks = document.getElementById('navbarLinks');
    const navbarRight = document.getElementById('navbarRight');
    
    if (!navbarLinks || !navbarRight) return;
    
    if (isLoggedIn && userData) {
      const user = JSON.parse(userData);
      
      let navigationHTML = '';
      
      // Uz lomām bāzētā navigācijas joslas papildināšana
      switch(user.status) {
        case 3: // Administratoram
          navigationHTML = `
            <li class="nav-item">
              <a class="nav-link" href="admin_approvals.html">Pending Approvals</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="edit_farm.html">Farm Settings</a>
            </li>
          `;
          break;
          
        case 2: // Darba devējam
          navigationHTML = `
            <li class="nav-item">
              <a class="nav-link" href="equipment.html">Equipment</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="fields.html">Fields</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="plants.html">Plants</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="razas_stat.html">Yield</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="degv_stat.html">Fuel</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="piev_darb.html">Employees</a>
            </li>
          `;
          break;
          
        case 1: // Darbiniekam
          navigationHTML = `
            <li class="nav-item">
              <a class="nav-link" href="razas_stat.html">Yield</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="degv_stat.html">Fuel</a>
            </li>
          `;
          break;
      }
      
      navbarLinks.innerHTML = navigationHTML;
      
      // Profila lapas poga
      navbarRight.innerHTML = `
        <span class="navbar-text me-3">Hello, <span id="userName">${user.name} ${user.fname}</span>!</span>
        <ul class="navbar-nav me-auto mb-2 mb-lg-0">
          <li class="nav-item">
            <a class="nav-link" href="profils.html">Profile</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#" id="logoutBtn">Logout</a>
          </li>
        </ul>
      `;
      
      // Izrakstīšanās poga
      const logoutBtn = document.getElementById('logoutBtn');
      if (logoutBtn) {
        logoutBtn.addEventListener('click', (e) => {
          e.preventDefault();
          logout();
        });
      }
      
    } else {
      // Navigācijas josla lietotājiem, kas nav pierakstijušies
      navbarLinks.innerHTML = `
        <li class="nav-item">
          <a class="nav-link" href="index.html">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="contacts.html">Contacts</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="about_us.html">About Us</a>
        </li>
      `;
      
      navbarRight.innerHTML = `
        <ul class="navbar-nav me-auto mb-2 mb-lg-0">
          <li class="nav-item">
            <a class="nav-link" href="login_lapa.html">Login</a>
          </li>
        </ul>
      `;
    }
  }

  /**
   * Izraksta lietotāju un notīra sesiju
   */
  function logout() {
    localStorage.removeItem('user');
    localStorage.removeItem('isLoggedIn');
    window.location.href = 'login_lapa.html';
  }

  // Publiskais API
  return {
    loadHeader,
    populateHeader,
    logout
  };
})();

/**
 * MonsterAgroApp klase
 * Galvenais "controller" kas pārvalda visu projekta dzīves ciklu
 */
class MonsterAgroApp {
  constructor() {
    this.currentUser = null;
    this.init();
  }

  /**
   * Inicializē šo projektu
   * Pārbauda pieslēgšanās stāvikli, Ielādē navigāciju
   */
  init() {
    this.checkAuth();
    this.loadHeader();
    this.setupNavigation();
    this.startAutoRefresh();
  }

  // Pārbauda vai lietotājs ir pieslēdzies
  checkAuth() {
    const isLoggedIn = localStorage.getItem("isLoggedIn");
    const userData = localStorage.getItem("user");
    
    if (isLoggedIn === "true" && userData) {
      this.currentUser = JSON.parse(userData);
    } else {
      // Pārsūta uz galveno lapu, ja nav pieslēdzies
      if (window.location.pathname !== '/' && !window.location.pathname.includes('index.html') && 
          !window.location.pathname.includes('login_lapa.html') && 
          !window.location.pathname.includes('register.html') &&
          !window.location.pathname.includes('about_us.html') &&
          !window.location.pathname.includes('contacts.html')) {
        window.location.href = 'index.html';
      }
    }
  }

  // Inicializē header.html html elementā ar identifikatoru "header"
  async loadHeader() {
    const headerEl = document.getElementById("header");
    if (!headerEl) return;

    try {
      const response = await fetch("header.html");
      const headerHTML = await response.text();
      headerEl.innerHTML = headerHTML;
      
      HeaderManager.populateHeader();
      this.setupHeaderNavigation();
    } catch (err) {
      console.error("Failed to load header:", err);
    }
  }

  // Izveidot navigācijas "event listeners"
  setupHeaderNavigation() {
    document.querySelectorAll("[data-page]").forEach(link => {
      link.addEventListener("click", (e) => {
        e.preventDefault();
        const page = e.target.getAttribute("data-page");
        this.loadPage(page);
      });
    });
  }

  // Izveido tīmekļa "atpakaļ"/"uz priekšu" pogu darbību
  setupNavigation() {
    window.addEventListener("popstate", (e) => {
      if (e.state && e.state.page) {
        this.loadPage(e.state.page, false);
      }
    });
  }

  // Automātiskā lapu atsvaidzināšana
  startAutoRefresh() {
    setInterval(() => {
      const currentPage = window.location.hash.substring(1);
      if (["employees", "fuel"].includes(currentPage)) {
        this.loadPage(currentPage, false);
      }
    }, 30000);
  }
}

// Inicializē projektu, kad "DOM" ir ielādēts
document.addEventListener("DOMContentLoaded", () => {
  window.app = new MonsterAgroApp();
});
