twitter_bootstrap_builder 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,43 +20,39 @@
20
20
 
21
21
  !function ($) {
22
22
 
23
- $(function () {
23
+ $(function () {
24
24
 
25
- "use strict"; // jshint ;_;
25
+ "use strict"; // jshint ;_;
26
26
 
27
27
 
28
- /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29
- * ======================================================= */
28
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29
+ * ======================================================= */
30
30
 
31
- $.support.transition = (function () {
31
+ $.support.transition = (function () {
32
32
 
33
- var transitionEnd = (function () {
33
+ var transitionEnd = (function () {
34
34
 
35
- var el = document.createElement('bootstrap')
36
- , transEndEventNames = {
37
- 'WebkitTransition' : 'webkitTransitionEnd'
38
- , 'MozTransition' : 'transitionend'
39
- , 'OTransition' : 'oTransitionEnd'
40
- , 'msTransition' : 'MSTransitionEnd'
41
- , 'transition' : 'transitionend'
42
- }
43
- , name
35
+ var el = document.createElement('bootstrap')
36
+ , transEndEventNames = {
37
+ 'WebkitTransition':'webkitTransitionEnd', 'MozTransition':'transitionend', 'OTransition':'oTransitionEnd', 'msTransition':'MSTransitionEnd', 'transition':'transitionend'
38
+ }
39
+ , name
44
40
 
45
- for (name in transEndEventNames){
46
- if (el.style[name] !== undefined) {
47
- return transEndEventNames[name]
48
- }
49
- }
41
+ for (name in transEndEventNames) {
42
+ if (el.style[name] !== undefined) {
43
+ return transEndEventNames[name]
44
+ }
45
+ }
50
46
 
51
- }())
47
+ }())
52
48
 
53
- return transitionEnd && {
54
- end: transitionEnd
55
- }
49
+ return transitionEnd && {
50
+ end:transitionEnd
51
+ }
56
52
 
57
- })()
53
+ })()
58
54
 
59
- })
55
+ })
60
56
 
61
57
  }(window.jQuery);
62
58
  /* =========================================================
@@ -81,200 +77,194 @@
81
77
 
82
78
  !function ($) {
83
79
 
84
- "use strict"; // jshint ;_;
80
+ "use strict"; // jshint ;_;
85
81
 
86
82
 
87
- /* MODAL CLASS DEFINITION
88
- * ====================== */
83
+ /* MODAL CLASS DEFINITION
84
+ * ====================== */
89
85
 
90
- var Modal = function (content, options) {
91
- this.options = options
92
- this.$element = $(content)
93
- .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
94
- }
86
+ var Modal = function (content, options) {
87
+ this.options = options
88
+ this.$element = $(content)
89
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
90
+ }
95
91
 
96
- Modal.prototype = {
92
+ Modal.prototype = {
97
93
 
98
- constructor: Modal
94
+ constructor:Modal, toggle:function () {
95
+ return this[!this.isShown ? 'show' : 'hide']()
96
+ }, show:function () {
97
+ var that = this
98
+ , e = $.Event('show')
99
99
 
100
- , toggle: function () {
101
- return this[!this.isShown ? 'show' : 'hide']()
102
- }
100
+ this.$element.trigger(e)
103
101
 
104
- , show: function () {
105
- var that = this
106
- , e = $.Event('show')
102
+ if (this.isShown || e.isDefaultPrevented()) return
107
103
 
108
- this.$element.trigger(e)
104
+ $('body').addClass('modal-open')
109
105
 
110
- if (this.isShown || e.isDefaultPrevented()) return
106
+ this.isShown = true
111
107
 
112
- $('body').addClass('modal-open')
108
+ escape.call(this)
109
+ backdrop.call(this, function () {
110
+ var transition = $.support.transition && that.$element.hasClass('fade')
113
111
 
114
- this.isShown = true
112
+ if (!that.$element.parent().length) {
113
+ that.$element.appendTo(document.body) //don't move modals dom position
114
+ }
115
115
 
116
- escape.call(this)
117
- backdrop.call(this, function () {
118
- var transition = $.support.transition && that.$element.hasClass('fade')
116
+ that.$element
117
+ .show()
119
118
 
120
- if (!that.$element.parent().length) {
121
- that.$element.appendTo(document.body) //don't move modals dom position
122
- }
119
+ if (transition) {
120
+ that.$element[0].offsetWidth // force reflow
121
+ }
123
122
 
124
- that.$element
125
- .show()
123
+ that.$element.addClass('in')
126
124
 
127
- if (transition) {
128
- that.$element[0].offsetWidth // force reflow
129
- }
125
+ transition ?
126
+ that.$element.one($.support.transition.end, function () {
127
+ that.$element.trigger('shown')
128
+ }) :
129
+ that.$element.trigger('shown')
130
130
 
131
- that.$element.addClass('in')
131
+ })
132
+ }, hide:function (e) {
133
+ e && e.preventDefault()
132
134
 
133
- transition ?
134
- that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
135
- that.$element.trigger('shown')
135
+ var that = this
136
136
 
137
- })
138
- }
137
+ e = $.Event('hide')
139
138
 
140
- , hide: function (e) {
141
- e && e.preventDefault()
142
-
143
- var that = this
144
-
145
- e = $.Event('hide')
139
+ this.$element.trigger(e)
146
140
 
147
- this.$element.trigger(e)
141
+ if (!this.isShown || e.isDefaultPrevented()) return
148
142
 
149
- if (!this.isShown || e.isDefaultPrevented()) return
143
+ this.isShown = false
150
144
 
151
- this.isShown = false
145
+ $('body').removeClass('modal-open')
152
146
 
153
- $('body').removeClass('modal-open')
147
+ escape.call(this)
154
148
 
155
- escape.call(this)
149
+ this.$element.removeClass('in')
156
150
 
157
- this.$element.removeClass('in')
151
+ $.support.transition && this.$element.hasClass('fade') ?
152
+ hideWithTransition.call(this) :
153
+ hideModal.call(this)
154
+ }
158
155
 
159
- $.support.transition && this.$element.hasClass('fade') ?
160
- hideWithTransition.call(this) :
161
- hideModal.call(this)
162
- }
156
+ }
163
157
 
164
- }
165
158
 
159
+ /* MODAL PRIVATE METHODS
160
+ * ===================== */
166
161
 
167
- /* MODAL PRIVATE METHODS
168
- * ===================== */
162
+ function hideWithTransition() {
163
+ var that = this
164
+ , timeout = setTimeout(function () {
165
+ that.$element.off($.support.transition.end)
166
+ hideModal.call(that)
167
+ }, 500)
169
168
 
170
- function hideWithTransition() {
171
- var that = this
172
- , timeout = setTimeout(function () {
173
- that.$element.off($.support.transition.end)
174
- hideModal.call(that)
175
- }, 500)
169
+ this.$element.one($.support.transition.end, function () {
170
+ clearTimeout(timeout)
171
+ hideModal.call(that)
172
+ })
173
+ }
176
174
 
177
- this.$element.one($.support.transition.end, function () {
178
- clearTimeout(timeout)
179
- hideModal.call(that)
180
- })
181
- }
175
+ function hideModal(that) {
176
+ this.$element
177
+ .hide()
178
+ .trigger('hidden')
182
179
 
183
- function hideModal(that) {
184
- this.$element
185
- .hide()
186
- .trigger('hidden')
180
+ backdrop.call(this)
181
+ }
187
182
 
188
- backdrop.call(this)
189
- }
183
+ function backdrop(callback) {
184
+ var that = this
185
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
190
186
 
191
- function backdrop(callback) {
192
- var that = this
193
- , animate = this.$element.hasClass('fade') ? 'fade' : ''
187
+ if (this.isShown && this.options.backdrop) {
188
+ var doAnimate = $.support.transition && animate
194
189
 
195
- if (this.isShown && this.options.backdrop) {
196
- var doAnimate = $.support.transition && animate
190
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
191
+ .appendTo(document.body)
197
192
 
198
- this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
199
- .appendTo(document.body)
193
+ if (this.options.backdrop != 'static') {
194
+ this.$backdrop.click($.proxy(this.hide, this))
195
+ }
200
196
 
201
- if (this.options.backdrop != 'static') {
202
- this.$backdrop.click($.proxy(this.hide, this))
203
- }
197
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
204
198
 
205
- if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
199
+ this.$backdrop.addClass('in')
206
200
 
207
- this.$backdrop.addClass('in')
201
+ doAnimate ?
202
+ this.$backdrop.one($.support.transition.end, callback) :
203
+ callback()
208
204
 
209
- doAnimate ?
210
- this.$backdrop.one($.support.transition.end, callback) :
211
- callback()
205
+ } else if (!this.isShown && this.$backdrop) {
206
+ this.$backdrop.removeClass('in')
212
207
 
213
- } else if (!this.isShown && this.$backdrop) {
214
- this.$backdrop.removeClass('in')
208
+ $.support.transition && this.$element.hasClass('fade') ?
209
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
210
+ removeBackdrop.call(this)
215
211
 
216
- $.support.transition && this.$element.hasClass('fade')?
217
- this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
218
- removeBackdrop.call(this)
212
+ } else if (callback) {
213
+ callback()
214
+ }
215
+ }
219
216
 
220
- } else if (callback) {
221
- callback()
217
+ function removeBackdrop() {
218
+ this.$backdrop.remove()
219
+ this.$backdrop = null
222
220
  }
223
- }
224
-
225
- function removeBackdrop() {
226
- this.$backdrop.remove()
227
- this.$backdrop = null
228
- }
229
-
230
- function escape() {
231
- var that = this
232
- if (this.isShown && this.options.keyboard) {
233
- $(document).on('keyup.dismiss.modal', function ( e ) {
234
- e.which == 27 && that.hide()
235
- })
236
- } else if (!this.isShown) {
237
- $(document).off('keyup.dismiss.modal')
221
+
222
+ function escape() {
223
+ var that = this
224
+ if (this.isShown && this.options.keyboard) {
225
+ $(document).on('keyup.dismiss.modal', function (e) {
226
+ e.which == 27 && that.hide()
227
+ })
228
+ } else if (!this.isShown) {
229
+ $(document).off('keyup.dismiss.modal')
230
+ }
238
231
  }
239
- }
240
232
 
241
233
 
242
- /* MODAL PLUGIN DEFINITION
243
- * ======================= */
234
+ /* MODAL PLUGIN DEFINITION
235
+ * ======================= */
244
236
 
245
- $.fn.modal = function (option) {
246
- return this.each(function () {
247
- var $this = $(this)
248
- , data = $this.data('modal')
249
- , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
250
- if (!data) $this.data('modal', (data = new Modal(this, options)))
251
- if (typeof option == 'string') data[option]()
252
- else if (options.show) data.show()
253
- })
254
- }
237
+ $.fn.modal = function (option) {
238
+ return this.each(function () {
239
+ var $this = $(this)
240
+ , data = $this.data('modal')
241
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
242
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
243
+ if (typeof option == 'string') data[option]()
244
+ else if (options.show) data.show()
245
+ })
246
+ }
255
247
 
256
- $.fn.modal.defaults = {
257
- backdrop: true
258
- , keyboard: true
259
- , show: true
260
- }
248
+ $.fn.modal.defaults = {
249
+ backdrop:true, keyboard:true, show:true
250
+ }
261
251
 
262
- $.fn.modal.Constructor = Modal
252
+ $.fn.modal.Constructor = Modal
263
253
 
264
254
 
265
- /* MODAL DATA-API
266
- * ============== */
255
+ /* MODAL DATA-API
256
+ * ============== */
267
257
 
268
- $(function () {
269
- $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
270
- var $this = $(this), href
271
- , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
272
- , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
258
+ $(function () {
259
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
260
+ var $this = $(this), href
261
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
262
+ , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
273
263
 
274
- e.preventDefault()
275
- $target.modal(option)
264
+ e.preventDefault()
265
+ $target.modal(option)
266
+ })
276
267
  })
277
- })
278
268
 
