| |
| function getPersianDate() { |
| const d = new Date(); |
| const option = { month: 'long', day: 'numeric', year: 'numeric' }; |
| return d.toLocaleDateString('fa-IR', option); |
| } |
|
|
| function fmt(s) { |
| let sec = Math.floor(s); |
| let ms = Math.round((s - sec) * 100); |
| return `${sec < 10 ? '0'+sec : sec}.${ms < 10 ? '0'+ms : ms}`; |
| } |
|
|
| function formatTimeSimple(sec) { |
| let m = Math.floor(sec / 60); |
| let s = Math.floor(sec % 60); |
| return `${m}:${s < 10 ? '0'+s : s}`; |
| } |
|
|
| |
| function startAnim(selector) { |
| const container = document.querySelector(selector); |
| if(!container) return; |
| const words = container.querySelectorAll('.anim-word'); |
| let i = 0; |
| setInterval(() => { |
| words.forEach(w => w.classList.remove('active')); |
| words[i].classList.add('active'); |
| i = (i + 1) % words.length; |
| }, 600); |
| } |
|
|
| |
| function syncModeButtons() { |
| document.querySelectorAll('.mode-btn').forEach(b => { |
| b.classList.remove('active'); |
| if(b.getAttribute('onclick').includes(`'${state.st.type}'`)) b.classList.add('active'); |
| }); |
| } |