document.addEventListener("DOMContentLoaded", function () { const form = document.getElementById("guestbook-form"); const entriesContainer = document.getElementById("guestbook-entries"); const captchaCanvas = document.getElementById("captcha-canvas"); const refreshCaptchaButton = document.getElementById("refresh-captcha"); const captchaInput = document.getElementById("captcha-input"); const GUESTBOOK_KEY = "guestbookEntries"; let currentCaptcha = ""; function generateCaptcha() { const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; let captcha = ""; for (let i = 0; i < 6; i++) captcha += chars.charAt(Math.floor(Math.random() * chars.length)); return captcha; } function drawCaptcha(captcha) { const ctx = captchaCanvas.getContext("2d"); ctx.clearRect(0, 0, captchaCanvas.width, captchaCanvas.height); ctx.font = "22px Arial"; ctx.fillStyle = "#000"; ctx.fillText(captcha, 10, 32); } function refreshCaptcha() { currentCaptcha = generateCaptcha(); drawCaptcha(currentCaptcha); } function formatMessage(message) { return message .split("\n") .map((line) => { if (line.startsWith(">")) return `${line}`; return line; }) .join("
"); } function loadEntries() { const entries = JSON.parse(localStorage.getItem(GUESTBOOK_KEY)) || []; entriesContainer.innerHTML = ""; entries .slice() .reverse() .forEach((entry) => { const entryElement = document.createElement("div"); entryElement.className = "entry"; const nameElement = document.createElement("h4"); if (entry.name === "Anonymous") nameElement.className = "anonymous"; nameElement.textContent = entry.name; entryElement.appendChild(nameElement); const messageElement = document.createElement("p"); messageElement.innerHTML = formatMessage(entry.message); entryElement.appendChild(messageElement); entriesContainer.appendChild(entryElement); }); } form.addEventListener("submit", function (event) { event.preventDefault(); let name = document.getElementById("name").value.trim(); if (!name) name = "Anonymous"; const message = document.getElementById("message").value.trim(); const captchaValue = captchaInput.value.trim(); if (name && message && captchaValue === currentCaptcha) { const entries = JSON.parse(localStorage.getItem(GUESTBOOK_KEY)) || []; entries.push({ name, message }); localStorage.setItem(GUESTBOOK_KEY, JSON.stringify(entries)); form.reset(); document.getElementById("name").value = "Anonymous"; loadEntries(); refreshCaptcha(); } else { alert("CAPTCHA is incorrect. Please try again."); } }); refreshCaptcha(); refreshCaptchaButton.addEventListener("click", refreshCaptcha); loadEntries(); });