 					else undefined
 				rootMargin: @inViewportRootMargin
 				threshold: @inViewportThresholdWithMax
-			
+
 			# Start listening
 			@inViewportObserver.observe @$el
-		
+
 		# Remove listeners
 		removeInViewportHandlers: ->
 
 			# Don't remove twice
 			return unless @inViewport.listening
 			@inViewport.listening = false
-			
+
 			# Destroy instance, which also removes listeners
 			@inViewportObserver?.disconnect()
 			delete @inViewportObserver

			# the default root-margin which has a -1 on the bottom margin.
			@inViewport.above = target.top < root.top
			@inViewport.below = target.bottom > root.bottom + 1
			
			# Determine whether fully in viewport. The rules are different based on
			# whether the target is taller than the viewport.
			@inViewport.fully = if target.height > root.height
			then target.top <= root.top and target.bottom >= root.bottom + 1
			else not @inViewport.above and not @inViewport.below
						
			# If set to update "once", remove listeners if in viewport
			@removeInViewportHandlers() if @inViewportOnce and @inViewport.now

		# If any of the Observer options change, re-init.
		inViewportRootMargin: -> @reInitInViewportMixin()
		inViewportRoot: -> @reInitInViewportMixin()
		inViewportThresholdWithMax: (now, old) ->

			# In IE, this is kept getting retriggered, to doing a manual comparison
			# of old and new before deciding whether to take action.
			@reInitInViewportMixin() unless now.toString() == old.toString()
