<!DOCTYPE html>
<script type="text/javascript" src="./horaris.json"></script>
<script type="text/javascript" src="./autocomplete.js"></script>
<script type="text/javascript" src="./completeLink.js"></script>
<script type="text/javascript" src="./completeSubjectListInHTML.js"></script>
<script type="text/javascript" src="./getTimeAndDate.js"></script>
<meta charset="utf-8">

<html>
    <head>
    </head>
    <link rel="stylesheet" href="autocomplete.css">
    <body>
        <h1>App de traçabilitat DAFME</h1>
        <h2 id = "assignatura"></h2>
        <h3 id = "aula"></h3>
        <a href="#">No és així? Canvia-ho.</a>
        
        <h2 id="hora">
            <span id="inici"></span> -
            <span id="fi"></span>
        </h2>
        <h3 id="data"></h3>
        <a href="#">No és així? Canvia-ho.</a>

        <form id="subjectListInput" autocomplete="off">
            <div class="autocomplete" id="input2" style="width:300px;">
                <input id="myInput" type="text" name="mySubject" placeholder="Subject">
            </div>
            
        </form>
        <button onclick="completeSubjectList()">Afegeix</button>

        <div id="subjectList"></div>

        <form>
            <label for="seient" id="seient"></label><br>
            <input type="text" id="seientInput" placeholder="Seient"><br>
        </form>

		<form id = "link">
        <!--<form id = "link" action = https://docs.google.com/forms/d/e/1FAIpQLSfT9o287VqLyhwR8LPdloAQWhuqCgA3NfdhgP5vb9_sVQHL-g/viewform?entry.1063142948=S03&entry.2115504093=2020-09-14&entry.1749141911=9:00&entry.1827359679=10:00&entry.208184485=Columna+3&entry.1600275159=[Autogenerat+per+delefme/covid-tracability]>-->
		<button onclick="completaLink()">Continua</button>
		</form>

        <script>
        	var codisFiles = ["208184485", "1077148310", "642851281", "1686039024", "697835787", "1511799646", "809853432", "182597499", "1890539481", "529159478", "1615241874", "1334263875"];
            var classesAlumne = [{}];
            var subjects = ["Calcul 1", "Calcul 2", "Algebra Lineal", "Geometria", "Numerica", "EDOS"];
        	var linkOutput = "";      	
        	var mydata = JSON.parse(classes);
            let datahoraris = JSON.stringify(classesAlumne);
            var hora_actual = new Date();
            var minuts, dia, mes, any, data;

            if(localStorage.pos == null) localStorage.pos = 0;

            autocomplete(document.getElementById("myInput"), subjects);
            	
            getTimeAndDate();
            
            if(localStorage.classesAlumne != null) classesAlumne = JSON.parse(localStorage.classesAlumne);

            writeSubjectList();
           
            document.getElementById("data").innerHTML = data;

        </script>


    </body>
</html>
