{"id":232821,"date":"2026-05-17T10:49:47","date_gmt":"2026-05-17T10:49:47","guid":{"rendered":"https:\/\/www.purecostablanca.com\/agenda-costa-blanca\/"},"modified":"2026-05-31T08:43:00","modified_gmt":"2026-05-31T08:43:00","slug":"agenda-costa-blanca","status":"publish","type":"page","link":"https:\/\/www.purecostablanca.com\/es\/agenda-costa-blanca\/","title":{"rendered":"Agenda Costa Blanca"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1560px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><h1>Calendario de la Costa Blanca\/calendario<\/h1>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1560px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Palanquin:wght@400;600&display=swap\" rel=\"stylesheet\">\n<style>\n#cv-widget * { box-sizing: border-box; margin: 0; padding: 0; font-family: 'Segoe UI', Arial, sans-serif; }\n#cv-widget { width: 100%; max-width: 100%; color: #1a1a2e; }\n#cv-filters { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 24px; align-items: flex-end; }\n#cv-filters label { display: block; font-size: 12px; font-weight: 400; color: #000; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 5px; font-family: Verdana, Geneva, sans-serif; }\n#cv-filters select { height: 42px; padding: 0 40px 0 12px; border: 1.5px solid #e5e7eb; border-radius: 8px; font-size: 14px; color: #1a1a2e; background: #fff url(\"data:image\/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgMTIgOCc+PHBhdGggZD0nTTEgMWw1IDUgNS01JyBzdHJva2U9JyM2NjYnIHN0cm9rZS13aWR0aD0nMS41JyBmaWxsPSdub25lJyBzdHJva2UtbGluZWNhcD0ncm91bmQnLz48L3N2Zz4=\") no-repeat right 14px center; outline: none; min-width: 160px; appearance: none; -webkit-appearance: none; cursor: pointer; }\n#cv-filters input[type=\"date\"] { height: 42px; padding: 0 12px; border: 1.5px solid #e5e7eb; border-radius: 8px; font-size: 14px; color: #1a1a2e; background: #fff; outline: none; min-width: 140px; }\n#cv-filters select:focus, #cv-filters input[type=\"date\"]:focus { border-color: #3d6186; }\n\n#cv-reset-btn { height: 42px; padding: 0 28px; background: #c5a059; color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 400; cursor: pointer; transition: background 0.2s; font-family: Verdana, Geneva, sans-serif; white-space: nowrap; }\n#cv-reset-btn:hover { background: #3d6186; }\n#cv-count-bar { font-size: 13px; color: #6b7280; margin-bottom: 16px; min-height: 20px; }\n#cv-grid { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)) !important; gap: 20px !important; }\n.cv-card { background: #fff !important; border-radius: 12px !important; overflow: visible !important; box-shadow: 0 2px 8px rgba(0,0,0,0.08) !important; border: 1px solid #e5e7eb !important; transition: transform 0.2s, box-shadow 0.2s !important; cursor: default !important; display: flex !important; flex-direction: column !important; color: inherit !important; position: relative !important; }\n.cv-card:hover { transform: translateY(-3px) !important; box-shadow: 0 8px 24px rgba(0,0,0,0.13) !important; }\n.cv-card-img-wrap { position: relative !important; display: block !important; }\n.cv-card-img { width: 100%; height: 160px; object-fit: cover; display: block; border-radius: 12px 12px 0 0; filter: grayscale(100%); transition: filter 0.3s ease; }\n.cv-card-img-wrap .cv-badge { position: absolute !important; bottom: 10px !important; right: 10px !important; box-shadow: 0 2px 6px rgba(0,0,0,0.2) !important; }\n.cv-card:hover .cv-card-img { filter: grayscale(0%); }\n.cv-card-placeholder { width: 100%; height: 160px; background: #e8f1fb; display: flex; align-items: center; justify-content: center; font-size: 36px; border-radius: 12px 12px 0 0; }\n.cv-card-body { padding: 12px 14px 14px 14px !important; display: flex !important; flex-direction: column !important; flex: 1 !important; min-height: 0 !important; }\n.cv-card-location { font-size: 12px !important; font-weight: 600 !important; color: #7c8d6e !important; text-transform: uppercase !important; letter-spacing: 0.04em !important; margin-bottom: 4px !important; }\n.cv-card-title { font-size: 14px !important; font-weight: 600 !important; color: #3d6186 !important; line-height: 1.3 !important; margin-bottom: 6px !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; }\n.cv-card-date { font-size: 12px !important; color: #A5A5A5 !important; margin-bottom: 8px !important; }\n.cv-badge { display: inline-block !important; padding: 5px 14px !important; border-radius: 20px !important; font-size: 12px !important; font-weight: 600 !important; line-height: 1.4 !important; }\n.cv-cat-event    { background: #e8f1fb !important; color: #0057a8 !important; }\n.cv-cat-market   { background: #e0f2f1 !important; color: #00695c !important; }\n.cv-cat-gastro   { background: #fce4ec !important; color: #c62828 !important; }\n.cv-cat-festival { background: #fff3e0 !important; color: #e65100 !important; }\n.cv-cat-culture  { background: #f3e5f5 !important; color: #7b1fa2 !important; }\n.cv-cat-sport    { background: #e8f5e9 !important; color: #2e7d32 !important; }\n.cv-cat-workshop { background: #fef9c3 !important; color: #854d0e !important; }\n.cv-cat-fair     { background: #ede9fe !important; color: #5b21b6 !important; }\n.cv-cat-leisure  { background: #e8eaf6 !important; color: #283593 !important; }\n\n.cv-card-desc-wrap { margin-top: 8px !important; flex: 1 !important; }\n.cv-card-desc { font-size: 12px !important; color: #555 !important; line-height: 1.5 !important; display: -webkit-box !important; -webkit-line-clamp: 4 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; }\n.cv-card-desc.expanded { display: block !important; -webkit-line-clamp: unset !important; }\n.cv-readmore { background: none !important; border: none !important; color: #c5a059 !important; font-size: 12px !important; font-weight: 400 !important; cursor: pointer !important; padding: 4px 0 0 0 !important; display: block !important; font-family: Verdana, Geneva, sans-serif !important; }\n.cv-readmore:hover { color: #3d6186 !important; }\n#cv-status { text-align: center; padding: 40px; color: #6b7280; font-size: 15px; }\n#cv-pagination { display: flex; justify-content: center; gap: 8px; margin-top: 32px; flex-wrap: wrap; }\n.cv-page-btn { width: 38px; height: 38px; border: 1.5px solid #e5e7eb; background: #fff; border-radius: 8px; font-size: 14px; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #1a1a2e; transition: all 0.2s; }\n.cv-page-btn:hover:not(:disabled) { border-color: #3d6186; color: #3d6186; }\n.cv-page-btn.active { background: #3d6186; border-color: #3d6186; color: #fff; font-weight: 600; }\n.cv-page-btn:disabled { opacity: 0.35; cursor: default; }\n@media (max-width: 600px) {\n  #cv-filters { flex-direction: column; }\n  #cv-filters select, #cv-filters input { width: 100%; min-width: unset; }\n}\n<\/style>\n\n<div id=\"cv-widget\">\n  <div id=\"cv-filters\">\n    <div>\n      <label for=\"cv-place\">Municipality<\/label>\n      <select id=\"cv-place\"><option value=\"\">All municipalities<\/option><\/select>\n    <\/div>\n    <div>\n      <label for=\"cv-start\">From<\/label>\n      <input type=\"date\" id=\"cv-start\">\n    <\/div>\n    <div>\n      <label for=\"cv-end\">To<\/label>\n      <input type=\"date\" id=\"cv-end\">\n    <\/div>\n\n    <button id=\"cv-reset-btn\">Reset<\/button>\n  <\/div>\n  <div id=\"cv-count-bar\"><\/div>\n  <div id=\"cv-grid\"><\/div>\n  <div id=\"cv-status\">Loading events...<\/div>\n  <div id=\"cv-pagination\"><\/div>\n<\/div>\n\n<script>\n(function(){\n  function cvImgErr(el){ el.style.display='none'; if(el.nextElementSibling) el.nextElementSibling.style.display='flex'; }\n  var PROXY = 'https:\/\/costa-blanca-proxy.rick-bee.workers.dev';\n  var PAGE_SIZE = 16;\n  var PROVINCE = 'Alacant\/Alicante';\n\n  \/\/ Taal\n  var lang = 'en';\n  var p = window.location.pathname.split('\/').filter(Boolean);\n  if(p.length && ['en','nl','es'].includes(p[0])) lang = p[0];\n\n  var T = {\n    en: { allPlaces:'All municipalities', from:'From', to:'To', search:'Search', placeholder:'Search events...', reset:'Reset', loading:'Loading events...', found:function(n){ return n+' event'+(n===1?'':'s')+' found'; }, notFound:'No events found for these filters.', error:'Could not load events.' },\n    nl: { allPlaces:'Alle gemeenten', from:'Vanaf', to:'Tot', search:'Zoeken', placeholder:'Zoek evenementen...', reset:'Reset', loading:'Evenementen laden...', found:function(n){ return n+' evenement'+(n===1?'':'en')+' gevonden'; }, notFound:'Geen evenementen gevonden.', error:'Kon evenementen niet laden.' },\n    es: { allPlaces:'Todos los municipios', from:'Desde', to:'Hasta', search:'Buscar', placeholder:'Buscar eventos...', reset:'Restablecer', loading:'Cargando eventos...', found:function(n){ return n+' evento'+(n===1?'':'s')+' encontrado'+(n===1?'':'s'); }, notFound:'No se encontraron eventos.', error:'No se pudieron cargar los eventos.' }\n  }[lang];\n\n  var allEvents = [], filtered = [], currentPage = 1;\n\n  var elGrid    = document.getElementById('cv-grid');\n  var elStatus  = document.getElementById('cv-status');\n  var elPagin   = document.getElementById('cv-pagination');\n  var elCount   = document.getElementById('cv-count-bar');\n  var selPlace  = document.getElementById('cv-place');\n  var inpStart  = document.getElementById('cv-start');\n  var inpEnd    = document.getElementById('cv-end');\n  var btnReset  = document.getElementById('cv-reset-btn');\n\n  \/\/ Labels\n  document.querySelector('label[for=\"cv-place\"]').textContent  = T.allPlaces.replace('All ','').replace('Alle ','').replace('Todos los ','');\n  document.querySelector('label[for=\"cv-start\"]').textContent  = T.from;\n  document.querySelector('label[for=\"cv-end\"]').textContent    = T.to;\n  btnReset.textContent  = T.reset;\n  selPlace.options[0].textContent = T.allPlaces;\n  elStatus.textContent  = T.loading;\n\n  function todayStr(){ return new Date().toISOString().split('T')[0]; }\n  function in90Str(){ var d=new Date(); d.setDate(d.getDate()+90); return d.toISOString().split('T')[0]; }\n  function toMs(str){ return new Date(str+'T00:00:00').getTime(); }\n  function toEndMs(str){ return new Date(str+'T23:59:59').getTime(); }\n\n  function fmtDate(ms){\n    if(!ms) return '';\n    var d = new Date(ms);\n    var loc = lang==='nl' ? 'nl-NL' : lang==='es' ? 'es-ES' : 'en-GB';\n    return d.toLocaleDateString(loc, {day:'2-digit', month:'2-digit', year:'numeric'});\n  }\n\n  function slugToName(slug){\n    if(!slug) return '';\n    return slug.replace(\/-\/g,' ').replace(\/\\b\\w\/g,function(c){ return c.toUpperCase(); });\n  }\n\n  \/\/ POST via worker proxy\n  async function cvPost(params){\n    var body = Object.entries(params).map(function(kv){\n      return encodeURIComponent('_eventssearch_'+kv[0])+'='+encodeURIComponent(kv[1]);\n    }).join('&');\n    var apiRoute = (lang === 'es') ? '\/cv\/es\/' : '\/cv\/en\/';\n    var r = await fetch(PROXY+apiRoute, {\n      method:'POST',\n      headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n      body: body\n    });\n    return r.json();\n  }\n\n  \/\/ Alle Alicante events ophalen (paginering: 9 per keer)\n  async function loadAllEvents(dateInit, dateEnd){\n    var results = [], offset = 0, total = 9999;\n    \/\/ API werkt met paginanummers (item_number_value = paginanummer)\n    var page = 1;\n    var totalPages = 999;\n    while(page <= totalPages){\n      var data = await cvPost({\n        type_of_request: 'events',\n        item_number_value: page,\n        date_init: dateInit,\n        date_end:  dateEnd,\n        isFirstCalled: page===1 ? 'true' : 'false'\n      });\n      if(!data || !data.events || !data.events.length) break;\n      var count = data.summary_count || 0;\n      totalPages = Math.ceil(count \/ 9);\n      data.events.forEach(function(ev){\n        if(ev.provincia === 'alacant-alicante') results.push(ev);\n      });\n      page++;\n      if(page > totalPages) break;\n    }\n    console.log('Alicante events gevonden: '+results.length);\n    \/\/ Dedupliceer op id\n    var seen = {}, unique = [];\n    results.forEach(function(ev){\n      if(!seen[ev.id]){ seen[ev.id]=1; unique.push(ev); }\n    });\n    \/\/ Filter: alleen events weggooien waarvan end_date al voorbij is\n    var now = Date.now();\n    unique = unique.filter(function(ev){\n      var end = ev.end_date || 0;\n      return end >= now;\n    });\n    unique.sort(function(a,b){ return (a.start_date||0)-(b.start_date||0); });\n    return unique;\n  }\n\n  function applyFilters(){\n    var place = selPlace.value;\n    var q = '';\n    filtered  = allEvents.filter(function(ev){\n      if(place && ev.municipio !== place) return false;\n\n      return true;\n    });\n    currentPage = 1;\n    render();\n  }\n\n  function shortDesc(text){\n    if(!text) return '';\n    text = text.replace(\/<[^>]+>\/g,'').replace(\/\\s+\/g,' ').trim();\n    var m = text.match(\/[^.!?]+[.!?]+\/g);\n    if(m && m.length) return m.slice(0,3).join(' ').trim();\n    return text.length>200 ? text.substring(0,200)+'\u2026' : text;\n  }\n\n  function guessCategory(title, desc){\n    var t = (title+' '+(desc||'')).toLowerCase();\n    if(\/market|markt|mercado|flea|rastro|craft fair\/.test(t))\n      return {cls:'cv-cat-market', label:'Market'};\n    if(\/gastro|tapas|wine|food|cuisine|culinar|restaur|cocina|gastronom|tasting|degustac|recipe|chef\/.test(t))\n      return {cls:'cv-cat-gastro', label:'Gastronomy'};\n    if(\/festival|concert|music|band|orchestra|jazz|blues|rock|pop|flamenco|musica\/.test(t))\n      return {cls:'cv-cat-festival', label:'Festival'};\n    if(\/guided tour|visita guiada|museum|museu|castle|palacio|heritage|patrimoni|exhibition|exposic\/.test(t))\n      return {cls:'cv-cat-culture', label:'Culture'};\n    if(\/sport|triathlon|race|marathon|cycling|running|football|tennis|surf|climb|hike|ruta\/.test(t))\n      return {cls:'cv-cat-sport', label:'Sport'};\n    if(\/workshop|taller|course|curso|class|clase|learn|aprender\/.test(t))\n      return {cls:'cv-cat-workshop', label:'Workshop'};\n    if(\/fair|feria|congress|congreso|conference|conferencia|award|premio\/.test(t))\n      return {cls:'cv-cat-fair', label:'Fair'};\n    if(\/leisure|ocio|fun|adventure|family|familia|kids|ni\u00f1os|children\/.test(t))\n      return {cls:'cv-cat-leisure', label:'Leisure'};\n    return {cls:'cv-cat-event', label:'Event'};\n  }\n\n  function render(){\n    elGrid.innerHTML = '';\n    \/\/ Tooltips opruimen\n    document.querySelectorAll('.cv-tooltip').forEach(function(t){ t.remove(); });\n\n    if(!filtered.length){\n      elStatus.style.display='block';\n      elStatus.textContent=T.notFound;\n      elCount.textContent='';\n      elPagin.innerHTML='';\n      return;\n    }\n    elStatus.style.display='none';\n    elCount.textContent = T.found(filtered.length);\n\n    var slice = filtered.slice((currentPage-1)*PAGE_SIZE, currentPage*PAGE_SIZE);\n\n    slice.forEach(function(ev){\n      var img   = ev.image||'';\n      var title = ev.name||'';\n      var loc   = slugToName(ev.municipio||'');\n      var sd    = fmtDate(ev.start_date);\n      var ed    = fmtDate(ev.end_date);\n      var dates = (!ed||sd===ed) ? sd : sd+' \u2013 '+ed;\n      var desc  = shortDesc(ev.description||'');\n\n      var cat = guessCategory(title, desc);\n      var card = document.createElement('div');\n      card.className = 'cv-card';\n      card.innerHTML =\n        '<div class=\"cv-card-img-wrap\">'+\n          (img ? '<img decoding=\"async\" class=\"cv-card-img\" src=\"'+img+'\" alt=\"\" loading=\"lazy\" onerror=\"cvImgErr(this)\">' : '')+\n          '<div class=\"cv-card-placeholder\" style=\"'+(img?'display:none':'')+'\">\ud83d\udcc5<\/div>'+\n          '<span class=\"cv-badge '+cat.cls+'\">'+cat.label+'<\/span>'+\n        '<\/div>'+\n        '<div class=\"cv-card-body\">'+\n          '<div class=\"cv-card-location\">'+loc+'<\/div>'+\n          '<div class=\"cv-card-title\">'+title+'<\/div>'+\n          '<div class=\"cv-card-date\">'+dates+'<\/div>'+\n          '<div class=\"cv-card-desc-wrap\"><div class=\"cv-card-desc\" id=\"desc-'+ev.id+'\">'+( desc || '' )+'<\/div>'+(ev.slug && desc ? '<button class=\"cv-readmore\" data-id=\"'+ev.id+'\" data-municipio=\"'+ev.municipio+'\" data-slug=\"'+ev.slug+'\">Read more<\/button>' : '')+'<\/div>'+\n        '<\/div>';\n\n      elGrid.appendChild(card);\n    });\n    renderPagination();\n\n    \/\/ Lees meer knoppen\n    elGrid.querySelectorAll('.cv-readmore').forEach(function(btn){\n      btn.addEventListener('click', async function(){\n        var id       = btn.getAttribute('data-id');\n        var municipio = btn.getAttribute('data-municipio');\n        var slug     = btn.getAttribute('data-slug');\n        var descEl   = document.getElementById('desc-'+id);\n        if(descEl.classList.contains('expanded')){\n          descEl.classList.remove('expanded');\n          btn.textContent = 'Read more';\n          return;\n        }\n        btn.textContent = 'Loading...';\n        try {\n          var detailBase = (lang === 'es') ? 'https:\/\/www.comunitatvalenciana.com\/es\/alacant-alicante\/' : 'https:\/\/www.comunitatvalenciana.com\/en\/alacant-alicante\/';\n          var detailPath = (lang === 'es') ? '\/eventos\/' : '\/events\/';\n          var r = await fetch(PROXY+'\/cv\/detail\/?url='+encodeURIComponent(detailBase+municipio+detailPath+slug));\n          var data = await r.json();\n          if(data.description && data.description.trim().length > 0){\n            descEl.textContent = data.description;\n          }\n          \/\/ Als beschrijving leeg is, blijft de korte staan\n        } catch(e){}\n        descEl.classList.add('expanded');\n        btn.textContent = 'Read less';\n      });\n    });\n  }\n\n  function renderPagination(){\n    elPagin.innerHTML='';\n    var total = Math.ceil(filtered.length\/PAGE_SIZE);\n    if(total<=1) return;\n\n    function btn(label, page, disabled, active){\n      var b=document.createElement('button');\n      b.className='cv-page-btn'+(active?' active':'');\n      b.textContent=label; b.disabled=!!disabled;\n      if(!disabled) b.onclick=function(){ currentPage=page; render(); window.scrollTo(0,document.getElementById('cv-widget').getBoundingClientRect().top+window.scrollY-20); };\n      return b;\n    }\n\n    elPagin.appendChild(btn('\u2039', currentPage-1, currentPage===1));\n    for(var i=1; i<=total; i++){\n      if(total>7 && i>2 && i<total-1 && Math.abs(i-currentPage)>1){\n        if(i===3||i===total-2){ var sp=document.createElement('span'); sp.textContent='\u2026'; sp.style.cssText='padding:0 4px;color:#6b7280;line-height:38px'; elPagin.appendChild(sp); }\n        continue;\n      }\n      elPagin.appendChild(btn(i, i, false, i===currentPage));\n    }\n    elPagin.appendChild(btn('\u203a', currentPage+1, currentPage===total));\n  }\n\n  async function reload(){\n    elStatus.style.display='block';\n    elStatus.textContent=T.loading;\n    elGrid.innerHTML='';\n    elPagin.innerHTML='';\n    elCount.textContent='';\n    try {\n      allEvents = await loadAllEvents(toMs(inpStart.value), toEndMs(inpEnd.value));\n      applyFilters();\n    } catch(e){\n      elStatus.textContent=T.error;\n      console.error(e);\n    }\n  }\n\n  async function init(){\n    inpStart.value = todayStr();\n    inpEnd.value   = in90Str();\n\n    try {\n      \/\/ Alle Alicante gemeenten ophalen\n      var tw = await cvPost({ type_of_request:'townships', isFirstCalled:'true', reset:'false' });\n      (tw.townships||[])\n        .filter(function(t){ return t.province===PROVINCE; })\n        .sort(function(a,b){ return a.name<b.name?-1:1; }) .forEach(function(t){ var o=document.createElement('option'); o.value=t.slug; o.textContent=t.name; selPlace.appendChild(o); }); } catch(e){ console.warn('Townships laden mislukt',e); } await reload(); selPlace.addEventListener('change', applyFilters); inpStart.addEventListener('change', reload); inpEnd.addEventListener('change', reload); btnReset.addEventListener('click', function(){ selPlace.value=''; inpStart.value=todayStr(); inpEnd.value=in90Str(); reload(); }); } init(); })(); <\/script>\n<\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":106,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"_acf_changed":false,"footnotes":""},"folder":[],"class_list":["post-232821","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/pages\/232821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/comments?post=232821"}],"version-history":[{"count":61,"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/pages\/232821\/revisions"}],"predecessor-version":[{"id":233313,"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/pages\/232821\/revisions\/233313"}],"wp:attachment":[{"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/media?parent=232821"}],"wp:term":[{"taxonomy":"folder","embeddable":true,"href":"https:\/\/www.purecostablanca.com\/es\/wp-json\/wp\/v2\/folder?post=232821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}