279
269
  }(window.jQuery);
280
270
  /* ============================================================
@@ -299,82 +289,82 @@
299
289
 
300
290
  !function ($) {
301
291
 
302
- "use strict"; // jshint ;_;
292
+ "use strict"; // jshint ;_;
303
293
 
304
294
 
305
- /* DROPDOWN CLASS DEFINITION
306
- * ========================= */
295
+ /* DROPDOWN CLASS DEFINITION
296
+ * ========================= */
307
297
 
308
- var toggle = '[data-toggle="dropdown"]'
309
- , Dropdown = function (element) {
310
- var $el = $(element).on('click.dropdown.data-api', this.toggle)
311
- $('html').on('click.dropdown.data-api', function () {
312
- $el.parent().removeClass('open')
313
- })
314
- }
298
+ var toggle = '[data-toggle="dropdown"]'
299
+ , Dropdown = function (element) {
300
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
301
+ $('html').on('click.dropdown.data-api', function () {
302
+ $el.parent().removeClass('open')
303
+ })
304
+ }
315
305
 
316
- Dropdown.prototype = {
306
+ Dropdown.prototype = {
317
307
 
318
- constructor: Dropdown
308
+ constructor:Dropdown, toggle:function (e) {
309
+ var $this = $(this)
310
+ , $parent
311
+ , selector
312
+ , isActive
319
313
 
320
- , toggle: function (e) {
321
- var $this = $(this)
322
- , $parent
323
- , selector
324
- , isActive
314
+ if ($this.is('.disabled, :disabled')) return
325
315
 
326
- if ($this.is('.disabled, :disabled')) return
316
+ selector = $this.attr('data-target')
327
317
 
328
- selector = $this.attr('data-target')
318
+ if (!selector) {
319
+ selector = $this.attr('href')
320
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
321
+ }
329
322
 
330
- if (!selector) {
331
- selector = $this.attr('href')
332
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
333
- }
323
+ $parent = $(selector)
324
+ $parent.length || ($parent = $this.parent())
334
325
 
335
- $parent = $(selector)
336
- $parent.length || ($parent = $this.parent())
326
+ isActive = $parent.hasClass('open')
337
327
 
338
- isActive = $parent.hasClass('open')
328
+ clearMenus()
339
329
 
340
- clearMenus()
330
+ if (!isActive) $parent.toggleClass('open')
341
331
 
342
- if (!isActive) $parent.toggleClass('open')
332
+ return false
333
+ }
343
334
 
344
- return false
345
335
  }
346
336
 
347
- }
348
-
349
- function clearMenus() {
350
- $(toggle).parent().removeClass('open')
351
- }
337
+ function clearMenus() {
338
+ $(toggle).parent().removeClass('open')
339
+ }
352
340
 
353
341
 
354
- /* DROPDOWN PLUGIN DEFINITION
355
- * ========================== */
342
+ /* DROPDOWN PLUGIN DEFINITION
343
+ * ========================== */
356
344
 
357
- $.fn.dropdown = function (option) {
358
- return this.each(function () {
359
- var $this = $(this)
360
- , data = $this.data('dropdown')
361
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
362
- if (typeof option == 'string') data[option].call($this)
363
- })
364
- }
345
+ $.fn.dropdown = function (option) {
346
+ return this.each(function () {
347
+ var $this = $(this)
348
+ , data = $this.data('dropdown')
349
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
350
+ if (typeof option == 'string') data[option].call($this)
351
+ })
352
+ }
365
353
 
366
- $.fn.dropdown.Constructor = Dropdown
354
+ $.fn.dropdown.Constructor = Dropdown
367
355
 
368
356
 
369
- /* APPLY TO STANDARD DROPDOWN ELEMENTS
370
- * =================================== */
357
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
358
+ * =================================== */
371
359
 
372
- $(function () {
373
- $('html').on('click.dropdown.data-api', clearMenus)
374
- $('body')
375
- .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() })
376
- .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
377
- })
360
+ $(function () {
361
+ $('html').on('click.dropdown.data-api', clearMenus)
362
+ $('body')
363
+ .on('click.dropdown', '.dropdown form', function (e) {
364
+ e.stopPropagation()
365
+ })
366
+ .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
367
+ })
378
368
 
379
369
  }(window.jQuery);
380
370
  /* =============================================================
@@ -399,133 +389,131 @@
399
389
 
400
390
  !function ($) {
401
391
 
402
- "use strict"; // jshint ;_;
403
-
404
-
405
- /* SCROLLSPY CLASS DEFINITION
406
- * ========================== */
407
-
408
- function ScrollSpy( element, options) {
409
- var process = $.proxy(this.process, this)
410
- , $element = $(element).is('body') ? $(window) : $(element)
411
- , href
412
- this.options = $.extend({}, $.fn.scrollspy.defaults, options)
413
- this.$scrollElement = $element.on('scroll.scroll.data-api', process)
414
- this.selector = (this.options.target
415
- || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
416
- || '') + ' .nav li > a'
417
- this.$body = $('body')
418
- this.refresh()
419
- this.process()
420
- }
421
-
422
- ScrollSpy.prototype = {
423
-
424
- constructor: ScrollSpy
425
-
426
- , refresh: function () {
427
- var self = this
428
- , $targets
429
-
430
- this.offsets = $([])
431
- this.targets = $([])
432
-
433
- $targets = this.$body
434
- .find(this.selector)
435
- .map(function () {
436
- var $el = $(this)
437
- , href = $el.data('target') || $el.attr('href')
438
- , $href = /^#\w/.test(href) && $(href)
439
- return ( $href
440
- && href.length
441
- && [[ $href.position().top, href ]] ) || null
442
- })
443
- .sort(function (a, b) { return a[0] - b[0] })
444
- .each(function () {
445
- self.offsets.push(this[0])
446
- self.targets.push(this[1])
447
- })
448
- }
449
-
450
- , process: function () {
451
- var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
452
- , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
453
- , maxScroll = scrollHeight - this.$scrollElement.height()
454
- , offsets = this.offsets
455
- , targets = this.targets
456
- , activeTarget = this.activeTarget
457
- , i
458
-
459
- if (scrollTop >= maxScroll) {
460
- return activeTarget != (i = targets.last()[0])
461
- && this.activate ( i )
462
- }
392
+ "use strict"; // jshint ;_;
463
393
 
464
- for (i = offsets.length; i--;) {
465
- activeTarget != targets[i]
466
- && scrollTop >= offsets[i]
467
- && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
468
- && this.activate( targets[i] )
469
- }
470
- }
471
394
 
472
- , activate: function (target) {
473
- var active
474
- , selector
395
+ /* SCROLLSPY CLASS DEFINITION
396
+ * ========================== */
397
+
398
+ function ScrollSpy(element, options) {
399
+ var process = $.proxy(this.process, this)
400
+ , $element = $(element).is('body') ? $(window) : $(element)
401
+ , href
402
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
403
+ this.$scrollElement = $element.on('scroll.scroll.data-api', process)
404
+ this.selector = (this.options.target
405
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
406
+ || '') + ' .nav li > a'
407
+ this.$body = $('body')
408
+ this.refresh()
409
+ this.process()
410
+ }
475
411
 
476
- this.activeTarget = target
412
+ ScrollSpy.prototype = {
413
+
414
+ constructor:ScrollSpy, refresh:function () {
415
+ var self = this
416
+ , $targets
417
+
418
+ this.offsets = $([])
419
+ this.targets = $([])
420
+
421
+ $targets = this.$body
422
+ .find(this.selector)
423
+ .map(function () {
424
+ var $el = $(this)
425
+ , href = $el.data('target') || $el.attr('href')
426
+ , $href = /^#\w/.test(href) && $(href)
427
+ return ( $href
428
+ && href.length
429
+ && [
430
+ [ $href.position().top, href ]
431
+ ] ) || null
432
+ })
433
+ .sort(function (a, b) {
434
+ return a[0] - b[0]
435
+ })
436
+ .each(function () {
437
+ self.offsets.push(this[0])
438
+ self.targets.push(this[1])
439
+ })
440
+ }, process:function () {
441
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
442
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
443
+ , maxScroll = scrollHeight - this.$scrollElement.height()
444
+ , offsets = this.offsets
445
+ , targets = this.targets
446
+ , activeTarget = this.activeTarget
447
+ , i
448
+
449
+ if (scrollTop >= maxScroll) {
450
+ return activeTarget != (i = targets.last()[0])
451
+ && this.activate(i)
452
+ }
477
453
 
478
- $(this.selector)
479
- .parent('.active')
480
- .removeClass('active')
454
+ for (i = offsets.length; i--;) {
455
+ activeTarget != targets[i]
456
+ && scrollTop >= offsets[i]
457
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
458
+ && this.activate(targets[i])
459
+ }
460
+ }, activate:function (target) {
461
+ var active
462
+ , selector
481
463
 
482
- selector = this.selector
483
- + '[data-target="' + target + '"],'
484
- + this.selector + '[href="' + target + '"]'
464
+ this.activeTarget = target
485
465
 
486
- active = $(selector)
487
- .parent('li')
488
- .addClass('active')
466
+ $(this.selector)
467
+ .parent('.active')
468
+ .removeClass('active')
489
469
 
490
- if (active.parent('.dropdown-menu')) {
491
- active = active.closest('li.dropdown').addClass('active')
492
- }
470
+ selector = this.selector
471
+ + '[data-target="' + target + '"],'
472
+ + this.selector + '[href="' + target + '"]'
493
473
 
494
- active.trigger('activate')
495
- }
474
+ active = $(selector)
475
+ .parent('li')
476
+ .addClass('active')
496
477
 
497
- }
478
+ if (active.parent('.dropdown-menu')) {
479
+ active = active.closest('li.dropdown').addClass('active')
480
+ }
498
481
 
482
+ active.trigger('activate')
483
+ }
499
484
 
500
- /* SCROLLSPY PLUGIN DEFINITION
501
- * =========================== */
485
+ }
502
486
 
