var timerlen = 5;
var slideAniLen = 550;
var KeepOpen = 500;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();
var IsOpen = new Array()

function slidedown(objname,imagename,maxheight,imgsrc){
        endHeight[objname] = maxheight;
        IsOpen[objname]= 0;
        document.getElementById(imagename).src=imgsrc;
        if(moving[objname])
        return;
        if(document.getElementById(objname).style.height == maxheight+"px")
        return;
        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname,imagename,minheight,maxheight,imgsrc){
        endHeight[objname] = minheight;
        if(document.getElementById(objname).style.height == maxheight+"px")
        { IsOpen[objname]= KeepOpen;
        
        }
        //IsOpen[objname]= KeepOpen;
        document.getElementById(imagename).src=imgsrc;
        if(moving[objname])
        return;
        if(document.getElementById(objname).style.height == minheight+"px")
        return; 
        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);
        startTime[objname] = (new Date()).getTime();
        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
  var elapsed = (new Date()).getTime() - startTime[objname];
  var hoog = parseInt(obj[objname].style.height);
  var step =Math.round(elapsed / slideAniLen * 60);
  if (IsOpen[objname]>0)
  {
    IsOpen[objname]-=timerlen;
     startTime[objname] = (new Date()).getTime();
    return
  }
  
  if(hoog == endHeight[objname])
  { 
    endSlide(objname);
  }
  else {
    if (hoog<endHeight[objname])
    {
      hoog +=step
      if (endHeight[objname]-step<hoog)
      {hoog=endHeight[objname]}
    }
    else {
      hoog -=step;
      if (endHeight[objname]+step>hoog)
      {hoog=endHeight[objname]}
    }
    obj[objname].style.height = hoog + "px";
  }
  return;
}

function endSlide(objname){
  clearInterval(timerID[objname]);
  obj[objname].style.height = endHeight[objname] + "px";
  delete(moving[objname]);
  delete(timerID[objname]);
  delete(startTime[objname]);
  delete(endHeight[objname]);
  delete(obj[objname]);
  delete(dir[objname]);
  delete(IsOpen[objname]);
 return;
}