'use strict';

const targetNum = Math.trunc(Math.random() * 20) + 1;
let highScore = Number(localStorage.getItem('highscore')) || 0;
let userGuess = 10;  // Default guess
let currScore = 20;

const screenEl = document.querySelector('.screen');
const msgEl = document.querySelector('.message');
const guessInput = document.querySelector('#guess');
const scoreEl = document.querySelector('.score');
const highScoreEl = document.querySelector('.highScore');
const checkBtn = document.querySelector('#check');
const restartBtn = document.querySelector('#restart');
const incBtn = document.querySelector('#up');
const decBtn = document.querySelector('#down');

const setMsg = msg => msgEl.textContent = msg;
const setScore = score => scoreEl.textContent = `Score: ${currScore = score}`;
const setHighScore = () => {
    highScoreEl.textContent = `Highscore: ${highScore}`;
    localStorage.setItem('highscore', highScore);
};
const changeColor = color => screenEl.style.backgroundColor = color;

checkBtn.addEventListener('click', () => {
    userGuess = Number(guessInput.textContent);
    if (!userGuess || userGuess < 1 || userGuess > 20) {
        setMsg("Please enter a valid number between 1 and 20.");
    } else if (userGuess === targetNum) {
        highScore = Math.max(highScore, currScore);
        setHighScore();
        setMsg(currScore !== 20 ? 'Correct Number!' : 'Are you sure you didn\'t cheat?');
        changeColor(currScore !== 20 ? '#1ba100' : '#FFC300');
    } else {
        setMsg(userGuess > targetNum ? 'Too High!' : 'Too Low!');
        if (currScore > 1) {
            setScore(currScore - 1);
        } else {
            setScore(1);
            setMsg("You lost the game!");
            changeColor('#a10000');
        }
    }
});

restartBtn.addEventListener('click', () => location.reload());
incBtn.addEventListener('click', () => guessInput.textContent = Math.min(Number(guessInput.textContent) + 1, 20));
decBtn.addEventListener('click', () => guessInput.textContent = Math.max(Number(guessInput.textContent) - 1, 1));

guessInput.textContent = userGuess;
setMsg('Guess a number');
setScore(currScore);
setHighScore();