//DOB control IDs var dobDateDayControlID = "#ctl00_ContentPlaceHolder1_DOBDateDay"; var dobDateMonthControlID = "#ctl00_ContentPlaceHolder1_DOBDateMonth"; var dobDateYearControlID = "#ctl00_ContentPlaceHolder1_DOBDateYear"; //Start date control IDs var startDateDayControlID = "#ctl00_ContentPlaceHolder1_StartDateDay"; var startDateMonthControlID = "#ctl00_ContentPlaceHolder1_StartDateMonth"; var startDateYearControlID = "#ctl00_ContentPlaceHolder1_StartDateYear"; $(document).ready(function() { //init DOB date picker var today = new Date(); var tomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate()-0+1); var maximumDOB = new Date(today.getFullYear(), today.getMonth(), today.getDate()-0-56); var minimumDOB = new Date(today.getFullYear()-0-9, today.getMonth(), today.getDate()-0+1); var maximumStartDate = new Date(today.getFullYear(), today.getMonth()-0+2, today.getDate()-0-1); $("#linkedDOBDates").datepicker({ firstDay: 1, minDate: minimumDOB, maxDate: maximumDOB, beforeShow: readLinkedDOB, onSelect: updateLinkedDOB, showOn: "both", buttonImage: "/system_images/calendar.gif", buttonImageOnly: true }); $("#linkedStartDates").datepicker({ firstDay: 1, minDate: new Date(), maxDate: maximumStartDate, beforeShow: readLinkedStart, onSelect: updateLinkedStart, showOn: "both", buttonImage: "/system_images/calendar.gif", buttonImageOnly: true }); $(dobDateMonthControlID+","+dobDateYearControlID).change(checkLinkedDaysDOB); $(startDateMonthControlID+","+startDateYearControlID).change(checkLinkedDaysStart); }); function readLinked(daySelect, monthSelect, yearSelect, datePicker) { datePicker.val(mapMonthName(monthSelect.val()) + "/" + daySelect.val() + "/" + yearSelect.val()); return {}; } function updateLinked(date, daySelect, monthSelect, yearSelect) { monthSelect.val(mapMonthInt(date.substring(0, 2))); daySelect.val(date.substring(3, 5)); yearSelect.val(date.substring(6, 10)); } // Prevent selection of invalid dates through the select controls function checkLinkedDays(daySelect, monthSelect, yearSelect) { var daysInMonth = 33 - new Date(yearSelect.val(), mapMonthName(monthSelect.val()) - 1, 32).getDate(); daySelect.attr("disabled", ""); $("#" + daySelect.attr("id") + " option:gt(" + (daysInMonth - 1) +")").attr("disabled", "disabled"); if (daySelect.val() > daysInMonth) { daySelect.val(daysInMonth); } } // Prepare to show a date picker linked to three select controls function readLinkedDOB() { readLinked($(dobDateDayControlID), $(dobDateMonthControlID), $(dobDateYearControlID), $(this.id)); return {}; } // Update three select controls to match a date picker selection function updateLinkedDOB(date) { updateLinked(date, $(dobDateDayControlID), $(dobDateMonthControlID), $(dobDateYearControlID)); return {}; } function checkLinkedDaysDOB() { checkLinkedDays($(dobDateDayControlID), $(dobDateMonthControlID), $(dobDateYearControlID)); return {}; } //Start Date date picker methods function checkLinkedDaysStart() { checkLinkedDays($(startDateDayControlID), $(startDateMonthControlID), $(startDateYearControlID)); return {}; } // Prepare to show a date picker linked to three select controls function readLinkedStart() { readLinked($(startDateDayControlID), $(startDateMonthControlID), $(startDateYearControlID), $(this.id)); return {}; } // Update three select controls to match a date picker selection function updateLinkedStart(date) { updateLinked(date, $(startDateDayControlID), $(startDateMonthControlID), $(startDateYearControlID)); return {}; } function mapMonthInt(monthInt) { monthNames = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); return monthNames[monthInt - 1]; } function mapMonthName(monthName) { var monthInt; switch(monthName.toLowerCase()) { case "january": monthInt = 1; break; case "february": monthInt = 2; break; case "march": monthInt = 3; break; case "april": monthInt = 4; break; case "may": monthInt = 5; break; case "june": monthInt = 6; break; case "july": monthInt = 7; break; case "august": monthInt = 8; break; case "september": monthInt = 9; break; case "october": monthInt = 10; break; case "november": monthInt = 11; break; case "december": monthInt = 12; break; } return monthInt; }