Uri: https%3A%2F%2Fculturelatuque.com%2Fcategories-evenements%2Fmagie
Page name: Magie | Programmation | Culture La Tuque
Edit | BackDate Scraped: 2026-04-25 18:13:02 -0400
Last Successful Refresh: 2026-04-25 18:13:02 -0400
Created: 2025-06-20 01:22:30 -0400
Updated: 2026-04-25 18:13:02 -0400
HTTP Response Code: 200
Html:
<!DOCTYPE html><!-- Last Published: Thu Apr 23 2026 18:22:33 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="culturelatuque.com" data-wf-page="6836826db53a37e1a776e731" data-wf-site="67ff26d3c9b287a9d681f229" data-wf-intellimize-customer-id="117601192" lang="en" data-wf-collection="6836826cb53a37e1a776e6d5" data-wf-item-slug="magie"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Magie | Programmation | Culture La Tuque</title><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/css/ccfl-1.webflow.shared.5a00ae718.css" rel="stylesheet" type="text/css" integrity="sha384-WgCucY/kI5vbOnisvM+3PPlhPCyetJ+RHzQBpkNgQ2nJF8YHfroxgNiUC18U5SyL" crossorigin="anonymous"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/><script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script><script type="text/javascript">
WebFont.load({ google: { families: ["Inconsolata:400,700"] }});
</script><script type="text/javascript">
!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);
</script><link href="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/67ff2a681d4da1045cf4a1c1_ccfl_oeil_32px.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/67ff2a6d2c5a366429cb8b34_ccfl_oeil_256px.png" rel="apple-touch-icon"/><style>
.anti-flicker, .anti-flicker * {visibility: hidden !important; opacity: 0 !important;}
</style><style>
[data-wf-hidden-variation], [data-wf-hidden-variation] * {
display: none !important;
}
</style><style>
.w-webflow-badge{
display:none !important;
}
</style>
<script>
(() => {
const YEAR = String(new Date().getFullYear());
const YEAR_AFTER_COPY = /(©\s*)\d{4}/;
// Efficient: XPath returns only text nodes containing "©" (not every text node on the page)
function patchCopyrightYear(scope) {
if (!scope) return 0;
const xp =
".//text()[contains(., '©') and not(ancestor::script) and not(ancestor::style) and not(ancestor::noscript)]";
const snap = document.evaluate(xp, scope, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
let patched = 0;
for (let i = 0; i < snap.snapshotLength; i++) {
const tn = snap.snapshotItem(i); // Text node
const s = tn.nodeValue;
if (!s || s.indexOf("©") === -1) continue;
if (!YEAR_AFTER_COPY.test(s)) continue;
const next = s.replace(YEAR_AFTER_COPY, `$1${YEAR}`);
if (next !== s) {
tn.nodeValue = next;
patched++;
}
}
return patched;
}
function run() {
// 1) Inner pages: footer is present
const footer = document.querySelector("footer, [role='contentinfo']");
if (patchCopyrightYear(footer)) return;
// 2) Homepage variant: often not a semantic <footer>, so target the DOM tail first
const tail = document.body.lastElementChild || document.body;
if (patchCopyrightYear(tail)) return;
// 3) Last resort (still only touches nodes containing "©")
patchCopyrightYear(document.body);
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", run, { once: true });
} else {
run();
}
})();
</script>
<!-- Meta Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '936530161718079');
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=936530161718079&ev=PageView&noscript=1"
/></noscript>
<!-- End Meta Pixel Code -->
<!-- Hotjar Tracking Code for Site web -->
<script>
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:6465582,hjsv:6};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
</script><script type="text/javascript">
window.__WEBFLOW_CURRENCY_SETTINGS = {"currencyCode":"USD","symbol":"$","decimal":".","fractionDigits":2,"group":",","template":"{{wf {\"path\":\"symbol\",\"type\":\"PlainText\"} }} {{wf {\"path\":\"amount\",\"type\":\"CommercePrice\"} }} {{wf {\"path\":\"currencyCode\",\"type\":\"PlainText\"} }}","hideDecimalForWholeNumbers":false};
</script></head><body>
<div data-w-id="0137f386-fe09-5d7a-a2a9-df3173fccc9a" class="top-bar-wrapper">
<div class="top-bar-padding">
<div class="top-bar-flex space-between">
<div class="mg-right-24px mg-bt-16px">
<div class="text-200 list">Offre d'emploi : Directrice/Directeur des événements</div>
</div>
<a href="https://culturelatuque.com/actualites/offre-dempoi-directrice-directeur-aux-evenements" data-w-id="0137f386-fe09-5d7a-a2a9-df3173fccca1" target="_blank" class="link-wrapper color-neutral-800 alert-bar-no-border w-inline-block">
<div class="flex align-center alert-bar-no-border">
<div class="text-200 bold text-uppercase">En savoir plus</div>
<div class="line-square-icon diagonal-arrow-right icon-size-20px"></div>
</div>
</a></div>
<div data-w-id="0137f386-fe09-5d7a-a2a9-df3173fccca7" class="line-square-icon top-bar-close-icon"></div>
</div>
</div>
<div class="page-wrapper">
<div data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb68" data-animation="over-left" data-collapse="all" data-duration="400" data-easing="ease" data-easing2="ease" role="banner" class="header-wrapper w-nav">
<div class="container-default container-header w-container">
<div class="header-content-wrapper">
<div><a href="/" class="header-logo-link w-nav-brand"><img src="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/683685ca8e715b078ba9c7ae_OEIL%20-%20Blanc.svg" height="56" alt=""/></a></div>
<div><a href="/programmation" class="cart-button">Programmation</a>
<div data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb6e" class="full-page-menu-btn-wrapper w-nav-button">
<div class="full-page-menu-dot top-left"></div>
<div class="full-page-menu-dot top-right"></div>
<div class="full-page-menu-dot bottom-left"></div>
<div class="full-page-menu-dot bottom-right"></div>
</div>
</div>
</div>
<div class="full-page-menu-wrapper">
<div class="full-page-menu-bg-light"></div>
<div class="full-page-menu-bg-dark"></div>
<div class="full-page-menu-content-container">
<div class="full-page-menu-title-container">
<div class="display-1 mg-bottom-56px">Des étoiles dans les yeux!</div>
<div id="w-node-b63d8acd-2e95-8948-9ffd-6aac855dbb7a-855dbb68" class="social-square-links-container"><a href="https://www.facebook.com/complexeculturelfelixleclerc/" target="_blank" class="social-icon-square w-inline-block">
<div class="social-icon-font"></div>
</a><a href="https://www.instagram.com/complexeculturelfelixleclerc/" target="_blank" class="social-icon-square w-inline-block">
<div class="social-icon-font"></div>
</a><a href="https://www.tiktok.com/@culturelatuque" target="_blank" class="social-icon-square w-inline-block">
<div class="social-icon-font"></div>
</a><a href="https://www.youtube.com/c/ComplexeMultim%C3%A9dia/streams" target="_blank" class="social-icon-square w-inline-block">
<div class="social-icon-font"></div>
</a></div>
</div>
<ul role="list" class="full-page-menu-list">
<li data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb8c" class="full-page-menu-list-item"><a href="/complexe-culturel-felix-leclerc" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4 mobile-nav-links-centering">Complexe Culturel Félix-Leclerc</div>
</a></li>
<li data-w-id="fbf26df9-12a4-659b-92c8-fd257d251cd0" class="full-page-menu-list-item"><a href="/complexe-multimedia" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4">Complexe Multimédia</div>
</a></li>
<li data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb90" class="full-page-menu-list-item"><a href="/centre-des-congres" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4">Centre des Congrès</div>
</a></li>
<li data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb94" class="full-page-menu-list-item"><a href="/a-propos" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4">Culture La Tuque</div>
</a></li>
<li data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb98" class="full-page-menu-list-item"><a href="/actualites" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4">Actualités</div>
</a></li>
<li data-w-id="c55fef31-5ee4-a501-08cb-135dc4b939cb" class="full-page-menu-list-item"><a href="/formulaires" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4">Formulaires</div>
</a></li>
<li data-w-id="b63d8acd-2e95-8948-9ffd-6aac855dbb9c" class="full-page-menu-list-item"><a href="/contact" class="text-decoration-none pd-10px-top-and-bottom w-inline-block">
<div class="display-4 mobile-nav-links-centering">Contact</div>
</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="top-section pd-top-124px pd-bottom-250px">
<div class="container-default w-container">
<div class="mg-bottom-104px">
<h1 class="display-1 mg-bottom-24px display-3">PROGRAMMATION 25/26</h1>
<div class="grid-2-columns _1-col-tablet gap-row-64px">
<div data-w-id="8f8531e3-ff14-096e-6fda-fa0927c863fe" style="opacity:0" class="w-dyn-list">
<div role="list" class="category-links-container w-dyn-items">
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/improvisation" class="text-401 category-link w-inline-block">
<div>Impro</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/hommage" class="text-401 category-link w-inline-block">
<div>Hommage</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/cinema" class="text-401 category-link w-inline-block">
<div>Cinéma</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/famille" class="text-401 category-link w-inline-block">
<div>Famille</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/cirque" class="text-401 category-link w-inline-block">
<div>Cirque</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/danse" class="text-401 category-link w-inline-block">
<div>Danse</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/magie" aria-current="page" class="text-401 category-link w-inline-block w--current">
<div>Magie</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/theatre" class="text-401 category-link w-inline-block">
<div>Théâtre</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/varietes" class="text-401 category-link w-inline-block">
<div>Variétés</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/decouvertes" class="text-401 category-link w-inline-block">
<div>Découvertes</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/humour" class="text-401 category-link w-inline-block">
<div>Humour</div>
</a></div>
<div role="listitem" class="category-links-container w-dyn-item">
<div class="text-401 category-divider">/</div>
<a href="/categories-evenements/chanson" class="text-401 category-link w-inline-block">
<div>Chanson</div>
</a></div>
</div>
</div>
<div id="w-node-_1b7899e7-01ff-a823-a3ad-8f36b9a54c8a-a776e731" class="inner-container _532px _100-tablet">
<form action="/search" class="position-relative---z-index-1 flex-horizontal mg-bottom-0 w-form"><input class="input icon-inside-right w-input" maxlength="256" name="query" placeholder="Recherche..." type="search" id="search" required=""/><input type="submit" class="btn-inside-input-right w-button" value=""/></form>
</div>
</div>
</div>
</div>
<div class="section pd-top-0">
<div class="container-default w-container">
<h2 class="display-1 mg-bottom--36px position-relative---z-index-2 display-2">PROCHAINS ÉVÉNEMENTS</h2>
</div>
<div class="collection-list-wrapper w-dyn-list">
<div class="empty-listing-page-banner w-dyn-empty">
<div class="text-block empty-listing-page-banner-error-text">Cette catégorie ne contient aucun événement (annoncé publiquement 😉)...</div>
</div>
</div>
</div>
</div>
<footer class="footer-wrapper">
<div class="container-default w-container">
<div class="footer-top">
<div id="w-node-_559aa249-bde6-1acf-baa1-cef6e279af9e-812f48be" data-w-id="559aa249-bde6-1acf-baa1-cef6e279af9e"><a href="/" class="footer-logo-wrapper w-inline-block"><img src="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/683685ca8e715b078ba9c7ae_OEIL%20-%20Blanc.svg" alt="" class="width-100"/></a></div>
<div id="w-node-cbc828bf-df20-4f5e-539d-d4bd812f48c3-812f48be" data-w-id="cbc828bf-df20-4f5e-539d-d4bd812f48c3">
<div class="text-300 bold footer-title">Entités</div>
<div class="grid-2-columns footer-menu-grid">
<ul id="w-node-cbc828bf-df20-4f5e-539d-d4bd812f48c7-812f48be" role="list" class="footer-list-wrapper">
<li class="footer-list-item"><a href="/complexe-culturel-felix-leclerc" class="footer-link">Complexe Culturel Félix-Leclerc</a></li>
<li class="footer-list-item"><a href="/complexe-multimedia" class="footer-link">Complexe Multimédia</a></li>
<li class="footer-list-item"><a href="/centre-des-congres" class="footer-link">Centre des Congrès</a></li>
<li class="footer-list-item mg-bottom-0"><a href="/a-propos" class="footer-link">Culture La Tuque</a></li>
</ul>
</div>
</div>
<div id="w-node-ebffbcc5-ee10-af70-5963-fa3c22543f12-812f48be" data-w-id="ebffbcc5-ee10-af70-5963-fa3c22543f12" class="inner-container">
<div class="text-300 bold footer-title">Liens utiles</div>
<div>
<ul role="list" class="footer-list-wrapper">
<li class="footer-list-item"><a href="/politiques/confidentialite" target="_blank" class="footer-link">Politique de confidentialité</a></li>
<li class="footer-list-item"><a href="/programmation" class="footer-link">Programmation</a></li>
<li class="footer-list-item"><a href="/actualites" class="footer-link">Actualités</a></li>
<li class="footer-list-item"><a href="/formulaires" class="footer-link">Formulaires</a></li>
<li class="footer-list-item"><a href="/contact" class="footer-link">Contact</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-bottom">
<div data-w-id="cbc828bf-df20-4f5e-539d-d4bd812f4905" class="inner-container _252px _100-tablet">
<div class="social-single-links-container center-tablet"><a href="https://www.facebook.com/complexeculturelfelixleclerc/" target="_blank" class="social-icon-single w-inline-block">
<div class="social-icon-font"></div>
</a><a href="https://www.instagram.com/complexeculturelfelixleclerc/" target="_blank" class="social-icon-single w-inline-block">
<div class="social-icon-font"></div>
</a><a href="https://www.tiktok.com/@culturelatuque" target="_blank" class="social-icon-single w-inline-block">
<div class="social-icon-font"></div>
</a><a href="https://www.youtube.com/c/ComplexeMultim%C3%A9dia/streams" target="_blank" class="social-icon-single w-inline-block">
<div class="social-icon-font"></div>
</a></div>
<p class="mg-bottom-48px mg-bottom-16px-tablet">© 2025 | <a href="#" class="text-bold text-decoration-none">Culture La Tuque</a><br/>
Conception web par <a href="https://davenmartel.com" target="_blank" class="text-decoration-none text-bold">Daven Martel</a> <br/>
Mises à jour par <a href="#" class="text-bold text-decoration-none">Bruno Cantin</a></p>
</div>
<div data-w-id="cbc828bf-df20-4f5e-539d-d4bd812f491a" class="footer-bottom---form-container">
<div class="display-4 mg-bottom-24px">Pour NE rien MANQUER,<br/>
c'est par ici:</div>
<div class="mg-bottom-0 w-form">
<form id="wf-form-inscription-infolettre" name="wf-form-Inscription-l-infolettre" data-name="Inscription à l'infolettre" method="get" data-wf-page-id="6836826db53a37e1a776e731" data-wf-element-id="cbc828bf-df20-4f5e-539d-d4bd812f491e">
<div class="flex align-center gap-column-16px"><input class="input border-radius-40px w-input" maxlength="256" name="FirstName" data-name="FirstName" placeholder="Prénom" type="text" id="FirstName" required=""/><input class="input border-radius-40px w-input" maxlength="256" name="LastName" data-name="LastName" placeholder="Nom de famille" type="text" id="LastName" required=""/></div>
<div class="flex align-center gap-column-24px"><input class="input border-radius-40px w-input" maxlength="256" name="Email" data-name="Email" placeholder="votre@courriel.com" type="email" id="Email" required=""/><input type="submit" data-wait="" class="btn-circle-primary w-button" value=""/></div>
</form>
<div class="success-message transparent w-form-done">
<div class="input-single-success-message">
<div>Inscription bien reçue — À bientôt!</div>
</div>
</div>
<div class="error-message w-form-fail">
<div>Oops! Une erreur s'est produite.</div>
</div>
</div>
</div>
</div>
</div>
</footer>
</div>
<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=67ff26d3c9b287a9d681f229" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/js/webflow.schunk.1a807f015b216e46.js" type="text/javascript" integrity="sha384-oY4R8SfnVBTWnix6ULiWbZs/5tyRyxEiWcG+WrT3unnu5pmfsIYJEraZcyFVlvND" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/js/webflow.schunk.525db01ad58fcf19.js" type="text/javascript" integrity="sha384-/urDy1T7pAj5nEjBqnahAKSeP+7MSOHm8uwvKY/Fg8vI85zn2lpQFRIhmL1NaZHY" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/67ff26d3c9b287a9d681f229/js/webflow.21d19a5d.d5ed132b118fdd62.js" type="text/javascript" integrity="sha384-Zx/dRsrG+oMEnBD3VENPvN7Y1HcKQJlSPRqlaef+wj+ty8bKXgi47B7xjO4rjV76" crossorigin="anonymous"></script><script>
/* =====================================================================
“TOUT” injector – keeps highlight correct & removes extra first “/”
===================================================================== */
(function () {
/* --------------------------------------------------------- helpers */
function updateHighlight() {
const tout = document.querySelector('a[href="/programmation"]');
if (!tout) return;
const onProg = /^\/programmation\/?$/.test(location.pathname.toLowerCase());
/* Webflow relies on class **and** aria-current */
tout.classList.toggle('w--current', onProg);
if (onProg) {
tout.setAttribute('aria-current', 'page');
} else {
tout.removeAttribute('aria-current');
}
}
/* Remove any divider immediately before the first <a> in the list */
function removeLeadingDivider(list) {
const firstLink = list.querySelector('a');
if (!firstLink) return;
let n = firstLink.previousSibling;
while (n &&
((n.nodeType === Node.TEXT_NODE && /\/\s*$/.test(n.textContent)) ||
(n.nodeType === Node.ELEMENT_NODE && n.classList.contains('category-divider')))) {
const prev = n;
n = n.previousSibling;
prev.remove();
}
}
/* ----------------------------------------------------- main routine */
function run() {
const path = location.pathname.toLowerCase();
if (!(path.includes('/programmation') ||
path.includes('/categories-evenements'))) return;
/* wrapper holding the dynamic list */
const list = document.querySelector('.w-dyn-list');
if (!list) return;
/* already injected? just refresh highlight & tidy dividers */
if (list.querySelector('a[href="/programmation"]')) {
updateHighlight();
removeLeadingDivider(list);
return;
}
/* first category link (e.g. “Hommage”) */
const firstCat = list.querySelector('a[href^="/categories-evenements/"]');
if (!firstCat) return;
/* clone link for “TOUT” */
const tout = firstCat.cloneNode(false);
tout.href = '/programmation';
tout.textContent = 'TOUT';
/* ensure highlight status is correct right away */
updateHighlight = () => { // redefine with new element in scope
const onProg = /^\/programmation\/?$/.test(location.pathname.toLowerCase());
tout.classList.toggle('w--current', onProg);
if (onProg) {
tout.setAttribute('aria-current', 'page');
} else {
tout.removeAttribute('aria-current');
}
};
updateHighlight();
/* proper divider clone so margins & weight stay identical */
const templateDiv = list.querySelector('.category-divider');
const divider = templateDiv
? templateDiv.cloneNode(true)
: Object.assign(document.createElement('div'), {
className: 'text-400 category-divider',
textContent: '/'
});
/* remove any divider that precedes firstCat (old leading “/”) */
removeLeadingDivider(list);
/* insert: TOUT / HOMMAGE … */
firstCat.parentElement.insertBefore(divider, firstCat);
firstCat.parentElement.insertBefore(tout, divider);
}
/* ---------------------------------- fire on load & SPA navigations */
window.addEventListener('load', run);
['pushState', 'replaceState'].forEach(fn => {
const orig = history[fn];
history[fn] = function () {
const out = orig.apply(this, arguments);
setTimeout(run, 0);
return out;
};
});
window.addEventListener('popstate', () => setTimeout(run, 0));
})();
</script>
<!-- Formulaire d'inscription à l'infolettre vers Ovation -->
<script>
if (1==0) { // Attendre le GO LIVE
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('wf-form-inscription-infolettre'); // form name in Webflow
if (!form) return;
const wrapper = form.closest('.w-form') || form.parentElement;
const done = wrapper.querySelector('.w-form-done');
const fail = wrapper.querySelector('.w-form-fail');
const submitBtn = form.querySelector('button[type="submit"], .w-button');
// Accessible live region (optional)
let status = form.querySelector('[role="status"]');
if (!status) {
status = document.createElement('p');
status.setAttribute('role', 'status');
status.setAttribute('aria-live', 'polite');
form.appendChild(status);
}
form.addEventListener('submit', async (e) => {
// Stop BOTH browser navigation and Webflow's own AJAX handler
e.preventDefault();
e.stopImmediatePropagation();
// Basic validity UI
if (!form.checkValidity()) { form.reportValidity(); return; }
// UI: sending state
const originalLabel = submitBtn ? submitBtn.textContent : null;
if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = 'Subscribing…'; }
status.textContent = '';
if (fail) fail.style.display = 'none';
try {
const body = new FormData(form);
// Honeypot: if filled, pretend success
if (body.get('website')) {
if (done) { done.style.display = 'block'; form.style.display = 'none'; }
return;
}
// POST to your backend / serverless (proxy to your ESP to keep API keys secret)
const res = await fetch('https://www.ovation.ca/marketing/1L/Newsletter/DirectSubscribe', {
method: 'POST',
body,
credentials: 'same-origin',
headers: { 'Accept': 'application/json' }
});
if (!res.ok) {
let msg = `Request failed (HTTP ${res.status})`;
try { const j = await res.json(); if (j.error) msg = j.error; } catch {}
throw new Error(msg);
}
const data = await res.json();
// Show Webflow-style success UI (you control the message)
if (done) {
const msgEl = done.querySelector('div, p') || done;
msgEl.textContent = data.message || 'Presque terminé — Vérifiez votre courriel pour confirmer l\'inscription.';
done.style.display = 'block';
form.style.display = 'none';
} else {
status.textContent = data.message || 'Inscription réussie!';
form.reset();
}
} catch (err) {
// Show Webflow-style error UI
const msg = err.message || 'Une erreur s\'est produite. Vérifier le courriel & réessayez.';
if (fail) {
const msgEl = fail.querySelector('div, p') || fail;
msgEl.textContent = msg;
fail.style.display = 'block';
} else {
status.textContent = msg;
}
} finally {
if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = originalLabel; }
}
});
});
}
</script>
<!-- Rubans en diagonal des événements (pas toujours affichés) -->
<style>
.ruban-enfant:before,
.ruban-enfant:after {
content: '';
position: absolute;
top:0;
margin: 0 -1px; /* tweak */
width: 300%;
height: 100%;
background: #a12b2a;
}
.ruban-enfant:before {
right:100%;
}
.ruban-enfant:after {
left:100%;
}
</style>
<script>
// Traduit les mois de l'année (pour la programmation)
const monthMap = {
January: 'Janvier',
February: 'Février',
March: 'Mars',
April: 'Avril',
May: 'Mai',
June: 'Juin',
July: 'Juillet',
August: 'Août',
September: 'Septembre',
October: 'Octobre',
November: 'Novembre',
December: 'Décembre'
};
// Build a regex that matches any of the English months
const monthRegex = new RegExp(`\\b(${Object.keys(monthMap).join('|')})\\b`, 'g');
// Select all elements with the class .date-pour-traduction
document.querySelectorAll('.date-traduire').forEach(el => {
// Determine whether to use textContent or value (e.g., for inputs)
const prop = ('value' in el) ? 'value' : 'textContent';
const original = el[prop];
// Replace any English month with its French equivalent
const translated = original.replace(monthRegex, matched => monthMap[matched]);
// Update the element only if a replacement occurred
if (translated !== original) {
el[prop] = translated;
}
});
</script>
<!-- Filtrage instantané de la page /programmation -->
<style>
/* classe utilitaire pour masquer les sections non concordantes */
.is--hidden { display: none !important; }
</style>
<!-- Filtrage instantané -->
<style>
/* Cache vraiment toute la carte, même si d’autres règles existent */
.collection-item.is--hidden { display: none !important; }
</style>
<script>
document.addEventListener('DOMContentLoaded', () => {
const searchInput = document.getElementById('search');
if (!searchInput) return; // le champ n’existe pas → on sort
const items = document.querySelectorAll('.collection-item');
function filterList() {
const query = searchInput.value.trim().toLowerCase();
items.forEach(item => {
// Texte du premier heading trouvé
const heading = item.querySelector('h1,h2,h3,h4,h5,h6');
const title = heading ? heading.textContent.toLowerCase() : '';
// Ajoute/enlève la classe sur toute la carte
item.classList.toggle('is--hidden', query && !title.includes(query));
});
}
searchInput.addEventListener('input', filterList);
filterList(); // exécution initiale (si champ pré-rempli)
});
</script>
</body></html>