BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
SUMMARY:Stage de perfectionnement | semaine #5
UID:01b666dc-3adb-4a7e-9930-0abfbc59fdc4
DTSTART:20260816T220000Z
DTEND:20260821T220000Z
LOCATION:Localisation   
CATEGORIES:Stage
STATUS:
DESCRIPTION:<div style="background-color:white;">
 <p
 data-path-to-node="1,0">🎯 <b data-index-in-node="3"
 data-path-to-node="1,0">Vous etes competiteur, licencie a la
 F.F.T.A., a la recherche permanente de l'amelioration de vos
 performances ?</b></p>
 
 <p data-path-to-node="1,1">💪 Venez
 profiter de stages de perfectionnement dedies a votre <b
 data-index-in-node="63" data-path-to-node="1,1">technique de tir</b>
 🏹 ou aux <b data-index-in-node="90"
 data-path-to-node="1,1">reglages de votre arc</b> 🔧.</p>
 
 <p
 data-path-to-node="1,1" style="text-align: center;">Ces stages seront
 encadres par <b data-index-in-node="147"
 data-path-to-node="1,1">Andre Juin</b>, Entraineur Brevet d’Etat
 🎓.</p>
 
 <table style="margin: 20px auto; border-collapse:
 collapse; width: 80%; font-family: 'Segoe UI', sans-serif;
 text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.1);">
 	<thead
 style="background-color: #f8f9fa;">
 		<tr>
 			<th style="padding:
 15px; border-bottom: 2px solid #ddd;">🗓️ Details</th>
 			<th
 style="padding: 15px; border-bottom: 2px solid
 #ddd;">✍️ Inscription</th>
 		</tr>
 		<tr>
 			<td style="padding:
 12px; border: 1px solid #eee;">17 au 21 Aout (8 seances 👥 de 3
 heures 🕒)</td>
 			<td style="padding: 12px; border: 1px solid
 #eee;"><span style="font-size:16px"><strong><span
 style="color:#c0392b">Avant le vendredi 14 aout
 inclus</span></strong></span></td>
 		</tr>
 	</thead>
 </table>
 
 <hr
 style="height:4px;border-width:0px;color:grey;background-color:#494949"
 /><script>
 // 1. Configuration
 const CONFIG = {
     dateDebut:
 "2026-08-17",
     dateFin: "2026-08-21",
     conteneurId:
 "conteneur_champ_cocher_la_les__seance_s__de_votre_choix"
 };
 
 // 2.
 Fonction de parsing
 function extraireDateDepuisTexte(texte) {
    
 const moisFr = {
         "janvier": 0, "fevrier": 1, "mars": 2,
 "avril": 3, "mai": 4, "juin": 5,
         "juillet": 6, "aout": 7,
 "septembre": 8, "octobre": 9, "novembre": 10, "decembre": 11
     };
  
   const regex = /(\d{1,2})\s+([a-zaaceeeeiiouuyñ]+)/i;
     const
 match = texte.toLowerCase().match(regex);
 
     if (match) {
        
 const jour = parseInt(match[1], 10);
         const nomMois =
 match[2];
         if (moisFr.hasOwnProperty(nomMois)) {
            
 // Creation de la date et remise a zero des heures pour comparaison
 fiable
             const date = new Date(new Date().getFullYear(),
 moisFr[nomMois], jour);
             date.setHours(0, 0, 0, 0);
       
      return date;
         }
     }
     return null;
 }
 
 // 3. Logique
 de filtrage (plage bornes incluses)
 function
 appliquerFiltre(observer) {
     const conteneur =
 document.getElementById(CONFIG.conteneurId);
     if (!conteneur)
 return;
 
     observer.disconnect();
 
     // Initialisation des bornes
 avec remise a zero des heures
     const start = CONFIG.dateDebut ?
 new Date(CONFIG.dateDebut + "T00:00:00") : null;
     const end =
 CONFIG.dateFin ? new Date(CONFIG.dateFin + "T00:00:00") : null;
     
 
    const options = conteneur.querySelectorAll(".form-check,
 .checkbox, label");
 
     options.forEach(option => {
         const
 texte = option.innerText || option.textContent;
         const
 dateOption = extraireDateDepuisTexte(texte);
         
         if
 (dateOption) {
             // Verification inclusive (>= et <=)
      
       const estDansLaPlage = (start && dateOption >= start) && (end
 && dateOption <= end);
             
             // Si dans la plage
 (inclus), on AFFICHE (visible = true)
             // Si hors plage,
 on MASQUE (visible = false)
             const visible =
 estDansLaPlage;
 
             const elementAMasquer =
 option.closest(".form-group-option") || option.closest(".form-check")
 || option;
             
             if (elementAMasquer.style.display
 !== (visible ? "" : "none")) {
                
 elementAMasquer.style.display = visible ? "" : "none";
             }
 
        }
     });
 
     if (typeof window.mettreAJourTotal ===
 'function') {
         window.mettreAJourTotal();
     }
 
    
 observer.observe(document.body, { childList: true, subtree: true
 });
 }
 
 // 4. Initialisation
 const observer = new MutationObserver(()
 => {
     appliquerFiltre(observer);
 });
 
 if
 (document.getElementById(CONFIG.conteneurId)) {
    
 appliquerFiltre(observer);
 } else {
    
 observer.observe(document.body, { childList: true, subtree: true
 });
 }
 </script></div>
URL;VALUE=URI:https://www.lesarchersdelaille.com/evenements/2026/08/17/stage-de-perfectionnement-semaine-5-2472167
END:VEVENT
END:VCALENDAR
