@@ -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 {
@@ -1803,7 +1802,6 @@
// Spooky
document . querySelector ( '#SpookyCount' ) . value = config . Spooky . SymbolCount ;
document . querySelector ( '#SpookyCountMobile' ) . value = config . Spooky . SymbolCountMobile ;
document . querySelector ( '#EnableSpooky' ) . checked = config . Spooky . EnableSpooky ;
document . querySelector ( '#SpookySize' ) . value = config . Spooky . SpookySize ;
document . querySelector ( '#EnableSpookySway' ) . checked = config . Spooky . EnableSpookySway ;
@@ -1894,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 ;
@@ -1924,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 ;
@@ -1953,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 ) ;
@@ -1967,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 ;
@@ -2055,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 ) ;
@@ -2067,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 ) ;
@@ -2074,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 ;
@@ -2088,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 ) ;
} ) ;