function Accordion(id) {
  // Speicher das Element der übergebenen ID als Akkordion Container
  this.accContainer = document.getElementById(id);
	
  // Alle Elemente mit der CSS-Klasse 'accordionItem' holen
  this.accItems = YAHOO.util.Dom.getElementsByClassName("accordionItem", "div", this.accContainer);
  
  // default Akkordion body Höhe definieren
  this.accItemBodyHeight = 1;
  this.accItemHeaderHeight = 1;
  var animSpeed=0.1;
  
  // ?ber alle Akkordion Elemente iterieren und jedes einzelne in einem Array speichern
  for (var i=0; i<this.accItems.length; i++) {
    // Aktuelles Akkordion Element als Eltern-Element für dazugehürigen Header und Body speichern
    this.accItems[i].parent = this;
    // Akkordion Header und Body des aktuellen Akkordion Elements holen und speichern
    this.accItems[i].header = 
      YAHOO.util.Dom.getElementsByClassName("accordionHeader", "div", this.accItems[i])[0];
    this.accItems[i].body = 
      YAHOO.util.Dom.getElementsByClassName("accordionBody", "div", this.accItems[i])[0];
    
    // Prüfen ob das aktuelle Akkordion Element das aktive Element ist (also eine gr??ere
    // Höhe für den accordion body gesetzt hat). Normalerweise sollte nur ein Element eine
    // Höhe größer 0 definiert haben. Wenn die Höhe größer 0 ist wird das aktuelle Element
    // als aktives Element gespeichert
    if (this.accItems[i].body.offsetHeight > this.accItemBodyHeight) {
      this.accItemHeaderHeight = this.accItems[i].header.offsetHeight;
 	  this.accItemBodyHeight = this.accItems[i].body.offsetHeight;
      this.activeItem = this.accItems[i];
      this.activeItem.body.style.height = this.accItemBodyHeight + "px";
    }
    
    // Einen Click Event Listener für jeden accordion header registrieren
    YAHOO.util.Event.addListener(this.accItems[i].header, "mouseover", function(){
      // Wenn auf das aktive Element geklickt wurde - nichts machen
      if(this.parent.activeItem == this){
        return;
      }

      // Für das aktive Element eine "Schrumpf" Animation für den Body definieren
      var shrinkLastAccAnimBody = new YAHOO.util.Anim(this.parent.activeItem.body, {
        height:{from:this.parent.accItemBodyHeight, to:1}}, animSpeed);
      // Für das aktive Element eine "Ausdehnen" Animation für den Header definieren
	  var expandLastAccAnimHeader = new YAHOO.util.Anim(this.parent.activeItem.header, {
        height:{from:0, to:this.parent.accItemHeaderHeight}}, animSpeed);
	    
      // Für das angeklickte Elment eine "Schrumpf" Animation für den Header definieren
      var shrinkNewActiveAccAnimHeader = new YAHOO.util.Anim(this.header, {
        height:{from:this.parent.accItemHeaderHeight, to:1}}, animSpeed);
   	  // Für das angeklickte Elment eine "Ausdehnen" Animation für den Body definieren
      var expandNewActiveAccAnimBody = new YAHOO.util.Anim(this.body, {
        height:{from:0, to:this.parent.accItemBodyHeight}}, animSpeed);
	    	
      // Selektiertes Element als aktives Element setzen
      expandNewActiveAccAnimBody.onStart.subscribe(function() {
        this.parent.activeItem = this;
      }, this, true);
	
      // Animation starten
      shrinkLastAccAnimBody.animate();
	  expandLastAccAnimHeader.animate();
	  shrinkNewActiveAccAnimHeader.animate();
      expandNewActiveAccAnimBody.animate();
    }, this.accItems[i], true);
  }
  
  // Letzte Prüfung, falls mehrere Elemente eine Höhe angegeben haben. Es wird nur das 
  // aktive Element offen gelassen. Alle anderen Akkordion Elemente erhalten die Höhe 0px.

  for(var i=0; i<this.accItems.length; i++){
    if(this.activeItem != this.accItems[i]){
		this.accItems[i].body.style.height = 1 + "px";
    }
    if(this.activeItem == this.accItems[i]){
		this.accItems[i].header.style.height = 1 + "px";
    }

  }
};
