corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 /* ========================================================================
2 * Bootstrap: carousel.js v3.1.1
3 * http://getbootstrap.com/javascript/#carousel
4 * ========================================================================
5 * Copyright 2011-2014 Twitter, Inc.
6 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7 * ======================================================================== */
8  
9  
10 +function ($) {
11 'use strict';
12  
13 // CAROUSEL CLASS DEFINITION
14 // =========================
15  
16 var Carousel = function (element, options) {
17 this.$element = $(element)
18 this.$indicators = this.$element.find('.carousel-indicators')
19 this.options = options
20 this.paused =
21 this.sliding =
22 this.interval =
23 this.$active =
24 this.$items = null
25  
26 this.options.pause == 'hover' && this.$element
27 .on('mouseenter', $.proxy(this.pause, this))
28 .on('mouseleave', $.proxy(this.cycle, this))
29 }
30  
31 Carousel.DEFAULTS = {
32 interval: 5000,
33 pause: 'hover',
34 wrap: true
35 }
36  
37 Carousel.prototype.cycle = function (e) {
38 e || (this.paused = false)
39  
40 this.interval && clearInterval(this.interval)
41  
42 this.options.interval
43 && !this.paused
44 && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
45  
46 return this
47 }
48  
49 Carousel.prototype.getActiveIndex = function () {
50 this.$active = this.$element.find('.item.active')
51 this.$items = this.$active.parent().children()
52  
53 return this.$items.index(this.$active)
54 }
55  
56 Carousel.prototype.to = function (pos) {
57 var that = this
58 var activeIndex = this.getActiveIndex()
59  
60 if (pos > (this.$items.length - 1) || pos < 0) return
61  
62 if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
63 if (activeIndex == pos) return this.pause().cycle()
64  
65 return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
66 }
67  
68 Carousel.prototype.pause = function (e) {
69 e || (this.paused = true)
70  
71 if (this.$element.find('.next, .prev').length && $.support.transition) {
72 this.$element.trigger($.support.transition.end)
73 this.cycle(true)
74 }
75  
76 this.interval = clearInterval(this.interval)
77  
78 return this
79 }
80  
81 Carousel.prototype.next = function () {
82 if (this.sliding) return
83 return this.slide('next')
84 }
85  
86 Carousel.prototype.prev = function () {
87 if (this.sliding) return
88 return this.slide('prev')
89 }
90  
91 Carousel.prototype.slide = function (type, next) {
92 var $active = this.$element.find('.item.active')
93 var $next = next || $active[type]()
94 var isCycling = this.interval
95 var direction = type == 'next' ? 'left' : 'right'
96 var fallback = type == 'next' ? 'first' : 'last'
97 var that = this
98  
99 if (!$next.length) {
100 if (!this.options.wrap) return
101 $next = this.$element.find('.item')[fallback]()
102 }
103  
104 if ($next.hasClass('active')) return this.sliding = false
105  
106 var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
107 this.$element.trigger(e)
108 if (e.isDefaultPrevented()) return
109  
110 this.sliding = true
111  
112 isCycling && this.pause()
113  
114 if (this.$indicators.length) {
115 this.$indicators.find('.active').removeClass('active')
116 this.$element.one('slid.bs.carousel', function () {
117 var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
118 $nextIndicator && $nextIndicator.addClass('active')
119 })
120 }
121  
122 if ($.support.transition && this.$element.hasClass('slide')) {
123 $next.addClass(type)
124 $next[0].offsetWidth // force reflow
125 $active.addClass(direction)
126 $next.addClass(direction)
127 $active
128 .one($.support.transition.end, function () {
129 $next.removeClass([type, direction].join(' ')).addClass('active')
130 $active.removeClass(['active', direction].join(' '))
131 that.sliding = false
132 setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
133 })
134 .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
135 } else {
136 $active.removeClass('active')
137 $next.addClass('active')
138 this.sliding = false
139 this.$element.trigger('slid.bs.carousel')
140 }
141  
142 isCycling && this.cycle()
143  
144 return this
145 }
146  
147  
148 // CAROUSEL PLUGIN DEFINITION
149 // ==========================
150  
151 var old = $.fn.carousel
152  
153 $.fn.carousel = function (option) {
154 return this.each(function () {
155 var $this = $(this)
156 var data = $this.data('bs.carousel')
157 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
158 var action = typeof option == 'string' ? option : options.slide
159  
160 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
161 if (typeof option == 'number') data.to(option)
162 else if (action) data[action]()
163 else if (options.interval) data.pause().cycle()
164 })
165 }
166  
167 $.fn.carousel.Constructor = Carousel
168  
169  
170 // CAROUSEL NO CONFLICT
171 // ====================
172  
173 $.fn.carousel.noConflict = function () {
174 $.fn.carousel = old
175 return this
176 }
177  
178  
179 // CAROUSEL DATA-API
180 // =================
181  
182 $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
183 var $this = $(this), href
184 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
185 var options = $.extend({}, $target.data(), $this.data())
186 var slideIndex = $this.attr('data-slide-to')
187 if (slideIndex) options.interval = false
188  
189 $target.carousel(options)
190  
191 if (slideIndex = $this.attr('data-slide-to')) {
192 $target.data('bs.carousel').to(slideIndex)
193 }
194  
195 e.preventDefault()
196 })
197  
198 $(window).on('load', function () {
199 $('[data-ride="carousel"]').each(function () {
200 var $carousel = $(this)
201 $carousel.carousel($carousel.data())
202 })
203 })
204  
205 }(jQuery);