Nick Craig-WoodRename docs directory40f755d12 years agoHistory
1951 lines · 54.0 KB · JavaScript
RawDownload
/*! * Bootstrap v3.1.1 (http://getbootstrap.com) * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } /* ======================================================================== * Bootstrap: transition.js v3.1.1 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */  +function ($) {  'use strict';   // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)  // ============================================================   function transitionEnd() {    var el = document.createElement('bootstrap')     var transEndEventNames = {      'WebkitTransition' : 'webkitTransitionEnd',      'MozTransition'    : 'transitionend',      'OTransition'      : 'oTransitionEnd otransitionend',      'transition'       : 'transitionend'    }     for (var name in transEndEventNames) {      if (el.style[name] !== undefined) {        return { end: transEndEventNames[name] }      }    }     return false // explicit for ie8 (  ._.)  }   // http://blog.alexmaccaw.com/css-transitions  $.fn.emulateTransitionEnd = function (duration) {    var called = false, $el = this    $(this).one($.support.transition.end, function () { called = true })    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }    setTimeout(callback, duration)    return this  }   $(function () {    $.support.transition = transitionEnd()  }) }(jQuery); /* ======================================================================== * Bootstrap: alert.js v3.1.1 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */  +function ($) {  'use strict';   // ALERT CLASS DEFINITION  // ======================   var dismiss = '[data-dismiss="alert"]'  var Alert   = function (el) {    $(el).on('click', dismiss, this.close)  }   Alert.prototype.close = function (e) {    var $this    = $(this)    var selector = $this.attr('data-target')     if (!selector) {      selector = $this.attr('href')      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7    }     var $parent = $(selector)     if (e) e.preventDefault()     if (!$parent.length) {      $parent = $this.hasClass('alert') ? $this : $this.parent()    }     $parent.trigger(e = $.Event('close.bs.alert'))     if (e.isDefaultPrevented()) return     $parent.removeClass('in')     function removeElement() {      $parent.trigger('closed.bs.alert').remove()    }     $.support.transition && $parent.hasClass('fade') ?      $parent        .one($.support.transition.end, removeElement)        .emulateTransitionEnd(150) :      removeElement()  }    // ALERT PLUGIN DEFINITION  // =======================   var old = $.fn.alert   $.fn.alert = function (option) {    return this.each(function () {      var $this = $(this)      var data  = $this.data('bs.alert')       if (!data) $this.data('bs.alert', (data = new Alert(this)))      if (typeof option == 'string') data[option].call($this)    })  }   $.fn.alert.Constructor = Alert    // ALERT NO CONFLICT  // =================   $.fn.alert.noConflict = function () {    $.fn.alert = old    return this  }    // ALERT DATA-API  // ==============   $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: button.js v3.1.1 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */  +function ($) {  'use strict';   // BUTTON PUBLIC CLASS DEFINITION  // ==============================   var Button = function (element, options) {    this.$element  = $(element)    this.options   = $.extend({}, Button.DEFAULTS, options)    this.isLoading = false  }   Button.DEFAULTS = {    loadingText: 'loading...'  }   Button.prototype.setState = function (state) {    var d    = 'disabled'    var $el  = this.$element    var val  = $el.is('input') ? 'val' : 'html'    var data = $el.data()     state = state + 'Text'     if (!data.resetText) $el.data('resetText', $el[val]())     $el[val](data[state] || this.options[state])     // push to event loop to allow forms to submit    setTimeout($.proxy(function () {      if (state == 'loadingText') {        this.isLoading = true        $el.addClass(d).attr(d, d)      } else if (this.isLoading) {        this.isLoading = false        $el.removeClass(d).removeAttr(d)      }    }, this), 0)  }   Button.prototype.toggle = function () {    var changed = true    var $parent = this.$element.closest('[data-toggle="buttons"]')     if ($parent.length) {      var $input = this.$element.find('input')      if ($input.prop('type') == 'radio') {        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false        else $parent.find('.active').removeClass('active')      }      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')    }     if (changed) this.$element.toggleClass('active')  }    // BUTTON PLUGIN DEFINITION  // ========================   var old = $.fn.button   $.fn.button = function (option) {    return this.each(function () {      var $this   = $(this)      var data    = $this.data('bs.button')      var options = typeof option == 'object' && option       if (!data) $this.data('bs.button', (data = new Button(this, options)))       if (option == 'toggle') data.toggle()      else if (option) data.setState(option)    })  }   $.fn.button.Constructor = Button    // BUTTON NO CONFLICT  // ==================   $.fn.button.noConflict = function () {    $.fn.button = old    return this  }    // BUTTON DATA-API  // ===============   $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {    var $btn = $(e.target)    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')    $btn.button('toggle')    e.preventDefault()  }) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.1.1 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */  +function ($) {  'use strict';   // CAROUSEL CLASS DEFINITION  // =========================   var Carousel = function (element, options) {    this.$element    = $(element)    this.$indicators = this.$element.find('.carousel-indicators')    this.options     = options    this.paused      =    this.sliding     =    this.interval    =    this.$active     =    this.$items      = null     this.options.pause == 'hover' && this.$element      .on('mouseenter', $.proxy(this.pause, this))      .on('mouseleave', $.proxy(this.cycle, this))  }   Carousel.DEFAULTS = {    interval: 5000,    pause: 'hover',    wrap: true  }   Carousel.prototype.cycle =  function (e) {    e || (this.paused = false)     this.interval && clearInterval(this.interval)     this.options.interval      && !this.paused      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))     return this  }   Carousel.prototype.getActiveIndex = function () {    this.$active = this.$element.find('.item.active')    this.$items  = this.$active.parent().children()     return this.$items.index(this.$active)  }   Carousel.prototype.to = function (pos) {    var that        = this    var activeIndex = this.getActiveIndex()     if (pos > (this.$items.length - 1) || pos < 0) return     if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) })    if (activeIndex == pos) return this.pause().cycle()     return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))  }   Carousel.prototype.pause = function (e) {    e || (this.paused = true)     if (this.$element.find('.next, .prev').length && $.support.transition) {      this.$element.trigger($.support.transition.end)      this.cycle(true)    }     this.interval = clearInterval(this.interval)     return this  }   Carousel.prototype.next = function () {    if (this.sliding) return    return this.slide('next')  }   Carousel.prototype.prev = function () {    if (this.sliding) return    return this.slide('prev')  }   Carousel.prototype.slide = function (type, next) {    var $active   = this.$element.find('.item.active')    var $next     = next || $active[type]()    var isCycling = this.interval    var direction = type == 'next' ? 'left' : 'right'    var fallback  = type == 'next' ? 'first' : 'last'    var that      = this     if (!$next.length) {      if (!this.options.wrap) return      $next = this.$element.find('.item')[fallback]()    }     if ($next.hasClass('active')) return this.sliding = false     var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })    this.$element.trigger(e)    if (e.isDefaultPrevented()) return     this.sliding = true     isCycling && this.pause()     if (this.$indicators.length) {      this.$indicators.find('.active').removeClass('active')      this.$element.one('slid.bs.carousel', function () {        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])        $nextIndicator && $nextIndicator.addClass('active')      })    }     if ($.support.transition && this.$element.hasClass('slide')) {      $next.addClass(type)      $next[0].offsetWidth // force reflow      $active.addClass(direction)      $next.addClass(direction)      $active        .one($.support.transition.end, function () {          $next.removeClass([type, direction].join(' ')).addClass('active')          $active.removeClass(['active', direction].join(' '))          that.sliding = false          setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)        })        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)    } else {      $active.removeClass('active')      $next.addClass('active')      this.sliding = false      this.$element.trigger('slid.bs.carousel')    }     isCycling && this.cycle()     return this  }    // CAROUSEL PLUGIN DEFINITION  // ==========================   var old = $.fn.carousel   $.fn.carousel = function (option) {    return this.each(function () {      var $this   = $(this)      var data    = $this.data('bs.carousel')      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)      var action  = typeof option == 'string' ? option : options.slide       if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))      if (typeof option == 'number') data.to(option)      else if (action) data[action]()      else if (options.interval) data.pause().cycle()    })  }   $.fn.carousel.Constructor = Carousel    // CAROUSEL NO CONFLICT  // ====================   $.fn.carousel.noConflict = function () {    $.fn.carousel = old    return this  }    // CAROUSEL DATA-API  // =================   $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {    var $this   = $(this), href    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7    var options = $.extend({}, $target.data(), $this.data())    var slideIndex = $this.attr('data-slide-to')    if (slideIndex) options.interval = false     $target.carousel(options)     if (slideIndex = $this.attr('data-slide-to')) {      $target.data('bs.carousel').to(slideIndex)    }     e.preventDefault()  })   $(window).on('load', function () {    $('[data-ride="carousel"]').each(function () {      var $carousel = $(this)      $carousel.carousel($carousel.data())    })  }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.1.1 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2014 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */  +function ($) {  'use strict';   // COLLAPSE PUBLIC CLASS DEFINITION  // ================================   var Collapse = function (element, options) {    this.$element      = $(element)    this.options       = $.extend({}, Collapse.DEFAULTS, options)    this.transitioning = null     if (this.options.parent) this.$parent = $(this.options.parent)    if (this.options.toggle) this.toggle()  }   Collapse.DEFAULTS = {    toggle: true  }   Collapse.prototype.dimension = function () {    var hasWidth = this.$element.hasClass('width')    return hasWidth ? 'width' : 'height'  }   Collapse.prototype.show = function () {    if (this.transitioning || this.$element.hasClass('in')) return     var startEvent = $.Event('show.bs.collapse')    this.$element.trigger(startEvent)    if (startEvent.isDefaultPrevented()) return 

Lines 1–500 of 1951.