document.addEventListener("DOMContentLoaded", function () {
/* ---------------------------------------------------------------
FERIAS JUDICIALES — SCBA
Fuente: hoja "feria judicial" del listado de expedientes.
Actualizar agregando nuevas filas al array según acordadas SCBA.
IMPORTANTE: Solo se descuentan ferias cuyo INICIO sea
estrictamente posterior a la fecha del último acto procesal.
--------------------------------------------------------------- */
var FERIAS = [
{i: "2021-07-19", f: "2021-08-01", d: "Feria Judicial de Invierno SCBA 2021"},
{i: "2022-01-01", f: "2022-01-31", d: "Feria Judicial de Verano SCBA 2022"},
{i: "2022-07-18", f: "2022-07-31", d: "Feria Judicial de Invierno SCBA 2022"},
{i: "2023-01-01", f: "2023-01-31", d: "Feria Judicial de Verano SCBA 2023"},
{i: "2023-07-17", f: "2023-07-30", d: "Feria Judicial de Invierno SCBA 2023"},
{i: "2024-01-01", f: "2024-01-31", d: "Feria Judicial de Verano SCBA 2024"},
{i: "2024-07-15", f: "2024-07-28", d: "Feria Judicial de Invierno SCBA 2024"},
{i: "2025-01-01", f: "2025-01-31", d: "Feria Judicial de Verano SCBA 2025"},
{i: "2025-07-21", f: "2025-08-01", d: "Feria Judicial de Invierno SCBA 2025"},
{i: "2026-01-01", f: "2026-01-31", d: "Feria Judicial de Verano SCBA 2026"}
/* Agregar aquí la feria de invierno 2026 cuando se publique la acordada */
];
var PLAZO = 180;
function toDate(str) {
var p = str.split("-");
return new Date(parseInt(p[0]), parseInt(p[1]) - 1, parseInt(p[2]));
}
function diffDias(a, b) {
return Math.round((b - a) / 86400000);
}
function formatFecha(d) {
return d.toLocaleDateString("es-AR", {
weekday: "long", day: "numeric", month: "long", year: "numeric"
}).toUpperCase();
}
function calcCaducidad() {
var valActo = document.getElementById("cad_acto").value;
var valConsulta = document.getElementById("cad_consulta").value;
if (!valActo || !valConsulta) return;
var fechaActo = toDate(valActo);
var fechaConsulta = toDate(valConsulta);
/* Sumar días de ferias cuyo inicio es POSTERIOR al último acto */
var totalFeriasDias = 0;
var feriasAplicadas = [];
for (var k = 0; k < FERIAS.length; k++) {
var fer = FERIAS[k];
var inicio = toDate(fer.i);
var fin = toDate(fer.f);
if (inicio > fechaActo) {
var duracion = diffDias(inicio, fin) + 1; /* inclusive */
totalFeriasDias += duracion;
feriasAplicadas.push({
d: fer.d,
desde: inicio.toLocaleDateString("es-AR"),
hasta: fin.toLocaleDateString("es-AR"),
dias: duracion
});
}
}
/* E22 = DAYS(consulta, acto) - ferias - 1 */
var diasBrutos = diffDias(fechaActo, fechaConsulta);
var diasEfect = diasBrutos - totalFeriasDias - 1;
/* E23 = consulta + (180 - E22) */
var diasRestantes = PLAZO - diasEfect;
var fechaCaducidad = new Date(fechaConsulta);
fechaCaducidad.setDate(fechaCaducidad.getDate() + diasRestantes);
var caducado = diasEfect >= PLAZO;
/* ── RESULTADO PRINCIPAL ─────────────────────────────── */
var resDiv = document.getElementById("cad_res");
var estadoDiv = document.getElementById("cad_estado");
var fechaDiv = document.getElementById("cad_fecha");
var detDiv = document.getElementById("cad_det");
var listDiv = document.getElementById("cad_ferias_list");
var ferBox = document.getElementById("cad_ferias_box");
if (caducado) {
estadoDiv.style.color = "#c0392b";
estadoDiv.innerHTML =
"⚠ SE PUEDE SOLICITAR LA CADUCIDAD DE INSTANCIA";
fechaDiv.innerHTML =
"El plazo venció el:
" +
"" +
formatFecha(fechaCaducidad) + "";
} else {
estadoDiv.style.color = "#002147";
estadoDiv.innerHTML =
"FALTAN " + diasRestantes + " DÍA" +
(diasRestantes === 1 ? "" : "S") +
" PARA QUE EL PLAZO DE CADUCIDAD SE ENCUENTRE VENCIDO";
fechaDiv.innerHTML =
"Fecha de vencimiento:
" +
"" +
formatFecha(fechaCaducidad) + "";
}
/* Detalle numérico */
detDiv.innerHTML =
"