(function(){
'use strict'
function noop(){}
var Waypoint=window.Waypoint
function Inview(options){
this.options=Waypoint.Adapter.extend({}, Inview.defaults, options)
this.axis=this.options.horizontal ? 'horizontal':'vertical'
this.waypoints=[]
this.element=this.options.element
this.createWaypoints()
}
Inview.prototype.createWaypoints=function(){
var configs={
vertical: [{
down: 'enter',
up: 'exited',
offset: '100%'
}, {
down: 'entered',
up: 'exit',
offset: 'bottom-in-view'
}, {
down: 'exit',
up: 'entered',
offset: 0
}, {
down: 'exited',
up: 'enter',
offset: function(){
return -this.adapter.outerHeight()
}}],
horizontal: [{
right: 'enter',
left: 'exited',
offset: '100%'
}, {
right: 'entered',
left: 'exit',
offset: 'right-in-view'
}, {
right: 'exit',
left: 'entered',
offset: 0
}, {
right: 'exited',
left: 'enter',
offset: function(){
return -this.adapter.outerWidth()
}}]
}
for (var i=0, end=configs[this.axis].length; i < end; i++){
var config=configs[this.axis][i]
this.createWaypoint(config)
}}
Inview.prototype.createWaypoint=function(config){
var self=this
this.waypoints.push(new Waypoint({
context: this.options.context,
element: this.options.element,
enabled: this.options.enabled,
handler: (function(config){
return function(direction){
self.options[config[direction]].call(self, direction)
}}(config)),
offset: config.offset,
horizontal: this.options.horizontal
}))
}
Inview.prototype.destroy=function(){
for (var i=0, end=this.waypoints.length; i < end; i++){
this.waypoints[i].destroy()
}
this.waypoints=[]
}
Inview.prototype.disable=function(){
for (var i=0, end=this.waypoints.length; i < end; i++){
this.waypoints[i].disable()
}}
Inview.prototype.enable=function(){
for (var i=0, end=this.waypoints.length; i < end; i++){
this.waypoints[i].enable()
}}
Inview.defaults={
context: window,
enabled: true,
enter: noop,
entered: noop,
exit: noop,
exited: noop
}
Waypoint.Inview=Inview
}())
;