
var previousExpander=new Array();

function setWidthAutoDisplay(obj,w) {
  w=Math.round(w);
  if (w==0 && (konqueror || safari || document.all)) {
    obj.style.width=1+"px";
    //obj.parentNode.style.display='none';
  } else {
    obj.style.width=w+"px";
    //obj.parentNode.style.display='';
  }
}

function setHeightAutoDisplay(obj,h) {
  h=Math.round(h);
  if (h==0 && (konqueror || document.all)) {
    obj.style.height=1+"px";
    //obj.parentNode.style.display='none';
  } else {
    obj.style.height=h+"px";
    //obj.parentNode.style.display='';
  }
}

function menucrossblend() {
  var direction=this.target.direction;
  if (direction=='H') {
    var obj=this.target.object_closing;
    setWidthAutoDisplay(obj,this.target.defaultw-this.target.width_opening);
    var obj=this.target.object_opening;
    setWidthAutoDisplay(obj,this.target.width_opening);
  } else {
    if (this.target.equalblend) {
      var obj=this.target.object_closing;
      setHeightAutoDisplay(obj,this.target.defaultw-this.target.height_opening+this.target.ystart);
      var obj=this.target.object_opening;
      setHeightAutoDisplay(obj,this.target.height_opening);
    } else {
      var obj=this.target.object_closing;
      setHeightAutoDisplay(obj,this.target.height_closing);
      var obj=this.target.object_opening;
      setHeightAutoDisplay(obj,this.target.height_opening);
    }
  }
}

function menutween() {
  var obj=this.target.object;
  if (this.target.direction=='H') {
    setWidthAutoDisplay(obj,this.target.width);
  } else {
    setHeightAutoDisplay(obj,this.target.height);
  }
}

function crossblendcomplete() {
}

function showExpander(group,idx,direction,defaultw,y_start) {
  var ps=previousExpander[group];

  if (!myduration) var myduration=1;

  if (!y_start) var y_start=1;
  if (defaultw==0) defaultw=1;

  var ep,ecur;
  if (ps!=undefined) ep=document.getElementById(group+"_"+ps);
  ecur=document.getElementById(group+"_"+idx);

  if (defaultw==-1) defaultw=ecur.scrollHeight;
  //Alle Animationen anhalten
  JSTweener.removeTweensByProperties({tag:'menu'});

  //Alle nicht aktuell betroffenen Expander schließen
  var k=-1;
  while (true) {
    k++;
    ex=document.getElementById(group+"_"+k);
    if (!ex) break;
    if (k==ps || k==idx) continue;

    obj=new Object();
    obj.object=ex;
    obj.direction=direction;

    if (direction=='H') {
      obj.width=parseInt(ex.style.width);
      JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',width:1,onUpdate:menutween});
    } else {
      obj.height=parseInt(ex.style.height);
      JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',height:y_start,onUpdate:menutween});
    }
  }

  //Schon ein Expander geöffnet und es ist der gleiche => Nur diesen Expander wieder schließen
  if (ps!=undefined && ps==idx) {
    obj=new Object();
    obj.object=ep;
    obj.direction=direction;

    if (direction=='H') {
      obj.width=parseInt(ep.style.width);
      JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',width:1,onUpdate:menutween});
    } else {
      obj.height=parseInt(ep.style.height);
      if (!obj.height) obj.height=ep.scrollHeight;
      JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',height:y_start,onUpdate:menutween});
    }
    previousExpander[group]=undefined;
    return;
  }

  //Noch kein Expander geöffnet => Nur diesen Expander öffnen
  if (ps==undefined) {
    obj=new Object();
    obj.object=ecur;
    obj.direction=direction;
    if (direction=='H') {
      obj.width=parseInt(ecur.style.width);
      JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',width:defaultw,onUpdate:menutween});
    } else {
      obj.height=parseInt(ecur.style.height);
      JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',height:defaultw,onUpdate:menutween});
    }
    previousExpander[group]=idx;
    return;
  }

  //Ansonsten: Alten Expander schließen, neuen öffnen
  obj=new Object();
  obj.object_closing=ep;
  obj.object_opening=ecur;
  obj.direction=direction;
  obj.defaultw=defaultw;
  obj.ystart=y_start;

  if (direction=='H') {
    obj.width_opening=parseInt(ecur.style.width);
    JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',onUpdate:menucrossblend,width_opening:defaultw,onComplete:crossblendcomplete});
  } else {
    obj.height_opening=0;
    obj.height_closing=ep.scrollHeight;
    obj.equalblend=(defaultw==obj.height_closing);
    JSTweener.addTween(obj, {tag:'menu',time:myduration,transition: 'easeoutexpo',onUpdate:menucrossblend,height_opening:defaultw,height_closing:y_start,onComplete:crossblendcomplete});
  }

  previousExpander[group]=idx;
}
