/*
NAME
  main.js

AUTHOR
  Trek Hopton <trek@ausocean.org>
  Alan Noble <alan@ausocean.org>

LICENSE
  This file is Copyright (C) 2018 the Australian Ocean Lab (AusOcean)

  It is free software: you can redistribute it and/or modify them
  under the terms of the GNU General Public License as published by the
  Free Software Foundation, either version 3 of the License, or (at your
  option) any later version.

  It is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  for more details.

  You should have received a copy of the GNU General Public License in gpl.txt.
  If not, see [GNU licenses](http://www.gnu.org/licenses).
*/

// playFile will process and play the chosen target file.
function playFile() {
    const input = event.target.files[0]
    const reader = new FileReader()

    reader.onload = event => {
        bytes = new Uint8Array(event.target.result);

        let dec = new Decoder();

        // Decode adpcm to pcm.
        let decoded = dec.decode(bytes);

        // Convert raw pcm to wav TODO(Trek): make these configurable.
        let wav = pcmToWav(new Uint8Array(decoded.buffer), 48000, 1, 16);

        // Play wav data in player.
        const blob = new Blob([wav], {
            type: 'audio/wav'
        });
        const url = URL.createObjectURL(blob);

        const audio = document.getElementById('audio');
        const source = document.getElementById('source');

        source.src = url;
        audio.load();
        audio.play();
    }
    reader.onerror = error => reject(error)
    reader.readAsArrayBuffer(input)

}

// getQuery gets everything after the question mark in the URL.
function getQuery() {
    let regex = new RegExp("\\?(.*)");
    let match = regex.exec(window.location.href);
    if (match == null) {
        return '';
    } else {
        return decodeURIComponent(match[1].replace(/\+/g, " "));
    }
}

// load gets the file from the given url and displays a link for download.
function load() {
    let url = document.getElementById('url').value;
    if (url == "") {
        url = getQuery()
        document.getElementById('url').value = url;
    }
    if (url[0] == '/') {
        url = window.location.protocol + '//' + window.location.host + url;
    }
    if (url == "") {
        return;
    }

    let request = new XMLHttpRequest();
    request.responseType = "blob";
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            if (request.status === 200) {
                console.log("request received");

                data = request.response;

                dataURL = URL.createObjectURL(data);

                let link = document.getElementById("link");
                link.href = dataURL;
                link.download = "media.ts";
                link.innerHTML = "Download";

            } else {
                console.log('There was a problem with the request. Status: ' + request.status);
            }
        }
    }
    request.open("GET", url, true);
    request.send();
}