var headContent = "<!-- FORM: HEAD SECTION -->\n    <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\" \/>\n    <meta name=\"referrer\" content=\"no-referrer-when-downgrade\">\n    <!-- THIS SCRIPT NEEDS TO BE LOADED FIRST BEFORE wforms.js -->\n    <script type=\"text\/javascript\" data-for=\"FA__DOMContentLoadedEventDispatch\" src=\"https:\/\/arthritisfoundation.tfaforms.net\/js\/FA__DOMContentLoadedEventDispatcher.js\" defer><\/script>\n            <script type=\"text\/javascript\">\n        document.addEventListener(\"FA__DOMContentLoaded\", function(){\n            const FORM_TIME_START = Math.floor((new Date).getTime()\/1000);\n            let formElement = document.getElementById(\"tfa_0\");\n            if (null === formElement) {\n                formElement = document.getElementById(\"0\");\n            }\n            let appendJsTimerElement = function(){\n                let formTimeDiff = Math.floor((new Date).getTime()\/1000) - FORM_TIME_START;\n                let cumulatedTimeElement = document.getElementById(\"tfa_dbCumulatedTime\");\n                if (null !== cumulatedTimeElement) {\n                    let cumulatedTime = parseInt(cumulatedTimeElement.value);\n                    if (null !== cumulatedTime && cumulatedTime > 0) {\n                        formTimeDiff += cumulatedTime;\n                    }\n                }\n                let jsTimeInput = document.createElement(\"input\");\n                jsTimeInput.setAttribute(\"type\", \"hidden\");\n                jsTimeInput.setAttribute(\"value\", formTimeDiff.toString());\n                jsTimeInput.setAttribute(\"name\", \"tfa_dbElapsedJsTime\");\n                jsTimeInput.setAttribute(\"id\", \"tfa_dbElapsedJsTime\");\n                jsTimeInput.setAttribute(\"autocomplete\", \"off\");\n                if (null !== formElement) {\n                    formElement.appendChild(jsTimeInput);\n                }\n            };\n            if (null !== formElement) {\n                if(formElement.addEventListener){\n                    formElement.addEventListener('submit', appendJsTimerElement, false);\n                } else if(formElement.attachEvent){\n                    formElement.attachEvent('onsubmit', appendJsTimerElement);\n                }\n            }\n        });\n    <\/script>\n\n    <link href=\"https:\/\/arthritisfoundation.tfaforms.net\/dist\/form-builder\/5.0.0\/wforms-layout.css?v=1753386843\" rel=\"stylesheet\" type=\"text\/css\" \/>\n\n    <link href=\"https:\/\/arthritisfoundation.tfaforms.net\/uploads\/themes\/theme-59.css\" rel=\"stylesheet\" type=\"text\/css\" \/>\n    <link href=\"https:\/\/arthritisfoundation.tfaforms.net\/dist\/form-builder\/5.0.0\/wforms-jsonly.css?v=1753386843\" rel=\"alternate stylesheet\" title=\"This stylesheet activated by javascript\" type=\"text\/css\" \/>\n    <script type=\"text\/javascript\" src=\"https:\/\/arthritisfoundation.tfaforms.net\/wForms\/3.11\/js\/wforms.js?v=1753386843\"><\/script>\n    <script type=\"text\/javascript\">\n        wFORMS.behaviors.prefill.skip = false;\n    <\/script>\n        <script type=\"text\/javascript\" src=\"https:\/\/arthritisfoundation.tfaforms.net\/wForms\/3.11\/js\/localization-en_US.js?v=1753386843\"><\/script>\n\n";
var bodyContent = "<!-- FORM: BODY SECTION -->\n<div class=\"wFormContainer\" >\n    <div class=\"wFormHeader\"><\/div>\n    <style type=\"text\/css\"><\/style><div class=\"\"><div class=\"wForm\" id=\"13-WRPR\" data-language=\"en_US\" dir=\"ltr\">\n<div class=\"codesection\" id=\"code-13\"><\/div>\n<form method=\"post\" action=\"https:\/\/arthritisfoundation.tfaforms.net\/api_v2\/workflow\/processor\" class=\"hintsBelow labelsAbove\" id=\"13\">\n<div id=\"tfa_2210\" class=\"section column group\"><table class=\"columnLayout\"><tbody><tr><td id=\"tfa_1867\">\n<div class=\"htmlSection\" id=\"tfa_2211\"><div class=\"htmlContent\" id=\"tfa_2211-HTML\"><span data-teams=\"true\">Sign up to get an email packed with the latest resources and information.<\/span><\/div><\/div>\n<div id=\"tfa_2187\" class=\"section inline group\">\n<div class=\"oneField field-container-D    \" id=\"tfa_1868-D\">\n<label id=\"tfa_1868-L\" class=\"label preField reqMark\" for=\"tfa_1868\">First Name&nbsp;<\/label><br><div class=\"inputWrapper\"><input aria-required=\"true\" type=\"text\" id=\"tfa_1868\" name=\"tfa_1868\" value=\"\" autocomplete=\"given-name\" title=\"First Name \" class=\"required\"><\/div>\n<\/div>\n<div class=\"oneField field-container-D    \" id=\"tfa_1869-D\">\n<label id=\"tfa_1869-L\" class=\"label preField reqMark\" for=\"tfa_1869\">Last Name<\/label><br><div class=\"inputWrapper\"><input aria-required=\"true\" type=\"text\" id=\"tfa_1869\" name=\"tfa_1869\" value=\"\" autocomplete=\"given-name\" title=\"Last Name\" class=\"required\"><\/div>\n<\/div>\n<\/div>\n<div class=\"oneField field-container-D    \" id=\"tfa_2189-D\">\n<label id=\"tfa_2189-L\" class=\"label preField reqMark\" for=\"tfa_2189\">Email<\/label><br><div class=\"inputWrapper\"><input aria-required=\"true\" type=\"text\" id=\"tfa_2189\" name=\"tfa_2189\" value=\"\" autocomplete=\"email\" title=\"Email\" class=\"validate-email required\"><\/div>\n<\/div>\n<div id=\"tfa_2204\" class=\"section inline group\">\n<div class=\"oneField field-container-D    \" id=\"tfa_2205-D\">\n<label id=\"tfa_2205-L\" class=\"label preField \" for=\"tfa_2205\">Mobile Phone<\/label><br><div class=\"inputWrapper\"><input type=\"text\" id=\"tfa_2205\" name=\"tfa_2205\" value=\"\" autocomplete=\"tel\" title=\"Mobile Phone\" class=\"\"><\/div>\n<\/div>\n<div class=\"oneField field-container-D    \" id=\"tfa_2186-D\">\n<label id=\"tfa_2186-L\" class=\"label preField reqMark\" for=\"tfa_2186\">Zip Code<\/label><br><div class=\"inputWrapper\"><input aria-required=\"true\" type=\"text\" id=\"tfa_2186\" name=\"tfa_2186\" value=\"\" autocomplete=\"postal-code\" title=\"Zip Code\" class=\"validate-integer required\"><\/div>\n<\/div>\n<\/div>\n<div class=\"oneField field-container-D   hintsBelow \" id=\"tfa_2206-D\" role=\"radiogroup\" aria-labelledby=\"tfa_2206-L\" data-tfa-labelledby=\"-L tfa_2206-L\">\n<label id=\"tfa_2206-L\" class=\"label preField \" data-tfa-check-label-for=\"tfa_2206\">Do you have arthritis?<\/label><br><div class=\"inputWrapper\">\n<span id=\"tfa_2206\" class=\"choices vertical \"><span class=\"oneChoice\"><input type=\"radio\" value=\"tfa_2207\" class=\"\" id=\"tfa_2207\" name=\"tfa_2206\" aria-labelledby=\"tfa_2207-L\" data-tfa-labelledby=\"tfa_2206-L tfa_2207-L\" data-tfa-parent-id=\"tfa_2206\" aria-describedby=\"tfa_2206-HH\"><label class=\"label postField\" id=\"tfa_2207-L\" for=\"tfa_2207\"><span class=\"input-radio-faux\"><\/span>Yes<\/label><\/span><span class=\"oneChoice\"><input type=\"radio\" value=\"tfa_2208\" class=\"\" id=\"tfa_2208\" name=\"tfa_2206\" aria-labelledby=\"tfa_2208-L\" data-tfa-labelledby=\"tfa_2206-L tfa_2208-L\" data-tfa-parent-id=\"tfa_2206\" aria-describedby=\"tfa_2206-HH\"><label class=\"label postField\" id=\"tfa_2208-L\" for=\"tfa_2208\"><span class=\"input-radio-faux\"><\/span>No<\/label><\/span><\/span><span class=\"field-hint-inactive\" id=\"tfa_2206-H\"><span id=\"tfa_2206-HH\" class=\"hint\">We use this information only to better understand how to communicate with you.<\/span><\/span>\n<\/div>\n<\/div>\n<\/td><\/tr><\/tbody><\/table><\/div>\n<div class=\"actions\" id=\"13-A\" data-contentid=\"submit_button\"><input type=\"submit\" data-label=\"Sign Me Up\" class=\"primaryAction\" id=\"submit_button\" value=\"Sign Me Up\"><\/div>\n<div style=\"clear:both\"><\/div>\n<input type=\"hidden\" value=\"13\" name=\"tfa_dbFormId\" id=\"tfa_dbFormId\"><input type=\"hidden\" value=\"\" name=\"tfa_dbResponseId\" id=\"tfa_dbResponseId\"><input type=\"hidden\" value=\"838e270c199b17b7d2ec7cb85403ed57\" name=\"tfa_dbControl\" id=\"tfa_dbControl\"><input type=\"hidden\" value=\"\" name=\"tfa_dbWorkflowSessionUuid\" id=\"tfa_dbWorkflowSessionUuid\"><input type=\"hidden\" value=\"54\" name=\"tfa_dbVersionId\" id=\"tfa_dbVersionId\"><input type=\"hidden\" value=\"\" name=\"tfa_switchedoff\" id=\"tfa_switchedoff\">\n<\/form>\n<\/div><\/div><div class=\"wFormFooter\"><p class=\"supportInfo\"><br><\/p><\/div>\n  <p class=\"supportInfo\" >\n      <\/p>\n <\/div>\n\n<script\n    id=\"analytics-collector-script\"\n    type=\"text\/javascript\"\n    src=\"https:\/\/arthritisfoundation.tfaforms.net\/dist\/analytics\/data-collector.b669b669e4e65b402126.js\"\n    data-customer-id=\"98581\"\n    data-endpoint=\"https:\/\/analytics.formassembly.com\/v1\/traces\"\n><\/script>\n\n<script src=\"https:\/\/arthritisfoundation.tfaforms.net\/api_v2\/sst\/quick-publish\"><\/script>";
var resumeUrl = null;
var baseUrl = null;

