MediaWiki:Common.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
(function () {
function updateBenkyyClock() {
var timeEl = document.querySelector('.benky-live-clock');
var dateEl = document.querySelector('.benky-live-date');
if (!timeEl && !dateEl) return;
var now = new Date();
var timeFmt = new Intl.DateTimeFormat('en-GB', {
timeZone: 'Europe/Bucharest',
hour: '2-digit',
minute: '2-digit',
hour12: true
});
var dateFmt = new Intl.DateTimeFormat('en-GB', {
timeZone: 'Europe/Bucharest',
weekday: 'long',
day: 'numeric',
month: 'long',
year: 'numeric'
});
if (timeEl) timeEl.textContent = timeFmt.format(now);
if (dateEl) dateEl.textContent = dateFmt.format(now);
}
function animateCounters() {
document.querySelectorAll('.benky-stat-number[data-target]').forEach(function (el) {
if (el.dataset.done === '1') return;
el.dataset.done = '1';
var target = parseInt(el.getAttribute('data-target') || '0', 10);
var start = 0;
var duration = 900;
var startTime = null;
function step(ts) {
if (!startTime) startTime = ts;
var progress = Math.min((ts - startTime) / duration, 1);
var eased = 1 - Math.pow(1 - progress, 3);
var value = Math.round(start + (target - start) * eased);
el.textContent = value.toLocaleString('en-US');
if (progress < 1) requestAnimationFrame(step);
}
requestAnimationFrame(step);
});
}
function init() {
updateBenkyyClock();
animateCounters();
setInterval(updateBenkyyClock, 1000);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();