// Déclaration de la map 
var map = L.map('map').setView([50.880301, 6.560531], 13,);

//Déclaration du calque
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 20, }).addTo(map);

// Création de la classe threeIcon
// TODO: Adjust all the values
var threeIcon = L.Icon.extend({
    options: {
        iconSize: [53, 75],
        iconAnchor: [53 / 2, 75],
        shadowAnchor: [4, 62],
        popupAnchor: [-3, -76]
    }
});

// Création de l'icon BAUM
var baumIcon = new threeIcon({ iconUrl: 'baum.png' });
// Création de l'icon BOUDOIR
var boudoirIcon = new threeIcon({ iconUrl: 'boudoir.png' });

//Création d'un objet cluster
//var cluster1 = L.markerClusterGroup();
//
//Import des données JSON du fichier historiqueMarqueurs.json (fonctionne si et seulement si le serveur est online)
// (à l'avenir mettre en place une petite base de données type Firebase)
fetch('historiqueMarqueurs.json')
  .then(response => response.json())
// Ajout des marqueurs du fichier JSON grâce à la fonction addMarkersFromJson
  .then(json => addMarkersFromJson(json))
//Erreur
  .catch(error => console.error('Could not load markers', error));


// Fonction ajout des marqueurs depuis le fichier JSON
function addMarkersFromJson(json) {
    for (var i = 0; i < json.length; i++) {
        var markerData = json[i];
        var markerIcon = markerData.icon === 'baum' ? baumIcon : boudoirIcon;
        var marker = L.marker([markerData.latitude, markerData.longitude], {icon : markerIcon}).addTo(map);
        marker.bindPopup('<h2>' + markerData.title + '</h2>' + '<p><b>' + markerData.date + '</b></p>' + '<p>' + markerData.desc + '</p>');
        //cluster1.addLayer(marker)
        //map.addLayer(cluster1);
    }
}

// Fonction ajout marqueur
function addMarker(e) {
alert("coucou"); 

    // Récupérer la valeur du select-icon pour ajouter la bonne icône
    var select = document.getElementById('three-select').value;

    // Récupérer latitude et longitude
    var latitude = e.latlng.lat;
    var longitude = e.latlng.lng;

    // Création d'un formulaire lors de l'ajout d'un marqueur
    var form = document.createElement('form');
    form.id = "myForm"

    // Format du formulaire
    form.innerHTML =
        '<b><label for="marker-title">Name of the tree :</label>' +
        '<br><input style="bottom: 10px" type="text" id="marker-title" name="marker-title" required>' +
        '<div></div>' +
    
   
        '<br><b><label for="marker-date">Date of Beginning</label>' +
        '<br><textarea id="marker-date" name="marker-date" required></textarea>' +
        '<div></div>' +
        '<br><b><label for="marker-date2">Date of End : (put xxx if none) </label>' +
        '<br><textarea id="marker-date2" name="marker-date2" required></textarea>' +
        '<div></div>' +

        '<br><b><label for="marker-desc">Description :</label>' +
        '<br><textarea id="marker-desc" name="marker-desc" required></textarea required>' +
        '<div></div>' +
        
        '<br><button style="background: none" type="submit" required>Add on map</button>';



    



  
    // Sélection de la bonne icône en fonction du select
    switch (select) {
        case 'boudoir':
            //Ajout de l'icône à la carte
            var marker = L.marker([e.latlng.lat, e.latlng.lng], { icon: boudoirIcon }).addTo(map).bindPopup(form);
            //Ajout de du marqueur au cluster
            break;

        case 'baum':
            //Ajout de l'icône à la carte
            var marker = L.marker([e.latlng.lat, e.latlng.lng], { icon: baumIcon }).addTo(map).bindPopup(form);
            //Ajout de du marqueur au cluster
            break;
        case 'default':
            break;
    } 

     // Ajout de l'action pour le formulaire
form.action = "ecrire_json.php";

// Lors du submit
form.addEventListener('submit', function (event) {
    // Empêche le rechargement de la page
    event.preventDefault();

    //Récupérer les valeurs des champs précedémment remplis
    var title = document.getElementById('marker-title').value;
    var date = document.getElementById('marker-date').value;
    var date2 = document.getElementById ('marker-date2').value;
    var desc = document.getElementById('marker-desc').value;
 
    //Actualisation de la pop-up avec les informations
    marker.setPopupContent('<h2>' + title + '</h2>' + '<p><b>' + date + '</b></p>' + '<p><b>' + date2 + '</b></p>' + '<p>' + desc + '</p>');   
    
    
    
    // Création d'un objet contenant les données à envoyer
    var data = {
        "lat": latitude,
        "lng": longitude,
        "category": select,
        "title": title,
        "date": date,
        "date2": date2,
        "description": desc
    };

    // Conversion des données en chaîne JSON
    var jsonData = JSON.stringify(data);

    // Envoi des données au serveur via une requête AJAX
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "enregistrer_donnees.php", true);
    xhr.setRequestHeader("Accept", "application/json");
    xhr.send(jsonData);
});

