{"version":3,"sources":["waypoints.js"],"names":["__indexOf","indexOf","item","i","l","this","length","__slice","slice","root","factory","define","amd","$","jQuery","window","$w","Context","Waypoint","allWaypoints","contextCounter","contextKey","contexts","isTouch","jQMethods","methods","resizeEvent","scrollEvent","waypointCounter","waypointKey","wp","wps","call","horizontal","vertical","$element","_this","element","didResize","didScroll","id","oldScroll","x","scrollLeft","y","scrollTop","waypoints","data","bind","scrollHandler","doScroll","setTimeout","settings","scrollThrottle","resizeHandler","resizeThrottle","prototype","axes","newScroll","forward","backward","each","aKey","axis","direction","isForward","triggered","wKey","waypoint","_ref","_ref1","offset","push","sort","a","b","reverse","options","continuous","trigger","refresh","cOffset","isWin","isWindow","contextOffset","left","contextScroll","contextDimension","width","offsetProp","top","height","adjustment","elementOffset","oldOffset","isFunction","apply","parseFloat","Math","ceil","onlyOnScroll","enabled","checkEmpty","isEmptyObject","unbind","join","context","idList","extend","fn","defaults","contextHeight","outerHeight","callback","handler","args","triggerOnce","destroy","disable","enable","getWaypointsByElement","all","ids","map","init","f","$this","contextElement","closest","_invoke","prev","selector","_traverse","stack","index","next","aggregate","inArray","pushStack","$elements","method","arguments","isPlainObject","error","viewportHeight","innerHeight","contextSelector","collection","arr","key","unique","above","_filter","below","right","extendFn","methodName","test","load"],"mappings":"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","file":"../waypoints.min.js","sourcesContent":["// Generated by CoffeeScript 1.6.2\n/*\njQuery Waypoints - v2.0.3\nCopyright (c) 2011-2013 Caleb Troughton\nDual licensed under the MIT license and GPL license.\nhttps://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt\n*/\n\n\n(function() {\n  var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n    __slice = [].slice;\n\n  (function(root, factory) {\n    if (typeof define === 'function' && define.amd) {\n      return define('waypoints', ['jquery'], function($) {\n        return factory($, root);\n      });\n    } else {\n      return factory(root.jQuery, root);\n    }\n  })(this, function($, window) {\n    var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps;\n\n    $w = $(window);\n    isTouch = __indexOf.call(window, 'ontouchstart') >= 0;\n    allWaypoints = {\n      horizontal: {},\n      vertical: {}\n    };\n    contextCounter = 1;\n    contexts = {};\n    contextKey = 'waypoints-context-id';\n    resizeEvent = 'resize.waypoints';\n    scrollEvent = 'scroll.waypoints';\n    waypointCounter = 1;\n    waypointKey = 'waypoints-waypoint-ids';\n    wp = 'waypoint';\n    wps = 'waypoints';\n    Context = (function() {\n      function Context($element) {\n        var _this = this;\n\n        this.$element = $element;\n        this.element = $element[0];\n        this.didResize = false;\n        this.didScroll = false;\n        this.id = 'context' + contextCounter++;\n        this.oldScroll = {\n          x: $element.scrollLeft(),\n          y: $element.scrollTop()\n        };\n        this.waypoints = {\n          horizontal: {},\n          vertical: {}\n        };\n        $element.data(contextKey, this.id);\n        contexts[this.id] = this;\n        $element.bind(scrollEvent, function() {\n          var scrollHandler;\n\n          if (!(_this.didScroll || isTouch)) {\n            _this.didScroll = true;\n            scrollHandler = function() {\n              _this.doScroll();\n              return _this.didScroll = false;\n            };\n            return window.setTimeout(scrollHandler, $[wps].settings.scrollThrottle);\n          }\n        });\n        $element.bind(resizeEvent, function() {\n          var resizeHandler;\n\n          if (!_this.didResize) {\n            _this.didResize = true;\n            resizeHandler = function() {\n              $[wps]('refresh');\n              return _this.didResize = false;\n            };\n            return window.setTimeout(resizeHandler, $[wps].settings.resizeThrottle);\n          }\n        });\n      }\n\n      Context.prototype.doScroll = function() {\n        var axes,\n          _this = this;\n\n        axes = {\n          horizontal: {\n            newScroll: this.$element.scrollLeft(),\n            oldScroll: this.oldScroll.x,\n            forward: 'right',\n            backward: 'left'\n          },\n          vertical: {\n            newScroll: this.$element.scrollTop(),\n            oldScroll: this.oldScroll.y,\n            forward: 'down',\n            backward: 'up'\n          }\n        };\n        if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {\n          $[wps]('refresh');\n        }\n        $.each(axes, function(aKey, axis) {\n          var direction, isForward, triggered;\n\n          triggered = [];\n          isForward = axis.newScroll > axis.oldScroll;\n          direction = isForward ? axis.forward : axis.backward;\n          $.each(_this.waypoints[aKey], function(wKey, waypoint) {\n            var _ref, _ref1;\n\n            if ((axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll)) {\n              return triggered.push(waypoint);\n            } else if ((axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll)) {\n              return triggered.push(waypoint);\n            }\n          });\n          triggered.sort(function(a, b) {\n            return a.offset - b.offset;\n          });\n          if (!isForward) {\n            triggered.reverse();\n          }\n          return $.each(triggered, function(i, waypoint) {\n            if (waypoint.options.continuous || i === triggered.length - 1) {\n              return waypoint.trigger([direction]);\n            }\n          });\n        });\n        return this.oldScroll = {\n          x: axes.horizontal.newScroll,\n          y: axes.vertical.newScroll\n        };\n      };\n\n      Context.prototype.refresh = function() {\n        var axes, cOffset, isWin,\n          _this = this;\n\n        isWin = $.isWindow(this.element);\n        cOffset = this.$element.offset();\n        this.doScroll();\n        axes = {\n          horizontal: {\n            contextOffset: isWin ? 0 : cOffset.left,\n            contextScroll: isWin ? 0 : this.oldScroll.x,\n            contextDimension: this.$element.width(),\n            oldScroll: this.oldScroll.x,\n            forward: 'right',\n            backward: 'left',\n            offsetProp: 'left'\n          },\n          vertical: {\n            contextOffset: isWin ? 0 : cOffset.top,\n            contextScroll: isWin ? 0 : this.oldScroll.y,\n            contextDimension: isWin ? $[wps]('viewportHeight') : this.$element.height(),\n            oldScroll: this.oldScroll.y,\n            forward: 'down',\n            backward: 'up',\n            offsetProp: 'top'\n          }\n        };\n        return $.each(axes, function(aKey, axis) {\n          return $.each(_this.waypoints[aKey], function(i, waypoint) {\n            var adjustment, elementOffset, oldOffset, _ref, _ref1;\n\n            adjustment = waypoint.options.offset;\n            oldOffset = waypoint.offset;\n            elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];\n            if ($.isFunction(adjustment)) {\n              adjustment = adjustment.apply(waypoint.element);\n            } else if (typeof adjustment === 'string') {\n              adjustment = parseFloat(adjustment);\n              if (waypoint.options.offset.indexOf('%') > -1) {\n                adjustment = Math.ceil(axis.contextDimension * adjustment / 100);\n              }\n            }\n            waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment;\n            if ((waypoint.options.onlyOnScroll && (oldOffset != null)) || !waypoint.enabled) {\n              return;\n            }\n            if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) {\n              return waypoint.trigger([axis.backward]);\n            } else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) {\n              return waypoint.trigger([axis.forward]);\n            } else if (oldOffset === null && axis.oldScroll >= waypoint.offset) {\n              return waypoint.trigger([axis.forward]);\n            }\n          });\n        });\n      };\n\n      Context.prototype.checkEmpty = function() {\n        if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {\n          this.$element.unbind([resizeEvent, scrollEvent].join(' '));\n          return delete contexts[this.id];\n        }\n      };\n\n      return Context;\n\n    })();\n    Waypoint = (function() {\n      function Waypoint($element, context, options) {\n        var idList, _ref;\n\n        options = $.extend({}, $.fn[wp].defaults, options);\n        if (options.offset === 'bottom-in-view') {\n          options.offset = function() {\n            var contextHeight;\n\n            contextHeight = $[wps]('viewportHeight');\n            if (!$.isWindow(context.element)) {\n              contextHeight = context.$element.height();\n            }\n            return contextHeight - $(this).outerHeight();\n          };\n        }\n        this.$element = $element;\n        this.element = $element[0];\n        this.axis = options.horizontal ? 'horizontal' : 'vertical';\n        this.callback = options.handler;\n        this.context = context;\n        this.enabled = options.enabled;\n        this.id = 'waypoints' + waypointCounter++;\n        this.offset = null;\n        this.options = options;\n        context.waypoints[this.axis][this.id] = this;\n        allWaypoints[this.axis][this.id] = this;\n        idList = (_ref = $element.data(waypointKey)) != null ? _ref : [];\n        idList.push(this.id);\n        $element.data(waypointKey, idList);\n      }\n\n      Waypoint.prototype.trigger = function(args) {\n        if (!this.enabled) {\n          return;\n        }\n        if (this.callback != null) {\n          this.callback.apply(this.element, args);\n        }\n        if (this.options.triggerOnce) {\n          return this.destroy();\n        }\n      };\n\n      Waypoint.prototype.disable = function() {\n        return this.enabled = false;\n      };\n\n      Waypoint.prototype.enable = function() {\n        this.context.refresh();\n        return this.enabled = true;\n      };\n\n      Waypoint.prototype.destroy = function() {\n        delete allWaypoints[this.axis][this.id];\n        delete this.context.waypoints[this.axis][this.id];\n        return this.context.checkEmpty();\n      };\n\n      Waypoint.getWaypointsByElement = function(element) {\n        var all, ids;\n\n        ids = $(element).data(waypointKey);\n        if (!ids) {\n          return [];\n        }\n        all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical);\n        return $.map(ids, function(id) {\n          return all[id];\n        });\n      };\n\n      return Waypoint;\n\n    })();\n    methods = {\n      init: function(f, options) {\n        var _ref;\n\n        if (options == null) {\n          options = {};\n        }\n        if ((_ref = options.handler) == null) {\n          options.handler = f;\n        }\n        this.each(function() {\n          var $this, context, contextElement, _ref1;\n\n          $this = $(this);\n          contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context;\n          if (!$.isWindow(contextElement)) {\n            contextElement = $this.closest(contextElement);\n          }\n          contextElement = $(contextElement);\n          context = contexts[contextElement.data(contextKey)];\n          if (!context) {\n            context = new Context(contextElement);\n          }\n          return new Waypoint($this, context, options);\n        });\n        $[wps]('refresh');\n        return this;\n      },\n      disable: function() {\n        return methods._invoke(this, 'disable');\n      },\n      enable: function() {\n        return methods._invoke(this, 'enable');\n      },\n      destroy: function() {\n        return methods._invoke(this, 'destroy');\n      },\n      prev: function(axis, selector) {\n        return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {\n          if (index > 0) {\n            return stack.push(waypoints[index - 1]);\n          }\n        });\n      },\n      next: function(axis, selector) {\n        return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {\n          if (index < waypoints.length - 1) {\n            return stack.push(waypoints[index + 1]);\n          }\n        });\n      },\n      _traverse: function(axis, selector, push) {\n        var stack, waypoints;\n\n        if (axis == null) {\n          axis = 'vertical';\n        }\n        if (selector == null) {\n          selector = window;\n        }\n        waypoints = jQMethods.aggregate(selector);\n        stack = [];\n        this.each(function() {\n          var index;\n\n          index = $.inArray(this, waypoints[axis]);\n          return push(stack, index, waypoints[axis]);\n        });\n        return this.pushStack(stack);\n      },\n      _invoke: function($elements, method) {\n        $elements.each(function() {\n          var waypoints;\n\n          waypoints = Waypoint.getWaypointsByElement(this);\n          return $.each(waypoints, function(i, waypoint) {\n            waypoint[method]();\n            return true;\n          });\n        });\n        return this;\n      }\n    };\n    $.fn[wp] = function() {\n      var args, method;\n\n      method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      if (methods[method]) {\n        return methods[method].apply(this, args);\n      } else if ($.isFunction(method)) {\n        return methods.init.apply(this, arguments);\n      } else if ($.isPlainObject(method)) {\n        return methods.init.apply(this, [null, method]);\n      } else if (!method) {\n        return $.error(\"jQuery Waypoints needs a callback function or handler option.\");\n      } else {\n        return $.error(\"The \" + method + \" method does not exist in jQuery Waypoints.\");\n      }\n    };\n    $.fn[wp].defaults = {\n      context: window,\n      continuous: true,\n      enabled: true,\n      horizontal: false,\n      offset: 0,\n      triggerOnce: false\n    };\n    jQMethods = {\n      refresh: function() {\n        return $.each(contexts, function(i, context) {\n          return context.refresh();\n        });\n      },\n      viewportHeight: function() {\n        var _ref;\n\n        return (_ref = window.innerHeight) != null ? _ref : $w.height();\n      },\n      aggregate: function(contextSelector) {\n        var collection, waypoints, _ref;\n\n        collection = allWaypoints;\n        if (contextSelector) {\n          collection = (_ref = contexts[$(contextSelector).data(contextKey)]) != null ? _ref.waypoints : void 0;\n        }\n        if (!collection) {\n          return [];\n        }\n        waypoints = {\n          horizontal: [],\n          vertical: []\n        };\n        $.each(waypoints, function(axis, arr) {\n          $.each(collection[axis], function(key, waypoint) {\n            return arr.push(waypoint);\n          });\n          arr.sort(function(a, b) {\n            return a.offset - b.offset;\n          });\n          waypoints[axis] = $.map(arr, function(waypoint) {\n            return waypoint.element;\n          });\n          return waypoints[axis] = $.unique(waypoints[axis]);\n        });\n        return waypoints;\n      },\n      above: function(contextSelector) {\n        if (contextSelector == null) {\n          contextSelector = window;\n        }\n        return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {\n          return waypoint.offset <= context.oldScroll.y;\n        });\n      },\n      below: function(contextSelector) {\n        if (contextSelector == null) {\n          contextSelector = window;\n        }\n        return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {\n          return waypoint.offset > context.oldScroll.y;\n        });\n      },\n      left: function(contextSelector) {\n        if (contextSelector == null) {\n          contextSelector = window;\n        }\n        return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {\n          return waypoint.offset <= context.oldScroll.x;\n        });\n      },\n      right: function(contextSelector) {\n        if (contextSelector == null) {\n          contextSelector = window;\n        }\n        return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {\n          return waypoint.offset > context.oldScroll.x;\n        });\n      },\n      enable: function() {\n        return jQMethods._invoke('enable');\n      },\n      disable: function() {\n        return jQMethods._invoke('disable');\n      },\n      destroy: function() {\n        return jQMethods._invoke('destroy');\n      },\n      extendFn: function(methodName, f) {\n        return methods[methodName] = f;\n      },\n      _invoke: function(method) {\n        var waypoints;\n\n        waypoints = $.extend({}, allWaypoints.vertical, allWaypoints.horizontal);\n        return $.each(waypoints, function(key, waypoint) {\n          waypoint[method]();\n          return true;\n        });\n      },\n      _filter: function(selector, axis, test) {\n        var context, waypoints;\n\n        context = contexts[$(selector).data(contextKey)];\n        if (!context) {\n          return [];\n        }\n        waypoints = [];\n        $.each(context.waypoints[axis], function(i, waypoint) {\n          if (test(context, waypoint)) {\n            return waypoints.push(waypoint);\n          }\n        });\n        waypoints.sort(function(a, b) {\n          return a.offset - b.offset;\n        });\n        return $.map(waypoints, function(waypoint) {\n          return waypoint.element;\n        });\n      }\n    };\n    $[wps] = function() {\n      var args, method;\n\n      method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      if (jQMethods[method]) {\n        return jQMethods[method].apply(null, args);\n      } else {\n        return jQMethods.aggregate.call(null, method);\n      }\n    };\n    $[wps].settings = {\n      resizeThrottle: 100,\n      scrollThrottle: 30\n    };\n    return $w.load(function() {\n      return $[wps]('refresh');\n    });\n  });\n\n}).call(this);\n"]}