| Server IP : 172.67.75.225 / Your IP : 216.73.216.185 Web Server : nginx/1.27.1 System : Linux us-1 5.15.0-131-generic #141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025 x86_64 User : vinodai ( 3134) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /storage/v1396/bewellpeptide/public_html/wp-content/themes/bewell-theme/assets/js/ |
Upload File : |
/**
* BeWell Theme — bewell.js
* Handles: age gate, mobile menu, sticky header, cart updates
*/
(function () {
'use strict';
// ── Age Gate ────────────────────────────────────────────────────────────────
var ageGate = document.getElementById('bw-age-gate');
var ageConfirm = document.getElementById('bw-age-confirm');
if (ageGate && ageConfirm) {
ageConfirm.addEventListener('click', function () {
var nonce = ageConfirm.dataset.nonce || '';
// Optimistic hide
ageGate.style.opacity = '0';
ageGate.style.transition = 'opacity .3s';
setTimeout(function () { ageGate.style.display = 'none'; }, 320);
// Persist via AJAX (if WP is available)
if (window.bewellData && window.bewellData.ajaxUrl) {
var fd = new FormData();
fd.append('action', 'bewell_age_confirm');
fd.append('nonce', nonce);
fetch(window.bewellData.ajaxUrl, { method: 'POST', body: fd });
}
// Fallback cookie (JS-only)
var d = new Date();
d.setFullYear(d.getFullYear() + 1);
document.cookie = 'bewell_age=1; expires=' + d.toUTCString() + '; path=/; SameSite=Lax';
});
// Close on overlay click
var overlay = ageGate.querySelector('.bw-age-gate__overlay');
if (overlay) {
overlay.addEventListener('click', function (e) {
if (e.target === overlay) {
ageGate.style.opacity = '0';
ageGate.style.transition = 'opacity .3s';
setTimeout(function () { ageGate.style.display = 'none'; }, 320);
var d = new Date();
d.setFullYear(d.getFullYear() + 1);
document.cookie = 'bewell_age=1; expires=' + d.toUTCString() + '; path=/; SameSite=Lax';
}
});
}
}
// ── Mobile Menu Toggle ──────────────────────────────────────────────────────
var mobileToggle = document.getElementById('bw-mobile-toggle');
var primaryNav = document.getElementById('bw-primary-nav');
if (mobileToggle && primaryNav) {
mobileToggle.addEventListener('click', function () {
var isOpen = primaryNav.classList.toggle('open');
mobileToggle.classList.toggle('open', isOpen);
mobileToggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
});
// Close on outside click
document.addEventListener('click', function (e) {
if (!primaryNav.contains(e.target) && !mobileToggle.contains(e.target)) {
primaryNav.classList.remove('open');
mobileToggle.classList.remove('open');
mobileToggle.setAttribute('aria-expanded', 'false');
}
});
}
// ── Sticky Header Shadow ────────────────────────────────────────────────────
var header = document.getElementById('bw-site-header');
if (header) {
var onScroll = function () {
if (window.scrollY > 10) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
};
window.addEventListener('scroll', onScroll, { passive: true });
onScroll();
}
// ── Marquee: pause on hover ─────────────────────────────────────────────────
var marqueeTrack = document.querySelector('.bw-marquee__track');
if (marqueeTrack) {
marqueeTrack.addEventListener('mouseenter', function () {
marqueeTrack.style.animationPlayState = 'paused';
});
marqueeTrack.addEventListener('mouseleave', function () {
marqueeTrack.style.animationPlayState = 'running';
});
}
// ── Newsletter form: basic UX feedback ─────────────────────────────────────
var nlForm = document.querySelector('.bw-newsletter__form');
if (nlForm) {
nlForm.addEventListener('submit', function (e) {
e.preventDefault();
var btn = nlForm.querySelector('button[type="submit"]');
if (btn) {
btn.textContent = '✓ Subscribed!';
btn.disabled = true;
btn.style.background = '#1a7f3c';
btn.style.borderColor = '#1a7f3c';
}
});
}
// ── Contact / Partner forms: basic UX feedback ──────────────────────────────
document.querySelectorAll('.bw-form').forEach(function (form) {
form.addEventListener('submit', function (e) {
// Let WP process the form normally; just add a loading state
var btn = form.querySelector('button[type="submit"]');
if (btn) {
btn.textContent = 'Sending…';
btn.disabled = true;
}
});
});
// ── WooCommerce cart count live update (fragments) ───────────────────────────
// WooCommerce fires 'wc_fragments_refreshed' after cart updates
document.body.addEventListener('wc_fragments_refreshed', function () {
// The count fragment is already handled by WooCommerce fragments via PHP
// This is a hook in case custom count updates are needed
});
})();