 
   ###*
   @private
-  @method up.viewport.findView
+  @method up.viewport.findViewport
   ###
   findViewport = ($element, viewportSelectorOrElement) ->
     $viewport = undefined

    $viewport

  ###*
  Marks this element as a scrolling container.
  Use this e.g. if your app uses a custom panel layout with fixed positioning
  instead of scrolling `<body>`.

  @method [up-viewport]
  ###

  up.bus.on 'framework:reset', reset

  SCROLL_PROMISE_KEY = 'up-scroll-promise'

  ###*
  Scrolls the given viewport to the given Y-position.

  A "viewport" is an element that has scrollbars, e.g. `<body>` or
  a container with `overflow-x: scroll`.

  \#\#\#\# Example

  This will scroll a `<div class="main">...</div>` to a Y-position of 100 pixels:

      up.scoll('.main', 100);

  \#\#\#\# Animating the scrolling motion

  The scrolling can (optionally) be animated.

    up.scoll('.main', 100, {
      easing: 'swing',
      duration: 250
    });

  If the given viewport is already in a scroll animation when `up.scroll`
  is called a second time, the previous animation will instantly jump to the
  last frame before the next animation is started.

  @method up.scroll
  @param {String|Element|jQuery} viewport
    The container element to scroll.
  @param {Number} scrollPos
    The absolute number of pixels to set the scroll position to.
  @param {Number}[options.duration]
    The number of miliseconds for the scrolling's animation.
  @param {String}[options.easing]
    The timing function that controls the acceleration for the scrolling's animation.
  @return {Deferred}
    A promise that will be resolved when the scrolling ends.
  ###
  scroll = (viewport, scrollTop, options) ->
    $view = $(viewport)
    options = u.options(options)
    duration = u.option(options.duration, config.duration)
    easing = u.option(options.easing, config.easing)