503
- $.fn.scrollspy = function ( option ) {
504
- return this.each(function () {
505
- var $this = $(this)
506
- , data = $this.data('scrollspy')
507
- , options = typeof option == 'object' && option
508
- if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
509
- if (typeof option == 'string') data[option]()
510
- })
511
- }
512
487
 
513
- $.fn.scrollspy.Constructor = ScrollSpy
488
+ /* SCROLLSPY PLUGIN DEFINITION
489
+ * =========================== */
490
+
491
+ $.fn.scrollspy = function (option) {
492
+ return this.each(function () {
493
+ var $this = $(this)
494
+ , data = $this.data('scrollspy')
495
+ , options = typeof option == 'object' && option
496
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
497
+ if (typeof option == 'string') data[option]()
498
+ })
499
+ }
500
+
501
+ $.fn.scrollspy.Constructor = ScrollSpy
514
502
 
515
- $.fn.scrollspy.defaults = {
516
- offset: 10
517
- }
503
+ $.fn.scrollspy.defaults = {
504
+ offset:10
505
+ }
518
506
 
519
507
 
520
- /* SCROLLSPY DATA-API
521
- * ================== */
508
+ /* SCROLLSPY DATA-API
509
+ * ================== */
522
510
 
523
- $(function () {
524
- $('[data-spy="scroll"]').each(function () {
525
- var $spy = $(this)
526
- $spy.scrollspy($spy.data())
511
+ $(function () {
512
+ $('[data-spy="scroll"]').each(function () {
513
+ var $spy = $(this)
514
+ $spy.scrollspy($spy.data())
515
+ })
527
516
  })
528
- })
529
517
 
530
518
  }(window.jQuery);
531
519
  /* ========================================================
@@ -550,117 +538,112 @@
550
538
 
551
539
  !function ($) {
552
540
 
553
- "use strict"; // jshint ;_;
541
+ "use strict"; // jshint ;_;
554
542
 
555
543
 
556
- /* TAB CLASS DEFINITION
557
- * ==================== */
544
+ /* TAB CLASS DEFINITION
545
+ * ==================== */
558
546
 
559
- var Tab = function ( element ) {
560
- this.element = $(element)
561
- }
547
+ var Tab = function (element) {
548
+ this.element = $(element)
549
+ }
562
550
 
563
- Tab.prototype = {
551
+ Tab.prototype = {
564
552
 
565
- constructor: Tab
553
+ constructor:Tab, show:function () {
554
+ var $this = this.element
555
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
556
+ , selector = $this.attr('data-target')
557
+ , previous
558
+ , $target
559
+ , e
566
560
 
567
- , show: function () {
568
- var $this = this.element
569
- , $ul = $this.closest('ul:not(.dropdown-menu)')
570
- , selector = $this.attr('data-target')
571
- , previous
572
- , $target
573
- , e
561
+ if (!selector) {
562
+ selector = $this.attr('href')
563
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
564
+ }
574
565
 
575
- if (!selector) {
576
- selector = $this.attr('href')
577
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
578
- }
566
+ if ($this.parent('li').hasClass('active')) return
579
567
 
580
- if ( $this.parent('li').hasClass('active') ) return
568
+ previous = $ul.find('.active a').last()[0]
581
569
 
582
- previous = $ul.find('.active a').last()[0]
570
+ e = $.Event('show', {
571
+ relatedTarget:previous
572
+ })
583
573
 
584
- e = $.Event('show', {
585
- relatedTarget: previous
586
- })
574
+ $this.trigger(e)
587
575
 
588
- $this.trigger(e)
576
+ if (e.isDefaultPrevented()) return
589
577
 
590
- if (e.isDefaultPrevented()) return
578
+ $target = $(selector)
591
579
 
592
- $target = $(selector)
580
+ this.activate($this.parent('li'), $ul)
581
+ this.activate($target, $target.parent(), function () {
582
+ $this.trigger({
583
+ type:'shown', relatedTarget:previous
584
+ })
585
+ })
586
+ }, activate:function (element, container, callback) {
587
+ var $active = container.find('> .active')
588
+ , transition = callback
589
+ && $.support.transition
590
+ && $active.hasClass('fade')
593
591
 
594
- this.activate($this.parent('li'), $ul)
595
- this.activate($target, $target.parent(), function () {
596
- $this.trigger({
597
- type: 'shown'
598
- , relatedTarget: previous
599
- })
600
- })
601
- }
592
+ function next() {
593
+ $active
594
+ .removeClass('active')
595
+ .find('> .dropdown-menu > .active')
596
+ .removeClass('active')
602
597
 
603
- , activate: function ( element, container, callback) {
604
- var $active = container.find('> .active')
605
- , transition = callback
606
- && $.support.transition
607
- && $active.hasClass('fade')
608
-
609
- function next() {
610
- $active
611
- .removeClass('active')
612
- .find('> .dropdown-menu > .active')
613
- .removeClass('active')
614
-
615
- element.addClass('active')
616
-
617
- if (transition) {
618
- element[0].offsetWidth // reflow for transition
619
- element.addClass('in')
620
- } else {
621
- element.removeClass('fade')
622
- }
598
+ element.addClass('active')
623
599
 
624
- if ( element.parent('.dropdown-menu') ) {
625
- element.closest('li.dropdown').addClass('active')
626
- }
600
+ if (transition) {
601
+ element[0].offsetWidth // reflow for transition
602
+ element.addClass('in')
603
+ } else {
604
+ element.removeClass('fade')
605
+ }
606
+
607
+ if (element.parent('.dropdown-menu')) {
608
+ element.closest('li.dropdown').addClass('active')
609
+ }
627
610
 
628
- callback && callback()
629
- }
611
+ callback && callback()
612
+ }
630
613
 
631
- transition ?
632
- $active.one($.support.transition.end, next) :
633
- next()
614
+ transition ?
615
+ $active.one($.support.transition.end, next) :
616
+ next()
634
617
 
635
- $active.removeClass('in')
618
+ $active.removeClass('in')
619
+ }
636
620
  }
637
- }
638
621
 
639
622
 
640
- /* TAB PLUGIN DEFINITION
641
- * ===================== */
623
+ /* TAB PLUGIN DEFINITION
624
+ * ===================== */
642
625
 
643
- $.fn.tab = function ( option ) {
644
- return this.each(function () {
645
- var $this = $(this)
646
- , data = $this.data('tab')
647
- if (!data) $this.data('tab', (data = new Tab(this)))
648
- if (typeof option == 'string') data[option]()
649
- })
650
- }
626
+ $.fn.tab = function (option) {
627
+ return this.each(function () {
628
+ var $this = $(this)
629
+ , data = $this.data('tab')
630
+ if (!data) $this.data('tab', (data = new Tab(this)))
631
+ if (typeof option == 'string') data[option]()
632
+ })
633
+ }
651
634
 
652
- $.fn.tab.Constructor = Tab
635
+ $.fn.tab.Constructor = Tab
653
636
 
654
637
 
655
- /* TAB DATA-API
656
- * ============ */
638
+ /* TAB DATA-API
639
+ * ============ */
657
640
 
658
- $(function () {
659
- $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
660
- e.preventDefault()
661
- $(this).tab('show')
641
+ $(function () {
642
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
643
+ e.preventDefault()
644
+ $(this).tab('show')
645
+ })
662
646
  })
663
- })
664
647
 
665
648
  }(window.jQuery);
