| 1 | document.addEventListener('DOMContentLoaded', () => {
|
| 2 | const page = document.body.dataset.page;
|
| 3 | const form = document.querySelector('form');
|
| 4 | const resultElement = document.getElementById('result');
|
| 5 |
|
| 6 | if (!form || !resultElement) return;
|
| 7 |
|
| 8 | const navigationMap = {
|
| 9 | landing: 'act1.html',
|
| 10 | act1: 'act2.html',
|
| 11 | act2: 'act3.html',
|
| 12 | act3: 'act4.html',
|
| 13 | act4: 'act5.html',
|
| 14 | act5: null
|
| 15 | };
|
| 16 |
|
| 17 | const showResult = (message, isSuccess) => {
|
| 18 | resultElement.textContent = message;
|
| 19 | resultElement.className = `result ${isSuccess ? 'success' : 'error'}`;
|
| 20 | };
|
| 21 |
|
| 22 | form.addEventListener('submit', (e) => {
|
| 23 | e.preventDefault();
|
| 24 |
|
| 25 | const input = form.querySelector('input[type="text"]');
|
| 26 | const userAnswer = input.value.trim().toUpperCase();
|
| 27 | const expectedAnswer = form.dataset.answer.toUpperCase();
|
| 28 |
|
| 29 | if (userAnswer !== expectedAnswer) {
|
| 30 | showResult('The archive rejects the answer. Try again.', false);
|
| 31 | return;
|
| 32 | }
|
| 33 |
|
| 34 | showResult('Signal accepted. The archive opens.', true);
|
| 35 | input.disabled = true;
|
| 36 | form.querySelector('button').disabled = true;
|
| 37 |
|
| 38 | const nextPage = navigationMap[page];
|
| 39 | if (nextPage) {
|
| 40 | setTimeout(() => {
|
| 41 | window.location.href = nextPage;
|
| 42 | }, 1200);
|
| 43 | } else {
|
| 44 | setTimeout(() => {
|
| 45 | showResult('Archive complete. You are now the witness. The archive remembers you.', true);
|
| 46 | }, 1200);
|
| 47 | }
|
| 48 | });
|
| 49 | });
|