// bindet Effekte an das Menu
function accordion () {
    var titles = [];
    var contents = [];
    var level = 0;

    while (true) {
	level++;
	titles[level] = document.getElementsByClassName('title_level'+level);

	if (titles[level].length < 1) {
	    break; // keine Elemente dieses Levels vorhanden
	}

	contents[level] = document.getElementsByClassName('content_level'+level);

	titles[level].each(function (t, i) {
	    var j = level; // level zwischenspeichern, da es weiter inkrementiert wird
	    var e = new fx.Height(contents[j][i] , {duration: open_duration, onComplete: function() {
		if (contents[j][i].offsetHeight > 0) { // ebene aktiviert
		    contents[j][i].style.height = '1%'; // hoehe entfernen, damit der content dynamisch mit Unterebenen waechst
		    toggleActive(t, true);
		} else { // ebene deaktiviert
		    toggleActive(t, false);	
		}
		} // function
	    }); // parameter list

	    // behandle initial zu oeffnende Elemente
	    if (level > initial_open_levels)
		e.hide();
	    else
		toggleActive(t, true);

	    t.onclick = function() {
	    e.toggle();
	    }
	}); // for each titles
    } // while
} // accordion

// setzt das Listenelement ueber dem aktuellen Element (in-)aktiv
function toggleActive (title, active) {
    var target = findElement(title, "li");

    if (active)
	Element.addClassName(target, "active");
    else
	Element.removeClassName(target, "active");
}

// aus prototype.js: findet Element mit einem bestimmten Namen ab dem aktuellen Element
function findElement (element, tagName) {
    while (element.parentNode &&
	    (!element.tagName ||
	     (element.tagName.toUpperCase() != tagName.toUpperCase())
	    )
	  )
	element = element.parentNode;
    return element;
}

// onload Event handler registrieren
exOnload = window.onload;
window.onload = function() {
    exOnload;
    accordion();
}
