Effect.ScrollToExt = function(element) {
  var options = arguments[1] || { },
    scrollOffsets = document.viewport.getScrollOffsets(),
    elementOffsets = $(element).cumulativeOffset(),
    max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();

  if (options.offset) elementOffsets[1] += options.offset;
  if (options.offset_max) max += options.offset_max;

  /* if onscreen, dont scroll */
  if (options.ignoreTargetsInViewport)
  {
    viewport_top = scrollOffsets.top;
    viewport_bottom = scrollOffsets.top+document.viewport.getHeight();
    target = options.offset_max ? elementOffsets[1]+options.offset_max : elementOffsets[1];
    if (target > viewport_top && target < viewport_bottom) return; // don't scroll
  }

//  var pos = $(element).cumulativeOffset();
//  window.scrollTo(target,pos[1]);
//  return $(element);

  return new Effect.Tween(null,
    scrollOffsets.top,
    elementOffsets[1] > max ? max : elementOffsets[1],
    options,
    function(p){ scrollTo(scrollOffsets.left, p.round()) }
  );
};
