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


+function ($) {
  
'use strict';

  
// SCROLLSPY CLASS DEFINITION
  // ==========================

  
function ScrollSpy(elementoptions) {
    
this.$body          = $(document.body)
    
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
    
this.options        = $.extend({}, ScrollSpy.DEFAULTSoptions)
    
this.selector       = (this.options.target || '') + ' .nav li > a'
    
this.offsets        = []
    
this.targets        = []
    
this.activeTarget   null
    this
.scrollHeight   0

    this
.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.processthis))
    
this.refresh()
    
this.process()
  }

  
ScrollSpy.VERSION  '3.3.4'

  
ScrollSpy.DEFAULTS = {
    
offset10
  
}

  
ScrollSpy.prototype.getScrollHeight = function () {
    return 
this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeightdocument.documentElement.scrollHeight)
  }

  
ScrollSpy.prototype.refresh = function () {
    var 
that          this
    
var offsetMethod  'offset'
    
var offsetBase    0

    this
.offsets      = []
    
this.targets      = []
    
this.scrollHeight this.getScrollHeight()

    if (!$.
isWindow(this.$scrollElement[0])) {
      
offsetMethod 'position'
      
offsetBase   this.$scrollElement.scrollTop()
    }

    
this.$body
      
.find(this.selector)
      .
map(function () {
        var 
$el   = $(this)
        var 
href  $el.data('target') || $el.attr('href')
        var 
$href = /^#./.test(href) && $(href)

        
return ($href
          
&& $href.length
          
&& $href.is(':visible')
          && [[
$href[offsetMethod]().top offsetBasehref]]) || null
      
})
      .
sort(function (ab) { return a[0] - b[0] })
      .
each(function () {
        
that.offsets.push(this[0])
        
that.targets.push(this[1])
      })
  }

  
ScrollSpy.prototype.process = function () {
    var 
scrollTop    this.$scrollElement.scrollTop() + this.options.offset
    
var scrollHeight this.getScrollHeight()
    var 
maxScroll    this.options.offset scrollHeight this.$scrollElement.height()
    var 
offsets      this.offsets
    
var targets      this.targets
    
var activeTarget this.activeTarget
    
var i

    
if (this.scrollHeight != scrollHeight) {
      
this.refresh()
    }

    if (
scrollTop >= maxScroll) {
      return 
activeTarget != (targets[targets.length 1]) && this.activate(i)
    }

    if (
activeTarget && scrollTop offsets[0]) {
      
this.activeTarget null
      
return this.clear()
    }

    for (
offsets.lengthi--;) {
      
activeTarget != targets[i]
        && 
scrollTop >= offsets[i]
        && (
offsets[1] === undefined || scrollTop offsets[1])
        && 
this.activate(targets[i])
    }
  }

  
ScrollSpy.prototype.activate = function (target) {
    
this.activeTarget target

    this
.clear()

    var 
selector this.selector +
      
'[data-target="' target '"],' +
      
this.selector '[href="' target '"]'

    
var active = $(selector)
      .
parents('li')
      .
addClass('active')

    if (
active.parent('.dropdown-menu').length) {
      
active active
        
.closest('li.dropdown')
        .
addClass('active')
    }

    
active.trigger('activate.bs.scrollspy')
  }

  
ScrollSpy.prototype.clear = function () {
    $(
this.selector)
      .
parentsUntil(this.options.target'.active')
      .
removeClass('active')
  }


  
// SCROLLSPY PLUGIN DEFINITION
  // ===========================

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

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

  var 
old = $.fn.scrollspy

  
$.fn.scrollspy             Plugin
  
$.fn.scrollspy.Constructor ScrollSpy


  
// SCROLLSPY NO CONFLICT
  // =====================

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


  
// SCROLLSPY DATA-API
  // ==================

  
$(window).on('load.bs.scrollspy.data-api', function () {
    $(
'[data-spy="scroll"]').each(function () {
      var 
$spy = $(this)
      
Plugin.call($spy$spy.data())
    })
  })

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