In Memoriam: Remembering 46 Indigenous Defenders Who Were Murdered in 2025 in Latin America
11 Maret 2026jamie
‘;
document.body.appendChild(lightbox);
}
var closeBtn = document.getElementById(‘gp-close’);
var titleEl = document.getElementById(‘gp-title’);
var subEl = document.getElementById(‘gp-sub’);
var bodyEl = document.getElementById(‘gp-body’);
var prevBtn = document.getElementById(‘gp-prev’);
var nextBtn = document.getElementById(‘gp-next’);
function isOpen() {
return lightbox.getAttribute(‘aria-hidden’) === ‘false’;
}
function setOpen(open) {
lightbox.setAttribute(‘aria-hidden’, open ? ‘false’ : ‘true’);
document.body.classList.toggle(‘mem-modal-open’, open);
if (!open) bodyEl.innerHTML = ”;
}
function getCards() {
return Array.prototype.slice.call(document.querySelectorAll(‘.mem-card’));
}
var cards = getCards();
var currentIndex = -1;
var lastFocusEl = null;
function normalizeIndex(idx) {
if (!cards.length) return -1;
if (idx < 0) return cards.length – 1;
if (idx >= cards.length) return 0;
return idx;
}
function isPlaceholderImage(src) {
if (!src) return false;
return src.toLowerCase().indexOf(‘in-memoriam_0.png’) !== -1;
}
function buildBodyFromCard(card) {
var imgEl = card.querySelector(‘.mem-card-image img’);
var imgSrc = imgEl ? imgEl.getAttribute(‘src’) : ”;
var caption = card.getAttribute(‘data-caption’) || ”;
var descEl = card.querySelector(‘.mem-card-description’);
var descHtml = descEl ? descEl.innerHTML : ‘
Details coming soon.
‘;
var showImage = imgSrc && !isPlaceholderImage(imgSrc);
var imgBlock = ”;
if (showImage) {
imgBlock =
‘
‘;
}
return (
‘
‘
);
}
function applyImageLayout() {
var overlayImg = bodyEl.querySelector(‘.mem-overlay-image img’);
var overlayBox = bodyEl.querySelector(‘.mem-overlay-image’);
if (!overlayImg || !overlayBox) return;
function classify() {
overlayBox.classList.remove(‘portrait’, ‘landscape’);
if (overlayImg.naturalHeight > overlayImg.naturalWidth) {
overlayBox.classList.add(‘portrait’);
} else {
overlayBox.classList.add(‘landscape’);
}
}
if (overlayImg.complete) {
classify();
} else {
overlayImg.onload = classify;
}
}
function openModalAt(idx) {
cards = getCards();
if (!cards.length) return;
currentIndex = normalizeIndex(idx);
var card = cards[currentIndex];
if (!card) return;
var h3 = card.querySelector(‘.mem-card-text h3’);
var h4 = card.querySelector(‘.mem-card-text h4’);
var title = h3 ? (h3.innerText || ”).trim() : ”;
var sub = h4 ? (h4.innerText || ”).trim() : ”;
titleEl.textContent = title;
subEl.textContent = sub;
bodyEl.innerHTML = buildBodyFromCard(card);
bodyEl.scrollTop = 0;
applyImageLayout();
lastFocusEl = document.activeElement;
setOpen(true);
closeBtn.focus();
}
function closeModal() {
if (!isOpen()) return;
setOpen(false);
if (lastFocusEl && typeof lastFocusEl.focus === ‘function’) {
lastFocusEl.focus();
}
}
function openFromElement(el) {
cards = getCards();
var card = el.closest(‘.mem-card’);
var idx = cards.indexOf(card);
if (idx >= 0) openModalAt(idx);
}
document.addEventListener(‘click’, function (e) {
var openEl = e.target.closest(‘[data-mem-open]’);
if (openEl) {
e.preventDefault();
openFromElement(openEl);
return;
}
if (isOpen() && !e.target.closest(‘.gp-dialog’)) {
closeModal();
}
});
closeBtn.addEventListener(‘click’, function (e) {
e.preventDefault();
closeModal();
});
prevBtn.addEventListener(‘click’, function (e) {
e.preventDefault();
openModalAt(currentIndex – 1);
});
nextBtn.addEventListener(‘click’, function (e) {
e.preventDefault();
openModalAt(currentIndex + 1);
});
document.addEventListener(‘keydown’, function (e) {
if (!isOpen()) return;
if (e.key === ‘Escape’) {
e.preventDefault();
closeModal();
return;
}
if (e.key === ‘ArrowLeft’) {
e.preventDefault();
openModalAt(currentIndex – 1);
return;
}
if (e.key === ‘ArrowRight’) {
e.preventDefault();
openModalAt(currentIndex + 1);
return;
}
});
window.memOpenAt = openModalAt;
})();
cards.forEach(function(card) { var imageWrap = card.querySelector('.mem-card-image'); var titleEl = card.querySelector('.mem-card-text h3'); var descEl = card.querySelector('.mem-card-description');
if (!imageWrap || !titleEl || !descEl) return;
/* Avoid duplicating if script runs more than once */ if (imageWrap.querySelector('.mem-card-hover')) return;
var title = (titleEl.innerText || '').trim(); var fullText = (descEl.innerText || '').replace(/s+/g, ' ').trim();
/* Try a slightly longer excerpt first, then trim */ var excerptLength = 140; var excerpt = fullText;
if (excerpt.length > excerptLength) { excerpt = excerpt.slice(0, excerptLength);
/* trim back to last full word */ var lastSpace = excerpt.lastIndexOf(' '); if (lastSpace > 80) { excerpt = excerpt.slice(0, lastSpace); }
excerpt += '…'; }
var hover = document.createElement('div'); hover.className = 'mem-card-hover'; hover.innerHTML = '
‘;
imageWrap.appendChild(hover);
});
}
function escapeHtml(str) {
return str
.replace(/&/g, ‘&’)
.replace(//g, ‘>’)
.replace(/”/g, ‘”‘)
.replace(/’/g, ”’);
}
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, buildHoverExcerpts);
} else {
buildHoverExcerpts();
}
})();