/**
 * Main entry point, called when the DOM is loaded.
 */
function loadFormAssemblyFormHeadAndBodyContents() {
    var targetElement = getTargetElement();
    var formBodyWrapper = createFormBodyWrapper();

    injectHeadContent();
    injectBodyContent(formBodyWrapper, targetElement);
    addResumeLink();

    document.addEventListener('FA__DOMContentLoaded', function () {
        executeBodyScripts(formBodyWrapper);
        
        // Set up FA$ for autosuggest behavior (jQuery in noConflict mode)
        if (typeof $ !== 'undefined' && $.noConflict) {
            window.FA$ = $.noConflict(true);
        }
        
        // Apply prefill behavior to enable URL parameter prefilling
        var forms = document.querySelectorAll('form');
        forms.forEach(function(form) {
            if (wFORMS && wFORMS.behaviors && wFORMS.behaviors.prefill) {
                wFORMS.behaviors.prefill.skip = false;
                wFORMS.behaviors.prefill.applyTo(form);
            }
        });
    });
}
window.addEventListener('DOMContentLoaded', loadFormAssemblyFormHeadAndBodyContents);

/**
 * Finds the target DOM element where the form should be injected.
 * @returns {HTMLElement|null} The target element or null if not found.
 */
function getTargetElement() {
    var quickPublishScript = document.querySelector('script[data-qp-target-id]');
    if (quickPublishScript) {
        var elementID = quickPublishScript.getAttribute('data-qp-target-id');
        return document.getElementById(elementID);
    }
    return null;
}

