Available session — seats open, register now
Upcoming session — opening soon
July
1
2
3
4
5
9
10
11
12
13
14
15
16
17
18
19
20
21
25
26
27
28
29
30
31
August
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
22
23
24
25
26
27
28
29
30
31
September
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
October
1
2
3
4
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
31
(function () {
// Session Definitions matching the precise dataset
const sessions = {
'aws-0': {
stMonth: 'JUL',
stDay: '06',
kicker: 'Cohorts',
title: 'Data Engineering on AWS',
desc: '3-day intensive session starting July 6, 2026 · Available',
status: 'available',
color: '#f49a00',
btnHref: '#reserve'
},
'aws-1': {
stMonth: 'JUL',
stDay: '22',
kicker: 'Cohorts',
title: 'Data Engineering on AWS',
desc: '3-day intensive session starting July 22, 2026 · Available',
status: 'available',
color: '#f49a00',
btnHref: '#reserve'
},
'aws-2': {
stMonth: 'AUG',
stDay: '19',
kicker: 'Cohorts',
title: 'Data Engineering on AWS',
desc: '3-day intensive session starting August 19, 2026 · Upcoming Session',
status: 'upcoming',
color: '#5f158f',
btnHref: '#reserve'
},
'aws-3': {
stMonth: 'SEP',
stDay: '28',
kicker: 'Cohorts',
title: 'Data Engineering on AWS',
desc: '3-day intensive session starting September 28, 2026 · Upcoming Session',
status: 'upcoming',
color: '#5f158f',
btnHref: '#reserve'
},
'aws-4': {
stMonth: 'OCT',
stDay: '05',
kicker: 'Cohorts',
title: 'Data Engineering on AWS',
desc: '3-day intensive session starting October 5, 2026 · Upcoming Session',
status: 'upcoming',
color: '#5f158f',
btnHref: '#reserve'
},
'aws-5': {
stMonth: 'OCT',
stDay: '28',
kicker: 'Cohorts',
title: 'Data Engineering on AWS',
desc: '3-day intensive session starting October 28, 2026 · Upcoming Session',
status: 'upcoming',
color: '#5f158f',
btnHref: '#reserve'
}
};
// Cache DOM nodes for fastest interaction
const widget = document.querySelector('.el-aws-calendar-wrap');
if (!widget) return;
const badgeObj = widget.querySelector('#ticker-badge');
const monthObj = widget.querySelector('#ticker-mo');
const dayObj = widget.querySelector('#ticker-day');
const kickerObj = widget.querySelector('#ticker-kicker');
const titleObj = widget.querySelector('#ticker-title');
const descObj = widget.querySelector('#ticker-desc');
const btnObj = widget.querySelector('#ticker-btn');
function updateActiveCohort(id) {
const data = sessions[id];
if (!data) return;
// Apply color palettes and update content
monthObj.textContent = data.stMonth;
dayObj.textContent = data.stDay;
titleObj.textContent = data.title;
descObj.textContent = data.desc;
// Style adjustments for available vs upcoming
badgeObj.style.backgroundColor = data.color;
kickerObj.style.color = data.color;
btnObj.style.backgroundColor = data.color;
btnObj.setAttribute('href', data.btnHref);
// Swap highlighting states on calendar grids
// First, remove 'active' class from ALL session cells
widget.querySelectorAll('.el-day-cell.is-session').forEach(cell => {
cell.classList.remove('active');
});
// Then, add 'active' class to all cells belonging to the current session ID
widget.querySelectorAll(`.el-day-cell.is-session[data-id="${id}"]`).forEach(cell => {
cell.classList.add('active');
});
}
// Delegate clicks on interactive session items
widget.addEventListener('click', function (e) {
const sessionBtn = e.target.closest('.el-day-cell[data-id]');
if (sessionBtn) {
const id = sessionBtn.getAttribute('data-id');
updateActiveCohort(id);
}
});
// Initialize the active state for the first available session on load
updateActiveCohort('aws-0');
})();