document.addEventListener("DOMContentLoaded", function () {
/* ---------------------------------------------------------------
FERIAS JUDICIALES — SCBA
Fuente: www.scba.gov.ar/guia/suspensiones.asp
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.
---------------------------------------------------------------
CORRECCIONES respecto a versión anterior:
- 2021 verano: agregada (01/01–31/01)
- 2022 invierno: corregida a 18/07 (confirmado)
- 2023 invierno: fin corregido a 28/07
- 2024 invierno: fin corregido a 26/07 (confirmado)
- 2026 invierno: agregada 20/07 al 31/07 (Ac. 4229/26)
--------------------------------------------------------------- */
var FERIAS = [
// 2021
{i:"2021-01-01", f:"2021-01-31", d:"Feria de Verano 2021"},
{i:"2021-07-19", f:"2021-07-30", d:"Feria de Invierno 2021"},
// 2022
{i:"2022-01-01", f:"2022-01-31", d:"Feria de Verano 2022"},
{i:"2022-07-18", f:"2022-07-31", d:"Feria de Invierno 2022"}, // confirmado 18/07
// 2023
{i:"2023-01-02", f:"2023-01-31", d:"Feria de Verano 2023"},
{i:"2023-07-17", f:"2023-07-28", d:"Feria de Invierno 2023"},
// 2024
{i:"2024-01-01", f:"2024-01-31", d:"Feria de Verano 2024"},
{i:"2024-07-15", f:"2024-07-26", d:"Feria de Invierno 2024"},
// 2025
{i:"2025-01-01", f:"2025-01-31", d:"Feria de Verano 2025"},
{i:"2025-07-21", f:"2025-08-01", d:"Feria de Invierno 2025"},
// 2026
{i:"2026-01-01", f:"2026-01-31", d:"Feria de Verano 2026"},
{i:"2026-07-20", f:"2026-07-31", d:"Feria de Invierno 2026"}, // Ac. 4229/26
];
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 =
"