Fatal error: Uncaught Exception: Error: Deadlock found when trying to get lock; try restarting transaction<br />Error No: 1213<br />REPLACE INTO `oc_mz_cache` SET `key` = 'mz_poco.megastore-1.29.0.layout.layout.2_g.entry_layout-l1USD0', `value` = '\"<div id=\\\"entry_521491\\\" class=\\\"\\\"><div class=\\\"entry-section container \\\"><div id=\\\"entry_521492\\\" data-id=\\\"521492\\\" class=\\\"entry-content content-breadcrumbs text-truncate \\\"><nav aria-label=\\\"breadcrumb\\\">\\n <ol class=\\\"breadcrumb\\\">\\n {% for breadcrumb in breadcrumbs|slice(0,-1) %}\\n <li class=\\\"breadcrumb-item\\\"><a href=\\\"{{ breadcrumb.href }}\\\" {{ \'fa-home\' in breadcrumb.text?\'aria-label=\\\"Home\\\"\' }}>{{ breadcrumb.text }}<\\/a><\\/li>\\n {% endfor %}\\n <li class=\\\"breadcrumb-item active\\\" aria-current=\\\"page\\\">{{ breadcrumbs|last.text }}<\\/li>\\n <\\/ol>\\n<\\/nav><\\/div><\\/div><\\/div><div id=\\\"entry_521493\\\" class=\\\"entry-section container-fluid \\\"><div id=\\\"entry_521494\\\" class=\\\"entry-row row d-sm-none d-lg-flex align-items-sm-start align-items-md-stretch align-items-xl-start \\\"><div id=\\\"entry_521495\\\" class=\\\"entry-col d-none d-sm-flex d-md-none d-lg-flex col-12 col-sm-2\\\"><div id=\\\"entry_521496\\\" data-id=\\\"521496\\\" class=\\\"entry-design design-carousel \\\"><div id=\\\"mz-carousel-521496\\\" class=\\\"carousel slide \\\" data-bs-ride=\\\"carousel\\\" data-bs-interval=\\\"5000\\\" data-bs-keyboard=\\\"true\\\" data-bs-pause=\\\"hover\\\" data-bs-wrap=\\\"true\\\">\\n <!-- Pagination -->\\n <ul class=\\\"carousel-indicators\\\">\\n <li data-bs-target=\\\"#mz-carousel-521496\\\" data-bs-slide-to=\\\"0\\\" class=\\\"active\\\"><\\/li>\\n <li data-bs-target=\\\"#mz-carousel-521496\\\" data-bs-slide-to=\\\"1\\\"><\\/li>\\n <\\/ul>\\n <!-- The slideshow -->\\n <div class=\\\"carousel-inner\\\">\\n <div class=\\\"carousel-item active\\\">\\n\\n <a href=\\\"https:\\/\\/www.sunshinenovelty.com\\/index.php?route=information\\/information&amp;information_id=37\\\" class=\\\"d-block w-100\\\"> <img class=\\\"d-block img-fluid w-100\\\" alt=\\\"\\\" src=\\\"https:\\/\\/www.sunshinenovelty.com\\/image\\/cache\\/catalog\\/0%20Banners%20Home\\/SIDE-BANNER-PRICEMATCH-321x569.webp\\\" width=\\\"321\\\" height=\\\"569\\\" \\/>\\n <\\/a> <\\/div>\\n <div class=\\\"carousel-item \\\">\\n\\n <a href=\\\"https:\\/\\/www.sunshinenovelty.com\\/index.php?route=product\\/manufacturer\\/info&amp;manufacturer_id=2251\\\" class=\\\"d-block w-100\\\"> <img class=\\\"d-block img-fluid w-100\\\" alt=\\\"\\\" src=\\\"https:\\/\\/www.sunshinenovelty.com\\/image\\/cache\\/catalog\\/0%20Banners%20Titulos-Categories\\/VENOM-SIDE-EXTREME-321x569.webp\\\" width=\\\"321\\\" height=\\\"569\\\" \\/>\\n <\\/a> <\\/div>\\n <\\/div>\\n <!-- Left and right controls -->\\n <a class=\\\"carousel-control-prev\\\" href=\\\"#mz-carousel-521496\\\" role=\\\"button\\\" data-bs-slide=\\\"prev\\\">\\n <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"><\\/span><span class=\\\"visually-hidden\\\">Previous<\\/span>\\n <\\/a>\\n <a class=\\\"carousel-control-next\\\" href=\\\"#mz-carousel-521496\\\" role=\\\"button\\\" data-bs-slide=\\\"next\\\">\\n <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"><\\/span><span class=\\\"visually-hidden\\\">Next<\\/span>\\n <\\/a>\\n <\\/div><\\/div><\\/div><div id=\\\"entry_521497\\\" class=\\\"entry-col d-none d-sm-flex col-12 col-sm-4 order-sm-1 order-md-0 order-lg-1 flex-lg-column\\\"><div id=\\\"entry_521498\\\" data-id=\\\"521498\\\" class=\\\"entry-content content-image d-none d-md-block align-self-xl-start\\\">{% set additional_image_status = images and true %}\\n{% set video_status = mz_videos and true %}\\n\\n<div id=\\\"image-gallery-521498\\\" class=\\\"image-gallery thumbnails thumbnail-bottom d-flex\\\">\\n {% if thumb %}\\n <div class=\\\"image-thumb d-flex\\\">\\n\\n <div class=\\\"image-gallery-overlay\\\">\\n {% if mz_wishlist %}\\n <button type=\\\"button\\\" class=\\\"btn btn-wishlist wishlist-{{ product_id }} wished\\\" data-wishlist=\\\"1\\\" title=\\\"{{ button_remove }}\\\" onclick=\\\"wishlist.add(\'{{ product_id }}\', this);\\\"><i class=\\\"fas fa-heart\\\"><\\/i><i class=\\\"far fa-heart\\\"><\\/i><\\/button>\\n {% else %}\\n <button type=\\\"button\\\" class=\\\"btn btn-wishlist wishlist-{{ product_id }}\\\" data-wishlist=\\\"0\\\" title=\\\"{{ button_wishlist }}\\\" onclick=\\\"wishlist.add(\'{{ product_id }}\', this);\\\"><i class=\\\"fas fa-heart\\\"><\\/i><i class=\\\"far fa-heart\\\"><\\/i><\\/button>\\n {% endif %}\\n <\\/div>\\n\\n {% for position, labels in mz_labels %} {# Product label #}\\n <div class=\\\"product-label {{ position }}\\\">{% for label in labels %}<div class=\\\"{{ label.class }}\\\" style=\\\"{{ label.style }}\\\">{{ label.text }}<\\/div>{% endfor %}<\\/div>\\n {% endfor %}\\n \\n <a class=\\\"thumbnail mfp-image\\\" href=\\\"{{ popup }}\\\" title=\\\"{{ heading_title }}\\\"><img src=\\\"{{ thumb }}\\\" {% if mz_thumb_srcset %}srcset=\\\"{{ mz_thumb_srcset }}\\\"{% endif %} sizes=\\\"(min-width: 1360px) 600px,(min-width: 768px) 300px,400px\\\" class=\\\"img-fluid d-block w-100\\\" title=\\\"{{ heading_title }}\\\" alt=\\\"{{ heading_title }}\\\" \\/><\\/a>\\n <\\/div>\\n {% endif %}\\n \\n {% if additional_image_status or video_status %}\\n <div class=\\\"image-additional\\\">\\n <div class=\\\"swiper\\\" dir=\\\"ltr\\\">\\n <div class=\\\"swiper-wrapper\\\">\\n {% for video in mz_videos %}\\n <div class=\\\"swiper-slide\\\">\\n <a class=\\\"thumbnail mfp-iframe\\\" href=\\\"{{ video.href }}\\\" title=\\\"{{ video.title }}\\\">{% if video.thumb %}<img src=\\\"{{ video.thumb }}\\\" alt=\\\"{{ heading_title }}\\\" \\/>{% else %}<i class=\\\"far fa-play-circle\\\"><\\/i>{% endif %}<\\/a>\\n <\\/div>\\n {% endfor %}\\n {% for image in images %}\\n <div class=\\\"swiper-slide\\\">\\n <a class=\\\"thumbnail mfp-image\\\" href=\\\"{{ image.popup }}\\\" title=\\\"{{ heading_title }}\\\"><img src=\\\"{{ image.thumb }}\\\" {% if image.srcset %}srcset=\\\"{{ image.srcset }}\\\"{% endif %} sizes=\\\"(min-width: 1360px) 60px,(min-width: 768px) 30px,40px\\\" title=\\\"{{ heading_title }}\\\" alt=\\\"{{ heading_title }}\\\" \\/><\\/a>\\n <\\/div>\\n {% endfor %}\\n \\n <\\/div>\\n \\n <div class=\\\"mz-button-prev vertical\\\"><i class=\\\"fas fa-chevron-up\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-next vertical\\\"><i class=\\\"fas fa-chevron-down\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-prev horizontal\\\"><i class=\\\"fas fa-chevron-left\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-next horizontal\\\"><i class=\\\"fas fa-chevron-right\\\"><\\/i><\\/div>\\n <\\/div>\\n <\\/div>\\n {% endif %}\\n<\\/div>\\n<script>\\n$(function(){\\n new Swiper(\'#image-gallery-521498 .swiper\', {\\n slidesPerView: 10,\\n navigation: {\\n nextEl: \'#image-gallery-521498 .mz-button-next\',\\n prevEl: \'#image-gallery-521498 .mz-button-prev\',\\n },\\n });\\n});\\n$(function(){\\n $(\'#image-gallery-521498\').magnificPopup({\\n delegate: \'a.thumbnail\',\\n gallery: {\\n enabled: true\\n },\\n iframe: {\\n patterns: {\\n youtube: {\\n index: \'youtube.com\\/\',\\n id: function (url) { return url },\\n src: \'%id%\'\\n },\\n vimeo: {\\n index: \'vimeo.com\\/\',\\n id: function (url) { return url },\\n src: \'%id%\'\\n }\\n }\\n }\\n });\\n});\\n<\\/script><\\/div><div id=\\\"entry_521499\\\" data-id=\\\"521499\\\" class=\\\"entry-design design-tabs order-md-1\\\"><div class=\\\"clearfix\\\">\\n <div class=\\\"\\\">\\n <ul class=\\\"nav nav-tabs active-first\\\" role=\\\"tablist\\\">\\n {% if description %} <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-521499-0\\\" role=\\\"tab\\\">\\n Description<\\/a>\\n <\\/li>\\n {% endif %} {% if attribute_groups %} <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-521499-1\\\" role=\\\"tab\\\">\\n Specification<\\/a>\\n <\\/li>\\n {% endif %} {% for key, tab in mz_hook.fetch(\'tab\') %}\\n <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-hook-521499-{{ key }}\\\" role=\\\"tab\\\">\\n {{ tab.title }}<\\/a>\\n <\\/li>\\n {% endfor %}\\n <\\/ul>\\n <\\/div>\\n<\\/div>\\n<div class=\\\"tab-content\\\">\\n {% if description %} <div id=\\\"mz-design-tab-521499-0\\\" class=\\\"tab-pane fade\\\"><div class=\\\"entry-content content-description\\\"><div class=\\\"description text-collapsed\\\" style=\\\"text-align: justify;\\\" data-line=\\\"25\\\" data-showtext=\\\"<i class=\'fas fa-angle-down\'><\\/i> {{ text_showmore }}\\\" data-hidetext=\\\"<i class=\'fas fa-angle-up\'><\\/i> {{ text_showless }}\\\">{{ description }}<\\/div>\\n<\\/div><\\/div>\\n {% endif %} {% if attribute_groups %} <div id=\\\"mz-design-tab-521499-1\\\" class=\\\"tab-pane fade\\\"><div class=\\\"entry-content content-specification\\\"><div class=\\\"table-responsive\\\">\\n <table class=\\\"table table-md table-bordered \\\">\\n {% for attribute_group in attribute_groups %}\\n <thead class=\\\"table-light\\\">\\n <tr>\\n <th colspan=\\\"2\\\"><strong><img src=\\\"https:\\/\\/www.sunshinenovelty.com\\/image\\/display-icon-v2.svg\\\" width=\\\"30\\\"> {{ attribute_group.name }}<\\/strong><\\/th>\\n <\\/tr>\\n <\\/thead>\\n <tbody>\\n {% for attribute in attribute_group.attribute %}\\n <tr>\\n <td>{{ attribute.name }}<\\/td>\\n <td>{{ attribute.text }}<\\/td>\\n <\\/tr>\\n {% endfor %}\\n <\\/tbody>\\n {% endfor %}\\n <\\/table>\\n<\\/div>\\n\\n\\n\\n\\n\\n<\\/div><\\/div>\\n {% endif %} {% for key, tab in mz_hook.fetch(\'tab\') %}\\n <div id=\\\"mz-design-tab-hook-521499-{{ key }}\\\" class=\\\"tab-pane fade\\\">{{ tab.content }}<\\/div>\\n {% endfor %}\\n <\\/div><\\/div><\\/div><div id=\\\"entry_521500\\\" class=\\\"entry-col sticky-lg-top col-12 col-sm-4 order-sm-2 order-md-1 order-lg-2 flex-column flex-sm-row flex-lg-column\\\"><div id=\\\"entry_521501\\\" data-id=\\\"521501\\\" class=\\\"entry-content content-title fw-normal align-self-xl-start\\\"><h1 class=\\\"h4\\\">{{ heading_title }}<\\/h1><\\/div><div id=\\\"entry_521502\\\" data-id=\\\"521502\\\" class=\\\"entry-content content-image d-lg-none order-1 order-sm-2 order-lg-1\\\">{% set additional_image_status = images and true %}\\n{% set video_status = mz_videos and true %}\\n\\n<div id=\\\"image-gallery-521502\\\" class=\\\"image-gallery thumbnails thumbnail-bottom d-flex\\\">\\n {% if thumb %}\\n <div class=\\\"image-thumb d-flex\\\">\\n\\n <div class=\\\"image-gallery-overlay\\\">\\n {% if mz_wishlist %}\\n <button type=\\\"button\\\" class=\\\"btn btn-wishlist wishlist-{{ product_id }} wished\\\" data-wishlist=\\\"1\\\" title=\\\"{{ button_remove }}\\\" onclick=\\\"wishlist.add(\'{{ product_id }}\', this);\\\"><i class=\\\"fas fa-heart\\\"><\\/i><i class=\\\"far fa-heart\\\"><\\/i><\\/button>\\n {% else %}\\n <button type=\\\"button\\\" class=\\\"btn btn-wishlist wishlist-{{ product_id }}\\\" data-wishlist=\\\"0\\\" title=\\\"{{ button_wishlist }}\\\" onclick=\\\"wishlist.add(\'{{ product_id }}\', this);\\\"><i class=\\\"fas fa-heart\\\"><\\/i><i class=\\\"far fa-heart\\\"><\\/i><\\/button>\\n {% endif %}\\n <\\/div>\\n\\n {% for position, labels in mz_labels %} {# Product label #}\\n <div class=\\\"product-label {{ position }}\\\">{% for label in labels %}<div class=\\\"{{ label.class }}\\\" style=\\\"{{ label.style }}\\\">{{ label.text }}<\\/div>{% endfor %}<\\/div>\\n {% endfor %}\\n \\n <a class=\\\"thumbnail mfp-image\\\" href=\\\"{{ popup }}\\\" title=\\\"{{ heading_title }}\\\"><img src=\\\"{{ thumb }}\\\" {% if mz_thumb_srcset %}srcset=\\\"{{ mz_thumb_srcset }}\\\"{% endif %} sizes=\\\"(min-width: 1360px) 600px,(min-width: 768px) 300px,400px\\\" class=\\\"img-fluid d-block w-100\\\" title=\\\"{{ heading_title }}\\\" alt=\\\"{{ heading_title }}\\\" \\/><\\/a>\\n <\\/div>\\n {% endif %}\\n \\n {% if additional_image_status or video_status %}\\n <div class=\\\"image-additional\\\">\\n <div class=\\\"swiper\\\" dir=\\\"ltr\\\">\\n <div class=\\\"swiper-wrapper\\\">\\n {% for video in mz_videos %}\\n <div class=\\\"swiper-slide\\\">\\n <a class=\\\"thumbnail mfp-iframe\\\" href=\\\"{{ video.href }}\\\" title=\\\"{{ video.title }}\\\">{% if video.thumb %}<img src=\\\"{{ video.thumb }}\\\" alt=\\\"{{ heading_title }}\\\" \\/>{% else %}<i class=\\\"far fa-play-circle\\\"><\\/i>{% endif %}<\\/a>\\n <\\/div>\\n {% endfor %}\\n {% for image in images %}\\n <div class=\\\"swiper-slide\\\">\\n <a class=\\\"thumbnail mfp-image\\\" href=\\\"{{ image.popup }}\\\" title=\\\"{{ heading_title }}\\\"><img src=\\\"{{ image.thumb }}\\\" {% if image.srcset %}srcset=\\\"{{ image.srcset }}\\\"{% endif %} sizes=\\\"(min-width: 1360px) 60px,(min-width: 768px) 30px,40px\\\" title=\\\"{{ heading_title }}\\\" alt=\\\"{{ heading_title }}\\\" \\/><\\/a>\\n <\\/div>\\n {% endfor %}\\n \\n <\\/div>\\n \\n <div class=\\\"mz-button-prev vertical\\\"><i class=\\\"fas fa-chevron-up\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-next vertical\\\"><i class=\\\"fas fa-chevron-down\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-prev horizontal\\\"><i class=\\\"fas fa-chevron-left\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-next horizontal\\\"><i class=\\\"fas fa-chevron-right\\\"><\\/i><\\/div>\\n <\\/div>\\n <\\/div>\\n {% endif %}\\n<\\/div>\\n<script>\\n$(function(){\\n new Swiper(\'#image-gallery-521502 .swiper\', {\\n slidesPerView: 10,\\n navigation: {\\n nextEl: \'#image-gallery-521502 .mz-button-next\',\\n prevEl: \'#image-gallery-521502 .mz-button-prev\',\\n },\\n });\\n});\\n$(function(){\\n $(\'#image-gallery-521502\').magnificPopup({\\n delegate: \'a.thumbnail\',\\n gallery: {\\n enabled: true\\n },\\n iframe: {\\n patterns: {\\n youtube: {\\n index: \'youtube.com\\/\',\\n id: function (url) { return url },\\n src: \'%id%\'\\n },\\n vimeo: {\\n index: \'vimeo.com\\/\',\\n id: function (url) { return url },\\n src: \'%id%\'\\n }\\n }\\n }\\n });\\n});\\n<\\/script><\\/div><div id=\\\"entry_521503\\\" data-id=\\\"521503\\\" class=\\\"entry-content content-extra order-3 order-sm-4 order-lg-1\\\"><ul class=\\\"list-unstyled m-0\\\">\\n \\n\\n\\n\\n\\n\\n\\n\\n{% if mz_extra.mpn %}\\n\\n<li>\\n <a class=\\\"pseudo\\\">\\n<i class=\\\"icon fas fa-bullhorn text-dark align-middle\\\" style=\\\"\\/* width:15px; *\\/float:left;padding-left: 10px;position: absolute;padding-top: 2px;\\/* align-self: center; *\\/\\/* vertical-align: middle; *\\/\\\"><\\/i>\\n<div class=\\\"marquee-container\\\">\\n <svg width=\\\"85%\\\" height=\\\"1.2rem\\\" viewBox=\\\"0 0 400 1\\\">\\n <defs>\\n <!-- marquee way -->\\n <path id=\\\"text-path\\\" d=\\\"M 0 0, 400 0\\\" fill=\\\"transparent\\\"\\/>\\n <\\/defs>\\n\\n <!-- Text -->\\n <text font-size=\\\"1.2rem\\\" fill=\\\"#020203\\\" class=\\\"uppercase-text\\\" text-anchor=\\\"middle\\\" dominant-baseline=\\\"middle\\\">\\n <textPath id=\\\"marquee-text\\\" href=\\\"#text-path\\\">\\n <!-- Text adds in JavaScript -->\\n <\\/textPath>\\n <\\/text>\\n <\\/svg>\\n <\\/div>\\n<\\/a>\\n \\n <\\/li>\\n<!--<li><span class=\\\"ls-label\\\">{{ text_mpn }}<\\/span> <span>{{ mz_extra.mpn }}<\\/span><\\/li>-->\\n{% endif %}\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n<\\/ul>\\n\\n\\n<style>\\n .pseudo {\\n display: block;\\n position: relative;\\n border-radius: 1em;\\n background: #FFF;\\n height:22px;\\n width: 290px;\\n}\\n.pseudo:after {\\n position: absolute;\\n z-index: -1;\\n top: -2px;\\n bottom: -2px;\\n right: -2px;\\n left: -2px;\\n background: linear-gradient(to right, #fd7e14 0%, #ffc107 100%);\\n border-radius: 1em;\\n content: \'\';\\n}\\n\\n.marquee-container {\\n overflow: hidden;\\n position: relative;\\n margin-left:40px;\\n width:280px;\\n}\\n\\n.uppercase-text {\\n text-transform: uppercase;\\n}\\n\\n\\/* Media *\\/\\n@media (max-width: 768px) {\\n text {\\n font-size: 2rem;\\n }\\n}\\n\\n@media (max-width: 480px) {\\n text {\\n font-size: 1.4rem; \\n }\\n}\\n\\n\\/* Background size *\\/\\npath {\\n stroke-width: 2rem;\\n}\\n\\n@media (max-width: 768px) {\\n path {\\n stroke-width: 6rem; \\n }\\n}\\n\\n@media (max-width: 480px) {\\n path {\\n stroke-width: 8rem;\\n }\\n}\\n \\n<\\/style>\\n\\n<script>\\n function startMarquee(id, pathId, content, speed) {\\n const textPath = document.getElementById(id);\\n const path = document.getElementById(pathId);\\n const pathLength = path.getTotalLength();\\n textPath.innerHTML = content;\\n\\n let offset = 0;\\n\\n function animateText() {\\n offset -= speed;\\n if (offset < 0) {\\n offset = pathLength;\\n } else if (offset > pathLength) {\\n offset = 0;\\n }\\n textPath.setAttribute(\'startOffset\', `${offset}px`);\\n requestAnimationFrame(animateText);\\n }\\n\\n animateText();\\n }\\n\\n document.addEventListener(\'DOMContentLoaded\', () => {\\n const textContent1 = \'<a style=\\\"text-decoration: none;\\\">{{ mz_extra.mpn }} &nbsp;&nbsp;\\u26a1&nbsp;&nbsp;<\\/a>\'.repeat(20);\\n startMarquee(\'marquee-text\', \'text-path\', textContent1, -0.5);\\n });\\n\\n<\\/script><\\/div><div id=\\\"entry_521504\\\" data-id=\\\"521504\\\" class=\\\"entry-design design-horizontal_line order-6 order-sm-5 order-lg-3 order-xl-2\\\"><hr\\/><\\/div><div id=\\\"entry_521505\\\" class=\\\"entry-row row order-4 order-sm-6 order-lg-4 order-xl-3 align-items-lg-start g-0 \\\"><div id=\\\"entry_521506\\\" class=\\\"entry-col col-12 justify-content-between justify-content-xl-start align-items-center align-items-xl-start flex-wrap flex-sm-nowrap\\\"><div id=\\\"entry_521507\\\" data-id=\\\"521507\\\" class=\\\"entry-content content-extra align-self-xl-start\\\"><ul class=\\\"list-unstyled m-0\\\">\\n \\n{% if manufacturer %}\\n<li><span class=\\\"ls-label\\\">{{ text_brand }}:<\\/span> <a class=\\\"text-decoration-none\\\" href=\\\"{{ manufacturers }}\\\">{{ manufacturer }}<\\/a><\\/li>\\n{% endif %}\\n\\n\\n{% if mz_extra.sku %}\\n<li><span class=\\\"ls-label\\\">{{ text_sku }}<\\/span> <span>{{ mz_extra.sku }}<\\/span><\\/li>\\n{% endif %}\\n\\n\\n\\n\\n\\n\\n\\n{% if mz_extra.viewed > 0 %}\\n<li><span class=\\\"ls-label\\\">{{ text_viewed }}<\\/span> <span>{{ mz_extra.viewed }}<\\/span><\\/li>\\n{% endif %}\\n\\n\\n\\n\\n\\n\\n\\n\\n<li><span class=\\\"ls-label\\\">{{ text_stock }}<\\/span>\\n {% if quantity <= 0 %}\\n <span class=\'badge text-bg-danger\'>{{ stock }}<\\/span>\\n {% else %}\\n <span class=\'badge text-bg-success\'>{{ stock }}<\\/span>\\n {% endif %}\\n <\\/li>\\n<\\/ul>\\n\\n\\n<style>\\n .pseudo {\\n display: block;\\n position: relative;\\n border-radius: 1em;\\n background: #FFF;\\n height:22px;\\n width: 290px;\\n}\\n.pseudo:after {\\n position: absolute;\\n z-index: -1;\\n top: -2px;\\n bottom: -2px;\\n right: -2px;\\n left: -2px;\\n background: linear-gradient(to right, #fd7e14 0%, #ffc107 100%);\\n border-radius: 1em;\\n content: \'\';\\n}\\n\\n.marquee-container {\\n overflow: hidden;\\n position: relative;\\n margin-left:40px;\\n width:280px;\\n}\\n\\n.uppercase-text {\\n text-transform: uppercase;\\n}\\n\\n\\/* Media *\\/\\n@media (max-width: 768px) {\\n text {\\n font-size: 2rem;\\n }\\n}\\n\\n@media (max-width: 480px) {\\n text {\\n font-size: 1.4rem; \\n }\\n}\\n\\n\\/* Background size *\\/\\npath {\\n stroke-width: 2rem;\\n}\\n\\n@media (max-width: 768px) {\\n path {\\n stroke-width: 6rem; \\n }\\n}\\n\\n@media (max-width: 480px) {\\n path {\\n stroke-width: 8rem;\\n }\\n}\\n \\n<\\/style>\\n\\n<script>\\n function startMarquee(id, pathId, content, speed) {\\n const textPath = document.getElementById(id);\\n const path = document.getElementById(pathId);\\n const pathLength = path.getTotalLength();\\n textPath.innerHTML = content;\\n\\n let offset = 0;\\n\\n function animateText() {\\n offset -= speed;\\n if (offset < 0) {\\n offset = pathLength;\\n } else if (offset > pathLength) {\\n offset = 0;\\n }\\n textPath.setAttribute(\'startOffset\', `${offset}px`);\\n requestAnimationFrame(animateText);\\n }\\n\\n animateText();\\n }\\n\\n document.addEventListener(\'DOMContentLoaded\', () => {\\n const textContent1 = \'<a style=\\\"text-decoration: none;\\\">{{ mz_extra.mpn }} &nbsp;&nbsp;\\u26a1&nbsp;&nbsp;<\\/a>\'.repeat(20);\\n startMarquee(\'marquee-text\', \'text-path\', textContent1, -0.5);\\n });\\n\\n<\\/script><\\/div><div id=\\\"entry_521508\\\" data-id=\\\"521508\\\" class=\\\"entry-content content-specification order-2 order-md-1 flex-grow-0 flex-sm-grow-1 flex-shrink-0 flex-sm-shrink-1 align-self-end align-self-sm-auto align-self-xl-start\\\"><ul class=\\\"nav nav-tabs\\\" role=\\\"tablist\\\" style=\\\"margin-bottom: 0;\\\">\\n {% for key, attribute_group in attribute_groups %}\\n <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link{% if not key %} active{% endif %}\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#attribute-tab-pane-521508-{{ key }}\\\" role=\\\"tab\\\">\\n \\n <img src=\\\"https:\\/\\/www.sunshinenovelty.com\\/image\\/display-icon-v2.svg\\\" width=\\\"25\\\" class=\\\"me-2 text-dark\\\">\\n {{ attribute_group.name }}\\n <\\/a>\\n <\\/li>\\n {% endfor %}\\n<\\/ul>\\n<div class=\\\"tab-content\\\">\\n {% for key, attribute_group in attribute_groups %}\\n <div class=\\\"tab-pane fade{% if not key %} show active{% endif %}\\\" id=\\\"attribute-tab-pane-521508-{{ key }}\\\" role=\\\"tabpanel\\\">\\n <table class=\\\"mb-0 table table-borderless table-sm \\\">\\n <tbody>\\n {% for attribute in attribute_group.attribute %}\\n <tr>\\n <td>{{ attribute.name }}<\\/td>\\n <td>{{ attribute.text }}<\\/td>\\n <\\/tr>\\n {% endfor %}\\n <\\/tbody>\\n <\\/table>\\n <\\/div>\\n {% endfor %}\\n<\\/div><\\/div><div id=\\\"entry_521509\\\" data-id=\\\"521509\\\" class=\\\"entry-content content-brand order-1 order-md-2 flex-xl-grow-0 flex-xl-shrink-0 align-self-start align-self-sm-end align-self-md-auto align-self-xl-start\\\">{% if mz_manufacturer_image %}\\n<figure class=\\\"figure m-0\\\">\\n <a href=\\\"{{ manufacturers }}\\\"><img src=\\\"{{ mz_manufacturer_image }}\\\" class=\\\"img-fluid img-thumbnail\\\" alt=\\\"{{ manufacturer }}\\\"><\\/a>\\n <\\/figure>\\n{% endif %}<\\/div><\\/div><\\/div><div id=\\\"entry_521510\\\" class=\\\"entry-row row order-2 order-sm-1 order-lg-2 order-xl-4 \\\"><div id=\\\"entry_521511\\\" class=\\\"entry-col d-none d-sm-flex col-12\\\"><div id=\\\"entry_521512\\\" data-id=\\\"521512\\\" class=\\\"entry-design design-horizontal_line d-lg-none d-xl-block align-self-xl-stretch\\\"><hr\\/><\\/div><\\/div><\\/div><div id=\\\"entry_521513\\\" class=\\\"entry-row row order-7 order-lg-5 \\\"><div id=\\\"entry_521514\\\" class=\\\"entry-col col-12 align-items-center align-items-xl-start flex-wrap\\\"><div id=\\\"entry_521515\\\" data-id=\\\"521515\\\" class=\\\"entry-content content-price \\\"><div class=\\\"d-flex flex-wrap align-items-center\\\">\\n{% if price %}\\n<div class=\\\"price text-center\\\">\\n {% if not special %}\\n <h3 data-update=\\\"price\\\" class=\\\"price-new mb-0\\\">{{ price }}<\\/h3>\\n {% else %}\\n <h3 data-update=\\\"special\\\" class=\\\"price-new special mb-0\\\">{{ special }}<\\/h3>\\n <span data-update=\\\"price\\\" class=\\\"price-old text-danger\\\" style=\\\"text-decoration: line-through;\\\">{{ price }}<\\/span>\\n <span data-update=\\\"special-discount\\\" class=\\\"price-sale\\\">{{ mz_sale }}<\\/span>\\n {% endif %}\\n \\n<\\/div>\\n{% endif %}\\n<\\/div><\\/div><div id=\\\"entry_521516\\\" data-id=\\\"521516\\\" class=\\\"entry-content content-countdown text-center order-2 order-lg-1 flex-grow-0 flex-shrink-0 align-self-xl-center\\\">{% if price %}\\n{% if mz_special_expire_at or mz_special_sold %}\\n<div class=\\\"deal-status\\\">\\n {% if mz_special_sold_perc %}\\n <div class=\\\"progress mb-1\\\"><div class=\\\"progress-bar bg-secondary\\\" role=\\\"progressbar\\\" style=\\\"width: {{ mz_special_sold_perc }}%\\\" aria-valuenow=\\\"{{ mz_special_sold_perc }}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"><\\/div><\\/div>\\n {% endif %}\\n <div class=\\\"deal-info d-flex flex-wrap\\\">\\n {% if mz_special_sold %}\\n <span class=\\\"claimed text-secondary me-3\\\">{{ mz_special_sold_text }}<\\/span>\\n {% endif %}\\n {% if mz_special_expire_at %}\\n <span class=\\\"countdown\\\">{{ text_endin }} <span data-countdown=\\\"{{ mz_special_expire_at }}\\\" data-compact=\\\"true\\\"><\\/span><\\/span>\\n {% endif %}\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% endif %}<\\/div><div id=\\\"entry_521517\\\" data-id=\\\"521517\\\" class=\\\"entry-widget widget-html order-1 order-lg-2\\\">{% if logged %}\\r\\n <a class=\\\"d-none hidden icon-left both nav-link\\\" href=\\\"https:\\/\\/www.sunshinenovelty.com\\/index.php?route=account\\/account\\\"> \\r\\n\\r\\n <\\/a>\\r\\n \\r\\n{% else %}\\r\\n <a class=\\\"icon-left both nav-link\\\" href=\\\"https:\\/\\/www.sunshinenovelty.com\\/index.php?route=account\\/login\\\"> \\r\\n\\r\\n <div class=\\\"info pb-1\\\"> \\r\\n <span class=\\\"title text-black fw-bold\\\">\\r\\n <i class=\\\"fa-solid fa-triangle-exclamation\\\"><\\/i> Log in to access pricing information.<\\/span>\\r\\n <\\/div>\\r\\n <\\/a> \\r\\n{% endif %}<\\/div><\\/div><div id=\\\"entry_521518\\\" class=\\\"entry-col col-12 order-1 align-items-center align-items-xl-start flex-wrap\\\"><div id=\\\"entry_521519\\\" data-id=\\\"521519\\\" class=\\\"entry-widget widget-html \\\"><div class=\\\"alert alert-primary alert-dismissible pt-1 pb-1 small\\\" role=\\\"alert\\\">\\r\\n <p id=\\\"p1\\\"><\\/p>\\r\\n<\\/div>\\r\\n\\r\\n<script>\\r\\n\\r\\n\\/\\/ Array con los d\\u00edas festivos de cada mes (ejemplo de muestra)\\r\\n\\/\\/ N\\u00f3tese que si un mes no tiene festivos debemos incluir igualmente un array vac\\u00edo, (ejemplo: Noviembre)\\r\\nconst festivos = [[1],[4, 11, 18, 25],[],[],[4, 11, 18, 25],[1,8,15,22,29],[6,13,20,27],[3,10,17,24,31],[7,14,21,28],[5,12,19,26],[2,9,16,23,30],[7,14,21,28,25]];\\r\\n\\r\\n\\/\\/ JavaScript usa como est\\u00e1ndar el formato de fecha ISO (YYYY-MM-DD)\\r\\n\\/\\/ const diaPedido = new Date(\'2019-01-04\');\\r\\n\\/\\/ Leyendo un poco tu comentario con m\\u00e1s atenci\\u00f3n veo que la fecha de pedido\\r\\n\\/\\/ es la fecha actual, por lo tanto edito para que la respuesta se ajuste a tu pregunta\\r\\n\\r\\nconst diaPedido = new Date(Date.now());\\r\\ndiaPedido.toDateString(); \\r\\n\\r\\n\\/\\/ Construimos la fecha usando como par\\u00e1metro el valor devuelto por Date.now().\\r\\n\\r\\n\\/\\/ La siguiente funci\\u00f3n recibe como par\\u00e1metros:\\r\\n\\/\\/ diaPedido: Es el d\\u00eda inicial, (cuando se recibe un pedido), tipo: Date\\r\\n\\/\\/ diasPactados: Es la cantidad de d\\u00edas laborales que han sido pactados para entrega, tipo: Number\\r\\n\\/\\/ festivos: Es el Array que hemos inicializado anteriormente y contiene los d\\u00edas festivos del a\\u00f1o, tipo: Array\\r\\n\\/\\/ Se espera que los d\\u00edas festivos sean fijos de a\\u00f1o en a\\u00f1o, pero pudieran modificarse.\\r\\n\\/\\/ As\\u00ed que s\\u00f3lo hay que asegurarse de pasar el array de festivos mas actualizado a la funci\\u00f3n.\\r\\n\\r\\nfunction calculaEntrega(diaPedido, diasPactados, festivos) {\\r\\n \\/\\/ diaPropuesto: almacena el mismo valor de diaPedido, en caso que diasPactados = 0, la funci\\u00f3n \\r\\n \\/\\/ devolver\\u00e1 el valor de diaPedido (para mi tiene l\\u00f3gica)\\r\\n let diaPropuesto = new Date(diaPedido.getFullYear(), diaPedido.getMonth(), diaPedido.getDate());\\r\\n\\r\\n\\r\\n \\/\\/ iniciamos un contador en 1 para calcular la fecha de diaPropuesto.\\r\\n let i = 1;\\r\\n \\r\\n \\/\\/ El siguiente bucle se ejecutar\\u00e1 hasta que se consuman los diasPactados\\r\\n while (diasPactados > 0 ) {\\r\\n \\/\\/ En cada iteraci\\u00f3n asumimos que el d\\u00eda no es festivo\\r\\n let festivo = false;\\r\\n \\/\\/ incrementamos en 1 el diaPropuesto para efectuar las verificaciones\\r\\n diaPropuesto = new Date(diaPedido.getFullYear(), diaPedido.getMonth(), diaPedido.getDate() + i);\\r\\n \\/\\/ N\\u00f3tese que usamos formato ISO y solo incrementamos el d\\u00eda, dejando el mes y el a\\u00f1o iguales\\r\\n \\/\\/ Alguien preguntar\\u00e1: \\u00bfY que pasa si la fecha es, digamos, 31 de Enero y le aumentamos 1 d\\u00eda?\\r\\n \\/\\/ Pues la respuesta l\\u00f3gica es que dar\\u00eda 32 de Enero, lo cual no es una fecha v\\u00e1lida.\\r\\n \\/\\/ Sin embargo, JavaScript es un poco mas atento que nosotros y simplemente realiza la aritm\\u00e9tica\\r\\n \\/\\/ necesaria para convertir el 32 de Enero en 01 de Febrero, y as\\u00ed nos salva el pellejo.\\r\\n \\/\\/ V\\u00e9ase bien que usamos los m\\u00e9todos getFullYear(), getMonth() y getDate().\\r\\n \\/\\/ Esto funciona siempre y cuando hagamos la construcci\\u00f3n del objeto Date de esta manera.\\r\\n \\/\\/ Ya ir\\u00e1 alguno de avispado y pondr\\u00e1: fecha = new Date(\'2019-01-32\'); lo cual le dar\\u00e1 \'fecha inv\\u00e1lida\'\\r\\n \\/\\/ Alguien un poco mas versado puede aclarar este asunto, pero no es el objetivo en este momento.\\r\\n\\r\\n if (diaPropuesto.getDay() > 0 && diaPropuesto.getDay() < 6) {\\r\\n \\/\\/ Aqu\\u00ed hemos usado el metodo getDay() del objeto Date, este metodo devuelve un valor entero entre 0 y 6,\\r\\n \\/\\/ donde 0: Domingo, 1: Lunes, ... , 6: Sabado.\\r\\n \\/\\/ Los d\\u00edas laborables van del 1 al 5 (ambos inclusive)\\r\\n \\r\\n \\/\\/ Si el d\\u00eda es laborable debemos entonces verificar si es festivo\\r\\n \\r\\n \\/\\/ Aqu\\u00ed es importante que entendamos lo siguiente:\\r\\n \\/\\/ * Por cada iteraci\\u00f3n debemos obtener el mes en el que estamos comprobando el festivo\\r\\n \\/\\/ * Vamos a comparar el d\\u00eda propuesto con el Array de festivos, usando el mes correspondiente\\r\\n\\r\\n let m = diaPropuesto.getMonth();\\r\\n let dia = diaPropuesto.getDate();\\r\\n \\r\\n \\r\\n\\r\\n \\/\\/ Felizmente para nosotros el metodo getMonth() devuelve un entero entre 0 y 11, que se\\r\\n \\/\\/ corresponde con cada mes del a\\u00f1o, y digo felizmente, porque los \\u00edndices de nuestro Array\\r\\n \\/\\/ van de 0 a 11 tambi\\u00e9n.\\r\\n\\r\\n for (let d in festivos[m]) {\\r\\n if (dia === festivos[m][d]) {\\r\\n festivo = true;\\r\\n \\/\\/Aqu\\u00ed no hay mucho que aclarar, si es festivo ya no sigo comprobando el resto del mes.\\r\\n break;\\r\\n }\\r\\n } \\/\\/ Fin bucle for\\r\\n\\r\\n if (!festivo) {\\r\\n \\/\\/ Si las condiciones son: Laborable y No Festivo, descuento el diaPactado.\\r\\n diasPactados--;\\r\\n }\\r\\n }\\r\\n\\r\\n \\/\\/ Por \\u00faltimo, debemos incrementar el n\\u00famero de d\\u00edas que sumaremos al diaPropuesto\\r\\n \\/\\/ en cada iteraci\\u00f3n\\r\\n i++;\\r\\n } \\/\\/ Fin de bucle while\\r\\n\\r\\n \\/\\/ Devolvemos el resultado\\r\\n return diaPropuesto;\\r\\n\\r\\n} \\/\\/ Fin funci\\u00f3n\\r\\n\\r\\n\\r\\n\\r\\n\\/\\/ Finalmente asignamos nuestra variable diaEntrega, la cual contendra un Objeto Date valido indicando\\r\\n\\/\\/ la fecha en que el pedido sera entregado.\\r\\n\\r\\nconst diaEntrega1 = calculaEntrega(diaPedido, 1, festivos).toDateString(); \\r\\nconst diaEntrega = calculaEntrega(diaPedido, 2, festivos).toDateString();\\r\\ndocument.getElementById(\\\"p1\\\").innerHTML = \\\"<p><i class=\'fas fa-shipping-fast\'><\\/i> Estimated delivery between: <strong>\\\" + diaEntrega1 + \\\" and \\\" + diaEntrega + \\\"<\\/strong><\\/p>\\\";\\r\\n\\r\\n\\r\\n\\r\\n<\\/script><\\/div><\\/div><\\/div><div id=\\\"entry_521520\\\" class=\\\"entry-row row order-8 order-lg-6 g-0 \\\"><div id=\\\"entry_521521\\\" class=\\\"entry-col rounded col-12 flex-column\\\"><div id=\\\"entry_521522\\\" data-id=\\\"521522\\\" class=\\\"entry-content content-options \\\">{% set out_of_stock_options = [] %} {% if options %}\\n<div class=\\\"row g-3\\\">\\n{% for option in options %}\\n\\n{% if option.type == \'select\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521522\\\">{{ option.name }}<\\/label>\\n <select name=\\\"option[{{ option.product_option_id }}]\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" class=\\\"form-select\\\">\\n <option value=\\\"\\\">{{ text_select }}<\\/option>\\n {% for option_value in option.product_option_value %}\\n <option value=\\\"{{ option_value.product_option_value_id }}\\\">{{ option_value.name }}\\n {% if option_value.price %}\\n ({{ option_value.price_prefix }}{{ option_value.price }})\\n {% endif %} <\\/option>\\n {% endfor %}\\n <\\/select>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'radio\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label>{{ option.name }}<\\/label>\\n <div id=\\\"input-option{{ option.product_option_id }}-521522\\\">\\n {% for option_value in option.product_option_value %}<div class=\\\"form-check form-check-inline button{% if option_value.image %} image {% endif %}\\\">\\n <input id=\\\"input-option-radio{{ option_value.product_option_value_id }}-521522\\\" type=\\\"radio\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option_value.product_option_value_id }}\\\" class=\\\"form-check-input\\\" \\/>\\n <label for=\\\"input-option-radio{{ option_value.product_option_value_id }}-521522\\\" data-bs-toggle=\\\"tooltip\\\" title=\\\"{{ option_value.name }}{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}\\\" class=\\\"form-check-label\\\">\\n {% if option_value.image %}\\n <img src=\\\"{{ option_value.image }}\\\" alt=\\\"{{ option_value.name }} {% if option_value.price %} {{ option_value.price_prefix }} {{ option_value.price }} {% endif %}\\\" class=\\\"img-thumbnail image-circle\\\" \\/>\\n {% else %}\\n {{ option_value.name }}\\n {% endif %}\\n <\\/label>\\n <\\/div>{% endfor %} <\\/div>\\n<\\/div>\\n{% endif %}\\n\\n<!-- Options Quantity Multiple starts -->\\n\\n {% if option.type == \'multiple\' %}\\n\\n <style type=\\\"text\\/css\\\">\\n .oqm_table.table > tbody > tr > td, .oqm_table.table > tbody > tr > th, .oqm_table.table > tfoot > tr > td, .oqm_table.table > tfoot > tr > th, .oqm_table.table > thead > tr > td, .oqm_table.table > thead > tr > th {\\n vertical-align: middle;\\n }\\n\\t\\t\\t.QtyBox { display:none; }\\n\\t\\t\\t\\n\\t\\t\\t\\/* Chrome, Safari, Edge, Opera *\\/\\n input::-webkit-outer-spin-button,\\n input::-webkit-inner-spin-button {\\n -webkit-appearance: none;\\n margin: 0;\\n }\\n \\n \\/* Firefox *\\/\\n input[type=number] {\\n -moz-appearance: textfield;\\n }\\n\\t\\t\\t\\n\\t\\t\\t\\n <\\/style>\\n <div class=\\\"form-group{% if option.required %} required {% endif %}\\\">\\n <label class=\\\"control-label\\\" style=\\\"display:none\\\">{{ option.name }}<\\/label>\\n <div id=\\\"input-option{{ option.product_option_id }}\\\" {% if option.quickview == \'1\' %} style=\\\"max-height: 350px;overflow-y: scroll;\\\" {% endif %}>\\n\\t\\t\\t \\n\\t\\t\\t \\n\\t\\t\\t<script>\\nfunction updateTooltip(inputElement, stockQty, maxQty) {\\n var effectiveMaxQty = Math.min(stockQty, maxQty);\\n var tooltipSpan = inputElement.parentNode.querySelector(\'.max-qty-tooltip\');\\n tooltipSpan.title = \\\"Available Max Qty is \\\" + effectiveMaxQty;\\n}\\n\\nfunction validateQuantityi(inputElement, stockQty, maxQty) {\\n var inputValue = parseInt(inputElement.value);\\n\\tconsole.log(maxQty);\\n\\tif(maxQty > 0) {\\t\\n\\t\\tvar effectiveMaxQty = Math.min(stockQty, maxQty);\\n\\t} else {\\n\\t\\tvar effectiveMaxQty = stockQty;\\n\\t}\\n\\n\\tif (inputValue > effectiveMaxQty) {\\n\\t\\tif(maxQty > 0) {\\n\\t\\tinputElement.style.borderColor = \'red\';\\n\\t\\t}\\n\\t\\talert(\\\"Maximum quantity available is \\\" + effectiveMaxQty);\\n\\t\\tinputElement.value = effectiveMaxQty;\\n\\t} else {\\n\\t\\tinputElement.style.borderColor = \'\';\\n\\t}\\n\\t\\n}\\n\\nfunction clearInputIfZero(inputElement) {\\n if (inputElement.value === \'0\') {\\n inputElement.value = \'\';\\n }\\n}\\n\\n\\/\\/ Call updateTooltip for each item on page load or when stock changes\\n<\\/script>\\n\\n\\n\\n\\t\\t\\t <script>\\n\\t\\t\\t function validateQuantity(element, maxQuantity) {\\n if (parseInt(element.value) > maxQuantity) {\\n element.value = maxQuantity;\\n }\\n }\\n \\n function checkValor(item) {\\n let valor = parseInt(item.value);\\n if(isNaN(valor)) {\\n item.value = 0;\\n }\\n }\\n \\n \\n var rowCount = document.getElementById(\\\"opTable\\\").rows.length; \\/\\/ For rows\\n var colCount = document.getElementById(\\\"opTable\\\").rows[0].cells.length; \\/\\/ For columns\\n document.getElementById(\\\"count\\\").innerHTML = + rowCount -1;\\n\\n\\t\\t\\t <\\/script>\\n\\t\\t\\t \\n\\t\\t\\t \\n <table class=\\\"oqm_table table table-striped table-hover\\\" style=\\\"font-size: 13px;\\n border-left: 1px solid #ccc; border-right: 1px solid #ccc;\\\" id=\\\"opTable\\\">\\n <thead class=\\\"bg-dark\\\" style=\\\"position:sticky; top:0\\\">\\n <tr class=\\\"text-light\\\">\\n <td class=\\\"text-center\\\" style=\\\"width:50px\\\">QTY<\\/td>\\n <td class=\\\"text-center\\\" style=\\\"width:70px\\\">STOCK<\\/td>\\n <td><span class=\\\"btn btn-sm btn-outline-light\\\" id=\\\"count\\\"><\\/span> OPTIONS<\\/td>\\n <td style=\\\"width:50px\\\">PRICE <\\/td>\\n <\\/tr>\\n <\\/thead>\\n \\n {% for option_value in option.product_option_value %}\\n \\n <tr>\\n <td style=\\\"padding: 0.2rem 0.2rem;\\\">\\n <input size=\\\"3\\\" type=\\\"number\\\" class=\\\"pqty form-control\\\" style=\\\"width:54px\\\"\\n name=\\\"oquantity[{{ option.product_option_id }}][{{ option_value.product_option_value_id }}]\\\" value=\\\"0\\\"\\n {% if option_value.quantity <= 0 %} disabled {% endif %} \\n onchange=\\\"validateQuantityi(this, {{ option_value.quantity }}, {{ option_value.maxqty }})\\\"\\n onblur=\\\"resetErrorState(this);\\\"\\n onclick=\\\"clearInputIfZero(this); return false;\\\" \\/>\\n <\\/td>\\n <td class=\\\"text-center\\\">\\n {{ option_value.quantity }} {% if option_value.maxqty > 0 %}\\n <span class=\\\"max-qty-tooltip\\\" style=\\\"color:red;cursor:pointer\\\" onmouseover=\\\"updateTooltip(this, {{ option_value.quantity }}, {{ option_value.maxqty }})\\\">\\n <br>\\n \\n <span class=\\\"badge mx-1 bg-warning text-dark text-uppercase\\\">MAX QTY {{ option_value.maxqty }}<\\/span>\\n \\n \\n <\\/span>\\n {% endif %} \\n <\\/td>\\n <td>{{ option_value.name }}<\\/td>\\n <td>{{ option_value.total_price }}<\\/td>\\n<\\/tr>\\n\\n {% endfor %} \\n <\\/table>\\n <\\/div>\\n <\\/div> {% endif %}\\n <!-- Options Quantity Multiple ends -->\\n\\t\\t\\t\\n{% if option.type == \'checkbox\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label>{{ option.name }}<\\/label>\\n <div id=\\\"input-option{{ option.product_option_id }}-521522\\\" >\\n {% for option_value in option.product_option_value %}<div class=\\\"form-check form-check-inline button{% if option_value.image %} image {% endif %}\\\">\\n <input id=\\\"input-option-checkbox{{ option_value.product_option_value_id }}-521522\\\" type=\\\"checkbox\\\" name=\\\"option[{{ option.product_option_id }}][]\\\" value=\\\"{{ option_value.product_option_value_id }}\\\" class=\\\"form-check-input\\\" \\/>\\n <label for=\\\"input-option-checkbox{{ option_value.product_option_value_id }}-521522\\\" data-bs-toggle=\\\"tooltip\\\" title=\\\"{{ option_value.name }}{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}\\\" class=\\\"form-check-label\\\">\\n {% if option_value.image %}\\n <img src=\\\"{{ option_value.image }}\\\" alt=\\\"{{ option_value.name }} {% if option_value.price %} {{ option_value.price_prefix }} {{ option_value.price }} {% endif %}\\\" class=\\\"img-thumbnail image-circle\\\" \\/>\\n {% else %}\\n {{ option_value.name }}\\n {% endif %}\\n <\\/label>\\n <\\/div>{% endfor %}\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'text\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521522\\\">{{ option.name }}<\\/label>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" class=\\\"form-control\\\" \\/>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'textarea\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521522\\\">{{ option.name }}<\\/label>\\n <textarea name=\\\"option[{{ option.product_option_id }}]\\\" rows=\\\"5\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" class=\\\"form-control\\\">{{ option.value }}<\\/textarea>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'file\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label>{{ option.name }}<\\/label>\\n <div class=\\\"d-grid\\\">\\n <button type=\\\"button\\\" id=\\\"button-upload{{ option.product_option_id }}-521522\\\" data-loading-text=\\\"{{ text_loading }}\\\" class=\\\"btn btn-light border\\\"><i class=\\\"fas fa-upload\\\"><\\/i> {{ button_upload }}<\\/button>\\n <input type=\\\"hidden\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'date\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521522\\\">{{ option.name }}<\\/label>\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-text\\\"><i class=\\\"fas fa-calendar\\\"><\\/i><\\/span>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" class=\\\"form-control date\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'datetime\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521522\\\">{{ option.name }}<\\/label>\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-text\\\"><i class=\\\"fas fa-calendar\\\"><\\/i><\\/span>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" class=\\\"form-control datetime\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'time\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521522\\\">{{ option.name }}<\\/label>\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-text\\\"><i class=\\\"fas fa-time\\\"><\\/i><\\/span>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521522\\\" class=\\\"form-control time\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% endfor %}\\n<\\/div>\\n{% endif %}<\\/div><div id=\\\"entry_521524\\\" data-id=\\\"521524\\\" class=\\\"entry-content content-discounts order-2\\\">{% if price and discounts %}\\n<ul data-update=\\\"discounts\\\" class=\\\"list-group flex-sm-row flex-sm-nowrap\\\">\\n{% for discount in discounts %}\\n<li class=\\\"list-group-item\\\">{{ discount.quantity }}{{ text_discount }}{{ discount.price }}<\\/li>\\n{% endfor %}\\n<\\/ul>\\n{% endif %}<\\/div><\\/div><div id=\\\"entry_521525\\\" class=\\\"entry-col col-12 order-1\\\"><div id=\\\"entry_521526\\\" data-id=\\\"521526\\\" class=\\\"entry-widget widget-html align-self-xl-center\\\">{% if out_of_stock_options|length > 0 %}\\r\\n <style>\\r\\n \\/* Styles for the modal *\\/\\r\\n .modal {\\r\\n display: none; \\/* Hide the modal by default *\\/\\r\\n position: fixed;\\r\\n z-index: 9999;\\r\\n left: 0;\\r\\n top: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n background-color: rgba(0,0,0,0.4); \\/* Black with transparency *\\/\\r\\n }\\r\\n\\r\\n .modal-content {\\r\\n background-color: #fefefe;\\r\\n margin: 10% auto;\\r\\n padding: 20px;\\r\\n border: 1px solid #888;\\r\\n width: 80%;\\r\\n max-width: 800px;\\r\\n text-align: center;\\r\\n }\\r\\n <\\/style>\\r\\n\\r\\n<div style=\\\"width:100%; padding:0px 15px 15px 15px\\\">\\r\\n <button type=\\\"button\\\" onclick=\\\"openModal()\\\" style=\\\"cursor: pointer; width:100%\\\" class=\\\"btn btn-warning btn-block\\\" data-toggle=\\\"modal\\\" data-target=\\\"#outOfStockModal\\\"><i class=\\\"fa fa-bell\\\" ><\\/i>&nbsp;&nbsp;{{ notify_button_p }}<\\/button>\\r\\n<\\/div>\\r\\n\\r\\n<!-- The Modal -->\\r\\n<div id=\\\"outOfStockModal\\\" class=\\\"modal\\\">\\r\\n <!-- Modal content -->\\r\\n <div class=\\\"modal-content\\\">\\r\\n <span onclick=\\\"closeModal()\\\" style=\\\"cursor: pointer;\\\" class=\\\"btn-close mz-modal-close\\\">&times;<\\/span>\\r\\n\\r\\n <!-- Form -->\\r\\n\\t <form id=\\\"outOfStockForm\\\" method=\\\"post\\\" enctype=\\\"multipart\\/form-data\\\" class=\\\"form-horizontal\\\" data-language=\\\"en-gb\\\">\\r\\n <input type=\\\"hidden\\\" name=\\\"product_id\\\" value=\\\"{{ product_id }}\\\" \\/>\\r\\n\\t\\t\\t <input type=\\\"hidden\\\" name=\\\"stock_qty\\\" value=\\\"1\\\" \\/>\\r\\n\\t\\t\\t <input type=\\\"hidden\\\" name=\\\"store_id\\\" value=\\\"0\\\" \\/>\\r\\n\\t\\t\\t <input type=\\\"hidden\\\" name=\\\"language_id\\\" value=\\\"1\\\" \\/>\\r\\n <!-- Other hidden fields -->\\r\\n\\r\\n\\t\\t<fieldset>\\r\\n\\t\\t\\r\\n\\t\\t<div id=\\\"notificationMessage\\\" class=\\\"alert\\\" style=\\\"display: none;\\\"><\\/div>\\r\\n\\t\\t<div class=\\\"mb-3 row required required\\\">\\r\\n <label class=\\\"col-sm-2 col-form-label\\\" for=\\\"outOfStockOptions\\\">Out of Stock Options:<\\/label>\\r\\n <div class=\\\"col-sm-10\\\">\\r\\n <select class=\\\"form-control form-select\\\" id=\\\"outOfStockOptions\\\" name=\\\"selected_option\\\">\\r\\n {% for out_of_stock_option in out_of_stock_options %}\\r\\n <option value=\\\"{{ out_of_stock_option }}\\\">{{ out_of_stock_option }}<\\/option>\\r\\n {% endfor %}\\r\\n <\\/select>\\r\\n <\\/div>\\r\\n <\\/div>\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"mb-3 row required\\\"> \\r\\n\\t\\t<label class=\\\"col-sm-2 col-form-label\\\" for=\\\"name\\\">Name: <\\/label> \\r\\n\\t\\t<div class=\\\"col-sm-10\\\"> \\r\\n\\t\\t<input type=\\\"text\\\" name=\\\"name\\\" value=\\\"{{ customer_name }}\\\" id=\\\"name\\\" placeholder=\\\"First Name\\\" required class=\\\"form-control\\\">\\r\\n\\t\\t<\\/div> \\r\\n\\t\\t<\\/div>\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"mb-3 row required\\\"> \\r\\n\\t\\t<label class=\\\"col-sm-2 col-form-label\\\" for=\\\"email\\\">Email:<\\/label> \\r\\n\\t\\t<div class=\\\"col-sm-10\\\"> \\r\\n\\t\\t{% if logged %}\\r\\n\\t\\t<input type=\\\"email\\\" name=\\\"email\\\" value=\\\"{{ customer_email }}\\\" id=\\\"email\\\" placeholder=\\\"Email\\\" required class=\\\"form-control\\\">\\r\\n\\t\\t {% else %}\\r\\n <input type=\\\"email\\\" name=\\\"email\\\" value=\\\"\\\" placeholder=\\\"Your Email\\\" id=\\\"email\\\" class=\\\"form-control\\\">\\r\\n {% endif %}\\r\\n\\t\\t<\\/div> \\r\\n\\t\\t<\\/div>\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"mb-3 row \\\"> \\r\\n\\t\\t<label class=\\\"col-sm-2 col-form-label\\\" for=\\\"email\\\">Comment:<\\/label> \\r\\n\\t\\t<div class=\\\"col-sm-10\\\"> \\r\\n\\t\\t<textarea name=\\\"stock_comment\\\" rows=\\\"5\\\" id=\\\"comment\\\" placeholder=\\\"Message\\\" class=\\\"form-control\\\"><\\/textarea>\\r\\n\\t\\t<\\/div> \\r\\n\\t\\t<\\/div>\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t<\\/fieldset>\\r\\n <!-- Submit Button -->\\r\\n <div class=\\\"modal-footer\\\">\\r\\n <div class=\\\"pull-right\\\">\\r\\n <button type=\\\"submit\\\" id=\\\"NotifyButtonId\\\" class=\\\"btn btn-primary\\\" >\\r\\n <span>Submit<\\/span>\\r\\n <\\/button>\\r\\n <\\/div>\\r\\n <\\/div>\\r\\n <\\/form>\\r\\n <\\/div>\\r\\n<\\/div>\\r\\n\\r\\n\\r\\n<script>\\r\\n \\/\\/ Declare modal using let to avoid redeclaration error\\r\\n let modal = document.getElementById(\'outOfStockModal\');\\r\\n\\r\\n \\/\\/ Function to open the modal\\r\\n function openModal() {\\r\\n modal.style.display = \'block\';\\r\\n }\\r\\n\\r\\n \\/\\/ Function to close the modal\\r\\n function closeModal() {\\r\\n\\t$(\'#notificationMessage\').hide(); \\r\\n modal.style.display = \'none\';\\r\\n }\\r\\n\\r\\n \\/\\/ Close the modal if the user clicks outside the modal content\\r\\n window.onclick = function(event) {\\r\\n if (event.target == modal) {\\r\\n modal.style.display = \'none\';\\r\\n }\\r\\n }\\r\\n \\r\\n function displayNotification(message, type) {\\r\\n let colors = {\\r\\n \'danger\': \'red\',\\r\\n \'success\': \'green\'\\r\\n };\\r\\n $(\'#notificationMessage\').css(\'color\', colors[type]).text(message).show();\\r\\n}\\r\\n\\r\\n$(\'#outOfStockForm\').on(\'submit\', function(event) {\\r\\n event.preventDefault();\\r\\n\\r\\n \\/\\/ Hide any previous notifications\\r\\n $(\'#notificationMessage\').hide();\\r\\n\\r\\n \\/\\/ Show loading state on the button\\r\\n $(\'#NotifyButtonId\').attr(\'disabled\', true).html(\'<span>Loading...<\\/span>\');\\r\\n\\r\\n $.ajax({\\r\\n url: \'index.php?route=extension\\/module\\/hb_oosn\\/confirm\',\\r\\n type: \'post\',\\r\\n data: $(this).serialize(),\\r\\n dataType: \'json\',\\r\\n complete: function() {\\r\\n \\/\\/ Revert button\'s state after AJAX call is complete\\r\\n $(\'#NotifyButtonId\').attr(\'disabled\', false).html(\'<span>Submit<\\/span>\');\\r\\n },\\r\\n success: function(json) {\\r\\n if (json[\'error\']) {\\r\\n displayNotification(json[\'error\'], \'danger\');\\r\\n }\\r\\n\\t\\t\\tif (json[\'notify_error\']) {\\r\\n displayNotification(json[\'notify_error\'], \'danger\');\\r\\n } \\r\\n\\r\\n if (json[\'notify_warning\']) {\\r\\n displayNotification(json[\'notify_warning\'], \'danger\');\\r\\n }\\r\\n\\r\\n if (json[\'success\']) {\\r\\n displayNotification(json[\'success\'], \'success\');\\r\\n\\t\\t\\t\\t$(\'#comment\').val(\'\'); \\/\\/ Reset textarea value to an empty string\\r\\n\\r\\n setTimeout(function() {\\r\\n closeModal();\\r\\n }, 5000); \\r\\n }\\r\\n }\\r\\n });\\r\\n});\\r\\n\\r\\n<\\/script>\\r\\n{% endif %}<\\/div><div id=\\\"entry_521527\\\" class=\\\"entry-row row d-xl-none order-2 order-sm-1 \\\"><div id=\\\"entry_521528\\\" class=\\\"entry-col d-sm-none col-12 flex-column flex-sm-row\\\"><div id=\\\"entry_521529\\\" data-id=\\\"521529\\\" class=\\\"entry-design design-tabs \\\"><div class=\\\"clearfix\\\">\\n <div class=\\\"\\\">\\n <ul class=\\\"nav nav-tabs active-first\\\" role=\\\"tablist\\\">\\n {% if description %} <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-521529-0\\\" role=\\\"tab\\\">\\n Description<\\/a>\\n <\\/li>\\n {% endif %} {% if attribute_groups %} <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-521529-1\\\" role=\\\"tab\\\">\\n Specification<\\/a>\\n <\\/li>\\n {% endif %} {% for key, tab in mz_hook.fetch(\'tab\') %}\\n <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-hook-521529-{{ key }}\\\" role=\\\"tab\\\">\\n {{ tab.title }}<\\/a>\\n <\\/li>\\n {% endfor %}\\n <\\/ul>\\n <\\/div>\\n<\\/div>\\n<div class=\\\"tab-content\\\">\\n {% if description %} <div id=\\\"mz-design-tab-521529-0\\\" class=\\\"tab-pane fade\\\"><div class=\\\"entry-content content-description\\\"><div class=\\\"description text-collapsed\\\" style=\\\"text-align: justify;\\\" data-line=\\\"25\\\" data-showtext=\\\"<i class=\'fas fa-angle-down\'><\\/i> {{ text_showmore }}\\\" data-hidetext=\\\"<i class=\'fas fa-angle-up\'><\\/i> {{ text_showless }}\\\">{{ description }}<\\/div>\\n<\\/div><\\/div>\\n {% endif %} {% if attribute_groups %} <div id=\\\"mz-design-tab-521529-1\\\" class=\\\"tab-pane fade\\\"><div class=\\\"entry-content content-specification\\\"><div class=\\\"table-responsive\\\">\\n <table class=\\\"table table-md table-bordered \\\">\\n {% for attribute_group in attribute_groups %}\\n <thead class=\\\"table-light\\\">\\n <tr>\\n <th colspan=\\\"2\\\"><strong><img src=\\\"https:\\/\\/www.sunshinenovelty.com\\/image\\/display-icon-v2.svg\\\" width=\\\"30\\\"> {{ attribute_group.name }}<\\/strong><\\/th>\\n <\\/tr>\\n <\\/thead>\\n <tbody>\\n {% for attribute in attribute_group.attribute %}\\n <tr>\\n <td>{{ attribute.name }}<\\/td>\\n <td>{{ attribute.text }}<\\/td>\\n <\\/tr>\\n {% endfor %}\\n <\\/tbody>\\n {% endfor %}\\n <\\/table>\\n<\\/div>\\n\\n\\n\\n\\n\\n<\\/div><\\/div>\\n {% endif %} {% for key, tab in mz_hook.fetch(\'tab\') %}\\n <div id=\\\"mz-design-tab-hook-521529-{{ key }}\\\" class=\\\"tab-pane fade\\\">{{ tab.content }}<\\/div>\\n {% endfor %}\\n <\\/div><\\/div><\\/div><\\/div><div id=\\\"entry_521530\\\" data-id=\\\"521530\\\" class=\\\"entry-content content-minimum alert alert-danger d-flex align-items-center order-1 order-sm-2 order-xl-1\\\">{% if minimum > 1 %}\\n<div class=\\\"alert alert-info m-0\\\"><i class=\\\"fas fa-info-circle\\\"><\\/i> {{ text_minimum }}<\\/div>\\n{% endif %}<\\/div><\\/div><\\/div><div id=\\\"entry_521531\\\" class=\\\"entry-row row order-5 order-sm-3 order-lg-7 \\\"><div id=\\\"entry_521532\\\" class=\\\"entry-col d-none d-sm-flex col-12 order-1 order-sm-0\\\">{% if quantity > 0 %} <div id=\\\"entry_521533\\\" data-id=\\\"521533\\\" class=\\\"entry-content content-quantity flex-grow-0 flex-shrink-0\\\"><div data-toggle=\\\"spinner\\\" class=\\\"input-group flex-nowrap input-group-md QtyBox\\\" >\\n <button class=\\\"btn btn-dark\\\" data-spinner=\\\"down\\\" data-min=\\\"{{ minimum }}\\\" type=\\\"button\\\" aria-label=\\\"Decrease quantity\\\"><i class=\\\"fas fa-minus-circle\\\"><\\/i><\\/button>\\n <input type=\\\"number\\\" name=\\\"quantity\\\" value=\\\"{{ minimum }}\\\" step=\\\"1\\\" min=\\\"{{ minimum }}\\\" aria-label=\\\"{{ entry_qty }}\\\" class=\\\"form-control text-center border-dark remove-spin-button\\\" \\/>\\n <button class=\\\"btn btn-dark\\\" data-spinner=\\\"up\\\" data-max=\\\"{{ quantity }}\\\" type=\\\"button\\\" aria-label=\\\"Increase quantity\\\"><i class=\\\"fas fa-plus-circle\\\"><\\/i><\\/button>\\n<\\/div><\\/div>\\n\\n {% endif %}<div id=\\\"entry_521534\\\" data-id=\\\"521534\\\" class=\\\"entry-content content-button order-1 align-self-xl-center\\\"><div class=\\\"d-grid\\\">\\n<button type=\\\"button\\\" class=\\\"both btn btn-md btn-secondary btn-cart button-cart cart-{{ product_id }}\\\" data-loading-text=\\\"{{ text_loading }}\\\" title=\\\"{{ button_cart }}\\\" {% if quantity <= 0 and not oc_config.get(\'config_stock_checkout\') %}disabled{% endif %}>\\n<i class=\\\"fas fa-cart-arrow-down\\\"><\\/i> {% if 1 and quantity <= 0 %}{{ stock_status }}{% else %}{{ button_cart }}{% endif %}<\\/button>\\n\\n\\n<\\/div><\\/div><\\/div><\\/div><\\/div><div id=\\\"entry_521535\\\" class=\\\"entry-col d-none d-sm-flex d-md-none d-lg-flex col-12 col-sm-2 order-sm-3 order-md-0 order-lg-3 flex-xl-column\\\"><div id=\\\"entry_521536\\\" class=\\\"entry-module module-mz_product_listing d-lg-none d-xl-block order-xl-1\\\">{mz_module.mz_product_listing.121.521536}<\\/div><\\/div><\\/div><div id=\\\"entry_521537\\\" class=\\\"entry-row row align-items-md-start align-items-lg-stretch \\\"><div id=\\\"entry_521538\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12 col-sm-6 flex-md-column flex-lg-row\\\"><div id=\\\"entry_521539\\\" data-id=\\\"521539\\\" class=\\\"entry-content content-image \\\">{% set additional_image_status = images and true %}\\n{% set video_status = mz_videos and true %}\\n\\n<div id=\\\"image-gallery-521539\\\" class=\\\"image-gallery thumbnails thumbnail-bottom d-flex\\\">\\n {% if thumb %}\\n <div class=\\\"image-thumb d-flex\\\">\\n\\n <div class=\\\"image-gallery-overlay\\\">\\n {% if mz_wishlist %}\\n <button type=\\\"button\\\" class=\\\"btn btn-wishlist wishlist-{{ product_id }} wished\\\" data-wishlist=\\\"1\\\" title=\\\"{{ button_remove }}\\\" onclick=\\\"wishlist.add(\'{{ product_id }}\', this);\\\"><i class=\\\"fas fa-heart\\\"><\\/i><i class=\\\"far fa-heart\\\"><\\/i><\\/button>\\n {% else %}\\n <button type=\\\"button\\\" class=\\\"btn btn-wishlist wishlist-{{ product_id }}\\\" data-wishlist=\\\"0\\\" title=\\\"{{ button_wishlist }}\\\" onclick=\\\"wishlist.add(\'{{ product_id }}\', this);\\\"><i class=\\\"fas fa-heart\\\"><\\/i><i class=\\\"far fa-heart\\\"><\\/i><\\/button>\\n {% endif %}\\n <\\/div>\\n\\n {% for position, labels in mz_labels %} {# Product label #}\\n <div class=\\\"product-label {{ position }}\\\">{% for label in labels %}<div class=\\\"{{ label.class }}\\\" style=\\\"{{ label.style }}\\\">{{ label.text }}<\\/div>{% endfor %}<\\/div>\\n {% endfor %}\\n \\n <a class=\\\"thumbnail mfp-image\\\" href=\\\"{{ popup }}\\\" title=\\\"{{ heading_title }}\\\"><img src=\\\"{{ thumb }}\\\" {% if mz_thumb_srcset %}srcset=\\\"{{ mz_thumb_srcset }}\\\"{% endif %} sizes=\\\"(min-width: 1360px) 600px,(min-width: 768px) 300px,400px\\\" class=\\\"img-fluid d-block w-100\\\" title=\\\"{{ heading_title }}\\\" alt=\\\"{{ heading_title }}\\\" \\/><\\/a>\\n <\\/div>\\n {% endif %}\\n \\n {% if additional_image_status or video_status %}\\n <div class=\\\"image-additional\\\">\\n <div class=\\\"swiper\\\" dir=\\\"ltr\\\">\\n <div class=\\\"swiper-wrapper\\\">\\n {% for video in mz_videos %}\\n <div class=\\\"swiper-slide\\\">\\n <a class=\\\"thumbnail mfp-iframe\\\" href=\\\"{{ video.href }}\\\" title=\\\"{{ video.title }}\\\">{% if video.thumb %}<img src=\\\"{{ video.thumb }}\\\" alt=\\\"{{ heading_title }}\\\" \\/>{% else %}<i class=\\\"far fa-play-circle\\\"><\\/i>{% endif %}<\\/a>\\n <\\/div>\\n {% endfor %}\\n {% for image in images %}\\n <div class=\\\"swiper-slide\\\">\\n <a class=\\\"thumbnail mfp-image\\\" href=\\\"{{ image.popup }}\\\" title=\\\"{{ heading_title }}\\\"><img src=\\\"{{ image.thumb }}\\\" {% if image.srcset %}srcset=\\\"{{ image.srcset }}\\\"{% endif %} sizes=\\\"(min-width: 1360px) 60px,(min-width: 768px) 30px,40px\\\" title=\\\"{{ heading_title }}\\\" alt=\\\"{{ heading_title }}\\\" \\/><\\/a>\\n <\\/div>\\n {% endfor %}\\n \\n <\\/div>\\n \\n <div class=\\\"mz-button-prev vertical\\\"><i class=\\\"fas fa-chevron-up\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-next vertical\\\"><i class=\\\"fas fa-chevron-down\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-prev horizontal\\\"><i class=\\\"fas fa-chevron-left\\\"><\\/i><\\/div>\\n <div class=\\\"mz-button-next horizontal\\\"><i class=\\\"fas fa-chevron-right\\\"><\\/i><\\/div>\\n <\\/div>\\n <\\/div>\\n {% endif %}\\n<\\/div>\\n<script>\\n$(function(){\\n new Swiper(\'#image-gallery-521539 .swiper\', {\\n slidesPerView: 10,\\n navigation: {\\n nextEl: \'#image-gallery-521539 .mz-button-next\',\\n prevEl: \'#image-gallery-521539 .mz-button-prev\',\\n },\\n });\\n});\\n$(function(){\\n $(\'#image-gallery-521539\').magnificPopup({\\n delegate: \'a.thumbnail\',\\n gallery: {\\n enabled: true\\n },\\n iframe: {\\n patterns: {\\n youtube: {\\n index: \'youtube.com\\/\',\\n id: function (url) { return url },\\n src: \'%id%\'\\n },\\n vimeo: {\\n index: \'vimeo.com\\/\',\\n id: function (url) { return url },\\n src: \'%id%\'\\n }\\n }\\n }\\n });\\n});\\n<\\/script><\\/div><div id=\\\"entry_521540\\\" data-id=\\\"521540\\\" class=\\\"entry-design design-tabs order-1\\\"><div class=\\\"clearfix\\\">\\n <div class=\\\"\\\">\\n <ul class=\\\"nav nav-tabs active-first\\\" role=\\\"tablist\\\">\\n {% if description %} <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-521540-0\\\" role=\\\"tab\\\">\\n Description<\\/a>\\n <\\/li>\\n {% endif %} {% for key, tab in mz_hook.fetch(\'tab\') %}\\n <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link text icon-left\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#mz-design-tab-hook-521540-{{ key }}\\\" role=\\\"tab\\\">\\n {{ tab.title }}<\\/a>\\n <\\/li>\\n {% endfor %}\\n <\\/ul>\\n <\\/div>\\n<\\/div>\\n<div class=\\\"tab-content\\\">\\n {% if description %} <div id=\\\"mz-design-tab-521540-0\\\" class=\\\"tab-pane fade\\\"><div class=\\\"entry-content content-description\\\"><div class=\\\"description text-collapsed\\\" style=\\\"text-align: justify;\\\" data-line=\\\"15\\\" data-showtext=\\\"<i class=\'fas fa-angle-down\'><\\/i> {{ text_showmore }}\\\" data-hidetext=\\\"<i class=\'fas fa-angle-up\'><\\/i> {{ text_showless }}\\\">{{ description }}<\\/div>\\n<\\/div><\\/div>\\n {% endif %} {% for key, tab in mz_hook.fetch(\'tab\') %}\\n <div id=\\\"mz-design-tab-hook-521540-{{ key }}\\\" class=\\\"tab-pane fade\\\">{{ tab.content }}<\\/div>\\n {% endfor %}\\n <\\/div><\\/div><\\/div><div id=\\\"entry_521541\\\" class=\\\"entry-col sticky-lg-top d-none d-sm-flex d-lg-none col-12 col-sm-6 order-sm-1 order-lg-0 flex-md-column flex-lg-row\\\"><div id=\\\"entry_521542\\\" data-id=\\\"521542\\\" class=\\\"entry-content content-title \\\"><h1 class=\\\"h4\\\">{{ heading_title }}<\\/h1><\\/div><div id=\\\"entry_521543\\\" data-id=\\\"521543\\\" class=\\\"entry-content content-minimum order-3 order-sm-1 order-md-7 order-lg-1\\\">{% if minimum > 1 %}\\n<div class=\\\"alert alert-info m-0\\\"><i class=\\\"fas fa-info-circle\\\"><\\/i> {{ text_minimum }}<\\/div>\\n{% endif %}<\\/div><div id=\\\"entry_521544\\\" class=\\\"entry-row row order-1 order-sm-6 order-md-5 order-lg-2 \\\"><div id=\\\"entry_521545\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12\\\"><div id=\\\"entry_521546\\\" data-id=\\\"521546\\\" class=\\\"entry-content content-price \\\"><div class=\\\"d-flex flex-wrap align-items-center\\\">\\n{% if price %}\\n<div class=\\\"price text-center\\\">\\n {% if not special %}\\n <h3 data-update=\\\"price\\\" class=\\\"price-new mb-0\\\">{{ price }}<\\/h3>\\n {% else %}\\n <h3 data-update=\\\"special\\\" class=\\\"price-new special mb-0\\\">{{ special }}<\\/h3>\\n <span data-update=\\\"price\\\" class=\\\"price-old text-danger\\\" style=\\\"text-decoration: line-through;\\\">{{ price }}<\\/span>\\n <span data-update=\\\"special-discount\\\" class=\\\"price-sale\\\">{{ mz_sale }}<\\/span>\\n {% endif %}\\n \\n<\\/div>\\n{% endif %}\\n<\\/div><\\/div><div id=\\\"entry_521547\\\" data-id=\\\"521547\\\" class=\\\"entry-content content-countdown order-1\\\">{% if price %}\\n{% if mz_special_expire_at or mz_special_sold %}\\n<div class=\\\"deal-status\\\">\\n {% if mz_special_sold_perc %}\\n <div class=\\\"progress mb-1\\\"><div class=\\\"progress-bar bg-secondary\\\" role=\\\"progressbar\\\" style=\\\"width: {{ mz_special_sold_perc }}%\\\" aria-valuenow=\\\"{{ mz_special_sold_perc }}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"><\\/div><\\/div>\\n {% endif %}\\n <div class=\\\"deal-info d-flex flex-wrap\\\">\\n {% if mz_special_sold %}\\n <span class=\\\"claimed text-secondary me-3\\\">{{ mz_special_sold_text }}<\\/span>\\n {% endif %}\\n {% if mz_special_expire_at %}\\n <span class=\\\"countdown\\\">{{ text_endin }} <span data-countdown=\\\"{{ mz_special_expire_at }}\\\" data-compact=\\\"true\\\"><\\/span><\\/span>\\n {% endif %}\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% endif %}<\\/div><div id=\\\"entry_521548\\\" data-id=\\\"521548\\\" class=\\\"entry-widget widget-html order-2\\\">{% if logged %}\\r\\n <a class=\\\"d-none hidden icon-left both nav-link\\\" href=\\\"https:\\/\\/www.sunshinenovelty.com\\/index.php?route=account\\/account\\\"> \\r\\n\\r\\n <\\/a>\\r\\n \\r\\n{% else %}\\r\\n <a class=\\\"icon-left both nav-link\\\" href=\\\"https:\\/\\/www.sunshinenovelty.com\\/index.php?route=account\\/login\\\"> \\r\\n\\r\\n <div class=\\\"info pb-1\\\"> \\r\\n <span class=\\\"title text-black fw-bold\\\">\\r\\n <i class=\\\"fa-solid fa-triangle-exclamation\\\"><\\/i> Log in to access pricing information.<\\/span>\\r\\n <\\/div>\\r\\n <\\/a> \\r\\n{% endif %}<\\/div><\\/div><div id=\\\"entry_521549\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12 col-lg-6 order-sm-1 order-lg-0\\\"><div id=\\\"entry_521550\\\" data-id=\\\"521550\\\" class=\\\"entry-widget widget-html \\\"><div class=\\\"alert alert-primary alert-dismissible pt-1 pb-1 small\\\" role=\\\"alert\\\">\\r\\n <p id=\\\"p1\\\"><\\/p>\\r\\n<\\/div>\\r\\n\\r\\n<script>\\r\\n\\r\\n\\/\\/ Array con los d\\u00edas festivos de cada mes (ejemplo de muestra)\\r\\n\\/\\/ N\\u00f3tese que si un mes no tiene festivos debemos incluir igualmente un array vac\\u00edo, (ejemplo: Noviembre)\\r\\nconst festivos = [[1],[4, 11, 18, 25],[],[],[4, 11, 18, 25],[1,8,15,22,29],[6,13,20,27],[3,10,17,24,31],[7,14,21,28],[5,12,19,26],[2,9,16,23,30],[7,14,21,28,25]];\\r\\n\\r\\n\\/\\/ JavaScript usa como est\\u00e1ndar el formato de fecha ISO (YYYY-MM-DD)\\r\\n\\/\\/ const diaPedido = new Date(\'2019-01-04\');\\r\\n\\/\\/ Leyendo un poco tu comentario con m\\u00e1s atenci\\u00f3n veo que la fecha de pedido\\r\\n\\/\\/ es la fecha actual, por lo tanto edito para que la respuesta se ajuste a tu pregunta\\r\\n\\r\\nconst diaPedido = new Date(Date.now());\\r\\ndiaPedido.toDateString(); \\r\\n\\r\\n\\/\\/ Construimos la fecha usando como par\\u00e1metro el valor devuelto por Date.now().\\r\\n\\r\\n\\/\\/ La siguiente funci\\u00f3n recibe como par\\u00e1metros:\\r\\n\\/\\/ diaPedido: Es el d\\u00eda inicial, (cuando se recibe un pedido), tipo: Date\\r\\n\\/\\/ diasPactados: Es la cantidad de d\\u00edas laborales que han sido pactados para entrega, tipo: Number\\r\\n\\/\\/ festivos: Es el Array que hemos inicializado anteriormente y contiene los d\\u00edas festivos del a\\u00f1o, tipo: Array\\r\\n\\/\\/ Se espera que los d\\u00edas festivos sean fijos de a\\u00f1o en a\\u00f1o, pero pudieran modificarse.\\r\\n\\/\\/ As\\u00ed que s\\u00f3lo hay que asegurarse de pasar el array de festivos mas actualizado a la funci\\u00f3n.\\r\\n\\r\\nfunction calculaEntrega(diaPedido, diasPactados, festivos) {\\r\\n \\/\\/ diaPropuesto: almacena el mismo valor de diaPedido, en caso que diasPactados = 0, la funci\\u00f3n \\r\\n \\/\\/ devolver\\u00e1 el valor de diaPedido (para mi tiene l\\u00f3gica)\\r\\n let diaPropuesto = new Date(diaPedido.getFullYear(), diaPedido.getMonth(), diaPedido.getDate());\\r\\n\\r\\n\\r\\n \\/\\/ iniciamos un contador en 1 para calcular la fecha de diaPropuesto.\\r\\n let i = 1;\\r\\n \\r\\n \\/\\/ El siguiente bucle se ejecutar\\u00e1 hasta que se consuman los diasPactados\\r\\n while (diasPactados > 0 ) {\\r\\n \\/\\/ En cada iteraci\\u00f3n asumimos que el d\\u00eda no es festivo\\r\\n let festivo = false;\\r\\n \\/\\/ incrementamos en 1 el diaPropuesto para efectuar las verificaciones\\r\\n diaPropuesto = new Date(diaPedido.getFullYear(), diaPedido.getMonth(), diaPedido.getDate() + i);\\r\\n \\/\\/ N\\u00f3tese que usamos formato ISO y solo incrementamos el d\\u00eda, dejando el mes y el a\\u00f1o iguales\\r\\n \\/\\/ Alguien preguntar\\u00e1: \\u00bfY que pasa si la fecha es, digamos, 31 de Enero y le aumentamos 1 d\\u00eda?\\r\\n \\/\\/ Pues la respuesta l\\u00f3gica es que dar\\u00eda 32 de Enero, lo cual no es una fecha v\\u00e1lida.\\r\\n \\/\\/ Sin embargo, JavaScript es un poco mas atento que nosotros y simplemente realiza la aritm\\u00e9tica\\r\\n \\/\\/ necesaria para convertir el 32 de Enero en 01 de Febrero, y as\\u00ed nos salva el pellejo.\\r\\n \\/\\/ V\\u00e9ase bien que usamos los m\\u00e9todos getFullYear(), getMonth() y getDate().\\r\\n \\/\\/ Esto funciona siempre y cuando hagamos la construcci\\u00f3n del objeto Date de esta manera.\\r\\n \\/\\/ Ya ir\\u00e1 alguno de avispado y pondr\\u00e1: fecha = new Date(\'2019-01-32\'); lo cual le dar\\u00e1 \'fecha inv\\u00e1lida\'\\r\\n \\/\\/ Alguien un poco mas versado puede aclarar este asunto, pero no es el objetivo en este momento.\\r\\n\\r\\n if (diaPropuesto.getDay() > 0 && diaPropuesto.getDay() < 6) {\\r\\n \\/\\/ Aqu\\u00ed hemos usado el metodo getDay() del objeto Date, este metodo devuelve un valor entero entre 0 y 6,\\r\\n \\/\\/ donde 0: Domingo, 1: Lunes, ... , 6: Sabado.\\r\\n \\/\\/ Los d\\u00edas laborables van del 1 al 5 (ambos inclusive)\\r\\n \\r\\n \\/\\/ Si el d\\u00eda es laborable debemos entonces verificar si es festivo\\r\\n \\r\\n \\/\\/ Aqu\\u00ed es importante que entendamos lo siguiente:\\r\\n \\/\\/ * Por cada iteraci\\u00f3n debemos obtener el mes en el que estamos comprobando el festivo\\r\\n \\/\\/ * Vamos a comparar el d\\u00eda propuesto con el Array de festivos, usando el mes correspondiente\\r\\n\\r\\n let m = diaPropuesto.getMonth();\\r\\n let dia = diaPropuesto.getDate();\\r\\n \\r\\n \\r\\n\\r\\n \\/\\/ Felizmente para nosotros el metodo getMonth() devuelve un entero entre 0 y 11, que se\\r\\n \\/\\/ corresponde con cada mes del a\\u00f1o, y digo felizmente, porque los \\u00edndices de nuestro Array\\r\\n \\/\\/ van de 0 a 11 tambi\\u00e9n.\\r\\n\\r\\n for (let d in festivos[m]) {\\r\\n if (dia === festivos[m][d]) {\\r\\n festivo = true;\\r\\n \\/\\/Aqu\\u00ed no hay mucho que aclarar, si es festivo ya no sigo comprobando el resto del mes.\\r\\n break;\\r\\n }\\r\\n } \\/\\/ Fin bucle for\\r\\n\\r\\n if (!festivo) {\\r\\n \\/\\/ Si las condiciones son: Laborable y No Festivo, descuento el diaPactado.\\r\\n diasPactados--;\\r\\n }\\r\\n }\\r\\n\\r\\n \\/\\/ Por \\u00faltimo, debemos incrementar el n\\u00famero de d\\u00edas que sumaremos al diaPropuesto\\r\\n \\/\\/ en cada iteraci\\u00f3n\\r\\n i++;\\r\\n } \\/\\/ Fin de bucle while\\r\\n\\r\\n \\/\\/ Devolvemos el resultado\\r\\n return diaPropuesto;\\r\\n\\r\\n} \\/\\/ Fin funci\\u00f3n\\r\\n\\r\\n\\r\\n\\r\\n\\/\\/ Finalmente asignamos nuestra variable diaEntrega, la cual contendra un Objeto Date valido indicando\\r\\n\\/\\/ la fecha en que el pedido sera entregado.\\r\\n\\r\\nconst diaEntrega1 = calculaEntrega(diaPedido, 1, festivos).toDateString(); \\r\\nconst diaEntrega = calculaEntrega(diaPedido, 2, festivos).toDateString();\\r\\ndocument.getElementById(\\\"p1\\\").innerHTML = \\\"<p><i class=\'fas fa-shipping-fast\'><\\/i> Estimated delivery between: <strong>\\\" + diaEntrega1 + \\\" and \\\" + diaEntrega + \\\"<\\/strong><\\/p>\\\";\\r\\n\\r\\n<\\/script><\\/div><\\/div><\\/div><div id=\\\"entry_521551\\\" class=\\\"entry-row row order-2 order-sm-7 order-md-6 order-lg-3 \\\"><div id=\\\"entry_521552\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12 flex-md-column flex-lg-row\\\"><div id=\\\"entry_521553\\\" data-id=\\\"521553\\\" class=\\\"entry-content content-options \\\">{% set out_of_stock_options = [] %} {% if options %}\\n<div class=\\\"row g-3\\\">\\n{% for option in options %}\\n\\n{% if option.type == \'select\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521553\\\">{{ option.name }}<\\/label>\\n <select name=\\\"option[{{ option.product_option_id }}]\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" class=\\\"form-select\\\">\\n <option value=\\\"\\\">{{ text_select }}<\\/option>\\n {% for option_value in option.product_option_value %}\\n <option value=\\\"{{ option_value.product_option_value_id }}\\\">{{ option_value.name }}\\n {% if option_value.price %}\\n ({{ option_value.price_prefix }}{{ option_value.price }})\\n {% endif %} <\\/option>\\n {% endfor %}\\n <\\/select>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'radio\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label>{{ option.name }}<\\/label>\\n <div id=\\\"input-option{{ option.product_option_id }}-521553\\\">\\n {% for option_value in option.product_option_value %}<div class=\\\"form-check form-check-inline button{% if option_value.image %} image {% endif %}\\\">\\n <input id=\\\"input-option-radio{{ option_value.product_option_value_id }}-521553\\\" type=\\\"radio\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option_value.product_option_value_id }}\\\" class=\\\"form-check-input\\\" \\/>\\n <label for=\\\"input-option-radio{{ option_value.product_option_value_id }}-521553\\\" data-bs-toggle=\\\"tooltip\\\" title=\\\"{{ option_value.name }}{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}\\\" class=\\\"form-check-label\\\">\\n {% if option_value.image %}\\n <img src=\\\"{{ option_value.image }}\\\" alt=\\\"{{ option_value.name }} {% if option_value.price %} {{ option_value.price_prefix }} {{ option_value.price }} {% endif %}\\\" class=\\\"img-thumbnail image-circle\\\" \\/>\\n {% else %}\\n {{ option_value.name }}\\n {% endif %}\\n <\\/label>\\n <\\/div>{% endfor %} <\\/div>\\n<\\/div>\\n{% endif %}\\n\\n<!-- Options Quantity Multiple starts -->\\n\\n {% if option.type == \'multiple\' %}\\n\\n <style type=\\\"text\\/css\\\">\\n .oqm_table.table > tbody > tr > td, .oqm_table.table > tbody > tr > th, .oqm_table.table > tfoot > tr > td, .oqm_table.table > tfoot > tr > th, .oqm_table.table > thead > tr > td, .oqm_table.table > thead > tr > th {\\n vertical-align: middle;\\n }\\n\\t\\t\\t.QtyBox { display:none; }\\n\\t\\t\\t\\n\\t\\t\\t\\/* Chrome, Safari, Edge, Opera *\\/\\n input::-webkit-outer-spin-button,\\n input::-webkit-inner-spin-button {\\n -webkit-appearance: none;\\n margin: 0;\\n }\\n \\n \\/* Firefox *\\/\\n input[type=number] {\\n -moz-appearance: textfield;\\n }\\n\\t\\t\\t\\n\\t\\t\\t\\n <\\/style>\\n <div class=\\\"form-group{% if option.required %} required {% endif %}\\\">\\n <label class=\\\"control-label\\\" style=\\\"display:none\\\">{{ option.name }}<\\/label>\\n <div id=\\\"input-option{{ option.product_option_id }}\\\" {% if option.quickview == \'1\' %} style=\\\"max-height: 350px;overflow-y: scroll;\\\" {% endif %}>\\n\\t\\t\\t \\n\\t\\t\\t \\n\\t\\t\\t<script>\\nfunction updateTooltip(inputElement, stockQty, maxQty) {\\n var effectiveMaxQty = Math.min(stockQty, maxQty);\\n var tooltipSpan = inputElement.parentNode.querySelector(\'.max-qty-tooltip\');\\n tooltipSpan.title = \\\"Available Max Qty is \\\" + effectiveMaxQty;\\n}\\n\\nfunction validateQuantityi(inputElement, stockQty, maxQty) {\\n var inputValue = parseInt(inputElement.value);\\n\\tconsole.log(maxQty);\\n\\tif(maxQty > 0) {\\t\\n\\t\\tvar effectiveMaxQty = Math.min(stockQty, maxQty);\\n\\t} else {\\n\\t\\tvar effectiveMaxQty = stockQty;\\n\\t}\\n\\n\\tif (inputValue > effectiveMaxQty) {\\n\\t\\tif(maxQty > 0) {\\n\\t\\tinputElement.style.borderColor = \'red\';\\n\\t\\t}\\n\\t\\talert(\\\"Maximum quantity available is \\\" + effectiveMaxQty);\\n\\t\\tinputElement.value = effectiveMaxQty;\\n\\t} else {\\n\\t\\tinputElement.style.borderColor = \'\';\\n\\t}\\n\\t\\n}\\n\\nfunction clearInputIfZero(inputElement) {\\n if (inputElement.value === \'0\') {\\n inputElement.value = \'\';\\n }\\n}\\n\\n\\/\\/ Call updateTooltip for each item on page load or when stock changes\\n<\\/script>\\n\\n\\n\\n\\t\\t\\t <script>\\n\\t\\t\\t function validateQuantity(element, maxQuantity) {\\n if (parseInt(element.value) > maxQuantity) {\\n element.value = maxQuantity;\\n }\\n }\\n \\n function checkValor(item) {\\n let valor = parseInt(item.value);\\n if(isNaN(valor)) {\\n item.value = 0;\\n }\\n }\\n \\n \\n var rowCount = document.getElementById(\\\"opTable\\\").rows.length; \\/\\/ For rows\\n var colCount = document.getElementById(\\\"opTable\\\").rows[0].cells.length; \\/\\/ For columns\\n document.getElementById(\\\"count\\\").innerHTML = + rowCount -1;\\n\\n\\t\\t\\t <\\/script>\\n\\t\\t\\t \\n\\t\\t\\t \\n <table class=\\\"oqm_table table table-striped table-hover\\\" style=\\\"font-size: 13px;\\n border-left: 1px solid #ccc; border-right: 1px solid #ccc;\\\" id=\\\"opTable\\\">\\n <thead class=\\\"bg-dark\\\" style=\\\"position:sticky; top:0\\\">\\n <tr class=\\\"text-light\\\">\\n <td class=\\\"text-center\\\" style=\\\"width:50px\\\">QTY<\\/td>\\n <td class=\\\"text-center\\\" style=\\\"width:70px\\\">STOCK<\\/td>\\n <td><span class=\\\"btn btn-sm btn-outline-light\\\" id=\\\"count\\\"><\\/span> OPTIONS<\\/td>\\n <td style=\\\"width:50px\\\">PRICE <\\/td>\\n <\\/tr>\\n <\\/thead>\\n \\n {% for option_value in option.product_option_value %}\\n \\n <tr>\\n <td style=\\\"padding: 0.2rem 0.2rem;\\\">\\n <input size=\\\"3\\\" type=\\\"number\\\" class=\\\"pqty form-control\\\" style=\\\"width:54px\\\"\\n name=\\\"oquantity[{{ option.product_option_id }}][{{ option_value.product_option_value_id }}]\\\" value=\\\"0\\\"\\n {% if option_value.quantity <= 0 %} disabled {% endif %} \\n onchange=\\\"validateQuantityi(this, {{ option_value.quantity }}, {{ option_value.maxqty }})\\\"\\n onblur=\\\"resetErrorState(this);\\\"\\n onclick=\\\"clearInputIfZero(this); return false;\\\" \\/>\\n <\\/td>\\n <td class=\\\"text-center\\\">\\n {{ option_value.quantity }} {% if option_value.maxqty > 0 %}\\n <span class=\\\"max-qty-tooltip\\\" style=\\\"color:red;cursor:pointer\\\" onmouseover=\\\"updateTooltip(this, {{ option_value.quantity }}, {{ option_value.maxqty }})\\\">\\n <br>\\n \\n <span class=\\\"badge mx-1 bg-warning text-dark text-uppercase\\\">MAX QTY {{ option_value.maxqty }}<\\/span>\\n \\n \\n <\\/span>\\n {% endif %} \\n <\\/td>\\n <td>{{ option_value.name }}<\\/td>\\n <td>{{ option_value.total_price }}<\\/td>\\n<\\/tr>\\n\\n {% endfor %} \\n <\\/table>\\n <\\/div>\\n <\\/div> {% endif %}\\n <!-- Options Quantity Multiple ends -->\\n\\t\\t\\t\\n{% if option.type == \'checkbox\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label>{{ option.name }}<\\/label>\\n <div id=\\\"input-option{{ option.product_option_id }}-521553\\\" >\\n {% for option_value in option.product_option_value %}<div class=\\\"form-check form-check-inline button{% if option_value.image %} image {% endif %}\\\">\\n <input id=\\\"input-option-checkbox{{ option_value.product_option_value_id }}-521553\\\" type=\\\"checkbox\\\" name=\\\"option[{{ option.product_option_id }}][]\\\" value=\\\"{{ option_value.product_option_value_id }}\\\" class=\\\"form-check-input\\\" \\/>\\n <label for=\\\"input-option-checkbox{{ option_value.product_option_value_id }}-521553\\\" data-bs-toggle=\\\"tooltip\\\" title=\\\"{{ option_value.name }}{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}\\\" class=\\\"form-check-label\\\">\\n {% if option_value.image %}\\n <img src=\\\"{{ option_value.image }}\\\" alt=\\\"{{ option_value.name }} {% if option_value.price %} {{ option_value.price_prefix }} {{ option_value.price }} {% endif %}\\\" class=\\\"img-thumbnail image-circle\\\" \\/>\\n {% else %}\\n {{ option_value.name }}\\n {% endif %}\\n <\\/label>\\n <\\/div>{% endfor %}\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'text\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521553\\\">{{ option.name }}<\\/label>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" class=\\\"form-control\\\" \\/>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'textarea\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521553\\\">{{ option.name }}<\\/label>\\n <textarea name=\\\"option[{{ option.product_option_id }}]\\\" rows=\\\"5\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" class=\\\"form-control\\\">{{ option.value }}<\\/textarea>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'file\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label>{{ option.name }}<\\/label>\\n <div class=\\\"d-grid\\\">\\n <button type=\\\"button\\\" id=\\\"button-upload{{ option.product_option_id }}-521553\\\" data-loading-text=\\\"{{ text_loading }}\\\" class=\\\"btn btn-light border\\\"><i class=\\\"fas fa-upload\\\"><\\/i> {{ button_upload }}<\\/button>\\n <input type=\\\"hidden\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'date\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521553\\\">{{ option.name }}<\\/label>\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-text\\\"><i class=\\\"fas fa-calendar\\\"><\\/i><\\/span>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" class=\\\"form-control date\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'datetime\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521553\\\">{{ option.name }}<\\/label>\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-text\\\"><i class=\\\"fas fa-calendar\\\"><\\/i><\\/span>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" class=\\\"form-control datetime\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% if option.type == \'time\' %}\\n<div class=\\\"col-12 {% if option.required %} required {% endif %}\\\">\\n <label for=\\\"input-option{{ option.product_option_id }}-521553\\\">{{ option.name }}<\\/label>\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-text\\\"><i class=\\\"fas fa-time\\\"><\\/i><\\/span>\\n <input type=\\\"text\\\" name=\\\"option[{{ option.product_option_id }}]\\\" value=\\\"{{ option.value }}\\\" placeholder=\\\"{{ option.name }}\\\" id=\\\"input-option{{ option.product_option_id }}-521553\\\" class=\\\"form-control time\\\" \\/>\\n <\\/div>\\n<\\/div>\\n{% endif %}\\n{% endfor %}\\n<\\/div>\\n{% endif %}<\\/div><div id=\\\"entry_521554\\\" data-id=\\\"521554\\\" class=\\\"entry-content content-discounts order-1\\\">{% if price and discounts %}\\n<ul data-update=\\\"discounts\\\" class=\\\"list-group flex-sm-row flex-sm-nowrap\\\">\\n{% for discount in discounts %}\\n<li class=\\\"list-group-item\\\">{{ discount.quantity }}{{ text_discount }}{{ discount.price }}<\\/li>\\n{% endfor %}\\n<\\/ul>\\n{% endif %}<\\/div><div id=\\\"entry_521555\\\" data-id=\\\"521555\\\" class=\\\"entry-content content-recurring order-2\\\">{% if recurrings %}\\n<h5 class=\\\"content-title\\\">{{ text_payment_recurring }}<\\/h5>\\n<div class=\\\"mb-3 required\\\">\\n <select name=\\\"recurring_id\\\" class=\\\"form-select\\\">\\n <option value=\\\"\\\">{{ text_select }}<\\/option>\\n {% for recurring in recurrings %}\\n <option value=\\\"{{ recurring.recurring_id }}\\\">{{ recurring.name }}<\\/option>\\n {% endfor %}\\n <\\/select>\\n <div class=\\\"form-text\\\" id=\\\"recurring-description\\\"><\\/div>\\n<\\/div>\\n{% endif %}<\\/div><div id=\\\"entry_521556\\\" class=\\\"entry-row row order-3 \\\"><div id=\\\"entry_521557\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12\\\"><div id=\\\"entry_521558\\\" data-id=\\\"521558\\\" class=\\\"entry-content content-quantity flex-md-grow-0 flex-lg-grow-1 flex-md-shrink-0 flex-lg-shrink-1\\\"><div data-toggle=\\\"spinner\\\" class=\\\"input-group flex-nowrap input-group-md QtyBox\\\" >\\n <button class=\\\"btn btn-dark\\\" data-spinner=\\\"down\\\" data-min=\\\"{{ minimum }}\\\" type=\\\"button\\\" aria-label=\\\"Decrease quantity\\\"><i class=\\\"fas fa-minus-circle\\\"><\\/i><\\/button>\\n <input type=\\\"number\\\" name=\\\"quantity\\\" value=\\\"{{ minimum }}\\\" step=\\\"1\\\" min=\\\"{{ minimum }}\\\" aria-label=\\\"{{ entry_qty }}\\\" class=\\\"form-control text-center border-dark remove-spin-button\\\" \\/>\\n <button class=\\\"btn btn-dark\\\" data-spinner=\\\"up\\\" data-max=\\\"{{ quantity }}\\\" type=\\\"button\\\" aria-label=\\\"Increase quantity\\\"><i class=\\\"fas fa-plus-circle\\\"><\\/i><\\/button>\\n<\\/div><\\/div><div id=\\\"entry_521559\\\" data-id=\\\"521559\\\" class=\\\"entry-content content-button order-1 align-self-md-center align-self-lg-auto\\\"><div class=\\\"d-grid\\\">\\n<button type=\\\"button\\\" class=\\\"both btn btn-md btn-secondary btn-cart button-cart cart-{{ product_id }}\\\" data-loading-text=\\\"{{ text_loading }}\\\" title=\\\"{{ button_cart }}\\\" {% if quantity <= 0 and not oc_config.get(\'config_stock_checkout\') %}disabled{% endif %}>\\n<i class=\\\"fas fa-cart-arrow-down\\\"><\\/i> {% if 1 and quantity <= 0 %}{{ stock_status }}{% else %}{{ button_cart }}{% endif %}<\\/button>\\n\\n\\n<\\/div><\\/div><\\/div><div id=\\\"entry_521560\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12 col-lg-6 order-sm-1 order-lg-0\\\"><div id=\\\"entry_521561\\\" data-id=\\\"521561\\\" class=\\\"entry-widget widget-html \\\">{% if out_of_stock_options|length > 0 %}\\r\\n <style>\\r\\n \\/* Styles for the modal *\\/\\r\\n .modal {\\r\\n display: none; \\/* Hide the modal by default *\\/\\r\\n position: fixed;\\r\\n z-index: 9999;\\r\\n left: 0;\\r\\n top: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n background-color: rgba(0,0,0,0.4); \\/* Black with transparency *\\/\\r\\n }\\r\\n\\r\\n .modal-content {\\r\\n background-color: #fefefe;\\r\\n margin: 10% auto;\\r\\n padding: 20px;\\r\\n border: 1px solid #888;\\r\\n width: 80%;\\r\\n max-width: 800px;\\r\\n text-align: center;\\r\\n }\\r\\n <\\/style>\\r\\n\\r\\n<div style=\\\"width:100%; padding:0px 15px 15px 15px\\\">\\r\\n <button type=\\\"button\\\" onclick=\\\"openModal()\\\" style=\\\"cursor: pointer; width:100%\\\" class=\\\"btn btn-warning btn-block\\\" data-toggle=\\\"modal\\\" data-target=\\\"#outOfStockModal\\\"><i class=\\\"fa fa-bell\\\" ><\\/i>&nbsp;&nbsp;{{ notify_button_p }}<\\/button>\\r\\n<\\/div>\\r\\n\\r\\n<!-- The Modal -->\\r\\n<div id=\\\"outOfStockModal\\\" class=\\\"modal\\\">\\r\\n <!-- Modal content -->\\r\\n <div class=\\\"modal-content\\\">\\r\\n <span onclick=\\\"closeModal()\\\" style=\\\"cursor: pointer;\\\" class=\\\"btn-close mz-modal-close\\\">&times;<\\/span>\\r\\n\\r\\n <!-- Form -->\\r\\n\\t <form id=\\\"outOfStockForm\\\" method=\\\"post\\\" enctype=\\\"multipart\\/form-data\\\" class=\\\"form-horizontal\\\" data-language=\\\"en-gb\\\">\\r\\n <input type=\\\"hidden\\\" name=\\\"product_id\\\" value=\\\"{{ product_id }}\\\" \\/>\\r\\n\\t\\t\\t <input type=\\\"hidden\\\" name=\\\"stock_qty\\\" value=\\\"1\\\" \\/>\\r\\n\\t\\t\\t <input type=\\\"hidden\\\" name=\\\"store_id\\\" value=\\\"0\\\" \\/>\\r\\n\\t\\t\\t <input type=\\\"hidden\\\" name=\\\"language_id\\\" value=\\\"1\\\" \\/>\\r\\n <!-- Other hidden fields -->\\r\\n\\r\\n\\t\\t<fieldset>\\r\\n\\t\\t\\r\\n\\t\\t<div id=\\\"notificationMessage\\\" class=\\\"alert\\\" style=\\\"display: none;\\\"><\\/div>\\r\\n\\t\\t<div class=\\\"mb-3 row required required\\\">\\r\\n <label class=\\\"col-sm-2 col-form-label\\\" for=\\\"outOfStockOptions\\\">Out of Stock Options:<\\/label>\\r\\n <div class=\\\"col-sm-10\\\">\\r\\n <select class=\\\"form-control form-select\\\" id=\\\"outOfStockOptions\\\" name=\\\"selected_option\\\">\\r\\n {% for out_of_stock_option in out_of_stock_options %}\\r\\n <option value=\\\"{{ out_of_stock_option }}\\\">{{ out_of_stock_option }}<\\/option>\\r\\n {% endfor %}\\r\\n <\\/select>\\r\\n <\\/div>\\r\\n <\\/div>\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"mb-3 row required\\\"> \\r\\n\\t\\t<label class=\\\"col-sm-2 col-form-label\\\" for=\\\"name\\\">Name: <\\/label> \\r\\n\\t\\t<div class=\\\"col-sm-10\\\"> \\r\\n\\t\\t<input type=\\\"text\\\" name=\\\"name\\\" value=\\\"{{ customer_name }}\\\" id=\\\"name\\\" placeholder=\\\"First Name\\\" required class=\\\"form-control\\\">\\r\\n\\t\\t<\\/div> \\r\\n\\t\\t<\\/div>\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"mb-3 row required\\\"> \\r\\n\\t\\t<label class=\\\"col-sm-2 col-form-label\\\" for=\\\"email\\\">Email:<\\/label> \\r\\n\\t\\t<div class=\\\"col-sm-10\\\"> \\r\\n\\t\\t{% if logged %}\\r\\n\\t\\t<input type=\\\"email\\\" name=\\\"email\\\" value=\\\"{{ customer_email }}\\\" id=\\\"email\\\" placeholder=\\\"Email\\\" required class=\\\"form-control\\\">\\r\\n\\t\\t {% else %}\\r\\n <input type=\\\"email\\\" name=\\\"email\\\" value=\\\"\\\" placeholder=\\\"Your Email\\\" id=\\\"email\\\" class=\\\"form-control\\\">\\r\\n {% endif %}\\r\\n\\t\\t<\\/div> \\r\\n\\t\\t<\\/div>\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"mb-3 row \\\"> \\r\\n\\t\\t<label class=\\\"col-sm-2 col-form-label\\\" for=\\\"email\\\">Comment:<\\/label> \\r\\n\\t\\t<div class=\\\"col-sm-10\\\"> \\r\\n\\t\\t<textarea name=\\\"stock_comment\\\" rows=\\\"5\\\" id=\\\"comment\\\" placeholder=\\\"Message\\\" class=\\\"form-control\\\"><\\/textarea>\\r\\n\\t\\t<\\/div> \\r\\n\\t\\t<\\/div>\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t<\\/fieldset>\\r\\n <!-- Submit Button -->\\r\\n <div class=\\\"modal-footer\\\">\\r\\n <div class=\\\"pull-right\\\">\\r\\n <button type=\\\"submit\\\" id=\\\"NotifyButtonId\\\" class=\\\"btn btn-primary\\\" >\\r\\n <span>Submit<\\/span>\\r\\n <\\/button>\\r\\n <\\/div>\\r\\n <\\/div>\\r\\n <\\/form>\\r\\n <\\/div>\\r\\n<\\/div>\\r\\n\\r\\n\\r\\n<script>\\r\\n \\/\\/ Declare modal using let to avoid redeclaration error\\r\\n let modal = document.getElementById(\'outOfStockModal\');\\r\\n\\r\\n \\/\\/ Function to open the modal\\r\\n function openModal() {\\r\\n modal.style.display = \'block\';\\r\\n }\\r\\n\\r\\n \\/\\/ Function to close the modal\\r\\n function closeModal() {\\r\\n\\t$(\'#notificationMessage\').hide(); \\r\\n modal.style.display = \'none\';\\r\\n }\\r\\n\\r\\n \\/\\/ Close the modal if the user clicks outside the modal content\\r\\n window.onclick = function(event) {\\r\\n if (event.target == modal) {\\r\\n modal.style.display = \'none\';\\r\\n }\\r\\n }\\r\\n \\r\\n function displayNotification(message, type) {\\r\\n let colors = {\\r\\n \'danger\': \'red\',\\r\\n \'success\': \'green\'\\r\\n };\\r\\n $(\'#notificationMessage\').css(\'color\', colors[type]).text(message).show();\\r\\n}\\r\\n\\r\\n$(\'#outOfStockForm\').on(\'submit\', function(event) {\\r\\n event.preventDefault();\\r\\n\\r\\n \\/\\/ Hide any previous notifications\\r\\n $(\'#notificationMessage\').hide();\\r\\n\\r\\n \\/\\/ Show loading state on the button\\r\\n $(\'#NotifyButtonId\').attr(\'disabled\', true).html(\'<span>Loading...<\\/span>\');\\r\\n\\r\\n $.ajax({\\r\\n url: \'index.php?route=extension\\/module\\/hb_oosn\\/confirm\',\\r\\n type: \'post\',\\r\\n data: $(this).serialize(),\\r\\n dataType: \'json\',\\r\\n complete: function() {\\r\\n \\/\\/ Revert button\'s state after AJAX call is complete\\r\\n $(\'#NotifyButtonId\').attr(\'disabled\', false).html(\'<span>Submit<\\/span>\');\\r\\n },\\r\\n success: function(json) {\\r\\n if (json[\'error\']) {\\r\\n displayNotification(json[\'error\'], \'danger\');\\r\\n }\\r\\n\\t\\t\\tif (json[\'notify_error\']) {\\r\\n displayNotification(json[\'notify_error\'], \'danger\');\\r\\n } \\r\\n\\r\\n if (json[\'notify_warning\']) {\\r\\n displayNotification(json[\'notify_warning\'], \'danger\');\\r\\n }\\r\\n\\r\\n if (json[\'success\']) {\\r\\n displayNotification(json[\'success\'], \'success\');\\r\\n\\t\\t\\t\\t$(\'#comment\').val(\'\'); \\/\\/ Reset textarea value to an empty string\\r\\n\\r\\n setTimeout(function() {\\r\\n closeModal();\\r\\n }, 5000); \\r\\n }\\r\\n }\\r\\n });\\r\\n});\\r\\n\\r\\n<\\/script>\\r\\n{% endif %}<\\/div><\\/div><\\/div><\\/div><\\/div><div id=\\\"entry_521562\\\" data-id=\\\"521562\\\" class=\\\"entry-content content-extra order-4 order-sm-2 order-md-1 order-lg-4\\\"><ul class=\\\"list-unstyled m-0\\\">\\n \\n\\n\\n\\n\\n\\n\\n\\n{% if mz_extra.mpn %}\\n\\n<li>\\n <a class=\\\"pseudo\\\">\\n<i class=\\\"icon fas fa-bullhorn text-dark align-middle\\\" style=\\\"\\/* width:15px; *\\/float:left;padding-left: 10px;position: absolute;padding-top: 2px;\\/* align-self: center; *\\/\\/* vertical-align: middle; *\\/\\\"><\\/i>\\n<div class=\\\"marquee-container\\\">\\n <svg width=\\\"85%\\\" height=\\\"1.2rem\\\" viewBox=\\\"0 0 400 1\\\">\\n <defs>\\n <!-- marquee way -->\\n <path id=\\\"text-path\\\" d=\\\"M 0 0, 400 0\\\" fill=\\\"transparent\\\"\\/>\\n <\\/defs>\\n\\n <!-- Text -->\\n <text font-size=\\\"1.2rem\\\" fill=\\\"#020203\\\" class=\\\"uppercase-text\\\" text-anchor=\\\"middle\\\" dominant-baseline=\\\"middle\\\">\\n <textPath id=\\\"marquee-text\\\" href=\\\"#text-path\\\">\\n <!-- Text adds in JavaScript -->\\n <\\/textPath>\\n <\\/text>\\n <\\/svg>\\n <\\/div>\\n<\\/a>\\n \\n <\\/li>\\n<!--<li><span class=\\\"ls-label\\\">{{ text_mpn }}<\\/span> <span>{{ mz_extra.mpn }}<\\/span><\\/li>-->\\n{% endif %}\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n<\\/ul>\\n\\n\\n<style>\\n .pseudo {\\n display: block;\\n position: relative;\\n border-radius: 1em;\\n background: #FFF;\\n height:22px;\\n width: 290px;\\n}\\n.pseudo:after {\\n position: absolute;\\n z-index: -1;\\n top: -2px;\\n bottom: -2px;\\n right: -2px;\\n left: -2px;\\n background: linear-gradient(to right, #fd7e14 0%, #ffc107 100%);\\n border-radius: 1em;\\n content: \'\';\\n}\\n\\n.marquee-container {\\n overflow: hidden;\\n position: relative;\\n margin-left:40px;\\n width:280px;\\n}\\n\\n.uppercase-text {\\n text-transform: uppercase;\\n}\\n\\n\\/* Media *\\/\\n@media (max-width: 768px) {\\n text {\\n font-size: 2rem;\\n }\\n}\\n\\n@media (max-width: 480px) {\\n text {\\n font-size: 1.4rem; \\n }\\n}\\n\\n\\/* Background size *\\/\\npath {\\n stroke-width: 2rem;\\n}\\n\\n@media (max-width: 768px) {\\n path {\\n stroke-width: 6rem; \\n }\\n}\\n\\n@media (max-width: 480px) {\\n path {\\n stroke-width: 8rem;\\n }\\n}\\n \\n<\\/style>\\n\\n<script>\\n function startMarquee(id, pathId, content, speed) {\\n const textPath = document.getElementById(id);\\n const path = document.getElementById(pathId);\\n const pathLength = path.getTotalLength();\\n textPath.innerHTML = content;\\n\\n let offset = 0;\\n\\n function animateText() {\\n offset -= speed;\\n if (offset < 0) {\\n offset = pathLength;\\n } else if (offset > pathLength) {\\n offset = 0;\\n }\\n textPath.setAttribute(\'startOffset\', `${offset}px`);\\n requestAnimationFrame(animateText);\\n }\\n\\n animateText();\\n }\\n\\n document.addEventListener(\'DOMContentLoaded\', () => {\\n const textContent1 = \'<a style=\\\"text-decoration: none;\\\">{{ mz_extra.mpn }} &nbsp;&nbsp;\\u26a1&nbsp;&nbsp;<\\/a>\'.repeat(20);\\n startMarquee(\'marquee-text\', \'text-path\', textContent1, -0.5);\\n });\\n\\n<\\/script><\\/div><div id=\\\"entry_521563\\\" data-id=\\\"521563\\\" class=\\\"entry-design design-horizontal_line order-5 order-sm-3 order-md-2 order-lg-5\\\"><hr\\/><\\/div><div id=\\\"entry_521564\\\" data-id=\\\"521564\\\" class=\\\"entry-design design-horizontal_line order-6 order-sm-5 order-md-4 order-lg-6\\\"><hr\\/><\\/div><div id=\\\"entry_521565\\\" class=\\\"entry-row row order-7 order-sm-4 order-md-3 order-lg-7 \\\"><div id=\\\"entry_521566\\\" class=\\\"entry-col d-none d-sm-flex d-lg-none col-12 col-lg-6\\\"><div id=\\\"entry_521567\\\" data-id=\\\"521567\\\" class=\\\"entry-content content-extra \\\"><ul class=\\\"list-unstyled m-0\\\">\\n \\n{% if manufacturer %}\\n<li><span class=\\\"ls-label\\\">{{ text_brand }}:<\\/span> <a class=\\\"text-decoration-none\\\" href=\\\"{{ manufacturers }}\\\">{{ manufacturer }}<\\/a><\\/li>\\n{% endif %}\\n\\n\\n{% if mz_extra.sku %}\\n<li><span class=\\\"ls-label\\\">{{ text_sku }}<\\/span> <span>{{ mz_extra.sku }}<\\/span><\\/li>\\n{% endif %}\\n\\n\\n\\n\\n\\n\\n\\n{% if mz_extra.viewed > 0 %}\\n<li><span class=\\\"ls-label\\\">{{ text_viewed }}<\\/span> <span>{{ mz_extra.viewed }}<\\/span><\\/li>\\n{% endif %}\\n\\n\\n\\n\\n\\n\\n\\n\\n<li><span class=\\\"ls-label\\\">{{ text_stock }}<\\/span>\\n {% if quantity <= 0 %}\\n <span class=\'badge text-bg-danger\'>{{ stock }}<\\/span>\\n {% else %}\\n <span class=\'badge text-bg-success\'>{{ stock }}<\\/span>\\n {% endif %}\\n <\\/li>\\n<\\/ul>\\n\\n\\n<style>\\n .pseudo {\\n display: block;\\n position: relative;\\n border-radius: 1em;\\n background: #FFF;\\n height:22px;\\n width: 290px;\\n}\\n.pseudo:after {\\n position: absolute;\\n z-index: -1;\\n top: -2px;\\n bottom: -2px;\\n right: -2px;\\n left: -2px;\\n background: linear-gradient(to right, #fd7e14 0%, #ffc107 100%);\\n border-radius: 1em;\\n content: \'\';\\n}\\n\\n.marquee-container {\\n overflow: hidden;\\n position: relative;\\n margin-left:40px;\\n width:280px;\\n}\\n\\n.uppercase-text {\\n text-transform: uppercase;\\n}\\n\\n\\/* Media *\\/\\n@media (max-width: 768px) {\\n text {\\n font-size: 2rem;\\n }\\n}\\n\\n@media (max-width: 480px) {\\n text {\\n font-size: 1.4rem; \\n }\\n}\\n\\n\\/* Background size *\\/\\npath {\\n stroke-width: 2rem;\\n}\\n\\n@media (max-width: 768px) {\\n path {\\n stroke-width: 6rem; \\n }\\n}\\n\\n@media (max-width: 480px) {\\n path {\\n stroke-width: 8rem;\\n }\\n}\\n \\n<\\/style>\\n\\n<script>\\n function startMarquee(id, pathId, content, speed) {\\n const textPath = document.getElementById(id);\\n const path = document.getElementById(pathId);\\n const pathLength = path.getTotalLength();\\n textPath.innerHTML = content;\\n\\n let offset = 0;\\n\\n function animateText() {\\n offset -= speed;\\n if (offset < 0) {\\n offset = pathLength;\\n } else if (offset > pathLength) {\\n offset = 0;\\n }\\n textPath.setAttribute(\'startOffset\', `${offset}px`);\\n requestAnimationFrame(animateText);\\n }\\n\\n animateText();\\n }\\n\\n document.addEventListener(\'DOMContentLoaded\', () => {\\n const textContent1 = \'<a style=\\\"text-decoration: none;\\\">{{ mz_extra.mpn }} &nbsp;&nbsp;\\u26a1&nbsp;&nbsp;<\\/a>\'.repeat(20);\\n startMarquee(\'marquee-text\', \'text-path\', textContent1, -0.5);\\n });\\n\\n<\\/script><\\/div><div id=\\\"entry_521568\\\" data-id=\\\"521568\\\" class=\\\"entry-content content-specification order-1\\\"><ul class=\\\"nav nav-tabs\\\" role=\\\"tablist\\\" style=\\\"margin-bottom: 0;\\\">\\n {% for key, attribute_group in attribute_groups %}\\n <li class=\\\"nav-item\\\">\\n <a class=\\\"nav-link{% if not key %} active{% endif %}\\\" data-bs-toggle=\\\"tab\\\" href=\\\"#attribute-tab-pane-521568-{{ key }}\\\" role=\\\"tab\\\">\\n \\n <img src=\\\"https:\\/\\/www.sunshinenovelty.com\\/image\\/display-icon-v2.svg\\\" width=\\\"25\\\" class=\\\"me-2 text-dark\\\">\\n {{ attribute_group.name }}\\n <\\/a>\\n <\\/li>\\n {% endfor %}\\n<\\/ul>\\n<div class=\\\"tab-content\\\">\\n {% for key, attribute_group in attribute_groups %}\\n <div class=\\\"tab-pane fade{% if not key %} show active{% endif %}\\\" id=\\\"attribute-tab-pane-521568-{{ key }}\\\" role=\\\"tabpanel\\\">\\n <table class=\\\"mb-0 table table-borderless table-sm \\\">\\n <tbody>\\n {% for attribute in attribute_group.attribute %}\\n <tr>\\n <td>{{ attribute.name }}<\\/td>\\n <td>{{ attribute.text }}<\\/td>\\n <\\/tr>\\n {% endfor %}\\n <\\/tbody>\\n <\\/table>\\n <\\/div>\\n {% endfor %}\\n<\\/div><\\/div><div id=\\\"entry_521569\\\" data-id=\\\"521569\\\" class=\\\"entry-content content-brand order-2\\\">{% if mz_manufacturer_image %}\\n<figure class=\\\"figure m-0\\\">\\n <a href=\\\"{{ manufacturers }}\\\"><img src=\\\"{{ mz_manufacturer_image }}\\\" class=\\\"img-fluid img-thumbnail\\\" alt=\\\"{{ manufacturer }}\\\"><\\/a>\\n <\\/figure>\\n{% endif %}<\\/div><\\/div><\\/div><\\/div><\\/div><\\/div><div id=\\\"entry_521570\\\" class=\\\"\\\"><div class=\\\"entry-section container \\\"><div id=\\\"entry_521571\\\" class=\\\"entry-module module-mz_product_listing \\\">{mz_module.mz_product_listing.106.521571}<\\/div><div id=\\\"entry_521572\\\" class=\\\"entry-module module-mz_product_listing mb-4 \\\">{mz_module.mz_product_listing.68.521572}<\\/div><\\/div><\\/div>\"', `timestamp` = '0' in /home/sunshine/public_html/system/library/db/mysqli.php:49 Stack trace: #0 /home/sunshine/public_html/storage2/cache.kamod/system/db.1.kamod.php(64): DB\MySQLi->query('REPLACE INTO `o...') #1 /home/sunshine/public_html/system/library/maza/cache/db.php(81): DB_kamod->query('REPLACE INTO `o...') #2 /home/sunshine/public_html/system/library/maza/cache.php(105): maza\Cache\DB->set('mz_poco.megasto...', '<div id="entry_...', false) #3 /home/sunshine/public_html/catalog/controller/extension/maza/layout_builder.php(83): maza\Cache->set('mz_poco.megasto...', '<div id="entry_...', false) #4 /home/sunshine/public_html/catalog/controller/extension/maza/layout_builder.php(21): ControllerExtensionMazalayoutBuilder->getLayoutData(Array) #5 /home/sunshine/public_html/storage2/cache.kamod/system/action.1.kamod.php(104): ControllerExtensionMazalayoutBuilder->index(Array) #6 /home/sunshine/public_html/storage2/cache.kamod/system/action.0.kamod.php(121): Action_kamod->execute(Object(Registry), Array) #7 /home/sunshine/public_html/storage2/cache.kamod/system/loader.1.kamod.php(57): extension\ka_extensions\engine\Action->execute(Object(Registry), Array) #8 /home/sunshine/public_html/catalog/controller/extension/maza/event/controller/product/product.php(651): Loader_kamod->controller('extension/maza/...', Array) #9 /home/sunshine/public_html/storage2/cache.kamod/system/action.1.kamod.php(104): ControllerExtensionMazaEventControllerProductProduct->before('product/product', NULL) #10 /home/sunshine/public_html/storage2/cache.kamod/system/action.0.kamod.php(121): Action_kamod->execute(Object(Registry), Array) #11 /home/sunshine/public_html/storage2/modification/system/engine/event.php(68): extension\ka_extensions\engine\Action->execute(Object(Registry), Array) #12 /home/sunshine/public_html/catalog/controller/startup/router.php(15): Event->trigger('controller/prod...', Array) #13 /home/sunshine/public_html/storage2/cache.kamod/system/action.1.kamod.php(104): ControllerStartupRouter->index() #14 /home/sunshine/public_html/storage2/cache.kamod/system/action.0.kamod.php(121): Action_kamod->execute(Object(Registry), Array) #15 /home/sunshine/public_html/system/engine/router.php(67): extension\ka_extensions\engine\Action->execute(Object(Registry)) #16 /home/sunshine/public_html/system/engine/router.php(56): Router->execute(Object(Action)) #17 /home/sunshine/public_html/system/framework.php(169): Router->dispatch(Object(Action), Object(Action)) #18 /home/sunshine/public_html/system/startup.php(110): require_once('/home/sunshine/...') #19 /home/sunshine/public_html/index.php(34): start('catalog') #20 {main} thrown in /home/sunshine/public_html/system/library/db/mysqli.php on line 49