Witam

Chciałbym dać Wam do oceny moje menu wykonane z użyciem Prototype.
http://phpworkstation.com/prototype/menu.htmlNatchnieniem do jego wykonania było
to menu napisane w jQuery. Jak widać mój kod jest nieco dłuższy

Jest to mój pierwszy kontakt z Prototype więc prosiłbym o wytknięcie wszelkich błędów tudzież nakierowanie co można było rozwiązać inaczej, lepiej. W sumie kod dostępny jest bezpośrednio w pliku jednak pozwolę go sobie wkleić również tutaj:
var currentDd = null;
var SlideMenu = Class.create();
SlideMenu.prototype = {
initialize: function(id) {
this.id = id;
this.elements = new Array();
var childs = $(this.id).childElements();
var childsLength = childs.length;
var dt;
var dd;
for (var i=0; i<childsLength; i++) {
var child = childs[i];
switch (child.tagName.toLowerCase()) {
case "dt":
dt = (child.className != "empty") ? new SlideMenu_Dt(child) : null;
break;
case "dd":
dd = new SlideMenu_Dd(child);
child.hide();
if (dt instanceof SlideMenu_Dt && dd instanceof SlideMenu_Dd) {
this.elements.push(new SlideMenu_Pair(dt, dd));
dt = null;
dd = null;
}
break;
}
}
}
}
var SlideMenu_Pair = Class.create();
SlideMenu_Pair.prototype = {
initialize: function(dt, dd) {
this.dt = dt;
this.dd = dd;
dt.element.onclick = function() {
if (dd != currentDd) {
if (!dd.isOpened) {
dd.open();
}
else {
dd.close();
}
currentDd = dd;
}
}
}
}
var SlideMenu_Dt = Class.create();
SlideMenu_Dt.prototype = {
initialize: function(element) {
this.element = element;
}
}
var SlideMenu_Dd = Class.create();
SlideMenu_Dd.prototype = {
initialize: function(element) {
this.element = element;
this.isOpened = false;
},
open: function() {
if (currentDd != null) {
currentDd.close();
}
if (!this.isOpened) {
new Effect.SlideDown(this.element, {duration:0.1});
this.isOpened = true;
}
},
close: function() {
if (this.isOpened) {
new Effect.SlideUp(this.element, {duration:0.1});
this.isOpened = false;
}
}
}
function initMenu() {
var menu = new SlideMenu("root");
}
Event.observe(window, "load", initMenu, false);
Równocześnie prosiłbym o zgłaszanie ewentualnych problemów w działaniu (testowałem na Operze i FireFoxie).
Pozdrawiam: pion