1jQuery(() => { 2 "use strict"; 3 const step = 1000; 4 5 const addTimeElement = (time, text) => { 6 return '<span class="time">' + time + '</span><span class="text">' + text + "</span>"; 7 }; 8 9 const switchLang = (number, index) => { 10 let key; 11 switch (number) { 12 case 1: 13 key = 'SgN'; 14 break; 15 case 2: 16 case 3: 17 case 4: 18 key = 'PlN'; 19 break; 20 case 0: 21 default: 22 key = 'PlG'; 23 break; 24 } 25 return LANG.plugins.fkstimer[index + key]; 26 }; 27 28 const getTimeElements = (delta) => { 29 if (delta < 0) { 30 return LANG.plugins.fkstimer['past-event']; 31 } 32 delta -= (60 * 60 * 1000); 33 const time = (new Date(delta)); 34 const hours = time.getHours(); 35 const days = time.getDate() + (time.getMonth() * 31) - 1; 36 37 let html = ''; 38 if (days) { 39 html += addTimeElement(days, switchLang(days, 'day')); 40 } 41 if (days || hours) { 42 html += addTimeElement(hours, switchLang(hours, 'hour')); 43 } 44 if (days < 100) { 45 const min = time.getMinutes(); 46 html += addTimeElement(min, switchLang(min, 'min')); 47 } 48 if (!days) { 49 const sec = time.getSeconds(); 50 if (step < 1000) { 51 const millisecond = Math.floor(time.getMilliseconds() / 100); 52 html += addTimeElement(sec + ',' + millisecond, switchLang(sec, 'sec')); 53 } else { 54 html += addTimeElement(sec, switchLang(sec, 'sec')); 55 } 56 } 57 58 return html; 59 }; 60 /** 61 * 62 * @param span Element 63 * @param deltaServer number 64 */ 65 const countDown = (span, deltaServer) => { 66 const current = (new Date()).getTime() + deltaServer; 67 const deadline = (new Date(span.getAttribute('data-date'))).getTime(); 68 const delta = deadline - current; 69 span.innerHTML = getTimeElements(delta, deltaServer); 70 setTimeout(() => { 71 countDown(span, deltaServer); 72 }, step); 73 }; 74 document.querySelectorAll('.fks-timer').forEach((element) => { 75 const metaTag = document.querySelector('meta[name="fks-timer"]'); 76 const deltaServer = metaTag ? (new Date(metaTag.getAttribute('content')).getTime() - (new Date()).getTime()) : 0; 77 countDown(element, +deltaServer); 78 }); 79}); 80