Connect with us

POLITICA

Uno por uno, cómo votaron los senadores el veto de Milei a la ley Garrahan

Published

on



Conteo de Votos y Hemiciclo

Uno por uno, así votaron los senadores el rechazo al veto de la Ley Garrahan

Advertisement

Advertisement


`
: `

Advertisement
foto-senador

`
}

${bloque}

`;
targetContainer.appendChild(card);
}

function createHemicicleSmall(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-senadores__hemiciclo.small’);
hemicycle.innerHTML = »; // Clear previous content.

Advertisement

const centerX = 300;
const baseY = 450;
const numberOfRows = 5;
// Array of seats per row (from outer to inner)
const seatsPerRow = [21, 18, 16, 12, 7];
const verticalOffset = 0;
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);
const totalVotes = nAfirmativo + nNegativo + nAbstencion + nAusente;

// Instead of percentage-based rounding, we’ll compute a per-row distribution
// using floor() and then distribute any remaining seats based on the remainders.
let rowSeatCounts = seatsPerRow.map((seatsInRow) => {
// Compute the exact (floating point) allocation for each category.
const exactAfirmativo = (nAfirmativo * seatsInRow) / totalSeats;
const exactNegativo = (nNegativo * seatsInRow) / totalSeats;
const exactAbstencion = (nAbstencion * seatsInRow) / totalSeats;
const exactAusente = (nAusente * seatsInRow) / totalSeats;
// Take floor values.
let rowAfirmativo = Math.floor(exactAfirmativo);
let rowNegativo = Math.floor(exactNegativo);
let rowAbstencion = Math.floor(exactAbstencion);
let rowAusente = Math.floor(exactAusente);
let assigned = rowAfirmativo + rowNegativo + rowAbstencion + rowAusente;
let diff = seatsInRow – assigned;
// Create an array of remainders along with category identifiers.
let remainders = [{
cat: «afirmativo»,
remainder: exactAfirmativo – rowAfirmativo
},
{
cat: «negativo»,
remainder: exactNegativo – rowNegativo
},
{
cat: «abstencion»,
remainder: exactAbstencion – rowAbstencion
},
{
cat: «ausente»,
remainder: exactAusente – rowAusente
}
];
// Sort descending by remainder.
remainders.sort((a, b) => b.remainder – a.remainder);
// Distribute the remaining seats one by one to the categories with the highest remainders.
while (diff > 0) {
for (let r of remainders) {
if (diff <= 0) break;
switch (r.cat) {
case «afirmativo»:
rowAfirmativo++;
break;
case «negativo»:
rowNegativo++;
break;
case «abstencion»:
rowAbstencion++;
break;
case «ausente»:
rowAusente++;
break;
}
diff–;
}
}
return {
afirmativo: rowAfirmativo,
negativo: rowNegativo,
abstencion: rowAbstencion,
ausente: rowAusente
};
});

// Now, using your inverted loop order (columns first, then rows)
const maxSeatsInRow = seatsPerRow[0]; // maximum seats in the outer row

Advertisement

// For each seat position (by column, then row), assign the color based on that row’s distribution.
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < numberOfRows; row++) {
if (col < seatsPerRow[row]) { // only if this row has a seat at this column
const seatsInThisRow = seatsPerRow[row];
const radius = 170 – row * (30 – verticalOffset);
const angleRange = Math.PI; // semicircle
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = centerX + radius * Math.cos(angle);
const y = baseY – radius * Math.sin(angle);

// For this row, assign colors in order:
// First use available «afirmativo», then «negativo», then «abstencion», then «ausente»
let colorClass=»color-empty»;
if (rowSeatCounts[row].afirmativo > 0) {
colorClass=»color-afirmativo»;
rowSeatCounts[row].afirmativo–;
} else if (rowSeatCounts[row].negativo > 0) {
colorClass=»color-negativo»;
rowSeatCounts[row].negativo–;
} else if (rowSeatCounts[row].abstencion > 0) {
colorClass=»color-abstencion»;
rowSeatCounts[row].abstencion–;
} else if (rowSeatCounts[row].ausente > 0) {
colorClass=»color-ausente»;
rowSeatCounts[row].ausente–;
}
const seat = document.createElement(‘div’);
seat.classList.add(‘seat’, colorClass);
seat.style.left = `${x}px`;
seat.style.top = `${y}px`;
hemicycle.appendChild(seat);
}
}
}

/* // Set the legend text (sin mostrar Ley Aprobada o no aprobada)
document.querySelector(‘#voto-summary’).innerHTML = `

Advertisement

Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}

Abstención: ${nAbstencion} |
Ausente: ${nAusente}

`; */

