{"id":3837,"date":"2026-04-21T08:14:16","date_gmt":"2026-04-21T13:14:16","guid":{"rendered":"https:\/\/cpe.kennesaw.edu\/openhouse\/?page_id=3837"},"modified":"2026-04-22T12:00:18","modified_gmt":"2026-04-22T17:00:18","slug":"test-page","status":"publish","type":"page","link":"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/","title":{"rendered":"Test Page"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3837\" class=\"elementor elementor-3837\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b719a45 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b719a45\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-11572ac\" data-id=\"11572ac\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e232bd4 elementor-widget elementor-widget-html\" data-id=\"e232bd4\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- CPE EXPO SPIN WHEEL - Drop this into your WordPress HTML block -->\r\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue&family=Nunito:wght@400;600;700;900&display=swap');\r\n\r\n  :root {\r\n    --gold: #FFD700;\r\n    --gold-dark: #C8A800;\r\n    --navy: #0D1B2A;\r\n    --teal: #1B998B;\r\n  }\r\n\r\n  #cpe-spinwheel-wrap * {\r\n    box-sizing: border-box;\r\n    margin: 0;\r\n    padding: 0;\r\n  }\r\n\r\n  #cpe-spinwheel-wrap {\r\n    font-family: 'Nunito', sans-serif;\r\n    background: linear-gradient(135deg, #0D1B2A 0%, #1a2a3a 50%, #0D1B2A 100%);\r\n    border-radius: 20px;\r\n    padding: 40px 20px 50px;\r\n    max-width: 620px;\r\n    margin: 40px auto;\r\n    text-align: center;\r\n    position: relative;\r\n    overflow: hidden;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n  }\r\n\r\n  #cpe-spinwheel-wrap::before {\r\n    content: '';\r\n    position: absolute;\r\n    inset: 0;\r\n    background:\r\n      radial-gradient(ellipse at 20% 20%, rgba(255,215,0,0.07) 0%, transparent 60%),\r\n      radial-gradient(ellipse at 80% 80%, rgba(27,153,139,0.07) 0%, transparent 60%);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .sw-header {\r\n    margin-bottom: 28px;\r\n    position: relative;\r\n    width: 100%;\r\n  }\r\n\r\n  .sw-eyebrow {\r\n    font-family: 'Bebas Neue', sans-serif;\r\n    letter-spacing: 4px;\r\n    font-size: 13px;\r\n    color: var(--gold);\r\n    text-transform: uppercase;\r\n    margin-bottom: 6px;\r\n    opacity: 0.85;\r\n  }\r\n\r\n  .sw-title {\r\n    font-family: 'Bebas Neue', sans-serif;\r\n    font-size: clamp(28px, 6vw, 42px);\r\n    color: #fff;\r\n    letter-spacing: 2px;\r\n    line-height: 1;\r\n    text-shadow: 0 2px 16px rgba(255,215,0,0.25);\r\n  }\r\n\r\n  .sw-title span { color: var(--gold); }\r\n\r\n  .sw-subtitle {\r\n    font-size: 14px;\r\n    color: rgba(255,255,255,0.6);\r\n    margin-top: 8px;\r\n    font-weight: 600;\r\n  }\r\n\r\n  .sw-wheel-container {\r\n    position: relative;\r\n    width: 320px;\r\n    height: 320px;\r\n  margin: 40px auto 50px !important;\r\n    filter: drop-shadow(0 12px 40px rgba(0,0,0,0.6));\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  #sw-canvas {\r\n    width: 320px;\r\n    height: 320px;\r\n    border-radius: 50%;\r\n    display: block;\r\n  }\r\n\r\n  .sw-pointer {\r\n    position: absolute;\r\n    top: -18px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    width: 0;\r\n    height: 0;\r\n    border-left: 16px solid transparent;\r\n    border-right: 16px solid transparent;\r\n    border-top: 36px solid var(--gold);\r\n    filter: drop-shadow(0 4px 8px rgba(0,0,0,0.5));\r\n    z-index: 10;\r\n  }\r\n\r\n  .sw-pointer::after {\r\n    content: '';\r\n    position: absolute;\r\n    top: -40px;\r\n    left: -10px;\r\n    width: 20px;\r\n    height: 14px;\r\n    background: var(--gold-dark);\r\n    border-radius: 4px 4px 0 0;\r\n  }\r\n\r\n  .sw-hub {\r\n    position: absolute;\r\n    top: 50%;\r\n    left: 50%;\r\n    transform: translate(-50%, -50%);\r\n    width: 52px;\r\n    height: 52px;\r\n    background: radial-gradient(circle at 35% 35%, #fff 0%, #d4af37 60%, #a07c00 100%);\r\n    border-radius: 50%;\r\n    box-shadow: 0 0 0 4px #0D1B2A, 0 0 0 7px var(--gold), 0 4px 16px rgba(0,0,0,0.6);\r\n    z-index: 10;\r\n  }\r\n\r\n  \/* Spin button \u2014 more generous padding *\/\r\n  .sw-btn {\r\n    display: inline-block;\r\n    font-family: 'Bebas Neue', sans-serif;\r\n    font-size: 24px;\r\n    letter-spacing: 3px;\r\n    color: var(--navy);\r\n    background: linear-gradient(135deg, var(--gold) 0%, #FFA500 100%);\r\n    border: none;\r\n    border-radius: 50px;\r\n    padding: 10px 60px !important;\r\n    cursor: pointer;\r\n    box-shadow: 0 4px 20px rgba(255,215,0,0.4), 0 3px 0 var(--gold-dark);\r\n    transition: transform 0.12s ease, box-shadow 0.12s ease;\r\n    position: relative;\r\n    overflow: hidden; \r\n  }\r\n\r\n  .sw-btn::after {\r\n    content: '';\r\n    position: absolute;\r\n    top: 0; left: 0; right: 0;\r\n    height: 50%;\r\n    background: rgba(255,255,255,0.18);\r\n    border-radius: 50px 50px 0 0;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .sw-btn:hover:not(:disabled) {\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 8px 28px rgba(255,215,0,0.55), 0 3px 0 var(--gold-dark);\r\n  }\r\n\r\n  .sw-btn:active:not(:disabled) {\r\n    transform: translateY(1px);\r\n    box-shadow: 0 2px 10px rgba(255,215,0,0.3), 0 1px 0 var(--gold-dark);\r\n  }\r\n\r\n  .sw-btn:disabled {\r\n    opacity: 0.5;\r\n    cursor: not-allowed;\r\n  }\r\n\r\n  .sw-result {\r\n    display: none;\r\n    margin-top: 28px;\r\n    width: 100%;\r\n    max-width: 500px;\r\n    background: linear-gradient(135deg, rgba(255,215,0,0.12) 0%, rgba(27,153,139,0.08) 100%);\r\n    border: 1.5px solid rgba(255,215,0,0.3);\r\n    border-radius: 16px;\r\n    padding: 24px 22px;\r\n    animation: sw-fadeUp 0.5s cubic-bezier(0.22,1,0.36,1) both;\r\n  }\r\n\r\n  @keyframes sw-fadeUp {\r\n    from { opacity: 0; transform: translateY(20px); }\r\n    to   { opacity: 1; transform: translateY(0); }\r\n  }\r\n\r\n  .sw-result-label {\r\n    font-family: 'Bebas Neue', sans-serif;\r\n    letter-spacing: 3px;\r\n    font-size: 12px;\r\n    color: var(--gold);\r\n    text-transform: uppercase;\r\n    margin-bottom: 6px;\r\n    opacity: 0.8;\r\n  }\r\n\r\n  .sw-result-prize {\r\n    font-family: 'Bebas Neue', sans-serif;\r\n    font-size: clamp(22px, 5vw, 32px);\r\n    color: #fff;\r\n    letter-spacing: 1px;\r\n    margin-bottom: 16px;\r\n    text-shadow: 0 2px 12px rgba(255,215,0,0.3);\r\n  }\r\n\r\n  .sw-divider {\r\n    height: 1px;\r\n    background: linear-gradient(90deg, transparent, rgba(255,215,0,0.3), transparent);\r\n    margin-bottom: 16px;\r\n  }\r\n\r\n  .sw-instructions-title {\r\n    font-family: 'Bebas Neue', sans-serif;\r\n    letter-spacing: 2px;\r\n    font-size: 14px;\r\n    color: var(--teal);\r\n    text-transform: uppercase;\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .sw-instructions-text {\r\n    font-size: 14px;\r\n    color: rgba(255,255,255,0.82);\r\n    line-height: 1.65;\r\n    font-weight: 600;\r\n  }\r\n\r\n  .sw-screenshot-badge {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 7px;\r\n    background: rgba(255,255,255,0.08);\r\n    border: 1px solid rgba(255,255,255,0.15);\r\n    border-radius: 8px;\r\n    padding: 8px 14px;\r\n    margin-top: 14px;\r\n    font-size: 13px;\r\n    color: rgba(255,255,255,0.75);\r\n    font-weight: 700;\r\n  }\r\n\r\n  .sw-screenshot-badge svg { flex-shrink: 0; opacity: 0.9; }\r\n\r\n  .sw-confetti-wrap {\r\n    position: absolute;\r\n    inset: 0;\r\n    pointer-events: none;\r\n    overflow: hidden;\r\n    border-radius: 20px;\r\n  }\r\n\r\n  .sw-confetti-piece {\r\n    position: absolute;\r\n    top: -10px;\r\n    opacity: 0;\r\n    animation: sw-confetti-fall 1.8s ease-in forwards;\r\n  }\r\n\r\n  @keyframes sw-confetti-fall {\r\n    0%   { opacity: 1; transform: translateY(0) rotate(0deg); }\r\n    100% { opacity: 0; transform: translateY(500px) rotate(720deg); }\r\n  }\r\n\r\n  .sw-wheel-container.spinning #sw-canvas {\r\n    animation: sw-glow-pulse 0.6s ease-in-out infinite alternate;\r\n  }\r\n\r\n  @keyframes sw-glow-pulse {\r\n    from { filter: drop-shadow(0 0 8px rgba(255,215,0,0.3)); }\r\n    to   { filter: drop-shadow(0 0 24px rgba(255,215,0,0.7)); }\r\n  }\r\n<\/style>\r\n\r\n<div id=\"cpe-spinwheel-wrap\">\r\n  <div class=\"sw-confetti-wrap\" id=\"sw-confetti\"><\/div>\r\n\r\n  <div class=\"sw-header\">\r\n    <div class=\"sw-eyebrow\">CPE Expo 2026<\/div>\r\n    <div class=\"sw-title\">SPIN TO <span>WIN<\/span><\/div>\r\n    <div class=\"sw-subtitle\">Give it a spin \u2014 your prize awaits!<\/div>\r\n  <\/div>\r\n  <div id=\"sw-form-gate\">\r\n  <div class=\"gn-generated\" id=\"f_1_da32c317ae953b2f4b546592f13cbc6c90eab54b\"><?xml encoding=\"utf-8\" ?><div id=\"gna82a778b5fd72482fa00cc23ddd16768\" class=\"genooForm genooShortcode themeResetDefault \"><div class=\"genooGuts\"><div id=\"genooMsg\"><\/div>\n\n<script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/intl-tel-input\/17.0.19\/js\/intlTelInput.min.js\"><\/script> \n<script>\n\/* <![CDATA[ *\/\nfunction isInteger(s) {\nvar i;\nfor (i = 0; i < s.length; i++) {\nvar c = s.charAt(i);\nif (((c < \"0\") || (c > \"9\"))) return false;\n}\nreturn true;\n}\nfunction stripCharsInBag(s, bag){\nvar i;\nvar returnString = \"\";\nfor (i = 0; i < s.length; i++){\nvar c = s.charAt(i);\nif (bag.indexOf(c) == -1) returnString += c;\n}\nreturn returnString;\n}\nfunction checkAreaCode(val){\nvar res=false;\nfor (var i=0; i<AreaCode.length;i++){\nif(AreaCode[i]==val) res=true;\n}\nreturn res;\n}\n\n\nfunction validateForm_1_da32c317ae953b2f4b546592f13cbc6c90eab54b(formElem) {\nif (window.ga){ga('send',{hitType: 'event', eventCategory: 'Form', eventAction: 'complete', transport: 'beacon'});}\nvar oldErrorMsgs = formElem.querySelectorAll('.gn-error-msg');\ndocument.getElementById('referrer_page_url').value = window.location.href;\nvar referrerElement = document.createElement(\"input\");\nreferrerElement.setAttribute(\"type\", \"hidden\");\nreferrerElement.setAttribute(\"value\", window.location.href);\nreferrerElement.setAttribute(\"name\", \"referrer_page_url_2\");\nreferrerElement.setAttribute(\"id\", \"referrer_page_url_2\");\nformElem.appendChild(referrerElement);\n\nfor (var j=0;j<oldErrorMsgs.length;j++){\noldErrorMsgs[j].parentNode.removeChild(oldErrorMsgs[j]);\n}\nvar reqParents = formElem.querySelectorAll('[data-required=\"true\"]');\nfor (var i=0; i<reqParents.length; i++) {\nvar reqInput = reqParents[i].querySelector(\n'input:not([type=\"radio\"]):not([type=\"checkbox\"]),select,textarea');\nvar containsCheckedCheckbox =\n!reqInput && reqParents[i].querySelector('input[type=\"radio\"]:checked,input[type=\"checkbox\"]:checked');\nvar labelInput = reqParents[i].querySelector('label');\nif ( (!reqInput && !containsCheckedCheckbox) || (reqInput && reqInput.value === '') ) {\nvar errorMsg = document.createElement('span');\nerrorMsg.className = 'gn-error-msg';\nerrorMsg.innerHTML = labelInput.innerHTML;\nif ( formElem.getAttribute('data-req-err') ){\nerrorMsg.innerHTML += formElem.getAttribute('data-req-err');\n} else {\nerrorMsg.innerHTML +' is a required field';\n}\nerrorMsg.style.color = '#FF0000';\nif ( reqInput && reqInput.nextSibling ) {\nreqParents[i].insertBefore(errorMsg, reqInput.nextSibling);\n} else {\nreqParents[i].appendChild( errorMsg );\n}\nreturn false;\n}\n\/* Validate Phone Numbers *\/\nif (\nformElem.className.match( 'validate-phone-usa' ) &&\nreqInput &&\n[\"phone\",\"fax\",\"mobile_phone\",\"work_phone\"].indexOf(reqInput.getAttribute('name')) > -1 &&\nreqInput.value.match(\/[<>()^\\\\]\/g)\n) {\nvar errorMsg = document.createElement('span');\nerrorMsg.style = \"color: red;\";\nerrorMsg.className = \"gn-error-msg\";\nerrorMsg.innerHTML = \"Phone Number contains incorrect characters\";\nif ( reqInput.nextSibling ) {\nreqInput.parentNode.parentNode.insertBefore( errorMsg,  reqInput.nextSibling);\n} else {\nreqInput.parentNode.parentNode.appendChild( errorMsg );\n}\nreturn false;\n}\n}\nvar confirmElem = formElem.querySelector('[name=\"email_confirm\"]');\nif ( confirmElem && confirmElem.value !== formElem.querySelector('[name=\"email\"]').value ){\nvar errorMsg = document.createElement('span');\nerrorMsg.className = 'gn-error-msg';\nif ( formElem.getAttribute('data-match-err') ) {\nerrorMsg.innerHTML = formElem.getAttribute('data-match-err');\n} else {\nerrorMsg.innerHTML = \"Email and Confirmation Email do not match. Please correct\";\n}\nerrorMsg.style.color = '#FF0000';\nif ( reqInput && confirmElem.nextSibling ) {\nconfirmElem.insertBefore(errorMsg, reqInput.nextSibling);\n} else {\nconfirmElem.appendChild( errorMsg );\n}\nreturn false;\n};\nif (window.ga){ga('send',{hitType: 'event', eventCategory: 'Form', eventAction: 'complete'});}\nreturn true;\n}\nsetInterval(function(){\nvar uninitiatedForms = document.querySelectorAll(\"form[data-action]\");\nfor (var i=0; i<uninitiatedForms.length; i++) {\nuninitiatedForms[i].setAttribute(\n\"action\",\nuninitiatedForms[i].getAttribute(\"data-action\")\n);\nuninitiatedForms[i].removeAttribute(\"data-action\");\n}\n}, 1000);\n\nfunction updateDateField() {\nvar formElement = document.getElementById(\"form-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b\");\n\nvar dateFields = [].slice.call(formElement.querySelectorAll(\n'[data-template=\"template--date-1\"],[data-template=\"template--datetime-1\"]'\n));\n\nvar dateFields = [].slice.call(formElement.querySelectorAll('.gn-field-date'));\ndateFields.forEach(function(x){\nvar isDatetimeField = x.querySelectorAll('[name]').length > 4;\nvar fieldName = x.querySelector(\"input\").getAttribute(\"name\");\n\nx.querySelector(\"[name=\\\"\"+fieldName+\"_month\\\"]\").value\n\nlet fieldValue = x.querySelector(\"[name=\\\"\"+fieldName+\"_month\\\"]\").value + \"\/\"\n+ x.querySelector(\"[name=\\\"\"+fieldName+\"_day\\\"]\").value + \"\/\"\n+ x.querySelector(\"[name=\\\"\"+fieldName+\"_year\\\"]\").value;\nif (isDatetimeField) {\nfieldValue += \" \"\n+  x.querySelector(\"[name=\\\"\"+fieldName+\"_hour\\\"]\").value + \":\"\n+  x.querySelector(\"[name=\\\"\"+fieldName+\"_minute\\\"]\").value;\n}\nx.querySelector(\"input\").setAttribute(\"value\", fieldValue);\n})\n}\nfunction onSubmit__1_da32c317ae953b2f4b546592f13cbc6c90eab54b(token){\nvar formElement = document.getElementById(\"form-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b\");\n\nupdateDateField();\n\nvar formIsValid = validateForm_1_da32c317ae953b2f4b546592f13cbc6c90eab54b( formElement );\nif( formIsValid ) {\n\tformElement.submit();\n}\n}\n\/* ]]> *\/\n<\/script>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/intl-tel-input\/17.0.19\/css\/intlTelInput.css\">\n<style scoped>\n#on-step-2-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b:not(:checked) ~ .gn-tier-0 {display: none;}\n#on-step-2-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b:checked ~ .gn-step-1-overlay {display: none;}\n[name=\"c00eudatasubject\"]:not(:checked) ~ .gdpr-mssg {display: none !important;}\n.gdpr-mssg {\nmargin: 8px;\npadding: 12px;\nborder: dashed 1px;\nborder-radius: 6px;\n}\n.gdpr-mssg textarea {\nbackground: rgba(0, 0, 0, 0);\nborder: none;\noutline: 0;\ncursor: text;\nresize: none;\n}\n[data-display=\"false\"] { display: none !important;}\n\t.iti__country-list {\n\t\tlist-style: none !important;\n\t}\n\t.iti__country-list{\n\t\tbackground-color:white !important;\n\t}\n\t\n<\/style>\n\n\n<form class=\"gn-form bootstrap-plain validate-phone-usa ext-form  \" action=\"https:\/\/api.genoo.com\/servlet\/PostForm\" data-action=\"https:\/\/api.genoo.com\/servlet\/PostForm\" method=\"post\" data-req-err=\" is a required field\" data-match-err=\"Email and Confirmation Email do not match. Please correct\" onsubmit=\"return validateForm_1_da32c317ae953b2f4b546592f13cbc6c90eab54b(this);\" style=\"position: relative !important;\" id=\"form-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b\"><input type=\"hidden\" name=\"form_version\" value=\"=nMjE2LjczLjIxNi43MQ==0b\">\n<noscript><span style=\"background: #ff0000; color: #ffffff; display: block; text-align: center; padding: 12px; margin-bottom: 12px; font-family: arial;\">You need Javascript enabled to submit this form.<\/span><\/noscript>\n<input type=\"hidden\" name=\"form_key\" value=\"000fpk25886099:mgppgucy\">\n<input type=\"hidden\" name=\"prefill\" value=\"false\">\n\t<input type=\"hidden\" name=\"prefill_utmparams\" value=\"false\">\n<input type=\"hidden\" id=\"referrer_page_url\" name=\"referrer_page_url\">\n\t<input type=\"hidden\" id=\"country_code\" name=\"country_code\">\n\t<input type=\"hidden\" id=\"work_phone_country_code\" name=\"work_phone_country_code\">\n\t<input type=\"hidden\" id=\"mobile_phone_country_code\" name=\"mobile_phone_country_code\">\n\n\n<input type=\"hidden\" name=\"returl\" value=\"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/\"><div class=\"gn-tier-0\"><div class=\"form-group\" style=\"width: 100%; display: inline-block;\" data-required=\"true\"><label for=\"text-field-739849983732161\" class=\"control-label  \">First Name*<\/label><div class=\"gn-field-container\" style=\"margin: 0 2px;\"><input id=\"text-field-739849983732161\" class=\"form-control ext-form-input  \" placeholder=\"\" type=\"text\" name=\"first_name\"><\/div><\/div><div class=\"form-group\" style=\"width: 100%; display: inline-block;\" data-required=\"true\"><label for=\"text-field-6117766049303754\" class=\"control-label  \">Last Name*<\/label><div class=\"gn-field-container\" style=\"margin: 0 2px;\"><input id=\"text-field-6117766049303754\" class=\"form-control ext-form-input  \" placeholder=\"\" type=\"text\" name=\"last_name\"><\/div><\/div><div class=\"form-group\" style=\"width: 100%; display: inline-block;\" data-required=\"true\"><label for=\"text-field-09737768898641275\" class=\"control-label  \">Email *<\/label><div class=\"gn-field-container\" style=\"margin: 0 2px;\"><input id=\"text-field-09737768898641275\" class=\"form-control ext-form-input  \" placeholder=\"\" type=\"email\" name=\"email\"><\/div><\/div><div style=\"width: 100%;\"><style> div:not(.gn-component--selected) > .gn-btn:hover {} <\/style><button class=\"g-recaptcha gn-btn  \" data-sitekey=\"6LcF_SgUAAAAAPwMRyVefTy_IdkLnM7SCVjSEo0B\" data-callback=\"onSubmit__1_da32c317ae953b2f4b546592f13cbc6c90eab54b\" style=\"width: 100%; background-color: rgb(255, 50, 50); color: rgb(255, 255, 255);\" onclick=\"this.setAttribute('onclick', this.getAttribute('callback'))\" data-background-color=\"null\" data-color=\"null\">Submit<\/button><\/div><div style=\"clear: both;\"><\/div><\/div>\n<script>\nconsole.log(document.getElementById(\"form-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b\").querySelectorAll(\"[data-set-val]\"));\n[].slice.call(document.getElementById(\"form-_1_da32c317ae953b2f4b546592f13cbc6c90eab54b\").querySelectorAll(\"[data-set-val]\")).forEach(function(elem) {elem.value = eval(elem.getAttribute(\"data-set-val\"))});\nfunction gn_each( query, fn ){\nvar c = document.querySelectorAll(query);\nif (c.length){for(var i=0;i<c.length;i++){fn(c[i]);}}\n}\nvar b = document.querySelectorAll(\"[name=\\\"c00gdprconsent\\\"]\");\nfor ( var i=0; i<b.length; i++ ) {\nvar node = b[i];\nnode.addEventListener(\n\"change\",\nfunction(){\nvar consentMessage = this.parentNode.querySelector(\"[name=\\\"c00gdprconsentmsg\\\"]\");\nif ( this.checked ) {\nconsentMessage.removeAttribute(\"disabled\");\n} else {\nconsentMessage.setAttribute(\"disabled\", \"true\");\n}\n}\n)\n}\n\n\t  var phoneFieldData = document.getElementsByName(\"phone\");\n\t  console.log(\"phoneFieldData=\" + phoneFieldData)\n\t  if (phoneFieldData) {\n\t\tphoneFieldData.forEach(function (phoneItem) {\n\t\tif (phoneItem && phoneItem.id) {\n\t  \tvar phoneFieldId = phoneItem.id;\n\t  \t\n\t  \tif (phoneFieldId) {\n\t\t\tdocument.getElementById(phoneFieldId).type=\"tel\";\n\t\tvar phoneInputField = document.querySelector(\"#\"+phoneFieldId);\n\t\tvar phoneInput = window.intlTelInput(phoneInputField, {\n\t\/\/ https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2\n\tpreferredCountries: [\"us\", \"ca\"],\n\tutilsScript:\n\t\t\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/intl-tel-input\/17.0.19\/js\/utils.js\",\n\t\t});\n\t  \t\t\n\t\t\tvar element = document.getElementById(phoneFieldId);\n\t\t\telement.addEventListener(\"click\", function() {\n\t\t\t\tif(phoneInput && phoneInput.s) {\n\t\t\t\t\tconsole.log(\"CountryCode\"+phoneInput.s.dialCode);\n\t\t\t\t\tdocument.getElementById(\"country_code\").value = phoneInput.s.dialCode;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"CountryCode is blank\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t}\n\t\t});\n\t  }\n\n\tvar workphoneFieldData = document.getElementsByName(\"work_phone\");\n\t  console.log(\"workphoneFieldData=\" + workphoneFieldData)\n\t  if (workphoneFieldData) {\n\n\t\tworkphoneFieldData.forEach(function (phoneItem) {\n\t\tif (phoneItem && phoneItem.id) {\n\t  \tvar workphoneFieldId = phoneItem.id;\n\t  \tif (workphoneFieldId) {\n\t\t\tdocument.getElementById(workphoneFieldId).type=\"tel\";\n\t\tvar workphoneInputField = document.querySelector(\"#\"+workphoneFieldId);\n\t\tvar workphoneInput = window.intlTelInput(workphoneInputField, {\n\t\/\/ https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2\n\tpreferredCountries: [\"us\", \"ca\"],\n\tutilsScript:\n\t\t\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/intl-tel-input\/17.0.19\/js\/utils.js\",\n\t\t});\n\t  \t\t\n\t\t\tvar element1 = document.getElementById(workphoneFieldId);\n\t\t\telement1.addEventListener(\"click\", function() {\n\t\t\t\tif(workphoneInput && workphoneInput.s) {\n\t\t\t\t\tconsole.log(\"CountryCode\"+workphoneInput.s.dialCode);\n\t\t\t\t\tdocument.getElementById(\"work_phone_country_code\").value = workphoneInput.s.dialCode;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"workphone CountryCode is blank\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t}\n\t\t});\n\t  }\n\n\tvar mobilephoneFieldData = document.getElementsByName(\"mobile_phone\");\n\t  console.log(\"mobilephoneFieldData=\" + mobilephoneFieldData)\n\t\n\t  if (mobilephoneFieldData) {\n\n\t\tmobilephoneFieldData.forEach(function (phoneItem) {\n\t\t  if (phoneItem && phoneItem.id) {\n\t  \t\tvar mobilephoneFieldId = phoneItem.id;\n\t  \t\tif (mobilephoneFieldId) {\n\t\t\t\tdocument.getElementById(mobilephoneFieldId).type=\"tel\";\n\t\t\tvar mobilephoneInputField = document.querySelector(\"#\"+mobilephoneFieldId);\n\t\t\tvar mobilephoneInput = window.intlTelInput(mobilephoneInputField, {\n\t\t\/\/ https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2\n\t\tpreferredCountries: [\"us\", \"ca\"],\n\t\tutilsScript:\n\t\t\t\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/intl-tel-input\/17.0.19\/js\/utils.js\",\n\t\t\t});\n\t  \t\t\n\t\t\t\tvar element2 = document.getElementById(mobilephoneFieldId);\n\t\t\t\telement2.addEventListener(\"click\", function() {\n\t\t\t\tif(mobilephoneInput && mobilephoneInput.s) {\n\t\t\t\t\tconsole.log(\"CountryCode\"+mobilephoneInput.s.dialCode);\n\t\t\t\t\tdocument.getElementById(\"mobile_phone_country_code\").value = mobilephoneInput.s.dialCode;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"mobilephone CountryCode is blank\");\n\t\t\t\t}\n\t\t\t});\n\t\t  }\n\t\t }\n\t\t});\n\t  }\n\n\n<\/script>\n<br>\n<\/form>\n<\/div><\/div><\/div><script type=\"text\/javascript\">if(typeof GenooCSS != \"undefined\"){ GenooCSS.add(\"#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form input[type=\\\"radio\\\"] ~ span{padding-left: 4px;}\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form, #gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form *{box-sizing: border-box;font-family: Arial, helvetica, sans-serif;font-size: 15px;line-height: 1.42857143;color: #2c3e50;}\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form .form-group{margin-bottom: 14px;display: inline-block;width: 100%;}\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form label{display: inline-block;max-width: 100%;margin-bottom: 5px;font-weight: 700;}\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form input.form-control, #gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form select.form-control, #gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form textarea.form-control{display: block;width: 100%;height: 34px;font-size: 14px;line-height: 1.42857143;color: #555;background-color: #fff;background-image: none;border: 1px solid #ccc;border-radius: 4px;-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);box-shadow: inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;}\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form textarea.form-control{ height: auto; }\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form .gn-field-container{margin: 0 2px;}\\n#gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form input.form-control:focus, #gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain.gn-form select.form-control:focus{border-color: #66afe9;outline: 0;-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);}\\n#gna82a778b5fd72482fa00cc23ddd16768 \\\/* The Button *\\\/.bootstrap-plain .gn-btn, #gna82a778b5fd72482fa00cc23ddd16768 .bootstrap-plain .gn-form input[type=\\\"submit\\\"]{display: inline-block;padding: 6px 12px;margin-bottom: 0;font-size: 14px;font-weight: 400;line-height: 1.42857143;text-align: center;white-space: nowrap;vertical-align: middle;-ms-touch-action: manipulation;touch-action: manipulation;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;background-image: none;border: 1px solid transparent;border-radius: 4px;background: rgb(255, 50, 50);color: rgb(255, 255, 255);}\\n#gna82a778b5fd72482fa00cc23ddd16768 .gn-form input[type=\\\"submit\\\"]{background-color: rgb(255, 50, 50);color: rgb(255, 255, 255);width: 100%;}\\n\"); }<\/script>\r\n<\/div>\r\n\r\n  <div class=\"sw-wheel-container\" id=\"sw-wheel-container\">\r\n    <div class=\"sw-pointer\"><\/div>\r\n    <canvas id=\"sw-canvas\" width=\"320\" height=\"320\"><\/canvas>\r\n    <div class=\"sw-hub\"><\/div>\r\n  <\/div>\r\n\r\n  <button class=\"sw-btn\" id=\"sw-spin-btn\" onclick=\"swSpin()\" disabled>\r\n  SPIN THE WHEEL\r\n<\/button>\r\n\r\n  <div class=\"sw-result\" id=\"sw-result\">\r\n    <div class=\"sw-result-label\">\ud83c\udf89 You Won!<\/div>\r\n    <div class=\"sw-result-prize\" id=\"sw-prize-name\"><\/div>\r\n    <div class=\"sw-divider\"><\/div>\r\n    <div class=\"sw-instructions-title\">\ud83d\udcf8 How to Claim Your Prize<\/div>\r\n    <div class=\"sw-instructions-text\" id=\"sw-claim-text\"><\/div>\r\n    <div class=\"sw-screenshot-badge\">\r\n      <svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"white\" stroke-width=\"2\">\r\n        <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/>\r\n        <circle cx=\"12\" cy=\"12\" r=\"4\"\/>\r\n        <line x1=\"3\" y1=\"9\" x2=\"6\" y2=\"9\"\/>\r\n      <\/svg>\r\n      Screenshot or photo this screen before closing! (10% Discount Cannot be Paired with Any Other Discounts)\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n  \/\/ \u2500\u2500\u2500 CONFIGURATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  var SW_CONFIG = {\r\n    claimInstructions: \"Take a screenshot or photo of this screen showing your prize, then bring it to the CPE Expo Information Booth. Show the booth attendant your photo to redeem your prize. One spin per visitor. Prizes must be claimed at the event.\",\r\n    prizes: [\r\n      { label: \"+6% Discount on Any CPE Owned Course\",    color: \"#E63946\", text: \"#fff\" },\r\n      { label: \"$25 Gift Card\",      color: \"#FFD700\", text: \"#0D1B2A\" },\r\n      { label: \"Expo Swag Bag\",      color: \"#1B998B\", text: \"#fff\" },\r\n      { label: \"10% Off Any CPE Course\", color: \"#7B2D8B\", text: \"#fff\" },\r\n      { label: \"Free T Shirt\",     color: \"#FF6B35\", text: \"#fff\" },\r\n      { label: \"$50 Gift Card\",       color: \"#2DC653\", text: \"#fff\" }\r\n    ]\r\n  };\r\n  \/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\r\n  var canvas     = document.getElementById('sw-canvas');\r\n  var ctx        = canvas.getContext('2d');\r\n  var prizes     = SW_CONFIG.prizes;\r\n  var N          = prizes.length;\r\n  var sliceAngle = (2 * Math.PI) \/ N;\r\n  var currentAngle = 0;\r\n  var isSpinning   = false;\r\n  var rafId        = null;\r\n\r\n  \/\/ \u2500\u2500 Destination-first randomisation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  \/\/ Pick a winner uniformly at random FIRST, then compute exactly\r\n  \/\/ how far the wheel must rotate to land that slice under the pointer.\r\n  \/\/ This guarantees every slice has an equal 1\/N chance every spin.\r\n  function pickDestination() {\r\n    var winIdx = Math.floor(Math.random() * N);\r\n\r\n    \/\/ Angle of the centre of the winning slice in wheel-space\r\n    var sliceCentre = winIdx * sliceAngle + sliceAngle \/ 2;\r\n\r\n    \/\/ We need: (currentAngle + travel) + sliceCentre \u2261 -\u03c0\/2  (mod 2\u03c0)\r\n    \/\/ so the slice centre sits at the top pointer position.\r\n    var needed = -Math.PI \/ 2 - sliceCentre - currentAngle;\r\n    \/\/ Normalise so we always spin forward (positive direction)\r\n    needed = ((needed % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI);\r\n    \/\/ Ensure at least one full rotation even if already close\r\n    if (needed < Math.PI) needed += 2 * Math.PI;\r\n\r\n    \/\/ Add 5\u20139 extra full rotations for visual drama\r\n    var extraSpins = (5 + Math.floor(Math.random() * 5)) * 2 * Math.PI;\r\n\r\n    \/\/ Small random jitter within \u00b140% of half-slice so pointer\r\n    \/\/ doesn't always land dead-centre (looks more mechanical\/real)\r\n    var jitter = (Math.random() - 0.5) * sliceAngle * 0.8;\r\n\r\n    return {\r\n      idx:    winIdx,\r\n      travel: needed + extraSpins + jitter\r\n    };\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Draw \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function drawWheel(angle) {\r\n    var cx = canvas.width  \/ 2;\r\n    var cy = canvas.height \/ 2;\r\n    var r  = cx - 4;\r\n\r\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n    ctx.beginPath();\r\n    ctx.arc(cx, cy, r + 3, 0, Math.PI * 2);\r\n    ctx.fillStyle = '#C8A800';\r\n    ctx.fill();\r\n\r\n    ctx.beginPath();\r\n    ctx.arc(cx, cy, r, 0, Math.PI * 2);\r\n    ctx.fillStyle = '#0D1B2A';\r\n    ctx.fill();\r\n\r\n    for (var i = 0; i < N; i++) {\r\n      var sa = angle + i * sliceAngle;\r\n      var ea = sa + sliceAngle;\r\n      var p  = prizes[i];\r\n\r\n      ctx.beginPath();\r\n      ctx.moveTo(cx, cy);\r\n      ctx.arc(cx, cy, r - 2, sa, ea);\r\n      ctx.closePath();\r\n      ctx.fillStyle   = p.color;\r\n      ctx.fill();\r\n      ctx.strokeStyle = 'rgba(0,0,0,0.35)';\r\n      ctx.lineWidth   = 1.5;\r\n      ctx.stroke();\r\n\r\n      ctx.save();\r\n      ctx.translate(cx, cy);\r\n      ctx.rotate(sa + sliceAngle \/ 2);\r\n      ctx.textAlign   = 'right';\r\n      ctx.fillStyle   = p.text;\r\n      ctx.font        = 'bold 13px Nunito, sans-serif';\r\n      ctx.shadowColor = 'rgba(0,0,0,0.5)';\r\n      ctx.shadowBlur  = 4;\r\n      var words  = p.label.split(' ');\r\n      var lineH  = 16;\r\n      var yStart = -(words.length * lineH) \/ 2 + lineH * 0.7;\r\n      for (var w = 0; w < words.length; w++) {\r\n        ctx.fillText(words[w], r - 14, yStart + w * lineH);\r\n      }\r\n      ctx.restore();\r\n    }\r\n\r\n    for (var d = 0; d < N; d++) {\r\n      var da = angle + d * sliceAngle;\r\n      ctx.beginPath();\r\n      ctx.arc(\r\n        cx + (r - 6) * Math.cos(da),\r\n        cy + (r - 6) * Math.sin(da),\r\n        4, 0, Math.PI * 2\r\n      );\r\n      ctx.fillStyle = 'rgba(255,255,255,0.6)';\r\n      ctx.fill();\r\n    }\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Spin \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nwindow.swSpin = function() {\r\n  if (isSpinning) return;\r\n\r\n  \/\/ Prevent multiple spins\r\n  if (localStorage.getItem('sw_has_spun') === 'true') {\r\n    alert('You already spun the wheel!');\r\n    return;\r\n  }\r\n\r\n  isSpinning = true;\r\n  \r\n    document.getElementById('sw-result').style.display = 'none';\r\n    document.getElementById('sw-spin-btn').disabled = true;\r\n    document.getElementById('sw-wheel-container').classList.add('spinning');\r\n\r\n    var dest       = pickDestination();\r\n    var startAngle = currentAngle;\r\n    var travel     = dest.travel;\r\n    \/\/ Duration varies 4.5\u20136.5 s so even the spin length feels unpredictable\r\n    var duration   = 4500 + Math.random() * 2000;\r\n    var startTime  = null;\r\n\r\n    \/\/ Ease-out cubic: fast start, smooth brake\r\n    function easeOutCubic(t) { return 1 - Math.pow(1 - t, 3); }\r\n\r\n    function animate(ts) {\r\n      if (!startTime) startTime = ts;\r\n      var progress = Math.min((ts - startTime) \/ duration, 1);\r\n      currentAngle = startAngle + travel * easeOutCubic(progress);\r\n      drawWheel(currentAngle);\r\n\r\n      if (progress < 1) {\r\n        rafId = requestAnimationFrame(animate);\r\n      } else {\r\n        isSpinning = false;\r\n        document.getElementById('sw-wheel-container').classList.remove('spinning');\r\n        localStorage.setItem('sw_has_spun', 'true');\r\nshowResult(prizes[dest.idx]);\r\n      }\r\n    }\r\n\r\n    rafId = requestAnimationFrame(animate);\r\n  };\r\n\r\n  \/\/ \u2500\u2500 Result \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function showResult(prize) {\r\n    document.getElementById('sw-prize-name').textContent = prize.label;\r\n    document.getElementById('sw-claim-text').textContent = SW_CONFIG.claimInstructions;\r\n    var el = document.getElementById('sw-result');\r\n    el.style.display   = 'block';\r\n    el.style.animation = 'none';\r\n    el.offsetHeight;\r\n    el.style.animation = '';\r\n    spawnConfetti();\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Confetti \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function spawnConfetti() {\r\n    var wrap   = document.getElementById('sw-confetti');\r\n    wrap.innerHTML = '';\r\n    var colors = ['#FFD700','#E63946','#1B998B','#FF6B35','#7B2D8B','#2DC653','#fff'];\r\n    for (var i = 0; i < 60; i++) {\r\n      var el = document.createElement('div');\r\n      el.className          = 'sw-confetti-piece';\r\n      el.style.left         = (5 + Math.random() * 90) + '%';\r\n      el.style.background   = colors[Math.floor(Math.random() * colors.length)];\r\n      el.style.borderRadius = Math.random() > 0.5 ? '50%' : '2px';\r\n      el.style.width        = (6 + Math.random() * 8) + 'px';\r\n      el.style.height       = (6 + Math.random() * 8) + 'px';\r\n      el.style.animationDelay    = (Math.random() * 0.6) + 's';\r\n      el.style.animationDuration = (1.4 + Math.random() * 0.8) + 's';\r\n      wrap.appendChild(el);\r\n    }\r\n    setTimeout(function() { wrap.innerHTML = ''; }, 2800);\r\n  }\r\n\r\n  drawWheel(currentAngle);\r\n})();\r\n<\/script>\r\n<script>\r\n  \/\/ Unlock spin after form completion\r\n  function unlockSpin() {\r\n    localStorage.setItem('sw_form_completed', 'true');\r\n    document.getElementById('sw-spin-btn').disabled = false;\r\n    document.getElementById('sw-form-gate').style.display = 'none';\r\n  }\r\n\r\n  \/\/ Example: Hook into common form plugins\r\n  document.addEventListener('DOMContentLoaded', function() {\r\n\r\n    \/\/ If already completed before\r\n    if (localStorage.getItem('sw_form_completed') === 'true') {\r\n      unlockSpin();\r\n    }\r\n    if (localStorage.getItem('sw_has_spun') === 'true') {\r\n  document.getElementById('sw-spin-btn').disabled = true;\r\n}\r\n\r\n    \/\/ ---- OPTION A: Gravity Forms ----\r\n    document.addEventListener('gform_confirmation_loaded', unlockSpin);\r\n\r\n    \/\/ ---- OPTION B: WPForms ----\r\n    document.addEventListener('wpformsAjaxSubmitSuccess', unlockSpin);\r\n\r\n    \/\/ ---- OPTION C: Fallback (manual button trigger if needed) ----\r\n    \/\/ You can call unlockSpin() inside your form confirmation message\r\n  });\r\n<\/script>\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n\r\n  const spinBtn = document.getElementById('sw-spin-btn');\r\n  const formGate = document.getElementById('sw-form-gate');\r\n\r\n  \/\/ \u2705 STEP 1: If user already submitted form before redirect\r\n  if (localStorage.getItem('sw_form_completed') === 'true') {\r\n    spinBtn.disabled = false;\r\n    if (formGate) formGate.style.display = 'none';\r\n  }\r\n\r\n  \/\/ \u2705 STEP 2: Lock if already spun\r\n  if (localStorage.getItem('sw_has_spun') === 'true') {\r\n    spinBtn.disabled = true;\r\n  }\r\n\r\n  \/\/ \u2705 STEP 3: Listen for Genoo form submit BEFORE redirect\r\n  const genooForm = document.querySelector('#sw-form-gate form');\r\n\r\n  if (genooForm) {\r\n    genooForm.addEventListener('submit', function() {\r\n      localStorage.setItem('sw_form_completed', 'true');\r\n    });\r\n  }\r\n\r\n});\r\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>CPE Expo 2026 SPIN TO WIN Give it a spin \u2014 your prize awaits! SPIN THE WHEEL \ud83c\udf89 You Won! \ud83d\udcf8 How to Claim Your Prize Screenshot or photo this screen before closing! (10% Discount Cannot be Paired with Any Other Discounts)<\/p>\n","protected":false},"author":23,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-3837","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Test Page - Community &amp; Professional Education Expo<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Test Page - Community &amp; Professional Education Expo\" \/>\n<meta property=\"og:description\" content=\"CPE Expo 2026 SPIN TO WIN Give it a spin \u2014 your prize awaits! SPIN THE WHEEL \ud83c\udf89 You Won! \ud83d\udcf8 How to Claim Your Prize Screenshot or photo this screen before closing! (10% Discount Cannot be Paired with Any Other Discounts)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/\" \/>\n<meta property=\"og:site_name\" content=\"Community &amp; Professional Education Expo\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-22T17:00:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/\",\"url\":\"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/\",\"name\":\"Test Page - Community &amp; Professional Education Expo\",\"isPartOf\":{\"@id\":\"https:\/\/cpe.kennesaw.edu\/openhouse\/#website\"},\"datePublished\":\"2026-04-21T13:14:16+00:00\",\"dateModified\":\"2026-04-22T17:00:18+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cpe.kennesaw.edu\/openhouse\/#website\",\"url\":\"https:\/\/cpe.kennesaw.edu\/openhouse\/\",\"name\":\"Community &amp; Professional Education Expo\",\"description\":\"Community And Professional Education\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cpe.kennesaw.edu\/openhouse\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Test Page - Community &amp; Professional Education Expo","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/","og_locale":"en_US","og_type":"article","og_title":"Test Page - Community &amp; Professional Education Expo","og_description":"CPE Expo 2026 SPIN TO WIN Give it a spin \u2014 your prize awaits! SPIN THE WHEEL \ud83c\udf89 You Won! \ud83d\udcf8 How to Claim Your Prize Screenshot or photo this screen before closing! (10% Discount Cannot be Paired with Any Other Discounts)","og_url":"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/","og_site_name":"Community &amp; Professional Education Expo","article_modified_time":"2026-04-22T17:00:18+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/","url":"https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/","name":"Test Page - Community &amp; Professional Education Expo","isPartOf":{"@id":"https:\/\/cpe.kennesaw.edu\/openhouse\/#website"},"datePublished":"2026-04-21T13:14:16+00:00","dateModified":"2026-04-22T17:00:18+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cpe.kennesaw.edu\/openhouse\/test-page\/"]}]},{"@type":"WebSite","@id":"https:\/\/cpe.kennesaw.edu\/openhouse\/#website","url":"https:\/\/cpe.kennesaw.edu\/openhouse\/","name":"Community &amp; Professional Education Expo","description":"Community And Professional Education","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cpe.kennesaw.edu\/openhouse\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/pages\/3837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/comments?post=3837"}],"version-history":[{"count":6,"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/pages\/3837\/revisions"}],"predecessor-version":[{"id":3878,"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/pages\/3837\/revisions\/3878"}],"wp:attachment":[{"href":"https:\/\/cpe.kennesaw.edu\/openhouse\/wp-json\/wp\/v2\/media?parent=3837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}