From 28bd7c0707e3a29f4f74fbdeab88beaa81cd06d4 Mon Sep 17 00:00:00 2001 From: Corey Sewell Date: Fri, 14 Nov 2014 20:40:27 +1300 Subject: Add support for SASS/SCSS Refactored less files to be more scss friendly * Ensured no variables are used before assignment * Removed interpolated variable usage with similar substitute Added SCSS Grunt tasks * convert_less - Converts theme less files to scss * swatch_scss - Same as original swatch task, but using sass * compress_scss - Same as original compress task, but using sass Added dependencies for SCSS Updated _config.yml so jekyll includes theme _bootswatch.scss and _variables.scss files Added .sass-cache dir to .gitignore --- .../bootstrap/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../bootstrap/glyphicons-halflings-regular.svg | 229 ++ .../bootstrap/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../bootstrap/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../assets/javascripts/bootstrap-sprockets.js | 12 + .../assets/javascripts/bootstrap.js | 2304 ++++++++++++++++++++ .../assets/javascripts/bootstrap/affix.js | 162 ++ .../assets/javascripts/bootstrap/alert.js | 94 + .../assets/javascripts/bootstrap/button.js | 116 + .../assets/javascripts/bootstrap/carousel.js | 240 ++ .../assets/javascripts/bootstrap/collapse.js | 211 ++ .../assets/javascripts/bootstrap/dropdown.js | 161 ++ .../assets/javascripts/bootstrap/modal.js | 324 +++ .../assets/javascripts/bootstrap/popover.js | 119 + .../assets/javascripts/bootstrap/scrollspy.js | 175 ++ .../assets/javascripts/bootstrap/tab.js | 153 ++ .../assets/javascripts/bootstrap/tooltip.js | 478 ++++ .../assets/javascripts/bootstrap/transition.js | 59 + .../assets/stylesheets/_bootstrap-compass.scss | 7 + .../assets/stylesheets/_bootstrap-mincer.scss | 17 + .../assets/stylesheets/_bootstrap-sprockets.scss | 7 + .../assets/stylesheets/_bootstrap.scss | 50 + .../assets/stylesheets/bootstrap/_alerts.scss | 68 + .../assets/stylesheets/bootstrap/_badges.scss | 63 + .../assets/stylesheets/bootstrap/_breadcrumbs.scss | 26 + .../stylesheets/bootstrap/_button-groups.scss | 243 +++ .../assets/stylesheets/bootstrap/_buttons.scss | 160 ++ .../assets/stylesheets/bootstrap/_carousel.scss | 267 +++ .../assets/stylesheets/bootstrap/_close.scss | 35 + .../assets/stylesheets/bootstrap/_code.scss | 69 + .../bootstrap/_component-animations.scss | 38 + .../assets/stylesheets/bootstrap/_dropdowns.scss | 213 ++ .../assets/stylesheets/bootstrap/_forms.scss | 548 +++++ .../assets/stylesheets/bootstrap/_glyphicons.scss | 234 ++ .../assets/stylesheets/bootstrap/_grid.scss | 84 + .../stylesheets/bootstrap/_input-groups.scss | 166 ++ .../assets/stylesheets/bootstrap/_jumbotron.scss | 49 + .../assets/stylesheets/bootstrap/_labels.scss | 66 + .../assets/stylesheets/bootstrap/_list-group.scss | 124 ++ .../assets/stylesheets/bootstrap/_media.scss | 47 + .../assets/stylesheets/bootstrap/_mixins.scss | 39 + .../assets/stylesheets/bootstrap/_modals.scss | 148 ++ .../assets/stylesheets/bootstrap/_navbar.scss | 662 ++++++ .../assets/stylesheets/bootstrap/_navs.scss | 244 +++ .../assets/stylesheets/bootstrap/_normalize.scss | 427 ++++ .../assets/stylesheets/bootstrap/_pager.scss | 54 + .../assets/stylesheets/bootstrap/_pagination.scss | 88 + .../assets/stylesheets/bootstrap/_panels.scss | 261 +++ .../assets/stylesheets/bootstrap/_popovers.scss | 135 ++ .../assets/stylesheets/bootstrap/_print.scss | 107 + .../stylesheets/bootstrap/_progress-bars.scss | 87 + .../stylesheets/bootstrap/_responsive-embed.scss | 35 + .../bootstrap/_responsive-utilities.scss | 174 ++ .../assets/stylesheets/bootstrap/_scaffolding.scss | 150 ++ .../assets/stylesheets/bootstrap/_tables.scss | 234 ++ .../assets/stylesheets/bootstrap/_theme.scss | 272 +++ .../assets/stylesheets/bootstrap/_thumbnails.scss | 38 + .../assets/stylesheets/bootstrap/_tooltip.scss | 103 + .../assets/stylesheets/bootstrap/_type.scss | 298 +++ .../assets/stylesheets/bootstrap/_utilities.scss | 56 + .../assets/stylesheets/bootstrap/_variables.scss | 864 ++++++++ .../assets/stylesheets/bootstrap/_wells.scss | 29 + .../stylesheets/bootstrap/mixins/_alerts.scss | 14 + .../bootstrap/mixins/_background-variant.scss | 11 + .../bootstrap/mixins/_border-radius.scss | 18 + .../stylesheets/bootstrap/mixins/_buttons.scss | 52 + .../bootstrap/mixins/_center-block.scss | 7 + .../stylesheets/bootstrap/mixins/_clearfix.scss | 22 + .../stylesheets/bootstrap/mixins/_forms.scss | 88 + .../stylesheets/bootstrap/mixins/_gradients.scss | 58 + .../bootstrap/mixins/_grid-framework.scss | 81 + .../assets/stylesheets/bootstrap/mixins/_grid.scss | 122 ++ .../stylesheets/bootstrap/mixins/_hide-text.scss | 21 + .../stylesheets/bootstrap/mixins/_image.scss | 33 + .../stylesheets/bootstrap/mixins/_labels.scss | 12 + .../stylesheets/bootstrap/mixins/_list-group.scss | 31 + .../stylesheets/bootstrap/mixins/_nav-divider.scss | 10 + .../bootstrap/mixins/_nav-vertical-align.scss | 9 + .../stylesheets/bootstrap/mixins/_opacity.scss | 8 + .../stylesheets/bootstrap/mixins/_pagination.scss | 23 + .../stylesheets/bootstrap/mixins/_panels.scss | 24 + .../bootstrap/mixins/_progress-bar.scss | 10 + .../bootstrap/mixins/_reset-filter.scss | 8 + .../stylesheets/bootstrap/mixins/_resize.scss | 6 + .../bootstrap/mixins/_responsive-visibility.scss | 21 + .../assets/stylesheets/bootstrap/mixins/_size.scss | 10 + .../stylesheets/bootstrap/mixins/_tab-focus.scss | 9 + .../stylesheets/bootstrap/mixins/_table-row.scss | 28 + .../bootstrap/mixins/_text-emphasis.scss | 11 + .../bootstrap/mixins/_text-overflow.scss | 8 + .../bootstrap/mixins/_vendor-prefixes.scss | 222 ++ 91 files changed, 12900 insertions(+) create mode 100644 bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot create mode 100644 bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg create mode 100644 bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf create mode 100644 bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/affix.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/alert.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/button.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/carousel.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/collapse.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/dropdown.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/modal.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/popover.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/scrollspy.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/tab.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/tooltip.js create mode 100644 bower_components/bootstrap-sass-official/assets/javascripts/bootstrap/transition.js create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap-compass.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap-mincer.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap-sprockets.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_alerts.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_badges.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_breadcrumbs.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_button-groups.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_buttons.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_carousel.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_close.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_code.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_component-animations.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_dropdowns.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_forms.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_glyphicons.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_grid.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_input-groups.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_jumbotron.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_labels.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_list-group.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_media.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_mixins.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_modals.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_navbar.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_navs.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_normalize.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_pager.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_pagination.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_panels.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_popovers.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_print.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_progress-bars.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_responsive-embed.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_responsive-utilities.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_scaffolding.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_tables.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_theme.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_thumbnails.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_tooltip.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_type.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_utilities.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_variables.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/_wells.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_alerts.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_background-variant.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_border-radius.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_buttons.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_center-block.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_clearfix.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_forms.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_gradients.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_grid-framework.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_grid.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_hide-text.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_image.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_labels.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_list-group.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_nav-divider.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_opacity.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_pagination.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_panels.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_progress-bar.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_reset-filter.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_resize.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_size.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_tab-focus.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_table-row.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_text-overflow.scss create mode 100644 bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss (limited to 'bower_components/bootstrap-sass-official/assets') diff --git a/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 00000000..4a4ca865 Binary files /dev/null and b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.eot differ diff --git a/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..25691af8 --- /dev/null +++ b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 00000000..67fa00bf Binary files /dev/null and b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf differ diff --git a/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff new file mode 100644 index 00000000..8c54182a Binary files /dev/null and b/bower_components/bootstrap-sass-official/assets/fonts/bootstrap/glyphicons-halflings-regular.woff differ diff --git a/bower_components/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js b/bower_components/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js new file mode 100644 index 00000000..1abde496 --- /dev/null +++ b/bower_components/bootstrap-sass-official/assets/javascripts/bootstrap-sprockets.js @@ -0,0 +1,12 @@ +//= require ./bootstrap/affix +//= require ./bootstrap/alert +//= require ./bootstrap/button +//= require ./bootstrap/carousel +//= require ./bootstrap/collapse +//= require ./bootstrap/dropdown +//= require ./bootstrap/tab +//= require ./bootstrap/transition +//= require ./bootstrap/scrollspy +//= require ./bootstrap/modal +//= require ./bootstrap/tooltip +//= require ./bootstrap/popover diff --git a/bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js b/bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js new file mode 100644 index 00000000..485f5f96 --- /dev/null +++ b/bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js @@ -0,0 +1,2304 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.3.1 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = + this.unpin = + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.1' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && colliderTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = $('body').height() + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.1 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.1' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.1 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.1' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.1 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.1' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var delta = direction == 'prev' ? -1 : 1 + var activeIndex = this.getItemIndex(active) + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.1' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true, + trigger: '[data-toggle="collapse"]' + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.1' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('