{"id":2,"date":"2024-02-05T05:55:05","date_gmt":"2024-02-05T05:55:05","guid":{"rendered":"https:\/\/manutukutuku.co.nz\/?page_id=2"},"modified":"2026-09-19T10:13:57","modified_gmt":"2026-09-19T10:13:57","slug":"home-page","status":"publish","type":"page","link":"https:\/\/manutukutuku.co.nz\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2\" class=\"elementor elementor-2\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-76514c4 e-con-full e-flex e-con e-parent\" data-id=\"76514c4\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;background_motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:4,&quot;sizes&quot;:[]},&quot;background_motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-core-v316-plus=\"true\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72aa835 elementor-widget elementor-widget-heading\" data-id=\"72aa835\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 05-02-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Welcome to Manu tukutuku <\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-077e2c3 e-con-full e-flex e-con e-parent\" data-id=\"077e2c3\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;,&quot;background_background&quot;:&quot;classic&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9c3ef1f elementor-widget elementor-widget-heading\" data-id=\"9c3ef1f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Whats on....<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-d43a73d e-con-full e-flex e-con e-parent\" data-id=\"d43a73d\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;content_width&quot;:&quot;full&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cd321fd elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"cd321fd\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- VenueIQ What's On - Date-selectable calendar (Manu Tukutuku brand) -->\n<!-- Paste into an HTML \/ Custom Code widget. Layout and image settings are read live from VenueIQ. -->\n\n<div id=\"venueiq-calendar\" class=\"viq-cal\">\n  <div class=\"viq-loading\">Loading events...<\/div>\n<\/div>\n\n<script>\n(function () {\n\n  \/* ============ SETTINGS - edit these ============ *\/\n  var FEED_URL  = 'https:\/\/manu.venueiq.co.nz\/api\/public-events?token=419531227e5149c1903e4998113014274ba44884a6134a99a75fd1797486ac6e';\n  var WIDTH_PCT = 90;    \/\/ width of the whole block as a % of its container (e.g. 80)\n  var MAX_WIDTH = 0;      \/\/ px cap on that width, set to 0 for no cap (full width of the box)\n  var THEME     = 'dark'; \/\/ 'dark' or 'light'\n  var LOGO_URL  = 'https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2026\/09\/Screenshot-from-2026-09-19-22-07-06.png';     \/\/ Manu Tukutuku logo URL, shown when a booking has no image of its own\n  var LOGO_BG   = '#000000'; \/\/ panel behind the fallback logo\n  var SHOW_DESC = true;   \/\/ show the booking description when the feed supplies one\n  var DESC_LINES = 3;     \/\/ lines of description before it clips\n  var ROWS_PER_PAGE = 3;  \/\/ bookings shown before the list pages, keeps it level with the calendar\n  \/* ===================================================== *\/\n\n  var ORANGE = '#e97300';\n  var GREY   = '#a8a8aa';\n  var BLACK  = '#000000';\n\n  var dark = (THEME === 'dark');\n  var C = dark ? {\n    text:    '#ffffff',\n    dim:     '#b5b5b7',\n    faint:   '#5c5c5e',\n    cell:    'rgba(255,255,255,0.04)',\n    cellHov: 'rgba(233,115,0,0.18)',\n    rule:    'rgba(255,255,255,0.14)',\n    ruleTop: ORANGE,\n    ph:      '#2a2a2c',\n    navBd:   'rgba(255,255,255,0.28)'\n  } : {\n    text:    BLACK,\n    dim:     '#5a5a5c',\n    faint:   '#9a9a9c',\n    cell:    '#ffffff',\n    cellHov: '#fdf0e5',\n    rule:    '#e4e4e6',\n    ruleTop: BLACK,\n    ph:      GREY,\n    navBd:   GREY\n  };\n\n  var MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December'];\n  var DAYS   = ['M','T','W','T','F','S','S'];\n\n  var root = document.getElementById('venueiq-calendar');\n  var state = { byDate: {}, view: null, selected: null, thumbH: 72, page: 0 };\n\n  \/* ---------- styles ---------- *\/\n  var css = ''\n    + '.viq-cal{font-family:Arial,Helvetica,sans-serif;color:' + C.text + ';width:' + WIDTH_PCT + '%;'\n      + 'max-width:' + (MAX_WIDTH ? MAX_WIDTH + 'px' : '100%') + ';margin:0 auto;box-sizing:border-box;}'\n    + '.viq-cal *,.viq-cal *:before,.viq-cal *:after{box-sizing:border-box;}'\n    + '.viq-loading,.viq-error{padding:32px 0;color:' + C.dim + ';font-size:15px;}'\n    + '.viq-layout{display:grid;gap:36px;grid-template-columns:1fr;}'\n    + '@media(min-width:880px){.viq-layout{grid-template-columns:minmax(300px,32%) 1fr;gap:48px;}}'\n    + '.viq-monthbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:3px solid ' + C.ruleTop + ';}'\n    + '.viq-month{font-size:20px;font-weight:700;letter-spacing:0.5px;margin:0;color:' + C.text + ';}'\n    + '.viq-month span{color:' + GREY + ';font-weight:400;margin-left:6px;}'\n    + '.viq-nav{display:flex;gap:8px;}'\n    + '.viq-nav button{width:34px;height:34px;border:1px solid ' + C.navBd + ';background:transparent;color:' + C.text + ';border-radius:2px;font:inherit;font-size:16px;line-height:1;cursor:pointer;padding:0;-webkit-appearance:none;appearance:none;touch-action:manipulation;pointer-events:auto;}'\n    + '.viq-nav button:hover{border-color:' + ORANGE + ';color:' + ORANGE + ';background:transparent;}'\n    + '.viq-nav button:focus-visible,.viq-day:focus-visible,.viq-today-btn:focus-visible{outline:2px solid ' + ORANGE + ';outline-offset:2px;}'\n    + '.viq-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:14px;}'\n    + '.viq-dow{text-align:center;font-size:11px;font-weight:700;color:' + GREY + ';padding:8px 0;}'\n    + '.viq-day{position:relative;aspect-ratio:1\/1;min-height:38px;border:0;background:' + C.cell + ';color:' + C.text + ';font:inherit;font-size:14px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;border-radius:2px;-webkit-appearance:none;appearance:none;touch-action:manipulation;pointer-events:auto;}'\n    + '.viq-day.is-empty{visibility:hidden;pointer-events:none;}'\n    + '.viq-day.is-muted{color:' + C.faint + ';}'\n    + '.viq-day:hover{background:' + C.cellHov + ';}'\n    + '.viq-day.has-events{font-weight:700;}'\n    + '.viq-day.has-events:after{content:\"\";position:absolute;bottom:7px;left:50%;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:' + ORANGE + ';}'\n    + '.viq-day.is-today{box-shadow:inset 0 0 0 1px ' + GREY + ';}'\n    + '.viq-day.is-selected,.viq-day.is-selected:hover{background:' + ORANGE + ';color:#fff;}'\n    + '.viq-day.is-selected:after{background:#fff;}'\n    + '.viq-today-btn{margin-top:16px;background:none;border:0;padding:0;font:inherit;font-size:13px;color:' + ORANGE + ';cursor:pointer;text-decoration:underline;-webkit-appearance:none;appearance:none;}'\n    + '.viq-dayblock + .viq-dayblock{margin-top:20px;}'\n    + '.viq-daytitle{font-size:20px;font-weight:700;margin:0 0 6px;padding-bottom:7px;border-bottom:2px solid ' + C.ruleTop + ';color:' + C.text + ';}'\n    + '.viq-dayblock.is-next .viq-daytitle{font-size:15px;margin-bottom:4px;color:' + GREY + ';border-bottom:1px solid ' + C.rule + ';}'\n    + '.viq-event{display:flex;gap:14px;padding:7px 0;border-bottom:1px solid ' + C.rule + ';align-items:center;}'\n    + '.viq-thumb{flex:0 0 auto;width:104px;overflow:hidden;background:' + C.ph + ';border-radius:5px;}'\n    + '.viq-thumb.is-logo{background:' + LOGO_BG + ';}'\n    + '.viq-thumb.is-logo img{object-fit:contain;object-position:center;padding:8px;}'\n    + '.viq-thumb img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;border:0;margin:0;padding:0;max-width:none;border-radius:5px;}'\n    + '.viq-body{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;}'\n    + '.viq-text{flex:1 1 200px;min-width:0;}'\n    + '.viq-title{font-size:16px;font-weight:700;margin:0;line-height:1.25;color:' + C.text + ';}'\n    + '.viq-time{font-size:11px;font-weight:700;color:' + ORANGE + ';margin:3px 0 0;letter-spacing:0.4px;}'\n    + '.viq-meta{font-size:12px;color:' + C.dim + ';margin:3px 0 0;}'\n    + '.viq-descbox{flex:1 1 240px;min-width:0;align-self:stretch;display:flex;align-items:center;padding-left:18px;border-left:1px solid ' + C.rule + ';}'\n    + '.viq-desc{font-size:13px;line-height:1.5;color:' + C.dim + ';margin:0;display:-webkit-box;-webkit-line-clamp:' + DESC_LINES + ';-webkit-box-orient:vertical;overflow:hidden;}'\n    + '.viq-btn{display:inline-block;padding:7px 16px;background:' + ORANGE + ';color:#fff;border-radius:2px;text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap;flex-shrink:0;}'\n    + '.viq-btn:hover{background:#c96100;color:#fff;}'\n    + '.viq-none{font-size:14px;color:' + C.dim + ';padding:14px 0;border-bottom:1px solid ' + C.rule + ';margin:0;}'\n    + '.viq-cont{font-size:11px;font-weight:400;color:' + GREY + ';letter-spacing:0.4px;}'\n    + '.viq-pager{display:flex;align-items:center;gap:14px;margin-top:14px;}'\n    + '.viq-pager span{font-size:12px;color:' + C.dim + ';}'\n    + '.viq-pager button{width:32px;height:32px;border:1px solid ' + C.navBd + ';background:transparent;color:' + C.text + ';border-radius:2px;font:inherit;font-size:16px;line-height:1;cursor:pointer;padding:0;-webkit-appearance:none;appearance:none;}'\n    + '.viq-pager button:hover:not(:disabled){border-color:' + ORANGE + ';color:' + ORANGE + ';}'\n    + '.viq-pager button:disabled{opacity:.3;cursor:default;}'\n    + '.viq-pager button:focus-visible{outline:2px solid ' + ORANGE + ';outline-offset:2px;}'\n    \/* theme overrides: WordPress themes style h3\/h4 with higher specificity than a bare class *\/\n    + '.viq-cal h3.viq-daytitle{color:' + C.text + ';margin:0 0 6px;}'\n    + '.viq-cal .viq-dayblock.is-next h3.viq-daytitle{color:' + GREY + ';}'\n    + '.viq-cal h4.viq-title{color:' + C.text + ';margin:0;}'\n    + '.viq-cal p.viq-time{color:' + ORANGE + ';}'\n    + '.viq-cal p.viq-meta,.viq-cal p.viq-desc{color:' + C.dim + ';}'\n    \/* description sits level with the title and time block *\/\n    + '.viq-cal .viq-event{align-items:stretch;}'\n    + '.viq-cal .viq-body{align-items:center;}'\n    + '.viq-cal .viq-text{align-self:center;}'\n    + '.viq-cal .viq-descbox{align-items:center;}'\n    + '@media(max-width:760px){.viq-descbox{flex:1 1 100%;padding-left:0;border-left:0;border-top:1px solid ' + C.rule + ';padding-top:8px;margin-top:4px;}}'\n    + '@media(max-width:520px){.viq-thumb{width:84px;}.viq-event{gap:10px;}.viq-title{font-size:15px;}}';\n\n  var styleEl = document.getElementById('viq-cal-style');\n  if (!styleEl) { styleEl = document.createElement('style'); styleEl.id = 'viq-cal-style'; document.head.appendChild(styleEl); }\n  styleEl.textContent = css;\n\n  \/* ---------- helpers ---------- *\/\n  function esc(s) {\n    return String(s == null ? '' : s).replace(\/[&<>\"']\/g, function (c) {\n      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n    });\n  }\n  function key(d) {\n    return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2);\n  }\n  function startOfDay(d) { return new Date(d.getFullYear(), d.getMonth(), d.getDate()); }\n  function fmtTime(d) {\n    return d.toLocaleTimeString('en-NZ', { hour: 'numeric', minute: '2-digit' }).replace(\/\\s?([ap])\\.?m\\.?\/i, function (m, p) { return ' ' + p.toLowerCase() + 'm'; });\n  }\n  function fmtLongDate(d) {\n    return d.toLocaleDateString('en-NZ', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' });\n  }\n  function descFor(ev) {\n    if (!SHOW_DESC) return '';\n    var raw = ev.description || ev.summary || ev.blurb || ev.details || ev.publicDescription || ev.eventDescription || ev.notes || '';\n    return String(raw).replace(\/<[^>]*>\/g, ' ').replace(\/\\s+\/g, ' ').trim();\n  }\n\n  function thumbFor(ev) {\n    if (ev.imageUrl) return { src: ev.imageUrl, logo: false };\n    if (ev.videoUrl) {\n      var m = ev.videoUrl.match(\/(?:youtu\\.be\\\/|v=)([^&]+)\/);\n      if (m) return { src: 'https:\/\/img.youtube.com\/vi\/' + m[1] + '\/hqdefault.jpg', logo: false };\n    }\n    if (LOGO_URL) return { src: LOGO_URL, logo: true };\n    return null;\n  }\n\n  \/* ---------- data ---------- *\/\n  function index(events) {\n    var map = {};\n    events.forEach(function (ev) {\n      if (!ev || !ev.start) return;\n      var s = new Date(ev.start);\n      if (isNaN(s)) return;\n      var e = ev.end ? new Date(ev.end) : s;\n      if (isNaN(e) || e < s) e = s;\n      var cur = startOfDay(s), last = startOfDay(e), guard = 0;\n      while (cur <= last && guard < 400) {\n        var k = key(cur);\n        (map[k] = map[k] || []).push({ ev: ev, start: s, end: ev.end ? new Date(ev.end) : null, allDayHere: k !== key(s) });\n        cur = new Date(cur.getFullYear(), cur.getMonth(), cur.getDate() + 1);\n        guard++;\n      }\n    });\n    Object.keys(map).forEach(function (k) { map[k].sort(function (a, b) { return a.start - b.start; }); });\n    return map;\n  }\n\n  function nextDateWithEvents(from) {\n    var keys = Object.keys(state.byDate).sort();\n    for (var i = 0; i < keys.length; i++) { if (keys[i] >= from) return keys[i]; }\n    return keys.length ? keys[keys.length - 1] : from;\n  }\n\n  function nextDatesWithEvents(after, count) {\n    return Object.keys(state.byDate).sort().filter(function (k) { return k > after; }).slice(0, count);\n  }\n\n  \/* ---------- render ---------- *\/\n  function render() {\n    var v = state.view, today = startOfDay(new Date());\n    var first = new Date(v.getFullYear(), v.getMonth(), 1);\n    var offset = (first.getDay() + 6) % 7; \/\/ Monday first\n    var daysIn = new Date(v.getFullYear(), v.getMonth() + 1, 0).getDate();\n\n    var cal = ''\n      + '<div class=\"viq-monthbar\">'\n      + '<h2 class=\"viq-month\">' + MONTHS[v.getMonth()] + '<span>' + v.getFullYear() + '<\/span><\/h2>'\n      + '<div class=\"viq-nav\">'\n      + '<button type=\"button\" data-step=\"-1\" aria-label=\"Previous month\">&#8249;<\/button>'\n      + '<button type=\"button\" data-step=\"1\" aria-label=\"Next month\">&#8250;<\/button>'\n      + '<\/div><\/div><div class=\"viq-grid\">';\n\n    DAYS.forEach(function (d) { cal += '<div class=\"viq-dow\" aria-hidden=\"true\">' + d + '<\/div>'; });\n    for (var i = 0; i < offset; i++) { cal += '<button type=\"button\" class=\"viq-day is-empty\" tabindex=\"-1\" aria-hidden=\"true\"><\/button>'; }\n\n    for (var day = 1; day <= daysIn; day++) {\n      var dt = new Date(v.getFullYear(), v.getMonth(), day), k = key(dt);\n      var list = state.byDate[k];\n      var cls = 'viq-day' + (list ? ' has-events' : ' is-muted');\n      if (k === key(today)) cls += ' is-today';\n      if (k === state.selected) cls += ' is-selected';\n      var label = fmtLongDate(dt) + (list ? ', ' + list.length + (list.length === 1 ? ' event' : ' events') : ', no events');\n      cal += '<button type=\"button\" class=\"' + cls + '\" data-date=\"' + k + '\" aria-label=\"' + esc(label) + '\"'\n           + (k === state.selected ? ' aria-current=\"date\"' : '') + '>' + day + '<\/button>';\n    }\n    cal += '<\/div><button type=\"button\" class=\"viq-today-btn\">Go to today<\/button>';\n\n    root.innerHTML = '<div class=\"viq-layout\"><div>' + cal + '<\/div><div id=\"viq-detail\">' + detail() + '<\/div><\/div>';\n  }\n\n  function detail() {\n    var blocks = [{ key: state.selected, next: false }];\n    nextDatesWithEvents(state.selected, 2).forEach(function (k) { blocks.push({ key: k, next: true }); });\n\n    \/* flatten to rows so pages are an even depth regardless of how the days split *\/\n    var rows = [];\n    blocks.forEach(function (b) {\n      var list = state.byDate[b.key] || [];\n      if (!list.length) { rows.push({ b: b, item: null, idx: 0 }); return; }\n      list.forEach(function (it, i) { rows.push({ b: b, item: it, idx: i }); });\n    });\n\n    var per   = Math.max(1, ROWS_PER_PAGE);\n    var pages = Math.max(1, Math.ceil(rows.length \/ per));\n    if (state.page > pages - 1) state.page = pages - 1;\n    if (state.page < 0) state.page = 0;\n\n    var slice = rows.slice(state.page * per, state.page * per + per);\n    var html = '', openKey = null;\n\n    slice.forEach(function (row) {\n      if (row.b.key !== openKey) {\n        if (openKey !== null) html += '<\/section>';\n        openKey = row.b.key;\n        var d = new Date(row.b.key + 'T00:00:00');\n        html += '<section class=\"viq-dayblock' + (row.b.next ? ' is-next' : '') + '\">'\n             +  '<h3 class=\"viq-daytitle\">' + fmtLongDate(d)\n             +  (row.idx > 0 ? ' <span class=\"viq-cont\">continued<\/span>' : '') + '<\/h3>';\n      }\n\n      if (!row.item) { html += '<p class=\"viq-none\">Nothing booked on this date.<\/p>'; return; }\n\n      var ev = row.item.ev, img = thumbFor(ev);\n      var time = row.item.allDayHere ? 'Continues today'\n        : fmtTime(row.item.start) + (row.item.end && key(row.item.end) === row.b.key && +row.item.end !== +row.item.start ? ' to ' + fmtTime(row.item.end) : '');\n      var meta = [ev.venue, ev.room, ev.space].filter(Boolean).join(', ');\n      var desc = descFor(ev);\n\n      html += '<article class=\"viq-event\">'\n        + '<div class=\"viq-thumb' + (img && img.logo ? ' is-logo' : '') + '\" style=\"height:' + state.thumbH + 'px;\">'\n        + (img ? '<img decoding=\"async\" src=\"' + esc(img.src) + '\" alt=\"' + (img.logo ? 'Manu Tukutuku' : esc(ev.title)) + '\" loading=\"lazy\">' : '')\n        + '<\/div><div class=\"viq-body\"><div class=\"viq-text\">'\n        + '<h4 class=\"viq-title\">' + esc(ev.title) + '<\/h4>'\n        + '<p class=\"viq-time\">' + esc(time) + '<\/p>'\n        + (meta ? '<p class=\"viq-meta\">' + esc(meta) + '<\/p>' : '')\n        + '<\/div>'\n        + (desc ? '<div class=\"viq-descbox\"><p class=\"viq-desc\">' + esc(desc) + '<\/p><\/div>' : '')\n        + (ev.ticketsUrl ? '<a class=\"viq-btn\" href=\"' + esc(ev.ticketsUrl) + '\" target=\"_blank\" rel=\"noopener\">Buy tickets<\/a>' : '')\n        + '<\/div><\/article>';\n    });\n\n    if (openKey !== null) html += '<\/section>';\n\n    if (pages > 1) {\n      html += '<div class=\"viq-pager\">'\n        + '<button type=\"button\" data-page=\"prev\" aria-label=\"Previous bookings\"' + (state.page === 0 ? ' disabled' : '') + '>&#8249;<\/button>'\n        + '<span>Page ' + (state.page + 1) + ' of ' + pages + '<\/span>'\n        + '<button type=\"button\" data-page=\"next\" aria-label=\"More bookings\"' + (state.page === pages - 1 ? ' disabled' : '') + '>&#8250;<\/button>'\n        + '<\/div>';\n    }\n    return html;\n  }\n\n  \/* ---------- interaction (one delegated listener) ---------- *\/\n  root.addEventListener('click', function (e) {\n    var t = e.target;\n    if (!t || !t.closest) return;\n\n    var step = t.closest('.viq-nav button');\n    if (step) {\n      e.preventDefault();\n      state.view = new Date(state.view.getFullYear(), state.view.getMonth() + Number(step.getAttribute('data-step')), 1);\n      render();\n      return;\n    }\n    var day = t.closest('.viq-day[data-date]');\n    if (day) {\n      e.preventDefault();\n      state.selected = day.getAttribute('data-date');\n      state.page = 0;\n      render();\n      return;\n    }\n    var pg = t.closest('.viq-pager button');\n    if (pg) {\n      e.preventDefault();\n      state.page += (pg.getAttribute('data-page') === 'next' ? 1 : -1);\n      render();\n      return;\n    }\n    if (t.closest('.viq-today-btn')) {\n      e.preventDefault();\n      var today = startOfDay(new Date());\n      state.selected = key(today);\n      state.view = new Date(today.getFullYear(), today.getMonth(), 1);\n      state.page = 0;\n      render();\n    }\n  });\n\n  \/* ---------- load ---------- *\/\n  fetch(FEED_URL)\n    .then(function (r) { if (!r.ok) throw new Error('VenueIQ feed returned HTTP ' + r.status); return r.json(); })\n    .then(function (data) {\n      if (!data || !Array.isArray(data.events)) throw new Error('VenueIQ feed returned an invalid response');\n      var cfg = data.displaySettings || {};\n      state.thumbH = Math.max(58, Math.min(88, Math.round((cfg.imageHeight || 280) \/ 4)));\n      state.byDate = index(data.events);\n\n      var today = startOfDay(new Date());\n      state.selected = nextDateWithEvents(key(today));\n      var sel = new Date(state.selected + 'T00:00:00');\n      state.view = new Date(sel.getFullYear(), sel.getMonth(), 1);\n      render();\n    })\n    .catch(function (err) {\n      console.error('[VenueIQ calendar]', err);\n      root.innerHTML = '<p class=\"viq-error\">Events are not loading right now. Check the feed URL, token, and Allowed Website setting in VenueIQ.<\/p>';\n    });\n})();\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-d20783b e-flex e-con-boxed e-con e-parent\" data-id=\"d20783b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d07af65 elementor-widget elementor-widget-heading\" data-id=\"d07af65\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Manu Led Programmes<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-36524da e-con-full e-flex e-con e-parent\" data-id=\"36524da\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;,&quot;background_background&quot;:&quot;classic&quot;}\" data-core-v316-plus=\"true\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-b052b6b e-con-full e-flex e-con e-child\" data-id=\"b052b6b\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3abb46f elementor-widget elementor-widget-image\" data-id=\"3abb46f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 05-02-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"724\" height=\"1024\" src=\"https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communityclosetvisuals-724x1024.png\" class=\"attachment-large size-large wp-image-82\" alt=\"\" srcset=\"https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communityclosetvisuals-724x1024.png 724w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communityclosetvisuals-212x300.png 212w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communityclosetvisuals-768x1086.png 768w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communityclosetvisuals.png 1000w\" sizes=\"(max-width: 724px) 100vw, 724px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-680dd66 e-con-full e-flex e-con e-child\" data-id=\"680dd66\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f0212a2 elementor-widget elementor-widget-image\" data-id=\"f0212a2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"724\" height=\"1024\" src=\"https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/kidskai_poster-724x1024.png\" class=\"attachment-large size-large wp-image-84\" alt=\"\" srcset=\"https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/kidskai_poster-724x1024.png 724w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/kidskai_poster-212x300.png 212w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/kidskai_poster-768x1086.png 768w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/kidskai_poster.png 1000w\" sizes=\"(max-width: 724px) 100vw, 724px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-668da9c e-con-full e-flex e-con e-child\" data-id=\"668da9c\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f05c718 elementor-widget elementor-widget-image\" data-id=\"f05c718\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"724\" height=\"1024\" src=\"https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communitykai_poster-724x1024.png\" class=\"attachment-large size-large wp-image-83\" alt=\"\" srcset=\"https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communitykai_poster-724x1024.png 724w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communitykai_poster-212x300.png 212w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communitykai_poster-768x1086.png 768w, https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/communitykai_poster.png 1000w\" sizes=\"(max-width: 724px) 100vw, 724px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-17ef3f1 e-flex e-con-boxed e-con e-parent\" data-id=\"17ef3f1\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Welcome to Manu tukutuku Whats on&#8230;. Loading events&#8230; Manu Led Programmes<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2"}],"version-history":[{"count":5,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":380,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions\/380"}],"wp:attachment":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}