+###
+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'


            match = $attr.ngScroll.match /^\s*(\w+)\s+in\s+(\w+)\s*$/
            if !match
              throw Error "Expected ngScroll in form of '_item_ in _datasource_' but got '#{$attr.ngScroll}'"

            itemName = match[1]
            datasourceName = match[2]

                    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
