let params; let cur_seconds = null; let timer_id; let cd; const page = document.getElementById("page"); function setupCountdown() { var prompt_text = ""; var progress_bar = ""; params = new URLSearchParams(document.location.search); for ([key, value] of params.entries()) { console.log(`${key}: ${value}`); } switch (params.get("cdstyle")) { case "labeled_bar": let label_text = params.get("label_text"); prompt_text = `
${label_text}
`; progress_bar = `
`; break; case "bar": progress_bar = `
`; break; } page_template = ` ${prompt_text} ${progress_bar}
00
:
00
`; page.innerHTML = page_template; cd = document.getElementById("countdown"); let prompt = document.getElementById("prompt"); cur_seconds = parseInt(params.get("duration")); if (params.get("f_family") !== "") { cd.style.fontFamily = params.get("f_family"); if (prompt) { document.getElementById("prompt").style.fontFamily = params.get("f_family"); } } cd.style.color = params.get("f_color"); if (document.getElementById("progress")) { document.getElementById("progress").style.backgroundColor = params.get("b_color"); } draw(); timer_id = window.setInterval(tick, 1000); } function tick() { if (cur_seconds == 0) { while (cd.firstChild) { cd.removeChild(cd.firstChild); } let end_msg = document.createElement("div"); end_msg.id = "endmsg"; end_msg.textContent = params.get("end_text"); cd.appendChild(end_msg); window.clearInterval(timer_id); return; } cur_seconds--; draw(); } function draw() { if (document.getElementById("progress")) { draw_bar(); } document.getElementById("minutes").textContent = zero_pad(Math.floor(cur_seconds / 60)); document.getElementById("seconds").textContent = zero_pad((cur_seconds % 60)); } function draw_bar() { document.getElementById("progress").style.width = (((params.get("duration") - cur_seconds) / params.get("duration")) * 100) + "%"; } function zero_pad(num) { if (num < 10) { return "0"+num; } else { return num; } }