document.addEventListener("DOMContentLoaded", function() { // Default values var hours = 0; var minutes = 0; var seconds = 0; var timerInterval = null; // variable to hold interval id var isPaused = false; // variable to track if the timer is paused function startTimer() { if(timerInterval === null) { timerInterval = setInterval(countTime, 1000); } } // Counter function countTime() { ++seconds; if (seconds == 60) { seconds = 0; minutes++; } if (minutes == 60) { minutes = 0; hours++; } // Total time worked var time_worked = pad(hours) + ":" + pad(minutes) + ":" + pad(seconds); document.getElementById("time_worked").value = time_worked; } // Allows manually adjusting the timer function setTime() { var time_as_text = document.getElementById("time_worked").value; const time_text_array = time_as_text.split(":"); hours = parseInt(time_text_array[0]); minutes = parseInt(time_text_array[1]); seconds = parseInt(time_text_array[2]); if (!isPaused) { startTimer(); // start the timer when time is manually adjusted } } // This function "pads" out the values, adding zeros if they are required function pad(val) { var valString = val + ""; if (valString.length < 2) { return "0" + valString; } else { return valString; } } // Function to pause the timer function pauseTimer() { if(timerInterval !== null) { clearInterval(timerInterval); timerInterval = null; } } // Function to toggle the timer function toggleTimer() { var button = document.getElementById("toggleTimer"); if(isPaused) { // If timer is paused, then start the timer and change the button icon to pause startTimer(); button.innerHTML = ''; isPaused = false; } else { // If timer is running, then pause the timer and change the button icon to play pauseTimer(); button.innerHTML = ''; isPaused = true; } } // Start timer when page is loaded startTimer(); // Set setTime as the onchange event handler for the time input document.getElementById("time_worked").addEventListener('change', setTime); // Toggle timer when button is clicked document.getElementById("toggleTimer").addEventListener('click', toggleTimer); });