<!DOCTYPE html>
<html>
<!--Hello! You have found my TV Controller. The API provided in this source is behind a firewall and will be of no use to you. Move along!-->

<head>
    <div id="view2"></div>
</head>
<title>Samsung TVController</title>

<!--Styles-->+
<style>
    body {
        background-color: #101010;
        color: #ffffff;
    }

    h1 {
        color: #ffffff;
    }

    nav a {
        color: #ffffff;
    }

    footer {
        color: #ffffff;
    }
</style>


<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
    integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
    crossorigin="anonymous"></script>
<!--END Styles-->

<!--MAIN JS-->
<script>
    // Set API URL
    let rootURL = "https://grwh.work:3031"
    // Init timer VAR
    var timer;
    // Youtube Shorts Timer - Skip Every 55 Seconds
    function startTimer() {
        console.log("Shorts timer started!")
        showSuccessAlert("Started Shorts Timer")
        timer = setInterval(function () {
            console.log("Time is up, going to next short");
            fetch(rootURL + "/down")
                .then(function (response) {
                    return response.json();
                }).then(function (data) {
                    console.log("Resonse from AutoScroll Request: " + data)
                    if (data == 1) {
                        showSuccessAlert("Next Short Requested Successfully!")
                        console.log("Command: Next Short - SENT!")
                    } else {
                        showSuccessAlert("Next Short Request FAILED!")
                        console.log("Command: Next Short FAILED!")
                    }
                })
        }, 55000);
    }

    // Kill the Timer
    function stopTimer() {
        showSuccessAlert("Shorts Timer Disabled!")
        clearInterval(timer);
    }

    // Settng up success alerts
    function showSuccessAlert(message) {
        document.getElementById("view2").innerHTML = "<div class=\"alert alert-success\" role=\"alert\"><CENTER>" + message + "</CENTER></div>";

        setInterval(function () {
            document.getElementById("view2").innerHTML = "<BR><BR><BR>";

        }, 15000);
    }

    // Setting up Failed Alerts
    function showFailAlert(message) {
        document.getElementById("view2").innerHTML = "<div class=\"alert alert-danger\" role=\"alert\"><CENTER>" + message + "</CENTER></div>";

        setInterval(function () {
            console.log("60 seconds are up, going to next short");
            document.getElementById("view2").innerHTML = "<BR><BR><BR>";

        }, 15000);
    }



    // This function is only used for the Refresh Button 
    function generateNewToken() {
        fetch(rootURL + "/newToken")
            .then(function (response) {
                return response.json();
            })
            .then(function (data) {
                if (data == 1) {
                    showSuccessAlert("New Token Request Sent Successfully!")
                    return console.log("Command: New Token Request - SENT!")
                } else {
                    showSuccessAlert("New Token Request FAILED!")
                    return console.log("Command: New Token Request FAILED!")
                }
            })
    }

    // Ask the user for the password.
    let pass = prompt("Enter the password!", "");
    let text;

    // Ask the API if the password is correct
    fetch(rootURL + "/checkPass?pass=" + pass)
        .then(function (response) {
            return response.json();
        }) // Check for a positive 1 response back
        .then(function (data) {
            if (data == "1") {
                // If they do not submit a password OR hit cancel, fail the login!
                if (pass == null || pass == "") {
                    document.getElementById("view").innerHTML = "WOO"
                } else {
                    // If we got this far, we have logged in, lets tell the user that
                    showSuccessAlert("You have logged in successfully!")
                    document.getElementById("view").innerHTML = "<CENTER><IMG SRC=\"../images/icon.png\"></CENTER><a href=\"javascript:window.open('help.html','Click for Key ShortCuts!','width=600,height=400')\">Click for Key ShortCuts!</a><BR><BR><a href=\"javascript:window.open('input.html','Click to Send Text Imput!','width=600,height=400')\"><button type=\"button\" class=\"btn btn-primary\">Open Text Input</button></a><BR><BR><button type=\"button\" class=\"btn btn-primary\" onclick=\"startTimer()\">Enable AutoScroll</button> / <button type=\"button\" class=\"btn btn-primary\" onclick=\"stopTimer()\"> Disable</button> <BR><BR>Commands Not Working? Issue a new Token using: <BR> <button type=\"button\" class=\"btn btn-primary\" onclick=\"generateNewToken()\">Request new Token</button>";

                    // Adding the event Listening Function
                    function addEvent(element, eventName, callback) {
                        if (element.addEventListener) {
                            element.addEventListener(eventName, callback, false);
                        } else if (element.attachEvent) {
                            element.attachEvent("on" + eventName, callback);
                        } else {
                            element["on" + eventName] = callback;
                        }
                    }

                    // Lets now listen for events
                    addEvent(document, "keypress", function (e) {
                        e = e || window.event;

                        // Command UP
                        if (e.key == "w" || e.code == "Numpad8") {
                            fetch(rootURL + "/up")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("UP Sent Successfully!")
                                        return console.log("Command: UP - SENT!")
                                    } else {
                                        showSuccessAlert("UP FAILED!")
                                        return console.log("Command: UP FAILED!")
                                    }
                                })
                        }

                        // Command LEFT
                        if (e.key == "a" || e.code == "Numpad4") {
                            fetch(rootURL + "/left")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("LEFT Sent Successfully!")
                                        return console.log("Command: LEFT - SENT!")
                                    } else {
                                        showSuccessAlert("LEFT FAILED!")
                                        return console.log("Command: LEFT FAILED!")
                                    }
                                })
                        }

                        // Command DOWN
                        if (e.key == "s" || e.key == "2") {
                            fetch(rootURL + "/down")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("DOWN Sent Successfully!")
                                        return console.log("Command: DOWN - SENT!")
                                    } else {
                                        showSuccessAlert("DOWN FAILED!")
                                        return console.log("Command: DOWN FAILED!")
                                    }
                                })
                        }

                        // Command RIGHT
                        if (e.key == "d" || e.code == "Numpad6") {
                            fetch(rootURL + "/right")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("RIGHT Sent Successfully!")
                                        return console.log("Command: RIGHT - SENT!")
                                    } else {
                                        showSuccessAlert("UP FAILED!")
                                        return console.log("Command: RIGHT FAILED!")
                                    }
                                })
                        }

                        // Command ENTER
                        if (e.key == "Enter" || e.code == "Numpad5") {
                            fetch(rootURL + "/enter")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("ENTER Sent Successfully!")
                                        return console.log("Command: ENTER - SENT!")
                                    } else {
                                        showSuccessAlert("ENTER FAILED!")
                                        return console.log("Command: ENTEr FAILED!")
                                    }
                                })
                        }

                        // Command BACK
                        if (e.key == "x" || e.code == "NumpadDecimal") {
                            fetch(rootURL + "/back")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("BACK Sent Successfully!")
                                        return console.log("Command: BACK - SENT!")
                                    } else {
                                        showSuccessAlert("BACK FAILED!")
                                        return console.log("Command: BACK FAILED!")
                                    }
                                })
                        }

                        // Command VOL UP
                        if (e.key == "p" || e.code == "NumpadAdd") {
                            fetch(rootURL + "/volumeUp")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("VOLUME UP Sent Successfully!")
                                        return console.log("Command: VOLUME UP - SENT!")
                                    } else {
                                        showSuccessAlert("VOLUME UP FAILED!")
                                        return console.log("Command: VOLUME UP FAILED!")
                                    }
                                })
                        }

                        // Command VOL DOWN
                        if (e.key == "o" || e.code == "NumpadSubtract") {
                            fetch(rootURL + "/volumeDown")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("VOLUME DOWN Sent Successfully!")
                                        return console.log("Command: VOLUME DOWN - SENT!")
                                    } else {
                                        showSuccessAlert("VOLUME DOWN FAILED!")
                                        return console.log("Command: VOLUME DOWN FAILED!")
                                    }
                                })
                        }

                        // Request new token using the R shortcut
                        if (e.key == "r") {
                            fetch(rootURL + "/newToken")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("New Token Request Sent Successfully!")
                                        return console.log("Command: New Token Request - SENT!")
                                    } else {
                                        showSuccessAlert("New Token Request FAILED!")
                                        return console.log("Command: New Token Request FAILED!")
                                    }
                                })
                        }

                        // Command MUTE
                        if (e.key == "m" || e.code == "Numpad0") {
                            fetch(rootURL + "/mute")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("Mute Sent Successfully!")
                                        return console.log("Command: BACK - SENT!")
                                    } else {
                                        showSuccessAlert("Mute FAILED!")
                                        return console.log("Command: Mute FAILED!")
                                    }
                                })
                        }

                        // Command Picture Mode
                        if (e.key == "l") {
                            fetch(rootURL + "/pmode")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("Picture Mode Sent Successfully!")
                                        return console.log("Command: Picutr Mode - SENT!")
                                    } else {
                                        showSuccessAlert("Picture Mode FAILED!")
                                        return console.log("Command: Picture Mode FAILED!")
                                    }
                                })
                        }

                        // Command HOME
                        if (e.key == "h") {
                            fetch(rootURL + "/home")
                                .then(function (response) {
                                    return response.json();
                                })
                                .then(function (data) {
                                    if (data == 1) {
                                        showSuccessAlert("HOME Sent Successfully!")
                                        return console.log("Command: HOME - SENT!")
                                    } else {
                                        showSuccessAlert("HOME FAILED!")
                                        return console.log("Command: HOME FAILED!")
                                    }
                                })
                        }

                    });
                }
            } else {
                // Login Failed!
                showFailAlert("The password was incorrect!")
                document.getElementById("view").innerHTML = "<meta http-equiv=\"refresh\" content=3;>"
            }
        })
</script>
<!--END MAIN JS-->

</head>

<body>
    <!--MAIN VIEWPORT-->

    <center>
        <div id="view"></div>
        <center>
            <!--END MAIN VIEWPORT-->

</body>

</html>