202 lines
9.5 KiB
JavaScript
202 lines
9.5 KiB
JavaScript
let relative_to_local = new Intl.RelativeTimeFormat("ru", {numeric: 'auto', style: 'long'});
|
||
let language_user = window.navigator ? (window.navigator.language ||window.navigator.systemLanguage || window.navigator.userLanguage) : "ru";
|
||
language_user = language_user.substr(0, 2).toLowerCase();
|
||
let language_site = (language_user == "ru" || language_user == "by" || language_user == "ua") ? "ru" : "en";
|
||
let timeinterval;
|
||
let d_for_setting = new Date();
|
||
let future_year = (d_for_setting.getMonth() == 0 && d_for_setting.getDate() < 7) ? d_for_setting.getFullYear() : d_for_setting.getFullYear() + 1
|
||
let event_code = "ny"
|
||
let site_h1 = document.getElementById("countdown-title")
|
||
let titles = {
|
||
"ny-ru": "До нового " + future_year + " года осталось:",
|
||
"ny-en": "Until New Year " + future_year + " left:",
|
||
"ch-ru": "До рождества " + (future_year-1) + " осталось:",
|
||
"ch-en": "Until Christmas " + (future_year-1) + " left:"
|
||
};
|
||
let titles_timer_gone = {
|
||
"ny-ru": "C новым годом!!!\nСчасливого " + future_year + " года!",
|
||
"ny-en": "Happy New Year!\nHave a great year " + future_year + "!",
|
||
"ch-ru": "C рождеством!!!",
|
||
"ch-en": "Merry Christmas!!!"
|
||
};
|
||
let short_titles = {
|
||
"ny-ru": "НГ ",
|
||
"ny-en": "NY ",
|
||
"ch-ru": "Рождество ",
|
||
"ch-en": "Christmas "
|
||
}
|
||
function getTimeRemaining(endtime) {
|
||
var t = Date.parse(endtime) - Date.now();
|
||
var mseconds = t % 1000;
|
||
var seconds1_100 = Math.floor((t / 10) % 1000);
|
||
var seconds = Math.floor((t / 1000) % 60);
|
||
var minutes = Math.floor((t / 1000 / 60) % 60);
|
||
var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
|
||
var days = Math.floor(t / (1000 * 60 * 60 * 24));
|
||
return {
|
||
'total': t,
|
||
'days': days,
|
||
'hours': hours,
|
||
'minutes': minutes,
|
||
'seconds': seconds,
|
||
'seconds1_100': seconds1_100,
|
||
'mseconds': mseconds
|
||
};
|
||
}
|
||
|
||
function eventSwitcher(event_c){
|
||
event_code = event_c;
|
||
switch(event_c){
|
||
case "ny":
|
||
clearInterval(timeinterval);
|
||
interval = initializeClock("Jan 01 " + future_year + " 00:00:00");
|
||
break;
|
||
case "ch":
|
||
clearInterval(timeinterval);
|
||
interval = initializeClock('Dec 25 ' + new Date().getFullYear() + ' 00:00:00');
|
||
break;
|
||
}
|
||
}
|
||
|
||
function languageSwitcher(lang_code){
|
||
switch (lang_code) {
|
||
case "ru":
|
||
$("#countdown-title-en").css("display", "none");
|
||
$("#countdown-title-ru").css("display", "block");
|
||
$("#about-modal-en").css("display", "none");
|
||
$("#about-modal-ru").css("display", "block");
|
||
$("#incard-en").css("display", "none");
|
||
$("#incard-ru").css("display", "block");
|
||
$("#about-en").css("display", "none");
|
||
$("#about-ru").css("display", "block");
|
||
$("#timer-mode-text-en").css("display", "none");
|
||
$("#timer-mode-text-ru").css("display", "initial");
|
||
$("#footer-en").css("display", "none");
|
||
$("#footer-ru").css("display", "block");
|
||
$(".event-names-ru").css("display", "block");
|
||
$(".event-names-en").css("display", "none");
|
||
$("#event-title-ru").css("display", "unset");
|
||
$("#event-title-en").css("display", "none");
|
||
language_site = "ru";
|
||
break;
|
||
case "en":
|
||
$("#countdown-title-ru").css("display", "none");
|
||
$("#countdown-title-en").css("display", "block");
|
||
$("#about-modal-ru").css("display", "none");
|
||
$("#about-modal-en").css("display", "block");
|
||
$("#incard-ru").css("display", "none");
|
||
$("#incard-en").css("display", "block");
|
||
$("#about-ru").css("display", "none");
|
||
$("#about-en").css("display", "block");
|
||
$("#timer-mode-text-ru").css("display", "none");
|
||
$("#timer-mode-text-en").css("display", "initial");
|
||
$("#footer-ru").css("display", "none");
|
||
$("#footer-en").css("display", "block");
|
||
$(".event-names-ru").css("display", "none");
|
||
$(".event-names-en").css("display", "block");
|
||
$("#event-title-ru").css("display", "none");
|
||
$("#event-title-en").css("display", "unset");
|
||
language_site = "en";
|
||
break;
|
||
}
|
||
relative_to_local = new Intl.RelativeTimeFormat(lang_code, {numeric: 'auto', style: 'long'});
|
||
site_h1.innerHTML = titles[event_code+"-"+language_site]
|
||
}
|
||
languageSwitcher(language_site);
|
||
|
||
function hide_footer(){
|
||
if ($("footer").css("display") == "none"){
|
||
$("footer").css("display", "block")
|
||
}else{
|
||
$("footer").css("display", "none")
|
||
}
|
||
}
|
||
|
||
let phases = {ru: ["Переходная (с ночи на день)", "Дневная", "Переходная (со дня на ночь)", "Ночная"], en: ["Transitional (from night to day)", "Day", "Transitional (from day to night)", "Night"]}
|
||
function changeBackgroundColor() {
|
||
let t = new Date();
|
||
let local_t = t.getTime() - t.getTimezoneOffset()*60000 - 180*60000;
|
||
let color_var = (local_t % 86400000 > 43200000) ? 1-(local_t % 21600000 / 21600000) : local_t % 21600000 / 21600000
|
||
let color_phase = local_t % 86400000 / 21600000
|
||
let colors = [[112,38,112], [13,117,248]];
|
||
switch (Math.trunc(color_phase)) {
|
||
case 0:
|
||
case 2:
|
||
currect = [colors[0][0]-Math.abs(colors[0][0], colors[1][0])*color_var, colors[0][1]+Math.abs(colors[0][1], colors[1][1])*color_var, colors[0][2]+Math.abs(colors[0][2], colors[1][2])*color_var];
|
||
break;
|
||
case 1:
|
||
currect = colors[1]
|
||
break;
|
||
case 3:
|
||
currect = colors[0]
|
||
}
|
||
document.getElementsByTagName("body")[0].style.backgroundColor = "#"+("0"+Math.round(currect[0]).toString(16)).slice(-2)+("0"+Math.round(currect[1]).toString(16)).slice(-2)+("0"+Math.round(currect[2]).toString(16)).slice(-2);
|
||
var num_f = 2;
|
||
document.getElementById("color").innerHTML = "R:" + currect[0].toFixed(num_f) + "; G:" + currect[1].toFixed(num_f) + "; B:" + currect[2].toFixed(num_f);
|
||
document.getElementById("phase").innerHTML = phases[language_site][Math.trunc(color_phase)] + ", " + ((color_phase % 1)*100).toFixed(num_f)+"%"
|
||
}
|
||
|
||
function initializeClock(endtime) {
|
||
var num1 = document.getElementById('num1');
|
||
var num2 = document.getElementById('num2');
|
||
var num3 = document.getElementById('num3');
|
||
var dots1 = document.getElementById('separator1');
|
||
var dots2 = document.getElementById('separator2');
|
||
var debug1 = document.getElementById('endtime');
|
||
var debug2 = document.getElementById('left');
|
||
var debug3 = document.getElementById('fulltimer');
|
||
var debug4 =document.getElementById('curtime');
|
||
var time_to = new Date(endtime)
|
||
var updateTime = 1000 / 60;
|
||
|
||
site_h1.innerHTML = titles[event_code+"-"+language_site]
|
||
function updateClock() {
|
||
var t = getTimeRemaining(endtime);
|
||
if (t.days > 0) {
|
||
num1.innerHTML = t.days;
|
||
dots1.innerHTML = (language_site == "ru" ? "д.   " : "d.   ");
|
||
dots1.style.fontSize = "3vw";
|
||
dots1.style.width = dots2.style.width;
|
||
num2.innerHTML = ('0' + t.hours).slice(-2);
|
||
num3.innerHTML = ('0' + t.minutes).slice(-2);
|
||
document.title = short_titles[event_code+"-"+language_site] + relative_to_local.format(t.days, "day");
|
||
}
|
||
else if (t.hours > 0) {
|
||
num1.innerHTML = ('0' + t.hours).slice(-2);
|
||
dots1.innerHTML = ":";
|
||
dots1.style.fontSize = "12vw";
|
||
num2.innerHTML = ('0' + t.minutes).slice(-2);
|
||
num3.innerHTML = ('0' + t.seconds).slice(-2);
|
||
document.title = short_titles[event_code+"-"+language_site] + relative_to_local.format(t.hours, "hour");
|
||
}
|
||
else if (t.total > 0) {
|
||
num1.innerHTML = ('0' + t.minutes).slice(-2);
|
||
num2.innerHTML = ('0' + t.seconds).slice(-2);
|
||
num3.innerHTML = ('0' + t.seconds1_100).slice(-2);
|
||
dots2.innerHTML = ".";
|
||
document.title = short_titles[event_code+"-"+language_site] + ((t.total <= 60000) ? relative_to_local.format(t.seconds, "second") : relative_to_local.format(t.minutes, "minute"));
|
||
}
|
||
else {
|
||
num1.innerHTML = "00";
|
||
num2.innerHTML = "00";
|
||
num3.innerHTML = "00";
|
||
clearInterval(timeinterval);
|
||
document.title = site_h1.innerHTML = titles_timer_gone[event_code+"-"+language_site]
|
||
setTimeout(function() {
|
||
$('body').fireworks();
|
||
});
|
||
};
|
||
dots1.style.color = ((t.seconds % 2) || (t.total <= 3600000) || (t.days > 0)) ? "#fff":"#fff0";
|
||
dots2.style.color = ((t.seconds % 2) || (t.total <= 3600000)) ? "#fff":"#fff0";
|
||
debug2.innerHTML = t.total.toLocaleString(language_site);
|
||
debug3.innerHTML = t.days + ':' + ('0' + t.hours).slice(-2) + ':' + ('0' + t.minutes).slice(-2) + ':' + ('0' + t.seconds).slice(-2) + '.' + ('00' + t.mseconds).slice(-3);
|
||
debug4.innerHTML = new Date().toLocaleString(language_site);
|
||
}
|
||
debug1.innerHTML = time_to.toLocaleString();
|
||
updateClock();
|
||
timeinterval = setInterval(updateClock, updateTime);
|
||
}
|
||
|
||
initializeClock("Jan 01 " + future_year + " 00:00:00");
|
||
//initializeClock("Nov 08 2022 23:20:00");
|
||
setInterval(changeBackgroundColor, 1000/60); |