<?php
// On redirige si l'utilisateur est déjà connecté
if(isset($_SESSION['userId'])){
	header('Location: /');
}
?>
<!DOCTYPE html>
<html lang="fr">
    
<head>
    <meta charset="UTF-8">
    <!-- Dépendances -->
	<?=Client::getDependencies()?>
    <link rel="stylesheet" href="<?=getWebsiteSetting("websiteUrl")?>pages/assets/css/connexion.css">
    <title>Inscription</title>

	<!-- Embed -->
    <meta content="<?=getWebsiteSetting("websiteName")?>" property="og:title" />
    <meta content="<?=getWebsiteSetting("websiteDescription")?>" property="og:description" />
    <meta content="<?=getWebsiteSetting("websiteUrl")?>" property="og:url" />
    <meta content="<?=getWebsiteSetting("websiteUrl")?>data/images/logo/favicon.png" property="og:image" />
    <meta content="<?=getWebsiteSetting("mainColor")?>" data-react-helmet="true" name="theme-color" />

    <!-- Recaptcha -->
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
    <script type="text/javascript">
      var onloadCallback = function() {
        grecaptcha.render('g-recaptcha', {
          'sitekey' : '6Ld3jukdAAAAAFLO9t2Uyc3c9bru4kTcwffcG3mE'
        });
      };
    </script>
</head>

