@@ -90,6 +90,8 @@
< option value = "storm" > Storm (⚠️ Epilepsy Warning⚠️ )< / option >
< option value = "summer" > Summer (Bubbles)< / option >
< option value = "underwater" > Underwater< / option >
< option value = "patrick" disabled > St. Patrick's Day (not implemented yet. Please commit ideas/implementation in a issue or PR)< / option >
< option value = "thanksgiving" disabled > Thanksgiving (not implemented yet. Please commit ideas/implementation in a issue or PR)< / option >
< / select >
< div class = "fieldDescription" > The season to display if automation is disabled or no "Auto Selection" rule matches the current date.< / div >
< / div >
@@ -350,8 +352,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableEid" name = "EnableEid" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Eid al-Fitr Seasonal< / span >
< div class = "fieldDescription" > Enable the Eid al-Fitr theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Eid al-Fitr theme in general (e.g. for automation).< / div >
< / div >
< div class = "inputContainer" >
< label class = "inputLabel" for = "EidLanternCount" > Lantern Count< / label >
@@ -413,8 +415,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableFilmNoir" name = "EnableFilmNoir" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Film-Noir Seasonal< / span >
< div class = "fieldDescription" > Enable the Film-Noir theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Film-Noir theme in general (e.g. for automation).< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -464,8 +466,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableFriday13" name = "EnableFriday13" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Friday the 13th Seasonal< / span >
< div class = "fieldDescription" > Enable the Friday the 13th theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Friday the 13th theme in general (e.g. for automation).< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -476,8 +478,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableFrost" name = "EnableFrost" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Frost Seasonal< / span >
< div class = "fieldDescription" > Enable the Frost theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Frost theme in general (e.g. for automation).< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -560,15 +562,15 @@
< label class = "emby-checkbox-label" >
< input id = "EnableMarioDay" name = "EnableMarioDay" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Mario Day Seasonal< / span >
< div class = "fieldDescription" > Enable the Mario Day theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Mario Day theme in general (e.g. for automation).< / div >
< / div >
< div class = "checkboxContainer checkboxContainer-withDescription" >
< label class = "emby-checkbox-label" >
< input id = "LetMarioJump" name = "LetMarioJump" type = "checkbox" is = "emby-checkbox" / >
< span > Let Mario Jump< / span >
< div class = "fieldDescription" > Lets Mario jump randomly.< / div >
< / label >
< div class = "fieldDescription" > Lets Mario jump randomly.< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -608,8 +610,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableOktoberfest" name = "EnableOktoberfest" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Oktoberfest Seasonal< / span >
< div class = "fieldDescription" > Enable the Oktoberfest theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Oktoberfest theme in general (e.g. for automation).< / div >
< / div >
< div class = "inputContainer" >
< label class = "inputLabel" for = "OktoberfestCount" > Symbol Count< / label >
@@ -625,8 +627,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableDifferentDurationOktoberfest" name = "EnableDifferentDurationOktoberfest" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Different Duration< / span >
< div class = "fieldDescription" > Randomize the Oktoberfest symbol duration.< / div >
< / label >
< div class = "fieldDescription" > Randomize the Oktoberfest symbol duration.< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -665,8 +667,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableOscar" name = "EnableOscar" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Oscar Awards Seasonal< / span >
< div class = "fieldDescription" > Enable the Oscar Awards theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Oscar Awards theme in general (e.g. for automation).< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -975,11 +977,6 @@
< input is = "emby-input" type = "number" id = "SpookyCount" name = "SpookyCount" / >
< div class = "fieldDescription" > Number of floating symbols.< / div >
< / div >
< div class = "inputContainer" >
< label class = "inputLabel" for = "SpookyCountMobile" > Symbol Count (Mobile)< / label >
< input is = "emby-input" type = "number" id = "SpookyCountMobile" name = "SpookyCountMobile" / >
< div class = "fieldDescription" > Amount of symbols on mobile. Minimum 0. Warning: High values may affect performance.< / div >
< / div >
< div class = "inputContainer" >
< label class = "inputLabel" for = "SpookySize" > Symbol Size< / label >
< input is = "emby-input" type = "number" id = "SpookySize" name = "SpookySize" / >
@@ -990,12 +987,14 @@
< input id = "EnableDifferentDurationSpooky" name = "EnableDifferentDurationSpooky" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Different Symbol Durations< / span >
< / label >
< div class = "fieldDescription" > Enable different animation durations for symbols.< / div >
< / div >
< div class = "checkboxContainer" >
< label class = "emby-checkbox-label" >
< input id = "EnableSpookySway" name = "EnableSpookySway" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Swaying Motion< / span >
< / label >
< div class = "fieldDescription" > Enable swaying motion for symbols.< / div >
< / div >
< div class = "inputContainer" >
< label class = "inputLabel" for = "SpookyGlowSize" > Glow Size< / label >
@@ -1161,8 +1160,8 @@
< label class = "emby-checkbox-label" >
< input id = "EnableStarWars" name = "EnableStarWars" type = "checkbox" is = "emby-checkbox" / >
< span > Enable Star Wars Seasonal< / span >
< div class = "fieldDescription" > Enable the Star Wars theme in general (e.g. for automation).< / div >
< / label >
< div class = "fieldDescription" > Enable the Star Wars theme in general (e.g. for automation).< / div >
< / div >
< / details >
< hr style = "max-width: 800px; margin: 1em 0;" >
@@ -1579,41 +1578,41 @@
document . querySelector ( '#SeasonalsSelectedSeason' ) . value = config . SelectedSeason ;
document . querySelector ( '#SeasonalsAutomateSeasonSelection' ) . checked = config . AutomateSeasonSelection ;
document . querySelector ( '#SeasonalsEnableClientSideToggle' ) . checked = config . EnableClientSideToggle !== undefined ? config . EnableClientSideToggle : true ;
if ( ! config . Autumn ) config . Autumn = { } ;
if ( ! config . Birthday ) config . Birthday = { } ;
if ( ! config . Carnival ) config . Carnival = { } ;
if ( ! config . CherryBlossom ) config . CherryBlossom = { } ;
if ( ! config . Christmas ) config . Christmas = { } ;
if ( ! config . EarthDay ) config . EarthDay = { } ;
if ( ! config . Easter ) config . Easter = { } ;
if ( ! config . Eid ) config . Eid = { } ;
if ( ! config . Eurovision ) config . Eurovision = { } ;
if ( ! config . FilmNoir ) config . FilmNoir = { } ;
if ( ! config . Fireworks ) config . Fireworks = { } ;
if ( ! config . Friday13 ) config . Friday13 = { } ;
if ( ! config . Frost ) config . Frost = { } ;
if ( ! config . Halloween ) config . Halloween = { } ;
if ( ! config . Hearts ) config . Hearts = { } ;
if ( ! config . MarioDay ) config . MarioDay = { } ;
if ( ! config . Matrix ) config . Matrix = { } ;
if ( ! config . Oktoberfest ) config . Oktoberfest = { } ;
if ( ! config . Olympia ) config . Olympia = { } ;
if ( ! config . Oscar ) config . Oscar = { } ;
if ( ! config . Pride ) config . Pride = { } ;
if ( ! config . Rain ) config . Rain = { } ;
if ( ! config . Resurrection ) config . Resurrection = { } ;
if ( ! config . Santa ) config . Santa = { } ;
if ( ! config . Snowfall ) config . Snowfall = { } ;
if ( ! config . Snowflakes ) config . Snowflakes = { } ;
if ( ! config . Snowstorm ) config . Snowstorm = { } ;
if ( ! config . Space ) config . Space = { } ;
if ( ! config . Spooky ) config . Spooky = { } ;
if ( ! config . Sports ) config . Sports = { } ;
if ( ! config . Spring ) config . Spring = { } ;
if ( ! config . StarWars ) config . StarWars = { } ;
if ( ! config . Storm ) config . Storm = { } ;
if ( ! config . Summer ) config . Summer = { } ;
if ( ! config . Underwater ) config . Underwater = { } ;
if ( ! config . Autumn ) config . Autumn = { EnableAutumn : true , LeafCount : 35 , LeafCountMobile : 10 , EnableDifferentDuration : true , EnableRotation : false } ;
if ( ! config . Birthday ) config . Birthday = { EnableBirthday : true , SymbolCount : 12 , SymbolCountMobile : 5 , EnableDifferentDuration : true , ConfettiCount : 60 } ;
if ( ! config . Carnival ) config . Carnival = { EnableCarnival : true , EnableDifferentDuration : true , EnableCarnivalSway : true , ObjectCount : 120 , ObjectCountMobile : 60 } ;
if ( ! config . CherryBlossom ) config . CherryBlossom = { EnableCherryBlossom : true , PetalCount : 25 , PetalCountMobile : 15 , EnableDifferentDuration : true } ;
if ( ! config . Christmas ) config . Christmas = { EnableChristmas : true , SymbolCount : 25 , SymbolCountMobile : 10 , EnableDifferentDuration : true } ;
if ( ! config . EarthDay ) config . EarthDay = { EnableEarthDay : true , FlowersCount : 60 , FlowersCountMobile : 20 } ;
if ( ! config . Easter ) config . Easter = { EnableEaster : true , EnableBunny : true , MinBunnyRestTime : 2000 , MaxBunnyRestTime : 5000 , EggCount : 15 } ;
if ( ! config . Eid ) config . Eid = { EnableEid : true , LanternCount : 8 , LanternCountMobile : 3 } ;
if ( ! config . Eurovision ) config . Eurovision = { EnableEurovision : true , SymbolCount : 25 , EnableDifferentDuration : true , EnableColorfulNotes : true , EurovisionColors : '#ff0026ff,#17a6ffff,#32d432ff,#FFD700,#f0821bff,#f826f8ff' , EurovisionGlowSize : 2 } ;
if ( ! config . FilmNoir ) config . FilmNoir = { EnableFilmNoir : true } ;
if ( ! config . Fireworks ) config . Fireworks = { EnableFireworks : true , ScrollFireworks : true , ParticleCount : 50 , MinFireworks : 3 , MaxFireworks : 6 , LaunchInterval : 3200 } ;
if ( ! config . Friday13 ) config . Friday13 = { EnableFriday13 : true } ;
if ( ! config . Frost ) config . Frost = { EnableFrost : true } ;
if ( ! config . Halloween ) config . Halloween = { EnableHalloween : true , SymbolCount : 25 , SymbolCountMobile : 10 , EnableDifferentDuration : true , EnableSpiders : true , EnableMice : true } ;
if ( ! config . Hearts ) config . Hearts = { EnableHearts : true , SymbolCount : 25 , SymbolCountMobile : 10 , EnableDifferentDuration : true } ;
if ( ! config . MarioDay ) config . MarioDay = { EnableMarioDay : true , LetMarioJump : true } ;
if ( ! config . Matrix ) config . Matrix = { EnableMatrix : true , SymbolCount : 25 , EnableMatrixBackground : false , MatrixChars : '0123456789' } ;
if ( ! config . Oktoberfest ) config . Oktoberfest = { EnableOktoberfest : true , SymbolCount : 25 , SymbolCountMobile : 10 , EnableDifferentDuration : true } ;
if ( ! config . Olympia ) config . Olympia = { EnableOlympia : true , SymbolCount : 25 , SymbolCountMobile : 10 , EnableDifferentDuration : true } ;
if ( ! config . Oscar ) config . Oscar = { EnableOscar : true } ;
if ( ! config . Pride ) config . Pride = { EnablePride : true , HeartCount : 20 , HeartSize : 1.5 , ColorHeader : true } ;
if ( ! config . Rain ) config . Rain = { EnableRain : true , RaindropCount : 300 , RaindropCountMobile : 150 , RainSpeed : 1.0 } ;
if ( ! config . Resurrection ) config . Resurrection = { EnableResurrection : true , SymbolCount : 12 , SymbolCountMobile : 5 , EnableDifferentDuration : true } ;
if ( ! config . Santa ) config . Santa = { EnableSanta : true , SnowflakesCount : 500 , SnowflakesCountMobile : 250 , SnowFallSpeed : 3 , SantaSpeed : 10 , SantaSpeedMobile : 8 , MaxSantaRestTime : 8 , MinSantaRestTime : 3 , MaxPresentFallSpeed : 5 , MinPresentFallSpeed : 2 } ;
if ( ! config . Snowfall ) config . Snowfall = { EnableSnowfall : true , SnowflakesCount : 500 , SnowflakesCountMobile : 250 , Speed : 3 } ;
if ( ! config . Snowflakes ) config . Snowflakes = { EnableSnowflakes : true , SnowflakeCount : 25 , SnowflakeCountMobile : 10 , EnableColoredSnowflakes : true , EnableDifferentDuration : true } ;
if ( ! config . Snowstorm ) config . Snowstorm = { EnableSnowstorm : true , SnowflakesCount : 500 , SnowflakesCountMobile : 250 , Speed : 6 , HorizontalWind : 4 , VerticalVariation : 2 } ;
if ( ! config . Space ) config . Space = { EnableSpace : true , PlanetCount : 6 , AstronautCount : 1 , SatelliteCount : 4 , IssCount : 1 , RocketCount : 1 , EnableDifferentDuration : true , SymbolCountMobile : 2 } ;
if ( ! config . Spooky ) config . Spooky = { EnableSpooky : true , SymbolCount : 25 , EnableDifferentDuration : true , EnableSpookySway : true , SpookySize : 20 , SpookyGlowSize : 2 } ;
if ( ! config . Sports ) config . Sports = { EnableSports : true , SymbolCount : 5 , EnableDifferentDuration : true , TurfColor : '#228b22' , SportsBalls : 'football,basketball,tennis,volleyball' , EnableTrophy : false , ConfettiColors : '#000000,#FF0000,#FFCC00' } ;
if ( ! config . Spring ) config . Spring = { EnableSpring : true , PollenCount : 30 , EnableSpringSunbeams : true , SunbeamCount : 5 , BirdCount : 3 , ButterflyCount : 4 , BeeCount : 2 , LadybugCount : 2 , SymbolCountMobile : 2 } ;
if ( ! config . StarWars ) config . StarWars = { EnableStarWars : true } ;
if ( ! config . Storm ) config . Storm = { EnableStorm : true , RaindropCount : 300 , RaindropCountMobile : 150 , EnableLightning : true , RainSpeed : 1.0 } ;
if ( ! config . Summer ) config . Summer = { EnableSummer : true , BubbleCount : 30 , DustCount : 50 , SymbolCountMobile : 2 , EnableDifferentDuration : true } ;
if ( ! config . Underwater ) config . Underwater = { EnableUnderwater : true , SymbolCountMobile : 2 , EnableDifferentDuration : true , EnableLightRays : true , SeaweedCount : 50 , CrabCount : 2 , StarfishCount : 2 , ShellCount : 2 , FishCount : 15 , SeahorseCount : 3 , JellyfishCount : 3 , TurtleCount : 1 } ;
// Load Rules
try {
@@ -1625,8 +1624,8 @@
// Advanced Config
// Autumn
// Autumn
document . querySelector ( '#EnableAutumn' ) . checked = config . Autumn . EnableAutumn ;
document . querySelector ( '#AutumnLeafCount' ) . value = config . Autumn . LeafCount ;
document . querySelector ( '#AutumnLeafCountMobile' ) . value = config . Autumn . LeafCountMobile ;
@@ -1634,61 +1633,60 @@
document . querySelector ( '#EnableRotation' ) . checked = config . Autumn . EnableRotation ;
// Birthday
document . querySelector ( '#EnableBirthday' ) . checked = config . Birthday . EnableBirthday !== false ;
document . querySelector ( '#EnableDifferentDurationBirthday ' ) . checked = config . Birthday . EnableDifferentDuration !== false ;
document . querySelector ( '#BirthdaySymbolCount' ) . value = config . Birthday . SymbolCount || 25 ;
document . querySelector ( '#BirthdaySymbolCountMobile ' ) . value = config . Birthday . SymbolCountMobile || 10 ;
document . querySelector ( '#BirthdayConfettiCount' ) . value = config . Birthday . ConfettiCount || 60 ;
config . Birthday = config . Birthday || { } ;
document . querySelector ( '#EnableBirthday' ) . checked = config . Birthday . EnableBirthday ;
document . querySelector ( '#EnableDifferentDuration Birthday' ) . checked = config . Birthday . EnableDifferentDuration ;
document . querySelector ( '#BirthdaySymbolCount ' ) . value = config . Birthday . SymbolCount ;
document . querySelector ( '#BirthdaySymbolCountMobile ' ) . value = config . Birthday . SymbolCountMobile ;
document . querySelector ( '#BirthdayConfettiCount ' ) . value = config . Birthday . ConfettiCount ;
// Carnival
document . querySelector ( '#EnableCarnival' ) . checked = config . Carnival . EnableCarnival ;
document . querySelector ( '#EnableCarnivalSway' ) . checked = config . Carnival . EnableCarnivalSway !== undefined ? config . Carnival . EnableCarnivalSway : true ;
document . querySelector ( '#EnableCarnivalSway' ) . checked = config . Carnival . EnableCarnivalSway ;
document . querySelector ( '#CarnivalObjectCount' ) . value = config . Carnival . ObjectCount ;
document . querySelector ( '#CarnivalObjectCountMobile' ) . value = config . Carnival . ObjectCountMobile ;
document . querySelector ( '#EnableDifferentDurationCarnival' ) . checked = config . Carnival . EnableDifferentDuration ;
// CherryBlossom
document . querySelector ( '#EnableCherryBlossom' ) . checked = config . CherryBlossom . EnableCherryBlossom ;
document . querySelector ( '#CherryBlossomPetalCount' ) . value = config . CherryBlossom . PetalCount ;
document . querySelector ( '#CherryBlossomPetalCountMobile' ) . value = config . CherryBlossom . PetalCountMobile ;
document . querySelector ( '#EnableDifferentDurationCherryBlossom' ) . checked = config . CherryBlossom . EnableDifferentDuration ;
// Christmas
document . querySelector ( '#EnableChristmas' ) . checked = config . Christmas . EnableChristmas ;
document . querySelector ( '#ChristmasCount' ) . value = config . Christmas . SymbolCount ;
document . querySelector ( '#ChristmasCountMobile' ) . value = config . Christmas . SymbolCountMobile ;
document . querySelector ( '#EnableDifferentDurationChristmas' ) . checked = config . Christmas . EnableDifferentDuration ;
// EarthDay
document . querySelector ( '#EnableEarthDay' ) . checked = config . EarthDay . EnableEarthDay ;
document . querySelector ( '#EarthDayFlowersCount' ) . value = config . EarthDay . FlowersCount !== undefined ? config . EarthDay . FlowersCount : 60 ;
document . querySelector ( '#EarthDayFlowersCountMobile' ) . value = config . EarthDay . FlowersCountMobile !== undefined ? config . EarthDay . FlowersCountMobile : 20 ;
document . querySelector ( '#EarthDayFlowersCount' ) . value = config . EarthDay . FlowersCount ;
document . querySelector ( '#EarthDayFlowersCountMobile' ) . value = config . EarthDay . FlowersCountMobile ;
// Easter
document . querySelector ( '#EnableEaster' ) . checked = config . Easter . EnableEaster ;
document . querySelector ( '#EasterEggCount' ) . value = config . Easter . EggCount ;
document . querySelector ( '#EasterBunny' ) . checked = config . Easter . EnableBunny ;
document . querySelector ( '#MinBunnyRestTime' ) . value = config . Easter . MinBunnyRestTime ;
document . querySelector ( '#MaxBunnyRestTime' ) . value = config . Easter . MaxBunnyRestTime ;
// Eurovision
// Eid al-Fitr
document . querySelector ( '#EnableEid' ) . checked = config . Eid . EnableEid ;
document . querySelector ( '#EidLanternCount' ) . value = config . Eid . LanternCount ;
document . querySelector ( '#EidLanternCountMobile' ) . value = config . Eid . LanternCountMobile ;
document . querySelector ( '#EnableEurovision' ) . checked = config . Eurovision . EnableEurovision !== false ;
document . querySelector ( '#EurovisionSymbolCount ' ) . value = config . Eurovision . SymbolCount !== undefined ? config . Eurovision . SymbolCount : 25 ;
document . querySelector ( '#EnableDifferentDurationEurovision ' ) . checked = config . Eurovision . EnableDifferentDuration !== false ;
document . querySelector ( '#EnableColorfulNotes ' ) . checked = config . Eurovision . EnableColorfulNotes !== false ;
document . querySelector ( '#EurovisionColor s' ) . value = config . Eurovision . EurovisionColors || '#ff0026ff,#17a6ffff,#32d432ff,#FFD700,#f0821bff,#f826f8ff' ;
document . querySelector ( '#EurovisionGlowSize ' ) . value = config . Eurovision . EurovisionGlowSize !== undefined ? config . Eurovision . EurovisionGlowSize : 2 ;
// Eurovision
document . querySelector ( '#Enable Eurovision' ) . checked = config . Eurovision . EnableEurovision ;
document . querySelector ( '#EurovisionSymbolCount ' ) . value = config . Eurovision . SymbolCount ;
document . querySelector ( '#EnableDifferentDurationEurovision ' ) . checked = config . Eurovision . EnableDifferentDuration ;
document . querySelector ( '#EnableColorfulNote s' ) . checked = config . Eurovision . EnableColorfulNotes ;
document . querySelector ( '#EurovisionColors ' ) . value = config . Eurovision . EurovisionColors ;
document . querySelector ( '#EurovisionGlowSize' ) . value = config . Eurovision . EurovisionGlowSize ;
// Film Noir
document . querySelector ( '#EnableFilmNoir' ) . checked = config . FilmNoir . EnableFilmNoir ;
// Fireworks
document . querySelector ( '#EnableFireworks' ) . checked = config . Fireworks . EnableFireworks ;
document . querySelector ( '#FireworksParticles' ) . value = config . Fireworks . ParticleCount ;
document . querySelector ( '#FireworksInterval' ) . value = config . Fireworks . LaunchInterval ;
@@ -1696,61 +1694,70 @@
document . querySelector ( '#MinFireworks' ) . value = config . Fireworks . MinFireworks ;
document . querySelector ( '#MaxFireworks' ) . value = config . Fireworks . MaxFireworks ;
// Halloween
// Friday the 13th
document . querySelector ( '#EnableFriday13' ) . checked = config . Friday13 . EnableFriday13 ;
// Frost
document . querySelector ( '#EnableFrost' ) . checked = config . Frost . EnableFrost ;
// Halloween
document . querySelector ( '#EnableHalloween' ) . checked = config . Halloween . EnableHalloween ;
document . querySelector ( '#HalloweenCount' ) . value = config . Halloween . SymbolCount ;
document . querySelector ( '#HalloweenCountMobile' ) . value = config . Halloween . SymbolCountMobile ;
document . querySelector ( '#EnableDifferentDurationHalloween' ) . checked = config . Halloween . EnableDifferentDuration ;
document . querySelector ( '#EnableSpiders' ) . checked = config . Halloween . EnableSpiders !== undefined ? config . Halloween . EnableSpiders : true ;
document . querySelector ( '#EnableMice' ) . checked = config . Halloween . EnableMice !== undefined ? config . Halloween . EnableMice : true ;
document . querySelector ( '#EnableSpiders' ) . checked = config . Halloween . EnableSpiders ;
document . querySelector ( '#EnableMice' ) . checked = config . Halloween . EnableMice ;
// Hearts
document . querySelector ( '#EnableHearts' ) . checked = config . Hearts . EnableHearts ;
document . querySelector ( '#HeartsCount' ) . value = config . Hearts . SymbolCount ;
document . querySelector ( '#HeartsCountMobile' ) . value = config . Hearts . SymbolCountMobile ;
document . querySelector ( '#EnableDifferentDurationHearts' ) . checked = config . Hearts . EnableDifferentDuration ;
// Mat rix
// Mario Day
document . querySelector ( '#EnableMarioDay' ) . checked = config . MarioDay . EnableMarioDay ;
document . querySelector ( '#LetMarioJump' ) . checked = config . MarioDay . LetMarioJump ;
document . querySelector ( '#EnableMatrix' ) . checked = config . Matrix . EnableMatrix !== false ;
document . querySelector ( '#MatrixSymbolCount ' ) . value = config . Matrix . SymbolCount !== undefined ? config . Matrix . SymbolCount : 25 ;
document . querySelector ( '#MatrixChars ' ) . value = config . Matrix . MatrixChars !== undefined ? config . Matrix . MatrixChars : '0123456789' ;
document . querySelector ( '#EnableMatrixBackground' ) . checked = config . Matrix . EnableMatrixBackground != = undefined ? config . Matrix . EnableMatrixBackground : false ;
// Matrix
document . querySelector ( '#Enable Matrix' ) . checked = config . Matrix . EnableMatrix ;
document . querySelector ( '#MatrixSymbolCount ' ) . value = config . Matrix . SymbolCount ;
document . querySelector ( '#MatrixChars' ) . value = config . Matrix . MatrixChars ;
document . querySelector ( '#EnableMatrixBackground' ) . checked = config . Matrix . EnableMatrixBackground ;
// Oktoberfest
document . querySelector ( '#EnableOktoberfest' ) . checked = config . Oktoberfest . EnableOktoberfest ;
document . querySelector ( '#OktoberfestCount' ) . value = config . Oktoberfest . SymbolCount ;
document . querySelector ( '#OktoberfestCountMobile' ) . value = config . Oktoberfest . SymbolCountMobile ;
document . querySelector ( '#EnableDifferentDurationOktoberfest' ) . checked = config . Oktoberfest . EnableDifferentDuration ;
// Olympia
document . querySelector ( '#EnableOlympia' ) . checked = config . Olympia . EnableOlympia ;
document . querySelector ( '#EnableDifferentDurationOlympia' ) . checked = config . Olympia . EnableDifferentDuration ;
document . querySelector ( '#OlympiaSymbolCount' ) . value = config . Olympia . SymbolCount ;
document . querySelector ( '#OlympiaSymbolCountMobile' ) . value = config . Olympia . SymbolCountMobile ;
if ( ! config . Olympia ) config . Olympia = { EnableOlympia : true , SymbolCount : 25 , EnableRandomSymbols : true , EnableRandomSymbolsMobile : false , EnableDifferentDuration : true } ;
document . querySelector ( '#EnableOlympia' ) . checked = config . Olympia . EnableOlympia !== false ;
document . querySelector ( '#EnableDifferentDurationOlympia' ) . checked = config . Olympia . EnableDifferentDuration !== false ;
document . querySelector ( '#OlympiaSymbolCount' ) . value = config . Olympia . SymbolCount || 25 ;
document . querySelector ( '#OlympiaSymbolCountMobile' ) . value = config . Olympia . SymbolCountMobile || 10 ;
// Oscar
document . querySelector ( '#EnableOscar' ) . checked = config . Oscar . EnableOscar ;
// Pride
document . querySelector ( '#EnablePride' ) . checked = config . Pride . EnablePride ;
document . querySelector ( '#PrideHeartCount' ) . value = config . Pride . HeartCount ;
document . querySelector ( '#PrideHeartSize' ) . value = config . Pride . HeartSize ;
document . querySelector ( '#PrideColorHeader' ) . checked = config . Pride . ColorHeader ;
// Rain
document . querySelector ( '#EnableRain' ) . checked = config . Rain . EnableRain ;
document . querySelector ( '#RaindropCount' ) . value = config . Rain . RaindropCount ;
document . querySelector ( '#RaindropCountMobile' ) . value = config . Rain . RaindropCountMobile ;
document . querySelector ( '#RainSpeed' ) . value = config . Rain . RainSpeed ;
// Resurrection
document . querySelector ( '#EnableResurrection' ) . checked = config . Resurrection . EnableResurrection ;
document . querySelector ( '#ResurrectionSymbolCount' ) . value = config . Resurrection . SymbolCount ;
document . querySelector ( '#ResurrectionSymbolCountMobile' ) . value = config . Resurrection . SymbolCountMobile ;
document . querySelector ( '#EnableDifferentDurationResurrection' ) . checked = config . Resurrection . EnableDifferentDuration ;
// Santa
document . querySelector ( '#EnableSanta' ) . checked = config . Santa . EnableSanta ;
document . querySelector ( '#SantaSnowflakes' ) . value = config . Santa . SnowflakesCount ;
document . querySelector ( '#SantaSnowflakesMobile' ) . value = config . Santa . SnowflakesCountMobile ;
@@ -1763,14 +1770,12 @@
document . querySelector ( '#MinPresentFallSpeed' ) . value = config . Santa . MinPresentFallSpeed ;
// Snowfall
document . querySelector ( '#EnableSnowfall' ) . checked = config . Snowfall . EnableSnowfall ;
document . querySelector ( '#SnowfallCount' ) . value = config . Snowfall . SnowflakesCount ;
document . querySelector ( '#SnowfallCountMobile' ) . value = config . Snowfall . SnowflakesCountMobile ;
document . querySelector ( '#SnowfallSpeed' ) . value = config . Snowfall . Speed ;
// Snowflakes
document . querySelector ( '#SnowflakesCount' ) . value = config . Snowflakes . SnowflakeCount ;
document . querySelector ( '#SnowflakeCountMobile' ) . value = config . Snowflakes . SnowflakeCountMobile ;
document . querySelector ( '#EnableSnowflakes' ) . checked = config . Snowflakes . EnableSnowflakes ;
@@ -1778,7 +1783,6 @@
document . querySelector ( '#EnableDifferentDurationSnowflakes' ) . checked = config . Snowflakes . EnableDifferentDuration ;
// Snowstorm
document . querySelector ( '#EnableSnowstorm' ) . checked = config . Snowstorm . EnableSnowstorm ;
document . querySelector ( '#SnowstormCount' ) . value = config . Snowstorm . SnowflakesCount ;
document . querySelector ( '#SnowstormCountMobile' ) . value = config . Snowstorm . SnowflakesCountMobile ;
@@ -1787,93 +1791,78 @@
document . querySelector ( '#SnowstormVerticalVariation' ) . value = config . Snowstorm . VerticalVariation ;
// Space
document . querySelector ( '#EnableSpace' ) . checked = config . Space . EnableSpace || false ;
document . querySelector ( '#EnableDifferentDurationSpace ' ) . checked = config . Space . EnableDifferentDuration || false ;
document . querySelector ( '#Plane tCount' ) . value = config . Space . PlanetCount !== undefined ? config . Space . PlanetCount : 12 ;
document . querySelector ( '#Astronaut Count' ) . value = config . Space . AstronautCount !== undefined ? config . Space . AstronautCount : 5 ;
document . querySelector ( '#Satellite Count' ) . value = config . Space . SatelliteCount !== undefined ? config . Space . SatelliteCount : 2 ;
document . querySelector ( '#Iss Count' ) . value = config . Space . IssCount !== undefined ? config . Space . IssCount : 1 ;
document . querySelector ( '#RocketCount ' ) . value = config . Space . RocketCount !== undefined ? config . Space . RocketCount : 1 ;
document . querySelector ( '#SpaceSymbolCountMobile' ) . value = config . Space . SymbolCountMobile !== undefined ? config . Space . SymbolCountMobile : 2 ;
document . querySelector ( '#EnableSpace' ) . checked = config . Space . EnableSpace ;
document . querySelector ( '#EnableDifferentDuration Space' ) . checked = config . Space . EnableDifferentDuration ;
document . querySelector ( '#PlanetCount ' ) . value = config . Space . PlanetCount ;
document . querySelector ( '#Astronau tCount' ) . value = config . Space . AstronautCount ;
document . querySelector ( '#Satellite Count' ) . value = config . Space . SatelliteCount ;
document . querySelector ( '#Iss Count' ) . value = config . Space . IssCount ;
document . querySelector ( '#Rocket Count' ) . value = config . Space . RocketCount ;
document . querySelector ( '#SpaceSymbolCountMobile ' ) . value = config . Space . SymbolCountMobile ;
// Spooky
document . querySelector ( '#SpookyCount ' ) . value = config . Spooky . SymbolCount !== undefined ? config . Spooky . SymbolCount : 25 ;
document . querySelector ( '#SpookyCountMobil e' ) . value = config . Spooky . SymbolCountMobile !== undefined ? config . Spooky . SymbolCountMobile : 10 ;
document . querySelector ( '#EnableSpooky' ) . checked = config . Spooky . EnableSpooky !== undefined ? config . Spooky . EnableSpooky : true ;
document . querySelector ( '#SpookySize' ) . value = config . Spooky . SpookySize !== undefined ? config . Spooky . SpookySize : 30 ;
document . querySelector ( '#EnableSpookySway ' ) . checked = config . Spooky . EnableSpookySway !== undefined ? config . Spooky . EnableSpookySway : true ;
document . querySelector ( '#SpookyGlowSize' ) . value = config . Spooky . SpookyGlowSize !== undefined ? config . Spooky . SpookyGlowSize : 5 ;
document . querySelector ( '#EnableDifferentDurationSpooky' ) . checked = config . Spooky . EnableDifferentDuration !== false ;
document . querySelector ( '#SpookyCount' ) . value = config . Spooky . SymbolCount ;
document . querySelector ( '#Enable Spooky' ) . checked = config . Spooky . EnableSpooky ;
document . querySelector ( '#SpookySiz e' ) . value = config . Spooky . SpookySize ;
document . querySelector ( '#EnableSpookySway ' ) . checked = config . Spooky . EnableSpookySway ;
document . querySelector ( '#SpookyGlow Size' ) . value = config . Spooky . SpookyGlow Size ;
document . querySelector ( '#EnableDifferentDuration Spooky' ) . checked = config . Spooky . EnableDifferentDuration ;
// Sports
const savedBallsString = config . Sports . SportsBalls || 'football,basketball,tennis,volleyball' ;
const savedBallsString = config . Sports . SportsBalls ;
const savedBalls = savedBallsString . split ( ',' ) ;
document . querySelector ( '#EnableSports' ) . checked = config . Sports . EnableSports !== false ;
document . querySelector ( '#EnableDifferentDurationSports' ) . checked = config . Sports . EnableDifferentDuration !== false ;
document . querySelector ( '#SportsSymbolCount' ) . value = config . Sports . SymbolCount !== undefined ? config . Sports . SymbolCount : 5 ;
document . querySelector ( '#TurfColor' ) . value = config . Sports . TurfColor || '#228b22' ;
document . querySelector ( '#SportsConfettiColors' ) . value = config . Sports . ConfettiColors || '#000000,#FF0000,#FFCC00' ;
document . querySelector ( '#EnableTrophy' ) . checked = config . Sports . EnableTrophy === true ;
document . querySelector ( '#EnableSports' ) . checked = config . Sports . EnableSports ;
document . querySelector ( '#EnableDifferentDurationSports' ) . checked = config . Sports . EnableDifferentDuration ;
document . querySelector ( '#SportsSymbolCount' ) . value = config . Sports . SymbolCount ;
document . querySelector ( '#TurfColor' ) . value = config . Sports . TurfColor ;
document . querySelector ( '#SportsConfettiColors' ) . value = config . Sports . ConfettiColors ;
document . querySelector ( '#EnableTrophy' ) . checked = config . Sports . EnableTrophy ;
document . querySelectorAll ( '.sport-ball-cb' ) . forEach ( cb => {
cb . checked = savedBalls . some ( b => b === cb . value || b . startsWith ( cb . value + '_' ) ) ;
} ) ;
// Spring
document . querySelector ( '#EnableSpring' ) . checked = config . Spring . EnableSpring !== false ;
document . querySelector ( '#EnableSpringSunbeams' ) . checked = config . Spring . EnableSpringSunbeams !== false ;
document . querySelector ( '#SpringPollenCount' ) . value = config . Spring . PollenCount !== undefined ? config . Spring . PollenCount : 30 ;
document . querySelector ( '#SpringSunbeamCount' ) . value = config . Spring . SunbeamCount !== undefined ? config . Spring . SunbeamCount : 5 ;
document . querySelector ( '#SpringBirdCount' ) . value = config . Spring . BirdCount !== undefined ? config . Spring . BirdCount : 3 ;
document . querySelector ( '#SpringButterflyCount' ) . value = config . Spring . ButterflyCount !== undefined ? config . Spring . ButterflyCount : 4 ;
document . querySelector ( '#SpringBeeCount' ) . value = config . Spring . BeeCount !== undefined ? config . Spring . BeeCount : 2 ;
document . querySelector ( '#SpringLadybugCount' ) . value = config . Spring . LadybugCount !== undefined ? config . Spring . LadybugCount : 2 ;
document . querySelector ( '#SpringSymbolCountMobile' ) . value = config . Spring . SymbolCountMobile !== undefined ? config . Spring . SymbolCountMobile : 2 ;
document . querySelector ( '#EnableSpring' ) . checked = config . Spring . EnableSpring ;
document . querySelector ( '#EnableSpringSunbeams' ) . checked = config . Spring . EnableSpringSunbeams ;
document . querySelector ( '#SpringPollenCount' ) . value = config . Spring . PollenCount ;
document . querySelector ( '#SpringSunbeamCount' ) . value = config . Spring . SunbeamCount ;
document . querySelector ( '#SpringBirdCount' ) . value = config . Spring . BirdCount ;
document . querySelector ( '#SpringButterflyCount' ) . value = config . Spring . ButterflyCount ;
document . querySelector ( '#SpringBeeCount' ) . value = config . Spring . BeeCount ;
document . querySelector ( '#SpringLadybugCount' ) . value = config . Spring . LadybugCount ;
document . querySelector ( '#SpringSymbolCountMobile' ) . value = config . Spring . SymbolCountMobile ;
// Star Wars
document . querySelector ( '#EnableStarWars' ) . checked = config . StarWars . EnableStarWars ;
// Storm
document . querySelector ( '#EnableStorm' ) . checked = config . Storm . EnableStorm !== false ;
document . querySelector ( '#StormRaindropCount' ) . value = config . Storm . RaindropCount !== undefined ? config . Storm . RaindropCount : 300 ;
document . querySelector ( '#StormRaindropCountMobile' ) . value = config . Storm . RaindropCountMobile !== undefined ? config . Storm . RaindropCountMobile : 150 ;
document . querySelector ( '#StormRainSpeed' ) . value = config . Storm . RainSpeed !== undefined ? config . Storm . RainSpeed : 1.0 ;
document . querySelector ( '#StormEnableLightning' ) . checked = config . Storm . EnableLightning !== false ;
document . querySelector ( '#EnableStorm' ) . checked = config . Storm . EnableStorm ;
document . querySelector ( '#StormRaindropCount' ) . value = config . Storm . RaindropCount ;
document . querySelector ( '#StormRaindropCountMobile' ) . value = config . Storm . RaindropCountMobile ;
document . querySelector ( '#StormRainSpeed' ) . value = config . Storm . RainSpeed ;
document . querySelector ( '#StormEnableLightning' ) . checked = config . Storm . EnableLightning ;
// Summer
document . querySelector ( '#EnableSummer' ) . checked = config . Summer . EnableSummer !== false ;
document . querySelector ( '#SummerBubbleCount' ) . value = config . Summer . BubbleCount !== undefined ? config . Summer . BubbleCount : 30 ;
document . querySelector ( '#SummerDustCount' ) . value = config . Summer . DustCount !== undefined ? config . Summer . DustCount : 50 ;
document . querySelector ( '#SummerSymbolCountMobile' ) . value = config . Summer . SymbolCountMobile !== undefined ? config . Summer . SymbolCountMobile : 2 ;
document . querySelector ( '#EnableDifferentDurationSummer' ) . checked = config . Summer . EnableDifferentDuration !== false ;
document . querySelector ( '#EnableSummer' ) . checked = config . Summer . EnableSummer ;
document . querySelector ( '#SummerBubbleCount' ) . value = config . Summer . BubbleCount ;
document . querySelector ( '#SummerDustCount' ) . value = config . Summer . DustCount ;
document . querySelector ( '#SummerSymbolCountMobile' ) . value = config . Summer . SymbolCountMobile ;
document . querySelector ( '#EnableDifferentDurationSummer' ) . checked = config . Summer . EnableDifferentDuration ;
// Underwater
document . querySelector ( '#EnableUnderwater' ) . checked = config . Underwater . EnableUnderwater !== false ;
document . querySelector ( '#EnableUnderwaterLightRays' ) . checked = config . Underwater . EnableLightRays !== false ;
document . querySelector ( '#EnableDifferentDurationUnderwater' ) . checked = config . Underwater . EnableDifferentDuration !== false ;
document . querySelector ( '#UnderwaterSymbolCountMobile' ) . value = config . Underwater . SymbolCountMobile !== undefined ? config . Underwater . SymbolCountMobile : 2 ;
document . querySelector ( '#UnderwaterSeaweedCount' ) . value = config . Underwater . SeaweedCount !== undefined ? config . Underwater . SeaweedCount : 50 ;
document . querySelector ( '#UnderwaterFishCount' ) . value = config . Underwater . FishCount !== undefined ? config . Underwater . FishCount : 15 ;
document . querySelector ( '#UnderwaterSeahorseCount' ) . value = config . Underwater . SeahorseCount !== undefined ? config . Underwater . SeahorseCount : 3 ;
document . querySelector ( '#UnderwaterJellyfishCount' ) . value = config . Underwater . JellyfishCount !== undefined ? config . Underwater . JellyfishCount : 3 ;
document . querySelector ( '#UnderwaterTurtleCount' ) . value = config . Underwater . TurtleCount !== undefined ? config . Underwater . TurtleCount : 1 ;
document . querySelector ( '#UnderwaterCrabCount' ) . value = config . Underwater . CrabCount !== undefined ? config . Underwater . CrabCount : 2 ;
document . querySelector ( '#UnderwaterStarfishCount' ) . value = config . Underwater . StarfishCount !== undefined ? config . Underwater . StarfishCount : 2 ;
document . querySelector ( '#UnderwaterShellCount' ) . value = config . Underwater . ShellCount !== undefined ? config . Underwater . ShellCount : 2 ;
// Simple Themes
document . querySelector ( '#EnableFrost' ) . checked = config . Frost . EnableFrost !== false ;
document . querySelector ( '#EnableFilmNoir' ) . checked = config . FilmNoir . EnableFilmNoir !== false ;
document . querySelector ( '#EnableOscar' ) . checked = config . Oscar . EnableOscar !== false ;
document . querySelector ( '#EnableMarioDay' ) . checked = config . MarioDay . EnableMarioDay !== false ;
document . querySelector ( '#LetMarioJump' ) . checked = config . MarioDay . LetMarioJump !== false ;
document . querySelector ( '#EnableStarWars' ) . checked = config . StarWars . EnableStarWars !== false ;
document . querySelector ( '#EnableFriday13' ) . checked = config . Friday13 . EnableFriday13 !== false ;
document . querySelector ( '#EnableOktoberfest' ) . checked = config . Oktoberfest . EnableOktoberfest !== false ;
document . querySelector ( '#OktoberfestCount' ) . value = config . Oktoberfest . SymbolCount !== undefined ? config . Oktoberfest . SymbolCount : 25 ;
document . querySelector ( '#OktoberfestCountMobile' ) . value = config . Oktoberfest . SymbolCountMobile !== undefined ? config . Oktoberfest . SymbolCountMobile : 10 ;
document . querySelector ( '#EnableDifferentDurationOktoberfest' ) . checked = config . Oktoberfest . EnableDifferentDuration !== false ;
document . querySelector ( '#EnableEid' ) . checked = config . Eid . EnableEid !== false ;
document . querySelector ( '#EidLanternCount' ) . value = config . Eid . LanternCount !== undefined ? config . Eid . LanternCount : 8 ;
document . querySelector ( '#EidLanternCountMobile' ) . value = config . Eid . LanternCountMobile !== undefined ? config . Eid . LanternCountMobile : 3 ;
document . querySelector ( '#EnableUnderwater' ) . checked = config . Underwater . EnableUnderwater ;
document . querySelector ( '#EnableUnderwaterLightRays' ) . checked = config . Underwater . EnableLightRays ;
document . querySelector ( '#EnableDifferentDurationUnderwater' ) . checked = config . Underwater . EnableDifferentDuration ;
document . querySelector ( '#UnderwaterSymbolCountMobile' ) . value = config . Underwater . SymbolCountMobile ;
document . querySelector ( '#UnderwaterSeaweedCount' ) . value = config . Underwater . SeaweedCount ;
document . querySelector ( '#UnderwaterFishCount' ) . value = config . Underwater . FishCount ;
document . querySelector ( '#UnderwaterSeahorseCount' ) . value = config . Underwater . SeahorseCount ;
document . querySelector ( '#UnderwaterJellyfishCount' ) . value = config . Underwater . JellyfishCount ;
document . querySelector ( '#UnderwaterTurtleCount' ) . value = config . Underwater . TurtleCount ;
document . querySelector ( '#UnderwaterCrabCount' ) . value = config . Underwater . CrabCount ;
document . querySelector ( '#UnderwaterStarfishCount' ) . value = config . Underwater . StarfishCount ;
document . querySelector ( '#UnderwaterShellCount' ) . value = config . Underwater . ShellCount ;
} catch ( e ) {
console . error ( '[Seasonals] Error loading config:' , e ) ;
@@ -1903,28 +1892,6 @@
config . Autumn . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationAutumn' ) . checked ;
config . Autumn . EnableRotation = document . querySelector ( '#EnableRotation' ) . checked ;
// Sports (saved later to avoid duplicate)
// Olympia
if ( ! config . Olympia ) config . Olympia = { } ;
config . Olympia . EnableOlympia = document . querySelector ( '#EnableOlympia' ) . checked ;
config . Olympia . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationOlympia' ) . checked ;
config . Olympia . SymbolCount = parseInt ( document . querySelector ( '#OlympiaSymbolCount' ) . value ) ;
config . Olympia . SymbolCountMobile = parseInt ( document . querySelector ( '#OlympiaSymbolCountMobile' ) . value ) ;
// Space
if ( ! config . Space ) config . Space = { } ;
config . Space . EnableSpace = document . querySelector ( '#EnableSpace' ) . checked ;
config . Space . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSpace' ) . checked ;
config . Space . PlanetCount = parseInt ( document . querySelector ( '#PlanetCount' ) . value ) ;
config . Space . AstronautCount = parseInt ( document . querySelector ( '#AstronautCount' ) . value ) ;
config . Space . SatelliteCount = parseInt ( document . querySelector ( '#SatelliteCount' ) . value ) ;
config . Space . IssCount = parseInt ( document . querySelector ( '#IssCount' ) . value ) ;
config . Space . RocketCount = parseInt ( document . querySelector ( '#RocketCount' ) . value ) ;
config . Space . SymbolCountMobile = parseInt ( document . querySelector ( '#SpaceSymbolCountMobile' ) . value ) ;
// Underwater (saved later)
// Birthday
if ( ! config . Birthday ) config . Birthday = { } ;
config . Birthday . EnableBirthday = document . querySelector ( '#EnableBirthday' ) . checked ;
@@ -1933,26 +1900,52 @@
config . Birthday . SymbolCountMobile = parseInt ( document . querySelector ( '#BirthdaySymbolCountMobile' ) . value ) ;
config . Birthday . ConfettiCount = parseInt ( document . querySelector ( '#BirthdayConfettiCount' ) . value ) ;
// Snowflakes
config . Snowflakes . SnowflakeCount = parseInt ( document . querySelector ( '#SnowflakesCount ' ) . value ) ;
config . Snowflakes . SnowflakeCountMobile = parseInt ( document . querySelector ( '#SnowflakeCountMobile ' ) . value ) ;
config . Snowflakes . EnableSnowflakes = document . querySelector ( '#EnableSnowflakes ' ) . checked ;
config . Snowflakes . EnableColoredSnowflakes = document . querySelector ( '#EnableColoredSnowflakes ' ) . checked ;
config . Snowflakes . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSnowflakes ' ) . checked ;
// Carnival
config . Carnival . EnableCarnival = document . querySelector ( '#EnableCarnival ' ) . checked ;
config . Carnival . EnableCarnivalSway = document . querySelector ( '#EnableCarnivalSway ' ) . checked ;
config . Carnival . ObjectCount = parseInt ( document . querySelector ( '#CarnivalObjectCount ' ) . value ) ;
config . Carnival . ObjectCountMobile = parseInt ( document . querySelector ( '#CarnivalObjectCountMobile ' ) . value ) ;
config . Carnival . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationCarnival ' ) . checked ;
// Snowfall
config . Snowfall . EnableSnowfall = document . querySelector ( '#EnableSnowfall ' ) . checked ;
config . Snowfall . Snowflakes Count = parseInt ( document . querySelector ( '#Snowfal lCount' ) . value ) ;
config . Snowfall . Snowflakes CountMobile = parseInt ( document . querySelector ( '#Snowfal lCountMobile' ) . value ) ;
config . Snowfall . Speed = parseFloat ( document . querySelector ( '#SnowfallSpeed ') . value ) ;
// Cherry Blossom
config . CherryBlossom . EnableCherryBlossom = document . querySelector ( '#EnableCherryBlossom ' ) . checked ;
config . CherryBlossom . Petal Count = parseInt ( document . querySelector ( '#CherryBlossomPeta lCount' ) . value ) ;
config . CherryBlossom . Petal CountMobile = parseInt ( document . querySelector ( '#CherryBlossomPeta lCountMobile' ) . value ) ;
config . CherryBlossom . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationCherryBlossom ') . checked ;
// Snowstorm
config . Snowstorm . EnableSnowstorm = document . querySelector ( '#EnableSnowstorm ' ) . checked ;
config . Snowstorm . Snowflakes Count = parseInt ( document . querySelector ( '#Snowstorm Count' ) . value ) ;
config . Snowstorm . Snowflakes CountMobile = parseInt ( document . querySelector ( '#Snowstorm CountMobile' ) . value ) ;
config . Snowstorm . Speed = parseFloat ( document . querySelector ( '#SnowstormSpeed ' ) . value ) ;
config . Snowstorm . HorizontalWind = parseFloat ( document . querySelector ( '#SnowstormHorizontalWind' ) . value ) ;
config . Snowstorm . VerticalVariation = parseFloat ( document . querySelector ( '#SnowstormVerticalVariation' ) . value ) ;
// Christmas
config . Christmas . EnableChristmas = document . querySelector ( '#EnableChristmas ' ) . checked ;
config . Christmas . Symbol Count = parseInt ( document . querySelector ( '#Christmas Count' ) . value ) ;
config . Christmas . Symbol CountMobile = parseInt ( document . querySelector ( '#Christmas CountMobile' ) . value ) ;
config . Christmas . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationChristmas ' ) . checked ;
// Earth Day
config . EarthDay . EnableEarthDay = document . querySelector ( '#EnableEarthDay' ) . checked ;
config . EarthDay . FlowersCount = parseInt ( document . querySelector ( '#EarthDayFlowersCount' ) . value ) ;
config . EarthDay . FlowersCountMobile = parseInt ( document . querySelector ( '#EarthDayFlowersCountMobile' ) . value ) ;
// Easter
config . Easter . EnableEaster = document . querySelector ( '#EnableEaster' ) . checked ;
config . Easter . EggCount = parseInt ( document . querySelector ( '#EasterEggCount' ) . value ) ;
config . Easter . EnableBunny = document . querySelector ( '#EasterBunny' ) . checked ;
config . Easter . MinBunnyRestTime = parseInt ( document . querySelector ( '#MinBunnyRestTime' ) . value ) ;
config . Easter . MaxBunnyRestTime = parseInt ( document . querySelector ( '#MaxBunnyRestTime' ) . value ) ;
// Eid al-Fitr
config . Eid . EnableEid = document . querySelector ( '#EnableEid' ) . checked ;
config . Eid . LanternCount = parseInt ( document . querySelector ( '#EidLanternCount' ) . value ) ;
config . Eid . LanternCountMobile = parseInt ( document . querySelector ( '#EidLanternCountMobile' ) . value ) ;
// Eurovision
config . Eurovision . EnableEurovision = document . querySelector ( '#EnableEurovision' ) . checked ;
config . Eurovision . SymbolCount = parseInt ( document . querySelector ( '#EurovisionSymbolCount' ) . value ) ;
config . Eurovision . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationEurovision' ) . checked ;
config . Eurovision . EnableColorfulNotes = document . querySelector ( '#EnableColorfulNotes' ) . checked ;
config . Eurovision . EurovisionColors = document . querySelector ( '#EurovisionColors' ) . value ;
config . Eurovision . EurovisionGlowSize = parseInt ( document . querySelector ( '#EurovisionGlowSize' ) . value ) ;
// Film Noir
config . FilmNoir . EnableFilmNoir = document . querySelector ( '#EnableFilmNoir' ) . checked ;
// Fireworks
config . Fireworks . EnableFireworks = document . querySelector ( '#EnableFireworks' ) . checked ;
@@ -1962,6 +1955,12 @@
config . Fireworks . MinFireworks = parseInt ( document . querySelector ( '#MinFireworks' ) . value ) ;
config . Fireworks . MaxFireworks = parseInt ( document . querySelector ( '#MaxFireworks' ) . value ) ;
// Friday the 13th
config . Friday13 . EnableFriday13 = document . querySelector ( '#EnableFriday13' ) . checked ;
// Frost
config . Frost . EnableFrost = document . querySelector ( '#EnableFrost' ) . checked ;
// Halloween
config . Halloween . EnableHalloween = document . querySelector ( '#EnableHalloween' ) . checked ;
config . Halloween . SymbolCount = parseInt ( document . querySelector ( '#HalloweenCount' ) . value ) ;
@@ -1976,87 +1975,9 @@
config . Hearts . SymbolCountMobile = parseInt ( document . querySelector ( '#HeartsCountMobile' ) . value ) ;
config . Hearts . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationHearts' ) . checked ;
// Christmas
config . Christmas . EnableChristmas = document . querySelector ( '#EnableChristmas ' ) . checked ;
config . Christmas . SymbolCount = parseInt ( document . querySelector ( '#ChristmasCount ' ) . value ) ;
config . Christmas . SymbolCountMobile = parseInt ( document . querySelector ( '#ChristmasCountMobile' ) . value ) ;
config . Christmas . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationChristmas' ) . checked ;
// Santa
config . Santa . EnableSanta = document . querySelector ( '#EnableSanta' ) . checked ;
config . Santa . SnowflakesCount = parseInt ( document . querySelector ( '#SantaSnowflakes' ) . value ) ;
config . Santa . SnowflakesCountMobile = parseInt ( document . querySelector ( '#SantaSnowflakesMobile' ) . value ) ;
config . Santa . SantaSpeed = parseFloat ( document . querySelector ( '#SantaSpeed' ) . value ) ;
config . Santa . SantaSpeedMobile = parseFloat ( document . querySelector ( '#SantaSpeedMobile' ) . value ) ;
config . Santa . SnowFallSpeed = parseFloat ( document . querySelector ( '#SantaSnowFallSpeed' ) . value ) ;
config . Santa . MaxSantaRestTime = parseFloat ( document . querySelector ( '#MaxSantaRestTime' ) . value ) ;
config . Santa . MinSantaRestTime = parseFloat ( document . querySelector ( '#MinSantaRestTime' ) . value ) ;
config . Santa . MaxPresentFallSpeed = parseFloat ( document . querySelector ( '#MaxPresentFallSpeed' ) . value ) ;
config . Santa . MinPresentFallSpeed = parseFloat ( document . querySelector ( '#MinPresentFallSpeed' ) . value ) ;
// Easter
config . Easter . EnableEaster = document . querySelector ( '#EnableEaster' ) . checked ;
config . Easter . EggCount = parseInt ( document . querySelector ( '#EasterEggCount' ) . value ) ;
config . Easter . EnableBunny = document . querySelector ( '#EasterBunny' ) . checked ;
config . Easter . MinBunnyRestTime = parseInt ( document . querySelector ( '#MinBunnyRestTime' ) . value ) ;
config . Easter . MaxBunnyRestTime = parseInt ( document . querySelector ( '#MaxBunnyRestTime' ) . value ) ;
// Resurrection
config . Resurrection . EnableResurrection = document . querySelector ( '#EnableResurrection' ) . checked ;
config . Resurrection . SymbolCount = parseInt ( document . querySelector ( '#ResurrectionSymbolCount' ) . value ) ;
config . Resurrection . SymbolCountMobile = parseInt ( document . querySelector ( '#ResurrectionSymbolCountMobile' ) . value ) ;
config . Resurrection . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationResurrection' ) . checked ;
// Spooky Theme
config . Spooky . EnableSpooky = document . querySelector ( '#EnableSpooky' ) . checked ;
config . Spooky . SymbolCount = parseInt ( document . querySelector ( '#SpookyCount' ) . value ) ;
config . Spooky . SymbolCountMobile = parseInt ( document . querySelector ( '#SpookyCountMobile' ) . value ) ;
config . Spooky . SpookySize = parseInt ( document . querySelector ( '#SpookySize' ) . value ) ;
config . Spooky . EnableSpookySway = document . querySelector ( '#EnableSpookySway' ) . checked ;
config . Spooky . SpookyGlowSize = parseInt ( document . querySelector ( '#SpookyGlowSize' ) . value ) ;
// Spring
config . Spring . EnableSpring = document . querySelector ( '#EnableSpring' ) . checked ;
config . Spring . EnableSpringSunbeams = document . querySelector ( '#EnableSpringSunbeams' ) . checked ;
config . Spring . PollenCount = parseInt ( document . querySelector ( '#SpringPollenCount' ) . value ) ;
config . Spring . SunbeamCount = parseInt ( document . querySelector ( '#SpringSunbeamCount' ) . value ) ;
config . Spring . BirdCount = parseInt ( document . querySelector ( '#SpringBirdCount' ) . value ) ;
config . Spring . ButterflyCount = parseInt ( document . querySelector ( '#SpringButterflyCount' ) . value ) ;
config . Spring . BeeCount = parseInt ( document . querySelector ( '#SpringBeeCount' ) . value ) ;
config . Spring . LadybugCount = parseInt ( document . querySelector ( '#SpringLadybugCount' ) . value ) ;
config . Spring . SymbolCountMobile = parseInt ( document . querySelector ( '#SpringSymbolCountMobile' ) . value ) ;
// Summer
config . Summer . EnableSummer = document . querySelector ( '#EnableSummer' ) . checked ;
config . Summer . BubbleCount = parseInt ( document . querySelector ( '#SummerBubbleCount' ) . value ) ;
config . Summer . DustCount = parseInt ( document . querySelector ( '#SummerDustCount' ) . value ) ;
config . Summer . SymbolCountMobile = parseInt ( document . querySelector ( '#SummerSymbolCountMobile' ) . value ) ;
config . Summer . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSummer' ) . checked ;
// Carnival
config . Carnival . EnableCarnival = document . querySelector ( '#EnableCarnival' ) . checked ;
config . Carnival . EnableCarnivalSway = document . querySelector ( '#EnableCarnivalSway' ) . checked ;
config . Carnival . ObjectCount = parseInt ( document . querySelector ( '#CarnivalObjectCount' ) . value ) ;
config . Carnival . ObjectCountMobile = parseInt ( document . querySelector ( '#CarnivalObjectCountMobile' ) . value ) ;
config . Carnival . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationCarnival' ) . checked ;
// Cherry Blossom
config . CherryBlossom . EnableCherryBlossom = document . querySelector ( '#EnableCherryBlossom' ) . checked ;
config . CherryBlossom . PetalCount = parseInt ( document . querySelector ( '#CherryBlossomPetalCount' ) . value ) ;
config . CherryBlossom . PetalCountMobile = parseInt ( document . querySelector ( '#CherryBlossomPetalCountMobile' ) . value ) ;
config . CherryBlossom . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationCherryBlossom' ) . checked ;
// Earth Day
config . EarthDay . EnableEarthDay = document . querySelector ( '#EnableEarthDay' ) . checked ;
config . EarthDay . FlowersCount = parseInt ( document . querySelector ( '#EarthDayFlowersCount' ) . value ) ;
config . EarthDay . FlowersCountMobile = parseInt ( document . querySelector ( '#EarthDayFlowersCountMobile' ) . value ) ;
// Eurovision
config . Eurovision . EnableEurovision = document . querySelector ( '#EnableEurovision' ) . checked ;
config . Eurovision . SymbolCount = parseInt ( document . querySelector ( '#EurovisionSymbolCount' ) . value ) ;
config . Eurovision . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationEurovision' ) . checked ;
config . Eurovision . EnableColorfulNotes = document . querySelector ( '#EnableColorfulNotes' ) . checked ;
config . Eurovision . EurovisionColors = document . querySelector ( '#EurovisionColors' ) . value ;
config . Eurovision . EurovisionGlowSize = parseInt ( document . querySelector ( '#EurovisionGlowSize' ) . value ) ;
// Mario Day
config . MarioDay . EnableMarioDay = document . querySelector ( '#EnableMarioDay ' ) . checked ;
config . MarioDay . LetMarioJump = document . querySelector ( '#LetMarioJump ' ) . checked ;
// Matrix
config . Matrix . EnableMatrix = document . querySelector ( '#EnableMatrix' ) . checked ;
@@ -2064,6 +1985,21 @@
config . Matrix . MatrixChars = document . querySelector ( '#MatrixChars' ) . value ;
config . Matrix . EnableMatrixBackground = document . querySelector ( '#EnableMatrixBackground' ) . checked ;
// Oktoberfest
config . Oktoberfest . EnableOktoberfest = document . querySelector ( '#EnableOktoberfest' ) . checked ;
config . Oktoberfest . SymbolCount = parseInt ( document . querySelector ( '#OktoberfestCount' ) . value ) ;
config . Oktoberfest . SymbolCountMobile = parseInt ( document . querySelector ( '#OktoberfestCountMobile' ) . value ) ;
config . Oktoberfest . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationOktoberfest' ) . checked ;
// Olympia
config . Olympia . EnableOlympia = document . querySelector ( '#EnableOlympia' ) . checked ;
config . Olympia . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationOlympia' ) . checked ;
config . Olympia . SymbolCount = parseInt ( document . querySelector ( '#OlympiaSymbolCount' ) . value ) ;
config . Olympia . SymbolCountMobile = parseInt ( document . querySelector ( '#OlympiaSymbolCountMobile' ) . value ) ;
// Oscar
config . Oscar . EnableOscar = document . querySelector ( '#EnableOscar' ) . checked ;
// Pride
config . Pride . EnablePride = document . querySelector ( '#EnablePride' ) . checked ;
config . Pride . HeartCount = parseInt ( document . querySelector ( '#PrideHeartCount' ) . value ) ;
@@ -2076,6 +2012,85 @@
config . Rain . RaindropCountMobile = parseInt ( document . querySelector ( '#RaindropCountMobile' ) . value ) ;
config . Rain . RainSpeed = parseFloat ( document . querySelector ( '#RainSpeed' ) . value ) ;
// Resurrection
config . Resurrection . EnableResurrection = document . querySelector ( '#EnableResurrection' ) . checked ;
config . Resurrection . SymbolCount = parseInt ( document . querySelector ( '#ResurrectionSymbolCount' ) . value ) ;
config . Resurrection . SymbolCountMobile = parseInt ( document . querySelector ( '#ResurrectionSymbolCountMobile' ) . value ) ;
config . Resurrection . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationResurrection' ) . checked ;
// Santa
config . Santa . EnableSanta = document . querySelector ( '#EnableSanta' ) . checked ;
config . Santa . SnowflakesCount = parseInt ( document . querySelector ( '#SantaSnowflakes' ) . value ) ;
config . Santa . SnowflakesCountMobile = parseInt ( document . querySelector ( '#SantaSnowflakesMobile' ) . value ) ;
config . Santa . SantaSpeed = parseFloat ( document . querySelector ( '#SantaSpeed' ) . value ) ;
config . Santa . SantaSpeedMobile = parseFloat ( document . querySelector ( '#SantaSpeedMobile' ) . value ) ;
config . Santa . SnowFallSpeed = parseFloat ( document . querySelector ( '#SantaSnowFallSpeed' ) . value ) ;
config . Santa . MaxSantaRestTime = parseFloat ( document . querySelector ( '#MaxSantaRestTime' ) . value ) ;
config . Santa . MinSantaRestTime = parseFloat ( document . querySelector ( '#MinSantaRestTime' ) . value ) ;
config . Santa . MaxPresentFallSpeed = parseFloat ( document . querySelector ( '#MaxPresentFallSpeed' ) . value ) ;
config . Santa . MinPresentFallSpeed = parseFloat ( document . querySelector ( '#MinPresentFallSpeed' ) . value ) ;
// Snowfall
config . Snowfall . EnableSnowfall = document . querySelector ( '#EnableSnowfall' ) . checked ;
config . Snowfall . SnowflakesCount = parseInt ( document . querySelector ( '#SnowfallCount' ) . value ) ;
config . Snowfall . SnowflakesCountMobile = parseInt ( document . querySelector ( '#SnowfallCountMobile' ) . value ) ;
config . Snowfall . Speed = parseFloat ( document . querySelector ( '#SnowfallSpeed' ) . value ) ;
// Snowflakes
config . Snowflakes . SnowflakeCount = parseInt ( document . querySelector ( '#SnowflakesCount' ) . value ) ;
config . Snowflakes . SnowflakeCountMobile = parseInt ( document . querySelector ( '#SnowflakeCountMobile' ) . value ) ;
config . Snowflakes . EnableSnowflakes = document . querySelector ( '#EnableSnowflakes' ) . checked ;
config . Snowflakes . EnableColoredSnowflakes = document . querySelector ( '#EnableColoredSnowflakes' ) . checked ;
config . Snowflakes . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSnowflakes' ) . checked ;
// Snowstorm
config . Snowstorm . EnableSnowstorm = document . querySelector ( '#EnableSnowstorm' ) . checked ;
config . Snowstorm . SnowflakesCount = parseInt ( document . querySelector ( '#SnowstormCount' ) . value ) ;
config . Snowstorm . SnowflakesCountMobile = parseInt ( document . querySelector ( '#SnowstormCountMobile' ) . value ) ;
config . Snowstorm . Speed = parseFloat ( document . querySelector ( '#SnowstormSpeed' ) . value ) ;
config . Snowstorm . HorizontalWind = parseFloat ( document . querySelector ( '#SnowstormHorizontalWind' ) . value ) ;
config . Snowstorm . VerticalVariation = parseFloat ( document . querySelector ( '#SnowstormVerticalVariation' ) . value ) ;
// Space
config . Space . EnableSpace = document . querySelector ( '#EnableSpace' ) . checked ;
config . Space . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSpace' ) . checked ;
config . Space . PlanetCount = parseInt ( document . querySelector ( '#PlanetCount' ) . value ) ;
config . Space . AstronautCount = parseInt ( document . querySelector ( '#AstronautCount' ) . value ) ;
config . Space . SatelliteCount = parseInt ( document . querySelector ( '#SatelliteCount' ) . value ) ;
config . Space . IssCount = parseInt ( document . querySelector ( '#IssCount' ) . value ) ;
config . Space . RocketCount = parseInt ( document . querySelector ( '#RocketCount' ) . value ) ;
config . Space . SymbolCountMobile = parseInt ( document . querySelector ( '#SpaceSymbolCountMobile' ) . value ) ;
// Spooky Theme
config . Spooky . EnableSpooky = document . querySelector ( '#EnableSpooky' ) . checked ;
config . Spooky . SymbolCount = parseInt ( document . querySelector ( '#SpookyCount' ) . value ) ;
config . Spooky . SpookySize = parseInt ( document . querySelector ( '#SpookySize' ) . value ) ;
config . Spooky . EnableSpookySway = document . querySelector ( '#EnableSpookySway' ) . checked ;
config . Spooky . SpookyGlowSize = parseInt ( document . querySelector ( '#SpookyGlowSize' ) . value ) ;
// Sports
config . Sports . EnableSports = document . querySelector ( '#EnableSports' ) . checked ;
config . Sports . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSports' ) . checked ;
config . Sports . SymbolCount = parseInt ( document . querySelector ( '#SportsSymbolCount' ) . value ) ;
config . Sports . TurfColor = document . querySelector ( '#TurfColor' ) . value ;
config . Sports . ConfettiColors = document . querySelector ( '#SportsConfettiColors' ) . value ;
config . Sports . EnableTrophy = document . querySelector ( '#EnableTrophy' ) . checked ;
config . Sports . SportsBalls = Array . from ( document . querySelectorAll ( '.sport-ball-cb' ) ) . filter ( cb => cb . checked ) . map ( cb => cb . value ) . join ( ',' ) ;
// Spring
config . Spring . EnableSpring = document . querySelector ( '#EnableSpring' ) . checked ;
config . Spring . EnableSpringSunbeams = document . querySelector ( '#EnableSpringSunbeams' ) . checked ;
config . Spring . PollenCount = parseInt ( document . querySelector ( '#SpringPollenCount' ) . value ) ;
config . Spring . SunbeamCount = parseInt ( document . querySelector ( '#SpringSunbeamCount' ) . value ) ;
config . Spring . BirdCount = parseInt ( document . querySelector ( '#SpringBirdCount' ) . value ) ;
config . Spring . ButterflyCount = parseInt ( document . querySelector ( '#SpringButterflyCount' ) . value ) ;
config . Spring . BeeCount = parseInt ( document . querySelector ( '#SpringBeeCount' ) . value ) ;
config . Spring . LadybugCount = parseInt ( document . querySelector ( '#SpringLadybugCount' ) . value ) ;
config . Spring . SymbolCountMobile = parseInt ( document . querySelector ( '#SpringSymbolCountMobile' ) . value ) ;
// Star Wars
config . StarWars . EnableStarWars = document . querySelector ( '#EnableStarWars' ) . checked ;
// Storm
config . Storm . EnableStorm = document . querySelector ( '#EnableStorm' ) . checked ;
config . Storm . RaindropCount = parseInt ( document . querySelector ( '#StormRaindropCount' ) . value ) ;
@@ -2083,6 +2098,13 @@
config . Storm . RainSpeed = parseFloat ( document . querySelector ( '#StormRainSpeed' ) . value ) ;
config . Storm . EnableLightning = document . querySelector ( '#StormEnableLightning' ) . checked ;
// Summer
config . Summer . EnableSummer = document . querySelector ( '#EnableSummer' ) . checked ;
config . Summer . BubbleCount = parseInt ( document . querySelector ( '#SummerBubbleCount' ) . value ) ;
config . Summer . DustCount = parseInt ( document . querySelector ( '#SummerDustCount' ) . value ) ;
config . Summer . SymbolCountMobile = parseInt ( document . querySelector ( '#SummerSymbolCountMobile' ) . value ) ;
config . Summer . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSummer' ) . checked ;
// Underwater
config . Underwater . EnableUnderwater = document . querySelector ( '#EnableUnderwater' ) . checked ;
config . Underwater . EnableLightRays = document . querySelector ( '#EnableUnderwaterLightRays' ) . checked ;
@@ -2097,98 +2119,6 @@
config . Underwater . StarfishCount = parseInt ( document . querySelector ( '#UnderwaterStarfishCount' ) . value ) ;
config . Underwater . ShellCount = parseInt ( document . querySelector ( '#UnderwaterShellCount' ) . value ) ;
// Sports
if ( ! config . Sports ) config . Sports = { } ;
config . Sports . EnableSports = document . querySelector ( '#EnableSports' ) . checked ;
config . Sports . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSports' ) . checked ;
config . Sports . SymbolCount = parseInt ( document . querySelector ( '#SportsSymbolCount' ) . value ) ;
config . Sports . TurfColor = document . querySelector ( '#TurfColor' ) . value ;
config . Sports . ConfettiColors = document . querySelector ( '#SportsConfettiColors' ) . value ;
config . Sports . EnableTrophy = document . querySelector ( '#EnableTrophy' ) . checked ;
config . Sports . SportsBalls = Array . from ( document . querySelectorAll ( '.sport-ball-cb' ) )
. filter ( cb => cb . checked ) . map ( cb => cb . value ) . join ( ',' ) ;
// Simple Themes (just on/off toggles)
config . Frost . EnableFrost = document . querySelector ( '#EnableFrost' ) . checked ;
config . FilmNoir . EnableFilmNoir = document . querySelector ( '#EnableFilmNoir' ) . checked ;
config . Oscar . EnableOscar = document . querySelector ( '#EnableOscar' ) . checked ;
config . MarioDay . EnableMarioDay = document . querySelector ( '#EnableMarioDay' ) . checked ;
config . MarioDay . LetMarioJump = document . querySelector ( '#LetMarioJump' ) . checked ;
config . StarWars . EnableStarWars = document . querySelector ( '#EnableStarWars' ) . checked ;
config . Oktoberfest . EnableOktoberfest = document . querySelector ( '#EnableOktoberfest' ) . checked ;
config . Oktoberfest . SymbolCount = parseInt ( document . querySelector ( '#OktoberfestCount' ) . value ) ;
config . Oktoberfest . SymbolCountMobile = parseInt ( document . querySelector ( '#OktoberfestCountMobile' ) . value ) ;
config . Oktoberfest . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationOktoberfest' ) . checked ;
config . Friday13 . EnableFriday13 = document . querySelector ( '#EnableFriday13' ) . checked ;
if ( ! config . Eid ) config . Eid = { } ;
config . Eid . EnableEid = document . querySelector ( '#EnableEid' ) . checked ;
config . Eid . LanternCount = parseInt ( document . querySelector ( '#EidLanternCount' ) . value ) ;
config . Eid . LanternCountMobile = parseInt ( document . querySelector ( '#EidLanternCountMobile' ) . value ) ;
// Easter
config . Easter . EnableEaster = document . querySelector ( '#EnableEaster' ) . checked ;
config . Easter . EggCount = parseInt ( document . querySelector ( '#EasterEggCount' ) . value ) ;
config . Easter . EnableBunny = document . querySelector ( '#EasterBunny' ) . checked ;
config . Easter . MinBunnyRestTime = parseInt ( document . querySelector ( '#MinBunnyRestTime' ) . value ) ;
config . Easter . MaxBunnyRestTime = parseInt ( document . querySelector ( '#MaxBunnyRestTime' ) . value ) ;
// Resurrection
config . Resurrection . EnableResurrection = document . querySelector ( '#EnableResurrection' ) . checked ;
config . Resurrection . SymbolCount = parseInt ( document . querySelector ( '#ResurrectionSymbolCount' ) . value ) ;
config . Resurrection . SymbolCountMobile = parseInt ( document . querySelector ( '#ResurrectionSymbolCountMobile' ) . value ) ;
config . Resurrection . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationResurrection' ) . checked ;
// Spring
config . Spring . EnableSpring = document . querySelector ( '#EnableSpring' ) . checked ;
config . Spring . EnableSpringSunbeams = document . querySelector ( '#EnableSpringSunbeams' ) . checked ;
config . Spring . PollenCount = parseInt ( document . querySelector ( '#SpringPollenCount' ) . value ) ;
config . Spring . SunbeamCount = parseInt ( document . querySelector ( '#SpringSunbeamCount' ) . value ) ;
config . Spring . BirdCount = parseInt ( document . querySelector ( '#SpringBirdCount' ) . value ) ;
config . Spring . ButterflyCount = parseInt ( document . querySelector ( '#SpringButterflyCount' ) . value ) ;
config . Spring . BeeCount = parseInt ( document . querySelector ( '#SpringBeeCount' ) . value ) ;
config . Spring . LadybugCount = parseInt ( document . querySelector ( '#SpringLadybugCount' ) . value ) ;
config . Spring . SymbolCountMobile = parseInt ( document . querySelector ( '#SpringSymbolCountMobile' ) . value ) ;
// Summer
config . Summer . EnableSummer = document . querySelector ( '#EnableSummer' ) . checked ;
config . Summer . BubbleCount = parseInt ( document . querySelector ( '#SummerBubbleCount' ) . value ) ;
config . Summer . DustCount = parseInt ( document . querySelector ( '#SummerDustCount' ) . value ) ;
config . Summer . SymbolCountMobile = parseInt ( document . querySelector ( '#SummerSymbolCountMobile' ) . value ) ;
config . Summer . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationSummer' ) . checked ;
// Carnival
config . Carnival . EnableCarnival = document . querySelector ( '#EnableCarnival' ) . checked ;
config . Carnival . EnableCarnivalSway = document . querySelector ( '#EnableCarnivalSway' ) . checked ;
config . Carnival . ObjectCount = parseInt ( document . querySelector ( '#CarnivalObjectCount' ) . value ) ;
config . Carnival . ObjectCountMobile = parseInt ( document . querySelector ( '#CarnivalObjectCountMobile' ) . value ) ;
config . Carnival . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationCarnival' ) . checked ;
// Cherry Blossom
config . CherryBlossom . EnableCherryBlossom = document . querySelector ( '#EnableCherryBlossom' ) . checked ;
config . CherryBlossom . PetalCount = parseInt ( document . querySelector ( '#CherryBlossomPetalCount' ) . value ) ;
config . CherryBlossom . PetalCountMobile = parseInt ( document . querySelector ( '#CherryBlossomPetalCountMobile' ) . value ) ;
config . CherryBlossom . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationCherryBlossom' ) . checked ;
// Earth Day
config . EarthDay . EnableEarthDay = document . querySelector ( '#EnableEarthDay' ) . checked ;
config . EarthDay . FlowersCount = parseInt ( document . querySelector ( '#EarthDayFlowersCount' ) . value ) ;
config . EarthDay . FlowersCountMobile = parseInt ( document . querySelector ( '#EarthDayFlowersCountMobile' ) . value ) ;
// Eurovision (second pass - deduplicated)
config . Eurovision . EnableEurovision = document . querySelector ( '#EnableEurovision' ) . checked ;
config . Eurovision . SymbolCount = parseInt ( document . querySelector ( '#EurovisionSymbolCount' ) . value ) ;
config . Eurovision . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationEurovision' ) . checked ;
config . Eurovision . EnableColorfulNotes = document . querySelector ( '#EnableColorfulNotes' ) . checked ;
config . Eurovision . EurovisionColors = document . querySelector ( '#EurovisionColors' ) . value ;
config . Eurovision . EurovisionGlowSize = parseInt ( document . querySelector ( '#EurovisionGlowSize' ) . value ) ;
// Birthday
config . Birthday . EnableBirthday = document . querySelector ( '#EnableBirthday' ) . checked ;
config . Birthday . SymbolCount = parseInt ( document . querySelector ( '#BirthdaySymbolCount' ) . value ) ;
config . Birthday . SymbolCountMobile = parseInt ( document . querySelector ( '#BirthdaySymbolCountMobile' ) . value ) ;
config . Birthday . ConfettiCount = parseInt ( document . querySelector ( '#BirthdayConfettiCount' ) . value ) ;
config . Birthday . EnableDifferentDuration = document . querySelector ( '#EnableDifferentDurationBirthday' ) . checked ;
ApiClient . updatePluginConfiguration ( SeasonalsConfigPage . pluginUniqueId , config ) . then ( function ( result ) {
Dashboard . processPluginConfigurationUpdateResult ( result ) ;
} ) ;