{"product_id":"sinfull","title":"SINFULL","description":"\u003cbody\u003e \n\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003cstyle\u003e\n        body, html {\n            margin: 0;\n            padding: 0;\n            width: 100%;\n            height: 150%;\n            overflow: hidden; \/* Prevents scrolling on body *\/\n        }\n        #page-schedule-log {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            z-index: 9999; \/* Ensure it overlaps everything *\/\n            overflow: auto; \/* Allow scrolling *\/\n        }\n        #page-schedule-log::-webkit-scrollbar {\n            width: 0; \/* Remove scrollbar space *\/\n            background: transparent; \/* Optional: just to ensure it's invisible *\/\n        }\n        #page-schedule-log {\n            -ms-overflow-style: none;  \/* IE and Edge *\/\n            scrollbar-width: none;  \/* Firefox *\/\n        }\n        #fillout-embed {\n            width: 100%;\n            height: 200vh; \/* Set a large height to ensure content is fully visible *\/\n            box-sizing: border-box; \/* Ensure padding and borders are included in the width and height *\/\n        }\n    \u003c\/style\u003e\n\n    \u003cdiv id=\"page-schedule-log\"\u003e\n        \u003cdiv id=\"fillout-embed\" data-fillout-id=\"dHbPhXwbugus\" data-fillout-embed-type=\"standard\" data-fillout-inherit-parameters data-fillout-dynamic-resize data-deliverystarttime=\"\" data-deliverydate=\"\" data-futuretime=\"\" data-cleanstarttime=\"\" data-timezone=\"\"\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cscript\u003e\n        \/\/ Get current date\/time parts in Vegas time zone\n        function getVegasNow() {\n            const now = new Date();\n            const formatter = new Intl.DateTimeFormat('en-US', {\n                timeZone: 'America\/Los_Angeles',\n                hour12: false,\n                year: 'numeric',\n                month: '2-digit',\n                day: '2-digit',\n                hour: '2-digit',\n                minute: '2-digit',\n            });\n            const parts = formatter.formatToParts(now);\n            const obj = {};\n            parts.forEach(({ type, value }) =\u003e {\n                obj[type] = value;\n            });\n            return obj;  \/\/ { year, month, day, hour, minute }\n        }\n\n        \/\/ Format date as YYYY-MM-DD in Vegas time\n        function getCurrentFormattedDateVegas() {\n            const vegas = getVegasNow();\n            return `${vegas.year}-${vegas.month}-${vegas.day}`;\n        }\n\n        \/\/ Format time as HH:mm in Vegas time, with optional offset in minutes\n        function getFormattedTimeVegas(offsetMinutes = 0) {\n            const now = new Date();\n            const formatter = new Intl.DateTimeFormat('en-US', {\n                timeZone: 'America\/Los_Angeles',\n                hour12: false,\n                hour: '2-digit',\n                minute: '2-digit',\n            });\n            const parts = formatter.formatToParts(now);\n            let hour = 0, minute = 0;\n            parts.forEach(({ type, value }) =\u003e {\n                if (type === 'hour') hour = parseInt(value, 10);\n                if (type === 'minute') minute = parseInt(value, 10);\n            });\n\n            minute += offsetMinutes;\n            while (minute \u003e= 60) {\n                minute -= 60;\n                hour += 1;\n            }\n            while (minute \u003c 0) {\n                minute += 60;\n                hour -= 1;\n            }\n            hour = ((hour % 24) + 24) % 24;\n\n            return `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;\n        }\n\n        \/\/ Format time in \"h:mm AM\/PM\" in Vegas time, with optional offset minutes\n        function formatTimeInAMPMVegas(offsetMinutes = 40) {\n            const now = new Date();\n            const formatter = new Intl.DateTimeFormat('en-US', {\n                timeZone: 'America\/Los_Angeles',\n                hour12: false,\n                hour: '2-digit',\n                minute: '2-digit',\n            });\n            const parts = formatter.formatToParts(now);\n            let hour = 0, minute = 0;\n            parts.forEach(({ type, value }) =\u003e {\n                if (type === 'hour') hour = parseInt(value, 10);\n                if (type === 'minute') minute = parseInt(value, 10);\n            });\n\n            minute += offsetMinutes;\n            while (minute \u003e= 60) {\n                minute -= 60;\n                hour += 1;\n            }\n            while (minute \u003c 0) {\n                minute += 60;\n                hour -= 1;\n            }\n            hour = ((hour % 24) + 24) % 24;\n\n            const ampm = hour \u003e= 12 ? 'PM' : 'AM';\n            const formattedHour = hour % 12 || 12;\n            return `${formattedHour}:${String(minute).padStart(2, '0')} ${ampm}`;\n        }\n\n        \/\/ Return Vegas timezone name (hardcoded for simplicity)\n        function getPrettyTimeZoneVegas() {\n            return \"Pacific Time\"; \/\/ could be \"Pacific Daylight Time\" or \"Pacific Standard Time\"\n        }\n\n        \/\/ Set data attributes on the fillout embed element\n        const deliveryElement = document.querySelector('[data-fillout-id=\"dHbPhXwbugus\"]');\n        deliveryElement.setAttribute('data-deliverystarttime', getFormattedTimeVegas(30)); \/\/ +30 minutes from now\n        deliveryElement.setAttribute('data-deliverydate', getCurrentFormattedDateVegas());\n        deliveryElement.setAttribute('data-timezone', getPrettyTimeZoneVegas());\n        deliveryElement.setAttribute('data-futuretime', getFormattedTimeVegas(30));\n        deliveryElement.setAttribute('data-cleanstarttime', formatTimeInAMPMVegas(40));\n\n        \/\/ Load the Fillout embed script asynchronously\n        const script = document.createElement('script');\n        script.src = 'https:\/\/server.fillout.com\/embed\/v1\/';\n        document.body.appendChild(script);\n    \u003c\/script\u003e\n\n\n\u003c\/body\u003e","brand":"UniHop","offers":[{"title":"Default Title","offer_id":46831761227993,"sku":"SINFULL","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0588\/2701\/4335\/files\/GK---Neil-Werner--Sinfull-Sweets--R1---FF-01.png?v=1753134862","url":"https:\/\/unihop.myshopify.com\/products\/sinfull","provider":"UniHop","version":"1.0","type":"link"}