{"version":3,"file":"sitejs.js","mappings":"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","sources":["webpack://TestMasters/./src/js/site/campusdetails.ts","webpack://TestMasters/./src/js/site/campusorgdetails.ts","webpack://TestMasters/./src/js/site/dropdowncontainerlist.ts","webpack://TestMasters/./src/js/site/formhelper.ts","webpack://TestMasters/./src/js/site/formtools.ts","webpack://TestMasters/./src/js/site/mailingeventlist.ts","webpack://TestMasters/./src/js/site/marketingschedulemonth.ts","webpack://TestMasters/./src/js/site/standard.ts","webpack://TestMasters/./src/js/site/statusalert.ts","webpack://TestMasters/external var \"jQuery\"","webpack://TestMasters/webpack/bootstrap","webpack://TestMasters/./src/js/site.ts"],"sourcesContent":["import * as $ from 'jquery';\r\n\r\n// This doesn't do much anymore!\r\nexport class CampusDetails {\r\n campusID: number;\r\n\r\n constructor(cid: number) {\r\n this.campusID = cid;\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\nimport { setupShowButton, getParameterByName } from \"./standard\";\r\n\r\nexport class CampusOrgDetails {\r\n constructor() {\r\n setupShowButton($('#butAttachmentShow'), $('.hiddenattach'));\r\n setupShowButton($('#butMembersShow'), $('.hiddenmembers'));\r\n setupShowButton($('#butPartnerShow'), $('.hiddenpartner'));\r\n setupShowButton($('#butScholarshipShow'), $('.hiddenscholarships'));\r\n setupShowButton($('#butLogShow'), $('.hiddenlog'));\r\n setupShowButton($('#butShowHiddenStudentContacts'), $('#contactstudent .hiddencontact'), \" Hidden\");\r\n setupShowButton($('#butShowInactiveStudentContacts'), $('#contactstudent .inactivecontact'), \" Inactive\");\r\n setupShowButton($('#butShowHiddenFacultyContacts'), $('#contactofficer .hiddencontact'), \" Hidden\");\r\n setupShowButton($('#butShowInactiveFacultyContacts'), $('#contactofficer .inactivecontact'), \" Inactive\");\r\n setupShowButton($('#butShowHiddenMembership'), $('.membershipline:hidden'), \" Hidden\");\r\n\r\n const paramShow = getParameterByName(\"show\");\r\n if (paramShow == 'addcontactstudent') {\r\n $('#butShowHiddenStudentContacts').trigger(\"click\");\r\n } else if (paramShow == 'addcontactfaculty') {\r\n $('#butShowHiddenFacultyContacts').trigger(\"click\");\r\n }\r\n\r\n this.setupTermExpand();\r\n }\r\n\r\n setupTermExpand() {\r\n $('.info-term').on(\"click\", function () {\r\n const $tr = $(this).closest(\"tr\");\r\n const nextclass = $tr.attr('class');\r\n const $trnext = $tr.next();\r\n if ($trnext.length == 0 || !$trnext.hasClass(\"info-data\")) {\r\n const corgtermid = parseInt($(this).data(\"id\"));\r\n //console.log(\"id:\" + corgtermid);\r\n\r\n const $trnext = $(\"
\");\r\n $trnext.insertAfter($tr);\r\n\r\n $.post(\"/campus/CampusOrgTermExpand.ashx?CampusOrgTermID=\" + corgtermid, function (data) {\r\n let datatable = \"\";\r\n\r\n if (data.length > 0) {\r\n\r\n $.each(data, function (index, value) {\r\n datatable += \"\";\r\n });\r\n }\r\n else {\r\n datatable += \"\";\r\n }\r\n\r\n datatable += '
\" +\r\n value.caption + \":\" +\r\n value.value + \"
No additional information.
';\r\n const $datainfo = $trnext.find(\".inside\");\r\n $datainfo.append(datatable);\r\n });\r\n\r\n }\r\n\r\n $trnext.toggleClass(\"expand\");\r\n });\r\n }\r\n\r\n setupMemberSort($members: JQuery) {\r\n const self = this;\r\n $('#ddSort').on(\"change\", function () {\r\n const rows = $members.find(\"tr.dgItem,tr.dgItemAlt\").get();\r\n let compare = self.compareName;\r\n switch ($(this).val()) {\r\n case \"name\":\r\n compare = self.compareName;\r\n break;\r\n case \"grad\":\r\n compare = self.compareGradYear;\r\n break;\r\n case \"date\":\r\n compare = self.compareDate;\r\n break;\r\n }\r\n rows.sort(compare);\r\n for (var row of rows) {\r\n $members.children().append(row);\r\n }\r\n });\r\n }\r\n\r\n setupFavorite(campusOrganizationID: number, instructorID: number) {\r\n const $favbutton = $('#orgfavorite');\r\n\r\n const checkData = {\r\n CampusOrgID: campusOrganizationID,\r\n InstructorID: instructorID,\r\n };\r\n\r\n $.post(\"CampusOrgFavoriteGet.ashx\", JSON.stringify(checkData), function (data) {\r\n const isFavorite = parseInt(data) != 0;\r\n $favbutton.toggleClass('checked', isFavorite);\r\n });\r\n\r\n $favbutton.on(\"click\", function () {\r\n const isChecked = $favbutton.hasClass('checked');\r\n const newChecked = !isChecked;\r\n $favbutton.toggleClass('checked', newChecked);\r\n\r\n const sendData = {\r\n CampusOrgID: campusOrganizationID,\r\n InstructorID: instructorID,\r\n set: newChecked\r\n };\r\n\r\n $.post(\"CampusOrgFavoriteChange.ashx\", JSON.stringify(sendData), function (data) {\r\n // do nothing\r\n });\r\n })\r\n }\r\n\r\n // compare by added date\r\n compareDate(a: HTMLElement, b: HTMLElement): number {\r\n const A = new Date($(a).children('td').eq(3).text());\r\n const B = new Date($(b).children('td').eq(3).text());\r\n if (A > B) {\r\n return -1;\r\n }\r\n if (A < B) {\r\n return 1;\r\n }\r\n return this.compareName(a, b);\r\n }\r\n\r\n // compare by grad year\r\n compareGradYear(a: HTMLElement, b: HTMLElement): number {\r\n let A = parseInt($(a).children('td').eq(2).text());\r\n let B = parseInt($(b).children('td').eq(2).text());\r\n\r\n if (!A) { A = 0; }\r\n if (!B) { B = 0; }\r\n\r\n if (A > B) {\r\n return -1;\r\n }\r\n if (A < B) {\r\n return 1;\r\n }\r\n return this.compareName(a, b);\r\n }\r\n\r\n // compare by name\r\n compareName(a: HTMLElement, b: HTMLElement): number {\r\n const A = $(a).children('td').eq(0).text().toUpperCase();\r\n const B = $(b).children('td').eq(0).text().toUpperCase();\r\n if (A < B) {\r\n return -1;\r\n }\r\n if (A > B) {\r\n return 1;\r\n }\r\n let A2 = $(a).children('td').eq(1).text().toUpperCase();\r\n let B2 = $(b).children('td').eq(1).text().toUpperCase();\r\n if (A2 < B2) {\r\n return -1;\r\n }\r\n if (A2 > B2) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","export interface DropDownContainerItem {\r\n container: JQuery;\r\n dropdown: JQuery;\r\n textbox: JQuery;\r\n buttonafter: JQuery;\r\n}\r\n\r\nexport class DropDownContainerList {\r\n lastSelected: number;\r\n containerList: Array;\r\n $expandButton: JQuery;\r\n\r\n constructor(ddContainerList: Array) {\r\n this.containerList = ddContainerList;\r\n this.lastSelected = 0;\r\n }\r\n\r\n setup() {\r\n // first thing is to see which dropdowns contain something. Hide the last one.\r\n for (var idx = 1; idx < this.containerList.length; ++idx) {\r\n const $dd = this.containerList[idx].dropdown;\r\n if ($dd) {\r\n const ddEl = ($dd[0]);\r\n const selectedindex = ddEl.selectedIndex;\r\n if (selectedindex > 0) {\r\n this.lastSelected = idx;\r\n }\r\n }\r\n const $txt = this.containerList[idx].textbox;\r\n if ($txt && $txt.val()) {\r\n this.lastSelected = idx;\r\n }\r\n\r\n }\r\n\r\n if (this.lastSelected >= this.containerList.length - 1) {\r\n return;\r\n }\r\n\r\n // hide everything after last selected\r\n for (idx = 0; idx < this.containerList.length; ++idx) {\r\n const $container = this.containerList[idx].container;\r\n if (idx >= this.lastSelected + 1) {\r\n $container.hide();\r\n }\r\n else {\r\n $container.show();\r\n }\r\n }\r\n\r\n // add expand button\r\n const self = this;\r\n let $ddFirst: JQuery;\r\n const firstContainer = this.containerList[0];\r\n if (firstContainer.buttonafter) {\r\n $ddFirst = firstContainer.buttonafter;\r\n }\r\n else if (firstContainer.dropdown) {\r\n $ddFirst = firstContainer.dropdown;\r\n }\r\n else {\r\n $ddFirst = firstContainer.textbox;\r\n }\r\n if ($ddFirst) {\r\n this.$expandButton = $(\"\");\r\n $ddFirst.after(this.$expandButton);\r\n this.$expandButton.on(\"click\", function () { self.doExpand(); });\r\n }\r\n }\r\n\r\n doExpand() {\r\n this.lastSelected++;\r\n this.containerList[this.lastSelected].container.show();\r\n if (this.lastSelected >= this.containerList.length - 1) {\r\n this.$expandButton.hide();\r\n }\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) 2024 Brett Kelts- 2024-09-18\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nexport interface IFormHelper {\r\n // you can pass in a selector or the actual elements\r\n form: string | HTMLFormElement;\r\n submitButton?: string | HTMLInputElement | HTMLButtonElement;\r\n}\r\n\r\n// valid elements\r\ntype FieldElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\r\n\r\ninterface IValidationElement {\r\n field: FieldElement;\r\n messageField?: Element;\r\n requiredMessage?: string;\r\n phoneMessage?: string;\r\n emailMessage?: string;\r\n creditcardMessage?: string; // this currently doesn't do anything!\r\n regexMessage?: string;\r\n maxlengthMessage?: string;\r\n minlengthMessage?: string;\r\n}\r\n\r\ntype doFixup = (validElement: IValidationElement, attrval: string) => void;\r\n\r\nconst fixups: { [attrkey: string]: doFixup } = {\r\n \"data-val-required\": (validElement, attrval) => {\r\n validElement.requiredMessage = attrval;\r\n validElement.field.setAttribute('required', '');\r\n },\r\n \"data-val-email\": (validElement, attrval) => {\r\n validElement.emailMessage = attrval;\r\n },\r\n \"data-val-phone\": (validElement, attrval) => {\r\n validElement.phoneMessage = attrval;\r\n },\r\n \"data-val-creditcard\": (validElement, attrval) => {\r\n validElement.creditcardMessage = attrval;\r\n },\r\n \"data-val-maxlength\": (validElement, attrval) => {\r\n validElement.maxlengthMessage = attrval;\r\n },\r\n \"data-val-maxlength-max\": (validElement, attrval) => {\r\n validElement.field.setAttribute('maxlength', attrval);\r\n },\r\n \"data-val-minlength\": (validElement, attrval) => {\r\n validElement.minlengthMessage = attrval;\r\n },\r\n \"data-val-minlength-min\": (validElement, attrval) => {\r\n validElement.field.setAttribute('minlength', attrval);\r\n },\r\n \"data-val-regex\": (validElement, attrval) => {\r\n validElement.regexMessage = attrval;\r\n },\r\n \"data-val-regex-pattern\": (validElement, attrval) => {\r\n validElement.field.setAttribute('pattern', attrval);\r\n }\r\n}\r\n\r\nconst DEFAULTINVALIDMESSAGE = \"Field is not valid\";\r\n\r\n// Includes various functions to make forms more user friendly\r\n// 100% javascript... no jquery\r\n// related topics: \r\n// https://www.falldowngoboone.com/blog/native-form-validation-with-javascript/\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Constraint_validation\r\nexport class FormHelper {\r\n submitMessage: string;\r\n form: HTMLFormElement;\r\n submitButton: HTMLInputElement | HTMLButtonElement;\r\n isSubmitted: boolean;\r\n checkDoubleSubmit: boolean;\r\n checkValid: boolean;\r\n validationElements: Map;\r\n submitConfirmWarning: string;\r\n\r\n constructor(setup: IFormHelper) {\r\n const self = this;\r\n if (typeof setup.form === 'string') {\r\n this.form = document.querySelector(setup.form);\r\n }\r\n else {\r\n this.form = setup.form;\r\n }\r\n if (this.form) {\r\n if (setup.submitButton) {\r\n if (typeof setup.submitButton === 'string') {\r\n this.submitButton = this.form.querySelector(setup.submitButton);\r\n }\r\n else {\r\n this.submitButton = setup.submitButton;\r\n }\r\n }\r\n else {\r\n this.submitButton = this.form.querySelector('input[type=\"submit\"],button')\r\n }\r\n }\r\n else {\r\n if (setup.submitButton) {\r\n if (typeof setup.submitButton === 'string') {\r\n this.submitButton = document.querySelector(setup.submitButton);\r\n }\r\n else {\r\n this.submitButton = setup.submitButton;\r\n }\r\n }\r\n }\r\n\r\n this.submitMessage = \"(processing)\";\r\n this.checkDoubleSubmit = false;\r\n this.isSubmitted = false;\r\n this.checkValid = false;\r\n this.validationElements = new Map;\r\n this.submitConfirmWarning = null;\r\n\r\n if (this.form) {\r\n this.form.addEventListener('submit', (e) => {\r\n self.submit(e);\r\n });\r\n }\r\n else {\r\n console.warn(\"FormHelper: form element not found.\");\r\n }\r\n }\r\n\r\n // Prevent double-submission\r\n public preventDoubleSubmit() {\r\n this.checkDoubleSubmit = true;\r\n }\r\n\r\n // Add a confirmation popup to verify that you want to submit\r\n // the form?\r\n public addSubmitConfirmWarning(warning: string) {\r\n this.submitConfirmWarning = warning;\r\n }\r\n\r\n // Add the HTML required attribute to fields which have unobtrusive required validation\r\n // setup\r\n public addRequiredAttributes() {\r\n const allfields = this.form.elements;\r\n for (var idxEl = 0; idxEl < allfields.length; ++idxEl) {\r\n const field = allfields[idxEl];\r\n const valrequired = field.getAttribute(\"data-val-required\");\r\n if (valrequired) {\r\n field.setAttribute('required', '');\r\n }\r\n }\r\n }\r\n\r\n // Check all elements for unobtrusive elements\r\n // and try to add our equivalents\r\n public addUnobtrusiveAttributes() {\r\n this.form.noValidate = true;\r\n this.checkValid = true;\r\n const allfields = this.form.elements;\r\n\r\n for (var idxEl = 0; idxEl < allfields.length; ++idxEl) {\r\n const field = allfields[idxEl];\r\n this.addUnobtrusiveField(field);\r\n }\r\n }\r\n\r\n // Called when the form is submitted. \r\n private submit(e: SubmitEvent) {\r\n // we're handling validity checks\r\n if (this.checkValid) {\r\n const isValid = this.form.reportValidity();\r\n if (!isValid) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (this.submitConfirmWarning) {\r\n if (!window.confirm(this.submitConfirmWarning)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (this.checkDoubleSubmit) {\r\n if (this.isSubmitted) {\r\n // Previously submitted - don't submit again\r\n e.preventDefault();\r\n } else {\r\n // Mark it so that the next submit can be ignored\r\n this.isSubmitted = true;\r\n this.showSubmitted();\r\n }\r\n }\r\n }\r\n\r\n private showSubmitted() {\r\n this.submitButton.setAttribute('disabled', '');\r\n if (this.submitMessage) {\r\n if (this.submitButton.nodeName.toLowerCase() === 'button') {\r\n this.submitButton.innerHTML = this.submitMessage;\r\n }\r\n else {\r\n this.submitButton.value = this.submitMessage;\r\n }\r\n }\r\n }\r\n\r\n private addUnobtrusiveField(field: FieldElement) {\r\n if (!FormHelper.isFieldElement(field)) {\r\n return;\r\n }\r\n const self = this;\r\n\r\n const validElement: IValidationElement = {\r\n field: field,\r\n };\r\n\r\n field.addEventListener(\"invalid\", function handleInvalidField(event) {\r\n self.handleInvalid(field, event);\r\n });\r\n\r\n field.addEventListener(\"blur\", function handleFieldBlur() {\r\n const validElement = self.validationElements.get(field);\r\n self.clearErrorMessage(validElement);\r\n field.checkValidity();\r\n });\r\n\r\n // is there a related field that gets any messages that we have?\r\n if (field.name) {\r\n validElement.messageField = this.form.querySelector('[data-valmsg-for=\"' + field.name + '\"]');\r\n }\r\n\r\n var attributes = field.getAttributeNames();\r\n for (const attrkey of attributes) {\r\n const fixfunc = fixups[attrkey];\r\n if (fixfunc) {\r\n fixfunc(validElement, field.getAttribute(attrkey));\r\n }\r\n }\r\n\r\n this.validationElements.set(field, validElement);\r\n }\r\n\r\n private handleInvalid(field: FieldElement, event: Event) {\r\n // find the validElement\r\n event.preventDefault(); // suppress browser error\r\n const validElement = this.validationElements.get(field);\r\n const validity = field.validity;\r\n if (!validity) {\r\n this.setErrorMessage(validElement, null);\r\n return;\r\n }\r\n\r\n // check for missing\r\n if (validity.valueMissing && validElement.requiredMessage) {\r\n this.setErrorMessage(validElement, validElement.requiredMessage);\r\n return;\r\n }\r\n if (validity.typeMismatch) {\r\n if (validElement.emailMessage) {\r\n this.setErrorMessage(validElement, validElement.emailMessage);\r\n return;\r\n }\r\n if (validElement.creditcardMessage) {\r\n this.setErrorMessage(validElement, validElement.creditcardMessage);\r\n return;\r\n }\r\n if (validElement.phoneMessage) {\r\n this.setErrorMessage(validElement, validElement.phoneMessage);\r\n return;\r\n }\r\n }\r\n if (validity.tooLong) {\r\n this.setErrorMessage(validElement, validElement.maxlengthMessage);\r\n return;\r\n }\r\n if (validity.tooShort) {\r\n this.setErrorMessage(validElement, validElement.minlengthMessage);\r\n return;\r\n }\r\n if (validity.patternMismatch && validElement.regexMessage) {\r\n this.setErrorMessage(validElement, validElement.regexMessage);\r\n return;\r\n }\r\n\r\n // default...fall throught\r\n this.setErrorMessage(validElement, null);\r\n }\r\n\r\n private setErrorMessage(validElement: IValidationElement, message: string) {\r\n validElement.field.setAttribute(\"aria-invalid\", \"true\");\r\n validElement.field.classList.add(\"input-validation-error\");\r\n if (validElement.messageField) {\r\n validElement.messageField.innerHTML = message ? message : DEFAULTINVALIDMESSAGE;\r\n validElement.messageField.classList.remove(\"field-validation-valid\");\r\n validElement.messageField.classList.add(\"field-validation-error\");\r\n }\r\n }\r\n\r\n private clearErrorMessage(validElement: IValidationElement) {\r\n validElement.field.removeAttribute(\"aria-invalid\");\r\n validElement.field.classList.remove(\"input-validation-error\");\r\n\r\n if (validElement.messageField) {\r\n validElement.messageField.innerHTML = '';\r\n validElement.messageField.classList.add(\"field-validation-valid\");\r\n validElement.messageField.classList.remove(\"field-validation-error\");\r\n }\r\n }\r\n\r\n // Get the validity attribute. This probably isn't necessary, but just to \r\n // be safe\r\n private static isFieldElement(field: Element): boolean {\r\n if (field instanceof HTMLInputElement ||\r\n field instanceof HTMLSelectElement ||\r\n field instanceof HTMLTextAreaElement) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}","import * as $ from 'jquery';\r\n\r\n// Some common form javascript functions\r\nexport module FormTools {\r\n\r\n export function getToday(): string {\r\n const today = new Date();\r\n const month = today.getMonth() + 1;\r\n const day = today.getDate();\r\n const year = today.getFullYear();\r\n return month + \"/\" + day + \"/\" + year;\r\n }\r\n\r\n export function updateTextActive($text: JQuery, active: boolean) {\r\n if (!active) {\r\n $text.data(\"oldtext\", $text.val());\r\n $text.val(\"\");\r\n } else {\r\n const oldtext = $text.data(\"oldtext\");\r\n if (oldtext) {\r\n $text.val(oldtext);\r\n }\r\n }\r\n $text.prop(\"disabled\", !active);\r\n }\r\n\r\n export function updateRblShowHide($rbl: JQuery, func) {\r\n const active = parseInt($rbl.filter(\":checked\").val()) != 0;\r\n func(active);\r\n };\r\n\r\n export function linkRblShowHide($rbl: JQuery, func) {\r\n updateRblShowHide($rbl, func);\r\n $rbl.on(\"click\", function () {\r\n updateRblShowHide($rbl, func);\r\n });\r\n };\r\n\r\n export function updateRblText($rbl: JQuery, $text: JQuery) {\r\n const active = parseInt($rbl.filter(\":checked\").val()) != 0;\r\n updateTextActive($text, active);\r\n };\r\n\r\n export function linkRblText($rbl: JQuery, $text: JQuery) {\r\n updateRblText($rbl, $text);\r\n $rbl.on(\"click\", function () {\r\n updateRblText($rbl, $text);\r\n });\r\n };\r\n\r\n export function updateCheckText($check: JQuery, $text: JQuery) {\r\n const active = $check.is(':checked');\r\n updateTextActive($text, active);\r\n };\r\n\r\n export function linkCheckText($check: JQuery, $text: JQuery) {\r\n updateCheckText($check, $text);\r\n $check.on(\"click\", function () {\r\n updateCheckText($check, $text);\r\n });\r\n };\r\n\r\n export function updateCheckShowHide($check: JQuery, func) {\r\n let active = $check.is(':checked');\r\n func(active);\r\n };\r\n\r\n export function linkCheckShowHide($check: JQuery, func) {\r\n updateCheckShowHide($check, func);\r\n $check.on(\"click\", function () {\r\n updateCheckShowHide($check, func);\r\n });\r\n };\r\n\r\n export function addTodayButton($txt: JQuery) {\r\n if ($txt.prop(\"disabled\")) {\r\n return;\r\n }\r\n\r\n var $todayButton = $(\"\");\r\n $txt.after($todayButton);\r\n $todayButton.on(\"click\", function () { $txt.val(getToday()); });\r\n }\r\n}\r\n\r\n\r\n","\r\n\r\nexport class MailingEventList {\r\n dialogCreated: boolean;\r\n $dialogelement: JQuery;\r\n\r\n constructor() {\r\n this.dialogCreated = false;\r\n this.$dialogelement = $(\"#dialogevt\");\r\n const self = this;\r\n\r\n $('.multiple').on(\"click\", function () {\r\n const eventdaycontactid = $(this).data(\"eventdaycontactid\");\r\n $.getJSON(\"/event/EventDayContactEvents.ashx?id=\" + eventdaycontactid, function (data) {\r\n //console.log(data);\r\n const items = data.map(function (item) {\r\n return \"
  • \" +\r\n item.date + \" - \" + item.name + \" - \" + item.instructor + \"
  • \";\r\n });\r\n\r\n $('.containerevt').html(\"
      \" + items.join(\"\") + \"
    \");\r\n\r\n self.$dialogelement.dialog({\r\n width: 720\r\n });\r\n self.checkdialogcreated();\r\n });\r\n\r\n });\r\n\r\n $('.multipleorg').on(\"click\", function () {\r\n const eventdaycontactid = $(this).data(\"eventdaycontactid\");\r\n $.getJSON(\"/event/EventDayContactCOrgs.ashx?id=\" + eventdaycontactid, function (data) {\r\n //console.log(data);\r\n const items = data.map(function (item) {\r\n return \"
  • \" +\r\n item.campusname + \" - \" + item.orgname + \"
  • \";\r\n });\r\n\r\n $('.containerevt').html(\"
      \" + items.join(\"\") + \"
    \");\r\n\r\n self.$dialogelement.dialog({\r\n width: 720\r\n });\r\n self.checkdialogcreated();\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n checkdialogcreated() {\r\n const self = this;\r\n if (!self.dialogCreated) {\r\n $(\"html\").on(\"click\", function (e) {\r\n if (self.$dialogelement.dialog('isOpen')\r\n && !$(e.target).is('.ui-dialog, a')\r\n && !$(e.target).closest('.ui-dialog').length) {\r\n self.$dialogelement.dialog('close');\r\n }\r\n });\r\n self.dialogCreated = true;\r\n }\r\n }\r\n}","import * as $ from 'jquery';\r\n\r\nexport class MarketingScheduleMonth {\r\n constructor() {\r\n const self = this;\r\n\r\n $(function () {\r\n const oldstate = history.state;\r\n if (oldstate) {\r\n const day: number = oldstate.day;\r\n\r\n // expand those items\r\n //console.log(\"old state: \" + JSON.stringify(oldstate));\r\n $('.itemclass').filter(`[data-day='${day}']`).show();\r\n $('.showmore').filter(`[data-day='${day}']`).hide();\r\n }\r\n $('.dayothermonth').text('');\r\n\r\n $('.showmore').on(\"click\", function () {\r\n const $showmore = $(this);\r\n\r\n //var stateObj = { day: $showmore.data(\"day\") };\r\n //console.log(\"pushing state: \" + JSON.stringify(stateObj));\r\n //history.pushState(stateObj, \"\");\r\n self.expandshowmore($showmore);\r\n });\r\n $('.itemclass').on(\"click\", function () {\r\n const $evt = $(this);\r\n if ($evt.hasClass(\"itemhidden\")) {\r\n const day: number = $evt.data(\"day\");\r\n var stateObj = { day: day };\r\n //console.log(\"pushing state: \" + JSON.stringify(stateObj));\r\n history.pushState(stateObj, \"\");\r\n }\r\n const link: string = $evt.data(\"link\");\r\n window.location.href = link;\r\n });\r\n });\r\n }\r\n\r\n expandshowmore($showmore: JQuery) {\r\n $showmore.hide()\r\n .nextAll('.itemhidden')\r\n .show();\r\n }\r\n}","import * as $ from 'jquery';\r\n\r\nexport function setupShowButton($button: JQuery, $items: JQuery, buttonsuffix?: string) {\r\n const hasItems = $items.length > 0;\r\n $button.prop(\"disabled\", !hasItems);\r\n if (hasItems) {\r\n const suffix = buttonsuffix || \"\";\r\n $button.addClass(\"itemshidden\");\r\n $button.on(\"click\", function () {\r\n const isHidden = $button.hasClass(\"itemshidden\");\r\n if (isHidden) {\r\n $items.show();\r\n $button.val(\"Hide\" + suffix);\r\n }\r\n else {\r\n $items.hide();\r\n $button.val(\"Show\" + suffix);\r\n }\r\n $button.toggleClass(\"itemshidden\", !isHidden);\r\n });\r\n }\r\n}\r\n\r\nexport function getParameterByName(name: string, url?: string): string {\r\n if (!url) {\r\n url = window.location.href;\r\n }\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\");\r\n const results = regex.exec(url);\r\n if (!results) {\r\n return null;\r\n }\r\n if (!results[2]) {\r\n return '';\r\n }\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n}\r\n\r\nconst entityMap = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': '"',\r\n \"'\": ''',\r\n \"/\": '/'\r\n};\r\n\r\nexport function escapeHtml(string: string): string {\r\n return String(string).replace(/[&<>\"'\\/]/g, function (s) {\r\n return entityMap[s];\r\n });\r\n}\r\n\r\nfunction showAlert(message: string, title?: string) {\r\n if (!title) {\r\n title = 'Alert';\r\n }\r\n\r\n if (!message) {\r\n message = 'No Message to Display.';\r\n }\r\n\r\n (($('
    ').html(message))).dialog({\r\n title: title,\r\n resizable: false,\r\n modal: true\r\n });\r\n}\r\n\r\n$(function () {\r\n $(\".no-access\").on(\"click\", function (evt) {\r\n showAlert(\"Management status required.\");\r\n evt.preventDefault();\r\n });\r\n\r\n $('input[type=\"button\"].autolinkbutton, button.autolinkbutton').each(function () {\r\n const link = $(this).data('link'); // Extract the data-link attribute\r\n\r\n // Attach a click event handler to the button\r\n $(this).on('click', function () {\r\n if (link) {\r\n window.location.href = link; // Redirect to the link\r\n } else {\r\n console.warn('No data-link attribute found for this button.');\r\n }\r\n });\r\n });\r\n});\r\n\r\n","import * as $ from 'jquery';\r\n\r\ninterface StatusAlertItem {\r\n css: string;\r\n description: string;\r\n url: string;\r\n value: string;\r\n}\r\n\r\ninterface StatusAlertGroup {\r\n title: string;\r\n items: Array;\r\n}\r\n\r\nexport class StatusAlert {\r\n groups: Array;\r\n $container: JQuery;\r\n\r\n constructor($container: JQuery) {\r\n this.groups = [];\r\n this.$container = $container;\r\n }\r\n\r\n loadItems() {\r\n const self = this;\r\n $.ajax({\r\n cache: false,\r\n url: \"/services/AlertList.ashx\",\r\n dataType: \"json\",\r\n success: function (data: Array) {\r\n self.groups = data;\r\n self.loadItemsPersonal();\r\n }\r\n });\r\n }\r\n\r\n loadItemsPersonal() {\r\n const self = this;\r\n $.ajax({\r\n cache: false,\r\n url: \"/services/AlertPersonal.ashx\",\r\n dataType: \"json\",\r\n success: function (data: Array) {\r\n self.groups = self.groups.concat(data);\r\n self.displayItems();\r\n }\r\n });\r\n\r\n }\r\n\r\n displayItems() {\r\n let html = \"\";\r\n for (var group of this.groups) {\r\n html += this.appendGroupHtml(group);\r\n }\r\n this.$container.html(html);\r\n }\r\n\r\n appendGroupHtml(group: StatusAlertGroup): string {\r\n let html = \"\";\r\n html += \"
    \";\r\n html += \"
    \";\r\n html += group.title; // need to HTML encode\r\n html += \"
    \";\r\n for (var item of group.items) {\r\n html += \"
    \";\r\n html += \"\";\r\n html += \"
    \";\r\n }\r\n html += \"
    \";\r\n return html;\r\n }\r\n\r\n\r\n}","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","export { escapeHtml, setupShowButton, getParameterByName } from './site/standard';\r\nexport { DropDownContainerList, DropDownContainerItem } from './site/dropdowncontainerlist';\r\nexport { FormTools } from './site/formtools';\r\nexport { FormHelper } from \"./site/formhelper\";\r\nexport { CampusOrgDetails } from './site/campusorgdetails';\r\nexport { CampusDetails } from './site/campusdetails';\r\nexport { StatusAlert } from './site/statusalert';\r\nexport { MarketingScheduleMonth } from './site/marketingschedulemonth';\r\nexport { MailingEventList } from './site/mailingeventlist';\r\n"],"names":["constructor","cid","this","campusID","setupShowButton","$","paramShow","getParameterByName","trigger","setupTermExpand","on","$tr","closest","nextclass","attr","$trnext","next","length","hasClass","corgtermid","parseInt","data","insertAfter","post","datatable","each","index","value","caption","find","append","toggleClass","setupMemberSort","$members","self","rows","get","compare","compareName","val","compareGradYear","compareDate","row","sort","children","setupFavorite","campusOrganizationID","instructorID","$favbutton","checkData","CampusOrgID","InstructorID","JSON","stringify","isFavorite","newChecked","sendData","set","a","b","A","Date","eq","text","B","toUpperCase","A2","B2","ddContainerList","containerList","lastSelected","setup","idx","$dd","dropdown","selectedIndex","$txt","textbox","$container","container","hide","show","$ddFirst","firstContainer","buttonafter","$expandButton","after","doExpand","fixups","validElement","attrval","requiredMessage","field","setAttribute","emailMessage","phoneMessage","creditcardMessage","maxlengthMessage","minlengthMessage","regexMessage","FormHelper","form","document","querySelector","submitButton","submitMessage","checkDoubleSubmit","isSubmitted","checkValid","validationElements","Map","submitConfirmWarning","addEventListener","e","submit","console","warn","preventDoubleSubmit","addSubmitConfirmWarning","warning","addRequiredAttributes","allfields","elements","idxEl","getAttribute","addUnobtrusiveAttributes","noValidate","addUnobtrusiveField","reportValidity","preventDefault","window","confirm","showSubmitted","nodeName","toLowerCase","innerHTML","isFieldElement","event","handleInvalid","clearErrorMessage","checkValidity","name","messageField","attributes","getAttributeNames","attrkey","fixfunc","validity","valueMissing","setErrorMessage","typeMismatch","tooLong","tooShort","patternMismatch","message","classList","add","remove","removeAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","FormTools","getToday","today","getMonth","getDate","getFullYear","updateTextActive","$text","active","oldtext","prop","updateRblShowHide","$rbl","func","filter","updateRblText","updateCheckText","$check","is","updateCheckShowHide","linkRblShowHide","linkRblText","linkCheckText","linkCheckShowHide","addTodayButton","$todayButton","dialogCreated","$dialogelement","eventdaycontactid","getJSON","items","map","item","eventDayID","date","instructor","html","join","dialog","width","checkdialogcreated","campusname","orgname","target","oldstate","history","state","day","$showmore","expandshowmore","$evt","stateObj","pushState","link","location","href","nextAll","$button","$items","buttonsuffix","hasItems","suffix","addClass","isHidden","url","replace","results","RegExp","exec","decodeURIComponent","string","String","s","entityMap","evt","title","resizable","modal","groups","loadItems","ajax","cache","dataType","success","loadItemsPersonal","concat","displayItems","group","appendGroupHtml","css","description","module","exports","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","escapeHtml","DropDownContainerList","CampusOrgDetails","CampusDetails","StatusAlert","MarketingScheduleMonth","MailingEventList"],"sourceRoot":""}