var/cache/dev/twig/84/84bb0ccf4e71a0637706afe4cb4858b5.php line 45

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* Parent/LoginParent.html.twig */
  16. class __TwigTemplate_37bb9239606940e257554a0bc0386491 extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->blocks = [
  28.             'LinksCss' => [$this'block_LinksCss'],
  29.             'Content' => [$this'block_Content'],
  30.             'javascript' => [$this'block_javascript'],
  31.         ];
  32.     }
  33.     protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  34.     {
  35.         // line 1
  36.         return "/Accueil/layoutAccueilParents.html.twig";
  37.     }
  38.     protected function doDisplay(array $context, array $blocks = []): iterable
  39.     {
  40.         $macros $this->macros;
  41.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  42.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Parent/LoginParent.html.twig"));
  43.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  44.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Parent/LoginParent.html.twig"));
  45.         $this->parent $this->load("/Accueil/layoutAccueilParents.html.twig"1);
  46.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  47.         
  48.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  49.         
  50.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  51.     }
  52.     // line 2
  53.     /**
  54.      * @return iterable<null|scalar|\Stringable>
  55.      */
  56.     public function block_LinksCss(array $context, array $blocks = []): iterable
  57.     {
  58.         $macros $this->macros;
  59.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  60.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""LinksCss"));
  61.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  62.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""LinksCss"));
  63.         // line 3
  64.         yield "    ";
  65.         yield from $this->yieldParentBlock("LinksCss"$context$blocks);
  66.         yield "
  67.     <link rel=\"stylesheet\" href=\"";
  68.         // line 5
  69.         yield "/css/Parent/css/login.css";
  70.         yield "\" >
  71.     <link rel=\"stylesheet\" href=\"";
  72.         // line 6
  73.         yield "/css/Parent/css/premiercnx.css";
  74.         yield "\">
  75.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css\">
  76.      <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\">
  77.  <link href=\"";
  78.         // line 10
  79.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("css/bootstrap-social.css"), "html"nulltrue);
  80.         yield "\" type=\"text/css\" rel=\"stylesheet\" >
  81.  <link rel=\"stylesheet\" href=\"";
  82.         // line 11
  83.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("css/splide.min.css"), "html"nulltrue);
  84.         yield "\">
  85. <style>
  86.     .titleProdbienvenu {
  87.     text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  88. }
  89. /* Style pour le bouton de retour en haut */
  90. .scroll-top-btn {
  91.     position: fixed;
  92.     bottom: 20px;
  93.     right: 20px;
  94.     width: 40px;
  95.     height: 40px;
  96.     border-radius: 50%;
  97.     background-color:#f09e7a;
  98.     color: white;
  99.     border: none;
  100.     box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  101.     z-index: 1000;
  102.     display: none;
  103.     cursor: pointer;
  104.     transition: all 0.3s ease;
  105. }
  106. .scroll-top-btn:hover {
  107.     background-color: #e8865e;
  108.     transform: translateY(-3px);
  109. }
  110. /* Styles pour le loader d'inscription */
  111. .register-loader {
  112.     position: fixed;
  113.     top: 0;
  114.     left: 0;
  115.     width: 100%;
  116.     height: 100%;
  117.     background-color: rgba(255, 255, 255, 0.9);
  118.     z-index: 9999;
  119.     display: none;
  120.     justify-content: center;
  121.     align-items: center;
  122. }
  123. .loader-content {
  124.     text-align: center;
  125.     background-color: white;
  126.     padding: 30px;
  127.     border-radius: 10px;
  128.     box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
  129.     max-width: 350px;
  130.     width: 90%;
  131. }
  132. .loader-message {
  133.     margin-top: 20px;
  134.     font-size: 18px;
  135.     font-weight: bold;
  136.     color: #41a2aa;
  137. }
  138. .loader-submessage {
  139.     margin-top: 10px;
  140.     font-size: 14px;
  141.     color: #666;
  142. }
  143. .spinner-border {
  144.     width: 3rem;
  145.     height: 3rem;
  146.     color: #f09e7a !important;
  147. }
  148. /* Styles pour le modal de confirmation */
  149. .modal {
  150.     display: flex;
  151.     align-items: center;
  152.     justify-content: center;
  153. }
  154. .modal-dialog {
  155.     margin: 0 auto;
  156.     max-width: 500px;
  157.     width: 90%;
  158. }
  159. .modal-content {
  160.     border-radius: 10px;
  161.     box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
  162.     margin: 0 auto;
  163. }
  164. .modal-body {
  165.     padding: 30px 20px;
  166. }
  167. .modal-footer {
  168.     justify-content: center;
  169.     padding: 15px;
  170. }
  171. .circleModal {
  172.     background-color: #f09e7a;
  173.     color: white;
  174.     border: none;
  175.     border-radius: 5px;
  176.     padding: 10px 30px;
  177.     font-weight: bold;
  178.     transition: all 0.3s ease;
  179. }
  180. .circleModal:hover {
  181.     background-color: #e8865e;
  182.     transform: translateY(-2px);
  183. }
  184. /* Animation pour le passage au champ suivant */
  185. .field-complete {
  186.     transition: all 0.3s ease;
  187.     border-color: #41a2aa !important;
  188.     box-shadow: 0 0 5px rgba(65, 162, 170, 0.5) !important;
  189.     transform: translateY(-2px);
  190. }
  191. .form-control:focus {
  192.     border-color: #f09e7a !important;
  193.     box-shadow: 0 0 6px rgba(240, 158, 122, 0.5) !important;
  194.     transition: all 0.3s ease;
  195. }
  196. /* Position for password toggle icons */
  197. .position-relative {
  198.     position: relative;
  199.     display: block;
  200.     width: 100%;
  201. }
  202. .field-icon {
  203.     position: absolute;
  204.     right: 10px;
  205.     top: 50%;
  206.     transform: translateY(-50%);
  207.     z-index: 10;
  208.     cursor: pointer;
  209.     color: #41a2aa;
  210.     font-size: 14px;
  211.     pointer-events: auto;
  212. }
  213. .field-icon:hover {
  214.     color: #f09e7a;
  215. }
  216. /* Adjust input padding to make room for the icon */
  217. input[type=\"password\"] {
  218.     padding-right: 40px;
  219. }
  220. /* Updated styles for login forms */
  221. .form-section {
  222.     background-color: #fff;
  223.     padding: 25px;
  224.     border-radius: 8px;
  225.     box-shadow: 0 2px 10px rgba(0,0,0,0.1);
  226.     margin-bottom: 20px;
  227.     height: 100%;
  228. }
  229. .soutitle {
  230.     color: #333;
  231.     font-size: 24px;
  232.     font-weight: bold;
  233.     margin-bottom: 15px;
  234.     text-align: center;
  235. }
  236. .description2 {
  237.     color: #666;
  238.     text-align: center;
  239.     margin-bottom: 20px;
  240.     font-size: 14px;
  241.     line-height: 1.5;
  242. }
  243. .form-control {
  244.     border-radius: 4px;
  245.     padding: 12px 15px;
  246.     margin-bottom: 15px;
  247.     border: 1px solid #ddd;
  248.     transition: all 0.3s ease;
  249. }
  250. .form-control:focus {
  251.     border-color: #41a2aa !important;
  252. }
  253. .logButton {
  254.     width: 100%;
  255.     padding: 12px;
  256.     border-radius: 5px;
  257.     font-weight: bold;
  258.     font-size: 16px;
  259.     margin-top: 10px;
  260.     transition: all 0.3s ease;
  261.     border: none;
  262. }
  263. .logButton:hover {
  264.     transform: translateY(-2px);
  265.     box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  266. }
  267. .logButtonSocial {
  268.     display: flex;
  269.     align-items: center;
  270.     justify-content: center;
  271.     width: 100%;
  272.     padding: 12px;
  273.     border-radius: 5px;
  274.     font-weight: bold;
  275.     margin-top: 15px;
  276.     text-decoration: none;
  277.     transition: all 0.3s ease;
  278. }
  279. .logButtonSocial:hover {
  280.     transform: translateY(-2px);
  281.     box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  282.     text-decoration: none;
  283. }
  284. .logButtonSocial img {
  285.     margin-right: 10px;
  286.     height: 20px;
  287. }
  288. .ou-container {
  289.     position: relative;
  290.     height: 100%;
  291.     display: flex;
  292.     align-items: center;
  293.     justify-content: center;
  294.     min-height: 400px;
  295. }
  296. .ou-line {
  297.     position: absolute;
  298.     width: 1px;
  299.     height: 80%;
  300.     background-color: #ddd;
  301.     left: 50%;
  302.     transform: translateX(-50%);
  303. }
  304. .ou-text {
  305.     background-color: white;
  306.     padding: 10px;
  307.     position: relative;
  308.     z-index: 1;
  309.     color: #666;
  310.     font-weight: bold;
  311. }
  312. /* Desktop layout - both forms visible side by side */
  313. @media screen and (min-width: 1025px) {
  314.     #connexionDiv, #inscriptionDiv {
  315.         display: block !important;
  316.     }
  317.     
  318.     .circleCree {
  319.         display: none !important;
  320.     }
  321.     
  322.     .ou-container {
  323.         display: flex !important;
  324.     }
  325.     
  326.     /* Ensure proper column widths */
  327.     .col-lg-5 {
  328.         flex: 0 0 41.666667%;
  329.         max-width: 41.666667%;
  330.     }
  331.     
  332.     .col-lg-1 {
  333.         flex: 0 0 8.333333%;
  334.         max-width: 8.333333%;
  335.     }
  336. }
  337. /* Tablet and mobile - one form at a time */
  338. @media screen and (max-width: 1024px) {
  339.     #connexionDiv, #inscriptionDiv {
  340.         width: 100% !important;
  341.         margin: 0 auto !important;
  342.         float: none !important;
  343.     }
  344.     
  345.     /* Initially hide the connection form */
  346.     #connexionDiv {
  347.         display: none;
  348.     }
  349.     
  350.     /* Make the inscription form visible */
  351.     #inscriptionDiv {
  352.         display: block;
  353.     }
  354.     
  355.     /* Hide the OR separator */
  356.     .ou-container {
  357.         display: none !important;
  358.     }
  359.     
  360.     /* Make the toggle buttons visible */
  361.     .circleCree {
  362.         display: block !important;
  363.         width: 100% !important;
  364.         margin: 15px auto !important;
  365.         padding: 10px !important;
  366.         background-color: #41a2aa !important;
  367.         color: white !important;
  368.         border-radius: 5px !important;
  369.         border: none !important;
  370.         cursor: pointer !important;
  371.         text-align: center !important;
  372.         font-weight: bold !important;
  373.     }
  374.     
  375.     /* Full width columns on mobile */
  376.     .col-md-5, .col-sm-5 {
  377.         width: 100% !important;
  378.         max-width: 100% !important;
  379.         flex: 0 0 100% !important;
  380.     }
  381.     
  382.     /* Hide the middle column with the separator */
  383.     .col-md-1.col-sm-1.col-lg-1.col-xs-1 {
  384.         display: none !important;
  385.     }
  386. }
  387. /* Forgot password link styling */
  388. .description a {
  389.     color: #f09e7a;
  390.     text-decoration: none;
  391.     font-weight: bold;
  392. }
  393. .description a:hover {
  394.     text-decoration: underline;
  395. }
  396. /* Button container styling */
  397. .button-container {
  398.     margin-top: 15px;
  399.     margin-bottom: 15px;
  400. }
  401. /* Social login buttons styling */
  402. .mobilesocial {
  403.     margin-top: 10px;
  404. }
  405. </style>
  406. ";
  407.         
  408.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  409.         
  410.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  411.         yield from [];
  412.     }
  413.     // line 377
  414.     /**
  415.      * @return iterable<null|scalar|\Stringable>
  416.      */
  417.     public function block_Content(array $context, array $blocks = []): iterable
  418.     {
  419.         $macros $this->macros;
  420.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  421.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""Content"));
  422.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  423.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""Content"));
  424.         // line 378
  425.         yield "
  426.   <!-- Bouton pour remonter en haut de la page -->
  427.   <button id=\"scrollTopBtn\" class=\"scroll-top-btn\" title=\"Retour en haut\">
  428.     <i class=\"bi bi-arrow-up\"></i>
  429.   </button>
  430.   <!-- Loader pour l'inscription -->
  431.   <div id=\"registerLoader\" class=\"register-loader\">
  432.     <div class=\"loader-content\">
  433.       <div class=\"spinner-border text-primary\" role=\"status\">
  434.         <span class=\"sr-only\">Chargement...</span>
  435.                 </div>
  436.       <p class=\"loader-message\">Création de votre compte en cours...</p>
  437.       <p class=\"loader-submessage\">Nous préparons votre espace parent 5sur5sejour, merci de patienter.</p>
  438.                         </div>
  439.                     </div>
  440.   <!-- Modal de confirmation -->
  441.   <div class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" style=\"display: none;\">
  442.       <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">
  443.     <div class=\"modal-content\" style=\"border-radius: 10px;\">
  444.       <div class=\"modal-header border-0\">
  445.         <button onclick=\"location.reload();\" type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Fermer\" style=\"margin-left: auto;\">
  446.           <img src=\"";
  447.         // line 401
  448.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("images/Groupe_526.svg"), "html"nulltrue);
  449.         yield "\" alt=\"Fermer\">
  450.         </button>
  451.       </div>
  452.       <div class=\"modal-body text-center\">
  453.         <!-- Logo -->
  454.         <img class=\"imageLogo2\" src=\"";
  455.         // line 406
  456.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("Accueil/imagesAccueil/logoHeader.svg"), "html"nulltrue);
  457.         yield "\" alt=\"Logo 5sur5séjour\" style=\"max-height: 60px; margin-bottom: 20px;\">
  458.         <!-- Titre -->
  459.         <h4 class=\"modal-title font-weight-bold mb-3\" id=\"modalInscriptionLabel\">🎉 Bienvenue sur 5sur5séjour !</h4>
  460.         <!-- Texte -->
  461.         <p style=\"font-size: 16px; line-height: 1.5; margin-bottom: 15px;\">
  462.   Votre compte parent est presque prêt ! Encore une étape pour accéder à l'espace du séjour de votre enfant.
  463.         </p>
  464.         <p style=\"font-size: 15px; line-height: 1.5; margin-bottom: 15px;\">
  465.   📩 Un e-mail vous a été envoyé pour <strong>activer votre compte parent</strong> en toute sécurité.
  466.         </p>
  467.         <!-- Bouton -->
  468.         <div class=\"mt-4\">
  469.           <button onclick=\"location.reload();\" class=\"btn btn-primary\" style=\"background-color: #41a2aa; border: none; padding: 12px 30px; font-weight: bold; border-radius: 8px; font-size: 16px;\">
  470.             ✅ Compris, je vais consulter mes e-mails
  471.           </button>
  472.         </div>
  473.       </div>
  474.     </div>
  475.   </div>
  476.     </div>
  477.     <div class=\"splide no-padding no-margin\" id=\"imageSlider\" style=\"background:white\">
  478.         <div class=\"splide__track\">
  479.             <ul class=\"splide__list\">
  480.                 <!-- Slide 1 -->
  481.                 <li class=\"splide__slide\">
  482.                     <div class=\"slider-content\">
  483.                         <div class=\"namePRD\" style=\"display: block;\">
  484.                             <h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Offrez des souvenirs inoubliables à votre enfant </h4>
  485.                             <h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">avec des cadeaux personnalisés en toute simplicité !</h4>
  486.                           </div>
  487.                         <img src=\"";
  488.         // line 442
  489.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/3.png"), "html"nulltrue);
  490.         yield "\" class=\"imgslider\" alt=\"Image 2\" />
  491.                     </div>
  492.                 </li>
  493.                 <!-- Slide 2 -->
  494.                 <li class=\"splide__slide\">
  495.                     <div class=\"slider-content\">
  496.                         <div class=\"namePRD\" style=\"display: block;\">
  497.                             <h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color:#F09E7A\">Restez connecté au séjour de votre enfant 24h/24  </h4>
  498.                             <h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#41a2aa\">grâce à des photos partagées en toute sécurité !</h4>
  499.                           </div>
  500.                         <img src=\"";
  501.         // line 452
  502.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/2.png"), "html"nulltrue);
  503.         yield "\" class=\"imgslider\" alt=\"Image 1\" />
  504.                     </div>
  505.                 </li>
  506.                 <!-- Slide 3 -->
  507.                 <li class=\"splide__slide\">
  508.                     <div class=\"slider-content\">
  509.                         <div class=\"namePRD\" style=\"display: block;\">
  510.                             <h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Accéder à une boite vocale en illimitée</h4>
  511.                             <h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">Pour écouter les messages laissés par les enfants et les accompagnateurs</h4>
  512.                           </div>
  513.                         <img src=\"";
  514.         // line 462
  515.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/1.png"), "html"nulltrue);
  516.         yield "\" class=\"imgslider\" alt=\"Image 2\" />
  517.                     </div>
  518.                 </li>
  519.             </ul>
  520.         </div>
  521.     </div>
  522.     <div class='row no-margin' style=\"padding-top:4%\">
  523.         <div class=\"col-lg-1 col-md-1 col-sm-1 col-xs-1 no-padding SeparateurLeftAccom\"></div>
  524.         <div class=\"col-md-10 col-sm-10 col-lg-10 col-xs-12 \" >
  525.          
  526.         <!-- Bouton caché qui déclenche le modal de confirmation -->
  527.         <button type=\"button\" id=\"showOkInscription\" class=\"d-none\" data-toggle=\"modal\" data-target=\"#exampleModal\">
  528.         En savoir plus
  529.         </button>
  530.             <div class=\"row no-margin\" style='margin-right: auto;margin-top:15px' id=\"formSection\">
  531.                 <!-- Inscription Form -->
  532.                 <div class=\"col-md-5 col-sm-12 col-lg-5 Inscription\" id='inscriptionDiv'>
  533.                     <form class=\"form-section\" id=\"create\" onsubmit=\"return false;\">
  534.                         <div class=\"soutitle\"> Créer un compte   </div>
  535.                     <div class=\"description2\" style=\"padding-top:0px\"> Vous vous connectez pour la 1ère fois et n'avez pas
  536.                         <br> de compte Parent(s) « 5 sur 5 séjour » </div>
  537.                         <button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivConnexion();\">Vous avez déjà un compte Parent(s) ? </button>
  538.                         <div class=\"form-group\">
  539.                             <input type=\"text\" class=\"form-control\" id=\"nomparent\" placeholder=\"NOM * \" >
  540.                             <input type=\"text\" class=\"form-control\" id=\"prenomparent\" placeholder=\"PRENOM *\">
  541.                             <input type=\"text\" autocomplete=\"off\" class=\"form-control\" id=\"mail\" placeholder=\"ADRESSE MAIL\" required data-toggle=\"tooltip\" data-placement=\"right\" title=\"\">
  542.                             <div class=\"position-relative\">
  543.                             <input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser\" value=\"\" class=\"form-control\" placeholder=\"MOT DE PASSE  * \">
  544.                                 <i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser\"></i>
  545.                             </div>
  546.                             <div class=\"position-relative\">
  547.                             <input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser2\" class=\"form-control\" placeholder=\"CONFIRMER VOTRE MOT DE PASSE\">
  548.                                 <i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser2\"></i>
  549.                             </div>
  550.                             
  551.                             <p style=\"display: none; color:red; font-weight: bold; margin-top: 10px;\" id=\"eroor\">Cet email est déjà utilisé. <a href=\"";
  552.         // line 502
  553.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("forgotPassparent");
  554.         yield "\" style=\"color:#f09e7a; text-decoration: underline;\">Mot de passe oublié ?</a></p>
  555.                             <input type=\"text\" class=\"form-control\" id=\"num\" name=\"numero de téléphone\" placeholder=\"NUMERO DE TELEPHONE PORTABLE * \">
  556.                                
  557.   
  558.                             <div class=\"row no-margin \">
  559.                                 <div class=\"souTITRE\">Souhaitez-vous être averti lorsque l'organisateur dépose des images ou des messages du séjour ?</div>
  560.                             </div>
  561.                             <br>
  562.                             <div class=\"row no-margin\">
  563.                                 <div class=\"box-1\" id=\"smsToggle\">
  564.                                     <input type='checkbox' name=\"sms\" id=\"smsInput\" />
  565.                                     <span class=\"toogle\"> </span>
  566.                                 </div>
  567.                                 <span class=\"sms\"> Par SMS </span>
  568.                                 <div class=\"box-1\">
  569.                                     <input type='checkbox' name=\"mail\" id=\"mailInput\" />
  570.                                     <span class=\"toogle\" > </span>
  571.                                 </div>
  572.                                 <span class=\"mail\"> Par Mail </span>
  573.                             </div>
  574.                         </div>
  575.                         <div class=\"notification\" id=\"notification\" style=\"display: none;\">L'adresse e-mail est incorrecte.</div>
  576.                         <div class=\"button-container\">
  577.                         <button type=\"button\" onclick=\"cp();\" class=\"logButton\" style=\"color:#fff;border: 1px solid #f09e7a; position: relative; background-color: #f09e7a;margin-top:-5%;\" id=\"submitBtn\">     
  578.             S'inscrire
  579.           </button></div>
  580.           <div class=\"button-container mobilesocial\">
  581.             <a href=\"";
  582.         // line 532
  583.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_google_start");
  584.         yield "\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
  585.          <img src=\"";
  586.         // line 533
  587.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-google.png"), "html"nulltrue);
  588.         yield "\" >Continuer avec Google
  589.        </a>
  590.                        
  591.      </div>
  592.      <div class=\"mobilesocial\">                  
  593.                     <a href=\"";
  594.         // line 538
  595.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_facebook_start");
  596.         yield "\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
  597.                      <img src=\"";
  598.         // line 539
  599.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-facebook.png"), "html"nulltrue);
  600.         yield "\" > Continuer avec Facebook
  601.        </a>
  602.            </div>        
  603.         </form>
  604.                 </div>
  605.                 <!-- OR Separator -->
  606.                 <div class=\"col-md-1 col-sm-1 col-lg-1 col-xs-1\">
  607.                     <div class=\"ou-container\">
  608.                         <div class=\"ou-line\"></div>
  609.                         <div class=\"ou-text\">OU</div>
  610.                     </div>
  611.                 </div>
  612.                 <!-- Connexion Form -->
  613.                 <div class=\"col-md-5 col-sm-12 col-lg-5 connexion\" id='connexionDiv'>
  614.                     <div class=\"form-section\">
  615.                         <div class=\"soutitle\"> Se connecter </div>
  616.                         <div class=\"description2\" style=\"padding-top:0px\">Vous avez déja un compte Parent(s) « 5 sur 5 séjour » </div>
  617.                         <button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivInscri();\">Créer un compte ? </button>
  618.                         <form method=\"post\" action=\"";
  619.         // line 560
  620.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_back_Parent");
  621.         yield "\" id=\"login-form\">
  622.                             ";
  623.         // line 561
  624.         if ((($tmp = (isset($context["error"]) || array_key_exists("error"$context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.'561$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  625.             // line 562
  626.             yield "                                <div class=\"alert alert-danger\">";
  627.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(CoreExtension::getAttribute($this->env$this->source, (isset($context["error"]) || array_key_exists("error"$context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.'562$this->source); })()), "messageKey", [], "any"falsefalsefalse562), CoreExtension::getAttribute($this->env$this->source, (isset($context["error"]) || array_key_exists("error"$context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.'562$this->source); })()), "messageData", [], "any"falsefalsefalse562), "security"), "html"nulltrue);
  628.             yield "</div>
  629.                                 <script>
  630.                                     document.addEventListener('DOMContentLoaded', function() {
  631.                                         Swal.fire({
  632.                                             icon: 'error',
  633.                                             title: 'Erreur de connexion',
  634.                                             text: 'Identifiant ou mot de passe incorrect.',
  635.                                             confirmButtonColor: '#41a2aa'
  636.                                         });
  637.                                     });
  638.                                 </script>
  639.                             ";
  640.         }
  641.         // line 574
  642.         yield "                            <div class=\"form-group\">
  643.                                 <input type=\"text\" name=\"email\" id=\"inputEmail\" value=\"";
  644.         // line 575
  645.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["last_username"]) || array_key_exists("last_username"$context) ? $context["last_username"] : (function () { throw new RuntimeError('Variable "last_username" does not exist.'575$this->source); })()), "html"nulltrue);
  646.         yield "\" class=\"form-control\" placeholder=\"Mon identifiant * \" required>
  647.                                 <div class=\"position-relative\">
  648.                                     <input type=\"password\" name=\"password\" id=\"inputPassword\" class=\"form-control\" placeholder=\"Mon mot de passe *\" required>
  649.                                     <span toggle=\"#inputPassword\" class=\"bi bi-eye field-icon toggle-password\"></span>
  650.                                 </div>
  651.                                 
  652.                                 <input type=\"hidden\" name=\"_csrf_token\" value=\"";
  653.         // line 581
  654.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Symfony\Component\Form\FormRenderer')->renderCsrfToken("authenticate"), "html"nulltrue);
  655.         yield "\">
  656.                                 <div class=\"button-container\">
  657.                                     <button type=\"submit\" class=\"logButton\" style=\"color:#fff;background-color:#41a2aa;border-color:rgba(0,0,0,0.2)\" id=\"login-button\">
  658.              Se connecter 
  659.           </button>
  660.         
  661.                             </div>
  662.                               
  663.                             <div class=\"description\"> <a id=\"mdpobli\" href=\"";
  664.         // line 590
  665.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("forgotPassparent");
  666.         yield "\" style=\"color:#f09e7a ; display: block\">Vous avez oublié votre mot de passe ? </a> </div>
  667.                             <div class=\"button-container\">
  668.                <a href=\"";
  669.         // line 593
  670.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_google_start");
  671.         yield "\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
  672.             <img src=\"";
  673.         // line 594
  674.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-google.png"), "html"nulltrue);
  675.         yield "\" >Continuer avec Google
  676.           </a>
  677.                           
  678.         </div>
  679.         <div class=\"button-c\" style=\"display: flex; justify-content: center; align-items: center;\">                  
  680.                        <a href=\"";
  681.         // line 599
  682.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_facebook_start");
  683.         yield "\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
  684.                         <img src=\"";
  685.         // line 600
  686.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("/images/icons-facebook.png"), "html"nulltrue);
  687.         yield "\" > Continuer avec Facebook
  688.           </a>
  689.               </div>        
  690.                                 <br>
  691.                                 <br>
  692.                             </div>
  693.                         </form>
  694.                     
  695.                     </div>
  696.                 </div>
  697.         </div>
  698.       
  699.     </div>
  700.   <div class=\"col-md-3\" style=\"margin-top: 21%;display:none\">
  701.    <a href=\"";
  702.         // line 615
  703.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_google_start");
  704.         yield "\" style=\"color:#fff;background-color:#4F86EC;border-color:rgba(0,0,0,0.2)\" class=\"btn btn-block btn-social btn-google\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
  705.             <span class=\"fa fa-google\"></span> S'inscrire avec Google
  706.           </a>
  707.           
  708.                           
  709.                                 <br>
  710.                                    <br>
  711.                        <a href=\"";
  712.         // line 622
  713.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("connect_facebook_start");
  714.         yield "\" class=\"btn btn-block btn-social btn-facebook\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
  715.             <span class=\"fa fa-facebook\"></span> S'inscrire avec Facebook
  716.           </a></div>
  717.             </div>
  718. ";
  719.         
  720.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  721.         
  722.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  723.         yield from [];
  724.     }
  725.     // line 629
  726.     /**
  727.      * @return iterable<null|scalar|\Stringable>
  728.      */
  729.     public function block_javascript(array $context, array $blocks = []): iterable
  730.     {
  731.         $macros $this->macros;
  732.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  733.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  734.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  735.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  736.         // line 630
  737.         yield "    ";
  738.         yield from $this->yieldParentBlock("javascript"$context$blocks);
  739.         yield "
  740.   <script src=\"";
  741.         // line 631
  742.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("js/splide.min.js"), "html"nulltrue);
  743.         yield "\"></script>
  744.   <script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.all.min.js\"></script>
  745.     
  746.     <script>
  747.         document.addEventListener('DOMContentLoaded', function () {
  748.     // S'assurer que le modal est caché au chargement de la page
  749.     \$('#exampleModal').modal('hide');
  750.     \$('#exampleModal').removeClass('show');
  751.     \$('#exampleModal').attr('aria-hidden', 'true');
  752.     \$('body').removeClass('modal-open');
  753.     \$('.modal-backdrop').remove();
  754.     
  755.     // Basic form validation before submission
  756.     const loginForm = document.getElementById('login-form');
  757.     if (loginForm) {
  758.         loginForm.addEventListener('submit', function(e) {
  759.             const email = document.getElementById('inputEmail').value.trim();
  760.             const password = document.getElementById('inputPassword').value;
  761.             
  762.             if (!email || !password) {
  763.                 e.preventDefault();
  764.                 Swal.fire({
  765.                     icon: 'warning',
  766.                     title: 'Champs requis',
  767.                     text: 'Veuillez remplir tous les champs pour vous connecter.',
  768.                     confirmButtonColor: '#41a2aa'
  769.                 });
  770.                 return false;
  771.             }
  772.             // If validation passes, form will submit normally to Symfony
  773.         });
  774.     }
  775.     
  776.     // Gestion du bouton de retour en haut
  777.     const scrollTopBtn = document.getElementById('scrollTopBtn');
  778.     
  779.     window.addEventListener('scroll', function() {
  780.         if (window.pageYOffset > 300) {
  781.             scrollTopBtn.style.display = 'block';
  782.         } else {
  783.             scrollTopBtn.style.display = 'none';
  784.         }
  785.     });
  786.     
  787.     scrollTopBtn.addEventListener('click', function() {
  788.         window.scrollTo({
  789.             top: 0,
  790.             behavior: 'smooth'
  791.         });
  792.     });
  793.     
  794.     // Initialisation du carrousel Splide
  795.     if (typeof Splide !== 'undefined') {
  796.         var splide = new Splide('#imageSlider', {
  797.             type: 'loop',
  798.             perPage: 1,
  799.             autoplay: true,
  800.             interval: 6000,
  801.             pauseOnHover: false,
  802.             pauseOnFocus: false,
  803.             pagination: false,
  804.             arrows: false  
  805.         });
  806.         splide.mount();
  807.     }
  808.     // Auto-scroll vers les formulaires après 5 secondes
  809.     setTimeout(function() {
  810.         scrollToFormSection();
  811.     }, 5000);
  812.     // Configuration du modal de confirmation
  813.     \$('#exampleModal').modal({
  814.         backdrop: 'static',
  815.         keyboard: false,
  816.         show: false
  817.     });
  818.     
  819.     \$('#exampleModal').on('show.bs.modal', function () {
  820.         \$(this).css('display', 'flex');
  821.         \$(this).css('align-items', 'center');
  822.         \$(this).find('.modal-dialog').css({
  823.             'display': 'flex',
  824.             'align-items': 'center',
  825.             'margin': '0 auto',
  826.             'max-height': '90vh'
  827.         });
  828.     });
  829.     function scrollToFormSection() {
  830.         const formSection = document.getElementById('formSection');
  831.         if (formSection) {
  832.             const formPosition = formSection.getBoundingClientRect().top + window.scrollY;
  833.             const headerOffset = 50;
  834.             const scrollPosition = formPosition - headerOffset;
  835.             
  836.             window.scrollTo({
  837.                 top: scrollPosition,
  838.                 behavior: 'smooth'
  839.             });
  840.         }
  841.     }
  842.     
  843.     // Handle responsive form display
  844.     handleResponsiveFormDisplay();
  845.     
  846.     // Configuration pour le passage automatique au champ suivant
  847.     setupAutoNextField();
  848.     
  849.     // Ajouter la validation en temps réel pour tous les champs
  850.     setupRealtimeValidation();
  851. });
  852.         function cp() {
  853.            \$('#registerLoader').css('display', 'flex');
  854.            
  855.            var loaderTimeout = setTimeout(function() {
  856.                \$('#registerLoader').css('display', 'none');
  857.                \$(\"#showOkInscription\").trigger('click');
  858.            }, 3000);
  859.           
  860.             var nomparent = \"\";
  861.             var prenomparent = \"\";
  862.             var mail = \"\";
  863.             var num = \"5555\";
  864.             var confirmpassword = \$('#Passworduser2').val();
  865.             var parent_register = \"";
  866.         // line 757
  867.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("parent_register");
  868.         yield "\";
  869.             var Passworduser = \"\";
  870.             \$testDeCreation = false;
  871.             \$testDeCreation2 = false;
  872.             \$testDeCreation3 = false;
  873.             \$testDeCreation4 = false;
  874.             \$testDeCreation5 = false;
  875.             
  876.             if (\$('#nomparent').val() == \"\") {
  877.                 \$('#nomparent').addClass('is-invalid');
  878.                 \$('#nomparent').removeClass('is-valid');
  879.                 \$('#nomparent').css('border', '1px solid red');
  880.                 \$testDeCreation = false;
  881.             } else {
  882.                 \$('#nomparent').removeClass('is-invalid');
  883.                 \$('#nomparent').addClass('is-valid');
  884.                 \$('#nomparent').css('border', '1px solid green');
  885.                nomparent = \$('#nomparent').val();
  886.                 \$testDeCreation = true;
  887.             }
  888.             if (\$('#prenomparent').val() == \"\") {
  889.                 \$('#prenomparent').addClass('is-invalid');
  890.                 \$('#prenomparent').removeClass('is-valid');
  891.                 \$('#prenomparent').css('border', '1px solid red');
  892.                 \$testDeCreation1 = false;
  893.             } else {
  894.                 \$('#prenomparent').removeClass('is-invalid');
  895.                 \$('#prenomparent').addClass('is-valid');
  896.                 \$('#prenomparent').css('border', '1px solid green');
  897.                prenomparent = \$('#prenomparent').val();
  898.                 \$testDeCreation1 = true;
  899.             }
  900.             if (\$('#num').val() == \"\") {
  901.                 \$('#num ').addClass('is-invalid');
  902.                 \$('#num').removeClass('is-valid');
  903.                 \$('#num').css('border', '1px solid red');
  904.                 \$testDeCreation2 = false;
  905.             } else {
  906.                 \$('#num').removeClass('is-invalid');
  907.                 \$('#num').addClass('is-valid');
  908.                 \$('#num').css('border', '1px solid green');
  909.                num = \$('#num').val();
  910.                 \$testDeCreation2 = true;
  911.             }
  912.             if (\$('#mail').val() == \"\") {
  913.                 \$('#mail').addClass('is-invalid');
  914.                 \$('#mail').removeClass('is-valid');
  915.                 \$('#mail').css('border', '1px solid red');
  916.                 \$testDeCreation3 = false;
  917.             } else {
  918.                 \$('#mail').removeClass('is-invalid');
  919.                 \$('#mail').addClass('is-valid');
  920.                 \$('#mail').css('border', '1px solid green');
  921.                 mail = \$('#mail').val();
  922.                 \$testDeCreation3 = true;
  923.             }
  924.             if (\$('#Passworduser').val() == \"\") {
  925.                 \$('#Passworduser').addClass('is-invalid');
  926.                 \$('#Passworduser').removeClass('is-valid');
  927.                 \$('#Passworduser').css('border', '1px solid red');
  928.                 \$testDeCreation4 = false;
  929.             } else {
  930.                 \$('#Passworduser').removeClass('is-invalid');
  931.                 \$('#Passworduser').addClass('is-valid');
  932.                 \$('#Passworduser').css('border', '1px solid green');
  933.                 Passworduser = \$('#Passworduser').val();
  934.                 \$testDeCreation4 = true;
  935.             }
  936.             
  937.             var sms = 0; var mailnotif = 0;
  938.             if (\$(\"#smsInput\").is(':checked')) {
  939.                 var sms = 1;
  940.             }
  941.             if (\$(\"#mailInput\").is(':checked')){
  942.                 var mailnotif = 1;
  943.             }
  944.            
  945.             \$_data = {
  946.                 'nomparent': nomparent,
  947.                 'prenomparent': prenomparent,
  948.                 'mailprent': mail,
  949.                 'numtel': num,
  950.                 'passwordparent': Passworduser,
  951.                 'confirmpassword':confirmpassword,
  952.                 'sms': sms,
  953.                 'mailnotif': mailnotif
  954.             }
  955.             
  956.             if (\$testDeCreation && \$testDeCreation1 && \$testDeCreation2 && \$testDeCreation3 && \$testDeCreation4 ) {
  957.                 \$.ajax({
  958.                     type: \"POST\",
  959.                     url: parent_register,
  960.                     data: \$_data,
  961.                     success: function (\$response) {
  962.                         \$('#registerLoader').css('display', 'none');
  963.                         clearTimeout(loaderTimeout);
  964.                         
  965.                         if (\$response == 'eror') {
  966.                             \$('#mail').css('border-color', 'red');
  967.                             \$('#eroor').css('display', 'block');
  968.                             Swal.fire({
  969.                                 icon: 'error',
  970.                                 title: 'Email déjà utilisé',
  971.                                 text: 'Cette adresse email est déjà associée à un compte.',
  972.                                 footer: '<a href=\"";
  973.         // line 865
  974.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("forgotPassparent");
  975.         yield "\" style=\"color:#f09e7a;\">Mot de passe oublié ?</a>',
  976.                                 showCancelButton: true,
  977.                                 confirmButtonText: 'Se connecter',
  978.                                 cancelButtonText: 'Modifier',
  979.                                 confirmButtonColor: '#41a2aa',
  980.                                 cancelButtonColor: '#f09e7a',
  981.                                 position: 'center'
  982.                             }).then((result) => {
  983.                                 if (result.isConfirmed) {
  984.                                     AffichDivConnexion();
  985.                                     \$('#inputEmail').val(\$('#mail').val());
  986.                                     \$('#inputPassword').focus();
  987.                                 }
  988.                             });
  989.                         }
  990.                         else if(\$response == 'erorpasswordconfirm') {
  991.                               \$('#Passworduser2').css('border-color', 'red');
  992.                                 Swal.fire({
  993.                                 icon: 'error',
  994.                                 title: 'Oups..!',
  995.                                 text: 'Les mots de passe ne se correspondent pas.',
  996.                                 footer: '',
  997.                                 position: 'center'
  998.                             })
  999.                         }
  1000.                          else {
  1001.                             \$(\"#showOkInscription\").trigger('click');
  1002.                             resetForm();
  1003.                             
  1004.                             \$('#exampleModal').on('shown.bs.modal', function () {
  1005.                                 \$(this).find('.modal-dialog').css({
  1006.                                     'margin-top': function () {
  1007.                                         return (\$(window).height() - \$(this).height()) / 2;
  1008.                                     }
  1009.                                 });
  1010.                             });
  1011.                               var windowWidth = document.documentElement.clientWidth;
  1012.                                 if (windowWidth <= 560) {
  1013.                                     setTimeout(function(){
  1014.                                    location.reload();
  1015.                               },500);
  1016.                            }
  1017.                         }
  1018.                     },
  1019.                     error: function() {
  1020.                         \$('#registerLoader').css('display', 'none');
  1021.                         clearTimeout(loaderTimeout);
  1022.                         
  1023.                         Swal.fire({
  1024.                             icon: 'error',
  1025.                             title: 'Erreur de connexion',
  1026.                             text: 'Un problème est survenu lors de l\\'inscription. Veuillez réessayer.',
  1027.                             confirmButtonColor: '#f09e7a',
  1028.                             position: 'center'
  1029.                         });
  1030.                     }
  1031.                 })
  1032.             } else {
  1033.                 \$('#registerLoader').css('display', 'none');
  1034.                 clearTimeout(loaderTimeout);
  1035.             }
  1036.         }
  1037.         function AffichDivConnexion() {
  1038.             \$(\"#inscriptionDiv\").css(\"display\", \"none\");
  1039.             \$(\"#connexionDiv\").css(\"display\", \"block\");
  1040.         }
  1041.         function AffichDivInscri() {
  1042.             \$(\"#inscriptionDiv\").css(\"display\", \"block\");
  1043.             \$(\"#connexionDiv\").css(\"display\", \"none\");
  1044.         }
  1045.         function handleResponsiveFormDisplay() {
  1046.             var windowWidth = \$(window).width();
  1047.             
  1048.             if (windowWidth <= 1024) {
  1049.                 if (\$(\"#inscriptionDiv\").is(':visible')) {
  1050.                     \$(\"#connexionDiv\").css(\"display\", \"none\");
  1051.                 } else {
  1052.                     \$(\"#inscriptionDiv\").css(\"display\", \"none\");
  1053.                     \$(\"#connexionDiv\").css(\"display\", \"block\");
  1054.                 }
  1055.                 \$(\".circleCree\").css(\"display\", \"block\");
  1056.             } else {
  1057.                 \$(\"#connexionDiv\").css(\"display\", \"block\");
  1058.                 \$(\"#inscriptionDiv\").css(\"display\", \"block\");
  1059.                 \$(\".circleCree\").css(\"display\", \"none\");
  1060.             }
  1061.         }
  1062.         \$(window).resize(function() {
  1063.             handleResponsiveFormDisplay();
  1064.         });
  1065.         function setupAutoNextField() {
  1066.             const formFields = [
  1067.                 'nomparent',
  1068.                 'prenomparent',
  1069.                 'mail',
  1070.                 'Passworduser',
  1071.                 'Passworduser2',
  1072.                 'num'
  1073.             ];
  1074.             
  1075.             formFields.forEach((field, index) => {
  1076.                 if (index < formFields.length - 1) {
  1077.                     const \$currentField = \$('#' + field);
  1078.                     let typingTimer;
  1079.                     const doneTypingInterval = 1500;
  1080.                     
  1081.                     \$currentField.on('input', function() {
  1082.                         clearTimeout(typingTimer);
  1083.                         
  1084.                         if (event && event.data === ' ' && isFieldValid(field, \$(this).val().trim())) {
  1085.                             event.preventDefault();
  1086.                             \$('#' + formFields[index + 1]).focus();
  1087.                             return;
  1088.                         }
  1089.                         
  1090.                         if (\$(this).val()) {
  1091.                             typingTimer = setTimeout(function() {
  1092.                                 if (isFieldValid(field, \$currentField.val().trim())) {
  1093.                                     \$('#' + formFields[index + 1]).focus();
  1094.                                 }
  1095.                             }, doneTypingInterval);
  1096.                         }
  1097.                     });
  1098.                     
  1099.                     \$currentField.on('keydown', function(e) {
  1100.                         clearTimeout(typingTimer);
  1101.                         
  1102.                         if (e.key === ' ' && isFieldValid(field, \$(this).val().trim())) {
  1103.                             e.preventDefault();
  1104.                             \$('#' + formFields[index + 1]).focus();
  1105.                             return;
  1106.                         }
  1107.                         
  1108.                         if (e.key === 'Tab' && !e.shiftKey) {
  1109.                             return true;
  1110.                         }
  1111.                         
  1112.                         if (e.key === 'Enter') {
  1113.                             e.preventDefault();
  1114.                             \$('#' + formFields[index + 1]).focus();
  1115.                         }
  1116.                     });
  1117.                     
  1118.                     \$currentField.on('blur', function() {
  1119.                         clearTimeout(typingTimer);
  1120.                     });
  1121.                 }
  1122.             });
  1123.             
  1124.             \$('#' + formFields[formFields.length - 1]).on('keydown', function(e) {
  1125.                 if (e.key === 'Enter') {
  1126.                     e.preventDefault();
  1127.                     cp();
  1128.                 }
  1129.             });
  1130.         }
  1131.         function isFieldValid(fieldId, value) {
  1132.             switch(fieldId) {
  1133.                 case 'mail':
  1134.                     const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
  1135.                     return emailRegex.test(value);
  1136.                 case 'Passworduser':
  1137.                     return value.length >= 6;
  1138.                 case 'Passworduser2':
  1139.                     return value === \$('#Passworduser').val() && value.length >= 6;
  1140.                 case 'num':
  1141.                     const phoneRegex = /^[0-9]{8,}\$/;
  1142.                     return phoneRegex.test(value.replace(/\\s+/g, ''));
  1143.                 case 'nomparent':
  1144.                 case 'prenomparent':
  1145.                     const nameRegex = /^[A-Za-zÀ-ÖØ-öø-ÿ\\s'-]{2,}\$/;
  1146.                     return nameRegex.test(value);
  1147.                 default:
  1148.                     return value.length >= 2;
  1149.             }
  1150.         }
  1151.         function hideshow() {
  1152.             document.getElementById(\"btnn\").disabled = true;
  1153.             \$(\"#btnn\").css(\"background-color\", \"#ecf0f1\");
  1154.             \$(\"#mdpobli\").css(\"display\", \"none\");
  1155.             \$(\"#mdpoblier\").css(\"display\", \"block\");
  1156.         }
  1157.     </script>
  1158.    
  1159.    <script>
  1160.     \$(\".toggle-password\").click(function() {
  1161.         \$(this).toggleClass(\"bi-eye bi-eye-slash\");
  1162.         var input = \$(\$(this).attr(\"toggle\"));
  1163.         if (input.attr(\"type\") == \"password\") {
  1164.           input.attr(\"type\", \"text\");
  1165.         } else {
  1166.           input.attr(\"type\", \"password\");
  1167.         }
  1168.     });
  1169.     \$(document).ready(function(){
  1170.         \$('[data-toggle=\"tooltip\"]').tooltip({
  1171.             trigger: 'manual',
  1172.             html: true,
  1173.             template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>'
  1174.         });
  1175.         function validateEmail(email) {
  1176.             const re = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
  1177.             return re.test(String(email).toLowerCase());
  1178.         }
  1179.         \$('#mail').on('input', function() {
  1180.             var emailInput = \$(this);
  1181.             if (validateEmail(emailInput.val())) {
  1182.                 emailInput.removeClass('is-invalid');
  1183.                 emailInput.addClass('is-valid');
  1184.                 emailInput.tooltip('dispose');
  1185.                 \$('#notification').hide();
  1186.                 \$('#submitBtn').prop('disabled', false);
  1187.             } else {
  1188.                 emailInput.removeClass('is-valid');
  1189.                 emailInput.addClass('is-invalid');
  1190.                 
  1191.                 if (emailInput.val().length > 3) {
  1192.                     emailInput.attr('data-original-title', 'Votre adresse mail est incorrecte. Exemple: nom@domaine.com').tooltip('show');
  1193.                     if (emailInput.val().length > 0) {
  1194.                         \$('#notification').show();
  1195.                     }
  1196.                 } else {
  1197.                     \$('#notification').hide();
  1198.                 }
  1199.                 \$('#submitBtn').prop('disabled', false);
  1200.             }
  1201.         });
  1202.     });
  1203. </script>
  1204. <script>
  1205. function setupRealtimeValidation() {
  1206.     const formFields = [
  1207.         'nomparent',
  1208.         'prenomparent',
  1209.         'mail',
  1210.         'Passworduser',
  1211.         'Passworduser2',
  1212.         'num'
  1213.     ];
  1214.     
  1215.     formFields.forEach(field => {
  1216.         \$('#' + field).on('input', function() {
  1217.             const value = \$(this).val();
  1218.             
  1219.             if (value.length === 0) {
  1220.                 \$(this).removeClass('is-valid is-invalid');
  1221.                 \$(this).css('border', '1px solid #ced4da');
  1222.                 return;
  1223.             }
  1224.             
  1225.             if (isFieldValid(field, value)) {
  1226.                 \$(this).removeClass('is-invalid').addClass('is-valid');
  1227.                 \$(this).css('border', '1px solid #28a745');
  1228.             } else {
  1229.                 \$(this).removeClass('is-valid').addClass('is-invalid');
  1230.                 \$(this).css('border', '1px solid #dc3545');
  1231.             }
  1232.         });
  1233.     });
  1234. }
  1235. function resetForm() {
  1236.     \$('#nomparent').css('border','1px solid #41a2aa');
  1237.     \$('#nomparent').removeClass('is-valid'); 
  1238.     \$('#nomparent').removeClass('is-invalid'); 
  1239.     \$('#nomparent').val(''); 
  1240.     \$('#prenomparent').css('border','1px solid #41a2aa');
  1241.     \$('#prenomparent').removeClass('is-valid'); 
  1242.     \$('#prenomparent').removeClass('is-invalid'); 
  1243.     \$('#prenomparent').val(''); 
  1244.     \$('#mail').css('border','1px solid #41a2aa');
  1245.     \$('#mail').removeClass('is-valid'); 
  1246.     \$('#mail').removeClass('is-invalid'); 
  1247.     \$('#mail').val(''); 
  1248.     \$('#eroor').css('display','none');
  1249.     \$('#num').css('border','1px solid #41a2aa');
  1250.     \$('#num').removeClass('is-valid'); 
  1251.     \$('#num').removeClass('is-invalid'); 
  1252.     \$('#num').val(''); 
  1253.     \$('#Passworduser').css('border','1px solid #41a2aa');
  1254.     \$('#Passworduser').removeClass('is-valid'); 
  1255.     \$('#Passworduser').removeClass('is-invalid');
  1256.     \$('#Passworduser').val('');  
  1257.     \$('#Passworduser2').css('border','1px solid #41a2aa');
  1258.     \$('#Passworduser2').removeClass('is-valid'); 
  1259.     \$('#Passworduser2').removeClass('is-invalid'); 
  1260.     \$('#Passworduser2').val(''); 
  1261.     \$(\"#smsInput\").prop(\"checked\",false);
  1262.     \$(\"#mailInput\").prop(\"checked\",false);
  1263. }
  1264. </script>
  1265. ";
  1266.         
  1267.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1268.         
  1269.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1270.         yield from [];
  1271.     }
  1272.     /**
  1273.      * @codeCoverageIgnore
  1274.      */
  1275.     public function getTemplateName(): string
  1276.     {
  1277.         return "Parent/LoginParent.html.twig";
  1278.     }
  1279.     /**
  1280.      * @codeCoverageIgnore
  1281.      */
  1282.     public function isTraitable(): bool
  1283.     {
  1284.         return false;
  1285.     }
  1286.     /**
  1287.      * @codeCoverageIgnore
  1288.      */
  1289.     public function getDebugInfo(): array
  1290.     {
  1291.         return array (  1071 => 865,  960 => 757,  831 => 631,  826 => 630,  813 => 629,  797 => 622,  787 => 615,  769 => 600,  765 => 599,  757 => 594,  753 => 593,  747 => 590,  735 => 581,  726 => 575,  723 => 574,  707 => 562,  705 => 561,  701 => 560,  677 => 539,  673 => 538,  665 => 533,  661 => 532,  628 => 502,  585 => 462,  572 => 452,  559 => 442,  520 => 406,  512 => 401,  487 => 378,  474 => 377,  99 => 11,  95 => 10,  88 => 6,  84 => 5,  78 => 3,  65 => 2,  42 => 1,);
  1292.     }
  1293.     public function getSourceContext(): Source
  1294.     {
  1295.         return new Source("{% extends '/Accueil/layoutAccueilParents.html.twig' %}
  1296. {% block LinksCss %}
  1297.     {{ parent() }}
  1298.     <link rel=\"stylesheet\" href=\"{{'/css/Parent/css/login.css'}}\" >
  1299.     <link rel=\"stylesheet\" href=\"{{'/css/Parent/css/premiercnx.css'}}\">
  1300.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css\">
  1301.      <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\">
  1302.  <link href=\"{{ asset ('css/bootstrap-social.css')}}\" type=\"text/css\" rel=\"stylesheet\" >
  1303.  <link rel=\"stylesheet\" href=\"{{ asset('css/splide.min.css') }}\">
  1304. <style>
  1305.     .titleProdbienvenu {
  1306.     text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  1307. }
  1308. /* Style pour le bouton de retour en haut */
  1309. .scroll-top-btn {
  1310.     position: fixed;
  1311.     bottom: 20px;
  1312.     right: 20px;
  1313.     width: 40px;
  1314.     height: 40px;
  1315.     border-radius: 50%;
  1316.     background-color:#f09e7a;
  1317.     color: white;
  1318.     border: none;
  1319.     box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  1320.     z-index: 1000;
  1321.     display: none;
  1322.     cursor: pointer;
  1323.     transition: all 0.3s ease;
  1324. }
  1325. .scroll-top-btn:hover {
  1326.     background-color: #e8865e;
  1327.     transform: translateY(-3px);
  1328. }
  1329. /* Styles pour le loader d'inscription */
  1330. .register-loader {
  1331.     position: fixed;
  1332.     top: 0;
  1333.     left: 0;
  1334.     width: 100%;
  1335.     height: 100%;
  1336.     background-color: rgba(255, 255, 255, 0.9);
  1337.     z-index: 9999;
  1338.     display: none;
  1339.     justify-content: center;
  1340.     align-items: center;
  1341. }
  1342. .loader-content {
  1343.     text-align: center;
  1344.     background-color: white;
  1345.     padding: 30px;
  1346.     border-radius: 10px;
  1347.     box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
  1348.     max-width: 350px;
  1349.     width: 90%;
  1350. }
  1351. .loader-message {
  1352.     margin-top: 20px;
  1353.     font-size: 18px;
  1354.     font-weight: bold;
  1355.     color: #41a2aa;
  1356. }
  1357. .loader-submessage {
  1358.     margin-top: 10px;
  1359.     font-size: 14px;
  1360.     color: #666;
  1361. }
  1362. .spinner-border {
  1363.     width: 3rem;
  1364.     height: 3rem;
  1365.     color: #f09e7a !important;
  1366. }
  1367. /* Styles pour le modal de confirmation */
  1368. .modal {
  1369.     display: flex;
  1370.     align-items: center;
  1371.     justify-content: center;
  1372. }
  1373. .modal-dialog {
  1374.     margin: 0 auto;
  1375.     max-width: 500px;
  1376.     width: 90%;
  1377. }
  1378. .modal-content {
  1379.     border-radius: 10px;
  1380.     box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
  1381.     margin: 0 auto;
  1382. }
  1383. .modal-body {
  1384.     padding: 30px 20px;
  1385. }
  1386. .modal-footer {
  1387.     justify-content: center;
  1388.     padding: 15px;
  1389. }
  1390. .circleModal {
  1391.     background-color: #f09e7a;
  1392.     color: white;
  1393.     border: none;
  1394.     border-radius: 5px;
  1395.     padding: 10px 30px;
  1396.     font-weight: bold;
  1397.     transition: all 0.3s ease;
  1398. }
  1399. .circleModal:hover {
  1400.     background-color: #e8865e;
  1401.     transform: translateY(-2px);
  1402. }
  1403. /* Animation pour le passage au champ suivant */
  1404. .field-complete {
  1405.     transition: all 0.3s ease;
  1406.     border-color: #41a2aa !important;
  1407.     box-shadow: 0 0 5px rgba(65, 162, 170, 0.5) !important;
  1408.     transform: translateY(-2px);
  1409. }
  1410. .form-control:focus {
  1411.     border-color: #f09e7a !important;
  1412.     box-shadow: 0 0 6px rgba(240, 158, 122, 0.5) !important;
  1413.     transition: all 0.3s ease;
  1414. }
  1415. /* Position for password toggle icons */
  1416. .position-relative {
  1417.     position: relative;
  1418.     display: block;
  1419.     width: 100%;
  1420. }
  1421. .field-icon {
  1422.     position: absolute;
  1423.     right: 10px;
  1424.     top: 50%;
  1425.     transform: translateY(-50%);
  1426.     z-index: 10;
  1427.     cursor: pointer;
  1428.     color: #41a2aa;
  1429.     font-size: 14px;
  1430.     pointer-events: auto;
  1431. }
  1432. .field-icon:hover {
  1433.     color: #f09e7a;
  1434. }
  1435. /* Adjust input padding to make room for the icon */
  1436. input[type=\"password\"] {
  1437.     padding-right: 40px;
  1438. }
  1439. /* Updated styles for login forms */
  1440. .form-section {
  1441.     background-color: #fff;
  1442.     padding: 25px;
  1443.     border-radius: 8px;
  1444.     box-shadow: 0 2px 10px rgba(0,0,0,0.1);
  1445.     margin-bottom: 20px;
  1446.     height: 100%;
  1447. }
  1448. .soutitle {
  1449.     color: #333;
  1450.     font-size: 24px;
  1451.     font-weight: bold;
  1452.     margin-bottom: 15px;
  1453.     text-align: center;
  1454. }
  1455. .description2 {
  1456.     color: #666;
  1457.     text-align: center;
  1458.     margin-bottom: 20px;
  1459.     font-size: 14px;
  1460.     line-height: 1.5;
  1461. }
  1462. .form-control {
  1463.     border-radius: 4px;
  1464.     padding: 12px 15px;
  1465.     margin-bottom: 15px;
  1466.     border: 1px solid #ddd;
  1467.     transition: all 0.3s ease;
  1468. }
  1469. .form-control:focus {
  1470.     border-color: #41a2aa !important;
  1471. }
  1472. .logButton {
  1473.     width: 100%;
  1474.     padding: 12px;
  1475.     border-radius: 5px;
  1476.     font-weight: bold;
  1477.     font-size: 16px;
  1478.     margin-top: 10px;
  1479.     transition: all 0.3s ease;
  1480.     border: none;
  1481. }
  1482. .logButton:hover {
  1483.     transform: translateY(-2px);
  1484.     box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  1485. }
  1486. .logButtonSocial {
  1487.     display: flex;
  1488.     align-items: center;
  1489.     justify-content: center;
  1490.     width: 100%;
  1491.     padding: 12px;
  1492.     border-radius: 5px;
  1493.     font-weight: bold;
  1494.     margin-top: 15px;
  1495.     text-decoration: none;
  1496.     transition: all 0.3s ease;
  1497. }
  1498. .logButtonSocial:hover {
  1499.     transform: translateY(-2px);
  1500.     box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  1501.     text-decoration: none;
  1502. }
  1503. .logButtonSocial img {
  1504.     margin-right: 10px;
  1505.     height: 20px;
  1506. }
  1507. .ou-container {
  1508.     position: relative;
  1509.     height: 100%;
  1510.     display: flex;
  1511.     align-items: center;
  1512.     justify-content: center;
  1513.     min-height: 400px;
  1514. }
  1515. .ou-line {
  1516.     position: absolute;
  1517.     width: 1px;
  1518.     height: 80%;
  1519.     background-color: #ddd;
  1520.     left: 50%;
  1521.     transform: translateX(-50%);
  1522. }
  1523. .ou-text {
  1524.     background-color: white;
  1525.     padding: 10px;
  1526.     position: relative;
  1527.     z-index: 1;
  1528.     color: #666;
  1529.     font-weight: bold;
  1530. }
  1531. /* Desktop layout - both forms visible side by side */
  1532. @media screen and (min-width: 1025px) {
  1533.     #connexionDiv, #inscriptionDiv {
  1534.         display: block !important;
  1535.     }
  1536.     
  1537.     .circleCree {
  1538.         display: none !important;
  1539.     }
  1540.     
  1541.     .ou-container {
  1542.         display: flex !important;
  1543.     }
  1544.     
  1545.     /* Ensure proper column widths */
  1546.     .col-lg-5 {
  1547.         flex: 0 0 41.666667%;
  1548.         max-width: 41.666667%;
  1549.     }
  1550.     
  1551.     .col-lg-1 {
  1552.         flex: 0 0 8.333333%;
  1553.         max-width: 8.333333%;
  1554.     }
  1555. }
  1556. /* Tablet and mobile - one form at a time */
  1557. @media screen and (max-width: 1024px) {
  1558.     #connexionDiv, #inscriptionDiv {
  1559.         width: 100% !important;
  1560.         margin: 0 auto !important;
  1561.         float: none !important;
  1562.     }
  1563.     
  1564.     /* Initially hide the connection form */
  1565.     #connexionDiv {
  1566.         display: none;
  1567.     }
  1568.     
  1569.     /* Make the inscription form visible */
  1570.     #inscriptionDiv {
  1571.         display: block;
  1572.     }
  1573.     
  1574.     /* Hide the OR separator */
  1575.     .ou-container {
  1576.         display: none !important;
  1577.     }
  1578.     
  1579.     /* Make the toggle buttons visible */
  1580.     .circleCree {
  1581.         display: block !important;
  1582.         width: 100% !important;
  1583.         margin: 15px auto !important;
  1584.         padding: 10px !important;
  1585.         background-color: #41a2aa !important;
  1586.         color: white !important;
  1587.         border-radius: 5px !important;
  1588.         border: none !important;
  1589.         cursor: pointer !important;
  1590.         text-align: center !important;
  1591.         font-weight: bold !important;
  1592.     }
  1593.     
  1594.     /* Full width columns on mobile */
  1595.     .col-md-5, .col-sm-5 {
  1596.         width: 100% !important;
  1597.         max-width: 100% !important;
  1598.         flex: 0 0 100% !important;
  1599.     }
  1600.     
  1601.     /* Hide the middle column with the separator */
  1602.     .col-md-1.col-sm-1.col-lg-1.col-xs-1 {
  1603.         display: none !important;
  1604.     }
  1605. }
  1606. /* Forgot password link styling */
  1607. .description a {
  1608.     color: #f09e7a;
  1609.     text-decoration: none;
  1610.     font-weight: bold;
  1611. }
  1612. .description a:hover {
  1613.     text-decoration: underline;
  1614. }
  1615. /* Button container styling */
  1616. .button-container {
  1617.     margin-top: 15px;
  1618.     margin-bottom: 15px;
  1619. }
  1620. /* Social login buttons styling */
  1621. .mobilesocial {
  1622.     margin-top: 10px;
  1623. }
  1624. </style>
  1625. {% endblock %}
  1626. {% block Content %}
  1627.   <!-- Bouton pour remonter en haut de la page -->
  1628.   <button id=\"scrollTopBtn\" class=\"scroll-top-btn\" title=\"Retour en haut\">
  1629.     <i class=\"bi bi-arrow-up\"></i>
  1630.   </button>
  1631.   <!-- Loader pour l'inscription -->
  1632.   <div id=\"registerLoader\" class=\"register-loader\">
  1633.     <div class=\"loader-content\">
  1634.       <div class=\"spinner-border text-primary\" role=\"status\">
  1635.         <span class=\"sr-only\">Chargement...</span>
  1636.                 </div>
  1637.       <p class=\"loader-message\">Création de votre compte en cours...</p>
  1638.       <p class=\"loader-submessage\">Nous préparons votre espace parent 5sur5sejour, merci de patienter.</p>
  1639.                         </div>
  1640.                     </div>
  1641.   <!-- Modal de confirmation -->
  1642.   <div class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" style=\"display: none;\">
  1643.       <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">
  1644.     <div class=\"modal-content\" style=\"border-radius: 10px;\">
  1645.       <div class=\"modal-header border-0\">
  1646.         <button onclick=\"location.reload();\" type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Fermer\" style=\"margin-left: auto;\">
  1647.           <img src=\"{{ asset('images/Groupe_526.svg') }}\" alt=\"Fermer\">
  1648.         </button>
  1649.       </div>
  1650.       <div class=\"modal-body text-center\">
  1651.         <!-- Logo -->
  1652.         <img class=\"imageLogo2\" src=\"{{ asset('Accueil/imagesAccueil/logoHeader.svg') }}\" alt=\"Logo 5sur5séjour\" style=\"max-height: 60px; margin-bottom: 20px;\">
  1653.         <!-- Titre -->
  1654.         <h4 class=\"modal-title font-weight-bold mb-3\" id=\"modalInscriptionLabel\">🎉 Bienvenue sur 5sur5séjour !</h4>
  1655.         <!-- Texte -->
  1656.         <p style=\"font-size: 16px; line-height: 1.5; margin-bottom: 15px;\">
  1657.   Votre compte parent est presque prêt ! Encore une étape pour accéder à l'espace du séjour de votre enfant.
  1658.         </p>
  1659.         <p style=\"font-size: 15px; line-height: 1.5; margin-bottom: 15px;\">
  1660.   📩 Un e-mail vous a été envoyé pour <strong>activer votre compte parent</strong> en toute sécurité.
  1661.         </p>
  1662.         <!-- Bouton -->
  1663.         <div class=\"mt-4\">
  1664.           <button onclick=\"location.reload();\" class=\"btn btn-primary\" style=\"background-color: #41a2aa; border: none; padding: 12px 30px; font-weight: bold; border-radius: 8px; font-size: 16px;\">
  1665.             ✅ Compris, je vais consulter mes e-mails
  1666.           </button>
  1667.         </div>
  1668.       </div>
  1669.     </div>
  1670.   </div>
  1671.     </div>
  1672.     <div class=\"splide no-padding no-margin\" id=\"imageSlider\" style=\"background:white\">
  1673.         <div class=\"splide__track\">
  1674.             <ul class=\"splide__list\">
  1675.                 <!-- Slide 1 -->
  1676.                 <li class=\"splide__slide\">
  1677.                     <div class=\"slider-content\">
  1678.                         <div class=\"namePRD\" style=\"display: block;\">
  1679.                             <h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Offrez des souvenirs inoubliables à votre enfant </h4>
  1680.                             <h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">avec des cadeaux personnalisés en toute simplicité !</h4>
  1681.                           </div>
  1682.                         <img src=\"{{ asset('/images/3.png') }}\" class=\"imgslider\" alt=\"Image 2\" />
  1683.                     </div>
  1684.                 </li>
  1685.                 <!-- Slide 2 -->
  1686.                 <li class=\"splide__slide\">
  1687.                     <div class=\"slider-content\">
  1688.                         <div class=\"namePRD\" style=\"display: block;\">
  1689.                             <h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color:#F09E7A\">Restez connecté au séjour de votre enfant 24h/24  </h4>
  1690.                             <h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#41a2aa\">grâce à des photos partagées en toute sécurité !</h4>
  1691.                           </div>
  1692.                         <img src=\"{{ asset('/images/2.png') }}\" class=\"imgslider\" alt=\"Image 1\" />
  1693.                     </div>
  1694.                 </li>
  1695.                 <!-- Slide 3 -->
  1696.                 <li class=\"splide__slide\">
  1697.                     <div class=\"slider-content\">
  1698.                         <div class=\"namePRD\" style=\"display: block;\">
  1699.                             <h4 class=\"titleProdbienvenu titleProdbienvenu1\" style=\"color: #41a2aa\">Accéder à une boite vocale en illimitée</h4>
  1700.                             <h4 class=\"titleProdbienvenu titleProdbienvenu2\" style=\"color:#F09E7A\">Pour écouter les messages laissés par les enfants et les accompagnateurs</h4>
  1701.                           </div>
  1702.                         <img src=\"{{ asset('/images/1.png') }}\" class=\"imgslider\" alt=\"Image 2\" />
  1703.                     </div>
  1704.                 </li>
  1705.             </ul>
  1706.         </div>
  1707.     </div>
  1708.     <div class='row no-margin' style=\"padding-top:4%\">
  1709.         <div class=\"col-lg-1 col-md-1 col-sm-1 col-xs-1 no-padding SeparateurLeftAccom\"></div>
  1710.         <div class=\"col-md-10 col-sm-10 col-lg-10 col-xs-12 \" >
  1711.          
  1712.         <!-- Bouton caché qui déclenche le modal de confirmation -->
  1713.         <button type=\"button\" id=\"showOkInscription\" class=\"d-none\" data-toggle=\"modal\" data-target=\"#exampleModal\">
  1714.         En savoir plus
  1715.         </button>
  1716.             <div class=\"row no-margin\" style='margin-right: auto;margin-top:15px' id=\"formSection\">
  1717.                 <!-- Inscription Form -->
  1718.                 <div class=\"col-md-5 col-sm-12 col-lg-5 Inscription\" id='inscriptionDiv'>
  1719.                     <form class=\"form-section\" id=\"create\" onsubmit=\"return false;\">
  1720.                         <div class=\"soutitle\"> Créer un compte   </div>
  1721.                     <div class=\"description2\" style=\"padding-top:0px\"> Vous vous connectez pour la 1ère fois et n'avez pas
  1722.                         <br> de compte Parent(s) « 5 sur 5 séjour » </div>
  1723.                         <button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivConnexion();\">Vous avez déjà un compte Parent(s) ? </button>
  1724.                         <div class=\"form-group\">
  1725.                             <input type=\"text\" class=\"form-control\" id=\"nomparent\" placeholder=\"NOM * \" >
  1726.                             <input type=\"text\" class=\"form-control\" id=\"prenomparent\" placeholder=\"PRENOM *\">
  1727.                             <input type=\"text\" autocomplete=\"off\" class=\"form-control\" id=\"mail\" placeholder=\"ADRESSE MAIL\" required data-toggle=\"tooltip\" data-placement=\"right\" title=\"\">
  1728.                             <div class=\"position-relative\">
  1729.                             <input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser\" value=\"\" class=\"form-control\" placeholder=\"MOT DE PASSE  * \">
  1730.                                 <i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser\"></i>
  1731.                             </div>
  1732.                             <div class=\"position-relative\">
  1733.                             <input type=\"password\" autocomplete=\"off\" name=\"password\" id=\"Passworduser2\" class=\"form-control\" placeholder=\"CONFIRMER VOTRE MOT DE PASSE\">
  1734.                                 <i class=\"bi bi-eye field-icon toggle-password\" toggle=\"#Passworduser2\"></i>
  1735.                             </div>
  1736.                             
  1737.                             <p style=\"display: none; color:red; font-weight: bold; margin-top: 10px;\" id=\"eroor\">Cet email est déjà utilisé. <a href=\"{{ path(\"forgotPassparent\") }}\" style=\"color:#f09e7a; text-decoration: underline;\">Mot de passe oublié ?</a></p>
  1738.                             <input type=\"text\" class=\"form-control\" id=\"num\" name=\"numero de téléphone\" placeholder=\"NUMERO DE TELEPHONE PORTABLE * \">
  1739.                                
  1740.   
  1741.                             <div class=\"row no-margin \">
  1742.                                 <div class=\"souTITRE\">Souhaitez-vous être averti lorsque l'organisateur dépose des images ou des messages du séjour ?</div>
  1743.                             </div>
  1744.                             <br>
  1745.                             <div class=\"row no-margin\">
  1746.                                 <div class=\"box-1\" id=\"smsToggle\">
  1747.                                     <input type='checkbox' name=\"sms\" id=\"smsInput\" />
  1748.                                     <span class=\"toogle\"> </span>
  1749.                                 </div>
  1750.                                 <span class=\"sms\"> Par SMS </span>
  1751.                                 <div class=\"box-1\">
  1752.                                     <input type='checkbox' name=\"mail\" id=\"mailInput\" />
  1753.                                     <span class=\"toogle\" > </span>
  1754.                                 </div>
  1755.                                 <span class=\"mail\"> Par Mail </span>
  1756.                             </div>
  1757.                         </div>
  1758.                         <div class=\"notification\" id=\"notification\" style=\"display: none;\">L'adresse e-mail est incorrecte.</div>
  1759.                         <div class=\"button-container\">
  1760.                         <button type=\"button\" onclick=\"cp();\" class=\"logButton\" style=\"color:#fff;border: 1px solid #f09e7a; position: relative; background-color: #f09e7a;margin-top:-5%;\" id=\"submitBtn\">     
  1761.             S'inscrire
  1762.           </button></div>
  1763.           <div class=\"button-container mobilesocial\">
  1764.             <a href=\"{{ path('connect_google_start') }}\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
  1765.          <img src=\"{{ asset('/images/icons-google.png') }}\" >Continuer avec Google
  1766.        </a>
  1767.                        
  1768.      </div>
  1769.      <div class=\"mobilesocial\">                  
  1770.                     <a href=\"{{ path('connect_facebook_start') }}\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
  1771.                      <img src=\"{{ asset('/images/icons-facebook.png') }}\" > Continuer avec Facebook
  1772.        </a>
  1773.            </div>        
  1774.         </form>
  1775.                 </div>
  1776.                 <!-- OR Separator -->
  1777.                 <div class=\"col-md-1 col-sm-1 col-lg-1 col-xs-1\">
  1778.                     <div class=\"ou-container\">
  1779.                         <div class=\"ou-line\"></div>
  1780.                         <div class=\"ou-text\">OU</div>
  1781.                     </div>
  1782.                 </div>
  1783.                 <!-- Connexion Form -->
  1784.                 <div class=\"col-md-5 col-sm-12 col-lg-5 connexion\" id='connexionDiv'>
  1785.                     <div class=\"form-section\">
  1786.                         <div class=\"soutitle\"> Se connecter </div>
  1787.                         <div class=\"description2\" style=\"padding-top:0px\">Vous avez déja un compte Parent(s) « 5 sur 5 séjour » </div>
  1788.                         <button type=\"button\" align=\"center\" class=\"circleCree\" onclick=\"AffichDivInscri();\">Créer un compte ? </button>
  1789.                         <form method=\"post\" action=\"{{ path('app_back_Parent') }}\" id=\"login-form\">
  1790.                             {% if error %}
  1791.                                 <div class=\"alert alert-danger\">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
  1792.                                 <script>
  1793.                                     document.addEventListener('DOMContentLoaded', function() {
  1794.                                         Swal.fire({
  1795.                                             icon: 'error',
  1796.                                             title: 'Erreur de connexion',
  1797.                                             text: 'Identifiant ou mot de passe incorrect.',
  1798.                                             confirmButtonColor: '#41a2aa'
  1799.                                         });
  1800.                                     });
  1801.                                 </script>
  1802.                             {% endif %}
  1803.                             <div class=\"form-group\">
  1804.                                 <input type=\"text\" name=\"email\" id=\"inputEmail\" value=\"{{ last_username }}\" class=\"form-control\" placeholder=\"Mon identifiant * \" required>
  1805.                                 <div class=\"position-relative\">
  1806.                                     <input type=\"password\" name=\"password\" id=\"inputPassword\" class=\"form-control\" placeholder=\"Mon mot de passe *\" required>
  1807.                                     <span toggle=\"#inputPassword\" class=\"bi bi-eye field-icon toggle-password\"></span>
  1808.                                 </div>
  1809.                                 
  1810.                                 <input type=\"hidden\" name=\"_csrf_token\" value=\"{{ csrf_token('authenticate') }}\">
  1811.                                 <div class=\"button-container\">
  1812.                                     <button type=\"submit\" class=\"logButton\" style=\"color:#fff;background-color:#41a2aa;border-color:rgba(0,0,0,0.2)\" id=\"login-button\">
  1813.              Se connecter 
  1814.           </button>
  1815.         
  1816.                             </div>
  1817.                               
  1818.                             <div class=\"description\"> <a id=\"mdpobli\" href=\"{{ path(\"forgotPassparent\") }}\" style=\"color:#f09e7a ; display: block\">Vous avez oublié votre mot de passe ? </a> </div>
  1819.                             <div class=\"button-container\">
  1820.                <a href=\"{{ path('connect_google_start') }}\" style=\"color:#fff;background-color:#4F86EC;\" class=\"logButtonSocial\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
  1821.             <img src=\"{{ asset('/images/icons-google.png') }}\" >Continuer avec Google
  1822.           </a>
  1823.                           
  1824.         </div>
  1825.         <div class=\"button-c\" style=\"display: flex; justify-content: center; align-items: center;\">                  
  1826.                        <a href=\"{{ path('connect_facebook_start') }}\" class=\"logButtonSocial\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
  1827.                         <img src=\"{{ asset('/images/icons-facebook.png') }}\" > Continuer avec Facebook
  1828.           </a>
  1829.               </div>        
  1830.                                 <br>
  1831.                                 <br>
  1832.                             </div>
  1833.                         </form>
  1834.                     
  1835.                     </div>
  1836.                 </div>
  1837.         </div>
  1838.       
  1839.     </div>
  1840.   <div class=\"col-md-3\" style=\"margin-top: 21%;display:none\">
  1841.    <a href=\"{{ path('connect_google_start') }}\" style=\"color:#fff;background-color:#4F86EC;border-color:rgba(0,0,0,0.2)\" class=\"btn btn-block btn-social btn-google\" onclick=\"_gaq.push(['_trackEvent', 'btn-social', 'click', 'btn-google']);\">
  1842.             <span class=\"fa fa-google\"></span> S'inscrire avec Google
  1843.           </a>
  1844.           
  1845.                           
  1846.                                 <br>
  1847.                                    <br>
  1848.                        <a href=\"{{ path('connect_facebook_start') }}\" class=\"btn btn-block btn-social btn-facebook\" style=\"color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)\" >
  1849.             <span class=\"fa fa-facebook\"></span> S'inscrire avec Facebook
  1850.           </a></div>
  1851.             </div>
  1852. {% endblock %}
  1853. {% block javascript %}
  1854.     {{ parent() }}
  1855.   <script src=\"{{ asset('js/splide.min.js') }}\"></script>
  1856.   <script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.all.min.js\"></script>
  1857.     
  1858.     <script>
  1859.         document.addEventListener('DOMContentLoaded', function () {
  1860.     // S'assurer que le modal est caché au chargement de la page
  1861.     \$('#exampleModal').modal('hide');
  1862.     \$('#exampleModal').removeClass('show');
  1863.     \$('#exampleModal').attr('aria-hidden', 'true');
  1864.     \$('body').removeClass('modal-open');
  1865.     \$('.modal-backdrop').remove();
  1866.     
  1867.     // Basic form validation before submission
  1868.     const loginForm = document.getElementById('login-form');
  1869.     if (loginForm) {
  1870.         loginForm.addEventListener('submit', function(e) {
  1871.             const email = document.getElementById('inputEmail').value.trim();
  1872.             const password = document.getElementById('inputPassword').value;
  1873.             
  1874.             if (!email || !password) {
  1875.                 e.preventDefault();
  1876.                 Swal.fire({
  1877.                     icon: 'warning',
  1878.                     title: 'Champs requis',
  1879.                     text: 'Veuillez remplir tous les champs pour vous connecter.',
  1880.                     confirmButtonColor: '#41a2aa'
  1881.                 });
  1882.                 return false;
  1883.             }
  1884.             // If validation passes, form will submit normally to Symfony
  1885.         });
  1886.     }
  1887.     
  1888.     // Gestion du bouton de retour en haut
  1889.     const scrollTopBtn = document.getElementById('scrollTopBtn');
  1890.     
  1891.     window.addEventListener('scroll', function() {
  1892.         if (window.pageYOffset > 300) {
  1893.             scrollTopBtn.style.display = 'block';
  1894.         } else {
  1895.             scrollTopBtn.style.display = 'none';
  1896.         }
  1897.     });
  1898.     
  1899.     scrollTopBtn.addEventListener('click', function() {
  1900.         window.scrollTo({
  1901.             top: 0,
  1902.             behavior: 'smooth'
  1903.         });
  1904.     });
  1905.     
  1906.     // Initialisation du carrousel Splide
  1907.     if (typeof Splide !== 'undefined') {
  1908.         var splide = new Splide('#imageSlider', {
  1909.             type: 'loop',
  1910.             perPage: 1,
  1911.             autoplay: true,
  1912.             interval: 6000,
  1913.             pauseOnHover: false,
  1914.             pauseOnFocus: false,
  1915.             pagination: false,
  1916.             arrows: false  
  1917.         });
  1918.         splide.mount();
  1919.     }
  1920.     // Auto-scroll vers les formulaires après 5 secondes
  1921.     setTimeout(function() {
  1922.         scrollToFormSection();
  1923.     }, 5000);
  1924.     // Configuration du modal de confirmation
  1925.     \$('#exampleModal').modal({
  1926.         backdrop: 'static',
  1927.         keyboard: false,
  1928.         show: false
  1929.     });
  1930.     
  1931.     \$('#exampleModal').on('show.bs.modal', function () {
  1932.         \$(this).css('display', 'flex');
  1933.         \$(this).css('align-items', 'center');
  1934.         \$(this).find('.modal-dialog').css({
  1935.             'display': 'flex',
  1936.             'align-items': 'center',
  1937.             'margin': '0 auto',
  1938.             'max-height': '90vh'
  1939.         });
  1940.     });
  1941.     function scrollToFormSection() {
  1942.         const formSection = document.getElementById('formSection');
  1943.         if (formSection) {
  1944.             const formPosition = formSection.getBoundingClientRect().top + window.scrollY;
  1945.             const headerOffset = 50;
  1946.             const scrollPosition = formPosition - headerOffset;
  1947.             
  1948.             window.scrollTo({
  1949.                 top: scrollPosition,
  1950.                 behavior: 'smooth'
  1951.             });
  1952.         }
  1953.     }
  1954.     
  1955.     // Handle responsive form display
  1956.     handleResponsiveFormDisplay();
  1957.     
  1958.     // Configuration pour le passage automatique au champ suivant
  1959.     setupAutoNextField();
  1960.     
  1961.     // Ajouter la validation en temps réel pour tous les champs
  1962.     setupRealtimeValidation();
  1963. });
  1964.         function cp() {
  1965.            \$('#registerLoader').css('display', 'flex');
  1966.            
  1967.            var loaderTimeout = setTimeout(function() {
  1968.                \$('#registerLoader').css('display', 'none');
  1969.                \$(\"#showOkInscription\").trigger('click');
  1970.            }, 3000);
  1971.           
  1972.             var nomparent = \"\";
  1973.             var prenomparent = \"\";
  1974.             var mail = \"\";
  1975.             var num = \"5555\";
  1976.             var confirmpassword = \$('#Passworduser2').val();
  1977.             var parent_register = \"{{ path('parent_register') }}\";
  1978.             var Passworduser = \"\";
  1979.             \$testDeCreation = false;
  1980.             \$testDeCreation2 = false;
  1981.             \$testDeCreation3 = false;
  1982.             \$testDeCreation4 = false;
  1983.             \$testDeCreation5 = false;
  1984.             
  1985.             if (\$('#nomparent').val() == \"\") {
  1986.                 \$('#nomparent').addClass('is-invalid');
  1987.                 \$('#nomparent').removeClass('is-valid');
  1988.                 \$('#nomparent').css('border', '1px solid red');
  1989.                 \$testDeCreation = false;
  1990.             } else {
  1991.                 \$('#nomparent').removeClass('is-invalid');
  1992.                 \$('#nomparent').addClass('is-valid');
  1993.                 \$('#nomparent').css('border', '1px solid green');
  1994.                nomparent = \$('#nomparent').val();
  1995.                 \$testDeCreation = true;
  1996.             }
  1997.             if (\$('#prenomparent').val() == \"\") {
  1998.                 \$('#prenomparent').addClass('is-invalid');
  1999.                 \$('#prenomparent').removeClass('is-valid');
  2000.                 \$('#prenomparent').css('border', '1px solid red');
  2001.                 \$testDeCreation1 = false;
  2002.             } else {
  2003.                 \$('#prenomparent').removeClass('is-invalid');
  2004.                 \$('#prenomparent').addClass('is-valid');
  2005.                 \$('#prenomparent').css('border', '1px solid green');
  2006.                prenomparent = \$('#prenomparent').val();
  2007.                 \$testDeCreation1 = true;
  2008.             }
  2009.             if (\$('#num').val() == \"\") {
  2010.                 \$('#num ').addClass('is-invalid');
  2011.                 \$('#num').removeClass('is-valid');
  2012.                 \$('#num').css('border', '1px solid red');
  2013.                 \$testDeCreation2 = false;
  2014.             } else {
  2015.                 \$('#num').removeClass('is-invalid');
  2016.                 \$('#num').addClass('is-valid');
  2017.                 \$('#num').css('border', '1px solid green');
  2018.                num = \$('#num').val();
  2019.                 \$testDeCreation2 = true;
  2020.             }
  2021.             if (\$('#mail').val() == \"\") {
  2022.                 \$('#mail').addClass('is-invalid');
  2023.                 \$('#mail').removeClass('is-valid');
  2024.                 \$('#mail').css('border', '1px solid red');
  2025.                 \$testDeCreation3 = false;
  2026.             } else {
  2027.                 \$('#mail').removeClass('is-invalid');
  2028.                 \$('#mail').addClass('is-valid');
  2029.                 \$('#mail').css('border', '1px solid green');
  2030.                 mail = \$('#mail').val();
  2031.                 \$testDeCreation3 = true;
  2032.             }
  2033.             if (\$('#Passworduser').val() == \"\") {
  2034.                 \$('#Passworduser').addClass('is-invalid');
  2035.                 \$('#Passworduser').removeClass('is-valid');
  2036.                 \$('#Passworduser').css('border', '1px solid red');
  2037.                 \$testDeCreation4 = false;
  2038.             } else {
  2039.                 \$('#Passworduser').removeClass('is-invalid');
  2040.                 \$('#Passworduser').addClass('is-valid');
  2041.                 \$('#Passworduser').css('border', '1px solid green');
  2042.                 Passworduser = \$('#Passworduser').val();
  2043.                 \$testDeCreation4 = true;
  2044.             }
  2045.             
  2046.             var sms = 0; var mailnotif = 0;
  2047.             if (\$(\"#smsInput\").is(':checked')) {
  2048.                 var sms = 1;
  2049.             }
  2050.             if (\$(\"#mailInput\").is(':checked')){
  2051.                 var mailnotif = 1;
  2052.             }
  2053.            
  2054.             \$_data = {
  2055.                 'nomparent': nomparent,
  2056.                 'prenomparent': prenomparent,
  2057.                 'mailprent': mail,
  2058.                 'numtel': num,
  2059.                 'passwordparent': Passworduser,
  2060.                 'confirmpassword':confirmpassword,
  2061.                 'sms': sms,
  2062.                 'mailnotif': mailnotif
  2063.             }
  2064.             
  2065.             if (\$testDeCreation && \$testDeCreation1 && \$testDeCreation2 && \$testDeCreation3 && \$testDeCreation4 ) {
  2066.                 \$.ajax({
  2067.                     type: \"POST\",
  2068.                     url: parent_register,
  2069.                     data: \$_data,
  2070.                     success: function (\$response) {
  2071.                         \$('#registerLoader').css('display', 'none');
  2072.                         clearTimeout(loaderTimeout);
  2073.                         
  2074.                         if (\$response == 'eror') {
  2075.                             \$('#mail').css('border-color', 'red');
  2076.                             \$('#eroor').css('display', 'block');
  2077.                             Swal.fire({
  2078.                                 icon: 'error',
  2079.                                 title: 'Email déjà utilisé',
  2080.                                 text: 'Cette adresse email est déjà associée à un compte.',
  2081.                                 footer: '<a href=\"{{ path(\"forgotPassparent\") }}\" style=\"color:#f09e7a;\">Mot de passe oublié ?</a>',
  2082.                                 showCancelButton: true,
  2083.                                 confirmButtonText: 'Se connecter',
  2084.                                 cancelButtonText: 'Modifier',
  2085.                                 confirmButtonColor: '#41a2aa',
  2086.                                 cancelButtonColor: '#f09e7a',
  2087.                                 position: 'center'
  2088.                             }).then((result) => {
  2089.                                 if (result.isConfirmed) {
  2090.                                     AffichDivConnexion();
  2091.                                     \$('#inputEmail').val(\$('#mail').val());
  2092.                                     \$('#inputPassword').focus();
  2093.                                 }
  2094.                             });
  2095.                         }
  2096.                         else if(\$response == 'erorpasswordconfirm') {
  2097.                               \$('#Passworduser2').css('border-color', 'red');
  2098.                                 Swal.fire({
  2099.                                 icon: 'error',
  2100.                                 title: 'Oups..!',
  2101.                                 text: 'Les mots de passe ne se correspondent pas.',
  2102.                                 footer: '',
  2103.                                 position: 'center'
  2104.                             })
  2105.                         }
  2106.                          else {
  2107.                             \$(\"#showOkInscription\").trigger('click');
  2108.                             resetForm();
  2109.                             
  2110.                             \$('#exampleModal').on('shown.bs.modal', function () {
  2111.                                 \$(this).find('.modal-dialog').css({
  2112.                                     'margin-top': function () {
  2113.                                         return (\$(window).height() - \$(this).height()) / 2;
  2114.                                     }
  2115.                                 });
  2116.                             });
  2117.                               var windowWidth = document.documentElement.clientWidth;
  2118.                                 if (windowWidth <= 560) {
  2119.                                     setTimeout(function(){
  2120.                                    location.reload();
  2121.                               },500);
  2122.                            }
  2123.                         }
  2124.                     },
  2125.                     error: function() {
  2126.                         \$('#registerLoader').css('display', 'none');
  2127.                         clearTimeout(loaderTimeout);
  2128.                         
  2129.                         Swal.fire({
  2130.                             icon: 'error',
  2131.                             title: 'Erreur de connexion',
  2132.                             text: 'Un problème est survenu lors de l\\'inscription. Veuillez réessayer.',
  2133.                             confirmButtonColor: '#f09e7a',
  2134.                             position: 'center'
  2135.                         });
  2136.                     }
  2137.                 })
  2138.             } else {
  2139.                 \$('#registerLoader').css('display', 'none');
  2140.                 clearTimeout(loaderTimeout);
  2141.             }
  2142.         }
  2143.         function AffichDivConnexion() {
  2144.             \$(\"#inscriptionDiv\").css(\"display\", \"none\");
  2145.             \$(\"#connexionDiv\").css(\"display\", \"block\");
  2146.         }
  2147.         function AffichDivInscri() {
  2148.             \$(\"#inscriptionDiv\").css(\"display\", \"block\");
  2149.             \$(\"#connexionDiv\").css(\"display\", \"none\");
  2150.         }
  2151.         function handleResponsiveFormDisplay() {
  2152.             var windowWidth = \$(window).width();
  2153.             
  2154.             if (windowWidth <= 1024) {
  2155.                 if (\$(\"#inscriptionDiv\").is(':visible')) {
  2156.                     \$(\"#connexionDiv\").css(\"display\", \"none\");
  2157.                 } else {
  2158.                     \$(\"#inscriptionDiv\").css(\"display\", \"none\");
  2159.                     \$(\"#connexionDiv\").css(\"display\", \"block\");
  2160.                 }
  2161.                 \$(\".circleCree\").css(\"display\", \"block\");
  2162.             } else {
  2163.                 \$(\"#connexionDiv\").css(\"display\", \"block\");
  2164.                 \$(\"#inscriptionDiv\").css(\"display\", \"block\");
  2165.                 \$(\".circleCree\").css(\"display\", \"none\");
  2166.             }
  2167.         }
  2168.         \$(window).resize(function() {
  2169.             handleResponsiveFormDisplay();
  2170.         });
  2171.         function setupAutoNextField() {
  2172.             const formFields = [
  2173.                 'nomparent',
  2174.                 'prenomparent',
  2175.                 'mail',
  2176.                 'Passworduser',
  2177.                 'Passworduser2',
  2178.                 'num'
  2179.             ];
  2180.             
  2181.             formFields.forEach((field, index) => {
  2182.                 if (index < formFields.length - 1) {
  2183.                     const \$currentField = \$('#' + field);
  2184.                     let typingTimer;
  2185.                     const doneTypingInterval = 1500;
  2186.                     
  2187.                     \$currentField.on('input', function() {
  2188.                         clearTimeout(typingTimer);
  2189.                         
  2190.                         if (event && event.data === ' ' && isFieldValid(field, \$(this).val().trim())) {
  2191.                             event.preventDefault();
  2192.                             \$('#' + formFields[index + 1]).focus();
  2193.                             return;
  2194.                         }
  2195.                         
  2196.                         if (\$(this).val()) {
  2197.                             typingTimer = setTimeout(function() {
  2198.                                 if (isFieldValid(field, \$currentField.val().trim())) {
  2199.                                     \$('#' + formFields[index + 1]).focus();
  2200.                                 }
  2201.                             }, doneTypingInterval);
  2202.                         }
  2203.                     });
  2204.                     
  2205.                     \$currentField.on('keydown', function(e) {
  2206.                         clearTimeout(typingTimer);
  2207.                         
  2208.                         if (e.key === ' ' && isFieldValid(field, \$(this).val().trim())) {
  2209.                             e.preventDefault();
  2210.                             \$('#' + formFields[index + 1]).focus();
  2211.                             return;
  2212.                         }
  2213.                         
  2214.                         if (e.key === 'Tab' && !e.shiftKey) {
  2215.                             return true;
  2216.                         }
  2217.                         
  2218.                         if (e.key === 'Enter') {
  2219.                             e.preventDefault();
  2220.                             \$('#' + formFields[index + 1]).focus();
  2221.                         }
  2222.                     });
  2223.                     
  2224.                     \$currentField.on('blur', function() {
  2225.                         clearTimeout(typingTimer);
  2226.                     });
  2227.                 }
  2228.             });
  2229.             
  2230.             \$('#' + formFields[formFields.length - 1]).on('keydown', function(e) {
  2231.                 if (e.key === 'Enter') {
  2232.                     e.preventDefault();
  2233.                     cp();
  2234.                 }
  2235.             });
  2236.         }
  2237.         function isFieldValid(fieldId, value) {
  2238.             switch(fieldId) {
  2239.                 case 'mail':
  2240.                     const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
  2241.                     return emailRegex.test(value);
  2242.                 case 'Passworduser':
  2243.                     return value.length >= 6;
  2244.                 case 'Passworduser2':
  2245.                     return value === \$('#Passworduser').val() && value.length >= 6;
  2246.                 case 'num':
  2247.                     const phoneRegex = /^[0-9]{8,}\$/;
  2248.                     return phoneRegex.test(value.replace(/\\s+/g, ''));
  2249.                 case 'nomparent':
  2250.                 case 'prenomparent':
  2251.                     const nameRegex = /^[A-Za-zÀ-ÖØ-öø-ÿ\\s'-]{2,}\$/;
  2252.                     return nameRegex.test(value);
  2253.                 default:
  2254.                     return value.length >= 2;
  2255.             }
  2256.         }
  2257.         function hideshow() {
  2258.             document.getElementById(\"btnn\").disabled = true;
  2259.             \$(\"#btnn\").css(\"background-color\", \"#ecf0f1\");
  2260.             \$(\"#mdpobli\").css(\"display\", \"none\");
  2261.             \$(\"#mdpoblier\").css(\"display\", \"block\");
  2262.         }
  2263.     </script>
  2264.    
  2265.    <script>
  2266.     \$(\".toggle-password\").click(function() {
  2267.         \$(this).toggleClass(\"bi-eye bi-eye-slash\");
  2268.         var input = \$(\$(this).attr(\"toggle\"));
  2269.         if (input.attr(\"type\") == \"password\") {
  2270.           input.attr(\"type\", \"text\");
  2271.         } else {
  2272.           input.attr(\"type\", \"password\");
  2273.         }
  2274.     });
  2275.     \$(document).ready(function(){
  2276.         \$('[data-toggle=\"tooltip\"]').tooltip({
  2277.             trigger: 'manual',
  2278.             html: true,
  2279.             template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>'
  2280.         });
  2281.         function validateEmail(email) {
  2282.             const re = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$/;
  2283.             return re.test(String(email).toLowerCase());
  2284.         }
  2285.         \$('#mail').on('input', function() {
  2286.             var emailInput = \$(this);
  2287.             if (validateEmail(emailInput.val())) {
  2288.                 emailInput.removeClass('is-invalid');
  2289.                 emailInput.addClass('is-valid');
  2290.                 emailInput.tooltip('dispose');
  2291.                 \$('#notification').hide();
  2292.                 \$('#submitBtn').prop('disabled', false);
  2293.             } else {
  2294.                 emailInput.removeClass('is-valid');
  2295.                 emailInput.addClass('is-invalid');
  2296.                 
  2297.                 if (emailInput.val().length > 3) {
  2298.                     emailInput.attr('data-original-title', 'Votre adresse mail est incorrecte. Exemple: nom@domaine.com').tooltip('show');
  2299.                     if (emailInput.val().length > 0) {
  2300.                         \$('#notification').show();
  2301.                     }
  2302.                 } else {
  2303.                     \$('#notification').hide();
  2304.                 }
  2305.                 \$('#submitBtn').prop('disabled', false);
  2306.             }
  2307.         });
  2308.     });
  2309. </script>
  2310. <script>
  2311. function setupRealtimeValidation() {
  2312.     const formFields = [
  2313.         'nomparent',
  2314.         'prenomparent',
  2315.         'mail',
  2316.         'Passworduser',
  2317.         'Passworduser2',
  2318.         'num'
  2319.     ];
  2320.     
  2321.     formFields.forEach(field => {
  2322.         \$('#' + field).on('input', function() {
  2323.             const value = \$(this).val();
  2324.             
  2325.             if (value.length === 0) {
  2326.                 \$(this).removeClass('is-valid is-invalid');
  2327.                 \$(this).css('border', '1px solid #ced4da');
  2328.                 return;
  2329.             }
  2330.             
  2331.             if (isFieldValid(field, value)) {
  2332.                 \$(this).removeClass('is-invalid').addClass('is-valid');
  2333.                 \$(this).css('border', '1px solid #28a745');
  2334.             } else {
  2335.                 \$(this).removeClass('is-valid').addClass('is-invalid');
  2336.                 \$(this).css('border', '1px solid #dc3545');
  2337.             }
  2338.         });
  2339.     });
  2340. }
  2341. function resetForm() {
  2342.     \$('#nomparent').css('border','1px solid #41a2aa');
  2343.     \$('#nomparent').removeClass('is-valid'); 
  2344.     \$('#nomparent').removeClass('is-invalid'); 
  2345.     \$('#nomparent').val(''); 
  2346.     \$('#prenomparent').css('border','1px solid #41a2aa');
  2347.     \$('#prenomparent').removeClass('is-valid'); 
  2348.     \$('#prenomparent').removeClass('is-invalid'); 
  2349.     \$('#prenomparent').val(''); 
  2350.     \$('#mail').css('border','1px solid #41a2aa');
  2351.     \$('#mail').removeClass('is-valid'); 
  2352.     \$('#mail').removeClass('is-invalid'); 
  2353.     \$('#mail').val(''); 
  2354.     \$('#eroor').css('display','none');
  2355.     \$('#num').css('border','1px solid #41a2aa');
  2356.     \$('#num').removeClass('is-valid'); 
  2357.     \$('#num').removeClass('is-invalid'); 
  2358.     \$('#num').val(''); 
  2359.     \$('#Passworduser').css('border','1px solid #41a2aa');
  2360.     \$('#Passworduser').removeClass('is-valid'); 
  2361.     \$('#Passworduser').removeClass('is-invalid');
  2362.     \$('#Passworduser').val('');  
  2363.     \$('#Passworduser2').css('border','1px solid #41a2aa');
  2364.     \$('#Passworduser2').removeClass('is-valid'); 
  2365.     \$('#Passworduser2').removeClass('is-invalid'); 
  2366.     \$('#Passworduser2').val(''); 
  2367.     \$(\"#smsInput\").prop(\"checked\",false);
  2368.     \$(\"#mailInput\").prop(\"checked\",false);
  2369. }
  2370. </script>
  2371. {% endblock %}
  2372. ""Parent/LoginParent.html.twig""/var/www/5sur5sejour/templates/Parent/LoginParent.html.twig");
  2373.     }
  2374. }