jQuery(function () { 'use strict'; // Date of birth control jQuery('.mpa-date_of_birth-control, .mpa-ctrl-date-of-birth, .mpa-date-of-birth-ctrl').each(function (i, element) { var $control = jQuery(element); var $day = $control.find('.mpa-day-control-component'); var $month = $control.find('.mpa-month-control-component'); var $year = $control.find('.mpa-year-control-component'); var $holder = $control.find('.mpa-dob-holder-control-component'); $month.on('change', onMonthOrYearUpdate); $year.on('change', onMonthOrYearUpdate); function onMonthOrYearUpdate() { var month = $month.val(); var year = $year.val() || mpa_cf_current_year(); var daysInMonth = month !== '' ? mpa_cf_days_in_month(parseInt(month), parseInt(year)) : 31; mpa_cf_reset_options_number($day, daysInMonth); } $day.on('change', onBdateDataUpdate); $month.on('change', onBdateDataUpdate); $year.on('change', onBdateDataUpdate); function onBdateDataUpdate() { var day = $day.val(); var month = $month.val(); var year = $year.val(); if ( day && month && year && $holder[0] ) { $holder.val( year + '-' + month + '-' + day ); } } }); function mpa_cf_current_year() { var currentDate = new Date(); return currentDate.getFullYear(); } function mpa_cf_days_in_month(month, year) { var date = new Date(year, month, 0); return date.getDate(); } function mpa_cf_reset_options_number($select, limit) { var optionsCount = $select.children('[value!=""]').length; if (optionsCount < limit) { // Add more options for (var i = optionsCount + 1; i <= limit; i++) { var $option = jQuery(''); $select.append($option); } } else if (optionsCount > limit) { // Remove extra options $select.children().each(function (i, option) { if (option.value !== '' && parseInt(option.value) > limit) { option.remove(); } }); } } });