/* growform client2 bundle.url: https://assets.growform.co/ef442a3-mggk13f0/form.bundle.js resolve.source: kv resolve.at: 2025-10-09T03:49:04.800Z form.source: api cache.age_ms: 0 kv.value_present: true fallback_used: false */ ;(function () { var EMBED_TYPE = "iFrame"; var FORM_ID = "681a4196e8b730000b4e47e5"; var FORM_BUNDLE_URL = "https://assets.growform.co/ef442a3-mggk13f0/form.bundle.js"; // injected by worker (KV/memory/fallback) var FORM_DATA = {"data":{"form":{"_id":"681a4196e8b730000b4e47e5","steps":[{"id":"60c2d61a66a74bcb70ce6e49","name":"Roofing material","sortOrder":1,"copyOf":"acd45227cac332d443c4e1db"},{"id":"ac0ce1d8634334328d03ff33","name":"Premises type","sortOrder":2,"copyOf":"8d53a2591d86a402dbecf0d3"},{"id":"2d95de6cbf33867267a18be6","name":"Type of service","sortOrder":3,"copyOf":"60c2d61a66a74bcb70ce6e49"},{"id":"acd45227cac332d443c4e1db","name":"Location info","sortOrder":4},{"id":"0652028f45e1cd0d4eb7f648","name":"Anything else","sortOrder":5,"copyOf":"acd45227cac332d443c4e1db"},{"id":"ff4727c9498ef9c0a6c989d9","name":"Contact info","sortOrder":6}],"formName":"Roofing Form","fields":{"Decorative Header_52363373085874":{"type":"Decorative Header","value":"Thank you! We are currently processing your info and messaging local experts...","width":12,"step":"complete","sortOrder":1,"fieldStyle":{"fontSize":{"value":25,"unit":"px"},"fontWeight":"Bold","fontFamily":"DM Sans"},"margins":{"marginTop":20},"stepId":"complete"},"Decorative Header_797442086161467":{"type":"Decorative Header","value":"What is your address?","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"acd45227cac332d443c4e1db"},"Decorative Header_576559560634956":{"type":"Decorative Header","value":"How shall we get in touch?","width":12,"step":5,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"ff4727c9498ef9c0a6c989d9"},"email_907058157108782":{"type":"Email","label":"Your email address","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":3,"stepId":"ff4727c9498ef9c0a6c989d9"},"phone_589083232390193":{"type":"Phone","label":"Your phone number","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":4,"helperText":"","stepId":"ff4727c9498ef9c0a6c989d9"},"text_373461752242760":{"type":"Text","label":"Your name","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":2,"validationRules":{"required":true},"stepId":"ff4727c9498ef9c0a6c989d9"},"Decorative_Paragraph_194067845817258":{"type":"Decorative Paragraph","value":"Please don't navigate away from this page.","width":12,"step":"complete","sortOrder":2,"margins":{"marginBottom":60},"stepId":"complete","fieldStyle":{"fontSize":{"value":18,"unit":"px"},"fontFamily":"Roboto"}},"decorative_header_46751409231390":{"type":"Decorative Header","value":"What type of premises need our attention?","width":12,"step":1,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"ac0ce1d8634334328d03ff33","margins":{"marginBottom":5}},"buttons_782408809089103":{"type":"Buttons","validationRules":{"required":true},"label":"Type of premises","width":12,"hideLabel":true,"multiple":false,"options":[{"text":"Residential","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1688984518/uploads/p7wugt1kybpz7ybbbs87.jpg","id":"f63b95749822e97254748675"},{"text":"Commercial","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1688984523/uploads/jjb8v2vbdqo6hknxgvws.jpg","id":"1934ecfb86de2b8beb961e50"}],"step":1,"sortOrder":2,"helperText":"","imageStyles":{"width":"37","marginBottom":"17","sq_imageOnlyMode":"No","rt_width":27},"buttonStyle":{"minWidth":"107","height":"102","buttonsPerRow":"4","buttonsType":"Square","sq_buttonsPerRow":"2","sq_buttonsPerRowMobile":"2"},"stepId":"ac0ce1d8634334328d03ff33"},"decorative_header_892646863007116":{"type":"Decorative Header","value":"Which roofing material do you have?","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"60c2d61a66a74bcb70ce6e49","margins":{"marginBottom":5}},"buttons_88398974892131":{"type":"Buttons","validationRules":{"required":true},"label":"Roofing material","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":"3","rt_buttonsPerRowMobile":1,"buttonsType":"Square","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes","sq_buttonsPerRow":"5"},"options":[{"text":"Asphalt shingles","id":"9f2ec840bf9120540d2bf80a","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1688984298/uploads/thgq1zicoboiuilrkwla.jpg"},{"text":"Metal roofing","id":"d19270d9bf72b6c0fe69e823","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1688984300/uploads/xfw2rbpxb6ni0jcnyfel.jpg"},{"text":"Wood shingles","id":"c3323f7c6df2061b4758b97d","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1688984303/uploads/yjwllm8hniujlx2mz16d.jpg"},{"text":"Slate roofing","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1688984306/uploads/ivg9fnq74fkcjkta29kx.jpg","id":"c00e8d7bdf43c49cac2c46d2"}],"stepId":"60c2d61a66a74bcb70ce6e49","sortOrder":2,"hideLabel":true,"imageStyles":{"rt_width":27,"size":"100%"}},"address_791048036833857":{"type":"Address","label":"123 St Name, City, State, Zip","width":12,"stepId":"acd45227cac332d443c4e1db","sortOrder":2,"margins":{"marginBottom":0},"validationRules":{"required":true}},"decorative_header_936751498719106":{"type":"Decorative Header","value":"Is there anything else we should know?","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"0652028f45e1cd0d4eb7f648"},"text_361930407217491":{"type":"Text","label":"Additional info","width":12,"stepId":"0652028f45e1cd0d4eb7f648","sortOrder":2,"multiline":true,"rows":3,"helperText":""},"decorative_header_148937855441882":{"type":"Decorative Header","value":"What type of service do you need?","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"2d95de6cbf33867267a18be6","margins":{"marginBottom":5}},"buttons_86552269379590":{"type":"Buttons","validationRules":{"required":true},"label":"Service type","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":2,"rt_buttonsPerRowMobile":1,"buttonsType":"Rectangle","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes"},"options":[{"text":"New roof installation","id":"6358c2125d7d781a96af2837","image":null},{"text":"Repair or partial replacement","id":"5742d27ebbdebb2db2734d21","image":null},{"text":"Full roof replacement","id":"c0d3237c9619c32134b12c95","image":null},{"text":"Inspection or maintenance","image":null,"id":"473b38d0b9316b8ad15669bb"},{"text":"Other","image":null,"id":"2b8a8379a91983340f236782"}],"stepId":"2d95de6cbf33867267a18be6","sortOrder":2,"hideLabel":true,"imageStyles":{"rt_width":27}},"toscheckbox_294567527738471":{"type":"TOSCheckbox","label":"I authorize RoofingQuote.Today, its partners, and service providers to contact me at the phone number and email I provided above for marketing purposes, including via automated calls, texts, and prerecorded messages, even if my number is on a federal or state Do-Not-Call list. I understand that this consent is not a condition of purchase, and that message and data rates may apply. I may opt out at any time by replying STOP or using the unsubscribe link in emails.","width":12,"stepId":"ff4727c9498ef9c0a6c989d9","sortOrder":5,"prechecked":true}},"options":{"numberOfSteps":5,"dateFormat":"DD/MM/YYYY","progressBar":{"enable":true,"variant":"bars","bars_height":8,"margins":{"marginTop":-20,"marginBottom":null}},"continueButton":{"continueText":"Next","submitText":"Get quote","backText":"Back"},"customStyles":{"width":{"unit":"px","value":580},"parentContainerMinHeight":{"value":0,"unit":"px"},"parentBackgroundImage":{"imageInitialHeight":1362,"imageInitialWidth":2066,"imageHeight":1362,"imageWidth":2066,"imageUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1597337140/uploads/qmsfk98ank3wfp1ehvyg.jpg"},"headerMarginTop":30,"parentBackgroundColor":"#ffffff","innerFormBackgroundColor":"#ffffff","innerFormBackgroundTransparency":"","primaryColor":"#ffffff","bodyTextColor":"#000000","parentContainerBackgroundType":"none","innerFormBackgroundType":"none","buttonBorderColor":"#ff7500","buttonColorSelected":"#ffa659","buttonBorderColorSelected":"#ff7500","footerMarginBottom":20,"errorColor":"#000000","buttonColor":"#ff7500","buttonTextColor":"#ffffff","inputLabelColor":"#a3a3a3","inputTextColor":"#000000","defaultFont":"Montserrat","sq_buttonFont":"Poppins","sq_buttonFontSize":15,"showShadows":"Yes","sq_buttonTextColor":"#343434","sq_buttonColor":"#ffffff","sq_buttonColorSelected":"#FFFFFF","sq_buttonBorderColor":"#DADADA","sq_buttonBorderColorSelected":"primary","sq_buttonBannerColor":"#FFFFFF","rt_buttonFont":"Poppins","rt_buttonFontSize":15,"rt_buttonColor":"#ffffff","rt_buttonColorSelected":"#e65a0b","rt_buttonTextColor":"#343434","rt_buttonBorderColor":"#e65a0b","rt_buttonBorderColorSelected":"#ffffff","inputLabelFont":"Poppins","inputFontSize":16,"continueSubmitButtonFontSize":15,"fullModeBackgroundColor":"#EBF2E8","canvasSetup":"minimal","progressColor":"#e65a0b","inputBackgroundColor":"#ffffff","continueButtonColor":"#e65a0b","continueButtonTextColor":"#ffffff","radioButtonAndCheckboxColor":"#444444"},"localization":{"dateFormat":"MM/DD/YYYY"},"exportTransparentBackground":false,"customScript":"","customRedirectUrls":[{"url":"https://roofingquote.today/roofing-request-received"}],"logo":null,"analyticsSettings":{"trustedForm":{"enabled":true}},"actionOnSubmit":"redirect"},"screenshotUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1747865616/growform-production/form-screenshots/681a4196e8b730000b4e47e5.png","ownedByUser":"681a234ce8b730000b4e35bc","personalisation":{"form_related_to":"Roofing"},"created":"2025-05-06T17:06:30.181Z","__v":0,"leadsCount":7,"lastEdited":"2025-05-21T22:13:31.531Z","isActive":true},"accountIsActive":true,"accountIsFreeTrial":false}}; // ---- Utils ---- function safeJSONStringify(obj) { return JSON.stringify(obj) .replace(/<\/(script|style)/gi, '<\\/$1') .replace(//g, '--\\>') .replace(/\u2028/g, '\\u2028') .replace(/\u2029/g, '\\u2029'); } function preloadScript(href) { try { if (!href) return; if (document.querySelector('link[rel="preload"][href="' + href + '"]')) return; var l = document.createElement("link"); l.rel = "preload"; l.as = "script"; l.href = href; l.crossOrigin = ""; // allow cache reuse in iframe document.head.appendChild(l); } catch (_) {} } function parseQuery() { var out = {}; try { if (!window.location.search) return out; var usp = new URLSearchParams(window.location.search); usp.forEach(function (v, k) { out[k] = v; }); } catch (_) {} return out; } function buildIframeHTML(opts) { var html = '\n' + '\n' + '\n' + ' \n' + ' \n' + ' \n' + '\n' + '\n' + ' \n' + '
\n' + '