/**
 * Creates the main wrapper div for the form's body content.
 * @returns {HTMLDivElement}
 */
function createFormBodyWrapper() {
    var bodyWrapperDiv = document.createElement('div');
    bodyWrapperDiv.id = "FA__QP__BODYWRAPPERDIV";
    return bodyWrapperDiv;
}

/**
 * Injects the form's header content (styles, scripts) into the main document.
 */
function injectHeadContent() {
    var head = document.createElement('head');
    head.innerHTML = headContent;

    var headElements = Array.from(head.children);
    var scriptElements = headElements.filter(function(el) { return el.nodeName === 'SCRIPT'; });
    var otherElements = headElements.filter(function(el) { return el.nodeName !== 'SCRIPT'; });

    otherElements.forEach(function(el) { document.head.appendChild(el); });
    loadHeadScriptsSequentially(scriptElements);
}

/**
 * Loads header script tags sequentially to maintain order.
 * @param {HTMLScriptElement[]} scriptElements - An array of script elements to load.
 */
function loadHeadScriptsSequentially(scriptElements) {
    var script = scriptElements.shift();
    if (!script) {
        document.dispatchEvent(new Event('FA__DOMContentLoaded'));
        return;
    }

    var newScript = document.createElement('script');
    Array.from(script.attributes).forEach(function(attr) { newScript.setAttribute(attr.name, attr.value); });
    newScript.innerHTML = script.innerHTML;

    if (script.src) {
        newScript.onload = function() { loadHeadScriptsSequentially(scriptElements); };
        document.head.appendChild(newScript);
    } else {
        document.head.appendChild(newScript);
        loadHeadScriptsSequentially(scriptElements);
    }
}

