const c2lines = document.getElementById("c2-lines"); const c3crab = document.getElementById("c3-crab"); const spikyspacefriends = document.getElementById("spiky-space-friends"); const doc = document.documentElement; const astroevent = document.getElementById("astroevent"); const astroconclusion = document.getElementById("astroconclusion"); const planets = document.getElementById("planets"); const planet_divs = Array.from(document.querySelectorAll("#planets > div > div")); const tobetacanceri = document.getElementById("tobetacanceri"); const thebridge = document.getElementById("thebridge"); const c3crab_animation = [ "res/cancer-crab.svg", "res/cancer-crabwalk.svg" ]; var c3crab_frame = 0; var scrollDelta = 0; // total pixels scrolled var scrollDt = 0; // total time spent scrolling var lastScPos = 0; var lTime = window.performance.now(); window.onscroll = () => { c2lines.style.setProperty("--linespoint", doc.scrollTop * 0.05 + "px"); c3crab.style.setProperty("--crab-visibility", (doc.scrollTop - 600) * 0.1 + "%"); // this means that we need 1600 pixels of scroll to complete the animation // 600 + 100% / 0.1% = 1600 if (doc.scrollTop >= 1600) { c3crab.classList.add("dropped"); } else { c3crab.classList.remove("dropped"); } var spikyrect = spikyspacefriends.getBoundingClientRect(); if (spikyrect.top < window.innerHeight * 0.6) { c3crab.classList.add("scootleft"); } else { c3crab.classList.remove("scootleft"); } if (spikyrect.bottom < 0) { c3crab.classList.add("scootaway"); c3crab.classList.remove("scootleft"); c3crab.classList.remove("dropped"); } else { c3crab.classList.remove("scootaway"); } document.body.style.setProperty("--scroll-point", doc.scrollTop); var rect = planets.getBoundingClientRect(); planets.style.setProperty("--scroll-point", rect.top); var considering = true; for (x in planet_divs) { var planet = planet_divs[x]; var hider = planet.getElementsByClassName("planetinfo"); if (hider.length) { hider = hider[0]; } else { continue; } hider.style.display = "none"; if (considering) { var z = rect.top * -3 - 2 * window.innerHeight + parseInt(planet.style.getPropertyValue("--transform-offset")); if (z < 0) { planet.getElementsByClassName("planetinfo")[0].style.display = ""; considering = false; } } } tobetacanceri.style.setProperty("--scroll-point", 100 * tobetacanceri.getBoundingClientRect().top / window.innerHeight + "%"); var cTime = window.performance.now() scrollDelta += Math.abs(lastScPos - doc.scrollTop); scrollDt += cTime - lTime; lTime = cTime; lastScPos = doc.scrollTop; var pixPSec = scrollDelta / scrollDt * 1000; var kmPHr = ((pixPSec / 3000) // solar system fields from earth to neptune per second / 3600) // per hour * 4_500_000_000; // the solar system field from earth to neptune is 4.5 billion kilometers var hrtoBC = 2.746e15 / kmPHr; var ytoBC = hrtoBC / 8760; document.getElementById("rawscroll").innerText = Math.round(pixPSec); document.getElementById("scrollkph").innerText = Math.round(kmPHr); document.getElementById("yearstobetacanceri").innerText = Math.round(ytoBC); var thebridge_scrollup = thebridge.parentNode.getBoundingClientRect().top * -1; if (thebridge_scrollup < 0) { thebridge_scrollup = 0; } thebridge.parentNode.style.backgroundColor = "rgba(0, 0, 0, " + (1 - thebridge_scrollup / window.innerHeight) + ")"; thebridge.style.opacity = thebridge_scrollup / window.innerHeight * 100 + "%"; } var c3crab_interval = -1; c3crab.addEventListener("transitionrun", () => { if (c3crab_interval == -1) { c3crab_interval = setInterval(() => { c3crab_frame++; c3crab.src = c3crab_animation[c3crab_frame % c3crab_animation.length]; }, 100); } }); c3crab.addEventListener("transitionend", () => { clearInterval(c3crab_interval); c3crab_frame = 0; c3crab.src = c3crab_animation[0]; c3crab_interval = -1; }); let astrothings = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto", "The Moon", "Capricorn", "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Ophiuchus", "Saggitarius" ]; const events = ["rising in", "waning in", "waxing in", "converging with"]; function arpick(array) { let index = Math.floor(Math.random() * array.length); return array.splice(index, 1)[0]; } const things = [ "you must tread carefully today.", "you will find a pleasant surprise!", "you will meet a ten-thousand-pound rhino named Desmond today.", "great opportunities are hiding around every corner.", "you must not be afraid to take a leap of faith." ]; astroevent.innerHTML = "Because " + arpick(astrothings) + " is " + arpick(events) + " " + arpick(astrothings) + ","; astroconclusion.innerHTML = arpick(things); Array.from(document.getElementsByTagName("p")).forEach(a => { a.addEventListener("mouseover", (evt) => { //if (Math.random() < 0.15) { var shiny = document.createElement("div"); shiny.classList.add("shiny-star"); requestAnimationFrame(() => { shiny.classList.add("disjoint"); }); document.body.appendChild(shiny); shiny.style.left = evt.clientX + 20 * Math.random() - 30 + "px"; shiny.style.top = evt.clientY + 20 * Math.random() - 50 + "px"; shiny.style.animationDelay = -Math.random() * 2 + "s"; setTimeout(() => { document.body.removeChild(shiny); }, 2000); //} }); });