/*--------------------------------------------------------------------------
	       DÉCLENCHEUR POPUP ÉTABLI A PARTIR D'UN BLOC GROUPE
---------------------------------------------------------------------------*/
/*

Lorsqu'on active une fenêtre modale aux paramètre du bloc groupe,
Le hook PHP render_block permet de Transformer le balisage HTML
pour obtenir un Popup:

<div class="eccp-popup-wrapper style="border-radius:10px;box-shadow:3px 3px 7px 0px rgba(0,0,0,0.7)" popup-is-visible" set-cookie="1" popup-cookie-exist="1" popup-trigger="trigger-delay" popup-trigger-delay="4000" popup-cookie-period="2">
	<div class="eccp-popup-inside">
		<div style="--eccp-width-popup:780px" class="wp-block-group eccp-popup-content ">
		</div>
	</div>
</div>


Ce script permet de déclencher l'ouverture d'un Popup en ajoutant la classe:popup-is-visible
dans le balisage HTML et selon deux modes:
• Délai d'ouverture automatique
• Déclenchement au clic d'un bouton

Le mode de déclenchement automatique n'est pas activé s'il y a un cookie de suivi 
ayant pour nom: eccp-cookie
Ce cookie est activé lors de la 1ère fermeture de la fenêtre modale
empéchant l'affichage de la fenêtre modale pendant toute la durée de vie du cookie
qui a été a été définit dans les paramètres du bloc. 

Pour cela on récupère les valeurs d'attributs renseignées lors du balisage HTML
qui vont permettre de définir et paramètrer le déclenchement du Popup
• set-cookie: on a activé un cookie
• popup-cookie-exist: présence d'un cookie de suivi
• popup-trigger: Type de déclenchement(no-trigger,trigger-delay,button-clic-trigger)
• popup-trigger-delay: délai en milliseconde pour l'ouverture automatique du Popup 
• popup-cookie-period: durée de vie du cookie en nombre de mois

*/
jQuery(document).ready(function($) {
	
	// On affecte des variables avec la valeur des attributs du Popup
	// qui ont été renseignés lors du balisage HTML	
	// parseInt() permet la conversion d'une chaine en entier
	var set_cookie = $('.eccp-popup-wrapper').attr('set-cookie');
	var popup_cookie_exist = parseInt($('.eccp-popup-wrapper').attr('popup-cookie-exist'));
	var popup_trigger = $('.eccp-popup-wrapper').attr('popup-trigger');
	var popup_trigger_delay = parseInt($('.eccp-popup-wrapper').attr('popup-trigger-delay'));
	var popup_cookie_period = parseInt($('.eccp-popup-wrapper').attr('popup-cookie-period'));
	
	/* pour Debug 
	console.log('set_cookie= ',set_cookie);
	console.log('popup_cookie_exist= ',popup_cookie_exist);
	*/
	
	// si on n'a pas activé un cookie mais qu'il y a présence d'un cookie
	// alors on supprime le cookie
	if (!set_cookie && popup_cookie_exist) {
		deleteCookie('eccp-cookie');
	}
	
	// Fonction pour supprimer un cookie par son nom
	// document.cookie = "cookiename=cookievalue; expires=date au format UTC" 
	// On supprime le cookie en réglant sa date d'expiration à une date antérieure à la période actuelle.
	// pour cela on utilise la propriété expires en lui attribuant une date au format UTC.
	// on ne déclare pas la valeur du cookie, cela n'est pas nécessaire pour sa suppression
	function deleteCookie(name) {
		document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC';
		popup_cookie_exist = 0;
	}

	// déclenchement par un délai d'ouverture automatique
	// si on a choisi ce mode de déclenchement et qu'il n' y a pas de cookie
	if (popup_trigger == "trigger-delay" && !popup_cookie_exist ){
		setTimeout(function(){
			$('.eccp-popup-wrapper').addClass('popup-is-visible');
		}, popup_trigger_delay );
	}
	
	// Déclenchement au clic d'un bouton
	if (popup_trigger == "button-clic-trigger" ){
		$('.eccp-popup-trigger').off().click(function(e){
			e.preventDefault();
			$('.eccp-popup-wrapper').addClass('popup-is-visible');             
		});
	}
	
    // Fermeture de la Popup
	$('.eccp-popup-close').click(function(e){
		
		  // si on a activé un cookie et qu'il n' y a pas de cookie 
		  // on crée le cookie avec en paramètre sa durée de vie
		  if (set_cookie && !popup_cookie_exist) {
			  
			  // on instance un nouvel objet Date()
			  const date = new Date();
			  
			  // méthode la plus simple pour avoir une date sous le format jour/mois/année
			  datelocale = date.toLocaleDateString("fr");
			  
			  // on définit la période d'expiration du cookie en nombre de mois
			  var expirationPeriod = popup_cookie_period;
			  
			  // création d'un cookie
			  setCookie('eccp-cookie', datelocale , expirationPeriod );
		  
		  }
			 
		  e.preventDefault;
		  
		  // on ferme le Popup
		  $('.popup-is-visible').removeClass('popup-is-visible'); 
		  
	});
	
	
	/*
	Fonction permettant la création d'un cookie:
	document.cookie = "cookiename=cookievalue; max-age=" + la durée de vie du cookie en secondes  
	soit par exemple pour 30 jours
	document.cookie = "cookiename=cookievalue; max-age=" + 30*24*60*60 ;
	Une valeur de cookie ne peut pas contenir de point-virgule, de virgule ou d'espace. 
	Pour cette raison, on doit utiliser la fonction intégrée de JavaScript encodeURIComponent() 
	pour coder les valeurs contenant ces caractères avant de les stocker dans le cookie. 
	De même, on doit utiliser la fonction correspondante decodeURIComponent() 
	lorsqu'on lit la valeur du cookie.
	Pour nous value sera une date donc on n'a pas besoin de la fonction encodeURIComponent() 
	*/
	function setCookie(name, value, expirationPeriod ) {
		
		/* Paramètres de définition du cookie*/
        var paramCookie = name + "=" + value;
		
		if(typeof expirationPeriod === "number") {
			/* Définit l'attribut max-age de façon à ce que le cookie expire 
			  après le nombre de mois spécifié par: expirationPeriod */
			paramCookie += "; max-age=" + (expirationPeriod*30*24*60*60);
			
			document.cookie = paramCookie;
		}
		
	}

}); 