(function() { var templateHtml = "\u003Ctemplate id=\u0027scholarship-form-template\u0027\u003E\n \u003Cstyle\u003E\n :host { display: block; font-family: sans-serif !important; }\n #scholarship-form{margin: 20px 0; padding: 20px; width: 100%; max-width: 100%;background-color: #f5f5f5; text-align: left; box-sizing: border-box;}\n .scholarship-form button {background-color: #007bff; color: white; border: none; padding: 10px 20px; cursor: pointer;}\n .container { margin: 0 auto; width: 100%; max-width: 100%; position: relative; }\n .form_groups { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; }\n .form-group { padding: 20px;position:relative; box-sizing: border-box; border-radius: 4px;}\n .form-group a{color:#000;}\n .form-group a:hover{color:#3a7fb0;}\n .form-group span{color:red;}\n .form-group p{margin-top:0;font-size:14px;color:#7a7a7a;line-height:24px;}\n .form-group.form-group-wide { grid-column: span 3; }\n .form-group label{display: block; margin-bottom: 5px; font-weight: bold; font-size: 16px; color: #454545;}\n .form-group input[type=\u0027text\u0027],\n .form-group input[type=\u0027email\u0027],\n .form-group input[type=\u0027tel\u0027],\n .form-group input[type=\u0027number\u0027],\n .form-group input[type=\u0027date\u0027],\n .form-group textarea,\n .form-group select{width: 100%; padding: 15px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box;}\n .form-group textarea { height: 100px; resize: vertical; }\n .form-group.checkbox_con label {display:inline-block;}\n .form-group.checkbox_con input[type=\u0027checkbox\u0027] {width: 15px;height: 15px;position: absolute;top:51px;left: 15px;}\n .form-group.checkbox_con p{margin:3px 0 0 0;padding-left:20px;}\n .form-group .radio_con{margin:0 0 3px;display:flex;gap:5px;align-items:center;}\n .form-group .radio_con label{margin:0;}\n .form-group .radio_con input{margin:0;}\n .no_applications{text-align: center;font-size: 18px;color: #7a7a7a;line-height: 24px;}\n \n .error_messages { color: #dc3545; font-size: 12px; margin: 6px 0 5px; display: none; }\n .form-group.has-error input { border-color: #dc3545; }\n .sch_submit {\n margin: 20px auto 0; padding: 15px 30px; display: block; background: #000; color: #fff;\n border: none; border-radius: 4px; text-align: center; cursor: pointer; transition: all 0.3s ease;\n }\n .sch_submit:hover { background: #3a7fb0; }\n @media (max-width:1300px) { .form_groups { grid-template-columns: repeat(2, 1fr); } }\n @media (max-width:768px) {\n .form_groups { grid-template-columns: 1fr; }\n .form-group.form-group-wide { grid-column: span 1; }\n }\n \u003C\/style\u003E\u003Cform id=\u0027scholarship-form\u0027\u003E\n \u003Cdiv class=\u0027container\u0027\u003E\n \u003Ch2\u003ENatural Disaster Relief Scholarship - Fall 2025 Application\u003C\/h2\u003E\n \u003Cinput type=\u0027hidden\u0027 name=\u0027client_id\u0027 value=\u002757\u0027\u003E\n \u003Cinput type=\u0027hidden\u0027 name=\u0027scholarship_id\u0027 value=\u0027309\u0027\u003E\n \u003Cinput type=\u0027hidden\u0027 id=\u0027ss_email\u0027 value=\u0027info@ovcscholarshipnetwork.com\u0027\u003E\n \u003Cinput type=\u0027hidden\u0027 id=\u0027ss_date\u0027 value=\u0027November 20, 2025\u0027\u003E\n \u003Cinput type=\u0027hidden\u0027 id=\u0027ss_season\u0027 value=\u0027Fall\u0027\u003E\n \u003Cdiv class=\u0027form_groups\u0027\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027First Name\u0027\u003EFirst Name \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027text\u0027 id=\u0027first_name\u0027 name=\u0027first_name\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Last Name\u0027\u003ELast Name \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027text\u0027 id=\u0027last_name\u0027 name=\u0027last_name\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Email\u0027\u003EEmail \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027email\u0027 id=\u0027email\u0027 name=\u0027email\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Phone\u0027\u003EPhone \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027tel\u0027 id=\u0027phone\u0027 name=\u0027phone\u0027 pattern=\u0027[0-9]{3}-[0-9]{3}-[0-9]{4}\u0027 placeholder=\u0027123-456-7890\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027City\u0027\u003ECity \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027text\u0027 id=\u0027city\u0027 name=\u0027city\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027State\u0027\u003EState \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cselect id=\u0027state\u0027 name=\u0027state\u0027 required\u003E\u003Coption value=\u0027\u0027\u003ESelect State\u003C\/option\u003E\u003Coption value=\u0027Alabama\u0027\u003EAlabama\u003C\/option\u003E\u003Coption value=\u0027Alaska\u0027\u003EAlaska\u003C\/option\u003E\u003Coption value=\u0027Arizona\u0027\u003EArizona\u003C\/option\u003E\u003Coption value=\u0027Arkansas\u0027\u003EArkansas\u003C\/option\u003E\u003Coption value=\u0027California\u0027\u003ECalifornia\u003C\/option\u003E\u003Coption value=\u0027Colorado\u0027\u003EColorado\u003C\/option\u003E\u003Coption value=\u0027Connecticut\u0027\u003EConnecticut\u003C\/option\u003E\u003Coption value=\u0027DC\u0027\u003EDC\u003C\/option\u003E\u003Coption value=\u0027Delaware\u0027\u003EDelaware\u003C\/option\u003E\u003Coption value=\u0027Florida\u0027\u003EFlorida\u003C\/option\u003E\u003Coption value=\u0027Georgia\u0027\u003EGeorgia\u003C\/option\u003E\u003Coption value=\u0027Hawaii\u0027\u003EHawaii\u003C\/option\u003E\u003Coption value=\u0027Idaho\u0027\u003EIdaho\u003C\/option\u003E\u003Coption value=\u0027Illinois\u0027\u003EIllinois\u003C\/option\u003E\u003Coption value=\u0027Indiana\u0027\u003EIndiana\u003C\/option\u003E\u003Coption value=\u0027Iowa\u0027\u003EIowa\u003C\/option\u003E\u003Coption value=\u0027Kansas\u0027\u003EKansas\u003C\/option\u003E\u003Coption value=\u0027Kentucky\u0027\u003EKentucky\u003C\/option\u003E\u003Coption value=\u0027Louisiana\u0027\u003ELouisiana\u003C\/option\u003E\u003Coption value=\u0027Maine\u0027\u003EMaine\u003C\/option\u003E\u003Coption value=\u0027Maryland\u0027\u003EMaryland\u003C\/option\u003E\u003Coption value=\u0027Massachusetts\u0027\u003EMassachusetts\u003C\/option\u003E\u003Coption value=\u0027Michigan\u0027\u003EMichigan\u003C\/option\u003E\u003Coption value=\u0027Minnesota\u0027\u003EMinnesota\u003C\/option\u003E\u003Coption value=\u0027Mississippi\u0027\u003EMississippi\u003C\/option\u003E\u003Coption value=\u0027Missouri\u0027\u003EMissouri\u003C\/option\u003E\u003Coption value=\u0027Montana\u0027\u003EMontana\u003C\/option\u003E\u003Coption value=\u0027Nebraska\u0027\u003ENebraska\u003C\/option\u003E\u003Coption value=\u0027Nevada\u0027\u003ENevada\u003C\/option\u003E\u003Coption value=\u0027New Hampshire\u0027\u003ENew Hampshire\u003C\/option\u003E\u003Coption value=\u0027New Jersey\u0027\u003ENew Jersey\u003C\/option\u003E\u003Coption value=\u0027New Mexico\u0027\u003ENew Mexico\u003C\/option\u003E\u003Coption value=\u0027New York\u0027\u003ENew York\u003C\/option\u003E\u003Coption value=\u0027North Carolina\u0027\u003ENorth Carolina\u003C\/option\u003E\u003Coption value=\u0027North Dakota\u0027\u003ENorth Dakota\u003C\/option\u003E\u003Coption value=\u0027Ohio\u0027\u003EOhio\u003C\/option\u003E\u003Coption value=\u0027Oklahoma\u0027\u003EOklahoma\u003C\/option\u003E\u003Coption value=\u0027Oregon\u0027\u003EOregon\u003C\/option\u003E\u003Coption value=\u0027Pennsylvania\u0027\u003EPennsylvania\u003C\/option\u003E\u003Coption value=\u0027Rhode Island\u0027\u003ERhode Island\u003C\/option\u003E\u003Coption value=\u0027South Carolina\u0027\u003ESouth Carolina\u003C\/option\u003E\u003Coption value=\u0027South Dakota\u0027\u003ESouth Dakota\u003C\/option\u003E\u003Coption value=\u0027Tennessee\u0027\u003ETennessee\u003C\/option\u003E\u003Coption value=\u0027Texas\u0027\u003ETexas\u003C\/option\u003E\u003Coption value=\u0027Utah\u0027\u003EUtah\u003C\/option\u003E\u003Coption value=\u0027Vermont\u0027\u003EVermont\u003C\/option\u003E\u003Coption value=\u0027Virginia\u0027\u003EVirginia\u003C\/option\u003E\u003Coption value=\u0027Washington\u0027\u003EWashington\u003C\/option\u003E\u003Coption value=\u0027West Virginia\u0027\u003EWest Virginia\u003C\/option\u003E\u003Coption value=\u0027Wisconsin\u0027\u003EWisconsin\u003C\/option\u003E\u003Coption value=\u0027Wyoming\u0027\u003EWyoming\u003C\/option\u003E\u003C\/select\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027College Name\u0027\u003ECollege Name \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027text\u0027 id=\u0027college_name\u0027 name=\u0027college_name\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Enrolled In College\u0027\u003EEnrolled In College \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cdiv class=\u0027radio_con\u0027\u003E\u003Cinput type=\u0027radio\u0027 id=\u0027enrolled_in_college_No\u0027 name=\u0027enrolled_in_college\u0027 value=\u0027No\u0027 required\u003E\u003Clabel for=\u0027enrolled_in_college_No\u0027\u003ENo\u003C\/label\u003E\u003C\/div\u003E\u003Cdiv class=\u0027radio_con\u0027\u003E\u003Cinput type=\u0027radio\u0027 id=\u0027enrolled_in_college_Yes\u0027 name=\u0027enrolled_in_college\u0027 value=\u0027Yes\u0027 required\u003E\u003Clabel for=\u0027enrolled_in_college_Yes\u0027\u003EYes\u003C\/label\u003E\u003C\/div\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027School Level\u0027\u003ESchool Level \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cselect id=\u0027school_level\u0027 name=\u0027school_level\u0027 required\u003E\u003Coption value=\u0027\u0027\u003ESelect School Level\u003C\/option\u003E\u003Coption value=\u0027College 1st year\u0027\u003ECollege 1st year\u003C\/option\u003E\u003Coption value=\u0027College 2nd year\u0027\u003ECollege 2nd year\u003C\/option\u003E\u003Coption value=\u0027College 3rd year\u0027\u003ECollege 3rd year\u003C\/option\u003E\u003Coption value=\u0027College 4th year\u0027\u003ECollege 4th year\u003C\/option\u003E\u003Coption value=\u0027Graduate student\u0027\u003EGraduate student\u003C\/option\u003E\u003Coption value=\u0027High school senior\u0027\u003EHigh school senior\u003C\/option\u003E\u003Coption value=\u0027Law Student\u0027\u003ELaw Student\u003C\/option\u003E\u003C\/select\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Applicant Birthdate\u0027\u003EApplicant Birthdate \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027date\u0027 id=\u0027applicant_birthdate\u0027 name=\u0027applicant_birthdate\u0027 required min=\u00271945-05-07\u0027 max=\u00272008-05-07\u0027\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Citizenship\u0027\u003ECitizenship \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cselect id=\u0027citizenship\u0027 name=\u0027citizenship\u0027 required\u003E\u003Coption value=\u0027\u0027\u003ESelect Citizenship\u003C\/option\u003E\u003Coption value=\u0027U.S. Citizen\u0027\u003EU.S. Citizen\u003C\/option\u003E\u003Coption value=\u0027U.S. Legal Permanent Resident\u0027\u003EU.S. Legal Permanent Resident\u003C\/option\u003E\u003Coption value=\u0027U.S. Legal Temporary Resident (International Students)\u0027\u003EU.S. Legal Temporary Resident (International Students)\u003C\/option\u003E\u003C\/select\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Photo Upload\u0027\u003EPhoto Upload \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E \u003Cspan style=\u0022font-size:12px;color:gray;\u0022\u003E(png, jpeg, jpg)\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027file\u0027 id=\u0027photo_upload\u0027 name=\u0027photo_upload\u0027 accept=\u0027.png,.jpeg,.jpg\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-grid\u0027\u003E\u003Clabel for=\u0027Video Link\u0027\u003EVideo Link \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027text\u0027 id=\u0027video_link\u0027 name=\u0027video_link\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group form-group-wide\u0027\u003E\u003Clabel for=\u0027Proof Of Enrollment\u0027\u003EProof Of Enrollment \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E \u003Cspan style=\u0022font-size:12px;color:gray;\u0022\u003E(.docx, pdf)\u003C\/span\u003E\u003C\/label\u003E\u003Cp\u003ETo demonstrate eligibility, an applicant must provide proof of enrollment or acceptance at an accredited school within the United States, which may include: a letter of enrollment, an acceptance letter, a class schedule, or an unof\ufb01cial transcript.\u003C\/p\u003E\u003Cinput type=\u0027file\u0027 id=\u0027proof_of_enrollment\u0027 name=\u0027proof_of_enrollment\u0027 accept=\u0027.docx,.pdf\u0027 required\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group checkbox_con\u0027\u003E\u003Clabel for=\u0027Consent To Publish\u0027\u003EConsent To Publish \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027checkbox\u0027 id=\u0027consent_to_publish\u0027 name=\u0027consent_to_publish\u0027 required\u003E\u003Cp\u003EBy submitting your application, you consent that your name, photograph, and essay may be published on our website, social media, and other marketing channels.\u003C\/p\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\u0027form-group form-group checkbox_con\u0027\u003E\u003Clabel for=\u0027Agree To Terms\u0027\u003EAgree To Terms \u003Cspan style=\u0022color:red;\u0022\u003E*\u003C\/span\u003E\u003C\/label\u003E\u003Cinput type=\u0027checkbox\u0027 id=\u0027agree_to_terms\u0027 name=\u0027agree_to_terms\u0027 required\u003E\u003Cp\u003EYou agree to the \u003Ca href=\u0027https:\/\/www.ovcscholarshipnetwork.com\/ovc-scholarship-network-program-privacy-policy-disclaimers\u0027 target=\u0027_blank\u0027\u003EPrivacy Policy.\u003C\/a\u003E\u003C\/p\u003E\u003Cdiv class=\u0027error_messages\u0027 style=\u0027display:none;\u0027\u003E\u003C\/div\u003E\u003C\/div\u003E \u003C\/div\u003E\n \u003Cbutton type=\u0027submit\u0027 class=\u0027sch_submit\u0027\u003EApply Now\u003C\/button\u003E\n \u003C\/div\u003E\n \u003C\/form\u003E\n \u003C\/template\u003E"; document.currentScript.insertAdjacentHTML('afterend', templateHtml); class ScholarshipForm extends HTMLElement { constructor() { super(); const shadow = this.attachShadow({ mode: 'open' }); const template = document.getElementById('scholarship-form-template'); shadow.appendChild(template.content.cloneNode(true)); const form = shadow.querySelector('form'); if (!form) return; const phoneInputs = shadow.querySelectorAll('input[type="tel"]'); phoneInputs.forEach(input => { input.addEventListener('input', (e) => { let rawValue = e.target.value.replace(/\D/g, ''); let formatted = rawValue.length > 3 ? rawValue.substring(0, 3) + '-' : rawValue; formatted += rawValue.length > 6 ? rawValue.substring(3, 6) + '-' + rawValue.substring(6, 10) : rawValue.substring(3, 6); e.target.value = formatted; }); }); // Form submission handling (with thank-you popup and error management) if(form){ form.addEventListener('submit', (e) => { e.preventDefault(); var formData = new FormData(form); fetch("https://www.ovcscholar.com/submit-application", { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { let ssEmail = shadow.querySelector('#ss_email').value; let ssDate = shadow.querySelector('#ss_date').value; let ssSeason = shadow.querySelector('#ss_season').value; let homepageUrl = (function(url) { try { return new URL(url).origin; } catch (error) { console.error('Invalid URL:', error); return ''; } })(document.URL); form.remove(); shadow.querySelectorAll('.error_messages').forEach(error => { error.style.display = 'none'; }); shadow.querySelectorAll('.has-error').forEach(group => { group.classList.remove('has-error'); }); const thankYouMessage = document.createElement('div'); thankYouMessage.innerHTML = `

Thank You!

We've received your application! We can expect the winner to be announced on ${ssDate}.

Questions?

Contact us here.

Explore Our Website

Learn More
`; document.getElementById('scholarship-form-container').scrollIntoView(true); const style = document.createElement('style'); style.textContent = ` .thank-you-container { position: relative; top: 50%; left: 50%; transform: translate(-50%, 0); width: 100%; display: flex; align-items: center; justify-content: center; z-index: 99999999999; } .thank-you-card { background: #fff; padding: 80px; width: 800px; border-radius: 0; text-align: center; box-shadow: 0 0 30px rgba(0,0,0,0.15); animation: fadeIn 0.5s ease-in-out; box-sizing: border-box; } .thank-you-card h2 { margin-bottom: 17px; color: #3a7fb0; font-size: 52px; } .thank-you-card > p { margin: 0 auto 15px; line-height: 1.5em; font-size: 18px; display: block; } .thank-you-card > p a { color: #3a7fb0; text-decoration: none; } .lr_con { margin: 30px 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; } .lr_con > div { padding: 30px; background: #f1f1f1; box-sizing: border-box; } .lr_con > div.left a { color: #3a7fb0; text-decoration: none; } .lr_con > div.right a { margin: 20px auto 0; padding: 15px 30px; display: block; background: #000; color: #fff; border: none; box-sizing: border-box; border-radius: 4px; text-align: center; text-decoration: none; cursor: pointer; transition: all 0.3s ease; } .lr_con > div.right a:hover { background: #3a7fb0; } @keyframes fadeIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } @media (max-width:900px) { .thank-you-card { width: 95%; } .thank-you-card h2 { font-size: 32px; } } @media (max-width:700px) { .thank-you-card { padding: 40px 20px; } } @media (max-width:500px) { .lr_con { grid-template-columns: repeat(1, 1fr); } } `; shadow.appendChild(style); shadow.appendChild(thankYouMessage); } else { // Reset all visible error messages shadow.querySelectorAll('.error_messages').forEach(el => { el.textContent = ''; el.style.display = 'none'; }); // Remove previous error styles shadow.querySelectorAll('.form-group').forEach(group => { group.classList.remove('has-error'); }); // Prefer structured errors, fallback to flat object const errors = (data.errors && typeof data.errors === 'object') ? data.errors : data; if (errors && typeof errors === 'object') { Object.entries(errors).forEach(([fieldName, message]) => { const input = shadow.querySelector('[name="' + fieldName + '"]'); if (!input) return; const formGroup = input.closest('.form-group'); if (!formGroup) return; let errorDiv = formGroup.querySelector('.error_messages'); if (!errorDiv) { errorDiv = document.createElement('div'); errorDiv.className = 'error_messages'; input.insertAdjacentElement('afterend', errorDiv); } errorDiv.textContent = message; errorDiv.style.display = 'block'; formGroup.classList.add('has-error'); }); } else if (data.message) { let formErrorDiv = shadow.querySelector('#form-error_messages'); if (!formErrorDiv) { const submitBtn = shadow.querySelector('button[type="submit"]'); formErrorDiv = document.createElement('div'); formErrorDiv.id = 'form-error_messages'; formErrorDiv.className = 'error_messages'; formErrorDiv.style.color = '#dc3545'; formErrorDiv.style.marginTop = '10px'; submitBtn.insertAdjacentElement('afterend', formErrorDiv); } formErrorDiv.textContent = 'Error: ' + data.message; formErrorDiv.style.display = 'block'; } } }); }); } else { const submitBtn = shadow.querySelector('button[type=\"submit\"]'); let formErrorDiv = shadow.querySelector('#form-error_messages'); if (!formErrorDiv) { formErrorDiv = document.createElement('div'); formErrorDiv.id = 'form-error_messages'; formErrorDiv.className = 'error_messages'; formErrorDiv.style.color = '#dc3545'; formErrorDiv.style.marginTop = '10px'; submitBtn.insertAdjacentElement('afterend', formErrorDiv); } formErrorDiv.textContent = data.message ? 'Error:'+ data.message : 'An error occurred'; formErrorDiv.style.display = 'block'; } } } customElements.define('scholarship-form', ScholarshipForm); })();