  var collapseElmts = {};
    
  function collapseElement(id, minHeight, delta, showHide)
  {
      elm = document.getElementById(id);
      collapseElmts[id] = {};
      collapseElmts[id]['minHeight']    = minHeight;
      collapseElmts[id]['delta']        = delta;
      collapseElmts[id]['offsetHeight'] = elm.offsetHeight;
      
      if (!showHide) elm.style.height = minHeight + 'px';
      elm.style.visibility = 'visible';
  }

  function doCollapse(id) 
  {
      var oElm = document.getElementById(id);
      var oHeight = (oElm.offsetHeight);
      if (oHeight <= collapseElmts[id]['minHeight']) 
      {
         motion(id, true, oHeight);
      } 
      else 
      {
         motion(id, false, oHeight);
      }
      
      return false;
  }

  function motion(id, showHide, oHeight) 
  {
      var oElm = document.getElementById(id);

      if (showHide) 
      {
          oHeight += collapseElmts[id]['delta'];
      } 
      else 
      {
          oHeight -= collapseElmts[id]['delta'];
      }

      oElm.style.height = oHeight + 'px';

      if (oHeight > collapseElmts[id]['minHeight'] && oHeight <= collapseElmts[id]['offsetHeight']) 
      {
          setTimeout("motion('" + id + "'," + showHide + "," + oHeight + ")", 10);
      }
  }