window.bdayCal = function () { var cbs = document.querySelectorAll('#birthday-grid-c1d2 input:checked'); if (!cbs.length) { alert('Select at least one person first.'); return; } var yr = new Date().getFullYear(); // Start ICS file var ics = 'BEGIN:VCALENDAR\n' + 'VERSION:2.0\n' + 'PRODID:-//Boser-Herman//EN\n'; // Add events cbs.forEach(function (cb) { ics += 'BEGIN:VEVENT\n' + 'SUMMARY:' + cb.getAttribute('data-n') + "'s Birthday\n" + 'DTSTART;VALUE=DATE:' + yr + cb.getAttribute('data-d') + '\n' + 'DTEND;VALUE=DATE:' + yr + cb.getAttribute('data-d') + '\n' + 'RRULE:FREQ=YEARLY\n' + 'END:VEVENT\n'; }); // Close ICS ics += 'END:VCALENDAR'; // Download file var a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([ics], { type: 'text/calendar' })); a.download = 'boser_herman_birthdays.ics'; a.click(); };