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