+###
+globals: angular, window
+
+  List of used element methods available in JQuery but not in JQuery Lite
+    in other words if you want to remove dependency on JQuery the following methods are to be implemented:
+
+    element.height()
+    element.outerHeight(true)
+    element.height(value) = only for Top/Bottom padding elements
+    element.scrollTop()
+    element.scrollTop(value)
+    element.offset()
+
+###
 angular.module('scroller', [])
 
   .directive( 'ngScrollViewport'


                bufferSize = Math.max(3, +$attr.bufferSize || 10)
                bufferPadding = -> viewport.height() * Math.max(.2, +$attr.padding || .5) # some extra space to initate preload in advance

                ###

                List of used element methods available in JQuery but not in JQuery Lite
                in other words if you want to remove dependency on JQuery the following methods are to be implemented:

                element.height()
                element.outerHeight(true)
                element.height(value) = only for Top/Bottom padding elements
                element.scrollTop()
                element.scrollTop(value)
                element.offset()

                ###

                controller = null


                    switch template[0].localName
                      when 'li'
                        if canvas[0] == viewport[0]
                          throw new Error "element cannot be used as both viewport and canvas: #{canvas[0].outerHTML}"
                        topPadding = angular.element('<li/>')
                        bottomPadding = angular.element('<li/>')
                      when 'tr','dl'
                        throw new Error "ng-scroll directive does not support <#{template[0].localName}> as a repeating tag: #{template[0].outerHTML}"
                      else
                        if canvas[0] == viewport[0]
                          # if canvas and the viewport are the same create a new div to service as canvas
