| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- // Clock
- var dat = document.querySelector("#date-and-time");
- var tz = Intl.DateTimeFormat().resolvedOptions().timeZone
- function updateTime() {
- var currentTime = new Date().toLocaleString(navigator.languages[0], {"timezone": tz});
- dat.textContent = currentTime;
- }
- setInterval(updateTime, 1000);
- // Drag elements (base code from https://www.geeksforgeeks.org/html/draggable-element-using-javascript/)
- const dragElements = document.querySelectorAll(".draggable");
- function onMouseDrag(event, element) {
- let leftValue = parseInt(window.getComputedStyle(element).left);
- let topValue = parseInt(window.getComputedStyle(element).top);
- if (0 < (leftValue + event.movementX) && (leftValue + event.movementX) < (window.window.innerWidth - element.offsetWidth)) {
- element.style.left = `${leftValue + event.movementX}px`;
- }
- if (0 < (topValue + event.movementY) && (topValue + event.movementY) < (window.window.innerHeight - element.offsetHeight)) {
- element.style.top = `${topValue + event.movementY}px`;
- }
- }
- dragElements.forEach((element) => {
- if (document.getElementById(element.id + "-header"))
- document.getElementById(element.id + "-header").addEventListener("mousedown", (e) => {
- const onMove = (event) => onMouseDrag(event, element);
- document.addEventListener("mousemove", onMove);
- document.addEventListener("mouseup", () => {
- document.removeEventListener("mousemove", onMove);
- }, { once: true });
- });
- if (document.getElementById(element.id + "-open")) {
- document.getElementById(element.id + "-open").addEventListener("click", () => {
- openWindow(element);
- document.getElementById(element.id + "-open").classList.toggle("closed");
- })
- }
- if (document.getElementById(element.id + "-close")) {
- document.getElementById(element.id + "-close").addEventListener("click", () => {
- closeWindow(element);
- document.getElementById(element.id + "-open").classList.add("closed");
- })
- }
- });
- // Open & close windows
- var dock = document.getElementById("dock-div");
- var topbar = document.getElementById("topbar-div");
- function closeWindow(elt) {
- elt.classList.add("hidden");
- }
- var biggestIndex = 0;
- function openWindow(elt) {
- elt.classList.toggle("hidden");
- biggestIndex ++;
- elt.style.zIndex = biggestIndex;
- dock.style.zIndex = biggestIndex + 1;
- topbar.style.zIndex = biggestIndex + 1;
- }
- // Bell
- var bellbtn = document.getElementById("notif-btn");
- var bellsound = new Audio("../sounds/ding.mp3");
- bellbtn.addEventListener("click", function() {
- bellsound.play();
- });
- // Book list app
- var booktitle = document.getElementById("current-book-title");
- var bookauthor = document.getElementById("current-book-author");
- var bookend = document.getElementById("current-book-end-date");
- var bookpubdate = document.getElementById("current-book-publication-date");
- var bookcomments = document.getElementById("current-book-comments");
- var booklisticon = document.getElementById("booklist-div-icon");
- var currentbookid = books.length - 1;
- function updateBook(id) {
- booktitle.textContent = books[id].title;
- bookauthor.textContent = "Written by " + books[id].author;
- bookend.textContent = "I finished it on " + books[id].end_date;
- bookpubdate.textContent = "It was published on " + books[id].publication_date;
- bookcomments.textContent = books[id].comments;
- booklisticon.textContent = books[id].icon;
- }
- function previousBook() {
- if (currentbookid > 0) {
- currentbookid --;
- updateBook(currentbookid);
- } else {
- alert("It was the first book !");
- }
- }
- function nextBook() {
- if (currentbookid < books.length - 1) {
- currentbookid ++;
- updateBook(currentbookid);
- } else {
- alert("It is the last book !");
- }
- }
- document.getElementById("next-book-btn").addEventListener("click", nextBook);
- document.getElementById("previous-book-btn").addEventListener("click", previousBook);
- updateBook(currentbookid);
- // Super secret pong
- var pongscore = document.getElementById("super-secret-pong-score");
- var pongleftpaddle = document.getElementById("super-secret-pong-left-paddle");
- var pongleftpaddleoffset = - 19;
- var pongrightpaddle = document.getElementById("super-secret-pong-right-paddle");
- var pongrightpaddleoffset = - 51;
- var pongpaddlepos;
- var pongball = document.getElementById("super-secret-pong-ball");
- var pongballyoffset = -83;
- var pongballx;
- var pongballxvel;
- var pongbally;
- var pongballyvel;
- var ponginterval;
- var pongstatus = false;
- function pongResetScore() {
- pongscore.textContent = "0";
- }
- function pongInit() {
- pongpaddlepos = 18;
- pongleftpaddle.style.top = "-1px";
- pongrightpaddle.style.top = "-33px";
- pongballx = 32;
- pongball.style.left = "32px";
- pongbally = 32;
- pongball.style.top = "-51px";
- }
- function pongStart() {
- pongInit();
- pongstatus = true;
- pongscore.textContent = "0";
- pongballxvel = 6;
- pongballyvel = 3;
- ponginterval = setInterval(updateBall, 100);
- }
- function updateBall() {
- if (0 > pongbally + pongballyvel || pongbally + pongballyvel > 196) {
- if (pongballyvel > 0) {
- pongballyvel = - Math.floor(Math.random() * 2) - pongballyvel;
- } else {
- pongballyvel = Math.floor(Math.random() * 2) - pongballyvel;
- }
- }
- if (18 > pongballx + pongballxvel || pongballx + pongballxvel > 374) {
- if (pongpaddlepos < pongbally + pongballyvel && pongbally + pongballyvel < pongpaddlepos + 32) {
- if (pongballxvel > 0) {
- pongballxvel = - Math.floor(Math.random() * 2) - pongballxvel;
- } else {
- pongballxvel = Math.floor(Math.random() * 2) - pongballxvel;
- }
- pongscore.textContent ++;
- } else {
- clearInterval(ponginterval);
- pongstatus = false;
- pongballx += pongballxvel;
- pongbally += pongballyvel;
- pongball.style.left = pongballx.toString() + "px";
- var pongballywithoffset = pongbally + pongballyoffset;
- pongball.style.top = pongballywithoffset.toString() + "px";
- }
- }
- pongballx += pongballxvel;
- pongbally += pongballyvel;
- pongball.style.left = pongballx.toString() + "px";
- var pongballywithoffset = pongbally + pongballyoffset;
- pongball.style.top = pongballywithoffset.toString() + "px";
- }
- document.getElementById("super-secret-pong-start").addEventListener("click", pongStart);
- document.body.addEventListener("keydown", function(event) {
- if (event.key == "ArrowUp" && pongstatus) {
- if (0 < pongpaddlepos) {
- pongpaddlepos -= 4;
- var pongleftpaddleposwithoffset = pongpaddlepos + pongleftpaddleoffset;
- var pongrightpaddleposwithoffset = pongpaddlepos + pongrightpaddleoffset;
- pongleftpaddle.style.top = pongleftpaddleposwithoffset.toString() + "px";
- pongrightpaddle.style.top = pongrightpaddleposwithoffset.toString() + "px";
- }
- } else if (event.key == "ArrowDown" && pongstatus) {
- if (pongpaddlepos < 168) {
- pongpaddlepos += 4;
- var pongleftpaddleposwithoffset = pongpaddlepos + pongleftpaddleoffset;
- var pongrightpaddleposwithoffset = pongpaddlepos + pongrightpaddleoffset;
- pongleftpaddle.style.top = pongleftpaddleposwithoffset.toString() + "px";
- pongrightpaddle.style.top = pongrightpaddleposwithoffset.toString() + "px";
- }
- }
- });
- pongInit();
- // Super secret button
- var supersecretcounter = 0;
- var pongSound = new Audio("../sounds/pong.mp3");
- document.getElementById("harupios-btn").addEventListener("click", function() {
- supersecretcounter ++;
- pongSound.play();
- if (supersecretcounter == 8) {
- document.getElementById("super-secret-pong-div-open").classList.remove("hidden");
- document.getElementById("super-secret-pong-div").classList.remove("hidden");
- }
- });
|