{"version":3,"sources":["Pages/Home/ProgramRequest.js"],"names":["initEvents","$","on","val","Number","initCalendar","datepicker","format","ev","getBlackoutDates","moment","utc","date","valueOf","dateString","text","daysOfWeekDisabled","initValidation","validator","addMethod","v","el","minDate","this","optional","setHours","Date","validate","extendValidationSettings","ignore","rules","DateRequested","required","RequestType","GroupName","minlength","maxlength","SchoolId","doesDisplaySchoolsList","GroupLeader","NumberAdults","NumberChildren","ParticipantCount","StartTimeRequested","validTime","EndTimeRequested","AlternativeDateRequested","messages","jQuery","doesCollectAddress","element","setDefaultDate","month","year","url","programRequestTypeId","getJSON","data","BlackoutDates","FirstAvailable","firstAvailable","toDate","startOf","applyMasks","select2","change","selectedSchoolId","value","school","PhoneNumber","append","Address"],"mappings":"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","file":"ProgramRequest.min.js","sourcesContent":["$(function () {\n initEvents();\n initCalendar();\n initValidation();\n applyMasks(true);\n\n $('.select2').select2();\n});\n\n$('#SchoolId').change(function () {\n var selectedSchoolId = this.value;\n var url = '/api/home/ProgramRequestSchoolInfo/' + selectedSchoolId;\n\n $(\"#SchoolInfo\").text(\"\");\n\n if (selectedSchoolId) {\n $.getJSON(url, function (school) {\n if (school.PhoneNumber) {\n $(\"#SchoolInfo\").append(\"\" + school.PhoneNumber + \"
\");\n }\n if (school.Address) {\n $(\"#SchoolInfo\").append(\"\" + school.Address + \"\");\n }\n });\n }\n});\n\nfunction initEvents() {\n $('#NumberAdults,#NumberChildren').on('input', function () {\n $('#NumberTotal').val(\n Number($('#NumberAdults').val() || 0) + Number($('#NumberChildren').val() || 0));\n });\n}\n\nfunction initCalendar() {\n $('#DateRequestedCalendar').datepicker({\n format: 'mm/dd/yyyy'\n })\n .on('changeMonth', function (ev) {\n getBlackoutDates($('#DateRequestedCalendar'), moment.utc(ev.date.valueOf()));\n })\n .on('changeDate', function (ev) {\n var dateString = moment.utc(ev.date.valueOf()).format('MM/DD/YYYY');\n $('#dateRequestedLabel').text(dateString);\n $('#DateRequested').val(dateString);\n });\n\n $('#AlternativeDateRequested').datepicker({\n format: 'mm/dd/yyyy'\n })\n .on('changeMonth', function (ev) {\n getBlackoutDates($('#AlternativeDateRequested'), moment.utc(ev.date.valueOf()));\n });\n\n $('#DateRequestedCalendar').datepicker('setDaysOfWeekDisabled', daysOfWeekDisabled);\n $('#AlternativeDateRequested').datepicker('setDaysOfWeekDisabled', daysOfWeekDisabled);\n\n getBlackoutDates($('#DateRequestedCalendar'), moment.utc(), true);\n getBlackoutDates($('#AlternativeDateRequested'), moment.utc(), true);\n}\n\nfunction initValidation() {\n $.validator.addMethod('minDate', function (v, el, minDate) {\n if (this.optional(el)) {\n return true;\n }\n\n return minDate.setHours(0, 0, 0, 0) <= new Date(v).setHours(0, 0, 0, 0);\n }, 'Date must be in the future.');\n\n $('#programRequestForm').validate(extendValidationSettings({\n ignore: \"\",\n rules: {\n DateRequested: {\n required: true,\n minDate: new Date()\n },\n RequestType: {\n required: true\n },\n GroupName: {\n required: function () {\n return !$(\"#SchoolId\").val();\n },\n minlength: 2,\n maxlength: 50\n },\n SchoolId: {\n required: function () {\n return doesDisplaySchoolsList && !$(\"#GroupName\").val();\n }\n },\n GroupLeader: {\n required: true,\n minlength: 2,\n maxlength: 50\n },\n NumberAdults: {\n required: true\n },\n NumberChildren: {\n required: true\n },\n ParticipantCount: {\n required: true\n },\n StartTimeRequested: {\n required: true,\n validTime: true\n },\n EndTimeRequested: {\n required: true,\n validTime: true\n },\n AlternativeDateRequested: {\n date: true,\n minDate: new Date()\n }\n },\n messages: {\n DateRequested: {\n required: 'Calendar Date Requested is required. (Available dates are highlighted with green)',\n minDate: 'Calendar Date must not be in the past.'\n },\n RequestType: {\n required: 'Type is required.'\n },\n GroupName: {\n required: function () {\n if (doesDisplaySchoolsList) {\n return 'Either School OR Unlisted School / Other Group Name is required.';\n }\n else {\n return 'Group Name is required.';\n }\n },\n minlength: function () {\n if (doesDisplaySchoolsList) {\n return jQuery.validator.format('Unlisted School / Other Group Name must be at least {0} characters.');\n }\n else {\n return jQuery.validator.format('Group Name must be at least {0} characters.');\n }\n },\n maxlength: function () {\n if (doesDisplaySchoolsList) {\n return jQuery.validator.format('Unlisted School / Other Group Name must be less than {0} characters.');\n }\n else {\n return jQuery.validator.format('Group Name must be less than {0} characters.');\n }\n }\n },\n GroupLeader: {\n required: 'Leader / Teacher is required.',\n minlength: jQuery.validator.format('Leader / Teacher must be at least {0} characters.'),\n maxlength: jQuery.validator.format('Leader / Teacher must be less than {0} characters.')\n },\n NumberAdults: {\n required: 'Number of Adults is required.'\n },\n NumberChildren: {\n required: 'Number of Children is required.'\n },\n StartTimeRequested: {\n required: 'Start Time is required.',\n validTime: 'Start Time must be a valid time.'\n },\n EndTimeRequested: {\n required: 'End Time is required.',\n validTime: 'End Time must be a valid time.'\n },\n AlternativeDateRequested: {\n date: 'Alternative Date must be a valid date.',\n minDate: 'Alternative Date must not be in the past.'\n }\n }\n }));\n\n if (doesCollectAddress) {\n $('#programRequestForm #Address1').rules('add', {\n required: true,\n messages: {\n required: 'Address is required.'\n }\n });\n\n $('#programRequestForm #City').rules('add', {\n required: true,\n messages: {\n required: 'City is required.'\n }\n });\n\n $('#programRequestForm #State').rules('add', {\n required: true,\n messages: {\n required: 'State is required.'\n }\n });\n\n $('#programRequestForm #ZipCode').rules('add', {\n required: true,\n messages: {\n required: 'Zip Code is required.'\n }\n });\n }\n}\n\nfunction getBlackoutDates(element, date, setDefaultDate) {\n var month = date.format('M');\n var year = date.format('YYYY');\n\n var url = '/api/Home/ProgramRequestBlackoutDates/' + programRequestTypeId + '?month=' + month + '&year=' + year;\n\n if (setDefaultDate) {\n url += '&searchForFirstAvailable=true';\n }\n\n $.getJSON(url, function (data) {\n element.datepicker('setDatesDisabled', data.BlackoutDates);\n if (data.FirstAvailable) {\n var firstAvailable = moment(data.FirstAvailable).toDate();\n element.datepicker('setUTCDate', firstAvailable);\n element.datepicker('update', firstAvailable); //https://github.com/eternicode/bootstrap-datepicker/issues/1980 (must set date or ui will flash back to current month)\n }\n else {\n if (date > moment()) {\n date = date.startOf('month');\n }\n\n element.datepicker('update', date.format('MM/DD/YYYY')); //https://github.com/eternicode/bootstrap-datepicker/issues/1980 (must set date or ui will flash back to current month)\n }\n });\n}"]}