{"version":3,"sources":["forms.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_classCallCheck","a","n","TypeError","_defineProperties","e","r","t","length","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","i","_toPrimitive","toPrimitive","String","Number","call","_slicedToArray","_iterableToArrayLimit","_nonIterableRest","_unsupportedIterableToArray","_arrayLikeToArray","toString","slice","name","Array","from","test","l","u","f","next","done","push","value","return","_arrayWithHoles","isArray","forms","invalidclass","_createClass","errorelementclass","validFormGroup","validSelectElement","dobNotOldEnoughMessage","dobMinimumAge","dobAutoCompleteValue","_elementValid","ele","wrap","closest","errorcontainer","querySelector","textContent","remove","classList","add","required","type","_elementInvalid","overrideMessage","arguments","undefined","patternMessage","fieldlabel","errorMessage","hasAttribute","getAttribute","requiredMessage","badInput","validity","patternMismatch","tooShort","tooLong","rangeUnderflow","rangeOverflow","validElementclass","invalidElementclass","_removeValidation","isValid","querySelectorAll","elementgroup","forEach","cbox","checked","valid","_validateDateOfBirth","dateOfBirth","dob","Date","maxDate","_submitValidatedForm","form","submitter","submitterText","formData","FormData","action","errormsg","_checkboxValidity","autocomplete","defaultTimeout","post","data","thankYouPage","thankyoupage","window","location","origin","addEventListener","storeThankYouValues","EcommerceCookie","setEcommerceCookie","FormSubmitCookie","setFormSubmitCookie","catch","checkValidity","finally","replace","errors","_Object$entries","entries","_i","_Object$entries$_i","getElementsByName","disabled","alert","errorTYP","document","getElementById","options","tForm","_validateFormFields","te","entireError","isValidForm","offsetParent","nextSibling","previousSibling","id","dateErrorMsg","fetcher","indexOf","innerHTML","filterDateEle","dataset","errorMsg","filterDates","includes","getDay","dt","selectedIndex","Message","_validateElementById","sunday","elementValid","preventDefault","checkboxValidity","checkInputLabels","validateDateOfBirth","addElementValidation","fieldset","_checkInputLabels","submitValidatedForm","addFormValidation","event","firstChild","nodeValue","formValidator","validateElementById","hideField","style","_addFormValidation","validateFormFields","removeValidation","validateCascade","category","expAch","country","allValid","degree","FormUtilities","module","this","dataFormType","formtype","snhuCookieProvider","cookieVals","CookieProvider","getValueAsJson","formsource","_hideField","getValueAsString","serialize","groupSelector","buttonSelector","setRadioButton","node","tabIndex","state","currentTarget","code","radiogroup","parentElement","snhuEconCookie","focus","stopPropagation","isPrepopulated","exports","radiobuttons","keyDownRadioGroup","firstRadio","rb","focusRadioButton","clickRadioButton","serialized","elements","field","encodeURIComponent","join","SpinWheelController","_lastWidth","get","set","selects","width","movedAboveBreakpoint","breakpoint","lastWidth","select","movedBelowBreakpoint","hookClass","insertAdjacentHTML","optgroupMarkup","lastChild","contains","removeChild","ThankYouPageData","optimizeSelects","controller","innerWidth","removeOptgroup","firstName","lastName","programName","firstLastSameForm","firstProgSameForm","firstNameNode","lastNameNode","programNameNode","lastProgSameForm","targetForm","setAttribute","AppForm","countrySelect","previousElementSibling","visaRadioBtns","btn","target","toLowerCase","removeAttribute","pfFiltersController","windowWidth","buttonQueryString","panelQueryString","_this","setView","checkWindowWidth","mobileToDesktop","desktopToMobile","addListeners","setAttributes","isMobile","button","panels","panel","program","concentration","FormStartFactory","bindListeners","formType","prepopulated","formSource","form_prepopulated","form_source","FormsController","ga4Event","formStart","GA4EventFactory","buttons","formUtilities","getFormType","getFormSource","programs","formelements","concentrations","formscontroller","removeEventListener","_ga4FormStart"],"mappings":"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","file":"forms.min.js","sourcesContent":["\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/* global SnhuFetchUtil */\n/* global ThankYouCookie */\n/* global EcommerceCookie */\n/* global FormSubmitCookie */\n\nvar forms = function () {\n var invalidclass = \"invalid-feedback\";\n var errorelementclass = \"error\";\n var invalidElementclass = \"invalidElement\";\n var validElementclass = \"validElement\";\n var validFormGroup = \"valid-form-group\";\n var validSelectElement = \"valid-multi-col-select\";\n var dobMinimumAge = 16;\n var dobNotOldEnoughMessage = \"You must be at least \" + dobMinimumAge + \" years old to attend SNHU\";\n var dobAutoCompleteValue = \"bday\";\n\n // ***Remove validtion of cascading dropdowns ***\n function _removeValidation(id) {\n var ele = document.getElementById(id);\n var wrap = ele.closest('div.form-group');\n wrap.classList.remove(validFormGroup);\n wrap.classList.remove(validSelectElement);\n ele.classList.remove(validElementclass);\n var errorcontainer = wrap.querySelector('span.' + errorelementclass);\n errorcontainer.textContent = '';\n errorcontainer.classList.remove(invalidclass);\n ele.classList.remove(invalidElementclass);\n }\n\n // ***VALID Element ***\n function _elementValid(ele) {\n //get the wrapping div\n var wrap = ele.closest('div.form-group');\n\n //get the error container\n var errorcontainer = wrap.querySelector('span.' + errorelementclass);\n if (errorcontainer !== null) {\n errorcontainer.textContent = '';\n errorcontainer.classList.remove(invalidclass);\n ele.classList.remove(invalidElementclass);\n ele.classList.add(validElementclass);\n if (ele.required && !(ele.type === 'checkbox' || ele.type === 'radio')) {\n wrap.classList.add(validFormGroup);\n if (ele.type === 'select-one') {\n wrap.classList.add(validSelectElement);\n }\n }\n }\n }\n\n // ***NOT VALID Element ***\n function _elementInvalid(ele) {\n var overrideMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n //get the wrapping div\n var wrap = ele.closest('div.form-group');\n var patternMessage = 'Invalid data \\n';\n var requiredMessage = '';\n var fieldlabel = '';\n if (ele.hasAttribute('placeholder')) {\n fieldlabel = ele.getAttribute('placeholder');\n } else if (wrap.querySelector('label') !== null) {\n fieldlabel = wrap.querySelector(\"label\").textContent;\n }\n if (ele.hasAttribute('data-invalidRequired')) {\n requiredMessage = ele.getAttribute('data-invalidRequired') + '\\n';\n } else if (ele.hasAttribute('required')) {\n //add onto the invalid message\n requiredMessage = fieldlabel + ' is required. \\n';\n } else {\n requiredMessage = fieldlabel + ' is required.';\n }\n if (ele.hasAttribute('data-invalidPattern')) {\n patternMessage = ele.getAttribute('data-invalidPattern') + '\\n';\n }\n var errorMessage = requiredMessage;\n //get the error container\n var errorcontainer = wrap.querySelector('span.' + errorelementclass);\n\n //add onto the invalid message\n if (ele.validity.badInput || ele.validity.patternMismatch || ele.validity.tooShort || ele.validity.tooLong || ele.validity.rangeUnderflow || ele.validity.rangeOverflow) {\n errorMessage = patternMessage;\n }\n errorcontainer.textContent = overrideMessage !== '' ? overrideMessage : errorMessage;\n errorcontainer.classList.add(invalidclass);\n ele.classList.remove(validElementclass);\n ele.classList.add(invalidElementclass);\n if (ele.required && !(ele.type === 'checkbox' || ele.type === 'radio')) {\n wrap.classList.remove(validFormGroup);\n wrap.classList.remove(validSelectElement);\n }\n return errorMessage;\n }\n\n // ***CHECKBOX/RADIO Validation ***\n function _checkboxValidity(ele) {\n var wrap = ele.closest('div.form-group');\n var fieldset = wrap.querySelector('fieldset');\n var errorMessage = '';\n var elementgroup = fieldset !== null ? fieldset.querySelectorAll('input') : null;\n if (fieldset !== null && elementgroup.length > 1) {\n var isValid = false;\n elementgroup.forEach(function (cbox) {\n if (cbox.checked) {\n isValid = true;\n }\n });\n if (isValid) {\n _elementValid(ele);\n elementgroup.forEach(function (cbox) {\n cbox.classList.remove(invalidElementclass);\n cbox.classList.add(validElementclass);\n });\n } else {\n errorMessage = _elementInvalid(ele);\n elementgroup.forEach(function (cbox) {\n cbox.classList.remove(validElementclass);\n cbox.classList.add(invalidElementclass);\n });\n }\n } else {\n //is a single check box - check validity and be done\n if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n errorMessage = _elementInvalid(ele);\n }\n }\n return errorMessage;\n }\n function _checkInputLabels(form) {\n var tForm = form;\n tForm.querySelectorAll('input').forEach(function (ele) {\n if (ele.type === 'text' || ele.type === 'tel' || ele.type === 'email') {\n if (ele.value.length > 0) {\n if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n }\n }\n });\n tForm.querySelectorAll('textarea').forEach(function (ele) {\n if (ele.value.length > 0) {\n if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n }\n });\n }\n function _validateDateOfBirth(dateOfBirth) {\n if (dateOfBirth) {\n var dob = new Date(dateOfBirth);\n var maxDate = new Date();\n maxDate.setFullYear(maxDate.getFullYear() - dobMinimumAge);\n if (dob <= maxDate) {\n return true;\n }\n }\n return false;\n }\n\n // ***ELEMENT inline validation ***\n function _addElementValidation(form) {\n var tForm = form;\n if (tForm.dataset.noelementvalidation !== \"true\") {\n tForm.querySelectorAll('input:not([type=\"hidden\"]):not([data=\"hpfield\"])').forEach(function (ele) {\n ele.addEventListener('input', function () {\n if ((ele.type === 'checkbox' || ele.type === 'radio') && ele.hasAttribute('required')) {\n //extra checking for checkboxes to determine if group\n _checkboxValidity(ele);\n } else if (ele.autocomplete === dobAutoCompleteValue) {\n if (!ele.validity.valid) {\n _elementInvalid(ele);\n } else if (!_validateDateOfBirth(ele.value)) {\n _elementInvalid(ele, dobNotOldEnoughMessage);\n } else {\n _elementValid(ele);\n }\n } else if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n });\n ele.addEventListener('blur', function () {\n if ((ele.type === 'checkbox' || ele.type === 'radio') && ele.hasAttribute('required')) {\n //extra checking for checkboxes to determine if group\n _checkboxValidity(ele);\n } else if (ele.autocomplete === dobAutoCompleteValue) {\n if (!ele.validity.valid) {\n _elementInvalid(ele);\n } else if (!_validateDateOfBirth(ele.value)) {\n _elementInvalid(ele, dobNotOldEnoughMessage);\n } else {\n _elementValid(ele);\n }\n } else if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n });\n });\n tForm.querySelectorAll('select').forEach(function (ele) {\n ele.addEventListener('input', function () {\n if (ele.checkValidity() && (!ele.hasAttribute('required') || ele.hasAttribute('required') && ele.options[ele.selectedIndex].value !== '')) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n });\n ele.addEventListener('blur', function () {\n if (ele.checkValidity() && (!ele.hasAttribute('required') || ele.hasAttribute('required') && ele.options[ele.selectedIndex].value !== '')) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n });\n });\n tForm.querySelectorAll('textarea').forEach(function (ele) {\n ele.addEventListener('input', function () {\n if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n });\n ele.addEventListener('blur', function () {\n if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n });\n });\n }\n }\n\n // ***FORM SUBMIT VALID FORM ***\n function _submitValidatedForm(form, submitter, submitterText) {\n var formData = new FormData(form);\n var action = form.getAttribute(\"action\");\n var errormsg = \"\\n\";\n var fetcher = new SnhuFetchUtil({\n defaultTimeout: 11000\n });\n fetcher.post(action, formData).then(function (data) {\n if (!data.success) {\n if (data.errors !== undefined && data.errors !== null) {\n for (var _i = 0, _Object$entries = Object.entries(data.errors); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n value = _Object$entries$_i[1];\n errormsg += \"\\n\" + value;\n var ele = document.getElementsByName(key);\n if (ele.length > 0) {\n if (ele[0].type === 'checkbox' || ele[0].type === 'radio') {\n _checkboxValidity(ele[0]);\n } else {\n _elementInvalid(ele[0]);\n }\n }\n }\n }\n if (submitter !== null) {\n submitter.innerHTML = submitterText;\n submitter.disabled = false;\n }\n alert('Form submit failed. Try again.' + errormsg); /* eslint-disable-line no-alert */\n } else {\n //set the thankYouPage here in case we error. We still want to send to TY page if there is an error\n var thankYouPage = data.thankyoupage;\n\n //if there's no thank you page defined, set it to the generic one\n if (!thankYouPage) {\n thankYouPage = window.location.origin + '/thankyou';\n }\n Promise.all([ThankYouCookie.storeThankYouValues(form, data), EcommerceCookie.setEcommerceCookie(data), FormSubmitCookie.setFormSubmitCookie(form, data)]).catch(function () {\n window.location.replace(thankYouPage);\n }).finally(function () {\n window.location.replace(thankYouPage);\n });\n }\n return data;\n }).catch(function () {\n var errorTYP = document.getElementById('errorTYP') ? document.getElementById('errorTYP').textContent : null;\n if (errorTYP !== null && errorTYP !== '') {\n window.location.replace(errorTYP);\n } else {\n alert('Sorry, there has been an error with this page. Please try again later or call 888.387.0864 for assistance.'); /* eslint-disable-line no-alert */\n\n if (submitter !== null) {\n submitter.innerHTML = submitterText;\n submitter.disabled = false;\n }\n }\n });\n }\n\n //validate all fields in the form\n //pass the form or object to be validated\n function _validateFormFields(form) {\n var tForm = form;\n var te = \"\";\n var entireError = \"\";\n var isValidForm = true;\n tForm.querySelectorAll('span.error.invalid-feedback').forEach(function (ele) {\n if (ele.offsetParent !== null && ele.nextSibling === null && ele.previousSibling === null && ele.offsetParent.id !== 'prevCollege') {\n isValidForm = false;\n entireError += ele.textContent + '\\n';\n }\n });\n tForm.querySelectorAll('input:not([type=\"hidden\"]):not([data=\"hpfield\"]):not([disabled])').forEach(function (ele) {\n if (ele.hasAttribute('required')) {\n if (ele.type === 'checkbox' || ele.type === 'radio') {\n //extra checking for checkboxes to determine if group\n if (ele.offsetParent !== null) {\n te = _checkboxValidity(ele);\n if (entireError.indexOf(te) < 0) {\n entireError += te;\n isValidForm = false;\n }\n }\n } else if (ele.validity.valid) {\n _elementValid(ele);\n } else {\n if (ele.offsetParent !== null) {\n isValidForm = false;\n te = _elementInvalid(ele);\n if (entireError.indexOf(te) < 0) {\n entireError += te;\n }\n }\n }\n }\n\n // hardcoded holiday and weekend validation for visit form\n if (ele.hasAttribute('data-weekday-picker') && ele.value !== '' && ele.offsetParent !== null) {\n var filterDateEle = document.querySelector('[data-weekday-dates]'); //hidden element with the dates\n var filterDates = filterDateEle.value; // list of holidays and other closed dates\n var dateErrorMsg = filterDateEle.dataset.errorMsg; // error message\n\n // check against the list of dates\n if (filterDates !== null) {\n if (filterDates.includes(ele.value)) {\n _elementInvalid(ele);\n entireError += dateErrorMsg + ' \\n';\n isValidForm = false;\n }\n }\n\n // check weekends\n var dt = new Date(ele.value);\n var sunday = 0;\n var saturday = 6;\n if (dt.getDay() === sunday || dt.getDay() === saturday) {\n _elementInvalid(ele);\n entireError += dateErrorMsg + ' \\n';\n isValidForm = false;\n }\n\n // check past dates\n if (dt < new Date()) {\n _elementInvalid(ele);\n entireError += dateErrorMsg + ' \\n';\n isValidForm = false;\n }\n }\n\n //date of birth field validation\n if (ele.autocomplete === dobAutoCompleteValue) {\n if (!_validateDateOfBirth(ele.value)) {\n _elementInvalid(ele, dobNotOldEnoughMessage);\n entireError += dobNotOldEnoughMessage + ' \\n';\n isValidForm = false;\n }\n }\n });\n tForm.querySelectorAll('select').forEach(function (ele) {\n if (ele.checkValidity() && (!ele.hasAttribute('required') || ele.hasAttribute('required') && ele.options[ele.selectedIndex].value !== '')) {\n _elementValid(ele);\n } else if (ele.offsetParent !== null) {\n isValidForm = false;\n entireError += _elementInvalid(ele);\n }\n });\n tForm.querySelectorAll('textarea:not([disabled])').forEach(function (ele) {\n if (ele.validity.valid) {\n _elementValid(ele);\n } else if (ele.offsetParent !== null) {\n isValidForm = false;\n entireError += _elementInvalid(ele);\n }\n });\n return {\n \"isValidForm\": isValidForm,\n \"Message\": entireError\n };\n }\n\n // ***FORM inline validation ***\n function _addFormValidation(form) {\n var tForm = form;\n tForm.addEventListener('submit', function (event) {\n event.preventDefault();\n var isValidForm = true;\n var entireError = \"\";\n var submitter = tForm.querySelector('button[type=\"submit\"]');\n var submitterText = submitter.firstChild.nodeValue;\n submitter.disabled = true;\n submitter.innerHTML = '';\n var formValidator = _validateFormFields(tForm);\n isValidForm = formValidator.isValidForm;\n entireError = formValidator.Message;\n if (isValidForm) {\n _submitValidatedForm(tForm, submitter, submitterText);\n } else {\n submitter.innerHTML = submitterText;\n submitter.disabled = false;\n alert(entireError + '\\n'); /* eslint-disable-line no-alert */\n }\n });\n }\n\n // ***Validate element by ID***\n function _validateElementById(id) {\n var ele = document.getElementById(id);\n if (ele) {\n if (ele.type === 'select-one') {\n if (ele.checkValidity() && (!ele.hasAttribute('required') || ele.hasAttribute('required') && ele.options[ele.selectedIndex].value !== '')) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n }\n if (ele.type === 'text') {\n if (ele.checkValidity()) {\n _elementValid(ele);\n } else {\n _elementInvalid(ele);\n }\n }\n }\n }\n function _validateCascade(location, degree, category, expAch, country) {\n var allValid = true;\n if (location !== \"\" && document.getElementById(location).value !== \"\") {\n _validateElementById(location);\n } else {\n allValid = false;\n }\n if (degree !== \"\" && document.getElementById(degree).value !== \"\") {\n _validateElementById(degree);\n } else {\n allValid = false;\n }\n if (category !== \"\" && document.getElementById(category).value !== \"\") {\n _validateElementById(category);\n } else {\n allValid = false;\n }\n if (expAch !== \"\" && document.getElementById(expAch).value !== \"\") {\n _validateElementById(expAch);\n } else {\n allValid = false;\n }\n if (country !== \"\" && document.getElementById(country).value !== \"\") {\n _validateElementById(country);\n }\n return allValid;\n }\n function _hideField(id) {\n var ele = document.getElementById(id);\n var wrap = ele.closest('div.form-group');\n wrap.style.display = \"none\";\n }\n return {\n elementValid: _elementValid,\n checkboxValidity: _checkboxValidity,\n checkInputLabels: _checkInputLabels,\n validateDateOfBirth: _validateDateOfBirth,\n addElementValidation: _addElementValidation,\n submitValidatedForm: _submitValidatedForm,\n addFormValidation: _addFormValidation,\n validateElementById: _validateElementById,\n hideField: _hideField,\n validateFormFields: _validateFormFields,\n removeValidation: _removeValidation,\n validateCascade: _validateCascade\n };\n}();\nif (typeof exports !== 'undefined') {\n module.exports = forms;\n}\nwindow.addEventListener('load', function () {\n document.querySelectorAll('form:not([data-novalidation=\"true\"])').forEach(function (form) {\n //move labels on back button\n forms.addElementValidation(form);\n forms.addFormValidation(form);\n window.addEventListener('load', function () {\n forms.checkInputLabels(form);\n });\n });\n});\n/* global CookieProvider */\nvar FormUtilities = /*#__PURE__*/function () {\n function FormUtilities(form) {\n _classCallCheck(this, FormUtilities);\n this.form = form;\n }\n return _createClass(FormUtilities, [{\n key: \"getFormType\",\n value: function getFormType() {\n if (!this.form || !this.form.dataset) {\n return '';\n }\n var dataFormType = this.form.dataset.formtype;\n\n /* eslint-disable indent */\n /* eslint-disable no-nested-ternary */\n return !dataFormType ? '' : dataFormType.indexOf('app') > 0 ? 'app' : dataFormType.indexOf('inq') > 0 ? 'inq' : dataFormType;\n /* eslint-enable indent */\n /* eslint-disable no-nested-ternary */\n }\n }, {\n key: \"getFormSource\",\n value: function getFormSource(snhuCookieProvider) {\n if (!this.form) {\n return '';\n }\n\n /* istanbul ignore next*/\n var snhuEconCookie = snhuCookieProvider || new CookieProvider();\n\n // The cookie name - 'snhuEconTrasation' - is\n // intentionally spelled incorrectly here.\n var cookieVals = snhuEconCookie.getValueAsJson(\"snhuEconTransation\");\n return cookieVals && cookieVals.formsource ? cookieVals.formsource : '';\n }\n\n // eslint-disable-next-line class-methods-use-this\n }, {\n key: \"isPrepopulated\",\n value: function isPrepopulated(snhuCookieProvider) {\n if (!this.form) {\n return false;\n }\n\n /* istanbul ignore next*/\n var snhuProgramCookie = snhuCookieProvider || new CookieProvider();\n return snhuProgramCookie.getValueAsString(\"SNHUProgramId\") ? true : false;\n }\n }]);\n}();\n/* istanbul ignore next*/\nif (typeof exports !== 'undefined') {\n module.exports = FormUtilities;\n}\n/**\r\n * Source code adapted from: https://www.w3.org/TR/2016/WD-wai-aria-practices-1.1-20160317/examples/radio/js/radio.js\r\n */\n(function () {\n var groupSelector = 'fieldset';\n var buttonSelector = '[type=radio]';\n\n /*\r\n * @function setRadioButton\r\n *\r\n * @desc Toogles the state of a radio button\r\n *\r\n * @param {Object} event - Standard W3C event object\r\n *\r\n */\n function setRadioButton(node, state) {\n if (state) {\n node.tabIndex = 0;\n } else {\n node.tabIndex = -1;\n }\n node.checked = state;\n }\n\n /*\r\n * @function keyDownRadioGroup\r\n *\r\n * @desc\r\n *\r\n * @param {Object} node - DOM node of updated group radio buttons\r\n */\n function keyDownRadioGroup(event) {\n var type = event.type;\n if (type === \"keydown\") {\n var node = event.currentTarget;\n var next = false;\n var spaceKeyCode = 'Space';\n switch (event.key) {\n case 'Spacebar':\n next = node;\n break;\n default:\n if (event.code === spaceKeyCode) {\n next = node;\n break;\n } else {\n next = false;\n }\n }\n if (next) {\n var radiogroup = node.parentElement.parentElement.querySelectorAll(buttonSelector);\n for (var i = 0; i < radiogroup.length; i++) {\n setRadioButton(radiogroup[i], radiogroup[i] === next);\n if (radiogroup[i] === next) {\n radiogroup[i].focus();\n }\n }\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n /*\r\n * @function focusRadioButton\r\n *\r\n * @desc Adds focus styling to label element encapsulating standard radio button\r\n *\r\n * @param {Object} event - Standard W3C event object\r\n */\n function focusRadioButton(event) {\n // If focused radio is not checked\n if (!event.currentTarget.checked) {\n var radiogroup = event.currentTarget.closest(groupSelector).querySelectorAll(buttonSelector);\n for (var i = 0; i < radiogroup.length; i++) {\n if (radiogroup[i] === event.currentTarget) {\n radiogroup[i].tabIndex = 0;\n } else {\n setRadioButton(radiogroup[i], false);\n }\n }\n }\n }\n\n /*\r\n * @function clickRadioGroup\r\n *\r\n * @desc\r\n *\r\n * @param {Object} node - DOM node of updated group radio buttons\r\n */\n\n function clickRadioButton(event) {\n if (event.type === 'click') {\n var radiogroup = event.currentTarget.closest(groupSelector).querySelectorAll(buttonSelector);\n for (var i = 0; i < radiogroup.length; i++) {\n setRadioButton(radiogroup[i], radiogroup[i] === event.currentTarget);\n if (radiogroup[i] === event.currentTarget) {\n radiogroup[i].focus();\n }\n }\n }\n }\n window.addEventListener('load', function () {\n var radiobuttons = document.querySelectorAll(buttonSelector);\n for (var i = 0; i < radiobuttons.length; i++) {\n var rb = radiobuttons[i];\n rb.addEventListener('keydown', keyDownRadioGroup);\n rb.addEventListener('focus', focusRadioButton);\n rb.addEventListener('click', clickRadioButton);\n var firstRadio = rb.closest(groupSelector).querySelector(buttonSelector);\n if (rb !== firstRadio && rb.checked) {\n // For radio buttons checked on page load that are not the first item\n rb.tabIndex = 0;\n firstRadio.tabIndex = -1;\n } else if (rb !== firstRadio) {\n rb.tabIndex = -1;\n }\n }\n });\n})();\n\n/*!\r\n * Serialize all form data into a query string\r\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\r\n * @param {Node} form The form to serialize\r\n * @return {String} The serialized form data\r\n */\nvar serialize = function serialize(form) {\n /*eslint-disable-line no-unused-vars*/\n\n // Setup our serialized data\n var serialized = [];\n\n // Loop through each field in the form\n for (var i = 0; i < form.elements.length; i++) {\n var field = form.elements[i];\n\n // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\n if (!field.name || field.disabled || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') {\n continue;\n }\n\n // If a multi-select, get all selections\n if (field.type === 'select-multiple') {\n for (var n = 0; n < field.options.length; n++) {\n if (!field.options[n].selected) {\n continue;\n }\n serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.options[n].value));\n }\n } else if (field.type !== 'checkbox' && field.type !== 'radio' || field.checked) {\n /*eslint-disable-line no-extra-parens*/ // Convert field data to a query string\n serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.value));\n }\n }\n return serialized.join('&');\n};\nif (typeof exports !== 'undefined') {\n module.exports = serialize;\n}\n/**\r\n * Used to control the display of the spin wheel native to iOS devices with small screen widths\r\n */\nvar SpinWheelController = /*#__PURE__*/function () {\n /**\r\n * Constructor SpinWheelController\r\n */\n function SpinWheelController() {\n _classCallCheck(this, SpinWheelController);\n this._lastWidth = SpinWheelController.breakpoint;\n }\n\n /**\r\n * Returns the last screen width recorded by the controller\r\n * @return int\r\n */\n return _createClass(SpinWheelController, [{\n key: \"lastWidth\",\n get: function get() {\n return this._lastWidth;\n }\n\n /**\r\n * Sets the lastWidth variable to a new value\r\n * @param width int\r\n */,\n set: function set(width) {\n this._lastWidth = width;\n }\n\n /**\r\n * Returns the breakpoint used to determine if optgroup should be added to selects.\r\n * @return int\r\n */\n }, {\n key: \"optimizeSelects\",\n value:\n /**\r\n * Optimizes the select elements based on breakpoint, if less than the breakpoint add the optgroup tag\r\n * @param {NodeList} selects\r\n * @param {int} width\r\n */\n function optimizeSelects(selects, width) {\n var movedAboveBreakpoint = width >= SpinWheelController.breakpoint && SpinWheelController.breakpoint > this.lastWidth;\n var movedBelowBreakpoint = width < SpinWheelController.breakpoint && SpinWheelController.breakpoint <= this.lastWidth;\n if (movedAboveBreakpoint) {\n selects.forEach(function (select) {\n SpinWheelController.removeOptgroup(select);\n });\n } else if (movedBelowBreakpoint) {\n selects.forEach(function (select) {\n SpinWheelController.addOptgroup(select);\n });\n }\n this.lastWidth = width;\n }\n }], [{\n key: \"breakpoint\",\n get: function get() {\n var smBreakpoint = 576; // equivalent to bootstrap's small breakpoint\n return smBreakpoint;\n }\n\n /**\r\n * Returns the hook class JavaScript methods use to find the optgroup\r\n * @return String\r\n */\n }, {\n key: \"hookClass\",\n get: function get() {\n return 'js-sw-only';\n }\n\n /**\r\n * Returns the optgroup markup used to manipulate the scroll wheel\r\n * @return String\r\n */\n }, {\n key: \"optgroupMarkup\",\n get: function get() {\n return '';\n }\n\n /**\r\n * Add optgroup markup as the last child of the select element\r\n * @param {Node} select\r\n */\n }, {\n key: \"addOptgroup\",\n value: function addOptgroup(select) {\n select.insertAdjacentHTML('beforeend', SpinWheelController.optgroupMarkup);\n }\n\n /**\r\n * Removes the optgroup that controls the scoll wheel if present\r\n * @param {Node} select\r\n */\n }, {\n key: \"removeOptgroup\",\n value: function removeOptgroup(select) {\n // Check to ensure the last child in select element is the scroll wheel optgroup\n if (select.lastChild.classList.contains(SpinWheelController.hookClass)) {\n select.removeChild(select.lastChild);\n }\n }\n }]);\n}(); // Export for Unit Testing\nif (typeof exports !== 'undefined') {\n module.exports = SpinWheelController;\n}\n\n// IIFE\n(function () {\n window.addEventListener('load', function () {\n // Checks if there is at least one select tag in the document\n if (document.querySelector('select') !== null) {\n var controller = new SpinWheelController();\n var selects = document.querySelectorAll('select');\n controller.optimizeSelects(selects, window.innerWidth);\n window.addEventListener('resize', function () {\n controller.optimizeSelects(selects, window.innerWidth);\n });\n }\n });\n})();\n/**\r\n * Static class used to hold data for the thank you page dataa\r\n */\nvar ThankYouPageData = /*#__PURE__*/function () {\n function ThankYouPageData() {\n _classCallCheck(this, ThankYouPageData);\n }\n return _createClass(ThankYouPageData, null, [{\n key: \"transport\",\n value: /* eslint-disable-line no-unused-vars */\n\n /**\r\n * Transports the id data from the cshtml to the DOM as data attributes for the form code to find.\r\n * @param {String} firstName id of input field with first name value\r\n * @param {String} lastName id of input field with last name value\r\n * @param {String} programName id of select field with program name value\r\n */\n function transport(firstName, lastName, programName) {\n // Grabs the nodes for the inputs to see if they exist\n var firstNameNode = document.getElementById(firstName);\n var lastNameNode = document.getElementById(lastName);\n var programNameNode = document.getElementById(programName);\n if (firstNameNode !== null && lastNameNode !== null && programNameNode !== null) {\n // Checks to make sure all fields have the same parent form, reject operation if any are not true\n var firstLastSameForm = firstNameNode.closest('form') === lastNameNode.closest('form');\n var firstProgSameForm = firstNameNode.closest('form') === programNameNode.closest('form');\n var lastProgSameForm = lastNameNode.closest('form') === programNameNode.closest('form');\n if (firstLastSameForm && firstProgSameForm && lastProgSameForm) {\n // Grabs the parent form\n var targetForm = firstNameNode.closest('form');\n\n // Add data attributes to the form storing the ids of the required fields.\n targetForm.setAttribute('data-tyc-fname', firstName);\n targetForm.setAttribute('data-tyc-lname', lastName);\n targetForm.setAttribute('data-tyc-pname', programName);\n }\n }\n }\n }]);\n}(); // Export for Unit Testing\nif (typeof exports !== 'undefined') {\n module.exports = ThankYouPageData;\n}\n// We need to add required to the `inqAppCitizenshipCountry` select\n// if the INTL STUDENT radio button is true\nvar AppForm = /*#__PURE__*/function () {\n function AppForm() {\n _classCallCheck(this, AppForm);\n }\n return _createClass(AppForm, null, [{\n key: \"addListeners\",\n value: function addListeners() {\n window.addEventListener('load', function () {\n var countrySelect = document.getElementById('inqAppCitizenshipCountry');\n if (countrySelect !== null) {\n var visaRadioBtns = countrySelect.closest('.form-group').previousElementSibling.querySelectorAll('input[name=\"inqAppInternationalStudent\"]');\n if (visaRadioBtns !== null) {\n var negativeOne = -1;\n Array.from(visaRadioBtns).forEach(function (btn) {\n btn.addEventListener('click', function (event) {\n if (event.target.value.toLowerCase().indexOf('yes') !== negativeOne) {\n countrySelect.setAttribute('required', 'required');\n } else {\n countrySelect.removeAttribute('required');\n }\n });\n });\n }\n }\n });\n }\n }]);\n}(); // export as a module for unit testing\nif (typeof exports !== 'undefined') {\n module.exports = AppForm;\n}\n(function () {\n if (document.getElementById('inqAppCitizenshipCountry') !== undefined) {\n AppForm.addListeners();\n }\n})();\nvar pfFiltersController = /*#__PURE__*/function () {\n /**\r\n * Constructor takes in current window width as parameter.\r\n * @param {int} windowWidth\r\n */\n function pfFiltersController(windowWidth) {\n _classCallCheck(this, pfFiltersController);\n this.windowWidth = windowWidth;\n this.breakpoint = 992;\n this.buttonQueryString = '.pf-filters .accordion-item:not(.location-item) .accordion-heading button';\n this.panelQueryString = '.pf-filters .accordion-item:not(.location-item) .accordion-panel';\n }\n\n /**\r\n * Adds listeners to trigger controller functions based on the event.\r\n */\n return _createClass(pfFiltersController, [{\n key: \"bindListeners\",\n value: function bindListeners() {\n var _this = this;\n // Listen on page load\n window.addEventListener('load', function () {\n _this.setView(window.innerWidth);\n });\n\n // Listen on window resize\n window.addEventListener(\"resize\", function () {\n _this.checkWindowWidth(window.innerWidth);\n });\n }\n\n /**\r\n * Checks if window size has passed breakpoint, if so set the filter view and header content accordingly\r\n * @param {int} width\r\n */\n }, {\n key: \"checkWindowWidth\",\n value: function checkWindowWidth(width) {\n var mobileToDesktop = width >= this.breakpoint && this.windowWidth < this.breakpoint;\n var desktopToMobile = width < this.breakpoint && this.windowWidth >= this.breakpoint;\n if (mobileToDesktop || desktopToMobile) {\n this.setView(width);\n } else {\n this.windowWidth = width;\n }\n }\n\n /**\r\n * Based on given width, assigns whether filters should have mobile or desktop layout\r\n * @param {int} width\r\n */\n }, {\n key: \"setView\",\n value: function setView(width) {\n this.setAttributes(width < this.breakpoint);\n this.windowWidth = width;\n }\n\n /**\r\n * Sets the appropriate attributes for the filter accordions based on boolean parameter\r\n * @param {boolean} isMobile\r\n */\n }, {\n key: \"setAttributes\",\n value: function setAttributes(isMobile) {\n var buttons = document.querySelectorAll(this.buttonQueryString);\n buttons.forEach(function (button) {\n button.tabIndex = isMobile ? \"0\" : \"-1\";\n button.setAttribute('aria-expanded', isMobile ? 'false' : 'true');\n });\n var panels = document.querySelectorAll(this.panelQueryString);\n if (isMobile) {\n panels.forEach(function (panel) {\n panel.setAttribute('hidden', '');\n });\n } else {\n panels.forEach(function (panel) {\n panel.removeAttribute('hidden');\n });\n }\n var programs = document.querySelectorAll('.program-finder-results-table .program-name a');\n programs.forEach(function (program) {\n program.tabIndex = isMobile ? \"0\" : \"-1\";\n });\n var concentrations = document.querySelectorAll('.program-finder-results-table .program-concentration a');\n concentrations.forEach(function (concentration) {\n concentration.tabIndex = isMobile ? \"0\" : \"-1\";\n });\n }\n }]);\n}(); // export as a module for unit testing\nif (typeof exports !== 'undefined') {\n module.exports = pfFiltersController;\n}\n\n// Initialize and run in IIFE\n(function () {\n var windowWidth = window.innerWidth;\n var controller = new pfFiltersController(windowWidth);\n controller.bindListeners();\n})();\nvar FormStartFactory = /*#__PURE__*/function () {\n function FormStartFactory(formType, prepopulated, formSource) {\n _classCallCheck(this, FormStartFactory);\n this.formType = formType;\n this.prepopulated = prepopulated;\n this.formSource = formSource || \"\";\n }\n return _createClass(FormStartFactory, [{\n key: \"create\",\n value: function create() {\n return {\n 'form': {\n 'form_type': this.formType,\n 'form_prepopulated': this.prepopulated,\n 'form_source': this.formSource\n }\n };\n }\n }]);\n}();\n/* istanbul ignore next */\nif (typeof exports !== 'undefined') {\n module.exports = FormStartFactory;\n}\n/* global FormStartFactory */\n/* global GA4EventFactory */\n/* global FormUtilities */\nvar FormsController = /*#__PURE__*/function () {\n function FormsController(form, ga4Event, formStart) {\n _classCallCheck(this, FormsController);\n this.form = form;\n this.ga4Event = ga4Event || new GA4EventFactory();\n this.formStart = formStart || new FormStartFactory();\n }\n return _createClass(FormsController, [{\n key: \"FormStartEvent\",\n value: function FormStartEvent() {\n var formData = this.formStart.create();\n this.ga4Event.create(formData);\n }\n }]);\n}();\nif (typeof exports !== 'undefined') {\n module.exports = FormsController;\n}\nwindow.addEventListener('load', function () {\n var form = document.querySelector('form[data-formtype]');\n if (!form) {\n return;\n }\n var formUtilities = new FormUtilities(form);\n var ga4Event = new GA4EventFactory('form_start');\n var formStart = new FormStartFactory(formUtilities.getFormType(), formUtilities.isPrepopulated(), formUtilities.getFormSource());\n var formscontroller = new FormsController(form, ga4Event, formStart);\n var formelements = formscontroller.form.elements;\n\n //we have to add this function here so we can add it to the addEventListener and then when called removeEventListener\n var _ga4FormStart = function ga4FormStart() {\n formscontroller.FormStartEvent();\n for (var i = 0; i < formelements.length; i++) {\n formelements[i].removeEventListener('blur', _ga4FormStart);\n }\n };\n for (var i = 0; i < formelements.length; i++) {\n formelements[i].addEventListener('blur', _ga4FormStart);\n }\n});"]}