// Parent script for embedding the form (function() { var iframe; var baseAppUrl = 'https://fineink.punchey.com/intake_form_app'; var refererParam = encodeURIComponent(window.location.href); var appUrl = baseAppUrl + '?embed_origin=' + refererParam; function createIframe() { if (document.getElementById('punchey-iframe')) return; iframe = document.createElement('iframe'); iframe.id = 'punchey-iframe'; iframe.style.position = 'fixed'; iframe.style.top = '0'; iframe.style.left = '0'; iframe.style.width = '100vw'; iframe.style.height = '100vh'; iframe.style.border = 'none'; iframe.style.zIndex = '99999999'; iframe.style.display = 'none'; iframe.style.background = 'transparent'; iframe.src = appUrl; document.body.appendChild(iframe); } // Create the iframe when script loads if (document.body) { createIframe(); } else { // if document.body is not available create the iframe after the page has loaded window.addEventListener('DOMContentLoaded', createIframe); } // Set up the message handler just once var messageHandlerSet = false; function setupMessageHandler() { if (messageHandlerSet) return; window.addEventListener('message', function(event) { console.log('Parent received message:', event.data, 'from:', event.origin); // Extract the origin part from our app URL var appOrigin = new URL(appUrl).origin; // Check if message is from our app iframe if (event.origin !== appOrigin) { console.log('Ignoring message from unknown origin:', event.origin); return; } if (event.data === 'close') { console.log('Closing app'); if (iframe) { iframe.style.display = 'none'; } } }); messageHandlerSet = true; } // Public API window.puncheyInit = function(resource_id) { setupMessageHandler(); if (iframe) { console.log('Showing iframe'); iframe.style.display = 'block'; if (resource_id) { var url = new URL(appUrl); url.searchParams.set('resource_id', resource_id); iframe.src = url.toString(); } else { iframe.src = appUrl; } } }; })();