Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.21 KB | None | 0 0
  1. function init() {
  2. category.init();
  3. list.init();
  4. } // End init
  5. addListener(window,"load",init);
  6.  
  7.  
  8. var category = {
  9.  
  10. menuElem: null, // Referens till elementet för kategorimenyn
  11. imagesElem: null, // Referens till elementet där de små bildrutorna ska läggas in
  12. largeImgElem: null, // Referens till img-element för den stora bilden
  13.  
  14. init: function() {
  15.  
  16. category.menuElem = document.getElementById("categoryMenu");
  17. category.menuElem.selectedIndex = 0;
  18. category.imagesElem = document.getElementById("images");
  19. addListener(category.menuElem,"change",category.category);
  20. category.largeImgElem = document.getElementById("largeImg");
  21. }, // End init
  22.  
  23. // Avläs menyn för val av kategori
  24. category: function() {
  25. var catNr; // Index för valt alternativ i menyn = nummer för vald kategori
  26. catNr = category.menuElem.selectedIndex;
  27. category.requestImages(catNr);
  28. category.menuElem.selectedIndex = 0;
  29. }, // End category
  30.  
  31. // Gör ett Ajax-anrop för att läsa in begärd fil
  32. requestImages: function(nr) { // Parametern nr används i url:en för den fil som ska läsas in
  33. var request; // Object för Ajax-anropet
  34. request = new XMLHttpRequest();
  35. request.open("GET","categories/images"+nr+".xml",true);
  36. request.send(null); // Skicka begäran till servern
  37. request.onreadystatechange = function () { // Funktion för att avläsa status i kommunikationen
  38. if ( (request.readyState === 4) && (request.status === 200) ) { category.getImages(request.responseXML);
  39. }
  40. // Då kommunikationen är klar blir readyState 4 och om filen fanns blir status 200 (OK).
  41. };
  42. }, // End requestImages
  43.  
  44. // Funktion för att tolka XML-koden och skapa HTML-kod med innehållet som ska visas på sidan
  45. getImages: function(XMLcode) {
  46.  
  47. var HTMLcode; // Textsträng för den HTML-kod som ska skapas
  48. var categoryElem; // Referens till category-elementet i XML-koden
  49. var urlElems; // Array med url-elementen i XML-koden
  50. var captionElems; // Array med caption-elementen i XML-koden
  51. var i; // Loopvariabel
  52. var imgElems; // Array med referenser till alla nya img-taggar för de små bilderna
  53.  
  54. categoryElem = XMLcode.getElementsByTagName("category");
  55. urlElems = XMLcode.getElementsByTagName("url"); // Alla url-element
  56. captionElems = XMLcode.getElementsByTagName("caption"); // Alla caption-element
  57. HTMLcode = "<h3>" + categoryElem[0].firstChild.data + "</h3>";
  58. for (i=0; i<urlElems.length; i++) {
  59. HTMLcode += '<div><p>' + captionElems[i].firstChild.data + '</p><img src="' + urlElems[i].firstChild.data + '" alt=""></div>';
  60. }
  61.  
  62. category.imagesElem.innerHTML = HTMLcode;
  63. imgElems = document.getElementById("images").getElementsByTagName("img");
  64.  
  65. for (i=0; i<imgElems.length; i++) {
  66. addListener(imgElems[i],"mouseover",category.showLargeImage);
  67. addListener(imgElems[i],"click",list.addToList);
  68. }
  69. }, // End getImages
  70.  
  71. // Visa den stora bild som motsvarar den lilla bild som man pekar på
  72. showLargeImage: function() {
  73. category.largeImgElem.src = this.src;
  74. } // End showLargeImage
  75.  
  76. }; // End Category
  77.  
  78.  
  79.  
  80.  
  81. var list = {
  82.  
  83. elem: null, // Referens till element med valda bilder
  84. imgElem: null, // Referens till element för liten bild i listan
  85. imgUrls: null, // Array med url:er till valda bilder
  86. imgCaptions: null, // Array med bildtexter till valda bilder
  87.  
  88. init: function() {
  89.  
  90. list.elem = document.getElementById("list");
  91. list.imgElem = document.getElementById("listImg");
  92. addListener(document.getElementById("saveBtn"),"click",list.saveList);
  93. addListener(document.getElementById("goBtn"),"click",function() {location.href = "slideshow.htm";});
  94. list.imgUrls = [];
  95. list.imgCaptions = [];
  96. }, // End init
  97.  
  98. // Lägg in den bild man klickat på i listan. Titeln ska visas i listan på sidan. Både titel och url sparas i arrayerna.
  99. addToList: function() {
  100. var titleElem; // Referens till det element som innehåller bildens titel.
  101. var newElem; // Nytt element som skapas
  102. titleElem = this.parentNode.getElementsByTagName("p")[0];
  103. newElem = titleElem.cloneNode(true);
  104. addListener(newElem,"click",list.removeFromList);
  105. addListener(newElem,"mouseover",list.showListImg);
  106. addListener(newElem,"mouseout",list.hideListImg);
  107. list.elem.appendChild(newElem);
  108. list.imgUrls.push(this.src);
  109. list.imgCaptions.push(titleElem.innerHTML);
  110. }, // End addToList
  111.  
  112. // Ta bort den rubrik som användaren klickat på ur listan, dvs ta bort elementet och motsvarande url och rubrik ur arrayerna.
  113. removeFromList: function() {
  114. var ix; // index till markerad bild
  115. ix = list.getIndex(this);
  116. list.imgUrls.splice(ix,1);
  117. list.imgCaptions.splice(ix,1);
  118. list.elem.removeChild(this);
  119. list.imgElem.style.visibility = "hidden"; // Dölj även den lilla bilden, ifall den visades
  120. }, // End removeFromList
  121.  
  122. // Ta fram index för en bild i listan.
  123. getIndex: function(thisP) { // thisP är referenstill det p-element som ska sökas upp i listan
  124. var pElems; // Array med referenser till alla p-element i listan
  125. var i; // Loopvariabel
  126. pElems = list.elem.getElementsByTagName("p");
  127. for (i=0; i<pElems.length; i++) {
  128. if (pElems[i] === thisP) { return i;
  129. }
  130. }
  131. }, // End getIndex
  132.  
  133. // Visa en liten "popup"-bild för den rubrik i listan som man pekar på
  134. showListImg: function(e) { // e är event-objektet
  135. list.imgElem.src = list.imgUrls[list.getIndex(this)]; // Ta fram url till bilden
  136. list.imgElem.style.left = (e.clientX+window.pageXOffset+5) + "px"; // e.clientX och e.clientY är muspekarens koordinater i fönstret
  137. list.imgElem.style.top = (e.clientY+window.pageYOffset+5) + "px"; // window.pageXOffset och window.pageYOffset är antal pixlar fönstret scrollats
  138. list.imgElem.style.visibility = "visible";
  139. }, // End showListImg
  140.  
  141. // Dölj den lilla "popup"-bilden
  142. hideListImg: function() {
  143. list.imgElem.style.visibility = "hidden";
  144. }, // End hideListImg
  145.  
  146. // Spara listan i web storage. Använd #.# som skiljetecken i arrayerna, vilket förutsätter att sekvensen ej förekommeri någon url eller bildtitel
  147. saveList: function() {
  148. localStorage.imgUrls = list.imgUrls.join("#.#");
  149. localStorage.imgCaptions = list.imgCaptions.join("#.#");
  150. } // End saveList
  151.  
  152.  
  153.  
  154. }; // End List
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement