Accordion box demo

You'll also recognice that here the backwards flag is set in the object's onMorphEnd callack function other than in the menu demo. Eather way is possible although here we would need to change it for 2 elements which is done in the callback function automatically.
And again: you can add as many elements as you want without haveing to change the code.

var acc = function (acc, duration, head, body) {
    var heads = acc.getElementsByTagName(head ||'h2'),
    content = acc.getElementsByTagName(body ||'span'),
    myMorph = new jsMorph();

    for (var n=heads.length; n--;) {
      content[n].style.cssText = 'height:auto; display: block';
      myMorph.concat(content[n],
        {'height': '0px'},
        {duration : duration, delay : 0},
        function(n) {return --n*n*n*n*n+1},
        null,
        null,
        function (obj) {obj.backwards = obj.backwards ? false : true}
      );
      heads[n].me = n;
      if (n) {
        content[n].style.height = 0;
        content[n].backwards = true;
      } else acc.current = n;
    }
    
    acc.onclick = function(e) { // event delegation
      var e = e || window.event, obj = e.target || e.srcElement;
      if (obj.tagName.toLowerCase() == 'h2' && obj.me != acc.current && !myMorph.timer) {
        myMorph.start(content[obj.me], content[acc.current]);
        acc.current = obj.me;
      }
    };
  };

acc(document.getElementById('acc'), 200);