<body style="background-image:url('<?=getWebsiteSetting("websiteUrl")?>/data/images/planche-bois-aliments.jpg');background-size:cover;">
	<div class="container h-100">
		<div class="d-flex justify-content-center h-100">
			<div class="user_card">
				<div class="d-flex justify-content-center">
					<div class="brand_logo_container">
						<img src="https://marmiuton.sl-projects.com/data/images/logo/favicon.png" class="brand_logo" alt="Logo">
					</div>
				</div>
				<div class="d-flex justify-content-center form_container" id="container">

                    <!-- Formulaire d'enregistrement -->
                    <form method="post" class="mt-3 needs-validation" novalidate id="registerForm">
                        <div class="form-group">
                            <label>Nom d'utilisateur</label>
                            <input type="text" class="form-control" id="registerUsername" name="registerUsername" placeholder="GordonFreeman" required value="<?php if (isset($_POST['registerUsername'])) echo $_POST['registerUsername']; ?>">
                            <div class="invalid-feedback" id="registerUsernameAlert">
                                Il paraît qu'avec un identifiant ça serait pas mal :p
                            </div>
                            <div class="valid-feedback">
                                Très beau pseudo
                            </div>
                        </div>
                        <div class="form-group">
                            <label>Adresse email</label>
                            <input type="email" class="form-control" id="registerEmail" name="registerEmail" placeholder="gordon.freeman@blackmesa.us" required value="<?php if (isset($_POST['registerEmail'])) echo $_POST['registerEmail']; ?>">
                            <div class="invalid-feedback" id="registerEmailAlert">
                                Vous n'avez pas d'adresse mail? 🤔
                            </div>
                            <div class="valid-feedback">
                                Nickel 👌
                            </div>
                        </div>
                        <div class="form-group">
                            <label>Mot de passe</label>
                            <input type="password" class="form-control" id="registerPassword1" name="registerPassword1" placeholder="tut@p3str0v1te!" required value="<?php if (isset($_POST['registerPassword1'])) echo $_POST['registerPassword1']; ?>">
                            <div class="invalid-feedback" id="registerPassword1Alert">
                                Vous créez un compte sans mot de passe vous?
                            </div>
                            <div class="valid-feedback">
                                Nickel 👌
                            </div>
                        </div>
                        <div class="form-group">
                            <label>Répètes ton mot de passe stp</label>
                            <input type="password" class="form-control" id="registerPassword2" name="registerPassword2" placeholder="tut@p3str0v1te!" required value="<?php if (isset($_POST['registerPassword2'])) echo $_POST['registerPassword2']; ?>">
                            <div class="invalid-feedback" id="registerPassword2Alert">
                                Re-écrivez votre mdp svp
                            </div>
                            <div class="valid-feedback">
                                Nickel 👌
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="form-check">
                                <input class="form-check-input" type="checkbox" value="" name="registerTos" required>
                                <label class="form-check-label">
                                    J'ai lu et j'accepte les <a href="#" class="text-light">conditions d'utilisation</a>.
                                </label>
                                <div class="invalid-feedback">
                                    De toute façon vous êtes obligé pour continuer
                                </div>
                            </div>
                        </div>

						<div id="g-recaptcha"></div>
      					<br/>
                        <button type="button" id="registerBtn" class="btn btn-orange">S'inscrire</button>
                        <a href="<?=genPageLink("/login")?>" class="text-light">Déjà inscrit? 🌈</a>
                    </form>
				</div>
			</div>
		</div>
	</div>

    <script type="text/javascript">
		(function() {
		  'use strict';
		  window.addEventListener('load', function() {
		    // Fetch all the forms we want to apply custom Bootstrap validation styles to
		    var forms = document.getElementsByClassName('needs-validation');
		    // Loop over them and prevent submission
			var validation = Array.prototype.filter.call(forms, function(form) {
				document.getElementById("registerBtn").addEventListener("click", function() {
					if(form.checkValidity() === false){

					}else{
						sendFormData();
					}
					form.classList.add('was-validated');
				});
		    });
		  }, false);
		})();

		$("#registerUsername").change(function() {
			$.get("<?=genPageLink("/backTasks/?checkUsernameEmail=")?>="+encodeURI($("#registerUsername").val()), function(data) {
				if (data=="true") {
					$("#registerUsernameAlert").html("Nom d'utilisateur déjà utilisé.");
					$("#registerUsernameAlert").css("display","block");
					$("#registerBtn").attr("disabled", "");
				} else {
					$("#registerUsernameAlert").html("Il paraît qu'avec un identifiant ça serait pas mal :p");
					$("#registerUsernameAlert").css("display","");
					$("#registerBtn").removeAttr("disabled");
				}
			});
		});

		$("#registerEmail").change(function() {
			$.get("<?=genPageLink("/backTasks/?checkUsernameEmail")?>="+encodeURI($("#registerEmail").val()), function(data) {
				if (data=="true") {
					$("#registerEmailAlert").html("Email déjà utilisée.");
					$("#registerEmailAlert").css("display","block");
					$("#registerBtn").attr("disabled", "");
				} else {
					$("#registerEmailAlert").html("Vous n'avez pas d'adresse mail? 🤔");
					$("#registerEmailAlert").css("display","");
					$("#registerBtn").removeAttr("disabled");
				}
			});
		});

		$("#registerPassword1").change(function() {
			checkPassword();
		});
		$("#registerPassword2").change(function() {
			checkPassword();
		});

		function checkPassword(){
			if ($("#registerPassword1").val()!=$("#registerPassword2").val()) {
				$("#registerPassword1Alert").html("Les mots de passse ne correspondent pas");
				$("#registerPassword1Alert").css("display","block");
				$("#registerPassword2Alert").html("Les mots de passse ne correspondent pas");
				$("#registerPassword2Alert").css("display","block");
				$("#registerBtn").attr("disabled", "");
			} else {
				var passw = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,32}$/;
				if($("#registerPassword1").val().match(passw)) { 
					$("#registerPassword1Alert").html('Vous créez un compte sans mot de passe vous?');
					$("#registerPassword1Alert").css("display","");
					$("#registerPassword2Alert").html('Re-écrivez votre mdp svp');
					$("#registerPassword2Alert").css("display","");
					$("#registerBtn").removeAttr("disabled");
				} else { 
					$("#registerPassword1Alert").html("Votre mot de passe doit être long d'au moins 8 caractères et doit contenir au moins 1 majuscule, 1 minuscule et 1 nombre.");
					$("#registerPassword1Alert").css("display","block");
					$("#registerPassword2Alert").html("Votre mot de passe doit être long d'au moins 8 caractères et doit contenir au moins 1 majuscule, 1 minuscule et 1 nombre.");
					$("#registerPassword2Alert").css("display","block");
					$("#registerBtn").attr("disabled", "");
				}
				
			}
		}
		
		function sendFormData(){
			$.post( "<?=genPageLink("/backTasks/?handleLoginAndRegisterForm")?>", $( "#registerForm" ).serialize() )
            .done(function( data ) {
				grecaptcha.reset()
				console.log(data);
				if(isJson(data)){
					let json = JSON.parse(data);
					if(json.success){
						SnackBar({
							message: json.success,
							status: "success"
						});
						$("#container").html("<p>Redirection...<br><a href='<?=genPageLink("/login")?>' class='text-light'>Cliquez ici</a> si vous n'êtes pas automatiquement redirigé.</p>");
						// On redirige après 2s
						setTimeout(function(){
							window.location.href = '<?=getWebsiteSetting("websiteUrl")?><?=genPageLink("/login")?>';
						}, 2000);
					}else{
						SnackBar({
							message: json.error,
							status: "danger",
							timeout: false
						});
					}
				}else{
					SnackBar({
						message: data,
						status: "danger",
						timeout: false
					});
				}
            });
		}

		function isJson(str) {
			try {
				JSON.parse(str);
			} catch (e) {
				return false;
			}
			return true;
		}

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