//map.addLayer(cluster1);

     // Conversion des données en chaîne JSON
     var jsonData = JSON.stringify(data);
  
     // Envoi des données au serveur via une requête AJAX
     var xhr = new XMLHttpRequest();
     xhr.open("POST", "enregistrer_donnees.php", true);
     xhr.setRequestHeader("Accept", "application/json");
     xhr.send(jsonData);
   
}

map.on("click", addMarker);




// Récupération des données entrées par l'utilisateur
//var data = {
//    "latitude": document.getElementById("latitude").value,
//    "longitude": document.getElementById("longitude").value,
//    "icon": document.getElementById("icon").value,
//    "title": document.getElementById("title").value,
//    "date2": document.getElementById("date2").value,
//    "date": document.getElementById("date").value,
//    "desc": document.getElementById("desc").value
//  };
//  
// 
//
//
//// Récupération des données du formulaire
//var title = document.getElementById('marker-title').value;
//var date = document.getElementById('marker-date').value;
//var date2 = document.getElementById('marker-date2').value;
//var desc = document.getElementById('marker-desc').value;
//
//
//
/////test openai
//
//document.getElementById("myForm").addEventListener("submit", function(event) {
//    event.preventDefault();
//    sendData();
//  });
//
//
//  function sendData() {
//    const form = document.getElementById("myForm");
//    const formData = new FormData(form);
//    
//    fetch("ecrire_json.php", {
//      method: "POST",
//      body: formData
//    })
//    .then(response => response.json())
//    .then(data => console.log(data))
//    .catch(error => console.error(error));
//  }



// Pour ajouter un commentaire, ne fonctionne pas
// document.getElementById('addComment').addEventListener('click', function (e){
//             // Empêche le rechargement de la page
//             event.preventDefault();

//             // Création d'un formulaire lors de l'ajout d'un commentaire
//             var form2 = document.createElement('form');
//             // Format du formulaire
//             form2.innerHTML =
//                 '<br><b><label for="marker-date2">Date :</label>' +
//                 '<br><textarea id="marker-date2" name="marker-desc"></textarea>' +
//                 '<div></div>' +
//                 '<br><b><label for="marker-desc2">Description :</label>' +
//                 '<br><textarea id="marker-desc2" name="marker-desc"></textarea>' +
//                 '<div></div>' +
//                 '<br><button style="background: none" type="submit">Ajouter le commentaire</button>';

//                 form2.addEventListener('submit', function (event) {
//                 // Empêche le rechargement de la page
//                 event.preventDefault();

//                 //Récupérer les valeurs des champs précedémment remplis
//                 var date2 = document.getElementById('marker-date2').value;
//                 var desc2 = document.getElementById('marker-desc2').value;

//                 marker.setPopupContent('<h2>' + title + '</h2>' + '<p><b>' + date + '</b></p>' + '<p>' + desc + '</p>' + '<p><b>' + date2 + '</b></p>' + '<p>' + desc2 + '</p>' + '<button id="addComment">Ajouter un témoignage</button>');
//                 });
// });