/*! |
/*! |
* Bootstrap v3.0.3 (http://getbootstrap.com) |
* Bootstrap v3.0.3 (http://getbootstrap.com) |
* Copyright 2013 Twitter, Inc. |
* Copyright 2013 Twitter, Inc. |
* Licensed under http://www.apache.org/licenses/LICENSE-2.0 |
* Licensed under http://www.apache.org/licenses/LICENSE-2.0 |
*/ |
*/ |
|
|
if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") } |
if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") } |
|
|
/* ======================================================================== |
/* ======================================================================== |
* Bootstrap: transition.js v3.0.3 |
* Bootstrap: transition.js v3.0.3 |
* http://getbootstrap.com/javascript/#transitions |
* http://getbootstrap.com/javascript/#transitions |
* ======================================================================== |
* ======================================================================== |
* Copyright 2013 Twitter, Inc. |
* Copyright 2013 Twitter, Inc. |
* |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* You may obtain a copy of the License at |
* |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* |
* Unless required by applicable law or agreed to in writing, software |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* See the License for the specific language governing permissions and |
* limitations under the License. |
* limitations under the License. |
* ======================================================================== */ |
* ======================================================================== */ |
|
|
|
|
+function ($) { "use strict"; |
+function ($) { "use strict"; |
|
|
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) |
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) |
// ============================================================ |
// ============================================================ |
|
|
function transitionEnd() { |
function transitionEnd() { |
var el = document.createElement('bootstrap') |
var el = document.createElement('bootstrap') |
|
|
var transEndEventNames = { |
var transEndEventNames = { |
'WebkitTransition' : 'webkitTransitionEnd' |
'WebkitTransition' : 'webkitTransitionEnd' |
, 'MozTransition' : 'transitionend' |
, 'MozTransition' : 'transitionend' |
, 'OTransition' : 'oTransitionEnd otransitionend' |
, 'OTransition' : 'oTransitionEnd otransitionend' |
, 'transition' : 'transitionend' |
, 'transition' : 'transitionend' |
} |
} |
|
|
for (var name in transEndEventNames) { |
for (var name in transEndEventNames) { |
if (el.style[name] !== undefined) { |
if (el.style[name] !== undefined) { |
return { end: transEndEventNames[name] } |
return { end: transEndEventNames[name] } |
} |
} |
} |
} |
} |
} |
|
|
// http://blog.alexmaccaw.com/css-transitions |
// http://blog.alexmaccaw.com/css-transitions |
$.fn.emulateTransitionEnd = function (duration) { |
$.fn.emulateTransitionEnd = function (duration) { |
var called = false, $el = this |
var called = false, $el = this |
$(this).one($.support.transition.end, function () { called = true }) |
$(this).one($.support.transition.end, function () { called = true }) |
var callback = function () { if (!called) $($el).trigger($.support.transition.end) } |
var callback = function () { if (!called) $($el).trigger($.support.transition.end) } |
setTimeout(callback, duration) |
setTimeout(callback, duration) |
return this |
return this |
} |
} |
|
|
$(function () { |
$(function () { |
$.support.transition = transitionEnd() |
$.support.transition = transitionEnd() |
}) |
}) |
|
|
}(jQuery); |
}(jQuery); |
|
|
/* ======================================================================== |
/* ======================================================================== |
* Bootstrap: alert.js v3.0.3 |
* Bootstrap: alert.js v3.0.3 |
* http://getbootstrap.com/javascript/#alerts |
* http://getbootstrap.com/javascript/#alerts |
* ======================================================================== |
* ======================================================================== |
* Copyright 2013 Twitter, Inc. |
* Copyright 2013 Twitter, Inc. |
* |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* You may obtain a copy of the License at |
* |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* |
* Unless required by applicable law or agreed to in writing, software |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* See the License for the specific language governing permissions and |
* limitations under the License. |
* limitations under the License. |
* ======================================================================== */ |
* ======================================================================== */ |
|
|
|
|
+function ($) { "use strict"; |
+function ($) { "use strict"; |
|
|
// ALERT CLASS DEFINITION |
// ALERT CLASS DEFINITION |
// ====================== |
// ====================== |
|
|
var dismiss = '[data-dismiss="alert"]' |
var dismiss = '[data-dismiss="alert"]' |
var Alert = function (el) { |
var Alert = function (el) { |
$(el).on('click', dismiss, this.close) |
$(el).on('click', dismiss, this.close) |
} |
} |
|
|
Alert.prototype.close = function (e) { |
Alert.prototype.close = function (e) { |
var $this = $(this) |
var $this = $(this) |
var selector = $this.attr('data-target') |
var selector = $this.attr('data-target') |
|
|
if (!selector) { |
if (!selector) { |
selector = $this.attr('href') |
selector = $this.attr('href') |
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 |
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 |
} |
} |
|
|
var $parent = $(selector) |
var $parent = $(selector) |
|
|
if (e) e.preventDefault() |
if (e) e.preventDefault() |
|
|
if (!$parent.length) { |
if (!$parent.length) { |
$parent = $this.hasClass('alert') ? $this : $this.parent() |
$parent = $this.hasClass('alert') ? $this : $this.parent() |
} |
} |
|
|
$parent.trigger(e = $.Event('close.bs.alert')) |
$parent.trigger(e = $.Event('close.bs.alert')) |
|
|
if (e.isDefaultPrevented()) return |
if (e.isDefaultPrevented()) return |
|
|
$parent.removeClass('in') |
$parent.removeClass('in') |
|
|
function removeElement() { |
function removeElement() { |
$parent.trigger('closed.bs.alert').remove() |
$parent.trigger('closed.bs.alert').remove() |
} |
} |
|
|
$.support.transition && $parent.hasClass('fade') ? |
$.support.transition && $parent.hasClass('fade') ? |
$parent |
$parent |
.one($.support.transition.end, removeElement) |
.one($.support.transition.end, removeElement) |
.emulateTransitionEnd(150) : |
.emulateTransitionEnd(150) : |
removeElement() |
removeElement() |
} |
} |
|
|
|
|
// ALERT PLUGIN DEFINITION |
// ALERT PLUGIN DEFINITION |
// ======================= |
// ======================= |
|
|
var old = $.fn.alert |
var old = $.fn.alert |
|
|
$.fn.alert = function (option) { |
$.fn.alert = function (option) { |
return this.each(function () { |
return this.each(function () { |
var $this = $(this) |
var $this = $(this) |
var data = $this.data('bs.alert') |
var data = $this.data('bs.alert') |
|
|
if (!data) $this.data('bs.alert', (data = new Alert(this))) |
if (!data) $this.data('bs.alert', (data = new Alert(this))) |
if (typeof option == 'string') data[option].call($this) |
if (typeof option == 'string') data[option].call($this) |
}) |
}) |
} |
} |
|
|
$.fn.alert.Constructor = Alert |
$.fn.alert.Constructor = Alert |
|
|
|
|
// ALERT NO CONFLICT |
// ALERT NO CONFLICT |
// ================= |
// ================= |
|
|
$.fn.alert.noConflict = function () { |
$.fn.alert.noConflict = function () { |
$.fn.alert = old |
$.fn.alert = old |
return this |
return this |
} |
} |
|
|
|
|
// ALERT DATA-API |
// ALERT DATA-API |
// ============== |
// ============== |
|
|
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) |
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) |
|
|
}(jQuery); |
}(jQuery); |
|
|
/* ======================================================================== |
/* ======================================================================== |
* Bootstrap: button.js v3.0.3 |
* Bootstrap: button.js v3.0.3 |
* http://getbootstrap.com/javascript/#buttons |
* http://getbootstrap.com/javascript/#buttons |
* ======================================================================== |
* ======================================================================== |
* Copyright 2013 Twitter, Inc. |
* Copyright 2013 Twitter, Inc. |
* |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* You may obtain a copy of the License at |
* |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* |
* Unless required by applicable law or agreed to in writing, software |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* See the License for the specific language governing permissions and |
* limitations under the License. |
* limitations under the License. |
* ======================================================================== */ |
* ======================================================================== */ |
|
|
|
|
+function ($) { "use strict"; |
+function ($) { "use strict"; |
|
|
// BUTTON PUBLIC CLASS DEFINITION |
// BUTTON PUBLIC CLASS DEFINITION |
// ============================== |
// ============================== |
|
|
var Button = function (element, options) { |
var Button = function (element, options) { |
this.$element = $(element) |
this.$element = $(element) |
this.options = $.extend({}, Button.DEFAULTS, options) |
this.options = $.extend({}, Button.DEFAULTS, options) |
} |
} |
|
|
Button.DEFAULTS = { |
Button.DEFAULTS = { |
loadingText: 'loading...' |
loadingText: 'loading...' |
} |
} |
|
|
Button.prototype.setState = function (state) { |
Button.prototype.setState = function (state) { |
var d = 'disabled' |
var d = 'disabled' |
var $el = this.$element |
var $el = this.$element |
var val = $el.is('input') ? 'val' : 'html' |
var val = $el.is('input') ? 'val' : 'html' |
var data = $el.data() |
var data = $el.data() |
|
|
state = state + 'Text' |
state = state + 'Text' |
|
|
if (!data.resetText) $el.data('resetText', $el[val]()) |
if (!data.resetText) $el.data('resetText', $el[val]()) |
|
|
$el[val](data[state] || this.options[state]) |
$el[val](data[state] || this.options[state]) |
|
|
// push to event loop to allow forms to submit |
// push to event loop to allow forms to submit |
setTimeout(function () { |
setTimeout(function () { |
state == 'loadingText' ? |
state == 'loadingText' ? |
$el.addClass(d).attr(d, d) : |
$el.addClass(d).attr(d, d) : |
$el.removeClass(d).removeAttr(d); |
$el.removeClass(d).removeAttr(d); |
}, 0) |
}, 0) |
} |
} |
|
|
Button.prototype.toggle = function () { |
Button.prototype.toggle = function () { |
var $parent = this.$element.closest('[data-toggle="buttons"]') |
var $parent = this.$element.closest('[data-toggle="buttons"]') |
var changed = true |
var changed = true |
|
|
if ($parent.length) { |
if ($parent.length) { |
var $input = this.$element.find('input') |
var $input = this.$element.find('input') |
if ($input.prop('type') === 'radio') { |
if ($input.prop('type') === 'radio') { |
// see if clicking on current one |
// see if clicking on current one |
if ($input.prop('checked') && this.$element.hasClass('active')) |
if ($input.prop('checked') && this.$element.hasClass('active')) |
changed = false |
changed = false |
else |
else |
$parent.find('.active').removeClass('active') |
$parent.find('.active').removeClass('active') |
} |
} |
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') |
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') |
} |
} |
|
|
if (changed) this.$element.toggleClass('active') |
if (changed) this.$element.toggleClass('active') |
} |
} |
|
|
|
|
// BUTTON PLUGIN DEFINITION |
// BUTTON PLUGIN DEFINITION |
// ======================== |
// ======================== |
|
|
var old = $.fn.button |
var old = $.fn.button |
|
|
$.fn.button = function (option) { |
$.fn.button = function (option) { |
return this.each(function () { |
return this.each(function () { |
var $this = $(this) |
var $this = $(this) |
var data = $this.data('bs.button') |
var data = $this.data('bs.button') |
var options = typeof option == 'object' && option |
var options = typeof option == 'object' && option |
|
|
if (!data) $this.data('bs.button', (data = new Button(this, options))) |
if (!data) $this.data('bs.button', (data = new Button(this, options))) |
|
|
if (option == 'toggle') data.toggle() |
if (option == 'toggle') data.toggle() |
else if (option) data.setState(option) |
else if (option) data.setState(option) |
}) |
}) |
} |
} |
|
|
$.fn.button.Constructor = Button |
$.fn.button.Constructor = Button |
|
|
|
|
// BUTTON NO CONFLICT |
// BUTTON NO CONFLICT |
// ================== |
// ================== |
|
|
$.fn.button.noConflict = function () { |
$.fn.button.noConflict = function () { |
$.fn.button = old |
$.fn.button = old |
return this |
return this |
} |
} |
|
|
|
|
// BUTTON DATA-API |
// BUTTON DATA-API |
// =============== |
// =============== |
|
|
$(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { |
$(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { |
var $btn = $(e.target) |
var $btn = $(e.target) |
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') |
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') |
$btn.button('toggle') |
$btn.button('toggle') |
e.preventDefault() |
e.preventDefault() |
}) |
}) |
|
|
}(jQuery); |
}(jQuery); |
|
|
/* ======================================================================== |
/* ======================================================================== |
* Bootstrap: carousel.js v3.0.3 |
* Bootstrap: carousel.js v3.0.3 |
* http://getbootstrap.com/javascript/#carousel |
* http://getbootstrap.com/javascript/#carousel |
* ======================================================================== |
* ======================================================================== |
* Copyright 2013 Twitter, Inc. |
* Copyright 2013 Twitter, Inc. |
* |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* You may obtain a copy of the License at |
* |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* |
* Unless required by applicable law or agreed to in writing, software |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* See the License for the specific language governing permissions and |
* limitations under the License. |
* limitations under the License. |
* ======================================================================== */ |
* ======================================================================== */ |
|
|
|
|
+function ($) { "use strict"; |
+function ($) { "use strict"; |
|
|
// CAROUSEL CLASS DEFINITION |
// CAROUSEL CLASS DEFINITION |
// ========================= |
// ========================= |
|
|
var Carousel = function (element, options) { |
var Carousel = function (element, options) { |
this.$element = $(element) |
this.$element = $(element) |
this.$indicators = this.$element.find('.carousel-indicators') |
this.$indicators = this.$element.find('.carousel-indicators') |
this.options = options |
this.options = options |
this.paused = |
this.paused = |
this.sliding = |
this.sliding = |
this.interval = |
this.interval = |
this.$active = |
this.$active = |
this.$items = null |
this.$items = null |
|
|
this.options.pause == 'hover' && this.$element |
this.options.pause == 'hover' && this.$element |
.on('mouseenter', $.proxy(this.pause, this)) |
.on('mouseenter', $.proxy(this.pause, this)) |
.on('mouseleave', $.proxy(this.cycle, this)) |
.on('mouseleave', $.proxy(this.cycle, this)) |
} |
} |
|
|
Carousel.DEFAULTS = { |
Carousel.DEFAULTS = { |
interval: 5000 |
interval: 5000 |
, pause: 'hover' |
, pause: 'hover' |
, wrap: true |
, wrap: true |
} |
} |
|
|
Carousel.prototype.cycle = function (e) { |
Carousel.prototype.cycle = function (e) { |
e || (this.paused = false) |
e || (this.paused = false) |
|
|
this.interval && clearInterval(this.interval) |
this.interval && clearInterval(this.interval) |
|
|
this.options.interval |
this.options.interval |
&& !this.paused |
&& !this.paused |
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) |
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) |
|
|
return this |
return this |
} |
} |
|
|
Carousel.prototype.getActiveIndex = function () { |
Carousel.prototype.getActiveIndex = function () { |
this.$active = this.$element.find('.item.active') |
this.$active = this.$element.find('.item.active') |
this.$items = this.$active.parent().children() |
this.$items = this.$active.parent().children() |
|
|
return this.$items.index(this.$active) |
return this.$items.index(this.$active) |
} |
} |
|
|
Carousel.prototype.to = function (pos) { |
Carousel.prototype.to = function (pos) { |
var that = this |
var that = this |
var activeIndex = this.getActiveIndex() |
var activeIndex = this.getActiveIndex() |
|
|
if (pos > (this.$items.length - 1) || pos < 0) return |
if (pos > (this.$items.length - 1) || pos < 0) return |
|
|
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) |
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) |
if (activeIndex == pos) return this.pause().cycle() |
if (activeIndex == pos) return this.pause().cycle() |
|
|
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) |
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) |
} |
} |
|
|
Carousel.prototype.pause = function (e) { |
Carousel.prototype.pause = function (e) { |
e || (this.paused = true) |
e || (this.paused = true) |
|
|
if (this.$element.find('.next, .prev').length && $.support.transition.end) { |
if (this.$element.find('.next, .prev').length && $.support.transition.end) { |
this.$element.trigger($.support.transition.end) |
this.$element.trigger($.support.transition.end) |
this.cycle(true) |
this.cycle(true) |
} |
} |
|
|
this.interval = clearInterval(this.interval) |
this.interval = clearInterval(this.interval) |
|
|
return this |
return this |
} |
} |
|
|
Carousel.prototype.next = function () { |
Carousel.prototype.next = function () { |
if (this.sliding) return |
if (this.sliding) return |
return this.slide('next') |
return this.slide('next') |
} |
} |
|
|
Carousel.prototype.prev = function () { |
Carousel.prototype.prev = function () { |
if (thi |