diff --git a/batiskaf/templates/jinja2/base.jinja b/batiskaf/templates/jinja2/base.jinja
index 6868d42..6cd716c 100644
--- a/batiskaf/templates/jinja2/base.jinja
+++ b/batiskaf/templates/jinja2/base.jinja
@@ -12,11 +12,12 @@
+
-
+
{% block stylesheet %}{% endblock stylesheet %}
@@ -307,17 +308,16 @@
{% block footer_scripts %}
-
-
-
-
-
+
+
+
+
{% endblock footer_scripts %}
{% block jss %}{% endblock jss %}
{% if messages %}
diff --git a/batiskaf/templates/jinja2/product.jinja b/batiskaf/templates/jinja2/product.jinja
index b0dab57..c327036 100644
--- a/batiskaf/templates/jinja2/product.jinja
+++ b/batiskaf/templates/jinja2/product.jinja
@@ -53,7 +53,6 @@
{% endfor %}
-
diff --git a/static/js/_.js b/static/js/_.js
index 6128d6f..46b54b5 100644
--- a/static/js/_.js
+++ b/static/js/_.js
@@ -108,7 +108,7 @@ $(document).ready(function () {
var in_stock = $('.product-variations-selecter option[value=' + value + ']').attr('data-count');
$('.product-detail-price-span').html(price);
if (in_stock > 0) {
- $(".product-count-selecter").selecter('destroy');
+ $(".product-count-selecter").dropdown('destroy');
$('.product-in-stock').show();
$('.product-not-in-stock').hide();
$('.product-count-selecter').html('');
@@ -117,23 +117,26 @@ $(document).ready(function () {
option.attr({'value': i + 1}).text((i + 1) + ' шт.');
$('.product-count-selecter').append(option);
}
- $(".product-count-selecter").selecter({
- callback: selectCount
+ //$(".product-count-selecter")
+ $(".product-count-selecter").dropdown();
+ $(".product-count-selecter").on("change", function () {
+ selectCount($(this).val(), $(this).index());
});
selectCount(1, index);
$('#product-add-to-cart-link').prop('href',
create_cart_add_link($('.product-variations-selecter').val(),
$('.product-count-selecter').val()));
} else {
- $('.product-count-selecter').selecter('destroy');
+ $('.product-count-selecter').dropdown('destroy');
$('.product-in-stock').hide();
$('.product-not-in-stock').show();
}
}
- $(".product-variations-selecter").selecter({
- callback: selectVariation
+ $(".product-variations-selecter").dropdown();
+ $(".product-variations-selecter").on("change", function () {
+ selectVariation($(this).val(), $(this).index());
});
function selectCount(value, index) {
@@ -144,8 +147,9 @@ $(document).ready(function () {
$('.product-count-selecter').val()));
}
- $(".product-count-selecter").selecter({
- callback: selectCount
+ $(".product-count-selecter").dropdown();
+ $(".product-count-selecter").on("change", function () {
+ selectCount($(this).val(), $(this).index());
});
@@ -154,7 +158,7 @@ $(document).ready(function () {
$('.product-not-in-stock').show();
} else {
- $(".product-count-selecter").selecter();
+ $(".product-count-selecter").dropdown();
}
$('ul.messages li').each(function () {
diff --git a/static/js/formstone/css/background.css b/static/js/formstone/css/background.css
new file mode 100644
index 0000000..f064348
--- /dev/null
+++ b/static/js/formstone/css/background.css
@@ -0,0 +1,123 @@
+/*! formstone v0.6.7 [background.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-background-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-background
+ * @type element
+ * @description Base widget class
+ */
+.fs-background {
+ overflow: hidden;
+ position: relative;
+ /**
+ * @class
+ * @name .fs-background-container
+ * @type element
+ * @description Container element
+ */
+ /**
+ * @class
+ * @name .fs-background-media
+ * @type element
+ * @description Media element
+ */
+ /**
+ * @class
+ * @name .fs-background-media.fs-background-animated
+ * @type modifier
+ * @description Indicates animated state
+ */
+ /**
+ * @class
+ * @name .fs-background-media.fs-background-navtive
+ * @type modifier
+ * @description Indicates native support
+ */
+ /**
+ * @class
+ * @name .fs-background-media.fs-background-fixed
+ * @type modifier
+ * @description Indicates fixed positioning
+ */
+ /**
+ * @class
+ * @name .fs-background-embed
+ * @type element
+ * @description Embed/iFrame element
+ */
+ /**
+ * @class
+ * @name .fs-background-embed.fs-background-embed-ready
+ * @type modifier
+ * @description Indicates ready state
+ */
+}
+.fs-background,
+.fs-background-container,
+.fs-background-media {
+ -webkit-transition: none;
+ transition: none;
+}
+.fs-background-container {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ z-index: 0;
+ overflow: hidden;
+}
+.fs-background-media {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ opacity: 0;
+}
+.fs-background-media.fs-background-animated {
+ -webkit-transition: opacity 0.5s linear;
+ transition: opacity 0.5s linear;
+}
+.fs-background-media img,
+.fs-background-media video,
+.fs-background-media iframe {
+ width: 100%;
+ height: 100%;
+ display: block;
+ -webkit-user-drag: none;
+}
+.fs-background-media.fs-background-native,
+.fs-background-media.fs-background-fixed {
+ width: 100%;
+ height: 100%;
+}
+.fs-background-media.fs-background-native img,
+.fs-background-media.fs-background-fixed img {
+ display: none;
+}
+.fs-background-media.fs-background-native {
+ background-position: center;
+ background-size: cover;
+}
+.fs-background-media.fs-background-fixed {
+ background-position: center;
+ background-attachment: fixed;
+}
+.fs-background-embed.fs-background-ready:after {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: '';
+}
+.fs-background-embed.fs-background-ready iframe {
+ z-index: 0;
+}
diff --git a/static/js/formstone/css/carousel.css b/static/js/formstone/css/carousel.css
new file mode 100644
index 0000000..489399c
--- /dev/null
+++ b/static/js/formstone/css/carousel.css
@@ -0,0 +1,286 @@
+/*! formstone v0.6.7 [carousel.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-carousel-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-carousel
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-carousel.fs-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+.fs-carousel {
+ /**
+ * @class
+ * @name .fs-carousel-viewport
+ * @type element
+ * @description Carousel container
+ */
+ /**
+ * @class
+ * @name .fs-carousel-wrapper
+ * @type element
+ * @description Carousel container
+ */
+ /**
+ * @class
+ * @name .fs-carousel-container
+ * @type element
+ * @description Canister container
+ */
+ /**
+ * @class
+ * @name .fs-carousel-canister
+ * @type element
+ * @description Item container
+ */
+ /**
+ * @class
+ * @name .fs-carousel-item
+ * @type element
+ * @description Individual item
+ */
+ /**
+ * @class
+ * @name .fs-carousel-controls
+ * @type element
+ * @description Controls container
+ */
+ /**
+ * @class
+ * @name .fs-carousel-controls.fs-carousel-visible
+ * @type modifier
+ * @description Indicates visible state
+ */
+ /**
+ * @class
+ * @name .fs-carousel-control
+ * @type element
+ * @description Control element
+ */
+ /**
+ * @class
+ * @name .fs-carousel-control.fs-carousel-control_previous
+ * @type modifier
+ * @description Indicates previous control
+ */
+ /**
+ * @class
+ * @name .fs-carousel-control.fs-carousel-control_next
+ * @type modifier
+ * @description Indicates next control
+ */
+ /**
+ * @class
+ * @name .fs-carousel-control.fs-carousel-control_disabled
+ * @type modifier
+ * @description Indicates disbaled state
+ */
+ /**
+ * @class
+ * @name .fs-carousel-pagination
+ * @type element
+ * @description Item element
+ */
+ /**
+ * @class
+ * @name .fs-carousel-pagination.fs-carousel-visible
+ * @type modifier
+ * @description Indicates visible state
+ */
+ /**
+ * @class
+ * @name .fs-carousel-page
+ * @type element
+ * @description Pagiantion item element
+ */
+ /**
+ * @class
+ * @name .fs-carousel-page.fs-carousel-active
+ * @type modifier
+ * @description Indicates active state
+ */
+}
+.fs-carousel.fs-carousel-enabled {
+ width: 100%;
+ position: relative;
+ overflow: hidden;
+}
+.fs-carousel.fs-carousel-enabled:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-carousel,
+.fs-carousel:after,
+.fs-carousel:before,
+.fs-carousel *,
+.fs-carousel *:after,
+.fs-carousel *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-carousel-enabled .fs-carousel-viewport {
+ position: relative;
+ overflow: hidden;
+}
+.fs-carousel-enabled .fs-carousel-viewport:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-carousel-enabled .fs-carousel-wrapper {
+ position: relative;
+ overflow: hidden;
+}
+.fs-carousel-enabled .fs-carousel-wrapper:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-carousel-enabled .fs-carousel-container {
+ position: relative;
+ overflow: hidden;
+}
+.fs-carousel-enabled .fs-carousel-container:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-carousel-enabled .fs-carousel-canister {
+ position: relative;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ margin: 0;
+ overflow: hidden;
+ -webkit-transition: -webkit-transform 0.5s ease;
+ transition: transform 0.5s ease;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+}
+.fs-carousel-enabled .fs-carousel-item {
+ display: block;
+ float: left;
+}
+.fs-carousel-enabled .fs-carousel-item img {
+ -webkit-user-drag: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.fs-carousel-controls {
+ display: none;
+}
+.fs-carousel-enabled .fs-carousel-controls {
+ width: 100%;
+ margin: 0;
+ padding: 0;
+}
+.fs-carousel-enabled .fs-carousel-controls.fs-carousel-visible {
+ display: block;
+}
+.fs-carousel-enabled .fs-carousel-control {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ cursor: pointer;
+ display: block;
+ visibility: hidden;
+ width: 40px;
+ height: 40px;
+ background: #ffffff;
+ border-radius: 100%;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);
+ margin: auto;
+ opacity: 0;
+ overflow: hidden;
+ text-indent: 200%;
+ -webkit-transition: opacity 0.15s ease, visibility 0.15s ease;
+ transition: opacity 0.15s ease, visibility 0.15s ease;
+ white-space: nowrap;
+}
+.fs-carousel-enabled .fs-carousel-control:before {
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ content: '';
+ margin: auto;
+}
+.no-opacity .fs-carousel-enabled .fs-carousel-control {
+ text-indent: -999px;
+}
+.fs-carousel-enabled .fs-carousel-control.fs-carousel-visible {
+ visibility: visible;
+ opacity: 1;
+}
+.fs-carousel-enabled .fs-carousel-control_previous {
+ left: 20px;
+}
+.fs-carousel-enabled .fs-carousel-control_previous:before {
+ border-top: 7px solid transparent;
+ border-bottom: 7px solid transparent;
+ border-right: 10.5px solid #333333;
+ margin-left: 13.7px;
+}
+.fs-carousel-enabled .fs-carousel-control_next {
+ right: 20px;
+}
+.fs-carousel-enabled .fs-carousel-control_next:before {
+ border-top: 7px solid transparent;
+ border-bottom: 7px solid transparent;
+ border-left: 10.5px solid #333333;
+ margin-right: 13.7px;
+}
+.fs-carousel-enabled .fs-carousel-control_disabled {
+ opacity: 0;
+}
+.fs-carousel-pagination {
+ display: none;
+}
+.fs-carousel-enabled .fs-carousel-pagination {
+ width: 100%;
+ margin: 10px 0 0;
+ padding: 0;
+ text-align: center;
+}
+.fs-carousel-enabled .fs-carousel-pagination.fs-carousel-visible {
+ display: block;
+}
+.fs-carousel-enabled .fs-carousel-page {
+ cursor: pointer;
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ background: #333333;
+ border-radius: 100%;
+ margin: 0 3px;
+ opacity: 0.5;
+ overflow: hidden;
+ text-indent: 200%;
+ white-space: nowrap;
+}
+.no-opacity .fs-carousel-enabled .fs-carousel-page {
+ text-indent: -999px;
+}
+.fs-carousel-enabled .fs-carousel-page.fs-carousel-active {
+ opacity: 1;
+}
diff --git a/static/js/formstone/css/checkbox.css b/static/js/formstone/css/checkbox.css
new file mode 100644
index 0000000..45be6fa
--- /dev/null
+++ b/static/js/formstone/css/checkbox.css
@@ -0,0 +1,296 @@
+/*! formstone v0.6.7 [checkbox.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-checkbox-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-checkbox
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-checkbox.fs-checkbox-checked
+ * @type modifier
+ * @description Indicates checked state
+ */
+/**
+ * @class
+ * @name .fs-checkbox.fs-checkbox-radio
+ * @type modifier
+ * @description Indicates radio interface
+ */
+/**
+ * @class
+ * @name .fs-checkbox.fs-checkbox-toggle
+ * @type modifier
+ * @description Indicates toggle interface
+ */
+/**
+ * @class
+ * @name .fs-checkbox.fs-checkbox-focus
+ * @type modifier
+ * @description Indicates focused state
+ */
+/**
+ * @class
+ * @name .fs-checkbox.fs-checkbox-disabled
+ * @type modifier
+ * @description Indicates disabled state
+ */
+.fs-checkbox {
+ /**
+ * @class
+ * @name .fs-checkbox-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-checkbox-label
+ * @type element
+ * @description Label element
+ */
+ /**
+ * @class
+ * @name .fs-checkbox-marker
+ * @type element
+ * @description Marker element
+ */
+ /**
+ * @class
+ * @name .fs-checkbox-flag
+ * @type element
+ * @description Flag element
+ */
+}
+.fs-checkbox.fs-checkbox-enabled {
+ cursor: pointer;
+ margin: 0 0 10px 0;
+ overflow: hidden;
+}
+.fs-checkbox.fs-checkbox-enabled:focus {
+ box-shadow: none;
+ outline: none;
+}
+.fs-checkbox,
+.fs-checkbox:after,
+.fs-checkbox:before,
+.fs-checkbox *,
+.fs-checkbox *:after,
+.fs-checkbox *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-checkbox-element_wrapper {
+ position: relative;
+ border: 0;
+ height: 0;
+ margin: 0;
+ opacity: 0;
+ overflow: hidden;
+ padding: 0;
+ width: 0;
+}
+.fs-checkbox-element {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ pointer-events: none;
+ -webkit-transition: none;
+ transition: none;
+}
+.fs-checkbox-label {
+ color: #666666;
+ cursor: pointer;
+ display: block;
+ font-size: 14px;
+ line-height: 20px;
+ overflow: hidden;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.fs-checkbox-marker {
+ width: 20px;
+ height: 20px;
+ background: #ffffff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ cursor: pointer;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
+}
+.fs-checkbox-flag {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+}
+.fs-checkbox-flag:before {
+ width: 5px;
+ height: 10px;
+ border: 2px solid #999999;
+ border-top: 0;
+ border-left: 0;
+ content: '';
+ display: block;
+ margin: 3px 0 0 6px;
+ -webkit-transition: -webkit-transform 0.15s ease;
+ transition: transform 0.15s ease;
+ -webkit-transform: rotate(45deg) scale(0);
+ -ms-transform: rotate(45deg) scale(0);
+ transform: rotate(45deg) scale(0);
+}
+.fs-checkbox-checked .fs-checkbox-flag:before {
+ -webkit-transform: rotate(45deg) scale(1);
+ -ms-transform: rotate(45deg) scale(1);
+ transform: rotate(45deg) scale(1);
+}
+.no-csstransforms .fs-checkbox-flag:before {
+ width: 100%;
+ height: 100%;
+ content: "\2713";
+ display: none;
+ line-height: 1;
+ text-align: center;
+}
+.no-csstransforms .fs-checkbox-checked .fs-checkbox-flag:before {
+ display: block;
+}
+.fs-checkbox-radio .fs-checkbox-marker {
+ border-radius: 100%;
+}
+.fs-checkbox-radio .fs-checkbox-flag {
+ background: #999999;
+ border: 3px solid #ffffff;
+ border-radius: 100%;
+ -webkit-transform: scale(0);
+ -ms-transform: scale(0);
+ transform: scale(0);
+ -webkit-transition: -webkit-transform 0.15s ease;
+ transition: transform 0.15s ease;
+}
+.fs-checkbox-radio .fs-checkbox-flag:before {
+ display: none;
+}
+.fs-checkbox-radio.fs-checkbox-checked .fs-checkbox-flag {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+}
+.fs-checkbox-radio.fs-checkbox-checked .fs-checkbox-flag:before {
+ display: none;
+}
+.no-csstransforms .fs-checkbox-radio .fs-checkbox-flag:before {
+ display: none;
+}
+.no-csstransforms .fs-checkbox-radio.fs-checkbox-checked .fs-checkbox-flag:before {
+ display: block;
+}
+.fs-checkbox-focus .fs-checkbox-label {
+ color: #333333;
+}
+.fs-checkbox-focus .fs-checkbox-marker {
+ border-color: #999999;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+.fs-checkbox-disabled {
+ cursor: default;
+ opacity: 0.5;
+}
+.fs-checkbox-disabled .fs-checkbox-label {
+ color: #666666;
+ cursor: default;
+}
+.fs-checkbox-disabled .fs-checkbox-marker {
+ border-color: #cccccc;
+ cursor: default;
+}
+.fs-checkbox-toggle {
+ position: relative;
+}
+.fs-checkbox-toggle .fs-checkbox-label {
+ line-height: 40px;
+}
+.fs-checkbox-toggle .fs-checkbox-marker {
+ width: 100px;
+ height: 40px;
+ position: relative;
+ border-radius: 3px;
+}
+.fs-checkbox-toggle .fs-checkbox-marker:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-checkbox-toggle .fs-checkbox-flag {
+ width: 50%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: #999999;
+ border: 2px solid #ffffff;
+ border-radius: 3px;
+ display: block;
+ margin: 0;
+ -webkit-transition: left 0.15s ease;
+ transition: left 0.15s ease;
+}
+.fs-checkbox-toggle .fs-checkbox-flag:before {
+ display: none;
+}
+.fs-checkbox-toggle .fs-checkbox-flag:after {
+ width: 2px;
+ height: 10px;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: #ffffff;
+ box-shadow: 3px 0 0 #ffffff, -3px 0 0 #ffffff;
+ content: '';
+ margin: auto;
+ opacity: 0.75;
+}
+.no-touch .fs-checkbox-toggle:hover .fs-checkbox-flag:after {
+ opacity: 1;
+}
+.fs-checkbox-toggle.fs-checkbox-checked .fs-checkbox-flag {
+ left: 50%;
+}
+.fs-checkbox-toggle.fs-checkbox-checked .fs-checkbox-flag:before {
+ display: none;
+}
+.fs-checkbox-toggle.fs-checkbox-disabled .fs-checkbox-flag:after {
+ display: none;
+}
+.fs-checkbox-toggle .fs-checkbox-state {
+ width: 50%;
+ color: #666666;
+ display: block;
+ font-size: 12px;
+ line-height: 40px;
+ margin: 0;
+ text-align: center;
+ text-transform: uppercase;
+}
+.fs-checkbox-toggle .fs-checkbox-state_on {
+ float: left;
+}
+.fs-checkbox-toggle .fs-checkbox-state_off {
+ float: right;
+}
diff --git a/static/js/formstone/css/dropdown.css b/static/js/formstone/css/dropdown.css
new file mode 100644
index 0000000..e0f17fe
--- /dev/null
+++ b/static/js/formstone/css/dropdown.css
@@ -0,0 +1,357 @@
+/*! formstone v0.6.7 [dropdown.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-dropdown-element
+ * @type element
+ * @description Target element
+ */
+/**
+ * @class
+ * @name .fs-dropdown
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-dropdown.fs-dropdown-multiple
+ * @type modifer
+ * @description Indicates multi-selected element
+ */
+/**
+ * @class
+ * @name .fs-dropdown.fs-dropdown-cover
+ * @type modifer
+ * @description Indicates cover positioning
+ */
+/**
+ * @class
+ * @name .fs-dropdown.fs-dropdown-bottom
+ * @type modifer
+ * @description Indicates bottom positioning
+ */
+/**
+ * @class
+ * @name .fs-dropdown.fs-dropdown-disabled
+ * @type modifer
+ * @description Indicates disabled state
+ */
+/**
+ * @class
+ * @name .fs-dropdown.fs-dropdown-open
+ * @type modifer
+ * @description Indicates open state
+ */
+/**
+ * @class
+ * @name .fs-dropdown.fs-dropdown-focus
+ * @type modifer
+ * @description Indicates focus state
+ */
+.fs-dropdown {
+ position: relative;
+ z-index: 1;
+ display: block;
+ margin: 10px 0;
+ max-width: 100%;
+ /*
+ @media screen and (min-width: 740px) {
+ max-width: 30%;
+ }
+ */
+ /**
+ * @class
+ * @name .fs-dropdown-selected
+ * @type element
+ * @description Handle item
+ */
+ /**
+ * @class
+ * @name .fs-dropdown-options
+ * @type element
+ * @description Options container
+ */
+ /**
+ * @class
+ * @name .fs-dropdown-group
+ * @type element
+ * @description Option group label
+ */
+ /**
+ * @class
+ * @name .fs-dropdown-item
+ * @type element
+ * @description Option item
+ */
+ /*
+ &-options.fs-scrollbar {
+ overflow: hidden;
+ }
+
+ &-options.fs-scrollbar-content {
+ max-height: @fs-dropdown-max-height;
+
+ padding: 0;
+ }
+*/
+}
+.fs-dropdown:focus {
+ box-shadow: none;
+ outline: none;
+}
+.fs-dropdown,
+.fs-dropdown:after,
+.fs-dropdown:before,
+.fs-dropdown *,
+.fs-dropdown *:after,
+.fs-dropdown *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-dropdown-element {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ opacity: 0;
+ z-index: -1;
+}
+.fs-dropdown-element,
+.fs-dropdown-element:focus {
+ outline: none;
+ -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+ -webkit-tap-highlight-color: transparent;
+}
+.no-opacity .fs-dropdown-element {
+ left: -999999px;
+}
+.fs-dropdown-selected {
+ width: 100%;
+ position: relative;
+ background: #ffffff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ color: #222222;
+ cursor: pointer;
+ display: block;
+ font-size: 14px;
+ height: 40px;
+ line-height: 40px;
+ margin: 0;
+ overflow: hidden;
+ padding: 0 40px 0 15px;
+ text-align: left;
+ text-overflow: clip;
+ z-index: 2;
+}
+.fs-dropdown-selected:after {
+ height: 0;
+ width: 0;
+ position: absolute;
+ top: 0;
+ right: 15px;
+ bottom: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 5px solid #cccccc;
+ content: '';
+ display: block;
+ margin: auto 0;
+}
+.no-touch .fs-dropdown-selected:hover {
+ color: #222222;
+}
+.no-touch .fs-dropdown-disabled .fs-dropdown-selected:hover {
+ color: #cccccc;
+}
+.fs-dropdown-options {
+ width: 100%;
+ max-height: 260px;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ border: 1px solid #cccccc !important;
+ border-width: 0 1px 1px !important;
+ border-radius: 0 0 3px 3px;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
+ background-color: #ffffff;
+ display: none;
+ margin: 0;
+ overflow: auto;
+ overflow-x: hidden;
+ padding: 0;
+ z-index: 50;
+}
+.fs-dropdown-options.fs-scrollbar {
+ position: absolute;
+}
+.no-opacity .fs-dropdown-options {
+ width: auto;
+}
+.fs-dropdown-group {
+ border-bottom: 1px solid #cccccc;
+ color: #999999;
+ display: block;
+ font-size: 11px;
+ padding: 10px 15px;
+ text-transform: uppercase;
+}
+.fs-dropdown-item {
+ border: none;
+ width: 100%;
+ background: #ffffff;
+ border-bottom: 1px solid #cccccc;
+ color: #222222;
+ cursor: pointer;
+ display: block;
+ font-size: 14px;
+ margin: 0;
+ height: 40px;
+ line-height: 40px;
+ overflow: hidden;
+ padding: 0 15px;
+ text-align: left;
+ text-decoration: none;
+ text-overflow: ellipsis;
+ /**
+ * @class
+ * @name .fs-dropdown-item.fs-dropdown-item_placeholder
+ * @type modifier
+ * @description Indicates placeholder item
+ */
+ /**
+ * @class
+ * @name .fs-dropdown-item.fs-dropdown-item_selected
+ * @type modifier
+ * @description Indicates selected item
+ */
+ /**
+ * @class
+ * @name .fs-dropdown-item.fs-dropdown-item_disabled
+ * @type modifier
+ * @description Indicates disabled item
+ */
+}
+.fs-dropdown-item_placeholder {
+ display: none;
+}
+.fs-dropdown-item_selected {
+ background: #eeeeee;
+}
+.fs-dropdown-item_disabled {
+ color: #999999;
+ cursor: default;
+}
+.fs-dropdown-item:first-child {
+ border-radius: 0;
+}
+.fs-dropdown-item:last-child {
+ border-bottom: 0;
+ border-radius: 0 0 3px 3px;
+}
+.no-touch .fs-dropdown-item:hover,
+.no-touch .fs-dropdown-item_selected:hover {
+ color: #222222;
+ background-color: #dddddd;
+ border-color: #cccccc;
+}
+.fs-dropdown-item:hover, .fs-dropdown-item_selected:hover {
+ color: #222222;
+ background-color: #dddddd;
+ border-color: #cccccc;
+}
+.fs-dropdown-item_disabled,
+.no-touch .fs-dropdown-item_disabled:hover {
+ color: #cccccc;
+ background-color: #ffffff;
+ border-color: #cccccc;
+}
+.fs-dropdown-open {
+ z-index: 3;
+}
+.fs-dropdown-open .fs-dropdown-options {
+ display: block;
+ border-radius: 0 0 3px 3px;
+}
+.fs-dropdown-open .fs-dropdown-selected {
+ z-index: 51;
+ border-radius: 3px 3px 0 0;
+}
+.fs-dropdown-open .fs-dropdown-selected,
+.fs-dropdown-focus .fs-dropdown-selected {
+ background-color: #ffffff;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+.fs-dropdown-cover.fs-dropdown-open .fs-dropdown-selected {
+ z-index: 49;
+}
+.fs-dropdown-cover .fs-dropdown-options {
+ top: 0;
+ border-radius: 3px;
+ border-width: 1px;
+}
+.fs-dropdown-cover .fs-dropdown-item:first-child {
+ border-radius: 3px 3px 0 0;
+}
+.fs-dropdown-bottom .fs-dropdown-options {
+ top: auto;
+ bottom: 100%;
+ border-width: 1px 1px 0;
+}
+.fs-dropdown-bottom .fs-dropdown-item:last-child {
+ border: none;
+}
+.fs-dropdown-bottom.fs-dropdown-open .fs-dropdown-selected {
+ border-radius: 0 0 3px 3px;
+}
+.fs-dropdown-bottom.fs-dropdown-open .fs-dropdown-options {
+ border-radius: 3px 3px 0 0;
+}
+.fs-dropdown-bottom.fs-dropdown-cover .fs-dropdown-options {
+ top: auto;
+ bottom: 0;
+}
+.fs-dropdown-bottom.fs-dropdown-cover.fs-dropdown-open .fs-dropdown-selected {
+ border-radius: 3px;
+}
+.fs-dropdown-bottom.fs-dropdown-cover.fs-dropdown-open .fs-dropdown-options {
+ border-radius: 3px;
+}
+.fs-dropdown-multiple .fs-dropdown-options {
+ width: 100%;
+ position: static;
+ border-radius: 3px;
+ border-width: 1px;
+ box-shadow: none;
+ display: block;
+}
+.fs-dropdown-disabled .fs-dropdown-selected {
+ background: #ffffff;
+ border-color: #cccccc;
+ color: #cccccc;
+ cursor: default;
+}
+.fs-dropdown-disabled .fs-dropdown-options {
+ background: #ffffff;
+ border-color: #cccccc;
+}
+.fs-dropdown-disabled .fs-dropdown-group,
+.fs-dropdown-disabled .fs-dropdown-item {
+ border-color: #cccccc;
+ color: #cccccc;
+ cursor: default;
+}
+.fs-dropdown-disabled .fs-dropdown-item,
+.no-touch .fs-dropdown-disabled .fs-dropdown-item:hover {
+ color: #cccccc;
+ background-color: #ffffff;
+}
+.fs-dropdown-disabled .fs-dropdown-item_selected,
+.no-touch .fs-dropdown-disabled .fs-dropdown-item_selected:hover {
+ background: #fafafa;
+}
diff --git a/static/js/formstone/css/grid.css b/static/js/formstone/css/grid.css
new file mode 100644
index 0000000..6f9b5c4
--- /dev/null
+++ b/static/js/formstone/css/grid.css
@@ -0,0 +1,863 @@
+/*! formstone v0.6.7 [grid.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @grid
+ * @name Grid
+ * @description A responsive CSS grid.
+ */
+.fs_grid_row,
+.fs-grid .fs-row {
+ width: 300px;
+ margin-left: auto;
+ margin-right: auto;
+}
+@media screen and (min-width: 500px) {
+ .fs_grid_row,
+ .fs-grid .fs-row {
+ width: 480px;
+ }
+}
+@media screen and (min-width: 740px) {
+ .fs_grid_row,
+ .fs-grid .fs-row {
+ width: 720px;
+ }
+}
+@media screen and (min-width: 980px) {
+ .fs_grid_row,
+ .fs-grid .fs-row {
+ width: 960px;
+ }
+}
+@media screen and (min-width: 1220px) {
+ .fs_grid_row,
+ .fs-grid .fs-row {
+ width: 1200px;
+ }
+}
+.fs_grid_row:after,
+.fs-grid .fs-row:after {
+ height: 0;
+ clear: both;
+ content: ".";
+ display: block;
+ line-height: 0;
+ visibility: hidden;
+}
+.fs_grid_row_fluid,
+.fs-grid-fluid .fs-row {
+ width: 96%;
+ width: -webkit-calc(100% - 40px);
+ width: calc(100% - 40px);
+}
+@media screen and (max-width: 739px) {
+ .fs_grid_row_fluid_sm,
+ .fs-grid-sm-fluid .fs-row {
+ width: 96%;
+ width: -webkit-calc(100% - 40px);
+ width: calc(100% - 40px);
+ }
+}
+.fs_grid_row_row,
+.fs-grid .fs-row .fs-row {
+ width: 102.08333333%;
+ margin-left: -1.04166667%;
+ margin-right: -1.04166667%;
+}
+.fs_grid_row_row_contained,
+.fs-grid .fs-row [class*="fs-cell"][class*="-contained"] .fs-row {
+ width: 100%;
+ margin-left: 0;
+ margin-right: 0;
+}
+.fs_grid_cell,
+.fs-grid .fs-row [class*="fs-cell"] {
+ width: 97.91666667%;
+ float: left;
+ margin-left: 1.04166667%;
+ margin-right: 1.04166667%;
+}
+.fs_grid_cell_centered,
+.fs-grid .fs-row [class*="fs-cell"][class*="-centered"] {
+ float: none;
+ margin-left: auto;
+ margin-right: auto;
+}
+.fs_grid_cell_padded,
+.fs-grid .fs-row [class*="fs-cell"][class*="-padded"] {
+ box-sizing: content-box;
+ margin-left: 0;
+ margin-right: 0;
+ padding-left: 1.04166667%;
+ padding-right: 1.04166667%;
+}
+.fs_grid_cell_contained,
+.fs-grid .fs-row [class*="fs-cell"][class*="-contained"] {
+ margin-left: 0;
+ margin-right: 0;
+}
+.fs_grid_cell_right,
+.fs-grid .fs-row [class*="fs-cell"][class*="-right"] {
+ float: right;
+}
+* {
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+.fs-grid .fs-row .fs-all-fifth {
+ width: 17.91666667%;
+}
+.fs-grid .fs-row .fs-all-fourth {
+ width: 22.91666667%;
+}
+.fs-grid .fs-row .fs-all-third {
+ width: 31.25%;
+}
+.fs-grid .fs-row .fs-all-half {
+ width: 47.91666667%;
+}
+.fs-grid .fs-row .fs-all-full {
+ width: 97.91666667%;
+}
+.fs-grid .fs-row .fs-all-push-fifth {
+ margin-left: 21.04166667%;
+}
+.fs-grid .fs-row .fs-all-push-fourth {
+ margin-left: 26.04166667%;
+}
+.fs-grid .fs-row .fs-all-push-third {
+ margin-left: 34.375%;
+}
+.fs-grid .fs-row .fs-all-push-half {
+ margin-left: 51.04166667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-fifth {
+ width: 20%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-fourth {
+ width: 25%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-third {
+ width: 33.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-half {
+ width: 50%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-full {
+ width: 100%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-push-fifth {
+ margin-left: 20%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-push-fourth {
+ margin-left: 25%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-push-third {
+ margin-left: 33.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-all-push-half {
+ margin-left: 50%;
+}
+.fs-grid .fs-row .fs-all-hide {
+ display: none;
+}
+@media screen and (max-width: 739px) {
+ .fs-grid .fs-row .fs-sm-1 {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-sm-2 {
+ width: 64.58333333%;
+ }
+ .fs-grid .fs-row .fs-sm-3 {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-sm-push-1 {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-sm-push-2 {
+ margin-left: 67.70833333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-1 {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-2 {
+ width: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-3 {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-push-1 {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-push-2 {
+ margin-left: 66.66666667%;
+ }
+ .fs-grid .fs-row .fs-sm-fifth {
+ width: 17.91666667%;
+ }
+ .fs-grid .fs-row .fs-sm-fourth {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-sm-third {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-sm-half {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-sm-full {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-sm-push-fifth {
+ margin-left: 21.04166667%;
+ }
+ .fs-grid .fs-row .fs-sm-push-fourth {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-sm-push-third {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-sm-push-half {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-fifth {
+ width: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-fourth {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-third {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-half {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-full {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-push-fifth {
+ margin-left: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-push-fourth {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-push-third {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-sm-push-half {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row .fs-sm-hide {
+ display: none;
+ }
+}
+@media screen and (max-width: 499px) {
+ .fs-grid .fs-row .fs-xs-1 {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-xs-2 {
+ width: 64.58333333%;
+ }
+ .fs-grid .fs-row .fs-xs-3 {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-xs-push-1 {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-xs-push-2 {
+ margin-left: 67.70833333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-1 {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-2 {
+ width: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-3 {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-push-1 {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-push-2 {
+ margin-left: 66.66666667%;
+ }
+ .fs-grid .fs-row .fs-xs-fifth {
+ width: 17.91666667%;
+ }
+ .fs-grid .fs-row .fs-xs-fourth {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-xs-third {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-xs-half {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-xs-full {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-xs-push-fifth {
+ margin-left: 21.04166667%;
+ }
+ .fs-grid .fs-row .fs-xs-push-fourth {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-xs-push-third {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-xs-push-half {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-fifth {
+ width: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-fourth {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-third {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-half {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-full {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-push-fifth {
+ margin-left: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-push-fourth {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-push-third {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xs-push-half {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row .fs-xs-hide {
+ display: none;
+ }
+}
+@media screen and (min-width: 740px) and (max-width: 979px) {
+ .fs-grid .fs-row .fs-md-1 {
+ width: 14.58333333%;
+ }
+ .fs-grid .fs-row .fs-md-2 {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-md-3 {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-md-4 {
+ width: 64.58333333%;
+ }
+ .fs-grid .fs-row .fs-md-5 {
+ width: 81.25%;
+ }
+ .fs-grid .fs-row .fs-md-6 {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-md-push-1 {
+ margin-left: 17.70833333%;
+ }
+ .fs-grid .fs-row .fs-md-push-2 {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-md-push-3 {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row .fs-md-push-4 {
+ margin-left: 67.70833333%;
+ }
+ .fs-grid .fs-row .fs-md-push-5 {
+ margin-left: 84.375%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-1 {
+ width: 16.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-2 {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-3 {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-4 {
+ width: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-5 {
+ width: 83.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-6 {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-1 {
+ margin-left: 16.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-2 {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-3 {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-4 {
+ margin-left: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-5 {
+ margin-left: 83.33333333%;
+ }
+ .fs-grid .fs-row .fs-md-fifth {
+ width: 17.91666667%;
+ }
+ .fs-grid .fs-row .fs-md-fourth {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-md-third {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-md-half {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-md-full {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-md-push-fifth {
+ margin-left: 21.04166667%;
+ }
+ .fs-grid .fs-row .fs-md-push-fourth {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-md-push-third {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-md-push-half {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-fifth {
+ width: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-fourth {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-third {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-half {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-full {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-fifth {
+ margin-left: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-fourth {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-third {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-md-push-half {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row .fs-md-hide {
+ display: none;
+ }
+}
+@media screen and (min-width: 980px) {
+ .fs-grid .fs-row .fs-lg-1 {
+ width: 6.25%;
+ }
+ .fs-grid .fs-row .fs-lg-2 {
+ width: 14.58333333%;
+ }
+ .fs-grid .fs-row .fs-lg-3 {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-4 {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-lg-5 {
+ width: 39.58333333%;
+ }
+ .fs-grid .fs-row .fs-lg-6 {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-7 {
+ width: 56.25%;
+ }
+ .fs-grid .fs-row .fs-lg-8 {
+ width: 64.58333333%;
+ }
+ .fs-grid .fs-row .fs-lg-9 {
+ width: 72.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-10 {
+ width: 81.25%;
+ }
+ .fs-grid .fs-row .fs-lg-11 {
+ width: 89.58333333%;
+ }
+ .fs-grid .fs-row .fs-lg-12 {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-1 {
+ margin-left: 9.375%;
+ }
+ .fs-grid .fs-row .fs-lg-push-2 {
+ margin-left: 17.70833333%;
+ }
+ .fs-grid .fs-row .fs-lg-push-3 {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-4 {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-lg-push-5 {
+ margin-left: 42.70833333%;
+ }
+ .fs-grid .fs-row .fs-lg-push-6 {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-7 {
+ margin-left: 59.375%;
+ }
+ .fs-grid .fs-row .fs-lg-push-8 {
+ margin-left: 67.70833333%;
+ }
+ .fs-grid .fs-row .fs-lg-push-9 {
+ margin-left: 76.04166667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-10 {
+ margin-left: 84.375%;
+ }
+ .fs-grid .fs-row .fs-lg-push-11 {
+ margin-left: 92.70833333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-1 {
+ width: 8.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-2 {
+ width: 16.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-3 {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-4 {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-5 {
+ width: 41.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-6 {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-7 {
+ width: 58.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-8 {
+ width: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-9 {
+ width: 75%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-10 {
+ width: 83.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-11 {
+ width: 91.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-12 {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-1 {
+ margin-left: 8.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-2 {
+ margin-left: 16.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-3 {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-4 {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-5 {
+ margin-left: 41.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-6 {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-7 {
+ margin-left: 58.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-8 {
+ margin-left: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-9 {
+ margin-left: 75%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-10 {
+ margin-left: 83.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-11 {
+ margin-left: 91.66666667%;
+ }
+ .fs-grid .fs-row .fs-lg-fifth {
+ width: 17.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-fourth {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-third {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-lg-half {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-full {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-fifth {
+ margin-left: 21.04166667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-fourth {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-lg-push-third {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-lg-push-half {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-fifth {
+ width: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-fourth {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-third {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-half {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-full {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-fifth {
+ margin-left: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-fourth {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-third {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-lg-push-half {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row .fs-lg-hide {
+ display: none;
+ }
+}
+@media screen and (min-width: 1220px) {
+ .fs-grid .fs-row .fs-xl-1 {
+ width: 6.25%;
+ }
+ .fs-grid .fs-row .fs-xl-2 {
+ width: 14.58333333%;
+ }
+ .fs-grid .fs-row .fs-xl-3 {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-4 {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-xl-5 {
+ width: 39.58333333%;
+ }
+ .fs-grid .fs-row .fs-xl-6 {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-7 {
+ width: 56.25%;
+ }
+ .fs-grid .fs-row .fs-xl-8 {
+ width: 64.58333333%;
+ }
+ .fs-grid .fs-row .fs-xl-9 {
+ width: 72.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-10 {
+ width: 81.25%;
+ }
+ .fs-grid .fs-row .fs-xl-11 {
+ width: 89.58333333%;
+ }
+ .fs-grid .fs-row .fs-xl-12 {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-1 {
+ margin-left: 9.375%;
+ }
+ .fs-grid .fs-row .fs-xl-push-2 {
+ margin-left: 17.70833333%;
+ }
+ .fs-grid .fs-row .fs-xl-push-3 {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-4 {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-xl-push-5 {
+ margin-left: 42.70833333%;
+ }
+ .fs-grid .fs-row .fs-xl-push-6 {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-7 {
+ margin-left: 59.375%;
+ }
+ .fs-grid .fs-row .fs-xl-push-8 {
+ margin-left: 67.70833333%;
+ }
+ .fs-grid .fs-row .fs-xl-push-9 {
+ margin-left: 76.04166667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-10 {
+ margin-left: 84.375%;
+ }
+ .fs-grid .fs-row .fs-xl-push-11 {
+ margin-left: 92.70833333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-1 {
+ width: 8.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-2 {
+ width: 16.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-3 {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-4 {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-5 {
+ width: 41.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-6 {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-7 {
+ width: 58.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-8 {
+ width: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-9 {
+ width: 75%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-10 {
+ width: 83.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-11 {
+ width: 91.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-12 {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-1 {
+ margin-left: 8.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-2 {
+ margin-left: 16.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-3 {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-4 {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-5 {
+ margin-left: 41.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-6 {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-7 {
+ margin-left: 58.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-8 {
+ margin-left: 66.66666667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-9 {
+ margin-left: 75%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-10 {
+ margin-left: 83.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-11 {
+ margin-left: 91.66666667%;
+ }
+ .fs-grid .fs-row .fs-xl-fifth {
+ width: 17.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-fourth {
+ width: 22.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-third {
+ width: 31.25%;
+ }
+ .fs-grid .fs-row .fs-xl-half {
+ width: 47.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-full {
+ width: 97.91666667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-fifth {
+ margin-left: 21.04166667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-fourth {
+ margin-left: 26.04166667%;
+ }
+ .fs-grid .fs-row .fs-xl-push-third {
+ margin-left: 34.375%;
+ }
+ .fs-grid .fs-row .fs-xl-push-half {
+ margin-left: 51.04166667%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-fifth {
+ width: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-fourth {
+ width: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-third {
+ width: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-half {
+ width: 50%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-full {
+ width: 100%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-fifth {
+ margin-left: 20%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-fourth {
+ margin-left: 25%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-third {
+ margin-left: 33.33333333%;
+ }
+ .fs-grid .fs-row [class*="-contained"].fs-xl-push-half {
+ margin-left: 50%;
+ }
+ .fs-grid .fs-row .fs-xl-hide {
+ display: none;
+ }
+}
diff --git a/static/js/formstone/css/grid.ie.css b/static/js/formstone/css/grid.ie.css
new file mode 100644
index 0000000..8df4e78
--- /dev/null
+++ b/static/js/formstone/css/grid.ie.css
@@ -0,0 +1,288 @@
+/*! formstone v0.6.7 [grid.ie.css] 2015-06-13 | MIT License | formstone.it */
+
+.fs_grid_row {
+ width: 300px;
+ margin-left: auto;
+ margin-right: auto;
+}
+@media screen and (min-width: 500px) {
+ .fs_grid_row {
+ width: 480px;
+ }
+}
+@media screen and (min-width: 740px) {
+ .fs_grid_row {
+ width: 720px;
+ }
+}
+@media screen and (min-width: 980px) {
+ .fs_grid_row {
+ width: 960px;
+ }
+}
+@media screen and (min-width: 1220px) {
+ .fs_grid_row {
+ width: 1200px;
+ }
+}
+.fs_grid_row:after {
+ height: 0;
+ clear: both;
+ content: ".";
+ display: block;
+ line-height: 0;
+ visibility: hidden;
+}
+.fs_grid_row_fluid {
+ width: 96%;
+ width: -webkit-calc(100% - 40px);
+ width: calc(100% - 40px);
+}
+@media screen and (max-width: 739px) {
+ .fs_grid_row_fluid_sm {
+ width: 96%;
+ width: -webkit-calc(100% - 40px);
+ width: calc(100% - 40px);
+ }
+}
+.fs_grid_row_row {
+ width: 102.08333333%;
+ margin-left: -1.04166667%;
+ margin-right: -1.04166667%;
+}
+.fs_grid_row_row_contained {
+ width: 100%;
+ margin-left: 0;
+ margin-right: 0;
+}
+.fs_grid_cell {
+ width: 97.91666667%;
+ float: left;
+ margin-left: 1.04166667%;
+ margin-right: 1.04166667%;
+}
+.fs_grid_cell_centered {
+ float: none;
+ margin-left: auto;
+ margin-right: auto;
+}
+.fs_grid_cell_padded {
+ box-sizing: content-box;
+ margin-left: 0;
+ margin-right: 0;
+ padding-left: 1.04166667%;
+ padding-right: 1.04166667%;
+}
+.fs_grid_cell_contained {
+ margin-left: 0;
+ margin-right: 0;
+}
+.fs_grid_cell_right {
+ float: right;
+}
+*,
+*:before,
+*:after {
+ behavior: url(boxsizing.htc);
+}
+.fs-grid .fs-row {
+ width: 960px;
+}
+.fs-grid .fs-row .fs-lg-1 {
+ width: 6.25%;
+}
+.fs-grid .fs-row .fs-lg-2 {
+ width: 14.58333333%;
+}
+.fs-grid .fs-row .fs-lg-3 {
+ width: 22.91666667%;
+}
+.fs-grid .fs-row .fs-lg-4 {
+ width: 31.25%;
+}
+.fs-grid .fs-row .fs-lg-5 {
+ width: 39.58333333%;
+}
+.fs-grid .fs-row .fs-lg-6 {
+ width: 47.91666667%;
+}
+.fs-grid .fs-row .fs-lg-7 {
+ width: 56.25%;
+}
+.fs-grid .fs-row .fs-lg-8 {
+ width: 64.58333333%;
+}
+.fs-grid .fs-row .fs-lg-9 {
+ width: 72.91666667%;
+}
+.fs-grid .fs-row .fs-lg-10 {
+ width: 81.25%;
+}
+.fs-grid .fs-row .fs-lg-11 {
+ width: 89.58333333%;
+}
+.fs-grid .fs-row .fs-lg-12 {
+ width: 97.91666667%;
+}
+.fs-grid .fs-row .fs-lg-push-1 {
+ margin-left: 9.375%;
+}
+.fs-grid .fs-row .fs-lg-push-2 {
+ margin-left: 17.70833333%;
+}
+.fs-grid .fs-row .fs-lg-push-3 {
+ margin-left: 26.04166667%;
+}
+.fs-grid .fs-row .fs-lg-push-4 {
+ margin-left: 34.375%;
+}
+.fs-grid .fs-row .fs-lg-push-5 {
+ margin-left: 42.70833333%;
+}
+.fs-grid .fs-row .fs-lg-push-6 {
+ margin-left: 51.04166667%;
+}
+.fs-grid .fs-row .fs-lg-push-7 {
+ margin-left: 59.375%;
+}
+.fs-grid .fs-row .fs-lg-push-8 {
+ margin-left: 67.70833333%;
+}
+.fs-grid .fs-row .fs-lg-push-9 {
+ margin-left: 76.04166667%;
+}
+.fs-grid .fs-row .fs-lg-push-10 {
+ margin-left: 84.375%;
+}
+.fs-grid .fs-row .fs-lg-push-11 {
+ margin-left: 92.70833333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-1 {
+ width: 8.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-2 {
+ width: 16.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-3 {
+ width: 25%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-4 {
+ width: 33.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-5 {
+ width: 41.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-6 {
+ width: 50%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-7 {
+ width: 58.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-8 {
+ width: 66.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-9 {
+ width: 75%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-10 {
+ width: 83.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-11 {
+ width: 91.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-12 {
+ width: 100%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-1 {
+ margin-left: 8.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-2 {
+ margin-left: 16.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-3 {
+ margin-left: 25%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-4 {
+ margin-left: 33.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-5 {
+ margin-left: 41.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-6 {
+ margin-left: 50%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-7 {
+ margin-left: 58.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-8 {
+ margin-left: 66.66666667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-9 {
+ margin-left: 75%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-10 {
+ margin-left: 83.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-11 {
+ margin-left: 91.66666667%;
+}
+.fs-grid .fs-row .fs-lg-fifth {
+ width: 17.91666667%;
+}
+.fs-grid .fs-row .fs-lg-fourth {
+ width: 22.91666667%;
+}
+.fs-grid .fs-row .fs-lg-third {
+ width: 31.25%;
+}
+.fs-grid .fs-row .fs-lg-half {
+ width: 47.91666667%;
+}
+.fs-grid .fs-row .fs-lg-full {
+ width: 97.91666667%;
+}
+.fs-grid .fs-row .fs-lg-push-fifth {
+ margin-left: 21.04166667%;
+}
+.fs-grid .fs-row .fs-lg-push-fourth {
+ margin-left: 26.04166667%;
+}
+.fs-grid .fs-row .fs-lg-push-third {
+ margin-left: 34.375%;
+}
+.fs-grid .fs-row .fs-lg-push-half {
+ margin-left: 51.04166667%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-fifth {
+ width: 20%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-fourth {
+ width: 25%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-third {
+ width: 33.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-half {
+ width: 50%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-full {
+ width: 100%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-fifth {
+ margin-left: 20%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-fourth {
+ margin-left: 25%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-third {
+ margin-left: 33.33333333%;
+}
+.fs-grid .fs-row [class*="-contained"].fs-lg-push-half {
+ margin-left: 50%;
+}
+.fs-grid .fs-row .fs-lg-hide {
+ display: none;
+}
+.fs-grid .fs-row .fs-cell.-padded {
+ behavior: none;
+}
diff --git a/static/js/formstone/css/lightbox.css b/static/js/formstone/css/lightbox.css
new file mode 100644
index 0000000..1a0272d
--- /dev/null
+++ b/static/js/formstone/css/lightbox.css
@@ -0,0 +1,663 @@
+/*! formstone v0.6.7 [lightbox.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-lightbox-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-lightbox
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-open
+ * @type modifier
+ * @description Indicates open state
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-loading
+ * @type modifier
+ * @description Indicates loading state
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-animating
+ * @type modifier
+ * @description Indicates animating state
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-mobile
+ * @type modifier
+ * @description Indicates mobile display
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-fixed
+ * @type modifier
+ * @description Indicates fixed positioning
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-inline
+ * @type modifier
+ * @description Indicates inline content
+ */
+/**
+ * @class
+ * @name .fs-lightbox.fs-lightbox-iframed
+ * @type modifier
+ * @description Indicates iFrame content
+ */
+.fs-lightbox {
+ width: 200px;
+ height: 200px;
+ position: absolute;
+ right: 0;
+ left: 0;
+ z-index: 101;
+ background: #ffffff;
+ border-radius: 3px;
+ box-shadow: 0 0 25px #000000;
+ opacity: 0;
+ margin: 0 auto;
+ padding: 10px;
+ -webkit-transform: translateZ(0);
+ /**
+ * @class
+ * @name .fs-lightbox-overlay
+ * @type element
+ * @description Overlay element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-close
+ * @type element
+ * @description Close element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-loading_icon
+ * @type element
+ * @description Loading icon element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-container
+ * @type element
+ * @description Container element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-content
+ * @type element
+ * @description Content element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-image
+ * @type element
+ * @description Image element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-video
+ * @type element
+ * @description Video element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-iframe
+ * @type element
+ * @description iFrame element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-tools
+ * @type element
+ * @description Tools element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-meta
+ * @type element
+ * @description Meta info element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-controls
+ * @type element
+ * @description Controls container element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-control
+ * @type element
+ * @description Control element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-control.fs-lightbox-control_previous
+ * @type modifier
+ * @description Indicates previous control
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-control.fs-lightbox-control_next
+ * @type modifier
+ * @description Indicates next control
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-control.fs-lightbox-control_disabled
+ * @type modifier
+ * @description Indicates disbaled state
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-position
+ * @type element
+ * @description Position element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-position_current
+ * @type element
+ * @description Current position element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-position_total
+ * @type element
+ * @description Total position element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-caption
+ * @type element
+ * @description Caption element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-error
+ * @type element
+ * @description Error message element
+ */
+ /**
+ * @class
+ * @name .fs-lightbox-lock
+ * @type modifier
+ * @description Indicates locked state; Applied to body element
+ */
+}
+.fs-lightbox,
+.fs-lightbox * {
+ box-sizing: border-box;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-lightbox-fixed {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+}
+.fs-lightbox-inline {
+ padding: 30px;
+}
+.fs-lightbox-animating {
+ -webkit-transition: height 0.25s ease, width 0.25s ease, opacity 0.25s linear, top 0.25s ease;
+ transition: height 0.25s ease, width 0.25s ease, opacity 0.25s linear, top 0.25s ease;
+}
+.fs-lightbox-animating .fs-lightbox-container {
+ -webkit-transition: opacity 0.25s linear 0.25s;
+ transition: opacity 0.25s linear 0.25s;
+}
+.fs-lightbox-overlay {
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 100;
+ background: #000000;
+ opacity: 0;
+ -webkit-transition: opacity 0.25s linear;
+ transition: opacity 0.25s linear;
+}
+.fs-lightbox-open {
+ opacity: 1;
+}
+.fs-lightbox-overlay.fs-lightbox-open {
+ opacity: 0.75;
+}
+.fs-lightbox-close {
+ border: none;
+ width: 30px;
+ height: 30px;
+ position: absolute;
+ top: -7.5px;
+ right: -7.5px;
+ z-index: 105;
+ background: #ffffff;
+ border-radius: 100%;
+ cursor: pointer;
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ text-indent: 200%;
+ white-space: nowrap;
+}
+.fs-lightbox-close:focus {
+ outline: none;
+}
+.fs-lightbox-close:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ color: #333333;
+ content: "\00d7";
+ display: block;
+ font-family: "Helvetica", Arial, sans-serif;
+ font-size: 22px;
+ font-weight: 700;
+ line-height: 30px;
+ margin: auto;
+ text-align: center;
+ text-indent: 0;
+ -webkit-transition: color 0.15s linear;
+ transition: color 0.15s linear;
+}
+.no-opacity .fs-lightbox-close {
+ text-indent: -999px;
+}
+.fs-lightbox-loading_icon {
+ width: 50px;
+ height: 50px;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 105;
+ display: block;
+ margin: auto;
+ opacity: 0;
+ -webkit-transition: opacity 0.25s linear;
+ transition: opacity 0.25s linear;
+}
+.fs-lightbox-loading_icon:before,
+.fs-lightbox-loading_icon:after {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ border-radius: 110%;
+ content: '';
+ display: block;
+}
+.fs-lightbox-loading_icon:before {
+ border: 5px solid rgba(51, 51, 51, 0.25);
+}
+.fs-lightbox-loading_icon:after {
+ -webkit-animation: fs-lightbox-loading-spin 0.75s linear infinite;
+ animation: fs-lightbox-loading-spin 0.75s linear infinite;
+ border: 5px solid transparent;
+ border-top-color: #333333;
+}
+@-webkit-keyframes fs-lightbox-loading-spin {
+ from {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@keyframes fs-lightbox-loading-spin {
+ from {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+.fs-lightbox-container {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ z-index: 103;
+ background: #ffffff;
+ overflow: hidden;
+}
+.fs-lightbox-container:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-lightbox-content {
+ width: 100%;
+ background: #ffffff;
+ opacity: 1;
+ overflow: hidden;
+ padding: 0;
+}
+.fs-lightbox-content:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-lightbox-inline .fs-lightbox-content {
+ width: auto;
+}
+.fs-lightbox-iframed .fs-lightbox-content {
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+.fs-lightbox-image {
+ float: left;
+}
+.fs-lightbox-video {
+ width: 100%;
+ height: 100%;
+}
+.fs-lightbox-iframe {
+ width: 100%;
+ height: 100%;
+ border: none;
+ float: left;
+ overflow: auto;
+}
+.fs-lightbox-meta {
+ clear: both;
+ padding: 10px 10px 0;
+}
+.fs-lightbox-control {
+ border: none;
+ width: 40px;
+ height: 40px;
+ position: absolute;
+ top: 0;
+ z-index: 105;
+ background: #ffffff;
+ border-radius: 100%;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);
+ cursor: pointer;
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+ opacity: 1;
+ overflow: hidden;
+ text-indent: 200%;
+ -webkit-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+ white-space: nowrap;
+}
+.fs-lightbox-control:focus {
+ outline: none;
+}
+.fs-lightbox-control:before {
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ content: '';
+ margin: auto;
+}
+.no-opacity .fs-lightbox-control {
+ text-indent: -999px;
+}
+.fs-lightbox-control_previous {
+ left: 20px;
+}
+.fs-lightbox-control_previous:before {
+ border-top: 8px solid transparent;
+ border-bottom: 8px solid transparent;
+ border-right: 10.4px solid #333333;
+ margin-left: 14px;
+}
+.fs-lightbox-control_next {
+ right: 20px;
+}
+.fs-lightbox-control_next:before {
+ border-top: 8px solid transparent;
+ border-bottom: 8px solid transparent;
+ border-left: 10.4px solid #333333;
+ margin-right: 14px;
+}
+.fs-lightbox-control_disabled {
+ opacity: 0;
+}
+.no-touch .fs-lightbox .fs-lightbox-control {
+ opacity: 0;
+}
+.no-touch .fs-lightbox:hover .fs-lightbox-control {
+ opacity: 1;
+}
+.no-touch .fs-lightbox .fs-lightbox-control_disabled,
+.no-touch .fs-lightbox:hover .fs-lightbox-control_disabled {
+ opacity: 0;
+ cursor: default;
+}
+.fs-lightbox-position {
+ color: #999999;
+ font-size: 12px;
+ margin: 5px 0;
+ padding: 0;
+}
+.fs-lightbox-caption:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-lightbox-caption p {
+ color: #666666;
+ font-size: 14px;
+ margin: 5px 0;
+ padding: 0;
+}
+.fs-lightbox-caption_toggle {
+ display: none;
+}
+.fs-lightbox-error {
+ width: 250px;
+}
+.fs-lightbox-error p {
+ color: #990000;
+ font-size: 14px;
+ margin: 0;
+ padding: 25px;
+ text-align: center;
+ text-transform: uppercase;
+}
+.fs-lightbox-loading .fs-lightbox-container {
+ opacity: 0;
+ -webkit-transition: opacity 0.25s linear;
+ transition: opacity 0.25s linear;
+}
+.fs-lightbox-loading .fs-lightbox-loading_icon {
+ opacity: 1;
+}
+.fs-lightbox-mobile {
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: #111111;
+ border-radius: 0;
+ padding: 40px 0 0;
+}
+.fs-lightbox-mobile .fs-lightbox-close {
+ height: 40px;
+ width: 40px;
+ top: 0;
+ right: 0;
+ background: #111111;
+ border-radius: 0;
+}
+.fs-lightbox-mobile .fs-lightbox-close:before {
+ color: #cccccc;
+ font-size: 28px;
+ font-weight: 700;
+ line-height: 40px;
+}
+.fs-lightbox-mobile .fs-lightbox-loading_icon:before {
+ border-color: rgba(153, 153, 153, 0.25);
+}
+.fs-lightbox-mobile .fs-lightbox-loading_icon:after {
+ border-top-color: #999999;
+}
+.fs-lightbox-mobile .fs-lightbox-container {
+ position: static;
+ background: #111111;
+}
+.fs-lightbox-mobile .fs-lightbox-content {
+ background-color: #111111;
+ padding: 0 15px;
+}
+.fs-lightbox-mobile .fs-lightbox-tools {
+ width: 100%;
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: #111111;
+}
+.fs-lightbox-mobile .fs-lightbox-control {
+ width: 50px;
+ height: 100%;
+ min-height: 50px;
+ background: #111111;
+ border-radius: 0;
+ box-shadow: none;
+ opacity: 1;
+}
+.fs-lightbox-mobile .fs-lightbox-control_previous {
+ left: 0;
+}
+.fs-lightbox-mobile .fs-lightbox-control_previous:before {
+ border-right-color: #eeeeee;
+ margin-left: 19px;
+}
+.fs-lightbox-mobile .fs-lightbox-control_next {
+ right: 0;
+}
+.fs-lightbox-mobile .fs-lightbox-control_next:before {
+ border-left-color: #eeeeee;
+ margin-right: 19px;
+}
+.no-touch .fs-lightbox-mobile .fs-lightbox-control,
+.no-touch .fs-lightbox-mobile:hover .fs-lightbox-control {
+ opacity: 1;
+}
+.fs-lightbox-mobile .fs-lightbox-control_disabled,
+.no-touch .fs-lightbox-mobile .fs-lightbox-control_disabled,
+.no-touch .fs-lightbox-mobile:hover .fs-lightbox-control_disabled {
+ opacity: 0;
+ cursor: default !important;
+}
+.fs-lightbox-mobile .fs-lightbox-meta {
+ padding: 15px 65px;
+}
+.fs-lightbox-mobile .fs-lightbox-position {
+ color: #999999;
+ font-size: 12px;
+ margin: 0;
+ padding: 0 15px 0 0;
+}
+.fs-lightbox-mobile .fs-lightbox-caption p {
+ color: #eeeeee;
+ font-size: 14px;
+ margin: 0;
+ padding: 0;
+}
+.fs-lightbox-mobile .fs-lightbox-image {
+ -webkit-transition: none !important;
+ transition: none !important;
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.fs-lightbox-mobile.fs-lightbox-animated .fs-lightbox-image {
+ -webkit-transition: -webkit-transform 0.25s ease-out !important;
+ transition: transform 0.25s ease-out !important;
+}
+.fs-lightbox-mobile.fs-lightbox-inline .fs-lightbox-content,
+.fs-lightbox-mobile.fs-lightbox-iframe .fs-lightbox-content {
+ overflow-x: hidden;
+ overflow-y: scroll;
+ -webkit-overflow-scrolling: touch;
+}
+.fs-lightbox-lock {
+ overflow: hidden !important;
+}
+.fs-lightbox-mobile.fs-lightbox-touch .fs-lightbox-tools {
+ width: auto;
+ position: static;
+ background: transparent;
+}
+.fs-lightbox-mobile.fs-lightbox-touch .fs-lightbox-controls {
+ width: 100%;
+ height: 50px;
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 105;
+ background-color: #111111;
+ padding: 0 65px;
+}
+.fs-lightbox-mobile.fs-lightbox-touch .fs-lightbox-caption_toggle {
+ color: #999999;
+ display: block;
+ font-size: 12px;
+ line-height: 50px;
+}
+.fs-lightbox-mobile.fs-lightbox-touch .fs-lightbox-meta {
+ width: 100%;
+ height: 80%;
+ position: fixed;
+ top: 20%;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 104;
+ background: #222222;
+ box-shadow: 0 0 25px #000000;
+ padding: 15px 15px 65px;
+ -webkit-transform: translate(0, 100%);
+ -ms-transform: translate(0, 100%);
+ transform: translate(0, 100%);
+ -webkit-transition: -webkit-transform 0.25s ease;
+ transition: transform 0.25s ease;
+}
+.fs-lightbox-touch.fs-lightbox-caption_open .fs-lightbox-meta {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
diff --git a/static/js/formstone/css/navigation.css b/static/js/formstone/css/navigation.css
new file mode 100644
index 0000000..ce774be
--- /dev/null
+++ b/static/js/formstone/css/navigation.css
@@ -0,0 +1,526 @@
+/*! formstone v0.6.7 [navigation.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-navigation-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-navigation
+ * @type element
+ * @description Base widget class
+ */
+.fs-navigation {
+ /**
+ * @class
+ * @name .fs-navigation-toggle-nav
+ * @type element
+ * @description Toggle navigation
+ */
+ /**
+ * @class
+ * @name .fs-navigation-toggle-nav.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-toggle-nav.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-toggle-handle
+ * @type element
+ * @description Toggle handle
+ */
+ /**
+ * @class
+ * @name .fs-navigation-toggle-handle.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-toggle-handle.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-nav
+ * @type element
+ * @description Overlay nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-nav.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-nav.fs-navigation-animated
+ * @type modifier
+ * @description Indicates animated state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-nav.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-left-nav
+ * @type modifier
+ * @description Indicates left hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-right-nav
+ * @type modifier
+ * @description Indicates right hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-nav
+ * @type element
+ * @description Push nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-nav.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-nav.fs-navigation-animated
+ * @type modifier
+ * @description Indicates animated state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-nav.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-left-nav
+ * @type modifier
+ * @description Indicates left hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-right-nav
+ * @type modifier
+ * @description Indicates right hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-nav
+ * @type element
+ * @description Reveal nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-nav.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-nav.fs-navigation-animated
+ * @type modifier
+ * @description Indicates animated state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-nav.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-left-nav
+ * @type modifier
+ * @description Indicates left hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-right-nav
+ * @type modifier
+ * @description Indicates right hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-handle
+ * @type element
+ * @description Overlay handle
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-handle.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-handle
+ * @type element
+ * @description Push handle
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-handle.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-content:before
+ * @type element
+ * @description Overlay mask
+ */
+ /**
+ * @class
+ * @name .fs-navigation-overlay-content.fs-navigation-open:before
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-content
+ * @type element
+ * @description Target page content
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-content.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-content.fs-navigation-animated
+ * @type modifier
+ * @description Indicates animted state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-content.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-left-content
+ * @type modifier
+ * @description Indicates left hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-push-right-content
+ * @type modifier
+ * @description Indicates right hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-content
+ * @type element
+ * @description Target page content
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-content.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-content.fs-navigation-animated
+ * @type modifier
+ * @description Indicates animted state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-content.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-left-content
+ * @type modifier
+ * @description Indicates left hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-reveal-right-content
+ * @type modifier
+ * @description Indicates right hand nav
+ */
+ /**
+ * @class
+ * @name .fs-navigation-handle
+ * @type element
+ * @description Click target to toggle navigation
+ */
+ /**
+ * @class
+ * @name .fs-navigation-handle.fs-navigation-open
+ * @type modifier
+ * @description Indicates open state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-handle.fs-navigation-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-navigation-handle:after
+ * @type element
+ * @description Icon displayed in handle
+ */
+ /**
+ * @class
+ * @name .fs-navigation-lock
+ * @type modifier
+ * @description Indicates locked state; Applied to body element
+ */
+}
+.fs-navigation.fs-navigation-enabled {
+ margin: 0;
+}
+.fs-navigation,
+.fs-navigation:after,
+.fs-navigation:before,
+.fs-navigation *,
+.fs-navigation *:after,
+.fs-navigation *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-navigation-toggle-nav.fs-navigation-enabled {
+ background: #ffffff;
+ border: 1px solid #cccccc;
+ border-width: 0 1px 1px;
+ border-radius: 0 0 3px 3px;
+ display: none;
+}
+.fs-navigation-toggle-nav.fs-navigation-open {
+ display: block;
+}
+.fs-navigation-toggle-handle.fs-navigation-enabled {
+ width: 100%;
+ background: #ffffff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ color: #111111;
+ cursor: pointer;
+ display: block;
+ font-size: 14px;
+ height: 40px;
+ line-height: 40px;
+ margin: 0;
+ padding: 0 45px 0 15px;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.fs-navigation-toggle-handle.fs-navigation-open {
+ border-radius: 3px 3px 0 0;
+}
+.fs-navigation-push-nav.fs-navigation-enabled,
+.fs-navigation-reveal-nav.fs-navigation-enabled,
+.fs-navigation-overlay-nav.fs-navigation-enabled {
+ width: 270px;
+ height: 100%;
+ height: -webkit-calc(100% + 60px);
+ height: calc(100% + 60px);
+ position: fixed;
+ top: 0;
+ background: #ffffff;
+ display: block;
+ overflow: auto;
+ visibility: hidden;
+}
+.fs-navigation-reveal-nav.fs-navigation-animated {
+ -webkit-transition: visibility 0.001s linear 0.2s;
+ transition: visibility 0.001s linear 0.2s;
+}
+.fs-navigation-push-nav.fs-navigation-animated,
+.fs-navigation-overlay-nav.fs-navigation-animated {
+ -webkit-transition: -webkit-transform 0.2s ease, visibility 0.001s linear 0.2s;
+ transition: transform 0.2s ease, visibility 0.001s linear 0.2s;
+}
+.fs-navigation-push-nav.fs-navigation-enabled,
+.fs-navigation-reveal-nav.fs-navigation-enabled {
+ z-index: 0;
+}
+.fs-navigation-push-left-nav.fs-navigation-enabled,
+.fs-navigation-reveal-left-nav.fs-navigation-enabled,
+.fs-navigation-overlay-left-nav.fs-navigation-enabled {
+ left: 0;
+}
+.fs-navigation-push-right-nav.fs-navigation-enabled,
+.fs-navigation-reveal-right-nav.fs-navigation-enabled,
+.fs-navigation-overlay-right-nav.fs-navigation-enabled {
+ right: 0;
+}
+.fs-navigation-push-left-nav.fs-navigation-enabled,
+.fs-navigation-overlay-left-nav.fs-navigation-enabled {
+ -webkit-transform: translate3D(-270px, 0, 0);
+ -ms-transform: translate3D(-270px, 0, 0);
+ transform: translate3D(-270px, 0, 0);
+}
+.fs-navigation-push-right-nav.fs-navigation-enabled,
+.fs-navigation-overlay-right-nav.fs-navigation-enabled {
+ -webkit-transform: translate3D(270px, 0, 0);
+ -ms-transform: translate3D(270px, 0, 0);
+ transform: translate3D(270px, 0, 0);
+}
+.fs-navigation-overlay-nav.fs-navigation-enabled {
+ z-index: 2;
+}
+.fs-navigation-overlay-left-nav.fs-navigation-enabled {
+ box-shadow: 2px 0 2px rgba(0, 0, 0, 0.15);
+}
+.fs-navigation-overlay-right-nav.fs-navigation-enabled {
+ box-shadow: -2px 0 2px rgba(0, 0, 0, 0.15);
+}
+.fs-navigation-reveal-nav.fs-navigation-open {
+ visibility: visible;
+ -webkit-transition: visibility 0.001s ease;
+ transition: visibility 0.001s ease;
+}
+.fs-navigation-push-nav.fs-navigation-open,
+.fs-navigation-overlay-nav.fs-navigation-open {
+ -webkit-transform: translate3D(0, 0, 0);
+ -ms-transform: translate3D(0, 0, 0);
+ transform: translate3D(0, 0, 0);
+ -webkit-transition: -webkit-transform 0.2s ease, visibility 0.001s ease;
+ transition: transform 0.2s ease, visibility 0.001s ease;
+ visibility: visible;
+}
+.fs-navigation-push-handle.fs-navigation-enabled,
+.fs-navigation-overlay-handle.fs-navigation-enabled {
+ padding: 10px 40px 10px 15px;
+ background: #ffffff;
+ color: #111111;
+ cursor: pointer;
+ display: block;
+ font-size: 14px;
+ margin: 0;
+ padding: 0 45px 0 15px;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.fs-navigation-overlay-content:before {
+ width: 100%;
+ height: 100%;
+ height: -webkit-calc(100% + 60px);
+ height: calc(100% + 60px);
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ background: #ffffff;
+ background: rgba(255, 255, 255, 0.75);
+ content: '';
+ display: block;
+ opacity: 0;
+ -webkit-transition: opacity 0.2s ease, visibility 0.2s ease;
+ transition: opacity 0.2s ease, visibility 0.2s ease;
+ visibility: hidden;
+}
+.fs-navigation-overlay-content.fs-navigation-open:before {
+ opacity: 1;
+ visibility: visible;
+}
+.fs-navigation-reveal-content.fs-navigation-enabled,
+.fs-navigation-push-content.fs-navigation-enabled {
+ position: relative;
+ z-index: 1;
+ display: block;
+ overflow: hidden;
+ -webkit-transform: translate3D(0, 0, 0);
+ -ms-transform: translate3D(0, 0, 0);
+ transform: translate3D(0, 0, 0);
+}
+.fs-navigation-reveal-content.fs-navigation-animated,
+.fs-navigation-push-content.fs-navigation-animated {
+ -webkit-transition: -webkit-transform 0.2s ease;
+ transition: transform 0.2s ease;
+}
+.fs-navigation-reveal-left-content.fs-navigation-enabled,
+.fs-navigation-push-left-content.fs-navigation-enabled {
+ box-shadow: -2px 0 2px rgba(0, 0, 0, 0.15);
+}
+.fs-navigation-reveal-right-content.fs-navigation-enabled,
+.fs-navigation-push-right-content.fs-navigation-enabled {
+ box-shadow: 2px 0 2px rgba(0, 0, 0, 0.15);
+}
+.fs-navigation-reveal-left-content.fs-navigation-open,
+.fs-navigation-push-left-content.fs-navigation-open {
+ -webkit-transform: translate3D(270px, 0, 0);
+ -ms-transform: translate3D(270px, 0, 0);
+ transform: translate3D(270px, 0, 0);
+}
+.fs-navigation-reveal-right-content.fs-navigation-open,
+.fs-navigation-push-right-content.fs-navigation-open {
+ -webkit-transform: translate3D(-270px, 0, 0);
+ -ms-transform: translate3D(-270px, 0, 0);
+ transform: translate3D(-270px, 0, 0);
+}
+.fs-navigation-handle.fs-navigation-enabled {
+ position: relative;
+}
+.fs-navigation-handle.fs-navigation-enabled:after {
+ height: 3px;
+ width: 15px;
+ position: absolute;
+ top: 0;
+ right: 15px;
+ bottom: 0;
+ background: #cccccc;
+ box-shadow: 0 5px 0 #cccccc, 0 -5px 0 #cccccc;
+ content: '';
+ display: block;
+ margin: auto 0;
+}
+.fs-navigation-handle.fs-navigation-open:after {
+ width: 15px;
+ height: 15px;
+ background: transparent;
+ border: none;
+ box-shadow: none;
+ color: #cccccc;
+ content: "\00d7";
+ font-size: 22px;
+ font-weight: 700;
+ line-height: 13px;
+ text-align: center;
+}
+.fs-navigation-lock {
+ overflow: hidden !important;
+}
diff --git a/static/js/formstone/css/number.css b/static/js/formstone/css/number.css
new file mode 100644
index 0000000..08609e1
--- /dev/null
+++ b/static/js/formstone/css/number.css
@@ -0,0 +1,158 @@
+/*! formstone v0.6.7 [number.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-number-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-number
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-number.fs-number-disabled
+ * @type modifier
+ * @description Indicates disabled state
+ */
+.fs-number {
+ position: relative;
+ border-radius: 3px;
+ margin: 0 0 10px 0;
+ overflow: hidden;
+ /**
+ * @class
+ * @name .fs-number-arrow
+ * @type element
+ * @description Arrow elmement
+ */
+ /**
+ * @class
+ * @name .fs-number-arrow:after
+ * @type element
+ * @description Arrow icon
+ */
+ /**
+ * @class
+ * @name .fs-number-arrow.fs-number-up
+ * @type modifier
+ * @description Indicates up state
+ */
+ /**
+ * @class
+ * @name .fs-number-arrow.fs-number-down
+ * @type modifier
+ * @description Indicates up state
+ */
+}
+.fs-number,
+.fs-number:after,
+.fs-number:before,
+.fs-number *,
+.fs-number *:after,
+.fs-number *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-number-element {
+ width: 100%;
+ background: #ffffff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ color: #222222;
+ font-size: 15px;
+ line-height: 1;
+ overflow: hidden;
+ padding: 0 10px;
+ -moz-appearance: textfield;
+}
+.fs-number-element::-webkit-inner-spin-button,
+.fs-number-element::-webkit-outer-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.fs-number-element::-ms-clear {
+ display: none;
+}
+.fs-number-element:focus {
+ background-color: #ffffff;
+}
+.fs-number-disabled .fs-number-element {
+ background: #ffffff;
+ border-color: #cccccc;
+ color: #cccccc;
+}
+.fs-number-arrow {
+ width: 25px;
+ height: 50%;
+ position: absolute;
+ right: 0;
+ z-index: 1;
+ background: #ffffff;
+ border: 1px solid #cccccc;
+ cursor: pointer;
+ display: block;
+ overflow: hidden;
+ text-indent: 200%;
+ white-space: nowrap;
+}
+.no-opacity .fs-number-arrow {
+ text-indent: -999999px;
+}
+.fs-number-arrow:focus {
+ outline: none;
+}
+.fs-number-arrow:after {
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ content: '';
+ display: block;
+ margin: auto;
+}
+.fs-number-arrow.fs-number-up {
+ top: 0;
+}
+.fs-number-arrow.fs-number-up:after {
+ border-bottom: 5px solid #666666;
+}
+.fs-number-arrow.fs-number-down {
+ bottom: 0;
+ border-top: none;
+}
+.fs-number-arrow.fs-number-down:after {
+ border-top: 5px solid #666666;
+}
+.fs-number-disabled .fs-number-arrow {
+ cursor: default;
+}
+.fs-number-disabled .fs-number-arrow:after {
+ border-top-color: #cccccc;
+ border-bottom-color: #cccccc;
+}
+/*
+ @media screen and (min-width: 740px) {
+ .stepper:hover .stepper-input { background-color: #fff; }
+
+ .stepper .stepper-step:hover { background-color: #F9F9F9; }
+
+ .stepper.disabled .stepper-arrow { background: #fff; border-color: #eee; cursor: default; }
+ }
+
+ .stepper.disabled .stepper-input { background: #fff; border-color: #eee; color: #ccc; }
+ .stepper.disabled .stepper-arrow { background: #fff; border-color: #eee; cursor: default; }
+*/
diff --git a/static/js/formstone/css/pagination.css b/static/js/formstone/css/pagination.css
new file mode 100644
index 0000000..7d5c443
--- /dev/null
+++ b/static/js/formstone/css/pagination.css
@@ -0,0 +1,138 @@
+/*! formstone v0.6.7 [pagination.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-pagination-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-pagination
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-pagination.fs-pagination-mobile
+ * @type modifier
+ * @description Indicates mobile display
+ */
+.fs-pagination {
+ /**
+ * @class
+ * @name .fs-pagination
+ * @type element
+ * @description Pages container
+ */
+ /**
+ * @class
+ * @name .fs-pagination-page
+ * @type element
+ * @description Page element
+ */
+ /**
+ * @class
+ * @name .fs-pagination-ellipsis
+ * @type element
+ * @description Ellipsis element
+ */
+ /**
+ * @class
+ * @name .fs-pagination-page.fs-pagination-active
+ * @type modifier
+ * @description Indicates active page
+ */
+ /**
+ * @class
+ * @name .fs-pagination-page.fs-pagination-first
+ * @type modifier
+ * @description Indicates first page
+ */
+ /**
+ * @class
+ * @name .fs-pagination-page.fs-pagination-last
+ * @type modifier
+ * @description Indicates last page
+ */
+ /**
+ * @class
+ * @name .fs-pagination-page.fs-pagination-visible
+ * @type modifier
+ * @description Indicates visible page
+ */
+ /**
+ * @class
+ * @name .fs-pagination-control
+ * @type element
+ * @description Pagination button
+ */
+ /**
+ * @class
+ * @name .fs-pagination-control.fs-pagination-control_previous
+ * @type modifier
+ * @description Indicates previous control
+ */
+ /**
+ * @class
+ * @name .fs-pagination-control.fs-pagination-control_next
+ * @type modifier
+ * @description Indicates next control
+ */
+ /**
+ * @class
+ * @name .fs-pagination-position
+ * @type element
+ * @description Mobile position indicator
+ */
+ /**
+ * @class
+ * @name .fs-pagination-select
+ * @type element
+ * @description Mobile page dropdown
+ */
+}
+.fs-pagination-pages {
+ text-align: center;
+}
+.fs-pagination-page,
+.fs-pagination-ellipsis {
+ display: none;
+ margin: 0 5px;
+}
+.fs-pagination-active,
+.fs-pagination-first,
+.fs-pagination-last,
+.fs-pagination-visible {
+ display: inline-block;
+}
+.fs-pagination-control {
+ border: none;
+ display: block;
+}
+.fs-pagination-control:focus {
+ outline: none;
+}
+.fs-pagination-control_previous {
+ float: left;
+}
+.fs-pagination-control_next {
+ float: right;
+}
+.fs-pagination-position,
+.fs-pagination-select {
+ display: none;
+}
+.fs-pagination-mobile .fs-pagination-pages {
+ display: none;
+}
+.fs-pagination-mobile .fs-pagination-position {
+ display: block;
+ text-align: center;
+}
+.fs-pagination-mobile .fs-pagination-select {
+ position: absolute;
+ z-index: -1;
+ display: block;
+ opacity: 0;
+}
diff --git a/static/js/formstone/css/range.css b/static/js/formstone/css/range.css
new file mode 100644
index 0000000..d400a5f
--- /dev/null
+++ b/static/js/formstone/css/range.css
@@ -0,0 +1,132 @@
+/*! formstone v0.6.7 [range.css] 2015-06-13 | MIT License | formstone.it */
+
+.fs-range {
+ width: 100%;
+}
+.fs-range,
+.fs-range:after,
+.fs-range:before,
+.fs-range *,
+.fs-range *:after,
+.fs-range *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-range-element {
+ width: 1px;
+ height: 1px;
+ position: absolute;
+ z-index: -1;
+ opacity: 0;
+}
+.no-touch .fs-range-element {
+ left: -9999px;
+}
+.fs-range-track {
+ width: 100%;
+ height: 8px;
+ position: relative;
+ background: #fbfbfb;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ float: left;
+ margin: 10px 0;
+}
+.fs-range-handle {
+ width: 1px;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ display: block;
+ overflow: visible;
+}
+.fs-range-marker {
+ width: 14px;
+ height: 14px;
+ background: #DCDCDC;
+ border: 1px solid #AFAFAF;
+ border-radius: 100%;
+ cursor: pointer;
+ display: block;
+ margin: -4px 0 0 -6px;
+}
+.no-touch .fs-range:hover .fs-range-track {
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.1);
+}
+.no-touch .fs-range:hover .fs-range-marker {
+ background: #ccc;
+ border-color: #999;
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.25);
+}
+.fs-range-focus .fs-range-track {
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.1);
+}
+.fs-range-focus .fs-range-marker {
+ background: #ccc;
+ border-color: #999;
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.25);
+}
+.fs-range-labels .fs-range-track {
+ width: 80%;
+}
+.fs-range-label {
+ width: 8%;
+ display: block;
+ font-size: 12px;
+ line-height: 28px;
+}
+.fs-range-label_min {
+ float: left;
+ margin: 0 2% 0 0;
+ text-align: right;
+}
+.fs-range-label_max {
+ float: right;
+ margin: 0 0 0 2%;
+ text-align: left;
+}
+.fs-range-vertical {
+ height: 300px;
+ width: 30px;
+}
+.fs-range-vertical .fs-range-track {
+ width: 8px;
+ height: 75%;
+ margin: 0 11px 0;
+}
+.fs-range-vertical .fs-range-handle {
+ width: 100%;
+ height: 1px;
+ top: auto;
+ bottom: 0;
+ left: 0;
+}
+.fs-range-vertical .fs-range-marker {
+ margin: -7px 0 0 -4px;
+}
+.fs-range-vertical .fs-range-label {
+ clear: both;
+ float: none;
+ height: 10%;
+ text-align: center;
+ width: 100%;
+}
+.fs-range-vertical .fs-range-label_min {
+ padding: 5px 0 0;
+}
+.fs-range-vertical .fs-range-label_max {
+ padding: 0;
+}
+.fs-range-disabled {
+ cursor: default;
+ opacity: 0.5;
+}
+.fs-range-disabled .fs-range-disc {
+ cursor: default;
+}
diff --git a/static/js/formstone/css/scrollbar.css b/static/js/formstone/css/scrollbar.css
new file mode 100644
index 0000000..6da4e1f
--- /dev/null
+++ b/static/js/formstone/css/scrollbar.css
@@ -0,0 +1,154 @@
+/*! formstone v0.6.7 [scrollbar.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-scrollbar-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-scrollbar
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-scrollbar.fs-scrollbar-horizontal
+ * @type modifier
+ * @description Indicates horizontal scrolling
+ */
+/**
+ * @class
+ * @name .fs-scrollbar.fs-scrollbar-setup
+ * @type modifier
+ * @description Indicates setup state
+ */
+/**
+ * @class
+ * @name .fs-scrollbar.fs-scrollbar-active
+ * @type modifier
+ * @description Indicates active state
+ */
+.fs-scrollbar {
+ overflow: hidden;
+ overflow-x: hidden;
+ overflow-y: hidden;
+ position: relative;
+ /**
+ * @class
+ * @name .fs-scrollbar-content
+ * @type element
+ * @description Scrolling content
+ */
+ /**
+ * @class
+ * @name .fs-scrollbar-bar
+ * @type element
+ * @description Scrollbar container
+ */
+ /**
+ * @class
+ * @name .fs-scrollbar-track
+ * @type element
+ * @description Scrollbar track container
+ */
+ /**
+ * @class
+ * @name .fs-scrollbar-handle
+ * @type element
+ * @description Scrollbar handle
+ */
+}
+.fs-scrollbar,
+.fs-scrollbar * {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-scrollbar,
+.fs-scrollbar-content,
+.fs-scrollbar-bar,
+.fs-scrollbar-track,
+.fs-scrollbar-handle {
+ box-sizing: border-box;
+}
+.fs-scrollbar-content {
+ position: relative;
+ z-index: 1;
+ height: 100%;
+ overflow: auto;
+ overflow-x: hidden;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+}
+.fs-scrollbar-content::-webkit-scrollbar,
+.fs-scrollbar-content::-webkit-scrollbar-button,
+.fs-scrollbar-content::-webkit-scrollbar-track,
+.fs-scrollbar-content::-webkit-scrollbar-track-piece,
+.fs-scrollbar-content::-webkit-scrollbar-thumb,
+.fs-scrollbar-content::-webkit-scrollbar-corner,
+.fs-scrollbar-content::-webkit-resizer {
+ background: transparent;
+ opacity: 0;
+}
+.fs-scrollbar-bar {
+ width: 16px;
+ height: 100%;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 2;
+ background: #ffffff;
+ border: 1px solid #eeeeee;
+ border-width: 0 0 0 1px;
+ display: none;
+}
+.fs-scrollbar-track {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ background: #ffffff;
+ overflow: hidden;
+}
+.fs-scrollbar-handle {
+ width: 10px;
+ height: 20px;
+ position: absolute;
+ top: 0;
+ right: 3px;
+ z-index: 2;
+ background: #cccccc;
+ border: 1px solid #ffffff;
+ border-radius: 5px;
+ cursor: pointer;
+}
+.fs-scrollbar-horizontal .fs-scrollbar-content {
+ overflow: auto;
+ overflow-x: auto;
+ overflow-y: hidden;
+ padding: 0 0 16px 0;
+}
+.fs-scrollbar-horizontal .fs-scrollbar-bar {
+ width: 100%;
+ height: 16px;
+ top: auto;
+ bottom: 0;
+ border-width: 1px 0 0 0;
+}
+.fs-scrollbar-horizontal .fs-scrollbar-handle {
+ width: 20px;
+ height: 10px;
+ top: auto;
+ right: auto;
+ bottom: 3px;
+}
+.fs-scrollbar-setup .fs-scrollbar-content,
+.fs-scrollbar-active .fs-scrollbar-content {
+ padding: 20px;
+}
+.fs-scrollbar-setup .fs-scrollbar-bar,
+.fs-scrollbar-active .fs-scrollbar-bar {
+ display: block;
+}
diff --git a/static/js/formstone/css/tabs.css b/static/js/formstone/css/tabs.css
new file mode 100644
index 0000000..6040f90
--- /dev/null
+++ b/static/js/formstone/css/tabs.css
@@ -0,0 +1,110 @@
+/*! formstone v0.6.7 [tabs.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-tabs-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-tabs
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-tabs.fs-tabs-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+.fs-tabs {
+ /**
+ * @class
+ * @name .fs-tabs-tab
+ * @type element
+ * @description Tab handle element
+ */
+ /**
+ * @class
+ * @name .fs-tabs-tab.fs-tabs-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-tabs-tab.fs-tabs-active
+ * @type modifier
+ * @description Indicates active state
+ */
+ /**
+ * @class
+ * @name .fs-tabs-tab.fs-tabs-mobile
+ * @type modifier
+ * @description Indicates mobile interface
+ */
+ /**
+ * @class
+ * @name .fs-tabs-content
+ * @type element
+ * @description Tab content element
+ */
+ /**
+ * @class
+ * @name .fs-tabs-content.fs-tabs-enabled
+ * @type modifier
+ * @description Indicates enabled state
+ */
+ /**
+ * @class
+ * @name .fs-tabs-content.fs-tabs-active
+ * @type modifier
+ * @description Indicates active state
+ */
+ /**
+ * @class
+ * @name .fs-tabs-tab_mobile
+ * @type element
+ * @description Mobile tab handle element
+ */
+ /**
+ * @class
+ * @name .fs-tabs-tab_mobile.fs-tabs-active
+ * @type modifier
+ * @description Indicates active state
+ */
+}
+.fs-tabs.fs-tabs-enabled:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-tabs-tab.fs-tabs-enabled {
+ box-sizing: border-box;
+ border: none;
+ cursor: pointer;
+}
+.fs-tabs-tab.fs-tabs-enabled:focus {
+ outline: none;
+}
+.fs-tabs-content.fs-tabs-enabled {
+ box-sizing: border-box;
+ display: none;
+}
+.fs-tabs-content.fs-tabs-enabled:after {
+ clear: both;
+ content: '';
+ display: table;
+}
+.fs-tabs-content.fs-tabs-active {
+ display: block;
+}
+.fs-tabs-tab.fs-tabs-mobile,
+.fs-tabs-tab_mobile,
+.fs-tabs-tab_mobile.fs-tabs-active {
+ display: none;
+}
+.fs-tabs-tab_mobile.fs-tabs-mobile,
+.fs-tabs-tab_mobile.fs-tabs-mobile.fs-tabs-active {
+ display: block;
+}
diff --git a/static/js/formstone/css/tooltip.css b/static/js/formstone/css/tooltip.css
new file mode 100644
index 0000000..cc566ec
--- /dev/null
+++ b/static/js/formstone/css/tooltip.css
@@ -0,0 +1,151 @@
+/*! formstone v0.6.7 [tooltip.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-tooltip-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-tooltip
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-tooltip.fs-tooltip-visible
+ * @type modifier
+ * @description Inidcates visible state
+ */
+/**
+ * @class
+ * @name .fs-tooltip.fs-tooltip-right
+ * @type modifier
+ * @description Inidcates right side display
+ */
+/**
+ * @class
+ * @name .fs-tooltip.fs-tooltip-left
+ * @type modifier
+ * @description Inidcates left side display
+ */
+/**
+ * @class
+ * @name .fs-tooltip.fs-tooltip-top
+ * @type modifier
+ * @description Inidcates top display
+ */
+/**
+ * @class
+ * @name .fs-tooltip.fs-tooltip-bottom
+ * @type modifier
+ * @description Inidcates bottom display
+ */
+.fs-tooltip {
+ width: 1px;
+ height: 1px;
+ position: absolute;
+ top: -999px;
+ left: -999px;
+ z-index: 10;
+ opacity: 0;
+ pointer-events: none;
+ -webkit-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+ /**
+ * @class
+ * @name .fs-tooltip-content
+ * @type element
+ * @description Tooltip content wrapper
+ */
+ /**
+ * @class
+ * @name .fs-tooltip-caret
+ * @type element
+ * @description Tooltip caret
+ */
+}
+.fs-tooltip,
+.fs-tooltip:after,
+.fs-tooltip:before,
+.fs-tooltip *,
+.fs-tooltip *:after,
+.fs-tooltip *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-tooltip-visible {
+ opacity: 1;
+}
+.fs-tooltip-content {
+ background: #111111;
+ border-radius: 3px;
+ color: #ffffff;
+ display: block;
+ float: left;
+ font-size: 12px;
+ margin: 0;
+ padding: 10px 15px;
+ position: relative;
+ white-space: nowrap;
+}
+.fs-tooltip-caret {
+ width: 0;
+ height: 0;
+ content: '';
+ display: block;
+ margin: 0;
+ position: absolute;
+}
+.fs-tooltip-right .fs-tooltip-content {
+ box-shadow: 1px 0 5px rgba(0, 0, 0, 0.35);
+}
+.fs-tooltip-right .fs-tooltip-caret {
+ top: 0;
+ left: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 5px solid #111111;
+}
+.fs-tooltip-left .fs-tooltip-content {
+ box-shadow: -1px 0 5px rgba(0, 0, 0, 0.35);
+}
+.fs-tooltip-left .fs-tooltip-caret {
+ top: 0;
+ right: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid #111111;
+}
+.fs-tooltip-top .fs-tooltip-caret,
+.fs-tooltip-bottom .fs-tooltip-caret {
+ display: block;
+ float: none;
+ margin: 0 auto;
+}
+.fs-tooltip-top .fs-tooltip-content {
+ box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.35);
+}
+.fs-tooltip-top .fs-tooltip-caret {
+ bottom: -5px;
+ left: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 5px solid #111111;
+}
+.fs-tooltip-bottom .fs-tooltip-content {
+ box-shadow: 0 1px 5px rgba(0, 0, 0, 0.35);
+}
+.fs-tooltip-bottom .fs-tooltip-caret {
+ top: -5px;
+ left: 0;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-bottom: 5px solid #111111;
+}
diff --git a/static/js/formstone/css/upload.css b/static/js/formstone/css/upload.css
new file mode 100644
index 0000000..faebec7
--- /dev/null
+++ b/static/js/formstone/css/upload.css
@@ -0,0 +1,80 @@
+/*! formstone v0.6.7 [upload.css] 2015-06-13 | MIT License | formstone.it */
+
+/**
+ * @class
+ * @name .fs-upload-element
+ * @type element
+ * @description Target elmement
+ */
+/**
+ * @class
+ * @name .fs-upload
+ * @type element
+ * @description Base widget class
+ */
+/**
+ * @class
+ * @name .fs-upload.fs-upload-dropping
+ * @type modifier
+ * @description Indicates dropping state
+ */
+.fs-upload {
+ overflow: hidden;
+ /**
+ * @class
+ * @name .fs-upload-input
+ * @type element
+ * @description Masked Input
+ */
+ /**
+ * @class
+ * @name .fs-upload-target
+ * @type element
+ * @description Drop target
+ */
+}
+.fs-upload,
+.fs-upload:after,
+.fs-upload:before,
+.fs-upload *,
+.fs-upload *:after,
+.fs-upload *:before {
+ box-sizing: border-box;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important;
+}
+.fs-upload-input {
+ position: absolute;
+ left: 100%;
+ opacity: 0;
+}
+.no-opacity .fs-upload-input {
+ left: -999px;
+}
+.fs-upload-target {
+ background: #ffffff;
+ border: 3px dashed #cccccc;
+ border-radius: 3px;
+ color: #666666;
+ cursor: pointer;
+ font-size: 14px;
+ margin: 0;
+ padding: 25px;
+ text-align: center;
+ -webkit-transition: background 0.15s linear,
+ border 0.15s linear,
+ opacity 0.15s linear;
+ transition: background 0.15s linear,
+ border 0.15s linear,
+ opacity 0.15s linear;
+}
+.fs-upload.dropping .fs-upload-target,
+.no-touch .fs-upload:hover .fs-upload-target {
+ background: #eeeeee;
+ border-color: #999999;
+ color: #333333;
+}
diff --git a/static/js/formstone/js/analytics.js b/static/js/formstone/js/analytics.js
new file mode 100644
index 0000000..4431cfb
--- /dev/null
+++ b/static/js/formstone/js/analytics.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [analytics.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){j=b.$body}function d(){return arguments.length&&"object"!==a.type(arguments[0])?g.apply(this,arguments):e.apply(this,arguments),null}function e(b){!k&&j.length&&(k=!0,h=a.extend(h,b||{}),j.on("click.scout","*["+m+"]",f))}function f(b){if("function"===a.type(i.ga)){b.preventDefault();var c=a(this),d=c.attr("href"),e=c.data(l).split(",");for(var f in e)e.hasOwnProperty(f)&&(e[f]=a.trim(e[f]));g(e[0],e[1],e[2]||d,e[3],e[4],c)}}function g(b,c,d,e,f,g){if("function"===a.type(i.ga)){var h={hitType:"event",location:i.location,title:i.document.title};if(b&&(h.eventCategory=b),c&&(h.eventAction=c),d&&(h.eventLabel=d),e&&(h.eventValue=e),f&&(h.nonInteraction=f),"undefined"!==a.type(g)&&!g.attr("data-analytics-stop")){var j="undefined"!==a.type(g[0].href)?g[0].href:"",k=!j.match(/^mailto\:/i)&&!j.match(/^tel\:/i)&&j.indexOf(":")<0?i.location.protocol+"//"+i.location.hostname+"/"+j:j;""!==j&&(g.attr("target")?i.open(k,g.attr("target")):h.hitCallback=function(){document.location=k})}i.ga("send",h)}}var h=(b.Plugin("analytics",{methods:{_setup:c},utilities:{_delegate:d}}),{filetypes:/\.(zip|exe|dmg|pdf|doc.*|xls.*|ppt.*|mp3|txt|rar|wma|mov|avi|wmv|flv|wav)$/i}),i=b.window,j=null,k=!1,l="analytics-event",m="data-"+l}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/asap.js b/static/js/formstone/js/asap.js
new file mode 100644
index 0000000..a28e502
--- /dev/null
+++ b/static/js/formstone/js/asap.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [asap.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(c){p||b.support.history&&(n=b.$body,p=a.extend(r,c),p.$container=a(p.container),p.render===a.noop&&(p.render=j),p.transitionOut===a.noop&&(p.transitionOut=function(){return a.Deferred().resolve()}),x=window.location.href,s.on(v.popState,g),d())}function d(){n&&!n.hasClass(w.base)&&n.on(v.click,r.selector,f).addClass(w.base)}function e(a){p&&b.support.history?a&&h(a):window.location.href=a}function f(a){var b=a.currentTarget;a.which>1||a.metaKey||a.ctrlKey||a.shiftKey||a.altKey||window.location.protocol!==b.protocol||window.location.host!==b.host||"_blank"===b.target||(!b.hash||b.href.replace(b.hash,"")!==window.location.href.replace(location.hash,"")&&b.href!==window.location.href+"#")&&(u.killEvent(a),a.stopImmediatePropagation(),b.href===x||h(b.href))}function g(a){var b=a.originalEvent.state;b&&(p.modal&&0===y&&b.url&&!b.initial?window.location.href=b.url:b.url!==x&&(p.force?h(b.url):(s.trigger(v.request,[!0]),i(b.url,b.hash,b.data,b.scroll,!1))))}function h(b){o&&o.abort(),s.trigger(v.request,[!1]),p.transitionOutDeferred=p.transitionOut.apply(t,[!1]);var c=b.indexOf("?"),d=b.indexOf("#"),e={},f="",g=b,h="User error",j=null,k=a.Deferred();d>-1&&(f=b.slice(d),g=b.slice(0,d)),c>-1&&(e=m(b.slice(c+1,d>-1?d:b.length)),g=b.slice(0,c)),e[p.requestKey]=!0,o=a.ajax({url:g,data:e,dataType:"json",cache:p.cache,xhr:function(){var a=new t.XMLHttpRequest;return a.addEventListener("progress",function(a){if(a.lengthComputable){var b=a.loaded/a.total;s.trigger(v.progress,[b])}},!1),a},success:function(c){j="string"===a.type(c)?a.parseJSON(c):c,c.location&&(b=c.location),k.resolve()},error:function(a,b,c){h=c,k.reject()}}),a.when(k,p.transitionOutDeferred).done(function(){i(b,f,j,p.jump?0:!1,!0)}).fail(function(){s.trigger(v.error,[h])})}function i(b,c,d,e,f){if(s.trigger(v.load,[d]),l(b),k(d),p.render.call(this,d,c),x=b,f?(history.pushState({url:x,data:d,scroll:e,hash:c},"state-"+x,x),y++):k(d),s.trigger(v.render,[d]),""!==c){var g=a(c);g.length&&(e=g.offset().top)}e!==!1&&s.scrollTop(e)}function j(b){if("undefined"!==a.type(b)){var c;for(var d in b)b.hasOwnProperty(d)&&(c=a(d),c.length&&c.html(b[d]))}}function k(b){var c=[];if("undefined"!==a.type(b)){var d;for(var e in b)b.hasOwnProperty(e)&&(d=a(e),d.length&&(c[e]=d.html()))}history.replaceState({url:x,data:c,scroll:s.scrollTop()},"state-"+x,x)}function l(a){if(a=a.replace(window.location.protocol+"//"+window.location.host,""),p.tracking.legacy)t._gaq=t._gaq||[],t._gaq.push(["_trackPageview",a]);else if(p.tracking.manager){var b={};b[p.tracking.variable]=a,t.dataLayer=window.dataLayer||[],t.dataLayer.push(b),t.dataLayer.push({event:p.tracking.event})}}function m(a){for(var b={},c=a.slice(a.indexOf("?")+1).split("&"),d=0;d
').appendTo(this),this.addClass([u.base,b.customClass].join(" "));var c=b.source;b.source=null,g(b,c,!0),d()}function f(a){a.$container.remove(),this.removeClass([u.base,a.customClass].join(" ")).off(v.namespace),d()}function g(b,c,d){if(c!==b.source){if(b.source=c,b.responsive=!1,b.isYouTube=!1,"object"===a.type(c)&&"string"===a.type(c.video)){var e=c.video.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i);e&&e.length>=1&&(b.isYouTube=!0,b.videoId=e[1])}var f=!b.isYouTube&&"object"===a.type(c)&&(c.hasOwnProperty("mp4")||c.hasOwnProperty("ogg")||c.hasOwnProperty("webm"));if(b.video=b.isYouTube||f,b.playing=!1,b.isYouTube)b.playerReady=!1,b.posterLoaded=!1,k(b,c,d);else if("object"===a.type(c)&&c.hasOwnProperty("poster"))j(b,c,d);else{var g=c;if("object"===a.type(c)){var l,m={},n=[];for(l in c)c.hasOwnProperty(l)&&n.push(l);n.sort(w.sortAsc);for(l in n)n.hasOwnProperty(l)&&(m[n[l]]={width:parseInt(n[l]),url:c[n[l]]});b.responsive=!0,b.sources=m,g=h(b)}i(b,g,!1,d)}}else b.$el.trigger(v.loaded)}function h(a){if(a.responsive)for(var c in a.sources)if(a.sources.hasOwnProperty(c)&&b.windowWidth>=a.sources[c].width)return a.sources[c].url;return a.source}function i(b,c,d,e){var f=[u.media,u.image,e!==!0?u.animated:""].join(" "),g=a(' '),h=g.find("img"),i=c;h.one(v.load,function(){z&&g.addClass(u["native"]).css({backgroundImage:"url('"+i+"')"}),g.transition({property:"opacity"},function(){d||l(b)}).css({opacity:1}),q(b),(!d||e)&&b.$el.trigger(v.loaded)}).attr("src",i),b.responsive&&g.addClass(u.responsive),b.$container.append(g),(h[0].complete||4===h[0].readyState)&&h.trigger(v.load),b.currentSource=i}function j(c,d,e){if(c.source&&c.source.poster&&(i(c,c.source.poster,!0,!0),e=!1),!b.isMobile){var f=[u.media,u.video,e!==!0?u.animated:""].join(" "),g='';g+="",c.source.webm&&(g+=' '),c.source.mp4&&(g+=' '),c.source.ogg&&(g+=' '),g+=" ",g+="
";var h=a(g),j=h.find("video");j.one(v.loadedMetaData,function(){h.transition({property:"opacity"},function(){l(c)}).css({opacity:1}),q(c),c.$el.trigger(v.loaded),c.autoPlay&&o(c)}),c.$container.append(h)}}function k(c,d,e){if(!c.videoId){var f=d.match(/^.*(?:youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#\&\?]*).*/);c.videoId=f[1]}if(c.posterLoaded||(c.source.poster||(c.source.poster="http://img.youtube.com/vi/"+c.videoId+"/0.jpg"),c.posterLoaded=!0,i(c,c.source.poster,!0,e),e=!1),!b.isMobile)if(a("script[src*='youtube.com/iframe_api']").length||a("head").append(''),A){var g=c.guid+"_"+c.youTubeGuid++,h=[u.media,u.embed,e!==!0?u.animated:""].join(" "),j='";var k=a(j),m=a.extend(!0,{},{controls:0,rel:0,showinfo:0,wmode:"transparent",enablejsapi:1,version:3,playerapiid:g,loop:c.loop?1:0,autoplay:1,origin:x.location.protocol+"//"+x.location.host},c.youtubeOptions);c.$container.append(k),c.player&&(c.oldPlayer=c.player,c.player=null),c.player=new x.YT.Player(g,{videoId:c.videoId,playerVars:m,events:{onReady:function(){c.playerReady=!0,c.mute&&c.player.mute(),c.autoPlay&&c.player.playVideo()},onStateChange:function(a){c.playing||a.data!==x.YT.PlayerState.PLAYING?c.loop&&c.playing&&a.data===x.YT.PlayerState.ENDED&&c.player.playVideo():(c.playing=!0,c.autoPlay||c.player.pauseVideo(),k.transition({property:"opacity"},function(){l(c)}).css({opacity:1}),q(c),c.$el.trigger(v.loaded)),c.$el.find(t.embed).addClass(u.ready)},onPlaybackQualityChange:function(){},onPlaybackRateChange:function(){},onError:function(){},onApiChange:function(){}}}),q(c)}else B.push({data:c,source:d})}function l(a){var b=a.$container.find(t.media);b.length>=1&&(b.not(":last").remove(),a.oldPlayer=null)}function m(a){var b=a.$container.find(t.media);b.length>=1&&b.transition({property:"opacity"},function(){b.remove(),delete a.source}).css({opacity:0})}function n(a){if(a.video){if(a.isYouTube&&a.playerReady)a.player.pauseVideo();else{var b=a.$container.find("video");b.length&&b[0].pause()}a.playing=!1}}function o(a){if(a.video){if(a.isYouTube&&a.playerReady)a.player.playVideo();else{var b=a.$container.find("video");b.length&&b[0].play()}a.playing=!0}}function p(a){if(a.responsive){var b=h(a);b!==a.currentSource?i(a,b,!1,!0):q(a)}else q(a)}function q(a){for(var b=a.$container.find(t.media),c=0,d=b.length;d>c;c++){var e=b.eq(c),f=a.isYouTube?"iframe":e.find("video").length?"video":"img",g=e.find(f);if(g.length&&("img"!==f||!z)){var h=a.$el.outerWidth(),i=a.$el.outerHeight(),j=r(a,g);a.width=j.width,a.height=j.height,a.left=0,a.top=0;var k=a.isYouTube?a.embedRatio:a.width/a.height;a.height=i,a.width=a.height*k,a.width',f+=''+c.labels.previous+" ",f+=''+c.labels.next+" ",f+=""),c.pagination&&(i+='"),this.addClass([B.base,c.customClass].join(" ")).wrapInner('').append(f).wrapInner('
').append(i),c.$viewport=this.find(A.viewport).eq(0),c.$container=this.find(A.container).eq(0),c.$canister=this.find(A.canister).eq(0),c.$controls=this.find(A.controls).eq(0),c.$pagination=this.find(A.pagination).eq(0),c.$items=c.$canister.children().addClass(B.item),c.$controlItems=c.$controls.find(A.control),c.$paginationItems=c.$pagination.find(A.page),c.$images=c.$canister.find("img"),c.index=0,c.enabled=!1,c.leftPosition=0,c.totalImages=c.$images.length,c.autoTimer=null,"object"===a.type(c.show)){var j=c.show,k=[];for(e in j)j.hasOwnProperty(e)&&k.push(e);k.sort(D.sortAsc),c.show={};for(e in k)k.hasOwnProperty(e)&&(c.show[k[e]]={width:parseInt(k[e]),count:j[k[e]]})}if(a.mediaquery("bind",c.rawGuid,c.mq,{enter:function(){h.call(c.$el,c)},leave:function(){g.call(c.$el,c)}}),c.totalImages>0)for(c.loadedImages=0,e=0;ea.itemHeight&&(a.itemHeight=f),c++;a.paged&&(a.pageCount-=a.count%a.visible),a.maxMove=-a.pages[a.pageCount-1].left,a.autoHeight&&a.$items.css({height:a.itemHeight});var g="";for(b=0;b'+(b+1)+"";a.$pagination.html(g),a.pageCount<=1?(a.$controls.removeClass(B.visible),a.$pagination.removeClass(B.visible)):(a.$controls.addClass(B.visible),a.$pagination.addClass(B.visible)),a.$paginationItems=a.$el.find(A.page),r(a,a.index,!1),setTimeout(function(){a.$el.addClass(B.animated)},5)}}function j(a){a.enabled&&(a.$items=a.$canister.children().addClass(B.item),i.call(this,a))}function k(a,b){a.enabled&&(D.clearTimer(a.autoTimer),r(a,b-1))}function l(a){var b=a.index-1;a.infinite&&0>b&&(b=a.pageCount-1),r(a,b)}function m(a){var b=a.index+1;a.infinite&&b>=a.pageCount&&(b=0),r(a,b)}function n(a){var b=a.data;b.loadedImages++,b.loadedImages===b.totalImages&&i.call(b.$el,b)}function o(a){var b=a.index+1;b>=a.pageCount&&(b=0),r(a,b)}function p(b){D.killEvent(b);var c=b.data,d=c.index+(a(b.currentTarget).hasClass(B.control_next)?1:-1);D.clearTimer(c.autoTimer),r(c,d)}function q(b){D.killEvent(b);var c=b.data,d=c.$paginationItems.index(a(b.currentTarget));D.clearTimer(c.autoTimer),r(c,d)}function r(a,b,c){0>b&&(b=a.infinite?a.pageCount-1:0),b>=a.pageCount&&(b=a.infinite?0:a.pageCount-1),a.pages[b]&&(a.leftPosition=-a.pages[b].left),a.leftPosition0||isNaN(a.leftPosition))&&(a.leftPosition=0),a.useMargin?a.$canister.css({marginLeft:a.leftPosition}):c===!1?(a.$canister.css(G,"none").css(F,"translateX("+a.leftPosition+"px)"),setTimeout(function(){a.$canister.css(G,"")},5)):a.$canister.css(F,"translateX("+a.leftPosition+"px)"),a.$items.removeClass(B.visible),a.pages[b].$items.addClass(B.visible),c!==!1&&b!==a.index&&(a.infinite||b>-1&&b=a.pageCount||a.leftPosition===a.maxMove)&&a.$controlItems.filter(A.control_next).removeClass(B.visible))}function t(c){if("object"===a.type(c.show)){for(var d in c.show)if(c.show.hasOwnProperty(d)&&b.windowWidth>=c.show[d].width)return c.fill&&c.count0&&(b.touchLeft=0),b.touchLeft-50&&a.deltaX<50?b.index:b.index+("left"===a.directionX?1:-1);y(b,c)}function x(a){var b=a.data,c=b.index+("left"===a.directionX?1:-1);y(b,c)}function y(a,b){a.$canister.css(G,""),r(a,b),a.isTouching=!1}var z=b.Plugin("carousel",{widget:!0,defaults:{autoAdvance:!1,autoHeight:!1,autoTime:8e3,controls:!0,customClass:"",fill:!1,infinite:!1,labels:{next:"Next",previous:"Previous"},maxWidth:1/0,minWidth:"0px",paged:!1,pagination:!0,show:1,useMargin:!1},classes:["viewport","wrapper","container","canister","item","controls","control","pagination","page","animated","enabled","visible","active","control_previous","control_next"],events:{update:"update",panStart:"panstart",pan:"pan",panEnd:"panend",swipe:"swipe"},methods:{_construct:e,_destruct:f,_resize:c,disable:g,enable:h,jump:k,previous:l,next:m,reset:j,resize:i}}),A=z.classes,B=A.raw,C=z.events,D=z.functions,E=[],F=b.transform,G=b.transition}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/checkbox.js b/static/js/formstone/js/checkbox.js
new file mode 100644
index 0000000..d2c0cf9
--- /dev/null
+++ b/static/js/formstone/js/checkbox.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [checkbox.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(b){var c=this.closest("label"),d=c.length?c.eq(0):a("label[for="+this.attr("id")+"]"),e=[p.base,b.customClass].join(" "),f="";b.radio="radio"===this.attr("type"),b.group=this.attr("name"),f+='',f+='
',b.toggle&&(e+=" "+p.toggle,f+='
'+b.labels.on+" ",f+='
'+b.labels.off+" "),b.radio&&(e+=" "+p.radio),f+="
",d.length?d.addClass(p.label).wrap('
').before(f):this.before(''+f+"
"),b.$checkbox=d.length?d.parents(o.base):this.prev(o.base),b.$marker=b.$checkbox.find(o.marker),b.$states=b.$checkbox.find(o.state),b.$label=d,this.is(":checked")&&b.$checkbox.addClass(p.checked),this.is(":disabled")&&b.$checkbox.addClass(p.disabled),this.wrap('
'),this.on(q.focus,b,l).on(q.blur,b,m).on(q.change,b,i).on(q.click,b,h).on(q.deselect,b,k),b.$checkbox.touch({tap:!0}).on(q.tap,b,h)}function d(a){a.$checkbox.off(q.namespace).touch("destroy"),a.$marker.remove(),a.$states.remove(),a.$label.unwrap().removeClass(p.label),this.unwrap().off(q.namespace)}function e(a){this.prop("disabled",!1),a.$checkbox.removeClass(p.disabled)}function f(a){this.prop("disabled",!0),a.$checkbox.addClass(p.disabled)}function g(a){var b=a.$el.is(":disabled"),c=a.$el.is(":checked");b||(c?j({data:a}):k({data:a}))}function h(b){b.stopPropagation();var c=b.data;a(b.target).is(c.$el)||(b.preventDefault(),c.$el.trigger("click"))}function i(a){var b=a.data,c=b.$el.is(":disabled"),d=b.$el.is(":checked");c||(b.radio?j(a):d?j(a):k(a))}function j(b){b.data.radio&&a('input[name="'+b.data.group+'"]').not(b.data.$el).trigger("deselect"),b.data.$checkbox.addClass(p.checked)}function k(a){a.data.$checkbox.removeClass(p.checked)}function l(a){a.data.$checkbox.addClass(p.focus)}function m(a){a.data.$checkbox.removeClass(p.focus)}{var n=b.Plugin("checkbox",{widget:!0,defaults:{customClass:"",toggle:!1,labels:{on:"ON",off:"OFF"}},classes:["element_wrapper","label","marker","flag","radio","focus","checked","disabled","toggle","state","state_on","state_off"],methods:{_construct:c,_destruct:d,enable:e,disable:f,update:g},events:{deselect:"deselect",tap:"tap"}}),o=n.classes,p=o.raw,q=n.events;n.functions}}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/cookie.js b/static/js/formstone/js/cookie.js
new file mode 100644
index 0000000..aafaed2
--- /dev/null
+++ b/static/js/formstone/js/cookie.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [cookie.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(b,c,h){if("object"===a.type(b))g=a.extend(g,b);else if(h=a.extend({},g,h||{}),"undefined"!==a.type(b)){if("undefined"===a.type(c))return e(b);null===c?f(b):d(b,c,h)}return null}function d(b,c,d){var e=!1,f=new Date;d.expires&&"number"===a.type(d.expires)&&(f.setTime(f.getTime()+d.expires),e=f.toGMTString());var g=d.domain?"; domain="+d.domain:"",i=e?"; expires="+e:"",j=e?"; max-age="+d.expires/1e3:"",k=d.path?"; path="+d.path:"",l=d.secure?"; secure":"";h.cookie=b+"="+c+i+j+g+k+l}function e(a){for(var b=a+"=",c=h.cookie.split(";"),d=0;dh;h++){var k=g.eq(h);if(!j(k)){var l="__"+f.guid++,m=f.classes.raw.base+l,n=k.data(c+"-options"),o=a.extend(!0,{$el:k,guid:l,rawGuid:m,dotGuid:"."+m},b,"object"===a.type(n)?n:{});k.addClass(f.classes.raw.element).data(t,o),d(c),f.methods._construct.apply(k,[o].concat(Array.prototype.slice.call(arguments,e?1:0)))}}return g}function h(){f.functions.iterate.apply(this,[f.methods._destruct].concat(Array.prototype.slice.call(arguments,1))),this.removeClass(f.classes.raw.element).removeData(t)}function j(a){return a.data(t)}function o(b){if(this instanceof a){var c=f.methods[b];return"object"!==a.type(b)&&b?c&&0!==b.indexOf("_")?f.functions.iterate.apply(this,[c].concat(Array.prototype.slice.call(arguments,1))):this:g.apply(this,arguments)}}function p(c){var d=f.utilities[c]||f.utilities._initialize||!1;return d?d.apply(b,Array.prototype.slice.call(arguments,"object"===a.type(c)?0:1)):void 0}function q(b){f.defaults=a.extend(!0,f.defaults,b||{})}function r(b){for(var c=this,d=0,e=c.length;e>d;d++){var f=c.eq(d),g=j(f)||{};"undefined"!==a.type(g.$el)&&b.apply(f,[g].concat(Array.prototype.slice.call(arguments,1)))}return c}var s="fs-"+c,t="fs"+c.replace(/(^|\s)([a-z])/g,function(a,b,c){return b+c.toUpperCase()});return f.initialized=!1,f.priority=f.priority||10,f.classes=e("classes",s,m,f.classes),f.events=e("events",c,n,f.events),f.functions=a.extend({getData:j,iterate:r},k,f.functions),f.methods=a.extend(!0,{_setup:a.noop,_construct:a.noop,_destruct:a.noop,_resize:!1,destroy:h},f.methods),f.utilities=a.extend(!0,{_initialize:!1,_delegate:!1,defaults:q},f.utilities),f.widget&&(a.fn[c]=a.fn[t]=o),a[c]=a[t]=f.utilities._delegate||p,f.namespace=c,f.namespaceClean=t,f.guid=0,f.methods._resize&&(l.ResizeHandlers.push({namespace:c,priority:f.priority,callback:f.methods._resize}),l.ResizeHandlers.sort(i)),f}(c,f),l.Plugins[c]};var o=null,p=20;return l.$window.on("resize.fs",g),g(),a(function(){l.$body=a("body");for(var b in l.Plugins)l.Plugins.hasOwnProperty(b)&&d(b)}),n.clickTouchStart=n.click+" "+n.touchStart,f(),l}(jQuery,this,document);
\ No newline at end of file
diff --git a/static/js/formstone/js/dropdown.js b/static/js/formstone/js/dropdown.js
new file mode 100644
index 0000000..2407152
--- /dev/null
+++ b/static/js/formstone/js/dropdown.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [dropdown.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){G=b.$body}function d(c){c.multiple=this.prop("multiple"),c.disabled=this.is(":disabled"),c.multiple?c.links=!1:c.external&&(c.links=!0);var d=this.find(":selected").not(":disabled"),e=d.text(),f=this.find("option").index(d);c.multiple||""===c.label?c.label="":(d=this.prepend(''+c.label+" "),e=c.label,f=0);var g=this.find("option, optgroup"),h=g.filter("option");c.tabIndex=this[0].tabIndex,this[0].tabIndex=-1;var k=[B.base,c.customClass];c.mobile||b.isMobile?k.push(B.mobile):c.cover&&k.push(B.cover),c.multiple&&k.push(B.multiple),c.disabled&&k.push(B.disabled);var l='
',m="";c.multiple||(m+='',m+=a(" ").text(x(e,c.trim)).html(),m+=" "),m+='',m+="
",this.wrap(l).after(m),c.$dropdown=this.parent(A.base),c.$allOptions=g,c.$options=h,c.$selected=c.$dropdown.find(A.selected),c.$wrapper=c.$dropdown.find(A.options),c.$placeholder=c.$dropdown.find(A.placeholder),c.index=-1,c.closed=!0,i(c),c.multiple||t(f,c),c.$selected.touch({tap:!0}).on(C.tap,c,j),c.$dropdown.on(C.click,A.item,c,o).on(C.close,c,n),this.on(C.change,c,p),b.isMobile||(c.$dropdown.on(C.focus,c,q).on(C.blur,c,r),this.on(C.focus,c,function(a){a.data.$dropdown.trigger(C.raw.focus)}))}function e(a){a.$dropdown.hasClass(B.open)&&a.$selected.trigger(C.click),a.$el[0].tabIndex=a.tabIndex,a.$dropdown.off(C.namespace),a.$options.off(C.namespace),a.$placeholder.remove(),a.$selected.remove(),a.$wrapper.remove(),a.$el.off(C.namespace).show().unwrap()}function f(a,b){if("undefined"!=typeof b){var c=a.$items.index(a.$items.filter("[data-value="+b+"]"));a.$items.eq(c).addClass(B.item_disabled),a.$options.eq(c).prop("disabled",!0)}else a.$dropdown.hasClass(B.open)&&a.$selected.trigger(C.click),a.$dropdown.addClass(B.disabled),a.$el.prop("disabled",!0),a.disabled=!0}function g(a,b){if("undefined"!=typeof b){var c=a.$items.index(a.$items.filter("[data-value="+b+"]"));a.$items.eq(c).removeClass(B.item_disabled),a.$options.eq(c).prop("disabled",!1)}else a.$dropdown.removeClass(B.disabled),a.$el.prop("disabled",!1),a.disabled=!1}function h(a){var b=a.index;a.$allOptions=a.$el.find("option, optgroup"),a.$options=a.$allOptions.filter("option"),a.index=-1,b=a.$options.index(a.$options.filter(":selected")),i(a),a.multiple||t(b,a)}function i(b){for(var c="",d=0,e=0,f=b.$allOptions.length;f>e;e++){var g=b.$allOptions.eq(e),h=[];if("OPTGROUP"===g[0].tagName)h.push(B.group),g.is(":disabled")&&h.push(B.disabled),c+=''+g.attr("label")+" ";else{var i=g.val();g.attr("value")||g.attr("value",i),h.push(B.item),g.hasClass(B.item_placeholder)&&h.push(B.item_placeholder),g.is(":selected")&&h.push(B.item_selected),g.is(":disabled")&&h.push(B.item_disabled),c+='',c+=a(" ").text(x(g.text(),b.trim)).html(),c+=" ",d++}}b.$items=b.$wrapper.html(c).find(A.item)}function j(a){D.killEvent(a);var c=a.data;if(!c.disabled)if(c.mobile||!b.isMobile||b.isFirefoxMobile)c.closed?k(c):l(c);else{var d=c.$el[0];if(F.createEvent){var e=F.createEvent("MouseEvents");e.initMouseEvent("mousedown",!1,!0,E,0,0,0,0,0,!1,!1,!1,!1,0,null),d.dispatchEvent(e)}else d.fireEvent&&d.fireEvent("onmousedown")}}function k(b){if(b.closed){a(A.base).not(b.$dropdown).trigger(C.close,[b]);{var c=b.$dropdown.offset(),d=G.outerHeight(),e=b.$wrapper.outerHeight(!0);b.index>=0?b.$items.eq(b.index).position():{left:0,top:0}}c.top+e>d&&b.$dropdown.addClass(B.bottom),G.on(C.click+b.dotGuid,":not("+A.options+")",b,m),b.$dropdown.addClass(B.open),u(b),b.closed=!1}}function l(a){a&&!a.closed&&(G.off(C.click+a.dotGuid),a.$dropdown.removeClass([B.open,B.bottom].join(" ")),a.closed=!0)}function m(b){D.killEvent(b);var c=b.data;c&&0===a(b.currentTarget).parents(A.base).length&&l(c)}function n(a){var b=a.data;b&&l(b)}function o(b){D.killEvent(b);var c=a(this),d=b.data;if(!d.disabled){if(d.$wrapper.is(":visible")){var e=d.$items.index(c);e!==d.index&&(t(e,d),v(d))}d.multiple||l(d)}}function p(b,c){var d=a(this),e=b.data;if(!c&&!e.multiple){var f=e.$options.index(e.$options.filter("[value='"+y(d.val())+"']"));t(f,e),v(e)}}function q(a){D.killEvent(a);var b=a.data;b.disabled||b.multiple||b.$dropdown.addClass(B.focus).on(C.keyDown+b.dotGuid,b,s)}function r(a){D.killEvent(a);var b=a.data;b.$dropdown.removeClass(B.focus).off(C.keyDown+b.dotGuid),b.multiple||l(b)}function s(c){var d=c.data;if(13===c.keyCode)d.closed||(l(d),t(d.index,d)),v(d);else if(!(9===c.keyCode||c.metaKey||c.altKey||c.ctrlKey||c.shiftKey)){D.killEvent(c);var e=d.$items.length-1,f=d.index<0?0:d.index;if(a.inArray(c.keyCode,b.isFirefox?[38,40,37,39]:[38,40])>-1)f+=38===c.keyCode||b.isFirefox&&37===c.keyCode?-1:1,0>f&&(f=0),f>e&&(f=e);else{var g,h,i=String.fromCharCode(c.keyCode).toUpperCase();for(h=d.index+1;e>=h;h++)if(g=d.$options.eq(h).text().charAt(0).toUpperCase(),g===i){f=h;break}if(0>f||f===d.index)for(h=0;e>=h;h++)if(g=d.$options.eq(h).text().charAt(0).toUpperCase(),g===i){f=h;break}}f>=0&&(t(f,d),u(d))}}function t(a,b){var c=b.$items.eq(a),d=b.$options.eq(a),e=c.hasClass(B.item_selected),f=c.hasClass(B.item_disabled);if(!f)if(b.multiple)e?(d.prop("selected",null),c.removeClass(B.item_selected)):(d.prop("selected",!0),c.addClass(B.item_selected));else if(a>-1&&a=0&&!b.hasClass(A.item_placeholder)?b.position():{left:0,top:0};a.$wrapper.scrollTop(a.$wrapper.scrollTop()+c.top)}function v(a){a.links?w(a):a.$el.trigger(C.raw.change,[!0])}function w(a){var b=a.$el.val();a.external?E.open(b):E.location.href=b}function x(a,b){return 0===b?a:a.length>b?a.substring(0,b)+"...":a}function y(a){return"string"==typeof a?a.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"):a}var z=b.Plugin("dropdown",{widget:!0,defaults:{cover:!1,customClass:"",label:"",external:!1,links:!1,mobile:!1,trim:0},methods:{_setup:c,_construct:d,_destruct:e,disable:f,enable:g,update:h,open:k,close:l},classes:["cover","bottom","multiple","mobile","open","disabled","focus","selected","options","group","item","item_disabled","item_selected","item_placeholder"],events:{tap:"tap",close:"close"}}),A=z.classes,B=A.raw,C=z.events,D=z.functions,E=b.window,F=(b.$window,b.document),G=null}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/equalize.js b/static/js/formstone/js/equalize.js
new file mode 100644
index 0000000..b693d37
--- /dev/null
+++ b/static/js/formstone/js/equalize.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [equalize.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){n.iterate.call(o,g)}function d(){o=a(l.element)}function e(b){b.maxWidth=b.maxWidth===1/0?"100000px":b.maxWidth,b.mq="(min-width:"+b.minWidth+") and (max-width:"+b.maxWidth+")",b.type="height"===b.property?"outerHeight":"outerWidth",b.target?a.isArray(b.target)||(b.target=[b.target]):b.target=["> *"],d(),a.mediaquery("bind",b.rawGuid,b.mq,{enter:function(){i.call(b.$el,b)},leave:function(){h.call(b.$el,b)}})}function f(b){j(b),a.mediaquery("unbind",b.rawGuid),d()}function g(a){if(a.data&&(a=a.data),a.enabled)for(var b,c,d,e=0;eb&&(b=c);d.css(a.property,b)}}function h(a){a.enabled&&(a.enabled=!1,j(a))}function i(a){if(!a.enabled){a.enabled=!0;var b=a.$el.find("img");b.length&&b.on(m.load,a,g),g(a)}}function j(a){for(var b=0;b-1||"data:image"===g.substr(0,10),o=I(g),q="url"===l||!m&&!o&&"http"===g.substr(0,4)&&!h,r="element"===l||!m&&!o&&!q&&"#"===h.substr(0,1),t="undefined"!=typeof f;if(r&&(g=h),!(m||o||q||r||t))return;if(P.killEvent(c),U=a.extend({},{visible:!1,gallery:{active:!1},isMobile:b.isMobile||d.mobile,isTouch:b.support.touch,isAnimating:!0,oldContentHeight:0,oldContentWidth:0},d),U.margin*=2,U.type=m?"image":o?"video":"element",m||o){var u=e.data(K+"-gallery");u&&(U.gallery.active=!0,U.gallery.id=u,U.gallery.$items=a("a[data-lightbox-gallery= "+U.gallery.id+"], a[rel= "+U.gallery.id+"]"),U.gallery.index=U.gallery.$items.index(U.$el),U.gallery.total=U.gallery.$items.length-1)}var w="";U.isMobile||(w+='
');var x=[M.raw.base,M.raw.loading,M.raw.animating,U.customClass];U.fixed&&x.push(M.raw.fixed),U.isMobile&&x.push(M.raw.mobile),U.isTouch&&x.push(M.raw.touch),q&&x.push(M.raw.iframed),(r||t)&&x.push(M.raw.inline),w+='',w+='
'+U.labels.close+" ",w+='
',w+='
",S.append(w),U.$overlay=a(M.overlay),U.$lightbox=a(M.base),U.$close=a(M.close),U.$container=a(M.container),U.$content=a(M.content),U.$tools=a(M.tools),U.$meta=a(M.meta),U.$position=a(M.position),U.$caption=a(M.caption),U.$controlBox=a(M.controls),U.$controls=a(M.control),U.isMobile?(U.paddingVertical=U.$close.outerHeight(),U.paddingHorizontal=0,U.mobilePaddingVertical=parseInt(U.$content.css("paddingTop"),10)+parseInt(U.$content.css("paddingBottom"),10),U.mobilePaddingHorizontal=parseInt(U.$content.css("paddingLeft"),10)+parseInt(U.$content.css("paddingRight"),10)):(U.paddingVertical=parseInt(U.$lightbox.css("paddingTop"),10)+parseInt(U.$lightbox.css("paddingBottom"),10),U.paddingHorizontal=parseInt(U.$lightbox.css("paddingLeft"),10)+parseInt(U.$lightbox.css("paddingRight"),10),U.mobilePaddingVertical=0,U.mobilePaddingHorizontal=0),U.contentHeight=U.$lightbox.outerHeight()-U.paddingVertical,U.contentWidth=U.$lightbox.outerWidth()-U.paddingHorizontal,U.controlHeight=U.$controls.outerHeight(),n(),U.gallery.active&&z(),R.on(O.keyDown,A),S.on(O.clickTouchStart,[M.overlay,M.close].join(", "),k),U.gallery.active&&U.$lightbox.on(O.clickTouchStart,M.control,y),U.isMobile&&U.isTouch&&U.$lightbox.on(O.clickTouchStart,M.caption_toggle,p),U.$lightbox.transition({property:"opacity"},function(){m?s(g):o?v(g):q?C(g):r?B(g):t&&D(U.$object)}).addClass(M.raw.open),U.$overlay.addClass(M.raw.open)}}function j(a){"object"!=typeof a&&(U.targetHeight=arguments[0],U.targetWidth=arguments[1]),"element"===U.type?E(U.$content.find("> :first-child")):"image"===U.type?t():"video"===U.type&&w(),m()}function k(a){P.killEvent(a),U&&(U.$lightbox.transition("destroy"),U.$container.transition("destroy"),U.$lightbox.addClass(M.raw.animating).transition({property:"opacity"},function(){U.$lightbox.off(O.namespace),U.$container.off(O.namespace),R.off(O.namespace),S.off(O.namespace),U.$overlay.remove(),U.$lightbox.remove(),U=null,R.trigger(O.close)}),U.$lightbox.removeClass(M.raw.open),U.$overlay.removeClass(M.raw.open),U.isMobile&&T.removeClass(N.lock))}function l(){{var a=o();U.isMobile?0:U.duration}U.isMobile||U.$controls.css({marginTop:(U.contentHeight-U.controlHeight-U.metaHeight)/2}),!U.visible&&U.isMobile&&U.gallery.active&&U.$content.touch({axis:"x",swipe:!0}).on(O.swipe,G),U.$lightbox.transition({property:U.contentHeight!==U.oldContentHeight?"height":"width"},function(){U.$container.transition({property:"opacity"},function(){U.$lightbox.removeClass(M.raw.animating),U.isAnimating=!1}),U.$lightbox.removeClass(M.raw.loading),U.visible=!0,R.trigger(O.open),U.gallery.active&&x()}),U.isMobile||U.$lightbox.css({height:U.contentHeight+U.paddingVertical,width:U.contentWidth+U.paddingHorizontal,top:U.fixed?0:a.top});var b=U.oldContentHeight!==U.contentHeight||U.oldContentWidth!==U.contentWidth;(U.isMobile||!b)&&U.$lightbox.transition("resolve"),U.oldContentHeight=U.contentHeight,U.oldContentWidth=U.contentWidth,U.isMobile&&T.addClass(N.lock)}function m(){if(U.visible&&!U.isMobile){var a=o();U.$controls.css({marginTop:(U.contentHeight-U.controlHeight-U.metaHeight)/2}),U.$lightbox.css({height:U.contentHeight+U.paddingVertical,width:U.contentWidth+U.paddingHorizontal,top:U.fixed?0:a.top})}}function n(){var a=o();U.$lightbox.css({top:U.fixed?0:a.top})}function o(){if(U.isMobile)return{left:0,top:0};var a={left:(b.windowWidth-U.contentWidth-U.paddingHorizontal)/2,top:U.top<=0?(b.windowHeight-U.contentHeight-U.paddingVertical)/2:U.top};return U.fixed!==!0&&(a.top+=R.scrollTop()),a}function p(a){P.killEvent(a),U.captionOpen?q():(U.$lightbox.addClass(M.raw.caption_open).find(M.caption_toggle).text(U.labels.captionOpen),U.captionOpen=!0)}function q(){U.$lightbox.removeClass(M.raw.caption_open).find(M.caption_toggle).text(U.labels.captionClosed),U.captionOpen=!1}function r(){var a=this.attr("title"),b=a!==c&&a?a.replace(/^\s+|\s+$/g,""):!1;return b?''+b+"
":""}function s(b){U.$image=a(" "),U.$image.one(O.load,function(){var a=H(U.$image);U.naturalHeight=a.naturalHeight,U.naturalWidth=a.naturalWidth,U.retina&&(U.naturalHeight/=2,U.naturalWidth/=2),U.$content.prepend(U.$image),""===U.$caption.html()?U.$caption.hide():U.$caption.show(),t(),l()}).error(F).attr("src",b).addClass(M.raw.image),(U.$image[0].complete||4===U.$image[0].readyState)&&U.$image.trigger(O.load)}function t(){var a=0;for(U.windowHeight=U.viewportHeight=b.windowHeight-U.mobilePaddingVertical-U.paddingVertical,U.windowWidth=U.viewportWidth=b.windowWidth-U.mobilePaddingHorizontal-U.paddingHorizontal,U.contentHeight=1/0,U.contentWidth=1/0,U.imageMarginTop=0,U.imageMarginLeft=0;U.contentHeight>U.viewportHeight&&2>a;)U.imageHeight=0===a?U.naturalHeight:U.$image.outerHeight(),U.imageWidth=0===a?U.naturalWidth:U.$image.outerWidth(),U.metaHeight=0===a?0:U.metaHeight,U.spacerHeight=0===a?0:U.spacerHeight,0===a&&(U.ratioHorizontal=U.imageHeight/U.imageWidth,U.ratioVertical=U.imageWidth/U.imageHeight,U.isWide=U.imageWidth>U.imageHeight),U.imageHeighta&&(U.targetImageHeight=a,U.targetImageWidth=U.targetImageHeight*U.ratioVertical)):(U.targetImageHeight=a,U.targetImageWidth=U.targetImageHeight*U.ratioVertical,U.targetImageWidth>b&&(U.targetImageWidth=b,U.targetImageHeight=U.targetImageWidth*U.ratioHorizontal)),(U.targetImageWidth>U.imageWidth||U.targetImageHeight>U.imageHeight)&&(U.targetImageHeight=U.imageHeight,U.targetImageWidth=U.imageWidth),(U.targetImageWidth'),U.$video=a(''),U.$video.attr("src",e).addClass(M.raw.video).prependTo(U.$videoWrapper),U.$content.prepend(U.$videoWrapper),w(),l()}function w(){U.windowHeight=U.viewportHeight=b.windowHeight-U.mobilePaddingVertical-U.paddingVertical,U.windowWidth=U.viewportWidth=b.windowWidth-U.mobilePaddingHorizontal-U.paddingHorizontal,U.videoMarginTop=0,U.videoMarginLeft=0,U.isMobile?(U.isTouch?(U.$controlBox.css({width:b.windowWidth}),U.spacerHeight=U.$controls.outerHeight(!0)):(U.$tools.css({width:b.windowWidth}),U.spacerHeight=U.$tools.outerHeight(!0)),U.viewportHeight-=U.spacerHeight,U.targetVideoWidth=U.viewportWidth,U.targetVideoHeight=U.targetVideoWidth*U.videoRatio,U.targetVideoHeight>U.viewportHeight&&(U.targetVideoHeight=U.viewportHeight,U.targetVideoWidth=U.targetVideoHeight/U.videoRatio),U.videoMarginTop=(U.viewportHeight-U.targetVideoHeight)/2,U.videoMarginLeft=(U.viewportWidth-U.targetVideoWidth)/2):(U.viewportHeight=U.windowHeight-U.margin,U.viewportWidth=U.windowWidth-U.margin,U.targetVideoWidth=U.videoWidth>U.viewportWidth?U.viewportWidth:U.videoWidth,U.targetVideoWidth0&&(b=U.gallery.$items.eq(U.gallery.index-1).attr("href"),I(b)||a(' ')),U.gallery.index'))}function y(b){P.killEvent(b);var c=a(b.currentTarget);U.isAnimating||c.hasClass(M.raw.control_disabled)||(U.isAnimating=!0,q(),U.gallery.index+=c.hasClass(M.raw.control_next)?1:-1,U.gallery.index>U.gallery.total&&(U.gallery.index=U.infinite?0:U.gallery.total),U.gallery.index<0&&(U.gallery.index=U.infinite?U.gallery.total:0),U.$lightbox.addClass(M.raw.animating),U.$container.transition({property:"opacity"},function(){"undefined"!=typeof U.$image&&U.$image.remove(),"undefined"!=typeof U.$videoWrapper&&U.$videoWrapper.remove(),U.$el=U.gallery.$items.eq(U.gallery.index),U.$caption.html(U.formatter.call(U.$el,U)),U.$position.find(M.position_current).html(U.gallery.index+1);var a=U.$el.attr("href"),b=I(a);b?v(a):s(a),z()}),U.$lightbox.addClass(M.raw.loading))}function z(){U.$controls.removeClass(M.raw.control_disabled),U.infinite||(0===U.gallery.index&&U.$controls.filter(M.control_previous).addClass(N.control_disabled),U.gallery.index===U.gallery.total&&U.$controls.filter(M.control_next).addClass(N.control_disabled))}function A(a){!U.gallery.active||37!==a.keyCode&&39!==a.keyCode?27===a.keyCode&&U.$close.trigger(O.click):(P.killEvent(a),U.$controls.filter(37===a.keyCode?M.control_previous:M.control_next).trigger(O.click))}function B(b){var c=a(b).find("> :first-child").clone();D(c)}function C(b){b+=b.indexOf("?")>-1?"&"+U.requestKey+"=true":"?"+U.requestKey+"=true";var c=a('');D(c)}function D(a){U.$content.append(a),E(a),l()}function E(a){U.windowHeight=b.windowHeight-U.mobilePaddingVertical-U.paddingVertical,U.windowWidth=b.windowWidth-U.mobilePaddingHorizontal-U.paddingHorizontal,U.objectHeight=a.outerHeight(!0),U.objectWidth=a.outerWidth(!0),U.targetHeight=U.targetHeight||(U.$el?U.$el.data(K+"-height"):null),U.targetWidth=U.targetWidth||(U.$el?U.$el.data(K+"-width"):null),U.maxHeight=U.windowHeight<0?U.minHeight:U.windowHeight,U.isIframe=a.is("iframe"),U.objectMarginTop=0,U.objectMarginLeft=0,U.isMobile||(U.windowHeight-=U.margin,U.windowWidth-=U.margin),U.contentHeight=U.targetHeight?U.targetHeight:U.isIframe||U.isMobile?U.windowHeight:U.objectHeight,U.contentWidth=U.targetWidth?U.targetWidth:U.isIframe||U.isMobile?U.windowWidth:U.objectWidth,(U.isIframe||U.isObject)&&U.isMobile?(U.contentHeight=U.windowHeight,U.contentWidth=U.windowWidth):U.isObject&&(U.contentHeight=U.contentHeight>U.windowHeight?U.windowHeight:U.contentHeight,U.contentWidth=U.contentWidth>U.windowWidth?U.windowWidth:U.contentWidth)}function F(){var b=a('');U.type="element",U.$tools.remove(),U.$image.off(O.namespace),D(b)}function G(a){U.captionOpen||U.$controls.filter("left"===a.directionX?M.control_next:M.control_previous).trigger(O.click)}function H(a){var b=a[0],c=new Image;return"undefined"!=typeof b.naturalHeight?{naturalHeight:b.naturalHeight,naturalWidth:b.naturalWidth}:"img"===b.tagName.toLowerCase()?(c.src=b.src,{naturalHeight:c.height,naturalWidth:c.width}):!1}function I(a){return a.indexOf("youtube.com")>-1||a.indexOf("youtu.be")>-1||a.indexOf("vimeo.com")>-1}var J=b.Plugin("lightbox",{widget:!0,defaults:{customClass:"",extensions:["jpg","sjpg","jpeg","png","gif"],fixed:!1,formatter:r,infinite:!1,labels:{close:"Close",count:"of",next:"Next",previous:"Previous",captionClosed:"View Caption",captionOpen:"Close Caption"},margin:50,minHeight:100,minWidth:100,mobile:!1,retina:!1,requestKey:"fs-lightbox",top:0,videoRatio:.5625,videoWidth:800},classes:["loading","animating","fixed","mobile","touch","inline","iframed","open","overlay","close","loading_icon","container","content","image","video","video_wrapper","tools","meta","controls","control","control_previous","control_next","control_disabled","position","position_current","position_total","caption_toggle","caption","caption_open","iframe","error","lock"],events:{open:"open",close:"close",swipe:"swipe"},methods:{_setup:d,_construct:f,_destruct:g,_resize:e,resize:j},utilities:{_initialize:h,close:k}}),K=J.namespace,L=J.defaults,M=J.classes,N=M.raw,O=J.events,P=J.functions,Q=b.window,R=b.$window,S=null,T=null,U=null}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/mediaquery.js b/static/js/formstone/js/mediaquery.js
new file mode 100644
index 0000000..8847d4e
--- /dev/null
+++ b/static/js/formstone/js/mediaquery.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [mediaquery.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(b){b=b||{};for(var c in t)t.hasOwnProperty(c)&&(l[c]=b[c]?a.merge(b[c],l[c]):l[c]);l=a.extend(l,b),l.minWidth.sort(p.sortDesc),l.maxWidth.sort(p.sortAsc),l.minHeight.sort(p.sortDesc),l.maxHeight.sort(p.sortAsc);for(var d in t)if(t.hasOwnProperty(d)){s[d]={};for(var e in l[d])if(l[d].hasOwnProperty(e)){var f=window.matchMedia("("+t[d]+": "+(l[d][e]===1/0?1e5:l[d][e])+l.unit+")");f.addListener(g),s[d][l[d][e]]=f}}g()}function d(a,b,c){var d=o.matchMedia(b),e=i(d.media);r[e]||(r[e]={mq:d,active:!0,enter:{},leave:{}},r[e].mq.addListener(h));for(var f in c)c.hasOwnProperty(f)&&r[e].hasOwnProperty(f)&&(r[e][f][a]=c[f]);h(r[e].mq)}function e(a,b){if(a)if(b){var c=i(b);r[c]&&(r[c].enter[a]&&delete r[c].enter[a],r[c].leave[a]&&delete r[c].leave[a])}else for(var d in r)r.hasOwnProperty(d)&&(r[d].enter[a]&&delete r[d].enter[a],r[d].leave[a]&&delete r[d].leave[a])}function f(){q={unit:l.unit};for(var a in t)if(t.hasOwnProperty(a))for(var b in s[a])if(s[a].hasOwnProperty(b)&&s[a][b].matches){var c="Infinity"===b?1/0:parseInt(b,10);a.indexOf("max")>-1?(!q[a]||cq[a])&&(q[a]=c)}}function g(){f(),n.trigger(m.mqChange,[q])}function h(a){var b=i(a.media),c=r[b],d=a.matches?m.enter:m.leave;if(c&&c.active||!c.active&&a.matches){for(var e in c[d])c[d].hasOwnProperty(e)&&c[d][e].apply(c.mq);c.active=!0}}function i(a){return a.replace(/[^a-z0-9\s]/gi,"").replace(/[_\s]/g,"").replace(/^\s+|\s+$/g,"")}function j(){return q}var k=b.Plugin("mediaquery",{utilities:{_initialize:c,state:j,bind:d,unbind:e},events:{mqChange:"mqchange"}}),l={minWidth:[0],maxWidth:[1/0],minHeight:[0],maxHeight:[1/0],unit:"px"},m=a.extend(k.events,{enter:"enter",leave:"leave"}),n=b.$window,o=n[0],p=k.functions,q=null,r=[],s={},t={minWidth:"min-width",maxWidth:"max-width",minHeight:"min-height",maxHeight:"max-height"}}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/navigation.js b/static/js/formstone/js/navigation.js
new file mode 100644
index 0000000..9e80f84
--- /dev/null
+++ b/static/js/formstone/js/navigation.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [navigation.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){w=a("html, body")}function d(b){b.handleGuid=u.handle+b.guid,b.isToggle="toggle"===b.type,b.open=!1,b.isToggle&&(b.gravity="");var c=u.base,d=[c,b.type].join("-"),e=b.gravity?[d,b.gravity].join("-"):"",f=[b.rawGuid,b.customClass].join(" ");b.handle=this.data(s+"-handle"),b.content=this.data(s+"-content"),b.handleClasses=[u.handle,u.handle.replace(c,d),e?u.handle.replace(c,e):"",b.handleGuid,f].join(" "),b.navClasses=[u.nav.replace(c,d),e?u.nav.replace(c,e):"",f].join(" "),b.contentClasses=[u.content.replace(c,d),e?u.content.replace(c,e):"",f].join(" "),b.$nav=this.addClass(b.navClasses),b.$handle=a(b.handle).addClass(b.handleClasses),b.$content=a(b.content).addClass(b.contentClasses),b.$animate=a().add(b.$nav).add(b.$content),p(b),b.$handle.attr("data-swap-target",b.dotGuid).attr("data-swap-linked","."+b.handleGuid).attr("data-swap-group",u.base).on("activate.swap"+b.dotGuid,b,j).on("deactivate.swap"+b.dotGuid,b,k).on("enable.swap"+b.dotGuid,b,l).on("disable.swap"+b.dotGuid,b,m).swap({maxWidth:b.maxWidth,classes:{target:b.dotGuid,enabled:t.enabled,active:t.open,raw:{target:b.rawGuid,enabled:u.enabled,active:u.open}}})}function e(a){a.$content.removeClass(a.contentClasses).off(v.namespace),a.$handle.removeAttr("data-swap-target").removeData("swap-target").removeAttr("data-swap-linked").removeData("swap-linked").removeClass(a.handleClasses).off(a.dotGuid).text(a.originalLabel).swap("destroy"),q(a),o(a),this.removeClass(a.navClasses).off(v.namespace)}function f(a){a.$handle.swap("activate")}function g(a){a.$handle.swap("deactivate")}function h(a){a.$handle.swap("enable")}function i(a){a.$handle.swap("disable")}function j(a){if(!a.originalEvent){var b=a.data;b.open||(b.$el.trigger(v.open),b.$content.addClass(u.open).one(v.clickTouchStart,function(){g(b)}),b.label&&b.$handle.text(b.labels.open),n(b),b.open=!0)}}function k(a){if(!a.originalEvent){var b=a.data;b.open&&(b.$el.trigger(v.close),b.$content.removeClass(u.open).off(v.namespace),b.label&&b.$handle.text(b.labels.closed),o(b),b.open=!1)}}function l(a){var b=a.data;b.$content.addClass(u.enabled),setTimeout(function(){b.$animate.addClass(u.animated)},0),b.label&&b.$handle.text(b.labels.closed)}function m(a){var b=a.data;b.$content.removeClass(u.enabled,u.animated),b.$animate.removeClass(u.animated),q(b),o(b)}function n(a){a.isToggle||w.addClass(u.lock)}function o(a){a.isToggle||w.removeClass(u.lock)}function p(a){if(a.label)if(a.$handle.length>1){a.originalLabel=[];for(var b=0,c=a.$handle.length;c>b;b++)a.originalLabel[b]=a.$handle.eq(b).text()}else a.originalLabel=a.$handle.text()}function q(a){if(a.label)if(a.$handle.length>1)for(var b=0,c=a.$handle.length;c>b;b++)a.$handle.eq(b).text(a.originalLabel[b]);else a.$handle.text(a.originalLabel)}var r=b.Plugin("navigation",{widget:!0,defaults:{customClass:"",gravity:"left",label:!0,labels:{closed:"Menu",open:"Close"},maxWidth:"980px",type:"toggle"},classes:["handle","nav","content","animated","enabled","open","toggle","push","reveal","overlay","left","right","lock"],events:{tap:"tap",open:"open",close:"close"},methods:{_setup:c,_construct:d,_destruct:e,open:f,close:g,enable:h,disable:i}}),s=r.namespace,t=r.classes,u=t.raw,v=r.events,w=(r.functions,null)}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/number.js b/static/js/formstone/js/number.js
new file mode 100644
index 0000000..c0bdef3
--- /dev/null
+++ b/static/js/formstone/js/number.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [number.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){s=b.$body}function d(a){var b=parseFloat(this.attr("min")),c=parseFloat(this.attr("max"));a.min=b||0===b?b:!1,a.max=c||0===c?c:!1,a.step=parseFloat(this.attr("step"))||1,a.timer=null,a.digits=l(a.step),a.disabled=this.prop("disabled");var d="";d+=''+a.labels.up+" ",d+=''+a.labels.down+" ",this.wrap('
').after(d),a.$container=this.parent(o.base),a.$arrows=a.$container.find(o.arrow),this.on(q.keyPress,o.element,a,h),a.$container.on([q.touchStart,q.mouseDown].join(" "),o.arrow,a,i)}function e(a){a.$arrows.remove(),this.unwrap().off(q.namespace)}function f(a){a.disabled&&(this.prop("disabled",!1),a.$container.removeClass(p.disabled),a.disabled=!1)}function g(a){a.disabled||(this.prop("disabled",!0),a.$container.addClass(p.disabled),a.disabled=!0)}function h(a){var b=a.data;(38===a.keyCode||40===a.keyCode)&&(a.preventDefault(),k(b,38===a.keyCode?b.step:-b.step))}function i(b){r.killEvent(b),j(b);var c=b.data;if(!c.disabled){var d=a(b.target).hasClass(p.up)?c.step:-c.step;c.timer=r.startTimer(c.timer,110,function(){k(c,d,!1)},!0),k(c,d),s.on([q.touchEnd,q.mouseUp].join(" "),c,j)}}function j(a){r.killEvent(a);var b=a.data;r.clearTimer(b.timer,!0),s.off(q.namespace)}function k(b,c){var d=parseFloat(b.$el.val()),e=c;"undefined"===a.type(d)||isNaN(d)?e=b.min!==!1?b.min:0:b.min!==!1&&db.max&&(e-=b.step),e!==d&&(e=m(e,b.digits),b.$el.val(e).trigger(q.raw.change))}function l(a){var b=String(a);return b.indexOf(".")>-1?b.length-b.indexOf(".")-1:0}function m(a,b){var c=Math.pow(10,b);return Math.round(a*c)/c}var n=b.Plugin("number",{widget:!0,defaults:{customClass:"",labels:{up:"Up",down:"Down"}},classes:["arrow","up","down","disabled"],methods:{_setup:c,_construct:d,_destruct:e,enable:f,disable:g},events:{tap:"tap"}}),o=n.classes,p=o.raw,q=n.events,r=n.functions,s=null}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/pagination.js b/static/js/formstone/js/pagination.js
new file mode 100644
index 0000000..61f10b6
--- /dev/null
+++ b/static/js/formstone/js/pagination.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [pagination.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(b){b.mq="(max-width:"+(b.maxWidth===1/0?"100000px":b.maxWidth)+")";var c="";c+=''+b.labels.previous+" ",c+=''+b.labels.next+" ",c+='',c+='0 ',c+=" "+b.labels.count+" ",c+='0 ',c+="
",c+=' ',this.addClass(m.base).wrapInner('
').prepend(c),b.$controls=this.find(l.control),b.$pages=this.find(l.pages),b.$items=b.$pages.children().addClass(m.page),b.$position=this.find(l.position),b.$select=this.find(l.select),b.index=-1,b.total=b.$items.length-1;var d=b.$items.index(b.$items.filter(l.active));b.$items.eq(0).addClass(m.first).after('… ').end().eq(b.total).addClass(m.last).before('… '),b.$ellipsis=b.$pages.find(l.ellipsis),j(b),this.on(n.clickTouchStart,l.page,b,g).on(n.clickTouchStart,l.control,b,e).on(n.clickTouchStart,l.position,b,h).on(n.change,l.select,f),a.mediaquery("bind",b.rawGuid,b.mq,{enter:function(){b.$el.addClass(m.mobile)},leave:function(){b.$el.removeClass(m.mobile)}}),i(b,d)}function d(b){a.mediaquery("unbind",b.rawGuid),b.$controls.remove(),b.$ellipsis.remove(),b.$select.remove(),b.$position.remove(),b.$items.removeClass([m.page,m.active,m.visible,m.first,m.last].join(" ")).unwrap(),this.removeClass(m.base).off(n.namespace)}function e(b){o.killEvent(b);var c=b.data,d=c.index+(a(b.currentTarget).hasClass(m.control_previous)?-1:1);d>=0&&c.$items.eq(d).trigger(n.raw.click)}function f(b){o.killEvent(b);var c=b.data,d=a(b.currentTarget),e=parseInt(d.val(),10);c.$items.eq(e).trigger(n.raw.click)}function g(b){o.killEvent(b);var c=b.data,d=c.$items.index(a(b.currentTarget));i(c,d)}function h(a){o.killEvent(a);var c=a.data;if(b.isMobile&&!b.isFirefoxMobile){var d=c.$select[0];if(window.document.createEvent){var e=window.document.createEvent("MouseEvents");e.initMouseEvent("mousedown",!1,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),d.dispatchEvent(e)}else d.fireEvent&&d.fireEvent("onmousedown")}}function i(a,b){if(0>b&&(b=0),b>a.total&&(b=a.total),b!==a.index){a.index=b;var c=a.index-a.visible,d=a.index+(a.visible+1);0>c&&(c=0),d>a.total&&(d=a.total),a.$items.removeClass(m.visible).filter(l.active).removeClass(m.active).end().eq(a.index).addClass(m.active).end().slice(c,d).addClass(m.visible),a.$position.find(l.current).text(a.index+1).end().find(l.total).text(a.total+1),a.$select.val(a.index),a.$controls.removeClass(l.disabled),0===b&&a.$controls.filter(l.control_previous).addClass(m.disabled),b===a.total&&a.$controls.filter(l.control_next).addClass(m.disabled),a.$ellipsis.removeClass(m.visible),b>a.visible+1&&a.$ellipsis.eq(0).addClass(m.visible),bPage "+(c+1)+"";a.$select.html(b)}var k=b.Plugin("pagination",{widget:!0,defaults:{ajax:!1,customClass:"",labels:{count:"of",next:"Next",previous:"Previous"},maxWidth:"740px",visible:2},classes:["pages","page","active","first","last","visible","ellipsis","control","control_previous","control_next","position","select","mobile","current","total"],events:{update:"update"},methods:{_construct:c,_destruct:d}}),l=k.classes,m=l.raw,n=k.events,o=k.functions}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/range.js b/static/js/formstone/js/range.js
new file mode 100644
index 0000000..7777af7
--- /dev/null
+++ b/static/js/formstone/js/range.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [range.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){v.iterate.call(w,i)}function d(){w=a(s.element)}function e(a){a.formatter||(a.formatter=q),a.min=parseFloat(this.attr("min"))||0,a.max=parseFloat(this.attr("max"))||100,a.step=parseFloat(this.attr("step"))||1,a.digits=a.step.toString().length-a.step.toString().indexOf("."),a.value=parseFloat(this.val())||a.min+(a.max-a.min)/2;var b="";a.disbaled=this.is(":disabled"),a.vertical="vertical"===this.attr("orient")||a.vertical,b+='";var c=[t.base,a.customClass,a.vertical?t.vertical:"",a.labels?t.labels:"",a.disabled?t.disabled:""];if(this.addClass(t.element).wrap('
').after(b),a.$container=this.parents(s.base),a.$track=a.$container.find(s.track),a.$handle=a.$container.find(s.handle),a.$output=a.$container.find(s.output),a.labels){var e=''+a.formatter.call(this,a.labels.max?a.labels.max:a.max)+" ",f=''+a.formatter.call(this,a.labels.max?a.labels.min:a.min)+" ";a.$container.prepend(a.vertical?e:f).append(a.vertical?f:e)}a.$labels=a.$container.find(s.label),this.on(u.focus,a,m).on(u.blur,a,n).on(u.change,a,p),a.$container.touch({pan:!0,axis:a.vertical?"y":"x"}).on(u.panStart,a,j).on(u.pan,a,k).on(u.panEnd,a,l),d(),i.call(this,a)}function f(a){a.$container.off(u.namespace).touch("destroy"),a.$track.remove(),a.$labels.remove(),this.unwrap().removeClass(t.element).off(u.namespace),d()}function g(a){a.disabled&&(this.prop("disabled",!1),a.$container.removeClass(t.disabled),a.disabled=!1)}function h(a){a.disabled||(this.prop("disabled",!0),a.$container.addClass(t.disabled),a.disabled=!0)}function i(a){a.stepCount=(a.max-a.min)/a.step,a.offset=a.$track.offset(),a.vertical?(a.trackHeight=a.$track.outerHeight(),a.handleHeight=a.$handle.outerHeight(),a.increment=a.trackHeight/a.stepCount):(a.trackWidth=a.$track.outerWidth(),a.handleWidth=a.$handle.outerWidth(),a.increment=a.trackWidth/a.stepCount);var b=(a.$el.val()-a.min)/(a.max-a.min);o(a,b,!0)}function j(a){v.killEvent(a);var b=a.data;b.disbaled||(k(a),b.$container.addClass(t.focus))}function k(a){v.killEvent();var b=a.data,c=0;c=b.vertical?1-(a.pageY-b.offset.top)/b.trackHeight:(a.pageX-b.offset.left)/b.trackWidth,o(b,c)}function l(a){v.killEvent(a);var b=a.data;b.$container.removeClass(t.focus)}function m(a){a.data.$container.addClass("focus")}function n(a){a.data.$container.removeClass("focus")}function o(a,b,c){a.increment>1&&(b=a.vertical?Math.round(b*a.stepCount)*a.increment/a.trackHeight:Math.round(b*a.stepCount)*a.increment/a.trackWidth),0>b&&(b=0),b>1&&(b=1);var d=(a.min-a.max)*b;d=-parseFloat(d.toFixed(a.digits)),a.$handle.css(a.vertical?"bottom":"left",100*b+"%"),d+=a.min,d!==a.value&&d&&c!==!0&&(a.$el.val(d).trigger(u.change,[!0]),a.value=d)}function p(a,b){var c=a.data;if(!b&&!c.disabled){var d=(c.$el.val()-c.min)/(c.max-c.min);o(c,d)}}function q(a){var b=a.toString().split(".");return b[0]=b[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),b.join(".")}var r=b.Plugin("range",{widget:!0,defaults:{customClass:"",formatter:!1,labels:{max:!1,min:!1},vertical:!1},classes:["track","handle","marker","labels","label","label_min","label_max","vertical","focus","disabled"],methods:{_construct:e,_destruct:f,_resize:c,enable:g,disable:h,resize:i},events:{panStart:"panstart",pan:"pan",panEnd:"panend"}}),s=r.classes,t=s.raw,u=r.events,v=r.functions,w=[]}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/scrollbar.js b/static/js/formstone/js/scrollbar.js
new file mode 100644
index 0000000..cf5d947
--- /dev/null
+++ b/static/js/formstone/js/scrollbar.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [scrollbar.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(){r=b.$body}function d(){w.iterate.call(y,i)}function e(){y=a(t.base)}function f(a){var b="";b+='",a.paddingRight=parseInt(this.css("padding-right"),10),a.paddingBottom=parseInt(this.css("padding-bottom"),10),this.addClass([u.base,a.customClass,a.horizontal?u.horizontal:""].join(" ")).wrapInner('
').prepend(b),a.$content=this.find(t.content),a.$bar=this.find(t.bar),a.$track=this.find(t.track),a.$handle=this.find(t.handle),a.trackMargin=parseInt(a.trackMargin,10),a.$content.on(v.scroll,a,j),this.on(v.touchMouseDown,t.track,a,l).on(v.touchMouseDown,t.handle,a,m),i(a),e()}function g(a){a.$bar.remove(),a.$content.off(v.namespace).contents().unwrap(),this.removeClass([u.base,u.active,a.customClass].join(" ")).off(v.namespace)}function h(b,c,d){var e=d||b.duration,f={};if("number"!==a.type(c)){var g=a(c);if(g.length>0){var h=g.position();c=b.horizontal?h.left+b.$content.scrollLeft():h.top+b.$content.scrollTop()}else c=b.$content.scrollTop()}f[b.horizontal?"scrollLeft":"scrollTop"]=c,b.$content.stop().animate(f,e)}function i(a){a.$el.addClass(u.isSetup);var b={},c={},d={},e=0,f=!0;if(a.horizontal){a.barHeight=a.$content[0].offsetHeight-a.$content[0].clientHeight,a.frameWidth=a.$content.outerWidth(),a.trackWidth=a.frameWidth-2*a.trackMargin,a.scrollWidth=a.$content[0].scrollWidth,a.ratio=a.trackWidth/a.scrollWidth,a.trackRatio=a.trackWidth/a.scrollWidth,a.handleWidth=a.handleSize>0?a.handleSize:a.trackWidth*a.trackRatio,a.scrollRatio=(a.scrollWidth-a.frameWidth)/(a.trackWidth-a.handleWidth),a.handleBounds={left:0,right:a.trackWidth-a.handleWidth},a.$content.css({paddingBottom:a.barHeight+a.paddingBottom});var g=a.$content.scrollLeft();e=g*a.ratio,f=a.scrollWidth<=a.frameWidth,b={width:a.frameWidth},c={width:a.trackWidth,marginLeft:a.trackMargin,marginRight:a.trackMargin},d={width:a.handleWidth}}else{a.barWidth=a.$content[0].offsetWidth-a.$content[0].clientWidth,a.frameHeight=a.$content.outerHeight(),a.trackHeight=a.frameHeight-2*a.trackMargin,a.scrollHeight=a.$content[0].scrollHeight,a.ratio=a.trackHeight/a.scrollHeight,a.trackRatio=a.trackHeight/a.scrollHeight,a.handleHeight=a.handleSize>0?a.handleSize:a.trackHeight*a.trackRatio,a.scrollRatio=(a.scrollHeight-a.frameHeight)/(a.trackHeight-a.handleHeight),a.handleBounds={top:0,bottom:a.trackHeight-a.handleHeight};var h=a.$content.scrollTop();e=h*a.ratio,f=a.scrollHeight<=a.frameHeight,b={height:a.frameHeight},c={height:a.trackHeight,marginBottom:a.trackMargin,marginTop:a.trackMargin},d={height:a.handleHeight}}f?a.$el.removeClass(u.active):a.$el.addClass(u.active),a.$bar.css(b),a.$track.css(c),a.$handle.css(d),q(a,e),a.$el.removeClass(u.setup)}function j(a){w.killEvent(a);var b=a.data,c={};if(b.horizontal){var d=b.$content.scrollLeft();0>d&&(d=0),b.handleLeft=d/b.scrollRatio,b.handleLeft>b.handleBounds.right&&(b.handleLeft=b.handleBounds.right),c={left:b.handleLeft}}else{var e=b.$content.scrollTop();0>e&&(e=0),b.handleTop=e/b.scrollRatio,b.handleTop>b.handleBounds.bottom&&(b.handleTop=b.handleBounds.bottom),c={top:b.handleTop}}b.$handle.css(c)}function k(b){var c=b.originalEvent,d="undefined"!==a.type(c.targetTouches)?c.targetTouches[0]:null;return{pageX:d?d.pageX:b.clientX,pageY:d?d.pageY:b.clientY}}function l(a){w.killEvent(a);var b=a.data,c=k(a),d=b.$track.offset();b.horizontal?(b.pointerStart=c.pageX,b.handleLeft=c.pageX-d.left+x.scrollLeft()-b.handleWidth/2,q(b,b.handleLeft)):(b.pointerStart=c.pageY,b.handleTop=c.pageY-d.top+x.scrollTop()-b.handleHeight/2,q(b,b.handleTop)),n(b)}function m(a){w.killEvent(a);var b=a.data,c=k(a);b.horizontal?(b.pointerStart=c.pageX,b.handleLeft=parseInt(b.$handle.css("left"),10)):(b.pointerStart=c.pageY,b.handleTop=parseInt(b.$handle.css("top"),10)),n(b)}function n(a){a.$content.off(v.namespace),r.on(v.touchMouseMove,a,o).on(v.touchMouseUp,a,p)}function o(a){w.killEvent(a);var b=a.data,c=k(a),d=0;d=b.horizontal?b.handleLeft-(b.pointerStart-c.pageX):b.handleTop-(b.pointerStart-c.pageY),q(b,d)}function p(a){w.killEvent(a),a.data.$content.on(v.scroll,a.data,j),r.off(v.namespace)}function q(a,b){var c={};a.horizontal?(ba.handleBounds.right&&(b=a.handleBounds.right),c={left:b},a.$content.scrollLeft(Math.round(b*a.scrollRatio))):(ba.handleBounds.bottom&&(b=a.handleBounds.bottom),c={top:b},a.$content.scrollTop(Math.round(b*a.scrollRatio))),a.$handle.css(c)}var r,s=b.Plugin("scrollbar",{widget:!0,defaults:{customClass:"",duration:0,handleSize:0,horizontal:!1,trackMargin:0},classes:["content","bar","track","handle","horizontal","setup","active"],methods:{_setup:c,_construct:f,_destruct:g,_resize:d,scroll:h,resize:i}}),t=s.classes,u=t.raw,v=s.events,w=s.functions,x=b.$window,y=[];v.touchMouseDown=[v.touchStart,v.mouseDown].join(" "),v.touchMouseMove=[v.touchMove,v.mouseMove].join(" "),v.touchMouseUp=[v.touchEnd,v.mouseUp].join(" ")}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/swap.js b/static/js/formstone/js/swap.js
new file mode 100644
index 0000000..459b17d
--- /dev/null
+++ b/static/js/formstone/js/swap.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [swap.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(b){b.enabled=!1,b.active=!1,b.classes=a.extend(!0,{},l,b.classes),b.target=this.data(k+"-target"),b.$target=a(b.target).addClass(b.classes.raw.target),b.linked=this.data(k+"-linked"),b.mq="(max-width:"+(b.maxWidth===1/0?"100000px":b.maxWidth)+")";var c=this.data(k+"-group");b.group=c?"[data-"+k+'-group="'+c+'"]':!1,!b.collapse&&b.group&&a(b.group).eq(0).attr("data-"+k+"-active","true"),b.onEnable=this.data(k+"-active"),b.$swaps=a().add(this).add(b.$target),this.touch({tap:!0}).on(m.tap+b.dotGuid,b,i),a.mediaquery("bind",b.rawGuid,b.mq,{enter:function(){g.call(b.$el,b)},leave:function(){h.call(b.$el,b)}})}function d(b){a.mediaquery("unbind",b.rawGuid),b.$swaps.removeClass([b.classes.raw.enabled,b.classes.raw.active].join(" ")).off(m.namespace),this.touch("destroy")}function e(b,c){if(b.enabled&&!b.active){a(b.group).not(b.$el)[j.namespace]("deactivate");var d=b.group?a(b.group).index(b.$el):null;b.$swaps.addClass(b.classes.raw.active),b.linked&&!c&&(a(b.linked).not(b.$el).swap("activate",!0),this.trigger(m.activate,[d])),b.active=!0}}function f(b,c){b.enabled&&b.active&&(b.$swaps.removeClass(b.classes.raw.active),b.linked&&!c&&(a(b.linked).not(b.$el).swap("deactivate",!0),this.trigger(m.deactivate)),b.active=!1)}function g(b,c){b.enabled||(b.enabled=!0,b.$swaps.addClass(b.classes.raw.enabled),c||a(b.linked).not(b.$el).swap("enable"),this.trigger(m.enable),b.onEnable?(b.active=!0,b.$swaps.addClass(b.classes.raw.active)):(b.active=!0,f.call(this,b)))}function h(b,c){b.enabled&&(b.enabled=!1,b.$swaps.removeClass([b.classes.raw.enabled,b.classes.raw.active].join(" ")),c||a(b.linked).not(b.$el).swap("disable"),this.trigger(m.disable))}function i(a){n.killEvent(a);var b=a.data;b.active&&b.collapse?f.call(b.$el,b):e.call(b.$el,b)}var j=b.Plugin("swap",{widget:!0,defaults:{collapse:!0,maxWidth:1/0},classes:["target","enabled","active"],events:{tap:"tap",activate:"activate",deactivate:"deactivate",enable:"enable",disable:"disable"},methods:{_construct:c,_destruct:d,activate:e,deactivate:f,enable:g,disable:h}}),k=j.namespace,l=j.classes,m=j.events,n=j.functions}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/tabs.js b/static/js/formstone/js/tabs.js
new file mode 100644
index 0000000..3ddf3e3
--- /dev/null
+++ b/static/js/formstone/js/tabs.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [tabs.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(b){b.mq="(max-width:"+(b.mobileMaxWidth===1/0?"100000px":b.mobileMaxWidth)+")",b.content=this.attr("href"),b.group=this.data(p+"-group"),b.tabClasses=[r.tab,b.rawGuid].join(" "),b.mobileTabClasses=[r.tab,r.tab_mobile,b.rawGuid].join(" "),b.contentClasses=[r.content,b.rawGuid].join(" "),b.$mobileTab=a(''+this.text()+" "),b.$content=a(b.content).addClass(b.contentClasses),b.$content.before(b.$mobileTab),this.attr("data-swap-target",b.content).attr("data-swap-group",b.group).addClass(b.tabClasses).on("activate.swap"+b.dotGuid,b,h).on("deactivate.swap"+b.dotGuid,b,i).on("enable.swap"+b.dotGuid,b,j).on("disable.swap"+b.dotGuid,b,k).swap({maxWidth:b.maxWidth,classes:{target:b.dotGuid,enabled:q.enabled,active:q.active,raw:{target:b.rawGuid,enabled:r.enabled,active:r.active}},collapse:!1}),b.$mobileTab.touch({tap:!0}).on("tap"+b.dotGuid,b,l),a.mediaquery("bind",b.rawGuid,b.mq,{enter:function(){m.call(b.$el,b)},leave:function(){n.call(b.$el,b)}})}function d(b){a.mediaquery("unbind",b.rawGuid),b.$mobileTab.off(s.namespace).touch("destroy").remove(),b.$content.removeClass(r.content),this.removeAttr("data-swap-target").removeData("data-swap-target").removeAttr("data-swap-group").removeData("data-swap-group").removeClass(r.tab).off(s.namespace).swap("destroy")}function e(){this.swap("activate")}function f(){this.swap("enable")}function g(){this.swap("disable")}function h(a){if(!a.originalEvent){var b=a.data,c=0;b.$el.trigger(s.update,[c]),b.$mobileTab.addClass(r.active),b.$content.addClass(r.active)}}function i(a){if(!a.originalEvent){var b=a.data;b.$mobileTab.removeClass(r.active),b.$content.removeClass(r.active)}}function j(a){var b=a.data;b.$mobileTab.addClass(r.enabled),b.$content.addClass(r.enabled)}function k(a){var b=a.data;b.$mobileTab.removeClass(r.enabled),b.$content.removeClass(r.enabled)}function l(a){a.data.$el.swap("activate")}function m(a){a.$el.addClass(r.mobile),a.$mobileTab.addClass(r.mobile)}function n(a){a.$el.removeClass(r.mobile),a.$mobileTab.removeClass(r.mobile)}{var o=b.Plugin("tabs",{widget:!0,defaults:{customClass:"",maxWidth:1/0,mobileMaxWidth:"740px",vertical:!1},classes:["tab","tab_mobile","mobile","content","enabled","active"],events:{tap:"tap",update:"update"},methods:{_construct:c,_destruct:d,activate:e,enable:f,disable:g}}),p=o.namespace,q=o.classes,r=q.raw,s=o.events;o.functions}}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/tooltip.js b/static/js/formstone/js/tooltip.js
new file mode 100644
index 0000000..3e77a45
--- /dev/null
+++ b/static/js/formstone/js/tooltip.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [tooltip.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(a){this.on(o.mouseEnter,a,e)}function d(){j(),this.off(o.namespace)}function e(a){j();var b=a.data;b.left=a.pageX,b.top=a.pageY,h(b)}function f(a){var b=a.data;p.clearTimer(b.timer),j()}function g(a){i(a.pageX,a.pageY)}function h(c){j();var d="";d+='',d+='
',d+=c.formatter.call(c.$el,c),d+=' ',d+="
",d+="
",q={$tooltip:a(d),$el:c.$el},b.$body.append(q.$tooltip);var e=q.$tooltip.find(m.content),h=q.$tooltip.find(m.caret),k=c.$el.offset(),l=c.$el.outerHeight(),r=c.$el.outerWidth(),s=0,t=0,u=0,v=0,w=!1,x=!1,y=h.outerHeight(!0),z=h.outerWidth(!0),A=e.outerHeight(!0),B=e.outerWidth(!0);"right"===c.direction||"left"===c.direction?(x=(A-y)/2,v=-A/2,"right"===c.direction?u=c.margin:"left"===c.direction&&(u=-(B+c.margin))):(w=(B-z)/2,u=-B/2,"bottom"===c.direction?v=c.margin:"top"===c.direction&&(v=-(A+c.margin))),e.css({top:v,left:u}),h.css({top:x,left:w}),c.follow?c.$el.on(o.mouseMove,c,g):(c.match?"right"===c.direction||"left"===c.direction?(t=c.top,"right"===c.direction?s=k.left+r:"left"===c.direction&&(s=k.left)):(s=c.left,"bottom"===c.direction?t=k.top+l:"top"===c.direction&&(t=k.top)):"right"===c.direction||"left"===c.direction?(t=k.top+l/2,"right"===c.direction?s=k.left+r:"left"===c.direction&&(s=k.left)):(s=k.left+r/2,"bottom"===c.direction?t=k.top+l:"top"===c.direction&&(t=k.top)),i(s,t)),c.timer=p.startTimer(c.timer,c.delay,function(){q.$tooltip.addClass(n.visible)}),c.$el.one(o.mouseLeave,c,f)}function i(a,b){q&&q.$tooltip.css({left:a,top:b})}function j(){q&&(q.$el.off([o.mouseMove,o.mouseLeave].join(" ")),q.$tooltip.remove(),q=null)}function k(){return this.data("title")}var l=b.Plugin("tooltip",{widget:!0,defaults:{customClass:"",delay:0,direction:"top",follow:!1,formatter:k,margin:15,match:!1},classes:["content","caret","visible","top","bottom","right","left"],methods:{_construct:c,_destruct:d}}),m=l.classes,n=m.raw,o=l.events,p=l.functions,q=null}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/touch.js b/static/js/formstone/js/touch.js
new file mode 100644
index 0000000..0cae1b7
--- /dev/null
+++ b/static/js/formstone/js/touch.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [touch.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(a){a.touches=[],a.touching=!1,this.on(r.dragStart,s.killEvent),a.tap?(a.pan=!1,a.scale=!1,a.swipe=!1,b.support.touch?this.on([r.touchStart,r.pointerDown].join(" "),a,f):this.on(r.click,a,k)):(a.pan||a.swipe||a.scale)&&(a.tap=!1,a.swipe&&(a.pan=!0),a.scale&&(a.axis=!1),a.axis?(a.axisX="x"===a.axis,a.axisY="y"===a.axis):o(this,"none"),this.on([r.touchStart,r.pointerDown].join(" "),a,e),a.pan&&!b.support.touch&&this.on(r.mouseDown,a,f))}function d(){this.off(r.namespace),o(this,"")}function e(a){a.preventManipulation&&a.preventManipulation();var b=a.data,c=a.originalEvent;if(c.type.match(/(up|end)$/i))return void j(a);if(c.pointerId){var d=!1;for(var e in b.touches)b.touches[e].id===c.pointerId&&(d=!0,b.touches[e].pageX=c.clientX,b.touches[e].pageY=c.clientY);d||b.touches.push({id:c.pointerId,pageX:c.clientX,pageY:c.clientY})}else b.touches=c.touches;c.type.match(/(down|start)$/i)?f(a):c.type.match(/move$/i)&&g(a)}function f(b){var c=b.data,d="undefined"!==a.type(c.touches)?c.touches[0]:null;if(c.touching||(c.startE=b.originalEvent,c.startX=d?d.pageX:b.pageX,c.startY=d?d.pageY:b.pageY,c.startT=(new Date).getTime(),c.scaleD=1,c.passed=!1),c.tap)c.clicked=!1,c.$el.on([r.touchMove,r.pointerMove].join(" "),c,e).on([r.touchEnd,r.touchCancel,r.pointerUp,r.pointerCancel].join(" "),c,e);else if(c.pan||c.scale){c.$links&&c.$links.off(r.click);var f=l(c.scale?r.scaleStart:r.panStart,b,c.startX,c.startY,c.scaleD,0,0,"","");if(c.scale&&c.touches&&c.touches.length>=2){var h=c.touches;c.pinch={startX:m(h[0].pageX,h[1].pageX),startY:m(h[0].pageY,h[1].pageY),startD:n(h[1].pageX-h[0].pageX,h[1].pageY-h[0].pageY)},f.pageX=c.startX=c.pinch.startX,f.pageY=c.startY=c.pinch.startY}c.touching||(c.touching=!0,c.pan&&t.on(r.mouseMove,c,g).on(r.mouseUp,c,j),t.on([r.touchMove,r.touchEnd,r.touchCancel,r.pointerMove,r.pointerUp,r.pointerCancel].join(" "),c,e),c.$el.trigger(f))}}function g(b){var c=b.data,d="undefined"!==a.type(c.touches)?c.touches[0]:null,e=d?d.pageX:b.pageX,f=d?d.pageY:b.pageY,g=e-c.startX,h=f-c.startY,i=g>0?"right":"left",k=h>0?"down":"up",o=Math.abs(g)>u,p=Math.abs(h)>u;if(c.tap)(o||p)&&c.$el.off([r.touchMove,r.touchEnd,r.touchCancel,r.pointerMove,r.pointerUp,r.pointerCancel].join(" "));else if(c.pan||c.scale)if(!c.passed&&c.axis&&(c.axisX&&p||c.axisY&&o))j(b);else{!c.passed&&(!c.axis||c.axis&&c.axisX&&o||c.axisY&&p)&&(c.passed=!0),c.passed&&(s.killEvent(b),s.killEvent(c.startE));var q=!0,t=l(c.scale?r.scale:r.pan,b,e,f,c.scaleD,g,h,i,k);if(c.scale)if(c.touches&&c.touches.length>=2){var v=c.touches;c.pinch.endX=m(v[0].pageX,v[1].pageX),c.pinch.endY=m(v[0].pageY,v[1].pageY),c.pinch.endD=n(v[1].pageX-v[0].pageX,v[1].pageY-v[0].pageY),c.scaleD=c.pinch.endD/c.pinch.startD,t.pageX=c.pinch.endX,t.pageY=c.pinch.endY,t.scale=c.scaleD,t.deltaX=c.pinch.endX-c.pinch.startX,t.deltaY=c.pinch.endY-c.pinch.startY}else c.pan||(q=!1);q&&c.$el.trigger(t)}}function h(b,c){b.on(r.click,c,i);var d=a._data(b[0],"events").click;d.unshift(d.pop())}function i(a){s.killEvent(a,!0),a.data.$links.off(r.click)}function j(b){var c=b.data;if(c.tap)c.$el.off([r.touchMove,r.touchEnd,r.touchCancel,r.pointerMove,r.pointerUp,r.pointerCancel,r.mouseMove,r.mouseUp].join(" ")),c.startE.preventDefault(),k(b);else if(c.pan||c.scale){var d="undefined"!==a.type(c.touches)?c.touches[0]:null,e=d?d.pageX:b.pageX,f=d?d.pageY:b.pageY,g=e-c.startX,i=f-c.startY,j=(new Date).getTime(),m=c.scale?r.scaleEnd:r.panEnd,n=g>0?"right":"left",o=i>0?"down":"up",p=Math.abs(g)>1,q=Math.abs(i)>1;if(c.swipe&&Math.abs(g)>u&&j-c.startTs;s++)h(c.$links.eq(s),c)}var x=l(m,b,e,f,c.scaleD,g,i,n,o);t.off([r.touchMove,r.touchEnd,r.touchCancel,r.mouseMove,r.mouseUp,r.pointerMove,r.pointerUp,r.pointerCancel].join(" ")),c.$el.trigger(x),c.touches=[],c.scale}c.touching=!1}function k(a){s.killEvent(a);var b=a.data;if(!b.clicked){"click"!==a.type&&(b.clicked=!0);var c=b.startE?b.startX:a.pageX,d=b.startE?b.startY:a.pageY,e=l(r.tap,a.originalEvent,c,d,1,0,0);b.$el.trigger(e)}}function l(b,c,d,e,f,g,h,i,j){return a.Event(b,{originalEvent:c,bubbles:!0,pageX:d,pageY:e,scale:f,deltaX:g,deltaY:h,directionX:i,directionY:j})}function m(a,b){return(a+b)/2}function n(a,b){return Math.sqrt(a*a+b*b)}function o(a,b){a.css({"-ms-touch-action":b,"touch-action":b})}var p=!b.window.PointerEvent,q=b.Plugin("touch",{widget:!0,defaults:{axis:!1,pan:!1,scale:!1,swipe:!1,tap:!1},methods:{_construct:c,_destruct:d},events:{pointerDown:p?"MSPointerDown":"pointerdown",pointerUp:p?"MSPointerUp":"pointerup",pointerMove:p?"MSPointerMove":"pointermove",pointerCancel:p?"MSPointerCancel":"pointercancel"}}),r=q.events,s=q.functions,t=b.$window,u=10,v=50;r.tap="tap",r.pan="pan",r.panStart="panstart",r.panEnd="panend",r.scale="scale",r.scaleStart="scalestart",r.scaleEnd="scaleend",r.swipe="swipe"}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/transition.js b/static/js/formstone/js/transition.js
new file mode 100644
index 0000000..309c3d5
--- /dev/null
+++ b/static/js/formstone/js/transition.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [transition.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(a,c){if(c){a.$target=this.find(a.target),a.$check=a.target?a.$target:this,a.callback=c,a.styles=h(a.$check),a.timer=null;var d=a.$check.css(b.transition+"-duration"),f=parseFloat(d);b.support.transition&&d&&f?this.on(k.transitionEnd,a,e):a.timer=l.startTimer(a.timer,50,function(){g(a)},!0)}}function d(a){l.clearTimer(a.timer,!0),this.off(k.namespace)}function e(b){b.stopPropagation(),b.preventDefault();var c=b.data,d=b.originalEvent,e=c.target?c.$target:c.$el;c.property&&d.propertyName!==c.property||!a(d.target).is(e)||f(c)}function f(a){a.always||a.$el[j.namespace]("destroy"),a.callback.apply(a.$el)}function g(a){var b=h(a.$check);i(a.styles,b)||f(a),a.styles=b}function h(b){var c,d,e,f={};if(b instanceof a&&(b=b[0]),m.getComputedStyle){c=m.getComputedStyle(b,null);for(var g=0,h=c.length;h>g;g++)d=c[g],e=c.getPropertyValue(d),f[d]=e}else if(b.currentStyle){c=b.currentStyle;for(d in c)c[d]&&(f[d]=c[d])}return f}function i(b,c){if(a.type(b)!==a.type(c))return!1;for(var d in b)if(!b.hasOwnProperty(d)||!c.hasOwnProperty(d)||b[d]!==c[d])return!1;return!0}var j=b.Plugin("transition",{widget:!0,defaults:{always:!1,property:null,target:null},methods:{_construct:c,_destruct:d,resolve:f}}),k=j.events,l=j.functions,m=b.window}(jQuery,Formstone);
\ No newline at end of file
diff --git a/static/js/formstone/js/upload.js b/static/js/formstone/js/upload.js
new file mode 100644
index 0000000..659ee55
--- /dev/null
+++ b/static/js/formstone/js/upload.js
@@ -0,0 +1,3 @@
+/*! formstone v0.6.7 [upload.js] 2015-06-13 | MIT License | formstone.it */
+
+!function(a,b){"use strict";function c(a){if(b.support.file){var c="";c+='',c+=a.label,c+="
",c+=' 1&&(c+=" "+p.multiple),c+=">",this.addClass(p.base).append(c),a.$input=this.find(o.input),a.queue=[],a.total=0,a.uploading=!1,this.on(q.click,o.target,a,e).on(q.dragEnter,a,g).on(q.dragOver,a,h).on(q.dragLeave,a,i).on(q.drop,o.target,a,j),a.$input.on(q.change,a,f)}}function d(a){b.support.file&&(a.$input.off(q.namespace),this.off([q.click,q.dragEnter,q.dragOver,q.dragLeave,q.drop].join(" ")).removeClass(p.base).html(""))}function e(a){a.stopPropagation(),a.preventDefault();var b=a.data;b.$input.trigger(q.click)}function f(a){a.stopPropagation(),a.preventDefault();var b=a.data,c=b.$input[0].files;c.length&&k(b,c)}function g(a){a.stopPropagation(),a.preventDefault();var b=a.data;b.$el.addClass(p.dropping)}function h(a){a.stopPropagation(),a.preventDefault();var b=a.data;b.$el.addClass(p.dropping)}function i(a){a.stopPropagation(),a.preventDefault();var b=a.data;b.$el.removeClass(p.dropping)}function j(a){a.preventDefault();var b=a.data,c=a.originalEvent.dataTransfer.files;b.$el.removeClass(p.dropping),k(b,c)}function k(a,b){for(var c=[],d=0;d=a.maxQueue)return;d++}0===b&&(r.off(q.beforeUnload),a.uploading=!1,a.$el.trigger(q.complete))}function m(b,c,d){c.size>=b.maxSize?(c.error=!0,b.$el.trigger(q.fileError,[c,"Too large"]),l(b)):(c.started=!0,c.transfer=a.ajax({url:b.action,data:d,type:"POST",contentType:!1,processData:!1,cache:!1,xhr:function(){var d=a.ajaxSettings.xhr();return d.upload&&d.upload.addEventListener("progress",function(a){var d=0,e=a.loaded||a.position,f=a.total;a.lengthComputable&&(d=Math.ceil(e/f*100)),b.$el.trigger(q.fileProgress,[c,d])},!1),d},beforeSend:function(){b.$el.trigger(q.fileStart,[c])},success:function(a){c.complete=!0,b.$el.trigger(q.fileComplete,[c,a]),l(b)},error:function(a,d,e){c.error=!0,b.$el.trigger(q.fileError,[c,e]),l(b)}}))}var n=b.Plugin("upload",{widget:!0,defaults:{customClass:"",action:"",label:"Drag and drop files or click to select",leave:"You have uploads pending, are you sure you want to leave this page?",maxQueue:2,maxSize:5242880,postData:{},postKey:"file"},classes:["input","target","multiple","dropping"],methods:{_construct:c,_destruct:d}}),o=n.classes,p=o.raw,q=n.events,r=(n.functions,b.$window);q.complete="complete",q.fileStart="filestart",q.fileProgress="fileprogress",q.fileComplete="filecomplete",q.fileError="fileerror",q.start="start"}(jQuery,Formstone);
\ No newline at end of file