let fechaHoyElem, santoDelDiaElem, indicadorLiturgicoElem, cabeceraHoy; function inicializarVariables() { cabeceraHoy = document.getElementById('header-hoy'); fechaHoyElem = document.getElementById('fecha-hoy'); nombreCicloElem = document.getElementById('nombre_ciclo'); cicloParImparElem = document.getElementById('ciclo_par_impar'); santoDelDiaElem = document.getElementById('santo-del-dia'); descripcionSantoDelDiaElem = document.getElementById('descripcion-santo-del-dia'); indicadorLiturgicoElem = document.getElementById('indicador-liturgico'); errorElem = document.getElementById('__error'); difuntoHoyElem = document.getElementById('difunto-hoy'); salmoDelDiaElem = document.getElementById('__salmo'); } async function cargarYActualizarTodo() { // 1. Obtener fecha de hoy en formato YYYY-MM-DD (ISO) const hoy = new Date(); const fechaISO = hoy.toISOString().split('T')[0]; if (hoy.getFullYear() % 2 === 0) { cicloParImparElem.textContent = "Año Par"; } else { cicloParImparElem.textContent = "Año Impar"; } if (hoy.getFullYear() % 3 === 0) { nombreCicloElem.textContent = "Ciclo C -"; } else if (hoy.getFullYear() % 3 === 1) { nombreCicloElem.textContent = "Ciclo A -"; } else { nombreCicloElem.textContent = "Ciclo B -"; } try { // 2. Cargar el JSON unificado (enero/febrero que creamos) const respuesta = await fetch('data/calendario-liturgico.json'); const datosCalendario = await respuesta.json(); // 3. Buscar el objeto del día de hoy const datosHoy = datosCalendario.find(dia => dia.fecha === fechaISO); const colorDiaCirculo = document.querySelector('.color-dia'); const nombreTiempoText = document.querySelector('.nombre-color'); if (datosHoy) { // Mapeo de colores (puedes añadir los hex exactos aquí) const mapaColores = { "verde": "#2d5a27", "morado": "#5d2d91", "blanco": "#f0f0f0", "rojo": "#b30000", "azul": "#0074d9", "rosa": "#e7b1cc" }; // Actualizamos Indicador Litúrgico cabeceraHoy.style.backgroundColor = mapaColores[datosHoy.color]; // Fondo para toda la cabecera indicadorLiturgicoElem.textContent = datosHoy.tiempo; //indicadorLiturgicoElem.style.color = mapaColores[datosHoy.color]; if (datosHoy.color === "blanco" || datosHoy.color === "rosa") { indicadorLiturgicoElem.style.color = "#000000"; // Texto oscuro para fondos claros } else { indicadorLiturgicoElem.style.color = "#ffffff"; // Texto claro para fondos oscuros } } else { indicadorLiturgicoElem.textContent = "-"; } } catch (error) { console.error("Error cargando el calendario:", error); errorElem.textContent = "Error cargando el calendario: " + error.message; } } async function difuntos() { const hoy = new Date(); const mesHoy = hoy.getMonth() + 1; const diaHoy = hoy.getDate(); try { const res = await fetch('data/difuntos.json'); const listaDifuntos = await res.json(); // Buscamos si alguien cumple aniversario de fallecimiento hoy const elDifunto = listaDifuntos.find(d => { if (!d.fallecimiento || d.fallecimiento.includes('XXXX')) return false; const f = d.fallecimiento.split('-'); return parseInt(f[1]) === mesHoy && parseInt(f[2]) === diaHoy; }); if (elDifunto && difuntoHoyElem) { let infoAniversario = ""; let infoVida = ""; // 1. Calcular años desde el fallecimiento const anioFallecimiento = parseInt(elDifunto.fallecimiento.split('-')[0]); const anosPasados = hoy.getFullYear() - anioFallecimiento; infoAniversario = `${anosPasados}º aniversario`; // 2. Calcular edad que tenía al fallecer (si hay fecha de nacimiento) if (elDifunto.nacimiento && !elDifunto.nacimiento.includes('XXXX')) { const nacion = new Date(elDifunto.nacimiento); const fallecio = new Date(elDifunto.fallecimiento); let edad = fallecio.getFullYear() - nacion.getFullYear(); // Ajuste por si no había cumplido años ese año const m = fallecio.getMonth() - nacion.getMonth(); if (m < 0 || (m === 0 && fallecio.getDate() < nacion.getDate())) { edad--; } infoVida = `Vivió ${edad} años`; } else if (elDifunto.nota) { // Si no hay fecha exacta pero sí una nota manual (ej. "77 años") infoVida = elDifunto.nota; } // 3. Renderizar en el HTML con el detalle de oración difuntoHoyElem.innerHTML = `DEP 🕊️ ${elDifunto.nombre}`; // También actualizamos la sección de intención principal si existe const intencionGral = document.querySelector('.intencion'); if (intencionGral) { intencionGral.innerHTML = `
  • Hoy pedimos especialmente por ${elDifunto.nombre}
  • `; } } } catch (e) { console.error("Error en la carga de difuntos:", e); } } async function santoDelDia() { const hoy = new Date(); // Usamos el formato local para evitar líos de zona horaria const offset = hoy.getTimezoneOffset() * 60000; const fechaISO = new Date(hoy - offset).toISOString().split('T')[0]; try { const res = await fetch('../data/santos.json'); const listaSantos = await res.json(); // Buscamos el santo usando el campo "fecha" de tu JSON const elSanto = listaSantos.find(d => d.fecha === fechaISO); if (elSanto && santoDelDiaElem) { // Mostramos el santo. Si tiene descripción (ej. Patrón de los animales), la añadimos. const descripcion = elSanto.descripcion ? `${elSanto.descripcion}` : ""; santoDelDiaElem.textContent = `${elSanto.santo}`; if (descripcionSantoDelDiaElem) { descripcionSantoDelDiaElem.textContent = descripcion; } else { descripcionSantoDelDiaElem.textContent = ""; } } } catch (e) { console.error("Error en la carga de santos:", e); } } async function visualizarSalmo() { // 1. Seleccionamos el elemento del DOM (asegúrate de inicializarlo en inicializarVariables) const salmoElem = document.getElementById('__salmo'); try { const res = await fetch('../data/salmos.json'); if (!res.ok) throw new Error("No se pudo cargar el salmo"); const listaSalmos = await res.json(); // 2. Lógica de selección: // Usamos el día del año para que no se repitan tanto los salmos const hoy = new Date(); const inicioAnio = new Date(hoy.getFullYear(), 0, 0); const dif = hoy - inicioAnio; const diaDelAnio = Math.floor(dif / (1000 * 60 * 60 * 24)); const indiceHoy = diaDelAnio % listaSalmos.length; const salmoDeHoy = listaSalmos[indiceHoy]; // 3. Renderizado (dentro del try para asegurar que tenemos los datos) if (salmoDeHoy && salmoElem) { salmoElem.innerHTML = `${salmoDeHoy.texto}`; } } catch (e) { console.error("Error cargando el salmo:", e); if (salmoElem) salmoElem.textContent = "El Señor es mi pastor, nada me falta."; } } function visualizarDatos() { const opcionesFecha = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; const hoy = new Date(); fechaHoyElem.textContent = hoy.toLocaleDateString('es-ES', opcionesFecha); } // Evento de carga unificado window.addEventListener("load", () => { inicializarVariables(); difuntos(); santoDelDia(); visualizarDatos(); visualizarSalmo(); cargarYActualizarTodo(); // Esta función ahora hace el trabajo de las dos anteriores });