SlideMenu = {
   timer:   null,
   targets: new Array (),
   menus:   new Array (),
   factor:  0.8,
   
   update: function () {
      for (var i = SlideMenu.menus.length - 1; i >= 0 ; i--) {
         var diff = SlideMenu.menus[i].offsetHeight - SlideMenu.targets[SlideMenu.menus[i].id];
         var newHeight = SlideMenu.targets[SlideMenu.menus[i].id] + diff * SlideMenu.factor;
         SlideMenu.menus[i].style.height = newHeight + 'px';
      }
   },
   
   init: function () {
      SlideMenu.timer = setInterval (SlideMenu.update, 40);
   },
   
   slide: function (el, target) {
      if (typeof SlideMenu.targets[el.id] == 'undefined') {
         SlideMenu.targets[el.id] = target;      
         SlideMenu.menus.push (el);
      }
      SlideMenu.targets[el.id] = target;
   }
}
   

Event.observe (window, 'load', SlideMenu.init, false);
