function retryGame(){
    window.location.reload();
}

const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const userId = urlParams.get('userId');
let gameId;
let submitNotic;

console.log(userId);
let startTime = Date.now();


const url = window.location.href;
const gameName = url.split('/');
const gameType = gameName[3].split('?id=');
let gameVersion;

// console.log("Here is game name ", gameType[0])

if(gameType[0] == "guided-tracing"){
    gameVersion = gameType[0].split('?')[0];
    gameId = gameName[4];
    console.log('Type - 1');

} else if(gameName.length == 4){
    gameVersion = gameName[3].split('?')[0];
    gameId = urlParams.get('id');
}
else if(gameName.length == 5){
    gameVersion = gameName[3] + '-' + gameName[4].split('?')[0];
    gameId = urlParams.get('id');
    console.log('Type - 2');
}else if(gameName.length == 6){
    gameVersion = gameType[0] + '-' + gameName[4];
    gameId = urlParams.get('id');
    console.log('Type - 3');
}

console.log(gameVersion)

function submitUserData(drawingZone) {
    const endTime = Date.now();
    const timeDifference = endTime - startTime;
    const timeDifferenceInSeconds = timeDifference / 1000;
    // console.log(`Time difference: ${timeDifferenceInSeconds} seconds`);

    let imageCode;
    let gameScore;

    if(scoreTotal){
        gameScore = scoreTotal;
    }else{
        gameScore = 0;
    }
    // console.log('This is from main point', scoreTotal);
    drawingZone.renderer.snapshot((image) => {
        if(gameType[0] == 'drawing'){
            submitButton.setVisible(true);
            snapshotButton.setVisible(true);
            customCursor.setVisible(true);
            image.style.width = '160px';
            image.style.height = '120px';
            image.style.paddingLeft = '2px';
            document.body.appendChild(image);
            // Download the snapshot as an image
            // const link = document.createElement('a');
            // link.href = image.src;
            // link.download = 'my_drawing.png';
            // link.click();
            document.body.removeChild(image);
            imageCode = image.src;
        }else if( gameType[0] == "guided-tracing"){
            // submitButton.setVisible(true);
            // snapshotButton.setVisible(true);
            // customCursor.setVisible(true);
            image.style.width = '160px';
            image.style.height = '120px';
            image.style.paddingLeft = '2px';
            document.body.appendChild(image);
            // Download the snapshot as an image
            // const link = document.createElement('a');
            // link.href = image.src;
            // link.download = `guided-tracing-${gameId}.png`;
            // link.click();
            document.body.removeChild(image);
            imageCode = image.src;
        }
        let starValue;
        if(scoreTotal === maxScore){
            starValue = 5;
        } else if(scoreTotal === maxScore - 1){
            starValue = 4;
        } else{
            starValue = 3;
        }
        let maxStarValue = 5;
        let progress = 0;
        let feedbackMessage; starValue === 5 ? feedbackMessage = `Fantastic! You earned ${starValue} stars! <br> Keep up the amazing work – you're a superstar!` : starValue === 4 ? feedbackMessage = `Great job! ${starValue} stars – you're so close to <br> perfection! ` : starValue === 3 ? feedbackMessage = `Well done! ${starValue} stars for your effort! <br> Keep pushing, you’ve got this!` : '';
        
        function progressIncrement() {
            const interval = setInterval(() => {
                if (progress >= 100) {
                    clearInterval(interval);
                } else {
                    progress += 10; 
                    progressBar.style.width = `${progress}%`;
                }
            }, 100);
        }
        progressIncrement();
        function addStarScalingStyles() {
            const style = document.createElement('style');
            style.innerHTML = `
                @keyframes scaleUp {
                    0% {
                        transform: scale(1.5);
                    }
                    100% {
                        transform: scale(1);
                    }
                }
                .star {
                    display: inline-block;
                    transform-origin: center;
                    transform: scale(0); /* Initial state before animation */
                    opacity: 0; /* Initial opacity */
                    animation: scaleUp 0.5s ease forwards;
                }
            `;
            document.head.appendChild(style);
        }
        addStarScalingStyles();
        const blankStar = `<svg width="61" height="58" viewBox="0 0 61 58" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M60.0193 21.917C59.8274 21.3224 59.4648 20.7975 58.9767 20.4076C58.4885 20.0177 57.8964 19.7801 57.2741 19.7244L39.9564 18.1518L33.1086 2.12366C32.6035 0.949062 31.4537 0.188965 30.176 0.188965C28.8984 0.188965 27.7484 0.94918 27.2436 2.12659L20.3957 18.1519L3.07528 19.7244C2.45372 19.7813 1.86254 20.0194 1.37503 20.4092C0.887526 20.799 0.525135 21.3232 0.332789 21.917C-0.0622597 23.132 0.302554 24.4646 1.26527 25.3046L14.3555 36.7846L10.4954 53.7878C10.213 55.038 10.6982 56.3304 11.7355 57.0801C12.293 57.483 12.9454 57.6881 13.6032 57.6881C14.1704 57.6881 14.7329 57.5352 15.238 57.2331L30.176 48.305L45.1087 57.2331C46.2014 57.8905 47.5788 57.8304 48.6139 57.0801C49.1206 56.7134 49.5083 56.2057 49.7288 55.6204C49.9492 55.035 49.9928 54.3977 49.854 53.7878L45.9941 36.7846L59.0841 25.307C59.555 24.8957 59.8947 24.3552 60.0609 23.7525C60.2272 23.1498 60.2127 22.5115 60.0193 21.917Z" fill="#E3E3E3"/></svg>`
        
        const starSVG = `<svg width="61" height="58" viewBox="0 0 61 58" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M60.0193 21.917C59.8274 21.3224 59.4648 20.7975 58.9767 20.4076C58.4885 20.0177 57.8964 19.7801 57.2741 19.7244L39.9564 18.1518L33.1086 2.12366C32.6035 0.949062 31.4537 0.188965 30.176 0.188965C28.8984 0.188965 27.7484 0.94918 27.2436 2.12659L20.3957 18.1519L3.07528 19.7244C2.45372 19.7813 1.86254 20.0194 1.37503 20.4092C0.887526 20.799 0.525135 21.3232 0.332789 21.917C-0.0622597 23.132 0.302554 24.4646 1.26527 25.3046L14.3555 36.7846L10.4954 53.7878C10.213 55.038 10.6982 56.3304 11.7355 57.0801C12.293 57.483 12.9454 57.6881 13.6032 57.6881C14.1704 57.6881 14.7329 57.5352 15.238 57.2331L30.176 48.305L45.1087 57.2331C46.2014 57.8905 47.5788 57.8304 48.6139 57.0801C49.1206 56.7134 49.5083 56.2057 49.7288 55.6204C49.9492 55.035 49.9928 54.3977 49.854 53.7878L45.9941 36.7846L59.0841 25.307C59.555 24.8957 59.8947 24.3552 60.0609 23.7525C60.2272 23.1498 60.2127 22.5115 60.0193 21.917Z" fill="#FECE00"/></svg>`;
        const starContainer = document.getElementById('star-container');
        let scoreBoard = document.getElementById('scoreBoard');
        let loadingMainContainer = document.getElementById('loadingMainContainer');
        loadingMainContainer.style.display = 'flex';

        const loadingDiv = document.getElementById('loadingState');
        loadingDiv.style.display = 'flex';

        const containerDiv = document.createElement('div');
        containerDiv.classList.add('w-full');
        containerDiv.style.display = 'flex';
        containerDiv.style.flexDirection = 'column';
        containerDiv.style.justifyContent = 'center';
        containerDiv.style.alignItems = 'center';

        const paragraph = document.createElement('p');
        paragraph.textContent = 'HOLD ON.';
        paragraph.style.fontSize = '16px';
        paragraph.style.fontWeight = '600';
        paragraph.style.color = 'rgba(0, 0, 0, 0.38)';
        containerDiv.appendChild(paragraph);

        const progressBarContainer = document.createElement('div');
        progressBarContainer.style.position = 'relative';
        progressBarContainer.style.display = 'flex';
        progressBarContainer.style.alignItems = 'center';
        progressBarContainer.style.border = '1px solid #AFB8E6';
        progressBarContainer.style.height = '10px'; 
        progressBarContainer.style.width = '100%';
        progressBarContainer.style.marginTop = '30px';
        progressBarContainer.style.marginBottom = '30px';
        containerDiv.appendChild(progressBarContainer);

        const progressBar = document.createElement('div');
        progressBar.style.height = '10px';
        progressBar.style.backgroundColor = '#D7DCF2';
        progressBar.style.width = '0%';
        progressBarContainer.appendChild(progressBar);

        loadingDiv.appendChild(containerDiv);

        const calculationText = document.createElement('p');
        calculationText.textContent = 'Your stars are being calculated...';
        calculationText.style.fontSize = '14px';
        calculationText.style.fontWeight = '600';
        calculationText.style.color = 'rgba(0, 0, 0, 0.38)';
        containerDiv.appendChild(calculationText);

        let userData = {
            'gameName': gameVersion,
            'gameID': gameId,
            'screenShot': imageCode,
            'userId' : userId,
            'gameTime' : timeDifferenceInSeconds,
            'score' : scoreTotal,
            'star' : starValue
        };
        console.log(userData);
        fetch(`https://api.teachertrainingkolkata.in/api/saveGameScore`, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(userData)
        })
        .then(response => {
        setTimeout(() => { 
            if (response.ok) {
            if (response.status == 200) {
                loadingMainContainer.style.display = 'none';
                loadingDiv.style.display = 'none';
                starContainer.style.display = 'flex';
                starContainer.style.flexDirection = 'row';
                document.getElementById('starFeedbackMessage').innerHTML = feedbackMessage;
                for (let i = 0; i < starValue; i++) {
                    const starDiv = document.createElement('div');
                    starDiv.innerHTML = starSVG;
                    starDiv.classList.add('star');
                    starContainer.appendChild(starDiv);
                    setTimeout(() => {
                        starDiv.style.opacity = '1'; 
                        starDiv.style.animationDelay = `${i * 0.5}s`;
                    }, i * 500);
                }
                for (let i = 0; i < maxStarValue - starValue; i++) {
                    const starDiv = document.createElement('div');
                    starDiv.innerHTML = blankStar;
                    starContainer.appendChild(starDiv);
                }
                scoreBoard.style.display = 'flex';
            }
            } else {
            console.log('Something went wrong', response);
            }
        }, 100);
        })
        .catch(error => {
        console.error('An error occurred', error);
        });
            
            // Clear the drawing
            // graphics.clear();
        });        
};