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

<html>
    <head>
    	<style type="text/css">
    		.myButton {
				box-shadow:inset 0px 1px 0px 0px #6e9eb8;
				background:linear-gradient(to bottom, #1a5b8c 5%, #4b84a3 100%);
				background-color:#1a5b8c;
				border:1px solid #22536e;
				display:inline-block;
				cursor:pointer;
				color:#ffffff;
				font-family:Arial;
				font-size:13px;
				font-weight:bold;
				padding:6px 12px;
				text-decoration:none;
			}
			.myButton:hover {
				background:linear-gradient(to bottom, #4b84a3 5%, #1a5b8c 100%);
				background-color:#4b84a3;
			}
			.myButton:active {
				position:relative;
				top:1px;
			}
			.myButton2 {
				box-shadow:inset 0px 1px 0px 0px #b30000;
				background:linear-gradient(to bottom, #ff1a1a 5%, #ff8080 100%);
				background-color:#ff6666;
				border:1px solid #990000;
				display:inline-block;
				cursor:pointer;
				color:#ffffff;
				font-family:Arial;
				font-size:13px;
				font-weight:bold;
				padding:6px 12px;
				text-decoration:none;
			}
			.myButton2:hover {
				background:linear-gradient(to bottom, #ff8080 5%, #ff1a1a 100%);
				background-color:#ff6666;
			}
			.myButton2:active {
				position:relative;
				top:1px;
			}
		</style>
    </head>
    <center>
	    <link rel="stylesheet" href="autocomplete.css">
	    <body>
	        <h1>App de traçabilitat DAFME</h1>
	        <h2 id = "assignatura"></h2>
	        <h3 id = "aula"></h3>
	        
	        <h2 id="hora">
	            <span id="inici"></span> -
	            <span id="fi"></span>
	        </h2>
	        <h3 id="data"></h3>

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

	        <a class="myButton" onclick="completeSubjectList()">Afegeix</a>

	        <p id="alert" style="opacity: 0; color:red;"> 
				
			</p> 
	        <div id="subjectList"><b>Assignatures Cursades:</b></div>

	        <form>
	            <label for="seient" id="seient"></label><br>
	            <input type="text" id="seientInput" placeholder="Seient" style="width:300px;"><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]>-->

			<h2>
				<a class="myButton" type="reset" onclick="completaLink()">Continua</a>
				<a class="myButton2" onclick="completaLinkNoAnatClasse()">No he assistit a classe</a>
			</h2>
			</form>

			<a class="myButton" href="https://docs.google.com/forms/d/e/1FAIpQLSfT9o287VqLyhwR8LPdloAQWhuqCgA3NfdhgP5vb9_sVQHL-g/viewform">Hi ha errors? Completa formulari manualment</a>

	        <script>
	        	//localStorage.clear();

	        	var codisFiles = ["208184485", "1077148310", "642851281", "1686039024", "697835787", "1511799646", "809853432", "182597499", "1890539481", "529159478", "1615241874", "1334263875"];
	            var subjects = [];
	        	var linkOutput = "";      	
	        	var totesLesClasses = JSON.parse(classes);
	            var dataHorarisAlumne = [];
	            var hora_actual = new Date();
	            var minuts, dia, mes, any, data;

	            if(localStorage.dataHorarisAlumne != null) dataHorarisAlumne = JSON.parse(localStorage.dataHorarisAlumne);

	           	//localStorage.clear();
	            returnAllSubjectArray();
	            autocomplete(document.getElementById("myInput"), subjects);
	            getTimeAndDate();
	            completaHTML();
	            writeSubjectList();

	        </script>


	    </body>
	</center>
</html>
