From 3b7980ffe971911c54849ae8676fdffc1d360367 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Wed, 25 Nov 2015 20:29:25 +0100 Subject: [PATCH 1/6] Start using rest framework --- bbssite/settings.py | 1 + main/api/__init__.py | 0 main/api/serializers.py | 7 +++++++ main/api/views.py | 9 +++++++++ main/urls.py | 8 +++++++- 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 main/api/__init__.py create mode 100644 main/api/serializers.py create mode 100644 main/api/views.py diff --git a/bbssite/settings.py b/bbssite/settings.py index 7cd1dff..f42d29d 100755 --- a/bbssite/settings.py +++ b/bbssite/settings.py @@ -87,6 +87,7 @@ INSTALLED_APPS = ( 'bootstrapform', 'compressor', 'django_extensions', + 'rest_framework', ) LOCAL_APPS = ( 'main', diff --git a/main/api/__init__.py b/main/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/main/api/serializers.py b/main/api/serializers.py new file mode 100644 index 0000000..18187d9 --- /dev/null +++ b/main/api/serializers.py @@ -0,0 +1,7 @@ +from main.models import Product +from rest_framework.serializers import ModelSerializer + + +class ProductSerializer(ModelSerializer): + class Meta: + model = Product diff --git a/main/api/views.py b/main/api/views.py new file mode 100644 index 0000000..3e30cc8 --- /dev/null +++ b/main/api/views.py @@ -0,0 +1,9 @@ +from main.api.serializers import ProductSerializer +from main.models import Product +from rest_framework.viewsets import ModelViewSet + + +class ProductViewSet(ModelViewSet): + # TODO: auth + serializer_class = ProductSerializer + queryset = Product.objects.all() diff --git a/main/urls.py b/main/urls.py index 0366b69..ec23418 100644 --- a/main/urls.py +++ b/main/urls.py @@ -1,10 +1,11 @@ from django.conf.urls import url - +from main.api.views import ProductViewSet from main.views.stats import stats_list, stats_orders, stats_orders_hourly, stats_products_realtime, stats_products, \ stats_products_per_user, products_json from main.views.general import register, deposit, log from main.views.reports import inventory, inventory_add, report from main.views.users import create_user, profile +from rest_framework.routers import DefaultRouter urlpatterns = [ url(r'^$', register, name='home'), @@ -31,3 +32,8 @@ urlpatterns = [ url(r'^inventory/add/$', inventory_add, name='inventory-add'), url(r'^report$', report, name='report'), ] + +# API +router = DefaultRouter() +router.register(r'api/products', ProductViewSet) +urlpatterns += router.urls From 195c49b0fd8bf5b61a9b773193e82f8b1fc218a8 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Sat, 28 Nov 2015 21:21:53 +0100 Subject: [PATCH 2/6] Moves product stat view logic to serializer - Split frontend into multiple files - Bump frontend deps - Remove unused stuff --- main/api/serializers.py | 36 +- main/api/views.py | 15 +- main/urls.py | 8 +- main/views/stats.py | 76 ---- requirements.txt | 1 + static/app/images/borg.jpg | Bin 46548 -> 0 bytes static/app/images/eplekak.jpg | Bin 13467 -> 0 bytes static/app/images/unknown.png | Bin 4800 -> 0 bytes static/app/js/app.js | 447 -------------------- static/app/js/main.js | 180 ++++++++ static/app/js/profile.js | 37 ++ static/app/js/stats.js | 225 ++++++++++ static/dist/images/borg.jpg | Bin 37707 -> 0 bytes static/dist/images/edb_brick.png | Bin 852 -> 923 bytes static/dist/images/eplekak.jpg | Bin 13406 -> 0 bytes static/dist/images/glyphicons-halflings.png | Bin 12762 -> 12727 bytes static/dist/images/product.png | Bin 3294 -> 3302 bytes static/dist/images/unknown.png | Bin 1229 -> 0 bytes static/dist/images/unknown_person.png | Bin 725 -> 977 bytes static/dist/js/app.js | 4 +- static/dist/styles/screen.css | 2 +- static/gulpfile.js | 53 ++- static/package.json | 35 +- templates/register.html | 35 +- 24 files changed, 555 insertions(+), 599 deletions(-) delete mode 100644 static/app/images/borg.jpg delete mode 100644 static/app/images/eplekak.jpg delete mode 100644 static/app/images/unknown.png delete mode 100644 static/app/js/app.js create mode 100644 static/app/js/main.js create mode 100644 static/app/js/profile.js create mode 100644 static/app/js/stats.js delete mode 100644 static/dist/images/borg.jpg delete mode 100644 static/dist/images/eplekak.jpg delete mode 100644 static/dist/images/unknown.png diff --git a/main/api/serializers.py b/main/api/serializers.py index 18187d9..197da80 100644 --- a/main/api/serializers.py +++ b/main/api/serializers.py @@ -1,7 +1,41 @@ -from main.models import Product +from django.db.models import Sum +from rest_framework import serializers from rest_framework.serializers import ModelSerializer +from main.models import Product, OrderLine + class ProductSerializer(ModelSerializer): class Meta: model = Product + + +class ProductStatSerializer(ModelSerializer): + EXTERNAL_USER = 'Ekstern' + counts = serializers.SerializerMethodField() + + def _format_counts(self, per_user): + per_user = list(per_user) + for row in per_user: + first = row.pop('order__customer__first_name') + last = row.pop('order__customer__last_name') + if first is None: + who = self.EXTERNAL_USER + else: + who = '{} {}'.format(first, last) + row['full_name'] = who + + return per_user + + def get_counts(self, obj): + per_user = OrderLine.objects\ + .filter(product=obj)\ + .values('order__customer__first_name', 'order__customer__last_name')\ + .annotate(amount_total=Sum('amount'))\ + .order_by('-amount_total') + + return self._format_counts(per_user) + + class Meta: + model = Product + fields = ['id', 'name', 'description', 'image', 'inventory_amount', 'active', 'created', 'counts'] diff --git a/main/api/views.py b/main/api/views.py index 3e30cc8..078cc67 100644 --- a/main/api/views.py +++ b/main/api/views.py @@ -1,9 +1,18 @@ -from main.api.serializers import ProductSerializer -from main.models import Product +from rest_framework.decorators import list_route +from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet +from main.api.serializers import ProductSerializer, ProductStatSerializer +from main.models import Product + class ProductViewSet(ModelViewSet): - # TODO: auth serializer_class = ProductSerializer queryset = Product.objects.all() + + @list_route(methods=['get']) + def group_by_user(self, request): + products = self.get_queryset().filter(active=True) + serializer = ProductStatSerializer(products, many=True) + + return Response(serializer.data) diff --git a/main/urls.py b/main/urls.py index ec23418..c540469 100644 --- a/main/urls.py +++ b/main/urls.py @@ -1,7 +1,6 @@ from django.conf.urls import url from main.api.views import ProductViewSet -from main.views.stats import stats_list, stats_orders, stats_orders_hourly, stats_products_realtime, stats_products, \ - stats_products_per_user, products_json +from main.views.stats import stats_list, stats_orders, stats_orders_hourly, stats_products_realtime, stats_products_per_user from main.views.general import register, deposit, log from main.views.reports import inventory, inventory_add, report from main.views.users import create_user, profile @@ -18,12 +17,7 @@ urlpatterns = [ url(r'^stats/orders/$', stats_orders, name='stats-orders'), url(r'^stats/orders/hourly$', stats_orders_hourly, name='stats-orders-hourly'), url(r'^stats/orders/products_realtime$', stats_products_realtime, name='stats-products-realtime'), - url(r'^stats/products/$', stats_products, name='stats-products'), - url(r'^stats/products/(?P[0-9]+)/$', stats_products, name='stats-product'), url(r'^stats/products/by_user/(?P[0-9]+)/$', stats_products_per_user, name='stats-products-per-user'), - # Products - url(r'^products/(?P[0-9]+)/$', products_json, name='json-product'), - url(r'^products/$', products_json, name='json-products'), # Users url(r'^user/create/$', create_user, name='create-user'), url(r'^profile/$', profile, name='profile'), diff --git a/main/views/stats.py b/main/views/stats.py index fde3642..324e5e4 100644 --- a/main/views/stats.py +++ b/main/views/stats.py @@ -16,82 +16,6 @@ def stats_list(request): return render(request, 'stats.html', {'products': products}) -def serialize_product(product): - f_product = {} - for attr in Product._meta.get_all_field_names(): - if attr in ["transactions", "orderlines", "image"]: - continue - - if hasattr(product, attr) and product.__getattribute__(attr): - if type(product.__getattribute__(attr)) is datetime: - f_product[attr] = str(product.__getattribute__(attr)) - else: - f_product[attr] = product.__getattribute__(attr) - return f_product - - -def products_json(request, product_id=None): - if product_id: - # single - products = get_object_or_404(Product, pk=product_id) - else: - # many - products = Product.objects.filter(active=True) - - if product_id: - f_products = serialize_product(products) - else: - f_products = [serialize_product(product) for product in products] - - return JsonResponse(f_products) - - -def stats_product(product): - # reverse lookup via order, customer - per_user = OrderLine.objects\ - .filter(product=product)\ - .values('order__customer__first_name', 'order__customer__last_name')\ - .annotate(num=Sum('amount'))\ - .order_by('-num') - f_per_user = [] - for row in per_user: - if row['order__customer__first_name'] is not None: - who = row['order__customer__first_name'] + " " + row['order__customer__last_name'] - else: - who = "Ekstern" - num = row['num'] - f_per_user.append([who, num]) - - response = { - 'product': serialize_product(Product.objects.get(pk=product)) if type(product) in six.string_types else serialize_product(product), - 'counts': f_per_user, - 'total_counts': sum([row['num'] for row in per_user]), - } - - return response - - -def stats_products(request, product=None): - if product: - # single - f_products = [stats_product(product)] - sales = OrderLine.objects.filter(product=product) - else: - # all - sales = OrderLine.objects.filter(product__active=True) - f_products = [stats_product(p) for p in Product.objects.filter(active=True)] - - totals = float(sum([sale.amount for sale in sales])) - response = { - 'request': 'all' if not product else product, - 'response': { - 'products': f_products, - 'total_count': totals, - } - } - return JsonResponse(response) - - def stats_orders(request): num_external_orders = Order.objects.filter(customer=None).count() per_user = Order.objects\ diff --git a/requirements.txt b/requirements.txt index 42b3f95..a3ef944 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ django-widget-tweaks==1.3 facebook-sdk==0.4.0 gunicorn==19.3.0 mysqlclient==1.3.6 +djangorestframework==3.3.1 Pillow==3.0.0 diff --git a/static/app/images/borg.jpg b/static/app/images/borg.jpg deleted file mode 100644 index dc18f483ffad35cc617df4c78f3be56b94b8be80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46548 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 diff --git a/static/app/images/eplekak.jpg b/static/app/images/eplekak.jpg deleted file mode 100644 index 106801026570babfaba2099aead7fd745208c3c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13467 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 PRPpliI(vsHJ}>_t5ZaPU diff --git a/static/app/images/unknown.png b/static/app/images/unknown.png deleted file mode 100644 index c0e33c76ff3c87a89fae9fe1a3861474c5ea8149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4800 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 a`_BM~1pq};&C1090000 0) { - /* TODO select data element with index 0 of each pie-chart */ - var charts = []; - var products_url = '/stats/products/'; - var order_url = '/stats/orders/'; - var order_hourly_url = '/stats/orders/hourly'; - var products_realtime_url = '/stats/orders/products_realtime'; - - /* orders */ - $.getJSON(order_url, function(data) { - var render_to = 'order_chart'; - - // define the options - var options = { - chart: { - renderTo: render_to, - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false - }, - title: { - text: 'Fordeling av ordre på person' - }, - tooltip: { - formatter: function() { - return ''+ this.point.name +': '+ Highcharts.numberFormat(this.percentage, 1) +' %'; - } - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true, - color: '#000000', - connectorColor: '#000000', - formatter: function() { - return ''+ this.point.name +': '+ this.y; - } - } - } - }, - series: [{ - type: 'pie', - name: 'Orders', - data: data - }] - }; - charts.push(new Highcharts.Chart(options)); - }); - - /* products */ - $.getJSON(products_url, function(data) { - var products = data.response.products; - for(var i in products) { - var render_to = 'product_chart' + products[i].product.id; - var series_data = products[i].counts; - // define the options - var options = { - chart: { - renderTo: render_to, - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false - }, - title: { - text: products[i].product.name - }, - tooltip: { - formatter: function() { - return ''+ this.point.name +': '+ Highcharts.numberFormat(this.percentage, 1) +' %'; - } - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true, - color: '#000000', - connectorColor: '#000000', - formatter: function() { - return ''+ this.point.name +': ' + this.y; - } - } - } - }, - series: [{ - type: 'pie', - name: 'Orders', - data: series_data - }] - }; - charts.push(new Highcharts.Chart(options)); - } - }); - /* orders hourly */ - $.getJSON(order_hourly_url, function(data) { - var render_to = 'order_hourly_chart'; - - // define the options - var options = { - chart: { - renderTo: render_to, - type: 'column' - }, - title: { - text: 'Ordre - time for time' - }, - tooltip: { - formatter: function() { - return this.y + " stk"; - } - }, - yAxis: { - title: { - text: 'Ordre' - }, - }, - xAxis: { - title: { - text: 'Tid (h)' - }, - labels: { - formatter: function() { - return this.value + ":00"; - }, - } - }, - plotOptions: { - column: { - minPointLength: 3, - }, - series: { - groupPadding: 0, - pointPadding: 0.05, - }, - }, - series: [{ - name: 'Ordre', - data: data.hourly - }] - }; - charts.push(new Highcharts.Chart(options)); - }); - - var products_realtime_chart = new Highcharts.Chart({ - chart: { - renderTo: 'products_realtime_chart' - }, - title: { - text: "Produkter solgt over tid" - }, - xAxis: { - type: "datetime" - }, - yAxis: { - title: { - text: "Antall solgt" - } - }, - - plotOptions: { - series: { - marker: { - radius: 3 - } - } - }, - - series: {} - }); - charts.push(products_realtime_chart); - - function parse_products_realtime_data(data) { - var chart = products_realtime_chart; - - for (var product in data.products) { - if (chart.get(product) === null) { - chart.addSeries({ - data: [], - id: product, - name: product - }); - - var series = chart.get(product); - _.each(data.products[product], function(point) { - series.addPoint({ - id: point[0], - x: point[0], - y: point[1] - }); - }); - } - else { - var series = chart.get(product); - _.each(data.products[product], function(point) { - if (chart.get(point[0]) === null) { - series.addPoint({ - id: point[0], - x: point[0], - y: point[1] - }); - } - }); - } - } - } - - function get_products_realtime_data() { - var that = this; - $.ajax( { - url: products_realtime_url, - dataType: "json", - success: function (data) { - parse_products_realtime_data(data); - - setTimeout(function () { - get_products_realtime_data(); - }, 15000); - }, - cache: false - }); - } - - get_products_realtime_data(); - - } - - /* - * View: Inventory report - */ - var start_field = $(".inventory-report-form #id_start_time"); - start_field.datepicker({ - language: 'nb', - format: 'yyyy-mm-dd', - todayHighlight: true, - weekStart: 1, - endDate: new Date() - }).on('changeDate', function(e) { - end_field.datepicker('setStartDate', e.date); - }); - var end_field = $(".inventory-report-form #id_end_time"); - end_field.datepicker({ - language: 'nb', - format: 'yyyy-mm-dd', - todayHighlight: true, - weekStart: 1, - endDate: new Date() - }).on('changeDate', function(e) { - start_field.datepicker('setEndDate', e.date); - }); - - /* - * View: Profile - */ - if( $('#user-profile').length ) { - var products_by_user_url = '/stats/products/by_user/'; - var user_id = $('#user-profile').attr('data-user-id'); - - $.getJSON(products_by_user_url + user_id, function(data) { - if(data.hasOwnProperty('error')) { - return; - } - $(".profile-stats-orderline").highcharts({ - title: { - text: false - }, - xAxis: { - type: "datetime" - }, - yAxis: { - title: { - text: "Kjøp" - } - }, - - plotOptions: { - series: { - marker: { - radius: 3 - } - } - }, - series: data - }); - }); - } -}); diff --git a/static/app/js/main.js b/static/app/js/main.js new file mode 100644 index 0000000..ff2eeda --- /dev/null +++ b/static/app/js/main.js @@ -0,0 +1,180 @@ +function enable_all_customers() { + $("li.customer").each(function(i) { + $(this).removeClass("marked"); + $(this).show(); + }); +} +function filter_customers(typed) { + setTimeout(function() { + $("li.customer").each(function(i) { + var pattern = new RegExp(typed,"i"); + var name = $(this).children("span.name").text(); + if(!pattern.test(name)) { + $(this).hide(); + $(this).removeClass("marked"); + } else { + $(this).show(); + var full_match = name.toLowerCase() == typed.toLowerCase(); + // FIXME: needs one more char. + var single_match = $("li.customer:visible").length == 1; + console.log(full_match, single_match); + //if(full_match || single_match) { + if(full_match) { + $(this).addClass("marked"); + } else { + $(this).removeClass("marked"); + } + } + }); + }, 50); +} +function enable_all_products() { + $("li.product").each(function(i) { + $(this).removeClass("marked"); + $(this).show(); + }); +} +function reset_qtys() { + $(".qty").each(function(i) { + $(this).html('0'); + }); + + $("input[name$=amount]").each(function(i) { + $(this).val("0"); + }); +} +function update_total() { + var total = 0; + $('li.product').each(function() { + var amount = Number($(this).find('[name$=amount]').val()); + + var price_selector = '.sale_price_int'; + if($("#id_customer_typeahead").val() === "Ekstern") { + price_selector = '.sale_price_ext'; + } + var sale_price = Number($(this).find(price_selector).text()); + + total += amount * sale_price; + }); + if(total === 0) { + total = ""; + } + $("span.total_text").html(total); +} + +$(document).ready(function() { + var $alerts = $("a[data-dismiss=alert]"); + /* Hide alert messages */ + $alerts.click(function(){ + $(this).parent().parent().parent().slideUp(); + }); + setTimeout( function() { + $alerts.parent().parent().parent().slideUp(); + }, 5000); + + /* Tooltips */ + $("h2").tooltip({placement: 'right'}); + $("img.customer").tooltip(); + $("a.product").tooltip(); + $(".love").tooltip(); + + /* + * View: Deposit and register + */ + + /* Customer search */ + $('#id_customer_typeahead').keyup(function(event) { + filter_customers(event.target.value); + }); + /* Customer selection */ + $("li.customer").click( function() { + enable_all_customers(); + /* Disable the customer button just clicked */ + $(this).addClass("marked"); + /* Update the typeahead field */ + var name = $(this).children("span.name").text(); + $("#id_customer_typeahead").val(name); + /* Update the select field */ + var id = $(this).children("span.id").text(); + $("#id_customer option, #id_user option").removeAttr('selected'); + if(id === "") { + // External user + $("#id_customer option:first-child, #id_user option:first-child").attr('selected','selected'); + } else { + $("#id_customer option[value="+id+"], #id_user option[value="+id+"]").attr('selected','selected'); + } + update_total(this); + }); + + /* Set Global Highcharts options */ + + Highcharts.setOptions({ + credits: { + enabled: false + } + }); + + /* + * View: Register + */ + + /* Product amount controls */ + $("#register li.product").click( function() { + /* Mark the product as selected */ + $(this).addClass("marked"); + /* Update amounts */ + var form_field = $(this).children("input[name$=amount]"); + var display = $(this).children(".qty"); + var qty = Number(form_field.val()) + 1; + form_field.val(qty); + display.html(qty); + /* Update total*/ + update_total(this); + }); + /* Form reset */ + $("#register button[type=reset]").click( function() { + $('#id_customer option').removeAttr('selected'); + $("#id_customer_typeahead").val(""); + $("span.total_text").html(""); + enable_all_customers(); + enable_all_products(); + reset_qtys(); + }); + + /* Toggle infrequent users */ + $(".toggle-infrequent-users").on('click', function(e) { + e.preventDefault(); + $("li.customer.infrequent").toggleClass('hidden'); + $(".users-description .infrequent-users").toggleClass('hidden'); + if($(this).text() === "Vis alle") { + $(this).text("Skjul gamliser"); + } + else { + $(this).text("Vis alle"); + } + }); + + /* + * View: Inventory report + */ + var start_field = $(".inventory-report-form #id_start_time"); + start_field.datepicker({ + language: 'nb', + format: 'yyyy-mm-dd', + todayHighlight: true, + weekStart: 1, + endDate: new Date() + }).on('changeDate', function(e) { + end_field.datepicker('setStartDate', e.date); + }); + var end_field = $(".inventory-report-form #id_end_time"); + end_field.datepicker({ + language: 'nb', + format: 'yyyy-mm-dd', + todayHighlight: true, + weekStart: 1, + endDate: new Date() + }).on('changeDate', function(e) { + start_field.datepicker('setEndDate', e.date); + }); +}); \ No newline at end of file diff --git a/static/app/js/profile.js b/static/app/js/profile.js new file mode 100644 index 0000000..1dd8cdd --- /dev/null +++ b/static/app/js/profile.js @@ -0,0 +1,37 @@ +/* View: Profile */ + +$(document).ready(function() { + var $userProfile = $('#user-profile'); + if ($userProfile.length) { + var products_by_user_url = '/stats/products/by_user/'; + var user_id = $('#user-profile').attr('data-user-id'); + + $.getJSON(products_by_user_url + user_id, function (data) { + if (data.hasOwnProperty('error')) { + return; + } + $(".profile-stats-orderline").highcharts({ + title: { + text: false + }, + xAxis: { + type: "datetime" + }, + yAxis: { + title: { + text: "Kjøp" + } + }, + + plotOptions: { + series: { + marker: { + radius: 3 + } + } + }, + series: data + }); + }); + } +}); \ No newline at end of file diff --git a/static/app/js/stats.js b/static/app/js/stats.js new file mode 100644 index 0000000..ded630a --- /dev/null +++ b/static/app/js/stats.js @@ -0,0 +1,225 @@ + +/* View: Stats */ + +var products = null; +var products_realtime_chart = null; +var products_url = '/api/products/'; +var products_stat_url = '/api/products/group_by_user'; + +var order_url = '/stats/orders/'; +var order_hourly_url = '/stats/orders/hourly'; +var products_realtime_url = '/stats/orders/products_realtime'; + +function productFormatter() { + return ''+ this.point.name +': '+ Highcharts.numberFormat(this.percentage, 1) +' %'; +} +function parse_products_realtime_data(data, chart) { + for (var product in data.products) { + if (chart.get(product) === null) { + chart.addSeries({ + data: [], + id: product, + name: product + }); + } + + var series = chart.get(product); + _.each(data.products[product], function(point) { + if (chart.get(point[0]) === null) { + series.addPoint({ + id: point[0], + x: point[0], + y: point[1] + }); + } + }); + } +} + +function get_products_realtime_data() { + var that = this; + $.ajax( { + url: products_realtime_url, + dataType: "json", + success: function (data) { + parse_products_realtime_data(data, products_realtime_chart); + + setTimeout(function () { + get_products_realtime_data(); + }, 15000); + }, + cache: false + }); +} + +function renderProductCharts(products) { + for(var i in products) { + var render_to = 'product_chart' + products[i].id; + var series_data = products[i].counts; + series_data = _.map(series_data, function (el) { return [el.full_name, el.amount_total]; }); + + new Highcharts.Chart({ + chart: { + renderTo: render_to, + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false + }, + title: { + text: products[i].name + }, + tooltip: { + formatter: productFormatter + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: true, + color: '#000000', + connectorColor: '#000000', + formatter: function() { + return ''+ this.point.name +': ' + this.y; + } + } + } + }, + series: [{ + type: 'pie', + name: 'Orders', + data: series_data + }] + }); + } +} +function renderOrdersChart(data) { + var render_to = 'order_chart'; + + new Highcharts.Chart({ + chart: { + renderTo: render_to, + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false + }, + title: { + text: 'Fordeling av ordre på person' + }, + tooltip: { + formatter: function () { + return '' + this.point.name + ': ' + Highcharts.numberFormat(this.percentage, 1) + ' %'; + } + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: true, + color: '#000000', + connectorColor: '#000000', + formatter: function () { + return '' + this.point.name + ': ' + this.y; + } + } + } + }, + series: [{ + type: 'pie', + name: 'Orders', + data: data + }] + }); +} +function renderOrdersHourlyChart(data) { + var render_to = 'order_hourly_chart'; + + new Highcharts.Chart({ + chart: { + renderTo: render_to, + type: 'column' + }, + title: { + text: 'Ordre - time for time' + }, + tooltip: { + formatter: function() { + return this.y + " stk"; + } + }, + yAxis: { + title: { + text: 'Ordre' + } + }, + xAxis: { + title: { + text: 'Tid (h)' + }, + labels: { + formatter: function() { + return this.value + ":00"; + } + } + }, + plotOptions: { + column: { + minPointLength: 3 + }, + series: { + groupPadding: 0, + pointPadding: 0.05 + } + }, + series: [{ + name: 'Ordre', + data: data.hourly + }] + }); +} + +$(document).ready(function() { + if( $("#stats").length > 0) { + /* TODO select data element with index 0 of each pie-chart */ + + /* Products */ + $.getJSON(products_stat_url, function(data) { + products = data; + renderProductCharts(data); + }); + /* Orders */ + $.getJSON(order_url, renderOrdersChart); + + /* Orders, hourly */ + $.getJSON(order_hourly_url, renderOrdersHourlyChart); + + /* Realtime purchases */ + products_realtime_chart = new Highcharts.Chart({ + chart: { + renderTo: 'products_realtime_chart' + }, + title: { + text: "Produkter solgt over tid" + }, + xAxis: { + type: "datetime" + }, + yAxis: { + title: { + text: "Antall solgt" + } + }, + plotOptions: { + series: { + marker: { + radius: 3 + } + } + }, + series: {} + }); + + get_products_realtime_data(); + } + }); \ No newline at end of file diff --git a/static/dist/images/borg.jpg b/static/dist/images/borg.jpg deleted file mode 100644 index 67838e27e7c36e67a213463231c6da1bd77d4f07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37707 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 diff --git a/static/dist/images/edb_brick.png b/static/dist/images/edb_brick.png index b0d9daed8c40bd3be11db5fc8b2dc432d39981c7..ca5e205d4c80d7a6e4135ac6758534945f4f5222 100644 GIT binary patch delta 80 zcmcb@Hk*BdvMU2)age(c!@6@aFBupZ*pj^6T^Rm@;DWu&Cj&(|3p^r=85s1GL71^( dseKtxkiEpy*OmPaBQJxH_NFX8u8oSu%mBp=71;m) delta 10 RcmbQueuZs<^2RJfW&jnJ1AhPj diff --git a/static/dist/images/eplekak.jpg b/static/dist/images/eplekak.jpg deleted file mode 100644 index 1bb5c4a93fca1c711231d368337b48b8f7933882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13406 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 literal 12762 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 JeEj_Fe*q52p!xs+ diff --git a/static/dist/images/product.png b/static/dist/images/product.png index 5d3fabdedba262df3c9b2e969f51c76bc46bf631..b7d7c5cf26e08287468e7c00bc01d618b0a831b9 100644 GIT binary patch delta 3242 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 delta 3234 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 US`sN!CjbBd07*qoM6N<$f&wQfF#rGn diff --git a/static/dist/images/unknown.png b/static/dist/images/unknown.png deleted file mode 100644 index e6edfbeaadc79e59fc20fe937c91b17c41dd423b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229 zcmV;;1Ty=HP)eZ>45fnbG!NA`gv&6f4}ct z@2{U8{4L`B41<4qo-Ynf6xDt_H%}0T`0BuhXd_Tg$oW=daO7TuFN1q74((ITAEB_Ns? zlA~x5QO57mWes%A453B09L>`upks0$S_Gza+6H{r2hhSlp;JI}Y%f~0T+=C_G4>Q% zNHLuP8oueJPlJXlIt6&%4bhuZH=Yl53UK!OXCma%j_Zg{0ito|wH|V5oDjXb{VaD} z>7-j#2*)-1YTW|Fa6=-5n&xT8%Q~Kz*w%_y11jUYa7@?=bUibwZFNp`k&TqJpV$4= z%=WQ2-AN{XY`@gpqkDk0Sd0b8#ChG?ybLF&)jPykJDG^F>dIvZu%7lN+sMQ-<^4qW z0LQp%CW0@c4jO6scJMyk0?hZ@K5bOS=%6)=Q95v?S|Yjx)Oc$XJ<3sn?8?f=vkc?G z{gdChWC4|VmD`*z*si)~hB=52Zw_IO(NCRHmyj-cdaBkfBEYz|exLZY zewu00z{dbbh!R4QEsE`i=Tg19B5#2Ko^7s+=9DD&a)?nz=%a;3jU*&m2{XhfqwFJ~ zIMddI`@H7?jRDPO`*)UfyS$%g=q1Q5Jb3WXpwax4Hg+?>0S58PrfJvvE%)XKaBQ@H zW}FTvQ6jYB{#QJA@DgH>D3V+?;Y9&vHp7V>>AkcqeJs? zelgz#x7(0>C|?jZ3*wfS3<*Qr5I4jhjT@Fo;VsvN@xr(vVMr9t-ijOIhWMrlV^e;E rfFNuZJj``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox}cSfw%vHC(n;;m&JPS?UGLqDDom&3&Ga@oa3kLFg;rw>JJ2{K z0R~1;2p|k)WCDhUfFOgAu!4wzkqOXn4xp8ctV~~2L?y0lyX`&Yn~YHMjC1$q_8VQD zQ{vPmD*3K#N?GS5p7!;=O=h=p6jfOgUQYWN%gprEZO4;W>~CI1{=N=!xgf$4hzA_N zhBGrV+B1UOf=dAtOo1lQu}my1EbMUqgThHbP(eu1uuw_aAkfGuD6w(jMyQ+F?3rFL z7^@ar-2bviqV`rd|G`bN>D>Fu*m<4!4n^-$|0v`pmBQMj;~4KT*Da8(HQ=?H@y?J< zi_d6lRNv-L)(1LCSpevDW+pafgpGm>0*VTT29Ak^6E_Ba_y`Lhd&LLbK?)j1d?jyI z+>zH2nQ`8J!iDh4XVP=#x0z^fxMZ?s>m9k(TsmniTkf*C7hO#E@ z)m@$ks?|a&3G^hNWa_V=yq=esY4enESrfHr|n8#d}w9MVf z`scIoC!9vi3B~3g-yd0)7Qdjm|ApP+A6Y$0S;m`GpYkm`^z>Wni2^Ccg<32eDM413 alfTxUdlt9)t>tWI&qehsPwLhGzX<@neFdEW delta 525 zcmV+o0`mRQ2h|0Tp8>#;pcG6S009630|5a50000000000000FC0R{*I0{_GSFc1I% z0|EmE1O){E00000000310s{mE1`!emAu&Nwfg&Seu@q8sk)bq0VsWyO%@>pM0u+A$ z|Jncy0|5X65d#qbKLG25Snj2|IFfe&gUuDqhW1}=w$m~91~$5| zjNPpHZ9M?z{hz{-x$O4Ea)7ho*-HGpGE?{n>^C0a1rUl?65;9a&DKge-K+tsIRMB# zr-4yj&^L8N?uZ!`vTWs%yBS-Aya9iC8T{HEm*s1D741b=Ed^XPFgrxiJUx!+K|#`) zZa@@X8ofII0BVY<^s>@D!^FuNKqsqDFr;cG_;@6gvF{88+GA;RkDwgN3fFAxk2_Pp zcg!BTd@8cYsoZCXC&X8|CYC2tvOg|39x`(PJpFp8ERZrjsIjFGWm)?*z_EY6o;$t5 zF(aM6o)?V3A2}TTKK&JWWw)EH-j0tvgz~k7jzFE~?7A{2Sp-dufH8~#t!Ur?;1GS} zQ+mco0u5st;HWV@8|00xj^i71j#0Z;@pn<|sOe&S623VaStAK+ns*RK5LZk9scos+ zn{UMKnlYu7QHf4mHE=%J_dzYEcL=fF5NtRHelWIuL;gy>x}qR*SsW1%8^KjuW&LHd P>B;U95LX$ZA`k!B?|a*4 diff --git a/static/dist/js/app.js b/static/dist/js/app.js index fa52304..99d798a 100644 --- a/static/dist/js/app.js +++ b/static/dist/js/app.js @@ -1 +1,3 @@ -function enable_all_customers(){$("li.customer").each(function(t){$(this).removeClass("marked"),$(this).show()})}function filter_customers(t){setTimeout(function(){$("li.customer").each(function(e){var r=new RegExp(t,"i"),i=$(this).children("span.name").text();if(r.test(i)){$(this).show();var a=i.toLowerCase()==t.toLowerCase(),o=1==$("li.customer:visible").length;console.log(a,o),a?$(this).addClass("marked"):$(this).removeClass("marked")}else $(this).hide(),$(this).removeClass("marked")})},50)}function enable_all_products(){$("li.product").each(function(t){$(this).removeClass("marked"),$(this).show()})}function reset_qtys(){$(".qty").each(function(t){$(this).html("0")}),$("input[name$=amount]").each(function(t){$(this).val("0")})}function update_total(){var t=0;$("li.product").each(function(){var e=Number($(this).find("[name$=amount]").val()),r=".sale_price_int";"Ekstern"===$("#id_customer_typeahead").val()&&(r=".sale_price_ext");var i=Number($(this).find(r).text());t+=e*i}),0===t&&(t=""),$("span.total_text").html(t)}$(document).ready(function(){function t(t){var e=n;for(var r in t.products)if(null===e.get(r)){e.addSeries({data:[],id:r,name:r});var i=e.get(r);_.each(t.products[r],function(t){i.addPoint({id:t[0],x:t[0],y:t[1]})})}else{var i=e.get(r);_.each(t.products[r],function(t){null===e.get(t[0])&&i.addPoint({id:t[0],x:t[0],y:t[1]})})}}function e(){$.ajax({url:s,dataType:"json",success:function(r){t(r),setTimeout(function(){e()},15e3)},cache:!1})}if($("a[data-dismiss=alert]").click(function(){$(this).parent().parent().parent().slideUp()}),setTimeout(function(){$("a[data-dismiss=alert]").parent().parent().parent().slideUp()},5e3),$("h2").tooltip({placement:"right"}),$("img.customer").tooltip(),$("a.product").tooltip(),$("#footer .credits .love").tooltip(),$("#id_customer_typeahead").keyup(function(t){filter_customers(t.target.value)}),$("li.customer").click(function(){enable_all_customers(),$(this).addClass("marked");var t=$(this).children("span.name").text();$("#id_customer_typeahead").val(t);var e=$(this).children("span.id").text();$("#id_customer option, #id_user option").removeAttr("selected"),""===e?$("#id_customer option:first-child, #id_user option:first-child").attr("selected","selected"):$("#id_customer option[value="+e+"], #id_user option[value="+e+"]").attr("selected","selected"),update_total(this)}),Highcharts.setOptions({credits:{enabled:!1}}),$("#register li.product").click(function(){$(this).addClass("marked");var t=$(this).children("input[name$=amount]"),e=$(this).children(".qty"),r=Number(t.val())+1;t.val(r),e.html(r),update_total(this)}),$("#register button[type=reset]").click(function(){$("#id_customer option").removeAttr("selected"),$("#id_customer_typeahead").val(""),$("span.total_text").html(""),enable_all_customers(),enable_all_products(),reset_qtys()}),$(".toggle-infrequent-users").on("click",function(t){t.preventDefault(),$("li.customer.infrequent").toggleClass("hidden"),$(".users-description .infrequent-users").toggleClass("hidden"),"Vis alle"===$(this).text()?$(this).text("Skjul gamliser"):$(this).text("Vis alle")}),$("#stats").length>0){var r=[],i="/stats/products/",a="/stats/orders/",o="/stats/orders/hourly",s="/stats/orders/products_realtime";$.getJSON(a,function(t){var e="order_chart",i={chart:{renderTo:e,plotBackgroundColor:null,plotBorderWidth:null,plotShadow:!1},title:{text:"Fordeling av ordre på person"},tooltip:{formatter:function(){return""+this.point.name+": "+Highcharts.numberFormat(this.percentage,1)+" %"}},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!0,color:"#000000",connectorColor:"#000000",formatter:function(){return""+this.point.name+": "+this.y}}}},series:[{type:"pie",name:"Orders",data:t}]};r.push(new Highcharts.Chart(i))}),$.getJSON(i,function(t){var e=t.response.products;for(var i in e){var a="product_chart"+e[i].product.id,o=e[i].counts,s={chart:{renderTo:a,plotBackgroundColor:null,plotBorderWidth:null,plotShadow:!1},title:{text:e[i].product.name},tooltip:{formatter:function(){return""+this.point.name+": "+Highcharts.numberFormat(this.percentage,1)+" %"}},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!0,color:"#000000",connectorColor:"#000000",formatter:function(){return""+this.point.name+": "+this.y}}}},series:[{type:"pie",name:"Orders",data:o}]};r.push(new Highcharts.Chart(s))}}),$.getJSON(o,function(t){var e="order_hourly_chart",i={chart:{renderTo:e,type:"column"},title:{text:"Ordre - time for time"},tooltip:{formatter:function(){return this.y+" stk"}},yAxis:{title:{text:"Ordre"}},xAxis:{title:{text:"Tid (h)"},labels:{formatter:function(){return this.value+":00"}}},plotOptions:{column:{minPointLength:3},series:{groupPadding:0,pointPadding:.05}},series:[{name:"Ordre",data:t.hourly}]};r.push(new Highcharts.Chart(i))});var n=new Highcharts.Chart({chart:{renderTo:"products_realtime_chart"},title:{text:"Produkter solgt over tid"},xAxis:{type:"datetime"},yAxis:{title:{text:"Antall solgt"}},plotOptions:{series:{marker:{radius:3}}},series:{}});r.push(n),e()}var l=$(".inventory-report-form #id_start_time");l.datepicker({language:"nb",format:"yyyy-mm-dd",todayHighlight:!0,weekStart:1,endDate:new Date}).on("changeDate",function(t){c.datepicker("setStartDate",t.date)});var c=$(".inventory-report-form #id_end_time");if(c.datepicker({language:"nb",format:"yyyy-mm-dd",todayHighlight:!0,weekStart:1,endDate:new Date}).on("changeDate",function(t){l.datepicker("setEndDate",t.date)}),$("#user-profile").length){var d="/stats/products/by_user/",u=$("#user-profile").attr("data-user-id");$.getJSON(d+u,function(t){t.hasOwnProperty("error")||$(".profile-stats-orderline").highcharts({title:{text:!1},xAxis:{type:"datetime"},yAxis:{title:{text:"Kjøp"}},plotOptions:{series:{marker:{radius:3}}},series:t})})}}); \ No newline at end of file +function enable_all_customers(){$("li.customer").each(function(t){$(this).removeClass("marked"),$(this).show()})}function filter_customers(t){setTimeout(function(){$("li.customer").each(function(e){var i=new RegExp(t,"i"),a=$(this).children("span.name").text();if(i.test(a)){$(this).show();var s=a.toLowerCase()==t.toLowerCase(),n=1==$("li.customer:visible").length;console.log(s,n),s?$(this).addClass("marked"):$(this).removeClass("marked")}else $(this).hide(),$(this).removeClass("marked")})},50)}function enable_all_products(){$("li.product").each(function(t){$(this).removeClass("marked"),$(this).show()})}function reset_qtys(){$(".qty").each(function(t){$(this).html("0")}),$("input[name$=amount]").each(function(t){$(this).val("0")})}function update_total(){var t=0;$("li.product").each(function(){var e=Number($(this).find("[name$=amount]").val()),i=".sale_price_int";"Ekstern"===$("#id_customer_typeahead").val()&&(i=".sale_price_ext");var a=Number($(this).find(i).text());t+=e*a}),0===t&&(t=""),$("span.total_text").html(t)}$(document).ready(function(){var t=$("a[data-dismiss=alert]");t.click(function(){$(this).parent().parent().parent().slideUp()}),setTimeout(function(){t.parent().parent().parent().slideUp()},5e3),$("h2").tooltip({placement:"right"}),$("img.customer").tooltip(),$("a.product").tooltip(),$(".love").tooltip(),$("#id_customer_typeahead").keyup(function(t){filter_customers(t.target.value)}),$("li.customer").click(function(){enable_all_customers(),$(this).addClass("marked");var t=$(this).children("span.name").text();$("#id_customer_typeahead").val(t);var e=$(this).children("span.id").text();$("#id_customer option, #id_user option").removeAttr("selected"),""===e?$("#id_customer option:first-child, #id_user option:first-child").attr("selected","selected"):$("#id_customer option[value="+e+"], #id_user option[value="+e+"]").attr("selected","selected"),update_total(this)}),Highcharts.setOptions({credits:{enabled:!1}}),$("#register li.product").click(function(){$(this).addClass("marked");var t=$(this).children("input[name$=amount]"),e=$(this).children(".qty"),i=Number(t.val())+1;t.val(i),e.html(i),update_total(this)}),$("#register button[type=reset]").click(function(){$("#id_customer option").removeAttr("selected"),$("#id_customer_typeahead").val(""),$("span.total_text").html(""),enable_all_customers(),enable_all_products(),reset_qtys()}),$(".toggle-infrequent-users").on("click",function(t){t.preventDefault(),$("li.customer.infrequent").toggleClass("hidden"),$(".users-description .infrequent-users").toggleClass("hidden"),"Vis alle"===$(this).text()?$(this).text("Skjul gamliser"):$(this).text("Vis alle")});var e=$(".inventory-report-form #id_start_time");e.datepicker({language:"nb",format:"yyyy-mm-dd",todayHighlight:!0,weekStart:1,endDate:new Date}).on("changeDate",function(t){i.datepicker("setStartDate",t.date)});var i=$(".inventory-report-form #id_end_time");i.datepicker({language:"nb",format:"yyyy-mm-dd",todayHighlight:!0,weekStart:1,endDate:new Date}).on("changeDate",function(t){e.datepicker("setEndDate",t.date)})}); +$(document).ready(function(){var t=$("#user-profile");if(t.length){var e="/stats/products/by_user/",r=$("#user-profile").attr("data-user-id");$.getJSON(e+r,function(t){t.hasOwnProperty("error")||$(".profile-stats-orderline").highcharts({title:{text:!1},xAxis:{type:"datetime"},yAxis:{title:{text:"Kjøp"}},plotOptions:{series:{marker:{radius:3}}},series:t})})}}); +function productFormatter(){return""+this.point.name+": "+Highcharts.numberFormat(this.percentage,1)+" %"}function parse_products_realtime_data(t,r){for(var e in t.products){null===r.get(e)&&r.addSeries({data:[],id:e,name:e});var o=r.get(e);_.each(t.products[e],function(t){null===r.get(t[0])&&o.addPoint({id:t[0],x:t[0],y:t[1]})})}}function get_products_realtime_data(){$.ajax({url:products_realtime_url,dataType:"json",success:function(t){parse_products_realtime_data(t,products_realtime_chart),setTimeout(function(){get_products_realtime_data()},15e3)},cache:!1})}function renderProductCharts(t){for(var r in t){var e="product_chart"+t[r].id,o=t[r].counts;o=_.map(o,function(t){return[t.full_name,t.amount_total]}),new Highcharts.Chart({chart:{renderTo:e,plotBackgroundColor:null,plotBorderWidth:null,plotShadow:!1},title:{text:t[r].name},tooltip:{formatter:productFormatter},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!0,color:"#000000",connectorColor:"#000000",formatter:function(){return""+this.point.name+": "+this.y}}}},series:[{type:"pie",name:"Orders",data:o}]})}}function renderOrdersChart(t){var r="order_chart";new Highcharts.Chart({chart:{renderTo:r,plotBackgroundColor:null,plotBorderWidth:null,plotShadow:!1},title:{text:"Fordeling av ordre på person"},tooltip:{formatter:function(){return""+this.point.name+": "+Highcharts.numberFormat(this.percentage,1)+" %"}},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!0,color:"#000000",connectorColor:"#000000",formatter:function(){return""+this.point.name+": "+this.y}}}},series:[{type:"pie",name:"Orders",data:t}]})}function renderOrdersHourlyChart(t){var r="order_hourly_chart";new Highcharts.Chart({chart:{renderTo:r,type:"column"},title:{text:"Ordre - time for time"},tooltip:{formatter:function(){return this.y+" stk"}},yAxis:{title:{text:"Ordre"}},xAxis:{title:{text:"Tid (h)"},labels:{formatter:function(){return this.value+":00"}}},plotOptions:{column:{minPointLength:3},series:{groupPadding:0,pointPadding:.05}},series:[{name:"Ordre",data:t.hourly}]})}var products=null,products_realtime_chart=null,products_url="/api/products/",products_stat_url="/api/products/group_by_user",order_url="/stats/orders/",order_hourly_url="/stats/orders/hourly",products_realtime_url="/stats/orders/products_realtime";$(document).ready(function(){$("#stats").length>0&&($.getJSON(products_stat_url,function(t){products=t,renderProductCharts(t)}),$.getJSON(order_url,renderOrdersChart),$.getJSON(order_hourly_url,renderOrdersHourlyChart),products_realtime_chart=new Highcharts.Chart({chart:{renderTo:"products_realtime_chart"},title:{text:"Produkter solgt over tid"},xAxis:{type:"datetime"},yAxis:{title:{text:"Antall solgt"}},plotOptions:{series:{marker:{radius:3}}},series:{}}),get_products_realtime_data())}); \ No newline at end of file diff --git a/static/dist/styles/screen.css b/static/dist/styles/screen.css index 3b8a492..3f1234a 100644 --- a/static/dist/styles/screen.css +++ b/static/dist/styles/screen.css @@ -1 +1 @@ -/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url("/static/dist/fonts/glyphicons-halflings-regular.eot");src:url("/static/dist/fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("/static/dist/fonts/glyphicons-halflings-regular.woff") format("woff"),url("/static/dist/fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("/static/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:700}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}code,kbd{padding:2px 4px;font-size:90%}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th{padding:8px;line-height:1.42857;border-top:1px solid #ddd}.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered,.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:1px 0 0;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{padding-top:7px}output,.form-control{display:block;font-size:14px;line-height:1.42857;color:#555}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px;line-height:1.42857 \0}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],fieldset[disabled] input[type="checkbox"],.radio[disabled],fieldset[disabled] .radio,.radio-inline[disabled],fieldset[disabled] .radio-inline,.checkbox[disabled],fieldset[disabled] .checkbox,.checkbox-inline[disabled],fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm,.input-group-sm>.form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-addon{height:30px;line-height:1.5}.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn{height:auto}.input-lg,.input-group-lg>.form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.input-group-lg>.input-group-addon{height:46px;line-height:1.33}.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group,.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group,.navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.navbar-form .radio,.form-inline .checkbox,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback,.navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .form-group:after{content:" ";display:table;clear:both}.form-horizontal .form-control-static{padding-top:7px;padding-bottom:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn{float:left}.btn-group>.btn,.btn-group-vertical>.btn{position:relative}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{display:block;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before{content:" ";display:table}.btn-group-vertical>.btn-group:after{content:" ";display:table;clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{position:absolute;z-index:-1;opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{white-space:nowrap}.input-group-addon,.input-group-btn{width:1%;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text,.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text,.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#999}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px;margin-bottom:30px;background-color:#eee}.jumbotron,.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger,.alert-error{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr,.alert-error hr{border-top-color:#e4b9c0}.alert-danger .alert-link,.alert-error .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{color:#999;min-width:30px;background-color:transparent;background-image:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#999}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title,.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.05);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.05)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.05);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.05)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel,.carousel-inner{position:relative}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5)0%,rgba(0,0,0,.0001)100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001)0%,rgba(0,0,0,.5)100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.datepicker{padding:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:before,.datepicker-dropdown:after{content:'';display:inline-block;border-top:0;position:absolute}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days div.datepicker-days,.datepicker.months div.datepicker-months,.datepicker.years div.datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#eee;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today[disabled]:hover,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today[disabled].active,.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today[disabled]:hover,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected[disabled]:hover,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active[disabled]:hover,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active[disabled].active,.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active[disabled]:hover,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#999}.datepicker th.datepicker-switch{width:145px}.datepicker thead tr:first-child th,.datepicker tfoot tr th{cursor:pointer}.datepicker thead tr:first-child th:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child th.cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon i{cursor:pointer;width:16px;height:16px}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.428571429;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.428571429}.datepicker.dropdown-menu th,.datepicker.dropdown-menu td{padding:4px 5px}body h2{margin-top:0}body .glyphicon .white{color:#fff}.navbar .dropdown-toggle{padding-top:0;padding-bottom:0}.navbar .dropdown-toggle img{width:40px;border-radius:50% 50%}.navbar .dropdown-toggle .name{display:inline-block;padding-top:15px;padding-bottom:15px;padding-left:8px}#customer ul{clear:both;padding:0;margin:0}#customer ul li{list-style:none;display:inline-block;white-space:nowrap;padding-top:10px;text-align:center;width:79px;overflow:hidden}#customer ul li:hover{background-color:#ddd;cursor:pointer}#customer ul li.marked{color:#468847;background-color:#DFF0D8}#customer ul li.hidden{display:none!important}#customer ul li .name{font-weight:700}#register #products{margin-bottom:2em}#register #products ul{clear:both;padding:0;margin:0}#register #products ul li{list-style:none;display:inline-block;white-space:nowrap;padding-top:10px;padding-left:20px;padding-right:20px;text-align:center}#register #products ul li:hover{background-color:#ddd;cursor:pointer}#register #products ul li.marked{color:#468847;background-color:#DFF0D8}#register #products ul li .qty{font-size:1.7em;font-weight:700}#register #products ul li .name{font-weight:700}#register #products ul li img.product{width:64px;height:auto;max-width:100%}#register .total{color:#fff;background-color:#222;padding:0 10px;min-width:115px}#register .total h2{color:#fff;margin:.2em 0}#register h2{display:inline-block}#register input[name=customer_name]{display:block}#log h2{display:inline-block}#log table tr{text-align:middle}#log table .amount{font-size:2em;font-weight:700}#inventory tr.info{border-left:8px solid #d9edf7}#inventory tr.warning{border-left:8px solid #da7878}#inventory tr.warning .product-amount{font-weight:700}#inventory tr.success{border-left:8px solid #c1e2b3}#inventory tr>td{background-color:inherit}#inventory tr:nth-child(odd) td{background-color:#f9f9f9}#inventory tr.inactive{color:#888}#inventory-report .form-control{width:auto}#inventory-report table .positive{color:#468847}#inventory-report table .negative{color:#da7878}#user-profile .profile-name{display:inline-block;line-height:50px;vertical-align:bottom}#user-profile .profile-image{border-radius:50% 50%}#footer .credits{text-align:center;margin:2em;font-size:10px;color:grey}#footer .credits img{margin-top:10px;display:inline-block}#footer .credits .love{color:#faafba}.facebook-image img{height:32px}.form-login{max-width:320px;margin:4em auto}.form-login [type=submit]{display:block;width:100%} \ No newline at end of file +@charset "UTF-8";html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url("/static/dist/fonts/glyphicons-halflings-regular.eot");src:url("/static/dist/fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("/static/dist/fonts/glyphicons-halflings-regular.woff") format("woff"),url("/static/dist/fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("/static/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:700}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}code,kbd{padding:2px 4px;font-size:90%}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th{padding:8px;line-height:1.42857;border-top:1px solid #ddd}.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered,.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{padding-top:7px}output,.form-control{display:block;font-size:14px;line-height:1.42857;color:#555}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px;line-height:1.42857 \0}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],fieldset[disabled] input[type="checkbox"],.radio[disabled],fieldset[disabled] .radio,.radio-inline[disabled],fieldset[disabled] .radio-inline,.checkbox[disabled],fieldset[disabled] .checkbox,.checkbox-inline[disabled],fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm,.input-group-sm>.form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-addon{height:30px;line-height:1.5}.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn{height:auto}.input-lg,.input-group-lg>.form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.input-group-lg>.input-group-addon{height:46px;line-height:1.33}.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group,.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group,.navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.navbar-form .radio,.form-inline .checkbox,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback,.navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .form-group:after{content:" ";display:table;clear:both}.form-horizontal .form-control-static{padding-top:7px;padding-bottom:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn{float:left}.btn-group>.btn,.btn-group-vertical>.btn{position:relative}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{display:block;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before{content:" ";display:table}.btn-group-vertical>.btn-group:after{content:" ";display:table;clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{position:absolute;z-index:-1;opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{white-space:nowrap}.input-group-addon,.input-group-btn{width:1%;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text,.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text,.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#999}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px;margin-bottom:30px;background-color:#eee}.jumbotron,.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger,.alert-error{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr,.alert-error hr{border-top-color:#e4b9c0}.alert-danger .alert-link,.alert-error .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{color:#999;min-width:30px;background-color:transparent;background-image:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent 25%,transparent 50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#999}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title,.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{transform:translate(0,-25%);transition:transform .3s ease-out}.modal.in .modal-dialog{transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.05);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.05)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.05);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.05)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel,.carousel-inner{position:relative}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5)0%,rgba(0,0,0,.0001)100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001)0%,rgba(0,0,0,.5)100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.datepicker{padding:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:before,.datepicker-dropdown:after{content:'';display:inline-block;border-top:0;position:absolute}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days div.datepicker-days,.datepicker.months div.datepicker-months,.datepicker.years div.datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#eee;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today[disabled]:hover,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today[disabled].active,.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today[disabled]:hover,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected[disabled]:hover,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active[disabled]:hover,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active[disabled].active,.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active[disabled]:hover,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#999}.datepicker th.datepicker-switch{width:145px}.datepicker thead tr:first-child th,.datepicker tfoot tr th{cursor:pointer}.datepicker thead tr:first-child th:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child th.cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon i{cursor:pointer;width:16px;height:16px}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.428571429;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.428571429}.datepicker.dropdown-menu th,.datepicker.dropdown-menu td{padding:4px 5px}body h2{margin-top:0}body .glyphicon .white{color:#fff}.navbar .dropdown-toggle{padding-top:0;padding-bottom:0}.navbar .dropdown-toggle img{width:40px;border-radius:50% 50%}.navbar .dropdown-toggle .name{display:inline-block;padding-top:15px;padding-bottom:15px;padding-left:8px}#customer ul{clear:both;padding:0;margin:0}#customer ul li{list-style:none;display:inline-block;white-space:nowrap;padding-top:10px;text-align:center;width:79px;overflow:hidden}#customer ul li:hover{background-color:#ddd;cursor:pointer}#customer ul li.marked{color:#468847;background-color:#DFF0D8}#customer ul li.hidden{display:none!important}#customer ul li .name{font-weight:700}#register #products{margin-bottom:2em}#register #products ul{clear:both;padding:0;margin:0}#register #products ul li{list-style:none;display:inline-block;white-space:nowrap;padding-top:10px;padding-left:20px;padding-right:20px;text-align:center}#register #products ul li:hover{background-color:#ddd;cursor:pointer}#register #products ul li.marked{color:#468847;background-color:#DFF0D8}#register #products ul li .qty{font-size:1.7em;font-weight:700}#register #products ul li .name{font-weight:700}#register #products ul li img.product{width:64px;height:auto;max-width:100%}#register .total{color:#fff;background-color:#222;padding:0 10px;min-width:115px}#register .total h2{color:#fff;margin:.2em 0}#register h2{display:inline-block}#register input[name=customer_name]{display:block}#log h2{display:inline-block}#log table tr{text-align:middle}#log table .amount{font-size:2em;font-weight:700}#inventory tr.info{border-left:8px solid #d9edf7}#inventory tr.warning{border-left:8px solid #da7878}#inventory tr.warning .product-amount{font-weight:700}#inventory tr.success{border-left:8px solid #c1e2b3}#inventory tr>td{background-color:inherit}#inventory tr:nth-child(odd) td{background-color:#f9f9f9}#inventory tr.inactive{color:#888}#inventory-report .form-control{width:auto}#inventory-report table .positive{color:#468847}#inventory-report table .negative{color:#da7878}#user-profile .profile-name{display:inline-block;line-height:50px;vertical-align:bottom}#user-profile .profile-image{border-radius:50% 50%}#footer .credits{text-align:center;margin:2em;font-size:10px;color:grey}#footer .credits img{margin-top:10px;display:inline-block}#footer .credits .love{color:#faafba}.facebook-image img{height:32px}.form-login{max-width:320px;margin:4em auto}.form-login [type=submit]{display:block;width:100%} \ No newline at end of file diff --git a/static/gulpfile.js b/static/gulpfile.js index f7fd6c0..6771a51 100644 --- a/static/gulpfile.js +++ b/static/gulpfile.js @@ -1,36 +1,33 @@ 'use strict'; var gulp = require('gulp'); -var glob = require('glob'); -// load plugins var $ = require('gulp-load-plugins')(); -var mainBowerFiles = require('main-bower-files'); // TODO: use these +var bowerFiles = require('main-bower-files'); +var del = require('del'); +var browserSync = require('browser-sync').create(); +var reload = browserSync.reload; gulp.task('styles', function () { return gulp.src('app/styles/*.scss') - .pipe($.plumber()) .pipe($.sass({ - errLogToConsole: true - })) + sourceComments: 'map' + }).on('error', $.sass.logError)) .pipe($.autoprefixer('last 1 version')) .pipe(gulp.dest('dist/styles')) - .pipe($.size()); }); gulp.task('scripts', function () { return gulp.src('app/js/**/*.js') .pipe($.jshint()) .pipe($.jshint.reporter(require('jshint-stylish'))) + .pipe($.concat('app.js')) .pipe(gulp.dest('dist/js')) - .pipe($.size()); }); gulp.task('diststyles', function () { return gulp.src('app/styles/*.scss') - .pipe($.plumber()) - .pipe($.sass({ - errLogToConsole: true - })) + .pipe($.sass() + .on('error', $.sass.logError)) // TODO: do this with a custom django-compressor filter, too much maintenance otherwise // .pipe($.uncss({ // html: glob.sync('../templates/**/*.html'), @@ -39,7 +36,6 @@ gulp.task('diststyles', function () { .pipe($.autoprefixer('last 1 version')) .pipe($.csso()) .pipe(gulp.dest('dist/styles')) - .pipe($.size()); }); gulp.task('distscripts', function () { @@ -47,8 +43,8 @@ gulp.task('distscripts', function () { .pipe($.jshint()) .pipe($.jshint.reporter(require('jshint-stylish'))) .pipe($.uglify()) + .pipe($.concat('app.js')) .pipe(gulp.dest('dist/js')) - .pipe($.size()); }); gulp.task('images', function () { @@ -59,43 +55,44 @@ gulp.task('images', function () { interlaced: true })) .pipe(gulp.dest('dist/images')) - .pipe($.size()); }); gulp.task('fonts', function () { - return gulp.src(mainBowerFiles()) - .pipe($.filter('**/*.{eot,svg,ttf,woff}')) + return gulp.src(bowerFiles()) + .pipe($.filter('**/*.{eot,svg,ttf,woff,woff2}')) .pipe($.flatten()) .pipe(gulp.dest('dist/fonts')) - .pipe($.size()); }); -gulp.task('clean', function () { - return gulp.src(['dist'], { read: false }).pipe($.clean()); +gulp.task('clean', function (cb) { + return del('dist', cb); }); -gulp.task('build', ['distscripts', 'diststyles', 'images', 'fonts']); - +gulp.task( + 'build', + ['distscripts', 'diststyles', 'images', 'fonts'], + function() { + return gulp.src('dist/**/*').pipe($.size({title: 'build', gzip: true})); + } +); gulp.task('default', ['clean'], function () { gulp.start('build'); }); gulp.task('serve', ['styles'], function () { - require('opn')('http://localhost:8000'); }); gulp.task('watch', ['serve'], function () { - var server = $.livereload(); + browserSync.init({ + proxy: '127.0.0.1:8000' + }); // watch for changes - gulp.watch([ '../templates/**/*.html', 'app/js/**/*.js', 'app/images/**/*' - ]).on('change', function (file) { - server.changed(file.path); - }); + ]).on('change', reload); gulp.watch('app/styles/**/*.scss', ['styles']); gulp.watch('app/js/**/*.js', ['scripts']); diff --git a/static/package.json b/static/package.json index 79acafd..1e7bfa1 100644 --- a/static/package.json +++ b/static/package.json @@ -4,27 +4,26 @@ "version": "0.0.1", "private": true, "devDependencies": { - "glob": "^4.0.6", - "gulp": "^3.8.8", - "gulp-autoprefixer": "0.0.7", - "gulp-bower-files": "^0.2.1", + "browser-sync": "^2.10.0", + "del": "^2.1.0", + "glob": "^6.0.1", + "gulp": "^3.9.0", + "gulp-autoprefixer": "3.1.0", "gulp-cache": "^0.1.11", - "gulp-clean": "^0.2.4", + "gulp-concat": "^2.6.0", "gulp-csso": "^0.2.6", - "gulp-filter": "^0.4.1", + "gulp-filter": "^3.0.1", "gulp-flatten": "0.0.2", - "gulp-imagemin": "^0.5.1", - "gulp-jshint": "^1.5.3", - "gulp-livereload": "^1.5.0", - "gulp-load-plugins": "^0.5.3", - "gulp-plumber": "^0.6.5", - "gulp-sass": "^2.0.4", - "gulp-size": "^0.3.1", - "gulp-uglify": "^0.2.1", - "gulp-uncss": "^0.4.5", - "jshint-stylish": "^0.2.0", - "main-bower-files": "^2.0.0", - "opn": "^0.1.2" + "gulp-if": "^2.0.0", + "gulp-imagemin": "^2.4.0", + "gulp-jshint": "^2.0.0", + "gulp-load-plugins": "^1.1.0", + "gulp-sass": "^2.1.0", + "gulp-size": "^2.0.0", + "gulp-uglify": "^1.5.1", + "gulp-uncss": "^1.0.4", + "jshint-stylish": "^2.1.0", + "main-bower-files": "^2.9.0" }, "dependencies": {} } diff --git a/templates/register.html b/templates/register.html index 8bd9d2f..6f65d89 100644 --- a/templates/register.html +++ b/templates/register.html @@ -72,29 +72,30 @@

Kjøper hva?

    {% for product in products %} -
  • - - - - 0 - {% if product.image %} -
    - {% else %} -
    - {% endif %} - {{ product.name }} - {{product.sale_price_ext|floatformat:0}}/{{product.sale_price_int|floatformat:0}} -
  • +
  • + + + + 0 + {% if product.image %} +
    + {% else %} +
    + {% endif %} + {{ product.name }}
    + {{product.sale_price_ext|floatformat:0}}/{{product.sale_price_int|floatformat:0}} +
  • {% endfor %}
-
-

Totalt:

-
-   -   +
+

Totalt:

+
+   +  
From 2b5c3529d6c4b902e761824dd027d35af4befe78 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Sun, 29 Nov 2015 16:17:25 +0100 Subject: [PATCH 3/6] Initial attempt at using Service Worker - Caches facebook profile pictures and static resources - Removes django-compressor and commited bower_components - rest fixes --- .gitignore | 1 + bbssite/settings.py | 5 - main/api/serializers.py | 9 +- main/api/views.py | 7 +- main/urls.py | 8 +- requirements.txt | 1 - static/.bowerrc | 3 - .../bootstrap-datepicker/.bower.json | 24 - .../bootstrap-datepicker/.gitignore | 3 - .../bootstrap-datepicker/.hgignore | 3 - .../bootstrap-datepicker/.hgtags | 18 - .../bootstrap-datepicker/.jscs.json | 27 - .../bootstrap-datepicker/.jshintrc | 20 - .../bootstrap-datepicker/.travis.yml | 9 - .../bootstrap-datepicker/CHANGELOG.md | 172 - .../bootstrap-datepicker/CONTRIBUTING.md | 41 - .../bootstrap-datepicker/LICENSE | 202 - .../bootstrap-datepicker/README.md | 13 - .../bootstrap-datepicker/bower.json | 9 - .../bootstrap-datepicker/build/build.less | 67 - .../bootstrap-datepicker/build/build3.less | 71 - .../build/build_standalone.less | 61 - .../build/build_standalone3.less | 63 - .../bootstrap-datepicker/composer.json | 20 - .../bootstrap-datepicker/css/datepicker.css | 512 - .../bootstrap-datepicker/css/datepicker3.css | 790 - .../bootstrap-datepicker/docs/Makefile | 153 - .../bootstrap-datepicker/docs/REAME.md | 8 - .../docs/_static/demo_head.png | Bin 28027 -> 0 bytes .../bootstrap-datepicker/docs/conf.py | 248 - .../bootstrap-datepicker/docs/events.rst | 48 - .../bootstrap-datepicker/docs/i18n.rst | 28 - .../bootstrap-datepicker/docs/index.rst | 122 - .../bootstrap-datepicker/docs/keyboard.rst | 27 - .../bootstrap-datepicker/docs/make.bat | 190 - .../bootstrap-datepicker/docs/markup.rst | 50 - .../bootstrap-datepicker/docs/methods.rst | 164 - .../bootstrap-datepicker/docs/options.rst | 191 - .../js/bootstrap-datepicker.js | 1671 -- .../js/locales/bootstrap-datepicker.ar.js | 15 - .../js/locales/bootstrap-datepicker.az.js | 12 - .../js/locales/bootstrap-datepicker.bg.js | 14 - .../js/locales/bootstrap-datepicker.ca.js | 14 - .../js/locales/bootstrap-datepicker.cs.js | 15 - .../js/locales/bootstrap-datepicker.cy.js | 14 - .../js/locales/bootstrap-datepicker.da.js | 15 - .../js/locales/bootstrap-datepicker.de.js | 17 - .../js/locales/bootstrap-datepicker.el.js | 13 - .../js/locales/bootstrap-datepicker.es.js | 14 - .../js/locales/bootstrap-datepicker.et.js | 18 - .../js/locales/bootstrap-datepicker.fa.js | 17 - .../js/locales/bootstrap-datepicker.fi.js | 16 - .../js/locales/bootstrap-datepicker.fr.js | 17 - .../js/locales/bootstrap-datepicker.gl.js | 11 - .../js/locales/bootstrap-datepicker.he.js | 15 - .../js/locales/bootstrap-datepicker.hr.js | 13 - .../js/locales/bootstrap-datepicker.hu.js | 16 - .../js/locales/bootstrap-datepicker.id.js | 15 - .../js/locales/bootstrap-datepicker.is.js | 14 - .../js/locales/bootstrap-datepicker.it.js | 17 - .../js/locales/bootstrap-datepicker.ja.js | 15 - .../js/locales/bootstrap-datepicker.ka.js | 17 - .../js/locales/bootstrap-datepicker.kk.js | 15 - .../js/locales/bootstrap-datepicker.kr.js | 13 - .../js/locales/bootstrap-datepicker.lt.js | 16 - .../js/locales/bootstrap-datepicker.lv.js | 16 - .../js/locales/bootstrap-datepicker.mk.js | 15 - .../js/locales/bootstrap-datepicker.ms.js | 14 - .../js/locales/bootstrap-datepicker.nb.js | 14 - .../js/locales/bootstrap-datepicker.nl-BE.js | 17 - .../js/locales/bootstrap-datepicker.nl.js | 14 - .../js/locales/bootstrap-datepicker.no.js | 16 - .../js/locales/bootstrap-datepicker.pl.js | 15 - .../js/locales/bootstrap-datepicker.pt-BR.js | 15 - .../js/locales/bootstrap-datepicker.pt.js | 16 - .../js/locales/bootstrap-datepicker.ro.js | 16 - .../locales/bootstrap-datepicker.rs-latin.js | 14 - .../js/locales/bootstrap-datepicker.rs.js | 14 - .../js/locales/bootstrap-datepicker.ru.js | 15 - .../js/locales/bootstrap-datepicker.sk.js | 15 - .../js/locales/bootstrap-datepicker.sl.js | 14 - .../js/locales/bootstrap-datepicker.sq.js | 15 - .../js/locales/bootstrap-datepicker.sv.js | 16 - .../js/locales/bootstrap-datepicker.sw.js | 15 - .../js/locales/bootstrap-datepicker.th.js | 14 - .../js/locales/bootstrap-datepicker.tr.js | 16 - .../js/locales/bootstrap-datepicker.ua.js | 15 - .../js/locales/bootstrap-datepicker.vi.js | 16 - .../js/locales/bootstrap-datepicker.zh-CN.js | 16 - .../js/locales/bootstrap-datepicker.zh-TW.js | 17 - .../bootstrap-datepicker/less/datepicker.less | 257 - .../less/datepicker3.less | 252 - .../bootstrap-datepicker/tests/README.md | 55 - .../bootstrap-datepicker/tests/_coverage.html | 26 - .../tests/assets/coverage.js | 48 - .../tests/assets/jquery-1.7.1.min.js | 4 - .../bootstrap-datepicker/tests/assets/mock.js | 26 - .../tests/assets/qunit-logging.js | 29 - .../tests/assets/qunit.css | 235 - .../tests/assets/qunit.js | 1669 -- .../tests/assets/utils.js | 21 - .../bootstrap-datepicker/tests/run-qunit.js | 157 - .../tests/suites/calendar-weeks.js | 48 - .../tests/suites/component.js | 202 - .../tests/suites/data-api.js | 114 - .../tests/suites/events.js | 306 - .../tests/suites/formats.js | 235 - .../tests/suites/inline.js | 28 - .../tests/suites/keyboard_navigation/2011.js | 92 - .../tests/suites/keyboard_navigation/2012.js | 469 - .../tests/suites/keyboard_navigation/all.js | 26 - .../tests/suites/methods.js | 78 - .../tests/suites/mouse_navigation/2011.js | 66 - .../tests/suites/mouse_navigation/2012.js | 251 - .../tests/suites/mouse_navigation/all.js | 33 - .../tests/suites/noconflict.js | 20 - .../tests/suites/options.js | 648 - .../bootstrap-datepicker/tests/tests.html | 50 - .../bootstrap-sass-official/.bower.json | 56 - .../bootstrap-sass-official/CHANGELOG.md | 125 - .../bootstrap-sass-official/CONTRIBUTING.md | 79 - .../bootstrap-sass-official/LICENSE | 21 - .../bootstrap-sass-official/README.md | 264 - .../bootstrap-sass-official/bower.json | 47 - .../bootstrap-sass-official/composer.json | 35 - .../bootstrap-sass-official/package.json | 25 - .../glyphicons-halflings-regular.eot | Bin 20335 -> 0 bytes .../glyphicons-halflings-regular.svg | 229 - .../glyphicons-halflings-regular.ttf | Bin 41280 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 23320 -> 0 bytes .../vendor/assets/javascripts/bootstrap.js | 12 - .../assets/javascripts/bootstrap/affix.js | 135 - .../assets/javascripts/bootstrap/alert.js | 88 - .../assets/javascripts/bootstrap/button.js | 107 - .../assets/javascripts/bootstrap/carousel.js | 205 - .../assets/javascripts/bootstrap/collapse.js | 175 - .../assets/javascripts/bootstrap/dropdown.js | 148 - .../assets/javascripts/bootstrap/modal.js | 275 - .../assets/javascripts/bootstrap/popover.js | 110 - .../assets/javascripts/bootstrap/scrollspy.js | 154 - .../assets/javascripts/bootstrap/tab.js | 125 - .../assets/javascripts/bootstrap/tooltip.js | 422 - .../javascripts/bootstrap/transition.js | 48 - .../assets/stylesheets/_bootstrap-mincer.scss | 17 - .../vendor/assets/stylesheets/bootstrap.scss | 50 - .../assets/stylesheets/bootstrap/_alerts.scss | 67 - .../assets/stylesheets/bootstrap/_badges.scss | 57 - .../stylesheets/bootstrap/_breadcrumbs.scss | 26 - .../stylesheets/bootstrap/_button-groups.scss | 236 - .../stylesheets/bootstrap/_buttons.scss | 159 - .../stylesheets/bootstrap/_carousel.scss | 241 - .../assets/stylesheets/bootstrap/_close.scss | 35 - .../assets/stylesheets/bootstrap/_code.scss | 62 - .../bootstrap/_component-animations.scss | 35 - .../stylesheets/bootstrap/_dropdowns.scss | 214 - .../assets/stylesheets/bootstrap/_forms.scss | 478 - .../stylesheets/bootstrap/_glyphicons.scss | 237 - .../assets/stylesheets/bootstrap/_grid.scss | 84 - .../stylesheets/bootstrap/_input-groups.scss | 162 - .../stylesheets/bootstrap/_jumbotron.scss | 48 - .../assets/stylesheets/bootstrap/_labels.scss | 66 - .../stylesheets/bootstrap/_list-group.scss | 129 - .../assets/stylesheets/bootstrap/_media.scss | 56 - .../assets/stylesheets/bootstrap/_mixins.scss | 39 - .../assets/stylesheets/bootstrap/_modals.scss | 147 - .../assets/stylesheets/bootstrap/_navbar.scss | 658 - .../assets/stylesheets/bootstrap/_navs.scss | 242 - .../stylesheets/bootstrap/_normalize.scss | 425 - .../assets/stylesheets/bootstrap/_pager.scss | 55 - .../stylesheets/bootstrap/_pagination.scss | 88 - .../assets/stylesheets/bootstrap/_panels.scss | 240 - .../stylesheets/bootstrap/_popovers.scss | 133 - .../assets/stylesheets/bootstrap/_print.scss | 101 - .../stylesheets/bootstrap/_progress-bars.scss | 89 - .../bootstrap/_responsive-embed.scss | 34 - .../bootstrap/_responsive-utilities.scss | 173 - .../stylesheets/bootstrap/_scaffolding.scss | 150 - .../assets/stylesheets/bootstrap/_tables.scss | 233 - .../assets/stylesheets/bootstrap/_theme.scss | 247 - .../stylesheets/bootstrap/_thumbnails.scss | 38 - .../stylesheets/bootstrap/_tooltip.scss | 95 - .../assets/stylesheets/bootstrap/_type.scss | 294 - .../stylesheets/bootstrap/_utilities.scss | 56 - .../stylesheets/bootstrap/_variables.scss | 853 - .../assets/stylesheets/bootstrap/_wells.scss | 29 - .../stylesheets/bootstrap/bootstrap.scss | 50 - .../stylesheets/bootstrap/mixins/_alerts.scss | 14 - .../bootstrap/mixins/_background-variant.scss | 11 - .../bootstrap/mixins/_border-radius.scss | 18 - .../bootstrap/mixins/_buttons.scss | 50 - .../bootstrap/mixins/_center-block.scss | 7 - .../bootstrap/mixins/_clearfix.scss | 22 - .../stylesheets/bootstrap/mixins/_forms.scss | 84 - .../bootstrap/mixins/_gradients.scss | 58 - .../bootstrap/mixins/_grid-framework.scss | 87 - .../stylesheets/bootstrap/mixins/_grid.scss | 122 - .../bootstrap/mixins/_hide-text.scss | 21 - .../stylesheets/bootstrap/mixins/_image.scss | 33 - .../stylesheets/bootstrap/mixins/_labels.scss | 12 - .../bootstrap/mixins/_list-group.scss | 31 - .../bootstrap/mixins/_nav-divider.scss | 10 - .../bootstrap/mixins/_nav-vertical-align.scss | 9 - .../bootstrap/mixins/_opacity.scss | 8 - .../bootstrap/mixins/_pagination.scss | 23 - .../stylesheets/bootstrap/mixins/_panels.scss | 20 - .../bootstrap/mixins/_progress-bar.scss | 8 - .../bootstrap/mixins/_reset-filter.scss | 8 - .../stylesheets/bootstrap/mixins/_resize.scss | 6 - .../mixins/_responsive-visibility.scss | 21 - .../stylesheets/bootstrap/mixins/_size.scss | 10 - .../bootstrap/mixins/_tab-focus.scss | 9 - .../bootstrap/mixins/_table-row.scss | 28 - .../bootstrap/mixins/_text-emphasis.scss | 11 - .../bootstrap/mixins/_text-overflow.scss | 8 - .../bootstrap/mixins/_vendor-prefixes.scss | 224 - .../bower_components/bootstrap/.bower.json | 47 - .../bower_components/bootstrap/Gruntfile.js | 480 - static/app/bower_components/bootstrap/LICENSE | 21 - .../app/bower_components/bootstrap/README.md | 127 - .../app/bower_components/bootstrap/bower.json | 38 - .../bootstrap/dist/css/bootstrap-theme.css | 442 - .../dist/css/bootstrap-theme.css.map | 1 - .../dist/css/bootstrap-theme.min.css | 5 - .../bootstrap/dist/css/bootstrap.css | 6203 ------ .../bootstrap/dist/css/bootstrap.css.map | 1 - .../bootstrap/dist/css/bootstrap.min.css | 5 - .../fonts/glyphicons-halflings-regular.eot | Bin 20335 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 229 - .../fonts/glyphicons-halflings-regular.ttf | Bin 41280 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23320 -> 0 bytes .../bootstrap/dist/js/bootstrap.js | 2114 -- .../bootstrap/dist/js/bootstrap.min.js | 6 - .../fonts/glyphicons-halflings-regular.eot | Bin 20335 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 229 - .../fonts/glyphicons-halflings-regular.ttf | Bin 41280 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23320 -> 0 bytes .../grunt/bs-glyphicons-data-generator.js | 41 - .../bootstrap/grunt/bs-lessdoc-parser.js | 236 - .../bootstrap/grunt/bs-raw-files-generator.js | 46 - .../bootstrap/grunt/sauce_browsers.yml | 82 - .../bower_components/bootstrap/js/affix.js | 142 - .../bower_components/bootstrap/js/alert.js | 92 - .../bower_components/bootstrap/js/button.js | 110 - .../bower_components/bootstrap/js/carousel.js | 223 - .../bower_components/bootstrap/js/collapse.js | 170 - .../bower_components/bootstrap/js/dropdown.js | 151 - .../bower_components/bootstrap/js/modal.js | 280 - .../bower_components/bootstrap/js/popover.js | 113 - .../bootstrap/js/scrollspy.js | 170 - .../app/bower_components/bootstrap/js/tab.js | 128 - .../bower_components/bootstrap/js/tooltip.js | 457 - .../bootstrap/js/transition.js | 59 - .../bootstrap/less/alerts.less | 68 - .../bootstrap/less/badges.less | 55 - .../bootstrap/less/bootstrap.less | 50 - .../bootstrap/less/breadcrumbs.less | 26 - .../bootstrap/less/button-groups.less | 240 - .../bootstrap/less/buttons.less | 157 - .../bootstrap/less/carousel.less | 243 - .../bootstrap/less/close.less | 33 - .../bower_components/bootstrap/less/code.less | 68 - .../bootstrap/less/component-animations.less | 31 - .../bootstrap/less/dropdowns.less | 215 - .../bootstrap/less/forms.less | 540 - .../bootstrap/less/glyphicons.less | 233 - .../bower_components/bootstrap/less/grid.less | 84 - .../bootstrap/less/input-groups.less | 166 - .../bootstrap/less/jumbotron.less | 48 - .../bootstrap/less/labels.less | 64 - .../bootstrap/less/list-group.less | 131 - .../bootstrap/less/media.less | 56 - .../bootstrap/less/mixins.less | 39 - .../bootstrap/less/mixins/alerts.less | 14 - .../less/mixins/background-variant.less | 8 - .../bootstrap/less/mixins/border-radius.less | 18 - .../bootstrap/less/mixins/buttons.less | 50 - .../bootstrap/less/mixins/center-block.less | 7 - .../bootstrap/less/mixins/clearfix.less | 22 - .../bootstrap/less/mixins/forms.less | 81 - .../bootstrap/less/mixins/gradients.less | 59 - .../bootstrap/less/mixins/grid-framework.less | 91 - .../bootstrap/less/mixins/grid.less | 122 - .../bootstrap/less/mixins/hide-text.less | 21 - .../bootstrap/less/mixins/image.less | 34 - .../bootstrap/less/mixins/labels.less | 12 - .../bootstrap/less/mixins/list-group.less | 29 - .../bootstrap/less/mixins/nav-divider.less | 10 - .../less/mixins/nav-vertical-align.less | 9 - .../bootstrap/less/mixins/opacity.less | 8 - .../bootstrap/less/mixins/pagination.less | 23 - .../bootstrap/less/mixins/panels.less | 24 - .../bootstrap/less/mixins/progress-bar.less | 10 - .../bootstrap/less/mixins/reset-filter.less | 8 - .../bootstrap/less/mixins/resize.less | 6 - .../less/mixins/responsive-visibility.less | 15 - .../bootstrap/less/mixins/size.less | 10 - .../bootstrap/less/mixins/tab-focus.less | 9 - .../bootstrap/less/mixins/table-row.less | 28 - .../bootstrap/less/mixins/text-emphasis.less | 8 - .../bootstrap/less/mixins/text-overflow.less | 8 - .../less/mixins/vendor-prefixes.less | 224 - .../bootstrap/less/modals.less | 150 - .../bootstrap/less/navbar.less | 655 - .../bower_components/bootstrap/less/navs.less | 242 - .../bootstrap/less/normalize.less | 425 - .../bootstrap/less/pager.less | 55 - .../bootstrap/less/pagination.less | 88 - .../bootstrap/less/panels.less | 243 - .../bootstrap/less/popovers.less | 133 - .../bootstrap/less/print.less | 101 - .../bootstrap/less/progress-bars.less | 105 - .../bootstrap/less/responsive-embed.less | 34 - .../bootstrap/less/responsive-utilities.less | 194 - .../bootstrap/less/scaffolding.less | 150 - .../bootstrap/less/tables.less | 233 - .../bootstrap/less/theme.less | 258 - .../bootstrap/less/thumbnails.less | 36 - .../bootstrap/less/tooltip.less | 95 - .../bower_components/bootstrap/less/type.less | 313 - .../bootstrap/less/utilities.less | 57 - .../bootstrap/less/variables.less | 846 - .../bootstrap/less/wells.less | 29 - .../bower_components/bootstrap/package.json | 81 - .../bower_components/highcharts/.bower.json | 20 - .../app/bower_components/highcharts/README.md | 3 - .../adapters/standalone-framework.js | 18 - .../adapters/standalone-framework.src.js | 603 - .../bower_components/highcharts/bower.json | 9 - .../highcharts/highcharts-3d.js | 45 - .../highcharts/highcharts-3d.src.js | 1383 -- .../highcharts/highcharts-all.js | 471 - .../highcharts/highcharts-more.js | 53 - .../highcharts/highcharts-more.src.js | 2575 --- .../bower_components/highcharts/highcharts.js | 308 - .../highcharts/highcharts.src.js | 17737 ---------------- .../highcharts/modules/canvas-tools.js | 133 - .../highcharts/modules/canvas-tools.src.js | 3113 --- .../highcharts/modules/data.js | 24 - .../highcharts/modules/data.src.js | 1025 - .../highcharts/modules/drilldown.js | 15 - .../highcharts/modules/drilldown.src.js | 606 - .../highcharts/modules/exporting.js | 23 - .../highcharts/modules/exporting.src.js | 719 - .../highcharts/modules/funnel.js | 13 - .../highcharts/modules/funnel.src.js | 310 - .../highcharts/modules/heatmap.js | 23 - .../highcharts/modules/heatmap.src.js | 687 - .../highcharts/modules/no-data-to-display.js | 12 - .../modules/no-data-to-display.src.js | 130 - .../highcharts/modules/solid-gauge.js | 13 - .../highcharts/modules/solid-gauge.src.js | 234 - .../highcharts/themes/dark-blue.js | 254 - .../highcharts/themes/dark-green.js | 255 - .../highcharts/themes/dark-unica.js | 213 - .../highcharts/themes/gray.js | 257 - .../highcharts/themes/grid-light.js | 74 - .../highcharts/themes/grid.js | 103 - .../highcharts/themes/sand-signika.js | 104 - .../highcharts/themes/skies.js | 89 - .../app/bower_components/jquery/.bower.json | 37 - .../bower_components/jquery/MIT-LICENSE.txt | 21 - static/app/bower_components/jquery/bower.json | 27 - .../bower_components/jquery/dist/jquery.js | 10308 --------- .../jquery/dist/jquery.min.js | 5 - .../jquery/dist/jquery.min.map | 1 - .../app/bower_components/jquery/src/ajax.js | 807 - .../bower_components/jquery/src/ajax/jsonp.js | 89 - .../bower_components/jquery/src/ajax/load.js | 75 - .../jquery/src/ajax/parseJSON.js | 51 - .../jquery/src/ajax/parseXML.js | 31 - .../jquery/src/ajax/script.js | 93 - .../jquery/src/ajax/var/nonce.js | 5 - .../jquery/src/ajax/var/rquery.js | 3 - .../bower_components/jquery/src/ajax/xhr.js | 196 - .../bower_components/jquery/src/attributes.js | 11 - .../jquery/src/attributes/attr.js | 271 - .../jquery/src/attributes/classes.js | 157 - .../jquery/src/attributes/prop.js | 134 - .../jquery/src/attributes/support.js | 62 - .../jquery/src/attributes/val.js | 178 - .../bower_components/jquery/src/callbacks.js | 205 - .../app/bower_components/jquery/src/core.js | 534 - .../jquery/src/core/access.js | 60 - .../bower_components/jquery/src/core/init.js | 132 - .../jquery/src/core/parseHTML.js | 39 - .../bower_components/jquery/src/core/ready.js | 152 - .../jquery/src/core/var/rsingleTag.js | 4 - static/app/bower_components/jquery/src/css.js | 504 - .../jquery/src/css/addGetHookIf.js | 32 - .../bower_components/jquery/src/css/curCSS.js | 117 - .../jquery/src/css/defaultDisplay.js | 69 - .../jquery/src/css/hiddenVisibleSelectors.js | 20 - .../jquery/src/css/support.js | 149 - .../bower_components/jquery/src/css/swap.js | 28 - .../jquery/src/css/var/cssExpand.js | 3 - .../jquery/src/css/var/isHidden.js | 13 - .../jquery/src/css/var/rmargin.js | 3 - .../jquery/src/css/var/rnumnonpx.js | 5 - .../app/bower_components/jquery/src/data.js | 335 - .../jquery/src/data/accepts.js | 21 - .../jquery/src/data/support.js | 25 - .../bower_components/jquery/src/deferred.js | 150 - .../bower_components/jquery/src/deprecated.js | 13 - .../bower_components/jquery/src/dimensions.js | 50 - .../bower_components/jquery/src/effects.js | 656 - .../jquery/src/effects/Tween.js | 114 - .../jquery/src/effects/animatedSelector.js | 13 - .../jquery/src/effects/support.js | 55 - .../app/bower_components/jquery/src/event.js | 1037 - .../jquery/src/event/alias.js | 39 - .../jquery/src/event/support.js | 26 - .../jquery/src/exports/amd.js | 24 - .../jquery/src/exports/global.js | 32 - .../app/bower_components/jquery/src/intro.js | 44 - .../app/bower_components/jquery/src/jquery.js | 37 - .../jquery/src/manipulation.js | 744 - .../jquery/src/manipulation/_evalUrl.js | 18 - .../jquery/src/manipulation/support.js | 76 - .../src/manipulation/var/rcheckableType.js | 3 - .../app/bower_components/jquery/src/offset.js | 211 - .../app/bower_components/jquery/src/outro.js | 1 - .../app/bower_components/jquery/src/queue.js | 142 - .../jquery/src/queue/delay.js | 22 - .../jquery/src/selector-sizzle.js | 14 - .../bower_components/jquery/src/selector.js | 1 - .../bower_components/jquery/src/serialize.js | 110 - .../jquery/src/sizzle/dist/sizzle.js | 2044 -- .../jquery/src/sizzle/dist/sizzle.min.js | 3 - .../jquery/src/sizzle/dist/sizzle.min.map | 1 - .../bower_components/jquery/src/support.js | 58 - .../bower_components/jquery/src/traversing.js | 200 - .../jquery/src/traversing/findFilter.js | 100 - .../src/traversing/var/rneedsContext.js | 6 - .../jquery/src/var/class2type.js | 4 - .../bower_components/jquery/src/var/concat.js | 5 - .../jquery/src/var/deletedIds.js | 3 - .../bower_components/jquery/src/var/hasOwn.js | 5 - .../jquery/src/var/indexOf.js | 5 - .../bower_components/jquery/src/var/pnum.js | 3 - .../bower_components/jquery/src/var/push.js | 5 - .../jquery/src/var/rnotwhite.js | 3 - .../bower_components/jquery/src/var/slice.js | 5 - .../jquery/src/var/strundefined.js | 3 - .../jquery/src/var/support.js | 4 - .../jquery/src/var/toString.js | 5 - .../app/bower_components/jquery/src/wrap.js | 75 - .../bower_components/underscore/.bower.json | 32 - .../app/bower_components/underscore/.eslintrc | 35 - .../bower_components/underscore/.gitignore | 2 - .../app/bower_components/underscore/LICENSE | 23 - .../app/bower_components/underscore/README.md | 22 - .../bower_components/underscore/bower.json | 7 - .../underscore/component.json | 10 - .../bower_components/underscore/package.json | 41 - .../underscore/underscore-min.js | 6 - .../underscore/underscore-min.map | 1 - .../bower_components/underscore/underscore.js | 1415 -- static/app/styles/screen.scss | 2 +- static/app/sw/sw-toolbox-config.js | 12 + static/bower.json | 3 +- static/dist/js/app.js | 3 - static/dist/js/app.min.js | 10 + static/dist/service-worker.js | 222 + static/dist/sw/sw-toolbox-config.js | 12 + static/dist/sw/sw-toolbox.js | 51 + static/gulpfile.js | 38 +- static/package.json | 4 +- templates/base.html | 29 +- 468 files changed, 376 insertions(+), 96983 deletions(-) delete mode 100644 static/.bowerrc delete mode 100644 static/app/bower_components/bootstrap-datepicker/.bower.json delete mode 100644 static/app/bower_components/bootstrap-datepicker/.gitignore delete mode 100644 static/app/bower_components/bootstrap-datepicker/.hgignore delete mode 100644 static/app/bower_components/bootstrap-datepicker/.hgtags delete mode 100644 static/app/bower_components/bootstrap-datepicker/.jscs.json delete mode 100644 static/app/bower_components/bootstrap-datepicker/.jshintrc delete mode 100644 static/app/bower_components/bootstrap-datepicker/.travis.yml delete mode 100644 static/app/bower_components/bootstrap-datepicker/CHANGELOG.md delete mode 100644 static/app/bower_components/bootstrap-datepicker/CONTRIBUTING.md delete mode 100644 static/app/bower_components/bootstrap-datepicker/LICENSE delete mode 100644 static/app/bower_components/bootstrap-datepicker/README.md delete mode 100644 static/app/bower_components/bootstrap-datepicker/bower.json delete mode 100644 static/app/bower_components/bootstrap-datepicker/build/build.less delete mode 100644 static/app/bower_components/bootstrap-datepicker/build/build3.less delete mode 100644 static/app/bower_components/bootstrap-datepicker/build/build_standalone.less delete mode 100644 static/app/bower_components/bootstrap-datepicker/build/build_standalone3.less delete mode 100644 static/app/bower_components/bootstrap-datepicker/composer.json delete mode 100644 static/app/bower_components/bootstrap-datepicker/css/datepicker.css delete mode 100644 static/app/bower_components/bootstrap-datepicker/css/datepicker3.css delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/Makefile delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/REAME.md delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/_static/demo_head.png delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/conf.py delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/events.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/i18n.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/index.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/keyboard.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/make.bat delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/markup.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/methods.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/docs/options.rst delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ua.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/less/datepicker.less delete mode 100644 static/app/bower_components/bootstrap-datepicker/less/datepicker3.less delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/README.md delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/_coverage.html delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/coverage.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/jquery-1.7.1.min.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/mock.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/qunit-logging.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.css delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/assets/utils.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/run-qunit.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/component.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/data-api.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/events.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/formats.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/inline.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2011.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2012.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/all.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/methods.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2011.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/all.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/noconflict.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/suites/options.js delete mode 100644 static/app/bower_components/bootstrap-datepicker/tests/tests.html delete mode 100644 static/app/bower_components/bootstrap-sass-official/.bower.json delete mode 100644 static/app/bower_components/bootstrap-sass-official/CHANGELOG.md delete mode 100644 static/app/bower_components/bootstrap-sass-official/CONTRIBUTING.md delete mode 100644 static/app/bower_components/bootstrap-sass-official/LICENSE delete mode 100644 static/app/bower_components/bootstrap-sass-official/README.md delete mode 100644 static/app/bower_components/bootstrap-sass-official/bower.json delete mode 100644 static/app/bower_components/bootstrap-sass-official/composer.json delete mode 100644 static/app/bower_components/bootstrap-sass-official/package.json delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/affix.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/alert.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/button.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/carousel.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/collapse.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/dropdown.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/modal.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/popover.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/scrollspy.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/tab.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/tooltip.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/transition.js delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/_bootstrap-mincer.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_alerts.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_badges.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_button-groups.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_buttons.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_carousel.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_close.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_code.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_component-animations.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_dropdowns.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_forms.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_glyphicons.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_grid.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_input-groups.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_jumbotron.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_labels.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_list-group.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_media.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_mixins.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_modals.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_navbar.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_navs.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_normalize.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_pager.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_pagination.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_panels.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_popovers.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_print.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_progress-bars.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_responsive-embed.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_scaffolding.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_tables.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_theme.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_thumbnails.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_tooltip.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_type.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_utilities.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_variables.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_wells.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/bootstrap.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_alerts.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_background-variant.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_border-radius.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_buttons.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_center-block.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_clearfix.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_forms.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_gradients.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_grid-framework.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_grid.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_hide-text.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_image.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_labels.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_list-group.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_nav-divider.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_opacity.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_pagination.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_panels.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_progress-bar.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_reset-filter.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_resize.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_size.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_tab-focus.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_table-row.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_text-overflow.scss delete mode 100644 static/app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss delete mode 100644 static/app/bower_components/bootstrap/.bower.json delete mode 100644 static/app/bower_components/bootstrap/Gruntfile.js delete mode 100644 static/app/bower_components/bootstrap/LICENSE delete mode 100644 static/app/bower_components/bootstrap/README.md delete mode 100644 static/app/bower_components/bootstrap/bower.json delete mode 100644 static/app/bower_components/bootstrap/dist/css/bootstrap-theme.css delete mode 100644 static/app/bower_components/bootstrap/dist/css/bootstrap-theme.css.map delete mode 100644 static/app/bower_components/bootstrap/dist/css/bootstrap-theme.min.css delete mode 100644 static/app/bower_components/bootstrap/dist/css/bootstrap.css delete mode 100644 static/app/bower_components/bootstrap/dist/css/bootstrap.css.map delete mode 100644 static/app/bower_components/bootstrap/dist/css/bootstrap.min.css delete mode 100644 static/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot delete mode 100644 static/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg delete mode 100644 static/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf delete mode 100644 static/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff delete mode 100644 static/app/bower_components/bootstrap/dist/js/bootstrap.js delete mode 100644 static/app/bower_components/bootstrap/dist/js/bootstrap.min.js delete mode 100644 static/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 static/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 static/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 static/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 static/app/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js delete mode 100644 static/app/bower_components/bootstrap/grunt/bs-lessdoc-parser.js delete mode 100644 static/app/bower_components/bootstrap/grunt/bs-raw-files-generator.js delete mode 100644 static/app/bower_components/bootstrap/grunt/sauce_browsers.yml delete mode 100644 static/app/bower_components/bootstrap/js/affix.js delete mode 100644 static/app/bower_components/bootstrap/js/alert.js delete mode 100644 static/app/bower_components/bootstrap/js/button.js delete mode 100644 static/app/bower_components/bootstrap/js/carousel.js delete mode 100644 static/app/bower_components/bootstrap/js/collapse.js delete mode 100644 static/app/bower_components/bootstrap/js/dropdown.js delete mode 100644 static/app/bower_components/bootstrap/js/modal.js delete mode 100644 static/app/bower_components/bootstrap/js/popover.js delete mode 100644 static/app/bower_components/bootstrap/js/scrollspy.js delete mode 100644 static/app/bower_components/bootstrap/js/tab.js delete mode 100644 static/app/bower_components/bootstrap/js/tooltip.js delete mode 100644 static/app/bower_components/bootstrap/js/transition.js delete mode 100644 static/app/bower_components/bootstrap/less/alerts.less delete mode 100644 static/app/bower_components/bootstrap/less/badges.less delete mode 100644 static/app/bower_components/bootstrap/less/bootstrap.less delete mode 100644 static/app/bower_components/bootstrap/less/breadcrumbs.less delete mode 100644 static/app/bower_components/bootstrap/less/button-groups.less delete mode 100644 static/app/bower_components/bootstrap/less/buttons.less delete mode 100644 static/app/bower_components/bootstrap/less/carousel.less delete mode 100644 static/app/bower_components/bootstrap/less/close.less delete mode 100644 static/app/bower_components/bootstrap/less/code.less delete mode 100644 static/app/bower_components/bootstrap/less/component-animations.less delete mode 100644 static/app/bower_components/bootstrap/less/dropdowns.less delete mode 100644 static/app/bower_components/bootstrap/less/forms.less delete mode 100644 static/app/bower_components/bootstrap/less/glyphicons.less delete mode 100644 static/app/bower_components/bootstrap/less/grid.less delete mode 100644 static/app/bower_components/bootstrap/less/input-groups.less delete mode 100644 static/app/bower_components/bootstrap/less/jumbotron.less delete mode 100644 static/app/bower_components/bootstrap/less/labels.less delete mode 100644 static/app/bower_components/bootstrap/less/list-group.less delete mode 100644 static/app/bower_components/bootstrap/less/media.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/alerts.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/background-variant.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/border-radius.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/buttons.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/center-block.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/clearfix.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/forms.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/gradients.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/grid-framework.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/grid.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/hide-text.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/image.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/labels.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/list-group.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/nav-divider.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/nav-vertical-align.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/opacity.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/pagination.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/panels.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/progress-bar.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/reset-filter.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/resize.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/responsive-visibility.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/size.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/tab-focus.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/table-row.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/text-emphasis.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/text-overflow.less delete mode 100644 static/app/bower_components/bootstrap/less/mixins/vendor-prefixes.less delete mode 100644 static/app/bower_components/bootstrap/less/modals.less delete mode 100644 static/app/bower_components/bootstrap/less/navbar.less delete mode 100644 static/app/bower_components/bootstrap/less/navs.less delete mode 100644 static/app/bower_components/bootstrap/less/normalize.less delete mode 100644 static/app/bower_components/bootstrap/less/pager.less delete mode 100644 static/app/bower_components/bootstrap/less/pagination.less delete mode 100644 static/app/bower_components/bootstrap/less/panels.less delete mode 100644 static/app/bower_components/bootstrap/less/popovers.less delete mode 100644 static/app/bower_components/bootstrap/less/print.less delete mode 100644 static/app/bower_components/bootstrap/less/progress-bars.less delete mode 100644 static/app/bower_components/bootstrap/less/responsive-embed.less delete mode 100644 static/app/bower_components/bootstrap/less/responsive-utilities.less delete mode 100644 static/app/bower_components/bootstrap/less/scaffolding.less delete mode 100644 static/app/bower_components/bootstrap/less/tables.less delete mode 100644 static/app/bower_components/bootstrap/less/theme.less delete mode 100644 static/app/bower_components/bootstrap/less/thumbnails.less delete mode 100644 static/app/bower_components/bootstrap/less/tooltip.less delete mode 100644 static/app/bower_components/bootstrap/less/type.less delete mode 100644 static/app/bower_components/bootstrap/less/utilities.less delete mode 100644 static/app/bower_components/bootstrap/less/variables.less delete mode 100644 static/app/bower_components/bootstrap/less/wells.less delete mode 100644 static/app/bower_components/bootstrap/package.json delete mode 100644 static/app/bower_components/highcharts/.bower.json delete mode 100644 static/app/bower_components/highcharts/README.md delete mode 100644 static/app/bower_components/highcharts/adapters/standalone-framework.js delete mode 100644 static/app/bower_components/highcharts/adapters/standalone-framework.src.js delete mode 100644 static/app/bower_components/highcharts/bower.json delete mode 100644 static/app/bower_components/highcharts/highcharts-3d.js delete mode 100644 static/app/bower_components/highcharts/highcharts-3d.src.js delete mode 100644 static/app/bower_components/highcharts/highcharts-all.js delete mode 100644 static/app/bower_components/highcharts/highcharts-more.js delete mode 100644 static/app/bower_components/highcharts/highcharts-more.src.js delete mode 100644 static/app/bower_components/highcharts/highcharts.js delete mode 100644 static/app/bower_components/highcharts/highcharts.src.js delete mode 100644 static/app/bower_components/highcharts/modules/canvas-tools.js delete mode 100644 static/app/bower_components/highcharts/modules/canvas-tools.src.js delete mode 100644 static/app/bower_components/highcharts/modules/data.js delete mode 100644 static/app/bower_components/highcharts/modules/data.src.js delete mode 100644 static/app/bower_components/highcharts/modules/drilldown.js delete mode 100644 static/app/bower_components/highcharts/modules/drilldown.src.js delete mode 100644 static/app/bower_components/highcharts/modules/exporting.js delete mode 100644 static/app/bower_components/highcharts/modules/exporting.src.js delete mode 100644 static/app/bower_components/highcharts/modules/funnel.js delete mode 100644 static/app/bower_components/highcharts/modules/funnel.src.js delete mode 100644 static/app/bower_components/highcharts/modules/heatmap.js delete mode 100644 static/app/bower_components/highcharts/modules/heatmap.src.js delete mode 100644 static/app/bower_components/highcharts/modules/no-data-to-display.js delete mode 100644 static/app/bower_components/highcharts/modules/no-data-to-display.src.js delete mode 100644 static/app/bower_components/highcharts/modules/solid-gauge.js delete mode 100644 static/app/bower_components/highcharts/modules/solid-gauge.src.js delete mode 100644 static/app/bower_components/highcharts/themes/dark-blue.js delete mode 100644 static/app/bower_components/highcharts/themes/dark-green.js delete mode 100644 static/app/bower_components/highcharts/themes/dark-unica.js delete mode 100644 static/app/bower_components/highcharts/themes/gray.js delete mode 100644 static/app/bower_components/highcharts/themes/grid-light.js delete mode 100644 static/app/bower_components/highcharts/themes/grid.js delete mode 100644 static/app/bower_components/highcharts/themes/sand-signika.js delete mode 100644 static/app/bower_components/highcharts/themes/skies.js delete mode 100644 static/app/bower_components/jquery/.bower.json delete mode 100644 static/app/bower_components/jquery/MIT-LICENSE.txt delete mode 100644 static/app/bower_components/jquery/bower.json delete mode 100644 static/app/bower_components/jquery/dist/jquery.js delete mode 100644 static/app/bower_components/jquery/dist/jquery.min.js delete mode 100644 static/app/bower_components/jquery/dist/jquery.min.map delete mode 100644 static/app/bower_components/jquery/src/ajax.js delete mode 100644 static/app/bower_components/jquery/src/ajax/jsonp.js delete mode 100644 static/app/bower_components/jquery/src/ajax/load.js delete mode 100644 static/app/bower_components/jquery/src/ajax/parseJSON.js delete mode 100644 static/app/bower_components/jquery/src/ajax/parseXML.js delete mode 100644 static/app/bower_components/jquery/src/ajax/script.js delete mode 100644 static/app/bower_components/jquery/src/ajax/var/nonce.js delete mode 100644 static/app/bower_components/jquery/src/ajax/var/rquery.js delete mode 100644 static/app/bower_components/jquery/src/ajax/xhr.js delete mode 100644 static/app/bower_components/jquery/src/attributes.js delete mode 100644 static/app/bower_components/jquery/src/attributes/attr.js delete mode 100644 static/app/bower_components/jquery/src/attributes/classes.js delete mode 100644 static/app/bower_components/jquery/src/attributes/prop.js delete mode 100644 static/app/bower_components/jquery/src/attributes/support.js delete mode 100644 static/app/bower_components/jquery/src/attributes/val.js delete mode 100644 static/app/bower_components/jquery/src/callbacks.js delete mode 100644 static/app/bower_components/jquery/src/core.js delete mode 100644 static/app/bower_components/jquery/src/core/access.js delete mode 100644 static/app/bower_components/jquery/src/core/init.js delete mode 100644 static/app/bower_components/jquery/src/core/parseHTML.js delete mode 100644 static/app/bower_components/jquery/src/core/ready.js delete mode 100644 static/app/bower_components/jquery/src/core/var/rsingleTag.js delete mode 100644 static/app/bower_components/jquery/src/css.js delete mode 100644 static/app/bower_components/jquery/src/css/addGetHookIf.js delete mode 100644 static/app/bower_components/jquery/src/css/curCSS.js delete mode 100644 static/app/bower_components/jquery/src/css/defaultDisplay.js delete mode 100644 static/app/bower_components/jquery/src/css/hiddenVisibleSelectors.js delete mode 100644 static/app/bower_components/jquery/src/css/support.js delete mode 100644 static/app/bower_components/jquery/src/css/swap.js delete mode 100644 static/app/bower_components/jquery/src/css/var/cssExpand.js delete mode 100644 static/app/bower_components/jquery/src/css/var/isHidden.js delete mode 100644 static/app/bower_components/jquery/src/css/var/rmargin.js delete mode 100644 static/app/bower_components/jquery/src/css/var/rnumnonpx.js delete mode 100644 static/app/bower_components/jquery/src/data.js delete mode 100644 static/app/bower_components/jquery/src/data/accepts.js delete mode 100644 static/app/bower_components/jquery/src/data/support.js delete mode 100644 static/app/bower_components/jquery/src/deferred.js delete mode 100644 static/app/bower_components/jquery/src/deprecated.js delete mode 100644 static/app/bower_components/jquery/src/dimensions.js delete mode 100644 static/app/bower_components/jquery/src/effects.js delete mode 100644 static/app/bower_components/jquery/src/effects/Tween.js delete mode 100644 static/app/bower_components/jquery/src/effects/animatedSelector.js delete mode 100644 static/app/bower_components/jquery/src/effects/support.js delete mode 100644 static/app/bower_components/jquery/src/event.js delete mode 100644 static/app/bower_components/jquery/src/event/alias.js delete mode 100644 static/app/bower_components/jquery/src/event/support.js delete mode 100644 static/app/bower_components/jquery/src/exports/amd.js delete mode 100644 static/app/bower_components/jquery/src/exports/global.js delete mode 100644 static/app/bower_components/jquery/src/intro.js delete mode 100644 static/app/bower_components/jquery/src/jquery.js delete mode 100644 static/app/bower_components/jquery/src/manipulation.js delete mode 100644 static/app/bower_components/jquery/src/manipulation/_evalUrl.js delete mode 100644 static/app/bower_components/jquery/src/manipulation/support.js delete mode 100644 static/app/bower_components/jquery/src/manipulation/var/rcheckableType.js delete mode 100644 static/app/bower_components/jquery/src/offset.js delete mode 100644 static/app/bower_components/jquery/src/outro.js delete mode 100644 static/app/bower_components/jquery/src/queue.js delete mode 100644 static/app/bower_components/jquery/src/queue/delay.js delete mode 100644 static/app/bower_components/jquery/src/selector-sizzle.js delete mode 100644 static/app/bower_components/jquery/src/selector.js delete mode 100644 static/app/bower_components/jquery/src/serialize.js delete mode 100644 static/app/bower_components/jquery/src/sizzle/dist/sizzle.js delete mode 100644 static/app/bower_components/jquery/src/sizzle/dist/sizzle.min.js delete mode 100644 static/app/bower_components/jquery/src/sizzle/dist/sizzle.min.map delete mode 100644 static/app/bower_components/jquery/src/support.js delete mode 100644 static/app/bower_components/jquery/src/traversing.js delete mode 100644 static/app/bower_components/jquery/src/traversing/findFilter.js delete mode 100644 static/app/bower_components/jquery/src/traversing/var/rneedsContext.js delete mode 100644 static/app/bower_components/jquery/src/var/class2type.js delete mode 100644 static/app/bower_components/jquery/src/var/concat.js delete mode 100644 static/app/bower_components/jquery/src/var/deletedIds.js delete mode 100644 static/app/bower_components/jquery/src/var/hasOwn.js delete mode 100644 static/app/bower_components/jquery/src/var/indexOf.js delete mode 100644 static/app/bower_components/jquery/src/var/pnum.js delete mode 100644 static/app/bower_components/jquery/src/var/push.js delete mode 100644 static/app/bower_components/jquery/src/var/rnotwhite.js delete mode 100644 static/app/bower_components/jquery/src/var/slice.js delete mode 100644 static/app/bower_components/jquery/src/var/strundefined.js delete mode 100644 static/app/bower_components/jquery/src/var/support.js delete mode 100644 static/app/bower_components/jquery/src/var/toString.js delete mode 100644 static/app/bower_components/jquery/src/wrap.js delete mode 100644 static/app/bower_components/underscore/.bower.json delete mode 100644 static/app/bower_components/underscore/.eslintrc delete mode 100644 static/app/bower_components/underscore/.gitignore delete mode 100644 static/app/bower_components/underscore/LICENSE delete mode 100644 static/app/bower_components/underscore/README.md delete mode 100644 static/app/bower_components/underscore/bower.json delete mode 100644 static/app/bower_components/underscore/component.json delete mode 100644 static/app/bower_components/underscore/package.json delete mode 100644 static/app/bower_components/underscore/underscore-min.js delete mode 100644 static/app/bower_components/underscore/underscore-min.map delete mode 100644 static/app/bower_components/underscore/underscore.js create mode 100644 static/app/sw/sw-toolbox-config.js delete mode 100644 static/dist/js/app.js create mode 100644 static/dist/js/app.min.js create mode 100644 static/dist/service-worker.js create mode 100644 static/dist/sw/sw-toolbox-config.js create mode 100644 static/dist/sw/sw-toolbox.js diff --git a/.gitignore b/.gitignore index e5af193..c4fc3c0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ static/.sass-cache uploads/[^.]* venv node_modules +bower_components .idea /CACHE media diff --git a/bbssite/settings.py b/bbssite/settings.py index f42d29d..10ed9c0 100755 --- a/bbssite/settings.py +++ b/bbssite/settings.py @@ -37,7 +37,6 @@ STATICFILES_DIRS = ( STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - 'compressor.finders.CompressorFinder', ) # Make this unique, and don't share it with anybody. @@ -85,7 +84,6 @@ INSTALLED_APPS = ( 'widget_tweaks', 'bootstrapform', - 'compressor', 'django_extensions', 'rest_framework', ) @@ -102,9 +100,6 @@ SESSION_EXPIRE_AT_BROWSER_CLOSE = True BBS_SALDO_MAX = 600 BBS_LIMIT_DEPOSITS = False -if not DEBUG: - COMPRESS_ENABLED = True - try: from .local_settings import * except ImportError: diff --git a/main/api/serializers.py b/main/api/serializers.py index 197da80..74a0fcc 100644 --- a/main/api/serializers.py +++ b/main/api/serializers.py @@ -10,6 +10,7 @@ class ProductSerializer(ModelSerializer): model = Product + class ProductStatSerializer(ModelSerializer): EXTERNAL_USER = 'Ekstern' counts = serializers.SerializerMethodField() @@ -28,11 +29,9 @@ class ProductStatSerializer(ModelSerializer): return per_user def get_counts(self, obj): - per_user = OrderLine.objects\ - .filter(product=obj)\ - .values('order__customer__first_name', 'order__customer__last_name')\ - .annotate(amount_total=Sum('amount'))\ - .order_by('-amount_total') + name_fields = ['order__customer__first_name', 'order__customer__last_name'] + per_user = OrderLine.objects.filter(product=obj) + per_user = per_user.values(*name_fields).annotate(amount_total=Sum('amount')).order_by('-amount_total') return self._format_counts(per_user) diff --git a/main/api/views.py b/main/api/views.py index 078cc67..3689b39 100644 --- a/main/api/views.py +++ b/main/api/views.py @@ -1,12 +1,15 @@ +from rest_framework import mixins from rest_framework.decorators import list_route from rest_framework.response import Response -from rest_framework.viewsets import ModelViewSet from main.api.serializers import ProductSerializer, ProductStatSerializer from main.models import Product +from rest_framework.viewsets import GenericViewSet -class ProductViewSet(ModelViewSet): +class ProductViewSet(mixins.ListModelMixin, + mixins.RetrieveModelMixin, + GenericViewSet): serializer_class = ProductSerializer queryset = Product.objects.all() diff --git a/main/urls.py b/main/urls.py index c540469..5ca9a24 100644 --- a/main/urls.py +++ b/main/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.conf.urls import url, patterns from main.api.views import ProductViewSet from main.views.stats import stats_list, stats_orders, stats_orders_hourly, stats_products_realtime, stats_products_per_user from main.views.general import register, deposit, log @@ -25,7 +25,13 @@ urlpatterns = [ url(r'^inventory/$', inventory, name='inventory'), url(r'^inventory/add/$', inventory_add, name='inventory-add'), url(r'^report$', report, name='report'), + ] +# Root level service-worker.js +urlpatterns += patterns( + 'django.contrib.staticfiles.views', + url(r'^service-worker\.js$', 'serve', kwargs={'path': 'dist/service-worker.js'}) +) # API router = DefaultRouter() diff --git a/requirements.txt b/requirements.txt index a3ef944..dd19dd3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ Django>=1.8,<1.9 django-bootstrap-form==3.1 -django-compressor==1.4 django-extensions==1.5.9 django-widget-tweaks==1.3 facebook-sdk==0.4.0 diff --git a/static/.bowerrc b/static/.bowerrc deleted file mode 100644 index ba0accc..0000000 --- a/static/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "app/bower_components" -} diff --git a/static/app/bower_components/bootstrap-datepicker/.bower.json b/static/app/bower_components/bootstrap-datepicker/.bower.json deleted file mode 100644 index a3adf4d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "bootstrap-datepicker", - "version": "1.3.0", - "main": [ - "js/bootstrap-datepicker.js", - "css/datepicker.css", - "css/datepicker3.css" - ], - "dependencies": { - "jquery": ">=1.7.1", - "bootstrap": ">=3.0 <4.0" - }, - "homepage": "https://github.com/eternicode/bootstrap-datepicker", - "_release": "1.3.0", - "_resolution": { - "type": "version", - "tag": "1.3.0", - "commit": "37db99f95ff3a32ccc76b7122b2b73f3b0b9fe42" - }, - "_source": "git://github.com/eternicode/bootstrap-datepicker.git", - "_target": "~1.3.0", - "_originalSource": "bootstrap-datepicker", - "_direct": true -} \ No newline at end of file diff --git a/static/app/bower_components/bootstrap-datepicker/.gitignore b/static/app/bower_components/bootstrap-datepicker/.gitignore deleted file mode 100644 index 3a0d5cd..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -instrumented/ -tests/coverage.html -docs/_build diff --git a/static/app/bower_components/bootstrap-datepicker/.hgignore b/static/app/bower_components/bootstrap-datepicker/.hgignore deleted file mode 100644 index 3a0d5cd..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.hgignore +++ /dev/null @@ -1,3 +0,0 @@ -instrumented/ -tests/coverage.html -docs/_build diff --git a/static/app/bower_components/bootstrap-datepicker/.hgtags b/static/app/bower_components/bootstrap-datepicker/.hgtags deleted file mode 100644 index 838992a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.hgtags +++ /dev/null @@ -1,18 +0,0 @@ -b965e03abfcb10d66c8dad96d54d6f8e1c5d8501 v1.0.0 -7a490672b362af7640bbeb68553a0e0a5a95cb9e v1.0.1 -9a730557f14d79c2ce2d28eacb24bdf52ac2e042 1.0.2-rc.1 -62604d506e5ba9d85ee6c2d86723b9b3d817e7bd 1.0.2-rc.1.1 -f6211e251c021331decc16bfbcf25577dd354ef4 1.0.2-rc.2 -493d2332f0cb7f2dd308c442920da86063ff2e0f 1.0.2 -77a6755dc3df3ada745024648535562587fab630 1.1.0 -fe9e4106def42741adba1606245ab0eab32acb55 1.1.1 -e37ab4f7d0d30a45ee80a7019fd2bcf8c1765de7 1.1.2 -0596a9619e30c5f52d0f56c9cba9daf0d69d29ab 1.1.3 -ba267071688d93d973bee4ddb11344971e851e9e 1.2.0-rc.1 -57e2f78d70dc5c6a265869cff3b885a78123300c 1.2.0 -68703f4d535efdeb865eba0c0b3d3b4acfb76121 1.3.0-rc.1 -abfc042e74af3e944a0819296260a8c96c6169c1 1.3.0-rc.2 -2687213f73e257375fcc3c35c1a3d23284e17341 1.3.0-rc.3 -0e5bbe72a69c9d75edbfce775943e2f7eb719eeb 1.3.0-rc.4 -3d6c7937e3f7b7e1cdb7db22fbd504e853ee776b 1.3.0-rc.5 -5bc760304871bb691a613b79c86ba9a91735007f 1.3.0-rc.6 diff --git a/static/app/bower_components/bootstrap-datepicker/.jscs.json b/static/app/bower_components/bootstrap-datepicker/.jscs.json deleted file mode 100644 index 22fd304..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.jscs.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "requireSpaceAfterKeywords": [ - "if", "else", "for", "while", "do", "switch", "return" - ], - "disallowSpacesInFunctionExpression": { - "beforeOpeningRoundBrace": true, - "beforeOpeningCurlyBrace": true - }, - "disallowSpacesInsideObjectBrackets": true, - "disallowSpacesInsideArrayBrackets": true, - "disallowSpacesInsideParentheses": true, - "disallowQuotedKeysInObjects": "allButReserved", - "disallowSpaceAfterObjectKeys": true, - "disallowLeftStickedOperators": [ - "?", "==", "===", "!=", "!==", ">", ">=", "<", "<=" - ], - "disallowRightStickedOperators": [ - "?", "==", "===", "!=", "!==", ">", ">=", "<", "<=" - ], - "requireLeftStickedOperators": [","], - "requireRightStickedOperators": ["!"], - "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~"], - "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], - "validateLineBreaks": "LF", - "requireKeywordsOnNewLine": ["else", "return", "break", "delete"], - "requireLineFeedAtFileEnd": true -} diff --git a/static/app/bower_components/bootstrap-datepicker/.jshintrc b/static/app/bower_components/bootstrap-datepicker/.jshintrc deleted file mode 100644 index f19475d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.jshintrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "jquery": true, - "browser": true, - - "eqeqeq": true, - "freeze": true, - //"indent": 4, // when we move to spaces - "latedef": true, - "undef": true, - "unused": true, - "immed": true, - "trailing": true, - "maxcomplexity": 50, // Can we get this under 5? - //"maxlen": 120, - - "-W014": false, // Bad line breaking before ? (in tertiary operator) - "-W065": false, // Missing radix parameter to parseInt (defaults to 10) - "-W069": false, // Literal accessor is better written in dot notation - "-W100": false // Silently deleted characters (in locales) -} diff --git a/static/app/bower_components/bootstrap-datepicker/.travis.yml b/static/app/bower_components/bootstrap-datepicker/.travis.yml deleted file mode 100644 index ce6df3b..0000000 --- a/static/app/bower_components/bootstrap-datepicker/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -install: - - npm install -g jshint jscs -before_script: - - cd ./tests - - echo "new Date().toString();" | phantomjs -script: - - jshint ../js/bootstrap-datepicker.js ../js/locales/*.js - - jscs -c ../.jscs.json ../js/bootstrap-datepicker.js ../js/locales/*.js - - phantomjs run-qunit.js tests.html diff --git a/static/app/bower_components/bootstrap-datepicker/CHANGELOG.md b/static/app/bower_components/bootstrap-datepicker/CHANGELOG.md deleted file mode 100644 index 3df70bf..0000000 --- a/static/app/bower_components/bootstrap-datepicker/CHANGELOG.md +++ /dev/null @@ -1,172 +0,0 @@ -Changelog -========= - -1.3.0 ------ - -New features: -* Bootstrap 3 support. Added build files `build/build_standalone3.less` and `build/build3.less`, and source files `less/datepicker3.less` and `css/datepicker3.css` (built from `build_standalone3.less`). -* Multi-date functionality. This required rethinking several areas of the picker: - * The internals have been modified to be completely multidate-centric. - * Attributes and methods availabel on events have changed, but the old attributes and functions will still work. - * Keyboard navigation has been revamped, as it didn't work at all properly with multidate selection. - * The picker now explicitly supports "no selected date". - -Non-API changes: -* Keyboard navigation has been changed. See `docs/keyboard.rst`. -* Empty pickers in a range picker setup will be populated with the first date selected by the user to make finding the next date easier. - -Bug squashed: -* Jan 1, 1970 is now highlighted when selected -* `touchstart` added to document-bound picker-closing events (alongside `mousedown`) -* Fixed a display bug with component add-on icons being vertically higher than they should have been. -* Input is refocused after clicking the picker. -* `changeDate` event is triggered when `setDate` is called. - -Locale changes: -* Added Ukrainian, Belgium-Dutch, Welsh, Galician, Vietnamese, and Azerbaijani -* `clear` for German, Danish, Italian, and Romanian -* Fixed `weekStart` and `format` for Norwegian -* `weekStart` and `format` for Georgian -* Tweaks for Latvian, French, Vietnamese, Swedish, and Croatian -* De-duplicated Ukrainian files from `uk` and `ua` to just `ua` - -Repository changes: -* Documentation has been moved from the base `README.md` file to the `docs/` folder, and been re-written to use sphinx docs. The docs are now viewable online at http://bootstrap-datepicker.readthedocs.org/. The [gh-pages](http://eternicode.github.io/bootstrap-datepicker/) branch has been reduced to the sandbox demo. -* Changed the js file header to point at repo/demo/docs urls instead of eyecon.ro -* The css files are now the output of the standalone build scripts instead of `build/build.less` etc. -* `composer.json` now supports component-installer -* Added [JSHint](http://www.jshint.com/docs/) and [JSCS](https://github.com/mdevils/node-jscs) configurations - - -1.2.0 ------ - -New features: -* Google Closure Compiler Compatibility -* Smart orientation by default, and explicit picker orientation with the `orientation` option -* Text inside the picker is no longer user-selectable -* Packagist/Composer support (I think...) -* No longer depends on glyphicons for arrows -* `clearDate` event added, fired when the date is cleared - -Bug squashed: -* `noConflict` fixed -* Fix for large years causing an infinite loop in date parsing -* Fixed cases where `changeYear` and `changeMonth` events were not being triggered -* `component.js` moved to `bower.js` -* Falsey values for `startDate` and `endDate` translate to `-Infinity` and `Infinity`, respectively (effectively, falsey values mean "no bounds") -* Fixed `autoclose` for non-input, non-component elements -* Fixed 50% param in `mix()` less function -- expands compatibility with less compilers -* Fixed `update` method to update the selected date -* `beforeShowDay` was getting UTC dates, now it gets local dates (all dates that developers are given should be in local time, not UTC). -* `startDate` and `endDate` were a bit confused when given `new Date()` -- they would not allow today to be selected (the range should be inclusive), they would change whether it was selectable based on local time, etc. These quirks should be fixed now. They both also now expect local dates (which will then be time-zeroed and converted to UTC). -* Fixed selected date not being automatically constrained to the specified range when `setStartDate` and `setEndDate` were called. -* No longer uses jQuery's `.size()` (deprecated in favor of `.length`) -* `changeDate` triggered during manual user input -* `change` event fired when input value changed, it wasn't in some cases - -Locale changes: -* Added Arabic, Norwegian, Georgian -* `clear` for French -* `today` and `clear` for Bahasa -* `today` and `clear` for Portuguese (both `pt` and `pt-BR`) -* `format` for Turkish -* `format` and `weekStart` for Swedish -* `format` and `weekStart` for Simplified Chinese; `today`, `format`, and `weekStart` for Traditional Chinese -* Fixed typo in Serbian latin (`rs-latin`) -* More appropriate use of Traditional Chinese habit in `zh-TW` - - -1.1.3 ----------- - -Clicking the clear button now triggers the input's `change` and datepicker's `changeDate` events. -Fixed a bug that broke the event-attached `format` function. - - -1.1.2 ----------- - -Botched release, no change from 1.1.1 - - -1.1.1 ----------- - -Fixes a bug when setting startDate or endDate during initialization. - - -1.1.0 ----------- - -New features: -* Date range picker. -* Data API / noConflict. -* `getDate` and `setDate` methods. -* `format` method for events; this allows you to easily format the `date` associated with the event. -* New options: - * `beforeShowDay` option: a dev-provided function that can enable/disable dates, add css classes, and add tooltips. - * `clearBtn`, a button for resetting the picker. - -Internal changes: -* Cleaner and more reliable method for extracting options from all potential sources (defaults, locale overrides, data-attrs, and instantiation options, in that order). This also populates `$.fn.datepicker.defaults` with the default values, and uses this hash as the actual source of defaults, meaning you can globally change the default value for a given option. - -Bugs squashed: -* Resolved a conflict with bootstrap's native `.switch` class. -* Fixed a bug with components where they would be stuck with a stale value when editing the value manually. -* The `date` attributes on events are now local dates instead of internal UTC dates. -* Separate `Date` objects for internal selected and view date references. -* Clicking multiple times inside inputs no longer hides the picker. - -Minor improvements: -* Better text color for highlighted "today" date. -* Last year in decade view now marked as "new" instead of "old". -* Formats now properly handle trailing separators. - -Locale changes: -* Added Albanian, Estonian, and Macedonian -* Added `weekStart` for Russian -* Added `weekStart` and `format` for Finnish - -Potentially backward-incompatible changes: -* Options revamp: - * This fixes bugs in the correlation of some data-attrs to their associated option names. If you use `data-date-weekstart`, `data-date-startdate`, or `data-date-enddate`, you should update these to `data-date-week-start`, `data-date-start-date`, or `data-date-end-date`, respectively. - * All options for datepicker are now properties on the datepicker's `o` property; options are no longer stored on the Datepicker instance itself. If you have code that accesses options stored on the datepicker instance (eg, `datepicker.format`), you will need to update it to access those options via the `o` property (eg, `datepicker.o.format`). "Raw" options are available via the `_o` property. - -1.0.2 ----------- - -Small optimizations release - -* Reduced the number of times `update` is called on initialization. -* Datepicker now detaches the picker dropdown when it is hidden, and appends it when shown. This removes the picker from the DOM when it is not in use. -* No longer listens to document/window events unless picker is visible. - -v1.0.1 ------- - -* Support for [Bower](http://twitter.github.com/bower/) -* Component pickers are now aligned under the input, not the add-on element. -* Japanese locale now has "today" and "format". -* "remove" method removes `.data().date` if the datepicker is on a non-input. -* Events on initialized elements are no longer blocked from bubbling up the DOM (jQuery.live et al can now catch the events). -* Component triggers now include `.btn` in addition to `.add-on`. -* Updates to README contents. - -v1.0.0 ------- - -Initial release: - -* format option -* weekStart option -* calendarWeeks option -* startDate / endDate options -* daysOfWeekDisabled option -* autoclose option -* startView / mnViewMode options -* todayBtn / todayHighlight options -* keyboardNavigation option -* language option -* forceParse option diff --git a/static/app/bower_components/bootstrap-datepicker/CONTRIBUTING.md b/static/app/bower_components/bootstrap-datepicker/CONTRIBUTING.md deleted file mode 100644 index 775c644..0000000 --- a/static/app/bower_components/bootstrap-datepicker/CONTRIBUTING.md +++ /dev/null @@ -1,41 +0,0 @@ -# Contributing - -## Support requests - -The issue tracker is not the place for support requests. If you get stuck with bootstrap-datepicker, it's very likely that the fine folks at [StackOverflow](http://stackoverflow.com/) will be able to help you; simply describe the problem you're having and provide them a link to the repo (so they know what code you're using). Another option is to post to the [bootstrap-datepicker google group](https://groups.google.com/group/bootstrap-datepicker). - -## Issues - -If you've found a bug in bootstrap-datepicker, we want to know about it! However, please keep the following in mind: - -* This is not the bootstrap-datepicker from [eyecon.ro](http://www.eyecon.ro/bootstrap-datepicker/). Stefan provided the initial code for bootstrap-datepicker, but this repo is divergent from his codebase. Please make sure you're using either the latest tagged version or the latest master from https://github.com/eternicode/bootstrap-datepicker/ . -* A working example of the bug you've found is *much* easier to work with than a description alone. If possible, please provide a link to a demonstration of the bug, perhaps using http://jsfiddle.net/ . - * CDN-backed assets can be found at http://bsdp-assets.blackcherry.us/ . These should be used *only* for building test cases, as they may be removed or changed at any time. -* Finally, it's possible someone else has already reported the same bug you have. Please search the issue tracker for similar issues before posting your own. Thanks! - -## Pull Requests - -Patches welcome! - -For all cases, you should have your own fork of the repo. - -To submit a pull request for a **new feature**: - -1. Run the tests. Every pull request for a new feature should have an accompanying unit test and docs changes. See the README in the `tests/` and `docs/` directories for details. -2. Create a new branch off of the `master` branch for your feature. This is particularly helpful when you want to submit multiple pull requests. -3. Add a test (or multiple tests) for your feature. Again, see `tests/README.md`. -4. Add your new feature, making the test pass. -5. Push to your fork and submit the pull request! - -To submit a **bug fix**: - -1. Create a new branch off of the `master` branch. -2. Add a test that demonstrates the bug. -3. Make the test pass. -4. Push to your fork and submit the pull request! - -To submit a **documentation fix**: - -1. Create a new branch off of the `master` branch. -2. Add your documentation fixes (no tests required). -3. Push to your fork and submit the pull request! diff --git a/static/app/bower_components/bootstrap-datepicker/LICENSE b/static/app/bower_components/bootstrap-datepicker/LICENSE deleted file mode 100644 index d645695..0000000 --- a/static/app/bower_components/bootstrap-datepicker/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/static/app/bower_components/bootstrap-datepicker/README.md b/static/app/bower_components/bootstrap-datepicker/README.md deleted file mode 100644 index 8218e24..0000000 --- a/static/app/bower_components/bootstrap-datepicker/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# bootstrap-datepicker - -This is a fork of Stefan Petre's [original code](http://www.eyecon.ro/bootstrap-datepicker/); -thanks go to him for getting this thing started! - -Please note that this fork is not used on Stefan's page, nor is it maintained or contributed to by him. - -Versions are incremented according to [semver](http://semver.org/). - -* [Online Demo](http://eternicode.github.io/bootstrap-datepicker/) -* [Online Docs](http://bootstrap-datepicker.readthedocs.org/) (ReadTheDocs.com) -* [Google Group](https://groups.google.com/group/bootstrap-datepicker/) -* [Travis CI ![Build Status](https://travis-ci.org/eternicode/bootstrap-datepicker.png?branch=master)](https://travis-ci.org/eternicode/bootstrap-datepicker) diff --git a/static/app/bower_components/bootstrap-datepicker/bower.json b/static/app/bower_components/bootstrap-datepicker/bower.json deleted file mode 100644 index f57de5a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/bower.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "bootstrap-datepicker", - "version": "1.3.0", - "main": ["js/bootstrap-datepicker.js", "css/datepicker.css", "css/datepicker3.css"], - "dependencies": { - "jquery" : ">=1.7.1", - "bootstrap" : ">=3.0 <4.0" - } -} diff --git a/static/app/bower_components/bootstrap-datepicker/build/build.less b/static/app/bower_components/bootstrap-datepicker/build/build.less deleted file mode 100644 index 04fce23..0000000 --- a/static/app/bower_components/bootstrap-datepicker/build/build.less +++ /dev/null @@ -1,67 +0,0 @@ -// Datepicker .less buildfile. Includes select mixins/variables from bootstrap -// and imports the included datepicker.less to output a minimal datepicker.css -// -// Usage: -// lessc build.less datepicker.css -// -// Variables and mixins copied from bootstrap 2.0.2 - -// Variables -@grayLight: #999; -@grayLighter: #eee; -@white: #fff; -@linkColor: #08c; -@btnPrimaryBackground: @linkColor; -@orange: #f89406; -@baseLineHeight: 18px; - -// Mixins - -// Border Radius -.border-radius(@radius: 5px) { - -webkit-border-radius: @radius; - -moz-border-radius: @radius; - border-radius: @radius; -} - -// Button backgrounds -.buttonBackground(@startColor, @endColor) { - .gradientBar(@startColor, @endColor); - .reset-filter(); - &:hover, &:active, &.active, &.disabled, &[disabled] { - background-color: @endColor; - } - &:active, - &.active { - background-color: darken(@endColor, 10%) e("\9"); - } -} - -// Reset filters for IE -.reset-filter() { - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} - -// Gradient Bar Colors for buttons and alerts -.gradientBar(@primaryColor, @secondaryColor) { - #gradient > .vertical(@primaryColor, @secondaryColor); - border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%); - border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%); -} - -// Gradients -#gradient { - .vertical(@startColor: #555, @endColor: #333) { - background-color: mix(@startColor, @endColor, 60%); - background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+ - background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10 - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ - background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+ - background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 - background-image: linear-gradient(top, @startColor, @endColor); // The standard - background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down - } -} - -@import "../less/datepicker.less"; diff --git a/static/app/bower_components/bootstrap-datepicker/build/build3.less b/static/app/bower_components/bootstrap-datepicker/build/build3.less deleted file mode 100644 index c2f6db1..0000000 --- a/static/app/bower_components/bootstrap-datepicker/build/build3.less +++ /dev/null @@ -1,71 +0,0 @@ -// Datepicker .less buildfile. Includes select mixins/variables from bootstrap -// and imports the included datepicker.less to output a minimal datepicker.css -// -// Usage: -// lessc build.less datepicker.css -// -// Variables and mixins copied from bootstrap 2.0.2 - -// Variables -@gray: lighten(#000, 33.5%); // #555 -@gray-light: lighten(#000, 60%); // #999 -@gray-lighter: lighten(#000, 93.5%); // #eee - -@input-border: #ccc; - -@brand-primary: #428bca; -//@btn-default-color: #333; -//@btn-default-bg: #fff; -//@btn-default-border: #ccc; -@btn-primary-color: #fff; -@btn-primary-bg: @brand-primary; -@btn-primary-border: darken(@btn-primary-bg, 5%); - - -@btn-link-disabled-color: @gray-light; - -@input-group-addon-bg: @gray-lighter; -@input-group-addon-border-color: @input-border; - -@font-size-base: 14px; -@line-height-base: 1.428571429; // 20/14 -@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px - - -// Mixins - -// Button variants -.button-variant(@color; @background; @border) { - color: @color; - background-color: @background; - border-color: @border; - - &:hover, - &:focus, - &:active, - &.active, - .open .dropdown-toggle& { - color: @color; - background-color: darken(@background, 8%); - border-color: darken(@border, 12%); - } - &:active, - &.active, - .open .dropdown-toggle& { - background-image: none; - } - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &:active, - &.active { - background-color: @background; - border-color: @border - } - } -} - -@import "../less/datepicker3.less"; diff --git a/static/app/bower_components/bootstrap-datepicker/build/build_standalone.less b/static/app/bower_components/bootstrap-datepicker/build/build_standalone.less deleted file mode 100644 index 22f923d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/build/build_standalone.less +++ /dev/null @@ -1,61 +0,0 @@ -// Datepicker standalone .less buildfile. Includes all necessary mixins/variables/rules from bootstrap -// and imports the included datepicker.less to output a minimal standalone datepicker.css -// -// Usage: -// lessc build_standalone.less datepicker.css -// -// Variables, mixins, and rules copied from bootstrap 2.0.2 - -@import "build.less"; - -// Dropdown css - -@zindexDropdown: 1000; -@grayDark: #333; -@baseLineHeight: 20px; -@tableBackground: transparent; // overall background-color -@dropdownBackground: @white; -@dropdownBorder: rgba(0,0,0,.2); -@dropdownLinkColor: @grayDark; -@dropdownLinkColorHover: @white; -@dropdownLinkBackgroundHover: @linkColor; - -// Drop shadows -.box-shadow(@shadow) { - -webkit-box-shadow: @shadow; - -moz-box-shadow: @shadow; - box-shadow: @shadow; -} - -// The dropdown menu (ul) -// ---------------------- -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: @zindexDropdown; - float: left; - display: none; // none by default, but block on "open" of the menu - min-width: 160px; - list-style: none; - background-color: @dropdownBackground; - border: 1px solid #ccc; - border: 1px solid rgba(0,0,0,.2); - .border-radius(5px); - .box-shadow(0 5px 10px rgba(0,0,0,.2)); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - - // Normally inherited from bootstrap's `body` - color: #333333; - font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; - font-size:13px; - line-height: @baseLineHeight; - - th, td { - padding: 4px 5px; - } -} diff --git a/static/app/bower_components/bootstrap-datepicker/build/build_standalone3.less b/static/app/bower_components/bootstrap-datepicker/build/build_standalone3.less deleted file mode 100644 index f4e5213..0000000 --- a/static/app/bower_components/bootstrap-datepicker/build/build_standalone3.less +++ /dev/null @@ -1,63 +0,0 @@ -// Datepicker standalone .less buildfile. Includes all necessary mixins/variables/rules from bootstrap -// and imports the included datepicker.less to output a minimal standalone datepicker.css -// -// Usage: -// lessc build_standalone.less datepicker.css -// -// Variables, mixins, and rules copied from bootstrap 2.0.2 - -@import "build3.less"; - -// Dropdown css - -@zindex-dropdown: 1000; -@gray-dark: #333; -@line-height-base: 1.428571429; // 20/14 -@table-bg: transparent; // overall background-color -@dropdown-bg: #fff; -@dropdow-border: rgba(0,0,0,.15); -@dropdown-link-color: @gray-dark; -@dropdown-link-hover-color: #fff; -@component-active-bg: @brand-primary; -@dropdown-link-active-bg: @component-active-bg; -@dropdown-link-hover-bg: @dropdown-link-active-bg; - -// Drop shadows -.box-shadow(@shadow) { - -webkit-box-shadow: @shadow; - -moz-box-shadow: @shadow; - box-shadow: @shadow; -} - -// The dropdown menu (ul) -// ---------------------- -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: @zindex-dropdown; - float: left; - display: none; // none by default, but block on "open" of the menu - min-width: 160px; - list-style: none; - background-color: @dropdown-bg; - border: 1px solid #ccc; - border: 1px solid rgba(0,0,0,.2); - border-radius: 5px; - .box-shadow(0 5px 10px rgba(0,0,0,.2)); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - - // Normally inherited from bootstrap's `body` - color: #333333; - font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; - font-size:13px; - line-height: @line-height-base; - - th, td { - padding: 4px 5px; - } -} diff --git a/static/app/bower_components/bootstrap-datepicker/composer.json b/static/app/bower_components/bootstrap-datepicker/composer.json deleted file mode 100644 index b835803..0000000 --- a/static/app/bower_components/bootstrap-datepicker/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "eternicode/bootstrap-datepicker", - "type": "component", - "require": { - "robloach/component-installer": "*", - "components/bootstrap" : ">=3.0, <4.0", - "components/jquery": ">=1.7.1" - }, - "extra": { - "component": { - "scripts": [ - "js/bootstrap-datepicker.js" - ], - "styles": [ - "css/datepicker.css", - "css/datepicker3.css" - ] - } - } -} diff --git a/static/app/bower_components/bootstrap-datepicker/css/datepicker.css b/static/app/bower_components/bootstrap-datepicker/css/datepicker.css deleted file mode 100644 index 7134641..0000000 --- a/static/app/bower_components/bootstrap-datepicker/css/datepicker.css +++ /dev/null @@ -1,512 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ -} -.datepicker-inline { - width: 220px; -} -.datepicker.datepicker-rtl { - direction: rtl; -} -.datepicker.datepicker-rtl table tr td span { - float: right; -} -.datepicker-dropdown { - top: 0; - left: 0; -} -.datepicker-dropdown:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; -} -.datepicker-dropdown:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - border-top: 0; - position: absolute; -} -.datepicker-dropdown.datepicker-orient-left:before { - left: 6px; -} -.datepicker-dropdown.datepicker-orient-left:after { - left: 7px; -} -.datepicker-dropdown.datepicker-orient-right:before { - right: 6px; -} -.datepicker-dropdown.datepicker-orient-right:after { - right: 7px; -} -.datepicker-dropdown.datepicker-orient-top:before { - top: -7px; -} -.datepicker-dropdown.datepicker-orient-top:after { - top: -6px; -} -.datepicker-dropdown.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; -} -.datepicker-dropdown.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #ffffff; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.datepicker td, -.datepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover, -.datepicker table tr td.day.focused { - background: #eeeeee; - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #999999; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - background-color: #fde19a; - background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); - background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); - background-image: linear-gradient(top, #fdd49a, #fdf59a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); - border-color: #fdf59a #fdf59a #fbed50; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #000; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled] { - background-color: #fdf59a; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active { - background-color: #fbf069 \9; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: #eeeeee; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - background-color: #f3d17a; - background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); - background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -o-linear-gradient(top, #f3c17a, #f3e97a); - background-image: linear-gradient(top, #f3c17a, #f3e97a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); - border-color: #f3e97a #f3e97a #edde34; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled] { - background-color: #f3e97a; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active { - background-color: #efe24b \9; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - background-color: #9e9e9e; - background-image: -moz-linear-gradient(top, #b3b3b3, #808080); - background-image: -ms-linear-gradient(top, #b3b3b3, #808080); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); - background-image: -webkit-linear-gradient(top, #b3b3b3, #808080); - background-image: -o-linear-gradient(top, #b3b3b3, #808080); - background-image: linear-gradient(top, #b3b3b3, #808080); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); - border-color: #808080 #808080 #595959; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled] { - background-color: #808080; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active { - background-color: #666666 \9; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: #eeeeee; -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #999999; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: #eeeeee; -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-append.date .add-on i, -.input-prepend.date .add-on i { - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-daterange .add-on { - display: inline-block; - width: auto; - min-width: 16px; - height: 20px; - padding: 4px 5px; - font-weight: normal; - line-height: 20px; - text-align: center; - text-shadow: 0 1px 0 #ffffff; - vertical-align: middle; - background-color: #eeeeee; - border: 1px solid #ccc; - margin-left: -5px; - margin-right: -5px; -} -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - float: left; - display: none; - min-width: 160px; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - color: #333333; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 20px; -} -.datepicker.dropdown-menu th, -.datepicker.dropdown-menu td { - padding: 4px 5px; -} diff --git a/static/app/bower_components/bootstrap-datepicker/css/datepicker3.css b/static/app/bower_components/bootstrap-datepicker/css/datepicker3.css deleted file mode 100644 index aa78b1d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/css/datepicker3.css +++ /dev/null @@ -1,790 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ -} -.datepicker-inline { - width: 220px; -} -.datepicker.datepicker-rtl { - direction: rtl; -} -.datepicker.datepicker-rtl table tr td span { - float: right; -} -.datepicker-dropdown { - top: 0; - left: 0; -} -.datepicker-dropdown:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; -} -.datepicker-dropdown:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-top: 0; - position: absolute; -} -.datepicker-dropdown.datepicker-orient-left:before { - left: 6px; -} -.datepicker-dropdown.datepicker-orient-left:after { - left: 7px; -} -.datepicker-dropdown.datepicker-orient-right:before { - right: 6px; -} -.datepicker-dropdown.datepicker-orient-right:after { - right: 7px; -} -.datepicker-dropdown.datepicker-orient-top:before { - top: -7px; -} -.datepicker-dropdown.datepicker-orient-top:after { - top: -6px; -} -.datepicker-dropdown.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; -} -.datepicker-dropdown.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #fff; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.datepicker table tr td, -.datepicker table tr th { - text-align: center; - width: 30px; - height: 30px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover, -.datepicker table tr td.day.focused { - background: #eeeeee; - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #999999; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - color: #000000; - background-color: #ffdb99; - border-color: #ffb733; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:focus, -.datepicker table tr td.today:hover:focus, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - color: #000000; - background-color: #ffcd70; - border-color: #f59e00; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.today, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today.disabled, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today:hover.disabled:hover, -.datepicker table tr td.today.disabled.disabled:hover, -.datepicker table tr td.today.disabled:hover.disabled:hover, -.datepicker table tr td.today[disabled]:hover, -.datepicker table tr td.today:hover[disabled]:hover, -.datepicker table tr td.today.disabled[disabled]:hover, -.datepicker table tr td.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today:hover:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today:hover.disabled:focus, -.datepicker table tr td.today.disabled.disabled:focus, -.datepicker table tr td.today.disabled:hover.disabled:focus, -.datepicker table tr td.today[disabled]:focus, -.datepicker table tr td.today:hover[disabled]:focus, -.datepicker table tr td.today.disabled[disabled]:focus, -.datepicker table tr td.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.today:focus, -fieldset[disabled] .datepicker table tr td.today:hover:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today:hover.disabled:active, -.datepicker table tr td.today.disabled.disabled:active, -.datepicker table tr td.today.disabled:hover.disabled:active, -.datepicker table tr td.today[disabled]:active, -.datepicker table tr td.today:hover[disabled]:active, -.datepicker table tr td.today.disabled[disabled]:active, -.datepicker table tr td.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.today:active, -fieldset[disabled] .datepicker table tr td.today:hover:active, -fieldset[disabled] .datepicker table tr td.today.disabled:active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today:hover.disabled.active, -.datepicker table tr td.today.disabled.disabled.active, -.datepicker table tr td.today.disabled:hover.disabled.active, -.datepicker table tr td.today[disabled].active, -.datepicker table tr td.today:hover[disabled].active, -.datepicker table tr td.today.disabled[disabled].active, -.datepicker table tr td.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.today.active, -fieldset[disabled] .datepicker table tr td.today:hover.active, -fieldset[disabled] .datepicker table tr td.today.disabled.active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { - background-color: #ffdb99; - border-color: #ffb733; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: #eeeeee; - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background-color: #f7ca77; - border-color: #f1a417; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:focus, -.datepicker table tr td.range.today:hover:focus, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background-color: #f4bb51; - border-color: #bf800c; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.range.today, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today:hover.disabled:hover, -.datepicker table tr td.range.today.disabled.disabled:hover, -.datepicker table tr td.range.today.disabled:hover.disabled:hover, -.datepicker table tr td.range.today[disabled]:hover, -.datepicker table tr td.range.today:hover[disabled]:hover, -.datepicker table tr td.range.today.disabled[disabled]:hover, -.datepicker table tr td.range.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today:hover.disabled:focus, -.datepicker table tr td.range.today.disabled.disabled:focus, -.datepicker table tr td.range.today.disabled:hover.disabled:focus, -.datepicker table tr td.range.today[disabled]:focus, -.datepicker table tr td.range.today:hover[disabled]:focus, -.datepicker table tr td.range.today.disabled[disabled]:focus, -.datepicker table tr td.range.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.range.today:focus, -fieldset[disabled] .datepicker table tr td.range.today:hover:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today:hover.disabled:active, -.datepicker table tr td.range.today.disabled.disabled:active, -.datepicker table tr td.range.today.disabled:hover.disabled:active, -.datepicker table tr td.range.today[disabled]:active, -.datepicker table tr td.range.today:hover[disabled]:active, -.datepicker table tr td.range.today.disabled[disabled]:active, -.datepicker table tr td.range.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.range.today:active, -fieldset[disabled] .datepicker table tr td.range.today:hover:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today:hover.disabled.active, -.datepicker table tr td.range.today.disabled.disabled.active, -.datepicker table tr td.range.today.disabled:hover.disabled.active, -.datepicker table tr td.range.today[disabled].active, -.datepicker table tr td.range.today:hover[disabled].active, -.datepicker table tr td.range.today.disabled[disabled].active, -.datepicker table tr td.range.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.range.today.active, -fieldset[disabled] .datepicker table tr td.range.today:hover.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { - background-color: #f7ca77; - border-color: #f1a417; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background-color: #999999; - border-color: #555555; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:focus, -.datepicker table tr td.selected:hover:focus, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background-color: #858585; - border-color: #373737; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - background-image: none; -} -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.selected, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected:hover.disabled:hover, -.datepicker table tr td.selected.disabled.disabled:hover, -.datepicker table tr td.selected.disabled:hover.disabled:hover, -.datepicker table tr td.selected[disabled]:hover, -.datepicker table tr td.selected:hover[disabled]:hover, -.datepicker table tr td.selected.disabled[disabled]:hover, -.datepicker table tr td.selected.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected:hover:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected:hover.disabled:focus, -.datepicker table tr td.selected.disabled.disabled:focus, -.datepicker table tr td.selected.disabled:hover.disabled:focus, -.datepicker table tr td.selected[disabled]:focus, -.datepicker table tr td.selected:hover[disabled]:focus, -.datepicker table tr td.selected.disabled[disabled]:focus, -.datepicker table tr td.selected.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.selected:focus, -fieldset[disabled] .datepicker table tr td.selected:hover:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected:hover.disabled:active, -.datepicker table tr td.selected.disabled.disabled:active, -.datepicker table tr td.selected.disabled:hover.disabled:active, -.datepicker table tr td.selected[disabled]:active, -.datepicker table tr td.selected:hover[disabled]:active, -.datepicker table tr td.selected.disabled[disabled]:active, -.datepicker table tr td.selected.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.selected:active, -fieldset[disabled] .datepicker table tr td.selected:hover:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected:hover.disabled.active, -.datepicker table tr td.selected.disabled.disabled.active, -.datepicker table tr td.selected.disabled:hover.disabled.active, -.datepicker table tr td.selected[disabled].active, -.datepicker table tr td.selected:hover[disabled].active, -.datepicker table tr td.selected.disabled[disabled].active, -.datepicker table tr td.selected.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.selected.active, -fieldset[disabled] .datepicker table tr td.selected:hover.active, -fieldset[disabled] .datepicker table tr td.selected.disabled.active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { - background-color: #999999; - border-color: #555555; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:focus, -.datepicker table tr td.active:hover:focus, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - background-image: none; -} -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.active, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active.disabled, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active:hover.disabled:hover, -.datepicker table tr td.active.disabled.disabled:hover, -.datepicker table tr td.active.disabled:hover.disabled:hover, -.datepicker table tr td.active[disabled]:hover, -.datepicker table tr td.active:hover[disabled]:hover, -.datepicker table tr td.active.disabled[disabled]:hover, -.datepicker table tr td.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active:hover:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active:hover.disabled:focus, -.datepicker table tr td.active.disabled.disabled:focus, -.datepicker table tr td.active.disabled:hover.disabled:focus, -.datepicker table tr td.active[disabled]:focus, -.datepicker table tr td.active:hover[disabled]:focus, -.datepicker table tr td.active.disabled[disabled]:focus, -.datepicker table tr td.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.active:focus, -fieldset[disabled] .datepicker table tr td.active:hover:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active:hover.disabled:active, -.datepicker table tr td.active.disabled.disabled:active, -.datepicker table tr td.active.disabled:hover.disabled:active, -.datepicker table tr td.active[disabled]:active, -.datepicker table tr td.active:hover[disabled]:active, -.datepicker table tr td.active.disabled[disabled]:active, -.datepicker table tr td.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.active:active, -fieldset[disabled] .datepicker table tr td.active:hover:active, -fieldset[disabled] .datepicker table tr td.active.disabled:active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active:hover.disabled.active, -.datepicker table tr td.active.disabled.disabled.active, -.datepicker table tr td.active.disabled:hover.disabled.active, -.datepicker table tr td.active[disabled].active, -.datepicker table tr td.active:hover[disabled].active, -.datepicker table tr td.active.disabled[disabled].active, -.datepicker table tr td.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.active.active, -fieldset[disabled] .datepicker table tr td.active:hover.active, -fieldset[disabled] .datepicker table tr td.active.disabled.active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: #eeeeee; -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:focus, -.datepicker table tr td span.active:hover:focus, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - background-image: none; -} -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td span.active, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active:hover.disabled:hover, -.datepicker table tr td span.active.disabled.disabled:hover, -.datepicker table tr td span.active.disabled:hover.disabled:hover, -.datepicker table tr td span.active[disabled]:hover, -.datepicker table tr td span.active:hover[disabled]:hover, -.datepicker table tr td span.active.disabled[disabled]:hover, -.datepicker table tr td span.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active:hover:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active:hover.disabled:focus, -.datepicker table tr td span.active.disabled.disabled:focus, -.datepicker table tr td span.active.disabled:hover.disabled:focus, -.datepicker table tr td span.active[disabled]:focus, -.datepicker table tr td span.active:hover[disabled]:focus, -.datepicker table tr td span.active.disabled[disabled]:focus, -.datepicker table tr td span.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td span.active:focus, -fieldset[disabled] .datepicker table tr td span.active:hover:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active:hover.disabled:active, -.datepicker table tr td span.active.disabled.disabled:active, -.datepicker table tr td span.active.disabled:hover.disabled:active, -.datepicker table tr td span.active[disabled]:active, -.datepicker table tr td span.active:hover[disabled]:active, -.datepicker table tr td span.active.disabled[disabled]:active, -.datepicker table tr td span.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td span.active:active, -fieldset[disabled] .datepicker table tr td span.active:hover:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active:hover.disabled.active, -.datepicker table tr td span.active.disabled.disabled.active, -.datepicker table tr td span.active.disabled:hover.disabled.active, -.datepicker table tr td span.active[disabled].active, -.datepicker table tr td span.active:hover[disabled].active, -.datepicker table tr td span.active.disabled[disabled].active, -.datepicker table tr td span.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td span.active.active, -fieldset[disabled] .datepicker table tr td span.active:hover.active, -fieldset[disabled] .datepicker table tr td span.active.disabled.active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #999999; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: #eeeeee; -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-group.date .input-group-addon i { - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - border-radius: 0 3px 3px 0; -} -.input-daterange .input-group-addon { - width: auto; - min-width: 16px; - padding: 4px 5px; - font-weight: normal; - line-height: 1.428571429; - text-align: center; - text-shadow: 0 1px 0 #fff; - vertical-align: middle; - background-color: #eeeeee; - border: solid #cccccc; - border-width: 1px 0; - margin-left: -5px; - margin-right: -5px; -} -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - float: left; - display: none; - min-width: 160px; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 5px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - color: #333333; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 1.428571429; -} -.datepicker.dropdown-menu th, -.datepicker.dropdown-menu td { - padding: 4px 5px; -} diff --git a/static/app/bower_components/bootstrap-datepicker/docs/Makefile b/static/app/bower_components/bootstrap-datepicker/docs/Makefile deleted file mode 100644 index 34b6ef8..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/Makefile +++ /dev/null @@ -1,153 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/bootstrap-datepicker.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/bootstrap-datepicker.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/bootstrap-datepicker" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/bootstrap-datepicker" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." diff --git a/static/app/bower_components/bootstrap-datepicker/docs/REAME.md b/static/app/bower_components/bootstrap-datepicker/docs/REAME.md deleted file mode 100644 index f8d0308..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/REAME.md +++ /dev/null @@ -1,8 +0,0 @@ -Documentation -============= - -Project documentation is built using [Sphinx docs](http://sphinx-doc.org/), which uses [ReST](http://docutils.sf.net/rst.html) for markup. This allows the docs to cover a vast amount of topics without using a thousand-line README file. - -Sphinx docs is pip-installable via `pip install sphinx`. Once installed, open a command line in the docs folder and run `make html`; the output files will be placed in the `_build/html/` directory, and can be browsed (locally) with any browser. - -The docs can also be found online at http://bootstrap-datepicker.readthedocs.org/. diff --git a/static/app/bower_components/bootstrap-datepicker/docs/_static/demo_head.png b/static/app/bower_components/bootstrap-datepicker/docs/_static/demo_head.png deleted file mode 100644 index 655b304296b0d06d29d3433e8cb852b3a83c2088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28027 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 diff --git a/static/app/bower_components/bootstrap-datepicker/docs/conf.py b/static/app/bower_components/bootstrap-datepicker/docs/conf.py deleted file mode 100644 index 15de1e1..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/conf.py +++ /dev/null @@ -1,248 +0,0 @@ -# -*- coding: utf-8 -*- -# -# bootstrap-datepicker documentation build configuration file, created by -# sphinx-quickstart on Fri Aug 2 14:45:57 2013. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -#version = '' -# The full version, including alpha/beta/rc tags. -#release = '' - - - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -primary_domain = 'js' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'bootstrap-datepicker' -copyright = u'2013, eternicode' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -highlight_language = 'javascript' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'bootstrap-datepickerdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'bootstrap-datepicker.tex', u'bootstrap-datepicker Documentation', - u'eternicode', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation', - [u'eternicode'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation', - u'eternicode', 'bootstrap-datepicker', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' diff --git a/static/app/bower_components/bootstrap-datepicker/docs/events.rst b/static/app/bower_components/bootstrap-datepicker/docs/events.rst deleted file mode 100644 index 4423aa1..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/events.rst +++ /dev/null @@ -1,48 +0,0 @@ -Events -====== - -Datepicker triggers a number of events in certain circumstances. All events have extra data attached to the event object that is passed to any event handlers:: - - $('.datepicker').datepicker() - .on(picker_event, function(e){ - # `e` here contains the extra attributes - }); - -* ``date``: the relevant Date object, in local timezone. For a multidate picker, this will be the latest date picked. -* ``dates``: an Array of Date objects, in local timezone, when using a multidate picker. -* ``format([ix], [format])``: a function to make formatting ``date`` easier. ``ix`` can be the index of a Date in the ``dates`` array to format; if absent, the last date selected will be used. ``format`` can be any format string that datepicker supports; if absent, the format set on the datepicker will be used. Both arguments are optional. - - -show ----- - -Fired when the date picker is displayed. - - -hide ----- - -Fired when the date picker is hidden. - - -clearDate ---------- - -Fired when the date is cleared, normally when the "clear" button (enabled with the ``clearBtn`` option) is pressed. - - -changeDate ----------- - -Fired when the date is changed. - - -changeYear ----------- - -Fired when the *view* year is changed from decade view. - -changeMonth ------------ - -Fired when the *view* month is changed from year view. diff --git a/static/app/bower_components/bootstrap-datepicker/docs/i18n.rst b/static/app/bower_components/bootstrap-datepicker/docs/i18n.rst deleted file mode 100644 index d7055fe..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/i18n.rst +++ /dev/null @@ -1,28 +0,0 @@ -I18N -==== - -The plugin supports i18n for the month and weekday names and the ``weekStart`` option. The default is English ("en"); other available translations are avilable in the ``js/locales/`` directory, simply include your desired locale after the plugin. To add more languages, simply add a key to ``$.fn.datepicker.dates``, before calling ``.datepicker()``. Example:: - - $.fn.datepicker.dates['en'] = { - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], - daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], - daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Today", - clear: "Clear" - }; - -Right-to-left languages may also include ``rtl: true`` to make the calendar display appropriately. - -If your browser (or those of your users) is displaying characters wrong, chances are the browser is loading the javascript file with a non-unicode encoding. Simply add ``charset="UTF-8"`` to your ``script`` tag: - -.. code-block:: html - - - -:: - - $('.datepicker').datepicker({ - language: 'XX' - }); diff --git a/static/app/bower_components/bootstrap-datepicker/docs/index.rst b/static/app/bower_components/bootstrap-datepicker/docs/index.rst deleted file mode 100644 index 03ff9ac..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/index.rst +++ /dev/null @@ -1,122 +0,0 @@ -bootstrap-datepicker -==================== - -Bootstrap-datepicker provides a flexible datepicker widget in the Twitter bootstrap style. - -.. figure:: _static/demo_head.png - :align: center - -This is a fork of Stefan Petre's `original code `_; thanks go to him for getting this thing started! - -Please note that this fork is not used on Stefan's page at this time, nor is it maintained or contributed to by him. - -Versions are incremented according to `semver `_. - -`Online Demo `_ - - -Requirements ------------- - -* `Bootstrap`_ 2.0.4+ -* `jQuery`_ 1.7.1+ - -.. _Bootstrap: http://twitter.github.com/bootstrap/ -.. _jQuery: http://jquery.com/ - -These are the specific versions bootstrap-datepicker is tested against (``js`` files) and built against (``css`` files). Use other versions at your own risk. - - -Dependencies ------------- - -Requires bootstrap's dropdown component (``dropdowns.less``) for some styles, and bootstrap's sprites (``sprites.less`` and associated images) for arrows. - -A standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running ``build/build_standalone.less`` through the ``lessc`` compiler:: - - $ lessc build/build_standalone.less datepicker.css - - -Usage ------ - -Call the datepicker via javascript:: - - $('.datepicker').datepicker() - - -Data API -^^^^^^^^ - -As with bootstrap's own plugins, datepicker provides a data-api that can be used to instantiate datepickers without the need for custom javascript. For most datepickers, simply set ``data-provide="datepicker"`` on the element you want to initialize, and it will be intialized lazily, in true bootstrap fashion. For inline datepickers, use ``data-provide="datepicker-inline"``; these will be immediately initialized on page load, and cannot be lazily loaded. - -.. code-block:: html - - - -You can disable datepicker's data-api in the same way as you would disable other bootstrap plugins:: - - $(document).off('.datepicker.data-api'); - - -Configuration -^^^^^^^^^^^^^ - -:doc:`options` are passed to the ``datepicker`` function via an options hash at instantiation:: - - $('.datepicker').datepicker({ - format: 'mm/dd/yyyy', - startDate: '-3d' - }) - -Most options may be provided as data-attributes on the target element: - -.. code-block:: html - - - -:: - - $('.datepicker').datepicker({ - startDate: '-3d' - }) - -Defaults for all options can be modified directly by changing values in the ``$.fn.datepicker.defaults`` hash:: - - $.fn.datepicker.defaults.format = "mm/dd/yyyy"; - $('.datepicker').datepicker({ - startDate: '-3d' - }) - - -No Conflict mode -^^^^^^^^^^^^^^^^ - -``$.fn.datepicker.noConflict`` provides a way to avoid conflict with other jQuery datepicker plugins:: - - var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value - $.fn.bootstrapDP = datepicker; // give $().bootstrapDP the bootstrap-datepicker functionality - - - -Table of Contents ------------------ - -.. toctree:: - - markup - options - methods - events - keyboard - i18n - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/static/app/bower_components/bootstrap-datepicker/docs/keyboard.rst b/static/app/bower_components/bootstrap-datepicker/docs/keyboard.rst deleted file mode 100644 index e34ba65..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/keyboard.rst +++ /dev/null @@ -1,27 +0,0 @@ -Keyboard support -================ - -The datepicker includes keyboard navigation. The "focused date" is kept track of and highlighted (as with mouse hover) during keyboard nav, and is cleared when a date is toggled or the picker is hidden. - -up, down, left, right arrow keys --------------------------------- - -By themselves, left/right will move focus backward/forward one day, up/down will move focus back/forward one week. - -With the shift key, up/left will move focus backward one month, down/right will move focus forward one month. - -With the ctrl key, up/left will move focus backward one year, down/right will move focus forward one year. - -Shift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year. - -enter ------ - -When the picker is visible, enter will toggle the focused date (if there is one). When the picker is not visible, enter will have normal effects -- submitting the current form, etc. - -When the date is deselected, the ``clearDate`` event is triggered; otherwise, the ``changeDate`` event is triggered. If ``autoclose`` is enabled, the picker will be hidden after selection or deselection. - -escape ------- - -The escape key can be used to clear the focused date and hide and re-show the datepicker; hiding the picker is necessary if the user wants to manually edit the value. diff --git a/static/app/bower_components/bootstrap-datepicker/docs/make.bat b/static/app/bower_components/bootstrap-datepicker/docs/make.bat deleted file mode 100644 index 282b37a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/make.bat +++ /dev/null @@ -1,190 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=_build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . -set I18NSPHINXOPTS=%SPHINXOPTS% . -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% - set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. texinfo to make Texinfo files - echo. gettext to make PO message catalogs - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\bootstrap-datepicker.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\bootstrap-datepicker.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "texinfo" ( - %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. - goto end -) - -if "%1" == "gettext" ( - %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The message catalogs are in %BUILDDIR%/locale. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end diff --git a/static/app/bower_components/bootstrap-datepicker/docs/markup.rst b/static/app/bower_components/bootstrap-datepicker/docs/markup.rst deleted file mode 100644 index a6ec82b..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/markup.rst +++ /dev/null @@ -1,50 +0,0 @@ -Markup -======= - -The following are examples of supported markup. On their own, these will not provide a datepicker widget; you will need to instantiate the datepicker on the markup. - - -input ------ - -The simplest case: focusing the input (clicking or tabbing into it) will show the picker. - -.. code-block:: html - - - -component ---------- - -Adding the ``date`` class to an ``input-append`` or ``input-prepend`` bootstrap component will allow the ``add-on`` elements to trigger the picker. - -.. code-block:: html - -
- - -
- - -date-range ----------- - -Using the ``input-daterange`` construct with multiple child inputs will instantiate one picker per input and link them together to allow selecting ranges. - -.. code-block:: html - -
- - to - -
- - -inline or embedded ------------------- - -Instantiating the datepicker on a simple div will give an embedded picker that is always visible. - -.. code-block:: html - -
diff --git a/static/app/bower_components/bootstrap-datepicker/docs/methods.rst b/static/app/bower_components/bootstrap-datepicker/docs/methods.rst deleted file mode 100644 index 3e38f95..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/methods.rst +++ /dev/null @@ -1,164 +0,0 @@ -Methods -======= - -Methods are called on a datepicker by call the ``datepicker`` function with a string first argument, followed by any arguments the method takes:: - - $('.datepicker').datepicker('method', arg1, arg2); - - -remove ------- - -Arguments: None - -Remove the datepicker. Removes attached events, internal attached objects, and added HTML elements. - - -show ----- - -Arguments: None - -Show the picker. - - -hide ----- - -Arguments: None - -Hide the picker. - - -update ------- - -Arguments: - -* date (String|Date, optional) - -Update the datepicker with given argument or the current input value. - -If ``date`` is provided and is a Date object, it is assumed to be a "local" date object, and will be converted to UTC for internal use. - -:: - - $('.datepicker').datepicker('update'); - $('.datepicker').datepicker('update', '2011-03-05'); - $('.datepicker').datepicker('update', new Date(2011, 2, 5)); - - -setDate -------- - -Arguments: - -* date (Date) - -Sets the internal date. ``date`` is assumed to be a "local" date object, and will be converted to UTC for internal use. - - -setUTCDate ----------- - -Arguments: - -* date (Date) - -Sets the internal date. ``date`` is assumed to be a UTC date object, and will not be converted. - - -setDates --------- - -Arguments: - -* date[, date[, ...]] (Date) - -or - -* [date[, date[, ...]]] (Array) - -Sets the internal date list; accepts multiple dates or a single array of dates as arguments. Each ``date`` is assumed to mbe a "local" date object, and will be converted to UTC for internal use. For use with multidate pickers. - - -setUTCDates ------------ - -Arguments: - -* date[, date[, ...]] (Date) - -or - -* [date[, date[, ...]]] (Array) - -Sets the internal date list. Each ``date`` is assumed to be a UTC date object, and will not be converted. For use with multidate pickers. - - -getDate -------- - -Arguments: None - -Returns a localized date object representing the internal date object of the first datepicker in the selection. For multidate pickers, returns the latest date selected. - - -getUTCDate ----------- - -Arguments: None - -Returns the internal UTC date object, as-is and unconverted to local time, of the first datepicker in the selection. For multidate pickers, returns the latest date selected. - - -getDates --------- - -Arguments: None - -Returns a list of localized date objects representing the internal date objects of the first datepicker in the selection. For use with multidate pickers. - - -getUTCDates ------------ - -Arguments: None - -Returns the internal list of UTC date objects, as they are and unconverted to local time, of the first datepicker in the selection. For use with multidate pickers. - - -setStartDate ------------- - -Arguments: - -* startDate (Date) - -Sets a new lower date limit on the datepicker. See :ref:`startdate` for valid values. - -Omit startDate (or provide an otherwise falsey value) to unset the limit. - - -setEndDate ----------- - -Arguments: - -* endDate (Date) - -Sets a new upper date limit on the datepicker. See :ref:`enddate` for valid values. - -Omit endDate (or provide an otherwise falsey value) to unset the limit. - - -setDaysOfWeekDisabled ---------------------- - -Arguments: - -* daysOfWeekDisabled (String|Array) - -Sets the days of week that should be disabled. See :ref:`daysofweekdisabled` for valid values. - -Omit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days. diff --git a/static/app/bower_components/bootstrap-datepicker/docs/options.rst b/static/app/bower_components/bootstrap-datepicker/docs/options.rst deleted file mode 100644 index 82459c4..0000000 --- a/static/app/bower_components/bootstrap-datepicker/docs/options.rst +++ /dev/null @@ -1,191 +0,0 @@ -Options -======= - -All options that take a "Date" can handle a ``Date`` object; a String formatted according to the given ``format``; or a timedelta relative to today, eg "-1d", "+6m +1y", etc, where valid units are "d" (day), "w" (week), "m" (month), and "y" (year). - -Most options can be provided via data-attributes. An option can be converted to a data-attribute by taking its name, replacing each uppercase letter with its lowercase equivalent preceded by a dash, and prepending "data-date-" to the result. For example, ``startDate`` would be ``data-date-start-date``, ``format`` would be ``data-date-format``, and ``daysOfWeekDisabled`` would be ``data-date-days-of-week-disabled``. - - -autoclose ---------- - -Boolean. Default: false - -Whether or not to close the datepicker immediately when a date is selected. - - -beforeShowDay -------------- - -Function(Date). Default: $.noop - -A function that takes a date as a parameter and returns one of the following values: - - * undefined to have no effect - * A Boolean, indicating whether or not this date is selectable - * A String representing additional CSS classes to apply to the date's cell - * An object with the following properties: - - * ``enabled``: same as the Boolean value above - * ``classes``: same as the String value above - * ``tooltip``: a tooltip to apply to this date, via the ``title`` HTML attribute - - -calendarWeeks -------------- - -Boolean. Default: false - -Whether or not to show week numbers to the left of week rows. - - -clearBtn --------- - -Boolean. Default: false - -If true, displays a "Clear" button at the bottom of the datepicker to clear the input value. If "autoclose" is also set to true, this button will also close the datepicker. - - -.. _daysofweekdisabled: - -daysOfWeekDisabled ------------------- - -String, Array. Default: '', [] - -Days of the week that should be disabled. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: disable weekends: ``'0,6'`` or ``[0,6]``. - - -.. _enddate: - -endDate -------- - -Date. Default: End of time - -The latest date that may be selected; all later dates will be disabled. - - -forceParse ----------- - -Boolean. Default: true - -Whether or not to force parsing of the input value when the picker is closed. That is, when an invalid date is left in the input field by the user, the picker will forcibly parse that value, and set the input's value to the new, valid date, conforming to the given `format`. - - -format ------- - -String. Default: "mm/dd/yyyy" - -The date format, combination of d, dd, D, DD, m, mm, M, MM, yy, yyyy. - -* d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05. -* D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday. -* m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07. -* M, MM: Abbreviated and full month names, respectively. Eg, Jan, January -* yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012. - - -inputs ------- - -Array. Default: None - -A list of inputs to be used in a range picker, which will be attached to the selected element. Allows for explicitly creating a range picker on a non-standard element. - - -keyboardNavigation ------------------- - -Boolean. Default: true - -Whether or not to allow date navigation by arrow keys. - - -language --------- - -String. Default: "en" - -The IETF code (eg "en" for English, "pt-BR" for Brazilian Portuguese) of the language to use for month and day names. These will also be used as the input's value (and subsequently sent to the server in the case of form submissions). If a full code (eg "de-DE") is supplied the picker will first check for an "de-DE" language and if not found will fallback and check for a "de" language. If an unknown language code is given, English will be used. See :doc:`i18n`. - - -minViewMode ------------ - -Number, String. Default: 0, "days" - -Set a limit for the view mode. Accepts: "days" or 0, "months" or 1, and "years" or 2. -Gives the ability to pick only a month or an year. The day is set to the 1st for "months", and the month is set to January for "years". - - -multidate ---------- - -Boolean, Number. Default: false - -Enable multidate picking. Each date in month view acts as a toggle button, keeping track of which dates the user has selected in order. If a number is given, the picker will limit how many dates can be selected to that number, dropping the oldest dates from the list when the number is exceeded. ``true`` equates to no limit. The input's value (if present) is set to a string generated by joining the dates, formatted, with ``multidateSeparator``. - - -multidateSeparator ------------------- - -String. Default: "," - -The string that will appear between dates when generating the input's value. When parsing the input's value for a multidate picker, this will also be used to split the incoming string to separate multiple formatted dates; as such, it is highly recommended that you not use a string that could be a substring of a formatted date (eg, using '-' to separate dates when your format is 'yyyy-mm-dd'). - - -orientation ------------ - -String. Default: "auto" - -A space-separated string consisting of one or two of "left" or "right", "top" or "bottom", and "auto" (may be omitted); for example, "top left", "bottom" (horizontal orientation will default to "auto"), "right" (vertical orientation will default to "auto"), "auto top". Allows for fixed placement of the picker popup. - -"orientation" refers to the location of the picker popup's "anchor"; you can also think of it as the location of the trigger element (input, component, etc) relative to the picker. - -"auto" triggers "smart orientation" of the picker. Horizontal orientation will default to "left" and left offset will be tweaked to keep the picker inside the browser viewport; vertical orientation will simply choose "top" or "bottom", whichever will show more of the picker in the viewport. - -.. _startdate: - -startDate ---------- - -Date. Default: Beginning of time - -The earliest date that may be selected; all earlier dates will be disabled. - - -startView ---------- - -Number, String. Default: 0, "month" - -The view that the datepicker should show when it is opened. Accepts values of 0 or "month" for month view (the default), 1 or "year" for the 12-month overview, and 2 or "decade" for the 10-year overview. Useful for date-of-birth datepickers. - - -todayBtn --------- - -Boolean, "linked". Default: false - -If true or "linked", displays a "Today" button at the bottom of the datepicker to select the current date. If true, the "Today" button will only move the current date into view; if "linked", the current date will also be selected. - - -todayHighlight --------------- - -Boolean. Default: false - -If true, highlights the current date. - - -weekStart ---------- - -Integer. Default: 0 - -Day of the week start. 0 (Sunday) to 6 (Saturday) diff --git a/static/app/bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js b/static/app/bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js deleted file mode 100644 index f17de6d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js +++ /dev/null @@ -1,1671 +0,0 @@ -/* ========================================================= - * bootstrap-datepicker.js - * Repo: https://github.com/eternicode/bootstrap-datepicker/ - * Demo: http://eternicode.github.io/bootstrap-datepicker/ - * Docs: http://bootstrap-datepicker.readthedocs.org/ - * Forked from http://www.eyecon.ro/bootstrap-datepicker - * ========================================================= - * Started by Stefan Petre; improvements by Andrew Rowls + contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - -(function($, undefined){ - - var $window = $(window); - - function UTCDate(){ - return new Date(Date.UTC.apply(Date, arguments)); - } - function UTCToday(){ - var today = new Date(); - return UTCDate(today.getFullYear(), today.getMonth(), today.getDate()); - } - function alias(method){ - return function(){ - return this[method].apply(this, arguments); - }; - } - - var DateArray = (function(){ - var extras = { - get: function(i){ - return this.slice(i)[0]; - }, - contains: function(d){ - // Array.indexOf is not cross-browser; - // $.inArray doesn't work with Dates - var val = d && d.valueOf(); - for (var i=0, l=this.length; i < l; i++) - if (this[i].valueOf() === val) - return i; - return -1; - }, - remove: function(i){ - this.splice(i,1); - }, - replace: function(new_array){ - if (!new_array) - return; - if (!$.isArray(new_array)) - new_array = [new_array]; - this.clear(); - this.push.apply(this, new_array); - }, - clear: function(){ - this.splice(0); - }, - copy: function(){ - var a = new DateArray(); - a.replace(this); - return a; - } - }; - - return function(){ - var a = []; - a.push.apply(a, arguments); - $.extend(a, extras); - return a; - }; - })(); - - - // Picker object - - var Datepicker = function(element, options){ - this.dates = new DateArray(); - this.viewDate = UTCToday(); - this.focusDate = null; - - this._process_options(options); - - this.element = $(element); - this.isInline = false; - this.isInput = this.element.is('input'); - this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false; - this.hasInput = this.component && this.element.find('input').length; - if (this.component && this.component.length === 0) - this.component = false; - - this.picker = $(DPGlobal.template); - this._buildEvents(); - this._attachEvents(); - - if (this.isInline){ - this.picker.addClass('datepicker-inline').appendTo(this.element); - } - else { - this.picker.addClass('datepicker-dropdown dropdown-menu'); - } - - if (this.o.rtl){ - this.picker.addClass('datepicker-rtl'); - } - - this.viewMode = this.o.startView; - - if (this.o.calendarWeeks) - this.picker.find('tfoot th.today') - .attr('colspan', function(i, val){ - return parseInt(val) + 1; - }); - - this._allow_update = false; - - this.setStartDate(this._o.startDate); - this.setEndDate(this._o.endDate); - this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled); - - this.fillDow(); - this.fillMonths(); - - this._allow_update = true; - - this.update(); - this.showMode(); - - if (this.isInline){ - this.show(); - } - }; - - Datepicker.prototype = { - constructor: Datepicker, - - _process_options: function(opts){ - // Store raw options for reference - this._o = $.extend({}, this._o, opts); - // Processed options - var o = this.o = $.extend({}, this._o); - - // Check if "de-DE" style date is available, if not language should - // fallback to 2 letter code eg "de" - var lang = o.language; - if (!dates[lang]){ - lang = lang.split('-')[0]; - if (!dates[lang]) - lang = defaults.language; - } - o.language = lang; - - switch (o.startView){ - case 2: - case 'decade': - o.startView = 2; - break; - case 1: - case 'year': - o.startView = 1; - break; - default: - o.startView = 0; - } - - switch (o.minViewMode){ - case 1: - case 'months': - o.minViewMode = 1; - break; - case 2: - case 'years': - o.minViewMode = 2; - break; - default: - o.minViewMode = 0; - } - - o.startView = Math.max(o.startView, o.minViewMode); - - // true, false, or Number > 0 - if (o.multidate !== true){ - o.multidate = Number(o.multidate) || false; - if (o.multidate !== false) - o.multidate = Math.max(0, o.multidate); - else - o.multidate = 1; - } - o.multidateSeparator = String(o.multidateSeparator); - - o.weekStart %= 7; - o.weekEnd = ((o.weekStart + 6) % 7); - - var format = DPGlobal.parseFormat(o.format); - if (o.startDate !== -Infinity){ - if (!!o.startDate){ - if (o.startDate instanceof Date) - o.startDate = this._local_to_utc(this._zero_time(o.startDate)); - else - o.startDate = DPGlobal.parseDate(o.startDate, format, o.language); - } - else { - o.startDate = -Infinity; - } - } - if (o.endDate !== Infinity){ - if (!!o.endDate){ - if (o.endDate instanceof Date) - o.endDate = this._local_to_utc(this._zero_time(o.endDate)); - else - o.endDate = DPGlobal.parseDate(o.endDate, format, o.language); - } - else { - o.endDate = Infinity; - } - } - - o.daysOfWeekDisabled = o.daysOfWeekDisabled||[]; - if (!$.isArray(o.daysOfWeekDisabled)) - o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/); - o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){ - return parseInt(d, 10); - }); - - var plc = String(o.orientation).toLowerCase().split(/\s+/g), - _plc = o.orientation.toLowerCase(); - plc = $.grep(plc, function(word){ - return (/^auto|left|right|top|bottom$/).test(word); - }); - o.orientation = {x: 'auto', y: 'auto'}; - if (!_plc || _plc === 'auto') - ; // no action - else if (plc.length === 1){ - switch (plc[0]){ - case 'top': - case 'bottom': - o.orientation.y = plc[0]; - break; - case 'left': - case 'right': - o.orientation.x = plc[0]; - break; - } - } - else { - _plc = $.grep(plc, function(word){ - return (/^left|right$/).test(word); - }); - o.orientation.x = _plc[0] || 'auto'; - - _plc = $.grep(plc, function(word){ - return (/^top|bottom$/).test(word); - }); - o.orientation.y = _plc[0] || 'auto'; - } - }, - _events: [], - _secondaryEvents: [], - _applyEvents: function(evs){ - for (var i=0, el, ch, ev; i < evs.length; i++){ - el = evs[i][0]; - if (evs[i].length === 2){ - ch = undefined; - ev = evs[i][1]; - } - else if (evs[i].length === 3){ - ch = evs[i][1]; - ev = evs[i][2]; - } - el.on(ev, ch); - } - }, - _unapplyEvents: function(evs){ - for (var i=0, el, ev, ch; i < evs.length; i++){ - el = evs[i][0]; - if (evs[i].length === 2){ - ch = undefined; - ev = evs[i][1]; - } - else if (evs[i].length === 3){ - ch = evs[i][1]; - ev = evs[i][2]; - } - el.off(ev, ch); - } - }, - _buildEvents: function(){ - if (this.isInput){ // single input - this._events = [ - [this.element, { - focus: $.proxy(this.show, this), - keyup: $.proxy(function(e){ - if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1) - this.update(); - }, this), - keydown: $.proxy(this.keydown, this) - }] - ]; - } - else if (this.component && this.hasInput){ // component: input + button - this._events = [ - // For components that are not readonly, allow keyboard nav - [this.element.find('input'), { - focus: $.proxy(this.show, this), - keyup: $.proxy(function(e){ - if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1) - this.update(); - }, this), - keydown: $.proxy(this.keydown, this) - }], - [this.component, { - click: $.proxy(this.show, this) - }] - ]; - } - else if (this.element.is('div')){ // inline datepicker - this.isInline = true; - } - else { - this._events = [ - [this.element, { - click: $.proxy(this.show, this) - }] - ]; - } - this._events.push( - // Component: listen for blur on element descendants - [this.element, '*', { - blur: $.proxy(function(e){ - this._focused_from = e.target; - }, this) - }], - // Input: listen for blur on element - [this.element, { - blur: $.proxy(function(e){ - this._focused_from = e.target; - }, this) - }] - ); - - this._secondaryEvents = [ - [this.picker, { - click: $.proxy(this.click, this) - }], - [$(window), { - resize: $.proxy(this.place, this) - }], - [$(document), { - 'mousedown touchstart': $.proxy(function(e){ - // Clicked outside the datepicker, hide it - if (!( - this.element.is(e.target) || - this.element.find(e.target).length || - this.picker.is(e.target) || - this.picker.find(e.target).length - )){ - this.hide(); - } - }, this) - }] - ]; - }, - _attachEvents: function(){ - this._detachEvents(); - this._applyEvents(this._events); - }, - _detachEvents: function(){ - this._unapplyEvents(this._events); - }, - _attachSecondaryEvents: function(){ - this._detachSecondaryEvents(); - this._applyEvents(this._secondaryEvents); - }, - _detachSecondaryEvents: function(){ - this._unapplyEvents(this._secondaryEvents); - }, - _trigger: function(event, altdate){ - var date = altdate || this.dates.get(-1), - local_date = this._utc_to_local(date); - - this.element.trigger({ - type: event, - date: local_date, - dates: $.map(this.dates, this._utc_to_local), - format: $.proxy(function(ix, format){ - if (arguments.length === 0){ - ix = this.dates.length - 1; - format = this.o.format; - } - else if (typeof ix === 'string'){ - format = ix; - ix = this.dates.length - 1; - } - format = format || this.o.format; - var date = this.dates.get(ix); - return DPGlobal.formatDate(date, format, this.o.language); - }, this) - }); - }, - - show: function(){ - if (!this.isInline) - this.picker.appendTo('body'); - this.picker.show(); - this.place(); - this._attachSecondaryEvents(); - this._trigger('show'); - }, - - hide: function(){ - if (this.isInline) - return; - if (!this.picker.is(':visible')) - return; - this.focusDate = null; - this.picker.hide().detach(); - this._detachSecondaryEvents(); - this.viewMode = this.o.startView; - this.showMode(); - - if ( - this.o.forceParse && - ( - this.isInput && this.element.val() || - this.hasInput && this.element.find('input').val() - ) - ) - this.setValue(); - this._trigger('hide'); - }, - - remove: function(){ - this.hide(); - this._detachEvents(); - this._detachSecondaryEvents(); - this.picker.remove(); - delete this.element.data().datepicker; - if (!this.isInput){ - delete this.element.data().date; - } - }, - - _utc_to_local: function(utc){ - return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000)); - }, - _local_to_utc: function(local){ - return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000)); - }, - _zero_time: function(local){ - return local && new Date(local.getFullYear(), local.getMonth(), local.getDate()); - }, - _zero_utc_time: function(utc){ - return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate())); - }, - - getDates: function(){ - return $.map(this.dates, this._utc_to_local); - }, - - getUTCDates: function(){ - return $.map(this.dates, function(d){ - return new Date(d); - }); - }, - - getDate: function(){ - return this._utc_to_local(this.getUTCDate()); - }, - - getUTCDate: function(){ - return new Date(this.dates.get(-1)); - }, - - setDates: function(){ - var args = $.isArray(arguments[0]) ? arguments[0] : arguments; - this.update.apply(this, args); - this._trigger('changeDate'); - this.setValue(); - }, - - setUTCDates: function(){ - var args = $.isArray(arguments[0]) ? arguments[0] : arguments; - this.update.apply(this, $.map(args, this._utc_to_local)); - this._trigger('changeDate'); - this.setValue(); - }, - - setDate: alias('setDates'), - setUTCDate: alias('setUTCDates'), - - setValue: function(){ - var formatted = this.getFormattedDate(); - if (!this.isInput){ - if (this.component){ - this.element.find('input').val(formatted).change(); - } - } - else { - this.element.val(formatted).change(); - } - }, - - getFormattedDate: function(format){ - if (format === undefined) - format = this.o.format; - - var lang = this.o.language; - return $.map(this.dates, function(d){ - return DPGlobal.formatDate(d, format, lang); - }).join(this.o.multidateSeparator); - }, - - setStartDate: function(startDate){ - this._process_options({startDate: startDate}); - this.update(); - this.updateNavArrows(); - }, - - setEndDate: function(endDate){ - this._process_options({endDate: endDate}); - this.update(); - this.updateNavArrows(); - }, - - setDaysOfWeekDisabled: function(daysOfWeekDisabled){ - this._process_options({daysOfWeekDisabled: daysOfWeekDisabled}); - this.update(); - this.updateNavArrows(); - }, - - place: function(){ - if (this.isInline) - return; - var calendarWidth = this.picker.outerWidth(), - calendarHeight = this.picker.outerHeight(), - visualPadding = 10, - windowWidth = $window.width(), - windowHeight = $window.height(), - scrollTop = $window.scrollTop(); - - var zIndex = parseInt(this.element.parents().filter(function(){ - return $(this).css('z-index') !== 'auto'; - }).first().css('z-index'))+10; - var offset = this.component ? this.component.parent().offset() : this.element.offset(); - var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false); - var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false); - var left = offset.left, - top = offset.top; - - this.picker.removeClass( - 'datepicker-orient-top datepicker-orient-bottom '+ - 'datepicker-orient-right datepicker-orient-left' - ); - - if (this.o.orientation.x !== 'auto'){ - this.picker.addClass('datepicker-orient-' + this.o.orientation.x); - if (this.o.orientation.x === 'right') - left -= calendarWidth - width; - } - // auto x orientation is best-placement: if it crosses a window - // edge, fudge it sideways - else { - // Default to left - this.picker.addClass('datepicker-orient-left'); - if (offset.left < 0) - left -= offset.left - visualPadding; - else if (offset.left + calendarWidth > windowWidth) - left = windowWidth - calendarWidth - visualPadding; - } - - // auto y orientation is best-situation: top or bottom, no fudging, - // decision based on which shows more of the calendar - var yorient = this.o.orientation.y, - top_overflow, bottom_overflow; - if (yorient === 'auto'){ - top_overflow = -scrollTop + offset.top - calendarHeight; - bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight); - if (Math.max(top_overflow, bottom_overflow) === bottom_overflow) - yorient = 'top'; - else - yorient = 'bottom'; - } - this.picker.addClass('datepicker-orient-' + yorient); - if (yorient === 'top') - top += height; - else - top -= calendarHeight + parseInt(this.picker.css('padding-top')); - - this.picker.css({ - top: top, - left: left, - zIndex: zIndex - }); - }, - - _allow_update: true, - update: function(){ - if (!this._allow_update) - return; - - var oldDates = this.dates.copy(), - dates = [], - fromArgs = false; - if (arguments.length){ - $.each(arguments, $.proxy(function(i, date){ - if (date instanceof Date) - date = this._local_to_utc(date); - dates.push(date); - }, this)); - fromArgs = true; - } - else { - dates = this.isInput - ? this.element.val() - : this.element.data('date') || this.element.find('input').val(); - if (dates && this.o.multidate) - dates = dates.split(this.o.multidateSeparator); - else - dates = [dates]; - delete this.element.data().date; - } - - dates = $.map(dates, $.proxy(function(date){ - return DPGlobal.parseDate(date, this.o.format, this.o.language); - }, this)); - dates = $.grep(dates, $.proxy(function(date){ - return ( - date < this.o.startDate || - date > this.o.endDate || - !date - ); - }, this), true); - this.dates.replace(dates); - - if (this.dates.length) - this.viewDate = new Date(this.dates.get(-1)); - else if (this.viewDate < this.o.startDate) - this.viewDate = new Date(this.o.startDate); - else if (this.viewDate > this.o.endDate) - this.viewDate = new Date(this.o.endDate); - - if (fromArgs){ - // setting date by clicking - this.setValue(); - } - else if (dates.length){ - // setting date by typing - if (String(oldDates) !== String(this.dates)) - this._trigger('changeDate'); - } - if (!this.dates.length && oldDates.length) - this._trigger('clearDate'); - - this.fill(); - }, - - fillDow: function(){ - var dowCnt = this.o.weekStart, - html = ''; - if (this.o.calendarWeeks){ - var cell = ' '; - html += cell; - this.picker.find('.datepicker-days thead tr:first-child').prepend(cell); - } - while (dowCnt < this.o.weekStart + 7){ - html += ''+dates[this.o.language].daysMin[(dowCnt++)%7]+''; - } - html += ''; - this.picker.find('.datepicker-days thead').append(html); - }, - - fillMonths: function(){ - var html = '', - i = 0; - while (i < 12){ - html += ''+dates[this.o.language].monthsShort[i++]+''; - } - this.picker.find('.datepicker-months td').html(html); - }, - - setRange: function(range){ - if (!range || !range.length) - delete this.range; - else - this.range = $.map(range, function(d){ - return d.valueOf(); - }); - this.fill(); - }, - - getClassNames: function(date){ - var cls = [], - year = this.viewDate.getUTCFullYear(), - month = this.viewDate.getUTCMonth(), - today = new Date(); - if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){ - cls.push('old'); - } - else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){ - cls.push('new'); - } - if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) - cls.push('focused'); - // Compare internal UTC date with local today, not UTC today - if (this.o.todayHighlight && - date.getUTCFullYear() === today.getFullYear() && - date.getUTCMonth() === today.getMonth() && - date.getUTCDate() === today.getDate()){ - cls.push('today'); - } - if (this.dates.contains(date) !== -1) - cls.push('active'); - if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate || - $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){ - cls.push('disabled'); - } - if (this.range){ - if (date > this.range[0] && date < this.range[this.range.length-1]){ - cls.push('range'); - } - if ($.inArray(date.valueOf(), this.range) !== -1){ - cls.push('selected'); - } - } - return cls; - }, - - fill: function(){ - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(), - startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity, - startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity, - endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity, - endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, - todaytxt = dates[this.o.language].today || dates['en'].today || '', - cleartxt = dates[this.o.language].clear || dates['en'].clear || '', - tooltip; - this.picker.find('.datepicker-days thead th.datepicker-switch') - .text(dates[this.o.language].months[month]+' '+year); - this.picker.find('tfoot th.today') - .text(todaytxt) - .toggle(this.o.todayBtn !== false); - this.picker.find('tfoot th.clear') - .text(cleartxt) - .toggle(this.o.clearBtn !== false); - this.updateNavArrows(); - this.fillMonths(); - var prevMonth = UTCDate(year, month-1, 28), - day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth()); - prevMonth.setUTCDate(day); - prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7); - var nextMonth = new Date(prevMonth); - nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); - nextMonth = nextMonth.valueOf(); - var html = []; - var clsName; - while (prevMonth.valueOf() < nextMonth){ - if (prevMonth.getUTCDay() === this.o.weekStart){ - html.push(''); - if (this.o.calendarWeeks){ - // ISO 8601: First week contains first thursday. - // ISO also states week starts on Monday, but we can be more abstract here. - var - // Start of current week: based on weekstart/current date - ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5), - // Thursday of this week - th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5), - // First Thursday of year, year from thursday - yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5), - // Calendar week: ms between thursdays, div ms per day, div 7 days - calWeek = (th - yth) / 864e5 / 7 + 1; - html.push(''+ calWeek +''); - - } - } - clsName = this.getClassNames(prevMonth); - clsName.push('day'); - - if (this.o.beforeShowDay !== $.noop){ - var before = this.o.beforeShowDay(this._utc_to_local(prevMonth)); - if (before === undefined) - before = {}; - else if (typeof(before) === 'boolean') - before = {enabled: before}; - else if (typeof(before) === 'string') - before = {classes: before}; - if (before.enabled === false) - clsName.push('disabled'); - if (before.classes) - clsName = clsName.concat(before.classes.split(/\s+/)); - if (before.tooltip) - tooltip = before.tooltip; - } - - clsName = $.unique(clsName); - html.push(''+prevMonth.getUTCDate() + ''); - if (prevMonth.getUTCDay() === this.o.weekEnd){ - html.push(''); - } - prevMonth.setUTCDate(prevMonth.getUTCDate()+1); - } - this.picker.find('.datepicker-days tbody').empty().append(html.join('')); - - var months = this.picker.find('.datepicker-months') - .find('th:eq(1)') - .text(year) - .end() - .find('span').removeClass('active'); - - $.each(this.dates, function(i, d){ - if (d.getUTCFullYear() === year) - months.eq(d.getUTCMonth()).addClass('active'); - }); - - if (year < startYear || year > endYear){ - months.addClass('disabled'); - } - if (year === startYear){ - months.slice(0, startMonth).addClass('disabled'); - } - if (year === endYear){ - months.slice(endMonth+1).addClass('disabled'); - } - - html = ''; - year = parseInt(year/10, 10) * 10; - var yearCont = this.picker.find('.datepicker-years') - .find('th:eq(1)') - .text(year + '-' + (year + 9)) - .end() - .find('td'); - year -= 1; - var years = $.map(this.dates, function(d){ - return d.getUTCFullYear(); - }), - classes; - for (var i = -1; i < 11; i++){ - classes = ['year']; - if (i === -1) - classes.push('old'); - else if (i === 10) - classes.push('new'); - if ($.inArray(year, years) !== -1) - classes.push('active'); - if (year < startYear || year > endYear) - classes.push('disabled'); - html += ''+year+''; - year += 1; - } - yearCont.html(html); - }, - - updateNavArrows: function(){ - if (!this._allow_update) - return; - - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(); - switch (this.viewMode){ - case 0: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){ - this.picker.find('.prev').css({visibility: 'hidden'}); - } - else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){ - this.picker.find('.next').css({visibility: 'hidden'}); - } - else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - case 1: - case 2: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){ - this.picker.find('.prev').css({visibility: 'hidden'}); - } - else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){ - this.picker.find('.next').css({visibility: 'hidden'}); - } - else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - } - }, - - click: function(e){ - e.preventDefault(); - var target = $(e.target).closest('span, td, th'), - year, month, day; - if (target.length === 1){ - switch (target[0].nodeName.toLowerCase()){ - case 'th': - switch (target[0].className){ - case 'datepicker-switch': - this.showMode(1); - break; - case 'prev': - case 'next': - var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1); - switch (this.viewMode){ - case 0: - this.viewDate = this.moveMonth(this.viewDate, dir); - this._trigger('changeMonth', this.viewDate); - break; - case 1: - case 2: - this.viewDate = this.moveYear(this.viewDate, dir); - if (this.viewMode === 1) - this._trigger('changeYear', this.viewDate); - break; - } - this.fill(); - break; - case 'today': - var date = new Date(); - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); - - this.showMode(-2); - var which = this.o.todayBtn === 'linked' ? null : 'view'; - this._setDate(date, which); - break; - case 'clear': - var element; - if (this.isInput) - element = this.element; - else if (this.component) - element = this.element.find('input'); - if (element) - element.val("").change(); - this.update(); - this._trigger('changeDate'); - if (this.o.autoclose) - this.hide(); - break; - } - break; - case 'span': - if (!target.is('.disabled')){ - this.viewDate.setUTCDate(1); - if (target.is('.month')){ - day = 1; - month = target.parent().find('span').index(target); - year = this.viewDate.getUTCFullYear(); - this.viewDate.setUTCMonth(month); - this._trigger('changeMonth', this.viewDate); - if (this.o.minViewMode === 1){ - this._setDate(UTCDate(year, month, day)); - } - } - else { - day = 1; - month = 0; - year = parseInt(target.text(), 10)||0; - this.viewDate.setUTCFullYear(year); - this._trigger('changeYear', this.viewDate); - if (this.o.minViewMode === 2){ - this._setDate(UTCDate(year, month, day)); - } - } - this.showMode(-1); - this.fill(); - } - break; - case 'td': - if (target.is('.day') && !target.is('.disabled')){ - day = parseInt(target.text(), 10)||1; - year = this.viewDate.getUTCFullYear(); - month = this.viewDate.getUTCMonth(); - if (target.is('.old')){ - if (month === 0){ - month = 11; - year -= 1; - } - else { - month -= 1; - } - } - else if (target.is('.new')){ - if (month === 11){ - month = 0; - year += 1; - } - else { - month += 1; - } - } - this._setDate(UTCDate(year, month, day)); - } - break; - } - } - if (this.picker.is(':visible') && this._focused_from){ - $(this._focused_from).focus(); - } - delete this._focused_from; - }, - - _toggle_multidate: function(date){ - var ix = this.dates.contains(date); - if (!date){ - this.dates.clear(); - } - else if (ix !== -1){ - this.dates.remove(ix); - } - else { - this.dates.push(date); - } - if (typeof this.o.multidate === 'number') - while (this.dates.length > this.o.multidate) - this.dates.remove(0); - }, - - _setDate: function(date, which){ - if (!which || which === 'date') - this._toggle_multidate(date && new Date(date)); - if (!which || which === 'view') - this.viewDate = date && new Date(date); - - this.fill(); - this.setValue(); - this._trigger('changeDate'); - var element; - if (this.isInput){ - element = this.element; - } - else if (this.component){ - element = this.element.find('input'); - } - if (element){ - element.change(); - } - if (this.o.autoclose && (!which || which === 'date')){ - this.hide(); - } - }, - - moveMonth: function(date, dir){ - if (!date) - return undefined; - if (!dir) - return date; - var new_date = new Date(date.valueOf()), - day = new_date.getUTCDate(), - month = new_date.getUTCMonth(), - mag = Math.abs(dir), - new_month, test; - dir = dir > 0 ? 1 : -1; - if (mag === 1){ - test = dir === -1 - // If going back one month, make sure month is not current month - // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02) - ? function(){ - return new_date.getUTCMonth() === month; - } - // If going forward one month, make sure month is as expected - // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02) - : function(){ - return new_date.getUTCMonth() !== new_month; - }; - new_month = month + dir; - new_date.setUTCMonth(new_month); - // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 - if (new_month < 0 || new_month > 11) - new_month = (new_month + 12) % 12; - } - else { - // For magnitudes >1, move one month at a time... - for (var i=0; i < mag; i++) - // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... - new_date = this.moveMonth(new_date, dir); - // ...then reset the day, keeping it in the new month - new_month = new_date.getUTCMonth(); - new_date.setUTCDate(day); - test = function(){ - return new_month !== new_date.getUTCMonth(); - }; - } - // Common date-resetting loop -- if date is beyond end of month, make it - // end of month - while (test()){ - new_date.setUTCDate(--day); - new_date.setUTCMonth(new_month); - } - return new_date; - }, - - moveYear: function(date, dir){ - return this.moveMonth(date, dir*12); - }, - - dateWithinRange: function(date){ - return date >= this.o.startDate && date <= this.o.endDate; - }, - - keydown: function(e){ - if (this.picker.is(':not(:visible)')){ - if (e.keyCode === 27) // allow escape to hide and re-show picker - this.show(); - return; - } - var dateChanged = false, - dir, newDate, newViewDate, - focusDate = this.focusDate || this.viewDate; - switch (e.keyCode){ - case 27: // escape - if (this.focusDate){ - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.fill(); - } - else - this.hide(); - e.preventDefault(); - break; - case 37: // left - case 39: // right - if (!this.o.keyboardNavigation) - break; - dir = e.keyCode === 37 ? -1 : 1; - if (e.ctrlKey){ - newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveYear(focusDate, dir); - this._trigger('changeYear', this.viewDate); - } - else if (e.shiftKey){ - newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveMonth(focusDate, dir); - this._trigger('changeMonth', this.viewDate); - } - else { - newDate = new Date(this.dates.get(-1) || UTCToday()); - newDate.setUTCDate(newDate.getUTCDate() + dir); - newViewDate = new Date(focusDate); - newViewDate.setUTCDate(focusDate.getUTCDate() + dir); - } - if (this.dateWithinRange(newDate)){ - this.focusDate = this.viewDate = newViewDate; - this.setValue(); - this.fill(); - e.preventDefault(); - } - break; - case 38: // up - case 40: // down - if (!this.o.keyboardNavigation) - break; - dir = e.keyCode === 38 ? -1 : 1; - if (e.ctrlKey){ - newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveYear(focusDate, dir); - this._trigger('changeYear', this.viewDate); - } - else if (e.shiftKey){ - newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir); - newViewDate = this.moveMonth(focusDate, dir); - this._trigger('changeMonth', this.viewDate); - } - else { - newDate = new Date(this.dates.get(-1) || UTCToday()); - newDate.setUTCDate(newDate.getUTCDate() + dir * 7); - newViewDate = new Date(focusDate); - newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7); - } - if (this.dateWithinRange(newDate)){ - this.focusDate = this.viewDate = newViewDate; - this.setValue(); - this.fill(); - e.preventDefault(); - } - break; - case 32: // spacebar - // Spacebar is used in manually typing dates in some formats. - // As such, its behavior should not be hijacked. - break; - case 13: // enter - focusDate = this.focusDate || this.dates.get(-1) || this.viewDate; - this._toggle_multidate(focusDate); - dateChanged = true; - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.setValue(); - this.fill(); - if (this.picker.is(':visible')){ - e.preventDefault(); - if (this.o.autoclose) - this.hide(); - } - break; - case 9: // tab - this.focusDate = null; - this.viewDate = this.dates.get(-1) || this.viewDate; - this.fill(); - this.hide(); - break; - } - if (dateChanged){ - if (this.dates.length) - this._trigger('changeDate'); - else - this._trigger('clearDate'); - var element; - if (this.isInput){ - element = this.element; - } - else if (this.component){ - element = this.element.find('input'); - } - if (element){ - element.change(); - } - } - }, - - showMode: function(dir){ - if (dir){ - this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir)); - } - this.picker - .find('>div') - .hide() - .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName) - .css('display', 'block'); - this.updateNavArrows(); - } - }; - - var DateRangePicker = function(element, options){ - this.element = $(element); - this.inputs = $.map(options.inputs, function(i){ - return i.jquery ? i[0] : i; - }); - delete options.inputs; - - $(this.inputs) - .datepicker(options) - .bind('changeDate', $.proxy(this.dateUpdated, this)); - - this.pickers = $.map(this.inputs, function(i){ - return $(i).data('datepicker'); - }); - this.updateDates(); - }; - DateRangePicker.prototype = { - updateDates: function(){ - this.dates = $.map(this.pickers, function(i){ - return i.getUTCDate(); - }); - this.updateRanges(); - }, - updateRanges: function(){ - var range = $.map(this.dates, function(d){ - return d.valueOf(); - }); - $.each(this.pickers, function(i, p){ - p.setRange(range); - }); - }, - dateUpdated: function(e){ - // `this.updating` is a workaround for preventing infinite recursion - // between `changeDate` triggering and `setUTCDate` calling. Until - // there is a better mechanism. - if (this.updating) - return; - this.updating = true; - - var dp = $(e.target).data('datepicker'), - new_date = dp.getUTCDate(), - i = $.inArray(e.target, this.inputs), - l = this.inputs.length; - if (i === -1) - return; - - $.each(this.pickers, function(i, p){ - if (!p.getUTCDate()) - p.setUTCDate(new_date); - }); - - if (new_date < this.dates[i]){ - // Date being moved earlier/left - while (i >= 0 && new_date < this.dates[i]){ - this.pickers[i--].setUTCDate(new_date); - } - } - else if (new_date > this.dates[i]){ - // Date being moved later/right - while (i < l && new_date > this.dates[i]){ - this.pickers[i++].setUTCDate(new_date); - } - } - this.updateDates(); - - delete this.updating; - }, - remove: function(){ - $.map(this.pickers, function(p){ p.remove(); }); - delete this.element.data().datepicker; - } - }; - - function opts_from_el(el, prefix){ - // Derive options from element data-attrs - var data = $(el).data(), - out = {}, inkey, - replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'); - prefix = new RegExp('^' + prefix.toLowerCase()); - function re_lower(_,a){ - return a.toLowerCase(); - } - for (var key in data) - if (prefix.test(key)){ - inkey = key.replace(replace, re_lower); - out[inkey] = data[key]; - } - return out; - } - - function opts_from_locale(lang){ - // Derive options from locale plugins - var out = {}; - // Check if "de-DE" style date is available, if not language should - // fallback to 2 letter code eg "de" - if (!dates[lang]){ - lang = lang.split('-')[0]; - if (!dates[lang]) - return; - } - var d = dates[lang]; - $.each(locale_opts, function(i,k){ - if (k in d) - out[k] = d[k]; - }); - return out; - } - - var old = $.fn.datepicker; - $.fn.datepicker = function(option){ - var args = Array.apply(null, arguments); - args.shift(); - var internal_return; - this.each(function(){ - var $this = $(this), - data = $this.data('datepicker'), - options = typeof option === 'object' && option; - if (!data){ - var elopts = opts_from_el(this, 'date'), - // Preliminary otions - xopts = $.extend({}, defaults, elopts, options), - locopts = opts_from_locale(xopts.language), - // Options priority: js args, data-attrs, locales, defaults - opts = $.extend({}, defaults, locopts, elopts, options); - if ($this.is('.input-daterange') || opts.inputs){ - var ropts = { - inputs: opts.inputs || $this.find('input').toArray() - }; - $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts)))); - } - else { - $this.data('datepicker', (data = new Datepicker(this, opts))); - } - } - if (typeof option === 'string' && typeof data[option] === 'function'){ - internal_return = data[option].apply(data, args); - if (internal_return !== undefined) - return false; - } - }); - if (internal_return !== undefined) - return internal_return; - else - return this; - }; - - var defaults = $.fn.datepicker.defaults = { - autoclose: false, - beforeShowDay: $.noop, - calendarWeeks: false, - clearBtn: false, - daysOfWeekDisabled: [], - endDate: Infinity, - forceParse: true, - format: 'mm/dd/yyyy', - keyboardNavigation: true, - language: 'en', - minViewMode: 0, - multidate: false, - multidateSeparator: ',', - orientation: "auto", - rtl: false, - startDate: -Infinity, - startView: 0, - todayBtn: false, - todayHighlight: false, - weekStart: 0 - }; - var locale_opts = $.fn.datepicker.locale_opts = [ - 'format', - 'rtl', - 'weekStart' - ]; - $.fn.datepicker.Constructor = Datepicker; - var dates = $.fn.datepicker.dates = { - en: { - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], - daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], - daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Today", - clear: "Clear" - } - }; - - var DPGlobal = { - modes: [ - { - clsName: 'days', - navFnc: 'Month', - navStep: 1 - }, - { - clsName: 'months', - navFnc: 'FullYear', - navStep: 1 - }, - { - clsName: 'years', - navFnc: 'FullYear', - navStep: 10 - }], - isLeapYear: function(year){ - return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); - }, - getDaysInMonth: function(year, month){ - return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; - }, - validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, - nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g, - parseFormat: function(format){ - // IE treats \0 as a string end in inputs (truncating the value), - // so it's a bad format delimiter, anyway - var separators = format.replace(this.validParts, '\0').split('\0'), - parts = format.match(this.validParts); - if (!separators || !separators.length || !parts || parts.length === 0){ - throw new Error("Invalid date format."); - } - return {separators: separators, parts: parts}; - }, - parseDate: function(date, format, language){ - if (!date) - return undefined; - if (date instanceof Date) - return date; - if (typeof format === 'string') - format = DPGlobal.parseFormat(format); - var part_re = /([\-+]\d+)([dmwy])/, - parts = date.match(/([\-+]\d+)([dmwy])/g), - part, dir, i; - if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){ - date = new Date(); - for (i=0; i < parts.length; i++){ - part = part_re.exec(parts[i]); - dir = parseInt(part[1]); - switch (part[2]){ - case 'd': - date.setUTCDate(date.getUTCDate() + dir); - break; - case 'm': - date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir); - break; - case 'w': - date.setUTCDate(date.getUTCDate() + dir * 7); - break; - case 'y': - date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir); - break; - } - } - return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0); - } - parts = date && date.match(this.nonpunctuation) || []; - date = new Date(); - var parsed = {}, - setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'], - setters_map = { - yyyy: function(d,v){ - return d.setUTCFullYear(v); - }, - yy: function(d,v){ - return d.setUTCFullYear(2000+v); - }, - m: function(d,v){ - if (isNaN(d)) - return d; - v -= 1; - while (v < 0) v += 12; - v %= 12; - d.setUTCMonth(v); - while (d.getUTCMonth() !== v) - d.setUTCDate(d.getUTCDate()-1); - return d; - }, - d: function(d,v){ - return d.setUTCDate(v); - } - }, - val, filtered; - setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; - setters_map['dd'] = setters_map['d']; - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); - var fparts = format.parts.slice(); - // Remove noop parts - if (parts.length !== fparts.length){ - fparts = $(fparts).filter(function(i,p){ - return $.inArray(p, setters_order) !== -1; - }).toArray(); - } - // Process remainder - function match_part(){ - var m = this.slice(0, parts[i].length), - p = parts[i].slice(0, m.length); - return m === p; - } - if (parts.length === fparts.length){ - var cnt; - for (i=0, cnt = fparts.length; i < cnt; i++){ - val = parseInt(parts[i], 10); - part = fparts[i]; - if (isNaN(val)){ - switch (part){ - case 'MM': - filtered = $(dates[language].months).filter(match_part); - val = $.inArray(filtered[0], dates[language].months) + 1; - break; - case 'M': - filtered = $(dates[language].monthsShort).filter(match_part); - val = $.inArray(filtered[0], dates[language].monthsShort) + 1; - break; - } - } - parsed[part] = val; - } - var _date, s; - for (i=0; i < setters_order.length; i++){ - s = setters_order[i]; - if (s in parsed && !isNaN(parsed[s])){ - _date = new Date(date); - setters_map[s](_date, parsed[s]); - if (!isNaN(_date)) - date = _date; - } - } - } - return date; - }, - formatDate: function(date, format, language){ - if (!date) - return ''; - if (typeof format === 'string') - format = DPGlobal.parseFormat(format); - var val = { - d: date.getUTCDate(), - D: dates[language].daysShort[date.getUTCDay()], - DD: dates[language].days[date.getUTCDay()], - m: date.getUTCMonth() + 1, - M: dates[language].monthsShort[date.getUTCMonth()], - MM: dates[language].months[date.getUTCMonth()], - yy: date.getUTCFullYear().toString().substring(2), - yyyy: date.getUTCFullYear() - }; - val.dd = (val.d < 10 ? '0' : '') + val.d; - val.mm = (val.m < 10 ? '0' : '') + val.m; - date = []; - var seps = $.extend([], format.separators); - for (var i=0, cnt = format.parts.length; i <= cnt; i++){ - if (seps.length) - date.push(seps.shift()); - date.push(val[format.parts[i]]); - } - return date.join(''); - }, - headTemplate: ''+ - ''+ - '«'+ - ''+ - '»'+ - ''+ - '', - contTemplate: '', - footTemplate: ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '' - }; - DPGlobal.template = '
'+ - '
'+ - ''+ - DPGlobal.headTemplate+ - ''+ - DPGlobal.footTemplate+ - '
'+ - '
'+ - '
'+ - ''+ - DPGlobal.headTemplate+ - DPGlobal.contTemplate+ - DPGlobal.footTemplate+ - '
'+ - '
'+ - '
'+ - ''+ - DPGlobal.headTemplate+ - DPGlobal.contTemplate+ - DPGlobal.footTemplate+ - '
'+ - '
'+ - '
'; - - $.fn.datepicker.DPGlobal = DPGlobal; - - - /* DATEPICKER NO CONFLICT - * =================== */ - - $.fn.datepicker.noConflict = function(){ - $.fn.datepicker = old; - return this; - }; - - - /* DATEPICKER DATA-API - * ================== */ - - $(document).on( - 'focus.datepicker.data-api click.datepicker.data-api', - '[data-provide="datepicker"]', - function(e){ - var $this = $(this); - if ($this.data('datepicker')) - return; - e.preventDefault(); - // component click requires us to explicitly show it - $this.datepicker('show'); - } - ); - $(function(){ - $('[data-provide="datepicker-inline"]').datepicker(); - }); - -}(window.jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js deleted file mode 100644 index 12ae182..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Arabic translation for bootstrap-datepicker - * Mohammed Alshehri - */ -;(function($){ - $.fn.datepicker.dates['ar'] = { - days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"], - daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"], - daysMin: ["ح", "ن", "ث", "ع", "خ", "ج", "س", "ح"], - months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"], - monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"], - today: "هذا اليوم", - rtl: true - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js deleted file mode 100644 index 0285341..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js +++ /dev/null @@ -1,12 +0,0 @@ -// Azerbaijani -;(function($){ - $.fn.datepicker.dates['az'] = { - days: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə", "Bazar"], - daysShort: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."], - daysMin: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."], - months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"], - monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek"], - today: "Bu gün", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js deleted file mode 100644 index 6837afd..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Bulgarian translation for bootstrap-datepicker - * Apostol Apostolov - */ -;(function($){ - $.fn.datepicker.dates['bg'] = { - days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"], - daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"], - daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"], - months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"], - monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"], - today: "днес" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js deleted file mode 100644 index 3fc4d84..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Catalan translation for bootstrap-datepicker - * J. Garcia - */ -;(function($){ - $.fn.datepicker.dates['ca'] = { - days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"], - daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"], - daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"], - months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"], - monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"], - today: "Avui" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js deleted file mode 100644 index f76a2c0..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Czech translation for bootstrap-datepicker - * Matěj Koubík - * Fixes by Michal Remiš - */ -;(function($){ - $.fn.datepicker.dates['cs'] = { - days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"], - daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"], - daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"], - months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"], - monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"], - today: "Dnes" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js deleted file mode 100644 index 7e1136a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Welsh translation for bootstrap-datepicker - * S. Morris - */ -;(function($){ - $.fn.datepicker.dates['cy'] = { - days: ["Sul", "Llun", "Mawrth", "Mercher", "Iau", "Gwener", "Sadwrn", "Sul"], - daysShort: ["Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad", "Sul"], - daysMin: ["Su", "Ll", "Ma", "Me", "Ia", "Gwe", "Sa", "Su"], - months: ["Ionawr", "Chewfror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorfennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"], - monthsShort: ["Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws", "Med", "Hyd", "Tach", "Rha"], - today: "Heddiw" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js deleted file mode 100644 index c3d702d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Danish translation for bootstrap-datepicker - * Christian Pedersen - */ -;(function($){ - $.fn.datepicker.dates['da'] = { - days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], - daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], - daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], - months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "I Dag", - clear: "Nulstil" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js deleted file mode 100644 index a27ba57..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * German translation for bootstrap-datepicker - * Sam Zurcher - */ -;(function($){ - $.fn.datepicker.dates['de'] = { - days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"], - daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"], - daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"], - months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], - monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], - today: "Heute", - clear: "Löschen", - weekStart: 1, - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js deleted file mode 100644 index 3b630f3..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Greek translation for bootstrap-datepicker - */ -;(function($){ - $.fn.datepicker.dates['el'] = { - days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"], - daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"], - daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"], - months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"], - monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"], - today: "Σήμερα" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js deleted file mode 100644 index 7217690..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Spanish translation for bootstrap-datepicker - * Bruno Bonamin - */ -;(function($){ - $.fn.datepicker.dates['es'] = { - days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"], - daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"], - daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"], - months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], - monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"], - today: "Hoy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js deleted file mode 100644 index 87c812e..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Estonian translation for bootstrap-datepicker - * Ando Roots - * Fixes by Illimar Tambek < - */ -;(function($){ - $.fn.datepicker.dates['et'] = { - days: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev", "Pühapäev"], - daysShort: ["Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup", "Pühap"], - daysMin: ["P", "E", "T", "K", "N", "R", "L", "P"], - months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"], - monthsShort: ["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"], - today: "Täna", - clear: "Tühjenda", - weekStart: 1, - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js deleted file mode 100644 index 6503c85..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Persian translation for bootstrap-datepicker - * Mostafa Rokooie - */ -;(function($){ - $.fn.datepicker.dates['fa'] = { - days: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"], - daysShort: ["یک", "دو", "سه", "چهار", "پنج", "جمعه", "شنبه", "یک"], - daysMin: ["ی", "د", "س", "چ", "پ", "ج", "ش", "ی"], - months: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"], - monthsShort: ["ژان", "فور", "مار", "آور", "مه", "ژون", "ژوی", "اوت", "سپت", "اکت", "نوا", "دسا"], - today: "امروز", - clear: "پاک کن", - weekStart: 1, - format: "yyyy/mm/dd" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js deleted file mode 100644 index 01f40dc..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Finnish translation for bootstrap-datepicker - * Jaakko Salonen - */ -;(function($){ - $.fn.datepicker.dates['fi'] = { - days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"], - daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"], - daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"], - months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], - monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"], - today: "tänään", - weekStart: 1, - format: "d.m.yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js deleted file mode 100644 index eff07aa..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * French translation for bootstrap-datepicker - * Nico Mollet - */ -;(function($){ - $.fn.datepicker.dates['fr'] = { - days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"], - daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"], - daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"], - months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], - monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"], - today: "Aujourd'hui", - clear: "Effacer", - weekStart: 1, - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js deleted file mode 100644 index 538fd5e..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js +++ /dev/null @@ -1,11 +0,0 @@ -;(function($){ - $.fn.datepicker.dates['gl'] = { - days: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado", "Domingo"], - daysShort: ["Dom", "Lun", "Mar", "Mér", "Xov", "Ven", "Sáb", "Dom"], - daysMin: ["Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa", "Do"], - months: ["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"], - monthsShort: ["Xan", "Feb", "Mar", "Abr", "Mai", "Xun", "Xul", "Ago", "Sep", "Out", "Nov", "Dec"], - today: "Hoxe", - clear: "Limpar" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js deleted file mode 100644 index 2e17393..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Hebrew translation for bootstrap-datepicker - * Sagie Maoz - */ -;(function($){ - $.fn.datepicker.dates['he'] = { - days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"], - daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], - daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], - months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], - monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"], - today: "היום", - rtl: true - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js deleted file mode 100644 index 655ea54..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Croatian localisation - */ -;(function($){ - $.fn.datepicker.dates['hr'] = { - days: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"], - daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", "Ned"], - daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"], - months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"], - monthsShort: ["Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"], - today: "Danas" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js deleted file mode 100644 index bf5308a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Hungarian translation for bootstrap-datepicker - * Sotus László - */ -;(function($){ - $.fn.datepicker.dates['hu'] = { - days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"], - daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"], - daysMin: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz", "Va"], - months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], - monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"], - today: "Ma", - weekStart: 1, - format: "yyyy.mm.dd" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js deleted file mode 100644 index aae6e89..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Bahasa translation for bootstrap-datepicker - * Azwar Akbar - */ -;(function($){ - $.fn.datepicker.dates['id'] = { - days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"], - daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"], - daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"], - months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"], - today: "Hari Ini", - clear: "Kosongkan" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js deleted file mode 100644 index 0e57a91..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Icelandic translation for bootstrap-datepicker - * Hinrik Örn Sigurðsson - */ -;(function($){ - $.fn.datepicker.dates['is'] = { - days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"], - daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"], - daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"], - months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"], - today: "Í Dag" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js deleted file mode 100644 index 9f476fa..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Italian translation for bootstrap-datepicker - * Enrico Rubboli - */ -;(function($){ - $.fn.datepicker.dates['it'] = { - days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"], - daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"], - daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"], - months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], - monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], - today: "Oggi", - clear: "Cancella", - weekStart: 1, - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js deleted file mode 100644 index ed0bc0f..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Japanese translation for bootstrap-datepicker - * Norio Suzuki - */ -;(function($){ - $.fn.datepicker.dates['ja'] = { - days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"], - daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"], - daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"], - months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], - monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], - today: "今日", - format: "yyyy/mm/dd" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js deleted file mode 100644 index 5434454..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Georgian translation for bootstrap-datepicker - * Levan Melikishvili - */ -;(function($){ - $.fn.datepicker.dates['ka'] = { - days: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი", "კვირა"], - daysShort: ["კვი", "ორშ", "სამ", "ოთხ", "ხუთ", "პარ", "შაბ", "კვი"], - daysMin: ["კვ", "ორ", "სა", "ოთ", "ხუ", "პა", "შა", "კვ"], - months: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომები", "ნოემბერი", "დეკემბერი"], - monthsShort: ["იან", "თებ", "მარ", "აპრ", "მაი", "ივნ", "ივლ", "აგვ", "სექ", "ოქტ", "ნოე", "დეკ"], - today: "დღეს", - clear: "გასუფთავება", - weekStart: 1, - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js deleted file mode 100644 index 94dd6b8..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Kazakh translation for bootstrap-datepicker - * Yerzhan Tolekov - */ -;(function($){ - $.fn.datepicker.dates['kk'] = { - days: ["Жексенбі", "Дүйсенбі", "Сейсенбі", "Сәрсенбі", "Бейсенбі", "Жұма", "Сенбі", "Жексенбі"], - daysShort: ["Жек", "Дүй", "Сей", "Сәр", "Бей", "Жұм", "Сен", "Жек"], - daysMin: ["Жк", "Дс", "Сс", "Ср", "Бс", "Жм", "Сн", "Жк"], - months: ["Қаңтар", "Ақпан", "Наурыз", "Сәуір", "Мамыр", "Маусым", "Шілде", "Тамыз", "Қыркүйек", "Қазан", "Қараша", "Желтоқсан"], - monthsShort: ["Қаң", "Ақп", "Нау", "Сәу", "Мамыр", "Мау", "Шлд", "Тмз", "Қыр", "Қзн", "Қар", "Жел"], - today: "Бүгін", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js deleted file mode 100644 index 183a88d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Korean translation for bootstrap-datepicker - * Gu Youn - */ -;(function($){ - $.fn.datepicker.dates['kr'] = { - days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"], - daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"], - daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"], - months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], - monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"] - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js deleted file mode 100644 index 11c1b3a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Lithuanian translation for bootstrap-datepicker - * Šarūnas Gliebus - */ - -;(function($){ - $.fn.datepicker.dates['lt'] = { - days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"], - daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"], - daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"], - months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"], - monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"], - today: "Šiandien", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js deleted file mode 100644 index 76d0f3a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Latvian translation for bootstrap-datepicker - * Artis Avotins - */ - -;(function($){ - $.fn.datepicker.dates['lv'] = { - days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"], - daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"], - daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "Se", "Sv"], - months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Šodien", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js deleted file mode 100644 index 0ab8cf6..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Macedonian translation for bootstrap-datepicker - * Marko Aleksic - */ -;(function($){ - $.fn.datepicker.dates['mk'] = { - days: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота", "Недела"], - daysShort: ["Нед", "Пон", "Вто", "Сре", "Чет", "Пет", "Саб", "Нед"], - daysMin: ["Не", "По", "Вт", "Ср", "Че", "Пе", "Са", "Не"], - months: ["Јануари", "Февруари", "Март", "Април", "Мај", "Јуни", "Јули", "Август", "Септември", "Октомври", "Ноември", "Декември"], - monthsShort: ["Јан", "Фев", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Ное", "Дек"], - today: "Денес", - format: "dd.mm.yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js deleted file mode 100644 index fa3a21a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Malay translation for bootstrap-datepicker - * Ateman Faiz - */ -;(function($){ - $.fn.datepicker.dates['ms'] = { - days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"], - daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"], - daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"], - months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"], - today: "Hari Ini" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js deleted file mode 100644 index 7b28e84..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Norwegian (bokmål) translation for bootstrap-datepicker - * Fredrik Sundmyhr - */ -;(function($){ - $.fn.datepicker.dates['nb'] = { - days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], - daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], - daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], - months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], - today: "I Dag" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js deleted file mode 100644 index ee4201a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Belgium-Dutch translation for bootstrap-datepicker - * Julien Poulin - */ -;(function($){ - $.fn.datepicker.dates['nl-BE'] = { - days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"], - daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Vandaag", - clear: "Leegmaken", - weekStart: 1, - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js deleted file mode 100644 index 13a2f1a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Dutch translation for bootstrap-datepicker - * Reinier Goltstein - */ -;(function($){ - $.fn.datepicker.dates['nl'] = { - days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"], - daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], - months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Vandaag" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js deleted file mode 100644 index c29ec83..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Norwegian translation for bootstrap-datepicker - **/ -;(function($){ - $.fn.datepicker.dates['no'] = { - days: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], - daysShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], - daysMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], - months: ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'], - monthsShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Des'], - today: 'I dag', - clear: 'Nullstill', - weekStart: 1, - format: 'dd.mm.yyyy' - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js deleted file mode 100644 index f3fff8c..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Polish translation for bootstrap-datepicker - * Robert - */ -;(function($){ - $.fn.datepicker.dates['pl'] = { - days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], - daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"], - daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"], - months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], - monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"], - today: "Dzisiaj", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js deleted file mode 100644 index eb642b7..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Brazilian translation for bootstrap-datepicker - * Cauan Cabral - */ -;(function($){ - $.fn.datepicker.dates['pt-BR'] = { - days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], - daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], - daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], - months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], - monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], - today: "Hoje", - clear: "Limpar" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js deleted file mode 100644 index e54981d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Portuguese translation for bootstrap-datepicker - * Original code: Cauan Cabral - * Tiago Melo - */ -;(function($){ - $.fn.datepicker.dates['pt'] = { - days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], - daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], - daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], - months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], - monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], - today: "Hoje", - clear: "Limpar" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js deleted file mode 100644 index e1e65df..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Romanian translation for bootstrap-datepicker - * Cristian Vasile - */ -;(function($){ - $.fn.datepicker.dates['ro'] = { - days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"], - daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"], - daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"], - months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"], - monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Astăzi", - clear: "Șterge", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js deleted file mode 100644 index d942485..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Serbian latin translation for bootstrap-datepicker - * Bojan Milosavlević - */ -;(function($){ - $.fn.datepicker.dates['rs-latin'] = { - days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"], - daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"], - daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"], - months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], - today: "Danas" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js deleted file mode 100644 index 6b65747..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Serbian cyrillic translation for bootstrap-datepicker - * Bojan Milosavlević - */ -;(function($){ - $.fn.datepicker.dates['rs'] = { - days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"], - daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"], - daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"], - months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"], - monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"], - today: "Данас" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js deleted file mode 100644 index e230aa9..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Russian translation for bootstrap-datepicker - * Victor Taranenko - */ -;(function($){ - $.fn.datepicker.dates['ru'] = { - days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"], - daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"], - daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"], - months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], - monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"], - today: "Сегодня", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js deleted file mode 100644 index c48032a..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Slovak translation for bootstrap-datepicker - * Marek Lichtner - * Fixes by Michal Remiš - */ -;(function($){ - $.fn.datepicker.dates["sk"] = { - days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota", "Nedeľa"], - daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob", "Ned"], - daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So", "Ne"], - months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Dnes" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js deleted file mode 100644 index 41b0e06..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Slovene translation for bootstrap-datepicker - * Gregor Rudolf - */ -;(function($){ - $.fn.datepicker.dates['sl'] = { - days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"], - daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"], - daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"], - months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], - today: "Danes" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js deleted file mode 100644 index a045a9d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Albanian translation for bootstrap-datepicker - * Tomor Pupovci - */ -;(function($){ - $.fn.datepicker.dates['sq'] = { - days: ["E Diel", "E Hënë", "E martē", "E mërkurë", "E Enjte", "E Premte", "E Shtunë", "E Diel"], - daysShort: ["Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu", "Die"], - daysMin: ["Di", "Hë", "Ma", "Më", "En", "Pr", "Sht", "Di"], - months: ["Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"], - monthsShort: ["Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Korr", "Gu", "Sht", "Tet", "Nën", "Dhjet"], - today: "Sot" - }; -}(jQuery)); - diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js deleted file mode 100644 index 029cea0..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Swedish translation for bootstrap-datepicker - * Patrik Ragnarsson - */ -;(function($){ - $.fn.datepicker.dates['sv'] = { - days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"], - daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"], - daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"], - months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], - today: "Idag", - format: "yyyy-mm-dd", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js deleted file mode 100644 index 622e0ef..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swahili translation for bootstrap-datepicker - * Edwin Mugendi - * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku - */ -;(function($){ - $.fn.datepicker.dates['sw'] = { - days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili"], - daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1", "J2"], - daysMin: ["2", "3", "4", "5", "A", "I", "1", "2"], - months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"], - monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"], - today: "Leo" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js deleted file mode 100644 index 562b063..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Thai translation for bootstrap-datepicker - * Suchau Jiraprapot - */ -;(function($){ - $.fn.datepicker.dates['th'] = { - days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"], - daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], - daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], - months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"], - monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."], - today: "วันนี้" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js deleted file mode 100644 index 2be8b6d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Turkish translation for bootstrap-datepicker - * Serkan Algur - */ -;(function($){ - $.fn.datepicker.dates['tr'] = { - days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"], - daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"], - daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"], - months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"], - monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"], - today: "Bugün", - format: "dd.mm.yyyy" - }; -}(jQuery)); - diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ua.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ua.js deleted file mode 100644 index d4bb0f0..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ua.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Ukrainian translation for bootstrap-datepicker - * Igor Polynets - */ -;(function($){ - $.fn.datepicker.dates['ua'] = { - days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятница", "Субота", "Неділя"], - daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"], - daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"], - months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], - monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"], - today: "Сьогодні", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js deleted file mode 100644 index a8cc52e..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Vietnamese translation for bootstrap-datepicker - * An Vo - */ -;(function($){ - $.fn.datepicker.dates['vi'] = { - days: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy", "Chủ nhật"], - daysShort: ["CN", "Thứ 2", "Thứ 3", "Thứ 4", "Thứ 5", "Thứ 6", "Thứ 7", "CN"], - daysMin: ["CN", "T2", "T3", "T4", "T5", "T6", "T7", "CN"], - months: ["Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"], - monthsShort: ["Th1", "Th2", "Th3", "Th4", "Th5", "Th6", "Th7", "Th8", "Th9", "Th10", "Th11", "Th12"], - today: "Hôm nay", - clear: "Xóa", - format: "dd/mm/yyyy" - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js deleted file mode 100644 index d6625ec..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Simplified Chinese translation for bootstrap-datepicker - * Yuan Cheung - */ -;(function($){ - $.fn.datepicker.dates['zh-CN'] = { - days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], - daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], - daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], - months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - today: "今日", - format: "yyyy年mm月dd日", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js b/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js deleted file mode 100644 index 53337ae..0000000 --- a/static/app/bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Traditional Chinese translation for bootstrap-datepicker - * Rung-Sheng Jang - * FrankWu Fix more appropriate use of Traditional Chinese habit - */ -;(function($){ - $.fn.datepicker.dates['zh-TW'] = { - days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], - daysShort: ["週日", "週一", "週二", "週三", "週四", "週五", "週六", "週日"], - daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], - months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], - today: "今天", - format: "yyyy年mm月dd日", - weekStart: 1 - }; -}(jQuery)); diff --git a/static/app/bower_components/bootstrap-datepicker/less/datepicker.less b/static/app/bower_components/bootstrap-datepicker/less/datepicker.less deleted file mode 100644 index 003e957..0000000 --- a/static/app/bower_components/bootstrap-datepicker/less/datepicker.less +++ /dev/null @@ -1,257 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ - -.datepicker { - padding: 4px; - .border-radius(4px); - &-inline { - width: 220px; - } - direction: ltr; - &&-rtl { - direction: rtl; - table tr td span { - float: right; - } - } - &-dropdown { - top: 0; - left: 0; - &:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0,0,0,.2); - position: absolute; - } - &:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid @white; - border-top: 0; - position: absolute; - } - &.datepicker-orient-left:before { left: 6px; } - &.datepicker-orient-left:after { left: 7px; } - &.datepicker-orient-right:before { right: 6px; } - &.datepicker-orient-right:after { right: 7px; } - &.datepicker-orient-top:before { top: -7px; } - &.datepicker-orient-top:after { top: -6px; } - &.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; - } - &.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid @white; - } - } - >div { - display: none; - } - &.days div.datepicker-days { - display: block; - } - &.months div.datepicker-months { - display: block; - } - &.years div.datepicker-years { - display: block; - } - table{ - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - td, - th{ - text-align: center; - width: 20px; - height: 20px; - .border-radius(4px); - - border: none; - } - // Inline display inside a table presents some problems with - // border and background colors. - .table-striped & table tr { - td, th { - background-color:transparent; - } - } - table tr td { - &.day:hover, &.day.focused { - background: @grayLighter; - cursor: pointer; - } - &.old, - &.new { - color: @grayLight; - } - &.disabled, - &.disabled:hover { - background: none; - color: @grayLight; - cursor: default; - } - &.today, - &.today:hover, - &.today.disabled, - &.today.disabled:hover { - @todayBackground: lighten(@orange, 30%); - .buttonBackground(@todayBackground, spin(@todayBackground, 20)); - color: #000; - } - &.today:hover:hover { // Thank bootstrap 2.0 for this selector... - // TODO: Bump min BS to 2.1, use @textColor in buttonBackground above - color: #000; - } - &.today.active:hover { - color: #fff; - } - &.range, - &.range:hover, - &.range.disabled, - &.range.disabled:hover { - background:@grayLighter; - .border-radius(0); - } - &.range.today, - &.range.today:hover, - &.range.today.disabled, - &.range.today.disabled:hover { - @todayBackground: mix(@orange, @grayLighter, 50%); - .buttonBackground(@todayBackground, spin(@todayBackground, 20)); - .border-radius(0); - } - &.selected, - &.selected:hover, - &.selected.disabled, - &.selected.disabled:hover { - .buttonBackground(lighten(@grayLight, 10), darken(@grayLight, 10)); - color: #fff; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - &.active, - &.active:hover, - &.active.disabled, - &.active.disabled:hover { - .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20)); - color: #fff; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - .border-radius(4px); - &:hover { - background: @grayLighter; - } - &.disabled, - &.disabled:hover { - background:none; - color: @grayLight; - cursor: default; - } - &.active, - &.active:hover, - &.active.disabled, - &.active.disabled:hover { - .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20)); - color: #fff; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - &.old, - &.new { - color: @grayLight; - } - } - } - - th.datepicker-switch { - width: 145px; - } - - thead tr:first-child th, - tfoot tr th { - cursor: pointer; - &:hover{ - background: @grayLighter; - } - } - /*.dow { - border-top: 1px solid #ddd !important; - }*/ - - // Basic styling for calendar-week cells - .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; - } - thead tr:first-child th.cw { - cursor: default; - background-color: transparent; - } -} -.input-append, -.input-prepend { - &.date { - .add-on i { - cursor: pointer; - width: 16px; - height: 16px; - } - } -} -.input-daterange { - input { - text-align:center; - } - input:first-child { - .border-radius(3px 0 0 3px); - } - input:last-child { - .border-radius(0 3px 3px 0); - } - .add-on { - display: inline-block; - width: auto; - min-width: 16px; - height: @baseLineHeight; - padding: 4px 5px; - font-weight: normal; - line-height: @baseLineHeight; - text-align: center; - text-shadow: 0 1px 0 @white; - vertical-align: middle; - background-color: @grayLighter; - border: 1px solid #ccc; - margin-left:-5px; - margin-right:-5px; - } -} diff --git a/static/app/bower_components/bootstrap-datepicker/less/datepicker3.less b/static/app/bower_components/bootstrap-datepicker/less/datepicker3.less deleted file mode 100644 index 90d633b..0000000 --- a/static/app/bower_components/bootstrap-datepicker/less/datepicker3.less +++ /dev/null @@ -1,252 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ - -.datepicker { - padding: 4px; - border-radius: 4px; - &-inline { - width: 220px; - } - direction: ltr; - &&-rtl { - direction: rtl; - table tr td span { - float: right; - } - } - &-dropdown { - top: 0; - left: 0; - &:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0,0,0,.2); - position: absolute; - } - &:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-top: 0; - position: absolute; - } - &.datepicker-orient-left:before { left: 6px; } - &.datepicker-orient-left:after { left: 7px; } - &.datepicker-orient-right:before { right: 6px; } - &.datepicker-orient-right:after { right: 7px; } - &.datepicker-orient-top:before { top: -7px; } - &.datepicker-orient-top:after { top: -6px; } - &.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; - } - &.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #fff; - } - } - >div { - display: none; - } - &.days div.datepicker-days { - display: block; - } - &.months div.datepicker-months { - display: block; - } - &.years div.datepicker-years { - display: block; - } - table{ - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - tr { - td, th { - text-align: center; - width: 30px; - height: 30px; - border-radius: 4px; - - border: none; - } - } - } - // Inline display inside a table presents some problems with - // border and background colors. - .table-striped & table tr { - td, th { - background-color:transparent; - } - } - table tr td { - &.day:hover, &.day.focused { - background: @gray-lighter; - cursor: pointer; - } - &.old, - &.new { - color: @btn-link-disabled-color; - } - &.disabled, - &.disabled:hover { - background: none; - color: @btn-link-disabled-color; - cursor: default; - } - &.today, - &.today:hover, - &.today.disabled, - &.today.disabled:hover { - @today-bg: lighten(orange, 30%); - .button-variant(#000, @today-bg, darken(@today-bg, 20%)); - } - &.today:hover:hover { // Thank bootstrap 2.0 for this selector... - // TODO: Bump min BS to 2.1, use @textColor in buttonBackground above - color: #000; - } - &.today.active:hover { - color: #fff; - } - &.range, - &.range:hover, - &.range.disabled, - &.range.disabled:hover { - background:@gray-lighter; - border-radius: 0; - } - &.range.today, - &.range.today:hover, - &.range.today.disabled, - &.range.today.disabled:hover { - @today-bg: mix(orange, @gray-lighter, 50%); - .button-variant(#000, @today-bg, darken(@today-bg, 20%)); - border-radius: 0; - } - &.selected, - &.selected:hover, - &.selected.disabled, - &.selected.disabled:hover { - .button-variant(#fff, @gray-light, @gray); - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - &.active, - &.active:hover, - &.active.disabled, - &.active.disabled:hover { - .button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border); - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - border-radius: 4px; - &:hover { - background: @gray-lighter; - } - &.disabled, - &.disabled:hover { - background: none; - color: @btn-link-disabled-color; - cursor: default; - } - &.active, - &.active:hover, - &.active.disabled, - &.active.disabled:hover { - .button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border); - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - &.old, - &.new { - color: @btn-link-disabled-color; - } - } - } - - th.datepicker-switch { - width: 145px; - } - - thead tr:first-child th, - tfoot tr th { - cursor: pointer; - &:hover{ - background: @gray-lighter; - } - } - /*.dow { - border-top: 1px solid #ddd !important; - }*/ - - // Basic styling for calendar-week cells - .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; - } - thead tr:first-child th.cw { - cursor: default; - background-color: transparent; - } -} -.input-group { - &.date { - .input-group-addon i { - cursor: pointer; - width: 16px; - height: 16px; - } - } -} -.input-daterange { - input { - text-align:center; - } - input:first-child { - border-radius: 3px 0 0 3px; - } - input:last-child { - border-radius: 0 3px 3px 0; - } - .input-group-addon { - width: auto; - min-width: 16px; - padding: 4px 5px; - font-weight: normal; - line-height: @line-height-base; - text-align: center; - text-shadow: 0 1px 0 #fff; - vertical-align: middle; - background-color: @input-group-addon-bg; - border: solid @input-group-addon-border-color; - border-width: 1px 0; - margin-left:-5px; - margin-right:-5px; - } -} diff --git a/static/app/bower_components/bootstrap-datepicker/tests/README.md b/static/app/bower_components/bootstrap-datepicker/tests/README.md deleted file mode 100644 index 6f48f2b..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/README.md +++ /dev/null @@ -1,55 +0,0 @@ -Unit tests, written with [QUnit](http://docs.jquery.com/QUnit), are used to -expose bugs for squashing, prevent bugs from respawning, and suppress new -bugs when adding new features and making changes. - -# Running the tests - -The simplest way to run the tests is to open `tests/tests.html` in your browser. -The test suites will automatically run themselves and present their results. - -To run the tests from the command line, download and install -[PhantomJS](http://phantomjs.org/), and run `run-qunit.js` with it: - - $ cd tests/ - $ phantomjs run-qunit.js tests.html - -Failed tests and their failed assertions will be printed to the console. A -results summary will be printed at the end. - -To generate coverage statistics, use [JSCoverage](http://siliconforks.com/jscoverage/) -to instrument the js files: - - $ cd tests/ - $ jscoverage ../js/ ../instrumented/ - $ phantomjs run-qunit.js tests.html - -Coverage percentage will be included in the output summary, and a highlighted -line-by-line html file will be generated. - -# Shout-out - -Thanks to Rod @ While One Fork for the -[CIS guide](http://whileonefork.blogspot.com/2011/10/integrating-javascript-tests-into-cli.html) -on putting the above together. - -# Adding tests - -Tests go in js files in the `tests/suites/` directory tree. QUnit organizes -tests into suites called "modules"; there is one module per js file. If the -tests you are adding do not fit into an existing module, create a new one at -`tests/suites/.js`, where `` is a broad yet -descriptive name for the suite. If tests have many year-specific cases (ie, -behave differently in leap years vs normal years, or have specific buggy -behavior in a certain year), create the module in a new directory, -`tests/suites//.js`, where `` is the decriptive -name and `` is the four-digit year the tests pertain to. - -In order for new tests to be run, they must be imported into `tests/tests.html`. -Find the script includes headed by the html comment ``, and -add a new one to the list which includes the new js files. - -# Can I use this? - -By all means, please do! Just note that I stopped working on this structure -once it fit my needs, there's no real support for it, and it may change in the -future. Otherwise, have at it. diff --git a/static/app/bower_components/bootstrap-datepicker/tests/_coverage.html b/static/app/bower_components/bootstrap-datepicker/tests/_coverage.html deleted file mode 100644 index 33d838d..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/_coverage.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - -COLORIZED_LINE_HTML - - - - diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/coverage.js b/static/app/bower_components/bootstrap-datepicker/tests/assets/coverage.js deleted file mode 100644 index 2e5704b..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/coverage.js +++ /dev/null @@ -1,48 +0,0 @@ -(function(){ - //we want this at global scope so outside callers can find it. In a more realistic implementation we - //should probably put it in a namespace. - window.getCoverageByLine = function(silent) { - var key = null; - var lines = null; - var source = null; - //look for code coverage data - if (typeof window._$jscoverage === 'object') { - for (key in _$jscoverage) {} - lines = _$jscoverage[key]; - } - - if (!lines && !silent) { - console.log('code coverage data is NOT available'); - } - - return { 'key': key, 'lines': lines }; - }; - - QUnit.done = function(t) { - var cvgInfo = getCoverageByLine(true); - if (!!cvgInfo.key) { - var testableLines = 0; - var testedLines = 0; - var untestableLines = 0; - for (lineIdx in cvgInfo.lines) { - var cvg = cvgInfo.lines[lineIdx]; - if (typeof cvg === 'number') { - testableLines += 1; - if (cvg > 0) { - testedLines += 1; - } - } else { - untestableLines += 1; - } - } - var coverage = '' + Math.floor(100 * testedLines / testableLines) + '%'; - - var result = document.getElementById('qunit-testresult'); - if (result != null) { - result.innerHTML = result.innerHTML + ' ' + coverage + ' test coverage of ' + cvgInfo.key; - } else { - console.log('can\'t find test-result element to update'); - } - } - }; -}()); \ No newline at end of file diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/jquery-1.7.1.min.js b/static/app/bower_components/bootstrap-datepicker/tests/assets/jquery-1.7.1.min.js deleted file mode 100644 index 198b3ff..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/jquery-1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/mock.js b/static/app/bower_components/bootstrap-datepicker/tests/assets/mock.js deleted file mode 100644 index b1d1340..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/mock.js +++ /dev/null @@ -1,26 +0,0 @@ -;(function(){ - -window.patch_date = function patch(f){ - var NativeDate = window.Date; - var date = function date(y,m,d,h,i,s,j){ - switch(arguments.length){ - case 0: return date.now ? new NativeDate(date.now) : new NativeDate(); - case 1: return new NativeDate(y); - case 2: return new NativeDate(y,m); - case 3: return new NativeDate(y,m,d); - case 4: return new NativeDate(y,m,d,h); - case 5: return new NativeDate(y,m,d,h,i); - case 6: return new NativeDate(y,m,d,h,i,s); - case 7: return new NativeDate(y,y,m,d,h,i,s,j); - } - }; - date.UTC = NativeDate.UTC; - return function(){ - Array.prototype.push.call(arguments, date); - window.Date = date; - res = f.apply(this, arguments); - window.Date = NativeDate; - } -} - -}()); \ No newline at end of file diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit-logging.js b/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit-logging.js deleted file mode 100644 index 5bef1a5..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit-logging.js +++ /dev/null @@ -1,29 +0,0 @@ -// Dummy logging calls (ie, if tests are run in IE) -window.console = window.console || {}; -window.console.log = window.console.log || function(){}; -window.console.debug = window.console.debug || function(){}; -window.console.info = window.console.info || function(){}; -window.console.warn = window.console.warn || function(){}; -window.console.error = window.console.error || function(){}; - -(function() { - var modName, testName; - - //arg: { name } - QUnit.testStart = function(t) { - modName = t.module; - testName = t.name; - }; - - //arg: { name, failed, passed, total } - QUnit.testDone = function(t) { - if (t.failed) - console.log('Test "' + t.module + ': ' + t.name + '" completed: ' + (0 === t.failed ? 'pass' : 'FAIL') + '\n') - }; - - //{ result, actual, expected, message } - QUnit.log = function(t) { - if (!t.result) - console.log('Test "' + modName + ': ' + testName + '" assertion failed. Expected <' + t.expected + '> Actual <' + t.actual + '>' + (t.message ? ': \'' + t.message + '\'' : '')); - }; -}()); diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.css b/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.css deleted file mode 100644 index b948bae..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.css +++ /dev/null @@ -1,235 +0,0 @@ -/** - * QUnit v1.5.0 - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2012 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - */ - -/** Font Family and Sizes */ - -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; -} - -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } -#qunit-tests { font-size: smaller; } - - -/** Resets */ - -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { - margin: 0; - padding: 0; -} - - -/** Header */ - -#qunit-header { - padding: 0.5em 0 0.5em 1em; - - color: #8699a4; - background-color: #0d3349; - - font-size: 1.5em; - line-height: 1em; - font-weight: normal; - - border-radius: 15px 15px 0 0; - -moz-border-radius: 15px 15px 0 0; - -webkit-border-top-right-radius: 15px; - -webkit-border-top-left-radius: 15px; -} - -#qunit-header a { - text-decoration: none; - color: #c2ccd1; -} - -#qunit-header a:hover, -#qunit-header a:focus { - color: #fff; -} - -#qunit-header label { - display: inline-block; -} - -#qunit-banner { - height: 5px; -} - -#qunit-testrunner-toolbar { - padding: 0.5em 0 0.5em 2em; - color: #5E740B; - background-color: #eee; -} - -#qunit-userAgent { - padding: 0.5em 0 0.5em 2.5em; - background-color: #2b81af; - color: #fff; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} - - -/** Tests: Pass/Fail */ - -#qunit-tests { - list-style-position: inside; -} - -#qunit-tests li { - padding: 0.4em 0.5em 0.4em 2.5em; - border-bottom: 1px solid #fff; - list-style-position: inside; -} - -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { - display: none; -} - -#qunit-tests li strong { - cursor: pointer; -} - -#qunit-tests li a { - padding: 0.5em; - color: #c2ccd1; - text-decoration: none; -} -#qunit-tests li a:hover, -#qunit-tests li a:focus { - color: #000; -} - -#qunit-tests ol { - margin-top: 0.5em; - padding: 0.5em; - - background-color: #fff; - - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - - box-shadow: inset 0px 2px 13px #999; - -moz-box-shadow: inset 0px 2px 13px #999; - -webkit-box-shadow: inset 0px 2px 13px #999; -} - -#qunit-tests table { - border-collapse: collapse; - margin-top: .2em; -} - -#qunit-tests th { - text-align: right; - vertical-align: top; - padding: 0 .5em 0 0; -} - -#qunit-tests td { - vertical-align: top; -} - -#qunit-tests pre { - margin: 0; - white-space: pre-wrap; - word-wrap: break-word; -} - -#qunit-tests del { - background-color: #e0f2be; - color: #374e0c; - text-decoration: none; -} - -#qunit-tests ins { - background-color: #ffcaca; - color: #500; - text-decoration: none; -} - -/*** Test Counts */ - -#qunit-tests b.counts { color: black; } -#qunit-tests b.passed { color: #5E740B; } -#qunit-tests b.failed { color: #710909; } - -#qunit-tests li li { - margin: 0.5em; - padding: 0.4em 0.5em 0.4em 0.5em; - background-color: #fff; - border-bottom: none; - list-style-position: inside; -} - -/*** Passing Styles */ - -#qunit-tests li li.pass { - color: #5E740B; - background-color: #fff; - border-left: 26px solid #C6E746; -} - -#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } -#qunit-tests .pass .test-name { color: #366097; } - -#qunit-tests .pass .test-actual, -#qunit-tests .pass .test-expected { color: #999999; } - -#qunit-banner.qunit-pass { background-color: #C6E746; } - -/*** Failing Styles */ - -#qunit-tests li li.fail { - color: #710909; - background-color: #fff; - border-left: 26px solid #EE5757; - white-space: pre; -} - -#qunit-tests > li:last-child { - border-radius: 0 0 15px 15px; - -moz-border-radius: 0 0 15px 15px; - -webkit-border-bottom-right-radius: 15px; - -webkit-border-bottom-left-radius: 15px; -} - -#qunit-tests .fail { color: #000000; background-color: #EE5757; } -#qunit-tests .fail .test-name, -#qunit-tests .fail .module-name { color: #000000; } - -#qunit-tests .fail .test-actual { color: #EE5757; } -#qunit-tests .fail .test-expected { color: green; } - -#qunit-banner.qunit-fail { background-color: #EE5757; } - - -/** Result */ - -#qunit-testresult { - padding: 0.5em 0.5em 0.5em 2.5em; - - color: #2b81af; - background-color: #D2E0E6; - - border-bottom: 1px solid white; -} -#qunit-testresult .module-name { - font-weight: bold; -} - -/** Fixture */ - -#qunit-fixture { - position: absolute; - top: -10000px; - left: -10000px; - width: 1000px; - height: 1000px; -} diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.js b/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.js deleted file mode 100644 index 66dd721..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/qunit.js +++ /dev/null @@ -1,1669 +0,0 @@ -/** - * QUnit v1.5.0 - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2012 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - */ - -(function(window) { - -var defined = { - setTimeout: typeof window.setTimeout !== "undefined", - sessionStorage: (function() { - var x = "qunit-test-string"; - try { - sessionStorage.setItem(x, x); - sessionStorage.removeItem(x); - return true; - } catch(e) { - return false; - } - }()) -}; - -var testId = 0, - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty; - -var Test = function(name, testName, expected, async, callback) { - this.name = name; - this.testName = testName; - this.expected = expected; - this.async = async; - this.callback = callback; - this.assertions = []; -}; -Test.prototype = { - init: function() { - var tests = id("qunit-tests"); - if (tests) { - var b = document.createElement("strong"); - b.innerHTML = "Running " + this.name; - var li = document.createElement("li"); - li.appendChild( b ); - li.className = "running"; - li.id = this.id = "test-output" + testId++; - tests.appendChild( li ); - } - }, - setup: function() { - if (this.module != config.previousModule) { - if ( config.previousModule ) { - runLoggingCallbacks('moduleDone', QUnit, { - name: config.previousModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - config.previousModule = this.module; - config.moduleStats = { all: 0, bad: 0 }; - runLoggingCallbacks( 'moduleStart', QUnit, { - name: this.module - } ); - } else if (config.autorun) { - runLoggingCallbacks( 'moduleStart', QUnit, { - name: this.module - } ); - } - - config.current = this; - this.testEnvironment = extend({ - setup: function() {}, - teardown: function() {} - }, this.moduleTestEnvironment); - - runLoggingCallbacks( 'testStart', QUnit, { - name: this.testName, - module: this.module - }); - - // allow utility functions to access the current test environment - // TODO why?? - QUnit.current_testEnvironment = this.testEnvironment; - - if ( !config.pollution ) { - saveGlobal(); - } - if ( config.notrycatch ) { - this.testEnvironment.setup.call(this.testEnvironment); - return; - } - try { - this.testEnvironment.setup.call(this.testEnvironment); - } catch(e) { - QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) ); - } - }, - run: function() { - config.current = this; - - var running = id("qunit-testresult"); - - if ( running ) { - running.innerHTML = "Running:
" + this.name; - } - - if ( this.async ) { - QUnit.stop(); - } - - if ( config.notrycatch ) { - this.callback.call(this.testEnvironment); - return; - } - try { - this.callback.call(this.testEnvironment); - } catch(e) { - QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + ": " + e.message, extractStacktrace( e, 1 ) ); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if ( config.blocking ) { - QUnit.start(); - } - } - }, - teardown: function() { - config.current = this; - if ( config.notrycatch ) { - this.testEnvironment.teardown.call(this.testEnvironment); - return; - } else { - try { - this.testEnvironment.teardown.call(this.testEnvironment); - } catch(e) { - QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) ); - } - } - checkPollution(); - }, - finish: function() { - config.current = this; - if ( this.expected != null && this.expected != this.assertions.length ) { - QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" ); - } else if ( this.expected == null && !this.assertions.length ) { - QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions." ); - } - - var good = 0, bad = 0, - li, i, - tests = id("qunit-tests"); - - config.stats.all += this.assertions.length; - config.moduleStats.all += this.assertions.length; - - if ( tests ) { - var ol = document.createElement("ol"); - - for ( i = 0; i < this.assertions.length; i++ ) { - var assertion = this.assertions[i]; - - li = document.createElement("li"); - li.className = assertion.result ? "pass" : "fail"; - li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed"); - ol.appendChild( li ); - - if ( assertion.result ) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - // store result when possible - if ( QUnit.config.reorder && defined.sessionStorage ) { - if (bad) { - sessionStorage.setItem("qunit-test-" + this.module + "-" + this.testName, bad); - } else { - sessionStorage.removeItem("qunit-test-" + this.module + "-" + this.testName); - } - } - - if (bad === 0) { - ol.style.display = "none"; - } - - var b = document.createElement("strong"); - b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; - - var a = document.createElement("a"); - a.innerHTML = "Rerun"; - a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - - addEvent(b, "click", function() { - var next = b.nextSibling.nextSibling, - display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function(e) { - var target = e && e.target ? e.target : window.event.srcElement; - if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { - target = target.parentNode; - } - if ( window.location && target.nodeName.toLowerCase() === "strong" ) { - window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - } - }); - - li = id(this.id); - li.className = bad ? "fail" : "pass"; - li.removeChild( li.firstChild ); - li.appendChild( b ); - li.appendChild( a ); - li.appendChild( ol ); - - } else { - for ( i = 0; i < this.assertions.length; i++ ) { - if ( !this.assertions[i].result ) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - QUnit.reset(); - - runLoggingCallbacks( 'testDone', QUnit, { - name: this.testName, - module: this.module, - failed: bad, - passed: this.assertions.length - bad, - total: this.assertions.length - } ); - }, - - queue: function() { - var test = this; - synchronize(function() { - test.init(); - }); - function run() { - // each of these can by async - synchronize(function() { - test.setup(); - }); - synchronize(function() { - test.run(); - }); - synchronize(function() { - test.teardown(); - }); - synchronize(function() { - test.finish(); - }); - } - // defer when previous test run passed, if storage is available - var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-test-" + this.module + "-" + this.testName); - if (bad) { - run(); - } else { - synchronize(run, true); - } - } - -}; - -var QUnit = { - - // call on start of module test to prepend name to all tests - module: function(name, testEnvironment) { - config.currentModule = name; - config.currentModuleTestEnviroment = testEnvironment; - }, - - asyncTest: function(testName, expected, callback) { - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - - QUnit.test(testName, expected, callback, true); - }, - - test: function(testName, expected, callback, async) { - var name = '' + escapeInnerText(testName) + ''; - - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - - if ( config.currentModule ) { - name = '' + config.currentModule + ": " + name; - } - - if ( !validTest(config.currentModule + ": " + testName) ) { - return; - } - - var test = new Test(name, testName, expected, async, callback); - test.module = config.currentModule; - test.moduleTestEnvironment = config.currentModuleTestEnviroment; - test.queue(); - }, - - // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - expect: function(asserts) { - config.current.expected = asserts; - }, - - // Asserts true. - // @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - ok: function(result, msg) { - if (!config.current) { - throw new Error("ok() assertion outside test context, was " + sourceFromStacktrace(2)); - } - result = !!result; - var details = { - result: result, - message: msg - }; - msg = escapeInnerText(msg || (result ? "okay" : "failed")); - if ( !result ) { - var source = sourceFromStacktrace(2); - if (source) { - details.source = source; - msg += '
Source:
' + escapeInnerText(source) + '
'; - } - } - runLoggingCallbacks( 'log', QUnit, details ); - config.current.assertions.push({ - result: result, - message: msg - }); - }, - - // Checks that the first two arguments are equal, with an optional message. Prints out both actual and expected values. - // @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); - equal: function(actual, expected, message) { - QUnit.push(expected == actual, actual, expected, message); - }, - - notEqual: function(actual, expected, message) { - QUnit.push(expected != actual, actual, expected, message); - }, - - deepEqual: function(actual, expected, message) { - QUnit.push(QUnit.equiv(actual, expected), actual, expected, message); - }, - - notDeepEqual: function(actual, expected, message) { - QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message); - }, - - strictEqual: function(actual, expected, message) { - QUnit.push(expected === actual, actual, expected, message); - }, - - notStrictEqual: function(actual, expected, message) { - QUnit.push(expected !== actual, actual, expected, message); - }, - - raises: function(block, expected, message) { - var actual, ok = false; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block.call(config.current.testEnvironment); - } catch (e) { - actual = e; - } - - if (actual) { - // we don't want to validate thrown error - if (!expected) { - ok = true; - // expected is a regexp - } else if (QUnit.objectType(expected) === "regexp") { - ok = expected.test(actual); - // expected is a constructor - } else if (actual instanceof expected) { - ok = true; - // expected is a validation function which returns true is validation passed - } else if (expected.call({}, actual) === true) { - ok = true; - } - } - - QUnit.ok(ok, message); - }, - - start: function(count) { - config.semaphore -= count || 1; - if (config.semaphore > 0) { - // don't start until equal number of stop-calls - return; - } - if (config.semaphore < 0) { - // ignore if start is called more often then stop - config.semaphore = 0; - } - // A slight delay, to avoid any current callbacks - if ( defined.setTimeout ) { - window.setTimeout(function() { - if (config.semaphore > 0) { - return; - } - if ( config.timeout ) { - clearTimeout(config.timeout); - } - - config.blocking = false; - process(true); - }, 13); - } else { - config.blocking = false; - process(true); - } - }, - - stop: function(count) { - config.semaphore += count || 1; - config.blocking = true; - - if ( config.testTimeout && defined.setTimeout ) { - clearTimeout(config.timeout); - config.timeout = window.setTimeout(function() { - QUnit.ok( false, "Test timed out" ); - config.semaphore = 1; - QUnit.start(); - }, config.testTimeout); - } - } -}; - -//We want access to the constructor's prototype -(function() { - function F(){} - F.prototype = QUnit; - QUnit = new F(); - //Make F QUnit's constructor so that we can add to the prototype later - QUnit.constructor = F; -}()); - -// deprecated; still export them to window to provide clear error messages -// next step: remove entirely -QUnit.equals = function() { - QUnit.push(false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead"); -}; -QUnit.same = function() { - QUnit.push(false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead"); -}; - -// Maintain internal state -var config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true, - - // when enabled, show only failing tests - // gets persisted through sessionStorage and can be changed in UI via checkbox - hidepassed: false, - - // by default, run previously failed tests first - // very useful in combination with "Hide passed tests" checked - reorder: true, - - // by default, modify document.title when suite is done - altertitle: true, - - urlConfig: ['noglobals', 'notrycatch'], - - //logging callback queues - begin: [], - done: [], - log: [], - testStart: [], - testDone: [], - moduleStart: [], - moduleDone: [] -}; - -// Load paramaters -(function() { - var location = window.location || { search: "", protocol: "file:" }, - params = location.search.slice( 1 ).split( "&" ), - length = params.length, - urlParams = {}, - current; - - if ( params[ 0 ] ) { - for ( var i = 0; i < length; i++ ) { - current = params[ i ].split( "=" ); - current[ 0 ] = decodeURIComponent( current[ 0 ] ); - // allow just a key to turn on a flag, e.g., test.html?noglobals - current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; - urlParams[ current[ 0 ] ] = current[ 1 ]; - } - } - - QUnit.urlParams = urlParams; - config.filter = urlParams.filter; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = location.protocol === 'file:'; -}()); - -// Expose the API as global variables, unless an 'exports' -// object exists, in that case we assume we're in CommonJS - export everything at the end -if ( typeof exports === "undefined" || typeof require === "undefined" ) { - extend(window, QUnit); - window.QUnit = QUnit; -} - -// define these after exposing globals to keep them in these QUnit namespace only -extend(QUnit, { - config: config, - - // Initialize the configuration options - init: function() { - extend(config, { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date(), - updateRate: 1000, - blocking: false, - autostart: true, - autorun: false, - filter: "", - queue: [], - semaphore: 0 - }); - - var qunit = id( "qunit" ); - if ( qunit ) { - qunit.innerHTML = - '

' + escapeInnerText( document.title ) + '

' + - '

' + - '
' + - '

' + - '
    '; - } - - var tests = id( "qunit-tests" ), - banner = id( "qunit-banner" ), - result = id( "qunit-testresult" ); - - if ( tests ) { - tests.innerHTML = ""; - } - - if ( banner ) { - banner.className = ""; - } - - if ( result ) { - result.parentNode.removeChild( result ); - } - - if ( tests ) { - result = document.createElement( "p" ); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore( result, tests ); - result.innerHTML = 'Running...
     '; - } - }, - - // Resets the test setup. Useful for tests that modify the DOM. - // If jQuery is available, uses jQuery's html(), otherwise just innerHTML. - reset: function() { - if ( window.jQuery ) { - jQuery( "#qunit-fixture" ).html( config.fixture ); - } else { - var main = id( 'qunit-fixture' ); - if ( main ) { - main.innerHTML = config.fixture; - } - } - }, - - // Trigger an event on an element. - // @example triggerEvent( document.body, "click" ); - triggerEvent: function( elem, type, event ) { - if ( document.createEvent ) { - event = document.createEvent("MouseEvents"); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - elem.dispatchEvent( event ); - - } else if ( elem.fireEvent ) { - elem.fireEvent("on"+type); - } - }, - - // Safe object type checking - is: function( type, obj ) { - return QUnit.objectType( obj ) == type; - }, - - objectType: function( obj ) { - if (typeof obj === "undefined") { - return "undefined"; - - // consider: typeof null === object - } - if (obj === null) { - return "null"; - } - - var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || ''; - - switch (type) { - case 'Number': - if (isNaN(obj)) { - return "nan"; - } - return "number"; - case 'String': - case 'Boolean': - case 'Array': - case 'Date': - case 'RegExp': - case 'Function': - return type.toLowerCase(); - } - if (typeof obj === "object") { - return "object"; - } - return undefined; - }, - - push: function(result, actual, expected, message) { - if (!config.current) { - throw new Error("assertion outside test context, was " + sourceFromStacktrace()); - } - var details = { - result: result, - message: message, - actual: actual, - expected: expected - }; - - message = escapeInnerText(message) || (result ? "okay" : "failed"); - message = '' + message + ""; - var output = message; - if (!result) { - expected = escapeInnerText(QUnit.jsDump.parse(expected)); - actual = escapeInnerText(QUnit.jsDump.parse(actual)); - output += ''; - if (actual != expected) { - output += ''; - output += ''; - } - var source = sourceFromStacktrace(); - if (source) { - details.source = source; - output += ''; - } - output += "
    Expected:
    ' + expected + '
    Result:
    ' + actual + '
    Diff:
    ' + QUnit.diff(expected, actual) +'
    Source:
    ' + escapeInnerText(source) + '
    "; - } - - runLoggingCallbacks( 'log', QUnit, details ); - - config.current.assertions.push({ - result: !!result, - message: output - }); - }, - - pushFailure: function(message, source) { - var details = { - result: false, - message: message - }; - var output = escapeInnerText(message); - if (source) { - details.source = source; - output += '
    Source:
    ' + escapeInnerText(source) + '
    '; - } - runLoggingCallbacks( 'log', QUnit, details ); - config.current.assertions.push({ - result: false, - message: output - }); - }, - - url: function( params ) { - params = extend( extend( {}, QUnit.urlParams ), params ); - var querystring = "?", - key; - for ( key in params ) { - if ( !hasOwn.call( params, key ) ) { - continue; - } - querystring += encodeURIComponent( key ) + "=" + - encodeURIComponent( params[ key ] ) + "&"; - } - return window.location.pathname + querystring.slice( 0, -1 ); - }, - - extend: extend, - id: id, - addEvent: addEvent -}); - -//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later -//Doing this allows us to tell if the following methods have been overwritten on the actual -//QUnit object, which is a deprecated way of using the callbacks. -extend(QUnit.constructor.prototype, { - // Logging callbacks; all receive a single argument with the listed properties - // run test/logs.html for any related changes - begin: registerLoggingCallback('begin'), - // done: { failed, passed, total, runtime } - done: registerLoggingCallback('done'), - // log: { result, actual, expected, message } - log: registerLoggingCallback('log'), - // testStart: { name } - testStart: registerLoggingCallback('testStart'), - // testDone: { name, failed, passed, total } - testDone: registerLoggingCallback('testDone'), - // moduleStart: { name } - moduleStart: registerLoggingCallback('moduleStart'), - // moduleDone: { name, failed, passed, total } - moduleDone: registerLoggingCallback('moduleDone') -}); - -if ( typeof document === "undefined" || document.readyState === "complete" ) { - config.autorun = true; -} - -QUnit.load = function() { - runLoggingCallbacks( 'begin', QUnit, {} ); - - // Initialize the config, saving the execution queue - var oldconfig = extend({}, config); - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - var urlConfigHtml = '', len = config.urlConfig.length; - for ( var i = 0, val; i < len; i++ ) { - val = config.urlConfig[i]; - config[val] = QUnit.urlParams[val]; - urlConfigHtml += ''; - } - - var userAgent = id("qunit-userAgent"); - if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; - } - var banner = id("qunit-header"); - if ( banner ) { - banner.innerHTML = ' ' + banner.innerHTML + ' ' + urlConfigHtml; - addEvent( banner, "change", function( event ) { - var params = {}; - params[ event.target.name ] = event.target.checked ? true : undefined; - window.location = QUnit.url( params ); - }); - } - - var toolbar = id("qunit-testrunner-toolbar"); - if ( toolbar ) { - var filter = document.createElement("input"); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - addEvent( filter, "click", function() { - var ol = document.getElementById("qunit-tests"); - if ( filter.checked ) { - ol.className = ol.className + " hidepass"; - } else { - var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; - ol.className = tmp.replace(/ hidepass /, " "); - } - if ( defined.sessionStorage ) { - if (filter.checked) { - sessionStorage.setItem("qunit-filter-passed-tests", "true"); - } else { - sessionStorage.removeItem("qunit-filter-passed-tests"); - } - } - }); - if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) { - filter.checked = true; - var ol = document.getElementById("qunit-tests"); - ol.className = ol.className + " hidepass"; - } - toolbar.appendChild( filter ); - - var label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-pass"); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild( label ); - } - - var main = id('qunit-fixture'); - if ( main ) { - config.fixture = main.innerHTML; - } - - if (config.autostart) { - QUnit.start(); - } -}; - -addEvent(window, "load", QUnit.load); - -// addEvent(window, "error") gives us a useless event object -window.onerror = function( message, file, line ) { - if ( QUnit.config.current ) { - QUnit.pushFailure( message, file + ":" + line ); - } else { - QUnit.test( "global failure", function() { - QUnit.pushFailure( message, file + ":" + line ); - }); - } -}; - -function done() { - config.autorun = true; - - // Log the last module results - if ( config.currentModule ) { - runLoggingCallbacks( 'moduleDone', QUnit, { - name: config.currentModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - - var banner = id("qunit-banner"), - tests = id("qunit-tests"), - runtime = +new Date() - config.started, - passed = config.stats.all - config.stats.bad, - html = [ - 'Tests completed in ', - runtime, - ' milliseconds.
    ', - '', - passed, - ' tests of ', - config.stats.all, - ' passed, ', - config.stats.bad, - ' failed.' - ].join(''); - - if ( banner ) { - banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); - } - - if ( tests ) { - id( "qunit-testresult" ).innerHTML = html; - } - - if ( config.altertitle && typeof document !== "undefined" && document.title ) { - // show ✖ for good, ✔ for bad suite result in title - // use escape sequences in case file gets loaded with non-utf-8-charset - document.title = [ - (config.stats.bad ? "\u2716" : "\u2714"), - document.title.replace(/^[\u2714\u2716] /i, "") - ].join(" "); - } - - // clear own sessionStorage items if all tests passed - if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) { - var key; - for ( var i = 0; i < sessionStorage.length; i++ ) { - key = sessionStorage.key( i++ ); - if ( key.indexOf("qunit-test-") === 0 ) { - sessionStorage.removeItem( key ); - } - } - } - - runLoggingCallbacks( 'done', QUnit, { - failed: config.stats.bad, - passed: passed, - total: config.stats.all, - runtime: runtime - } ); -} - -function validTest( name ) { - var filter = config.filter, - run = false; - - if ( !filter ) { - return true; - } - - var not = filter.charAt( 0 ) === "!"; - if ( not ) { - filter = filter.slice( 1 ); - } - - if ( name.indexOf( filter ) !== -1 ) { - return !not; - } - - if ( not ) { - run = true; - } - - return run; -} - -// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions) -// Later Safari and IE10 are supposed to support error.stack as well -// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack -function extractStacktrace( e, offset ) { - offset = offset || 3; - if (e.stacktrace) { - // Opera - return e.stacktrace.split("\n")[offset + 3]; - } else if (e.stack) { - // Firefox, Chrome - var stack = e.stack.split("\n"); - if (/^error$/i.test(stack[0])) { - stack.shift(); - } - return stack[offset]; - } else if (e.sourceURL) { - // Safari, PhantomJS - // hopefully one day Safari provides actual stacktraces - // exclude useless self-reference for generated Error objects - if ( /qunit.js$/.test( e.sourceURL ) ) { - return; - } - // for actual exceptions, this is useful - return e.sourceURL + ":" + e.line; - } -} -function sourceFromStacktrace(offset) { - try { - throw new Error(); - } catch ( e ) { - return extractStacktrace( e, offset ); - } -} - -function escapeInnerText(s) { - if (!s) { - return ""; - } - s = s + ""; - return s.replace(/[\&<>]/g, function(s) { - switch(s) { - case "&": return "&"; - case "<": return "<"; - case ">": return ">"; - default: return s; - } - }); -} - -function synchronize( callback, last ) { - config.queue.push( callback ); - - if ( config.autorun && !config.blocking ) { - process(last); - } -} - -function process( last ) { - function next() { - process( last ); - } - var start = new Date().getTime(); - config.depth = config.depth ? config.depth + 1 : 1; - - while ( config.queue.length && !config.blocking ) { - if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) { - config.queue.shift()(); - } else { - window.setTimeout( next, 13 ); - break; - } - } - config.depth--; - if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { - done(); - } -} - -function saveGlobal() { - config.pollution = []; - - if ( config.noglobals ) { - for ( var key in window ) { - if ( !hasOwn.call( window, key ) ) { - continue; - } - config.pollution.push( key ); - } - } -} - -function checkPollution( name ) { - var old = config.pollution; - saveGlobal(); - - var newGlobals = diff( config.pollution, old ); - if ( newGlobals.length > 0 ) { - QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") ); - } - - var deletedGlobals = diff( old, config.pollution ); - if ( deletedGlobals.length > 0 ) { - QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") ); - } -} - -// returns a new Array with the elements that are in a but not in b -function diff( a, b ) { - var result = a.slice(); - for ( var i = 0; i < result.length; i++ ) { - for ( var j = 0; j < b.length; j++ ) { - if ( result[i] === b[j] ) { - result.splice(i, 1); - i--; - break; - } - } - } - return result; -} - -function extend(a, b) { - for ( var prop in b ) { - if ( b[prop] === undefined ) { - delete a[prop]; - - // Avoid "Member not found" error in IE8 caused by setting window.constructor - } else if ( prop !== "constructor" || a !== window ) { - a[prop] = b[prop]; - } - } - - return a; -} - -function addEvent(elem, type, fn) { - if ( elem.addEventListener ) { - elem.addEventListener( type, fn, false ); - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, fn ); - } else { - fn(); - } -} - -function id(name) { - return !!(typeof document !== "undefined" && document && document.getElementById) && - document.getElementById( name ); -} - -function registerLoggingCallback(key){ - return function(callback){ - config[key].push( callback ); - }; -} - -// Supports deprecated method of completely overwriting logging callbacks -function runLoggingCallbacks(key, scope, args) { - //debugger; - var callbacks; - if ( QUnit.hasOwnProperty(key) ) { - QUnit[key].call(scope, args); - } else { - callbacks = config[key]; - for( var i = 0; i < callbacks.length; i++ ) { - callbacks[i].call( scope, args ); - } - } -} - -// Test for equality any JavaScript type. -// Author: Philippe Rathé -QUnit.equiv = (function() { - - var innerEquiv; // the real equiv function - var callers = []; // stack to decide between skip/abort functions - var parents = []; // stack to avoiding loops from circular referencing - - // Call the o related callback with the given arguments. - function bindCallbacks(o, callbacks, args) { - var prop = QUnit.objectType(o); - if (prop) { - if (QUnit.objectType(callbacks[prop]) === "function") { - return callbacks[prop].apply(callbacks, args); - } else { - return callbacks[prop]; // or undefined - } - } - } - - var getProto = Object.getPrototypeOf || function (obj) { - return obj.__proto__; - }; - - var callbacks = (function () { - - // for string, boolean, number and null - function useStrictEquality(b, a) { - if (b instanceof a.constructor || a instanceof b.constructor) { - // to catch short annotaion VS 'new' annotation of a - // declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string" : useStrictEquality, - "boolean" : useStrictEquality, - "number" : useStrictEquality, - "null" : useStrictEquality, - "undefined" : useStrictEquality, - - "nan" : function(b) { - return isNaN(b); - }, - - "date" : function(b, a) { - return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf(); - }, - - "regexp" : function(b, a) { - return QUnit.objectType(b) === "regexp" && - // the regex itself - a.source === b.source && - // and its modifers - a.global === b.global && - // (gmi) ... - a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function" : function() { - var caller = callers[callers.length - 1]; - return caller !== Object && typeof caller !== "undefined"; - }, - - "array" : function(b, a) { - var i, j, loop; - var len; - - // b could be an object literal here - if (QUnit.objectType(b) !== "array") { - return false; - } - - len = a.length; - if (len !== b.length) { // safe and faster - return false; - } - - // track reference to avoid circular references - parents.push(a); - for (i = 0; i < len; i++) { - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) { - loop = true;// dont rewalk array - } - } - if (!loop && !innerEquiv(a[i], b[i])) { - parents.pop(); - return false; - } - } - parents.pop(); - return true; - }, - - "object" : function(b, a) { - var i, j, loop; - var eq = true; // unless we can proove it - var aProperties = [], bProperties = []; // collection of - // strings - - // comparing constructors is more strict than using - // instanceof - if (a.constructor !== b.constructor) { - // Allow objects with no prototype to be equivalent to - // objects with Object as their constructor. - if (!((getProto(a) === null && getProto(b) === Object.prototype) || - (getProto(b) === null && getProto(a) === Object.prototype))) - { - return false; - } - } - - // stack constructor before traversing properties - callers.push(a.constructor); - // track reference to avoid circular references - parents.push(a); - - for (i in a) { // be strict: don't ensures hasOwnProperty - // and go deep - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) { - // don't go down the same path twice - loop = true; - } - } - aProperties.push(i); // collect a's properties - - if (!loop && !innerEquiv(a[i], b[i])) { - eq = false; - break; - } - } - - callers.pop(); // unstack, we are done - parents.pop(); - - for (i in b) { - bProperties.push(i); // collect b's properties - } - - // Ensures identical properties name - return eq && innerEquiv(aProperties.sort(), bProperties.sort()); - } - }; - }()); - - innerEquiv = function() { // can take multiple arguments - var args = Array.prototype.slice.apply(arguments); - if (args.length < 2) { - return true; // end transition - } - - return (function(a, b) { - if (a === b) { - return true; // catch the most you can - } else if (a === null || b === null || typeof a === "undefined" || - typeof b === "undefined" || - QUnit.objectType(a) !== QUnit.objectType(b)) { - return false; // don't lose time with error prone cases - } else { - return bindCallbacks(a, callbacks, [ b, a ]); - } - - // apply transition with (1..n) arguments - }(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1))); - }; - - return innerEquiv; - -}()); - -/** - * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | - * http://flesler.blogspot.com Licensed under BSD - * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 - * - * @projectDescription Advanced and extensible data dumping for Javascript. - * @version 1.0.0 - * @author Ariel Flesler - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} - */ -QUnit.jsDump = (function() { - function quote( str ) { - return '"' + str.toString().replace(/"/g, '\\"') + '"'; - } - function literal( o ) { - return o + ''; - } - function join( pre, arr, post ) { - var s = jsDump.separator(), - base = jsDump.indent(), - inner = jsDump.indent(1); - if ( arr.join ) { - arr = arr.join( ',' + s + inner ); - } - if ( !arr ) { - return pre + post; - } - return [ pre, inner + arr, base + post ].join(s); - } - function array( arr, stack ) { - var i = arr.length, ret = new Array(i); - this.up(); - while ( i-- ) { - ret[i] = this.parse( arr[i] , undefined , stack); - } - this.down(); - return join( '[', ret, ']' ); - } - - var reName = /^function (\w+)/; - - var jsDump = { - parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance - stack = stack || [ ]; - var parser = this.parsers[ type || this.typeOf(obj) ]; - type = typeof parser; - var inStack = inArray(obj, stack); - if (inStack != -1) { - return 'recursion('+(inStack - stack.length)+')'; - } - //else - if (type == 'function') { - stack.push(obj); - var res = parser.call( this, obj, stack ); - stack.pop(); - return res; - } - // else - return (type == 'string') ? parser : this.parsers.error; - }, - typeOf: function( obj ) { - var type; - if ( obj === null ) { - type = "null"; - } else if (typeof obj === "undefined") { - type = "undefined"; - } else if (QUnit.is("RegExp", obj)) { - type = "regexp"; - } else if (QUnit.is("Date", obj)) { - type = "date"; - } else if (QUnit.is("Function", obj)) { - type = "function"; - } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") { - type = "window"; - } else if (obj.nodeType === 9) { - type = "document"; - } else if (obj.nodeType) { - type = "node"; - } else if ( - // native arrays - toString.call( obj ) === "[object Array]" || - // NodeList objects - ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) ) - ) { - type = "array"; - } else { - type = typeof obj; - } - return type; - }, - separator: function() { - return this.multiline ? this.HTML ? '
    ' : '\n' : this.HTML ? ' ' : ' '; - }, - indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing - if ( !this.multiline ) { - return ''; - } - var chr = this.indentChar; - if ( this.HTML ) { - chr = chr.replace(/\t/g,' ').replace(/ /g,' '); - } - return new Array( this._depth_ + (extra||0) ).join(chr); - }, - up: function( a ) { - this._depth_ += a || 1; - }, - down: function( a ) { - this._depth_ -= a || 1; - }, - setParser: function( name, parser ) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote: quote, - literal: literal, - join: join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers: { - window: '[Window]', - document: '[Document]', - error: '[ERROR]', //when no parser is found, shouldn't happen - unknown: '[Unknown]', - 'null': 'null', - 'undefined': 'undefined', - 'function': function( fn ) { - var ret = 'function', - name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE - if ( name ) { - ret += ' ' + name; - } - ret += '('; - - ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join(''); - return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' ); - }, - array: array, - nodelist: array, - 'arguments': array, - object: function( map, stack ) { - var ret = [ ], keys, key, val, i; - QUnit.jsDump.up(); - if (Object.keys) { - keys = Object.keys( map ); - } else { - keys = []; - for (key in map) { keys.push( key ); } - } - keys.sort(); - for (i = 0; i < keys.length; i++) { - key = keys[ i ]; - val = map[ key ]; - ret.push( QUnit.jsDump.parse( key, 'key' ) + ': ' + QUnit.jsDump.parse( val, undefined, stack ) ); - } - QUnit.jsDump.down(); - return join( '{', ret, '}' ); - }, - node: function( node ) { - var open = QUnit.jsDump.HTML ? '<' : '<', - close = QUnit.jsDump.HTML ? '>' : '>'; - - var tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for ( var a in QUnit.jsDump.DOMAttrs ) { - var val = node[QUnit.jsDump.DOMAttrs[a]]; - if ( val ) { - ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' ); - } - } - return ret + close + open + '/' + tag + close; - }, - functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function - var l = fn.length; - if ( !l ) { - return ''; - } - - var args = new Array(l); - while ( l-- ) { - args[l] = String.fromCharCode(97+l);//97 is 'a' - } - return ' ' + args.join(', ') + ' '; - }, - key: quote, //object calls it internally, the key part of an item in a map - functionCode: '[code]', //function calls it internally, it's the content of the function - attribute: quote, //node calls it internally, it's an html attribute value - string: quote, - date: quote, - regexp: literal, //regex - number: literal, - 'boolean': literal - }, - DOMAttrs:{//attributes to dump from nodes, name=>realName - id:'id', - name:'name', - 'class':'className' - }, - HTML:false,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar:' ',//indentation unit - multiline:true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; -}()); - -// from Sizzle.js -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -} - -//from jquery.js -function inArray( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; -} - -/* - * Javascript Diff Algorithm - * By John Resig (http://ejohn.org/) - * Modified by Chu Alan "sprite" - * - * Released under the MIT license. - * - * More Info: - * http://ejohn.org/projects/javascript-diff-algorithm/ - * - * Usage: QUnit.diff(expected, actual) - * - * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over" - */ -QUnit.diff = (function() { - function diff(o, n) { - var ns = {}; - var os = {}; - var i; - - for (i = 0; i < n.length; i++) { - if (ns[n[i]] == null) { - ns[n[i]] = { - rows: [], - o: null - }; - } - ns[n[i]].rows.push(i); - } - - for (i = 0; i < o.length; i++) { - if (os[o[i]] == null) { - os[o[i]] = { - rows: [], - n: null - }; - } - os[o[i]].rows.push(i); - } - - for (i in ns) { - if ( !hasOwn.call( ns, i ) ) { - continue; - } - if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) { - n[ns[i].rows[0]] = { - text: n[ns[i].rows[0]], - row: os[i].rows[0] - }; - o[os[i].rows[0]] = { - text: o[os[i].rows[0]], - row: ns[i].rows[0] - }; - } - } - - for (i = 0; i < n.length - 1; i++) { - if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null && - n[i + 1] == o[n[i].row + 1]) { - n[i + 1] = { - text: n[i + 1], - row: n[i].row + 1 - }; - o[n[i].row + 1] = { - text: o[n[i].row + 1], - row: i + 1 - }; - } - } - - for (i = n.length - 1; i > 0; i--) { - if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null && - n[i - 1] == o[n[i].row - 1]) { - n[i - 1] = { - text: n[i - 1], - row: n[i].row - 1 - }; - o[n[i].row - 1] = { - text: o[n[i].row - 1], - row: i - 1 - }; - } - } - - return { - o: o, - n: n - }; - } - - return function(o, n) { - o = o.replace(/\s+$/, ''); - n = n.replace(/\s+$/, ''); - var out = diff(o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/)); - - var str = ""; - var i; - - var oSpace = o.match(/\s+/g); - if (oSpace == null) { - oSpace = [" "]; - } - else { - oSpace.push(" "); - } - var nSpace = n.match(/\s+/g); - if (nSpace == null) { - nSpace = [" "]; - } - else { - nSpace.push(" "); - } - - if (out.n.length === 0) { - for (i = 0; i < out.o.length; i++) { - str += '' + out.o[i] + oSpace[i] + ""; - } - } - else { - if (out.n[0].text == null) { - for (n = 0; n < out.o.length && out.o[n].text == null; n++) { - str += '' + out.o[n] + oSpace[n] + ""; - } - } - - for (i = 0; i < out.n.length; i++) { - if (out.n[i].text == null) { - str += '' + out.n[i] + nSpace[i] + ""; - } - else { - var pre = ""; - - for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { - pre += '' + out.o[n] + oSpace[n] + ""; - } - str += " " + out.n[i].text + nSpace[i] + pre; - } - } - } - - return str; - }; -}()); - -// for CommonJS enviroments, export everything -if ( typeof exports !== "undefined" || typeof require !== "undefined" ) { - extend(exports, QUnit); -} - -// get at whatever the global object is, like window in browsers -}( (function() {return this;}.call()) )); diff --git a/static/app/bower_components/bootstrap-datepicker/tests/assets/utils.js b/static/app/bower_components/bootstrap-datepicker/tests/assets/utils.js deleted file mode 100644 index 6f9cac5..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/assets/utils.js +++ /dev/null @@ -1,21 +0,0 @@ -function UTCDate(){ - return new Date(Date.UTC.apply(Date, arguments)); -} - - -function format_date(date){ - var y = date.getUTCFullYear(), - m = date.getUTCMonth() + 1, - d = date.getUTCDate(), - h = date.getUTCHours(), - i = date.getUTCMinutes(), - s = date.getUTCSeconds(), - l = date.getUTCMilliseconds(); - function z(i){return (i <= 9 ? '0'+i : i);} - return y+'-'+z(m)+'-'+z(d)+' '+z(h)+':'+z(i)+':'+z(s)+'.'+z(l); -} - - -function datesEqual(actual, expected, message){ - QUnit.push(QUnit.equiv(actual, expected), format_date(actual), format_date(expected), message); -} diff --git a/static/app/bower_components/bootstrap-datepicker/tests/run-qunit.js b/static/app/bower_components/bootstrap-datepicker/tests/run-qunit.js deleted file mode 100644 index effdc3f..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/run-qunit.js +++ /dev/null @@ -1,157 +0,0 @@ -var system = require('system'); - -/** - * Wait until the test condition is true or a timeout occurs. Useful for waiting - * on a server response or for a ui change (fadeIn, etc.) to occur. - * - * @param testFx javascript condition that evaluates to a boolean, - * it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or - * as a callback function. - * @param onReady what to do when testFx condition is fulfilled, - * it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or - * as a callback function. - * @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used. - */ -function waitFor(testFx, onReady, timeOutMillis) { - var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 10001, //< Default Max Timout is 3s - start = new Date().getTime(), - condition = false, - interval = setInterval(function() { - if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) { - // If not time-out yet and condition not yet fulfilled - condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code - } else { - if(!condition) { - // If condition still not fulfilled (timeout but condition is 'false') - console.log("'waitFor()' timeout"); - phantom.exit(1); - } else { - // Condition fulfilled (timeout and/or condition is 'true') - //console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms."); - typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled - clearInterval(interval); //< Stop this interval - } - } - }, 100); //< repeat check every 100ms -}; - -if (system.args.length !== 2) { - console.log('Usage: run-qunit.js URL'); - phantom.exit(1); -} - -var fs = require('fs'); -var page = require('webpage').create(); - -// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this") -page.onConsoleMessage = function(msg) { - console.log(msg); -}; -page.onError = function (msg, trace) { - console.log(msg); - trace.forEach(function(item) { - console.log(' ', item.file, ':', item.line); - }) -} - -var _openPath = phantom.args[0].replace(/^.*(\\|\/)/, ''); -var openPath = _openPath; -var origdir = '../js/'; -var basedir = '../instrumented/'; -var coverageBase = fs.read('_coverage.html'); - -if (fs.exists(basedir)){ - var script = /<\/script>/g, - src = /src=(["'])(.*?)\1/, - contents = fs.read(openPath), - _contents = contents, - srcs = [], - s; - while (script.exec(contents)){ - s = src.exec(RegExp.lastMatch)[2]; - if (s && s.indexOf(origdir) != -1) - _contents = _contents.replace(s, s.replace(origdir, basedir)) - } - if (_contents != contents){ - openPath += '.cov.html'; - fs.write(openPath, _contents); - } -} - -page.open(openPath, function(status){ - if (status !== "success") { - console.log("Unable to access network"); - phantom.exit(1); - } else { - // Inject instrumented sources if they exist - if (fs.exists(basedir)) - for (var i=0; i0 ? 'hit' : 'miss'); - } else { - hitmiss = ' ' + 'undef'; - } - var htmlLine = fileLines[idx] - if (!source) - htmlLine = htmlLine.replace('<', '<').replace('>', '>'); - colorized += '
    ' + htmlLine + '
    \n'; - }; - colorized = coverageBase.replace('COLORIZED_LINE_HTML', colorized); - - fs.write('coverage.html', colorized, 'w'); - - console.log('Coverage for ' + coverageInfo.key + ' in coverage.html'); - } - if (_openPath != openPath) - fs.remove(openPath); - - var failedNum = page.evaluate(function(){ - var el = document.getElementById('qunit-testresult'); - console.log(el.innerText); - try { - return el.getElementsByClassName('failed')[0].innerHTML; - } catch (e) { } - return 10000; - }); - phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0); - }); - } -}); - -function readFileLines(filename) { - var stream = fs.open(filename, 'r'); - var lines = []; - var line; - while (!stream.atEnd()) { - lines.push(stream.readLine()); - } - stream.close(); - - return lines; -} - diff --git a/static/app/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js b/static/app/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js deleted file mode 100644 index 6c466f1..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js +++ /dev/null @@ -1,48 +0,0 @@ -module('Calendar Weeks', { - setup: function(){ - this.input = $('') - .appendTo('#qunit-fixture') - .val('2013-01-14') - .datepicker({ - format: 'yyyy-mm-dd', - calendarWeeks: true - }) - .focus(); // Activate for visibility checks - this.dp = this.input.data('datepicker') - this.picker = this.dp.picker; - }, - teardown: function(){ - this.picker.remove(); - } -}); - -test('adds cw header column', function(){ - var target = this.picker.find('.datepicker-days thead th:first-child'); - ok(target.hasClass('cw'), 'First column heading is from cw column'); -}); - -test('adds calendar week cells to each day row', function(){ - var target = this.picker.find('.datepicker-days tbody tr'); - - expect(target.length); - target.each(function(i){ - var t = $(this).children().first(); - ok(t.hasClass('cw'), "First column is cw column"); - }); -}); - -test('displays correct calendar week', function(){ - var target = this.picker.find('.datepicker-days tbody tr'); - - expect(target.length); - target.each(function(i){ - var t = $(this).children().first(); - equal(t.text(), i+1, "Displays correct calendar weeks"); - }); -}); - -test('it prepends column to switcher thead row', function(){ - var target = this.picker.find('.datepicker-days thead tr:first-child'); - equal(target.children().length, 4, 'first row has 4 columns'); - ok(target.children().first().hasClass('cw'), 'cw column is prepended'); -}); diff --git a/static/app/bower_components/bootstrap-datepicker/tests/suites/component.js b/static/app/bower_components/bootstrap-datepicker/tests/suites/component.js deleted file mode 100644 index 399abd4..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/suites/component.js +++ /dev/null @@ -1,202 +0,0 @@ -module('Component', { - setup: function(){ - this.component = $('
    '+ - ''+ - ''+ - '
    ') - .appendTo('#qunit-fixture') - .datepicker({format: "dd-mm-yyyy"}); - this.input = this.component.find('input'); - this.addon = this.component.find('.add-on'); - this.dp = this.component.data('datepicker') - this.picker = this.dp.picker; - }, - teardown: function(){ - this.picker.remove(); - } -}); - - -test('Component gets date/viewDate from input value', function(){ - datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); - datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12)); -}); - -test('Activation by component', function(){ - ok(!this.picker.is(':visible')); - this.addon.click(); - ok(this.picker.is(':visible')); -}); - -test('simple keyboard nav test', function(){ - var target; - - // Keyboard nav only works with non-readonly inputs - this.input.removeAttr('readonly'); - - equal(this.dp.viewMode, 0); - target = this.picker.find('.datepicker-days thead th.datepicker-switch'); - equal(target.text(), 'February 2012', 'Title is "February 2012"'); - datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); - datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12)); - - // Focus/open - this.addon.click(); - - // Navigation: -1 day, left arrow key - this.input.trigger({ - type: 'keydown', - keyCode: 37 - }); - datesEqual(this.dp.viewDate, UTCDate(2012, 1, 11)); - datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); - datesEqual(this.dp.focusDate, UTCDate(2012, 1, 11)); - // Month not changed - target = this.picker.find('.datepicker-days thead th.datepicker-switch'); - equal(target.text(), 'February 2012', 'Title is "February 2012"'); - - // Navigation: +1 month, shift + right arrow key - this.input.trigger({ - type: 'keydown', - keyCode: 39, - shiftKey: true - }); - datesEqual(this.dp.viewDate, UTCDate(2012, 2, 11)); - datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); - datesEqual(this.dp.focusDate, UTCDate(2012, 2, 11)); - target = this.picker.find('.datepicker-days thead th.datepicker-switch'); - equal(target.text(), 'March 2012', 'Title is "March 2012"'); - - // Navigation: -1 year, ctrl + left arrow key - this.input.trigger({ - type: 'keydown', - keyCode: 37, - ctrlKey: true - }); - datesEqual(this.dp.viewDate, UTCDate(2011, 2, 11)); - datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); - datesEqual(this.dp.focusDate, UTCDate(2011, 2, 11)); - target = this.picker.find('.datepicker-days thead th.datepicker-switch'); - equal(target.text(), 'March 2011', 'Title is "March 2011"'); -}); - -test('setValue', function(){ - this.dp.dates.replace(UTCDate(2012, 2, 13)); - this.dp.setValue(); - datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13)); - equal(this.input.val(), '13-03-2012'); -}); - -test('update', function(){ - this.input.val('13-03-2012'); - this.dp.update(); - equal(this.dp.dates.length, 1); - datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13)); -}); - -test('Navigating to/from decade view', function(){ - var target; - - this.addon.click(); - this.input.val('31-03-2012'); - this.dp.update(); - - equal(this.dp.viewMode, 0); - target = this.picker.find('.datepicker-days thead th.datepicker-switch'); - ok(target.is(':visible'), 'View switcher is visible'); - - target.click(); - ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible'); - equal(this.dp.viewMode, 1); - // Not modified when switching modes - datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); - datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31)); - - target = this.picker.find('.datepicker-months thead th.datepicker-switch'); - ok(target.is(':visible'), 'View switcher is visible'); - - target.click(); - ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible'); - equal(this.dp.viewMode, 2); - // Not modified when switching modes - datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); - datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31)); - - // Change years to test internal state changes - target = this.picker.find('.datepicker-years tbody span:contains(2011)'); - target.click(); - equal(this.dp.viewMode, 1); - // Only viewDate modified - datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1)); - datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31)); - - target = this.picker.find('.datepicker-months tbody span:contains(Apr)'); - target.click(); - equal(this.dp.viewMode, 0); - // Only viewDate modified - datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1)); - datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31)); -}); - -test('Selecting date resets viewDate and date', function(){ - var target; - - this.addon.click(); - this.input.val('31-03-2012'); - this.dp.update(); - - // Rendered correctly - equal(this.dp.viewMode, 0); - target = this.picker.find('.datepicker-days tbody td:first'); - equal(target.text(), '26'); // Should be Feb 26 - - // Updated internally on click - target.click(); - datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26)) - datesEqual(this.dp.dates[0], UTCDate(2012, 1, 26)) - - // Re-rendered on click - target = this.picker.find('.datepicker-days tbody td:first'); - equal(target.text(), '29'); // Should be Jan 29 -}); - -test('"remove" removes associated HTML', function(){ - var datepickerDivSelector = '.datepicker'; - - $('#datepicker').datepicker('show'); - - //there should be one datepicker initiated so that means one hidden .datepicker div - equal($(datepickerDivSelector).length, 1); - this.component.datepicker('remove'); - equal($(datepickerDivSelector).length, 0);//hidden HTML should be gone -}); - -test('Does not block events', function(){ - var clicks = 0; - function handler(){ - clicks++; - } - $('#qunit-fixture').on('click', '.add-on', handler); - this.addon.click(); - equal(clicks, 1); - $('#qunit-fixture').off('click', '.add-on', handler); -}); - - -test('date and viewDate must be between startDate and endDate when setStartDate called', function() { - this.dp.setDate(new Date(2013, 1, 1)); - datesEqual(this.dp.dates[0], UTCDate(2013, 1, 1)); - datesEqual(this.dp.viewDate, UTCDate(2013, 1, 1)); - this.dp.setStartDate(new Date(2013, 5, 6)); - datesEqual(this.dp.viewDate, UTCDate(2013, 5, 6)); - equal(this.dp.dates.length, 0); -}); - -test('date and viewDate must be between startDate and endDate when setEndDate called', function() { - this.dp.setDate(new Date(2013, 11, 1)); - datesEqual(this.dp.dates[0], UTCDate(2013, 11, 1)); - datesEqual(this.dp.viewDate, UTCDate(2013, 11, 1)); - this.dp.setEndDate(new Date(2013, 5, 6)); - datesEqual(this.dp.viewDate, UTCDate(2013, 5, 6)); - equal(this.dp.dates.length, 0); -}); diff --git a/static/app/bower_components/bootstrap-datepicker/tests/suites/data-api.js b/static/app/bower_components/bootstrap-datepicker/tests/suites/data-api.js deleted file mode 100644 index a751f57..0000000 --- a/static/app/bower_components/bootstrap-datepicker/tests/suites/data-api.js +++ /dev/null @@ -1,114 +0,0 @@ -module('DATA-API'); - -test('DATA-API: data-provide="datepicker" on input; focus', function(){ - var input = $('') - .appendTo('#qunit-fixture'); - input.focus(); - ok(input.data('datepicker'), 'datepicker is initialized by "focus" event'); -}); - -test('DATA-API: data-provide="datepicker" on input; click', function(){ - var input = $('') - .appendTo('#qunit-fixture'); - input.click(); - ok(input.data('datepicker'), 'datepicker is initialized by "focus" event'); -}); - -test('DATA-API: data-provide="datepicker" on component', function(){ - var html, comp; - - html = '
    '+ - ''+ - '
    '; - - comp = $(html).appendTo('#qunit-fixture'); - comp.find('input').focus(); - ok(comp.data('datepicker'), 'append component initialized by "focus" event on input'); - comp.remove(); - - comp = $(html).appendTo('#qunit-fixture'); - comp.find('input').click(); - ok(comp.data('datepicker'), 'append component initialized by "click" event on input'); - comp.remove(); - - comp = $(html).appendTo('#qunit-fixture'); - comp.find('.add-on').focus(); - ok(comp.data('datepicker'), 'append component initialized by "focus" event on add-on'); - comp.remove(); - - comp = $(html).appendTo('#qunit-fixture'); - comp.find('.add-on').click(); - ok(comp.data('datepicker'), 'append component initialized by "click" event on add-on'); - comp.remove(); - - - html = '
    '+ - ''+ - '
    '; - - comp = $(html).prependTo('#qunit-fixture'); - comp.find('input').focus(); - ok(comp.data('datepicker'), 'prepend component initialized by "focus" event on input'); - comp.remove(); - - comp = $(html).prependTo('#qunit-fixture'); - comp.find('input').click(); - ok(comp.data('datepicker'), 'prepend component initialized by "click" event on input'); - comp.remove(); - - comp = $(html).prependTo('#qunit-fixture'); - comp.find('.add-on').focus(); - ok(comp.data('datepicker'), 'prepend component initialized by "focus" event on add-on'); - comp.remove(); - - comp = $(html).prependTo('#qunit-fixture'); - comp.find('.add-on').click(); - ok(comp.data('datepicker'), 'prepend component initialized by "click" event on add-on'); - comp.remove(); -}); - -test('DATA-API: data-provide="datepicker" on button', function(){ - var html, comp; - - html = '