project.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /**
  2. * Current image ID for the image viewer.
  3. */
  4. let curImage = 0;
  5. /**
  6. * Total number of images.
  7. */
  8. let totalImages = -1;
  9. /**
  10. * Indicates if the image viewer is open.
  11. */
  12. let viewer_open = false;
  13. /**
  14. * Shows an image in the image viewer.
  15. *
  16. * Loads the image and text from the image preview.
  17. *
  18. * @param element The clicked img element.
  19. */
  20. function showImage(element){
  21. curImage = Number(element.id.substring(4));
  22. document.getElementById('cover').style.display = 'block';
  23. document.getElementById('cover').style.opacity = '1';
  24. loadImage(element);
  25. document.getElementById('image_viewer').style.display = 'block';
  26. if (totalImages == -1) totalImages = document.getElementById("image_reel").children.length;
  27. viewer_open = true;
  28. }
  29. /**
  30. * Closes the image viewew.
  31. */
  32. function closeImage(){
  33. document.getElementById('cover').style.display = 'none';
  34. document.getElementById('cover').style.opacity = '0';
  35. document.getElementById('image_viewer').style.display = 'none';
  36. viewer_open = false;
  37. }
  38. /**
  39. * Shows the next image in the image viewer.
  40. */
  41. function nextImage(){
  42. curImage = curImage + 1;
  43. if (curImage > totalImages) curImage = 0;
  44. loadImage(document.getElementById('img_' + curImage));
  45. }
  46. /**
  47. * Shows the previous image in the image viewer.
  48. */
  49. function prevImage(){
  50. curImage = curImage - 1;
  51. if (curImage < 0) curImage = totalImages;
  52. loadImage(document.getElementById('img_' + curImage));
  53. }
  54. /**
  55. * Shows an image in the image viewer.
  56. *
  57. * Dont call manually, use {@see showImage} instead.
  58. *
  59. * @param element The clicked img element.
  60. */
  61. function loadImage(element){
  62. document.getElementById('image_viewer_title').innerHTML = element.title;
  63. document.getElementById('image_viewer_image').src = element.src;
  64. document.getElementById('image_viewer_image').srcset = element.srcset;
  65. document.getElementById('image_viewer_image').alt = element.alt;
  66. document.getElementById('image_viewer_image').title = element.title;
  67. }
  68. /**
  69. * Handles keys for the image viewer.
  70. *
  71. * Left, Right and ESC keys are handled, and only when the viewer is opened.
  72. *
  73. * @param e Key event.
  74. */
  75. function keyCapt(e){
  76. if(typeof window.event!="undefined") e = window.event; //IE stuff
  77. if(e.type == "keydown"){
  78. switch(e.keyCode){
  79. case 37: if (viewer_open === true) prevImage(); break; // Left
  80. case 39: if (viewer_open === true) nextImage(); break; // Right
  81. case 27: if (viewer_open === true) closeImage(); break; // ESC
  82. }
  83. }
  84. }
  85. if (document.addEventListener){ // Listen to keypresses, standart
  86. document.addEventListener("keydown",keyCapt,false);
  87. document.addEventListener("keyup",keyCapt,false);
  88. document.addEventListener("keypress",keyCapt,false);
  89. }
  90. else{ // Listen to keypresses, IE
  91. document.attachEvent("onkeydown",keyCapt);
  92. document.attachEvent("onkeyup",keyCapt);
  93. document.attachEvent("onkeypress",keyCapt);
  94. }