/* // — Update Legend —
const leyText = nAfirmativo > nNegativo ? «Ley Aprobada» : «Ley no aprobada»;
const resultsText=»shshs»;
document.querySelector(«#voto-summary»).innerHTML = leyText + resultsText; */

Advertisement

/*
// Set the legend text. Mayoría simple
const leyText = nAfirmativo > nNegativo ? ‘Ley Aprobada’ : ‘Ley no aprobada’;
document.querySelector(‘#voto-summary’).innerHTML = `

Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}

Abstención: ${nAbstencion} |
Ausente: ${nAusente}

` + ‘

Advertisement

‘ + leyText + ‘

‘; */

// Set the legend text. Dos tercios de los presentes (******EDITAR LEYENDA*****)
function votosNecesarios(presentes) {
return Math.ceil((2 / 3) * presentes);
}

Advertisement

const leyText = nAfirmativo >= (votosNecesarios(72 – nAusente)) ? ‘Aprobada’ : ‘Rechazada’;
document.querySelector(‘#voto-summary’).innerHTML = `

Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}

Abstención: ${nAbstencion} |
Ausente: ${nAusente}

` + ‘

Advertisement

‘ + leyText + ‘

‘;

}

Advertisement

// Creates the big hemiciclo visualization.
function createHemicicleBig(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-senadores__hemiciclo.big’);
hemicycle.innerHTML = »; // Clear previous content.

const centerX = 300;
const baseY = 450;
const numberOfRows = 5;
// Array of seats per row (outer to inner; total should be 257)
const seatsPerRow = [21, 18, 16, 11, 6];
const verticalOffset = 2;
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);

// Raw vote counts must sum to totalSeats (257)
const totalVotes = nAfirmativo + nNegativo + nAbstencion + nAusente;
if (totalVotes !== totalSeats) {
console.warn(«Total votes (» + totalVotes + «) do not equal total seats (» + totalSeats + «).»);
}

Advertisement

console.log(nAfirmativo, nNegativo, nAbstencion, nAusente, totalSeats, totalVotes);

// — Per-Row Distribution Using Absolute Counts —
// For each row, compute the exact allocation for each vote category based on its fraction of the total seats.
let rowSeatCounts = seatsPerRow.map(seatsInRow => {
const exactA = (nAfirmativo / totalSeats) * seatsInRow;
const exactN = (nNegativo / totalSeats) * seatsInRow;
const exactAb = (nAbstencion / totalSeats) * seatsInRow;
const exactAu = (nAusente / totalSeats) * seatsInRow;

let rowA = Math.floor(exactA);
let rowN = Math.floor(exactN);
let rowAb = Math.floor(exactAb);
let rowAu = Math.floor(exactAu);

Advertisement

let assigned = rowA + rowN + rowAb + rowAu;
let diff = seatsInRow – assigned;

// Create an array of remainders for each category.
let remainders = [{
cat: «afirmativo»,
rem: exactA – rowA
},
{
cat: «negativo»,
rem: exactN – rowN
},
{
cat: «abstencion»,
rem: exactAb – rowAb
},
{
cat: «ausente»,
rem: exactAu – rowAu
}
];
// Sort the remainders in descending order.
remainders.sort((a, b) => b.rem – a.rem);

// Distribute any leftover seats one by one.
while (diff > 0) {
for (let r of remainders) {
if (diff <= 0) break;
switch (r.cat) {
case «afirmativo»:
rowA++;
break;
case «negativo»:
rowN++;
break;
case «abstencion»:
rowAb++;
break;
case «ausente»:
rowAu++;
break;
}
diff–;
}
}
return {
afirmativo: rowA,
negativo: rowN,
abstencion: rowAb,
ausente: rowAu
};
});

Advertisement

// — Global Correction —
// Sum the allocated seats for each category across all rows.
let globalA = rowSeatCounts.reduce((sum, row) => sum + row.afirmativo, 0);
let globalN = rowSeatCounts.reduce((sum, row) => sum + row.negativo, 0);
let globalAb = rowSeatCounts.reduce((sum, row) => sum + row.abstencion, 0);
let globalAu = rowSeatCounts.reduce((sum, row) => sum + row.ausente, 0);

// For each category, if the global total is less than the raw count, add the missing seats to the outer row (row 0).
if (globalA < nAfirmativo) {
rowSeatCounts[0].afirmativo += (nAfirmativo – globalA);
}
if (globalN < nNegativo) {
rowSeatCounts[0].negativo += (nNegativo – globalN);
}
if (globalAb < nAbstencion) {
rowSeatCounts[0].abstencion += (nAbstencion – globalAb);
}
if (globalAu < nAusente) {
rowSeatCounts[0].ausente += (nAusente – globalAu);
}

// — Seat Placement Using Inverted Loop Order —
const maxSeatsInRow = seatsPerRow[0];
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < numberOfRows; row++) {
if (col < seatsPerRow[row]) { // Only process if this row has a seat at the current column.
const seatsInThisRow = seatsPerRow[row];
const radius = 300 – row * (55 – verticalOffset);
const angleRange = Math.PI; // semicircle
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = centerX + radius * Math.cos(angle);
const y = baseY – radius * Math.sin(angle);

Advertisement

// For the current row, assign the color in order: afirmativo, then negativo, then abstencion, then ausente.
let colorClass=»color-empty»;
if (rowSeatCounts[row].afirmativo > 0) {
colorClass=»color-afirmativo»;
rowSeatCounts[row].afirmativo–;
} else if (rowSeatCounts[row].negativo > 0) {
colorClass=»color-negativo»;
rowSeatCounts[row].negativo–;
} else if (rowSeatCounts[row].abstencion > 0) {
colorClass=»color-abstencion»;
rowSeatCounts[row].abstencion–;
} else if (rowSeatCounts[row].ausente > 0) {
colorClass=»color-ausente»;
rowSeatCounts[row].ausente–;
}

const seat = document.createElement(‘div’);
seat.classList.add(‘seat’, colorClass);
seat.style.left = `${x}px`;
seat.style.top = `${y}px`;
hemicycle.appendChild(seat);
}
}
}

}

Advertisement

// Go-to-top button functionality.
document.addEventListener(‘DOMContentLoaded’, function() {
const goToTopButton = document.querySelector(‘.votos-senadores__go-to-top’);
const targetElement = document.querySelector(‘.votos-senadores’);

goToTopButton.addEventListener(‘click’, function() {
targetElement.scrollIntoView({
behavior: ‘smooth’
});
});
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
goToTopButton.style.display = entry.isIntersecting ? ‘block’ : ‘none’;
});
}, {
root: null,
rootMargin: ‘0px’,
threshold: 0.1
});
observer.observe(targetElement);

// Attach the toggle listener to each vote button.
const toggleBtns = document.getElementsByClassName(‘votos-senadores__voto-btn’);
for (let i = 0; i < toggleBtns.length; i++) {
toggleBtns[i].addEventListener(‘click’, function() {
this.classList.toggle(‘active’);
const panel = this.nextElementSibling;
panel.style.maxHeight = panel.style.maxHeight ? null : ‘14000px’;
});
}

Advertisement

// Now simulate a click on each button from within DOMContentLoaded.
// This will trigger the listener and expand each panel on load.
for (let i = 0; i < toggleBtns.length; i++) {
toggleBtns[i].click();
}

});

Advertisement
Advertisement

POLITICA

Con Milei y Bullrich: a qué hora se presenta el Nuevo Código Penal hoy

Published

on



Este jueves 2 de octubre el presidente Javier Milei presentará el nuevo Código Penal. Lo hará desde el Complejo Penitenciario Federal I, ubicado en Ezeiza, junto a la ministra de Seguridad Nacional, Patricia Bullrich y otros funcionarios nacionales. En ese sentido, muchas personas están interesadas en escuchar lo que dice al respecto y se preguntan a qué hora es el anuncio.

La presentación del nuevo Código Penal será en el Penal de EzeizaRicardo Pristupluk – Archivo

La iniciativa introduce cambios en la libertad condicional, los delitos patrimoniales, el crimen organizado y las manifestaciones. Estas modificaciones reemplazaría el actual texto vigente desde 1921, —más de 100 años—. Se pretende con la norma dejar de lado las viejas conductas ya no penadas, aplicar nuevas sanciones y hacer congruentes las penas.

Advertisement

Según se informó desde el Gobierno Nacional, la presentación del nuevo Código Penal se hará esta tarde desde las 17. Además de Javier Milei y Patrica Bullrich, se espera que estén presentes el ministro de Justicia, Mariano Cúneo Libarona, y el camarista Mariano Borinsky, que fue el vicepresidente de la Comisión de Reforma del Código Penal 2024.

Para este acto, el mismo mandatario fue el que eligió el Penal de Ezeiza como el lugar para la presentación. Esto fue porque es un mensaje simbólico de que “el que las hace las paga”, una de las consignas del Gobierno que suele repetir la ministra Bullrich.

Los ministros Cúneo Libarona y Patricia Bullrich acompañarán a Javier Milei en el actoMauro V. Rizzi

La iniciativa busca restringir la libertad condicional y establece el decomiso anticipado de bienes producto del delito a favor del Estado. Además, tiene como objetivo impulsar la legítima defensa de las fuerzas de seguridad y el endurecimiento de penas en casos de reiterancia delictiva y reincidencia.

Advertisement

El texto también actualiza la redacción y las penas para los delitos contra la integridad sexual, sanciones más severas para la tenencia y distribución de material de abuso infantil, el grooming y el abuso sexual.

En tanto, plantea regulaciones específicas sobre inteligencia artificial en la comisión de estos delitos. También se agravan los castigos para los delitos de corrupción, lavado de dinero y financiamiento de terrorismo internacional.

Se suman sanciones por delitos en manifestaciones socialestadeo bourbon

Por otro lado, incluye duros castigos para quienes fomenten la ejecución de delitos en el deporte y en eventos masivos. Asimismo, se agregan delitos relacionados con manifestaciones, principalmente a los que involucren violencia y entorpecimiento del tránsito.

Advertisement

A continuación, estos son algunos de los puntos más destacados del nuevo Código Penal que presentará Javier Milei esta tarde:

Este jueves 2 de octubre el presidente Javier Milei presentará el nuevo Código Penal,Agenda,Javier Milei,Patricia Bullrich,,Domingo. Cuándo son las elecciones de octubre,,Dónde voto en Buenos Aires. Consultá el padrón definitivo de las elecciones de octubre,,Legislativas Cómo es la Boleta Única de Buenos Aires que se usará en las elecciones,Agenda,,Segunda vuelta. Cuándo es el balotaje en Bolivia para definir al próximo presidente,,Salas adheridas. Ya empezó la Fiesta de Cine en el que se pueden ver películas desde $4000,,BUP. Cómo es la Boleta Única de Santa Fe en las elecciones nacionales

Advertisement
Continue Reading

POLITICA

Sería inminente un video de José Luis Espert para explicar la transferencia por USD 200 mil que recibió de una empresa vinculada a Fred Machado

Published

on



José Luis Espert decidió grabar un video para explicar la transferencia por 200 mil dólares que recibió por parte de una empresa vinculada a Fred Machado, el empresario detenido por una causa de narcotráfico. La decisión se tomó luego de la participación del diputado nacional en el programa de Pablo Rossi, por A24, en el que no pudo responder si era cierto o no que había recibido el dinero.

Según pudo saber Infobae, el video se publicará antes de la medianoche y está siendo supervisado por el ala política del Gobierno. Si bien en Casa Rosada siempre existió la decisión de hacer un mensaje que clarifique la situación, luego de que el periodista Hugo Alconada Mon publicara en La Nación un artículo que muestra un documento que probaría la transferencia por USD 200 mil, decidieron cambiar el tono del mensaje.

Advertisement

Espert explicará en el video que efectivamente recibió el dinero, pero dirá que lo declaró en el mismo momento en el que se hizo la transferencia. A pesar de eso, en Casa Rosada varios funcionarios descreen del diputado y consideran que debería renunciar a su candidatura, aunque admiten que, una vez oficializadas las listas, no pueden forzarlo a tomar esa decisión.

Este punto es clave para el futuro de la postulación de Espert. Aunque un sector del armado libertario quiera que no encabece la boleta en la provincia de Buenos Aires, la ley indica que la decisión de renunciar es personal y no pueden obligarlo a bajarse. Por eso, el economista insistió con realizar un video explicando su versión de los hechos y mantener la candidatura.

Todo se precipitó luego de la nota de La Nación que expuso el documento que confirmaría la transferencia por 200 mil dólares. Según explica el artículo, el registro quedó documentado en la contabilidad oficial del Bank of America, según consta en los archivos judiciales del Estado de Texas. Este movimiento financiero, fechado el 22 de enero de 2020, fue incorporado como prueba en el proceso que concluyó con la condena de Debra Mercer-Erwin, socia de Federico “Fred” Machado, acusado en Estados Unidos de fraude, conspiración para traficar drogas ilícitas y lavado de dinero. El documento, que forma parte del expediente criminal “USA v. Mercer-Erwin et al.”, fue admitido como evidencia clave en el juicio celebrado en 2023.

Advertisement

El dinero transitó por diversas entidades, incluyendo la plataforma de criptomonedas OKX, la banca digital Cash Pro del Bank of America, Citibank y Morgan Stanley, hasta llegar a su destino final. La operación fue ejecutada por Wright Brothers Aircraft Title Inc, empresa de Mercer-Erwin cuya contabilidad gestionaba el Bank of America.

Noticia en Desarrollo

Advertisement
Continue Reading

POLITICA

Un sindicalista salteño que estuvo 30 años sin trabajar fue obligado a jubilarse: “La ley es igual para todos”

Published

on



El sindicalista Pedro Serrudo, de 77 años, que se desempeñaba como secretario general de la Unión de Trabajadores Municipales (UTM) en la ciudad de Salta, fue obligado a optar por la jubilación tras revelarse que hacía 30 años que el hombre no se presentaba a trabajar porque estaba con licencia y seguía cobrando como trabajador municipal en la planta permanente.

La decisión administrativa fue tomada por el intendente de la capital salteña, Emiliano Durand -aliado del gobernador Gustavo Sáenz– mediante un decreto en el que hacía énfasis en que Serrudo cumplía los años de aportes necesarios para empezar con los trámites jubilatorios (45 en el UTM y 50 en total), y ratificada por un fallo judicial que resolvió que sea excluido de la tutela sindical.

Advertisement

El decreto sostiene que “el empleo público, como todo derecho, no es absoluto ni vitalicio” y aclara que el retiro entrará en vigencia en cuanto haya accedido a la prestación previsional. En ese momento, se explica, habrá cesado legalmentesu carrera administrativa, según informó El Tribuno.

“Él no quiere irse, pero acá la ley es igual para todos”, enfatizó el exsenador provincial, a través de un video publicado en redes sociales. Y aseguró: “No es un castigo ni es contra nadie”. “Es hacer cumplir la ley. Es terminar los ciclos, hacer que la municipalidad y la ciudad avancen. Acá no hay privilegios. Nadie es dueño de la ciudad ni de la municipalidad (…) Esto es cuidar el patrimonio de los salteños”, esgrimió.

Advertisement

En junio de este año, fue la jueza Graciela Moreno, del Juzgado Contencioso Administrativo de Salta, la encargada de definir que Serrudo debía concluir su trabajo al frente del UTM tras haber superado los años de aporte y aclarando que no podía valerse de su condición de “representante gremial” para mantenerse en el puesto forma indefinida.

Según consignó El Tribuno, entre los fundamentos de la norma dictada por Moreno se hacía hincapié en que “la exclusión de la tutela sindical no tiene carácter persecutorio, sino que obedece a una causal objetiva, de carácter biológico, vinculada a la extinción natural de la relación laboral”.

No obstante, se especificó que la decisión no implica un acto “antisindical”, sino que se busca hacer prevalecer “las normas previsionales vigentes” y que se respetaría su mandato hasta 2026 y 2027 mientras avance su jubilación. “Se pone fin a una relación laboral que ha alcanzado el límite legal y biológico”, aclara.

Advertisement

El sindicalista, que integraba el síndico desde hace 50 años, cuestionó la validez de las resoluciones y se amparó en sus “mandatos sindicales” para intentar mantenerse al frente de la organización. Sin embargo, su descargo fue rechazado por la Procuración General de la Municipalidad el pasado 30 de septiembre y se ratificó la sentencia.

El punto clave del fallo judicial fue que, según figuraba en las actas del UTM, Serrudo hacía usufructo de una “licencia gremial con goce de haberes desde el año 1993”. Lo que que significa que era considerado empleado municipal pese a que no asistía a su lugar de trabajo, desde ese entonces.

Cabe señalar, que en 2013, el sindicalista ya había sido intimado para que iniciara los trámites jubilatorios. Más de 10 años después, la orden no había sido cumplida, a pesar de haber sido notificado en su domicilio al respecto. Al haberse negado es que se inicio la acción judicial.

Advertisement

Tras el fallo, Serrudo realizó un manifestación en el Centro Cívico Municipal, junto con trabajadores del sindicato, expresando su rechazo a la decisión por la que concluirá con sus 50 años como trabajador de planta permanente en Salta y más de tres décadas al frente de la UTM.


El Tribuno.,#Salta,pic.twitter.com/uTIYn0RG8k,October 2, 2025,Salta,Conforme a,Salta,,Jubilaciones. Se suman rechazos judiciales a una ley de movilidad de haberes: qué dice un nuevo fallo,,»Me llevó 38 años». Tiene cerdos negros y logró un jamón que da que hablar por su sabor,,Nacieron trigemelas en Salta. Un parto que ocurre uno en un millón y otros casos llamativos en el mismo hospital

Advertisement
Continue Reading

Tendencias