Counter-to-new-year/script.js

202 lines
9.5 KiB
JavaScript
Raw Normal View History

2022-11-08 20:25:04 +00:00
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 = {
2022-11-23 19:27:38 +00:00
"ny-ru": "До нового " + future_year + " года осталось:",
2022-11-08 20:25:04 +00:00
"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 "
}
2020-11-30 19:15:49 +00:00
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
};
}
2022-11-08 20:25:04 +00:00
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"]}
2020-11-30 19:15:49 +00:00
function changeBackgroundColor() {
2021-08-11 18:56:11 +00:00
let t = new Date();
2021-08-12 09:03:56 +00:00
let local_t = t.getTime() - t.getTimezoneOffset()*60000 - 180*60000;
2021-08-11 18:56:11 +00:00
let color_var = (local_t % 86400000 > 43200000) ? 1-(local_t % 21600000 / 21600000) : local_t % 21600000 / 21600000
let color_phase = local_t % 86400000 / 21600000
2021-08-12 17:38:28 +00:00
let colors = [[112,38,112], [13,117,248]];
2021-08-11 18:56:11 +00:00
switch (Math.trunc(color_phase)) {
case 0:
case 2:
2021-08-12 17:55:53 +00:00
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];
2021-08-11 18:56:11 +00:00
break;
case 1:
currect = colors[1]
break;
case 3:
currect = colors[0]
2020-11-30 19:15:49 +00:00
}
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);
2021-12-22 19:27:51 +00:00
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);
2022-11-08 20:25:04 +00:00
document.getElementById("phase").innerHTML = phases[language_site][Math.trunc(color_phase)] + ", " + ((color_phase % 1)*100).toFixed(num_f)+"%"
2020-11-30 19:15:49 +00:00
}
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');
2020-11-30 19:15:49 +00:00
var debug1 = document.getElementById('endtime');
var debug2 = document.getElementById('left');
var debug3 = document.getElementById('fulltimer');
2022-11-08 20:25:04 +00:00
var debug4 =document.getElementById('curtime');
2021-09-22 10:53:34 +00:00
var time_to = new Date(endtime)
2020-11-30 19:15:49 +00:00
var updateTime = 1000 / 60;
2022-11-08 20:25:04 +00:00
site_h1.innerHTML = titles[event_code+"-"+language_site]
2020-11-30 19:15:49 +00:00
function updateClock() {
var t = getTimeRemaining(endtime);
if (t.days > 0) {
2021-09-22 10:53:34 +00:00
num1.innerHTML = t.days;
2022-11-08 20:25:04 +00:00
dots1.innerHTML = (language_site == "ru" ? "д. &#8201&#8201" : "d. &#8201&#8201");
dots1.style.fontSize = "3vw";
dots1.style.width = dots2.style.width;
2020-11-30 19:15:49 +00:00
num2.innerHTML = ('0' + t.hours).slice(-2);
num3.innerHTML = ('0' + t.minutes).slice(-2);
2022-11-08 20:25:04 +00:00
document.title = short_titles[event_code+"-"+language_site] + relative_to_local.format(t.days, "day");
2020-11-30 19:15:49 +00:00
}
else if (t.hours > 0) {
num1.innerHTML = ('0' + t.hours).slice(-2);
dots1.innerHTML = ":";
2022-11-08 20:25:04 +00:00
dots1.style.fontSize = "12vw";
2020-11-30 19:15:49 +00:00
num2.innerHTML = ('0' + t.minutes).slice(-2);
num3.innerHTML = ('0' + t.seconds).slice(-2);
2022-11-08 20:25:04 +00:00
document.title = short_titles[event_code+"-"+language_site] + relative_to_local.format(t.hours, "hour");
2020-11-30 19:15:49 +00:00
}
else if (t.total > 0) {
2020-11-30 19:15:49 +00:00
num1.innerHTML = ('0' + t.minutes).slice(-2);
num2.innerHTML = ('0' + t.seconds).slice(-2);
num3.innerHTML = ('0' + t.seconds1_100).slice(-2);
dots2.innerHTML = ".";
2022-11-08 20:25:04 +00:00
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"));
2020-11-30 19:15:49 +00:00
}
else {
num1.innerHTML = "00";
num2.innerHTML = "00";
num3.innerHTML = "00";
2020-11-30 19:15:49 +00:00
clearInterval(timeinterval);
2022-11-08 20:25:04 +00:00
document.title = site_h1.innerHTML = titles_timer_gone[event_code+"-"+language_site]
setTimeout(function() {
$('body').fireworks();
});
2020-11-30 19:15:49 +00:00
};
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";
2022-11-08 20:25:04 +00:00
debug2.innerHTML = t.total.toLocaleString(language_site);
2020-11-30 19:15:49 +00:00
debug3.innerHTML = t.days + ':' + ('0' + t.hours).slice(-2) + ':' + ('0' + t.minutes).slice(-2) + ':' + ('0' + t.seconds).slice(-2) + '.' + ('00' + t.mseconds).slice(-3);
2022-11-08 20:25:04 +00:00
debug4.innerHTML = new Date().toLocaleString(language_site);
2020-11-30 19:15:49 +00:00
}
2021-09-22 10:53:34 +00:00
debug1.innerHTML = time_to.toLocaleString();
2020-11-30 19:15:49 +00:00
updateClock();
2022-11-08 20:25:04 +00:00
timeinterval = setInterval(updateClock, updateTime);
2020-11-30 19:15:49 +00:00
}
initializeClock("Jan 01 " + future_year + " 00:00:00");
2022-11-08 20:25:04 +00:00
//initializeClock("Nov 08 2022 23:20:00");
setInterval(changeBackgroundColor, 1000/60);