Вход Регистрация
Файл: Main Website Files/assets/bower_components/bootstrap/js/affix.js
Строк: 141
<?php
/* ========================================================================
 * Bootstrap: affix.js v3.3.4
 * http://getbootstrap.com/javascript/#affix
 * ========================================================================
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * ======================================================================== */


+function ($) {
  
'use strict';

  
// AFFIX CLASS DEFINITION
  // ======================

  
var Affix = function (elementoptions) {
    
this.options = $.extend({}, Affix.DEFAULTSoptions)

    
this.$target = $(this.options.target)
      .
on('scroll.bs.affix.data-api', $.proxy(this.checkPositionthis))
      .
on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoopthis))

    
this.$element     = $(element)
    
this.affixed      null
    this
.unpin        null
    this
.pinnedOffset null

    this
.checkPosition()
  }

  
Affix.VERSION  '3.3.4'

  
Affix.RESET    'affix affix-top affix-bottom'

  
Affix.DEFAULTS = {
    
offset0,
    
targetwindow
  
}

  
Affix.prototype.getState = function (scrollHeightheightoffsetTopoffsetBottom) {
    var 
scrollTop    this.$target.scrollTop()
    var 
position     this.$element.offset()
    var 
targetHeight this.$target.height()

    if (
offsetTop != null && this.affixed == 'top') return scrollTop offsetTop 'top' false

    
if (this.affixed == 'bottom') {
      if (
offsetTop != null) return (scrollTop this.unpin <= position.top) ? false 'bottom'
      
return (scrollTop targetHeight <= scrollHeight offsetBottom) ? false 'bottom'
    
}

    var 
initializing   this.affixed == null
    
var colliderTop    initializing scrollTop position.top
    
var colliderHeight initializing targetHeight height

    
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
    
if (offsetBottom != null && (colliderTop colliderHeight >= scrollHeight offsetBottom)) return 'bottom'

    
return false
  
}

  
Affix.prototype.getPinnedOffset = function () {
    if (
this.pinnedOffset) return this.pinnedOffset
    this
.$element.removeClass(Affix.RESET).addClass('affix')
    var 
scrollTop this.$target.scrollTop()
    var 
position  this.$element.offset()
    return (
this.pinnedOffset position.top scrollTop)
  }

  
Affix.prototype.checkPositionWithEventLoop = function () {
    
setTimeout($.proxy(this.checkPositionthis), 1)
  }

  
Affix.prototype.checkPosition = function () {
    if (!
this.$element.is(':visible')) return

    var 
height       this.$element.height()
    var 
offset       this.options.offset
    
var offsetTop    offset.top
    
var offsetBottom offset.bottom
    
var scrollHeight = $(document.body).height()

    if (
typeof offset != 'object')         offsetBottom offsetTop offset
    
if (typeof offsetTop == 'function')    offsetTop    offset.top(this.$element)
    if (
typeof offsetBottom == 'function'offsetBottom offset.bottom(this.$element)

    var 
affix this.getState(scrollHeightheightoffsetTopoffsetBottom)

    if (
this.affixed != affix) {
      if (
this.unpin != nullthis.$element.css('top''')

      var 
affixType 'affix' + (affix '-' affix '')
      var 
e         = $.Event(affixType '.bs.affix')

      
this.$element.trigger(e)

      if (
e.isDefaultPrevented()) return

      
this.affixed affix
      this
.unpin affix == 'bottom' this.getPinnedOffset() : null

      this
.$element
        
.removeClass(Affix.RESET)
        .
addClass(affixType)
        .
trigger(affixType.replace('affix''affixed') + '.bs.affix')
    }

    if (
affix == 'bottom') {
      
this.$element.offset({
        
topscrollHeight height offsetBottom
      
})
    }
  }


  
// AFFIX PLUGIN DEFINITION
  // =======================

  
function Plugin(option) {
    return 
this.each(function () {
      var 
$this   = $(this)
      var 
data    $this.data('bs.affix')
      var 
options typeof option == 'object' && option

      
if (!data$this.data('bs.affix', (data = new Affix(thisoptions)))
      if (
typeof option == 'string'data[option]()
    })
  }

  var 
old = $.fn.affix

  
$.fn.affix             Plugin
  
$.fn.affix.Constructor Affix


  
// AFFIX NO CONFLICT
  // =================

  
$.fn.affix.noConflict = function () {
    $.fn.
affix old
    
return this
  
}


  
// AFFIX DATA-API
  // ==============

  
$(window).on('load', function () {
    $(
'[data-spy="affix"]').each(function () {
      var 
$spy = $(this)
      var 
data $spy.data()

      
data.offset data.offset || {}

      if (
data.offsetBottom != nulldata.offset.bottom data.offsetBottom
      
if (data.offsetTop    != nulldata.offset.top    data.offsetTop

      Plugin
.call($spydata)
    })
  })

}(
jQuery);
?>
Онлайн: 0
Реклама