<html>
<head>
    <meta charset="utf-8"/>
    <title>TDT Channels - Marc Vila</title>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/clappr@latest/dist/clappr.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

    <script src="./index.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div class="container" style="margin-top: 30px; margin-bottom: 30px">
    <h1 class="display-3">TDTChannels</h1>
    <p class="lead">
        Bienvenido al reproductor del proyecto opensource TDTChannels
    </p>
    <br>
    <a class="btn btn-outline-secondary" role="button" href="https://github.com/LaQuay/TDTChannels"
       target="_blank">Repositorio TDT Channels</a>
    <a class="btn btn-outline-success" role="button" href="http://www.marcvila.me/"
       target="_blank">Sitio personal</a>
    <a class="btn btn-outline-warning" role="button" href="https://github.com/LaQuay/"
       target="_blank">GitHub</a>
    <a class="btn btn-outline-primary" role="button" href="https://www.linkedin.com/in/marcvilagomez/"
       target="_blank">LinkedIn</a>
    <div style="margin-top: 25px">
        <div id="video">
            <p class="lead">
                Reproductor de Televisión
            </p>

            <div class="input-group mb-3">
                <input id="input-reproduccion-video" type="text" class="form-control" placeholder="URL de reproducción">
                <div class="input-group-append">
                    <button class="btn btn-outline-secondary" type="button" id="button-reproduccion-video"
                            onclick="loadItem('video');">Cargar
                    </button>
                </div>
            </div>
            <div id="video-player"></div>
            <div id="video-information" class="shadow-sm p-3 mb-5 bg-white rounded" style="margin-top: 15px">
                <p class="lead">Información de la reproducción</p>
                Formatos soportados
                <br>
                <em>m3u8</em>
                <br><br>
                Resoluciones disponibles
                <br>
                <em id="video-resolution"></em>
            </div>
        </div>

        <div id="audio" style="margin-top: 15px">
            <p class="lead">
                Reproductor de Radio
            </p>
            <div class="input-group mb-3">
                <input id="input-reproduccion-audio" type="text" class="form-control" placeholder="URL de reproducción">
                <div class="input-group-append">
                    <button class="btn btn-outline-secondary" type="button" id="button-reproduccion-audio"
                            onclick="loadItem('audio');">Cargar
                    </button>
                </div>
            </div>
            <audio id="audio-controller" controls>
                <source id="audio-player" src="" autoplay>
                Your browser does not support the audio element.
            </audio>
            <div id="audio-information" class="shadow-sm p-3 mb-5 bg-white rounded" style="margin-top: 15px">
                <p class="lead">Información de la reproducción</p>
                Formatos soportados
                <br>
                <em>nsv</em>
            </div>
        </div>
    </div>
</div>
<script>
    // Se espera en la URL este tipo de llamada
    // .html?type={audio,video}&channel={url_a_reproducir}
    var player;

    var typeToReproduce = getUrlParameter("type");
    var channelToReproduce;
    if (typeToReproduce == "audio") {
        channelToReproduce = getUrlParameter("channel");
        reproduceAudio(channelToReproduce);
    } else if (typeToReproduce == "video") {
        channelToReproduce = getUrlParameter("channel");
        reproduceVideo(channelToReproduce);
    }

    function loadItem(from) {
        var value;
        if (from == "audio") {
            value = document.getElementById("input-reproduccion-audio").value;
            reproduceAudio(value);
        } else if (from == "video") {
            value = document.getElementById("input-reproduccion-video").value;
            reproduceVideo(value);
        }
    }

	function reproduceVideo(channelToReproduce) {
	    console.log("Reproducing " + channelToReproduce);
        if (channelToReproduce.includes("m3u8")) {
            console.log("Reproducing video")
            var divInfo = document.getElementById("video-player").childElementCount;
            if (divInfo == 0) {
                player = new Clappr.Player({
                    source: channelToReproduce,
                    parentId: '#video-player',
                    height: '400px',
                    width: '100%',
                    autoPlay: true,
                });
            } else {
                // Assume player instance is already created
                player.configure({
                  source: channelToReproduce,
                });
            }

            getResolution(channelToReproduce);
        }
	}

	function reproduceAudio(channelToReproduce) {
	    console.log("Reproducing " + channelToReproduce);
	    if (channelToReproduce.includes("nsv")) {
            console.log("Reproducing audio")

            var audioSource = document.getElementById('audio-controller');
            var audioPlayer = document.getElementById('audio-player');

            audioPlayer.src = channelToReproduce;

            audioSource.load();
            audioSource.pause();
            var playPromise = audioSource.play();

            if (playPromise !== undefined) {
              playPromise.then(function() {
                // Automatic playback started!
              }).catch(function(error) {
                // Automatic playback failed.
                // Show a UI element to let the user manually start playback.
              });
            }
        }
    }

    function updateResolution(resolutions) {
        console.log("Resoluciones: " + resolutions);
        document.getElementById("video-resolution").innerHTML = "";
        for (i = 0; i < resolutions.length; i++) {
            var resolutionToAdd = resolutions[i];
            if (i < resolutions.length - 1){
                resolutionToAdd += ", ";
            }
            document.getElementById("video-resolution").innerHTML += resolutionToAdd;
        }
    }

</script>
</body>
</html>