666
649
  /* ===========================================================
@@ -686,257 +669,213 @@
686
669
 
687
670
  !function ($) {
688
671
 
689
- "use strict"; // jshint ;_;
690
-
691
-
692
- /* TOOLTIP PUBLIC CLASS DEFINITION
693
- * =============================== */
694
-
695
- var Tooltip = function (element, options) {
696
- this.init('tooltip', element, options)
697
- }
698
-
699
- Tooltip.prototype = {
700
-
701
- constructor: Tooltip
702
-
703
- , init: function (type, element, options) {
704
- var eventIn
705
- , eventOut
706
-
707
- this.type = type
708
- this.$element = $(element)
709
- this.options = this.getOptions(options)
710
- this.enabled = true
711
-
712
- if (this.options.trigger != 'manual') {
713
- eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
714
- eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
715
- this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
716
- this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
717
- }
718
-
719
- this.options.selector ?
720
- (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
721
- this.fixTitle()
722
- }
672
+ "use strict"; // jshint ;_;
723
673
 
724
- , getOptions: function (options) {
725
- options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
726
674
 
727
- if (options.delay && typeof options.delay == 'number') {
728
- options.delay = {
729
- show: options.delay
730
- , hide: options.delay
731
- }
732
- }
675
+ /* TOOLTIP PUBLIC CLASS DEFINITION
676
+ * =============================== */
733
677
 
734
- return options
678
+ var Tooltip = function (element, options) {
679
+ this.init('tooltip', element, options)
735
680
  }
736
681
 
737
- , enter: function (e) {
738
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
682
+ Tooltip.prototype = {
739
683
 
740
- if (!self.options.delay || !self.options.delay.show) return self.show()
684
+ constructor:Tooltip, init:function (type, element, options) {
685
+ var eventIn
686
+ , eventOut
741
687
 
742
- clearTimeout(this.timeout)
743
- self.hoverState = 'in'
744
- this.timeout = setTimeout(function() {
745
- if (self.hoverState == 'in') self.show()
746
- }, self.options.delay.show)
747
- }
688
+ this.type = type
689
+ this.$element = $(element)
690
+ this.options = this.getOptions(options)
691
+ this.enabled = true
748
692
 
749
- , leave: function (e) {
750
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
693
+ if (this.options.trigger != 'manual') {
694
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
695
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
696
+ this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
697
+ this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
698
+ }
751
699
 
752
- if (this.timeout) clearTimeout(this.timeout)
753
- if (!self.options.delay || !self.options.delay.hide) return self.hide()
700
+ this.options.selector ?
701
+ (this._options = $.extend({}, this.options, { trigger:'manual', selector:'' })) :
702
+ this.fixTitle()
703
+ }, getOptions:function (options) {
704
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
754
705
 
755
- self.hoverState = 'out'
756
- this.timeout = setTimeout(function() {
757
- if (self.hoverState == 'out') self.hide()
758
- }, self.options.delay.hide)
759
- }
706
+ if (options.delay && typeof options.delay == 'number') {
707
+ options.delay = {
708
+ show:options.delay, hide:options.delay
709
+ }
710
+ }
760
711
 
761
- , show: function () {
762
- var $tip
763
- , inside
764
- , pos
765
- , actualWidth
766
- , actualHeight
767
- , placement
768
- , tp
769
-
770
- if (this.hasContent() && this.enabled) {
771
- $tip = this.tip()
772
- this.setContent()
773
-
774
- if (this.options.animation) {
775
- $tip.addClass('fade')
776
- }
712
+ return options
713
+ }, enter:function (e) {
714
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
715
+
716
+ if (!self.options.delay || !self.options.delay.show) return self.show()
717
+
718
+ clearTimeout(this.timeout)
719
+ self.hoverState = 'in'
720
+ this.timeout = setTimeout(function () {
721
+ if (self.hoverState == 'in') self.show()
722
+ }, self.options.delay.show)
723
+ }, leave:function (e) {
724
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
725
+
726
+ if (this.timeout) clearTimeout(this.timeout)
727
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
728
+
729
+ self.hoverState = 'out'
730
+ this.timeout = setTimeout(function () {
731
+ if (self.hoverState == 'out') self.hide()
732
+ }, self.options.delay.hide)
733
+ }, show:function () {
734
+ var $tip
735
+ , inside
736
+ , pos
737
+ , actualWidth
738
+ , actualHeight
739
+ , placement
740
+ , tp
741
+
742
+ if (this.hasContent() && this.enabled) {
743
+ $tip = this.tip()
744
+ this.setContent()
745
+
746
+ if (this.options.animation) {
747
+ $tip.addClass('fade')
748
+ }
749
+
750
+ placement = typeof this.options.placement == 'function' ?
751
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
752
+ this.options.placement
753
+
754
+ inside = /in/.test(placement)
755
+
756
+ $tip
757
+ .remove()
758
+ .css({ top:0, left:0, display:'block' })
759
+ .appendTo(inside ? this.$element : document.body)
760
+
761
+ pos = this.getPosition(inside)
762
+
763
+ actualWidth = $tip[0].offsetWidth
764
+ actualHeight = $tip[0].offsetHeight
765
+
766
+ switch (inside ? placement.split(' ')[1] : placement) {
767
+ case 'bottom':
768
+ tp = {top:pos.top + pos.height, left:pos.left + pos.width / 2 - actualWidth / 2}
769
+ break
770
+ case 'top':
771
+ tp = {top:pos.top - actualHeight, left:pos.left + pos.width / 2 - actualWidth / 2}
772
+ break
773
+ case 'left':
774
+ tp = {top:pos.top + pos.height / 2 - actualHeight / 2, left:pos.left - actualWidth}
775
+ break
776
+ case 'right':
777
+ tp = {top:pos.top + pos.height / 2 - actualHeight / 2, left:pos.left + pos.width}
778
+ break
779
+ }
780
+
781
+ $tip
782
+ .css(tp)
783
+ .addClass(placement)
784
+ .addClass('in')
785
+ }
786
+ }, isHTML:function (text) {
787
+ // html string detection logic adapted from jQuery
788
+ return typeof text != 'string'
789
+ || ( text.charAt(0) === "<"
790
+ && text.charAt(text.length - 1) === ">"
791
+ && text.length >= 3
792
+ ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text)
793
+ }, setContent:function () {
794
+ var $tip = this.tip()
795
+ , title = this.getTitle()
796
+
797
+ $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title)
798
+ $tip.removeClass('fade in top bottom left right')
799
+ }, hide:function () {
800
+ var that = this
801
+ , $tip = this.tip()
802
+
803
+ $tip.removeClass('in')
804
+
805
+ function removeWithAnimation() {
806
+ var timeout = setTimeout(function () {
807
+ $tip.off($.support.transition.end).remove()
808
+ }, 500)
809
+
810
+ $tip.one($.support.transition.end, function () {
811
+ clearTimeout(timeout)
812
+ $tip.remove()
813
+ })
814
+ }
777
815
 
778
- placement = typeof this.options.placement == 'function' ?
779
- this.options.placement.call(this, $tip[0], this.$element[0]) :
780
- this.options.placement
781
-
782
- inside = /in/.test(placement)
783
-
784
- $tip
785
- .remove()
786
- .css({ top: 0, left: 0, display: 'block' })
787
- .appendTo(inside ? this.$element : document.body)
788
-
789
- pos = this.getPosition(inside)
790
-
791
- actualWidth = $tip[0].offsetWidth
792
- actualHeight = $tip[0].offsetHeight
793
-
794
- switch (inside ? placement.split(' ')[1] : placement) {
795
- case 'bottom':
796
- tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
797
- break
798
- case 'top':
799
- tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
800
- break
801
- case 'left':
802
- tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
803
- break
804
- case 'right':
805
- tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
806
- break
816
+ $.support.transition && this.$tip.hasClass('fade') ?
817
+ removeWithAnimation() :
818
+ $tip.remove()
819
+ }, fixTitle:function () {
820
+ var $e = this.$element
821
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
822
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
823
+ }
824
+ }, hasContent:function () {
825
+ return this.getTitle()
826
+ }, getPosition:function (inside) {
827
+ return $.extend({}, (inside ? {top:0, left:0} : this.$element.offset()), {
828
+ width:this.$element[0].offsetWidth, height:this.$element[0].offsetHeight
829
+ })
830
+ }, getTitle:function () {
831
+ var title
832
+ , $e = this.$element
833
+ , o = this.options
834
+
835
+ title = $e.attr('data-original-title')
836
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
837
+
838
+ return title
839
+ }, tip:function () {
840
+ return this.$tip = this.$tip || $(this.options.template)
841
+ }, validate:function () {
842
+ if (!this.$element[0].parentNode) {
843
+ this.hide()
844
+ this.$element = null
845
+ this.options = null
846
+ }
847
+ }, enable:function () {
848
+ this.enabled = true
849
+ }, disable:function () {
850
+ this.enabled = false
851
+ }, toggleEnabled:function () {
852
+ this.enabled = !this.enabled
853
+ }, toggle:function () {
854
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
807
855
  }
808
856
 
809
- $tip
810
- .css(tp)
811
- .addClass(placement)
812
- .addClass('in')
813
- }
814
- }
815
-
816
- , isHTML: function(text) {
817
- // html string detection logic adapted from jQuery
818
- return typeof text != 'string'
819
- || ( text.charAt(0) === "<"
820
- && text.charAt( text.length - 1 ) === ">"
821
- && text.length >= 3
822
- ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text)
823
- }
824
-
825
- , setContent: function () {
826
- var $tip = this.tip()
827
- , title = this.getTitle()
828
-
829
- $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title)
830
- $tip.removeClass('fade in top bottom left right')
831
857
  }
832
858
 
833
- , hide: function () {
834
- var that = this
835
- , $tip = this.tip()
836
-
837
- $tip.removeClass('in')
838
859
 
839
- function removeWithAnimation() {
840
- var timeout = setTimeout(function () {
841
- $tip.off($.support.transition.end).remove()
842
- }, 500)
860
+ /* TOOLTIP PLUGIN DEFINITION
861
+ * ========================= */
843
862
 
844
- $tip.one($.support.transition.end, function () {
845
- clearTimeout(timeout)
846
- $tip.remove()
863
+ $.fn.tooltip = function (option) {
864
+ return this.each(function () {
865
+ var $this = $(this)
866
+ , data = $this.data('tooltip')
867
+ , options = typeof option == 'object' && option
868
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
869
+ if (typeof option == 'string') data[option]()
847
870
  })
848
- }
849
-
850
- $.support.transition && this.$tip.hasClass('fade') ?
851
- removeWithAnimation() :
852
- $tip.remove()
853
871
  }
854
872
 
855
- , fixTitle: function () {
856
- var $e = this.$element
857
- if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
858
- $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
859
- }
860
- }
873
+ $.fn.tooltip.Constructor = Tooltip
861
874
 
862
- , hasContent: function () {
863
- return this.getTitle()
875
+ $.fn.tooltip.defaults = {
876
+ animation:true, placement:'top', selector:false, template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', trigger:'hover', title:'', delay:0
864
877
  }
865
878
 
866
- , getPosition: function (inside) {
867
- return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
868
- width: this.$element[0].offsetWidth
869
- , height: this.$element[0].offsetHeight
870
- })
871
- }
872
-
873
- , getTitle: function () {
874
- var title
875
- , $e = this.$element
876
- , o = this.options
877
-
878
- title = $e.attr('data-original-title')
879
- || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
880
-
881
- return title
882
- }
883
-
884
- , tip: function () {
885
- return this.$tip = this.$tip || $(this.options.template)
886
- }
887
-
888
- , validate: function () {
889
- if (!this.$element[0].parentNode) {
890
- this.hide()
891
- this.$element = null
892
- this.options = null
893
- }
894
- }
895
-
896
- , enable: function () {
897
- this.enabled = true
898
- }
899
-
900
- , disable: function () {
901
- this.enabled = false
902
- }
903
-
904
- , toggleEnabled: function () {
905
- this.enabled = !this.enabled
906
- }
907
-
908
- , toggle: function () {
909
- this[this.tip().hasClass('in') ? 'hide' : 'show']()
910
- }
911
-
912
- }
913
-
914
-
915
- /* TOOLTIP PLUGIN DEFINITION
916
- * ========================= */
917
-
918
- $.fn.tooltip = function ( option ) {
919
- return this.each(function () {
920
- var $this = $(this)
921
- , data = $this.data('tooltip')
922
- , options = typeof option == 'object' && option
923
- if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
924
- if (typeof option == 'string') data[option]()
925
- })
926
- }
927
-
928
- $.fn.tooltip.Constructor = Tooltip
929
-
930
- $.fn.tooltip.defaults = {
931
- animation: true
932
- , placement: 'top'
933
- , selector: false
934
- , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
935
- , trigger: 'hover'
936
- , title: ''
937
- , delay: 0
938
- }
939
-
940
879
  }(window.jQuery);
941
880
 
942
881
  /* ===========================================================
@@ -961,80 +900,70 @@
961
900
 
962
901
  !function ($) {
963
902
 
964
- "use strict"; // jshint ;_;
903
+ "use strict"; // jshint ;_;
965
904
 
966
905
 
967
- /* POPOVER PUBLIC CLASS DEFINITION
968
- * =============================== */
906
+ /* POPOVER PUBLIC CLASS DEFINITION
907
+ * =============================== */
969
908
 
970
- var Popover = function ( element, options ) {
971
- this.init('popover', element, options)
972
- }
909
+ var Popover = function (element, options) {
910
+ this.init('popover', element, options)
911
+ }
973
912
 
974
913
 
975
- /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
914
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
976
915
  ========================================== */
977
916
 
978
- Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
917
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
979
918
 
980
- constructor: Popover
919
+ constructor:Popover, setContent:function () {
920
+ var $tip = this.tip()
921
+ , title = this.getTitle()
922
+ , content = this.getContent()
981
923
 
982
- , setContent: function () {
983
- var $tip = this.tip()
984
- , title = this.getTitle()
985
- , content = this.getContent()
924
+ $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
925
+ $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)
986
926
 
987
- $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
988
- $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)
927
+ $tip.removeClass('fade top bottom left right in')
928
+ }, hasContent:function () {
929
+ return this.getTitle() || this.getContent()
930
+ }, getContent:function () {
931
+ var content
932
+ , $e = this.$element
933
+ , o = this.options
989
934
 
990
- $tip.removeClass('fade top bottom left right in')
991
- }
935
+ content = $e.attr('data-content')
936
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
992
937
 
