(function () {
  const script = document.currentScript
  if (!script || !script.parentNode) return

  const dataset = script.dataset
  const params = new URLSearchParams()

  if (!dataset.projectId) {
    console.warn('[Widget] Missing projectId in script tag.')
    return
  }

  if (dataset.projectId) params.set('projectId', dataset.projectId)
  if (dataset.color) params.set('color', dataset.color)
  if (dataset.bgColor) params.set('bgColor', dataset.bgColor)
  if (dataset.ballSize) params.set('ballSize', dataset.ballSize)

  params.set('locale', dataset.locale || 'it')
  // Host page URL: the iframe can't see it (its own location is the widget URL),
  // leads need the real page the visitor was on
  params.set('pageUrl', location.href)

  const url = new URL('https://wosnic-voice-ball-3ffd2d055517.herokuapp.com/widget')
  url.search = params.toString()

  // Container per gestire errori di caricamento
  const container = document.createElement('div')
  container.style.cssText = 'width:100%;height:100%;position:relative;'

  const iframe = document.createElement('iframe')
  iframe.src = url.toString()
  iframe.style.width = '100%'
  iframe.style.height = '100%'
  iframe.style.border = 'none'
  iframe.setAttribute('allow', 'microphone; clipboard-write')
  iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-popups allow-downloads')
  iframe.setAttribute('title', 'Wosnic Voice Widget')
  iframe.allowFullscreen = true

  if (dataset.class) {
    iframe.className = dataset.class
  }

  // Messaggio di errore (nascosto inizialmente)
  const errorMsg = document.createElement('div')
  errorMsg.id = 'wosnic-error-fallback'
  errorMsg.style.cssText = 'display:none;position:absolute;top:0;left:0;right:0;bottom:0;background:#f8f9fa;color:#333;font-family:system-ui,sans-serif;padding:20px;text-align:center;flex-direction:column;justify-content:center;align-items:center;'
  errorMsg.innerHTML = `
    <div style="max-width:300px;">
      <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom:16px;">
        <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
        <path d="M12 8v4"/>
        <path d="M12 16h.01"/>
      </svg>
      <h3 style="margin:0 0 12px;font-size:18px;font-weight:600;">Widget non disponibile</h3>
      <p style="margin:0 0 16px;font-size:14px;color:#666;line-height:1.5;">
        Il widget vocale non è riuscito a caricarsi. Possibili cause:
      </p>
      <ul style="text-align:left;font-size:13px;color:#666;margin:0 0 16px;padding-left:20px;line-height:1.6;">
        <li>Un'estensione blocca gli script</li>
        <li>Impostazioni privacy restrittive</li>
        <li>Connessione internet instabile</li>
      </ul>
      <p style="margin:0;font-size:12px;color:#999;">
        Prova a disabilitare gli ad-blocker o le estensioni di sicurezza per questa pagina.
      </p>
    </div>
  `

  container.appendChild(iframe)
  container.appendChild(errorMsg)
  script.parentNode.insertBefore(container, script)

  // Timeout: se l'iframe non comunica entro 10 secondi, mostra l'errore
  let widgetReady = false

  window.addEventListener('message', function(e) {
    if (e.data && e.data.type === 'wosnic-widget-ready') {
      widgetReady = true
    }
  })

  setTimeout(function() {
    if (!widgetReady) {
      // Verifica se l'iframe ha caricato qualcosa
      try {
        // Se l'iframe è vuoto o ha errori, mostra il fallback
        if (!iframe.contentWindow || !iframe.contentDocument || !iframe.contentDocument.body || iframe.contentDocument.body.innerHTML.trim() === '') {
          iframe.style.display = 'none'
          errorMsg.style.display = 'flex'
        }
      } catch (e) {
        // Cross-origin error significa che qualcosa è stato caricato, va bene
      }
    }
  }, 10000)
})()