diff --git a/img/jonathantessmann.JPEG b/img/jonathantessmann.JPEG
new file mode 100644
index 0000000..f6789c1
Binary files /dev/null and b/img/jonathantessmann.JPEG differ
diff --git a/index.html b/index.html
index ebae851..e0af250 100644
--- a/index.html
+++ b/index.html
@@ -802,7 +802,7 @@
-
+
Jonathan Tessmann
Outreach Assist
diff --git a/js/general.js b/js/general.js
index 428aba2..c10dc56 100644
--- a/js/general.js
+++ b/js/general.js
@@ -1,546 +1,546 @@
-// Gilroy Hacks Website Source Code -> JS (https://gilroyhacks.com)
-"use strict";
-
-// document is loaded and DOM is ready
-document.addEventListener('DOMContentLoaded', function(){
- // Email replace
- function setAttributes(elem, attrs) {
- for(var key in attrs) {
- elem.setAttribute(key, attrs[key]);
- }
- }
-
- const tech_emails = document.querySelectorAll('.email-replace-tech');
- tech_emails.forEach(entry => {
- setAttributes(entry, {"href": "mailto:tech" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- entry.innerHTML = "tech" + "@" + "gilroyhacks.com";
- });
-
- var aadhavan = document.getElementById("email-replace-aadhavan");
- setAttributes(aadhavan, {"href": "mailto:amagesh" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- aadhavan.innerHTML = "amagesh" + "@" + "gilroyhacks.com";
-
- var isaac = document.getElementById("email-replace-isaac");
- setAttributes(isaac, {"href": "mailto:ihwang" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- isaac.innerHTML = "ihwang" + "@" + "gilroyhacks.com";
-
- var steven = document.getElementById("email-replace-steven");
- setAttributes(steven, {"href": "mailto:steven" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- steven.innerHTML = "steven" + "@" + "gilroyhacks.com";
-
- const vijay_emails = document.querySelectorAll('.email-replace-vijay');
- vijay_emails.forEach(entry => {
- setAttributes(entry, {"href": "mailto:vijay" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- entry.innerHTML = "vijay" + "@" + "gilroyhacks.com";
- });
-
- var jonathan = document.getElementById("email-replace-jonathan");
- setAttributes(jonathan, {"href": "mailto:jonathantessmann" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- jonathan.innerHTML = "jonathantessmann" + "@" + "gilroyhacks.com";
-
- var james = document.getElementById("email-replace-james");
- setAttributes(james, {"href": "mailto:james" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- james.innerHTML = "james" + "@" + "gilroyhacks.com";
-
- var ezra = document.getElementById("email-replace-ezra");
- setAttributes(ezra, {"href": "mailto:clementboiteux" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- ezra.innerHTML = "clementboiteux" + "@" + "gilroyhacks.com";
-
- var mark = document.getElementById("email-replace-mark");
- setAttributes(mark, {"href": "mailto:markshen00" + "@" + "gmail.com?subject=Gilroy Hacks", "target": "_blank"});
- mark.innerHTML = "markshen00" + "@" + "gmail.com";
-
- var bryce = document.getElementById("email-replace-bryce");
- setAttributes(bryce, {"href": "mailto:bryce" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
- bryce.innerHTML = "bryce" + "@" + "gilroyhacks.com";
-
- // Scroll Element
- // Creating an observer when the user views that element
- const observer = new IntersectionObserver(entries => {
- // Loop over the entries
- entries.forEach(entry => {
- // If the element is visible
- if (entry.isIntersecting) {
- // Add the animation class
- entry.target.classList.add('slide-animation');
- }
- });
- });
-
- const observer_prize_2 = new IntersectionObserver(entries => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- entry.target.classList.add('slide-animation-prize-2');
- }
- });
- });
-
- const observer_prize_1 = new IntersectionObserver(entries => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- entry.target.classList.add('slide-animation-prize-1');
- }
- });
- });
-
- const observer_prize_3 = new IntersectionObserver(entries => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- entry.target.classList.add('slide-animation-prize-3');
- }
- });
- });
-
- const observer_team_img = new IntersectionObserver(entries => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- entry.target.classList.add('slide-animation-card-img');
- }
- });
- });
-
- const observer_team_desc = new IntersectionObserver(entries => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- entry.target.classList.add('slide-animation-card-desc');
- }
- });
- });
-
- const workshop_entry = document.querySelectorAll('.workshop-entry');
- workshop_entry.forEach(entry => {
- observer.observe(entry);
- });
-
- const rules_obj = document.querySelectorAll('.rules-box');
- rules_obj.forEach(entry => {
- observer.observe(entry);
- });
-
- const entries = document.querySelectorAll('.team-picture');
- entries.forEach(entry => {
- observer_team_img.observe(entry);
- });
-
- const entries_desc = document.querySelectorAll('.team-description');
- entries_desc.forEach(entry => {
- observer_team_desc.observe(entry);
- });
-
- const prize_entries = document.querySelectorAll('.prize-column');
- prize_entries.forEach(entry => {
- observer.observe(entry);
- });
-
- const prize_entries_edge = document.querySelectorAll('.podium-edge');
- prize_entries_edge.forEach(entry => {
- observer.observe(entry);
- });
-
- // Add class animations to these elements
- let elements_id = [
- '#event-title',
- '#headline-recap',
- '#div-hr',
- '#splash-entrance',
- '#what-GilroyHacks',
- '#why-GilroyHacks',
- '#who-GilroyHacks',
- '#splide',
- '#signup-title',
- '#steps-card',
- '#sponsor-title',
- '#sponsor-container',
- '#schedule-title',
- '#schedule-pa',
- '#workshops-description',
- '#second-podium',
- '#first-podium',
- '#third-podium',
- // '#chart',
- '#administration',
- '#logistics',
- '#outreach',
- '#tech',
- '#marketing'
- ];
- elements_id.forEach(entry => {
- var thing = document.querySelector(entry)
- observer.observe(document.querySelector(entry));
- });
-
- observer_prize_2.observe(document.querySelector('#second-place'));
- observer_prize_1.observe(document.querySelector('#first-place'));
- observer_prize_3.observe(document.querySelector('#third-place'));
-
- // Scroll Nav
- // Toggle the .pa-fixed-header class when the user
- // scroll 100px
-
- window.onscroll = () => {scrollNavbar()};
-
- var scrollNavbar = () => {
- // Target elements
- const navBar = document.getElementById("navBar");
- const links = document.querySelectorAll("#navBar a");
-
- if (document.documentElement.scrollTop > 20) {
- navBar.classList.add("pa-fixed-header");
-
- // Change the color of links on scroll
- for (let i = 0; i < links.length; i++) {
- const element = links[i];
- element.classList.add('text-black');
- }
- }
- else {
- navBar.classList.remove("pa-fixed-header");
-
- // Change the color of links back to default
- for (let i = 0; i < links.length; i++) {
- const element = links[i];
- element.classList.remove('text-black');
- }
- }
- }
-
- // Timer
- // SRC: W3Schools https://www.w3schools.com/howto/howto_js_countdown.asp
- // Set the date we're counting down to
- const events = {
- "Opening Ceremony":
- {
- "start": "Apr 15, 2023 10:30:00",
- "end": "Apr 15, 2023 11:00:00",
- "tooltip": "Apr 15, 10:30am"
- },
- "Lunch":
- {
- "start": "Apr 15, 2023 12:00:00",
- "end": "Apr 15, 2023 13:00:00",
- "tooltip": "Apr 15, 12:00am"
- },
- "Web Dev Workshop":
- {
- "start": "Apr 15, 2023 13:00:00",
- "end": "Apr 15, 2023 14:00:00",
- "tooltip": "Apr 15, 1:00pm"
- },
- "[REDACTED] Workshop":
- {
- "start": "Apr 15, 2023 15:00:00",
- "end": "Apr 15, 2023 16:00:00",
- "tooltip": "Apr 15, 3:00pm"
- },
- "Kahoot":
- {
- "start": "Apr 15, 2023 17:00:00",
- "end": "Apr 15, 2023 18:00:00",
- "tooltip": "Apr 15, 5:00pm"
- },
- "Hacking Ends":
- {
- "start": "Apr 16, 2023 14:00:00",
- "end": "Apr 16, 2023 14:00:00",
- "tooltip": "Apr 16, 2:00pm"
- },
- "Project Presentations":
- {
- "start": "Apr 16, 2023 14:30:00",
- "end": "Apr 16, 2023 16:00:00",
- "tooltip": "Apr 16, 2:30pm"
- },
- "Awards Ceremony" :
- {
- "start": "Apr 16, 2023 16:30:00",
- "end": "Apr 16, 2023 17:00:00",
- "tooltip": "Apr 16, 4:30pm"
- }
- }
- var countDownDate = 0;
- // Get today's date and time
- var now = new Date().getTime();
- var testDateStart, testDateEnd;
-
- // Test for the current event
- for (const event in events) {
- testDateStart = new Date(events[event]["start"]).getTime();
- testDateEnd = new Date(events[event]["end"]).getTime();
- if (testDateEnd > countDownDate && now < testDateEnd) {
- countDownDate = testDateStart;
- document.getElementById("event-name").innerHTML = event;
- document.styleSheets[0].addRule('#timer:after','content: "'+ events[event]["tooltip"] +'";');
- break;
- }
- }
-
- // Update the count down every 1 second
- var x = setInterval(function() {
-
- // Find the distance between now and the count down date
- var distance = countDownDate - now;
-
- // Time calculations for days, hours, minutes and seconds
- var days = Math.floor(distance / (1000 * 60 * 60 * 24));
- var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
- var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
- var seconds = Math.floor((distance % (1000 * 60)) / 1000);
-
- // If the count down is finished, write some text
- if (testDateStart < now && now < testDateEnd) {
- document.getElementById("timer").innerHTML = "NOW";
- }
- // Display the result in the element with id="timer"
- else if (days != 0) {
- document.getElementById("timer").innerHTML = days + "d " + hours + "h";
- }
- else if (hours != 0) {
- document.getElementById("timer").innerHTML = hours + "h " + minutes + "m";
- }
- else if (minutes != 0) {
- document.getElementById("timer").innerHTML = minutes + "m";
- }
- else if (seconds != 0) {
- document.getElementById("timer").innerHTML = seconds + "s";
- }
- else {
- clearInterval(x);
- document.getElementById("timer").innerHTML = "---";
- document.getElementById("event-name").innerHTML = "Event Ended";
- }
- }, 1000);
-});
-
-// page is fully loaded, including all frames, objects and images
-window.addEventListener("load", function() {
-
-});
-
-// General functions
-// Checkbox Local Storage
-var i;
-var checkboxes = document.querySelectorAll('#signup-checklist input[type=checkbox]');
-var verify = true;
-function save() {
- for (i = 0; i < checkboxes.length; i++) {
- localStorage.setItem(checkboxes[i].value, checkboxes[i].checked);
- }
-}
-window.onload = function() {
- load();
- uncheck('menu-btn');
-};
-function load() {
- for (i = 0; i < checkboxes.length; i++) {
- checkboxes[i].checked = localStorage.getItem(checkboxes[i].value) === 'true' ? true:false;
- }
-}
-function check(id) {
- document.getElementById(id).checked = true;
-}
-function uncheck(id) {
- document.getElementById(id).checked = false;
-}
-function notification(id) {
- if (localStorage.getItem(checkboxes[id].value) != true) { verify = false; }
- if (verify) { document.getElementById('notification').style.visibility = visible; }
-}
-
-// Disable Scroll (temporarily)
-// left: 37, up: 38, right: 39, down: 40,
-// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36
-var keys = {37: 1, 38: 1, 39: 1, 40: 1};
-
-function preventDefault(e) {
- e.preventDefault();
-}
-
-function preventDefaultForScrollKeys(e) {
- if (keys[e.keyCode]) {
- preventDefault(e);
- return false;
- }
-}
-
-// modern Chrome requires { passive: false } when adding event
-var supportsPassive = false;
-try {
- window.addEventListener("test", null, Object.defineProperty({}, 'passive', {
- get: function () { supportsPassive = true; }
- }));
-} catch(e) {}
-
-var wheelOpt = supportsPassive ? { passive: false } : false;
-var wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';
-
-// call this to Disable
-function disableScroll() {
- window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF
- window.addEventListener(wheelEvent, preventDefault, wheelOpt); // modern desktop
- window.addEventListener('touchmove', preventDefault, wheelOpt); // mobile
- window.addEventListener('keydown', preventDefaultForScrollKeys, false);
-}
-
-// call this to Enable
-function enableScroll() {
- window.removeEventListener('DOMMouseScroll', preventDefault, false);
- window.removeEventListener(wheelEvent, preventDefault, wheelOpt);
- window.removeEventListener('touchmove', preventDefault, wheelOpt);
- window.removeEventListener('keydown', preventDefaultForScrollKeys, false);
-}
-
-var openClick = false;
-var openModal = false;
-var currentModal;
-
-function closeModal(id) {
- document.getElementById(id).style.display = "none";
- document.getElementById("modal-overlay").style.display = "none";
- enableScroll();
- openModal = false;
-}
-
-function showModal(id) {
- document.getElementById(id).style.display = "block";
- document.getElementById("modal-overlay").style.display = "block";
- document.getElementById("modal-overlay").style.opacity = 1;
- document.getElementById("modal-overlay").classList.add("modal-animation");
- disableScroll();
- openClick = true;
- openModal = true;
- currentModal = id;
-}
-
-// Check if user clicks outside of modal
-document.addEventListener(
- "click",
- function (event) {
- // If user either clicks X button OR clicks outside the modal window, then close modal by calling closeModal()
- if (!openClick && openModal == true) {
- if (event.target.matches(".button-close-modal") || !event.target.closest(".modal")) {
- closeModal(currentModal);
- }
- }
- openClick = false;
- },
- false
-);
-
-var openNavClick = false;
-var nav_is_open = false;
-function CheckNavOpen() {
- if (document.getElementById('menu-btn').checked == true) {
- nav_is_open = true;
- openNavClick = true;
- }
-}
-// Check if user clicks outside of navbar menu
-document.addEventListener(
- "click",
- function (event) {
- // If user either clicks X button OR clicks outside the modal window, then close modal
- if (!openNavClick && nav_is_open == true) {
- if (event.target.matches(".menu-btn") || !event.target.closest(".nav-container")) {
- uncheck('menu-btn');
- nav_is_open = false;
- }
- }
- openNavClick = false;
- },
- false
-);
-
-var splide = new Splide( '.splide', {
- type : 'loop',
- focus : 'center',
- autoplay: true,
- lazyLoad: true,
- keyboard: true,
- isNavigation: true,
- pauseOnHover: true,
- pauseOnFocus: true,
- speed: 1000,
- interval: 5000,
-} );
-
-splide.mount();
-
-// var options = {
-// series: [{
-// name: 'Idea',
-// data: [7, 9, 6, 10, 14],
-// }, {
-// name: 'Implementation',
-// data: [11, 6, 11, 3, 9]
-// }, {
-// name: 'Presentation',
-// data: [12, 7, 12, 11, 8]
-// }, {
-// name: 'Overall',
-// data: [10, 6, 9, 7, 11],
-// }],
-// chart: {
-// type: 'bar',
-// height: 350,
-// stacked: true,
-// background: '#0d1117'
-// },
-// plotOptions: {
-// bar: {
-// horizontal: true,
-// },
-// },
-// stroke: {
-// width: 1,
-// colors: ['#fff']
-// },
-// title: {
-// text: 'Team Scores - Summer 2022',
-// style: {
-// color: '#fff'
-// }
-// },
-// xaxis: {
-// categories: ['Team 2', 'Team 3', 'Team 4', 'Team 6', 'Team 7'],
-// labels: {
-// formatter: function (val) {
-// return val + ""
-// },
-// style: {
-// colors: '#fff'
-// }
-// },
-// },
-// yaxis: {
-// labels: {
-// style: {
-// colors: '#fff'
-// }
-// },
-// title: {
-// text: undefined
-// },
-// },
-// tooltip: {
-// y: {
-// formatter: function (val) {
-// return val + ""
-// }
-// },
-// theme: 'dark'
-// },
-// fill: {
-// opacity: 1
-// },
-// legend: {
-// position: 'top',
-// horizontalAlign: 'left',
-// offsetX: 40,
-// labels: {
-// colors: '#fff',
-// },
-// },
-// };
-
-// var chart = new ApexCharts(document.querySelector("#chart"), options);
+// Gilroy Hacks Website Source Code -> JS (https://gilroyhacks.com)
+"use strict";
+
+// document is loaded and DOM is ready
+document.addEventListener('DOMContentLoaded', function(){
+ // Email replace
+ function setAttributes(elem, attrs) {
+ for(var key in attrs) {
+ elem.setAttribute(key, attrs[key]);
+ }
+ }
+
+ const tech_emails = document.querySelectorAll('.email-replace-tech');
+ tech_emails.forEach(entry => {
+ setAttributes(entry, {"href": "mailto:tech" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ entry.innerHTML = "tech" + "@" + "gilroyhacks.com";
+ });
+
+ var aadhavan = document.getElementById("email-replace-aadhavan");
+ setAttributes(aadhavan, {"href": "mailto:amagesh" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ aadhavan.innerHTML = "amagesh" + "@" + "gilroyhacks.com";
+
+ var isaac = document.getElementById("email-replace-isaac");
+ setAttributes(isaac, {"href": "mailto:ihwang" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ isaac.innerHTML = "ihwang" + "@" + "gilroyhacks.com";
+
+ var steven = document.getElementById("email-replace-steven");
+ setAttributes(steven, {"href": "mailto:steven" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ steven.innerHTML = "steven" + "@" + "gilroyhacks.com";
+
+ const vijay_emails = document.querySelectorAll('.email-replace-vijay');
+ vijay_emails.forEach(entry => {
+ setAttributes(entry, {"href": "mailto:vijay" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ entry.innerHTML = "vijay" + "@" + "gilroyhacks.com";
+ });
+
+ var jonathan = document.getElementById("email-replace-jonathan");
+ setAttributes(jonathan, {"href": "mailto:jonathantessmann" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ jonathan.innerHTML = "jonathantessmann" + "@" + "gilroyhacks.com";
+
+ var james = document.getElementById("email-replace-james");
+ setAttributes(james, {"href": "mailto:james" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ james.innerHTML = "james" + "@" + "gilroyhacks.com";
+
+ var ezra = document.getElementById("email-replace-ezra");
+ setAttributes(ezra, {"href": "mailto:clementboiteux" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ ezra.innerHTML = "clementboiteux" + "@" + "gilroyhacks.com";
+
+ var mark = document.getElementById("email-replace-mark");
+ setAttributes(mark, {"href": "mailto:markshen00" + "@" + "gmail.com?subject=Gilroy Hacks", "target": "_blank"});
+ mark.innerHTML = "markshen00" + "@" + "gmail.com";
+
+ var bryce = document.getElementById("email-replace-bryce");
+ setAttributes(bryce, {"href": "mailto:bryce" + "@" + "gilroyhacks.com?subject=Gilroy Hacks", "target": "_blank"});
+ bryce.innerHTML = "bryce" + "@" + "gilroyhacks.com";
+
+ // Scroll Element
+ // Creating an observer when the user views that element
+ const observer = new IntersectionObserver(entries => {
+ // Loop over the entries
+ entries.forEach(entry => {
+ // If the element is visible
+ if (entry.isIntersecting) {
+ // Add the animation class
+ entry.target.classList.add('slide-animation');
+ }
+ });
+ });
+
+ const observer_prize_2 = new IntersectionObserver(entries => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('slide-animation-prize-2');
+ }
+ });
+ });
+
+ const observer_prize_1 = new IntersectionObserver(entries => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('slide-animation-prize-1');
+ }
+ });
+ });
+
+ const observer_prize_3 = new IntersectionObserver(entries => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('slide-animation-prize-3');
+ }
+ });
+ });
+
+ const observer_team_img = new IntersectionObserver(entries => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('slide-animation-card-img');
+ }
+ });
+ });
+
+ const observer_team_desc = new IntersectionObserver(entries => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('slide-animation-card-desc');
+ }
+ });
+ });
+
+ const workshop_entry = document.querySelectorAll('.workshop-entry');
+ workshop_entry.forEach(entry => {
+ observer.observe(entry);
+ });
+
+ const rules_obj = document.querySelectorAll('.rules-box');
+ rules_obj.forEach(entry => {
+ observer.observe(entry);
+ });
+
+ const entries = document.querySelectorAll('.team-picture');
+ entries.forEach(entry => {
+ observer_team_img.observe(entry);
+ });
+
+ const entries_desc = document.querySelectorAll('.team-description');
+ entries_desc.forEach(entry => {
+ observer_team_desc.observe(entry);
+ });
+
+ const prize_entries = document.querySelectorAll('.prize-column');
+ prize_entries.forEach(entry => {
+ observer.observe(entry);
+ });
+
+ const prize_entries_edge = document.querySelectorAll('.podium-edge');
+ prize_entries_edge.forEach(entry => {
+ observer.observe(entry);
+ });
+
+ // Add class animations to these elements
+ let elements_id = [
+ '#event-title',
+ '#headline-recap',
+ '#div-hr',
+ '#splash-entrance',
+ '#what-GilroyHacks',
+ '#why-GilroyHacks',
+ '#who-GilroyHacks',
+ '#splide',
+ '#signup-title',
+ '#steps-card',
+ '#sponsor-title',
+ '#sponsor-container',
+ '#schedule-title',
+ '#schedule-pa',
+ '#workshops-description',
+ '#second-podium',
+ '#first-podium',
+ '#third-podium',
+ // '#chart',
+ '#administration',
+ '#logistics',
+ '#outreach',
+ '#tech',
+ '#marketing'
+ ];
+ elements_id.forEach(entry => {
+ var thing = document.querySelector(entry)
+ observer.observe(document.querySelector(entry));
+ });
+
+ observer_prize_2.observe(document.querySelector('#second-place'));
+ observer_prize_1.observe(document.querySelector('#first-place'));
+ observer_prize_3.observe(document.querySelector('#third-place'));
+
+ // Scroll Nav
+ // Toggle the .pa-fixed-header class when the user
+ // scroll 100px
+
+ window.onscroll = () => {scrollNavbar()};
+
+ var scrollNavbar = () => {
+ // Target elements
+ const navBar = document.getElementById("navBar");
+ const links = document.querySelectorAll("#navBar a");
+
+ if (document.documentElement.scrollTop > 20) {
+ navBar.classList.add("pa-fixed-header");
+
+ // Change the color of links on scroll
+ for (let i = 0; i < links.length; i++) {
+ const element = links[i];
+ element.classList.add('text-black');
+ }
+ }
+ else {
+ navBar.classList.remove("pa-fixed-header");
+
+ // Change the color of links back to default
+ for (let i = 0; i < links.length; i++) {
+ const element = links[i];
+ element.classList.remove('text-black');
+ }
+ }
+ }
+
+ // Timer
+ // SRC: W3Schools https://www.w3schools.com/howto/howto_js_countdown.asp
+ // Set the date we're counting down to
+ const events = {
+ "Opening Ceremony":
+ {
+ "start": "Apr 15, 2023 10:30:00",
+ "end": "Apr 15, 2023 11:00:00",
+ "tooltip": "Apr 15, 10:30am"
+ },
+ "Lunch":
+ {
+ "start": "Apr 15, 2023 12:00:00",
+ "end": "Apr 15, 2023 13:00:00",
+ "tooltip": "Apr 15, 12:00am"
+ },
+ "Web Dev Workshop":
+ {
+ "start": "Apr 15, 2023 13:00:00",
+ "end": "Apr 15, 2023 14:00:00",
+ "tooltip": "Apr 15, 1:00pm"
+ },
+ "[REDACTED] Workshop":
+ {
+ "start": "Apr 15, 2023 15:00:00",
+ "end": "Apr 15, 2023 16:00:00",
+ "tooltip": "Apr 15, 3:00pm"
+ },
+ "Kahoot":
+ {
+ "start": "Apr 15, 2023 17:00:00",
+ "end": "Apr 15, 2023 18:00:00",
+ "tooltip": "Apr 15, 5:00pm"
+ },
+ "Hacking Ends":
+ {
+ "start": "Apr 16, 2023 14:00:00",
+ "end": "Apr 16, 2023 14:00:00",
+ "tooltip": "Apr 16, 2:00pm"
+ },
+ "Project Presentations":
+ {
+ "start": "Apr 16, 2023 14:30:00",
+ "end": "Apr 16, 2023 16:00:00",
+ "tooltip": "Apr 16, 2:30pm"
+ },
+ "Awards Ceremony" :
+ {
+ "start": "Apr 16, 2023 16:30:00",
+ "end": "Apr 16, 2023 17:00:00",
+ "tooltip": "Apr 16, 4:30pm"
+ }
+ }
+ var countDownDate = 0;
+ // Get today's date and time
+ var now = new Date().getTime();
+ var testDateStart, testDateEnd;
+
+ // Test for the current event
+ for (const event in events) {
+ testDateStart = new Date(events[event]["start"]).getTime();
+ testDateEnd = new Date(events[event]["end"]).getTime();
+ if (testDateEnd > countDownDate && now < testDateEnd) {
+ countDownDate = testDateStart;
+ document.getElementById("event-name").innerHTML = event;
+ document.styleSheets[0].addRule('#timer:after','content: "'+ events[event]["tooltip"] +'";');
+ break;
+ }
+ }
+
+ // Update the count down every 1 second
+ var x = setInterval(function() {
+
+ // Find the distance between now and the count down date
+ var distance = countDownDate - now;
+
+ // Time calculations for days, hours, minutes and seconds
+ var days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ var seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ // If the count down is finished, write some text
+ if (testDateStart < now && now < testDateEnd) {
+ document.getElementById("timer").innerHTML = "NOW";
+ }
+ // Display the result in the element with id="timer"
+ else if (days != 0) {
+ document.getElementById("timer").innerHTML = days + "d " + hours + "h";
+ }
+ else if (hours != 0) {
+ document.getElementById("timer").innerHTML = hours + "h " + minutes + "m";
+ }
+ else if (minutes != 0) {
+ document.getElementById("timer").innerHTML = minutes + "m";
+ }
+ else if (seconds != 0) {
+ document.getElementById("timer").innerHTML = seconds + "s";
+ }
+ else {
+ clearInterval(x);
+ document.getElementById("timer").innerHTML = "---";
+ document.getElementById("event-name").innerHTML = "Event Ended";
+ }
+ }, 1000);
+});
+
+// page is fully loaded, including all frames, objects and images
+window.addEventListener("load", function() {
+
+});
+
+// General functions
+// Checkbox Local Storage
+var i;
+var checkboxes = document.querySelectorAll('#signup-checklist input[type=checkbox]');
+var verify = true;
+function save() {
+ for (i = 0; i < checkboxes.length; i++) {
+ localStorage.setItem(checkboxes[i].value, checkboxes[i].checked);
+ }
+}
+window.onload = function() {
+ load();
+ uncheck('menu-btn');
+};
+function load() {
+ for (i = 0; i < checkboxes.length; i++) {
+ checkboxes[i].checked = localStorage.getItem(checkboxes[i].value) === 'true' ? true:false;
+ }
+}
+function check(id) {
+ document.getElementById(id).checked = true;
+}
+function uncheck(id) {
+ document.getElementById(id).checked = false;
+}
+function notification(id) {
+ if (localStorage.getItem(checkboxes[id].value) != true) { verify = false; }
+ if (verify) { document.getElementById('notification').style.visibility = visible; }
+}
+
+// Disable Scroll (temporarily)
+// left: 37, up: 38, right: 39, down: 40,
+// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36
+var keys = {37: 1, 38: 1, 39: 1, 40: 1};
+
+function preventDefault(e) {
+ e.preventDefault();
+}
+
+function preventDefaultForScrollKeys(e) {
+ if (keys[e.keyCode]) {
+ preventDefault(e);
+ return false;
+ }
+}
+
+// modern Chrome requires { passive: false } when adding event
+var supportsPassive = false;
+try {
+ window.addEventListener("test", null, Object.defineProperty({}, 'passive', {
+ get: function () { supportsPassive = true; }
+ }));
+} catch(e) {}
+
+var wheelOpt = supportsPassive ? { passive: false } : false;
+var wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';
+
+// call this to Disable
+function disableScroll() {
+ window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF
+ window.addEventListener(wheelEvent, preventDefault, wheelOpt); // modern desktop
+ window.addEventListener('touchmove', preventDefault, wheelOpt); // mobile
+ window.addEventListener('keydown', preventDefaultForScrollKeys, false);
+}
+
+// call this to Enable
+function enableScroll() {
+ window.removeEventListener('DOMMouseScroll', preventDefault, false);
+ window.removeEventListener(wheelEvent, preventDefault, wheelOpt);
+ window.removeEventListener('touchmove', preventDefault, wheelOpt);
+ window.removeEventListener('keydown', preventDefaultForScrollKeys, false);
+}
+
+var openClick = false;
+var openModal = false;
+var currentModal;
+
+function closeModal(id) {
+ document.getElementById(id).style.display = "none";
+ document.getElementById("modal-overlay").style.display = "none";
+ enableScroll();
+ openModal = false;
+}
+
+function showModal(id) {
+ document.getElementById(id).style.display = "block";
+ document.getElementById("modal-overlay").style.display = "block";
+ document.getElementById("modal-overlay").style.opacity = 1;
+ document.getElementById("modal-overlay").classList.add("modal-animation");
+ disableScroll();
+ openClick = true;
+ openModal = true;
+ currentModal = id;
+}
+
+// Check if user clicks outside of modal
+document.addEventListener(
+ "click",
+ function (event) {
+ // If user either clicks X button OR clicks outside the modal window, then close modal by calling closeModal()
+ if (!openClick && openModal == true) {
+ if (event.target.matches(".button-close-modal") || !event.target.closest(".modal")) {
+ closeModal(currentModal);
+ }
+ }
+ openClick = false;
+ },
+ false
+);
+
+var openNavClick = false;
+var nav_is_open = false;
+function CheckNavOpen() {
+ if (document.getElementById('menu-btn').checked == true) {
+ nav_is_open = true;
+ openNavClick = true;
+ }
+}
+// Check if user clicks outside of navbar menu
+document.addEventListener(
+ "click",
+ function (event) {
+ // If user either clicks X button OR clicks outside the modal window, then close modal
+ if (!openNavClick && nav_is_open == true) {
+ if (event.target.matches(".menu-btn") || !event.target.closest(".nav-container")) {
+ uncheck('menu-btn');
+ nav_is_open = false;
+ }
+ }
+ openNavClick = false;
+ },
+ false
+);
+
+var splide = new Splide( '.splide', {
+ type : 'loop',
+ focus : 'center',
+ autoplay: true,
+ lazyLoad: true,
+ keyboard: true,
+ isNavigation: true,
+ pauseOnHover: true,
+ pauseOnFocus: true,
+ speed: 1000,
+ interval: 5000,
+} );
+
+splide.mount();
+
+// var options = {
+// series: [{
+// name: 'Idea',
+// data: [7, 9, 6, 10, 14],
+// }, {
+// name: 'Implementation',
+// data: [11, 6, 11, 3, 9]
+// }, {
+// name: 'Presentation',
+// data: [12, 7, 12, 11, 8]
+// }, {
+// name: 'Overall',
+// data: [10, 6, 9, 7, 11],
+// }],
+// chart: {
+// type: 'bar',
+// height: 350,
+// stacked: true,
+// background: '#0d1117'
+// },
+// plotOptions: {
+// bar: {
+// horizontal: true,
+// },
+// },
+// stroke: {
+// width: 1,
+// colors: ['#fff']
+// },
+// title: {
+// text: 'Team Scores - Summer 2022',
+// style: {
+// color: '#fff'
+// }
+// },
+// xaxis: {
+// categories: ['Team 2', 'Team 3', 'Team 4', 'Team 6', 'Team 7'],
+// labels: {
+// formatter: function (val) {
+// return val + ""
+// },
+// style: {
+// colors: '#fff'
+// }
+// },
+// },
+// yaxis: {
+// labels: {
+// style: {
+// colors: '#fff'
+// }
+// },
+// title: {
+// text: undefined
+// },
+// },
+// tooltip: {
+// y: {
+// formatter: function (val) {
+// return val + ""
+// }
+// },
+// theme: 'dark'
+// },
+// fill: {
+// opacity: 1
+// },
+// legend: {
+// position: 'top',
+// horizontalAlign: 'left',
+// offsetX: 40,
+// labels: {
+// colors: '#fff',
+// },
+// },
+// };
+
+// var chart = new ApexCharts(document.querySelector("#chart"), options);
// chart.render
\ No newline at end of file