993
- , hasContent: function () {
994
- return this.getTitle() || this.getContent()
995
- }
938
+ return content
939
+ }, tip:function () {
940
+ if (!this.$tip) {
941
+ this.$tip = $(this.options.template)
942
+ }
943
+ return this.$tip
944
+ }
996
945
 
997
- , getContent: function () {
998
- var content
999
- , $e = this.$element
1000
- , o = this.options
946
+ })
1001
947
 
1002
- content = $e.attr('data-content')
1003
- || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1004
948
 
1005
- return content
1006
- }
949
+ /* POPOVER PLUGIN DEFINITION
950
+ * ======================= */
1007
951
 
1008
- , tip: function () {
1009
- if (!this.$tip) {
1010
- this.$tip = $(this.options.template)
1011
- }
1012
- return this.$tip
952
+ $.fn.popover = function (option) {
953
+ return this.each(function () {
954
+ var $this = $(this)
955
+ , data = $this.data('popover')
956
+ , options = typeof option == 'object' && option
957
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
958
+ if (typeof option == 'string') data[option]()
959
+ })
1013
960
  }
1014
961
 
1015
- })
962
+ $.fn.popover.Constructor = Popover
1016
963
 
1017
-
1018
- /* POPOVER PLUGIN DEFINITION
1019
- * ======================= */
1020
-
1021
- $.fn.popover = function (option) {
1022
- return this.each(function () {
1023
- var $this = $(this)
1024
- , data = $this.data('popover')
1025
- , options = typeof option == 'object' && option
1026
- if (!data) $this.data('popover', (data = new Popover(this, options)))
1027
- if (typeof option == 'string') data[option]()
964
+ $.fn.popover.defaults = $.extend({}, $.fn.tooltip.defaults, {
965
+ placement:'right', content:'', template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1028
966
  })
1029
- }
1030
-
1031
- $.fn.popover.Constructor = Popover
1032
-
1033
- $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1034
- placement: 'right'
1035
- , content: ''
1036
- , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1037
- })
1038
967
 
1039
968
  }(window.jQuery);
1040
969
  /* ==========================================================
@@ -1059,72 +988,72 @@
1059
988
 
1060
989
  !function ($) {
1061
990
 
1062
- "use strict"; // jshint ;_;
991
+ "use strict"; // jshint ;_;
1063
992
 
1064
993
 
1065
- /* ALERT CLASS DEFINITION
1066
- * ====================== */
994
+ /* ALERT CLASS DEFINITION
995
+ * ====================== */
1067
996
 
1068
- var dismiss = '[data-dismiss="alert"]'
1069
- , Alert = function (el) {
1070
- $(el).on('click', dismiss, this.close)
1071
- }
997
+ var dismiss = '[data-dismiss="alert"]'
998
+ , Alert = function (el) {
999
+ $(el).on('click', dismiss, this.close)
1000
+ }
1072
1001
 
1073
- Alert.prototype.close = function (e) {
1074
- var $this = $(this)
1075
- , selector = $this.attr('data-target')
1076
- , $parent
1002
+ Alert.prototype.close = function (e) {
1003
+ var $this = $(this)
1004
+ , selector = $this.attr('data-target')
1005
+ , $parent
1077
1006
 
1078
- if (!selector) {
1079
- selector = $this.attr('href')
1080
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1081
- }
1007
+ if (!selector) {
1008
+ selector = $this.attr('href')
1009
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1010
+ }
1082
1011
 
1083
- $parent = $(selector)
1012
+ $parent = $(selector)
1084
1013
 
1085
- e && e.preventDefault()
1014
+ e && e.preventDefault()
1086
1015
 
1087
- $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
1016
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
1088
1017
 
1089
- $parent.trigger(e = $.Event('close'))
1018
+ $parent.trigger(e = $.Event('close'))
1090
1019
 
1091
- if (e.isDefaultPrevented()) return
1020
+ if (e.isDefaultPrevented()) return
1092
1021
 
1093
- $parent.removeClass('in')
1022
+ $parent.removeClass('in')
1094
1023
 
1095
- function removeElement() {
1096
- $parent
1097
- .trigger('closed')
1098
- .remove()
1099
- }
1024
+ function removeElement() {
1025
+ $parent
1026
+ .trigger('closed')
1027
+ .remove()
1028
+ }
1100
1029
 
1101
- $.support.transition && $parent.hasClass('fade') ?
1102
- $parent.on($.support.transition.end, removeElement) :
1103
- removeElement()
1104
- }
1030
+ $.support.transition && $parent.hasClass('fade') ?
1031
+ $parent.on($.support.transition.end, removeElement) :
1032
+ removeElement()
1033
+ }
1105
1034
 
1106
1035
 
1107
- /* ALERT PLUGIN DEFINITION
1108
- * ======================= */
1036
+ /* ALERT PLUGIN DEFINITION
1037
+ * ======================= */
1109
1038
 
1110
- $.fn.alert = function (option) {
1111
- return this.each(function () {
1112
- var $this = $(this)
1113
- , data = $this.data('alert')
1114
- if (!data) $this.data('alert', (data = new Alert(this)))
1115
- if (typeof option == 'string') data[option].call($this)
1116
- })
1117
- }
1039
+ $.fn.alert = function (option) {
1040
+ return this.each(function () {
1041
+ var $this = $(this)
1042
+ , data = $this.data('alert')
1043
+ if (!data) $this.data('alert', (data = new Alert(this)))
1044
+ if (typeof option == 'string') data[option].call($this)
1045
+ })
1046
+ }
1118
1047
 
1119
- $.fn.alert.Constructor = Alert
1048
+ $.fn.alert.Constructor = Alert
1120
1049
 
1121
1050
 
1122
- /* ALERT DATA-API
1123
- * ============== */
1051
+ /* ALERT DATA-API
1052
+ * ============== */
1124
1053
 
1125
- $(function () {
1126
- $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
1127
- })
1054
+ $(function () {
1055
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
1056
+ })
1128
1057
 
1129
1058
  }(window.jQuery);
1130
1059
  /* ============================================================
@@ -1149,78 +1078,78 @@
1149
1078
 
1150
1079
  !function ($) {
1151
1080
 
1152
- "use strict"; // jshint ;_;
1081
+ "use strict"; // jshint ;_;
1153
1082
 
1154
1083
 
1155
- /* BUTTON PUBLIC CLASS DEFINITION
1156
- * ============================== */
1084
+ /* BUTTON PUBLIC CLASS DEFINITION
1085
+ * ============================== */
1157
1086
 
1158
- var Button = function (element, options) {
1159
- this.$element = $(element)
1160
- this.options = $.extend({}, $.fn.button.defaults, options)
1161
- }
1087
+ var Button = function (element, options) {
1088
+ this.$element = $(element)
1089
+ this.options = $.extend({}, $.fn.button.defaults, options)
1090
+ }
1162
1091
 
1163
- Button.prototype.setState = function (state) {
1164
- var d = 'disabled'
1165
- , $el = this.$element
1166
- , data = $el.data()
1167
- , val = $el.is('input') ? 'val' : 'html'
1092
+ Button.prototype.setState = function (state) {
1093
+ var d = 'disabled'
1094
+ , $el = this.$element
1095
+ , data = $el.data()
1096
+ , val = $el.is('input') ? 'val' : 'html'
1168
1097
 
1169
- state = state + 'Text'
1170
- data.resetText || $el.data('resetText', $el[val]())
1098
+ state = state + 'Text'
1099
+ data.resetText || $el.data('resetText', $el[val]())
1171
1100
 
1172
- $el[val](data[state] || this.options[state])
1101
+ $el[val](data[state] || this.options[state])
1173
1102
 
1174
- // push to event loop to allow forms to submit
1175
- setTimeout(function () {
1176
- state == 'loadingText' ?
1177
- $el.addClass(d).attr(d, d) :
1178
- $el.removeClass(d).removeAttr(d)
1179
- }, 0)
1180
- }
1103
+ // push to event loop to allow forms to submit
1104
+ setTimeout(function () {
1105
+ state == 'loadingText' ?
1106
+ $el.addClass(d).attr(d, d) :
1107
+ $el.removeClass(d).removeAttr(d)
1108
+ }, 0)
1109
+ }
1181
1110
 
1182
- Button.prototype.toggle = function () {
1183
- var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
1111
+ Button.prototype.toggle = function () {
1112
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
1184
1113
 
1185
- $parent && $parent
1186
- .find('.active')
1187
- .removeClass('active')
1114
+ $parent && $parent
1115
+ .find('.active')
1116
+ .removeClass('active')
1188
1117
 
1189
- this.$element.toggleClass('active')
1190
- }
1118
+ this.$element.toggleClass('active')
1119
+ }
1191
1120
 
1192
1121
 
1193
- /* BUTTON PLUGIN DEFINITION
1194
- * ======================== */
1122
+ /* BUTTON PLUGIN DEFINITION
1123
+ * ======================== */
1195
1124
 
1196
- $.fn.button = function (option) {
1197
- return this.each(function () {
1198
- var $this = $(this)
1199
- , data = $this.data('button')
1200
- , options = typeof option == 'object' && option
1201
- if (!data) $this.data('button', (data = new Button(this, options)))
1202
- if (option == 'toggle') data.toggle()
1203
- else if (option) data.setState(option)
1204
- })
1205
- }
1125
+ $.fn.button = function (option) {
1126
+ return this.each(function () {
1127
+ var $this = $(this)
1128
+ , data = $this.data('button')
1129
+ , options = typeof option == 'object' && option
1130
+ if (!data) $this.data('button', (data = new Button(this, options)))
1131
+ if (option == 'toggle') data.toggle()
1132
+ else if (option) data.setState(option)
1133
+ })
1134
+ }
1206
1135
 
1207
- $.fn.button.defaults = {
1208
- loadingText: 'loading...'
1209
- }
1136
+ $.fn.button.defaults = {
1137
+ loadingText:'loading...'
1138
+ }
1210
1139
 
1211
- $.fn.button.Constructor = Button
1140
+ $.fn.button.Constructor = Button
1212
1141
 
1213
1142
 
1214
- /* BUTTON DATA-API
1215
- * =============== */
1143
+ /* BUTTON DATA-API
1144
+ * =============== */
1216
1145
 
1217
- $(function () {
1218
- $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
1219
- var $btn = $(e.target)
1220
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
1221
- $btn.button('toggle')
1146
+ $(function () {
1147
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function (e) {
1148
+ var $btn = $(e.target)
1149
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
1150
+ $btn.button('toggle')
1151
+ })
1222
1152
  })
1223
- })
1224
1153
 
1225
1154
  }(window.jQuery);
