Calendar

Upcoming Activities

This section updates automatically from the Activities Calendar managed in Website Admin.

No activities are scheduled yet.
\n ';modal.querySelector("[data-close]").onclick=()=>modal.remove();modal.onclick=e=>{if(e.target===modal)modal.remove()}}function render(host){if(!items.length){host.innerHTML='
'+esc(t("No activities are scheduled yet.","Aún no hay actividades programadas."))+'
';return}const y=viewDate.getFullYear(),m=viewDate.getMonth(),first=new Date(y,m,1),start=new Date(y,m,1-first.getDay()),monthName=viewDate.toLocaleDateString(currentLang()==="es"?"es-ES":undefined,{month:"long",year:"numeric"});const weekdays=currentLang()==="es"?["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"]:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];let cells="";for(let n=0;n<42;n++){const d=new Date(start);d.setDate(start.getDate()+n);const key=dateKey(d),dayItems=items.filter(i=>i.startDate===key);cells+='
'+d.getDate()+''+dayItems.map(i=>'').join("")+'
'}host.innerHTML='
'+esc(monthName)+'
'+weekdays.map(w=>''+w+'').join("")+'
'+cells+'
';host.querySelector("[data-cal-prev]").onclick=()=>{viewDate=new Date(y,m-1,1);document.querySelectorAll("[data-mwb-activities-calendar]").forEach(render)};host.querySelector("[data-cal-next]").onclick=()=>{viewDate=new Date(y,m+1,1);document.querySelectorAll("[data-mwb-activities-calendar]").forEach(render)};host.querySelector("[data-cal-today]").onclick=()=>{const now=new Date();viewDate=new Date(now.getFullYear(),now.getMonth(),1);document.querySelectorAll("[data-mwb-activities-calendar]").forEach(render)};host.querySelectorAll("[data-event-id]").forEach(btn=>btn.onclick=()=>{const item=items.find(i=>i.id===btn.dataset.eventId);if(item)showEvent(item)})}function populate(select){const current=select.value;select.innerHTML=''+items.filter(i=>i.registrationEnabled!==false).map(i=>'').join("");if(current&&[...select.options].some(o=>o.value===current))select.value=current}function rerender(){document.querySelectorAll("[data-mwb-activities-calendar]").forEach(render);document.querySelectorAll("select[data-mwb-activity-select]").forEach(populate)}async function load(){try{const u=new URL(endpoint);u.searchParams.set("projectId",projectId);const r=await fetch(u,{cache:"no-store"}),d=await r.json().catch(()=>({}));if(!r.ok||d.success===false)throw new Error(d.error||t("Activities could not be loaded.","No se pudieron cargar las actividades."));items=Array.isArray(d.activities)?d.activities:[];rerender()}catch(e){document.querySelectorAll("[data-mwb-activities-calendar]").forEach(h=>h.innerHTML='
'+esc(t("Activities could not be loaded.","No se pudieron cargar las actividades."))+'
')}}window.addEventListener("mwb:languagechange",rerender);window.addEventListener("mwb:language-change",rerender);if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",load,{once:true});else load()})();