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' ) ;
2021-08-15 19:33:18 +00:00
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 ) ;
2021-08-15 19:33:18 +00:00
if ( t . days > 0 ) {
2021-09-22 10:53:34 +00:00
num1 . innerHTML = t . days ;
2024-05-13 10:57:24 +00:00
dots1 . innerHTML = ( language _site == "ru" ? "д   " : "d   " ) ;
2022-11-08 20:25:04 +00:00
dots1 . style . fontSize = "3vw" ;
2021-08-15 19:33:18 +00:00
dots1 . style . width = dots2 . style . width ;
2020-11-30 19:15:49 +00:00
num2 . innerHTML = ( '0' + t . hours ) . slice ( - 2 ) ;
2021-08-15 19:33:18 +00:00
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 ) ;
2021-08-15 19:33:18 +00:00
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 ) ;
2021-08-15 19:33:18 +00:00
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
}
2021-08-15 19:33:18 +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 ) ;
2021-08-15 19:33:18 +00:00
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" ;
2021-08-15 19:33:18 +00: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 ]
2021-08-15 19:33:18 +00:00
setTimeout ( function ( ) {
$ ( 'body' ) . fireworks ( ) ;
} ) ;
2020-11-30 19:15:49 +00:00
} ;
2023-07-23 22:38:25 +00:00
dots1 . style . opacity = ( ( t . seconds % 2 ) || ( t . total <= 3600000 ) || ( t . days > 0 ) ) ? 1 : 0 ;
dots2 . style . opacity = ( ( t . seconds % 2 ) || ( t . total <= 3600000 ) ) ? 1 : 0 ;
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");
2021-08-15 19:33:18 +00:00
setInterval ( changeBackgroundColor , 1000 / 60 ) ;