{"id":915,"date":"2026-06-18T18:46:09","date_gmt":"2026-06-18T18:46:09","guid":{"rendered":"https:\/\/photoboothvan.purepixels.digital\/?page_id=915"},"modified":"2026-07-28T15:24:29","modified_gmt":"2026-07-28T15:24:29","slug":"gallery","status":"publish","type":"page","link":"https:\/\/photoboothvan.purepixels.digital\/en\/gallery\/","title":{"rendered":"Gallery test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"915\" class=\"elementor elementor-915\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-487d5d3 e-con-full e-flex e-con e-parent\" data-id=\"487d5d3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-872fe58 elementor-widget elementor-widget-html\" data-id=\"872fe58\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"pv-moments-page\" aria-label=\"\u03a3\u03c4\u03b9\u03b3\u03bc\u03ad\u03c2\">\n  <div class=\"pv-moments-hero\">\n    <h1>\u03a0\u03b1\u03bd\u03c4\u03bf\u03c4\u03b9\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bd\u03ae\u03c3\u03b5\u03b9\u03c2<\/h1>\n\n    <p class=\"pv-moments-subtitle\">\n      \u0391\u03c5\u03b8\u03cc\u03c1\u03bc\u03b7\u03c4\u03b1 \u03c7\u03b1\u03bc\u03cc\u03b3\u03b5\u03bb\u03b1, \u03c0\u03cc\u03b6\u03b5\u03c2, \u03c6\u03af\u03bb\u03bf\u03b9, \u03b3\u03ad\u03bb\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03bc\u03b9\u03ba\u03c1\u03ad\u03c2 \u03b9\u03c3\u03c4\u03bf\u03c1\u03af\u03b5\u03c2 \u03b1\u03c0\u03cc \u03ba\u03bf\u03c1\u03c5\u03c6\u03b1\u03af\u03b1 events.\n    <\/p>\n\n    <p class=\"pv-moments-instruction\">\n      \u039a\u03ac\u03bd\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03b5 \u03bc\u03b9\u03b1 \u03c6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03b7 \u03b4\u03b5\u03b9\u03c2 \u03bf\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b7.\n    <\/p>\n  <\/div>\n\n  <div class=\"pv-memory-wall\" id=\"pvMemoryWall\"><\/div>\n\n  <div class=\"pv-load-more-wrap\">\n    <button class=\"pv-load-more-btn\" id=\"pvLoadMoreBtn\" type=\"button\">\n      Load more\n    <\/button>\n  <\/div>\n\n  <div class=\"pv-lightbox\" id=\"pvLightbox\" aria-hidden=\"true\" role=\"dialog\" aria-label=\"\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03c6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1\u03c2\">\n    <button class=\"pv-lightbox-close\" type=\"button\" aria-label=\"\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf\">\u00d7<\/button>\n\n    <button class=\"pv-lightbox-nav pv-lightbox-prev\" type=\"button\" aria-label=\"\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03c6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1\">\u2039<\/button>\n\n    <figure class=\"pv-lightbox-figure\">\n      <img decoding=\"async\" id=\"pvLightboxImage\" src=\"\" alt=\"\">\n      <figcaption id=\"pvLightboxCaption\"><\/figcaption>\n    <\/figure>\n\n    <button class=\"pv-lightbox-nav pv-lightbox-next\" type=\"button\" aria-label=\"\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03b7 \u03c6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1\">\u203a<\/button>\n  <\/div>\n<\/section>\n\n<script>\n(function () {\n  const imageBaseUrl = \"https:\/\/photoboothvan.purepixels.digital\/wp-content\/uploads\/2026\/07\/\";\n  const imageExtension = \"jpg\";\n  const imagePrefix = \"moments-v2-\";\n  const imageSuffix = \"-scaled\";\n  const imageCount = 63;\n\n  function buildImageUrl(index, useScaled) {\n    const number = String(index + 1).padStart(2, \"0\");\n    const suffix = useScaled ? imageSuffix : \"\";\n    return `${imageBaseUrl}${imagePrefix}${number}${suffix}.${imageExtension}`;\n  }\n\n  const moments = Array.from({ length: imageCount }, function (_, index) {\n    return {\n      src: buildImageUrl(index, true),\n      fallback: buildImageUrl(index, false),\n      full: buildImageUrl(index, true),\n      fullFallback: buildImageUrl(index, false)\n    };\n  });\n\n  const baseLayouts = [\n    [\"2%\", \"30px\", \"340px\", \"4 \/ 5\", \"-4deg\", \"9\", \"45px\", \"12s\", \"-1s\", \"11px\"],\n    [\"25%\", \"125px\", \"455px\", \"16 \/ 10\", \"2deg\", \"5\", \"-20px\", \"14s\", \"-4s\", \"9px\"],\n    [\"61%\", \"25px\", \"330px\", \"1 \/ 1\", \"-1.5deg\", \"11\", \"80px\", \"11s\", \"-2s\", \"13px\"],\n    [\"78%\", \"185px\", \"345px\", \"4 \/ 5\", \"4deg\", \"7\", \"10px\", \"15s\", \"-6s\", \"10px\"],\n    [\"7%\", \"485px\", \"445px\", \"16 \/ 11\", \"3deg\", \"4\", \"-45px\", \"16s\", \"-3s\", \"8px\"],\n\n    [\"41%\", \"470px\", \"350px\", \"3 \/ 4\", \"-3deg\", \"10\", \"70px\", \"13s\", \"-5s\", \"13px\"],\n    [\"67%\", \"590px\", \"420px\", \"1 \/ 1\", \"1.5deg\", \"6\", \"-10px\", \"14s\", \"-7s\", \"9px\"],\n    [\"1%\", \"910px\", \"325px\", \"4 \/ 5\", \"-2deg\", \"8\", \"25px\", \"12s\", \"-8s\", \"12px\"],\n    [\"24%\", \"955px\", \"395px\", \"5 \/ 4\", \"4.5deg\", \"12\", \"95px\", \"11s\", \"-2.5s\", \"14px\"],\n    [\"53%\", \"965px\", \"340px\", \"1 \/ 1\", \"-5deg\", \"3\", \"-55px\", \"17s\", \"-9s\", \"7px\"],\n\n    [\"74%\", \"1045px\", \"360px\", \"4 \/ 5\", \"2deg\", \"9\", \"35px\", \"13s\", \"-4.5s\", \"11px\"],\n    [\"8%\", \"1380px\", \"450px\", \"16 \/ 10\", \"1deg\", \"5\", \"-25px\", \"15s\", \"-10s\", \"8px\"],\n    [\"41%\", \"1370px\", \"350px\", \"1 \/ 1\", \"-2.5deg\", \"10\", \"75px\", \"12s\", \"-6.5s\", \"13px\"],\n    [\"62%\", \"1490px\", \"465px\", \"16 \/ 11\", \"3.5deg\", \"7\", \"-5px\", \"16s\", \"-3.5s\", \"10px\"],\n    [\"3%\", \"1815px\", \"340px\", \"4 \/ 5\", \"-4.5deg\", \"9\", \"55px\", \"13s\", \"-11s\", \"12px\"],\n\n    [\"27%\", \"1835px\", \"380px\", \"4 \/ 5\", \"2deg\", \"4\", \"-35px\", \"18s\", \"-5.5s\", \"7px\"],\n    [\"52%\", \"1930px\", \"375px\", \"1 \/ 1\", \"-1deg\", \"12\", \"90px\", \"11s\", \"-8.5s\", \"14px\"],\n    [\"75%\", \"1900px\", \"340px\", \"16 \/ 10\", \"4deg\", \"8\", \"15px\", \"14s\", \"-12s\", \"9px\"],\n    [\"13%\", \"2320px\", \"455px\", \"4 \/ 5\", \"-2deg\", \"7\", \"20px\", \"15s\", \"-7.5s\", \"10px\"],\n    [\"55%\", \"2350px\", \"420px\", \"1 \/ 1\", \"2.5deg\", \"6\", \"-15px\", \"17s\", \"-13s\", \"8px\"],\n\n    [\"4%\", \"2740px\", \"360px\", \"4 \/ 5\", \"3deg\", \"9\", \"45px\", \"12s\", \"-3s\", \"10px\"],\n    [\"31%\", \"2790px\", \"450px\", \"16 \/ 11\", \"-3.5deg\", \"5\", \"-30px\", \"16s\", \"-9s\", \"8px\"],\n    [\"63%\", \"2730px\", \"340px\", \"1 \/ 1\", \"2deg\", \"11\", \"80px\", \"13s\", \"-6s\", \"12px\"],\n    [\"78%\", \"2935px\", \"335px\", \"4 \/ 5\", \"-2deg\", \"7\", \"25px\", \"15s\", \"-11s\", \"9px\"],\n    [\"11%\", \"3240px\", \"465px\", \"16 \/ 10\", \"2.5deg\", \"4\", \"-40px\", \"17s\", \"-2s\", \"7px\"],\n\n    [\"44%\", \"3275px\", \"350px\", \"1 \/ 1\", \"-4deg\", \"10\", \"70px\", \"12s\", \"-5s\", \"13px\"],\n    [\"67%\", \"3405px\", \"420px\", \"4 \/ 5\", \"3deg\", \"6\", \"-15px\", \"15s\", \"-8s\", \"9px\"],\n    [\"1%\", \"3745px\", \"330px\", \"16 \/ 10\", \"-1.5deg\", \"8\", \"20px\", \"14s\", \"-12s\", \"11px\"],\n    [\"24%\", \"3810px\", \"400px\", \"1 \/ 1\", \"4deg\", \"12\", \"95px\", \"11s\", \"-4s\", \"14px\"],\n    [\"56%\", \"3790px\", \"465px\", \"4 \/ 5\", \"-2.5deg\", \"5\", \"-35px\", \"18s\", \"-10s\", \"7px\"]\n  ];\n\n  const layouts = Array.from({ length: imageCount }, function (_, index) {\n    const base = baseLayouts[index % baseLayouts.length];\n    const repeat = Math.floor(index \/ baseLayouts.length);\n    const y = parseInt(base[1], 10) + repeat * 4170;\n\n    return [\n      base[0],\n      `${y}px`,\n      base[2],\n      base[3],\n      base[4],\n      base[5],\n      base[6],\n      base[7],\n      base[8],\n      base[9]\n    ];\n  });\n\n  const wall = document.getElementById(\"pvMemoryWall\");\n  const loadMoreBtn = document.getElementById(\"pvLoadMoreBtn\");\n  const lightbox = document.getElementById(\"pvLightbox\");\n  const lightboxImage = document.getElementById(\"pvLightboxImage\");\n  const lightboxCaption = document.getElementById(\"pvLightboxCaption\");\n  const closeBtn = document.querySelector(\".pv-lightbox-close\");\n  const nextBtn = document.querySelector(\".pv-lightbox-next\");\n  const prevBtn = document.querySelector(\".pv-lightbox-prev\");\n\n  if (!wall || !loadMoreBtn || !lightbox || !lightboxImage || !closeBtn || !nextBtn || !prevBtn) {\n    return;\n  }\n\n  if (lightboxCaption) {\n    lightboxCaption.textContent = \"\";\n    lightboxCaption.style.display = \"none\";\n  }\n\n  const tabletMobileQuery = window.matchMedia(\"(max-width: 1024px)\");\n\n  let visibleCount = tabletMobileQuery.matches ? 5 : moments.length;\n  let currentIndex = 0;\n\n  function isTabletOrMobile() {\n    return tabletMobileQuery.matches;\n  }\n\n  function createCard(item, index) {\n    const layout = layouts[index];\n\n    const card = document.createElement(\"button\");\n    card.className = \"pv-memory-card\";\n    card.type = \"button\";\n    card.dataset.index = index;\n\n    card.style.setProperty(\"--x\", layout[0]);\n    card.style.setProperty(\"--y\", layout[1]);\n    card.style.setProperty(\"--w\", layout[2]);\n    card.style.setProperty(\"--ratio\", layout[3]);\n    card.style.setProperty(\"--r\", layout[4]);\n    card.style.setProperty(\"--z\", layout[5]);\n    card.style.setProperty(\"--depth\", layout[6]);\n    card.style.setProperty(\"--duration\", layout[7]);\n    card.style.setProperty(\"--delay\", layout[8]);\n    card.style.setProperty(\"--float\", layout[9]);\n\n    const img = document.createElement(\"img\");\n    img.loading = \"lazy\";\n    img.decoding = \"async\";\n    img.src = item.src;\n    img.alt = \"\";\n\n    img.addEventListener(\"error\", function () {\n      if (img.src !== item.fallback) {\n        img.src = item.fallback;\n      }\n    });\n\n    card.appendChild(img);\n\n    card.addEventListener(\"click\", function () {\n      openLightbox(index);\n    });\n\n    return card;\n  }\n\n  function renderWall() {\n    wall.innerHTML = \"\";\n\n    const itemsToRender = isTabletOrMobile()\n      ? moments.slice(0, visibleCount)\n      : moments;\n\n    itemsToRender.forEach(function (item, index) {\n      wall.appendChild(createCard(item, index));\n    });\n\n    if (isTabletOrMobile() && visibleCount < moments.length) {\n      loadMoreBtn.style.display = \"inline-flex\";\n    } else {\n      loadMoreBtn.style.display = \"none\";\n    }\n  }\n\n  function openLightbox(index) {\n    const item = moments[index];\n\n    currentIndex = index;\n\n    lightboxImage.src = item.full;\n    lightboxImage.alt = \"\";\n\n    lightboxImage.onerror = function () {\n      if (lightboxImage.src !== item.fullFallback) {\n        lightboxImage.src = item.fullFallback;\n      }\n    };\n\n    if (lightboxCaption) {\n      lightboxCaption.textContent = \"\";\n      lightboxCaption.style.display = \"none\";\n    }\n\n    lightbox.classList.add(\"is-open\");\n    lightbox.setAttribute(\"aria-hidden\", \"false\");\n    document.body.classList.add(\"pv-lightbox-open\");\n  }\n\n  function closeLightbox() {\n    lightbox.classList.remove(\"is-open\");\n    lightbox.setAttribute(\"aria-hidden\", \"true\");\n    document.body.classList.remove(\"pv-lightbox-open\");\n\n    setTimeout(function () {\n      if (!lightbox.classList.contains(\"is-open\")) {\n        lightboxImage.src = \"\";\n      }\n    }, 250);\n  }\n\n  function getLightboxLimit() {\n    return isTabletOrMobile() ? Math.min(visibleCount, moments.length) : moments.length;\n  }\n\n  function showNext() {\n    const limit = getLightboxLimit();\n    currentIndex = (currentIndex + 1) % limit;\n    openLightbox(currentIndex);\n  }\n\n  function showPrev() {\n    const limit = getLightboxLimit();\n    currentIndex = (currentIndex - 1 + limit) % limit;\n    openLightbox(currentIndex);\n  }\n\n  loadMoreBtn.addEventListener(\"click\", function () {\n    visibleCount = Math.min(visibleCount + 5, moments.length);\n    renderWall();\n  });\n\n  closeBtn.addEventListener(\"click\", closeLightbox);\n  nextBtn.addEventListener(\"click\", showNext);\n  prevBtn.addEventListener(\"click\", showPrev);\n\n  lightbox.addEventListener(\"click\", function (event) {\n    if (event.target === lightbox) {\n      closeLightbox();\n    }\n  });\n\n  document.addEventListener(\"keydown\", function (event) {\n    if (!lightbox.classList.contains(\"is-open\")) return;\n\n    if (event.key === \"Escape\") closeLightbox();\n    if (event.key === \"ArrowRight\") showNext();\n    if (event.key === \"ArrowLeft\") showPrev();\n  });\n\n  tabletMobileQuery.addEventListener(\"change\", function () {\n    visibleCount = isTabletOrMobile() ? 5 : moments.length;\n    renderWall();\n  });\n\n  renderWall();\n})();\n<\/script>\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>\u03a0\u03b1\u03bd\u03c4\u03bf\u03c4\u03b9\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03bc\u03bd\u03ae\u03c3\u03b5\u03b9\u03c2 \u0391\u03c5\u03b8\u03cc\u03c1\u03bc\u03b7\u03c4\u03b1 \u03c7\u03b1\u03bc\u03cc\u03b3\u03b5\u03bb\u03b1, \u03c0\u03cc\u03b6\u03b5\u03c2, \u03c6\u03af\u03bb\u03bf\u03b9, \u03b3\u03ad\u03bb\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03bc\u03b9\u03ba\u03c1\u03ad\u03c2 \u03b9\u03c3\u03c4\u03bf\u03c1\u03af\u03b5\u03c2 \u03b1\u03c0\u03cc \u03ba\u03bf\u03c1\u03c5\u03c6\u03b1\u03af\u03b1 events. \u039a\u03ac\u03bd\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03b5 \u03bc\u03b9\u03b1 \u03c6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03b7 \u03b4\u03b5\u03b9\u03c2 \u03bf\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b7. Load more \u00d7 \u2039 \u203a<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-915","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/pages\/915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/comments?post=915"}],"version-history":[{"count":22,"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/pages\/915\/revisions"}],"predecessor-version":[{"id":1217,"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/pages\/915\/revisions\/1217"}],"wp:attachment":[{"href":"https:\/\/photoboothvan.purepixels.digital\/en\/wp-json\/wp\/v2\/media?parent=915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}