<!DOCTYPE html>
<html lang="el">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Φακός με Ρύθμιση Συχνότητας και Έντασης</title>
</head>
<body>
    <input type="range" id="frequencySlider" min="10" max="30" value="10" />
    <span id="frequencyValue">10</span> Hz
    <br><br>
    <input type="range" id="intensitySlider" min="0.1" max="1" step="0.1" value="1" />
    <span id="intensityValue">1</span> intensity of light
    <br><br>
    <button id="flashlightButton">lens (flash) off</button>

    <script>
        let flashlightOn = false;
        let intervalId;
        let frequency = 10;
        let intensity = 1;
        let flashActive = false; 

        document.getElementById('frequencySlider').addEventListener('input', function() {
            frequency = this.value;
            document.getElementById('frequencyValue').textContent = frequency;
        });

        document.getElementById('intensitySlider').addEventListener('input', function() {
            intensity = this.value;
            document.getElementById('intensityValue').textContent = intensity;
        });

        document.getElementById('flashlightButton').addEventListener('click', async () => {
            const button = document.getElementById('flashlightButton');

            if (flashActive) {
                clearInterval(intervalId);
                flashActive = false;
                button.textContent = 'lens (flash) off';
                flashlightOn = false;
            } else {
                if ('mediaDevices' in navigator && 'getUserMedia' in navigator.mediaDevices) {
                    try {
                        const stream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } });
                        const track = stream.getVideoTracks()[0];

                        const capabilities = track.getCapabilities();
                        if ('torch' in capabilities) {
                            flashActive = true;
                            button.textContent = 'lens(flash) on';
                            flashlightOn = true;

                            intervalId = setInterval(() => {
                                track.applyConstraints({
                                    advanced: [{ torch: flashlightOn, brightness: parseFloat(intensity) }]
                                });
                                flashlightOn = !flashlightOn;
                            }, 1000 / frequency);
                        } else {
                            alert('Η συσκευή σου δεν υποστηρίζει το torch.');
                        }
                    } catch (error) {
                        alert('Η συσκευή σου δεν υποστηρίζει φακό μέσω browser. Παρακαλώ δοκίμασε σε άλλη συσκευή ή εφαρμογή.');
                    }
                } else {
                    alert('Η συσκευή σου δεν υποστηρίζει φακό μέσω browser.');
                }
            }
        });
    </script>
</body>
</html>