/**
 * Injects the form's body content into the target element.
 * @param {HTMLDivElement} formBodyWrapper - The div that will contain the form.
 * @param {HTMLElement|null} targetElement - The element to inject the form into.
 */
function injectBodyContent(formBodyWrapper, targetElement) {
    var body = document.createElement('body');
    body.innerHTML = bodyContent;

    Array.from(body.children).forEach(function(el) { formBodyWrapper.appendChild(el); });

    if (targetElement) {
        targetElement.appendChild(formBodyWrapper);
    } else {
        document.body.appendChild(formBodyWrapper);
    }
}

/**
 * If a resume URL is provided, it finds the "Save and Resume" containers
 * and injects the resume link.
 */
function addResumeLink() {
    if (!resumeUrl) return;

    var oneFieldContainers = document.querySelectorAll('.wForm .saveAndResume > .oneField');
    oneFieldContainers.forEach(function (container) {
        var separator = document.createTextNode(' | ');

        var resumeLink = document.createElement('a');
        resumeLink.href = baseUrl + resumeUrl;
        resumeLink.innerHTML = 'Resume a previously saved form';
        
        resumeLink.addEventListener('click', function(event) {
            if (!confirm('Are you sure you want to resume a previous response? Any information you just entered on this page will be discarded.')) {
                event.preventDefault();
            }
        });

        container.appendChild(separator);
        container.appendChild(resumeLink);
    });
}

/**
 * Finds and re-executes script tags from the form's body.
 * @param {HTMLDivElement} formBodyWrapper - The wrapper containing the form.
 */
function executeBodyScripts(formBodyWrapper) {
    var scriptTags = formBodyWrapper.querySelectorAll('script');
    scriptTags.forEach(function (scriptTag) {
        // Skip jQuery and Typeahead scripts that are already loaded in the head
        if (scriptTag.src && (
            scriptTag.src.includes('jquery.js') || 
            scriptTag.src.includes('typeahead.bundle.js')
        )) {
            return;
        }
        
        // Skip noConflict scripts that are meant for jQuery/Typeahead
        if (scriptTag.innerHTML && scriptTag.innerHTML.includes('noConflict')) {
            return;
        }
        
        var script = document.createElement('script');
        Array.from(scriptTag.attributes).forEach(function(attr) { script.setAttribute(attr.name, attr.value); });
        script.innerHTML = scriptTag.innerHTML;
        scriptTag.parentNode.replaceChild(script, scriptTag);
    });
}
