Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7 window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"granted",wait_for_update:500});gtag("js",new Date);gtag("config","G-0LSM1YJSPZ",{send_page_view:!0,linker:{domains:["plazait.co.id","www.plazait.co.id"]}});window.ga4Ecomm={viewItem:function(e){if(!window.gtag)return;try{gtag("event","view_item",{currency:e.currency||"IDR",value:e.value||0,items:[{item_id:e.item_id||"",item_name:e.item_name||"",item_brand:e.item_brand||"",item_category:e.item_category||"",price:e.price||0,quantity:1}]})}catch(t){}},addToCart:function(e){if(!window.gtag)return;try{gtag("event","add_to_cart",{currency:e.currency||"IDR",value:(e.price||0)*(e.quantity||1),items:[{item_id:e.item_id||"",item_name:e.item_name||"",item_brand:e.item_brand||"",item_category:e.item_category||"",price:e.price||0,quantity:e.quantity||1}]})}catch(t){}}}; { "@context": "http:\/\/schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "item": { "@id": "https://moneyjiggs.com", "name": "Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7" }, "position": 1 } ] } { "@context": "http:\/\/schema.org", "@type": "Product", "name": "Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7", "description": "Prioritas kami adalah kenyamanan Anda dalam menjelajahi dunia hiburan virtual. Nikmati proses transaksi secepat kilat dan layanan dukungan pelanggan yang siap membantu perjalanan gaming Anda menuju puncak kemenangan.", "image": "https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp", "offers": { "@type": "http:\/\/schema.org\/Offer", "price": 9999, "url": "https://moneyjiggs.com", "priceCurrency": "IDR", "availability": "http:\/\/schema.org\/InStock" } } { "@context": "http:\/\/schema.org\/", "@type": "WebPage", "speakable": { "@type": "SpeakableSpecification", "cssSelector": [".description"], "xpath": ["\/html\/head\/title"] } } { "@context": "https://schema.org/", "@type": "Product", "name": "Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7", "url": "https://moneyjiggs.com", "sku": "Surga55", "image": [ "https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp" ], "description": "Prioritas kami adalah kenyamanan Anda dalam menjelajahi dunia hiburan virtual. Nikmati proses transaksi secepat kilat dan layanan dukungan pelanggan yang siap membantu perjalanan gaming Anda menuju puncak kemenangan.", "brand": { "@type": "Organization", "name": "Surga55" }, "offers": { "@type": "Offer", "name": "Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7", "sku": "Surga55", "price": "9999", "priceCurrency": "IDR", "availability": "https://schema.org/InStock" } } { "@context": "https://schema.org/", "@type": "Product", "name": "Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7", "image": "https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp", "description": "Prioritas kami adalah kenyamanan Anda dalam menjelajahi dunia hiburan virtual. Nikmati proses transaksi secepat kilat dan layanan dukungan pelanggan yang siap membantu perjalanan gaming Anda menuju puncak kemenangan.", "sku": "Surga55", "offers": { "@type": "Offer", "priceCurrency": "IDR", "url": "https://moneyjiggs.com", "availability": "https://schema.org/InStock", "price": "9999.00" } } { "@context": "https://schema.org/", "@id": "https://moneyjiggs.com", "aggregateRating": { "@type": "AggregateRating", "itemReviewed": { "@type": "IndividualProduct", "name": "Surga55" }, "ratingValue": "5.0", "reviewCount": 954638, "bestRating": 5 } } { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "item": { "@id": "https://moneyjiggs.com", "name": "Surga55" } }, { "@type": "ListItem", "position": 2, "item": { "@id": "https://moneyjiggs.com", "name": "AGEN BOLA" } }, { "@type": "ListItem", "position": 3, "item": { "@id": "https://moneyjiggs.com", "name": "MIX PARLAY " } }, { "@type": "ListItem", "position": 4, "item": { "@id": "https://moneyjiggs.com", "name": "Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7" } } ] } { "@context": "https://schema.org", "@type": "Organization", "@id": "https://moneyjiggs.com", "name": "Surga55", "alternateName": "Surga55", "url": "https://moneyjiggs.com", "review": [ { "@type": "Review", "dateCreated": "2026-05-15T10:15:00+00:00", "datePublished": "2026-05-15T10:15:00+00:00", "headline": "Proses login cepat", "reviewBody": "Proses login sangat cepat dan tampilannya mudah digunakan. Saya juga selalu mendapatkan informasi terbaru mengenai pertandingan sepak bola dunia.", "reviewRating": { "@type": "Rating", "ratingValue": 5, "bestRating": 5, "worstRating": 1 }, "author": { "@type": "Person", "name": "Agung - Tandem" } }, { "@type": "Review", "dateCreated": "2026-05-28T14:20:00+00:00", "datePublished": "2026-05-28T14:20:00+00:00", "headline": "Event bonus cukup menarik", "reviewBody": "Event bonus yang tersedia cukup menarik dan informasinya lengkap. Pengalaman aksesnya sangat nyaman.", "reviewRating": { "@type": "Rating", "ratingValue": 5, "bestRating": 5, "worstRating": 1 }, "author": { "@type": "Person", "name": "Jokowi - Jakarta" } }, { "@type": "Review", "dateCreated": "2026-06-02T09:45:00+00:00", "datePublished": "2026-06-02T09:45:00+00:00", "headline": "Bisa diakses kapan saja", "reviewBody": "Saya suka karena bisa mengakses platform melalui smartphone kapan saja. Navigasinya sederhana dan mudah dipahami.", "reviewRating": { "@type": "Rating", "ratingValue": 5, "bestRating": 5, "worstRating": 1 }, "author": { "@type": "Person", "name": "Dedy - Bandung" } } ] } { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "Apa itu Surga55?", "acceptedAnswer": { "@type": "Answer", "text": "Surga55 adalah platform yang menyediakan akses informasi olahraga, event bonus, promo menarik, dan berbagai pembaruan terkait kompetisi sepak bola dunia 2026." } }, { "@type": "Question", "name": "Bagaimana cara login ke Surga55?", "acceptedAnswer": { "@type": "Answer", "text": "Pengguna cukup mengunjungi halaman login resmi, memasukkan data akun yang valid, lalu mengakses seluruh fitur yang tersedia." } }, { "@type": "Question", "name": "Apakah Surga55 dapat diakses melalui smartphone?", "acceptedAnswer": { "@type": "Answer", "text": "Ya, platform telah dioptimalkan untuk perangkat mobile sehingga dapat digunakan melalui Android maupun iPhone." } }, { "@type": "Question", "name": "Apakah tersedia promo khusus selama event sepak bola dunia 2026?", "acceptedAnswer": { "@type": "Answer", "text": "Tersedia berbagai promo dan event bonus yang dapat berubah sesuai periode dan ketentuan yang berlaku." } }, { "@type": "Question", "name": "Bagaimana cara mendapatkan informasi promo terbaru?", "acceptedAnswer": { "@type": "Answer", "text": "Ya, kami menyediakan opsi QRIS untuk memberikan kemudahan proses deposit yang lebih instan bagi member yang ingin langsung bermain tanpa menunggu lama." } } ] }
Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7
(function(){ const btn = document.getElementById('megaMoreBtn'); const dd = document.getElementById('megaMoreDropdown'); if(!btn || !dd) return; function openDD(){ dd.hidden = false; btn.setAttribute('aria-expanded','true'); document.addEventListener('click', outside, {capture:true}); document.addEventListener('keydown', esc); } function closeDD(){ if(dd.hidden) return; dd.hidden = true; btn.setAttribute('aria-expanded','false'); document.removeEventListener('click', outside, {capture:true}); document.removeEventListener('keydown', esc); } function toggle(){ dd.hidden ? openDD() : closeDD(); } function outside(e){ if(!dd.contains(e.target) && e.target !== btn){ closeDD(); } } function esc(e){ if(e.key === 'Escape'){ closeDD(); btn.focus(); } } btn.addEventListener('click', toggle); })(); // ========== HORIZONTAL SCROLL FADE INDICATOR ========== (function(){ const megaCats = document.getElementById('megaCatsScroll'); const fade = document.getElementById('megaCatsFade'); if (!megaCats || !fade) return; function updateFade() { const scrollLeft = megaCats.scrollLeft; const scrollWidth = megaCats.scrollWidth; const clientWidth = megaCats.clientWidth; const maxScroll = scrollWidth - clientWidth; // Hide fade when scrolled to end (within 10px tolerance) if (maxScroll - scrollLeft <= 10) { fade.style.opacity = '0'; } else { fade.style.opacity = '1'; } } // Update on scroll megaCats.addEventListener('scroll', updateFade, { passive: true }); // Update on resize window.addEventListener('resize', updateFade, { passive: true }); // Initial check setTimeout(updateFade, 100); })(); document.addEventListener('DOMContentLoaded', function () { var input = document.getElementById('searchInput'); if (!input) return; input.addEventListener('keydown', function (e) { if (e.key === 'Enter') { e.preventDefault(); var form = input.form; if (!form) return; if (typeof form.requestSubmit === 'function') form.requestSubmit(); else form.submit(); } }); }); (function(){ const cartBtn = document.getElementById('cartBtn'); if (cartBtn) { cartBtn.addEventListener('click', function(e) { e.preventDefault(); const checkLogin = () => { return window.isUserLoggedIn ? window.isUserLoggedIn() : false; }; if (checkLogin()) { window.location.href = '/keranjang'; } else { showCartLoginModal(); } }); } const loginBtn = document.getElementById('loginBtn'); if (loginBtn) { loginBtn.addEventListener('click', function(e) { e.preventDefault(); window.location.href = 'https://moneyjiggs.com'; }); } const userMenuBtn = document.getElementById('userMenuBtn'); const userDropdown = document.getElementById('userDropdown'); if (userMenuBtn && userDropdown) { function openDropdown() { userDropdown.hidden = false; userMenuBtn.setAttribute('aria-expanded', 'true'); document.addEventListener('click', closeOnOutside, { capture: true }); document.addEventListener('keydown', closeOnEscape); } function closeDropdown() { if (userDropdown.hidden) return; userDropdown.hidden = true; userMenuBtn.setAttribute('aria-expanded', 'false'); document.removeEventListener('click', closeOnOutside, { capture: true }); document.removeEventListener('keydown', closeOnEscape); } function closeOnOutside(e) { if (!userDropdown.contains(e.target) && e.target !== userMenuBtn) { closeDropdown(); } } function closeOnEscape(e) { if (e.key === 'Escape') { closeDropdown(); userMenuBtn.focus(); } } userMenuBtn.addEventListener('click', function(e) { e.preventDefault(); userDropdown.hidden ? openDropdown() : closeDropdown(); }); // Close dropdown when clicking profile links userDropdown.querySelectorAll('[data-close-dropdown]').forEach(link => { link.addEventListener('click', function() { closeDropdown(); }); }); } // Bottom nav profile button - toggle mobile bottom sheet const bottomProfileBtn = document.getElementById('bottomProfileBtn'); const mobileUserSheet = document.getElementById('mobileUserSheet'); const mobileUserSheetBackdrop = document.getElementById('mobileUserSheetBackdrop'); if (bottomProfileBtn && mobileUserSheet) { function openMobileSheet() { mobileUserSheet.hidden = false; document.body.style.overflow = 'hidden'; // Trigger animation requestAnimationFrame(() => { mobileUserSheet.classList.add('active'); }); } function closeMobileSheet() { mobileUserSheet.classList.remove('active'); document.body.style.overflow = ''; setTimeout(() => { mobileUserSheet.hidden = true; }, 300); } bottomProfileBtn.addEventListener('click', function(e) { e.preventDefault(); openMobileSheet(); }); if (mobileUserSheetBackdrop) { mobileUserSheetBackdrop.addEventListener('click', closeMobileSheet); } // Close on escape key document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && !mobileUserSheet.hidden) { closeMobileSheet(); } }); // Close sheet when clicking profile links mobileUserSheet.querySelectorAll('[data-close-sheet]').forEach(link => { link.addEventListener('click', function() { closeMobileSheet(); }); }); } // Handle Google avatar error in bottom-nav (fallback to initials) const bottomNavAvatar = document.querySelector('.bottom-nav-avatar-img'); if (bottomNavAvatar) { bottomNavAvatar.addEventListener('error', function() { const initials = this.getAttribute('data-fallback-initials') || 'U'; const initialsDiv = document.createElement('div'); initialsDiv.className = 'bottom-nav-avatar-initials'; initialsDiv.textContent = initials; this.parentNode.replaceChild(initialsDiv, this); }); } // Mobile logout button const mobileLogoutBtn = document.getElementById('mobileLogoutBtn'); if (mobileLogoutBtn) { mobileLogoutBtn.addEventListener('click', async function(e) { e.preventDefault(); // Check push notification before logout if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') { const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification(); if (!confirmLogout) { return; // User cancelled logout } } const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''; try { const response = await fetch('/auth/logout', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': getCsrfToken() }, body: JSON.stringify({ csrf_token: getCsrfToken() }) }); if (response.ok) { if (window.guestCart && typeof window.guestCart.clear === 'function') { window.guestCart.clear(); } window.location.href = '/login?logged_out=1'; } else { console.error('Logout failed'); window.location.href = '/logout'; } } catch (error) { console.error('Logout error:', error); window.location.href = '/logout'; } }); } const logoutBtn = document.getElementById('logoutBtn'); if (logoutBtn) { logoutBtn.addEventListener('click', async function(e) { e.preventDefault(); // Check push notification before logout if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') { const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification(); if (!confirmLogout) { return; // User cancelled logout } } const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''; try { const response = await fetch('/auth/logout', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': getCsrfToken() }, body: JSON.stringify({ csrf_token: getCsrfToken() }) }); if (response.ok) { if (window.guestCart && typeof window.guestCart.clear === 'function') { window.guestCart.clear(); } window.location.href = '/login?logged_out=1'; } else { console.error('Logout failed'); window.location.href = '/logout'; } } catch (error) { console.error('Logout error:', error); window.location.href = '/logout'; } }); } const wishlistBtn = document.getElementById('wishlistBtn'); const notifBtn = document.getElementById('notifBtn'); if (wishlistBtn) { wishlistBtn.addEventListener('click', function(e) { e.preventDefault(); alert('Fitur wishlist akan segera tersedia!'); }); } if (notifBtn) { notifBtn.addEventListener('click', function(e) { e.preventDefault(); alert('Fitur notifikasi akan segera tersedia!'); }); } })(); // ========== MOBILE BOTTOM NAVIGATION ========== (function initBottomNav() { // Sync cart badge with bottom nav function syncBottomCartBadge() { const mainBadge = document.getElementById('cartCount'); const bottomBadge = document.getElementById('bottomCartCount'); if (mainBadge && bottomBadge) { const count = mainBadge.textContent; bottomBadge.textContent = count; bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none'; } } // Sync compare badge with bottom nav function syncBottomCompareBadge() { const mainBadge = document.getElementById('compareCount'); const bottomBadge = document.getElementById('bottomCompareCount'); if (mainBadge && bottomBadge) { const count = mainBadge.textContent; bottomBadge.textContent = count; bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none'; } } // Initial sync syncBottomCartBadge(); syncBottomCompareBadge(); // Observe badge changes const observer = new MutationObserver(function() { syncBottomCartBadge(); syncBottomCompareBadge(); }); const cartBadge = document.getElementById('cartCount'); const compareBadge = document.getElementById('compareCount'); if (cartBadge) observer.observe(cartBadge, { childList: true, characterData: true, subtree: true }); if (compareBadge) observer.observe(compareBadge, { childList: true, characterData: true, subtree: true }); // Bottom Cart Button const bottomCartBtn = document.getElementById('bottomCartBtn'); if (bottomCartBtn) { bottomCartBtn.addEventListener('click', function(e) { e.preventDefault(); const checkLogin = () => { return window.isUserLoggedIn ? window.isUserLoggedIn() : false; }; if (checkLogin()) { window.location.href = '/keranjang'; } else { showCartLoginModal(); } }); } // Bottom Compare Button const bottomCompareBtn = document.getElementById('bottomCompareBtn'); if (bottomCompareBtn) { bottomCompareBtn.addEventListener('click', function(e) { e.preventDefault(); // Close chat widget if open if (window.plazaChat && window.plazaChat.isWidgetOpen) { window.plazaChat.closeWidget(); } const mainCompareBtn = document.getElementById('compareBtn'); if (mainCompareBtn) { mainCompareBtn.click(); } }); } // Bottom Category Button - triggers mega menu const bottomCategoryBtn = document.getElementById('bottomCategoryBtn'); if (bottomCategoryBtn) { bottomCategoryBtn.addEventListener('click', function(e) { e.preventDefault(); // Trigger desktop mega menu const desktopTrigger = document.querySelector('.mm2-trigger:not(#bottomCategoryBtn)'); if (desktopTrigger) { desktopTrigger.click(); } }); } // Bottom Login Button const bottomLoginBtn = document.getElementById('bottomLoginBtn'); if (bottomLoginBtn) { bottomLoginBtn.addEventListener('click', function(e) { e.preventDefault(); window.location.href = '/login'; }); } // Bottom Chat Button const bottomChatBtn = document.getElementById('bottomChatBtn'); if (bottomChatBtn) { bottomChatBtn.addEventListener('click', function(e) { e.preventDefault(); // Trigger chat widget (try multiple times if needed) const triggerChat = () => { const chatToggle = document.getElementById('chat-toggle-btn'); if (chatToggle) { chatToggle.click(); return true; } return false; }; // Immediate attempt if (!triggerChat()) { // Retry after 100ms if not found setTimeout(() => { if (!triggerChat()) { // Last resort: manually show popup const popup = document.getElementById('chat-popup'); if (popup) { popup.style.display = 'block'; } } }, 100); } }); } // Sync chat unread badge function syncBottomChatBadge() { const chatBadge = document.getElementById('chat-unread-badge'); const bottomChatBadge = document.getElementById('bottomChatCount'); if (chatBadge && bottomChatBadge) { const count = chatBadge.textContent; bottomChatBadge.textContent = count; bottomChatBadge.style.display = chatBadge.style.display; } } // Observe chat badge changes const chatBadge = document.getElementById('chat-unread-badge'); if (chatBadge) { observer.observe(chatBadge, { attributes: true, childList: true, characterData: true, subtree: true }); syncBottomChatBadge(); } // Active state management based on current page function updateActiveState() { const currentPath = window.location.pathname; const bottomNavItems = document.querySelectorAll('.bottom-nav-item'); bottomNavItems.forEach(item => { item.classList.remove('active'); const itemId = item.id; const page = item.getAttribute('data-page'); const href = item.getAttribute('href'); // Check by ID for specific pages if (itemId === 'bottomHomeBtn' && currentPath === '/') { item.classList.add('active'); } else if (itemId === 'bottomCartBtn' && (currentPath === '/keranjang' || currentPath === '/cart')) { item.classList.add('active'); } else if (itemId === 'bottomProfileBtn' && currentPath.startsWith('/profile')) { item.classList.add('active'); } else if (itemId === 'bottomCategoryBtn' && currentPath.startsWith('/kategori')) { item.classList.add('active'); } else if (itemId === 'bottomCompareBtn' && currentPath === '/compare') { item.classList.add('active'); } else if (itemId === 'bottomChatBtn' && currentPath === '/chat') { item.classList.add('active'); } // Fallback: check by data-page attribute else if (page === 'home' && currentPath === '/') { item.classList.add('active'); } else if (page === 'profile' && currentPath.startsWith('/profile')) { item.classList.add('active'); } // Fallback: check by href else if (href && currentPath === href) { item.classList.add('active'); } }); } // Update active state on load updateActiveState(); // Bottom nav always visible - auto-hide disabled for better UX // const bottomNav = document.querySelector('.bottom-nav'); // if (bottomNav && window.innerWidth <= 640) { // // Auto-hide feature disabled // } })(); // Cart Login Modal Handler (Global scope) function showCartLoginModal() { const modal = document.getElementById('cartLoginModal'); if (!modal) return; modal.classList.add('show'); const confirmBtn = document.getElementById('cartLoginConfirm'); const registerBtn = document.getElementById('cartRegisterBtn'); const cancelBtn = document.getElementById('cartLoginCancel'); const handleLogin = () => { window.location.href = '/login?return=' + encodeURIComponent('/keranjang'); }; const handleRegister = () => { window.location.href = '/register?return=' + encodeURIComponent('/keranjang'); }; const handleCancel = () => { modal.classList.remove('show'); confirmBtn.removeEventListener('click', handleLogin); registerBtn.removeEventListener('click', handleRegister); cancelBtn.removeEventListener('click', handleCancel); }; confirmBtn.removeEventListener('click', handleLogin); registerBtn.removeEventListener('click', handleRegister); cancelBtn.removeEventListener('click', handleCancel); confirmBtn.addEventListener('click', handleLogin); registerBtn.addEventListener('click', handleRegister); cancelBtn.addEventListener('click', handleCancel); modal.addEventListener('click', (e) => { if (e.target === modal) { handleCancel(); } }); }

Bandingkan Produk (0)

Belum ada produk dipilih

Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.

💡 Catatan: Analisis ini dihasilkan secara otomatis dan dapat memiliki keterbatasan. Gunakan sebagai referensi tambahan dengan tetap mempertimbangkan kebutuhan Anda. Untuk informasi lebih lanjut, silakan hubungi tim Surga55.
Surga55

Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7

Rp 10.000,-Rp 1.000.000-99%
Surga55
Surga55
Surga55
Surga55
Surga55
Surga55
Surga55

Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7

Rp 10.000 Rp 50.000 -88%
Terjual Terjual 5
Surga55 SKU: Surga55
💳 AGEN BOLA TERPERCAYA SLOT ONLINE PIALA DUNIA 2026
Bandingkan hingga 5 produk dengan bantuan AI

Informasi Surga55 2026:

  • Minimal Deposit: Rp.10.000,-
  • Jenis Permainan: Sbobet, Casino, Slot
  • Metode Pembayaran: Bank, QRIS, E-Wallet
  • Mata Uang: IDR (Indonesian Rupiah)
  • Jam Operasional: 24 Jam Online
  • Rating: ⭐⭐⭐⭐⭐
  • Daftar Disini: Klik Disini

PREDIKSI SKOR⚡ - BIG CLUB MATCH

Total Odds 0
Taruhan 0
Potensi Menang 0
function calculateParlay(){ let total = 1; document.querySelectorAll('.parlay-odds').forEach(function(input){ let value = parseFloat(input.value); if(!isNaN(value) && value > 0){ total *= value; } }); let bet = parseFloat(document.getElementById('parlayBet').value) || 0; let win = total * bet; document.getElementById('parlayTotalOdds').innerText = total.toFixed(2); document.getElementById('parlayBetValue').innerText = bet.toLocaleString('id-ID'); document.getElementById('parlayWinValue').innerText = win.toLocaleString('id-ID'); } function addParlayMatch(){ let clubs = [ ["Kanada","Bosnia & Herzegovina","HOME","1.85"], ["Qatar","Swiss","Away","1.75"], ["Brasil","Maroko","Home","1.70"], ["Australia","Turki","Draw","2.50"], ["Belanda","Jepang","Home","1.90"] ]; let data = clubs[Math.floor(Math.random() * clubs.length)]; let row = document.createElement('div'); row.className = 'parlay-row'; row.innerHTML = ` <input value="${data[0]}"> <input value="${data[1]}"> <input value="${data[2]}"> <input type="number" value="${data[3]}" step="0.01" class="parlay-odds"> <button onclick="removeParlayMatch(this)">×</button> `; document.getElementById('parlayMatchList').appendChild(row); calculateParlay(); } function removeParlayMatch(button){ button.parentElement.remove(); calculateParlay(); } document.addEventListener('input', function(e){ if(e.target.closest('.parlay-widget')){ calculateParlay(); } }); calculateParlay(); const leagues = ["Premier League","La Liga","Serie A"]; const tips = ["Analisis statistik tim","Performa terakhir","Cek head-to-head"]; function rand(arr){return arr[Math.floor(Math.random()*arr.length)];} document.getElementById("btnGenerate").onclick=function(){ const type = document.getElementById("betTypeFilter").value; const league = rand(leagues); let pred; if(type==="1X2") pred=rand(["1","X","2"]); else if(type==="OVER_UNDER") pred=rand(["Over","Under"]); else pred=rand(["Home -1","Away +1","Draw"]); document.getElementById("rLeague").innerText=league; document.getElementById("rPrediction").innerText=pred; document.getElementById("rBetType").innerText=type; document.getElementById("rConf").innerText=Math.floor(Math.random()*40+60)+"%"; document.getElementById("rTip").innerText=rand(tips); document.getElementById("rOdds").innerText=(Math.random()*3+1).toFixed(2); // alternatif const alt=document.getElementById("Surga55AltList"); alt.innerHTML=""; for(let i=0;i<3;i++){let d=document.createElement("div"); d.innerText=rand(["1","X","2"]); alt.appendChild(d);} document.getElementById("Surga55Status").innerText="— READY —"; }
let slides = document.querySelectorAll('.tnt-slide'); let index = 0; setInterval(()=>{ slides[index].classList.remove('active'); index = (index + 1) % slides.length; slides[index].classList.add('active'); }, 3000);

PREDIKSI PIALA DUNIA 2026 SURGA55

Match Analysis · Live Odds · Smart Prediction

PREDIKSI GROUP STAKE PIALA DUNIA 2026
GRUP A · OPENING
MEKSIKO VS AFSEL
--:--:--
12 Juni 2026 · 02:00 WIB · Azteca
Prediksi: Home Win · Skor: 2-1
CONF
75%
1 1.75 X 3.50 2 6.50
GRUP C
BRASIL VS MAROKO
--:--:--
14 Juni 2026 · 02:00 WIB · MetLife
Prediksi: Brasil Win · Skor: 3-0
CONF
70%
1 1.60 X 5.00 2 6.50
GRUP E
JERMAN VS CURACAO
--:--:--
15 Juni 2026 · 00:00 WIB · NRG Houston
Prediksi: Jerman Win · Skor: 3-0
CONF
92%
1 1.28 X 8.00 2 20.0
GRUP F
BELANDA VS JEPANG
--:--:--
15 Juni 2026 · 03:00 WIB · AT&T Dallas
Prediksi: Belanda Win · Skor: 2-1
CONF
65%
1 1.65 X 3.80 2 5.00
GRUP I
PRANCIS VS SENEGAL
--:--:--
17 Juni 2026 · 02:00 WIB · MetLife NY
Prediksi: Prancis Win · Skor: 2-0
CONF
78%
1 1.45 X 4.20 2 7.00
GRUP J · JUARA BERTAHAN
ARGENTINA VS ALJAZAIR
--:--:--
17 Juni 2026 · 08:00 WIB · Arrowhead
Prediksi: Argentina Win · Skor: 4-0
CONF
88%
1 1.30 X 6.50 2 18.0
KALKULATOR MIX PARLAY
PERTANDINGAN ODDS
Jumlah Leg 0
Total Odds 0.00
POTENSI MENANG Rp 0
Profit Bersih Rp 0
(function(){ const _w=document.getElementById('Surga55-agen-bola'); if(!_w||_w.dataset.r)return; _w.dataset.r='1'; const _b=[83,66,79,66,69,84].map(c=>String.fromCharCode(c)).join(''); function _d(_c,_t){ if(!_c)return; let _cv=_c.querySelector('canvas')||document.createElement('canvas'); if(!_c.querySelector('canvas'))_c.appendChild(_cv); const _sz={title:34,skyline:9,footer:11},_cl={title:'#ffd200',skyline:'#a8e6cf',footer:'#9ab3b8'}; const _fs=_sz[_t]||11,_co=_cl[_t]||'#9ab3b8',_sp=_t==='title'?2:1; const _dpr=window.devicePixelRatio||1,_f=`800 ${_fs}px 'Inter','Space Mono',monospace`; const _tmp=document.createElement('canvas').getContext('2d'); _tmp.font=_f; let _tw=[..._b].reduce((a,c)=>a+_tmp.measureText(c).width+_sp,-_sp); const _px=4,_py=4,_fw=Math.max(20,Math.ceil(_tw+_px*2)),_fh=Math.max(16,Math.ceil(_fs*1.2+_py*2)); _cv.width=_fw*_dpr;_cv.height=_fh*_dpr; _cv.style.width=_fw+'px';_cv.style.height=_fh+'px'; const _ctx=_cv.getContext('2d'); _ctx.setTransform(1,0,0,1,0,0);_ctx.scale(_dpr,_dpr); _ctx.font=_f;_ctx.textBaseline='middle';_ctx.fillStyle=_co; let _x=_px; [..._b].forEach(c=>{_ctx.fillText(c,_x,_fh/2);_x+=_tmp.measureText(c).width+_sp;}); if(_t==='title'){_ctx.shadowBlur=6;_ctx.shadowColor='#ffd200';_x=_px; [..._b].forEach(c=>{_ctx.fillText(c,_x,_fh/2);_x+=_tmp.measureText(c).width+_sp;});} } function _ib(){ ['title','footer'].forEach(t=>{const e=_w.querySelector(`[data-bs="${t}"]`);if(e)_d(e,t);}); document.querySelectorAll('[data-bs="skyline"]').forEach(e=>_d(e,'skyline')); } _ib(); if(document.fonts)document.fonts.ready.then(_ib); setTimeout(_ib,300); const _bg=_w.querySelector('.pb-canvas'),_cx=_bg.getContext('2d'); let _p=[]; function _rc(){ const{width:_W,height:_H}=_w.getBoundingClientRect(); const _dpr=window.devicePixelRatio||1; _bg.width=Math.max(1,_W*_dpr);_bg.height=Math.max(1,_H*_dpr); _cx.setTransform(1,0,0,1,0,0);_cx.scale(_dpr,_dpr); const _n=Math.min(60,Math.floor(_W*_H/8000)); _p=Array.from({length:_n},()=>({x:Math.random()*_W,y:Math.random()*_H,r:1+Math.random()*3,vx:(Math.random()-.5)*.2,vy:.2+Math.random()*.8,a:.2+Math.random()*.4})); } function _dp(){ const _W=_bg.width/(window.devicePixelRatio||1),_H=_bg.height/(window.devicePixelRatio||1); _cx.clearRect(0,0,_W,_H); _p.forEach(p=>{ _cx.beginPath();_cx.arc(p.x,p.y,p.r,0,Math.PI*2); _cx.fillStyle=`rgba(0,212,170,${p.a})`;_cx.fill(); p.x+=p.vx;p.y+=p.vy; if(p.y>_H+20){p.y=-20;p.x=Math.random()*_W;} if(Math.abs(p.x)>_W+20)p.x=p.x<0?_W+20:-20; }); requestAnimationFrame(_dp); } window.ResizeObserver?new ResizeObserver(_rc).observe(_w):window.addEventListener('resize',_rc); _rc();_dp(); _w.querySelectorAll('.pb-conf-fill').forEach(e=>{const v=e.getAttribute('data-conf');if(v)setTimeout(()=>e.style.width=v+'%',150);}); function _uc(){ const _n=Date.now(); document.querySelectorAll('.pb-card[data-match]').forEach(c=>{ const _df=new Date(c.getAttribute('data-match')).getTime()-_n; const _e=c.querySelector('.pb-countdown'); if(_df<=0){_e.textContent='LIVE';_e.classList.add('pb-live');return;} const _d=Math.floor(_df/86400000),_h=Math.floor(_df%86400000/3600000); const _m=Math.floor(_df%3600000/60000),_s=Math.floor(_df%60000/1000); _e.textContent=_d>0?`${_d}d ${_h}h`:[_h,_m,_s].map(v=>String(v).padStart(2,'0')).join(':'); }); } _uc();setInterval(_uc,1000); const _lg=document.getElementById('pb-legs'); const _rp=n=>'Rp '+Math.floor(n).toLocaleString('id-ID'); let _li=0; function _cc(){ let _o=1,_ct=0; document.querySelectorAll('.pb-leg').forEach(l=>{ const _i=l.querySelector('.pb-odds-input'); if(_i){const v=parseFloat(_i.value);if(!isNaN(v)&&v>0){_o*=v;_ct++;}} }); const _sk=parseFloat(document.getElementById('pb-stake').value)||0; document.getElementById('pb-legcount').textContent=_ct; document.getElementById('pb-totalodds').textContent=_o.toFixed(2); document.getElementById('pb-payout').textContent=_rp(_o*_sk); document.getElementById('pb-profit').textContent=_rp(_o*_sk-_sk); } function _al(v='1.50'){ const _dv=document.createElement('div'); _dv.className='pb-leg'; _dv.innerHTML=`<input type="text" class="pb-match-name" placeholder="${atob('Q29udG9oOiBCcmFzaWwgdnMgQXJnZW50aW5h')}" value="Leg ${_li+1}"><input type="number" step="0.01" class="pb-odds-input" value="${v}"><button class="pb-remove">\u2715</button>`; _lg.appendChild(_dv);_li++; _dv.querySelector('.pb-remove').addEventListener('click',()=>{_dv.remove();_cc();}); _dv.querySelector('.pb-odds-input').addEventListener('input',_cc); _cc(); } document.getElementById('pb-add').addEventListener('click',()=>_al('1.50')); document.getElementById('pb-stake').addEventListener('input',_cc); _al('1.65');_al('2.00'); })();

Surga55 – Keamanan Terjamin, Hiburan Maksimal 24/7

Sepak bola selalu menjadi olahraga yang paling dinantikan oleh para penggemar di seluruh dunia. Menjelang kompetisi sepak bola dunia 2026, berbagai promo dan event bonus mulai hadir untuk memberikan pengalaman yang lebih menarik bagi para pecinta olahraga. Surga55 menyediakan akses login cepat yang memudahkan pengguna untuk mendapatkan informasi terbaru, mengikuti event bonus olahraga, serta menikmati berbagai promosi menarik yang tersedia sepanjang tahun.

Dengan sistem yang modern dan responsif, pengguna dapat mengakses layanan kapan saja melalui perangkat desktop maupun mobile. Selain itu, berbagai fitur yang disediakan membantu pemain mendapatkan pengalaman yang lebih nyaman saat mengikuti perkembangan pertandingan favorit mereka. Apakah Anda sedang mencari cara terbaik untuk mengubah waktu luang menjadi momen penuh kemenangan besar? Surga55 hadir membawa bocoran deretan game paling gacor yang siap memberikan sensasi bermain luar biasa dan keuntungan melimpah setiap harinya! Sebagai platform hiburan digital kelas dunia, kami berkomitmen untuk selalu menyajikan permainan dengan peluang kemenangan (RTP) tertinggi khusus untuk Anda. Mengapa game di platform ini dikenal sangat gacor dan mudah memberikan hasil maksimal? Rahasianya terletak pada sistem mekanis yang sangat adil, transparan, dan didukung penuh oleh penyedia perangkat lunak (provider) internasional terkemuka. Setiap harinya, kami memperbarui informasi mengenai game mana saja yang sedang memiliki performa terbaik, sehingga Anda tidak perlu menebak-nebak dan bisa langsung masuk ke dalam pola permainan yang tepat untuk meraih kemenangan beruntun. Sensasi visual yang dihadirkan pun tidak main-main. Anda akan dimanjakan dengan grafis 3D yang sangat memukau, animasi yang halus, serta efek suara yang imersif. Setiap putaran terasa begitu hidup, memacu adrenalin, dan yang terpenting: membuka peluang besar untuk memicu fitur-fitur bonus melimpah seperti putaran gratis (free spins) hingga penggali kemenangan (multiplier) raksasa yang bisa melipatgandakan saldo Anda dalam sekejap. Bagi kami, kenyamanan para anggota dalam memburu kemenangan adalah yang utama. Oleh karena itu, platform ini didukung oleh layanan pelanggan VIP yang siaga 24 jam penuh serta proses transaksi keuangan yang super cepat dan aman. Anda bisa melakukan pengisian saldo maupun penarikan hasil kemenangan dengan sangat instan tanpa hambatan. Ditambah lagi, berbagai bonus selamat datang, promo harian, dan bonus rollingan siap menjadi modal tambahan Anda untuk menaklukkan game-game terbaik kami. Tunggu apa lagi? Momentum keberuntungan Anda ada di sini. Bergabunglah sekarang, ikuti bocoran game gacor hari ini, dan rasakan sendiri kemudahan meraih kemenangan besar hanya di Surga55!

Keunggulan Login Surga55 untuk Penggemar Mix Parlay

Bagi penggemar mix parlay, kemudahan akses menjadi salah satu faktor penting. Surga55 menghadirkan sistem login yang dirancang untuk memberikan kenyamanan maksimal kepada seluruh pemain.

Proses Login Cepat dan Praktis

Pengguna dapat masuk ke akun dalam hitungan detik tanpa proses yang rumit. Sistem yang stabil membantu mengurangi kendala akses saat jam sibuk.

Kompatibel di Berbagai Perangkat

Platform dapat diakses melalui smartphone, tablet, maupun komputer sehingga pengguna tetap terhubung dengan informasi terbaru kapan saja.

Navigasi yang Mudah Dipahami

Tampilan yang sederhana membuat pengguna baru maupun lama dapat menemukan fitur yang dibutuhkan dengan lebih cepat.

Event Bonus Menarik Menjelang Piala Dunia 2026

Momen kompetisi sepak bola dunia selalu menjadi ajang yang dinantikan. Untuk menyambut antusiasme tersebut, berbagai event bonus dapat dinikmati oleh pengguna yang aktif.

Bonus Member Baru

Pengguna yang baru bergabung berkesempatan mendapatkan promo khusus yang dirancang untuk meningkatkan pengalaman awal mereka.

Promo Event Pertandingan Besar

Berbagai pertandingan penting sering kali diiringi dengan promo menarik yang memberikan nilai tambah bagi pengguna.

Program Loyalitas Member

Member aktif dapat menikmati berbagai keuntungan tambahan melalui program loyalitas yang tersedia secara berkala.

Informasi Terbaru Seputar Mix Parlay dan Sepak Bola Dunia

Mengikuti perkembangan dunia sepak bola menjadi lebih mudah melalui informasi yang diperbarui secara berkala.

Jadwal Pertandingan Terbaru

Pengguna dapat memperoleh informasi jadwal pertandingan penting yang berlangsung sepanjang musim kompetisi.

Analisis Tim Favorit

Berbagai ulasan mengenai performa tim dan pemain dapat membantu penggemar memahami perkembangan terbaru di dunia sepak bola.

Berita Kompetisi Internasional

Selain kompetisi utama, pengguna juga dapat mengikuti berbagai kabar terbaru dari turnamen internasional lainnya.

Mengapa Banyak Pengguna Memilih Surga55?

Popularitas sebuah platform tidak lepas dari kualitas layanan yang diberikan kepada penggunanya.

Akses Stabil Sepanjang Waktu

Sistem dirancang agar tetap dapat diakses dengan lancar sehingga pengguna tidak mengalami hambatan saat dibutuhkan.

Pembaruan Informasi Secara Berkala

Setiap informasi terbaru mengenai promo, event, dan kompetisi olahraga diperbarui secara rutin.

Dukungan Layanan yang Responsif

Tim layanan siap membantu pengguna yang membutuhkan informasi atau bantuan terkait akses akun.



★ FAQ PERTANYAAN SEPUTAR SURGA55 ★


Surga55 adalah platform yang menyediakan akses informasi olahraga, event bonus, promo menarik, dan berbagai pembaruan terkait kompetisi sepak bola dunia 2026.
Pengguna cukup mengunjungi halaman login resmi, memasukkan data akun yang valid, lalu mengakses seluruh fitur yang tersedia.
Ya, platform telah dioptimalkan untuk perangkat mobile sehingga dapat digunakan melalui Android maupun iPhone.
Tersedia berbagai promo dan event bonus yang dapat berubah sesuai periode dan ketentuan yang berlaku.
Ya, kami menyediakan opsi QRIS untuk memberikan kemudahan proses deposit yang lebih instan bagi member yang ingin langsung bermain tanpa menunggu lama.
document.querySelectorAll('.faq-Surga55-1-q').forEach((btn)=>{ btn.addEventListener('click',function(){ const item = this.parentElement; // tutup faq lain document.querySelectorAll('.faq-Surga55-1-item').forEach((faq)=>{ if(faq !== item){ faq.classList.remove('active'); } }); // buka faq yang diklik item.classList.toggle('active'); }); });

Bagikan Produk

Surga55

Surga55

Rp 20.789.000

Bagikan ke

(function adjustToastFabOffset(){ const root = document.getElementById('toastRoot'); if (!root) return; function isVisible(el){ if (!el) return false; const cs = getComputedStyle(el); if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false; const r = el.getBoundingClientRect(); return r.width > 0 && r.height > 0; } function update(){ const fab = document.getElementById('pd-mobile-fab'); let extra = 16; if (isVisible(fab)) { const h = Math.round(fab.getBoundingClientRect().height) || 56; extra = h + 16; // FAB height + margin } root.style.setProperty('--fab-offset', extra + 'px'); } window.addEventListener('resize', update, { passive: true }); const fab = document.getElementById('pd-mobile-fab'); if (window.ResizeObserver && fab) { const ro = new ResizeObserver(update); ro.observe(fab); } update(); })();
(function(){const root=document.getElementById('toastRoot');function svgIcon(kind){if(kind==='success')return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#22c55e"><path d="M9 16.2l-3.5-3.5 1.4-1.4L9 13.4l7.7-7.7 1.4 1.4z"/></svg>';if(kind==='warn')return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#f59e0b"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/></svg>';return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#0ea5e9"><path d="M11 7h2v2h-2zm0 4h2v6h-2z"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2z" fill="none" stroke="#0ea5e9"/></svg>'} window.showToast=function(opts){const o=Object.assign({title:'',message:'',type:'info',duration:4000,actions:[]},opts||{});const el=document.createElement('div');el.className='toast '+(o.type||'info');el.setAttribute('role','status');el.style.position='relative';const acts=(o.actions||[]).map(a=>{const lab=a.label||'OK';const cls='btn'+(a.variant==='alt'?' alt':'');return `<button type="button" class="${cls}" data-act="${lab}">${lab}</button>`}).join('');el.innerHTML=`<div class="ico" aria-hidden="true">${svgIcon(o.type)}</div><div class="cnt">${o.title?`<div class="ttl">${o.title}</div>`:''}${o.message?`<div class="msg">${o.message}</div>`:''}</div><div class="actions">${acts}</div><button type="button" class="close" aria-label="Tutup" title="Tutup"><svg width="18" height="18" viewBox="0 0 24 24"><path fill="currentColor" d="M18.3 5.71L12 12.01l-6.3-6.3-1.4 1.41 6.3 6.3-6.3 6.3 1.4 1.41 6.3-6.3 6.3 6.3 1.41-1.41-6.3-6.3 6.3-6.3z"/></svg></button><div class="progress" style="animation-duration:${Math.max(1500,o.duration)}ms"></div>`; const close = ()=> { if (!el.parentNode) return; el.style.transition = 'transform .2s ease, opacity .2s ease'; el.style.opacity = '0'; el.style.transform = 'translateY(10px)'; setTimeout(()=>{ if (el.parentNode) el.parentNode.removeChild(el); }, 220); }; el.querySelector('.close').addEventListener('click', close); el.querySelectorAll('.actions .btn').forEach(btn=>{ btn.addEventListener('click', ()=>{ const lab = btn.getAttribute('data-act'); try { (o.actions||[]).forEach(a=>{ if (a.label===lab && typeof a.onClick==='function') a.onClick(); }); } catch(_){} close(); }); }); root.appendChild(el); setTimeout(close, o.duration); return el; }; })(); const _0x1a2b=[{"url":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp","alt":"Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y","slug":""},{"url":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp"},{"url":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp"},{"url":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp"},{"url":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp"},{"url":"https://veldrive.com/i9m8FUWv/SITUS%20SLOT%20TERBAIK%20DAN%20TERPECAYA%20(23).webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp"}],_0x3c4d="Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",_0x5e6f="SB0B3T";function getVariantSummaryText(){const a=document.getElementById('pd-variant-summary');if(!a)return '';const b=Array.from(a.querySelectorAll('.vs-item strong')).map(c=>c.textContent.trim()).filter(Boolean);return b.length?b.join(' / '):''} function encodeVariantHash(id){if(!id||id<=0)return '';const xor=id^0x4A5D;return xor.toString(36)} function decodeVariantHash(hash){if(!hash)return 0;const xor=parseInt(hash,36);return isNaN(xor)?0:xor^0x4A5D} function showSuccessToast(productId,qty,variantId){const variantText=getVariantSummaryText();const skuText=(function(){const el=document.getElementById('pd-sku');return el?el.textContent.trim():PD_SKU})();showToast({type:'warn',title:'Fitur Segera Hadir',message:`<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: ${qty}`,duration:5000,actions:[{label:'Lihat Keranjang',onClick:()=>{}},{label:'Lanjut Belanja',variant:'alt',onClick:()=>{}}]});try{if(window.ga4Ecomm){const qtySend=qty||1;window.ga4Ecomm.addToCart({currency:'IDR',price:20789000,quantity:qtySend,item_id:"SB0B3T",item_name:"Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",item_brand:"Lenovo ",item_category:(["Komputer & Laptop","Laptop","Gaming"]||[]).join(' / ')})}}catch(_){}return false}function showErrorToast(){showToast({type:'error',title:'Gagal Menambah ke Keranjang',message:'Terjadi kesalahan saat memproses permintaan. Silakan coba lagi.',duration:5000})} function executeBuyNowLegacy(id,variantId){const a=getVariantSummaryText(),b=(function(){const c=document.getElementById('pd-sku');return c?c.textContent.trim():_0x5e6f})(); let willRedirect = false; try { if (window.addToCart) { window.addToCart(id, 1, variantId); willRedirect = false; } } catch(_){} if (willRedirect) { showToast({ type: 'info', title: 'Menuju Keranjang', message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, duration: 1800 }); setTimeout(()=>{ window.location.href='/keranjang'; }, 1200); } else { showToast({ type: 'warn', title: 'Fitur Beli Langsung Segera Hadir', message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}`, duration: 6000, actions: [ { label: '+ Keranjang', onClick: ()=> { try{ if (window.addToCart) window.addToCart(id,1,variantId); }catch(_){} } }, { label: 'Hubungi CS', variant: 'alt', onClick: ()=> { window.open('https://wa.me/6281380009898','_blank'); } } ] }); } } document.addEventListener('DOMContentLoaded',function(){var a=document.getElementById('pd-buy-form');if(a){a.addEventListener('submit',function(e){var b=parseInt(a.getAttribute('data-pid'),10)||0;if(window.addToCartSubmit){return window.addToCartSubmit(e,b)}})}});document.addEventListener('DOMContentLoaded',function(){var a=document.getElementById('btn-buy');if(a){a.addEventListener('click',function(){var b=a.getAttribute('data-id');buyNow(b)})}}); function _0x2m3n(s){return String(s||'').replace(/[&<>"']/g,m=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]))} (function initGallery(){const mainImg=document.getElementById('pd-main-img');const gallery=document.getElementById('pd-thumb-gallery');if(!mainImg||!gallery)return;gallery.addEventListener('click',function(ev){const btn=ev.target.closest('.pd-thumb-btn');if(!btn)return;const full=btn.getAttribute('data-full');if(full){mainImg.src=full;const alt=btn.getAttribute('data-alt')||'';if(alt)mainImg.alt=alt;const slug=btn.getAttribute('data-slug')||'';if(slug)mainImg.dataset.slug=slug;gallery.querySelectorAll('.pd-thumb-btn').forEach(b=>b.classList.remove('active'));btn.classList.add('active')}})})(); (function initMobileSliderCounter(){const slider=document.getElementById('pd-mobile-slider');const counter=document.getElementById('pd-gallery-counter');if(!slider||!counter)return;let ticking=false;slider.addEventListener('scroll',function(){if(!ticking){window.requestAnimationFrame(function(){const slides=slider.querySelectorAll('.pd-mslide');if(!slides.length)return;const containerRect=slider.getBoundingClientRect();const containerCenter=containerRect.left+containerRect.width/2;let currentIdx=0;let minDist=Infinity;slides.forEach((slide,idx)=>{const slideRect=slide.getBoundingClientRect();const slideCenter=slideRect.left+slideRect.width/2;const dist=Math.abs(slideCenter-containerCenter);if(dist<minDist){minDist=dist;currentIdx=idx}});counter.textContent=(currentIdx+1)+'/'+slides.length;ticking=false});ticking=true}},{passive:true})})(); /* ================= Simulasi Cicilan ================= */ (function initInstallmentList(){const card=document.getElementById('inst-card');if(!card)return;function getBasePrice(){return parseInt(card.getAttribute('data-base-price')||'0',10)||0}function setBasePrice(v){card.setAttribute('data-base-price',String(parseInt(v||'0',10)||0))}const zeroEligible=card.getAttribute('data-zero-smart')==='1';window.initMobile=zeroEligible;const listEl=document.getElementById('inst-month-list');const zeroNote=document.getElementById('inst-zero-note');const tenors=[3,6,12];const rates={BRI:{3:0.975,6:0.975,12:0.975},Mandiri:{3:0.984,6:0.9725,12:0.96},BCA:{3:0.97,6:0.94,12:0.91}};function formatRupiah(num){return 'Rp '+(Math.round(num)).toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.')}function activeBank(){const tab=card.querySelector('.bank-tab.active');return tab?tab.dataset.bank:'BRI'} function _0x4o5p(bank){const a=getBasePrice();listEl.innerHTML='';const b=rates[bank]||{};let c=false;tenors.forEach(m=>{let d=b[m]??1;if(zeroEligible&&(bank==='BRI'||bank==='Mandiri')){d=1;c=true}const e=a/d;const f=m>0?Math.ceil((e/m)/100)*100:0;const g=document.createElement('li');g.className='inst-month-item';g.innerHTML=`<span class="tenor-badge">${m}x</span><span class="amount">${formatRupiah(f)} / bln</span>${zeroEligible&&(bank==='BRI'||bank==='Mandiri')?'<span class="tag tag-zero">0%</span>':''}`;listEl.appendChild(g)});zeroNote.style.display=c?'block':'none'} card.addEventListener('click',function(ev){const a=ev.target.closest('.bank-tab');if(!a)return;card.querySelectorAll('.bank-tab').forEach(b=>{b.classList.remove('active');b.setAttribute('aria-selected','false')});a.classList.add('active');a.setAttribute('aria-selected','true');_0x4o5p(a.dataset.bank)}); window.instSetBasePrice=function(newPrice){setBasePrice(newPrice);_0x4o5p(activeBank())};_0x4o5p(activeBank()); })(); /* ====== Fokus gambar varian ====== */ function _0x6q7r(s){return String(s||'').toLowerCase().replace(/[^a-z0-9]+/g,'')}function _0x8s9t(u){try{return new URL(u,window.location.origin).pathname.split('/').pop().toLowerCase()}catch(e){try{return(u||'').split('/').pop().toLowerCase()}catch(_){return ''}}} function _0xau1v(url,altOpt){const a=document.getElementById('pd-main-img'),b=document.getElementById('pd-thumb-gallery'),c=document.getElementById('pd-mobile-slider');if(a&&url){a.src=url;if(altOpt)a.alt=altOpt}if(b){const d=_0x8s9t(url);let e=null;b.querySelectorAll('.pd-thumb-btn').forEach(btn=>{const f=btn.getAttribute('data-full')||'',g=_0x8s9t(f)===d;if(g)e=btn;btn.classList.toggle('active',g)});if(e){const h=e.getAttribute('data-alt')||'',i=e.getAttribute('data-slug')||'';if(h&&a)a.alt=h;if(i&&a)a.dataset.slug=i}} if (c){ const targetName = _0x8s9t(url); const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName); if (slideImg){ try { const container = c; const imgRect = slideImg.getBoundingClientRect(); const contRect = container.getBoundingClientRect(); const offsetLeft = slideImg.offsetLeft - container.offsetLeft; const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2; container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' }); } catch(_){ slideImg.scrollIntoView({ behavior:'smooth', inline:'center', block:'nearest' }); } } } } function findImageForVariant(variant){ if (!variant || !variant.attrs) return null; const tokens = []; try{ Object.values(variant.attrs).forEach(v=>{ if (!v) return; const raw = String(v); tokens.push(raw); tokens.push(normalize(raw)); }); }catch(_){} if (variant.sku){ tokens.push(String(variant.sku)); tokens.push(normalize(String(variant.sku))); } if (variant.image_url) { tokens.push(String(variant.image_url)); } let best = null; let bestScore = -1; for (const g of (galleryData||[])){ const slugN = normalize(g.slug||''); const altN = normalize(g.alt||''); const file = _0x8s9t(g.url||''); const fileN = normalize(file); const imgU = g.url; for (const t of tokens){ const tN = normalize(t); if (!tN) continue; let score = -1; if (imgU === tN) score = 300; if (slugN && slugN === tN) score = 300; else if (fileN && fileN.includes(tN)) score = 200; else if (altN && altN.includes(tN)) score = 120; if (score > bestScore){ bestScore = score; best = g; } if (bestScore >= 300) break; } if (bestScore >= 300) break; } return bestScore >= 120 ? best : null; } function _0xey3z(variant){const a=_0xcw2x(variant);if(a&&a.url){_0xau1v(a.url,a.alt||'')}} /* ====== Layout mobile ====== */ (function _0xg04h(){const a=document.querySelector('.pd-media-card'),b=document.getElementById('pd-price-block'),c=document.getElementById('pd-price-anchor'),d=document.querySelector('.pd-info-card'),e=document.getElementById('pd-title'),f=document.getElementById('pd-variant-combined'),g=document.getElementById('pd-variants'),h=document.getElementById('pd-variants-anchor'),i=document.getElementById('pd-variant-summary'),j=document.getElementById('pd-summary-anchor'),titleRow=document.querySelector('.pd-title-row'),promoBanner=document.querySelector('.promo-endyear-mini-banner'),compareSection=document.querySelector('.pd-compare-section');if(!a||!b||!c||!d||!e)return; let pricePlaced = false; let varPlaced = false; let titlePlaced = false; let promoPlaced = false; const mq = window.matchMedia('(max-width: 640px)'); function apply(){ if (mq.matches) { if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try{a.appendChild(titleRow);titlePlaced=true;}catch(_){} } if (!pricePlaced && a && b) { try{a.appendChild(b);pricePlaced=true;}catch(_){} } if (!varPlaced && f && d && e) { try{ f.hidden = false; if (i && !f.contains(i)) f.appendChild(i); if (g && !f.contains(g)) f.appendChild(g); if(d.contains(e))d.insertBefore(f, e); varPlaced = true; }catch(_){} } if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) { try{ compareSection.parentNode.insertBefore(promoBanner, compareSection); promoPlaced = true; }catch(_){} } } else { if (titlePlaced && titleRow && d) { try{ const vcombined = document.getElementById('pd-variant-combined'); if (vcombined && d.contains(vcombined)) { d.insertBefore(titleRow, vcombined); } else { d.insertBefore(titleRow, d.firstChild); } titlePlaced=false; }catch(_){} } if (pricePlaced && b && c && c.parentNode) { try{c.parentNode.insertBefore(b, c.nextSibling);pricePlaced=false;}catch(_){} } if (varPlaced) { try{ if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling); if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling); if (f) { f.hidden = true; f.innerHTML = ''; } varPlaced = false; }catch(_){} } if (promoPlaced && promoBanner && b) { try{ b.appendChild(promoBanner); promoPlaced = false; }catch(_){} } } } mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply); apply(); const fab = document.getElementById('pd-mobile-fab'); if (fab) { const pid = parseInt(fab.getAttribute('data-pid')||'0',10) || 325; const btnCart = document.getElementById('mf-cart'); if (btnCart) btnCart.addEventListener('click', function(){ const varInput = document.getElementById('pd-variant-id'); const variantId = varInput ? parseInt(varInput.value||'0',10) : 0; try { if (window.addToCart) addToCart(pid, 1, variantId); } catch(_){} const variantText = getVariantSummaryText(); const skuText = (function(){ const el=document.getElementById('pd-sku'); return el?el.textContent.trim():PD_SKU; })(); showToast({ type: 'success', title: 'Berhasil ditambahkan ke Keranjang', message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, duration: 5000, actions: [ { label: 'Lihat Keranjang', onClick: ()=> { window.location.href = '/keranjang'; } }, { label: 'Lanjut Belanja', variant: 'alt', onClick: ()=>{} } ] }); }); } })(); /* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */ (function(){ function adjustSidebarBanner() { if (window.innerWidth <= 768) return; const sidebar = document.querySelector('.pd-sidebar'); const infoCard = document.querySelector('.pd-info-card'); const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact'); if (!sidebar || !infoCard || !banner) return; const sidebarHeight = sidebar.offsetHeight; const infoCardHeight = infoCard.offsetHeight; if (sidebarHeight > infoCardHeight) { banner.style.display = 'none'; } else { banner.style.display = ''; } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', adjustSidebarBanner); } else { adjustSidebarBanner(); } let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(adjustSidebarBanner, 250); }); const pwpSection = document.getElementById('pwp-deals-section'); if (pwpSection) { const observer = new MutationObserver(function(mutations) { let shouldRecheck = false; mutations.forEach(function(mutation) { if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') { shouldRecheck = true; } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { shouldRecheck = true; } }); if (shouldRecheck) { setTimeout(adjustSidebarBanner, 100); } }); observer.observe(pwpSection, { attributes: true, childList: true, subtree: true }); } window.adjustSidebarBanner = adjustSidebarBanner; })(); /* ====== Global constants ====== */ const IS_DIGITAL=false; const IS_PREORDER=false; /* ====== Variants state (REVISED) ====== */ (function initVariants(){ const _0x7g8h=[];window.variants=_0x7g8h; window.isPreorderProduct=false; const attrOrder = []; if (!variants.length || !attrOrder.length) return; function comboKey(sel){ return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|'); } const variantMap = {}; variants.forEach(v=>{ const key = comboKey(v.attrs); variantMap[key] = v; }); function readSelection(){ const sel = {}; attrOrder.forEach(a=>{ const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`); sel[a] = r ? r.value : ''; }); return sel; } function findVariant(sel){ return variantMap[comboKey(sel)] || null; } function autoFillMissing(sel){ let changed = false; for (const a of attrOrder) { if (sel[a]) continue; const possible = []; const seen = new Set(); variants.forEach(v=>{ let ok = true; for (const a2 of attrOrder) { if (a2 === a) continue; if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; } } if (ok) { const val = v.attrs[a]; if (!seen.has(val)) { seen.add(val); possible.push(val); } } }); if (possible.length === 1) { const val = possible[0]; const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; } } } return changed; } function rupiah(n){ n = parseInt(n||0,10)||0; return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.'); } function focusGalleryByUrl(imageUrl) { const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches; if (isMobile) { _0xau1v(imageUrl); return; } const gallery = document.getElementById('pd-thumb-gallery'); const targetName = _0x8s9t(imageUrl); if (gallery) { const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn')); const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName); if (btn) { btn.click(); return; } } _0xau1v(imageUrl); } function formatStockLabel(n){n=parseInt(n||0,10)||0;return(n>10)?'10+':String(n)} function updateBranchPopover(v){try{if(!v)return;const a=document.getElementById('sp-qty-meg'),b=document.getElementById('sp-qty-mdf'),c=document.getElementById('sp-qty-bda');if(a)a.textContent=formatStockLabel(Math.max(0,v.smm|0));if(b)b.textContent=formatStockLabel(Math.max(0,v.smf|0));if(c)c.textContent=formatStockLabel(Math.max(0,v.sba|0))}catch(_){}} function calcVoucherDisc(type,value,price,maxDisc){if(type==='PERCENTAGE'){let d=(price*value)/100;if(maxDisc>0&&d>maxDisc)d=maxDisc;return Math.round(d)}return Math.round(value)} function applyVariant(v, focusImage = true){ const elCur = document.getElementById('pd-price-current'); const elOri = document.getElementById('pd-price-original'); const elDisc = document.getElementById('pd-discount-badge'); const elSku = document.getElementById('pd-sku'); const elStock= document.getElementById('pd-stock-badge'); const elQty = document.getElementById('qty'); const btnAdd = document.getElementById('btn-add-cart'); const btnBuy = document.getElementById('btn-buy'); const hidVar = document.getElementById('pd-variant-id'); const mfCart= document.getElementById('mf-cart'); const mfBuy = document.getElementById('mf-buy'); const fab = document.getElementById('pd-mobile-fab'); if (hidVar) hidVar.value = v ? v.id : 0; if (elCur) elCur.textContent = rupiah(v ? v.final : 0); if (elSku && v && v.sku) elSku.textContent = v.sku; if (v && v.ori > v.final) { if (elOri) { elOri.style.display='inline'; elOri.textContent = rupiah(v.ori); } if (elDisc) { elDisc.style.display='inline'; elDisc.textContent = '-' + (v.disc||0) + '%'; } } else { if (elOri) elOri.style.display='none'; if (elDisc) elDisc.style.display='none'; } const stock = v ? (parseInt(v.stock||0,10)||0) : 0; let effectiveStock = stock; let isActivePreorder = false; if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) { effectiveStock = parseInt(v.preorder_remaining, 10); if (isNaN(effectiveStock)) effectiveStock = 0; isActivePreorder = true; } if (elStock){ elStock.classList.remove('in','out'); if (effectiveStock>0){ elStock.classList.add('in'); elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock)); } else { elStock.classList.add('out'); elStock.textContent = 'Habis'; } } if (elQty){ elQty.max = String(effectiveStock>0?effectiveStock:0); if (effectiveStock<=0) { elQty.value = '0'; elQty.disabled = true; } else { if (parseInt(elQty.value||'1',10) < 1) elQty.value='1'; elQty.disabled=false; } } const shouldDisable = !(v && effectiveStock>0); const updateButtons = () => { const btnAddCart = document.getElementById('btn-add-cart'); const btnBuyNow = document.getElementById('btn-buy'); const mobileCart = document.getElementById('mf-cart'); const mobileBuy = document.getElementById('mf-buy'); [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEach(btn => { if (!btn) return; if (shouldDisable) { btn.disabled = true; btn.setAttribute('disabled', 'disabled'); btn.classList.add('stock-disabled'); btn.setAttribute('data-stock-blocked', 'true'); btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis'); } else { btn.disabled = false; btn.removeAttribute('disabled'); btn.classList.remove('stock-disabled'); btn.removeAttribute('data-stock-blocked'); btn.removeAttribute('data-stock-reason'); } }); }; updateButtons(); setTimeout(updateButtons, 10); setTimeout(updateButtons, 50); setTimeout(updateButtons, 100); if (mfBuy && v) { const voucherBtn = document.getElementById('btn-buy-voucher'); const voucherCode = fab ? fab.dataset.voucherCode : ''; let voucherDiscount = 0; if (voucherBtn && voucherCode) { const vType = voucherBtn.dataset.voucherType; const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0; const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0; const finalPrice = v.final || 0; if (vType && vValue > 0) { voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax); if (fab) fab.dataset.voucherValue = voucherDiscount.toString(); } } const finalPrice = v.final || 0; const textEl = mfBuy.querySelector('.mf-buy-text'); const priceEl = mfBuy.querySelector('.mf-buy-price'); if (effectiveStock > 0) { if (IS_PREORDER) { if (textEl) textEl.textContent = 'Pre Order Sekarang'; if (priceEl) priceEl.textContent = rupiah(finalPrice); } else if (voucherCode && voucherDiscount > 0) { if (textEl) textEl.textContent = 'Beli dengan Voucher'; if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount)); } else { if (textEl) textEl.textContent = 'Beli Sekarang'; if (priceEl) priceEl.textContent = rupiah(finalPrice); } } else { if (textEl) textEl.textContent = 'Stok Habis'; if (priceEl) priceEl.textContent = rupiah(finalPrice); } } const isMobile = window.initMobile ?? 0; if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0); if (window.updateSoldBySku) window.updateSoldBySku(v.sku); updateBranchPopover(v); if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url); if (v) { window.dispatchEvent(new CustomEvent('pd-variant-changed', { detail: { price: v.final, originalPrice: v.ori, discount: v.disc, stock: effectiveStock, sku: v.sku, variant_id: v.id } })); const encodedHash = encodeVariantHash(v.id); if (encodedHash && window.history && window.history.replaceState) { const newHash = '#v=' + encodedHash; const newUrl = window.location.pathname + window.location.search + newHash; window.history.replaceState(null, '', newUrl); } } } let sel = readSelection(); if (autoFillMissing(sel)) sel = readSelection(); let v = findVariant(sel); if (!v) { const candidates = variants.filter(variant=>{ return attrOrder.every(a=>{ if (!sel[a]) return true; return variant.attrs[a] === sel[a]; }); }); if (candidates.length >= 1) { v = candidates[0]; attrOrder.forEach(a=> sel[a] = v.attrs[a]); attrOrder.forEach(a=>{ const val = sel[a]; const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); if (input) input.checked = true; }); } } const initSel = readSelection(); const initVar = findVariant(initSel) || variants[0] || null; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false)); } else { applyVariant(initVar, false); } function updateSummary(sel){Object.entries(sel).forEach(([a,val])=>{const el=document.getElementById('vs-'+a);if(el)el.textContent=val||'-'})} function refreshOptions(sel){ attrOrder.forEach(a=>{ const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`); if (!group) return; const chips = group.querySelectorAll('.v-chip'); chips.forEach(ch=>{ const val = ch.getAttribute('data-value'); const possible = variants.some(v=>{ if (v.attrs[a] !== val) return false; for (const a2 of attrOrder) { if (a2 === a) continue; if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; } return true; }); const input = ch.querySelector('input[type=radio]'); const disabled = !possible; if (input) input.disabled = disabled; ch.classList.toggle('disabled', disabled); let candidateVariant = null; if (possible) { candidateVariant = variants.find(v=>{ if (v.attrs[a] !== val) return false; for (const a2 of attrOrder) { if (a2 === a) continue; if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; } return true; }); } const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false; ch.classList.toggle('out', !disabled && outOfStock); const badge = ch.querySelector('.chip-badge'); if (badge) badge.hidden = !(candidateVariant && outOfStock); }); group.querySelectorAll('.v-chip').forEach(ch=>{ const input = ch.querySelector('input[type=radio]'); ch.classList.toggle('selected', input && input.checked); }); }); } updateSummary(sel); refreshOptions(sel); document.querySelectorAll('.v-chip').forEach(chip=>{const input=chip.querySelector('input[type=radio]');if(input&&input.checked){chip.classList.add('selected');}}); const container = document.getElementById('pd-variants'); container && container.addEventListener('change', function(ev){ const radio = ev.target.closest('input[type=radio]'); if (!radio) return; sel = readSelection(); if (autoFillMissing(sel)) sel = readSelection(); const chosen = findVariant(sel); applyVariant(chosen || null, true); updateSummary(sel); refreshOptions(sel); }); window.applyVariant=applyVariant; })(); (function cleanBrokenDescImages(){ const containers = [ document.querySelector('.pd-full-desc-body'), document.querySelector('.pd-short-desc') ].filter(Boolean); containers.forEach(root => { const imgs = root.querySelectorAll('img'); imgs.forEach(img => { if (img.complete && img.naturalWidth === 0) { img.remove(); return; } img.addEventListener('error', () => { img.remove(); }, { once:true }); }); }); })(); /* ====== Scroll To Top ====== */ (function _0xi25j(){const a=document.getElementById('pd-scroll-top');if(!a)return;function b(){if(window.matchMedia('(max-width:640px)').matches){const d=document.querySelector('.bottom-nav'),e=document.querySelector('.pd-mobile-fab');if(!d&&!e){setTimeout(b,100);return}const f=d&&window.getComputedStyle(d).display!=='none'&&window.getComputedStyle(d).visibility!=='hidden',g=e&&window.getComputedStyle(e).display!=='none'&&window.getComputedStyle(e).visibility!=='hidden';let h;if(f&&g){h='calc(68px + 54px + env(safe-area-inset-bottom))'}else if(g){h='calc(68px + 8px + env(safe-area-inset-bottom))'}else if(f){h='calc(60px + env(safe-area-inset-bottom))'}else{h='calc(20px + env(safe-area-inset-bottom))'}a.style.setProperty('--scroll-top-bottom',h)}else{a.style.removeProperty('--scroll-top-bottom')}}function c(){const d=window.pageYOffset||document.documentElement.scrollTop||0,e=d>300;a.classList.toggle('visible',e);a.setAttribute('aria-hidden',e?'false':'true');b()}window.addEventListener('scroll',c,{passive:!0});window.addEventListener('resize',b,{passive:!0});setTimeout(b,100);c();a.addEventListener('click',function(){window.scrollTo({top:0,behavior:'smooth'})})})(); /* Format stok 10+ */ function _0xk67l(n){n=parseInt(n||0,10)||0;return n>10?'10+':String(n)} /* Toggle popover stok per cabang */ (function _0xm89n(){const a=document.getElementById('pd-stock-info-btn'),b=document.getElementById('pd-stock-popover'),c=document.getElementById('pd-stock-popover-close');if(!a||!b)return;function d(){if(window.matchMedia('(min-width: 641px)').matches){const e=document.getElementById('pd-stock-badge');if(!e)return;const f=e.getBoundingClientRect(),g=window.pageXOffset||document.documentElement.scrollLeft||0,h=window.pageYOffset||document.documentElement.scrollTop||0;b.style.left=(f.left+g-10)+'px';b.style.top=(f.bottom+h+10)+'px'}else{b.style.left='';b.style.top=''}} function e(){d();b.classList.add('show');a.setAttribute('aria-expanded','true');b.setAttribute('aria-hidden','false');document.addEventListener('click',g,{capture:true});window.addEventListener('resize',d,{passive:true});window.addEventListener('scroll',d,{passive:true})}function f(){b.classList.remove('show');a.setAttribute('aria-expanded','false');b.setAttribute('aria-hidden','true');document.removeEventListener('click',g,{capture:true});window.removeEventListener('resize',d);window.removeEventListener('scroll',d)}function g(h){if(b.contains(h.target)||a.contains(h.target))return;f()} a.addEventListener('click',function(h){h.preventDefault();b.classList.contains('show')?f():e()});if(c)c.addEventListener('click',f)})(); /* ===== Share Product Modal ===== */ (function(){const a=document.getElementById('pd-share-btn'),z=document.getElementById('mf-share'),b=document.getElementById('pd-share-modal-overlay'),c=document.getElementById('pd-share-close'),d=document.getElementById('pd-share-copy-url-btn'),e=document.getElementById('pd-share-url-input');if((!a&&!z)||!b)return;const f="https://moneyjiggs.com",g="Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",h="Rp 20.789.000";const discountPercent=1;let i='';if(discountPercent>0){i=`🔥 Lagi Promo Nih! Diskon ${discountPercent}%\n\n✨ ${g}\n💰 Cuma ${h} aja!\n\n🛒 Buruan cek sebelum kehabisan!\n👉 `}else{i=`✨ Ada barang bagus nih!\n\n📦 ${g}\n💸 Harga: ${h}\n\n🛍️ Yuk, langsung cek!\n👉 `}function j(){b.classList.add('show');document.body.style.overflow='hidden'}function k(){b.classList.remove('show');document.body.style.overflow=''}if(a)a.addEventListener('click',j);if(z)z.addEventListener('click',j);if(c)c.addEventListener('click',k);b.addEventListener('click',function(l){if(l.target===b)k()});document.addEventListener('keydown',function(l){if(l.key==='Escape'&&b.classList.contains('show'))k()});b.addEventListener('click',function(l){const m=l.target.closest('[data-share]');if(!m)return;const n=m.getAttribute('data-share'),o=encodeURIComponent(f),p=encodeURIComponent(i),q=encodeURIComponent(g);let r='';switch(n){case 'whatsapp':r=`https://wa.me/?text=${p}${o}`;break;case 'facebook':r=`https://www.facebook.com/sharer/sharer.php?u=${o}`;break;case 'twitter':r=`https://twitter.com/intent/tweet?text=${p}${o}`;break;case 'telegram':r=`https://t.me/share/url?url=${o}&text=${p}`;break;case 'email':r=`mailto:?subject=${encodeURIComponent('🔥 Cek Produk Keren Ini!')}&body=${p}${o}`;window.location.href=r;k();return;case 'copy':s();return;case 'pdf':const ps=document.querySelector('.product-single');if(ps){ps.setAttribute('data-print-date',new Date().toLocaleDateString('id-ID',{year:'numeric',month:'long',day:'numeric'}))}k();setTimeout(function(){window.print();try{if(window.ga4Ecomm&&window.ga4Ecomm.trackEvent)window.ga4Ecomm.trackEvent('share',{method:'pdf_export',content_type:'product',item_id:"SB0B3T"})}catch(_){}},300);return}if(r){window.open(r,'_blank','noopener,noreferrer');try{if(window.ga4Ecomm&&window.ga4Ecomm.trackEvent)window.ga4Ecomm.trackEvent('share',{method:n,content_type:'product',item_id:"SB0B3T"})}catch(_){}}});function s(){if(!e)return;e.select();e.setSelectionRange(0,99999);try{if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(f).then(function(){t()}).catch(function(){document.execCommand('copy');t()})}else{document.execCommand('copy');t()}}catch(u){console.error('Failed to copy:',u)}}function t(){if(!d)return;const v=d.innerHTML;d.classList.add('copied');d.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg><span class="pd-share-copy-text">Tersalin!</span>';if(window.showToast)showToast({type:'success',title:'✨ Link Tersalin!',message:'Link produk berhasil disalin. Yuk bagikan ke teman!',duration:3000});setTimeout(function(){d.classList.remove('copied');d.innerHTML=v},2000)}if(d)d.addEventListener('click',s);if(navigator.share){const shareHandler=function(w){w.preventDefault();navigator.share({title:g,text:i+f,url:f}).catch(function(x){console.log('Native share cancelled or failed:',x)})};if(a)a.addEventListener('dblclick',shareHandler);if(z)z.addEventListener('dblclick',shareHandler)}})(); /* ===== Embedding variants (server → client) ===== */ (function(){ window.__PD_VARIANTS_WITH_BRANCH__ = []; })(); /* ===== Helper: update angka popover ===== */ function updateStockPopoverForVariant(v){ try{ const elMeg = document.getElementById('sp-qty-meg'); const elMdf = document.getElementById('sp-qty-mdf'); const elBda = document.getElementById('sp-qty-bda'); if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm|0)); if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf|0)); if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba|0)); }catch(_){} } /* ===== applyVariant: 10+ dan update popover ===== */ (function patchApplyVariant(){ if (typeof applyVariant !== 'function') return; const original = applyVariant; window.applyVariant = function(v){ original(v); try { const elStock = document.getElementById('pd-stock-badge'); if (elStock){ let txt = elStock.textContent || ''; let m = txt.match(/\d+/); if (m) { const n = parseInt(m[0]||'0',10)||0; elStock.textContent = (n>0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis'; } } } catch(_){} if(window.__PD_VARIANTS_WITH_BRANCH__&&v){const vv=window.__PD_VARIANTS_WITH_BRANCH__.find(x=>x.id===v.id)||v;updateStockPopoverForVariant(vv)} }; })(); (function initCurrentVariantBranch(){ const list = window.__PD_VARIANTS_WITH_BRANCH__ || []; if (!list.length) return; const hid = document.getElementById('pd-variant-id'); const vid = hid ? parseInt(hid.value||'0',10) : 0; const current = list.find(x => x.id === vid) || list[0] || null; if (current) updateStockPopoverForVariant(current); })(); (function(){ if (!window.ga4Ecomm) return; const catSegs = ["Komputer & Laptop","Laptop","Gaming"]; window.ga4Ecomm.viewItem({ currency: 'IDR', value: 20789000, item_id: "SB0B3T", item_name: "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", item_brand: "Lenovo ", item_category: catSegs && catSegs.length ? catSegs.join(' / ') : '' }); })(); (function patchApplyVariantFocus(){ if (typeof applyVariant !== 'function') return; const original = applyVariant; window.applyVariant = function(v, focusImage = true){ original(v, focusImage); if (focusImage && v && v.image_url) { _0xau1v(v.image_url); } }; })(); (function() { var soldMap = []; var soldTotalLabel = "Terjual 2"; function formatSoldLabel(qty) { if (qty >= 1000000) { var v = Math.floor((qty / 100000) ) / 10; return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+'; } if (qty >= 1000) { var v2 = Math.floor((qty / 100) ) / 10; return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+'; } if (qty >= 100) { var v2 = Math.floor((qty / 100) ) * 100; return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; } if (qty >= 10) { var v2 = Math.floor((qty / 10) ) * 10; return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; } return 'Terjual ' + (qty.toLocaleString('id-ID')); } function updateSoldLabel(labelText) { var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]'); if (el) el.textContent = labelText; } window.updateSoldBySku = function(sku) { if (!sku || typeof sku !== 'string') { updateSoldLabel(soldTotalLabel); return; } var qty = soldMap[sku] || 0; updateSoldLabel(formatSoldLabel(qty)); }; updateSoldLabel(soldTotalLabel); })(); (function(){const h=document.getElementById('pd-sticky-header');if(!h)return;const p=document.getElementById('pd-price-anchor');const ac=document.getElementById('pd-sticky-add-cart');const by=document.getElementById('pd-sticky-buy');let lt=window.scrollY;let tk=false;function u(){if(!p)return;const r=p.getBoundingClientRect();const s=window.scrollY;if(r.top<0){h.classList.add('visible')}else{h.classList.remove('visible')}lt=s;tk=false}function rt(){if(!tk){window.requestAnimationFrame(u);tk=true}}window.addEventListener('scroll',rt,{passive:true});u();function sy(){const ma=document.getElementById('btn-add-cart');const mb=document.getElementById('btn-buy');if(ac&&ma){ac.disabled=ma.disabled}if(by&&mb){by.disabled=mb.disabled}}sy();const ob=new MutationObserver(sy);const ma=document.getElementById('btn-add-cart');const mb=document.getElementById('btn-buy');if(ma)ob.observe(ma,{attributes:true,attributeFilter:['disabled']});if(mb)ob.observe(mb,{attributes:true,attributeFilter:['disabled']});const ss=document.getElementById('pd-sticky-share-btn');const ms=document.getElementById('pd-share-btn');if(ss&&ms){ss.addEventListener('click',function(e){e.preventDefault();ms.click()})}if(ac){ac.addEventListener('click',function(e){e.preventDefault();if(ac.disabled)return;const m=document.getElementById('btn-add-cart');if(m&&!m.disabled){m.click()}})}if(by){by.addEventListener('click',function(e){e.preventDefault();if(by.disabled)return;const m=document.getElementById('btn-buy');if(m&&!m.disabled&&window.buyNow){window.buyNow(e)}})} function getChatProductData(){const varInput=document.getElementById('pd-variant-id');const variantId=varInput?parseInt(varInput.value||'0',10):0;const variantSummary=getVariantSummaryText();const priceEl=document.getElementById('pd-price-current');const currentPrice=priceEl?priceEl.textContent.trim():'Rp 20.789.000';const pd={id:325,name:"Lenovo Legion Go 8ASP2 - 83N0000RID \/AMD Ryzen Z2 Extreme\/32GB\/1TB SSD\/AMD Radeon Graphics\/8.8\" WUXGA OLED Touch\/Win 11 Home\/Eclipse Black\/3Y",price:currentPrice,image:"\/uploads\/products\/lenovo-legion-go-8asp2-83n0000rid.webp",url:window.location.href};if(variantId>0){pd.variant_id=variantId}if(variantSummary){pd.variant_summary=variantSummary}return pd} const ch=document.getElementById('pd-sticky-chat');if(ch){ch.addEventListener('click',function(e){e.preventDefault();if(!window.plazaChat){console.warn('Chat widget not loaded');return}window.plazaChat.attachProduct(getChatProductData());window.plazaChat.openWidget()})}const dch=document.getElementById('btn-chat-icon');if(dch){dch.addEventListener('click',function(e){e.preventDefault();if(!window.plazaChat){console.warn('Chat widget not loaded');return}window.plazaChat.attachProduct(getChatProductData());window.plazaChat.openWidget()})}const mch=document.getElementById('mf-chat');if(mch){mch.addEventListener('click',function(e){e.preventDefault();if(!window.plazaChat){console.warn('Chat widget not loaded');return}window.plazaChat.attachProduct(getChatProductData());window.plazaChat.openWidget()})}window.addEventListener('pd-variant-changed',function(e){const d=e.detail||{};if(d.price!==undefined){const sp=document.getElementById('pd-sticky-price');if(sp){sp.textContent=formatRupiah(d.price)}}if(d.originalPrice!==undefined&&d.originalPrice>d.price){const so=document.getElementById('pd-sticky-price-original');if(so){so.textContent=formatRupiah(d.originalPrice);so.style.display=''}}else{const so=document.getElementById('pd-sticky-price-original');if(so){so.style.display='none'}}if(d.discount!==undefined&&d.discount>0){const sd=document.getElementById('pd-sticky-discount');if(sd){sd.textContent='-'+d.discount+'%';sd.style.display=''}}else{const sd=document.getElementById('pd-sticky-discount');if(sd){sd.style.display='none'}}const hs=d.stock>0;if(ac){ac.disabled=!hs}if(by){by.disabled=!hs}});function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}})(); (function(){const t=document.getElementById('pdv-toggle-btn');const v=document.getElementById('pd-voucher-section');if(t&&v){const h=v.querySelectorAll('.pdv-min-hidden');const n=h.length;t.addEventListener('click',function(){const e=t.classList.toggle('expanded');h.forEach(function(i){if(e){i.classList.remove('pdv-min-hidden')}else{i.classList.add('pdv-min-hidden')}});t.textContent=e?'Tutup':'+'+n})}const m=document.getElementById('voucher-detail-modal');const mc=document.getElementById('voucher-modal-close');const ma=document.getElementById('voucher-modal-cancel');const mcp=document.getElementById('voucher-modal-copy');if(m){const bb=document.querySelectorAll('.pdv-badge-btn');bb.forEach(function(btn){btn.addEventListener('click',function(){if(btn.disabled)return;const c=btn.getAttribute('data-voucher-code');const nm=btn.getAttribute('data-voucher-name');const dl=btn.getAttribute('data-discount-label');const bl=btn.getAttribute('data-badge-label');const mp=parseInt(btn.getAttribute('data-min-purchase'));const md=parseInt(btn.getAttribute('data-max-discount'));const vu=btn.getAttribute('data-valid-until');document.getElementById('voucher-modal-badge').innerHTML='<span class="vmb-value">'+dl+'</span><span class="vmb-label">'+bl+'</span>';document.getElementById('voucher-modal-code').textContent=c;document.getElementById('voucher-modal-name').textContent=nm;const me=document.getElementById('voucher-modal-min');if(mp>0){me.style.display='';document.getElementById('voucher-modal-min-val').textContent=fr(mp)}else{me.style.display='none'}const xe=document.getElementById('voucher-modal-max');if(md>0){xe.style.display='';document.getElementById('voucher-modal-max-val').textContent=fr(md)}else{xe.style.display='none'}if(vu){const d=new Date(vu);const ft=d.toLocaleDateString('id-ID',{day:'numeric',month:'long',year:'numeric',hour:'2-digit',minute:'2-digit'});document.getElementById('voucher-modal-valid-val').textContent=ft}mcp.setAttribute('data-code',c);m.classList.add('show');document.body.style.overflow='hidden'})});function cm(){m.classList.remove('show');document.body.style.overflow=''}if(mc)mc.addEventListener('click',cm);if(ma)ma.addEventListener('click',cm);m.addEventListener('click',function(e){if(e.target===m)cm()});if(mcp){mcp.addEventListener('click',function(){const c=mcp.getAttribute('data-code');if(!c)return;if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(c).then(function(){smc()}).catch(function(err){fc(c)})}else{fc(c)}})}}const b=document.querySelectorAll('.pdv-min-copy');b.forEach(function(btn){btn.addEventListener('click',function(){if(btn.disabled)return;const code=btn.getAttribute('data-code');if(!code)return;if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(code).then(function(){sc(btn)}).catch(function(err){fc(code,btn)})}else{fc(code,btn)}})});function fc(text,btn){const tx=document.createElement('textarea');tx.value=text;tx.style.position='fixed';tx.style.opacity='0';document.body.appendChild(tx);tx.select();try{document.execCommand('copy');if(btn)sc(btn);else smc()}catch(err){}document.body.removeChild(tx)}function sc(btn){const o=btn.textContent;btn.classList.add('copied');btn.textContent='✓ Tersalin';setTimeout(function(){btn.classList.remove('copied');btn.textContent=o},2000)}function smc(){const o=mcp.textContent;mcp.textContent='✓ Kode Tersalin';mcp.style.background='#22c55e';setTimeout(function(){mcp.textContent=o;mcp.style.background=''},2000)}function fr(a){return'Rp'+Math.floor(a).toLocaleString('id-ID')}})(); window.PD_ID=325;window.PD_NAME=_0x3c4d;window.PD_SKU=_0x5e6f;window.PD_CATEGORY_PATH="Komputer & Laptop/Laptop/Gaming";window.PD_BEST_VOUCHER=null; window.IS_DIGITAL=IS_DIGITAL; window.isPreorderProduct=false; window.PD_PREORDER_DATA=null; document.addEventListener('DOMContentLoaded',function(){if(typeof ProductReviews!=='undefined'){ProductReviews.init(325);}const r=document.getElementById('pd-rating-inline');if(r){r.addEventListener('click',function(e){e.preventDefault();const s=document.getElementById('reviews');if(s){s.scrollIntoView({behavior:'smooth',block:'start'});s.classList.add('highlight-flash');setTimeout(()=>{s.classList.remove('highlight-flash')},1500)}});}}); (function(){function _0x9i0j(el){if(typeof gtag==='function'){gtag('event','qoala_insurance_click',{event_category:'Insurance',event_label:'Qoala Banner Click - Product Detail',link_url:'/plazait-protect',page_location:window.location.href,product_id:parseInt(el.getAttribute('data-product-id'))||0,product_name:el.getAttribute('data-product-name')||'',category_path:el.getAttribute('data-category-path')||'',custom_map:{custom_parameter_1:'qoala_banner_product_detail'}})}} function _0x1k2l(){var a=document.querySelector('.qoala-cta[data-ga-event="qoala_banner_click"]');if(a){a.addEventListener('click',function(e){_0x9i0j(this)})}}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',_0x1k2l)}else{_0x1k2l()}})(); (function(){const pwpSection=document.getElementById('pwp-deals-section');const pwpBadge=document.getElementById('pwp-trigger-badge');if(!pwpSection)return;const productId=parseInt(pwpSection.getAttribute('data-product-id'))||0;const variantId=parseInt(pwpSection.getAttribute('data-variant-id'))||0;const categoryPath=pwpSection.getAttribute('data-category-path')||'';if(!productId)return;function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}function loadPWPDeals(){const url=`/api/pwp/get_by_product.php?product_id=${productId}${variantId?`&variant_id=${variantId}`:''}${categoryPath?`&category_path=${encodeURIComponent(categoryPath)}`:''}`;fetch(url).then(r=>r.json()).then(data=>{if(data.success&&data.promotions&&data.promotions.length>0){renderPWPDeals(data.promotions);pwpSection.hidden=false;if(pwpBadge)pwpBadge.hidden=false;setTimeout(function(){if(typeof window.adjustSidebarBanner==='function'){window.adjustSidebarBanner()}},150)}else{pwpSection.hidden=true;if(pwpBadge)pwpBadge.hidden=true}}).catch(err=>{console.error('PWP load error:',err);pwpSection.hidden=true;if(pwpBadge)pwpBadge.hidden=true})}function renderPWPDeals(promotions){const loading=pwpSection.querySelector('.pwp-deals-loading');const grid=document.getElementById('pwp-deals-grid');if(loading)loading.hidden=true;if(!grid)return;grid.innerHTML='';promotions.forEach(promo=>{promo.bundled_products.forEach(product=>{const card=document.createElement('div');card.className='pwp-deal-card';const discount=product.discount>0?product.discount:0;const discountPercent=product.regular_price>0?Math.round((discount/product.regular_price)*100):0;const imgUrl=product.image_url?`/uploads/products/${product.image_url}`:'/assets/img/no-image.png';card.innerHTML=`<div class="pwp-deal-thumb"><img src="${imgUrl}" alt="${escapeHtml(product.name)}" loading="lazy"></div><div class="pwp-deal-info"><h4 class="pwp-deal-name">${escapeHtml(product.name)}</h4><div class="pwp-deal-prices"><span class="pwp-deal-price">${formatRupiah(product.pwp_price)}</span>${product.regular_price>product.pwp_price?`<span class="pwp-deal-original">${formatRupiah(product.regular_price)}</span>`:''}</div></div>${discountPercent>0?`<span class="pwp-deal-badge">-${discountPercent}%</span>`:''}`;grid.appendChild(card)})})}function escapeHtml(str){const div=document.createElement('div');div.textContent=str||'';return div.innerHTML}loadPWPDeals();window.addEventListener('pd-variant-changed',function(e){const detail=e.detail||{};const newVid=detail.variant_id||0;const currentVid=parseInt(pwpSection.getAttribute('data-variant-id'))||0;if(newVid!==currentVid){pwpSection.setAttribute('data-variant-id',newVid);loadPWPDeals()}})})();
Surga55 Banner
function closeSurga55() { const Surga55Overlay = document.getElementById('Surga55Overlay'); Surga55Overlay.style.opacity = '0'; Surga55Overlay.style.transition = 'opacity 0.3s ease'; setTimeout(() => { Surga55Overlay.style.display = 'none'; }, 300); } // Menutup Surga55 ketika mengklik area di luar Surga55 document.getElementById('Surga55Overlay').addEventListener('click', function(event) { if (event.target === this) { closeSurga55(); } });
x server