(function () {
// Prevent double wiring
if (window.__DFM_WIRED__) return;
window.__DFM_WIRED__ = true;
var DFMKEY = 'df-messenger-chatBubbleExpansion';
var minWidthOk = window.matchMedia('(min-width: 768px)').matches;
// 1) Set a stable session-id on df-messenger (persisted across pages)
try {
var sid = localStorage.getItem('df_session_id');
if (!sid) {
sid = (self.crypto && self.crypto.randomUUID) ? self.crypto.randomUUID() : Math.random().toString(36).slice(2);
localStorage.setItem('df_session_id', sid);
}
var el = document.querySelector('df-messenger');
if (el) el.setAttribute('session-id', sid);
} catch (_) { }
// 2) Before loading the Messenger, restore expansion state for this session
if (minWidthOk) {
try {
var stateDFM = sessionStorage.getItem(DFMKEY);
var bubble = document.getElementById('dfchat');
if (bubble) {
if (stateDFM == 'true') bubble.setAttribute('expanded', '');
else bubble.removeAttribute('expanded');
}
} catch (_) { }
}
})();
Monday
(function () {
var DFMKEY = 'df-messenger-chatBubbleExpansion';
var AUTOOPENKEY = 'df-chat-autoOpened';
var minWidthOk = window.matchMedia('(min-width: 768px)').matches;
if (!minWidthOk) return;
var timerId = null;
var scheduled = false;
function isExpanded() {
var bubble = document.getElementById('dfchat');
return !!(bubble && bubble.hasAttribute('expanded'));
}
function schedule() {
clearTimeout(timerId);
// Do not schedule if user has already closed during this session or if already expanded
try {
if (sessionStorage.getItem(DFMKEY) === 'false') return;
if (sessionStorage.getItem(AUTOOPENKEY) === 'true') return;
} catch (_) { }
if (isExpanded()) return;
timerId = setTimeout(function () {
try {
if (sessionStorage.getItem(DFMKEY) === 'false') return;
if (sessionStorage.getItem(AUTOOPENKEY) === 'true') return;
} catch (_) { }
var bubble = document.getElementById('dfchat');
if (bubble && typeof bubble.openChat === 'function') {
bubble.openChat();
try { sessionStorage.setItem(AUTOOPENKEY, 'true'); } catch (_) { }
}
}, 10000);
scheduled = true;
}
window.addEventListener('df-messenger-loaded', function () {
// Persist expansion state and cancel timer on any state change (open/close)
function onOpenChanged(e) {
var isOpen = !!(e && e.detail && e.detail.isOpen);
if (timerId) { clearTimeout(timerId); timerId = null; }
try {
sessionStorage.setItem(DFMKEY, isOpen ? 'true' : 'false');
if (isOpen) sessionStorage.setItem(AUTOOPENKEY, 'true');
} catch (_) { }
}
window.addEventListener('df-chat-open-changed', onOpenChanged);
var bubbleEl = document.getElementById('dfchat');
if (bubbleEl) bubbleEl.addEventListener('df-chat-open-changed', onOpenChanged);
schedule();
});
// Fallback: if the ready event fired too early, schedule after DOM is ready
if (document.readyState !== 'loading') {
if (!scheduled) schedule();
} else {
document.addEventListener('DOMContentLoaded', function () { if (!scheduled) schedule(); });
}
})();
(function () {
var WELCOME_TEXT = {
en: "Hello, I am Dollarama\u2019s Virtual Agent.\n\nMy responses are generated by artificial intelligence based on the content published on our website. These responses may be incomplete or inaccurate. They may contain forward-looking statements, which are subject to risks and uncertainties. For official and complete disclosure, please see our public filings.\n\nPlease do not share any personal information. By continuing this conversation, you agree to our Terms and Conditions on our [Legal Matters](https://www.dollarama.com/en-ca/legal-matters/) page.\n\nHow can I help you today?",
fr: "Bonjour, je suis l\u2019agent virtuel de Dollarama.\n\nMes r\u00e9ponses sont g\u00e9n\u00e9r\u00e9es par une intelligence artificielle \u00e0 partir des contenus publi\u00e9s sur notre site. Ces r\u00e9ponses pourraient \u00eatre incompl\u00e8tes ou inexactes. Elles peuvent contenir des \u00e9nonc\u00e9s prospectifs, lesquels sont assujettis \u00e0 des risques et \u00e0 des incertitudes. Pour une information compl\u00e8te et officielle, veuillez consulter nos documents publics.\n\nVeuillez ne pas partagez d\u2019informations personnelles. En continuant cette conversation, vous acceptez nos Termes et Conditions sur notre page [Aspects Juridiques](https://www.dollarama.com/fr-ca/aspects-juridiques/).\n\nAlors, comment puis-je vous aider?"
};
// Keyed to the chat session ID so reloads in the same tab do not re-inject; the flag
// lives in sessionStorage so closing the browser ends the session and the welcome shows again.
function getStorageKey() {
try {
var sid = localStorage.getItem('df_session_id') || '';
return 'df-welcome-shown' + (sid ? '-' + sid : '');
} catch (_) { return 'df-welcome-shown'; }
}
function alreadyShown() {
try { return sessionStorage.getItem(getStorageKey()) === '1'; } catch (_) { return false; }
}
function markShown() {
try { sessionStorage.setItem(getStorageKey(), '1'); } catch (_) { }
}
function injectWelcome() {
if (alreadyShown()) return;
var dfm = document.querySelector('df-messenger');
if (!dfm || typeof dfm.renderCustomText !== 'function') return;
markShown();
var lang = dfm.getAttribute('language-code') === 'fr' ? 'fr' : 'en';
dfm.renderCustomText(WELCOME_TEXT[lang]);
}
// Primary trigger: fires when the chat panel opens – always after all scripts are ready.
window.addEventListener('df-chat-open-changed', function (e) {
if (e && e.detail && e.detail.isOpen) {
setTimeout(injectWelcome, 50);
}
});
// Secondary trigger: handles the case where the panel is already expanded on load.
window.addEventListener('df-messenger-loaded', function () {
setTimeout(injectWelcome, 200);
});
})();
Tuesday<
iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WFZZM99"
height="0" wi
var IsCareersPage = $("html").hasClass("careers");
var ComingSoonText = "COMING SOON";
$(".header-container").load(jsResPrefix.value + "GetHeaderFooter #consumer-nav", function () {
//setHeaderTracking();
var toggleUrl = 'https://www.dollarama.com/fr-CA/carrieres/localisateur/on/london-109-fanshawe-park-rd-e/';
if (IsCareersPage) {
if ("en-US" == "fr-CA")
toggleUrl = toggleUrl.replace("/locations/", "/careers/locations/");
else
toggleUrl = toggleUrl.replace("/fr/localisateur/", "/fr/carrieres/localisateur/");
}
$(".header-container .language").attr('href', toggleUrl );
$("li.hover").on("hover", function () {
var el = $(this).find('span');
var classList = el.attr('class').split(/\s+/);
$.each(classList, function (index, item) {
if (-1 != item.indexOf('icon-')) {
el.toggleClass(item + '_hover');
}
});
});
$("span.hover").on("hover", function () {
var el = $(this);
var classList = el.attr('class').split(/\s+/);
$.each(classList, function (index, item) {
if (-1 != item.indexOf('icon-')) {
el.toggleClass(item + '_hover');
}
});
});
});
Thursday
Friday
Saturday
09:00AM - 08:00PM
Sunday
10:00AM - 07:00PM
Miles
Dollarama is expanding, opening new stores all across Canada. We are always looking for talented, energetic people that thrive in a fast-paced work environment. Want to join our team? Explore our available positions at Dollarama.