1<!DOCTYPE html> 2<html dir="ltr" lang="fr"> 3<head> 4 <title> 5 Commune de Trélivan - Site officiel de la commune de Trélivan </title> 6 7
7<script src="/lib/tarteaucitron/tarteaucitron.js"></script>
7 8
8<script> 9 var tarteaucitronExpireInDay = true, tarteaucitronForceExpire = 183; 10 11 tarteaucitron.init({ 12 "privacyUrl": "", /* Privacy policy url */ 13 14 "hashtag": "#tarteaucitron", /* Open the panel with this hashtag */ 15 "cookieName": "tarteaucitron", /* Cookie name */ 16 17 "orientation": "bottom", /* Banner position (top - bottom) */ 18 19 "showAlertSmall": false, /* Show the small banner on bottom right */ 20 "cookieslist": true, /* Show the cookie list */ 21 22 "showIcon": false, /* Show cookie icon to manage cookies */ 23 // "iconSrc": "", /* Optionnal: URL or base64 encoded image */ 24 "iconPosition": "BottomRight", /* Position of the icon between BottomRight, BottomLeft, TopRight and TopLeft */ 25 26 "adblocker": false, /* Show a Warning if an adblocker is detected */ 27 28 "DenyAllCta": true, /* Show the deny all button */ 29 "AcceptAllCta": true, /* Show the accept all button when highPrivacy on */ 30 "highPrivacy": true, /* HIGHLY RECOMMANDED Disable auto consent */ 31 32 "handleBrowserDNTRequest": false, /* If Do Not Track == 1, disallow all */ 33 34 "removeCredit": false, /* Remove credit link */ 35 "moreInfoLink": true, /* Show more info link */ 36 "useExternalCss": false, /* If false, the tarteaucitron.css file will be loaded */ 37 38 //"cookieDomain": ".my-multisite-domaine.fr", /* Shared cookie for subdomain website */ 39 40 "readmoreLink": "", /* Change the default readmore link pointing to tarteaucitron.io */ 41 42 "mandatory": true, /* Show a message about mandatory cookies */ 43 44 "listCookieByService": false, /* Show a message about list cookie by service */ 45 "tarteaucitronForceLanguage" : 'fr', 46 47 }); 48 </script>
48 49 50 51<meta name="Description" content=""> 52<meta name="Keywords" content=""> 53<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 54<meta charset="UTF-8"> 55
55<script type="text/javascript"> 56 tarteaucitron.user.gtagUa = 'G-2SSJ56NMC0'; 57 tarteaucitron.user.gtagMore = function () { /* add here your optionnal gtag() */ 58 }; 59 (tarteaucitron.job = tarteaucitron.job || []).push('gtag'); 60 </script>
60 61 62 <!-- Matomo -->
63<script> 64 var _paq = window._paq = window._paq || []; 65 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ 66 _paq.push(['trackPageView']); 67 _paq.push(['enableLinkTracking']); 68 (function() { 69 var u="//matomo-client.neopse.com/"; 70 _paq.push(['setTrackerUrl', u+'matomo.php']); 71 _paq.push(['setSiteId', '366']); 72 var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 73 g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); 74 })(); 75</script>
75 76<!-- End Matomo Code --> 77 <link rel="apple-touch-icon" href="//static.neopse.com/assets/img/favicon/rdc_logo.ico?v=v1"> 78 <link rel="icon" href="//static.neopse.com/assets/img/favicon/rdc_logo.ico?v=v1"> 79 <link rel="preconnect" href="https://fonts.googleapis.com"> 80 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 81 <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700|Material+Icons" rel="stylesheet"> 82 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Jost:wght@400;700&family=Lato:wght@400;700&family=Lora:wght@400;700&family=Merriweather:wght@400;700&family=Montserrat:wght@400;700&family=Nunito:wght@400;700&family=Open+Sans:wght@400;700&family=Outfit:wght@400;700&family=Roboto:wght@400;700&family=Roboto+Condensed:wght@400;700&family=Roboto+Slab:wght@400;700&display=swap" rel="stylesheet"> 83 84 <link href='/dist/owlcarousel/css/owl.carousel.min.css' rel='stylesheet' type='text/css'> 85 <link href='/dist/owlcarousel/css/owl.theme.default.min.css' rel='stylesheet' type='text/css'> 86 <link href='/dist/slick/slick.css' rel='stylesheet' type='text/css'> 87 <link href='/dist/slick/slick-theme.css' rel='stylesheet' type='text/css'> 88 <link href='/dist/fullcalendar/fullcalendar.min.css' rel='stylesheet' type='text/css'> 89 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css"> 90 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" /> 91 <link href="/tpl/2/css/style.css" rel="stylesheet" type='text/css'> 92 93 <link href="/lib/splide-4.0.1/css/splide.min.css" rel="stylesheet" type="text/css"/> 94 <link href="/lib/splide-4.0.1/css/splide-custom.css" rel="stylesheet" type="text/css"/> 95 96 <style class="notranslate">header.intro { background-image: url(https://static.neopse.com/medias/p/2026/site/64/b9/5c/64b95c542d09a8128342986b242514ade98eeded.jpeg?v=v1); background-position: center; background-repeat: repeat; }body { background-color: rgba(47, 119, 75, 0.31); }body { background-image: url(https://static.neopse.com/assets/img/textures/elegant-grid.png?v=v1); background-position: center; background-repeat: repeat; }.c_btn { color: #AA580E; border-color: #AA580E; } 97 .c_btn:hover { background-color: #AA580E; } 98 .owl-theme .owl-dots .owl-dot.active span, 99 .owl-theme .owl-dots .owl-dot:hover span, 100 .carousel-indicators .active, 101 .slick-dots li.slick-active button { 102 background: #AA580E; 103 opacity: 1; 104 } 105 .carousel-indicators li, .owl-theme .owl-dots .owl-dot span, 106 .slick-dots li button{ 107 background-color: #AA580E; 108 opacity: 0.5; 109 } 110 .fc-event .fc-title, .fc-event-container{ color: #AA580E !important; } 111 .fc-event{ color: #AA580E;}.h_btn:hover { 112 color: #1ED06C; 113 } 114 .searchbar .bg_btn { background-color: #1ED06C; } 115 .fc-event{ background-color: #1ED06C !important; border-color: #1ED06C !important; }#footer .footer-links.bg { background-color: #E2954F; }nav.navbar.bg { background-color: #0A921B; }nav.navbar.bg { background-image: url(undefined); background-position: center; background-repeat: repeat; }.navbar .dropdown-menu { background-color: #E4D8BB; }nav.navbar .c_text { color: #79DE66; } 116 .navbar-toggler.c_text{ border-color: #79DE66 !important; }#footer .footer.bg { background-color: rgba(47, 119, 75, 0.31); }#footer .footer.bg { background-image: url(https://static.neopse.com/assets/img/textures/elegant-grid.png?v=v1); background-position: center; background-repeat: repeat; }.breadcrumb.bg { background-color: rgb(226, 149, 79); }.breadcrumb.bg { background-image: url(undefined); background-position: center; background-repeat: repeat; }.navbar .dropdown-menu .c_text { color: #000000; }nav.navbar .dropdown-menu .h_text:hover { color: #6A372B; }#w_headline { background-color: #DDB32C; }#w_headline { background-image: url(undefined); background-position: center; background-repeat: repeat; }nav.navbar .h_text:hover { background-color: #2E9213; }#w_15t5fahcw .bg { background-color: #6CB457; }#w_15t5fahcw .bg { background: url(undefined); background-position: center; background-repeat: repeat; }#w_headline .c_btn { color: #974E09; border-color: #974E09; } 117 #w_headline .c_btn:hover { background-color: #974E09; } 118 #w_headline .carousel-indicators li { background-color: #974E09;opacity:0.5; } 119 #w_headline .carousel-indicators .active { background-color: #974E09;opacity: 1; }#w_jeddqk940 .bg { background-color: #E59B57; }#w_jeddqk940 .bg { background: url(undefined); background-position: center; background-repeat: repeat; }#w_yxd3d73s7 .bg { background-color: #DDB32C; }.breadcrumb.bg .c_text { color: #0D761A; }
119#w_15t5fahcw .c_btn { color: #1B670E; border-color: #1B670E; } 120 #w_15t5fahcw .c_btn:hover { background-color: #1B670E; } 121 #w_15t5fahcw .slick-dots li button { background-color: #1B670E;opacity:0.5; } 122 #w_15t5fahcw .slick-dots li.slick-active button { background-color: #1B670E; opacity: 1 !important;}#w_15t5fahcw .h_btn:hover { color: #1B670E; }#w_jeddqk940 .c_btn { color: #73350C; border-color: #73350C; } 123 #w_jeddqk940 .c_btn:hover { background-color: #73350C; } 124 #w_jeddqk940 .carousel-indicators li, 125 #w_jeddqk940 .slick-dots li button { background-color: #73350C;opacity:0.5; } 126 #w_jeddqk940 .carousel-indicators .active, #w_jeddqk940 .slick-dots li.slick-active button { background-color: #73350C;opacity: 1 !important; }#w_oneclick .c_text { color: #73350C; } 127 #w_oneclick .c_text:before { background-color: #73350C; }.breadcrumb.bg .c_title { color: #0D761A; } 128 .breadcrumb.bg .c_title:before { background-color: #0D761A; }#w_headline .c_title { color: #73350C !important; }#w_oneclick .c_title { color: #FFFFFF; } 129 #w_oneclick .c_title:before { background-color: #FFFFFF; }#w_15t5fahcw .c_title { color: #1B670E; } 130 #w_15t5fahcw .c_title.dark:before { background-color: #1B670E; }#w_iv5qv5fpw .c_title { color: #1B670E; }#w_jeddqk940 .c_title { color: #73350C; } 131 #w_jeddqk940 .c_title:before { background-color: #73350C; }#w_s8qbp9iw6 .c_title { color: #1B670E; } 132 #w_s8qbp9iw6 .c_title:before { background-color: #1B670E; }#w_xpeb29ff7 .c_title { color: #1B670E; }#w_yxd3d73s7 .c_title { color: #73350C; } 133 #w_yxd3d73s7 .c_title:before { background-color: #73350C; }#w_oneclick .c_title { display: none; }#w_oneclick .bg_text { background-color: #E59B57; }#w_15t5fahcw .bg_text { background-color: #DDB32C; }#w_s8qbp9iw6 .bg_text { background-color: rgb(229, 155, 87); }</style> 134 135 <meta property="og:url" content=""> 136 <meta property="og:type" content="website"> 137 <meta property="og:title" content="Commune de Trélivan"> 138 <meta property="og:description" content=""> 139 140
140<script src="/js/vendor/jquery-3.2.1.min.js"></script>
140 141 142 143 <!-- Matomo --> 144
144<script>tarteaucitron.user.matomoHost = '//matomo.neopse.com/';</script>
144 145 <!-- End Matomo Code --> 146</head> 147<body class="bg_body"> 148 149<header role="banner"><nav role="navigation" class="navbar navbar-fixed-left bg"> 150 <div class="ov"></div> 151 152 <div class="container"> 153 154 <!-- Logo --> 155 <div class="navbar-header"> 156 <a class="navbar-brand c_text" aria-label="Accueil" href="/fr/"> 157 <h1 class="img"> 158 <picture> 159 <source media="(max-width: 991.98px)" srcset="https://static.neopse.com/medias/p/2026/site/64/c9/83/64c98389e33357b95aa12aa5d0f4287837acb45e.png"> 160 <img role="img" src="https://static.neopse.com/medias/p/2026/site/64/c9/83/64c98389e33357b95aa12aa5d0f4287837acb45e.png" alt="Logo Commune de Trélivan" loading="eager"> 161 </picture> 162 <span>Commune de Trélivan</span> 163 </h1> 164 </a> 165 </div> 166 167 <!-- Mobile button --> 168 <button class="navbar-toggler c_text" 169 type="button" 170 data-toggle="collapse" 171 data-target="#navbar" 172 aria-controls="navbar" 173 aria-expanded="false" 174 aria-label="Toggle navigation"> 175 <span class="navbar-toggler-icon"> 176 <i class="material-icons notranslate">menu</i> 177 </span> 178 </button> 179 180 <div class="collapse navbar-collapse" id="navbar"> 181 <ul class="nav navbar-nav"> 182 183 <li class="nav-item dropdown"> 184 <a class="nav-link c_text h_text" href="/" role="button"> 185 <i class="material-icons">home</i> 186 </a> 187 </li> 188 189 190 <li class="nav-item dropdown"> 191 <a class="nav-link dropdown-toggle c_text h_text" href="#" id="menuDropdown1" role="button" 192 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 193 MUNICIPALITE 194 </a> 195 <div class="dropdown-menu mega-dropdown-menu row bg_text" aria-labelledby="menuDropdown1"> 196 197 <div class="divider"> 198 199 200 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 201 href="/fr/ct/1219285/contacts-805"> 202 Contacts 203 </a> 204 205 206 207 208 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 209 href="/fr/tb/1220767/conseil-municipal-79"> 210 Conseil municipal 211 </a> 212 213 214 215 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 216 href="/fr/rb/792352/commissions-municipales-41"> 217 Commissions municipales 218 </a> 219 220 221 222 223 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 224 href="/fr/rb/794809/services-municipaux-72"> 225 Services municipaux 226 </a> 227 228 229 230 </div> 231 <div class="divider"> 232 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 233 234 235 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 236 href="/fr/rp/1220455/comptes-rendus-480"> 237 Comptes rendus 238 </a> 239 240 241 242 243 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 244 href="/fr/pb/1220689/bulletins-municipaux-15"> 245 Bulletins municipaux 246 </a> 247 248 249 </div> 250 <div class="divider"> 251 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 252 253 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 254 href="/fr/rb/732266/intercommunalite-103"> 255 Intercommunalité 256 </a> 257 258 259 260 261 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 262 href="/fr/rb/861694/jumelage-22"> 263 Jumelage 264 </a> 265 266 267 268 </div> 269 <div class="divider"> 270 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 271 272 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 273 href="/fr/rb/732214/demarches-administratives-74"> 274 Démarches administratives 275 </a> 276 277 278 279 280 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 281 href="/fr/rb/931439/urbanisme-247"> 282 Urbanisme 283 </a> 284 285 286 287 </div> 288 289 </div> 290 </li> 291 292 293 <li class="nav-item dropdown"> 294 <a class="nav-link dropdown-toggle c_text h_text" href="#" id="menuDropdown2" role="button" 295 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 296 VIVRE A TRELIVAN 297 </a> 298 <div class="dropdown-menu mega-dropdown-menu row bg_text" aria-labelledby="menuDropdown2"> 299 300 <div class="divider"> 301 302 303 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 304 href="/fr/pr/1500696/espace-presse-219"> 305 Espace presse 306 </a> 307 308 309 </div> 310 <div class="divider"> 311 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 312 313 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 314 href="/fr/rb/1816102/dinamo"> 315 DINAMO 316 </a> 317 318 319 320 </div> 321 <div class="divider"> 322 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 323 324 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 325 href="/fr/rb/732344/tarifs-communaux-10"> 326 Tarifs communaux 327 </a> 328 329 330 331 332 333 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 334 href="/fr/rr/1220728/salles-a-louer-181"> 335 Salles à louer 336 </a> 337 338 339 </div> 340 <div class="divider"> 341 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 342 343 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 344 href="/fr/rb/732292/ccas-56"> 345 CCAS 346 </a> 347 348 349 350 351 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 352 href="/fr/rb/1465947/services-daide-a-domicile-3"> 353 Services d'aide à domicile 354 </a> 355 356 357 358 </div> 359 <div class="divider"> 360 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 361 362 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 363 href="/fr/rb/732422/culte-paroisse"> 364 Culte, paroisse 365 </a> 366 367 368 369 </div> 370 <div class="divider"> 371 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 372
372 373 374 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 375 href="/fr/he/1220299/annuaire-de-la-sante-395"> 376 Annuaire de la santé 377 </a> 378 379 380 </div> 381 <div class="divider"> 382 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 383 384 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 385 href="/fr/rb/752650/commerces-58"> 386 Commerces 387 </a> 388 389 390 391 392 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 393 href="/fr/rb/732435/environnement-76"> 394 Environnement 395 </a> 396 397 398 399 </div> 400 <div class="divider"> 401 <p class="dropdown-header-divider c_text" aria-hidden="true">--------------------</p> 402 403 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 404 href="/fr/rb/1990627/avis-denquete-publique-2"> 405 Avis d'enquête publique 406 </a> 407 408 409 410 </div> 411 <div class="divider"> 412 <p class="dropdown-header-divider c_text" aria-hidden="true">----------------------</p> 413 414 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 415 href="/fr/rb/2274690/securite-73"> 416 Sécurité 417 </a> 418 419 420 421 </div> 422 423 </div> 424 </li> 425 426 427 <li class="nav-item dropdown"> 428 <a class="nav-link dropdown-toggle c_text h_text" href="#" id="menuDropdown3" role="button" 429 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 430 ENFANCE, JEUNESSE 431 </a> 432 <div class="dropdown-menu mega-dropdown-menu row bg_text" aria-labelledby="menuDropdown3"> 433 434 <div class="divider"> 435 436 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 437 href="/fr/rb/732474/scolarite-22"> 438 Scolarité 439 </a> 440 441 442 443 444 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 445 href="/fr/rb/732513/centre-de-loisirs-38"> 446 Centre de loisirs 447 </a> 448 449 450 451 452 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 453 href="/fr/rb/750817/assistantes-maternelles-48"> 454 Assistantes maternelles 455 </a> 456 457 458 459 460 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 461 href="/fr/rb/752637/microcreche"> 462 Microcrèche 463 </a> 464 465 466 467 </div> 468 469 </div> 470 </li> 471 472 473 <li class="nav-item dropdown"> 474 <a class="nav-link dropdown-toggle c_text h_text" href="#" id="menuDropdown4" role="button" 475 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 476 SE DIVERTIR 477 </a> 478 <div class="dropdown-menu mega-dropdown-menu row bg_text" aria-labelledby="menuDropdown4"> 479 480 <div class="divider"> 481 482 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 483 href="/fr/rb/732383/bibliotheque-70"> 484 Bibliothèque 485 </a> 486 487 488 489 490 491 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 492 href="/fr/as/1220338/associations-42"> 493 Associations 494 </a> 495 496 497 498 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 499 href="/fr/rb/750843/restaurants-5"> 500 Restaurants 501 </a> 502 503 504 505 506 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 507 href="/fr/rb/795914/cinemas-2"> 508 Cinémas 509 </a> 510 511 512 513 514 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 515 href="/fr/rb/834069/theatre-des-jacobins"> 516 Théâtre des Jacobins 517 </a> 518 519 520 521 </div> 522 523 </div> 524 </li> 525 526 527 <li class="nav-item"> 528 <a class="nav-link c_text h_text" role="menuitem" href="/fr/lk/1219480/liens-85
5285">LIENS UTILES</a> 529 </li> 530 531 532 <li class="nav-item dropdown"> 533 <a class="nav-link dropdown-toggle c_text h_text" href="#" id="menuDropdown6" role="button" 534 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 535 VIE ECONOMIQUE 536 </a> 537 <div class="dropdown-menu mega-dropdown-menu row bg_text" aria-labelledby="menuDropdown6"> 538 539 <div class="divider"> 540 541 542 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 543 href="/fr/bu/1220377/artisans-et-entreprises"> 544 Artisans et entreprises 545 </a> 546 547 548 </div> 549 550 </div> 551 </li> 552 553 554 <li class="nav-item dropdown"> 555 <a class="nav-link dropdown-toggle c_text h_text" href="#" id="menuDropdown7" role="button" 556 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 557 ENTRE NOUS 558 </a> 559 <div class="dropdown-menu mega-dropdown-menu row bg_text" aria-labelledby="menuDropdown7"> 560 561 <div class="divider"> 562 563 564 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 565 href="/fr/qa/1220065/questions-reponses-394"> 566 Questions/Réponses 567 </a> 568 569 570 571 572 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 573 href="/fr/ad/1220611/petites-annonces-397"> 574 Petites annonces 575 </a> 576 577 578 579 580 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 581 href="/fr/cp/1220260/annonces-de-covoiturage-394"> 582 Annonces de covoiturage 583 </a> 584 585 586 </div> 587 588 </div> 589 </li> 590 591 592 593 </ul> 594 </div> 595 </div> 596</nav> 597</header> 598 599<main role="main"> 600 <div class="main home"> 601 <header class="intro bandeau bg header"> 602 <div class="ov"></div> 603 604 <!-- Search box with direct access --> 605 <div class="research-container"> 606 607 <div id="w_oneclick"> 608 <div class="keywords-container inamovible" id="w_oneclick"> 609 <div class="keyword"> 610 <a class="bg_text c_text bold-title" href="/fr/ct/1219285/contacts-805" > 611 <i class="material-icons notranslate mr-2 align-middle">email</i> 612 Contacts mairie 613 </a> 614 </div> 615 <div class="keyword"> 616 <a class="bg_text c_text bold-title" href="/fr/rp/1220455/comptes-rendus-480" > 617 <i class="material-icons notranslate mr-2 align-middle">import_contacts</i> 618 Compte rendus 619 </a> 620 </div> 621 <div class="keyword"> 622 <a class="bg_text c_text bold-title" href="/fr/rb/732617/cantine-30" > 623 <i class="material-icons notranslate mr-2 align-middle">local_dining</i> 624 Menu cantine école Jean Ferrat 625 </a> 626 </div> 627 <div class="keyword"> 628 <a class="bg_text c_text bold-title" href="/fr/rb/732513/centre-de-loisirs-38" > 629 <i class="material-icons notranslate mr-2 align-middle">sentiment_satisfied_alt</i> 630 Centre de loisirs 631 </a> 632 </div> 633 </div> 634 635 </div> 636 637 </div> 638 639 </header> 640 641 <div class="position-relative"> 642 <div id="w_headline"> 643 <div class="news bg" id="w_headline"> 644 <div class="ov"></div> 645 <h2 class="h2 d_title c_title position-relative">A la une</h2> 646 647 <div id="carouselIndicators" class="carousel slide" data-ride="carousel"> 648 <div class="carousel-inner"> 649 <div class="carousel-item c_text active"> 650 <div class="news--content"> 651 <h3 class="bold-title h4"><a href="/fr/nw/1219363/2391274/chemins-de-trelivan" >CHEMINS DE TRELIVAN</a></h3> 652 <p class="c_text">Circuits autour des étangs</p> 653 </div> 654 <div class="news--image" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/cf/9f/d1/cf9fd158c422faddf47c7194ab612c948335bc94.png?v=v1);"></div> 655 </div> 656 <div class="carousel-item c_text"> 657 <div class="news--content"> 658 <h3 class="bold-title h4"><a href="https://www.dinan-agglomeration.fr/Urbanisme-habitat-mobilite/Transports-et-mobilites/DINAMO/DINAMO!-Access" >DINAMO ACCESS'</a></h3> 659 <p class="c_text">
659transport à la demande, pour faciliter les déplacements des personnes en situation de handicap</p> 660 </div> 661 <div class="news--image" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/d1/96/5f/d1965fd16108ff88e7bc5a78adf73a8d7da98b57.png?v=v1);"></div> 662 </div> 663 </div> 664 665 <!-- Bullet navigation --> 666 <ol class="carousel-indicators"> 667 <li data-target="#carouselIndicators" data-slide-to="0" class="active"></li> 668 <li data-target="#carouselIndicators" data-slide-to="1"></li> 669 </ol> 670 </div> 671</div> 672 673 </div> 674 675 </div> 676 677 <div id="w_jeddqk940"> 678 <section class="bg flash-info"> 679 <div class="ov"></div> 680 <div class="container"> 681 682 <div class="title-container clearfix"> 683 <h2 class="title dark c_title d_title">Flash Infos</h2> 684 <a href="/fr/bn/1219792/flash-infos-456" 685 class="btn-outline btn-right c_btn h_btn" aria-label="Voir tout">Voir tout</a> 686 </div> 687 688 <div id="carousel--flashInfo" class="carousel slide" data-ride="carousel"> 689 <div class="carousel-inner"> 690 <div class="carousel-item active"> 691 <h3 class="card-title c_text h4">BIBLIOTHEQUE</h3> 692 <p class="c_text ckeditor_info">La liste des achats de livres du mois de Mai 2026 est disponible dans l'onglet :"Bibliothèque".</p> 693 </div> 694 <a class="carousel-item" 695 href="http://aVRIL" > 696 <h3 class="card-title c_text h4">CONSEILLERE NUMERIQUE</h3> 697 <p class="c_text ckeditor_info">Les permanences de la conseillère numérique ainsi que le programme sont indiqués sur la vignette ci-dessous, par un simple clic.</p> 698 </a> 699 </div> 700 701 <ol class="carousel-indicators"> 702 <li data-target="#carousel--flashInfo" data-slide-to="0" class="active"></li> 703 <li data-target="#carousel--flashInfo" data-slide-to="1"></li> 704 </ol> 705 </div> 706 </div> 707</section> 708 709 </div> 710 <div id="w_xjs1rj0m8"> 711 <section class="bg"> 712 <div class="ov"></div> 713 <div class="container"> 714 <div class="clearfix"> 715 <div class="title dark c_title d_title">METEO</div> 716 </div> 717 718 <div class="widget-container meteofrance" 719 data-htmlcode='<iframe id="widget_autocomplete_preview" width="300" height="150" frameborder="0" src="https://meteofrance.com/widget/prevision/223640##7BD685"> </iframe>'></div> 720 </div> 721</section> 722 723 </div> 724 <div id="w_15t5fahcw"> 725 <!-- Actualités --> 726<section class="bg actu"> 727 <div class="ov"></div> 728 729 <div class="container"> 730 <div class="title-container clearfix"> 731 <h2 class="title c_title d_title">Actualités</h2> 732 <a href="/fr/nw/1219363/actualites-867" class="btn-outline btn-right c_btn h_btn" aria-label="Voir tout">Voir tout</a> 733 </div> 734 735 <div class="carousel-3"> 736 <a href="/fr/nw/1219363/2998439/operation-argent-de-poc
736he-6" class="card card-img-top item bg_text" aria-label="Actualité: OPERATION ARGENT DE POCHE"> 737 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/ac/ff/b6/acffb690bd7508a9c286836c909441217dea321d.png?v=v1)" title="OPERATION ARGENT DE POCHE"></div> 738 <div class="card-body"> 739 <h3 class="card-title c_text h6">OPERATION ARGENT DE POCHE</h3> 740 <p class="card-text c_text"></p> 741 </div> 742 </a> 743 <a href="/fr/nw/1219363/1720838/octobre-rose-2026-4" class="card card-img-top item bg_text" aria-label="Actualité: OCTOBRE ROSE 2026"> 744 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/a6/2c/dd/a62cdd291005433f1fd447b72aa77cf9bea3de89.png?v=v1)" title="OCTOBRE ROSE 2026"></div> 745 <div class="card-body"> 746 <h3 class="card-title c_text h6">OCTOBRE ROSE 2026</h3> 747 <p class="card-text c_text"></p> 748 </div> 749 </a> 750 <a href="/fr/nw/1219363/327056/mission-locale" class="card card-img-top item bg_text" aria-label="Actualité: MISSION LOCALE"> 751 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/2d/b0/3b/2db03bf3cc61dd0b0828654b0595c200f8d16685.png?v=v1)" title="MISSION LOCALE"></div> 752 <div class="card-body"> 753 <h3 class="card-title c_text h6">MISSION LOCALE</h3> 754 <p class="card-text c_text">Programme SEPTEMBRE 2026</p> 755 </div> 756 </a> 757 <a href="/fr/nw/1219363/685934/espace-femmes-dinan" class="card card-img-top item bg_text" aria-label="Actualité: ESPACE FEMMES DINAN"> 758 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/87/87/4f/87874f238d69caa4c671241821bc0b06ea9b09f3.png?v=v1)" title="ESPACE FEMMES DINAN"></div> 759 <div class="card-body"> 760 <h3 class="card-title c_text h6">ESPACE FEMMES DINAN</h3> 761 <p class="card-text c_text">Programme SEPTEMBRE 2026</p> 762 </div> 763 </a> 764 <a href="/fr/nw/1219363/2873496/transport-scolaire-2026-2027-dinan-agglo" class="card card-img-top item bg_text" aria-label="Actualité: Transport scolaire 2026-2027 Dinan Agglo"> 765 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/f9/c6/b2/f9c6b22c716a820f2002028657b3e77912f33016.png?v=v1)" title="Transport scolaire 2026-2027 Dinan Agglo"></div> 766 <div class="card-body"> 767 <h3 class="card-title c_text h6">Transport scolaire 2026-2027 Dinan Agglo</h3> 768 <p class="card-text c_text"></p> 769 </div> 770 </a> 771 <a href="/fr/nw/1219363/2786435/circuits-pedestres-balises" class="card card-img-top item bg_text" aria-label="Actualité: CIRCUITS PEDESTRES BALISES"> 772 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/8b/41/34/8b41341065cc295972d40f2768f5bbdce21d3442.png?v=v1)" title="CIRCUITS PEDESTRES BALISES"></div> 773 <div class="card-body"> 774 <h3 class="card-title c_text h6">CIRCUITS PEDESTRES BALISES</h3> 775 <p class="card-text c_text"></p> 776 </div> 777 </a> 778 <a href="/fr/nw/1219363/2410852/nouveau-planning-de
778-collecte-pour-l-annee-2026" class="card card-img-top item bg_text" aria-label="Actualité: Nouveau planning de collecte pour l'année 2026"> 779 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/5a/74/e1/5a74e160d17fe4f47472170b4a0a80e9623536e6.png?v=v1)" title="Nouveau planning de collecte pour l'année 2026"></div> 780 <div class="card-body"> 781 <h3 class="card-title c_text h6">Nouveau planning de collecte pour l'année 2026</h3> 782 <p class="card-text c_text"></p> 783 </div> 784 </a> 785 <a href="/fr/nw/1219363/2496223/transport-ferroviaire" class="card card-img-top item bg_text" aria-label="Actualité: TRANSPORT FERROVIAIRE"> 786 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/23/1a/0a/231a0a766619329a576f84f87ccc01fb30308f77.png?v=v1)" title="TRANSPORT FERROVIAIRE"></div> 787 <div class="card-body"> 788 <h3 class="card-title c_text h6">TRANSPORT FERROVIAIRE</h3> 789 <p class="card-text c_text"></p> 790 </div> 791 </a> 792 <a href="/fr/nw/1219363/2412971/parc-naturel-regional-2" class="card card-img-top item bg_text" aria-label="Actualité: PARC NATUREL REGIONAL"> 793 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/7d/f0/af/7df0afc4b192853dbcee0e6e277d3ec2f1cb758e.png?v=v1)" title="PARC NATUREL REGIONAL"></div> 794 <div class="card-body"> 795 <h3 class="card-title c_text h6">PARC NATUREL REGIONAL</h3> 796 <p class="card-text c_text"></p> 797 </div> 798 </a> 799 <a href="/fr/nw/1219363/2391274/chemins-de-trelivan" class="card card-img-top item bg_text" aria-label="Actualité: CHEMINS DE TRELIVAN"> 800 <div class="card-button black width-ratio size-4-3" style="background-image:url(https://static.neopse.com/thumbs/p/2026/site/4d/fd/1e/4dfd1e2242dc07f235c573823f8394540ef900a6.png?v=v1)" title="CHEMINS DE TRELIVAN"></div> 801 <div class="card-body"> 802 <h3 class="card-title c_text h6">CHEMINS DE TRELIVAN</h3> 803 <p class="card-text c_text"></p> 804 </div> 805 </a> 806 </div> 807 </div> 808</section> 809 810 </div> 811 <div id="w_s8qbp9iw6"> 812 <section class="bg events"> 813 <div class="ov"></div> 814 <div class="container"> 815 816 <div class="title-container clearfix"> 817 <h2 class="title c_title d_title">Agenda</h2> 818 <a href="/fr/ev/1219402/agenda-862" class="btn-outline btn-right c_btn h_btn" aria-label="Voir tout">Voir tout</a> 819 </div> 820 821 <div class="eventCarousel1"> 822 </div> 823 </div> 824</section> 825 826 </div> 827 <div id="w_yxd3d73s7"> 828 <section class="bg background-offset"> 829 <div class="ov"></div> 830 <div class="container"> 831 <div class="title-container clearfix"> 832 <h2 class="title c_title d_title">Galerie de photos</h2> 833 <a href="/fr/pc/1219948/galeries-de-photos-452" class="btn-outline btn-right c_btn h_btn" aria-label="Voir tout">Voir tout</a> 834 </div> 835 836 <div class="text-center"> 837 <iframe src="https://www.casimages.com/ext/shw/1OfxbxnN4nheA1N" width="100%" height="600" scrolling="no" frameborder="0" allowtransparency="true"></iframe> 838 </div> 839 </div> 840</section> 841 842 </div> 843 844 845 </div> 846 </main> 847 848<div class="main"> 849 850 <div id="footer"> 851 <footer role="contentinfo" class="footer footer1 bg"> 852 <div class="ov"></div> 853 <div class="container d-flex flex-wrap"> 854 <div class="footer-container"> 855 <h2 class="title light c_title d_title btn-line"><a 856 href="/fr/ct/1219285/contacts-805">Contacts</a></h2> 857<div class="footer-box"> 858 <div class="contact c_text"> 859 <p class="font-weight-bold mb-0">Commune de Trélivan</p> 860 <p class="mb-0">1 rue des Clairettes</p> 861 <p class="mb-0">22100 Trélivan - FRANCE</p> 862 <p class="mb-0"><a href="tel:+33296391631">+33 2 96 39 16 31</a> 863 </p> 864 <p class="mb-0"><a href="#" data-toggle="modal" data-target="#contactFormContactFooter" class="btn-outline c_btn h_btn">Contact par formulaire</a> 865 </p> 866 867 </div> 868</div> 869 870 871 <div class="social-media"> 872 <ul class="c_text"> 873 </ul> 874</div> 875 876 877 </div> 878 </div> 879 </footer> 880 881 <section class="bg footer-links footer2"> 882 <div class="ov"></div> 883 <div class="container d-flex flex-wrap"> 884 <div class="footer-container"> 885 <h2 class="title-container clearfix mb-3">
886 <a href="/fr/lk/1219480/liens-855" 887 class="title c_title d_title">Liens</a> 888 </h2> 889 <div class="links c_text row linksCustom"> 890 <p class="col-8 col-md-8"> 891 <a href="http://www.dinan-agglomeration.fr" target="_blank">DINAN AGGLO</a> 892 </p> 893 <p class="col-8 col-md-8"> 894 <a href="http://www.emeraude-cinemas.fr" target="_blank">CINEMAS DINAN</a> 895 </p> 896 <p class="col-8 col-md-8"> 897 <a href="https://www.cotesdarmor.fr" target="_blank">COTES D'ARMOR</a> 898 </p> 899 <p class="col-8 col-md-8"> 900 <a href="http://www.bretagne.bzh" target="_blank">REGION BRETAGNE</a> 901 </p> 902 <p class="col-8 col-md-8"> 903 <a href="https://www.service-public.fr/" target="_blank">DEMARCHES ADMINISTRATIVES SUR Service-public.fr</a> 904 </p> 905 </div> 906</div> 907 908 909 910 <div class="footer-container"> 911 <h2 class="title c_title d_title">Jumelages</h2> 912 <div class="footer-box twinning"> 913 <div class="d-block"> 914 <img role="img" src="/images/default-image.jpg" 915 alt="Image par défaut" class="mr-2"> 916 <p class="d-inline-block c_text">MONTGAILHARD (ARIEGE)</p> 917 </div> 918 </div> 919 </div> 920 921 922 </div> 923 <div class="container d-flex flex-wrap" style="justify-content:center;"> 924 <p class="mt-0 mb-0 c_text"><a href="/fr/li/1219324/mentions-legales-905">Mentions légales</a> 925</p> 926 <span class="c_text" style="margin: 0 8px;">-</span> 927 <p class="mt-0 mb-0 c_text"><a href="/fr/1219324/politique-confidentialite">Politique de confidentialité</a> 928</p> 929 <span class="c_text" style="margin: 0 8px;">-</span> 930 <p class="mt-0 mb-0 c_text"><a href="/fr/accessibilite">Accessibilité</a> 931</p> 932 <span class="c_text" style="margin: 0 8px;">-</span> 933 934 <p class="mt-0 mb-0 c_text"><a href="/fr/sm/52668/plan-du-site-1" >Plan du site</a></p> 935 <span class="c_text" style="margin: 0 8px;">-</span> 936 <p class="mt-0 mb-0 c_text"><a href="#tarteaucitron">Gestion des cookies</a></p> 937 </div> 938 </section> 939</div> 940 941<div class="modal fade" id="contactFormContactFooter" tabindex="-1" role="dialog" aria-labelledby="modalFooter-label" aria-hidden="true" 942 style="color:initial;-webkit-transform: translateZ(0);transform: translateZ(0);"> 943 <div class="modal-dialog" role="document"> 944 <div class="modal-content"> 945 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 946 <span aria-hidden="true">×</span> 947 </button> 948 949 <div class="modal-header bg_bloc text_bloc"> 950 <h4 id="modalFooter-label" class="modal-title font-weight-bold dark text_bloc">CONTACT MAIRIE</h4> 951 </div> 952 <form id="contactFormFooter" action="/formMdContact" method="post" 953 novalidate enctype="multipart/form-data"> 954 <div class="modal-body pb-0"> 955 956 <div class="form-group position-relative"> 957 <div><label for="1_input">Votre nom</label><span>*</span></div> 958 <input type="text" name="1_input" class="form-control" id="1_input" aria-describedby="1_inputHelp"> 959 <span class="form-error requirements" id="1_input-error" role="alert">Ce champ est obligatoire</span> 960</div> <div class="form-group position-relative"> 961 <div><label for="2_input">Votre prénom</label><span>*</span></div> 962 <input type="text" name="2_input" class="form-control" id="2_input" aria-describedby="2_inputHelp"> 963 <span class="form-error requirements" id="2_input-error" role="alert">Ce champ est obligatoire</span> 964</div> <div class="form-group"> 965 <div><label for="3_email">Votre adresse mail</label><span>*</span></div> 966 <input type="email" name="3_email" class="form-control" id="3_email" 967 aria-describedby="Votre adresse mail">
968 <span class="form-error requirements" id="3_email-error" role="alert">Ce champ est obligatoire</span> 969</div> <div class="form-group position-relative"> 970 <div><label for="4_input">Sujet du message</label><span>*</span></div> 971 <input type="text" name="4_input" class="form-control" id="4_input" aria-describedby="4_inputHelp"> 972 <span class="form-error requirements" id="4_input-error" role="alert">Ce champ est obligatoire</span> 973</div> <div class="form-group position-relative"> 974 <div><label for="5_textarea">Votre message</label><span>*</span> 975 </div> 976 <textarea name="5_textarea" class="form-control pl-0" id="5_textarea" rows="3"></textarea> 977 <span class="form-error requirements" id="5_textarea-error" role="alert">Ce champ est obligatoire</span> 978</div> <div class="field-wrapper"> 979 <div><label for="6_email" class="font-weight-bold mr-1">Pièces jointes (facultatif)</label><span></span></div> 980 <div class="d-flex align-items-center"> 981 <div class="form-group col-10 col-md-10 px-0 mb-0"> 982 <div class="upload-btn-wrapper"> 983 <button class="btn-file">JPG/PNG/PDF - 5Mo max.</button> 984 <input type="file" name="6_file" id="6_file" accept="application/pdf,image/jpeg,image/png" aria-label="Télécharger des documents"> 985 </div> 986 </div> 987 </div> 988 989 <div> 990 <ul class="listFiles"> 991 992 </ul> 993 </div> 994 <span class="form-error requirements" id="6_file-error" role="alert">Ce champ est obligatoire</span> 995</div> 996 997 <div class="form-group"> 998 <div class="h-recaptcha m-auto d-inline-block"></div> 999 <div class="form-error requirements" id="h-captcha-response-error" role="alert">Ce champ est obligatoire 1000 </div> 1001</div> </div> 1002 <div class="modal-footer"> 1003 <button id="formContactForm" type="submit" class="btn-outline btn-right c_btn h_btn formContactForm">ENVOYER</button> 1004 </div> 1005 <div class="m-3"> 1006 1007 </div> 1008 </form> 1009 1010 <div id="messageSendedFormContactFooter" class="form-message-sent" style="display: none"> 1011 <p role="status">Le message a bien été envoyé à son destinataire. Merci.</p> 1012 </div> 1013 </div> 1014 </div> 1015</div> 1016 1017 <div class="footer-bottom" style="position: relative;"> 1018 <div class="container"> 1019 <p> 1020 1021 <a href="https://reseaudescommunes.fr/?utm_source=rdcclients&utm_medium=footerlink" target="_blank"> 1022 <img role="img" src="/images/rdc-logo-footer-2.png" alt="Logo Réseau des Communes" class="img-fluid"> 1023 Site créé en partenariat avec Réseau des Communes 1024 </a> 1025 </p> 1026 </div> 1027</div> 1028 <div class="modal fade pdfModal" id="pdfModal" tabindex="-1" role="dialog" aria-label="Prévisualisation du PDF" aria-hidden="true"> 1029 <div class="modal-dialog" role="document"> 1030 <div class="modal-content"> 1031 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 1032 <span aria-hidden="true">×</span> 1033 </button> 1034 1035 <embed type="application/pdf"> 1036 </div> 1037 </div> 1038</div> 1039 1040 1041</div> 1042 1043 <div id="previewModalImage" class="modal"> 1044 1045 <!-- The Close Button --> 1046 <span id="closePreviewImage" class="close">×</span> 1047 1048 <!-- Navigation Buttons --> 1049 <a id="prevImage" class="modal-nav prev" href="javascript:void(0)">❮</a> 1050 <a id="nextImage" class="modal-nav next" href="javascript:void(0)">❯</a> 1051 1052 <!-- Image Counter --> 1053 <div id="imageCounter" class="image-counter"></div> 1054 1055 <!-- Modal Content (The Image) --> 1056 <div id="containerPreviewImage"><img role="img" class="modal-content" alt=""></div> 1057 1058 <!-- Modal Caption (Image Text) --> 1059 <div id="captionPreviewImage"></div> 1060 </div> 1061 1062
1062<script> 1063 (function() { 1064 // Get the modal elements 1065 const modal = document.getElementById('previewModalImage'); 1066 const modalImg = modal.querySelector('img'); 1067 const captionText = document.getElementById('captionPreviewImage'); 1068 const closePreviewImage = document.getElementById('closePreviewImage'); 1069 const prevBtn = document.getElementById('prevImage'); 1070 const nextBtn = document.getElementById('nextImage'); 1071 const imageCounter = document.getElementById('imageCounter'); 1072 1073 let currentImages = []; 1074 let currentIndex = 0; 1075 1076 // Helper function to check if element is visible 1077 function isVisible(element) { 1078 return element && element.offsetParent !== null; 1079 } 1080 1081 // Helper function to toggle element visibility 1082 function toggleElement(element, show) { 1083 if (element) { 1084 element.style.display = show ? 'block' : 'none'; 1085 } 1086 } 1087 1088 // Function to update the modal with a specific image 1089 function updateModal(index) { 1090 if (currentImages.length === 0) return; 1091 1092 currentIndex = index; 1093 const img = currentImages[currentIndex]; 1094 modalImg.setAttribute('src', img.src); 1095 modalImg.setAttribute('alt', img.alt || ''); 1096 captionText.innerHTML = img.alt || ''; 1097 1098 // Update counter 1099 imageCounter.textContent = (currentIndex + 1) + ' / ' + currentImages.length; 1100 1101 // Show/hide navigation buttons 1102 const showNav = currentImages.length > 1; 1103 toggleElement(prevBtn, showNav); 1104 toggleElement(nextBtn, showNav); 1105 toggleElement(imageCounter, showNav); 1106 } 1107 1108 // Function to show next image 1109 function showNext() { 1110 if (currentImages.length === 0) return; 1111 currentIndex = (currentIndex + 1) % currentImages.length; 1112 updateModal(currentIndex); 1113 } 1114 1115 // Function to show previous image 1116 function showPrev() { 1117 if (currentImages.length === 0) return; 1118 currentIndex = (currentIndex - 1 + currentImages.length) % currentImages.length; 1119 updateModal(currentIndex); 1120 } 1121 1122 // Helper function to find closest ancestor with class 1123 function closest(element, selector) { 1124 if (!element) return null; 1125 1126 // For class selector (e.g., '.splide__slide') 1127 if (selector.startsWith('.')) { 1128 const className = selector.slice(1); 1129 let current = element; 1130 while (current && current !== document) { 1131 if (current.classList && current.classList.contains(className)) { 1132 return current; 1133 } 1134 current = current.parentElement; 1135 } 1136 } 1137 return null; 1138 } 1139 1140 // When clicking on an image 1141 document.addEventListener('click', function(e) { 1142 const target = e.target; 1143 // Check if clicked element is an image with class .img or .main-img inside .splide 1144 if (target.tagName === 'IMG' && 1145 (target.classList.contains('img') || target.classList.contains('main-img')) && 1146 closest(target, '.splide')) { 1147 1148 // Find the clicked image's parent slide 1149 const clickedSlide = closest(target, '.splide__slide'); 1150 if (!clickedSlide) return; 1151 1152 // Find the list that contains this slide 1153 const splideList = closest(clickedSlide, '.splide__list'); 1154 if (!splideList) return; 1155 1156 // Get all slides from this specific list 1157 const allSlides = splideList.querySelectorAll('.splide__slide'); 1158 1159 // Get all images from these slides only, deduplicating by src 1160 // (Splide duplicates slides in loop mode, so we need to filter duplicates) 1161 currentImages = []; 1162 const seenSrcs = new Set(); 1163 const clickedSrc = target.src; 1164
1165 allSlides.forEach(function(slide) { 1166 const slideImg = slide.querySelector('.img, .main-img'); 1167 if (slideImg) { 1168 const imgSrc = slideImg.src; 1169 // Only add if we haven't seen this src before 1170 if (!seenSrcs.has(imgSrc)) { 1171 seenSrcs.add(imgSrc); 1172 currentImages.push(slideImg); 1173 } 1174 } 1175 }); 1176 1177 // Find the index of the clicked image by src (to handle duplicates) 1178 currentIndex = currentImages.findIndex(function(img) { 1179 return img.src === clickedSrc; 1180 }); 1181 1182 if (currentIndex === -1) { 1183 currentIndex = 0; // Fallback to first image 1184 } 1185 1186 // Update and show modal 1187 updateModal(currentIndex); 1188 modal.style.display = 'block'; 1189 } 1190 }); 1191 1192 // Navigation button handlers 1193 if (nextBtn) { 1194 nextBtn.addEventListener('click', function (e) { 1195 e.preventDefault(); 1196 e.stopPropagation(); 1197 showNext(); 1198 }); 1199 } 1200 1201 if (prevBtn) { 1202 prevBtn.addEventListener('click', function (e) { 1203 e.preventDefault(); 1204 e.stopPropagation(); 1205 showPrev(); 1206 }); 1207 } 1208 1209 // Keyboard navigation 1210 document.addEventListener('keydown', function (e) { 1211 // Check if modal is visible by checking display style 1212 const isModalVisible = modal.style.display !== 'none' && 1213 (modal.style.display === 'block' || 1214 window.getComputedStyle(modal).display !== 'none'); 1215 1216 if (isModalVisible) { 1217 if (e.key === 'ArrowRight' || e.keyCode === 39) { 1218 e.preventDefault(); 1219 showNext(); 1220 } else if (e.key === 'ArrowLeft' || e.keyCode === 37) { 1221 e.preventDefault(); 1222 showPrev(); 1223 } else if (e.key === 'Escape' || e.keyCode === 27) { 1224 e.preventDefault(); 1225 e.stopPropagation(); 1226 modal.style.display = 'none'; 1227 } 1228 } 1229 }); 1230 1231 // When the user clicks on <span> (x), close the modal 1232 if (closePreviewImage) { 1233 closePreviewImage.addEventListener('click', function () { 1234 modal.style.display = 'none'; 1235 }); 1236 } 1237 1238 // Close modal when clicking outside the image 1239 modal.addEventListener('click', function (e) { 1240 if (e.target === modal) { 1241 modal.style.display = 'none'; 1242 } 1243 }); 1244 })(); 1245 </script>
1245 1246 1247
1247<script src="/js/vendor/popper.min.js"></script>
1247 1248
1248<script src="/js/vendor/bootstrap.min.js"></script>
1248 1249 <!-- Carousel --> 1250
1250<script src='/dist/owlcarousel/js/owl.carousel.min.js'></script>
1250 1251
1251<script src='/dist/owlcarousel/js/owl.linked.js'></script>
1251 1252
1252<script src='/dist/slick/slick.js'></script>
1252 1253 1254
1254<script src="/lib/splide-4.0.1/js/splide.min.js"></script>
1254 1255
1255<script src="/lib/splide-4.0.1/extensions/autoscroll/js/splide-extension-auto-scroll.min.js"></script>
1255 1256 1257 1258
1258<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>
1258 1259 1260 <!-- Custom JS --> 1261
1261<script src="/js/shared.js?v1"></script>
1261 1262
1262<script src="/tpl/2/js/main.js"></script>
1262 1263
1263<script src="/lib/chartjs/Chart.js"></script>
1263 1264
1264<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
1264 1265 1266
1266<script type="text/javascript"> 1267 1268 tarteaucitron.user.matomoId = 6; 1269 (tarteaucitron.job = tarteaucitron.job || []).push('matomohightrack'); 1270 1271 1272 (tarteaucitron.job = tarteaucitron.job || []).push('youtube'); 1273 (tarteaucitron.job = tarteaucitron.job || []).push('dailymotion'); 1274 (tarteaucitron.job = tarteaucitron.job || []).push('vimeo'); 1275 (tarteaucitron.job = tarteaucitron.job || []).push('othervideo'); 1276 1277 </script>
1277 1278 1279
1279<script> 1280 (function(i,s,o,g,r,a,m){i['InstanaEumObject']=r;i[r]=i[r]||function(){ 1281 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 1282 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 1283 })(window,document,'script','//eum.instana.io/eum.min.js','ineum'); 1284 ineum('reportingUrl', 'https://eum-eu-west-1.instana.io'); 1285 ineum('apiKey', '9yG9cnlKTcS4le-zMVtBJA'); 1286 1287 // set the name of a page on which this load/errors/calls happened 1288 ineum('page', 'front-site'); 1289 </script>
1289 1290 1291
1291<script src="https://js.hcaptcha.com/1/api.js?hl=fr&onload=CaptchaCallback&render=explicit" async defer></script>
1291 1292 1293
1293<script type="text/javascript"> 1294 var CaptchaCallback = function () { 1295 $('.h-recaptcha').each(function (index, el) { 1296 hcaptcha.render(el, {'sitekey': 'f5095cfb-139b-47da-88e2-f0d2e7485392'}); 1297 }); 1298 }; 1299 </script>
1299 1300 1301
1301<script> 1302 $(document).ready(function () { 1303 1304 $('.selectpicker').selectpicker(); 1305 1306 // Smooth scroll 1307 $("a[href*='#']:not([href='#'])").click(function () { 1308 if (location.hostname == this.hostname && this.pathname.replace(/^\//, "") == location.pathname.replace(/^\//, "")) { 1309 var anchor = $(this.hash); 1310 anchor = anchor.length ? anchor : $("[name=" + this.hash.slice(1) + "]"); 1311 1312 if (anchor.length) { 1313 $("html, body").animate({scrollTop: anchor.offset().top - 90}, 1500); 1314 } 1315 } 1316 }); 1317 1318 var input = $('input[type=file]'); 1319 1320 input.on('change', function () { 1321 var list = $(this).parent().parent().parent().parent().find($('.listFiles')); 1322 list.empty(); 1323 1324 for (var x = 0; x < this.files.length; x++) { 1325 var newFile = '<li>Fichier joint : ' + this.files[x].name + ' ('+humanFileSize(this.files[x].size)+')</li>'; 1326// li.innerHTML = 'File ' + (x + 1) + ': ' + input.files[x].name; 1327 list.append(newFile); 1328 } 1329 }); 1330 1331 $('.form-error').hide(); 1332 $('#contactFormFooter').submit(function (e) { 1333 let form = $(this); 1334 1335 $.ajax({ 1336 type: "POST", 1337 url: form.attr('action'), 1338 data: new FormData(form[0]), 1339 contentType: false, 1340 processData: false, 1341 beforeSend: function () { 1342 form.find('.form-error').hide(); 1343 $('.formContactForm').attr('disabled', true); 1344 }, 1345 success: function (response) { 1346 hcaptcha.reset(); 1347 1348 if (response.status === 'KO') { 1349 let errors = response.errors; 1350 for (let index in errors) { 1351 if (errors.hasOwnProperty(index)) { 1352 let attr = errors[index]; 1353 let error = attr[Object.keys(attr)[0]]; 1354 form.find('#' + index + '-error').text(error).show(); 1355 } 1356 } 1357 } 1358 else { 1359 1360 $('#contactFormFooter').css('display', 'none'); 1361 $('#messageSendedFormContactFooter').css('display', ''); 1362 form[0].reset(); 1363 } 1364 }, 1365 complete: function () { 1366 1367 $('.formContactForm').removeAttr('disabled'); 1368 } 1369 }); 1370 1371 return false; 1372 }); 1373 1374 $('#contactFormContactFooter').on('hidden.bs.modal', function () { 1375 $('#contactFormFooter')[0].reset(); 1376 1377 $('#contactFormFooter').css('display', ''); 1378 1379 $('#messageSendedFormContactFooter').css('display', 'none'); 1380 1381 $('.form-error').hide(); 1382 1383 $('.listFiles').empty(); 1384 1385 hcaptcha.reset(); 1386 }); 1387 }); 1388 1389 function humanFileSize(size) { 1390 var i = Math.floor(Math.log(size) / Math.log(1024)); 1391 return ( size / Math.pow(1024, i) ).toFixed(1) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; 1392 } 1393 </script>
1393 1394 1395
1395<script> 1396 $(function () { 1397 1398 1399 var numberAlerts = false; 1400 1401 var allAlerts = $('#alertsModal').find($('.alertsInfo')); 1402 1403 numberAlerts = allAlerts.length; 1404 1405 allAlerts.each(function (index) { 1406 1407 if (!sessionStorage.getItem("_nps_cookie_accept_alerts" + $(this).attr('data-id') + "")) { 1408 1409 if(index == 0){ 1410 $('#header'+$(this).attr('data-id')+'').removeClass('d-none'); 1411 } 1412 1413 $('#alertsModal').modal('show'); 1414 } else { 1415 $(this).remove(); 1416 $('#header'+$(this).attr('data-id')+'').remove(); 1417 numberAlerts = numberAlerts - 1; 1418 setActiveAndDecrementNumber(); 1419 } 1420 1421 }); 1422 1423 $('.acceptCookiesAlerts').on('click', function (e) { 1424 e.preventDefault(); 1425 1426 var currentDataId = $(this).attr('data-id'); 1427 1428 sessionStorage.setItem('_nps_cookie_accept_alerts' + currentDataId + '', '1'); 1429 1430 numberAlerts = numberAlerts - 1; 1431 1432 var currentParentNode = $(this).parent().parent().parent(); 1433 1434 currentParentNode.removeClass('active'); 1435 $('#header'+currentDataId+'').remove(); 1436 currentParentNode.remove(); 1437
1438 setActiveAndDecrementNumber(); 1439 1440 setTitle(); 1441 }); 1442 1443 function setActiveAndDecrementNumber() { 1444 var newListOfAlerts = $('#alertsModal').find($('.alertsInfo')); 1445 1446 newListOfAlerts.each(function (index, e) { 1447 if (index == 0) { 1448 $(this).addClass('active'); 1449 $('#header'+$(this).attr('data-id')+'').removeClass('d-none'); 1450 } 1451 }); 1452 1453 if (numberAlerts == 0) { 1454 $('#alertsModal').modal('hide'); 1455 } 1456 } 1457 1458 1459 1460 var currentColorControl = '#212529'; 1461 1462 $('#controlPrev').css('color', 'initial !important'); 1463 $('#controlNext').css('color', 'initial !important'); 1464 1465 $('#controlNext').on('click',function(){ 1466 setTimeout(function(){ 1467 setTitle(); 1468 }, 1000); 1469 }); 1470 1471 $('#controlPrev').on('click',function(){ 1472 setTimeout(function(){ 1473 setTitle(); 1474 }, 1000); 1475 }); 1476 1477 $('#controlPrev').on('mouseover', function () { 1478 1479 $(this).css('color', 'initial !important'); 1480 }); 1481 1482 $('#controlNext').on('mouseover', function () { 1483 1484 $(this).css('color', 'initial !important'); 1485 }); 1486 1487 function setTitle(){ 1488 $('.titleHeaderAlerts').addClass('d-none'); 1489 var currentId = $('.carousel-item.active').attr('data-id'); 1490 $('#header'+currentId+'').removeClass('d-none'); 1491 } 1492 }); 1493 </script>
1493 1494 1495
1495<script type="text/javascript"> 1496 (tarteaucitron.job = tarteaucitron.job || []).push('meteofrance'); 1497 (tarteaucitron.job = tarteaucitron.job || []).push('mymeteo'); 1498 </script>
1498 1499</body> 1500</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.