/* ============================================
INICIALIZACIÓN DE ELEMENTOS DE LA PÁGINA
(independiente del header)
============================================ */
document.addEventListener("DOMContentLoaded", () => {
visualizarRosario();
recordatorioDifuntos();
cargarIntencionesIndex();
personalizarSeccionDiario();
});
// visualizarSalmo se llama directamente porque salmo-pcpal
// está en el HTML estático y este script está al final del body
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', visualizarSalmo);
} else {
visualizarSalmo();
}
/* ============================================
VARIABLES GLOBALES
============================================ */
// Las variables globales comunes (fechaHoyElem, etc.) se declaran en header.js
let salmoDelDiaElem;
/* ============================================
INICIALIZAR VARIABLES
============================================ */
function inicializarVariables() {
cabeceraHoy = document.getElementById('header-hoy');
menuPrincipalElem = document.getElementById('menu-principal');
errorElem = document.getElementById('__error');
salmoDelDiaElem = document.getElementById('salmo-pcpal');
fechaHoyElem = document.getElementById('fecha-hoy');
nombreCicloElem = document.getElementById('nombre_ciclo');
cicloParImparElem = document.getElementById('ciclo_par_impar');
descripcionSantoDelDiaElem = document.getElementById('descripcion-santo-del-dia');
indicadorLiturgicoElem = document.getElementById('indicador-liturgico');
}
/* ============================================
SALMO DEL DÍA
============================================ */
async function visualizarSalmo() {
const salmoElem = document.getElementById('salmo-pcpal');
if (!salmoElem) {
console.error("No se encontró el elemento 'salmo-pcpal' en el DOM");
return;
}
try {
const res = await fetch(`${API_BASE}/versos/hoy`);
if (!res.ok) throw new Error("Error en fetch");
const verso = await res.json();
if (verso && verso.texto) {
salmoElem.innerHTML = `${verso.texto}
— ${verso.fuente} ${verso.numero}`;
} else {
salmoElem.textContent = "El Señor es mi pastor, nada me falta.";
}
} catch (e) {
console.warn("API no disponible, cargando salmo local:", e);
try {
const res2 = await fetch('data/salmos.json');
const salmos = await res2.json();
const hoy = new Date();
const diaAnyo = Math.floor((hoy - new Date(hoy.getFullYear(), 0, 0)) / 86400000);
const salmo = salmos[diaAnyo % salmos.length];
salmoElem.innerHTML = `${salmo.texto}
— Salmo ${salmo.numero}`;
} catch (e2) {
salmoElem.textContent = "Bendice, alma mía, al Señor.";
}
}
}
/* ============================================
ROSARIO DEL DÍA
============================================ */
function visualizarRosario() {
const MISTERIOS_DATA = {
0: { nombre: "Gloriosos" },
1: { nombre: "Gozosos"},
2: { nombre: "Dolorosos" },
3: { nombre: "Gloriosos" },
4: { nombre: "Luminosos" },
5: { nombre: "Dolorosos" },
6: { nombre: "Gozosos" }
};
const hoy = new Date();
const diaSemana = hoy.getDay();
const misterioHoy = MISTERIOS_DATA[diaSemana];
const nombreMistElem = document.getElementById('nombre_misterio');
if (nombreMistElem) {
nombreMistElem.textContent = `MISTERIOS ${misterioHoy.nombre.toUpperCase()}`;
}
}
/* ============================================
FECHA HUMANA
============================================ */
function visualizarDatos() {
const opcionesFecha = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
const hoy = new Date();
fechaHoyElem.textContent = hoy.toLocaleDateString('es-ES', opcionesFecha);
}
/* ============================================
CALENDARIO LITÚRGICO
============================================ */
/* ============================================
RECORDATORIO DE DIFUNTOS
============================================ */
async function recordatorioDifuntos() {
const seccion = document.getElementById("seccion-recordatorio");
if (!seccion) return;
const hoy = new Date();
const mesActual = hoy.getMonth() + 1; // 1-12
const mmdd = String(mesActual).padStart(2, "0") + "-" + String(hoy.getDate()).padStart(2, "0");
const nombreMes = hoy.toLocaleDateString('es-ES', { month: 'long' });
// 1. Difuntos personales desde la API (usuario logueado) o localStorage
const usuarioGuardado = typeof getUsuario === 'function' ? getUsuario() : null;
let todosDifuntos = [];
if (usuarioGuardado) {
try {
const res = await fetch(`${API_BASE}/difuntos/personales`, {
headers: { 'Authorization': 'Bearer ' + (localStorage.getItem('token') || '') }
});
if (res.ok) {
todosDifuntos = await res.json();
// La API devuelve 'defuncion', igual que localStorage
}
} catch (e) { /* sin conexión */ }
}
// Fallback localStorage si no hay API o no hay usuario
if (todosDifuntos.length === 0) {
const clave = usuarioGuardado
? `difuntos_personales_${usuarioGuardado.id}`
: "difuntos_personales_anonimo";
todosDifuntos = JSON.parse(localStorage.getItem(clave) || "[]");
}
if (todosDifuntos.length === 0) return;
// 2. Filtrar los que tienen aniversario o cumpleaños en el mes actual
const delMes = todosDifuntos.filter(d => {
const nacMes = d.nacimiento && !d.nacimiento.includes('XXXX')
? parseInt(d.nacimiento.split('-')[1]) : null;
const defMes = d.defuncion && !d.defuncion.includes('XXXX')
? parseInt(d.defuncion.split('-')[1]) : null;
return nacMes === mesActual || defMes === mesActual;
});
if (delMes.length === 0) return;
// 3. Detectar aniversarios de hoy (dentro de los del mes)
const recordatorios = [];
delMes.forEach(d => {
if (d.nacimiento && !d.nacimiento.includes('XXXX')) {
const partes = d.nacimiento.split("-");
if (partes.length === 3 && partes[1] + "-" + partes[2] === mmdd) {
const anios = hoy.getFullYear() - parseInt(partes[0]);
recordatorios.push("🎂 Hoy habría sido el cumpleaños de " + d.nombre + " — " + anios + " años");
}
}
if (d.defuncion && !d.defuncion.includes('XXXX')) {
const partes = d.defuncion.split("-");
if (partes.length === 3 && partes[1] + "-" + partes[2] === mmdd) {
const anios = hoy.getFullYear() - parseInt(partes[0]);
recordatorios.push("🕯 Hoy es el " + anios + ".º aniversario del fallecimiento de " + d.nombre + "");
}
}
});
// 4. Construir HTML
seccion.style.display = "block";
let html = `
${r}
`).join(""); html += '"Dales, Señor, el descanso eterno y brille para ellos la luz perpetua."
'; html += '