{
  "version": 3,
  "sources": ["/cdn/shop/t/53/assets/theme.js?r=blogfix-20260920-countdown2"],
  "sourcesContent": ["// ===== Blomstrende S\u00F8skende theme.js =====\n\n// --- Blogartikler: g\u00F8r tabeller l\u00E6sbare og scrollbare p\u00E5 mobil ---\n(function(){\n  function wrapArticleTables(){\n    document.querySelectorAll('.template-article .article-content table').forEach(function(table){\n      if(table.parentElement && table.parentElement.classList.contains('article-table-scroll')) return;\n      var wrapper = document.createElement('div');\n      wrapper.className = 'article-table-scroll';\n      table.parentNode.insertBefore(wrapper, table);\n      wrapper.appendChild(table);\n    });\n  }\n  if(document.readyState === 'loading') document.addEventListener('DOMContentLoaded', wrapArticleTables);\n  else wrapArticleTables();\n  document.addEventListener('shopify:section:load', wrapArticleTables);\n})();\n\n// --- Produktgalleri: klik p\u00E5 thumbnails skifter det store billede ---\n(function(){\n  function initGallery(root){\n  var gallery = root.querySelector('.gallery');\n  var mainImage = gallery && gallery.querySelector('.main-gallery-image');\n  if(!gallery || !mainImage || gallery.dataset.bsBound) return;\n  gallery.dataset.bsBound = 'true';\n\n  gallery.querySelectorAll('[data-gallery-thumbnail]').forEach(function(thumbnail){\n    thumbnail.addEventListener('click', function(){\n      var fullSrc = thumbnail.dataset.fullSrc;\n      if(!fullSrc) return;\n      mainImage.src = fullSrc;\n      mainImage.removeAttribute('srcset');\n      mainImage.removeAttribute('sizes');\n      mainImage.alt = thumbnail.dataset.mediaAlt || mainImage.alt;\n      var aiLabel = gallery.querySelector('[data-gallery-ai-label]');\n      if(aiLabel) aiLabel.hidden = true;\n      gallery.querySelectorAll('[data-gallery-thumbnail]').forEach(function(other){\n        var selected = other === thumbnail;\n        other.classList.toggle('active', selected);\n        other.setAttribute('aria-pressed', selected ? 'true' : 'false');\n      });\n    });\n  });\n  }\n  initGallery(document);\n  document.addEventListener('shopify:section:load', function(event){ initGallery(event.target); });\n})();\n\n// --- Announcement: vis korrekt n\u00E6ste bestillingsfrist i dansk tid ---\n(function(){\n  var timer=document.getElementById('cutoffTimer');\n  var intro=document.getElementById('bsAnnouncementMessage');\n  var delivery=document.getElementById('bsAnnouncementDelivery');\n  if(!timer||!intro||!delivery)return;\n  var weekdayHour=Number(timer.dataset.weekdayCutoffHour)||14;\n  var fridayHour=Number(timer.dataset.weekendCutoffHour)||17;\n  var zone='Europe/Copenhagen';\n  var names=['s\u00F8ndag','mandag','tirsdag','onsdag','torsdag','fredag','l\u00F8rdag'];\n  var formatter=new Intl.DateTimeFormat('en-GB',{timeZone:zone,year:'numeric',month:'2-digit',day:'2-digit',hour:'2-digit',minute:'2-digit',second:'2-digit',hourCycle:'h23'});\n  function localParts(date){\n    var o={};\n    formatter.formatToParts(date).forEach(function(p){if(p.type!=='literal')o[p.type]=Number(p.value);});\n    return o;\n  }\n  function weekday(p){return new Date(Date.UTC(p.year,p.month-1,p.day)).getUTCDay();}\n  function deadline(p,offset,hour){\n    var wanted=Date.UTC(p.year,p.month-1,p.day+offset,hour);\n    var instant=new Date(wanted);\n    for(var n=0;n<4;n++){\n      var x=localParts(instant);\n      var actual=Date.UTC(x.year,x.month-1,x.day,x.hour,x.minute,x.second);\n      var delta=wanted-actual;\n      if(delta===0)break;\n      instant=new Date(instant.getTime()+delta);\n    }\n    return instant;\n  }\n  function tick(){\n    var now=new Date(),p=localParts(now),today=weekday(p),next=null;\n    for(var offset=0;offset<8;offset++){\n      var day=(today+offset)%7;\n      if(day===0||day===6)continue;\n      var cutoff=deadline(p,offset,day===5?fridayHour:weekdayHour);\n      if(cutoff<=now)continue;\n      next={cutoff:cutoff,offset:offset,day:day,deliveryDay:day===5?1:day+1};\n      break;\n    }\n    if(!next)return;\n    var remaining=Math.max(0,Math.ceil((next.cutoff-now)/1000));\n    var d=Math.floor(remaining/86400),h=Math.floor(remaining%86400/3600);\n    var m=Math.floor(remaining%3600/60),s=remaining%60;\n    timer.textContent=(d?d+'d ':'')+String(h).padStart(2,'0')+':'+String(m).padStart(2,'0')+':'+String(s).padStart(2,'0');\n    intro.textContent=next.offset===0?'Bestil inden':'Bestil senest '+names[next.day]+' om';\n    var tomorrow=(today+1)%7;\n    delivery.textContent='for levering '+(next.offset===0&&next.deliveryDay===tomorrow?'i morgen.':next.deliveryDay===1?'mandag.':names[next.deliveryDay]+'.');\n  }\n  tick();setInterval(tick,1000);\n})();\n\n// --- Mobilmenu ---\n(function(){\n  var btn = document.querySelector('.menu-toggle');\n  var nav = document.querySelector('.nav-links');\n  if(!btn || !nav) return;\n  btn.addEventListener('click', function(){\n    nav.classList.toggle('open');\n    btn.classList.toggle('open');\n    btn.setAttribute('aria-expanded', nav.classList.contains('open'));\n  });\n})();\n\n// --- 2-trins popup (micro-commitment) + rabatkode direkte p\u00E5 sitet ---\n// Trin 1: valg (hvem k\u00F8ber du til?) \u2192 Trin 2: e-mail \u2192 Trin 3: koden vises.\n// Efter form-post reloader Shopify siden med ?customer_posted=true \u2014 s\u00E5 viser vi trin 3.\n(function(){\n  var p = document.getElementById('popup');\n  var posted = window.location.search.indexOf('customer_posted=true') !== -1;\n\n  function show(step){\n    p.querySelectorAll('.step').forEach(function(s){ s.classList.remove('active'); });\n    var t = p.querySelector('.step-' + step);\n    if(t) t.classList.add('active');\n    p.classList.add('show');\n  }\n\n  if(p){\n    // Trin 1 \u2192 2: gem valget som kunde-tag (interesse-<valg>)\n    p.querySelectorAll('.chip').forEach(function(c){\n      c.addEventListener('click', function(){\n        var tags = p.querySelector('[data-popup-tags]');\n        if(tags && tags.value.indexOf('interesse-') === -1) tags.value += ',interesse-' + c.dataset.choice;\n        show(2);\n      });\n    });\n\n    p.addEventListener('click', function(e){\n      if(e.target === p || e.target.closest('[data-popup-close]')) p.classList.remove('show');\n    });\n\n    // Succes: vis koden med det samme \u2014 kunden skal ikke fiske den frem i mailen\n    if(posted){ show(3); return; }\n\n    // Vis kun velkomstrabatten under den f\u00F8rste browsersession.\n    // En tilbagevendende g\u00E6st p\u00E5 samme browser ser den ikke igen.\n    var firstVisitSession = false;\n    var alreadySeenPopup = false;\n    try {\n      firstVisitSession = sessionStorage.getItem('bsPopupFirstSession') === '1';\n      alreadySeenPopup = sessionStorage.getItem('bsPopupShown') === '1';\n      if (!firstVisitSession && !localStorage.getItem('bsVisitorKnown')) {\n        firstVisitSession = true;\n        sessionStorage.setItem('bsPopupFirstSession', '1');\n      }\n      localStorage.setItem('bsVisitorKnown', '1');\n    } catch(e) {\n      // Hvis lager er blokeret, bevar den hidtidige sessionsbaserede adf\u00E6rd.\n      firstVisitSession = true;\n    }\n    if(firstVisitSession && !alreadySeenPopup) {\n      setTimeout(function(){\n        if (!p.isConnected || document.hidden) return;\n        try { if(sessionStorage.getItem('bsPopupShown') === '1') return; } catch(e) {}\n        show(1);\n        try { sessionStorage.setItem('bsPopupShown','1'); } catch(e) {}\n      }, Math.max(0, parseInt(p.dataset.delay || '12',10) || 12) * 1000);\n    }\n  } else if(posted){\n    // Fallback-toast hvis popup er sl\u00E5et fra\n    var b = document.createElement('div');\n    b.className = 'signup-toast';\n    b.innerHTML = 'Tak for din tilmelding! \uD83C\uDF37 Din rabatkode: <b>VELKOMST15</b> \u2014 15\u00A0% p\u00E5 din f\u00F8rste buket. <button aria-label=\"Luk\">\u00D7</button>';\n    document.body.appendChild(b);\n    b.querySelector('button').addEventListener('click', function(){ b.remove(); });\n  }\n})();\n\n// --- PDP: varianter, add-ons, abonnement, dynamisk pris, kurv ---\n(function(){\n  function initProduct(root){\n  var form = root.querySelector('#ProductForm');\n  if(!form || form.dataset.bsBound) return;\n  form.dataset.bsBound = 'true';\n  var lifecycle = new AbortController();\n  var signal = lifecycle.signal;\n  var interval;\n  function listen(target,type,handler){ target.addEventListener(type,handler,{signal:signal}); }\n\n  var dataEl = root.querySelector('#ProductJSON');\n  var variants = dataEl ? JSON.parse(dataEl.textContent) : [];\n  var variantInput = form.querySelector('input[name=\"id\"]');\n  var planInput = form.querySelector('input[name=\"selling_plan\"]');\n\n  var state = {\n    variantId: parseInt(variantInput.value, 10),\n    price: parseInt(form.dataset.initialPrice, 10), // i \u00F8re\n    addons: 0,\n    isSub: false,\n    planId: ''\n  };\n\n  var canPurchase = false;\n  var submitting = false;\n  var quotes = {};\n  var addonQuotes = {};\n  var quoteGeneration = 0;\n  var quoteTimer;\n  var preview = window.BSStorePrices || (window.BSDiscountPreview ? window.BSDiscountPreview({\n    currency:form.dataset.currency || 'DKK', country:form.dataset.country,\n    root:form.dataset.rootUrl\n  }) : null);\n\n  var initialVariantId = state.variantId;\n  var lastImageVariant;\n  var gallery = root.querySelector('.gallery');\n  var mainImage = gallery && gallery.querySelector('.main-gallery-image');\n  var initialImage = mainImage ? {src:mainImage.getAttribute('src'),srcset:mainImage.getAttribute('srcset'),sizes:mainImage.getAttribute('sizes'),alt:mainImage.alt} : null;\n  if(mainImage) listen(mainImage,'error',function(){\n    if(!initialImage || mainImage.getAttribute('src') === initialImage.src) return;\n    mainImage.src = initialImage.src;\n    mainImage.alt = initialImage.alt;\n    mainImage.removeAttribute('srcset');\n    var label = gallery.querySelector('[data-gallery-ai-label]');\n    if(label) label.hidden = true;\n  });\n  function syncGallery(variant){\n    if(!mainImage || lastImageVariant === variant.id) return;\n    lastImageVariant = variant.id;\n    var image = variant.gallery;\n    if(image){\n      mainImage.src = image.src;\n      mainImage.removeAttribute('srcset');\n      mainImage.removeAttribute('sizes');\n      mainImage.alt = image.alt;\n    }else if(initialImage){\n      mainImage.src = initialImage.src;\n      mainImage.alt = initialImage.alt;\n      if(initialImage.srcset) mainImage.setAttribute('srcset',initialImage.srcset);\n      else mainImage.removeAttribute('srcset');\n      if(initialImage.sizes) mainImage.setAttribute('sizes',initialImage.sizes);\n      else mainImage.removeAttribute('sizes');\n    }\n    var label = gallery.querySelector('[data-gallery-ai-label]');\n    if(label) label.hidden = !(image && image.ai);\n    gallery.querySelectorAll('[data-gallery-thumbnail]').forEach(function(button){\n      var selected = button.dataset.fullSrc === mainImage.src || button.dataset.fullSrc === mainImage.getAttribute('src');\n      button.classList.toggle('active',selected);\n      button.setAttribute('aria-pressed',String(selected));\n    });\n  }\n\n  var requestedPlan = new URLSearchParams(window.location.search).get('selling_plan');\n  if(requestedPlan && variants.some(function(v){ return v.id === state.variantId && (v.plans || []).some(function(p){ return String(p.id) === requestedPlan; }); })){\n    state.planId = requestedPlan;\n    state.isSub = true;\n    if(planInput) planInput.value = requestedPlan;\n    form.querySelectorAll('.p-opt').forEach(function(option){\n      var selected = option.dataset.planId === requestedPlan;\n      option.classList.toggle('active',selected);\n      option.querySelector('input').checked = selected;\n    });\n  }\n\n  // Share the exact selection/properties between price preview and add-to-cart.\n  function selectedItems(variantId){\n    var main = {id:variantId, quantity:1, properties:{}};\n    if(state.planId) main.selling_plan = state.planId;\n    form.querySelectorAll('[data-line-property]').forEach(function(inp){\n      if(inp.value.trim()) main.properties[inp.dataset.lineProperty] = inp.value.trim();\n    });\n    var card = form.querySelector('input[data-free-card]');\n    if(card && card.checked && main.properties['Hilsen p\u00E5 kort'] === undefined) main.properties['H\u00E5ndskrevet kort'] = 'Ja';\n    var items = [main];\n    form.querySelectorAll('input[data-addon-variant]:checked').forEach(function(c){\n      items.push({id:parseInt(c.dataset.addonVariant, 10), quantity:1});\n    });\n    return items;\n  }\n  function variantPrice(variant){\n    var plan = (variant.plans || []).find(function(p){ return String(p.id) === state.planId; });\n    var base = plan ? plan.price : variant.price;\n    var before = plan ? Math.max(plan.compare_at_price || 0, variant.compare_at_price || 0) : (variant.compare_at_price || 0);\n    var quote = quotes[variant.id];\n    if(quote && quote[0].original === base && quote[0].price <= base){\n      before = Math.max(before, base);\n      base = quote[0].price;\n    } else { quote = null; }\n    return {base:base, before:before, plan:plan, quote:quote};\n  }\n  function paintPrice(element, base, before, compact, suffix, prefix){\n    if(window.BSRenderPrice) return window.BSRenderPrice(element,base,before,{compact:compact,suffix:suffix,prefix:prefix,currency:form.dataset.currency || 'DKK'});\n    if(!element) return '';\n    var saving = Math.max(0, before - base);\n    var percent = before > 0 ? Math.round(saving * 1000 / before) / 10 : 0;\n    var savingText = saving ? 'Spar ' + fmt(saving) + ' (' + String(percent).replace('.', ',') + ' %)' : '';\n    element.querySelector('[data-current-price]').textContent = (prefix || '') + fmt(base) + (suffix || '');\n    element.querySelector('[data-before-price]').hidden = !saving;\n    element.querySelector('[data-before-amount]').textContent = fmt(before);\n    element.querySelector('[data-price-saving]').hidden = !saving;\n    element.querySelector('[data-price-saving]').textContent = compact && saving ? '-' + String(percent).replace('.', ',') + '%' : savingText;\n    return savingText;\n  }\n  function refreshQuotes(reset, keepExisting){\n    if(submitting) return;\n    if(!preview){ render(); return; }\n    var generation = ++quoteGeneration;\n    if(reset) preview.invalidate();\n    if(!keepExisting) quotes = {};\n    addonQuotes = {};\n    render();\n    clearTimeout(quoteTimer);\n    quoteTimer = setTimeout(async function(){\n      // Evaluate each size separately so sizes never qualify one another for a discount.\n      var candidates = variants.filter(function(v){\n        return v.available && (!state.planId || (v.plans || []).some(function(p){ return String(p.id) === state.planId; })) && (!v.requires_selling_plan || state.planId);\n      }).sort(function(a,b){ return (b.id === state.variantId) - (a.id === state.variantId); });\n      for(var i=0; i<candidates.length; i++){\n        if(generation !== quoteGeneration || submitting) return;\n        var variant = candidates[i];\n        try {\n          var quote = await preview.quote(selectedItems(variant.id));\n          if(generation !== quoteGeneration || submitting) return;\n          quotes[variant.id] = quote;\n          form.dataset.discountPreview = 'ready';\n          render();\n        } catch(error){\n          // Network / eligibility failures retain the original compare-at display.\n          if(generation === quoteGeneration) form.dataset.discountPreview = 'unavailable';\n        }\n      }\n      // Unchecked add-ons must be priced with the selected bouquet too.\n      var unchecked = Array.from(form.querySelectorAll('input[data-addon-variant]:not(:checked)'));\n      for(var a=0; a<unchecked.length; a++){\n        if(generation !== quoteGeneration || submitting) return;\n        var input = unchecked[a];\n        var items = selectedItems(state.variantId);\n        items.push({id:Number(input.dataset.addonVariant),quantity:1});\n        try {\n          var addonQuote = await preview.quote(items);\n          if(generation !== quoteGeneration || submitting) return;\n          addonQuotes[input.dataset.addonVariant] = addonQuote[addonQuote.length-1];\n          render();\n        } catch(error){ /* The original add-on price remains visible. */ }\n      }\n    }, 250);\n  }\n  function fmt(cents){\n    return new Intl.NumberFormat('da-DK', { style: 'currency', currency: form.dataset.currency || 'DKK' }).format(cents / 100);\n  }\n\n  function render(){\n    var variant = variants.find(function(v){ return v.id === state.variantId; });\n    if(!variant) return;\n    var prices = variantPrice(variant);\n    var allocation = prices.plan;\n    var base = prices.base;\n    var before = prices.before;\n    var saving = Math.max(0, before - base);\n    var total = base + state.addons;\n    if(prices.quote) total = prices.quote.reduce(function(sum, line){ return sum + line.price; }, 0);\n    var savingText = paintPrice(root.querySelector('#pdpPrice'), base, before, false, allocation ? ' /f\u00F8rste levering' : '');\n    form.querySelectorAll('.size').forEach(function(button){\n      var v = variants.find(function(item){ return item.id === Number(button.dataset.variantId); });\n      if(!v) return;\n      var sizePrices = variantPrice(v);\n      paintPrice(button.querySelector('.sale-price'), sizePrices.base, sizePrices.before, true);\n      button.disabled = !v.available || (!!state.planId && !sizePrices.plan) || (v.requires_selling_plan && !sizePrices.plan);\n    });\n    var selectedIndex = 1;\n    form.querySelectorAll('input[data-addon-variant]').forEach(function(input){\n      var addonPrice = Number(input.dataset.price);\n      var addonBefore = Number(input.dataset.beforePrice || 0);\n      var quote = input.checked ? (prices.quote && prices.quote[selectedIndex++]) : addonQuotes[input.dataset.addonVariant];\n      if(quote && quote.original === addonPrice && quote.price <= addonPrice){\n        addonBefore = Math.max(addonBefore,addonPrice);\n        addonPrice = quote.price;\n      }\n      paintPrice(input.closest('.addon').querySelector('.sale-price'),addonPrice,addonBefore,false,'','+');\n    });\n    var b = root.querySelector('#btnPrice');\n    var sp = root.querySelector('#stickyPrice');\n    var ss = root.querySelector('#stickySaving');\n    if(b) b.textContent = fmt(total);\n    if(sp) sp.textContent = fmt(total);\n    if(ss){ ss.hidden = !saving; ss.textContent = savingText + ' p\u00E5 buketten'; }\n    canPurchase = variant.available && (!state.planId || !!allocation) && (!variant.requires_selling_plan || !!allocation);\n    var label = variant.available ? 'V\u00E6lg abonnement' : 'Udsolgt';\n    form.querySelector('button[type=\"submit\"]').disabled = submitting || !canPurchase;\n    form.querySelector('[data-submit-label]').textContent = canPurchase ? 'L\u00E6g i kurv \u2014' : label;\n    if(b) b.hidden = !canPurchase;\n    var stickyButton = root.querySelector('button[form=\"ProductForm\"]');\n    if(stickyButton){ stickyButton.disabled = submitting || !canPurchase; stickyButton.textContent = canPurchase ? 'L\u00E6g i kurv' : label; }\n    syncGallery(variant);\n    form.dispatchEvent(new CustomEvent('bs:product:render',{detail:{selected:variant,planId:state.planId,variants:variants.map(function(v){\n      var p = variantPrice(v);\n      return Object.assign({},v,{selectable:v.available && (!state.planId || !!p.plan) && (!v.requires_selling_plan || !!p.plan)});\n    })}}));\n  }\n\n  function selectVariant(id,updateUrl){\n    var variant = variants.find(function(v){ return v.id === Number(id); });\n    if(!variant || submitting) return;\n    state.variantId = variant.id;\n    state.price = variant.price;\n    variantInput.value = variant.id;\n    form.querySelectorAll('.size').forEach(function(button){\n      var selected = Number(button.dataset.variantId) === variant.id;\n      button.classList.toggle('active',selected);\n      button.setAttribute('aria-pressed',String(selected));\n    });\n    var sticky = root.querySelector('#stickySize');\n    if(sticky) sticky.textContent = variant.title;\n    if(updateUrl){\n      var url = new URL(window.location.href);\n      url.searchParams.set('variant',variant.id);\n      if(state.planId) url.searchParams.set('selling_plan',state.planId);\n      else url.searchParams.delete('selling_plan');\n      window.history.replaceState(window.history.state,'',url);\n    }\n    render();\n    refreshQuotes(false,true);\n  }\n  form.querySelectorAll('.size').forEach(function(el){\n    listen(el,'click',function(){ if(!el.disabled) selectVariant(el.dataset.variantId,true); });\n  });\n  listen(window,'popstate',function(){\n    var url = new URL(window.location.href);\n    var plan = url.searchParams.get('selling_plan') || '';\n    state.planId = plan;\n    state.isSub = !!plan;\n    if(planInput) planInput.value = plan;\n    form.querySelectorAll('.p-opt').forEach(function(option){\n      var selected = option.dataset.planId === plan;\n      option.classList.toggle('active',selected);\n      option.querySelector('input').checked = selected;\n    });\n    selectVariant(url.searchParams.get('variant') || initialVariantId,false);\n  });\n  listen(form,'bs:product:request',render);\n\n  // Add-ons (separate produkter \u2014 l\u00E6gges i kurven sammen med hovedproduktet)\n  form.querySelectorAll('input[data-addon-variant]').forEach(function(cb){\n    cb.addEventListener('change', function(){\n      state.addons = 0;\n      form.querySelectorAll('input[data-addon-variant]:checked').forEach(function(c){\n        state.addons += parseInt(c.dataset.price, 10);\n      });\n      refreshQuotes();\n    });\n  });\n\n  // Engangsk\u00F8b vs. abonnement (alle selling plans)\n  form.querySelectorAll('.p-opt').forEach(function(el){\n    el.addEventListener('click', function(){\n      form.querySelectorAll('.p-opt').forEach(function(p){ p.classList.remove('active'); });\n      el.classList.add('active');\n      var radio = el.querySelector('input[type=\"radio\"]');\n      if(radio) radio.checked = true;\n      state.planId = el.dataset.planId || '';\n      state.isSub = !!state.planId;\n      if(planInput) planInput.value = state.planId;\n      var url = new URL(window.location.href);\n      url.searchParams.set('variant',state.variantId);\n      if(state.planId) url.searchParams.set('selling_plan',state.planId);\n      else url.searchParams.delete('selling_plan');\n      window.history.replaceState(window.history.state,'',url);\n      refreshQuotes();\n    });\n  });\n\n  form.querySelectorAll('[data-line-property], [data-free-card]').forEach(function(input){\n    input.addEventListener('input', function(){ refreshQuotes(); });\n  });\n\n  // Submit: hovedprodukt (+ evt. selling plan + properties) og add-ons i \u00E9t kald\n  form.addEventListener('submit', function(e){\n    e.preventDefault();\n    if(!canPurchase || submitting) return;\n    submitting = true;\n    ++quoteGeneration;\n    clearTimeout(quoteTimer);\n    var items = selectedItems(state.variantId);\n    render();\n\n    var btn = form.querySelector('button[type=\"submit\"]');\n    if(btn){ btn.disabled = true; btn.style.opacity = '.7'; }\n\n    fetch((form.dataset.rootUrl || '/').replace(/\\/?$/, '/') + 'cart/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ items: items })\n    }).then(function(r){\n      if(!r.ok) throw new Error('Cart error');\n      window.location.href = (form.dataset.rootUrl || '/').replace(/\\/?$/, '/') + 'cart';\n    }).catch(function(){\n      submitting = false;\n      if(btn) btn.style.opacity = '1';\n      render();\n      alert('Noget gik galt \u2014 pr\u00F8v igen, eller ring til os.');\n    });\n  });\n\n  render();\n  refreshQuotes();\n  // The shared card controller also invalidates PDP quotes on campaign/cart changes.\n  listen(document,'bs:prices:refresh',function(){ refreshQuotes(); });\n  listen(window,'pageshow',function(event){ if(event.persisted){ submitting = false; refreshQuotes(); } });\n  if(!window.BSCatalogPrices){\n    listen(window,'pageshow', function(event){ if(event.persisted){ submitting = false; refreshQuotes(true); } });\n    listen(window,'focus', function(){ refreshQuotes(true); });\n    listen(document,'visibilitychange', function(){ if(!document.hidden) refreshQuotes(true); });\n    interval = setInterval(function(){ if(!document.hidden) refreshQuotes(true); }, 60000);\n  }\n  listen(document,'shopify:section:unload',function(event){\n    if(event.target.contains(form)){\n      lifecycle.abort();\n      ++quoteGeneration;\n      clearTimeout(quoteTimer);\n      clearInterval(interval);\n    }\n  });\n  }\n  initProduct(document);\n  document.addEventListener('shopify:section:load',function(event){ initProduct(event.target); });\n})();\n\n"],
  "mappings": "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",
  "names": ["a"]
}
