$(„#appointment-date“).datepicker({
constrainInput: true, // prevent letters in the input field
minDate: new Date(), // prevent selection of date older than today
autoSize: true, // automatically resize the input field
altFormat: ‚dd-mm-yyyy‘,// Date Format used
firstDay: 1, // Start with Monday
beforeShowDay: function(date) {
var day = date.getDay();
var datestring = jQuery.datepicker.formatDate(‚yy-mm-dd‘, date);
var year = date.getFullYear();
var holidays = getHolidays(year);// [„2021-01-01″,“2021-01-05″,“2021-10-03″,“2021-12-25“];
return [(day != 0 && day != 6 && holidays.indexOf(datestring) == -1 )];
}
});
function getHolidays(year){
var holidays = new Array(
year + „-01-01“, // New Year’s
year + „-01-06“, // Epiphany
// easter
year + „-05-01“, // Labour Day
„2022-05-26“, // Ascension Day
„2023-05-18“, // Ascension Day
„2024-05-09“, // Ascension Day
„2022-06-06“, // Whit Monday
„2023-05-29“, // Whit Monday
„2024-05-20“, // Whit Monday
„2022-06-16“, // Corpus Christi Day
„2023-06-08“, // Corpus Christi Day
„2024-05-30“, // Corpus Christi Day
year + „-10-03“, // German Unity
year + „-11-01“, // All Saints‘
year + „-12-25“, // Christmas
year + „-12-26“, // Boxing
);
var easterHolidays = getEasterHolidays(year);
holidays.extend(easterHolidays);
return holidays;
}
function getEasterHolidays(year) {
var easter = getEasterDate(year);
var goodFriday = new Date(Number(easter))
goodFriday.setDate(easter.getDate() – 2);
var easterMonday = new Date(Number(easter));
easterMonday.setDate(easter.getDate() + 1);
return new Array(formatDate(goodFriday), formatDate(easterMonday));
}
function getEasterDate(year) {
var a = Math.floor(year % 19);
var b = Math.floor(year / 100);
var c = Math.floor(year % 100);
var d = Math.floor(b / 4);
var e = Math.floor(b % 4);
var f = Math.floor((b + 8) / 25);
var g = Math.floor((b – f + 1) / 3);
var h = Math.floor((19 * a + b – d – g + 15) % 30);
var i = Math.floor(c / 4);
var k = Math.floor(c % 4);
var l = Math.floor((32 + 2 * e + 2 * i – h – k) % 7);
var m = Math.floor((a + 11 * h + 22 * l) / 451);
var month = Math.floor((h + l – 7 * m + 114) / 31);
var day = Math.floor(((h + l – 7 * m + 114) % 31) + 1);
var dateString = year + „-“ + padout(month) + „-“ + padout(day);
return new Date(dateString);
}
function formatDate(date) {
var d = date.getDate();
var m = date.getMonth() + 1; //January is 0!
var date = date.getFullYear() + „-“ + padout(m) + „-“ + padout(d);
return date;
}
function padout(number) { return (number < 10) ? ‚0‘ + number : number; }
Array.prototype.extend = function (other_array) {
other_array.forEach(function(v) {this.push(v)}, this);
}