1226
1155
  /* =============================================================
@@ -1245,139 +1174,127 @@
1245
1174
 
1246
1175
  !function ($) {
1247
1176
 
1248
- "use strict"; // jshint ;_;
1249
-
1250
-
1251
- /* COLLAPSE PUBLIC CLASS DEFINITION
1252
- * ================================ */
1253
-
1254
- var Collapse = function (element, options) {
1255
- this.$element = $(element)
1256
- this.options = $.extend({}, $.fn.collapse.defaults, options)
1177
+ "use strict"; // jshint ;_;
1257
1178
 
1258
- if (this.options.parent) {
1259
- this.$parent = $(this.options.parent)
1260
- }
1261
1179
 
1262
- this.options.toggle && this.toggle()
1263
- }
1180
+ /* COLLAPSE PUBLIC CLASS DEFINITION
1181
+ * ================================ */
1264
1182
 
1265
- Collapse.prototype = {
1183
+ var Collapse = function (element, options) {
1184
+ this.$element = $(element)
1185
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
1266
1186
 
1267
- constructor: Collapse
1187
+ if (this.options.parent) {
1188
+ this.$parent = $(this.options.parent)
1189
+ }
1268
1190
 
1269
- , dimension: function () {
1270
- var hasWidth = this.$element.hasClass('width')
1271
- return hasWidth ? 'width' : 'height'
1191
+ this.options.toggle && this.toggle()
1272
1192
  }
1273
1193
 
1274
- , show: function () {
1275
- var dimension
1276
- , scroll
1277
- , actives
1278
- , hasData
1194
+ Collapse.prototype = {
1279
1195
 
1280
- if (this.transitioning) return
1196
+ constructor:Collapse, dimension:function () {
1197
+ var hasWidth = this.$element.hasClass('width')
1198
+ return hasWidth ? 'width' : 'height'
1199
+ }, show:function () {
1200
+ var dimension
1201
+ , scroll
1202
+ , actives
1203
+ , hasData
1281
1204
 
1282
- dimension = this.dimension()
1283
- scroll = $.camelCase(['scroll', dimension].join('-'))
1284
- actives = this.$parent && this.$parent.find('> .accordion-group > .in')
1205
+ if (this.transitioning) return
1285
1206
 
1286
- if (actives && actives.length) {
1287
- hasData = actives.data('collapse')
1288
- if (hasData && hasData.transitioning) return
1289
- actives.collapse('hide')
1290
- hasData || actives.data('collapse', null)
1291
- }
1292
-
1293
- this.$element[dimension](0)
1294
- this.transition('addClass', $.Event('show'), 'shown')
1295
- this.$element[dimension](this.$element[0][scroll])
1296
- }
1207
+ dimension = this.dimension()
1208
+ scroll = $.camelCase(['scroll', dimension].join('-'))
1209
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
1297
1210
 
1298
- , hide: function () {
1299
- var dimension
1300
- if (this.transitioning) return
1301
- dimension = this.dimension()
1302
- this.reset(this.$element[dimension]())
1303
- this.transition('removeClass', $.Event('hide'), 'hidden')
1304
- this.$element[dimension](0)
1305
- }
1306
-
1307
- , reset: function (size) {
1308
- var dimension = this.dimension()
1309
-
1310
- this.$element
1311
- .removeClass('collapse')
1312
- [dimension](size || 'auto')
1313
- [0].offsetWidth
1211
+ if (actives && actives.length) {
1212
+ hasData = actives.data('collapse')
1213
+ if (hasData && hasData.transitioning) return
1214
+ actives.collapse('hide')
1215
+ hasData || actives.data('collapse', null)
1216
+ }
1314
1217
 
1315
- this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
1218
+ this.$element[dimension](0)
1219
+ this.transition('addClass', $.Event('show'), 'shown')
1220
+ this.$element[dimension](this.$element[0][scroll])
1221
+ }, hide:function () {
1222
+ var dimension
1223
+ if (this.transitioning) return
1224
+ dimension = this.dimension()
1225
+ this.reset(this.$element[dimension]())
1226
+ this.transition('removeClass', $.Event('hide'), 'hidden')
1227
+ this.$element[dimension](0)
1228
+ }, reset:function (size) {
1229
+ var dimension = this.dimension()
1230
+
1231
+ this.$element
1232
+ .removeClass('collapse')
1233
+ [dimension](size || 'auto')
1234
+ [0].offsetWidth
1235
+
1236
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
1237
+
1238
+ return this
1239
+ }, transition:function (method, startEvent, completeEvent) {
1240
+ var that = this
1241
+ , complete = function () {
1242
+ if (startEvent.type == 'show') that.reset()
1243
+ that.transitioning = 0
1244
+ that.$element.trigger(completeEvent)
1245
+ }
1246
+
1247
+ this.$element.trigger(startEvent)
1248
+
1249
+ if (startEvent.isDefaultPrevented()) return
1250
+
1251
+ this.transitioning = 1
1252
+
1253
+ this.$element[method]('in')
1254
+
1255
+ $.support.transition && this.$element.hasClass('collapse') ?
1256
+ this.$element.one($.support.transition.end, complete) :
1257
+ complete()
1258
+ }, toggle:function () {
1259
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
1260
+ }
1316
1261
 
1317
- return this
1318
1262
  }
1319
1263
 
1320
- , transition: function (method, startEvent, completeEvent) {
1321
- var that = this
1322
- , complete = function () {
1323
- if (startEvent.type == 'show') that.reset()
1324
- that.transitioning = 0
1325
- that.$element.trigger(completeEvent)
1326
- }
1327
-
1328
- this.$element.trigger(startEvent)
1329
-
1330
- if (startEvent.isDefaultPrevented()) return
1331
-
1332
- this.transitioning = 1
1333
1264
 
1334
- this.$element[method]('in')
1265
+ /* COLLAPSIBLE PLUGIN DEFINITION
1266
+ * ============================== */
1335
1267
 
1336
- $.support.transition && this.$element.hasClass('collapse') ?
1337
- this.$element.one($.support.transition.end, complete) :
1338
- complete()
1268
+ $.fn.collapse = function (option) {
1269
+ return this.each(function () {
1270
+ var $this = $(this)
1271
+ , data = $this.data('collapse')
1272
+ , options = typeof option == 'object' && option
1273
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
1274
+ if (typeof option == 'string') data[option]()
1275
+ })
1339
1276
  }
1340
1277
 
1341
- , toggle: function () {
1342
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
1278
+ $.fn.collapse.defaults = {
1279
+ toggle:true
1343
1280
  }
1344
1281
 
1345
- }
1346
-
1282
+ $.fn.collapse.Constructor = Collapse
1347
1283
 
1348
- /* COLLAPSIBLE PLUGIN DEFINITION
1349
- * ============================== */
1350
-
1351
- $.fn.collapse = function (option) {
1352
- return this.each(function () {
1353
- var $this = $(this)
1354
- , data = $this.data('collapse')
1355
- , options = typeof option == 'object' && option
1356
- if (!data) $this.data('collapse', (data = new Collapse(this, options)))
1357
- if (typeof option == 'string') data[option]()
1358
- })
1359
- }
1360
1284
 
1361
- $.fn.collapse.defaults = {
1362
- toggle: true
1363
- }
1285
+ /* COLLAPSIBLE DATA-API
1286
+ * ==================== */
1364
1287
 
1365
- $.fn.collapse.Constructor = Collapse
1366
-
1367
-
1368
- /* COLLAPSIBLE DATA-API
1369
- * ==================== */
1370
-
1371
- $(function () {
1372
- $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
1373
- var $this = $(this), href
1374
- , target = $this.attr('data-target')
1375
- || e.preventDefault()
1376
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
1377
- , option = $(target).data('collapse') ? 'toggle' : $this.data()
1378
- $(target).collapse(option)
1288
+ $(function () {
1289
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
1290
+ var $this = $(this), href
1291
+ , target = $this.attr('data-target')
1292
+ || e.preventDefault()
1293
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
1294
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
1295
+ $(target).collapse(option)
1296
+ })
1379
1297
  })
1380
- })
1381
1298
 
1382
1299
  }(window.jQuery);
1383
1300
  /* ==========================================================
@@ -1402,151 +1319,142 @@
1402
1319
 
1403
1320
  !function ($) {
1404
1321
 
1405
- "use strict"; // jshint ;_;
1406
-
1407
-
1408
- /* CAROUSEL CLASS DEFINITION
1409
- * ========================= */
1322
+ "use strict"; // jshint ;_;
1410
1323
 
1411
- var Carousel = function (element, options) {
1412
- this.$element = $(element)
1413
- this.options = options
1414
- this.options.slide && this.slide(this.options.slide)
1415
- this.options.pause == 'hover' && this.$element
1416
- .on('mouseenter', $.proxy(this.pause, this))
1417
- .on('mouseleave', $.proxy(this.cycle, this))
1418
- }
1419
1324
 
1420
- Carousel.prototype = {
1325
+ /* CAROUSEL CLASS DEFINITION
1326
+ * ========================= */
1421
1327
 
1422
- cycle: function (e) {
1423
- if (!e) this.paused = false
1424
- this.options.interval
1425
- && !this.paused
1426
- && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
1427
- return this
1328
+ var Carousel = function (element, options) {
1329
+ this.$element = $(element)
1330
+ this.options = options
1331
+ this.options.slide && this.slide(this.options.slide)
1332
+ this.options.pause == 'hover' && this.$element
1333
+ .on('mouseenter', $.proxy(this.pause, this))
1334
+ .on('mouseleave', $.proxy(this.cycle, this))
1428
1335
  }
1429
1336
 
1430
- , to: function (pos) {
1431
- var $active = this.$element.find('.active')
1432
- , children = $active.parent().children()
1433
- , activePos = children.index($active)
1434
- , that = this
1435
-
1436
- if (pos > (children.length - 1) || pos < 0) return
1437
-
1438
- if (this.sliding) {
1439
- return this.$element.one('slid', function () {
1440
- that.to(pos)
1441
- })
1442
- }
1337
+ Carousel.prototype = {
1338
+
1339
+ cycle:function (e) {
1340
+ if (!e) this.paused = false
1341
+ this.options.interval
1342
+ && !this.paused
1343
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
1344
+ return this
1345
+ }, to:function (pos) {
1346
+ var $active = this.$element.find('.active')
1347
+ , children = $active.parent().children()
1348
+ , activePos = children.index($active)
1349
+ , that = this
1350
+
1351
+ if (pos > (children.length - 1) || pos < 0) return
1352
+
1353
+ if (this.sliding) {
1354
+ return this.$element.one('slid', function () {
1355
+ that.to(pos)
1356
+ })
1357
+ }
1443
1358
 
1444
- if (activePos == pos) {
1445
- return this.pause().cycle()
1446
- }
1359
+ if (activePos == pos) {
1360
+ return this.pause().cycle()
1361
+ }
1447
1362
 
1448
- return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
1449
- }
1363
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
1364
+ }, pause:function (e) {
1365
+ if (!e) this.paused = true
1366
+ clearInterval(this.interval)
1367
+ this.interval = null
1368
+ return this
1369
+ }, next:function () {
1370
+ if (this.sliding) return
1371
+ return this.slide('next')
1372
+ }, prev:function () {
1373
+ if (this.sliding) return
1374
+ return this.slide('prev')
1375
+ }, slide:function (type, next) {
1376
+ var $active = this.$element.find('.active')
1377
+ , $next = next || $active[type]()
1378
+ , isCycling = this.interval
1379
+ , direction = type == 'next' ? 'left' : 'right'
1380
+ , fallback = type == 'next' ? 'first' : 'last'
1381
+ , that = this
1382
+ , e = $.Event('slide')
1383
+
1384
+ this.sliding = true
1385
+
1386
+ isCycling && this.pause()
1387
+
1388
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
1389
+
1390
+ if ($next.hasClass('active')) return
1391
+
1392
+ if ($.support.transition && this.$element.hasClass('slide')) {
1393
+ this.$element.trigger(e)
1394
+ if (e.isDefaultPrevented()) return
1395
+ $next.addClass(type)
1396
+ $next[0].offsetWidth // force reflow
1397
+ $active.addClass(direction)
1398
+ $next.addClass(direction)
1399
+ this.$element.one($.support.transition.end, function () {
1400
+ $next.removeClass([type, direction].join(' ')).addClass('active')
1401
+ $active.removeClass(['active', direction].join(' '))
1402
+ that.sliding = false
1403
+ setTimeout(function () {
1404
+ that.$element.trigger('slid')
1405
+ }, 0)
1406
+ })
1407
+ } else {
1408
+ this.$element.trigger(e)
1409
+ if (e.isDefaultPrevented()) return
1410
+ $active.removeClass('active')
1411
+ $next.addClass('active')
1412
+ this.sliding = false
1413
+ this.$element.trigger('slid')
1414
+ }
1450
1415
 
1451
- , pause: function (e) {
1452
- if (!e) this.paused = true
1453
- clearInterval(this.interval)
1454
- this.interval = null
1455
- return this
1456
- }
1416
+ isCycling && this.cycle()
1457
1417
 
1458
- , next: function () {
1459
- if (this.sliding) return
1460
- return this.slide('next')
1461
- }
1418
+ return this
1419
+ }
1462
1420
 
1463
- , prev: function () {
1464
- if (this.sliding) return
1465
- return this.slide('prev')
1466
1421
  }
1467
1422
 
1468
- , slide: function (type, next) {
1469
- var $active = this.$element.find('.active')
1470
- , $next = next || $active[type]()
1471
- , isCycling = this.interval
1472
- , direction = type == 'next' ? 'left' : 'right'
1473
- , fallback = type == 'next' ? 'first' : 'last'
1474
- , that = this
1475
- , e = $.Event('slide')
1476
-
1477
- this.sliding = true
1478
-
1479
- isCycling && this.pause()
1480
1423
 
1481
- $next = $next.length ? $next : this.$element.find('.item')[fallback]()
1424
+ /* CAROUSEL PLUGIN DEFINITION
1425
+ * ========================== */
1482
1426
 
1483
- if ($next.hasClass('active')) return
1484
-
1485
- if ($.support.transition && this.$element.hasClass('slide')) {
1486
- this.$element.trigger(e)
1487
- if (e.isDefaultPrevented()) return
1488
- $next.addClass(type)
1489
- $next[0].offsetWidth // force reflow
1490
- $active.addClass(direction)
1491
- $next.addClass(direction)
1492
- this.$element.one($.support.transition.end, function () {
1493
- $next.removeClass([type, direction].join(' ')).addClass('active')
1494
- $active.removeClass(['active', direction].join(' '))
1495
- that.sliding = false
1496
- setTimeout(function () { that.$element.trigger('slid') }, 0)
1427
+ $.fn.carousel = function (option) {
1428
+ return this.each(function () {
1429
+ var $this = $(this)
1430
+ , data = $this.data('carousel')
1431
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
1432
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
1433
+ if (typeof option == 'number') data.to(option)
1434
+ else if (typeof option == 'string' || (option = options.slide)) data[option]()
1435
+ else if (options.interval) data.cycle()
1497
1436
  })
1498
- } else {
1499
- this.$element.trigger(e)
1500
- if (e.isDefaultPrevented()) return
1501
- $active.removeClass('active')
1502
- $next.addClass('active')
1503
- this.sliding = false
1504
- this.$element.trigger('slid')
1505
- }
1506
-
1507
- isCycling && this.cycle()
1508
-
1509
- return this
1510
1437
  }
1511
1438
 
1512
- }
1513
-
1514
-
1515
- /* CAROUSEL PLUGIN DEFINITION
1516
- * ========================== */
1517
-
1518
- $.fn.carousel = function (option) {
1519
- return this.each(function () {
1520
- var $this = $(this)
1521
- , data = $this.data('carousel')
1522
- , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
1523
- if (!data) $this.data('carousel', (data = new Carousel(this, options)))
1524
- if (typeof option == 'number') data.to(option)
1525
- else if (typeof option == 'string' || (option = options.slide)) data[option]()
1526
- else if (options.interval) data.cycle()
1527
- })
1528
- }
1529
-
1530
- $.fn.carousel.defaults = {
1531
- interval: 5000
1532
- , pause: 'hover'
1533
- }
1439
+ $.fn.carousel.defaults = {
1440
+ interval:5000, pause:'hover'
1441
+ }
1534
1442
 
1535
- $.fn.carousel.Constructor = Carousel
1443
+ $.fn.carousel.Constructor = Carousel
1536
1444
 
1537
1445
 
1538
- /* CAROUSEL DATA-API
1539
- * ================= */
1446
+ /* CAROUSEL DATA-API
1447
+ * ================= */
1540
1448
 
1541
- $(function () {
1542
- $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
1543
- var $this = $(this), href
1544
- , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1545
- , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
1546
- $target.carousel(options)
1547
- e.preventDefault()
1449
+ $(function () {
1450
+ $('body').on('click.carousel.data-api', '[data-slide]', function (e) {
1451
+ var $this = $(this), href
1452
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1453
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
1454
+ $target.carousel(options)
1455
+ e.preventDefault()
1456
+ })
1548
1457
  })
1549
- })
1550
1458
 
1551
1459
  }(window.jQuery);
1552
1460
  /* =============================================================
@@ -1569,268 +1477,262 @@
1569
1477
  * ============================================================ */
1570
1478
 
1571
1479
 
1572
- !function($){
1573
-
1574
- "use strict"; // jshint ;_;
1575
-
1576
-
1577
- /* TYPEAHEAD PUBLIC CLASS DEFINITION
1578
- * ================================= */
1579
-
1580
- var Typeahead = function (element, options) {
1581
- this.$element = $(element)
1582
- this.options = $.extend({}, $.fn.typeahead.defaults, options)
1583
- this.matcher = this.options.matcher || this.matcher
1584
- this.sorter = this.options.sorter || this.sorter
1585
- this.highlighter = this.options.highlighter || this.highlighter
1586
- this.updater = this.options.updater || this.updater
1587
- this.$menu = $(this.options.menu).appendTo('body')
1588
- this.source = this.options.source
1589
- this.shown = false
1590
- this.listen()
1591
- }
1592
-
1593
- Typeahead.prototype = {
1594
-
1595
- constructor: Typeahead
1596
-
1597
- , select: function () {
1598
- var val = this.$menu.find('.active').attr('data-value')
1599
- this.$element
1600
- .val(this.updater(val))
1601
- .change()
1602
- return this.hide()
1603
- }
1604
-
1605
- , updater: function (item) {
1606
- return item
1607
- }
1608
-
1609
- , show: function () {
1610
- var pos = $.extend({}, this.$element.offset(), {
1611
- height: this.$element[0].offsetHeight
1612
- })
1613
-
1614
- this.$menu.css({
1615
- top: pos.top + pos.height
1616
- , left: pos.left
1617
- })
1618
-
1619
- this.$menu.show()
1620
- this.shown = true
1621
- return this
1622
- }
1623
-
1624
- , hide: function () {
1625
- this.$menu.hide()
1626
- this.shown = false
1627
- return this
1628
- }
1629
-
1630
- , lookup: function (event) {
1631
- var that = this
1632
- , items
1633
- , q
1634
-
1635
- this.query = this.$element.val()
1636
-
1637
- if (!this.query) {
1638
- return this.shown ? this.hide() : this
1639
- }
1640
-
1641
- items = $.grep(this.source, function (item) {
1642
- return that.matcher(item)
1643
- })
1644
-
1645
- items = this.sorter(items)
1646
-
1647
- if (!items.length) {
1648
- return this.shown ? this.hide() : this
1649
- }
1480
+ !function ($) {
1650
1481
 
1651
- return this.render(items.slice(0, this.options.items)).show()
1482
+ "use strict"
1483
+
1484
+ var Typeahead = function (element, options) {
1485
+ this.$element = $(element)
1486
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
1487
+ this.assigner = this.options.assigner || this.assigner
1488
+ this.matcher = this.options.matcher || this.matcher
1489
+ this.sorter = this.options.sorter || this.sorter
1490
+ this.highlighter = this.options.highlighter || this.highlighter
1491
+ this.$menu = $(this.options.menu).appendTo('body')
1492
+ this.source = this.options.source
1493
+ this.onselect = this.options.onselect
1494
+ this.strings = true
1495
+ this.shown = false
1496
+ this.listen()
1652
1497
  }
1653
1498
 
1654
- , matcher: function (item) {
1655
- return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1656
- }
1499
+ Typeahead.prototype = {
1500
+
1501
+ constructor:Typeahead, select:function () {
1502
+ var val = JSON.parse(this.$menu.find('.active').attr('data-value'))
1503
+ , text
1504
+
1505
+ if (!this.strings) text = val[this.options.property]
1506
+ else text = val
1507
+
1508
+ this.assigner(text, val)
1509
+
1510
+ if (typeof this.onselect == "function")
1511
+ this.onselect(val)
1512
+
1513
+ return this.hide()
1514
+ }, assigner:function (text) {
1515
+ this.$element.val(text)
1516
+ }, show:function () {
1517
+ var pos = $.extend({}, this.$element.offset(), {
1518
+ height:this.$element[0].offsetHeight
1519
+ })
1520
+
1521
+ this.$menu.css({
1522
+ top:pos.top + pos.height, left:pos.left
1523
+ })
1524
+
1525
+ this.$menu.show()
1526
+ this.shown = true
1527
+ return this
1528
+ }, hide:function () {
1529
+ this.$menu.hide()
1530
+ this.shown = false
1531
+ return this
1532
+ }, lookup:function (event) {
1533
+ var that = this
1534
+ , items
1535
+ , q
1536
+ , value
1537
+
1538
+ this.query = this.$element.val()
1539
+
1540
+ if (typeof this.source == "function") {
1541
+ value = this.source(this, this.query, event)
1542
+ if (value) this.process(value)
1543
+ } else {
1544
+ this.process(this.source)
1545
+ }
1546
+ }, process:function (results) {
1547
+ var that = this
1548
+ , items
1549
+ , q
1657
1550
 
1658
- , sorter: function (items) {
1659
- var beginswith = []
1660
- , caseSensitive = []
1661
- , caseInsensitive = []
1662
- , item
1551
+ if (results.length && typeof results[0] != "string")
1552
+ this.strings = false
1663
1553
 
1664
- while (item = items.shift()) {
1665
- if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1666
- else if (~item.indexOf(this.query)) caseSensitive.push(item)
1667
- else caseInsensitive.push(item)
1668
- }
1554
+ this.query = this.$element.val()
1669
1555
 
1670
- return beginswith.concat(caseSensitive, caseInsensitive)
1671
- }
1672
-
1673
- , highlighter: function (item) {
1674
- var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
1675
- return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
1676
- return '<strong>' + match + '</strong>'
1677
- })
1678
- }
1556
+ if (!this.query) {
1557
+ return this.shown ? this.hide() : this
1558
+ }
1679
1559
 
1680
- , render: function (items) {
1681
- var that = this
1560
+ items = $.grep(results, function (item) {
1561
+ if (!that.strings)
1562
+ item = item[that.options.property]
1563
+ if (that.matcher(item)) return item
1564
+ })
1682
1565
 
1683
- items = $(items).map(function (i, item) {
1684
- i = $(that.options.item).attr('data-value', item)
1685
- i.find('a').html(that.highlighter(item))
1686
- return i[0]
1687
- })
1566
+ items = this.sorter(items)
1688
1567
 
1689
- items.first().addClass('active')
1690
- this.$menu.html(items)
1691
- return this
1692
- }
1568
+ if (!items.length) {
1569
+ return this.shown ? this.hide() : this
1570
+ }
1693
1571
 
1694
- , next: function (event) {
1695
- var active = this.$menu.find('.active').removeClass('active')
1696
- , next = active.next()
1572
+ return this.render(items.slice(0, this.options.items)).show()
1573
+ }, matcher:function (item) {
1574
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1575
+ }, sorter:function (items) {
1576
+ var beginswith = []
1577
+ , caseSensitive = []
1578
+ , caseInsensitive = []
1579
+ , item
1580
+ , sortby
1581
+
1582
+ while (item = items.shift()) {
1583
+ if (this.strings) sortby = item
1584
+ else sortby = item[this.options.property]
1585
+
1586
+ if (!sortby.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1587
+ else if (~sortby.indexOf(this.query)) caseSensitive.push(item)
1588
+ else caseInsensitive.push(item)
1589
+ }
1697
1590
 
1698
- if (!next.length) {
1699
- next = $(this.$menu.find('li')[0])
1700
- }
1591
+ return beginswith.concat(caseSensitive, caseInsensitive)
1592
+ }, highlighter:function (item) {
1593
+ return item.replace(('(' + this.query + ')').toRegExp('ig'), function ($1, match) {
1594
+ return '<strong>' + match + '</strong>'
1595
+ })
1596
+ }, render:function (items) {
1597
+ var that = this
1598
+
1599
+ items = $(items).map(function (i, item) {
1600
+ i = $(that.options.item).attr('data-value', JSON.stringify(item))
1601
+ if (!that.strings)
1602
+ item = item[that.options.property]
1603
+ i.find('a').html(that.highlighter(item))
1604
+ return i[0]
1605
+ })
1606
+
1607
+ items.first().addClass('active')
1608
+ this.$menu.html(items)
1609
+ return this
1610
+ }, next:function (event) {
1611
+ var active = this.$menu.find('.active').removeClass('active')
1612
+ , next = active.next()
1613
+
1614
+ if (!next.length) {
1615
+ next = $(this.$menu.find('li')[0])
1616
+ }
1701
1617
 
1702
- next.addClass('active')
1703
- }
1618
+ next.addClass('active')
1619
+ }, prev:function (event) {
1620
+ var active = this.$menu.find('.active').removeClass('active')
1621
+ , prev = active.prev()
1704
1622
 
1705
- , prev: function (event) {
1706
- var active = this.$menu.find('.active').removeClass('active')
1707
- , prev = active.prev()
1623
+ if (!prev.length) {
1624
+ prev = this.$menu.find('li').last()
1625
+ }
1708
1626
 
1709
- if (!prev.length) {
1710
- prev = this.$menu.find('li').last()
1711
- }
1627
+ prev.addClass('active')
1628
+ }, listen:function () {
1629
+ this.$element
1630
+ .on('blur', $.proxy(this.blur, this))
1631
+ .on('keypress', $.proxy(this.keypress, this))
1632
+ .on('keyup', $.proxy(this.keyup, this))
1712
1633
 
1713
- prev.addClass('active')
1714
- }
1634
+ if ($.browser.webkit || $.browser.msie) {
1635
+ this.$element.on('keydown', $.proxy(this.keypress, this))
1636
+ }
1715
1637
 
1716
- , listen: function () {
1717
- this.$element
1718
- .on('blur', $.proxy(this.blur, this))
1719
- .on('keypress', $.proxy(this.keypress, this))
1720
- .on('keyup', $.proxy(this.keyup, this))
1638
+ this.$menu
1639
+ .on('click', $.proxy(this.click, this))
1640
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1641
+ }, keyup:function (e) {
1642
+ e.stopPropagation()
1643
+ e.preventDefault()
1644
+
1645
+ switch (e.keyCode) {
1646
+ case 40: // down arrow
1647
+ case 38: // up arrow
1648
+ break
1649
+
1650
+ case 9: // tab
1651
+ case 13: // enter
1652
+ if (!this.shown) return
1653
+ this.select()
1654
+ break
1655
+
1656
+ case 27: // escape
1657
+ this.hide()
1658
+ break
1659
+
1660
+ default:
1661
+ this.lookup(e)
1662
+ }
1721
1663
 
1722
- if ($.browser.webkit || $.browser.msie) {
1723
- this.$element.on('keydown', $.proxy(this.keypress, this))
1724
- }
1664
+ }, keypress:function (e) {
1665
+ e.stopPropagation()
1666
+ if (!this.shown) return
1667
+
1668
+ switch (e.keyCode) {
1669
+ case 9: // tab
1670
+ case 13: // enter
1671
+ case 27: // escape
1672
+ e.preventDefault()
1673
+ break
1674
+
1675
+ case 38: // up arrow
1676
+ e.preventDefault()
1677
+ this.prev()
1678
+ break
1679
+
1680
+ case 40: // down arrow
1681
+ e.preventDefault()
1682
+ this.next()
1683
+ break
1684
+ }
1685
+ }, blur:function (e) {
1686
+ var that = this
1687
+ e.stopPropagation()
1688
+ e.preventDefault()
1689
+ setTimeout(function () {
1690
+ that.hide()
1691
+ }, 150)
1692
+ }, click:function (e) {
1693
+ e.stopPropagation()
1694
+ e.preventDefault()
1695
+ this.select()
1696
+ }, mouseenter:function (e) {
1697
+ this.$menu.find('.active').removeClass('active')
1698
+ $(e.currentTarget).addClass('active')
1699
+ }
1725
1700
 
1726
- this.$menu
1727
- .on('click', $.proxy(this.click, this))
1728
- .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1729
1701
  }
1730
1702
 
1731
- , keyup: function (e) {
1732
- switch(e.keyCode) {
1733
- case 40: // down arrow
1734
- case 38: // up arrow
1735
- break
1736
-
1737
- case 9: // tab
1738
- case 13: // enter
1739
- if (!this.shown) return
1740
- this.select()
1741
- break
1742
-
1743
- case 27: // escape
1744
- if (!this.shown) return
1745
- this.hide()
1746
- break
1747
-
1748
- default:
1749
- this.lookup()
1750
- }
1751
-
1752
- e.stopPropagation()
1753
- e.preventDefault()
1754
- }
1755
-
1756
- , keypress: function (e) {
1757
- if (!this.shown) return
1758
-
1759
- switch(e.keyCode) {
1760
- case 9: // tab
1761
- case 13: // enter
1762
- case 27: // escape
1763
- e.preventDefault()
1764
- break
1765
-
1766
- case 38: // up arrow
1767
- if (e.type != 'keydown') break
1768
- e.preventDefault()
1769
- this.prev()
1770
- break
1771
-
1772
- case 40: // down arrow
1773
- if (e.type != 'keydown') break
1774
- e.preventDefault()
1775
- this.next()
1776
- break
1777
- }
1778
-
1779
- e.stopPropagation()
1780
- }
1781
1703
 
1782
- , blur: function (e) {
1783
- var that = this
1784
- setTimeout(function () { that.hide() }, 150)
1785
- }
1704
+ /* TYPEAHEAD PLUGIN DEFINITION
1705
+ * =========================== */
1786
1706
 
1787
- , click: function (e) {
1788
- e.stopPropagation()
1789
- e.preventDefault()
1790
- this.select()
1707
+ $.fn.typeahead = function (option) {
1708
+ return this.each(function () {
1709
+ var $this = $(this)
1710
+ , data = $this.data('typeahead')
1711
+ , options = typeof option == 'object' && option
1712
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1713
+ if (typeof option == 'string') data[option]()
1714
+ //FIX: hide browser default autocomplete
1715
+ $this.attr('autocomplete', 'off')
1716
+ })
1791
1717
  }
1792
1718
 
1793
- , mouseenter: function (e) {
1794
- this.$menu.find('.active').removeClass('active')
1795
- $(e.currentTarget).addClass('active')
1719
+ $.fn.typeahead.defaults = {
1720
+ source:[], items:8, menu:'<ul class="typeahead dropdown-menu"></ul>', item:'<li><a href="#"></a></li>', onselect:null, property:'value'
1796
1721
  }
1797
1722
 
1798
- }
1799
-
1800
-
1801
- /* TYPEAHEAD PLUGIN DEFINITION
1802
- * =========================== */
1803
-
1804
- $.fn.typeahead = function (option) {
1805
- return this.each(function () {
1806
- var $this = $(this)
1807
- , data = $this.data('typeahead')
1808
- , options = typeof option == 'object' && option
1809
- if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1810
- if (typeof option == 'string') data[option]()
1811
- })
1812
- }
1813
-
1814
- $.fn.typeahead.defaults = {
1815
- source: []
1816
- , items: 8
1817
- , menu: '<ul class="typeahead dropdown-menu"></ul>'
1818
- , item: '<li><a href="#"></a></li>'
1819
- }
1723
+ $.fn.typeahead.Constructor = Typeahead
1820
1724
 
1821
- $.fn.typeahead.Constructor = Typeahead
1822
1725
 
1726
+ /* TYPEAHEAD DATA-API
1727
+ * ================== */
1823
1728
 
1824
- /* TYPEAHEAD DATA-API
1825
- * ================== */
1826
-
1827
- $(function () {
1828
- $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1829
- var $this = $(this)
1830
- if ($this.data('typeahead')) return
1831
- e.preventDefault()
1832
- $this.typeahead($this.data())
1729
+ $(function () {
1730
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1731
+ var $this = $(this)
1732
+ if ($this.data('typeahead')) return
1733
+ e.preventDefault()
1734
+ $this.typeahead($this.data())
1735
+ })
1833
1736
  })
1834
- })
1835
1737
 
1836
1738
  }(window.jQuery);