Mam kod z kurshtml:

  1. /**
  2. * @author Sławomir Kokłowski {@link http://www.kurshtml.boo.pl}
  3. * @copyright NIE usuwaj tego komentarza! (Do NOT remove this comment!)
  4. */
  5.  
  6. function Menu(id, style, otworz, wysun, czasRozwin, czasZwin, czasOtworz, czasZamknij)
  7. {
  8. if (typeof czasRozwin == 'undefined' || czasRozwin < 0) czasRozwin = 25;
  9. if (typeof czasZwin == 'undefined' || czasZwin < 0) czasZwin = 25;
  10. if (typeof czasOtworz == 'undefined' || czasOtworz < 0) czasOtworz = 250;
  11. if (typeof czasZamknij == 'undefined' || czasZamknij < 0) czasZamknij = 500;
  12.  
  13. if (style)
  14. {
  15. style = style.replace(/(^\s+|(\s|;)+$)/g, '').split(/\s*;\s*/);
  16. for (var i = 0; i < style.length; i++)
  17. {
  18. style[i] = style[i].split(/\s*:\s*/);
  19. for (var j = 0, c, property = ''; j < style[i][0].length; j++)
  20. {
  21. c = style[i][0].charAt(j);
  22. property += c == '-' ? style[i][0].charAt(++j).toUpperCase() : c.toLowerCase();
  23. }
  24. eval('document.getElementById("' + id + '").style.' + property + ' = "' + style[i][1].replace(/"/g, '\\"') + '"');
  25. }
  26. }
  27. for (var i = 0; i < document.getElementById(id).getElementsByTagName('dt').length; i++)
  28. {
  29. var dd = new Array();
  30. var el = document.getElementById(id).getElementsByTagName('dt')[i].nextSibling;
  31. var nodeName;
  32. while (el && (nodeName = el.nodeName.toLowerCase()) != 'dt')
  33. {
  34. if (nodeName == 'dd')
  35. {
  36. el._dt = document.getElementById(id).getElementsByTagName('dt')[i];
  37. if (otworz)
  38. {
  39. el.onmouseover = function()
  40. {
  41. clearTimeout(this._dt._timoutID);
  42. this._dt._displayed = false;
  43. this._dt.onclick();
  44. }
  45. el.onmouseout = function()
  46. {
  47. clearTimeout(this._dt._timoutID);
  48. var dt = this._dt;
  49. this._dt._timoutID = setTimeout(function () { dt._displayed = true; dt.onclick(); }, czasZamknij);
  50. };
  51. }
  52. dd[dd.length] = el;
  53. }
  54. el = el.nextSibling;
  55. }
  56. document.getElementById(id).getElementsByTagName('dt')[i]._dd = dd;
  57. document.getElementById(id).getElementsByTagName('dt')[i]._timoutID = null;
  58. document.getElementById(id).getElementsByTagName('dt')[i]._displayed = false;
  59. document.getElementById(id).getElementsByTagName('dt')[i].onclick = function()
  60. {
  61. clearTimeout(this._timoutID);
  62. if (!this._displayed)
  63. {
  64. var el = this.parentNode.getElementsByTagName('dt')[0];
  65. while (el)
  66. {
  67. if (el.nodeName.toLowerCase() == 'dt' && el != this)
  68. {
  69. el._displayed = false;
  70. if (czasZwin) display(el, 0);
  71. else display(el);
  72. }
  73. el = el.nextSibling;
  74. }
  75. }
  76. this._displayed = !this._displayed;
  77. if (this._displayed && czasRozwin || !this._displayed && czasZwin) display(this, 0);
  78. else display(this);
  79. return false;
  80. };
  81. if (otworz)
  82. {
  83. document.getElementById(id).getElementsByTagName('dt')[i].onmouseover = function()
  84. {
  85. clearTimeout(this._timoutID);
  86. var dt = this;
  87. this._timoutID = setTimeout(function () { dt._displayed = false; dt.onclick(); }, czasOtworz);
  88. };
  89. document.getElementById(id).getElementsByTagName('dt')[i].onmouseout = function()
  90. {
  91. clearTimeout(this._timoutID);
  92. var dt = this;
  93. this._timoutID = setTimeout(function () { dt._displayed = true; dt.onclick(); }, czasZamknij);
  94. };
  95. }
  96. }
  97. for (var i = 0; i < document.getElementById(id).getElementsByTagName('dd').length; i++)
  98. {
  99. with (document.getElementById(id).getElementsByTagName('dd')[i])
  100. {
  101. if (getElementsByTagName('a').length && getElementsByTagName('a')[0].href && unescape(getElementsByTagName('a')[0].href) == unescape(window.location.href)) className = (className ? className + ' ' : '') + 'active';
  102. }
  103. }
  104. start(document.getElementById(id).getElementsByTagName('dt')[0]);
  105. function start(dt)
  106. {
  107. var hide = true;
  108. var el = dt;
  109. while (el)
  110. {
  111. var nodeName = el.nodeName.toLowerCase();
  112. if (nodeName == 'dt')
  113. {
  114. dt = el;
  115. hide = true;
  116. }
  117. else if (nodeName == 'dd')
  118. {
  119. if (el.getElementsByTagName('a').length && el.getElementsByTagName('a')[0].href && unescape(el.getElementsByTagName('a')[0].href) == unescape(window.location.href))
  120. {
  121. dt._displayed = true;
  122. display(dt);
  123. hide = false;
  124. var el_parentNode = el.parentNode;
  125. while (el_parentNode != document.getElementById(id))
  126. {
  127. if (el_parentNode.nodeName.toLowerCase() == 'dd')
  128. {
  129. var el_sibling = el_parentNode.previousSibling;
  130. while (el_sibling)
  131. {
  132. if (el_sibling.nodeName.toLowerCase() == 'dt')
  133. {
  134. el_sibling._displayed = true;
  135. display(el_sibling)
  136. break;
  137. }
  138. el_sibling = el_sibling.previousSibling;
  139. }
  140. }
  141. el_parentNode = el_parentNode.parentNode;
  142. }
  143. }
  144. if (hide) el.style.display = 'none';
  145. start(el.getElementsByTagName('dt')[0]);
  146. }
  147. el = el.nextSibling;
  148. }
  149. }
  150. function display(dt, i)
  151. {
  152. if (typeof i == 'undefined')
  153. {
  154. for (var i = 0; i < dt._dd.length; i++)
  155. {
  156. dt._dd[i].style.display = dt._displayed ? 'block' : 'none';
  157. }
  158. }
  159. else if (i < dt._dd.length)
  160. {
  161. var dir = wysun ? !dt._displayed : dt._displayed;
  162. dt._dd[dir ? i : dt._dd.length - 1 - i].style.display = dt._displayed ? 'block' : 'none';
  163. dt._timoutID = setTimeout(function() { display(dt, i + 1); }, dt._displayed ? czasRozwin : czasZwin);
  164. }
  165. }
  166. }



Do otwierania menu, co trzeba w nim zmodyfikowac aby zapamietywalo mi sesje. Bo np. mam 3 glowne naglowki, wybiore jeden to mi sie lista rozwinie, wybiore drugi to mi sie ta w.w lista zminie i rozwinie mi sie nowa. Co zrobic zeby mi je zapamietywalo? Niekoniecznie po odswierzeniu przegladarki!